diff --git a/.gitignore b/.gitignore index 9baad8bb..acb23344 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,5 @@ coverage .idea gen/ src/**/*.iml -benchmark/reports/* \ No newline at end of file +benchmark/reports/* +*.tgz diff --git a/README.md b/README.md index 9336e113..0fef6e76 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,8 @@ Additionally, it provides advanced features such as **SQL Validation**, **Code C - Trino - Impala ->Tips: This project is the default for Typescript target, also you can try to compile it to other languages if you need. +>[!TIP] +>This project is the default for Typescript target, also you can try to compile it to other languages if you need.
diff --git a/benchmark/benchmark.config.ts b/benchmark/benchmark.config.ts new file mode 100644 index 00000000..f77731eb --- /dev/null +++ b/benchmark/benchmark.config.ts @@ -0,0 +1,87 @@ +import { Language } from './sqlBenchmark'; + +type TestFile = { + /** Benchmark Name */ + name: string; + /** Test sql name */ + sqlFileName: string; + /** Test run times */ + loopTimes?: number; + /** Test method name of parser */ + testTypes: string[]; + /** Exclude languages */ + excludes?: Language[]; + /** Include languages */ + includes?: Language[]; +}; + +const testFiles: TestFile[] = [ + { + name: 'Query Collection', + sqlFileName: 'select.sql', + testTypes: ['getAllTokens', 'validate'], + }, + { + name: 'Update Table', + sqlFileName: 'update.sql', + excludes: ['flink'], + testTypes: ['getAllTokens', 'validate'], + }, + { + name: 'Insert Columns', + sqlFileName: 'insert.sql', + testTypes: ['getAllTokens', 'validate'], + }, + { + name: 'Create Table', + sqlFileName: 'create.sql', + excludes: ['flink'], + testTypes: ['getAllTokens', 'validate'], + }, + { + name: 'Create Table', + sqlFileName: 'create_flink.sql', + includes: ['flink'], + testTypes: ['getAllTokens', 'validate'], + }, + { + name: 'Split SQL', + sqlFileName: 'split.sql', + excludes: ['flink'], + testTypes: ['splitSQLByStatement'], + }, + { + name: 'Split SQL', + sqlFileName: 'split_flink.sql', + includes: ['flink'], + testTypes: ['splitSQLByStatement'], + }, + { + name: 'Collect Entities', + sqlFileName: 'suggestion.sql', + excludes: ['flink'], + testTypes: ['getAllEntities'], + }, + { + name: 'Collect Entities', + sqlFileName: 'suggestion_flink.sql', + includes: ['flink'], + testTypes: ['getAllEntities'], + }, + { + name: 'Suggestion', + sqlFileName: 'suggestion.sql', + excludes: ['flink'], + testTypes: ['getSuggestionAtCaretPosition'], + }, + { + name: 'Suggestion', + sqlFileName: 'suggestion_flink.sql', + includes: ['flink'], + testTypes: ['getSuggestionAtCaretPosition'], + }, +]; + +export default { + testFiles, +}; diff --git a/benchmark/data/create.sql b/benchmark/data/create.sql new file mode 100644 index 00000000..ab4aa8fa --- /dev/null +++ b/benchmark/data/create.sql @@ -0,0 +1,1002 @@ +CREATE TABLE my_table ( +column1 VARCHAR(255), +column2 VARCHAR(255), +column3 VARCHAR(255), +column4 VARCHAR(255), +column5 VARCHAR(255), +column6 VARCHAR(255), +column7 VARCHAR(255), +column8 VARCHAR(255), +column9 VARCHAR(255), +column10 VARCHAR(255), +column11 VARCHAR(255), +column12 VARCHAR(255), +column13 VARCHAR(255), +column14 VARCHAR(255), +column15 VARCHAR(255), +column16 VARCHAR(255), +column17 VARCHAR(255), +column18 VARCHAR(255), +column19 VARCHAR(255), +column20 VARCHAR(255), +column21 VARCHAR(255), +column22 VARCHAR(255), +column23 VARCHAR(255), +column24 VARCHAR(255), +column25 VARCHAR(255), +column26 VARCHAR(255), +column27 VARCHAR(255), +column28 VARCHAR(255), +column29 VARCHAR(255), +column30 VARCHAR(255), +column31 VARCHAR(255), +column32 VARCHAR(255), +column33 VARCHAR(255), +column34 VARCHAR(255), +column35 VARCHAR(255), +column36 VARCHAR(255), +column37 VARCHAR(255), +column38 VARCHAR(255), +column39 VARCHAR(255), +column40 VARCHAR(255), +column41 VARCHAR(255), +column42 VARCHAR(255), +column43 VARCHAR(255), +column44 VARCHAR(255), +column45 VARCHAR(255), +column46 VARCHAR(255), +column47 VARCHAR(255), +column48 VARCHAR(255), +column49 VARCHAR(255), +column50 VARCHAR(255), +column51 VARCHAR(255), +column52 VARCHAR(255), +column53 VARCHAR(255), +column54 VARCHAR(255), +column55 VARCHAR(255), +column56 VARCHAR(255), +column57 VARCHAR(255), +column58 VARCHAR(255), +column59 VARCHAR(255), +column60 VARCHAR(255), +column61 VARCHAR(255), +column62 VARCHAR(255), +column63 VARCHAR(255), +column64 VARCHAR(255), +column65 VARCHAR(255), +column66 VARCHAR(255), +column67 VARCHAR(255), +column68 VARCHAR(255), +column69 VARCHAR(255), +column70 VARCHAR(255), +column71 VARCHAR(255), +column72 VARCHAR(255), +column73 VARCHAR(255), +column74 VARCHAR(255), +column75 VARCHAR(255), +column76 VARCHAR(255), +column77 VARCHAR(255), +column78 VARCHAR(255), +column79 VARCHAR(255), +column80 VARCHAR(255), +column81 VARCHAR(255), +column82 VARCHAR(255), +column83 VARCHAR(255), +column84 VARCHAR(255), +column85 VARCHAR(255), +column86 VARCHAR(255), +column87 VARCHAR(255), +column88 VARCHAR(255), +column89 VARCHAR(255), +column90 VARCHAR(255), +column91 VARCHAR(255), +column92 VARCHAR(255), +column93 VARCHAR(255), +column94 VARCHAR(255), +column95 VARCHAR(255), +column96 VARCHAR(255), +column97 VARCHAR(255), +column98 VARCHAR(255), +column99 VARCHAR(255), +column100 VARCHAR(255), +column101 VARCHAR(255), +column102 VARCHAR(255), +column103 VARCHAR(255), +column104 VARCHAR(255), +column105 VARCHAR(255), +column106 VARCHAR(255), +column107 VARCHAR(255), +column108 VARCHAR(255), +column109 VARCHAR(255), +column110 VARCHAR(255), +column111 VARCHAR(255), +column112 VARCHAR(255), +column113 VARCHAR(255), +column114 VARCHAR(255), +column115 VARCHAR(255), +column116 VARCHAR(255), +column117 VARCHAR(255), +column118 VARCHAR(255), +column119 VARCHAR(255), +column120 VARCHAR(255), +column121 VARCHAR(255), +column122 VARCHAR(255), +column123 VARCHAR(255), +column124 VARCHAR(255), +column125 VARCHAR(255), +column126 VARCHAR(255), +column127 VARCHAR(255), +column128 VARCHAR(255), +column129 VARCHAR(255), +column130 VARCHAR(255), +column131 VARCHAR(255), +column132 VARCHAR(255), +column133 VARCHAR(255), +column134 VARCHAR(255), +column135 VARCHAR(255), +column136 VARCHAR(255), +column137 VARCHAR(255), +column138 VARCHAR(255), +column139 VARCHAR(255), +column140 VARCHAR(255), +column141 VARCHAR(255), +column142 VARCHAR(255), +column143 VARCHAR(255), +column144 VARCHAR(255), +column145 VARCHAR(255), +column146 VARCHAR(255), +column147 VARCHAR(255), +column148 VARCHAR(255), +column149 VARCHAR(255), +column150 VARCHAR(255), +column151 VARCHAR(255), +column152 VARCHAR(255), +column153 VARCHAR(255), +column154 VARCHAR(255), +column155 VARCHAR(255), +column156 VARCHAR(255), +column157 VARCHAR(255), +column158 VARCHAR(255), +column159 VARCHAR(255), +column160 VARCHAR(255), +column161 VARCHAR(255), +column162 VARCHAR(255), +column163 VARCHAR(255), +column164 VARCHAR(255), +column165 VARCHAR(255), +column166 VARCHAR(255), +column167 VARCHAR(255), +column168 VARCHAR(255), +column169 VARCHAR(255), +column170 VARCHAR(255), +column171 VARCHAR(255), +column172 VARCHAR(255), +column173 VARCHAR(255), +column174 VARCHAR(255), +column175 VARCHAR(255), +column176 VARCHAR(255), +column177 VARCHAR(255), +column178 VARCHAR(255), +column179 VARCHAR(255), +column180 VARCHAR(255), +column181 VARCHAR(255), +column182 VARCHAR(255), +column183 VARCHAR(255), +column184 VARCHAR(255), +column185 VARCHAR(255), +column186 VARCHAR(255), +column187 VARCHAR(255), +column188 VARCHAR(255), +column189 VARCHAR(255), +column190 VARCHAR(255), +column191 VARCHAR(255), +column192 VARCHAR(255), +column193 VARCHAR(255), +column194 VARCHAR(255), +column195 VARCHAR(255), +column196 VARCHAR(255), +column197 VARCHAR(255), +column198 VARCHAR(255), +column199 VARCHAR(255), +column200 VARCHAR(255), +column201 VARCHAR(255), +column202 VARCHAR(255), +column203 VARCHAR(255), +column204 VARCHAR(255), +column205 VARCHAR(255), +column206 VARCHAR(255), +column207 VARCHAR(255), +column208 VARCHAR(255), +column209 VARCHAR(255), +column210 VARCHAR(255), +column211 VARCHAR(255), +column212 VARCHAR(255), +column213 VARCHAR(255), +column214 VARCHAR(255), +column215 VARCHAR(255), +column216 VARCHAR(255), +column217 VARCHAR(255), +column218 VARCHAR(255), +column219 VARCHAR(255), +column220 VARCHAR(255), +column221 VARCHAR(255), +column222 VARCHAR(255), +column223 VARCHAR(255), +column224 VARCHAR(255), +column225 VARCHAR(255), +column226 VARCHAR(255), +column227 VARCHAR(255), +column228 VARCHAR(255), +column229 VARCHAR(255), +column230 VARCHAR(255), +column231 VARCHAR(255), +column232 VARCHAR(255), +column233 VARCHAR(255), +column234 VARCHAR(255), +column235 VARCHAR(255), +column236 VARCHAR(255), +column237 VARCHAR(255), +column238 VARCHAR(255), +column239 VARCHAR(255), +column240 VARCHAR(255), +column241 VARCHAR(255), +column242 VARCHAR(255), +column243 VARCHAR(255), +column244 VARCHAR(255), +column245 VARCHAR(255), +column246 VARCHAR(255), +column247 VARCHAR(255), +column248 VARCHAR(255), +column249 VARCHAR(255), +column250 VARCHAR(255), +column251 VARCHAR(255), +column252 VARCHAR(255), +column253 VARCHAR(255), +column254 VARCHAR(255), +column255 VARCHAR(255), +column256 VARCHAR(255), +column257 VARCHAR(255), +column258 VARCHAR(255), +column259 VARCHAR(255), +column260 VARCHAR(255), +column261 VARCHAR(255), +column262 VARCHAR(255), +column263 VARCHAR(255), +column264 VARCHAR(255), +column265 VARCHAR(255), +column266 VARCHAR(255), +column267 VARCHAR(255), +column268 VARCHAR(255), +column269 VARCHAR(255), +column270 VARCHAR(255), +column271 VARCHAR(255), +column272 VARCHAR(255), +column273 VARCHAR(255), +column274 VARCHAR(255), +column275 VARCHAR(255), +column276 VARCHAR(255), +column277 VARCHAR(255), +column278 VARCHAR(255), +column279 VARCHAR(255), +column280 VARCHAR(255), +column281 VARCHAR(255), +column282 VARCHAR(255), +column283 VARCHAR(255), +column284 VARCHAR(255), +column285 VARCHAR(255), +column286 VARCHAR(255), +column287 VARCHAR(255), +column288 VARCHAR(255), +column289 VARCHAR(255), +column290 VARCHAR(255), +column291 VARCHAR(255), +column292 VARCHAR(255), +column293 VARCHAR(255), +column294 VARCHAR(255), +column295 VARCHAR(255), +column296 VARCHAR(255), +column297 VARCHAR(255), +column298 VARCHAR(255), +column299 VARCHAR(255), +column300 VARCHAR(255), +column301 VARCHAR(255), +column302 VARCHAR(255), +column303 VARCHAR(255), +column304 VARCHAR(255), +column305 VARCHAR(255), +column306 VARCHAR(255), +column307 VARCHAR(255), +column308 VARCHAR(255), +column309 VARCHAR(255), +column310 VARCHAR(255), +column311 VARCHAR(255), +column312 VARCHAR(255), +column313 VARCHAR(255), +column314 VARCHAR(255), +column315 VARCHAR(255), +column316 VARCHAR(255), +column317 VARCHAR(255), +column318 VARCHAR(255), +column319 VARCHAR(255), +column320 VARCHAR(255), +column321 VARCHAR(255), +column322 VARCHAR(255), +column323 VARCHAR(255), +column324 VARCHAR(255), +column325 VARCHAR(255), +column326 VARCHAR(255), +column327 VARCHAR(255), +column328 VARCHAR(255), +column329 VARCHAR(255), +column330 VARCHAR(255), +column331 VARCHAR(255), +column332 VARCHAR(255), +column333 VARCHAR(255), +column334 VARCHAR(255), +column335 VARCHAR(255), +column336 VARCHAR(255), +column337 VARCHAR(255), +column338 VARCHAR(255), +column339 VARCHAR(255), +column340 VARCHAR(255), +column341 VARCHAR(255), +column342 VARCHAR(255), +column343 VARCHAR(255), +column344 VARCHAR(255), +column345 VARCHAR(255), +column346 VARCHAR(255), +column347 VARCHAR(255), +column348 VARCHAR(255), +column349 VARCHAR(255), +column350 VARCHAR(255), +column351 VARCHAR(255), +column352 VARCHAR(255), +column353 VARCHAR(255), +column354 VARCHAR(255), +column355 VARCHAR(255), +column356 VARCHAR(255), +column357 VARCHAR(255), +column358 VARCHAR(255), +column359 VARCHAR(255), +column360 VARCHAR(255), +column361 VARCHAR(255), +column362 VARCHAR(255), +column363 VARCHAR(255), +column364 VARCHAR(255), +column365 VARCHAR(255), +column366 VARCHAR(255), +column367 VARCHAR(255), +column368 VARCHAR(255), +column369 VARCHAR(255), +column370 VARCHAR(255), +column371 VARCHAR(255), +column372 VARCHAR(255), +column373 VARCHAR(255), +column374 VARCHAR(255), +column375 VARCHAR(255), +column376 VARCHAR(255), +column377 VARCHAR(255), +column378 VARCHAR(255), +column379 VARCHAR(255), +column380 VARCHAR(255), +column381 VARCHAR(255), +column382 VARCHAR(255), +column383 VARCHAR(255), +column384 VARCHAR(255), +column385 VARCHAR(255), +column386 VARCHAR(255), +column387 VARCHAR(255), +column388 VARCHAR(255), +column389 VARCHAR(255), +column390 VARCHAR(255), +column391 VARCHAR(255), +column392 VARCHAR(255), +column393 VARCHAR(255), +column394 VARCHAR(255), +column395 VARCHAR(255), +column396 VARCHAR(255), +column397 VARCHAR(255), +column398 VARCHAR(255), +column399 VARCHAR(255), +column400 VARCHAR(255), +column401 VARCHAR(255), +column402 VARCHAR(255), +column403 VARCHAR(255), +column404 VARCHAR(255), +column405 VARCHAR(255), +column406 VARCHAR(255), +column407 VARCHAR(255), +column408 VARCHAR(255), +column409 VARCHAR(255), +column410 VARCHAR(255), +column411 VARCHAR(255), +column412 VARCHAR(255), +column413 VARCHAR(255), +column414 VARCHAR(255), +column415 VARCHAR(255), +column416 VARCHAR(255), +column417 VARCHAR(255), +column418 VARCHAR(255), +column419 VARCHAR(255), +column420 VARCHAR(255), +column421 VARCHAR(255), +column422 VARCHAR(255), +column423 VARCHAR(255), +column424 VARCHAR(255), +column425 VARCHAR(255), +column426 VARCHAR(255), +column427 VARCHAR(255), +column428 VARCHAR(255), +column429 VARCHAR(255), +column430 VARCHAR(255), +column431 VARCHAR(255), +column432 VARCHAR(255), +column433 VARCHAR(255), +column434 VARCHAR(255), +column435 VARCHAR(255), +column436 VARCHAR(255), +column437 VARCHAR(255), +column438 VARCHAR(255), +column439 VARCHAR(255), +column440 VARCHAR(255), +column441 VARCHAR(255), +column442 VARCHAR(255), +column443 VARCHAR(255), +column444 VARCHAR(255), +column445 VARCHAR(255), +column446 VARCHAR(255), +column447 VARCHAR(255), +column448 VARCHAR(255), +column449 VARCHAR(255), +column450 VARCHAR(255), +column451 VARCHAR(255), +column452 VARCHAR(255), +column453 VARCHAR(255), +column454 VARCHAR(255), +column455 VARCHAR(255), +column456 VARCHAR(255), +column457 VARCHAR(255), +column458 VARCHAR(255), +column459 VARCHAR(255), +column460 VARCHAR(255), +column461 VARCHAR(255), +column462 VARCHAR(255), +column463 VARCHAR(255), +column464 VARCHAR(255), +column465 VARCHAR(255), +column466 VARCHAR(255), +column467 VARCHAR(255), +column468 VARCHAR(255), +column469 VARCHAR(255), +column470 VARCHAR(255), +column471 VARCHAR(255), +column472 VARCHAR(255), +column473 VARCHAR(255), +column474 VARCHAR(255), +column475 VARCHAR(255), +column476 VARCHAR(255), +column477 VARCHAR(255), +column478 VARCHAR(255), +column479 VARCHAR(255), +column480 VARCHAR(255), +column481 VARCHAR(255), +column482 VARCHAR(255), +column483 VARCHAR(255), +column484 VARCHAR(255), +column485 VARCHAR(255), +column486 VARCHAR(255), +column487 VARCHAR(255), +column488 VARCHAR(255), +column489 VARCHAR(255), +column490 VARCHAR(255), +column491 VARCHAR(255), +column492 VARCHAR(255), +column493 VARCHAR(255), +column494 VARCHAR(255), +column495 VARCHAR(255), +column496 VARCHAR(255), +column497 VARCHAR(255), +column498 VARCHAR(255), +column499 VARCHAR(255), +column500 VARCHAR(255), +column501 VARCHAR(255), +column502 VARCHAR(255), +column503 VARCHAR(255), +column504 VARCHAR(255), +column505 VARCHAR(255), +column506 VARCHAR(255), +column507 VARCHAR(255), +column508 VARCHAR(255), +column509 VARCHAR(255), +column510 VARCHAR(255), +column511 VARCHAR(255), +column512 VARCHAR(255), +column513 VARCHAR(255), +column514 VARCHAR(255), +column515 VARCHAR(255), +column516 VARCHAR(255), +column517 VARCHAR(255), +column518 VARCHAR(255), +column519 VARCHAR(255), +column520 VARCHAR(255), +column521 VARCHAR(255), +column522 VARCHAR(255), +column523 VARCHAR(255), +column524 VARCHAR(255), +column525 VARCHAR(255), +column526 VARCHAR(255), +column527 VARCHAR(255), +column528 VARCHAR(255), +column529 VARCHAR(255), +column530 VARCHAR(255), +column531 VARCHAR(255), +column532 VARCHAR(255), +column533 VARCHAR(255), +column534 VARCHAR(255), +column535 VARCHAR(255), +column536 VARCHAR(255), +column537 VARCHAR(255), +column538 VARCHAR(255), +column539 VARCHAR(255), +column540 VARCHAR(255), +column541 VARCHAR(255), +column542 VARCHAR(255), +column543 VARCHAR(255), +column544 VARCHAR(255), +column545 VARCHAR(255), +column546 VARCHAR(255), +column547 VARCHAR(255), +column548 VARCHAR(255), +column549 VARCHAR(255), +column550 VARCHAR(255), +column551 VARCHAR(255), +column552 VARCHAR(255), +column553 VARCHAR(255), +column554 VARCHAR(255), +column555 VARCHAR(255), +column556 VARCHAR(255), +column557 VARCHAR(255), +column558 VARCHAR(255), +column559 VARCHAR(255), +column560 VARCHAR(255), +column561 VARCHAR(255), +column562 VARCHAR(255), +column563 VARCHAR(255), +column564 VARCHAR(255), +column565 VARCHAR(255), +column566 VARCHAR(255), +column567 VARCHAR(255), +column568 VARCHAR(255), +column569 VARCHAR(255), +column570 VARCHAR(255), +column571 VARCHAR(255), +column572 VARCHAR(255), +column573 VARCHAR(255), +column574 VARCHAR(255), +column575 VARCHAR(255), +column576 VARCHAR(255), +column577 VARCHAR(255), +column578 VARCHAR(255), +column579 VARCHAR(255), +column580 VARCHAR(255), +column581 VARCHAR(255), +column582 VARCHAR(255), +column583 VARCHAR(255), +column584 VARCHAR(255), +column585 VARCHAR(255), +column586 VARCHAR(255), +column587 VARCHAR(255), +column588 VARCHAR(255), +column589 VARCHAR(255), +column590 VARCHAR(255), +column591 VARCHAR(255), +column592 VARCHAR(255), +column593 VARCHAR(255), +column594 VARCHAR(255), +column595 VARCHAR(255), +column596 VARCHAR(255), +column597 VARCHAR(255), +column598 VARCHAR(255), +column599 VARCHAR(255), +column600 VARCHAR(255), +column601 VARCHAR(255), +column602 VARCHAR(255), +column603 VARCHAR(255), +column604 VARCHAR(255), +column605 VARCHAR(255), +column606 VARCHAR(255), +column607 VARCHAR(255), +column608 VARCHAR(255), +column609 VARCHAR(255), +column610 VARCHAR(255), +column611 VARCHAR(255), +column612 VARCHAR(255), +column613 VARCHAR(255), +column614 VARCHAR(255), +column615 VARCHAR(255), +column616 VARCHAR(255), +column617 VARCHAR(255), +column618 VARCHAR(255), +column619 VARCHAR(255), +column620 VARCHAR(255), +column621 VARCHAR(255), +column622 VARCHAR(255), +column623 VARCHAR(255), +column624 VARCHAR(255), +column625 VARCHAR(255), +column626 VARCHAR(255), +column627 VARCHAR(255), +column628 VARCHAR(255), +column629 VARCHAR(255), +column630 VARCHAR(255), +column631 VARCHAR(255), +column632 VARCHAR(255), +column633 VARCHAR(255), +column634 VARCHAR(255), +column635 VARCHAR(255), +column636 VARCHAR(255), +column637 VARCHAR(255), +column638 VARCHAR(255), +column639 VARCHAR(255), +column640 VARCHAR(255), +column641 VARCHAR(255), +column642 VARCHAR(255), +column643 VARCHAR(255), +column644 VARCHAR(255), +column645 VARCHAR(255), +column646 VARCHAR(255), +column647 VARCHAR(255), +column648 VARCHAR(255), +column649 VARCHAR(255), +column650 VARCHAR(255), +column651 VARCHAR(255), +column652 VARCHAR(255), +column653 VARCHAR(255), +column654 VARCHAR(255), +column655 VARCHAR(255), +column656 VARCHAR(255), +column657 VARCHAR(255), +column658 VARCHAR(255), +column659 VARCHAR(255), +column660 VARCHAR(255), +column661 VARCHAR(255), +column662 VARCHAR(255), +column663 VARCHAR(255), +column664 VARCHAR(255), +column665 VARCHAR(255), +column666 VARCHAR(255), +column667 VARCHAR(255), +column668 VARCHAR(255), +column669 VARCHAR(255), +column670 VARCHAR(255), +column671 VARCHAR(255), +column672 VARCHAR(255), +column673 VARCHAR(255), +column674 VARCHAR(255), +column675 VARCHAR(255), +column676 VARCHAR(255), +column677 VARCHAR(255), +column678 VARCHAR(255), +column679 VARCHAR(255), +column680 VARCHAR(255), +column681 VARCHAR(255), +column682 VARCHAR(255), +column683 VARCHAR(255), +column684 VARCHAR(255), +column685 VARCHAR(255), +column686 VARCHAR(255), +column687 VARCHAR(255), +column688 VARCHAR(255), +column689 VARCHAR(255), +column690 VARCHAR(255), +column691 VARCHAR(255), +column692 VARCHAR(255), +column693 VARCHAR(255), +column694 VARCHAR(255), +column695 VARCHAR(255), +column696 VARCHAR(255), +column697 VARCHAR(255), +column698 VARCHAR(255), +column699 VARCHAR(255), +column700 VARCHAR(255), +column701 VARCHAR(255), +column702 VARCHAR(255), +column703 VARCHAR(255), +column704 VARCHAR(255), +column705 VARCHAR(255), +column706 VARCHAR(255), +column707 VARCHAR(255), +column708 VARCHAR(255), +column709 VARCHAR(255), +column710 VARCHAR(255), +column711 VARCHAR(255), +column712 VARCHAR(255), +column713 VARCHAR(255), +column714 VARCHAR(255), +column715 VARCHAR(255), +column716 VARCHAR(255), +column717 VARCHAR(255), +column718 VARCHAR(255), +column719 VARCHAR(255), +column720 VARCHAR(255), +column721 VARCHAR(255), +column722 VARCHAR(255), +column723 VARCHAR(255), +column724 VARCHAR(255), +column725 VARCHAR(255), +column726 VARCHAR(255), +column727 VARCHAR(255), +column728 VARCHAR(255), +column729 VARCHAR(255), +column730 VARCHAR(255), +column731 VARCHAR(255), +column732 VARCHAR(255), +column733 VARCHAR(255), +column734 VARCHAR(255), +column735 VARCHAR(255), +column736 VARCHAR(255), +column737 VARCHAR(255), +column738 VARCHAR(255), +column739 VARCHAR(255), +column740 VARCHAR(255), +column741 VARCHAR(255), +column742 VARCHAR(255), +column743 VARCHAR(255), +column744 VARCHAR(255), +column745 VARCHAR(255), +column746 VARCHAR(255), +column747 VARCHAR(255), +column748 VARCHAR(255), +column749 VARCHAR(255), +column750 VARCHAR(255), +column751 VARCHAR(255), +column752 VARCHAR(255), +column753 VARCHAR(255), +column754 VARCHAR(255), +column755 VARCHAR(255), +column756 VARCHAR(255), +column757 VARCHAR(255), +column758 VARCHAR(255), +column759 VARCHAR(255), +column760 VARCHAR(255), +column761 VARCHAR(255), +column762 VARCHAR(255), +column763 VARCHAR(255), +column764 VARCHAR(255), +column765 VARCHAR(255), +column766 VARCHAR(255), +column767 VARCHAR(255), +column768 VARCHAR(255), +column769 VARCHAR(255), +column770 VARCHAR(255), +column771 VARCHAR(255), +column772 VARCHAR(255), +column773 VARCHAR(255), +column774 VARCHAR(255), +column775 VARCHAR(255), +column776 VARCHAR(255), +column777 VARCHAR(255), +column778 VARCHAR(255), +column779 VARCHAR(255), +column780 VARCHAR(255), +column781 VARCHAR(255), +column782 VARCHAR(255), +column783 VARCHAR(255), +column784 VARCHAR(255), +column785 VARCHAR(255), +column786 VARCHAR(255), +column787 VARCHAR(255), +column788 VARCHAR(255), +column789 VARCHAR(255), +column790 VARCHAR(255), +column791 VARCHAR(255), +column792 VARCHAR(255), +column793 VARCHAR(255), +column794 VARCHAR(255), +column795 VARCHAR(255), +column796 VARCHAR(255), +column797 VARCHAR(255), +column798 VARCHAR(255), +column799 VARCHAR(255), +column800 VARCHAR(255), +column801 VARCHAR(255), +column802 VARCHAR(255), +column803 VARCHAR(255), +column804 VARCHAR(255), +column805 VARCHAR(255), +column806 VARCHAR(255), +column807 VARCHAR(255), +column808 VARCHAR(255), +column809 VARCHAR(255), +column810 VARCHAR(255), +column811 VARCHAR(255), +column812 VARCHAR(255), +column813 VARCHAR(255), +column814 VARCHAR(255), +column815 VARCHAR(255), +column816 VARCHAR(255), +column817 VARCHAR(255), +column818 VARCHAR(255), +column819 VARCHAR(255), +column820 VARCHAR(255), +column821 VARCHAR(255), +column822 VARCHAR(255), +column823 VARCHAR(255), +column824 VARCHAR(255), +column825 VARCHAR(255), +column826 VARCHAR(255), +column827 VARCHAR(255), +column828 VARCHAR(255), +column829 VARCHAR(255), +column830 VARCHAR(255), +column831 VARCHAR(255), +column832 VARCHAR(255), +column833 VARCHAR(255), +column834 VARCHAR(255), +column835 VARCHAR(255), +column836 VARCHAR(255), +column837 VARCHAR(255), +column838 VARCHAR(255), +column839 VARCHAR(255), +column840 VARCHAR(255), +column841 VARCHAR(255), +column842 VARCHAR(255), +column843 VARCHAR(255), +column844 VARCHAR(255), +column845 VARCHAR(255), +column846 VARCHAR(255), +column847 VARCHAR(255), +column848 VARCHAR(255), +column849 VARCHAR(255), +column850 VARCHAR(255), +column851 VARCHAR(255), +column852 VARCHAR(255), +column853 VARCHAR(255), +column854 VARCHAR(255), +column855 VARCHAR(255), +column856 VARCHAR(255), +column857 VARCHAR(255), +column858 VARCHAR(255), +column859 VARCHAR(255), +column860 VARCHAR(255), +column861 VARCHAR(255), +column862 VARCHAR(255), +column863 VARCHAR(255), +column864 VARCHAR(255), +column865 VARCHAR(255), +column866 VARCHAR(255), +column867 VARCHAR(255), +column868 VARCHAR(255), +column869 VARCHAR(255), +column870 VARCHAR(255), +column871 VARCHAR(255), +column872 VARCHAR(255), +column873 VARCHAR(255), +column874 VARCHAR(255), +column875 VARCHAR(255), +column876 VARCHAR(255), +column877 VARCHAR(255), +column878 VARCHAR(255), +column879 VARCHAR(255), +column880 VARCHAR(255), +column881 VARCHAR(255), +column882 VARCHAR(255), +column883 VARCHAR(255), +column884 VARCHAR(255), +column885 VARCHAR(255), +column886 VARCHAR(255), +column887 VARCHAR(255), +column888 VARCHAR(255), +column889 VARCHAR(255), +column890 VARCHAR(255), +column891 VARCHAR(255), +column892 VARCHAR(255), +column893 VARCHAR(255), +column894 VARCHAR(255), +column895 VARCHAR(255), +column896 VARCHAR(255), +column897 VARCHAR(255), +column898 VARCHAR(255), +column899 VARCHAR(255), +column900 VARCHAR(255), +column901 VARCHAR(255), +column902 VARCHAR(255), +column903 VARCHAR(255), +column904 VARCHAR(255), +column905 VARCHAR(255), +column906 VARCHAR(255), +column907 VARCHAR(255), +column908 VARCHAR(255), +column909 VARCHAR(255), +column910 VARCHAR(255), +column911 VARCHAR(255), +column912 VARCHAR(255), +column913 VARCHAR(255), +column914 VARCHAR(255), +column915 VARCHAR(255), +column916 VARCHAR(255), +column917 VARCHAR(255), +column918 VARCHAR(255), +column919 VARCHAR(255), +column920 VARCHAR(255), +column921 VARCHAR(255), +column922 VARCHAR(255), +column923 VARCHAR(255), +column924 VARCHAR(255), +column925 VARCHAR(255), +column926 VARCHAR(255), +column927 VARCHAR(255), +column928 VARCHAR(255), +column929 VARCHAR(255), +column930 VARCHAR(255), +column931 VARCHAR(255), +column932 VARCHAR(255), +column933 VARCHAR(255), +column934 VARCHAR(255), +column935 VARCHAR(255), +column936 VARCHAR(255), +column937 VARCHAR(255), +column938 VARCHAR(255), +column939 VARCHAR(255), +column940 VARCHAR(255), +column941 VARCHAR(255), +column942 VARCHAR(255), +column943 VARCHAR(255), +column944 VARCHAR(255), +column945 VARCHAR(255), +column946 VARCHAR(255), +column947 VARCHAR(255), +column948 VARCHAR(255), +column949 VARCHAR(255), +column950 VARCHAR(255), +column951 VARCHAR(255), +column952 VARCHAR(255), +column953 VARCHAR(255), +column954 VARCHAR(255), +column955 VARCHAR(255), +column956 VARCHAR(255), +column957 VARCHAR(255), +column958 VARCHAR(255), +column959 VARCHAR(255), +column960 VARCHAR(255), +column961 VARCHAR(255), +column962 VARCHAR(255), +column963 VARCHAR(255), +column964 VARCHAR(255), +column965 VARCHAR(255), +column966 VARCHAR(255), +column967 VARCHAR(255), +column968 VARCHAR(255), +column969 VARCHAR(255), +column970 VARCHAR(255), +column971 VARCHAR(255), +column972 VARCHAR(255), +column973 VARCHAR(255), +column974 VARCHAR(255), +column975 VARCHAR(255), +column976 VARCHAR(255), +column977 VARCHAR(255), +column978 VARCHAR(255), +column979 VARCHAR(255), +column980 VARCHAR(255), +column981 VARCHAR(255), +column982 VARCHAR(255), +column983 VARCHAR(255), +column984 VARCHAR(255), +column985 VARCHAR(255), +column986 VARCHAR(255), +column987 VARCHAR(255), +column988 VARCHAR(255), +column989 VARCHAR(255), +column990 VARCHAR(255), +column991 VARCHAR(255), +column992 VARCHAR(255), +column993 VARCHAR(255), +column994 VARCHAR(255), +column995 VARCHAR(255), +column996 VARCHAR(255), +column997 VARCHAR(255), +column998 VARCHAR(255), +column999 VARCHAR(255), +column1000 VARCHAR(255) +); \ No newline at end of file diff --git a/benchmark/data/create_flink.sql b/benchmark/data/create_flink.sql new file mode 100644 index 00000000..4e542df1 --- /dev/null +++ b/benchmark/data/create_flink.sql @@ -0,0 +1,1004 @@ +CREATE TABLE my_table ( +column1 VARCHAR(255), +column2 VARCHAR(255), +column3 VARCHAR(255), +column4 VARCHAR(255), +column5 VARCHAR(255), +column6 VARCHAR(255), +column7 VARCHAR(255), +column8 VARCHAR(255), +column9 VARCHAR(255), +column10 VARCHAR(255), +column11 VARCHAR(255), +column12 VARCHAR(255), +column13 VARCHAR(255), +column14 VARCHAR(255), +column15 VARCHAR(255), +column16 VARCHAR(255), +column17 VARCHAR(255), +column18 VARCHAR(255), +column19 VARCHAR(255), +column20 VARCHAR(255), +column21 VARCHAR(255), +column22 VARCHAR(255), +column23 VARCHAR(255), +column24 VARCHAR(255), +column25 VARCHAR(255), +column26 VARCHAR(255), +column27 VARCHAR(255), +column28 VARCHAR(255), +column29 VARCHAR(255), +column30 VARCHAR(255), +column31 VARCHAR(255), +column32 VARCHAR(255), +column33 VARCHAR(255), +column34 VARCHAR(255), +column35 VARCHAR(255), +column36 VARCHAR(255), +column37 VARCHAR(255), +column38 VARCHAR(255), +column39 VARCHAR(255), +column40 VARCHAR(255), +column41 VARCHAR(255), +column42 VARCHAR(255), +column43 VARCHAR(255), +column44 VARCHAR(255), +column45 VARCHAR(255), +column46 VARCHAR(255), +column47 VARCHAR(255), +column48 VARCHAR(255), +column49 VARCHAR(255), +column50 VARCHAR(255), +column51 VARCHAR(255), +column52 VARCHAR(255), +column53 VARCHAR(255), +column54 VARCHAR(255), +column55 VARCHAR(255), +column56 VARCHAR(255), +column57 VARCHAR(255), +column58 VARCHAR(255), +column59 VARCHAR(255), +column60 VARCHAR(255), +column61 VARCHAR(255), +column62 VARCHAR(255), +column63 VARCHAR(255), +column64 VARCHAR(255), +column65 VARCHAR(255), +column66 VARCHAR(255), +column67 VARCHAR(255), +column68 VARCHAR(255), +column69 VARCHAR(255), +column70 VARCHAR(255), +column71 VARCHAR(255), +column72 VARCHAR(255), +column73 VARCHAR(255), +column74 VARCHAR(255), +column75 VARCHAR(255), +column76 VARCHAR(255), +column77 VARCHAR(255), +column78 VARCHAR(255), +column79 VARCHAR(255), +column80 VARCHAR(255), +column81 VARCHAR(255), +column82 VARCHAR(255), +column83 VARCHAR(255), +column84 VARCHAR(255), +column85 VARCHAR(255), +column86 VARCHAR(255), +column87 VARCHAR(255), +column88 VARCHAR(255), +column89 VARCHAR(255), +column90 VARCHAR(255), +column91 VARCHAR(255), +column92 VARCHAR(255), +column93 VARCHAR(255), +column94 VARCHAR(255), +column95 VARCHAR(255), +column96 VARCHAR(255), +column97 VARCHAR(255), +column98 VARCHAR(255), +column99 VARCHAR(255), +column100 VARCHAR(255), +column101 VARCHAR(255), +column102 VARCHAR(255), +column103 VARCHAR(255), +column104 VARCHAR(255), +column105 VARCHAR(255), +column106 VARCHAR(255), +column107 VARCHAR(255), +column108 VARCHAR(255), +column109 VARCHAR(255), +column110 VARCHAR(255), +column111 VARCHAR(255), +column112 VARCHAR(255), +column113 VARCHAR(255), +column114 VARCHAR(255), +column115 VARCHAR(255), +column116 VARCHAR(255), +column117 VARCHAR(255), +column118 VARCHAR(255), +column119 VARCHAR(255), +column120 VARCHAR(255), +column121 VARCHAR(255), +column122 VARCHAR(255), +column123 VARCHAR(255), +column124 VARCHAR(255), +column125 VARCHAR(255), +column126 VARCHAR(255), +column127 VARCHAR(255), +column128 VARCHAR(255), +column129 VARCHAR(255), +column130 VARCHAR(255), +column131 VARCHAR(255), +column132 VARCHAR(255), +column133 VARCHAR(255), +column134 VARCHAR(255), +column135 VARCHAR(255), +column136 VARCHAR(255), +column137 VARCHAR(255), +column138 VARCHAR(255), +column139 VARCHAR(255), +column140 VARCHAR(255), +column141 VARCHAR(255), +column142 VARCHAR(255), +column143 VARCHAR(255), +column144 VARCHAR(255), +column145 VARCHAR(255), +column146 VARCHAR(255), +column147 VARCHAR(255), +column148 VARCHAR(255), +column149 VARCHAR(255), +column150 VARCHAR(255), +column151 VARCHAR(255), +column152 VARCHAR(255), +column153 VARCHAR(255), +column154 VARCHAR(255), +column155 VARCHAR(255), +column156 VARCHAR(255), +column157 VARCHAR(255), +column158 VARCHAR(255), +column159 VARCHAR(255), +column160 VARCHAR(255), +column161 VARCHAR(255), +column162 VARCHAR(255), +column163 VARCHAR(255), +column164 VARCHAR(255), +column165 VARCHAR(255), +column166 VARCHAR(255), +column167 VARCHAR(255), +column168 VARCHAR(255), +column169 VARCHAR(255), +column170 VARCHAR(255), +column171 VARCHAR(255), +column172 VARCHAR(255), +column173 VARCHAR(255), +column174 VARCHAR(255), +column175 VARCHAR(255), +column176 VARCHAR(255), +column177 VARCHAR(255), +column178 VARCHAR(255), +column179 VARCHAR(255), +column180 VARCHAR(255), +column181 VARCHAR(255), +column182 VARCHAR(255), +column183 VARCHAR(255), +column184 VARCHAR(255), +column185 VARCHAR(255), +column186 VARCHAR(255), +column187 VARCHAR(255), +column188 VARCHAR(255), +column189 VARCHAR(255), +column190 VARCHAR(255), +column191 VARCHAR(255), +column192 VARCHAR(255), +column193 VARCHAR(255), +column194 VARCHAR(255), +column195 VARCHAR(255), +column196 VARCHAR(255), +column197 VARCHAR(255), +column198 VARCHAR(255), +column199 VARCHAR(255), +column200 VARCHAR(255), +column201 VARCHAR(255), +column202 VARCHAR(255), +column203 VARCHAR(255), +column204 VARCHAR(255), +column205 VARCHAR(255), +column206 VARCHAR(255), +column207 VARCHAR(255), +column208 VARCHAR(255), +column209 VARCHAR(255), +column210 VARCHAR(255), +column211 VARCHAR(255), +column212 VARCHAR(255), +column213 VARCHAR(255), +column214 VARCHAR(255), +column215 VARCHAR(255), +column216 VARCHAR(255), +column217 VARCHAR(255), +column218 VARCHAR(255), +column219 VARCHAR(255), +column220 VARCHAR(255), +column221 VARCHAR(255), +column222 VARCHAR(255), +column223 VARCHAR(255), +column224 VARCHAR(255), +column225 VARCHAR(255), +column226 VARCHAR(255), +column227 VARCHAR(255), +column228 VARCHAR(255), +column229 VARCHAR(255), +column230 VARCHAR(255), +column231 VARCHAR(255), +column232 VARCHAR(255), +column233 VARCHAR(255), +column234 VARCHAR(255), +column235 VARCHAR(255), +column236 VARCHAR(255), +column237 VARCHAR(255), +column238 VARCHAR(255), +column239 VARCHAR(255), +column240 VARCHAR(255), +column241 VARCHAR(255), +column242 VARCHAR(255), +column243 VARCHAR(255), +column244 VARCHAR(255), +column245 VARCHAR(255), +column246 VARCHAR(255), +column247 VARCHAR(255), +column248 VARCHAR(255), +column249 VARCHAR(255), +column250 VARCHAR(255), +column251 VARCHAR(255), +column252 VARCHAR(255), +column253 VARCHAR(255), +column254 VARCHAR(255), +column255 VARCHAR(255), +column256 VARCHAR(255), +column257 VARCHAR(255), +column258 VARCHAR(255), +column259 VARCHAR(255), +column260 VARCHAR(255), +column261 VARCHAR(255), +column262 VARCHAR(255), +column263 VARCHAR(255), +column264 VARCHAR(255), +column265 VARCHAR(255), +column266 VARCHAR(255), +column267 VARCHAR(255), +column268 VARCHAR(255), +column269 VARCHAR(255), +column270 VARCHAR(255), +column271 VARCHAR(255), +column272 VARCHAR(255), +column273 VARCHAR(255), +column274 VARCHAR(255), +column275 VARCHAR(255), +column276 VARCHAR(255), +column277 VARCHAR(255), +column278 VARCHAR(255), +column279 VARCHAR(255), +column280 VARCHAR(255), +column281 VARCHAR(255), +column282 VARCHAR(255), +column283 VARCHAR(255), +column284 VARCHAR(255), +column285 VARCHAR(255), +column286 VARCHAR(255), +column287 VARCHAR(255), +column288 VARCHAR(255), +column289 VARCHAR(255), +column290 VARCHAR(255), +column291 VARCHAR(255), +column292 VARCHAR(255), +column293 VARCHAR(255), +column294 VARCHAR(255), +column295 VARCHAR(255), +column296 VARCHAR(255), +column297 VARCHAR(255), +column298 VARCHAR(255), +column299 VARCHAR(255), +column300 VARCHAR(255), +column301 VARCHAR(255), +column302 VARCHAR(255), +column303 VARCHAR(255), +column304 VARCHAR(255), +column305 VARCHAR(255), +column306 VARCHAR(255), +column307 VARCHAR(255), +column308 VARCHAR(255), +column309 VARCHAR(255), +column310 VARCHAR(255), +column311 VARCHAR(255), +column312 VARCHAR(255), +column313 VARCHAR(255), +column314 VARCHAR(255), +column315 VARCHAR(255), +column316 VARCHAR(255), +column317 VARCHAR(255), +column318 VARCHAR(255), +column319 VARCHAR(255), +column320 VARCHAR(255), +column321 VARCHAR(255), +column322 VARCHAR(255), +column323 VARCHAR(255), +column324 VARCHAR(255), +column325 VARCHAR(255), +column326 VARCHAR(255), +column327 VARCHAR(255), +column328 VARCHAR(255), +column329 VARCHAR(255), +column330 VARCHAR(255), +column331 VARCHAR(255), +column332 VARCHAR(255), +column333 VARCHAR(255), +column334 VARCHAR(255), +column335 VARCHAR(255), +column336 VARCHAR(255), +column337 VARCHAR(255), +column338 VARCHAR(255), +column339 VARCHAR(255), +column340 VARCHAR(255), +column341 VARCHAR(255), +column342 VARCHAR(255), +column343 VARCHAR(255), +column344 VARCHAR(255), +column345 VARCHAR(255), +column346 VARCHAR(255), +column347 VARCHAR(255), +column348 VARCHAR(255), +column349 VARCHAR(255), +column350 VARCHAR(255), +column351 VARCHAR(255), +column352 VARCHAR(255), +column353 VARCHAR(255), +column354 VARCHAR(255), +column355 VARCHAR(255), +column356 VARCHAR(255), +column357 VARCHAR(255), +column358 VARCHAR(255), +column359 VARCHAR(255), +column360 VARCHAR(255), +column361 VARCHAR(255), +column362 VARCHAR(255), +column363 VARCHAR(255), +column364 VARCHAR(255), +column365 VARCHAR(255), +column366 VARCHAR(255), +column367 VARCHAR(255), +column368 VARCHAR(255), +column369 VARCHAR(255), +column370 VARCHAR(255), +column371 VARCHAR(255), +column372 VARCHAR(255), +column373 VARCHAR(255), +column374 VARCHAR(255), +column375 VARCHAR(255), +column376 VARCHAR(255), +column377 VARCHAR(255), +column378 VARCHAR(255), +column379 VARCHAR(255), +column380 VARCHAR(255), +column381 VARCHAR(255), +column382 VARCHAR(255), +column383 VARCHAR(255), +column384 VARCHAR(255), +column385 VARCHAR(255), +column386 VARCHAR(255), +column387 VARCHAR(255), +column388 VARCHAR(255), +column389 VARCHAR(255), +column390 VARCHAR(255), +column391 VARCHAR(255), +column392 VARCHAR(255), +column393 VARCHAR(255), +column394 VARCHAR(255), +column395 VARCHAR(255), +column396 VARCHAR(255), +column397 VARCHAR(255), +column398 VARCHAR(255), +column399 VARCHAR(255), +column400 VARCHAR(255), +column401 VARCHAR(255), +column402 VARCHAR(255), +column403 VARCHAR(255), +column404 VARCHAR(255), +column405 VARCHAR(255), +column406 VARCHAR(255), +column407 VARCHAR(255), +column408 VARCHAR(255), +column409 VARCHAR(255), +column410 VARCHAR(255), +column411 VARCHAR(255), +column412 VARCHAR(255), +column413 VARCHAR(255), +column414 VARCHAR(255), +column415 VARCHAR(255), +column416 VARCHAR(255), +column417 VARCHAR(255), +column418 VARCHAR(255), +column419 VARCHAR(255), +column420 VARCHAR(255), +column421 VARCHAR(255), +column422 VARCHAR(255), +column423 VARCHAR(255), +column424 VARCHAR(255), +column425 VARCHAR(255), +column426 VARCHAR(255), +column427 VARCHAR(255), +column428 VARCHAR(255), +column429 VARCHAR(255), +column430 VARCHAR(255), +column431 VARCHAR(255), +column432 VARCHAR(255), +column433 VARCHAR(255), +column434 VARCHAR(255), +column435 VARCHAR(255), +column436 VARCHAR(255), +column437 VARCHAR(255), +column438 VARCHAR(255), +column439 VARCHAR(255), +column440 VARCHAR(255), +column441 VARCHAR(255), +column442 VARCHAR(255), +column443 VARCHAR(255), +column444 VARCHAR(255), +column445 VARCHAR(255), +column446 VARCHAR(255), +column447 VARCHAR(255), +column448 VARCHAR(255), +column449 VARCHAR(255), +column450 VARCHAR(255), +column451 VARCHAR(255), +column452 VARCHAR(255), +column453 VARCHAR(255), +column454 VARCHAR(255), +column455 VARCHAR(255), +column456 VARCHAR(255), +column457 VARCHAR(255), +column458 VARCHAR(255), +column459 VARCHAR(255), +column460 VARCHAR(255), +column461 VARCHAR(255), +column462 VARCHAR(255), +column463 VARCHAR(255), +column464 VARCHAR(255), +column465 VARCHAR(255), +column466 VARCHAR(255), +column467 VARCHAR(255), +column468 VARCHAR(255), +column469 VARCHAR(255), +column470 VARCHAR(255), +column471 VARCHAR(255), +column472 VARCHAR(255), +column473 VARCHAR(255), +column474 VARCHAR(255), +column475 VARCHAR(255), +column476 VARCHAR(255), +column477 VARCHAR(255), +column478 VARCHAR(255), +column479 VARCHAR(255), +column480 VARCHAR(255), +column481 VARCHAR(255), +column482 VARCHAR(255), +column483 VARCHAR(255), +column484 VARCHAR(255), +column485 VARCHAR(255), +column486 VARCHAR(255), +column487 VARCHAR(255), +column488 VARCHAR(255), +column489 VARCHAR(255), +column490 VARCHAR(255), +column491 VARCHAR(255), +column492 VARCHAR(255), +column493 VARCHAR(255), +column494 VARCHAR(255), +column495 VARCHAR(255), +column496 VARCHAR(255), +column497 VARCHAR(255), +column498 VARCHAR(255), +column499 VARCHAR(255), +column500 VARCHAR(255), +column501 VARCHAR(255), +column502 VARCHAR(255), +column503 VARCHAR(255), +column504 VARCHAR(255), +column505 VARCHAR(255), +column506 VARCHAR(255), +column507 VARCHAR(255), +column508 VARCHAR(255), +column509 VARCHAR(255), +column510 VARCHAR(255), +column511 VARCHAR(255), +column512 VARCHAR(255), +column513 VARCHAR(255), +column514 VARCHAR(255), +column515 VARCHAR(255), +column516 VARCHAR(255), +column517 VARCHAR(255), +column518 VARCHAR(255), +column519 VARCHAR(255), +column520 VARCHAR(255), +column521 VARCHAR(255), +column522 VARCHAR(255), +column523 VARCHAR(255), +column524 VARCHAR(255), +column525 VARCHAR(255), +column526 VARCHAR(255), +column527 VARCHAR(255), +column528 VARCHAR(255), +column529 VARCHAR(255), +column530 VARCHAR(255), +column531 VARCHAR(255), +column532 VARCHAR(255), +column533 VARCHAR(255), +column534 VARCHAR(255), +column535 VARCHAR(255), +column536 VARCHAR(255), +column537 VARCHAR(255), +column538 VARCHAR(255), +column539 VARCHAR(255), +column540 VARCHAR(255), +column541 VARCHAR(255), +column542 VARCHAR(255), +column543 VARCHAR(255), +column544 VARCHAR(255), +column545 VARCHAR(255), +column546 VARCHAR(255), +column547 VARCHAR(255), +column548 VARCHAR(255), +column549 VARCHAR(255), +column550 VARCHAR(255), +column551 VARCHAR(255), +column552 VARCHAR(255), +column553 VARCHAR(255), +column554 VARCHAR(255), +column555 VARCHAR(255), +column556 VARCHAR(255), +column557 VARCHAR(255), +column558 VARCHAR(255), +column559 VARCHAR(255), +column560 VARCHAR(255), +column561 VARCHAR(255), +column562 VARCHAR(255), +column563 VARCHAR(255), +column564 VARCHAR(255), +column565 VARCHAR(255), +column566 VARCHAR(255), +column567 VARCHAR(255), +column568 VARCHAR(255), +column569 VARCHAR(255), +column570 VARCHAR(255), +column571 VARCHAR(255), +column572 VARCHAR(255), +column573 VARCHAR(255), +column574 VARCHAR(255), +column575 VARCHAR(255), +column576 VARCHAR(255), +column577 VARCHAR(255), +column578 VARCHAR(255), +column579 VARCHAR(255), +column580 VARCHAR(255), +column581 VARCHAR(255), +column582 VARCHAR(255), +column583 VARCHAR(255), +column584 VARCHAR(255), +column585 VARCHAR(255), +column586 VARCHAR(255), +column587 VARCHAR(255), +column588 VARCHAR(255), +column589 VARCHAR(255), +column590 VARCHAR(255), +column591 VARCHAR(255), +column592 VARCHAR(255), +column593 VARCHAR(255), +column594 VARCHAR(255), +column595 VARCHAR(255), +column596 VARCHAR(255), +column597 VARCHAR(255), +column598 VARCHAR(255), +column599 VARCHAR(255), +column600 VARCHAR(255), +column601 VARCHAR(255), +column602 VARCHAR(255), +column603 VARCHAR(255), +column604 VARCHAR(255), +column605 VARCHAR(255), +column606 VARCHAR(255), +column607 VARCHAR(255), +column608 VARCHAR(255), +column609 VARCHAR(255), +column610 VARCHAR(255), +column611 VARCHAR(255), +column612 VARCHAR(255), +column613 VARCHAR(255), +column614 VARCHAR(255), +column615 VARCHAR(255), +column616 VARCHAR(255), +column617 VARCHAR(255), +column618 VARCHAR(255), +column619 VARCHAR(255), +column620 VARCHAR(255), +column621 VARCHAR(255), +column622 VARCHAR(255), +column623 VARCHAR(255), +column624 VARCHAR(255), +column625 VARCHAR(255), +column626 VARCHAR(255), +column627 VARCHAR(255), +column628 VARCHAR(255), +column629 VARCHAR(255), +column630 VARCHAR(255), +column631 VARCHAR(255), +column632 VARCHAR(255), +column633 VARCHAR(255), +column634 VARCHAR(255), +column635 VARCHAR(255), +column636 VARCHAR(255), +column637 VARCHAR(255), +column638 VARCHAR(255), +column639 VARCHAR(255), +column640 VARCHAR(255), +column641 VARCHAR(255), +column642 VARCHAR(255), +column643 VARCHAR(255), +column644 VARCHAR(255), +column645 VARCHAR(255), +column646 VARCHAR(255), +column647 VARCHAR(255), +column648 VARCHAR(255), +column649 VARCHAR(255), +column650 VARCHAR(255), +column651 VARCHAR(255), +column652 VARCHAR(255), +column653 VARCHAR(255), +column654 VARCHAR(255), +column655 VARCHAR(255), +column656 VARCHAR(255), +column657 VARCHAR(255), +column658 VARCHAR(255), +column659 VARCHAR(255), +column660 VARCHAR(255), +column661 VARCHAR(255), +column662 VARCHAR(255), +column663 VARCHAR(255), +column664 VARCHAR(255), +column665 VARCHAR(255), +column666 VARCHAR(255), +column667 VARCHAR(255), +column668 VARCHAR(255), +column669 VARCHAR(255), +column670 VARCHAR(255), +column671 VARCHAR(255), +column672 VARCHAR(255), +column673 VARCHAR(255), +column674 VARCHAR(255), +column675 VARCHAR(255), +column676 VARCHAR(255), +column677 VARCHAR(255), +column678 VARCHAR(255), +column679 VARCHAR(255), +column680 VARCHAR(255), +column681 VARCHAR(255), +column682 VARCHAR(255), +column683 VARCHAR(255), +column684 VARCHAR(255), +column685 VARCHAR(255), +column686 VARCHAR(255), +column687 VARCHAR(255), +column688 VARCHAR(255), +column689 VARCHAR(255), +column690 VARCHAR(255), +column691 VARCHAR(255), +column692 VARCHAR(255), +column693 VARCHAR(255), +column694 VARCHAR(255), +column695 VARCHAR(255), +column696 VARCHAR(255), +column697 VARCHAR(255), +column698 VARCHAR(255), +column699 VARCHAR(255), +column700 VARCHAR(255), +column701 VARCHAR(255), +column702 VARCHAR(255), +column703 VARCHAR(255), +column704 VARCHAR(255), +column705 VARCHAR(255), +column706 VARCHAR(255), +column707 VARCHAR(255), +column708 VARCHAR(255), +column709 VARCHAR(255), +column710 VARCHAR(255), +column711 VARCHAR(255), +column712 VARCHAR(255), +column713 VARCHAR(255), +column714 VARCHAR(255), +column715 VARCHAR(255), +column716 VARCHAR(255), +column717 VARCHAR(255), +column718 VARCHAR(255), +column719 VARCHAR(255), +column720 VARCHAR(255), +column721 VARCHAR(255), +column722 VARCHAR(255), +column723 VARCHAR(255), +column724 VARCHAR(255), +column725 VARCHAR(255), +column726 VARCHAR(255), +column727 VARCHAR(255), +column728 VARCHAR(255), +column729 VARCHAR(255), +column730 VARCHAR(255), +column731 VARCHAR(255), +column732 VARCHAR(255), +column733 VARCHAR(255), +column734 VARCHAR(255), +column735 VARCHAR(255), +column736 VARCHAR(255), +column737 VARCHAR(255), +column738 VARCHAR(255), +column739 VARCHAR(255), +column740 VARCHAR(255), +column741 VARCHAR(255), +column742 VARCHAR(255), +column743 VARCHAR(255), +column744 VARCHAR(255), +column745 VARCHAR(255), +column746 VARCHAR(255), +column747 VARCHAR(255), +column748 VARCHAR(255), +column749 VARCHAR(255), +column750 VARCHAR(255), +column751 VARCHAR(255), +column752 VARCHAR(255), +column753 VARCHAR(255), +column754 VARCHAR(255), +column755 VARCHAR(255), +column756 VARCHAR(255), +column757 VARCHAR(255), +column758 VARCHAR(255), +column759 VARCHAR(255), +column760 VARCHAR(255), +column761 VARCHAR(255), +column762 VARCHAR(255), +column763 VARCHAR(255), +column764 VARCHAR(255), +column765 VARCHAR(255), +column766 VARCHAR(255), +column767 VARCHAR(255), +column768 VARCHAR(255), +column769 VARCHAR(255), +column770 VARCHAR(255), +column771 VARCHAR(255), +column772 VARCHAR(255), +column773 VARCHAR(255), +column774 VARCHAR(255), +column775 VARCHAR(255), +column776 VARCHAR(255), +column777 VARCHAR(255), +column778 VARCHAR(255), +column779 VARCHAR(255), +column780 VARCHAR(255), +column781 VARCHAR(255), +column782 VARCHAR(255), +column783 VARCHAR(255), +column784 VARCHAR(255), +column785 VARCHAR(255), +column786 VARCHAR(255), +column787 VARCHAR(255), +column788 VARCHAR(255), +column789 VARCHAR(255), +column790 VARCHAR(255), +column791 VARCHAR(255), +column792 VARCHAR(255), +column793 VARCHAR(255), +column794 VARCHAR(255), +column795 VARCHAR(255), +column796 VARCHAR(255), +column797 VARCHAR(255), +column798 VARCHAR(255), +column799 VARCHAR(255), +column800 VARCHAR(255), +column801 VARCHAR(255), +column802 VARCHAR(255), +column803 VARCHAR(255), +column804 VARCHAR(255), +column805 VARCHAR(255), +column806 VARCHAR(255), +column807 VARCHAR(255), +column808 VARCHAR(255), +column809 VARCHAR(255), +column810 VARCHAR(255), +column811 VARCHAR(255), +column812 VARCHAR(255), +column813 VARCHAR(255), +column814 VARCHAR(255), +column815 VARCHAR(255), +column816 VARCHAR(255), +column817 VARCHAR(255), +column818 VARCHAR(255), +column819 VARCHAR(255), +column820 VARCHAR(255), +column821 VARCHAR(255), +column822 VARCHAR(255), +column823 VARCHAR(255), +column824 VARCHAR(255), +column825 VARCHAR(255), +column826 VARCHAR(255), +column827 VARCHAR(255), +column828 VARCHAR(255), +column829 VARCHAR(255), +column830 VARCHAR(255), +column831 VARCHAR(255), +column832 VARCHAR(255), +column833 VARCHAR(255), +column834 VARCHAR(255), +column835 VARCHAR(255), +column836 VARCHAR(255), +column837 VARCHAR(255), +column838 VARCHAR(255), +column839 VARCHAR(255), +column840 VARCHAR(255), +column841 VARCHAR(255), +column842 VARCHAR(255), +column843 VARCHAR(255), +column844 VARCHAR(255), +column845 VARCHAR(255), +column846 VARCHAR(255), +column847 VARCHAR(255), +column848 VARCHAR(255), +column849 VARCHAR(255), +column850 VARCHAR(255), +column851 VARCHAR(255), +column852 VARCHAR(255), +column853 VARCHAR(255), +column854 VARCHAR(255), +column855 VARCHAR(255), +column856 VARCHAR(255), +column857 VARCHAR(255), +column858 VARCHAR(255), +column859 VARCHAR(255), +column860 VARCHAR(255), +column861 VARCHAR(255), +column862 VARCHAR(255), +column863 VARCHAR(255), +column864 VARCHAR(255), +column865 VARCHAR(255), +column866 VARCHAR(255), +column867 VARCHAR(255), +column868 VARCHAR(255), +column869 VARCHAR(255), +column870 VARCHAR(255), +column871 VARCHAR(255), +column872 VARCHAR(255), +column873 VARCHAR(255), +column874 VARCHAR(255), +column875 VARCHAR(255), +column876 VARCHAR(255), +column877 VARCHAR(255), +column878 VARCHAR(255), +column879 VARCHAR(255), +column880 VARCHAR(255), +column881 VARCHAR(255), +column882 VARCHAR(255), +column883 VARCHAR(255), +column884 VARCHAR(255), +column885 VARCHAR(255), +column886 VARCHAR(255), +column887 VARCHAR(255), +column888 VARCHAR(255), +column889 VARCHAR(255), +column890 VARCHAR(255), +column891 VARCHAR(255), +column892 VARCHAR(255), +column893 VARCHAR(255), +column894 VARCHAR(255), +column895 VARCHAR(255), +column896 VARCHAR(255), +column897 VARCHAR(255), +column898 VARCHAR(255), +column899 VARCHAR(255), +column900 VARCHAR(255), +column901 VARCHAR(255), +column902 VARCHAR(255), +column903 VARCHAR(255), +column904 VARCHAR(255), +column905 VARCHAR(255), +column906 VARCHAR(255), +column907 VARCHAR(255), +column908 VARCHAR(255), +column909 VARCHAR(255), +column910 VARCHAR(255), +column911 VARCHAR(255), +column912 VARCHAR(255), +column913 VARCHAR(255), +column914 VARCHAR(255), +column915 VARCHAR(255), +column916 VARCHAR(255), +column917 VARCHAR(255), +column918 VARCHAR(255), +column919 VARCHAR(255), +column920 VARCHAR(255), +column921 VARCHAR(255), +column922 VARCHAR(255), +column923 VARCHAR(255), +column924 VARCHAR(255), +column925 VARCHAR(255), +column926 VARCHAR(255), +column927 VARCHAR(255), +column928 VARCHAR(255), +column929 VARCHAR(255), +column930 VARCHAR(255), +column931 VARCHAR(255), +column932 VARCHAR(255), +column933 VARCHAR(255), +column934 VARCHAR(255), +column935 VARCHAR(255), +column936 VARCHAR(255), +column937 VARCHAR(255), +column938 VARCHAR(255), +column939 VARCHAR(255), +column940 VARCHAR(255), +column941 VARCHAR(255), +column942 VARCHAR(255), +column943 VARCHAR(255), +column944 VARCHAR(255), +column945 VARCHAR(255), +column946 VARCHAR(255), +column947 VARCHAR(255), +column948 VARCHAR(255), +column949 VARCHAR(255), +column950 VARCHAR(255), +column951 VARCHAR(255), +column952 VARCHAR(255), +column953 VARCHAR(255), +column954 VARCHAR(255), +column955 VARCHAR(255), +column956 VARCHAR(255), +column957 VARCHAR(255), +column958 VARCHAR(255), +column959 VARCHAR(255), +column960 VARCHAR(255), +column961 VARCHAR(255), +column962 VARCHAR(255), +column963 VARCHAR(255), +column964 VARCHAR(255), +column965 VARCHAR(255), +column966 VARCHAR(255), +column967 VARCHAR(255), +column968 VARCHAR(255), +column969 VARCHAR(255), +column970 VARCHAR(255), +column971 VARCHAR(255), +column972 VARCHAR(255), +column973 VARCHAR(255), +column974 VARCHAR(255), +column975 VARCHAR(255), +column976 VARCHAR(255), +column977 VARCHAR(255), +column978 VARCHAR(255), +column979 VARCHAR(255), +column980 VARCHAR(255), +column981 VARCHAR(255), +column982 VARCHAR(255), +column983 VARCHAR(255), +column984 VARCHAR(255), +column985 VARCHAR(255), +column986 VARCHAR(255), +column987 VARCHAR(255), +column988 VARCHAR(255), +column989 VARCHAR(255), +column990 VARCHAR(255), +column991 VARCHAR(255), +column992 VARCHAR(255), +column993 VARCHAR(255), +column994 VARCHAR(255), +column995 VARCHAR(255), +column996 VARCHAR(255), +column997 VARCHAR(255), +column998 VARCHAR(255), +column999 VARCHAR(255), +column1000 VARCHAR(255) +) with ( + "a" = "1" +); \ No newline at end of file diff --git a/benchmark/data/flink/create.sql b/benchmark/data/flink/create.sql deleted file mode 100644 index 5e9a1e8f..00000000 --- a/benchmark/data/flink/create.sql +++ /dev/null @@ -1,113 +0,0 @@ -CREATE TABLE MyTable ('user_id' BIGINT, 'name' STRING) WITH ('connector' = 'oracle-x'); - -CREATE TABLE MyTable WITH ('connector' = 'oracle-x'); - -CREATE TEMPORARY TABLE client_errors ( - log_time TIMESTAMP(3), - request_line STRING, - status_code STRING, - size INT -) WITH ( - 'connector' = 'stream-x' -); - --- 尽管官方文档的 BNF 里没有支持创建临时表,但实际上是支持的 -CREATE TEMPORARY TABLE MyTable ('user_id' BIGINT, 'name' STRING) WITH ('connector' = 'oracle-x'); - -CREATE TABLE MyTable ( - 'user_id' BIGINT, - 'name' STRING, - 'timestamp' BIGINT METADATA, -- part of the query-to-sink schema - 'offset' BIGINT METADATA VIRTUAL, -- not part of the query-to-sink schema - 'record_time' TIMESTAMP(3) WITH LOCAL TIME ZONE METADATA FROM 'timestamp' -- reads and writes a Kafka record's timestamp -) WITH ('connector' = 'kafka'); - -CREATE TABLE MyTable ( - 'user_id' BIGINT, - 'price' DOUBLE, - 'quantity' DOUBLE, - 'cost' AS price * quanitity -- evaluate expression and supply the result to queries -) WITH ('connector' = 'kafka'); - -CREATE TABLE MyTable ( - 'user' BIGINT, - product STRING, - order_time TIMESTAMP(3), - WATERMARK FOR order_time AS order_time - INTERVAL '5' SECOND -) WITH ('connector' = 'kafka'); - -CREATE TABLE MyTable (id INT, PRIMARY KEY (id) NOT ENFORCED) WITH ('connector' = 'kafka'); - -CREATE TABLE tbl1 ( - a BIGINT, - h VARCHAR, - g AS 2 * (a + 1), - ts AS toTimestamp(b, 'yyyy-MM-dd HH:mm:ss'), - b VARCHAR, - proc AS PROCTIME(), - meta STRING METADATA, - my_meta STRING METADATA FROM 'meta', - my_meta STRING METADATA FROM 'meta' VIRTUAL, - meta STRING METADATA VIRTUAL, - PRIMARY KEY (a, b) NOT ENFORCED -) PARTITIONED BY (a, h) WITH ( - 'connector' = 'kafka', - 'kafka.topic' = 'log.test' -); - -CREATE TABLE Orders_in_file ( - 'user' BIGINT, - product STRING, - order_time_string STRING, - order_time AS to_timestamp(order_time) -) PARTITIONED BY ('user') WITH ( - 'connector' = 'filesystem', - 'path' = '...' -); - -CREATE TABLE Orders_with_watermark ( - id INT, - -- Add watermark definition - WATERMARK FOR order_time AS order_time - INTERVAL '5' SECOND -) WITH ( - -- Overwrite the startup-mode - 'scan.startup.mode' = 'latest-offset' -) LIKE Orders_in_file ( - -- Exclude everything besides the computed columns which we need to generate the watermark for. - -- We do not want to have the partitions or filesystem options as those do not apply to kafka. - EXCLUDING ALL - INCLUDING GENERATED -); - -CREATE TABLE my_ctas_table WITH ('connector' = 'kafka') -AS SELECT - id, - name, - age -FROM - source_table -WHERE - mod(id, 10) = 0; - -CREATE TABLE catalog1.db1.table1 (id INT) WITH ('connector' = 'kafka'); - -CREATE TABLE catalog1.db1.table1 ( - attr0 STRING, - attr1 BOOLEAN, - attr3 DECIMAL(38, 18), - attr4 TINYINT, - attr5 SMALLINT, - attr6 INT, - attr7 BIGINT, - attr8 FLOAT, - attr9 DOUBLE, - attr10 DATE, - attr11 TIME, - attr12 TIMESTAMP(3), - attr13 ARRAY, - attr14 ROW, - attr17 MAP, - name1 VARCHAR(64), - message ROW>, - `raw` RAW('class', 'snapshot') -) WITH ('connector' = 'kafka'); \ No newline at end of file diff --git a/benchmark/data/flink/select.sql b/benchmark/data/flink/select.sql deleted file mode 100644 index 9f2409e1..00000000 --- a/benchmark/data/flink/select.sql +++ /dev/null @@ -1,122 +0,0 @@ --- Window TVF Aggregation -SELECT - window_start, - window_end, - supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY window_start, window_end, GROUPING SETS ((supplier_id), ()); - -SELECT - window_start, - window_end, - supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY window_start, window_end, ROLLUP (supplier_id); - -SELECT - window_start, - window_end, - item, supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY window_start, window_end, CUBE (supplier_id, item); - --- GROUPING SETS -SELECT - window_start, - window_end, - supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY - window_start, - window_end, - GROUPING SETS ((supplier_id), ()); - -SELECT - window_start, - window_end, - supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY - window_start, - window_end, - ROLLUP (supplier_id); - -SELECT - window_start, - window_end, - item, - supplier_id, - SUM(price) as price -FROM TABLE( - TUMBLE(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES)) -GROUP BY - window_start, - window_end, - CUBE (supplier_id, item); - --- Group Window Aggregation -SELECT - `user`, - TUMBLE_START(order_time, INTERVAL '1' DAY) AS wStart, - SUM(amount) FROM Orders -GROUP BY - TUMBLE(order_time, INTERVAL '1' DAY), - `user`; - -SELECT - `user`, - TUMBLE_START(order_time, INTERVAL '1' DAY) AS wStart, - SUM(amount) FROM Orders -GROUP BY - HOP(order_time, INTERVAL '1' DAY), - `user`; - -SELECT - `user`, - TUMBLE_START(order_time, INTERVAL '1' DAY) AS wStart, - SUM(amount) FROM Orders -GROUP BY - SESSION(order_time, INTERVAL '1' DAY), - `user`; - --- Having -SELECT SUM(amount) -FROM Orders -GROUP BY `users` -HAVING SUM(amount) > 50; - --- Over Aggregation -SELECT order_id, order_time, amount, - SUM(amount) OVER ( - PARTITION BY product - ORDER BY order_time - RANGE BETWEEN INTERVAL '1' HOUR PRECEDING AND CURRENT ROW - ) AS one_hour_prod_amount_sum -FROM Orders; - -SELECT product, order_time, amount, - SUM(amount) OVER ( - PARTITION BY product - ORDER BY order_time - ROWS BETWEEN 5 PRECEDING AND CURRENT ROW - ) AS one_hour_prod_amount_sum -FROM source_table; - -SELECT order_id, order_time, amount, - SUM(amount) OVER w AS sum_amount, - AVG(amount) OVER w AS avg_amount -FROM Orders -WINDOW w AS ( - PARTITION BY product - ORDER BY order_time - RANGE BETWEEN INTERVAL '1' HOUR PRECEDING AND CURRENT ROW); \ No newline at end of file diff --git a/benchmark/data/hive/create.sql b/benchmark/data/hive/create.sql deleted file mode 100644 index fabdc8d7..00000000 --- a/benchmark/data/hive/create.sql +++ /dev/null @@ -1,100 +0,0 @@ -CREATE TEMPORARY TABLE list_bucket_multiple (col1 STRING, col2 INT, col3 STRING); - -CREATE TEMPORARY EXTERNAL TABLE list_bucket_multiple (col1 STRING, col2 INT, col3 STRING); - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING); - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING) COMMENT 'this is a comment'; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING) COMMENT 'this is a comment1' PARTITIONED BY (`date` STRING COMMENT 'column_comment'); - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING) COMMENT 'this is a comment2' PARTITIONED BY (`date` STRING COMMENT 'column_comment') CLUSTERED BY (col1, col2) INTO 32 BUCKETS; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING) COMMENT 'this is a comment3' PARTITIONED BY (`date` STRING COMMENT 'column_comment') CLUSTERED BY (col1, col2) SORTED BY (col1 ASC) INTO 22 BUCKETS; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS list_bucket_multiple (col1 STRING, col2 INT, col3 STRING) COMMENT 'this is a comment4' PARTITIONED BY (`date` STRING COMMENT 'column_comment') CLUSTERED BY (col1, col2) SORTED BY (col1 ASC) INTO 34 BUCKETS SKEWED BY (col1, col2) ON (('s1', 1), ('s3', 3), ('s13', 13), ('s78', 78)) STORED AS DIRECTORIES; - -CREATE TABLE page_view( - viewTime INT, - userid BIGINT, - page_url STRING, - referrer_url STRING, - ip STRING COMMENT 'IP Address of the User' -) COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS SEQUENCEFILE; - -CREATE TEMPORARY EXTERNAL TABLE page_view( - viewTime INT, - userid BIGINT, - page_url STRING, - referrer_url STRING, - ip STRING COMMENT 'IP Address of the User' -) COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS TEXTFILE; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS page_view( - viewTime INT, - userid BIGINT, - page_url STRING, - referrer_url STRING, - ip STRING COMMENT 'IP Address of the User' -) COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS RCFILE; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS page_view( - viewTime INT, - userid BIGINT, - page_url STRING, - referrer_url STRING, - ip STRING COMMENT 'IP Address of the User' -) COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS ORC LOCATION '/hsd_path'; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS page_view( - viewTime INT, - userid BIGINT, - page_url STRING, - referrer_url STRING, - ip STRING COMMENT 'IP Address of the User' -) COMMENT 'This is the page view table' PARTITIONED BY(dt STRING, country STRING) CLUSTERED BY(userid) SORTED BY(viewTime) INTO 32 BUCKETS ROW FORMAT DELIMITED FIELDS TERMINATED BY '\001' COLLECTION ITEMS TERMINATED BY '\002' MAP KEYS TERMINATED BY '\003' STORED AS PARQUET LOCATION '/hsd_path' AS -SELECT - (key % 1024) new_key, - concat(key, value) key_value_pair -FROM - key_value_store SORT BY new_key, - key_value_pair; - - -CREATE TABLE list_bucket_single (key STRING, value STRING) - SKEWED BY (key) ON (1,5,6) STORED AS AVRO; - -CREATE TRANSACTIONAL TABLE transactional_table_test(key STRING, value STRING) PARTITIONED BY(ds STRING) STORED AS INPUTFORMAT 'inputfilename' OUTPUTFORMAT 'outputfilename'; - -CREATE TABLE IF NOT EXISTS copy_table LIKE origin_table; - -CREATE TEMPORARY TABLE IF NOT EXISTS copy_table LIKE origin_table; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS copy_table LIKE origin_table; - -CREATE TEMPORARY EXTERNAL TABLE IF NOT EXISTS copy_table LIKE origin_table LOCATION '/hdfs_path'; - -CREATE TABLE IF NOT EXISTS derived_table AS -SELECT - * -FROM - origin_table; - -CREATE TABLE `mydb.t1`( - `id` INT, - `dept_no` INT, - `addr` STRING, - `tel` STRING, - `hobby` ARRAY < STRING >, - `add` MAP < STRING, - STRING > -) PARTITIONED BY(`date` STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '-' MAP KEYS TERMINATED BY ':'; - -CREATE EXTERNAL TABLE mydb.ext_table( - id INT, - name STRING, - hobby ARRAY < STRING >, - add - MAP < STRING, - STRING > -) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' COLLECTION ITEMS TERMINATED BY '-' MAP KEYS TERMINATED BY ':' LOCATION '/user/mydb/ext_table' TBLPROPERTIES('author' = 'hayden', 'desc' = '一个外部测试表'); diff --git a/benchmark/data/hive/params.json b/benchmark/data/hive/params.json deleted file mode 100644 index 02cadc98..00000000 --- a/benchmark/data/hive/params.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "create": { - "validate": ["$sql"], - "getAllTokens": ["$sql"], - "getAllEntities": ["$sql", { "lineNumber": 8, "column": 1 }] - }, - "select": { - "validate": ["$sql"], - "getAllTokens": ["$sql"], - "getAllEntities": ["$sql", { "lineNumber": 8, "column": 1 }] - } -} \ No newline at end of file diff --git a/benchmark/data/hive/select.sql b/benchmark/data/hive/select.sql deleted file mode 100644 index 1a3f4cda..00000000 --- a/benchmark/data/hive/select.sql +++ /dev/null @@ -1,102 +0,0 @@ --- Select Syntax -SELECT col1, col2 FROM table_name_1; - -SELECT ALL col3, col4 FROM table_name_2 WHERE amount > 10 AND region = "US" GROUP BY col5 ORDER BY col6 CLUSTER BY col7 LIMIT 2,5; - --- WHERE Clause -SELECT * FROM sales WHERE amount > 10 AND region = "US"; - --- ALL and DISTINCT Clauses -SELECT DISTINCT col1 FROM t1; - --- Partition Based Queries -SELECT page_views.* -FROM page_views -WHERE page_views.`date` >= '2018-03-01' AND page_views.`date` <= '2018-03-31'; - -SELECT page_views.* -FROM page_views JOIN dim_users - ON (page_views.user_id = dim_users.id AND page_views.adate >= '2008-03-01' AND page_views.adate <= '2008-03-31'); - --- HAVING Clause -SELECT col1 FROM t1 GROUP BY col1 HAVING SUM(col2) > 10; - -SELECT col1 FROM (SELECT col1, SUM(col2) AS col2sum FROM t1 GROUP BY col1) t2 WHERE t2.col2sum > 10; - --- LIMIT Clause -SELECT * FROM customers LIMIT 5; - -SELECT * FROM customers ORDER BY create_date LIMIT 5; - -SELECT * FROM customers ORDER BY create_date LIMIT 2,5; - --- REGEX Column Specification -SELECT `(ds|hr)?+.+` FROM sales; - --- Syntax of Sort By -SELECT key, value FROM src SORT BY key ASC, value DESC; - --- Distribute By -SELECT col1, col2 FROM t1 DISTRIBUTE BY col1 SORT BY col1 ASC, col2 DESC; - --- Join Syntax -SELECT a.* FROM a JOIN b ON (a.id = b.id AND a.department = b.department); - --- MapJoin Restrictions -SELECT /*+ MAPJOIN(b) */ a.key, a.value -FROM a JOIN b ON a.key = b.key; - --- Union Syntax --- UNION within a FROM Clause -SELECT u.id, actions.adate -FROM ( - SELECT av.uid AS uid - FROM action_video av - WHERE av.adate = '2008-06-03' - UNION ALL - SELECT ac.uid AS uid - FROM action_comment ac - WHERE ac.adate = '2008-06-03' - ) actions JOIN users u ON (u.id = actions.uid); - --- Unions in DDL and Insert Statements--Applying Subclauses -SELECT key FROM (SELECT key FROM src ORDER BY key LIMIT 10)subq1 -UNION -SELECT key FROM (SELECT key FROM src1 ORDER BY key LIMIT 10)subq2; - -SELECT key FROM src -UNION -SELECT key FROM src1 -ORDER BY key LIMIT 10; - --- Unions in DDL and Insert Statements--Column Aliases for Schema Matching -INSERT OVERWRITE TABLE target_table - SELECT name, id, category FROM source_table_1 - UNION ALL - SELECT name, id, "Category159" as category FROM source_table_2; - --- Unions in DDL and Insert Statements--Column Type Conversion -SELECT name, id, cast('2001-01-01' as date) d FROM source_table_1 -UNION ALL -SELECT name, id, hiredate as d FROM source_table_2; - --- Sampling Bucketized Table -SELECT * -FROM source TABLESAMPLE(BUCKET 3 OUT OF 32 ON rand()) s; - --- Block Sampling -SELECT * -FROM source TABLESAMPLE(0.1 PERCENT) s; - -SELECT * -FROM source TABLESAMPLE(100M) s; - --- Subqueries in the FROM Clause -SELECT t3.col -FROM ( - SELECT a+b AS col - FROM t1 - UNION ALL - SELECT c+d AS col - FROM t2 -) t3; diff --git a/benchmark/data/impala/create.sql b/benchmark/data/impala/create.sql deleted file mode 100644 index f5dafe2c..00000000 --- a/benchmark/data/impala/create.sql +++ /dev/null @@ -1,105 +0,0 @@ -CREATE EXTERNAL TABLE external_parquet (c1 INT, c2 STRING, c3 TIMESTAMP) - STORED AS PARQUET LOCATION '/user/etl/destination'; - -create table census (name string, census_year int) partitioned by (year int); - -CREATE TABLE census_data (last_name STRING, first_name STRING, state STRING, address STRING) - SORT BY (last_name, state) - STORED AS PARQUET - TBLPROPERTIES ('transactional'='true', 'transactional_properties'='insert_only'); - -CREATE TABLE sorted_census_data - SORT BY (last_name, state) - STORED AS PARQUET - AS SELECT last_name, first_name, state, address - FROM unsorted_census_data; - -CREATE TABLE yy2 (s STRING, year INT); - -CREATE TABLE kudu_no_partition_by_clause - ( - id bigint PRIMARY KEY, s STRING, b BOOLEAN - ) - STORED AS KUDU; - -CREATE TABLE kudu_t1 (id BIGINT PRIMARY key, s STRING, b BOOLEAN) - PARTITION BY HASH (id) PARTITIONS 20 STORED AS KUDU; - -CREATE TABLE kudu_t2 (id BIGINT, s STRING, b BOOLEAN, PRIMARY KEY (id,s)) - PARTITION BY HASH (s) PARTITIONS 30 STORED AS KUDU; - -CREATE TABLE kudu_t3 (id BIGINT, year INT, s STRING, - b BOOLEAN, PRIMARY KEY (id,year)) - PARTITION BY HASH (id) PARTITIONS 20, - RANGE (year) (PARTITION 1980 <= VALUES < 1990, - PARTITION 1990 <= VALUES < 2000, - PARTITION VALUE = 2001, - PARTITION 2001 < VALUES < 2003) - STORED AS KUDU; - -CREATE EXTERNAL TABLE external_t1 STORED AS KUDU - TBLPROPERTIES ('kudu.table_name'='kudu_tbl_created_via_api'); - -CREATE EXTERNAL TABLE myextkudutbl ( - id int PRIMARY KEY, - name string) - PARTITION BY HASH PARTITIONS 8 - STORED AS KUDU - TBLPROPERTIES ('external.table.purge'='true'); - -CREATE TABLE ctas_t1 - PRIMARY KEY (id) PARTITION BY HASH (id) PARTITIONS 10 - STORED AS KUDU - AS SELECT id, s FROM kudu_t1; - -CREATE TABLE pk_multiple_columns -( - col1 BIGINT, - col2 STRING, - col3 BOOLEAN, - PRIMARY KEY (col1, col2) -) PARTITION BY HASH(col2) PARTITIONS 2 STORED AS KUDU; - -CREATE TABLE user.inline_pk_rewritten ( - id BIGINT NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, - s STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION, - PRIMARY KEY (id) -) -PARTITION BY HASH (id) PARTITIONS 2 -STORED AS KUDU -TBLPROPERTIES ('kudu.master_addresses'='host.example.com'); - -CREATE TABLE default_vals -( - id BIGINT PRIMARY KEY, - name STRING NOT NULL DEFAULT 'unknown', - address STRING DEFAULT upper('no fixed address'), - age INT DEFAULT -1, - earthling BOOLEAN DEFAULT TRUE, - planet_of_origin STRING DEFAULT 'Earth', - optional_col STRING DEFAULT NULL -) PARTITION BY HASH(id) PARTITIONS 2 STORED AS KUDU; - -CREATE TABLE various_encodings -( - id BIGINT PRIMARY KEY, - c1 BIGINT ENCODING PLAIN_ENCODING, - c2 BIGINT ENCODING AUTO_ENCODING, - c3 TINYINT ENCODING BIT_SHUFFLE, - c4 DOUBLE ENCODING BIT_SHUFFLE, - c5 BOOLEAN ENCODING RLE, - c6 STRING ENCODING DICT_ENCODING, - c7 STRING ENCODING PREFIX_ENCODING -) PARTITION BY HASH(id) PARTITIONS 2 STORED AS KUDU; - - -CREATE TABLE blog_posts -( - user_id STRING ENCODING DICT_ENCODING, - post_id BIGINT ENCODING BIT_SHUFFLE, - subject STRING ENCODING PLAIN_ENCODING, - body STRING COMPRESSION LZ4, - spanish_translation STRING COMPRESSION SNAPPY, - esperanto_translation STRING COMPRESSION ZLIB, - PRIMARY KEY (user_id, post_id) -) PARTITION BY HASH(user_id, post_id) PARTITIONS 2 STORED AS KUDU; diff --git a/benchmark/data/impala/select.sql b/benchmark/data/impala/select.sql deleted file mode 100644 index 377b1943..00000000 --- a/benchmark/data/impala/select.sql +++ /dev/null @@ -1,99 +0,0 @@ -SELECT * from a; -SELECT t1.c1, t2.c2 FROM t1 JOIN t2 - ON t1.id = t2.id and t1.type_flag = t2.type_flag - WHERE t1.c1 > 100; - -SELECT t1.c1, t2.c2 FROM t1 JOIN t2 - USING (id, type_flag) - WHERE t1.c1 > 100; - -SELECT t1.c1, t2.c2 FROM t1, t2 - WHERE - t1.id = t2.id AND t1.type_flag = t2.type_flag - AND t1.c1 > 100; - -SELECT lhs.id, rhs.parent, lhs.c1, rhs.c2 FROM tree_data lhs, tree_data rhs WHERE lhs.id = rhs.parent; - -SELECT t1.id, c1, c2 FROM t1, t2 WHERE t1.id = t2.id; - -SELECT t1.id, c1, c2 FROM t1 JOIN t2 ON t1.id = t2.id; - -SELECT t1.id, c1, c2 FROM t1 INNER JOIN t2 ON t1.id = t2.id; - -SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.id; - -SELECT * FROM t1 RIGHT OUTER JOIN t2 ON t1.id = t2.id; - -SELECT * FROM t1 FULL OUTER JOIN t2 ON t1.id = t2.id; - -SELECT * FROM t1 CROSS JOIN t2 WHERE t1.total > t2.maximum_price; - -SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.int_col < t2.int_col; - -SELECT t1.c1, t1.c2, t1.c2 FROM t1 LEFT SEMI JOIN t2 ON t1.id = t2.id; - -select t1.c1 as first_id, t2.c2 as second_id from - t1 join t2 on first_id = second_id; - -select fact.custno, dimension.custno from - customer_data as fact join customer_address as dimension - using (custno); - --- ORDER BY -SELECT id FROM games ORDER BY score DESC; - -SELECT id, item FROM games, games.score - WHERE item > 1000000 -ORDER BY id, item desc; - -SELECT id, info.key1 AS k, info.value1 AS v from games3, games3.play AS plays, games3.item AS info - WHERE info.KEY1 = 'score' AND info.VALUE1 > 1000000 -ORDER BY id, info.value1 desc; - -SELECT user_id AS "Top 10 Visitors", SUM(page_views) FROM web_stats - GROUP BY page_views, user_id - ORDER BY SUM(page_views) DESC LIMIT 10; - -SELECT page_title AS "Page 3 of search results", page_url FROM search_content - WHERE LOWER(page_title) LIKE '%game%' - ORDER BY page_title LIMIT 10 OFFSET 20; - -select x from numbers order by x desc nulls last; - --- GROUP BY -select - ss_item_sk as Item, - count(ss_item_sk) as Times_Purchased, - sum(ss_quantity) as Total_Quantity_Purchased -from store_sales - group by ss_item_sk - order by sum(ss_quantity) desc - limit 5; - -select - ss_item_sk as Item, - count(ss_item_sk) as Times_Purchased, - sum(ss_quantity) as Total_Quantity_Purchased -from store_sales - group by ss_item_sk - having times_purchased >= 100 - order by sum(ss_quantity) - limit 5; - -select ss_wholesale_cost, avg(ss_quantity * ss_sales_price) as avg_revenue_per_sale - from sales - group by ss_wholesale_cost - order by avg_revenue_per_sale desc - limit 5; - -select x as "Top 3" from numbers order by x desc limit 3; - -SELECT X FROM T1 LIMIT LENGTH('HELLO WORLD'); -SELECT x FROM t1 LIMIT cast(truncate(9.9) AS INT); - --- UNION -select * from (select x from few_ints union all select x from few_ints) as t1 order by x; - --- Subqueries -SELECT employee_name, employee_id FROM employees one WHERE - salary > (SELECT avg(salary) FROM employees two WHERE one.dept_id = two.dept_id); diff --git a/benchmark/data/insert.sql b/benchmark/data/insert.sql new file mode 100644 index 00000000..62d30a4c --- /dev/null +++ b/benchmark/data/insert.sql @@ -0,0 +1,1001 @@ +INSERT INTO my_table VALUES +('id1', 'value1', 'name1', 'age1', 'bir1', 'a11', 'a21', 'a31', 'a41', 'a51', 'a61', 'a71', 'a81', 'a91', 'a101', 'a111'), +('id2', 'value2', 'name2', 'age2', 'bir2', 'a12', 'a22', 'a32', 'a42', 'a52', 'a62', 'a72', 'a82', 'a92', 'a102', 'a112'), +('id3', 'value3', 'name3', 'age3', 'bir3', 'a13', 'a23', 'a33', 'a43', 'a53', 'a63', 'a73', 'a83', 'a93', 'a103', 'a113'), +('id4', 'value4', 'name4', 'age4', 'bir4', 'a14', 'a24', 'a34', 'a44', 'a54', 'a64', 'a74', 'a84', 'a94', 'a104', 'a114'), +('id5', 'value5', 'name5', 'age5', 'bir5', 'a15', 'a25', 'a35', 'a45', 'a55', 'a65', 'a75', 'a85', 'a95', 'a105', 'a115'), +('id6', 'value6', 'name6', 'age6', 'bir6', 'a16', 'a26', 'a36', 'a46', 'a56', 'a66', 'a76', 'a86', 'a96', 'a106', 'a116'), +('id7', 'value7', 'name7', 'age7', 'bir7', 'a17', 'a27', 'a37', 'a47', 'a57', 'a67', 'a77', 'a87', 'a97', 'a107', 'a117'), +('id8', 'value8', 'name8', 'age8', 'bir8', 'a18', 'a28', 'a38', 'a48', 'a58', 'a68', 'a78', 'a88', 'a98', 'a108', 'a118'), +('id9', 'value9', 'name9', 'age9', 'bir9', 'a19', 'a29', 'a39', 'a49', 'a59', 'a69', 'a79', 'a89', 'a99', 'a109', 'a119'), +('id10', 'value10', 'name10', 'age10', 'bir10', 'a110', 'a210', 'a310', 'a410', 'a510', 'a610', 'a710', 'a810', 'a910', 'a1010', 'a1110'), +('id11', 'value11', 'name11', 'age11', 'bir11', 'a111', 'a211', 'a311', 'a411', 'a511', 'a611', 'a711', 'a811', 'a911', 'a1011', 'a1111'), +('id12', 'value12', 'name12', 'age12', 'bir12', 'a112', 'a212', 'a312', 'a412', 'a512', 'a612', 'a712', 'a812', 'a912', 'a1012', 'a1112'), +('id13', 'value13', 'name13', 'age13', 'bir13', 'a113', 'a213', 'a313', 'a413', 'a513', 'a613', 'a713', 'a813', 'a913', 'a1013', 'a1113'), +('id14', 'value14', 'name14', 'age14', 'bir14', 'a114', 'a214', 'a314', 'a414', 'a514', 'a614', 'a714', 'a814', 'a914', 'a1014', 'a1114'), +('id15', 'value15', 'name15', 'age15', 'bir15', 'a115', 'a215', 'a315', 'a415', 'a515', 'a615', 'a715', 'a815', 'a915', 'a1015', 'a1115'), +('id16', 'value16', 'name16', 'age16', 'bir16', 'a116', 'a216', 'a316', 'a416', 'a516', 'a616', 'a716', 'a816', 'a916', 'a1016', 'a1116'), +('id17', 'value17', 'name17', 'age17', 'bir17', 'a117', 'a217', 'a317', 'a417', 'a517', 'a617', 'a717', 'a817', 'a917', 'a1017', 'a1117'), +('id18', 'value18', 'name18', 'age18', 'bir18', 'a118', 'a218', 'a318', 'a418', 'a518', 'a618', 'a718', 'a818', 'a918', 'a1018', 'a1118'), +('id19', 'value19', 'name19', 'age19', 'bir19', 'a119', 'a219', 'a319', 'a419', 'a519', 'a619', 'a719', 'a819', 'a919', 'a1019', 'a1119'), +('id20', 'value20', 'name20', 'age20', 'bir20', 'a120', 'a220', 'a320', 'a420', 'a520', 'a620', 'a720', 'a820', 'a920', 'a1020', 'a1120'), +('id21', 'value21', 'name21', 'age21', 'bir21', 'a121', 'a221', 'a321', 'a421', 'a521', 'a621', 'a721', 'a821', 'a921', 'a1021', 'a1121'), +('id22', 'value22', 'name22', 'age22', 'bir22', 'a122', 'a222', 'a322', 'a422', 'a522', 'a622', 'a722', 'a822', 'a922', 'a1022', 'a1122'), +('id23', 'value23', 'name23', 'age23', 'bir23', 'a123', 'a223', 'a323', 'a423', 'a523', 'a623', 'a723', 'a823', 'a923', 'a1023', 'a1123'), +('id24', 'value24', 'name24', 'age24', 'bir24', 'a124', 'a224', 'a324', 'a424', 'a524', 'a624', 'a724', 'a824', 'a924', 'a1024', 'a1124'), +('id25', 'value25', 'name25', 'age25', 'bir25', 'a125', 'a225', 'a325', 'a425', 'a525', 'a625', 'a725', 'a825', 'a925', 'a1025', 'a1125'), +('id26', 'value26', 'name26', 'age26', 'bir26', 'a126', 'a226', 'a326', 'a426', 'a526', 'a626', 'a726', 'a826', 'a926', 'a1026', 'a1126'), +('id27', 'value27', 'name27', 'age27', 'bir27', 'a127', 'a227', 'a327', 'a427', 'a527', 'a627', 'a727', 'a827', 'a927', 'a1027', 'a1127'), +('id28', 'value28', 'name28', 'age28', 'bir28', 'a128', 'a228', 'a328', 'a428', 'a528', 'a628', 'a728', 'a828', 'a928', 'a1028', 'a1128'), +('id29', 'value29', 'name29', 'age29', 'bir29', 'a129', 'a229', 'a329', 'a429', 'a529', 'a629', 'a729', 'a829', 'a929', 'a1029', 'a1129'), +('id30', 'value30', 'name30', 'age30', 'bir30', 'a130', 'a230', 'a330', 'a430', 'a530', 'a630', 'a730', 'a830', 'a930', 'a1030', 'a1130'), +('id31', 'value31', 'name31', 'age31', 'bir31', 'a131', 'a231', 'a331', 'a431', 'a531', 'a631', 'a731', 'a831', 'a931', 'a1031', 'a1131'), +('id32', 'value32', 'name32', 'age32', 'bir32', 'a132', 'a232', 'a332', 'a432', 'a532', 'a632', 'a732', 'a832', 'a932', 'a1032', 'a1132'), +('id33', 'value33', 'name33', 'age33', 'bir33', 'a133', 'a233', 'a333', 'a433', 'a533', 'a633', 'a733', 'a833', 'a933', 'a1033', 'a1133'), +('id34', 'value34', 'name34', 'age34', 'bir34', 'a134', 'a234', 'a334', 'a434', 'a534', 'a634', 'a734', 'a834', 'a934', 'a1034', 'a1134'), +('id35', 'value35', 'name35', 'age35', 'bir35', 'a135', 'a235', 'a335', 'a435', 'a535', 'a635', 'a735', 'a835', 'a935', 'a1035', 'a1135'), +('id36', 'value36', 'name36', 'age36', 'bir36', 'a136', 'a236', 'a336', 'a436', 'a536', 'a636', 'a736', 'a836', 'a936', 'a1036', 'a1136'), +('id37', 'value37', 'name37', 'age37', 'bir37', 'a137', 'a237', 'a337', 'a437', 'a537', 'a637', 'a737', 'a837', 'a937', 'a1037', 'a1137'), +('id38', 'value38', 'name38', 'age38', 'bir38', 'a138', 'a238', 'a338', 'a438', 'a538', 'a638', 'a738', 'a838', 'a938', 'a1038', 'a1138'), +('id39', 'value39', 'name39', 'age39', 'bir39', 'a139', 'a239', 'a339', 'a439', 'a539', 'a639', 'a739', 'a839', 'a939', 'a1039', 'a1139'), +('id40', 'value40', 'name40', 'age40', 'bir40', 'a140', 'a240', 'a340', 'a440', 'a540', 'a640', 'a740', 'a840', 'a940', 'a1040', 'a1140'), +('id41', 'value41', 'name41', 'age41', 'bir41', 'a141', 'a241', 'a341', 'a441', 'a541', 'a641', 'a741', 'a841', 'a941', 'a1041', 'a1141'), +('id42', 'value42', 'name42', 'age42', 'bir42', 'a142', 'a242', 'a342', 'a442', 'a542', 'a642', 'a742', 'a842', 'a942', 'a1042', 'a1142'), +('id43', 'value43', 'name43', 'age43', 'bir43', 'a143', 'a243', 'a343', 'a443', 'a543', 'a643', 'a743', 'a843', 'a943', 'a1043', 'a1143'), +('id44', 'value44', 'name44', 'age44', 'bir44', 'a144', 'a244', 'a344', 'a444', 'a544', 'a644', 'a744', 'a844', 'a944', 'a1044', 'a1144'), +('id45', 'value45', 'name45', 'age45', 'bir45', 'a145', 'a245', 'a345', 'a445', 'a545', 'a645', 'a745', 'a845', 'a945', 'a1045', 'a1145'), +('id46', 'value46', 'name46', 'age46', 'bir46', 'a146', 'a246', 'a346', 'a446', 'a546', 'a646', 'a746', 'a846', 'a946', 'a1046', 'a1146'), +('id47', 'value47', 'name47', 'age47', 'bir47', 'a147', 'a247', 'a347', 'a447', 'a547', 'a647', 'a747', 'a847', 'a947', 'a1047', 'a1147'), +('id48', 'value48', 'name48', 'age48', 'bir48', 'a148', 'a248', 'a348', 'a448', 'a548', 'a648', 'a748', 'a848', 'a948', 'a1048', 'a1148'), +('id49', 'value49', 'name49', 'age49', 'bir49', 'a149', 'a249', 'a349', 'a449', 'a549', 'a649', 'a749', 'a849', 'a949', 'a1049', 'a1149'), +('id50', 'value50', 'name50', 'age50', 'bir50', 'a150', 'a250', 'a350', 'a450', 'a550', 'a650', 'a750', 'a850', 'a950', 'a1050', 'a1150'), +('id51', 'value51', 'name51', 'age51', 'bir51', 'a151', 'a251', 'a351', 'a451', 'a551', 'a651', 'a751', 'a851', 'a951', 'a1051', 'a1151'), +('id52', 'value52', 'name52', 'age52', 'bir52', 'a152', 'a252', 'a352', 'a452', 'a552', 'a652', 'a752', 'a852', 'a952', 'a1052', 'a1152'), +('id53', 'value53', 'name53', 'age53', 'bir53', 'a153', 'a253', 'a353', 'a453', 'a553', 'a653', 'a753', 'a853', 'a953', 'a1053', 'a1153'), +('id54', 'value54', 'name54', 'age54', 'bir54', 'a154', 'a254', 'a354', 'a454', 'a554', 'a654', 'a754', 'a854', 'a954', 'a1054', 'a1154'), +('id55', 'value55', 'name55', 'age55', 'bir55', 'a155', 'a255', 'a355', 'a455', 'a555', 'a655', 'a755', 'a855', 'a955', 'a1055', 'a1155'), +('id56', 'value56', 'name56', 'age56', 'bir56', 'a156', 'a256', 'a356', 'a456', 'a556', 'a656', 'a756', 'a856', 'a956', 'a1056', 'a1156'), +('id57', 'value57', 'name57', 'age57', 'bir57', 'a157', 'a257', 'a357', 'a457', 'a557', 'a657', 'a757', 'a857', 'a957', 'a1057', 'a1157'), +('id58', 'value58', 'name58', 'age58', 'bir58', 'a158', 'a258', 'a358', 'a458', 'a558', 'a658', 'a758', 'a858', 'a958', 'a1058', 'a1158'), +('id59', 'value59', 'name59', 'age59', 'bir59', 'a159', 'a259', 'a359', 'a459', 'a559', 'a659', 'a759', 'a859', 'a959', 'a1059', 'a1159'), +('id60', 'value60', 'name60', 'age60', 'bir60', 'a160', 'a260', 'a360', 'a460', 'a560', 'a660', 'a760', 'a860', 'a960', 'a1060', 'a1160'), +('id61', 'value61', 'name61', 'age61', 'bir61', 'a161', 'a261', 'a361', 'a461', 'a561', 'a661', 'a761', 'a861', 'a961', 'a1061', 'a1161'), +('id62', 'value62', 'name62', 'age62', 'bir62', 'a162', 'a262', 'a362', 'a462', 'a562', 'a662', 'a762', 'a862', 'a962', 'a1062', 'a1162'), +('id63', 'value63', 'name63', 'age63', 'bir63', 'a163', 'a263', 'a363', 'a463', 'a563', 'a663', 'a763', 'a863', 'a963', 'a1063', 'a1163'), +('id64', 'value64', 'name64', 'age64', 'bir64', 'a164', 'a264', 'a364', 'a464', 'a564', 'a664', 'a764', 'a864', 'a964', 'a1064', 'a1164'), +('id65', 'value65', 'name65', 'age65', 'bir65', 'a165', 'a265', 'a365', 'a465', 'a565', 'a665', 'a765', 'a865', 'a965', 'a1065', 'a1165'), +('id66', 'value66', 'name66', 'age66', 'bir66', 'a166', 'a266', 'a366', 'a466', 'a566', 'a666', 'a766', 'a866', 'a966', 'a1066', 'a1166'), +('id67', 'value67', 'name67', 'age67', 'bir67', 'a167', 'a267', 'a367', 'a467', 'a567', 'a667', 'a767', 'a867', 'a967', 'a1067', 'a1167'), +('id68', 'value68', 'name68', 'age68', 'bir68', 'a168', 'a268', 'a368', 'a468', 'a568', 'a668', 'a768', 'a868', 'a968', 'a1068', 'a1168'), +('id69', 'value69', 'name69', 'age69', 'bir69', 'a169', 'a269', 'a369', 'a469', 'a569', 'a669', 'a769', 'a869', 'a969', 'a1069', 'a1169'), +('id70', 'value70', 'name70', 'age70', 'bir70', 'a170', 'a270', 'a370', 'a470', 'a570', 'a670', 'a770', 'a870', 'a970', 'a1070', 'a1170'), +('id71', 'value71', 'name71', 'age71', 'bir71', 'a171', 'a271', 'a371', 'a471', 'a571', 'a671', 'a771', 'a871', 'a971', 'a1071', 'a1171'), +('id72', 'value72', 'name72', 'age72', 'bir72', 'a172', 'a272', 'a372', 'a472', 'a572', 'a672', 'a772', 'a872', 'a972', 'a1072', 'a1172'), +('id73', 'value73', 'name73', 'age73', 'bir73', 'a173', 'a273', 'a373', 'a473', 'a573', 'a673', 'a773', 'a873', 'a973', 'a1073', 'a1173'), +('id74', 'value74', 'name74', 'age74', 'bir74', 'a174', 'a274', 'a374', 'a474', 'a574', 'a674', 'a774', 'a874', 'a974', 'a1074', 'a1174'), +('id75', 'value75', 'name75', 'age75', 'bir75', 'a175', 'a275', 'a375', 'a475', 'a575', 'a675', 'a775', 'a875', 'a975', 'a1075', 'a1175'), +('id76', 'value76', 'name76', 'age76', 'bir76', 'a176', 'a276', 'a376', 'a476', 'a576', 'a676', 'a776', 'a876', 'a976', 'a1076', 'a1176'), +('id77', 'value77', 'name77', 'age77', 'bir77', 'a177', 'a277', 'a377', 'a477', 'a577', 'a677', 'a777', 'a877', 'a977', 'a1077', 'a1177'), +('id78', 'value78', 'name78', 'age78', 'bir78', 'a178', 'a278', 'a378', 'a478', 'a578', 'a678', 'a778', 'a878', 'a978', 'a1078', 'a1178'), +('id79', 'value79', 'name79', 'age79', 'bir79', 'a179', 'a279', 'a379', 'a479', 'a579', 'a679', 'a779', 'a879', 'a979', 'a1079', 'a1179'), +('id80', 'value80', 'name80', 'age80', 'bir80', 'a180', 'a280', 'a380', 'a480', 'a580', 'a680', 'a780', 'a880', 'a980', 'a1080', 'a1180'), +('id81', 'value81', 'name81', 'age81', 'bir81', 'a181', 'a281', 'a381', 'a481', 'a581', 'a681', 'a781', 'a881', 'a981', 'a1081', 'a1181'), +('id82', 'value82', 'name82', 'age82', 'bir82', 'a182', 'a282', 'a382', 'a482', 'a582', 'a682', 'a782', 'a882', 'a982', 'a1082', 'a1182'), +('id83', 'value83', 'name83', 'age83', 'bir83', 'a183', 'a283', 'a383', 'a483', 'a583', 'a683', 'a783', 'a883', 'a983', 'a1083', 'a1183'), +('id84', 'value84', 'name84', 'age84', 'bir84', 'a184', 'a284', 'a384', 'a484', 'a584', 'a684', 'a784', 'a884', 'a984', 'a1084', 'a1184'), +('id85', 'value85', 'name85', 'age85', 'bir85', 'a185', 'a285', 'a385', 'a485', 'a585', 'a685', 'a785', 'a885', 'a985', 'a1085', 'a1185'), +('id86', 'value86', 'name86', 'age86', 'bir86', 'a186', 'a286', 'a386', 'a486', 'a586', 'a686', 'a786', 'a886', 'a986', 'a1086', 'a1186'), +('id87', 'value87', 'name87', 'age87', 'bir87', 'a187', 'a287', 'a387', 'a487', 'a587', 'a687', 'a787', 'a887', 'a987', 'a1087', 'a1187'), +('id88', 'value88', 'name88', 'age88', 'bir88', 'a188', 'a288', 'a388', 'a488', 'a588', 'a688', 'a788', 'a888', 'a988', 'a1088', 'a1188'), +('id89', 'value89', 'name89', 'age89', 'bir89', 'a189', 'a289', 'a389', 'a489', 'a589', 'a689', 'a789', 'a889', 'a989', 'a1089', 'a1189'), +('id90', 'value90', 'name90', 'age90', 'bir90', 'a190', 'a290', 'a390', 'a490', 'a590', 'a690', 'a790', 'a890', 'a990', 'a1090', 'a1190'), +('id91', 'value91', 'name91', 'age91', 'bir91', 'a191', 'a291', 'a391', 'a491', 'a591', 'a691', 'a791', 'a891', 'a991', 'a1091', 'a1191'), +('id92', 'value92', 'name92', 'age92', 'bir92', 'a192', 'a292', 'a392', 'a492', 'a592', 'a692', 'a792', 'a892', 'a992', 'a1092', 'a1192'), +('id93', 'value93', 'name93', 'age93', 'bir93', 'a193', 'a293', 'a393', 'a493', 'a593', 'a693', 'a793', 'a893', 'a993', 'a1093', 'a1193'), +('id94', 'value94', 'name94', 'age94', 'bir94', 'a194', 'a294', 'a394', 'a494', 'a594', 'a694', 'a794', 'a894', 'a994', 'a1094', 'a1194'), +('id95', 'value95', 'name95', 'age95', 'bir95', 'a195', 'a295', 'a395', 'a495', 'a595', 'a695', 'a795', 'a895', 'a995', 'a1095', 'a1195'), +('id96', 'value96', 'name96', 'age96', 'bir96', 'a196', 'a296', 'a396', 'a496', 'a596', 'a696', 'a796', 'a896', 'a996', 'a1096', 'a1196'), +('id97', 'value97', 'name97', 'age97', 'bir97', 'a197', 'a297', 'a397', 'a497', 'a597', 'a697', 'a797', 'a897', 'a997', 'a1097', 'a1197'), +('id98', 'value98', 'name98', 'age98', 'bir98', 'a198', 'a298', 'a398', 'a498', 'a598', 'a698', 'a798', 'a898', 'a998', 'a1098', 'a1198'), +('id99', 'value99', 'name99', 'age99', 'bir99', 'a199', 'a299', 'a399', 'a499', 'a599', 'a699', 'a799', 'a899', 'a999', 'a1099', 'a1199'), +('id100', 'value100', 'name100', 'age100', 'bir100', 'a1100', 'a2100', 'a3100', 'a4100', 'a5100', 'a6100', 'a7100', 'a8100', 'a9100', 'a10100', 'a11100'), +('id101', 'value101', 'name101', 'age101', 'bir101', 'a1101', 'a2101', 'a3101', 'a4101', 'a5101', 'a6101', 'a7101', 'a8101', 'a9101', 'a10101', 'a11101'), +('id102', 'value102', 'name102', 'age102', 'bir102', 'a1102', 'a2102', 'a3102', 'a4102', 'a5102', 'a6102', 'a7102', 'a8102', 'a9102', 'a10102', 'a11102'), +('id103', 'value103', 'name103', 'age103', 'bir103', 'a1103', 'a2103', 'a3103', 'a4103', 'a5103', 'a6103', 'a7103', 'a8103', 'a9103', 'a10103', 'a11103'), +('id104', 'value104', 'name104', 'age104', 'bir104', 'a1104', 'a2104', 'a3104', 'a4104', 'a5104', 'a6104', 'a7104', 'a8104', 'a9104', 'a10104', 'a11104'), +('id105', 'value105', 'name105', 'age105', 'bir105', 'a1105', 'a2105', 'a3105', 'a4105', 'a5105', 'a6105', 'a7105', 'a8105', 'a9105', 'a10105', 'a11105'), +('id106', 'value106', 'name106', 'age106', 'bir106', 'a1106', 'a2106', 'a3106', 'a4106', 'a5106', 'a6106', 'a7106', 'a8106', 'a9106', 'a10106', 'a11106'), +('id107', 'value107', 'name107', 'age107', 'bir107', 'a1107', 'a2107', 'a3107', 'a4107', 'a5107', 'a6107', 'a7107', 'a8107', 'a9107', 'a10107', 'a11107'), +('id108', 'value108', 'name108', 'age108', 'bir108', 'a1108', 'a2108', 'a3108', 'a4108', 'a5108', 'a6108', 'a7108', 'a8108', 'a9108', 'a10108', 'a11108'), +('id109', 'value109', 'name109', 'age109', 'bir109', 'a1109', 'a2109', 'a3109', 'a4109', 'a5109', 'a6109', 'a7109', 'a8109', 'a9109', 'a10109', 'a11109'), +('id110', 'value110', 'name110', 'age110', 'bir110', 'a1110', 'a2110', 'a3110', 'a4110', 'a5110', 'a6110', 'a7110', 'a8110', 'a9110', 'a10110', 'a11110'), +('id111', 'value111', 'name111', 'age111', 'bir111', 'a1111', 'a2111', 'a3111', 'a4111', 'a5111', 'a6111', 'a7111', 'a8111', 'a9111', 'a10111', 'a11111'), +('id112', 'value112', 'name112', 'age112', 'bir112', 'a1112', 'a2112', 'a3112', 'a4112', 'a5112', 'a6112', 'a7112', 'a8112', 'a9112', 'a10112', 'a11112'), +('id113', 'value113', 'name113', 'age113', 'bir113', 'a1113', 'a2113', 'a3113', 'a4113', 'a5113', 'a6113', 'a7113', 'a8113', 'a9113', 'a10113', 'a11113'), +('id114', 'value114', 'name114', 'age114', 'bir114', 'a1114', 'a2114', 'a3114', 'a4114', 'a5114', 'a6114', 'a7114', 'a8114', 'a9114', 'a10114', 'a11114'), +('id115', 'value115', 'name115', 'age115', 'bir115', 'a1115', 'a2115', 'a3115', 'a4115', 'a5115', 'a6115', 'a7115', 'a8115', 'a9115', 'a10115', 'a11115'), +('id116', 'value116', 'name116', 'age116', 'bir116', 'a1116', 'a2116', 'a3116', 'a4116', 'a5116', 'a6116', 'a7116', 'a8116', 'a9116', 'a10116', 'a11116'), +('id117', 'value117', 'name117', 'age117', 'bir117', 'a1117', 'a2117', 'a3117', 'a4117', 'a5117', 'a6117', 'a7117', 'a8117', 'a9117', 'a10117', 'a11117'), +('id118', 'value118', 'name118', 'age118', 'bir118', 'a1118', 'a2118', 'a3118', 'a4118', 'a5118', 'a6118', 'a7118', 'a8118', 'a9118', 'a10118', 'a11118'), +('id119', 'value119', 'name119', 'age119', 'bir119', 'a1119', 'a2119', 'a3119', 'a4119', 'a5119', 'a6119', 'a7119', 'a8119', 'a9119', 'a10119', 'a11119'), +('id120', 'value120', 'name120', 'age120', 'bir120', 'a1120', 'a2120', 'a3120', 'a4120', 'a5120', 'a6120', 'a7120', 'a8120', 'a9120', 'a10120', 'a11120'), +('id121', 'value121', 'name121', 'age121', 'bir121', 'a1121', 'a2121', 'a3121', 'a4121', 'a5121', 'a6121', 'a7121', 'a8121', 'a9121', 'a10121', 'a11121'), +('id122', 'value122', 'name122', 'age122', 'bir122', 'a1122', 'a2122', 'a3122', 'a4122', 'a5122', 'a6122', 'a7122', 'a8122', 'a9122', 'a10122', 'a11122'), +('id123', 'value123', 'name123', 'age123', 'bir123', 'a1123', 'a2123', 'a3123', 'a4123', 'a5123', 'a6123', 'a7123', 'a8123', 'a9123', 'a10123', 'a11123'), +('id124', 'value124', 'name124', 'age124', 'bir124', 'a1124', 'a2124', 'a3124', 'a4124', 'a5124', 'a6124', 'a7124', 'a8124', 'a9124', 'a10124', 'a11124'), +('id125', 'value125', 'name125', 'age125', 'bir125', 'a1125', 'a2125', 'a3125', 'a4125', 'a5125', 'a6125', 'a7125', 'a8125', 'a9125', 'a10125', 'a11125'), +('id126', 'value126', 'name126', 'age126', 'bir126', 'a1126', 'a2126', 'a3126', 'a4126', 'a5126', 'a6126', 'a7126', 'a8126', 'a9126', 'a10126', 'a11126'), +('id127', 'value127', 'name127', 'age127', 'bir127', 'a1127', 'a2127', 'a3127', 'a4127', 'a5127', 'a6127', 'a7127', 'a8127', 'a9127', 'a10127', 'a11127'), +('id128', 'value128', 'name128', 'age128', 'bir128', 'a1128', 'a2128', 'a3128', 'a4128', 'a5128', 'a6128', 'a7128', 'a8128', 'a9128', 'a10128', 'a11128'), +('id129', 'value129', 'name129', 'age129', 'bir129', 'a1129', 'a2129', 'a3129', 'a4129', 'a5129', 'a6129', 'a7129', 'a8129', 'a9129', 'a10129', 'a11129'), +('id130', 'value130', 'name130', 'age130', 'bir130', 'a1130', 'a2130', 'a3130', 'a4130', 'a5130', 'a6130', 'a7130', 'a8130', 'a9130', 'a10130', 'a11130'), +('id131', 'value131', 'name131', 'age131', 'bir131', 'a1131', 'a2131', 'a3131', 'a4131', 'a5131', 'a6131', 'a7131', 'a8131', 'a9131', 'a10131', 'a11131'), +('id132', 'value132', 'name132', 'age132', 'bir132', 'a1132', 'a2132', 'a3132', 'a4132', 'a5132', 'a6132', 'a7132', 'a8132', 'a9132', 'a10132', 'a11132'), +('id133', 'value133', 'name133', 'age133', 'bir133', 'a1133', 'a2133', 'a3133', 'a4133', 'a5133', 'a6133', 'a7133', 'a8133', 'a9133', 'a10133', 'a11133'), +('id134', 'value134', 'name134', 'age134', 'bir134', 'a1134', 'a2134', 'a3134', 'a4134', 'a5134', 'a6134', 'a7134', 'a8134', 'a9134', 'a10134', 'a11134'), +('id135', 'value135', 'name135', 'age135', 'bir135', 'a1135', 'a2135', 'a3135', 'a4135', 'a5135', 'a6135', 'a7135', 'a8135', 'a9135', 'a10135', 'a11135'), +('id136', 'value136', 'name136', 'age136', 'bir136', 'a1136', 'a2136', 'a3136', 'a4136', 'a5136', 'a6136', 'a7136', 'a8136', 'a9136', 'a10136', 'a11136'), +('id137', 'value137', 'name137', 'age137', 'bir137', 'a1137', 'a2137', 'a3137', 'a4137', 'a5137', 'a6137', 'a7137', 'a8137', 'a9137', 'a10137', 'a11137'), +('id138', 'value138', 'name138', 'age138', 'bir138', 'a1138', 'a2138', 'a3138', 'a4138', 'a5138', 'a6138', 'a7138', 'a8138', 'a9138', 'a10138', 'a11138'), +('id139', 'value139', 'name139', 'age139', 'bir139', 'a1139', 'a2139', 'a3139', 'a4139', 'a5139', 'a6139', 'a7139', 'a8139', 'a9139', 'a10139', 'a11139'), +('id140', 'value140', 'name140', 'age140', 'bir140', 'a1140', 'a2140', 'a3140', 'a4140', 'a5140', 'a6140', 'a7140', 'a8140', 'a9140', 'a10140', 'a11140'), +('id141', 'value141', 'name141', 'age141', 'bir141', 'a1141', 'a2141', 'a3141', 'a4141', 'a5141', 'a6141', 'a7141', 'a8141', 'a9141', 'a10141', 'a11141'), +('id142', 'value142', 'name142', 'age142', 'bir142', 'a1142', 'a2142', 'a3142', 'a4142', 'a5142', 'a6142', 'a7142', 'a8142', 'a9142', 'a10142', 'a11142'), +('id143', 'value143', 'name143', 'age143', 'bir143', 'a1143', 'a2143', 'a3143', 'a4143', 'a5143', 'a6143', 'a7143', 'a8143', 'a9143', 'a10143', 'a11143'), +('id144', 'value144', 'name144', 'age144', 'bir144', 'a1144', 'a2144', 'a3144', 'a4144', 'a5144', 'a6144', 'a7144', 'a8144', 'a9144', 'a10144', 'a11144'), +('id145', 'value145', 'name145', 'age145', 'bir145', 'a1145', 'a2145', 'a3145', 'a4145', 'a5145', 'a6145', 'a7145', 'a8145', 'a9145', 'a10145', 'a11145'), +('id146', 'value146', 'name146', 'age146', 'bir146', 'a1146', 'a2146', 'a3146', 'a4146', 'a5146', 'a6146', 'a7146', 'a8146', 'a9146', 'a10146', 'a11146'), +('id147', 'value147', 'name147', 'age147', 'bir147', 'a1147', 'a2147', 'a3147', 'a4147', 'a5147', 'a6147', 'a7147', 'a8147', 'a9147', 'a10147', 'a11147'), +('id148', 'value148', 'name148', 'age148', 'bir148', 'a1148', 'a2148', 'a3148', 'a4148', 'a5148', 'a6148', 'a7148', 'a8148', 'a9148', 'a10148', 'a11148'), +('id149', 'value149', 'name149', 'age149', 'bir149', 'a1149', 'a2149', 'a3149', 'a4149', 'a5149', 'a6149', 'a7149', 'a8149', 'a9149', 'a10149', 'a11149'), +('id150', 'value150', 'name150', 'age150', 'bir150', 'a1150', 'a2150', 'a3150', 'a4150', 'a5150', 'a6150', 'a7150', 'a8150', 'a9150', 'a10150', 'a11150'), +('id151', 'value151', 'name151', 'age151', 'bir151', 'a1151', 'a2151', 'a3151', 'a4151', 'a5151', 'a6151', 'a7151', 'a8151', 'a9151', 'a10151', 'a11151'), +('id152', 'value152', 'name152', 'age152', 'bir152', 'a1152', 'a2152', 'a3152', 'a4152', 'a5152', 'a6152', 'a7152', 'a8152', 'a9152', 'a10152', 'a11152'), +('id153', 'value153', 'name153', 'age153', 'bir153', 'a1153', 'a2153', 'a3153', 'a4153', 'a5153', 'a6153', 'a7153', 'a8153', 'a9153', 'a10153', 'a11153'), +('id154', 'value154', 'name154', 'age154', 'bir154', 'a1154', 'a2154', 'a3154', 'a4154', 'a5154', 'a6154', 'a7154', 'a8154', 'a9154', 'a10154', 'a11154'), +('id155', 'value155', 'name155', 'age155', 'bir155', 'a1155', 'a2155', 'a3155', 'a4155', 'a5155', 'a6155', 'a7155', 'a8155', 'a9155', 'a10155', 'a11155'), +('id156', 'value156', 'name156', 'age156', 'bir156', 'a1156', 'a2156', 'a3156', 'a4156', 'a5156', 'a6156', 'a7156', 'a8156', 'a9156', 'a10156', 'a11156'), +('id157', 'value157', 'name157', 'age157', 'bir157', 'a1157', 'a2157', 'a3157', 'a4157', 'a5157', 'a6157', 'a7157', 'a8157', 'a9157', 'a10157', 'a11157'), +('id158', 'value158', 'name158', 'age158', 'bir158', 'a1158', 'a2158', 'a3158', 'a4158', 'a5158', 'a6158', 'a7158', 'a8158', 'a9158', 'a10158', 'a11158'), +('id159', 'value159', 'name159', 'age159', 'bir159', 'a1159', 'a2159', 'a3159', 'a4159', 'a5159', 'a6159', 'a7159', 'a8159', 'a9159', 'a10159', 'a11159'), +('id160', 'value160', 'name160', 'age160', 'bir160', 'a1160', 'a2160', 'a3160', 'a4160', 'a5160', 'a6160', 'a7160', 'a8160', 'a9160', 'a10160', 'a11160'), +('id161', 'value161', 'name161', 'age161', 'bir161', 'a1161', 'a2161', 'a3161', 'a4161', 'a5161', 'a6161', 'a7161', 'a8161', 'a9161', 'a10161', 'a11161'), +('id162', 'value162', 'name162', 'age162', 'bir162', 'a1162', 'a2162', 'a3162', 'a4162', 'a5162', 'a6162', 'a7162', 'a8162', 'a9162', 'a10162', 'a11162'), +('id163', 'value163', 'name163', 'age163', 'bir163', 'a1163', 'a2163', 'a3163', 'a4163', 'a5163', 'a6163', 'a7163', 'a8163', 'a9163', 'a10163', 'a11163'), +('id164', 'value164', 'name164', 'age164', 'bir164', 'a1164', 'a2164', 'a3164', 'a4164', 'a5164', 'a6164', 'a7164', 'a8164', 'a9164', 'a10164', 'a11164'), +('id165', 'value165', 'name165', 'age165', 'bir165', 'a1165', 'a2165', 'a3165', 'a4165', 'a5165', 'a6165', 'a7165', 'a8165', 'a9165', 'a10165', 'a11165'), +('id166', 'value166', 'name166', 'age166', 'bir166', 'a1166', 'a2166', 'a3166', 'a4166', 'a5166', 'a6166', 'a7166', 'a8166', 'a9166', 'a10166', 'a11166'), +('id167', 'value167', 'name167', 'age167', 'bir167', 'a1167', 'a2167', 'a3167', 'a4167', 'a5167', 'a6167', 'a7167', 'a8167', 'a9167', 'a10167', 'a11167'), +('id168', 'value168', 'name168', 'age168', 'bir168', 'a1168', 'a2168', 'a3168', 'a4168', 'a5168', 'a6168', 'a7168', 'a8168', 'a9168', 'a10168', 'a11168'), +('id169', 'value169', 'name169', 'age169', 'bir169', 'a1169', 'a2169', 'a3169', 'a4169', 'a5169', 'a6169', 'a7169', 'a8169', 'a9169', 'a10169', 'a11169'), +('id170', 'value170', 'name170', 'age170', 'bir170', 'a1170', 'a2170', 'a3170', 'a4170', 'a5170', 'a6170', 'a7170', 'a8170', 'a9170', 'a10170', 'a11170'), +('id171', 'value171', 'name171', 'age171', 'bir171', 'a1171', 'a2171', 'a3171', 'a4171', 'a5171', 'a6171', 'a7171', 'a8171', 'a9171', 'a10171', 'a11171'), +('id172', 'value172', 'name172', 'age172', 'bir172', 'a1172', 'a2172', 'a3172', 'a4172', 'a5172', 'a6172', 'a7172', 'a8172', 'a9172', 'a10172', 'a11172'), +('id173', 'value173', 'name173', 'age173', 'bir173', 'a1173', 'a2173', 'a3173', 'a4173', 'a5173', 'a6173', 'a7173', 'a8173', 'a9173', 'a10173', 'a11173'), +('id174', 'value174', 'name174', 'age174', 'bir174', 'a1174', 'a2174', 'a3174', 'a4174', 'a5174', 'a6174', 'a7174', 'a8174', 'a9174', 'a10174', 'a11174'), +('id175', 'value175', 'name175', 'age175', 'bir175', 'a1175', 'a2175', 'a3175', 'a4175', 'a5175', 'a6175', 'a7175', 'a8175', 'a9175', 'a10175', 'a11175'), +('id176', 'value176', 'name176', 'age176', 'bir176', 'a1176', 'a2176', 'a3176', 'a4176', 'a5176', 'a6176', 'a7176', 'a8176', 'a9176', 'a10176', 'a11176'), +('id177', 'value177', 'name177', 'age177', 'bir177', 'a1177', 'a2177', 'a3177', 'a4177', 'a5177', 'a6177', 'a7177', 'a8177', 'a9177', 'a10177', 'a11177'), +('id178', 'value178', 'name178', 'age178', 'bir178', 'a1178', 'a2178', 'a3178', 'a4178', 'a5178', 'a6178', 'a7178', 'a8178', 'a9178', 'a10178', 'a11178'), +('id179', 'value179', 'name179', 'age179', 'bir179', 'a1179', 'a2179', 'a3179', 'a4179', 'a5179', 'a6179', 'a7179', 'a8179', 'a9179', 'a10179', 'a11179'), +('id180', 'value180', 'name180', 'age180', 'bir180', 'a1180', 'a2180', 'a3180', 'a4180', 'a5180', 'a6180', 'a7180', 'a8180', 'a9180', 'a10180', 'a11180'), +('id181', 'value181', 'name181', 'age181', 'bir181', 'a1181', 'a2181', 'a3181', 'a4181', 'a5181', 'a6181', 'a7181', 'a8181', 'a9181', 'a10181', 'a11181'), +('id182', 'value182', 'name182', 'age182', 'bir182', 'a1182', 'a2182', 'a3182', 'a4182', 'a5182', 'a6182', 'a7182', 'a8182', 'a9182', 'a10182', 'a11182'), +('id183', 'value183', 'name183', 'age183', 'bir183', 'a1183', 'a2183', 'a3183', 'a4183', 'a5183', 'a6183', 'a7183', 'a8183', 'a9183', 'a10183', 'a11183'), +('id184', 'value184', 'name184', 'age184', 'bir184', 'a1184', 'a2184', 'a3184', 'a4184', 'a5184', 'a6184', 'a7184', 'a8184', 'a9184', 'a10184', 'a11184'), +('id185', 'value185', 'name185', 'age185', 'bir185', 'a1185', 'a2185', 'a3185', 'a4185', 'a5185', 'a6185', 'a7185', 'a8185', 'a9185', 'a10185', 'a11185'), +('id186', 'value186', 'name186', 'age186', 'bir186', 'a1186', 'a2186', 'a3186', 'a4186', 'a5186', 'a6186', 'a7186', 'a8186', 'a9186', 'a10186', 'a11186'), +('id187', 'value187', 'name187', 'age187', 'bir187', 'a1187', 'a2187', 'a3187', 'a4187', 'a5187', 'a6187', 'a7187', 'a8187', 'a9187', 'a10187', 'a11187'), +('id188', 'value188', 'name188', 'age188', 'bir188', 'a1188', 'a2188', 'a3188', 'a4188', 'a5188', 'a6188', 'a7188', 'a8188', 'a9188', 'a10188', 'a11188'), +('id189', 'value189', 'name189', 'age189', 'bir189', 'a1189', 'a2189', 'a3189', 'a4189', 'a5189', 'a6189', 'a7189', 'a8189', 'a9189', 'a10189', 'a11189'), +('id190', 'value190', 'name190', 'age190', 'bir190', 'a1190', 'a2190', 'a3190', 'a4190', 'a5190', 'a6190', 'a7190', 'a8190', 'a9190', 'a10190', 'a11190'), +('id191', 'value191', 'name191', 'age191', 'bir191', 'a1191', 'a2191', 'a3191', 'a4191', 'a5191', 'a6191', 'a7191', 'a8191', 'a9191', 'a10191', 'a11191'), +('id192', 'value192', 'name192', 'age192', 'bir192', 'a1192', 'a2192', 'a3192', 'a4192', 'a5192', 'a6192', 'a7192', 'a8192', 'a9192', 'a10192', 'a11192'), +('id193', 'value193', 'name193', 'age193', 'bir193', 'a1193', 'a2193', 'a3193', 'a4193', 'a5193', 'a6193', 'a7193', 'a8193', 'a9193', 'a10193', 'a11193'), +('id194', 'value194', 'name194', 'age194', 'bir194', 'a1194', 'a2194', 'a3194', 'a4194', 'a5194', 'a6194', 'a7194', 'a8194', 'a9194', 'a10194', 'a11194'), +('id195', 'value195', 'name195', 'age195', 'bir195', 'a1195', 'a2195', 'a3195', 'a4195', 'a5195', 'a6195', 'a7195', 'a8195', 'a9195', 'a10195', 'a11195'), +('id196', 'value196', 'name196', 'age196', 'bir196', 'a1196', 'a2196', 'a3196', 'a4196', 'a5196', 'a6196', 'a7196', 'a8196', 'a9196', 'a10196', 'a11196'), +('id197', 'value197', 'name197', 'age197', 'bir197', 'a1197', 'a2197', 'a3197', 'a4197', 'a5197', 'a6197', 'a7197', 'a8197', 'a9197', 'a10197', 'a11197'), +('id198', 'value198', 'name198', 'age198', 'bir198', 'a1198', 'a2198', 'a3198', 'a4198', 'a5198', 'a6198', 'a7198', 'a8198', 'a9198', 'a10198', 'a11198'), +('id199', 'value199', 'name199', 'age199', 'bir199', 'a1199', 'a2199', 'a3199', 'a4199', 'a5199', 'a6199', 'a7199', 'a8199', 'a9199', 'a10199', 'a11199'), +('id200', 'value200', 'name200', 'age200', 'bir200', 'a1200', 'a2200', 'a3200', 'a4200', 'a5200', 'a6200', 'a7200', 'a8200', 'a9200', 'a10200', 'a11200'), +('id201', 'value201', 'name201', 'age201', 'bir201', 'a1201', 'a2201', 'a3201', 'a4201', 'a5201', 'a6201', 'a7201', 'a8201', 'a9201', 'a10201', 'a11201'), +('id202', 'value202', 'name202', 'age202', 'bir202', 'a1202', 'a2202', 'a3202', 'a4202', 'a5202', 'a6202', 'a7202', 'a8202', 'a9202', 'a10202', 'a11202'), +('id203', 'value203', 'name203', 'age203', 'bir203', 'a1203', 'a2203', 'a3203', 'a4203', 'a5203', 'a6203', 'a7203', 'a8203', 'a9203', 'a10203', 'a11203'), +('id204', 'value204', 'name204', 'age204', 'bir204', 'a1204', 'a2204', 'a3204', 'a4204', 'a5204', 'a6204', 'a7204', 'a8204', 'a9204', 'a10204', 'a11204'), +('id205', 'value205', 'name205', 'age205', 'bir205', 'a1205', 'a2205', 'a3205', 'a4205', 'a5205', 'a6205', 'a7205', 'a8205', 'a9205', 'a10205', 'a11205'), +('id206', 'value206', 'name206', 'age206', 'bir206', 'a1206', 'a2206', 'a3206', 'a4206', 'a5206', 'a6206', 'a7206', 'a8206', 'a9206', 'a10206', 'a11206'), +('id207', 'value207', 'name207', 'age207', 'bir207', 'a1207', 'a2207', 'a3207', 'a4207', 'a5207', 'a6207', 'a7207', 'a8207', 'a9207', 'a10207', 'a11207'), +('id208', 'value208', 'name208', 'age208', 'bir208', 'a1208', 'a2208', 'a3208', 'a4208', 'a5208', 'a6208', 'a7208', 'a8208', 'a9208', 'a10208', 'a11208'), +('id209', 'value209', 'name209', 'age209', 'bir209', 'a1209', 'a2209', 'a3209', 'a4209', 'a5209', 'a6209', 'a7209', 'a8209', 'a9209', 'a10209', 'a11209'), +('id210', 'value210', 'name210', 'age210', 'bir210', 'a1210', 'a2210', 'a3210', 'a4210', 'a5210', 'a6210', 'a7210', 'a8210', 'a9210', 'a10210', 'a11210'), +('id211', 'value211', 'name211', 'age211', 'bir211', 'a1211', 'a2211', 'a3211', 'a4211', 'a5211', 'a6211', 'a7211', 'a8211', 'a9211', 'a10211', 'a11211'), +('id212', 'value212', 'name212', 'age212', 'bir212', 'a1212', 'a2212', 'a3212', 'a4212', 'a5212', 'a6212', 'a7212', 'a8212', 'a9212', 'a10212', 'a11212'), +('id213', 'value213', 'name213', 'age213', 'bir213', 'a1213', 'a2213', 'a3213', 'a4213', 'a5213', 'a6213', 'a7213', 'a8213', 'a9213', 'a10213', 'a11213'), +('id214', 'value214', 'name214', 'age214', 'bir214', 'a1214', 'a2214', 'a3214', 'a4214', 'a5214', 'a6214', 'a7214', 'a8214', 'a9214', 'a10214', 'a11214'), +('id215', 'value215', 'name215', 'age215', 'bir215', 'a1215', 'a2215', 'a3215', 'a4215', 'a5215', 'a6215', 'a7215', 'a8215', 'a9215', 'a10215', 'a11215'), +('id216', 'value216', 'name216', 'age216', 'bir216', 'a1216', 'a2216', 'a3216', 'a4216', 'a5216', 'a6216', 'a7216', 'a8216', 'a9216', 'a10216', 'a11216'), +('id217', 'value217', 'name217', 'age217', 'bir217', 'a1217', 'a2217', 'a3217', 'a4217', 'a5217', 'a6217', 'a7217', 'a8217', 'a9217', 'a10217', 'a11217'), +('id218', 'value218', 'name218', 'age218', 'bir218', 'a1218', 'a2218', 'a3218', 'a4218', 'a5218', 'a6218', 'a7218', 'a8218', 'a9218', 'a10218', 'a11218'), +('id219', 'value219', 'name219', 'age219', 'bir219', 'a1219', 'a2219', 'a3219', 'a4219', 'a5219', 'a6219', 'a7219', 'a8219', 'a9219', 'a10219', 'a11219'), +('id220', 'value220', 'name220', 'age220', 'bir220', 'a1220', 'a2220', 'a3220', 'a4220', 'a5220', 'a6220', 'a7220', 'a8220', 'a9220', 'a10220', 'a11220'), +('id221', 'value221', 'name221', 'age221', 'bir221', 'a1221', 'a2221', 'a3221', 'a4221', 'a5221', 'a6221', 'a7221', 'a8221', 'a9221', 'a10221', 'a11221'), +('id222', 'value222', 'name222', 'age222', 'bir222', 'a1222', 'a2222', 'a3222', 'a4222', 'a5222', 'a6222', 'a7222', 'a8222', 'a9222', 'a10222', 'a11222'), +('id223', 'value223', 'name223', 'age223', 'bir223', 'a1223', 'a2223', 'a3223', 'a4223', 'a5223', 'a6223', 'a7223', 'a8223', 'a9223', 'a10223', 'a11223'), +('id224', 'value224', 'name224', 'age224', 'bir224', 'a1224', 'a2224', 'a3224', 'a4224', 'a5224', 'a6224', 'a7224', 'a8224', 'a9224', 'a10224', 'a11224'), +('id225', 'value225', 'name225', 'age225', 'bir225', 'a1225', 'a2225', 'a3225', 'a4225', 'a5225', 'a6225', 'a7225', 'a8225', 'a9225', 'a10225', 'a11225'), +('id226', 'value226', 'name226', 'age226', 'bir226', 'a1226', 'a2226', 'a3226', 'a4226', 'a5226', 'a6226', 'a7226', 'a8226', 'a9226', 'a10226', 'a11226'), +('id227', 'value227', 'name227', 'age227', 'bir227', 'a1227', 'a2227', 'a3227', 'a4227', 'a5227', 'a6227', 'a7227', 'a8227', 'a9227', 'a10227', 'a11227'), +('id228', 'value228', 'name228', 'age228', 'bir228', 'a1228', 'a2228', 'a3228', 'a4228', 'a5228', 'a6228', 'a7228', 'a8228', 'a9228', 'a10228', 'a11228'), +('id229', 'value229', 'name229', 'age229', 'bir229', 'a1229', 'a2229', 'a3229', 'a4229', 'a5229', 'a6229', 'a7229', 'a8229', 'a9229', 'a10229', 'a11229'), +('id230', 'value230', 'name230', 'age230', 'bir230', 'a1230', 'a2230', 'a3230', 'a4230', 'a5230', 'a6230', 'a7230', 'a8230', 'a9230', 'a10230', 'a11230'), +('id231', 'value231', 'name231', 'age231', 'bir231', 'a1231', 'a2231', 'a3231', 'a4231', 'a5231', 'a6231', 'a7231', 'a8231', 'a9231', 'a10231', 'a11231'), +('id232', 'value232', 'name232', 'age232', 'bir232', 'a1232', 'a2232', 'a3232', 'a4232', 'a5232', 'a6232', 'a7232', 'a8232', 'a9232', 'a10232', 'a11232'), +('id233', 'value233', 'name233', 'age233', 'bir233', 'a1233', 'a2233', 'a3233', 'a4233', 'a5233', 'a6233', 'a7233', 'a8233', 'a9233', 'a10233', 'a11233'), +('id234', 'value234', 'name234', 'age234', 'bir234', 'a1234', 'a2234', 'a3234', 'a4234', 'a5234', 'a6234', 'a7234', 'a8234', 'a9234', 'a10234', 'a11234'), +('id235', 'value235', 'name235', 'age235', 'bir235', 'a1235', 'a2235', 'a3235', 'a4235', 'a5235', 'a6235', 'a7235', 'a8235', 'a9235', 'a10235', 'a11235'), +('id236', 'value236', 'name236', 'age236', 'bir236', 'a1236', 'a2236', 'a3236', 'a4236', 'a5236', 'a6236', 'a7236', 'a8236', 'a9236', 'a10236', 'a11236'), +('id237', 'value237', 'name237', 'age237', 'bir237', 'a1237', 'a2237', 'a3237', 'a4237', 'a5237', 'a6237', 'a7237', 'a8237', 'a9237', 'a10237', 'a11237'), +('id238', 'value238', 'name238', 'age238', 'bir238', 'a1238', 'a2238', 'a3238', 'a4238', 'a5238', 'a6238', 'a7238', 'a8238', 'a9238', 'a10238', 'a11238'), +('id239', 'value239', 'name239', 'age239', 'bir239', 'a1239', 'a2239', 'a3239', 'a4239', 'a5239', 'a6239', 'a7239', 'a8239', 'a9239', 'a10239', 'a11239'), +('id240', 'value240', 'name240', 'age240', 'bir240', 'a1240', 'a2240', 'a3240', 'a4240', 'a5240', 'a6240', 'a7240', 'a8240', 'a9240', 'a10240', 'a11240'), +('id241', 'value241', 'name241', 'age241', 'bir241', 'a1241', 'a2241', 'a3241', 'a4241', 'a5241', 'a6241', 'a7241', 'a8241', 'a9241', 'a10241', 'a11241'), +('id242', 'value242', 'name242', 'age242', 'bir242', 'a1242', 'a2242', 'a3242', 'a4242', 'a5242', 'a6242', 'a7242', 'a8242', 'a9242', 'a10242', 'a11242'), +('id243', 'value243', 'name243', 'age243', 'bir243', 'a1243', 'a2243', 'a3243', 'a4243', 'a5243', 'a6243', 'a7243', 'a8243', 'a9243', 'a10243', 'a11243'), +('id244', 'value244', 'name244', 'age244', 'bir244', 'a1244', 'a2244', 'a3244', 'a4244', 'a5244', 'a6244', 'a7244', 'a8244', 'a9244', 'a10244', 'a11244'), +('id245', 'value245', 'name245', 'age245', 'bir245', 'a1245', 'a2245', 'a3245', 'a4245', 'a5245', 'a6245', 'a7245', 'a8245', 'a9245', 'a10245', 'a11245'), +('id246', 'value246', 'name246', 'age246', 'bir246', 'a1246', 'a2246', 'a3246', 'a4246', 'a5246', 'a6246', 'a7246', 'a8246', 'a9246', 'a10246', 'a11246'), +('id247', 'value247', 'name247', 'age247', 'bir247', 'a1247', 'a2247', 'a3247', 'a4247', 'a5247', 'a6247', 'a7247', 'a8247', 'a9247', 'a10247', 'a11247'), +('id248', 'value248', 'name248', 'age248', 'bir248', 'a1248', 'a2248', 'a3248', 'a4248', 'a5248', 'a6248', 'a7248', 'a8248', 'a9248', 'a10248', 'a11248'), +('id249', 'value249', 'name249', 'age249', 'bir249', 'a1249', 'a2249', 'a3249', 'a4249', 'a5249', 'a6249', 'a7249', 'a8249', 'a9249', 'a10249', 'a11249'), +('id250', 'value250', 'name250', 'age250', 'bir250', 'a1250', 'a2250', 'a3250', 'a4250', 'a5250', 'a6250', 'a7250', 'a8250', 'a9250', 'a10250', 'a11250'), +('id251', 'value251', 'name251', 'age251', 'bir251', 'a1251', 'a2251', 'a3251', 'a4251', 'a5251', 'a6251', 'a7251', 'a8251', 'a9251', 'a10251', 'a11251'), +('id252', 'value252', 'name252', 'age252', 'bir252', 'a1252', 'a2252', 'a3252', 'a4252', 'a5252', 'a6252', 'a7252', 'a8252', 'a9252', 'a10252', 'a11252'), +('id253', 'value253', 'name253', 'age253', 'bir253', 'a1253', 'a2253', 'a3253', 'a4253', 'a5253', 'a6253', 'a7253', 'a8253', 'a9253', 'a10253', 'a11253'), +('id254', 'value254', 'name254', 'age254', 'bir254', 'a1254', 'a2254', 'a3254', 'a4254', 'a5254', 'a6254', 'a7254', 'a8254', 'a9254', 'a10254', 'a11254'), +('id255', 'value255', 'name255', 'age255', 'bir255', 'a1255', 'a2255', 'a3255', 'a4255', 'a5255', 'a6255', 'a7255', 'a8255', 'a9255', 'a10255', 'a11255'), +('id256', 'value256', 'name256', 'age256', 'bir256', 'a1256', 'a2256', 'a3256', 'a4256', 'a5256', 'a6256', 'a7256', 'a8256', 'a9256', 'a10256', 'a11256'), +('id257', 'value257', 'name257', 'age257', 'bir257', 'a1257', 'a2257', 'a3257', 'a4257', 'a5257', 'a6257', 'a7257', 'a8257', 'a9257', 'a10257', 'a11257'), +('id258', 'value258', 'name258', 'age258', 'bir258', 'a1258', 'a2258', 'a3258', 'a4258', 'a5258', 'a6258', 'a7258', 'a8258', 'a9258', 'a10258', 'a11258'), +('id259', 'value259', 'name259', 'age259', 'bir259', 'a1259', 'a2259', 'a3259', 'a4259', 'a5259', 'a6259', 'a7259', 'a8259', 'a9259', 'a10259', 'a11259'), +('id260', 'value260', 'name260', 'age260', 'bir260', 'a1260', 'a2260', 'a3260', 'a4260', 'a5260', 'a6260', 'a7260', 'a8260', 'a9260', 'a10260', 'a11260'), +('id261', 'value261', 'name261', 'age261', 'bir261', 'a1261', 'a2261', 'a3261', 'a4261', 'a5261', 'a6261', 'a7261', 'a8261', 'a9261', 'a10261', 'a11261'), +('id262', 'value262', 'name262', 'age262', 'bir262', 'a1262', 'a2262', 'a3262', 'a4262', 'a5262', 'a6262', 'a7262', 'a8262', 'a9262', 'a10262', 'a11262'), +('id263', 'value263', 'name263', 'age263', 'bir263', 'a1263', 'a2263', 'a3263', 'a4263', 'a5263', 'a6263', 'a7263', 'a8263', 'a9263', 'a10263', 'a11263'), +('id264', 'value264', 'name264', 'age264', 'bir264', 'a1264', 'a2264', 'a3264', 'a4264', 'a5264', 'a6264', 'a7264', 'a8264', 'a9264', 'a10264', 'a11264'), +('id265', 'value265', 'name265', 'age265', 'bir265', 'a1265', 'a2265', 'a3265', 'a4265', 'a5265', 'a6265', 'a7265', 'a8265', 'a9265', 'a10265', 'a11265'), +('id266', 'value266', 'name266', 'age266', 'bir266', 'a1266', 'a2266', 'a3266', 'a4266', 'a5266', 'a6266', 'a7266', 'a8266', 'a9266', 'a10266', 'a11266'), +('id267', 'value267', 'name267', 'age267', 'bir267', 'a1267', 'a2267', 'a3267', 'a4267', 'a5267', 'a6267', 'a7267', 'a8267', 'a9267', 'a10267', 'a11267'), +('id268', 'value268', 'name268', 'age268', 'bir268', 'a1268', 'a2268', 'a3268', 'a4268', 'a5268', 'a6268', 'a7268', 'a8268', 'a9268', 'a10268', 'a11268'), +('id269', 'value269', 'name269', 'age269', 'bir269', 'a1269', 'a2269', 'a3269', 'a4269', 'a5269', 'a6269', 'a7269', 'a8269', 'a9269', 'a10269', 'a11269'), +('id270', 'value270', 'name270', 'age270', 'bir270', 'a1270', 'a2270', 'a3270', 'a4270', 'a5270', 'a6270', 'a7270', 'a8270', 'a9270', 'a10270', 'a11270'), +('id271', 'value271', 'name271', 'age271', 'bir271', 'a1271', 'a2271', 'a3271', 'a4271', 'a5271', 'a6271', 'a7271', 'a8271', 'a9271', 'a10271', 'a11271'), +('id272', 'value272', 'name272', 'age272', 'bir272', 'a1272', 'a2272', 'a3272', 'a4272', 'a5272', 'a6272', 'a7272', 'a8272', 'a9272', 'a10272', 'a11272'), +('id273', 'value273', 'name273', 'age273', 'bir273', 'a1273', 'a2273', 'a3273', 'a4273', 'a5273', 'a6273', 'a7273', 'a8273', 'a9273', 'a10273', 'a11273'), +('id274', 'value274', 'name274', 'age274', 'bir274', 'a1274', 'a2274', 'a3274', 'a4274', 'a5274', 'a6274', 'a7274', 'a8274', 'a9274', 'a10274', 'a11274'), +('id275', 'value275', 'name275', 'age275', 'bir275', 'a1275', 'a2275', 'a3275', 'a4275', 'a5275', 'a6275', 'a7275', 'a8275', 'a9275', 'a10275', 'a11275'), +('id276', 'value276', 'name276', 'age276', 'bir276', 'a1276', 'a2276', 'a3276', 'a4276', 'a5276', 'a6276', 'a7276', 'a8276', 'a9276', 'a10276', 'a11276'), +('id277', 'value277', 'name277', 'age277', 'bir277', 'a1277', 'a2277', 'a3277', 'a4277', 'a5277', 'a6277', 'a7277', 'a8277', 'a9277', 'a10277', 'a11277'), +('id278', 'value278', 'name278', 'age278', 'bir278', 'a1278', 'a2278', 'a3278', 'a4278', 'a5278', 'a6278', 'a7278', 'a8278', 'a9278', 'a10278', 'a11278'), +('id279', 'value279', 'name279', 'age279', 'bir279', 'a1279', 'a2279', 'a3279', 'a4279', 'a5279', 'a6279', 'a7279', 'a8279', 'a9279', 'a10279', 'a11279'), +('id280', 'value280', 'name280', 'age280', 'bir280', 'a1280', 'a2280', 'a3280', 'a4280', 'a5280', 'a6280', 'a7280', 'a8280', 'a9280', 'a10280', 'a11280'), +('id281', 'value281', 'name281', 'age281', 'bir281', 'a1281', 'a2281', 'a3281', 'a4281', 'a5281', 'a6281', 'a7281', 'a8281', 'a9281', 'a10281', 'a11281'), +('id282', 'value282', 'name282', 'age282', 'bir282', 'a1282', 'a2282', 'a3282', 'a4282', 'a5282', 'a6282', 'a7282', 'a8282', 'a9282', 'a10282', 'a11282'), +('id283', 'value283', 'name283', 'age283', 'bir283', 'a1283', 'a2283', 'a3283', 'a4283', 'a5283', 'a6283', 'a7283', 'a8283', 'a9283', 'a10283', 'a11283'), +('id284', 'value284', 'name284', 'age284', 'bir284', 'a1284', 'a2284', 'a3284', 'a4284', 'a5284', 'a6284', 'a7284', 'a8284', 'a9284', 'a10284', 'a11284'), +('id285', 'value285', 'name285', 'age285', 'bir285', 'a1285', 'a2285', 'a3285', 'a4285', 'a5285', 'a6285', 'a7285', 'a8285', 'a9285', 'a10285', 'a11285'), +('id286', 'value286', 'name286', 'age286', 'bir286', 'a1286', 'a2286', 'a3286', 'a4286', 'a5286', 'a6286', 'a7286', 'a8286', 'a9286', 'a10286', 'a11286'), +('id287', 'value287', 'name287', 'age287', 'bir287', 'a1287', 'a2287', 'a3287', 'a4287', 'a5287', 'a6287', 'a7287', 'a8287', 'a9287', 'a10287', 'a11287'), +('id288', 'value288', 'name288', 'age288', 'bir288', 'a1288', 'a2288', 'a3288', 'a4288', 'a5288', 'a6288', 'a7288', 'a8288', 'a9288', 'a10288', 'a11288'), +('id289', 'value289', 'name289', 'age289', 'bir289', 'a1289', 'a2289', 'a3289', 'a4289', 'a5289', 'a6289', 'a7289', 'a8289', 'a9289', 'a10289', 'a11289'), +('id290', 'value290', 'name290', 'age290', 'bir290', 'a1290', 'a2290', 'a3290', 'a4290', 'a5290', 'a6290', 'a7290', 'a8290', 'a9290', 'a10290', 'a11290'), +('id291', 'value291', 'name291', 'age291', 'bir291', 'a1291', 'a2291', 'a3291', 'a4291', 'a5291', 'a6291', 'a7291', 'a8291', 'a9291', 'a10291', 'a11291'), +('id292', 'value292', 'name292', 'age292', 'bir292', 'a1292', 'a2292', 'a3292', 'a4292', 'a5292', 'a6292', 'a7292', 'a8292', 'a9292', 'a10292', 'a11292'), +('id293', 'value293', 'name293', 'age293', 'bir293', 'a1293', 'a2293', 'a3293', 'a4293', 'a5293', 'a6293', 'a7293', 'a8293', 'a9293', 'a10293', 'a11293'), +('id294', 'value294', 'name294', 'age294', 'bir294', 'a1294', 'a2294', 'a3294', 'a4294', 'a5294', 'a6294', 'a7294', 'a8294', 'a9294', 'a10294', 'a11294'), +('id295', 'value295', 'name295', 'age295', 'bir295', 'a1295', 'a2295', 'a3295', 'a4295', 'a5295', 'a6295', 'a7295', 'a8295', 'a9295', 'a10295', 'a11295'), +('id296', 'value296', 'name296', 'age296', 'bir296', 'a1296', 'a2296', 'a3296', 'a4296', 'a5296', 'a6296', 'a7296', 'a8296', 'a9296', 'a10296', 'a11296'), +('id297', 'value297', 'name297', 'age297', 'bir297', 'a1297', 'a2297', 'a3297', 'a4297', 'a5297', 'a6297', 'a7297', 'a8297', 'a9297', 'a10297', 'a11297'), +('id298', 'value298', 'name298', 'age298', 'bir298', 'a1298', 'a2298', 'a3298', 'a4298', 'a5298', 'a6298', 'a7298', 'a8298', 'a9298', 'a10298', 'a11298'), +('id299', 'value299', 'name299', 'age299', 'bir299', 'a1299', 'a2299', 'a3299', 'a4299', 'a5299', 'a6299', 'a7299', 'a8299', 'a9299', 'a10299', 'a11299'), +('id300', 'value300', 'name300', 'age300', 'bir300', 'a1300', 'a2300', 'a3300', 'a4300', 'a5300', 'a6300', 'a7300', 'a8300', 'a9300', 'a10300', 'a11300'), +('id301', 'value301', 'name301', 'age301', 'bir301', 'a1301', 'a2301', 'a3301', 'a4301', 'a5301', 'a6301', 'a7301', 'a8301', 'a9301', 'a10301', 'a11301'), +('id302', 'value302', 'name302', 'age302', 'bir302', 'a1302', 'a2302', 'a3302', 'a4302', 'a5302', 'a6302', 'a7302', 'a8302', 'a9302', 'a10302', 'a11302'), +('id303', 'value303', 'name303', 'age303', 'bir303', 'a1303', 'a2303', 'a3303', 'a4303', 'a5303', 'a6303', 'a7303', 'a8303', 'a9303', 'a10303', 'a11303'), +('id304', 'value304', 'name304', 'age304', 'bir304', 'a1304', 'a2304', 'a3304', 'a4304', 'a5304', 'a6304', 'a7304', 'a8304', 'a9304', 'a10304', 'a11304'), +('id305', 'value305', 'name305', 'age305', 'bir305', 'a1305', 'a2305', 'a3305', 'a4305', 'a5305', 'a6305', 'a7305', 'a8305', 'a9305', 'a10305', 'a11305'), +('id306', 'value306', 'name306', 'age306', 'bir306', 'a1306', 'a2306', 'a3306', 'a4306', 'a5306', 'a6306', 'a7306', 'a8306', 'a9306', 'a10306', 'a11306'), +('id307', 'value307', 'name307', 'age307', 'bir307', 'a1307', 'a2307', 'a3307', 'a4307', 'a5307', 'a6307', 'a7307', 'a8307', 'a9307', 'a10307', 'a11307'), +('id308', 'value308', 'name308', 'age308', 'bir308', 'a1308', 'a2308', 'a3308', 'a4308', 'a5308', 'a6308', 'a7308', 'a8308', 'a9308', 'a10308', 'a11308'), +('id309', 'value309', 'name309', 'age309', 'bir309', 'a1309', 'a2309', 'a3309', 'a4309', 'a5309', 'a6309', 'a7309', 'a8309', 'a9309', 'a10309', 'a11309'), +('id310', 'value310', 'name310', 'age310', 'bir310', 'a1310', 'a2310', 'a3310', 'a4310', 'a5310', 'a6310', 'a7310', 'a8310', 'a9310', 'a10310', 'a11310'), +('id311', 'value311', 'name311', 'age311', 'bir311', 'a1311', 'a2311', 'a3311', 'a4311', 'a5311', 'a6311', 'a7311', 'a8311', 'a9311', 'a10311', 'a11311'), +('id312', 'value312', 'name312', 'age312', 'bir312', 'a1312', 'a2312', 'a3312', 'a4312', 'a5312', 'a6312', 'a7312', 'a8312', 'a9312', 'a10312', 'a11312'), +('id313', 'value313', 'name313', 'age313', 'bir313', 'a1313', 'a2313', 'a3313', 'a4313', 'a5313', 'a6313', 'a7313', 'a8313', 'a9313', 'a10313', 'a11313'), +('id314', 'value314', 'name314', 'age314', 'bir314', 'a1314', 'a2314', 'a3314', 'a4314', 'a5314', 'a6314', 'a7314', 'a8314', 'a9314', 'a10314', 'a11314'), +('id315', 'value315', 'name315', 'age315', 'bir315', 'a1315', 'a2315', 'a3315', 'a4315', 'a5315', 'a6315', 'a7315', 'a8315', 'a9315', 'a10315', 'a11315'), +('id316', 'value316', 'name316', 'age316', 'bir316', 'a1316', 'a2316', 'a3316', 'a4316', 'a5316', 'a6316', 'a7316', 'a8316', 'a9316', 'a10316', 'a11316'), +('id317', 'value317', 'name317', 'age317', 'bir317', 'a1317', 'a2317', 'a3317', 'a4317', 'a5317', 'a6317', 'a7317', 'a8317', 'a9317', 'a10317', 'a11317'), +('id318', 'value318', 'name318', 'age318', 'bir318', 'a1318', 'a2318', 'a3318', 'a4318', 'a5318', 'a6318', 'a7318', 'a8318', 'a9318', 'a10318', 'a11318'), +('id319', 'value319', 'name319', 'age319', 'bir319', 'a1319', 'a2319', 'a3319', 'a4319', 'a5319', 'a6319', 'a7319', 'a8319', 'a9319', 'a10319', 'a11319'), +('id320', 'value320', 'name320', 'age320', 'bir320', 'a1320', 'a2320', 'a3320', 'a4320', 'a5320', 'a6320', 'a7320', 'a8320', 'a9320', 'a10320', 'a11320'), +('id321', 'value321', 'name321', 'age321', 'bir321', 'a1321', 'a2321', 'a3321', 'a4321', 'a5321', 'a6321', 'a7321', 'a8321', 'a9321', 'a10321', 'a11321'), +('id322', 'value322', 'name322', 'age322', 'bir322', 'a1322', 'a2322', 'a3322', 'a4322', 'a5322', 'a6322', 'a7322', 'a8322', 'a9322', 'a10322', 'a11322'), +('id323', 'value323', 'name323', 'age323', 'bir323', 'a1323', 'a2323', 'a3323', 'a4323', 'a5323', 'a6323', 'a7323', 'a8323', 'a9323', 'a10323', 'a11323'), +('id324', 'value324', 'name324', 'age324', 'bir324', 'a1324', 'a2324', 'a3324', 'a4324', 'a5324', 'a6324', 'a7324', 'a8324', 'a9324', 'a10324', 'a11324'), +('id325', 'value325', 'name325', 'age325', 'bir325', 'a1325', 'a2325', 'a3325', 'a4325', 'a5325', 'a6325', 'a7325', 'a8325', 'a9325', 'a10325', 'a11325'), +('id326', 'value326', 'name326', 'age326', 'bir326', 'a1326', 'a2326', 'a3326', 'a4326', 'a5326', 'a6326', 'a7326', 'a8326', 'a9326', 'a10326', 'a11326'), +('id327', 'value327', 'name327', 'age327', 'bir327', 'a1327', 'a2327', 'a3327', 'a4327', 'a5327', 'a6327', 'a7327', 'a8327', 'a9327', 'a10327', 'a11327'), +('id328', 'value328', 'name328', 'age328', 'bir328', 'a1328', 'a2328', 'a3328', 'a4328', 'a5328', 'a6328', 'a7328', 'a8328', 'a9328', 'a10328', 'a11328'), +('id329', 'value329', 'name329', 'age329', 'bir329', 'a1329', 'a2329', 'a3329', 'a4329', 'a5329', 'a6329', 'a7329', 'a8329', 'a9329', 'a10329', 'a11329'), +('id330', 'value330', 'name330', 'age330', 'bir330', 'a1330', 'a2330', 'a3330', 'a4330', 'a5330', 'a6330', 'a7330', 'a8330', 'a9330', 'a10330', 'a11330'), +('id331', 'value331', 'name331', 'age331', 'bir331', 'a1331', 'a2331', 'a3331', 'a4331', 'a5331', 'a6331', 'a7331', 'a8331', 'a9331', 'a10331', 'a11331'), +('id332', 'value332', 'name332', 'age332', 'bir332', 'a1332', 'a2332', 'a3332', 'a4332', 'a5332', 'a6332', 'a7332', 'a8332', 'a9332', 'a10332', 'a11332'), +('id333', 'value333', 'name333', 'age333', 'bir333', 'a1333', 'a2333', 'a3333', 'a4333', 'a5333', 'a6333', 'a7333', 'a8333', 'a9333', 'a10333', 'a11333'), +('id334', 'value334', 'name334', 'age334', 'bir334', 'a1334', 'a2334', 'a3334', 'a4334', 'a5334', 'a6334', 'a7334', 'a8334', 'a9334', 'a10334', 'a11334'), +('id335', 'value335', 'name335', 'age335', 'bir335', 'a1335', 'a2335', 'a3335', 'a4335', 'a5335', 'a6335', 'a7335', 'a8335', 'a9335', 'a10335', 'a11335'), +('id336', 'value336', 'name336', 'age336', 'bir336', 'a1336', 'a2336', 'a3336', 'a4336', 'a5336', 'a6336', 'a7336', 'a8336', 'a9336', 'a10336', 'a11336'), +('id337', 'value337', 'name337', 'age337', 'bir337', 'a1337', 'a2337', 'a3337', 'a4337', 'a5337', 'a6337', 'a7337', 'a8337', 'a9337', 'a10337', 'a11337'), +('id338', 'value338', 'name338', 'age338', 'bir338', 'a1338', 'a2338', 'a3338', 'a4338', 'a5338', 'a6338', 'a7338', 'a8338', 'a9338', 'a10338', 'a11338'), +('id339', 'value339', 'name339', 'age339', 'bir339', 'a1339', 'a2339', 'a3339', 'a4339', 'a5339', 'a6339', 'a7339', 'a8339', 'a9339', 'a10339', 'a11339'), +('id340', 'value340', 'name340', 'age340', 'bir340', 'a1340', 'a2340', 'a3340', 'a4340', 'a5340', 'a6340', 'a7340', 'a8340', 'a9340', 'a10340', 'a11340'), +('id341', 'value341', 'name341', 'age341', 'bir341', 'a1341', 'a2341', 'a3341', 'a4341', 'a5341', 'a6341', 'a7341', 'a8341', 'a9341', 'a10341', 'a11341'), +('id342', 'value342', 'name342', 'age342', 'bir342', 'a1342', 'a2342', 'a3342', 'a4342', 'a5342', 'a6342', 'a7342', 'a8342', 'a9342', 'a10342', 'a11342'), +('id343', 'value343', 'name343', 'age343', 'bir343', 'a1343', 'a2343', 'a3343', 'a4343', 'a5343', 'a6343', 'a7343', 'a8343', 'a9343', 'a10343', 'a11343'), +('id344', 'value344', 'name344', 'age344', 'bir344', 'a1344', 'a2344', 'a3344', 'a4344', 'a5344', 'a6344', 'a7344', 'a8344', 'a9344', 'a10344', 'a11344'), +('id345', 'value345', 'name345', 'age345', 'bir345', 'a1345', 'a2345', 'a3345', 'a4345', 'a5345', 'a6345', 'a7345', 'a8345', 'a9345', 'a10345', 'a11345'), +('id346', 'value346', 'name346', 'age346', 'bir346', 'a1346', 'a2346', 'a3346', 'a4346', 'a5346', 'a6346', 'a7346', 'a8346', 'a9346', 'a10346', 'a11346'), +('id347', 'value347', 'name347', 'age347', 'bir347', 'a1347', 'a2347', 'a3347', 'a4347', 'a5347', 'a6347', 'a7347', 'a8347', 'a9347', 'a10347', 'a11347'), +('id348', 'value348', 'name348', 'age348', 'bir348', 'a1348', 'a2348', 'a3348', 'a4348', 'a5348', 'a6348', 'a7348', 'a8348', 'a9348', 'a10348', 'a11348'), +('id349', 'value349', 'name349', 'age349', 'bir349', 'a1349', 'a2349', 'a3349', 'a4349', 'a5349', 'a6349', 'a7349', 'a8349', 'a9349', 'a10349', 'a11349'), +('id350', 'value350', 'name350', 'age350', 'bir350', 'a1350', 'a2350', 'a3350', 'a4350', 'a5350', 'a6350', 'a7350', 'a8350', 'a9350', 'a10350', 'a11350'), +('id351', 'value351', 'name351', 'age351', 'bir351', 'a1351', 'a2351', 'a3351', 'a4351', 'a5351', 'a6351', 'a7351', 'a8351', 'a9351', 'a10351', 'a11351'), +('id352', 'value352', 'name352', 'age352', 'bir352', 'a1352', 'a2352', 'a3352', 'a4352', 'a5352', 'a6352', 'a7352', 'a8352', 'a9352', 'a10352', 'a11352'), +('id353', 'value353', 'name353', 'age353', 'bir353', 'a1353', 'a2353', 'a3353', 'a4353', 'a5353', 'a6353', 'a7353', 'a8353', 'a9353', 'a10353', 'a11353'), +('id354', 'value354', 'name354', 'age354', 'bir354', 'a1354', 'a2354', 'a3354', 'a4354', 'a5354', 'a6354', 'a7354', 'a8354', 'a9354', 'a10354', 'a11354'), +('id355', 'value355', 'name355', 'age355', 'bir355', 'a1355', 'a2355', 'a3355', 'a4355', 'a5355', 'a6355', 'a7355', 'a8355', 'a9355', 'a10355', 'a11355'), +('id356', 'value356', 'name356', 'age356', 'bir356', 'a1356', 'a2356', 'a3356', 'a4356', 'a5356', 'a6356', 'a7356', 'a8356', 'a9356', 'a10356', 'a11356'), +('id357', 'value357', 'name357', 'age357', 'bir357', 'a1357', 'a2357', 'a3357', 'a4357', 'a5357', 'a6357', 'a7357', 'a8357', 'a9357', 'a10357', 'a11357'), +('id358', 'value358', 'name358', 'age358', 'bir358', 'a1358', 'a2358', 'a3358', 'a4358', 'a5358', 'a6358', 'a7358', 'a8358', 'a9358', 'a10358', 'a11358'), +('id359', 'value359', 'name359', 'age359', 'bir359', 'a1359', 'a2359', 'a3359', 'a4359', 'a5359', 'a6359', 'a7359', 'a8359', 'a9359', 'a10359', 'a11359'), +('id360', 'value360', 'name360', 'age360', 'bir360', 'a1360', 'a2360', 'a3360', 'a4360', 'a5360', 'a6360', 'a7360', 'a8360', 'a9360', 'a10360', 'a11360'), +('id361', 'value361', 'name361', 'age361', 'bir361', 'a1361', 'a2361', 'a3361', 'a4361', 'a5361', 'a6361', 'a7361', 'a8361', 'a9361', 'a10361', 'a11361'), +('id362', 'value362', 'name362', 'age362', 'bir362', 'a1362', 'a2362', 'a3362', 'a4362', 'a5362', 'a6362', 'a7362', 'a8362', 'a9362', 'a10362', 'a11362'), +('id363', 'value363', 'name363', 'age363', 'bir363', 'a1363', 'a2363', 'a3363', 'a4363', 'a5363', 'a6363', 'a7363', 'a8363', 'a9363', 'a10363', 'a11363'), +('id364', 'value364', 'name364', 'age364', 'bir364', 'a1364', 'a2364', 'a3364', 'a4364', 'a5364', 'a6364', 'a7364', 'a8364', 'a9364', 'a10364', 'a11364'), +('id365', 'value365', 'name365', 'age365', 'bir365', 'a1365', 'a2365', 'a3365', 'a4365', 'a5365', 'a6365', 'a7365', 'a8365', 'a9365', 'a10365', 'a11365'), +('id366', 'value366', 'name366', 'age366', 'bir366', 'a1366', 'a2366', 'a3366', 'a4366', 'a5366', 'a6366', 'a7366', 'a8366', 'a9366', 'a10366', 'a11366'), +('id367', 'value367', 'name367', 'age367', 'bir367', 'a1367', 'a2367', 'a3367', 'a4367', 'a5367', 'a6367', 'a7367', 'a8367', 'a9367', 'a10367', 'a11367'), +('id368', 'value368', 'name368', 'age368', 'bir368', 'a1368', 'a2368', 'a3368', 'a4368', 'a5368', 'a6368', 'a7368', 'a8368', 'a9368', 'a10368', 'a11368'), +('id369', 'value369', 'name369', 'age369', 'bir369', 'a1369', 'a2369', 'a3369', 'a4369', 'a5369', 'a6369', 'a7369', 'a8369', 'a9369', 'a10369', 'a11369'), +('id370', 'value370', 'name370', 'age370', 'bir370', 'a1370', 'a2370', 'a3370', 'a4370', 'a5370', 'a6370', 'a7370', 'a8370', 'a9370', 'a10370', 'a11370'), +('id371', 'value371', 'name371', 'age371', 'bir371', 'a1371', 'a2371', 'a3371', 'a4371', 'a5371', 'a6371', 'a7371', 'a8371', 'a9371', 'a10371', 'a11371'), +('id372', 'value372', 'name372', 'age372', 'bir372', 'a1372', 'a2372', 'a3372', 'a4372', 'a5372', 'a6372', 'a7372', 'a8372', 'a9372', 'a10372', 'a11372'), +('id373', 'value373', 'name373', 'age373', 'bir373', 'a1373', 'a2373', 'a3373', 'a4373', 'a5373', 'a6373', 'a7373', 'a8373', 'a9373', 'a10373', 'a11373'), +('id374', 'value374', 'name374', 'age374', 'bir374', 'a1374', 'a2374', 'a3374', 'a4374', 'a5374', 'a6374', 'a7374', 'a8374', 'a9374', 'a10374', 'a11374'), +('id375', 'value375', 'name375', 'age375', 'bir375', 'a1375', 'a2375', 'a3375', 'a4375', 'a5375', 'a6375', 'a7375', 'a8375', 'a9375', 'a10375', 'a11375'), +('id376', 'value376', 'name376', 'age376', 'bir376', 'a1376', 'a2376', 'a3376', 'a4376', 'a5376', 'a6376', 'a7376', 'a8376', 'a9376', 'a10376', 'a11376'), +('id377', 'value377', 'name377', 'age377', 'bir377', 'a1377', 'a2377', 'a3377', 'a4377', 'a5377', 'a6377', 'a7377', 'a8377', 'a9377', 'a10377', 'a11377'), +('id378', 'value378', 'name378', 'age378', 'bir378', 'a1378', 'a2378', 'a3378', 'a4378', 'a5378', 'a6378', 'a7378', 'a8378', 'a9378', 'a10378', 'a11378'), +('id379', 'value379', 'name379', 'age379', 'bir379', 'a1379', 'a2379', 'a3379', 'a4379', 'a5379', 'a6379', 'a7379', 'a8379', 'a9379', 'a10379', 'a11379'), +('id380', 'value380', 'name380', 'age380', 'bir380', 'a1380', 'a2380', 'a3380', 'a4380', 'a5380', 'a6380', 'a7380', 'a8380', 'a9380', 'a10380', 'a11380'), +('id381', 'value381', 'name381', 'age381', 'bir381', 'a1381', 'a2381', 'a3381', 'a4381', 'a5381', 'a6381', 'a7381', 'a8381', 'a9381', 'a10381', 'a11381'), +('id382', 'value382', 'name382', 'age382', 'bir382', 'a1382', 'a2382', 'a3382', 'a4382', 'a5382', 'a6382', 'a7382', 'a8382', 'a9382', 'a10382', 'a11382'), +('id383', 'value383', 'name383', 'age383', 'bir383', 'a1383', 'a2383', 'a3383', 'a4383', 'a5383', 'a6383', 'a7383', 'a8383', 'a9383', 'a10383', 'a11383'), +('id384', 'value384', 'name384', 'age384', 'bir384', 'a1384', 'a2384', 'a3384', 'a4384', 'a5384', 'a6384', 'a7384', 'a8384', 'a9384', 'a10384', 'a11384'), +('id385', 'value385', 'name385', 'age385', 'bir385', 'a1385', 'a2385', 'a3385', 'a4385', 'a5385', 'a6385', 'a7385', 'a8385', 'a9385', 'a10385', 'a11385'), +('id386', 'value386', 'name386', 'age386', 'bir386', 'a1386', 'a2386', 'a3386', 'a4386', 'a5386', 'a6386', 'a7386', 'a8386', 'a9386', 'a10386', 'a11386'), +('id387', 'value387', 'name387', 'age387', 'bir387', 'a1387', 'a2387', 'a3387', 'a4387', 'a5387', 'a6387', 'a7387', 'a8387', 'a9387', 'a10387', 'a11387'), +('id388', 'value388', 'name388', 'age388', 'bir388', 'a1388', 'a2388', 'a3388', 'a4388', 'a5388', 'a6388', 'a7388', 'a8388', 'a9388', 'a10388', 'a11388'), +('id389', 'value389', 'name389', 'age389', 'bir389', 'a1389', 'a2389', 'a3389', 'a4389', 'a5389', 'a6389', 'a7389', 'a8389', 'a9389', 'a10389', 'a11389'), +('id390', 'value390', 'name390', 'age390', 'bir390', 'a1390', 'a2390', 'a3390', 'a4390', 'a5390', 'a6390', 'a7390', 'a8390', 'a9390', 'a10390', 'a11390'), +('id391', 'value391', 'name391', 'age391', 'bir391', 'a1391', 'a2391', 'a3391', 'a4391', 'a5391', 'a6391', 'a7391', 'a8391', 'a9391', 'a10391', 'a11391'), +('id392', 'value392', 'name392', 'age392', 'bir392', 'a1392', 'a2392', 'a3392', 'a4392', 'a5392', 'a6392', 'a7392', 'a8392', 'a9392', 'a10392', 'a11392'), +('id393', 'value393', 'name393', 'age393', 'bir393', 'a1393', 'a2393', 'a3393', 'a4393', 'a5393', 'a6393', 'a7393', 'a8393', 'a9393', 'a10393', 'a11393'), +('id394', 'value394', 'name394', 'age394', 'bir394', 'a1394', 'a2394', 'a3394', 'a4394', 'a5394', 'a6394', 'a7394', 'a8394', 'a9394', 'a10394', 'a11394'), +('id395', 'value395', 'name395', 'age395', 'bir395', 'a1395', 'a2395', 'a3395', 'a4395', 'a5395', 'a6395', 'a7395', 'a8395', 'a9395', 'a10395', 'a11395'), +('id396', 'value396', 'name396', 'age396', 'bir396', 'a1396', 'a2396', 'a3396', 'a4396', 'a5396', 'a6396', 'a7396', 'a8396', 'a9396', 'a10396', 'a11396'), +('id397', 'value397', 'name397', 'age397', 'bir397', 'a1397', 'a2397', 'a3397', 'a4397', 'a5397', 'a6397', 'a7397', 'a8397', 'a9397', 'a10397', 'a11397'), +('id398', 'value398', 'name398', 'age398', 'bir398', 'a1398', 'a2398', 'a3398', 'a4398', 'a5398', 'a6398', 'a7398', 'a8398', 'a9398', 'a10398', 'a11398'), +('id399', 'value399', 'name399', 'age399', 'bir399', 'a1399', 'a2399', 'a3399', 'a4399', 'a5399', 'a6399', 'a7399', 'a8399', 'a9399', 'a10399', 'a11399'), +('id400', 'value400', 'name400', 'age400', 'bir400', 'a1400', 'a2400', 'a3400', 'a4400', 'a5400', 'a6400', 'a7400', 'a8400', 'a9400', 'a10400', 'a11400'), +('id401', 'value401', 'name401', 'age401', 'bir401', 'a1401', 'a2401', 'a3401', 'a4401', 'a5401', 'a6401', 'a7401', 'a8401', 'a9401', 'a10401', 'a11401'), +('id402', 'value402', 'name402', 'age402', 'bir402', 'a1402', 'a2402', 'a3402', 'a4402', 'a5402', 'a6402', 'a7402', 'a8402', 'a9402', 'a10402', 'a11402'), +('id403', 'value403', 'name403', 'age403', 'bir403', 'a1403', 'a2403', 'a3403', 'a4403', 'a5403', 'a6403', 'a7403', 'a8403', 'a9403', 'a10403', 'a11403'), +('id404', 'value404', 'name404', 'age404', 'bir404', 'a1404', 'a2404', 'a3404', 'a4404', 'a5404', 'a6404', 'a7404', 'a8404', 'a9404', 'a10404', 'a11404'), +('id405', 'value405', 'name405', 'age405', 'bir405', 'a1405', 'a2405', 'a3405', 'a4405', 'a5405', 'a6405', 'a7405', 'a8405', 'a9405', 'a10405', 'a11405'), +('id406', 'value406', 'name406', 'age406', 'bir406', 'a1406', 'a2406', 'a3406', 'a4406', 'a5406', 'a6406', 'a7406', 'a8406', 'a9406', 'a10406', 'a11406'), +('id407', 'value407', 'name407', 'age407', 'bir407', 'a1407', 'a2407', 'a3407', 'a4407', 'a5407', 'a6407', 'a7407', 'a8407', 'a9407', 'a10407', 'a11407'), +('id408', 'value408', 'name408', 'age408', 'bir408', 'a1408', 'a2408', 'a3408', 'a4408', 'a5408', 'a6408', 'a7408', 'a8408', 'a9408', 'a10408', 'a11408'), +('id409', 'value409', 'name409', 'age409', 'bir409', 'a1409', 'a2409', 'a3409', 'a4409', 'a5409', 'a6409', 'a7409', 'a8409', 'a9409', 'a10409', 'a11409'), +('id410', 'value410', 'name410', 'age410', 'bir410', 'a1410', 'a2410', 'a3410', 'a4410', 'a5410', 'a6410', 'a7410', 'a8410', 'a9410', 'a10410', 'a11410'), +('id411', 'value411', 'name411', 'age411', 'bir411', 'a1411', 'a2411', 'a3411', 'a4411', 'a5411', 'a6411', 'a7411', 'a8411', 'a9411', 'a10411', 'a11411'), +('id412', 'value412', 'name412', 'age412', 'bir412', 'a1412', 'a2412', 'a3412', 'a4412', 'a5412', 'a6412', 'a7412', 'a8412', 'a9412', 'a10412', 'a11412'), +('id413', 'value413', 'name413', 'age413', 'bir413', 'a1413', 'a2413', 'a3413', 'a4413', 'a5413', 'a6413', 'a7413', 'a8413', 'a9413', 'a10413', 'a11413'), +('id414', 'value414', 'name414', 'age414', 'bir414', 'a1414', 'a2414', 'a3414', 'a4414', 'a5414', 'a6414', 'a7414', 'a8414', 'a9414', 'a10414', 'a11414'), +('id415', 'value415', 'name415', 'age415', 'bir415', 'a1415', 'a2415', 'a3415', 'a4415', 'a5415', 'a6415', 'a7415', 'a8415', 'a9415', 'a10415', 'a11415'), +('id416', 'value416', 'name416', 'age416', 'bir416', 'a1416', 'a2416', 'a3416', 'a4416', 'a5416', 'a6416', 'a7416', 'a8416', 'a9416', 'a10416', 'a11416'), +('id417', 'value417', 'name417', 'age417', 'bir417', 'a1417', 'a2417', 'a3417', 'a4417', 'a5417', 'a6417', 'a7417', 'a8417', 'a9417', 'a10417', 'a11417'), +('id418', 'value418', 'name418', 'age418', 'bir418', 'a1418', 'a2418', 'a3418', 'a4418', 'a5418', 'a6418', 'a7418', 'a8418', 'a9418', 'a10418', 'a11418'), +('id419', 'value419', 'name419', 'age419', 'bir419', 'a1419', 'a2419', 'a3419', 'a4419', 'a5419', 'a6419', 'a7419', 'a8419', 'a9419', 'a10419', 'a11419'), +('id420', 'value420', 'name420', 'age420', 'bir420', 'a1420', 'a2420', 'a3420', 'a4420', 'a5420', 'a6420', 'a7420', 'a8420', 'a9420', 'a10420', 'a11420'), +('id421', 'value421', 'name421', 'age421', 'bir421', 'a1421', 'a2421', 'a3421', 'a4421', 'a5421', 'a6421', 'a7421', 'a8421', 'a9421', 'a10421', 'a11421'), +('id422', 'value422', 'name422', 'age422', 'bir422', 'a1422', 'a2422', 'a3422', 'a4422', 'a5422', 'a6422', 'a7422', 'a8422', 'a9422', 'a10422', 'a11422'), +('id423', 'value423', 'name423', 'age423', 'bir423', 'a1423', 'a2423', 'a3423', 'a4423', 'a5423', 'a6423', 'a7423', 'a8423', 'a9423', 'a10423', 'a11423'), +('id424', 'value424', 'name424', 'age424', 'bir424', 'a1424', 'a2424', 'a3424', 'a4424', 'a5424', 'a6424', 'a7424', 'a8424', 'a9424', 'a10424', 'a11424'), +('id425', 'value425', 'name425', 'age425', 'bir425', 'a1425', 'a2425', 'a3425', 'a4425', 'a5425', 'a6425', 'a7425', 'a8425', 'a9425', 'a10425', 'a11425'), +('id426', 'value426', 'name426', 'age426', 'bir426', 'a1426', 'a2426', 'a3426', 'a4426', 'a5426', 'a6426', 'a7426', 'a8426', 'a9426', 'a10426', 'a11426'), +('id427', 'value427', 'name427', 'age427', 'bir427', 'a1427', 'a2427', 'a3427', 'a4427', 'a5427', 'a6427', 'a7427', 'a8427', 'a9427', 'a10427', 'a11427'), +('id428', 'value428', 'name428', 'age428', 'bir428', 'a1428', 'a2428', 'a3428', 'a4428', 'a5428', 'a6428', 'a7428', 'a8428', 'a9428', 'a10428', 'a11428'), +('id429', 'value429', 'name429', 'age429', 'bir429', 'a1429', 'a2429', 'a3429', 'a4429', 'a5429', 'a6429', 'a7429', 'a8429', 'a9429', 'a10429', 'a11429'), +('id430', 'value430', 'name430', 'age430', 'bir430', 'a1430', 'a2430', 'a3430', 'a4430', 'a5430', 'a6430', 'a7430', 'a8430', 'a9430', 'a10430', 'a11430'), +('id431', 'value431', 'name431', 'age431', 'bir431', 'a1431', 'a2431', 'a3431', 'a4431', 'a5431', 'a6431', 'a7431', 'a8431', 'a9431', 'a10431', 'a11431'), +('id432', 'value432', 'name432', 'age432', 'bir432', 'a1432', 'a2432', 'a3432', 'a4432', 'a5432', 'a6432', 'a7432', 'a8432', 'a9432', 'a10432', 'a11432'), +('id433', 'value433', 'name433', 'age433', 'bir433', 'a1433', 'a2433', 'a3433', 'a4433', 'a5433', 'a6433', 'a7433', 'a8433', 'a9433', 'a10433', 'a11433'), +('id434', 'value434', 'name434', 'age434', 'bir434', 'a1434', 'a2434', 'a3434', 'a4434', 'a5434', 'a6434', 'a7434', 'a8434', 'a9434', 'a10434', 'a11434'), +('id435', 'value435', 'name435', 'age435', 'bir435', 'a1435', 'a2435', 'a3435', 'a4435', 'a5435', 'a6435', 'a7435', 'a8435', 'a9435', 'a10435', 'a11435'), +('id436', 'value436', 'name436', 'age436', 'bir436', 'a1436', 'a2436', 'a3436', 'a4436', 'a5436', 'a6436', 'a7436', 'a8436', 'a9436', 'a10436', 'a11436'), +('id437', 'value437', 'name437', 'age437', 'bir437', 'a1437', 'a2437', 'a3437', 'a4437', 'a5437', 'a6437', 'a7437', 'a8437', 'a9437', 'a10437', 'a11437'), +('id438', 'value438', 'name438', 'age438', 'bir438', 'a1438', 'a2438', 'a3438', 'a4438', 'a5438', 'a6438', 'a7438', 'a8438', 'a9438', 'a10438', 'a11438'), +('id439', 'value439', 'name439', 'age439', 'bir439', 'a1439', 'a2439', 'a3439', 'a4439', 'a5439', 'a6439', 'a7439', 'a8439', 'a9439', 'a10439', 'a11439'), +('id440', 'value440', 'name440', 'age440', 'bir440', 'a1440', 'a2440', 'a3440', 'a4440', 'a5440', 'a6440', 'a7440', 'a8440', 'a9440', 'a10440', 'a11440'), +('id441', 'value441', 'name441', 'age441', 'bir441', 'a1441', 'a2441', 'a3441', 'a4441', 'a5441', 'a6441', 'a7441', 'a8441', 'a9441', 'a10441', 'a11441'), +('id442', 'value442', 'name442', 'age442', 'bir442', 'a1442', 'a2442', 'a3442', 'a4442', 'a5442', 'a6442', 'a7442', 'a8442', 'a9442', 'a10442', 'a11442'), +('id443', 'value443', 'name443', 'age443', 'bir443', 'a1443', 'a2443', 'a3443', 'a4443', 'a5443', 'a6443', 'a7443', 'a8443', 'a9443', 'a10443', 'a11443'), +('id444', 'value444', 'name444', 'age444', 'bir444', 'a1444', 'a2444', 'a3444', 'a4444', 'a5444', 'a6444', 'a7444', 'a8444', 'a9444', 'a10444', 'a11444'), +('id445', 'value445', 'name445', 'age445', 'bir445', 'a1445', 'a2445', 'a3445', 'a4445', 'a5445', 'a6445', 'a7445', 'a8445', 'a9445', 'a10445', 'a11445'), +('id446', 'value446', 'name446', 'age446', 'bir446', 'a1446', 'a2446', 'a3446', 'a4446', 'a5446', 'a6446', 'a7446', 'a8446', 'a9446', 'a10446', 'a11446'), +('id447', 'value447', 'name447', 'age447', 'bir447', 'a1447', 'a2447', 'a3447', 'a4447', 'a5447', 'a6447', 'a7447', 'a8447', 'a9447', 'a10447', 'a11447'), +('id448', 'value448', 'name448', 'age448', 'bir448', 'a1448', 'a2448', 'a3448', 'a4448', 'a5448', 'a6448', 'a7448', 'a8448', 'a9448', 'a10448', 'a11448'), +('id449', 'value449', 'name449', 'age449', 'bir449', 'a1449', 'a2449', 'a3449', 'a4449', 'a5449', 'a6449', 'a7449', 'a8449', 'a9449', 'a10449', 'a11449'), +('id450', 'value450', 'name450', 'age450', 'bir450', 'a1450', 'a2450', 'a3450', 'a4450', 'a5450', 'a6450', 'a7450', 'a8450', 'a9450', 'a10450', 'a11450'), +('id451', 'value451', 'name451', 'age451', 'bir451', 'a1451', 'a2451', 'a3451', 'a4451', 'a5451', 'a6451', 'a7451', 'a8451', 'a9451', 'a10451', 'a11451'), +('id452', 'value452', 'name452', 'age452', 'bir452', 'a1452', 'a2452', 'a3452', 'a4452', 'a5452', 'a6452', 'a7452', 'a8452', 'a9452', 'a10452', 'a11452'), +('id453', 'value453', 'name453', 'age453', 'bir453', 'a1453', 'a2453', 'a3453', 'a4453', 'a5453', 'a6453', 'a7453', 'a8453', 'a9453', 'a10453', 'a11453'), +('id454', 'value454', 'name454', 'age454', 'bir454', 'a1454', 'a2454', 'a3454', 'a4454', 'a5454', 'a6454', 'a7454', 'a8454', 'a9454', 'a10454', 'a11454'), +('id455', 'value455', 'name455', 'age455', 'bir455', 'a1455', 'a2455', 'a3455', 'a4455', 'a5455', 'a6455', 'a7455', 'a8455', 'a9455', 'a10455', 'a11455'), +('id456', 'value456', 'name456', 'age456', 'bir456', 'a1456', 'a2456', 'a3456', 'a4456', 'a5456', 'a6456', 'a7456', 'a8456', 'a9456', 'a10456', 'a11456'), +('id457', 'value457', 'name457', 'age457', 'bir457', 'a1457', 'a2457', 'a3457', 'a4457', 'a5457', 'a6457', 'a7457', 'a8457', 'a9457', 'a10457', 'a11457'), +('id458', 'value458', 'name458', 'age458', 'bir458', 'a1458', 'a2458', 'a3458', 'a4458', 'a5458', 'a6458', 'a7458', 'a8458', 'a9458', 'a10458', 'a11458'), +('id459', 'value459', 'name459', 'age459', 'bir459', 'a1459', 'a2459', 'a3459', 'a4459', 'a5459', 'a6459', 'a7459', 'a8459', 'a9459', 'a10459', 'a11459'), +('id460', 'value460', 'name460', 'age460', 'bir460', 'a1460', 'a2460', 'a3460', 'a4460', 'a5460', 'a6460', 'a7460', 'a8460', 'a9460', 'a10460', 'a11460'), +('id461', 'value461', 'name461', 'age461', 'bir461', 'a1461', 'a2461', 'a3461', 'a4461', 'a5461', 'a6461', 'a7461', 'a8461', 'a9461', 'a10461', 'a11461'), +('id462', 'value462', 'name462', 'age462', 'bir462', 'a1462', 'a2462', 'a3462', 'a4462', 'a5462', 'a6462', 'a7462', 'a8462', 'a9462', 'a10462', 'a11462'), +('id463', 'value463', 'name463', 'age463', 'bir463', 'a1463', 'a2463', 'a3463', 'a4463', 'a5463', 'a6463', 'a7463', 'a8463', 'a9463', 'a10463', 'a11463'), +('id464', 'value464', 'name464', 'age464', 'bir464', 'a1464', 'a2464', 'a3464', 'a4464', 'a5464', 'a6464', 'a7464', 'a8464', 'a9464', 'a10464', 'a11464'), +('id465', 'value465', 'name465', 'age465', 'bir465', 'a1465', 'a2465', 'a3465', 'a4465', 'a5465', 'a6465', 'a7465', 'a8465', 'a9465', 'a10465', 'a11465'), +('id466', 'value466', 'name466', 'age466', 'bir466', 'a1466', 'a2466', 'a3466', 'a4466', 'a5466', 'a6466', 'a7466', 'a8466', 'a9466', 'a10466', 'a11466'), +('id467', 'value467', 'name467', 'age467', 'bir467', 'a1467', 'a2467', 'a3467', 'a4467', 'a5467', 'a6467', 'a7467', 'a8467', 'a9467', 'a10467', 'a11467'), +('id468', 'value468', 'name468', 'age468', 'bir468', 'a1468', 'a2468', 'a3468', 'a4468', 'a5468', 'a6468', 'a7468', 'a8468', 'a9468', 'a10468', 'a11468'), +('id469', 'value469', 'name469', 'age469', 'bir469', 'a1469', 'a2469', 'a3469', 'a4469', 'a5469', 'a6469', 'a7469', 'a8469', 'a9469', 'a10469', 'a11469'), +('id470', 'value470', 'name470', 'age470', 'bir470', 'a1470', 'a2470', 'a3470', 'a4470', 'a5470', 'a6470', 'a7470', 'a8470', 'a9470', 'a10470', 'a11470'), +('id471', 'value471', 'name471', 'age471', 'bir471', 'a1471', 'a2471', 'a3471', 'a4471', 'a5471', 'a6471', 'a7471', 'a8471', 'a9471', 'a10471', 'a11471'), +('id472', 'value472', 'name472', 'age472', 'bir472', 'a1472', 'a2472', 'a3472', 'a4472', 'a5472', 'a6472', 'a7472', 'a8472', 'a9472', 'a10472', 'a11472'), +('id473', 'value473', 'name473', 'age473', 'bir473', 'a1473', 'a2473', 'a3473', 'a4473', 'a5473', 'a6473', 'a7473', 'a8473', 'a9473', 'a10473', 'a11473'), +('id474', 'value474', 'name474', 'age474', 'bir474', 'a1474', 'a2474', 'a3474', 'a4474', 'a5474', 'a6474', 'a7474', 'a8474', 'a9474', 'a10474', 'a11474'), +('id475', 'value475', 'name475', 'age475', 'bir475', 'a1475', 'a2475', 'a3475', 'a4475', 'a5475', 'a6475', 'a7475', 'a8475', 'a9475', 'a10475', 'a11475'), +('id476', 'value476', 'name476', 'age476', 'bir476', 'a1476', 'a2476', 'a3476', 'a4476', 'a5476', 'a6476', 'a7476', 'a8476', 'a9476', 'a10476', 'a11476'), +('id477', 'value477', 'name477', 'age477', 'bir477', 'a1477', 'a2477', 'a3477', 'a4477', 'a5477', 'a6477', 'a7477', 'a8477', 'a9477', 'a10477', 'a11477'), +('id478', 'value478', 'name478', 'age478', 'bir478', 'a1478', 'a2478', 'a3478', 'a4478', 'a5478', 'a6478', 'a7478', 'a8478', 'a9478', 'a10478', 'a11478'), +('id479', 'value479', 'name479', 'age479', 'bir479', 'a1479', 'a2479', 'a3479', 'a4479', 'a5479', 'a6479', 'a7479', 'a8479', 'a9479', 'a10479', 'a11479'), +('id480', 'value480', 'name480', 'age480', 'bir480', 'a1480', 'a2480', 'a3480', 'a4480', 'a5480', 'a6480', 'a7480', 'a8480', 'a9480', 'a10480', 'a11480'), +('id481', 'value481', 'name481', 'age481', 'bir481', 'a1481', 'a2481', 'a3481', 'a4481', 'a5481', 'a6481', 'a7481', 'a8481', 'a9481', 'a10481', 'a11481'), +('id482', 'value482', 'name482', 'age482', 'bir482', 'a1482', 'a2482', 'a3482', 'a4482', 'a5482', 'a6482', 'a7482', 'a8482', 'a9482', 'a10482', 'a11482'), +('id483', 'value483', 'name483', 'age483', 'bir483', 'a1483', 'a2483', 'a3483', 'a4483', 'a5483', 'a6483', 'a7483', 'a8483', 'a9483', 'a10483', 'a11483'), +('id484', 'value484', 'name484', 'age484', 'bir484', 'a1484', 'a2484', 'a3484', 'a4484', 'a5484', 'a6484', 'a7484', 'a8484', 'a9484', 'a10484', 'a11484'), +('id485', 'value485', 'name485', 'age485', 'bir485', 'a1485', 'a2485', 'a3485', 'a4485', 'a5485', 'a6485', 'a7485', 'a8485', 'a9485', 'a10485', 'a11485'), +('id486', 'value486', 'name486', 'age486', 'bir486', 'a1486', 'a2486', 'a3486', 'a4486', 'a5486', 'a6486', 'a7486', 'a8486', 'a9486', 'a10486', 'a11486'), +('id487', 'value487', 'name487', 'age487', 'bir487', 'a1487', 'a2487', 'a3487', 'a4487', 'a5487', 'a6487', 'a7487', 'a8487', 'a9487', 'a10487', 'a11487'), +('id488', 'value488', 'name488', 'age488', 'bir488', 'a1488', 'a2488', 'a3488', 'a4488', 'a5488', 'a6488', 'a7488', 'a8488', 'a9488', 'a10488', 'a11488'), +('id489', 'value489', 'name489', 'age489', 'bir489', 'a1489', 'a2489', 'a3489', 'a4489', 'a5489', 'a6489', 'a7489', 'a8489', 'a9489', 'a10489', 'a11489'), +('id490', 'value490', 'name490', 'age490', 'bir490', 'a1490', 'a2490', 'a3490', 'a4490', 'a5490', 'a6490', 'a7490', 'a8490', 'a9490', 'a10490', 'a11490'), +('id491', 'value491', 'name491', 'age491', 'bir491', 'a1491', 'a2491', 'a3491', 'a4491', 'a5491', 'a6491', 'a7491', 'a8491', 'a9491', 'a10491', 'a11491'), +('id492', 'value492', 'name492', 'age492', 'bir492', 'a1492', 'a2492', 'a3492', 'a4492', 'a5492', 'a6492', 'a7492', 'a8492', 'a9492', 'a10492', 'a11492'), +('id493', 'value493', 'name493', 'age493', 'bir493', 'a1493', 'a2493', 'a3493', 'a4493', 'a5493', 'a6493', 'a7493', 'a8493', 'a9493', 'a10493', 'a11493'), +('id494', 'value494', 'name494', 'age494', 'bir494', 'a1494', 'a2494', 'a3494', 'a4494', 'a5494', 'a6494', 'a7494', 'a8494', 'a9494', 'a10494', 'a11494'), +('id495', 'value495', 'name495', 'age495', 'bir495', 'a1495', 'a2495', 'a3495', 'a4495', 'a5495', 'a6495', 'a7495', 'a8495', 'a9495', 'a10495', 'a11495'), +('id496', 'value496', 'name496', 'age496', 'bir496', 'a1496', 'a2496', 'a3496', 'a4496', 'a5496', 'a6496', 'a7496', 'a8496', 'a9496', 'a10496', 'a11496'), +('id497', 'value497', 'name497', 'age497', 'bir497', 'a1497', 'a2497', 'a3497', 'a4497', 'a5497', 'a6497', 'a7497', 'a8497', 'a9497', 'a10497', 'a11497'), +('id498', 'value498', 'name498', 'age498', 'bir498', 'a1498', 'a2498', 'a3498', 'a4498', 'a5498', 'a6498', 'a7498', 'a8498', 'a9498', 'a10498', 'a11498'), +('id499', 'value499', 'name499', 'age499', 'bir499', 'a1499', 'a2499', 'a3499', 'a4499', 'a5499', 'a6499', 'a7499', 'a8499', 'a9499', 'a10499', 'a11499'), +('id500', 'value500', 'name500', 'age500', 'bir500', 'a1500', 'a2500', 'a3500', 'a4500', 'a5500', 'a6500', 'a7500', 'a8500', 'a9500', 'a10500', 'a11500'), +('id501', 'value501', 'name501', 'age501', 'bir501', 'a1501', 'a2501', 'a3501', 'a4501', 'a5501', 'a6501', 'a7501', 'a8501', 'a9501', 'a10501', 'a11501'), +('id502', 'value502', 'name502', 'age502', 'bir502', 'a1502', 'a2502', 'a3502', 'a4502', 'a5502', 'a6502', 'a7502', 'a8502', 'a9502', 'a10502', 'a11502'), +('id503', 'value503', 'name503', 'age503', 'bir503', 'a1503', 'a2503', 'a3503', 'a4503', 'a5503', 'a6503', 'a7503', 'a8503', 'a9503', 'a10503', 'a11503'), +('id504', 'value504', 'name504', 'age504', 'bir504', 'a1504', 'a2504', 'a3504', 'a4504', 'a5504', 'a6504', 'a7504', 'a8504', 'a9504', 'a10504', 'a11504'), +('id505', 'value505', 'name505', 'age505', 'bir505', 'a1505', 'a2505', 'a3505', 'a4505', 'a5505', 'a6505', 'a7505', 'a8505', 'a9505', 'a10505', 'a11505'), +('id506', 'value506', 'name506', 'age506', 'bir506', 'a1506', 'a2506', 'a3506', 'a4506', 'a5506', 'a6506', 'a7506', 'a8506', 'a9506', 'a10506', 'a11506'), +('id507', 'value507', 'name507', 'age507', 'bir507', 'a1507', 'a2507', 'a3507', 'a4507', 'a5507', 'a6507', 'a7507', 'a8507', 'a9507', 'a10507', 'a11507'), +('id508', 'value508', 'name508', 'age508', 'bir508', 'a1508', 'a2508', 'a3508', 'a4508', 'a5508', 'a6508', 'a7508', 'a8508', 'a9508', 'a10508', 'a11508'), +('id509', 'value509', 'name509', 'age509', 'bir509', 'a1509', 'a2509', 'a3509', 'a4509', 'a5509', 'a6509', 'a7509', 'a8509', 'a9509', 'a10509', 'a11509'), +('id510', 'value510', 'name510', 'age510', 'bir510', 'a1510', 'a2510', 'a3510', 'a4510', 'a5510', 'a6510', 'a7510', 'a8510', 'a9510', 'a10510', 'a11510'), +('id511', 'value511', 'name511', 'age511', 'bir511', 'a1511', 'a2511', 'a3511', 'a4511', 'a5511', 'a6511', 'a7511', 'a8511', 'a9511', 'a10511', 'a11511'), +('id512', 'value512', 'name512', 'age512', 'bir512', 'a1512', 'a2512', 'a3512', 'a4512', 'a5512', 'a6512', 'a7512', 'a8512', 'a9512', 'a10512', 'a11512'), +('id513', 'value513', 'name513', 'age513', 'bir513', 'a1513', 'a2513', 'a3513', 'a4513', 'a5513', 'a6513', 'a7513', 'a8513', 'a9513', 'a10513', 'a11513'), +('id514', 'value514', 'name514', 'age514', 'bir514', 'a1514', 'a2514', 'a3514', 'a4514', 'a5514', 'a6514', 'a7514', 'a8514', 'a9514', 'a10514', 'a11514'), +('id515', 'value515', 'name515', 'age515', 'bir515', 'a1515', 'a2515', 'a3515', 'a4515', 'a5515', 'a6515', 'a7515', 'a8515', 'a9515', 'a10515', 'a11515'), +('id516', 'value516', 'name516', 'age516', 'bir516', 'a1516', 'a2516', 'a3516', 'a4516', 'a5516', 'a6516', 'a7516', 'a8516', 'a9516', 'a10516', 'a11516'), +('id517', 'value517', 'name517', 'age517', 'bir517', 'a1517', 'a2517', 'a3517', 'a4517', 'a5517', 'a6517', 'a7517', 'a8517', 'a9517', 'a10517', 'a11517'), +('id518', 'value518', 'name518', 'age518', 'bir518', 'a1518', 'a2518', 'a3518', 'a4518', 'a5518', 'a6518', 'a7518', 'a8518', 'a9518', 'a10518', 'a11518'), +('id519', 'value519', 'name519', 'age519', 'bir519', 'a1519', 'a2519', 'a3519', 'a4519', 'a5519', 'a6519', 'a7519', 'a8519', 'a9519', 'a10519', 'a11519'), +('id520', 'value520', 'name520', 'age520', 'bir520', 'a1520', 'a2520', 'a3520', 'a4520', 'a5520', 'a6520', 'a7520', 'a8520', 'a9520', 'a10520', 'a11520'), +('id521', 'value521', 'name521', 'age521', 'bir521', 'a1521', 'a2521', 'a3521', 'a4521', 'a5521', 'a6521', 'a7521', 'a8521', 'a9521', 'a10521', 'a11521'), +('id522', 'value522', 'name522', 'age522', 'bir522', 'a1522', 'a2522', 'a3522', 'a4522', 'a5522', 'a6522', 'a7522', 'a8522', 'a9522', 'a10522', 'a11522'), +('id523', 'value523', 'name523', 'age523', 'bir523', 'a1523', 'a2523', 'a3523', 'a4523', 'a5523', 'a6523', 'a7523', 'a8523', 'a9523', 'a10523', 'a11523'), +('id524', 'value524', 'name524', 'age524', 'bir524', 'a1524', 'a2524', 'a3524', 'a4524', 'a5524', 'a6524', 'a7524', 'a8524', 'a9524', 'a10524', 'a11524'), +('id525', 'value525', 'name525', 'age525', 'bir525', 'a1525', 'a2525', 'a3525', 'a4525', 'a5525', 'a6525', 'a7525', 'a8525', 'a9525', 'a10525', 'a11525'), +('id526', 'value526', 'name526', 'age526', 'bir526', 'a1526', 'a2526', 'a3526', 'a4526', 'a5526', 'a6526', 'a7526', 'a8526', 'a9526', 'a10526', 'a11526'), +('id527', 'value527', 'name527', 'age527', 'bir527', 'a1527', 'a2527', 'a3527', 'a4527', 'a5527', 'a6527', 'a7527', 'a8527', 'a9527', 'a10527', 'a11527'), +('id528', 'value528', 'name528', 'age528', 'bir528', 'a1528', 'a2528', 'a3528', 'a4528', 'a5528', 'a6528', 'a7528', 'a8528', 'a9528', 'a10528', 'a11528'), +('id529', 'value529', 'name529', 'age529', 'bir529', 'a1529', 'a2529', 'a3529', 'a4529', 'a5529', 'a6529', 'a7529', 'a8529', 'a9529', 'a10529', 'a11529'), +('id530', 'value530', 'name530', 'age530', 'bir530', 'a1530', 'a2530', 'a3530', 'a4530', 'a5530', 'a6530', 'a7530', 'a8530', 'a9530', 'a10530', 'a11530'), +('id531', 'value531', 'name531', 'age531', 'bir531', 'a1531', 'a2531', 'a3531', 'a4531', 'a5531', 'a6531', 'a7531', 'a8531', 'a9531', 'a10531', 'a11531'), +('id532', 'value532', 'name532', 'age532', 'bir532', 'a1532', 'a2532', 'a3532', 'a4532', 'a5532', 'a6532', 'a7532', 'a8532', 'a9532', 'a10532', 'a11532'), +('id533', 'value533', 'name533', 'age533', 'bir533', 'a1533', 'a2533', 'a3533', 'a4533', 'a5533', 'a6533', 'a7533', 'a8533', 'a9533', 'a10533', 'a11533'), +('id534', 'value534', 'name534', 'age534', 'bir534', 'a1534', 'a2534', 'a3534', 'a4534', 'a5534', 'a6534', 'a7534', 'a8534', 'a9534', 'a10534', 'a11534'), +('id535', 'value535', 'name535', 'age535', 'bir535', 'a1535', 'a2535', 'a3535', 'a4535', 'a5535', 'a6535', 'a7535', 'a8535', 'a9535', 'a10535', 'a11535'), +('id536', 'value536', 'name536', 'age536', 'bir536', 'a1536', 'a2536', 'a3536', 'a4536', 'a5536', 'a6536', 'a7536', 'a8536', 'a9536', 'a10536', 'a11536'), +('id537', 'value537', 'name537', 'age537', 'bir537', 'a1537', 'a2537', 'a3537', 'a4537', 'a5537', 'a6537', 'a7537', 'a8537', 'a9537', 'a10537', 'a11537'), +('id538', 'value538', 'name538', 'age538', 'bir538', 'a1538', 'a2538', 'a3538', 'a4538', 'a5538', 'a6538', 'a7538', 'a8538', 'a9538', 'a10538', 'a11538'), +('id539', 'value539', 'name539', 'age539', 'bir539', 'a1539', 'a2539', 'a3539', 'a4539', 'a5539', 'a6539', 'a7539', 'a8539', 'a9539', 'a10539', 'a11539'), +('id540', 'value540', 'name540', 'age540', 'bir540', 'a1540', 'a2540', 'a3540', 'a4540', 'a5540', 'a6540', 'a7540', 'a8540', 'a9540', 'a10540', 'a11540'), +('id541', 'value541', 'name541', 'age541', 'bir541', 'a1541', 'a2541', 'a3541', 'a4541', 'a5541', 'a6541', 'a7541', 'a8541', 'a9541', 'a10541', 'a11541'), +('id542', 'value542', 'name542', 'age542', 'bir542', 'a1542', 'a2542', 'a3542', 'a4542', 'a5542', 'a6542', 'a7542', 'a8542', 'a9542', 'a10542', 'a11542'), +('id543', 'value543', 'name543', 'age543', 'bir543', 'a1543', 'a2543', 'a3543', 'a4543', 'a5543', 'a6543', 'a7543', 'a8543', 'a9543', 'a10543', 'a11543'), +('id544', 'value544', 'name544', 'age544', 'bir544', 'a1544', 'a2544', 'a3544', 'a4544', 'a5544', 'a6544', 'a7544', 'a8544', 'a9544', 'a10544', 'a11544'), +('id545', 'value545', 'name545', 'age545', 'bir545', 'a1545', 'a2545', 'a3545', 'a4545', 'a5545', 'a6545', 'a7545', 'a8545', 'a9545', 'a10545', 'a11545'), +('id546', 'value546', 'name546', 'age546', 'bir546', 'a1546', 'a2546', 'a3546', 'a4546', 'a5546', 'a6546', 'a7546', 'a8546', 'a9546', 'a10546', 'a11546'), +('id547', 'value547', 'name547', 'age547', 'bir547', 'a1547', 'a2547', 'a3547', 'a4547', 'a5547', 'a6547', 'a7547', 'a8547', 'a9547', 'a10547', 'a11547'), +('id548', 'value548', 'name548', 'age548', 'bir548', 'a1548', 'a2548', 'a3548', 'a4548', 'a5548', 'a6548', 'a7548', 'a8548', 'a9548', 'a10548', 'a11548'), +('id549', 'value549', 'name549', 'age549', 'bir549', 'a1549', 'a2549', 'a3549', 'a4549', 'a5549', 'a6549', 'a7549', 'a8549', 'a9549', 'a10549', 'a11549'), +('id550', 'value550', 'name550', 'age550', 'bir550', 'a1550', 'a2550', 'a3550', 'a4550', 'a5550', 'a6550', 'a7550', 'a8550', 'a9550', 'a10550', 'a11550'), +('id551', 'value551', 'name551', 'age551', 'bir551', 'a1551', 'a2551', 'a3551', 'a4551', 'a5551', 'a6551', 'a7551', 'a8551', 'a9551', 'a10551', 'a11551'), +('id552', 'value552', 'name552', 'age552', 'bir552', 'a1552', 'a2552', 'a3552', 'a4552', 'a5552', 'a6552', 'a7552', 'a8552', 'a9552', 'a10552', 'a11552'), +('id553', 'value553', 'name553', 'age553', 'bir553', 'a1553', 'a2553', 'a3553', 'a4553', 'a5553', 'a6553', 'a7553', 'a8553', 'a9553', 'a10553', 'a11553'), +('id554', 'value554', 'name554', 'age554', 'bir554', 'a1554', 'a2554', 'a3554', 'a4554', 'a5554', 'a6554', 'a7554', 'a8554', 'a9554', 'a10554', 'a11554'), +('id555', 'value555', 'name555', 'age555', 'bir555', 'a1555', 'a2555', 'a3555', 'a4555', 'a5555', 'a6555', 'a7555', 'a8555', 'a9555', 'a10555', 'a11555'), +('id556', 'value556', 'name556', 'age556', 'bir556', 'a1556', 'a2556', 'a3556', 'a4556', 'a5556', 'a6556', 'a7556', 'a8556', 'a9556', 'a10556', 'a11556'), +('id557', 'value557', 'name557', 'age557', 'bir557', 'a1557', 'a2557', 'a3557', 'a4557', 'a5557', 'a6557', 'a7557', 'a8557', 'a9557', 'a10557', 'a11557'), +('id558', 'value558', 'name558', 'age558', 'bir558', 'a1558', 'a2558', 'a3558', 'a4558', 'a5558', 'a6558', 'a7558', 'a8558', 'a9558', 'a10558', 'a11558'), +('id559', 'value559', 'name559', 'age559', 'bir559', 'a1559', 'a2559', 'a3559', 'a4559', 'a5559', 'a6559', 'a7559', 'a8559', 'a9559', 'a10559', 'a11559'), +('id560', 'value560', 'name560', 'age560', 'bir560', 'a1560', 'a2560', 'a3560', 'a4560', 'a5560', 'a6560', 'a7560', 'a8560', 'a9560', 'a10560', 'a11560'), +('id561', 'value561', 'name561', 'age561', 'bir561', 'a1561', 'a2561', 'a3561', 'a4561', 'a5561', 'a6561', 'a7561', 'a8561', 'a9561', 'a10561', 'a11561'), +('id562', 'value562', 'name562', 'age562', 'bir562', 'a1562', 'a2562', 'a3562', 'a4562', 'a5562', 'a6562', 'a7562', 'a8562', 'a9562', 'a10562', 'a11562'), +('id563', 'value563', 'name563', 'age563', 'bir563', 'a1563', 'a2563', 'a3563', 'a4563', 'a5563', 'a6563', 'a7563', 'a8563', 'a9563', 'a10563', 'a11563'), +('id564', 'value564', 'name564', 'age564', 'bir564', 'a1564', 'a2564', 'a3564', 'a4564', 'a5564', 'a6564', 'a7564', 'a8564', 'a9564', 'a10564', 'a11564'), +('id565', 'value565', 'name565', 'age565', 'bir565', 'a1565', 'a2565', 'a3565', 'a4565', 'a5565', 'a6565', 'a7565', 'a8565', 'a9565', 'a10565', 'a11565'), +('id566', 'value566', 'name566', 'age566', 'bir566', 'a1566', 'a2566', 'a3566', 'a4566', 'a5566', 'a6566', 'a7566', 'a8566', 'a9566', 'a10566', 'a11566'), +('id567', 'value567', 'name567', 'age567', 'bir567', 'a1567', 'a2567', 'a3567', 'a4567', 'a5567', 'a6567', 'a7567', 'a8567', 'a9567', 'a10567', 'a11567'), +('id568', 'value568', 'name568', 'age568', 'bir568', 'a1568', 'a2568', 'a3568', 'a4568', 'a5568', 'a6568', 'a7568', 'a8568', 'a9568', 'a10568', 'a11568'), +('id569', 'value569', 'name569', 'age569', 'bir569', 'a1569', 'a2569', 'a3569', 'a4569', 'a5569', 'a6569', 'a7569', 'a8569', 'a9569', 'a10569', 'a11569'), +('id570', 'value570', 'name570', 'age570', 'bir570', 'a1570', 'a2570', 'a3570', 'a4570', 'a5570', 'a6570', 'a7570', 'a8570', 'a9570', 'a10570', 'a11570'), +('id571', 'value571', 'name571', 'age571', 'bir571', 'a1571', 'a2571', 'a3571', 'a4571', 'a5571', 'a6571', 'a7571', 'a8571', 'a9571', 'a10571', 'a11571'), +('id572', 'value572', 'name572', 'age572', 'bir572', 'a1572', 'a2572', 'a3572', 'a4572', 'a5572', 'a6572', 'a7572', 'a8572', 'a9572', 'a10572', 'a11572'), +('id573', 'value573', 'name573', 'age573', 'bir573', 'a1573', 'a2573', 'a3573', 'a4573', 'a5573', 'a6573', 'a7573', 'a8573', 'a9573', 'a10573', 'a11573'), +('id574', 'value574', 'name574', 'age574', 'bir574', 'a1574', 'a2574', 'a3574', 'a4574', 'a5574', 'a6574', 'a7574', 'a8574', 'a9574', 'a10574', 'a11574'), +('id575', 'value575', 'name575', 'age575', 'bir575', 'a1575', 'a2575', 'a3575', 'a4575', 'a5575', 'a6575', 'a7575', 'a8575', 'a9575', 'a10575', 'a11575'), +('id576', 'value576', 'name576', 'age576', 'bir576', 'a1576', 'a2576', 'a3576', 'a4576', 'a5576', 'a6576', 'a7576', 'a8576', 'a9576', 'a10576', 'a11576'), +('id577', 'value577', 'name577', 'age577', 'bir577', 'a1577', 'a2577', 'a3577', 'a4577', 'a5577', 'a6577', 'a7577', 'a8577', 'a9577', 'a10577', 'a11577'), +('id578', 'value578', 'name578', 'age578', 'bir578', 'a1578', 'a2578', 'a3578', 'a4578', 'a5578', 'a6578', 'a7578', 'a8578', 'a9578', 'a10578', 'a11578'), +('id579', 'value579', 'name579', 'age579', 'bir579', 'a1579', 'a2579', 'a3579', 'a4579', 'a5579', 'a6579', 'a7579', 'a8579', 'a9579', 'a10579', 'a11579'), +('id580', 'value580', 'name580', 'age580', 'bir580', 'a1580', 'a2580', 'a3580', 'a4580', 'a5580', 'a6580', 'a7580', 'a8580', 'a9580', 'a10580', 'a11580'), +('id581', 'value581', 'name581', 'age581', 'bir581', 'a1581', 'a2581', 'a3581', 'a4581', 'a5581', 'a6581', 'a7581', 'a8581', 'a9581', 'a10581', 'a11581'), +('id582', 'value582', 'name582', 'age582', 'bir582', 'a1582', 'a2582', 'a3582', 'a4582', 'a5582', 'a6582', 'a7582', 'a8582', 'a9582', 'a10582', 'a11582'), +('id583', 'value583', 'name583', 'age583', 'bir583', 'a1583', 'a2583', 'a3583', 'a4583', 'a5583', 'a6583', 'a7583', 'a8583', 'a9583', 'a10583', 'a11583'), +('id584', 'value584', 'name584', 'age584', 'bir584', 'a1584', 'a2584', 'a3584', 'a4584', 'a5584', 'a6584', 'a7584', 'a8584', 'a9584', 'a10584', 'a11584'), +('id585', 'value585', 'name585', 'age585', 'bir585', 'a1585', 'a2585', 'a3585', 'a4585', 'a5585', 'a6585', 'a7585', 'a8585', 'a9585', 'a10585', 'a11585'), +('id586', 'value586', 'name586', 'age586', 'bir586', 'a1586', 'a2586', 'a3586', 'a4586', 'a5586', 'a6586', 'a7586', 'a8586', 'a9586', 'a10586', 'a11586'), +('id587', 'value587', 'name587', 'age587', 'bir587', 'a1587', 'a2587', 'a3587', 'a4587', 'a5587', 'a6587', 'a7587', 'a8587', 'a9587', 'a10587', 'a11587'), +('id588', 'value588', 'name588', 'age588', 'bir588', 'a1588', 'a2588', 'a3588', 'a4588', 'a5588', 'a6588', 'a7588', 'a8588', 'a9588', 'a10588', 'a11588'), +('id589', 'value589', 'name589', 'age589', 'bir589', 'a1589', 'a2589', 'a3589', 'a4589', 'a5589', 'a6589', 'a7589', 'a8589', 'a9589', 'a10589', 'a11589'), +('id590', 'value590', 'name590', 'age590', 'bir590', 'a1590', 'a2590', 'a3590', 'a4590', 'a5590', 'a6590', 'a7590', 'a8590', 'a9590', 'a10590', 'a11590'), +('id591', 'value591', 'name591', 'age591', 'bir591', 'a1591', 'a2591', 'a3591', 'a4591', 'a5591', 'a6591', 'a7591', 'a8591', 'a9591', 'a10591', 'a11591'), +('id592', 'value592', 'name592', 'age592', 'bir592', 'a1592', 'a2592', 'a3592', 'a4592', 'a5592', 'a6592', 'a7592', 'a8592', 'a9592', 'a10592', 'a11592'), +('id593', 'value593', 'name593', 'age593', 'bir593', 'a1593', 'a2593', 'a3593', 'a4593', 'a5593', 'a6593', 'a7593', 'a8593', 'a9593', 'a10593', 'a11593'), +('id594', 'value594', 'name594', 'age594', 'bir594', 'a1594', 'a2594', 'a3594', 'a4594', 'a5594', 'a6594', 'a7594', 'a8594', 'a9594', 'a10594', 'a11594'), +('id595', 'value595', 'name595', 'age595', 'bir595', 'a1595', 'a2595', 'a3595', 'a4595', 'a5595', 'a6595', 'a7595', 'a8595', 'a9595', 'a10595', 'a11595'), +('id596', 'value596', 'name596', 'age596', 'bir596', 'a1596', 'a2596', 'a3596', 'a4596', 'a5596', 'a6596', 'a7596', 'a8596', 'a9596', 'a10596', 'a11596'), +('id597', 'value597', 'name597', 'age597', 'bir597', 'a1597', 'a2597', 'a3597', 'a4597', 'a5597', 'a6597', 'a7597', 'a8597', 'a9597', 'a10597', 'a11597'), +('id598', 'value598', 'name598', 'age598', 'bir598', 'a1598', 'a2598', 'a3598', 'a4598', 'a5598', 'a6598', 'a7598', 'a8598', 'a9598', 'a10598', 'a11598'), +('id599', 'value599', 'name599', 'age599', 'bir599', 'a1599', 'a2599', 'a3599', 'a4599', 'a5599', 'a6599', 'a7599', 'a8599', 'a9599', 'a10599', 'a11599'), +('id600', 'value600', 'name600', 'age600', 'bir600', 'a1600', 'a2600', 'a3600', 'a4600', 'a5600', 'a6600', 'a7600', 'a8600', 'a9600', 'a10600', 'a11600'), +('id601', 'value601', 'name601', 'age601', 'bir601', 'a1601', 'a2601', 'a3601', 'a4601', 'a5601', 'a6601', 'a7601', 'a8601', 'a9601', 'a10601', 'a11601'), +('id602', 'value602', 'name602', 'age602', 'bir602', 'a1602', 'a2602', 'a3602', 'a4602', 'a5602', 'a6602', 'a7602', 'a8602', 'a9602', 'a10602', 'a11602'), +('id603', 'value603', 'name603', 'age603', 'bir603', 'a1603', 'a2603', 'a3603', 'a4603', 'a5603', 'a6603', 'a7603', 'a8603', 'a9603', 'a10603', 'a11603'), +('id604', 'value604', 'name604', 'age604', 'bir604', 'a1604', 'a2604', 'a3604', 'a4604', 'a5604', 'a6604', 'a7604', 'a8604', 'a9604', 'a10604', 'a11604'), +('id605', 'value605', 'name605', 'age605', 'bir605', 'a1605', 'a2605', 'a3605', 'a4605', 'a5605', 'a6605', 'a7605', 'a8605', 'a9605', 'a10605', 'a11605'), +('id606', 'value606', 'name606', 'age606', 'bir606', 'a1606', 'a2606', 'a3606', 'a4606', 'a5606', 'a6606', 'a7606', 'a8606', 'a9606', 'a10606', 'a11606'), +('id607', 'value607', 'name607', 'age607', 'bir607', 'a1607', 'a2607', 'a3607', 'a4607', 'a5607', 'a6607', 'a7607', 'a8607', 'a9607', 'a10607', 'a11607'), +('id608', 'value608', 'name608', 'age608', 'bir608', 'a1608', 'a2608', 'a3608', 'a4608', 'a5608', 'a6608', 'a7608', 'a8608', 'a9608', 'a10608', 'a11608'), +('id609', 'value609', 'name609', 'age609', 'bir609', 'a1609', 'a2609', 'a3609', 'a4609', 'a5609', 'a6609', 'a7609', 'a8609', 'a9609', 'a10609', 'a11609'), +('id610', 'value610', 'name610', 'age610', 'bir610', 'a1610', 'a2610', 'a3610', 'a4610', 'a5610', 'a6610', 'a7610', 'a8610', 'a9610', 'a10610', 'a11610'), +('id611', 'value611', 'name611', 'age611', 'bir611', 'a1611', 'a2611', 'a3611', 'a4611', 'a5611', 'a6611', 'a7611', 'a8611', 'a9611', 'a10611', 'a11611'), +('id612', 'value612', 'name612', 'age612', 'bir612', 'a1612', 'a2612', 'a3612', 'a4612', 'a5612', 'a6612', 'a7612', 'a8612', 'a9612', 'a10612', 'a11612'), +('id613', 'value613', 'name613', 'age613', 'bir613', 'a1613', 'a2613', 'a3613', 'a4613', 'a5613', 'a6613', 'a7613', 'a8613', 'a9613', 'a10613', 'a11613'), +('id614', 'value614', 'name614', 'age614', 'bir614', 'a1614', 'a2614', 'a3614', 'a4614', 'a5614', 'a6614', 'a7614', 'a8614', 'a9614', 'a10614', 'a11614'), +('id615', 'value615', 'name615', 'age615', 'bir615', 'a1615', 'a2615', 'a3615', 'a4615', 'a5615', 'a6615', 'a7615', 'a8615', 'a9615', 'a10615', 'a11615'), +('id616', 'value616', 'name616', 'age616', 'bir616', 'a1616', 'a2616', 'a3616', 'a4616', 'a5616', 'a6616', 'a7616', 'a8616', 'a9616', 'a10616', 'a11616'), +('id617', 'value617', 'name617', 'age617', 'bir617', 'a1617', 'a2617', 'a3617', 'a4617', 'a5617', 'a6617', 'a7617', 'a8617', 'a9617', 'a10617', 'a11617'), +('id618', 'value618', 'name618', 'age618', 'bir618', 'a1618', 'a2618', 'a3618', 'a4618', 'a5618', 'a6618', 'a7618', 'a8618', 'a9618', 'a10618', 'a11618'), +('id619', 'value619', 'name619', 'age619', 'bir619', 'a1619', 'a2619', 'a3619', 'a4619', 'a5619', 'a6619', 'a7619', 'a8619', 'a9619', 'a10619', 'a11619'), +('id620', 'value620', 'name620', 'age620', 'bir620', 'a1620', 'a2620', 'a3620', 'a4620', 'a5620', 'a6620', 'a7620', 'a8620', 'a9620', 'a10620', 'a11620'), +('id621', 'value621', 'name621', 'age621', 'bir621', 'a1621', 'a2621', 'a3621', 'a4621', 'a5621', 'a6621', 'a7621', 'a8621', 'a9621', 'a10621', 'a11621'), +('id622', 'value622', 'name622', 'age622', 'bir622', 'a1622', 'a2622', 'a3622', 'a4622', 'a5622', 'a6622', 'a7622', 'a8622', 'a9622', 'a10622', 'a11622'), +('id623', 'value623', 'name623', 'age623', 'bir623', 'a1623', 'a2623', 'a3623', 'a4623', 'a5623', 'a6623', 'a7623', 'a8623', 'a9623', 'a10623', 'a11623'), +('id624', 'value624', 'name624', 'age624', 'bir624', 'a1624', 'a2624', 'a3624', 'a4624', 'a5624', 'a6624', 'a7624', 'a8624', 'a9624', 'a10624', 'a11624'), +('id625', 'value625', 'name625', 'age625', 'bir625', 'a1625', 'a2625', 'a3625', 'a4625', 'a5625', 'a6625', 'a7625', 'a8625', 'a9625', 'a10625', 'a11625'), +('id626', 'value626', 'name626', 'age626', 'bir626', 'a1626', 'a2626', 'a3626', 'a4626', 'a5626', 'a6626', 'a7626', 'a8626', 'a9626', 'a10626', 'a11626'), +('id627', 'value627', 'name627', 'age627', 'bir627', 'a1627', 'a2627', 'a3627', 'a4627', 'a5627', 'a6627', 'a7627', 'a8627', 'a9627', 'a10627', 'a11627'), +('id628', 'value628', 'name628', 'age628', 'bir628', 'a1628', 'a2628', 'a3628', 'a4628', 'a5628', 'a6628', 'a7628', 'a8628', 'a9628', 'a10628', 'a11628'), +('id629', 'value629', 'name629', 'age629', 'bir629', 'a1629', 'a2629', 'a3629', 'a4629', 'a5629', 'a6629', 'a7629', 'a8629', 'a9629', 'a10629', 'a11629'), +('id630', 'value630', 'name630', 'age630', 'bir630', 'a1630', 'a2630', 'a3630', 'a4630', 'a5630', 'a6630', 'a7630', 'a8630', 'a9630', 'a10630', 'a11630'), +('id631', 'value631', 'name631', 'age631', 'bir631', 'a1631', 'a2631', 'a3631', 'a4631', 'a5631', 'a6631', 'a7631', 'a8631', 'a9631', 'a10631', 'a11631'), +('id632', 'value632', 'name632', 'age632', 'bir632', 'a1632', 'a2632', 'a3632', 'a4632', 'a5632', 'a6632', 'a7632', 'a8632', 'a9632', 'a10632', 'a11632'), +('id633', 'value633', 'name633', 'age633', 'bir633', 'a1633', 'a2633', 'a3633', 'a4633', 'a5633', 'a6633', 'a7633', 'a8633', 'a9633', 'a10633', 'a11633'), +('id634', 'value634', 'name634', 'age634', 'bir634', 'a1634', 'a2634', 'a3634', 'a4634', 'a5634', 'a6634', 'a7634', 'a8634', 'a9634', 'a10634', 'a11634'), +('id635', 'value635', 'name635', 'age635', 'bir635', 'a1635', 'a2635', 'a3635', 'a4635', 'a5635', 'a6635', 'a7635', 'a8635', 'a9635', 'a10635', 'a11635'), +('id636', 'value636', 'name636', 'age636', 'bir636', 'a1636', 'a2636', 'a3636', 'a4636', 'a5636', 'a6636', 'a7636', 'a8636', 'a9636', 'a10636', 'a11636'), +('id637', 'value637', 'name637', 'age637', 'bir637', 'a1637', 'a2637', 'a3637', 'a4637', 'a5637', 'a6637', 'a7637', 'a8637', 'a9637', 'a10637', 'a11637'), +('id638', 'value638', 'name638', 'age638', 'bir638', 'a1638', 'a2638', 'a3638', 'a4638', 'a5638', 'a6638', 'a7638', 'a8638', 'a9638', 'a10638', 'a11638'), +('id639', 'value639', 'name639', 'age639', 'bir639', 'a1639', 'a2639', 'a3639', 'a4639', 'a5639', 'a6639', 'a7639', 'a8639', 'a9639', 'a10639', 'a11639'), +('id640', 'value640', 'name640', 'age640', 'bir640', 'a1640', 'a2640', 'a3640', 'a4640', 'a5640', 'a6640', 'a7640', 'a8640', 'a9640', 'a10640', 'a11640'), +('id641', 'value641', 'name641', 'age641', 'bir641', 'a1641', 'a2641', 'a3641', 'a4641', 'a5641', 'a6641', 'a7641', 'a8641', 'a9641', 'a10641', 'a11641'), +('id642', 'value642', 'name642', 'age642', 'bir642', 'a1642', 'a2642', 'a3642', 'a4642', 'a5642', 'a6642', 'a7642', 'a8642', 'a9642', 'a10642', 'a11642'), +('id643', 'value643', 'name643', 'age643', 'bir643', 'a1643', 'a2643', 'a3643', 'a4643', 'a5643', 'a6643', 'a7643', 'a8643', 'a9643', 'a10643', 'a11643'), +('id644', 'value644', 'name644', 'age644', 'bir644', 'a1644', 'a2644', 'a3644', 'a4644', 'a5644', 'a6644', 'a7644', 'a8644', 'a9644', 'a10644', 'a11644'), +('id645', 'value645', 'name645', 'age645', 'bir645', 'a1645', 'a2645', 'a3645', 'a4645', 'a5645', 'a6645', 'a7645', 'a8645', 'a9645', 'a10645', 'a11645'), +('id646', 'value646', 'name646', 'age646', 'bir646', 'a1646', 'a2646', 'a3646', 'a4646', 'a5646', 'a6646', 'a7646', 'a8646', 'a9646', 'a10646', 'a11646'), +('id647', 'value647', 'name647', 'age647', 'bir647', 'a1647', 'a2647', 'a3647', 'a4647', 'a5647', 'a6647', 'a7647', 'a8647', 'a9647', 'a10647', 'a11647'), +('id648', 'value648', 'name648', 'age648', 'bir648', 'a1648', 'a2648', 'a3648', 'a4648', 'a5648', 'a6648', 'a7648', 'a8648', 'a9648', 'a10648', 'a11648'), +('id649', 'value649', 'name649', 'age649', 'bir649', 'a1649', 'a2649', 'a3649', 'a4649', 'a5649', 'a6649', 'a7649', 'a8649', 'a9649', 'a10649', 'a11649'), +('id650', 'value650', 'name650', 'age650', 'bir650', 'a1650', 'a2650', 'a3650', 'a4650', 'a5650', 'a6650', 'a7650', 'a8650', 'a9650', 'a10650', 'a11650'), +('id651', 'value651', 'name651', 'age651', 'bir651', 'a1651', 'a2651', 'a3651', 'a4651', 'a5651', 'a6651', 'a7651', 'a8651', 'a9651', 'a10651', 'a11651'), +('id652', 'value652', 'name652', 'age652', 'bir652', 'a1652', 'a2652', 'a3652', 'a4652', 'a5652', 'a6652', 'a7652', 'a8652', 'a9652', 'a10652', 'a11652'), +('id653', 'value653', 'name653', 'age653', 'bir653', 'a1653', 'a2653', 'a3653', 'a4653', 'a5653', 'a6653', 'a7653', 'a8653', 'a9653', 'a10653', 'a11653'), +('id654', 'value654', 'name654', 'age654', 'bir654', 'a1654', 'a2654', 'a3654', 'a4654', 'a5654', 'a6654', 'a7654', 'a8654', 'a9654', 'a10654', 'a11654'), +('id655', 'value655', 'name655', 'age655', 'bir655', 'a1655', 'a2655', 'a3655', 'a4655', 'a5655', 'a6655', 'a7655', 'a8655', 'a9655', 'a10655', 'a11655'), +('id656', 'value656', 'name656', 'age656', 'bir656', 'a1656', 'a2656', 'a3656', 'a4656', 'a5656', 'a6656', 'a7656', 'a8656', 'a9656', 'a10656', 'a11656'), +('id657', 'value657', 'name657', 'age657', 'bir657', 'a1657', 'a2657', 'a3657', 'a4657', 'a5657', 'a6657', 'a7657', 'a8657', 'a9657', 'a10657', 'a11657'), +('id658', 'value658', 'name658', 'age658', 'bir658', 'a1658', 'a2658', 'a3658', 'a4658', 'a5658', 'a6658', 'a7658', 'a8658', 'a9658', 'a10658', 'a11658'), +('id659', 'value659', 'name659', 'age659', 'bir659', 'a1659', 'a2659', 'a3659', 'a4659', 'a5659', 'a6659', 'a7659', 'a8659', 'a9659', 'a10659', 'a11659'), +('id660', 'value660', 'name660', 'age660', 'bir660', 'a1660', 'a2660', 'a3660', 'a4660', 'a5660', 'a6660', 'a7660', 'a8660', 'a9660', 'a10660', 'a11660'), +('id661', 'value661', 'name661', 'age661', 'bir661', 'a1661', 'a2661', 'a3661', 'a4661', 'a5661', 'a6661', 'a7661', 'a8661', 'a9661', 'a10661', 'a11661'), +('id662', 'value662', 'name662', 'age662', 'bir662', 'a1662', 'a2662', 'a3662', 'a4662', 'a5662', 'a6662', 'a7662', 'a8662', 'a9662', 'a10662', 'a11662'), +('id663', 'value663', 'name663', 'age663', 'bir663', 'a1663', 'a2663', 'a3663', 'a4663', 'a5663', 'a6663', 'a7663', 'a8663', 'a9663', 'a10663', 'a11663'), +('id664', 'value664', 'name664', 'age664', 'bir664', 'a1664', 'a2664', 'a3664', 'a4664', 'a5664', 'a6664', 'a7664', 'a8664', 'a9664', 'a10664', 'a11664'), +('id665', 'value665', 'name665', 'age665', 'bir665', 'a1665', 'a2665', 'a3665', 'a4665', 'a5665', 'a6665', 'a7665', 'a8665', 'a9665', 'a10665', 'a11665'), +('id666', 'value666', 'name666', 'age666', 'bir666', 'a1666', 'a2666', 'a3666', 'a4666', 'a5666', 'a6666', 'a7666', 'a8666', 'a9666', 'a10666', 'a11666'), +('id667', 'value667', 'name667', 'age667', 'bir667', 'a1667', 'a2667', 'a3667', 'a4667', 'a5667', 'a6667', 'a7667', 'a8667', 'a9667', 'a10667', 'a11667'), +('id668', 'value668', 'name668', 'age668', 'bir668', 'a1668', 'a2668', 'a3668', 'a4668', 'a5668', 'a6668', 'a7668', 'a8668', 'a9668', 'a10668', 'a11668'), +('id669', 'value669', 'name669', 'age669', 'bir669', 'a1669', 'a2669', 'a3669', 'a4669', 'a5669', 'a6669', 'a7669', 'a8669', 'a9669', 'a10669', 'a11669'), +('id670', 'value670', 'name670', 'age670', 'bir670', 'a1670', 'a2670', 'a3670', 'a4670', 'a5670', 'a6670', 'a7670', 'a8670', 'a9670', 'a10670', 'a11670'), +('id671', 'value671', 'name671', 'age671', 'bir671', 'a1671', 'a2671', 'a3671', 'a4671', 'a5671', 'a6671', 'a7671', 'a8671', 'a9671', 'a10671', 'a11671'), +('id672', 'value672', 'name672', 'age672', 'bir672', 'a1672', 'a2672', 'a3672', 'a4672', 'a5672', 'a6672', 'a7672', 'a8672', 'a9672', 'a10672', 'a11672'), +('id673', 'value673', 'name673', 'age673', 'bir673', 'a1673', 'a2673', 'a3673', 'a4673', 'a5673', 'a6673', 'a7673', 'a8673', 'a9673', 'a10673', 'a11673'), +('id674', 'value674', 'name674', 'age674', 'bir674', 'a1674', 'a2674', 'a3674', 'a4674', 'a5674', 'a6674', 'a7674', 'a8674', 'a9674', 'a10674', 'a11674'), +('id675', 'value675', 'name675', 'age675', 'bir675', 'a1675', 'a2675', 'a3675', 'a4675', 'a5675', 'a6675', 'a7675', 'a8675', 'a9675', 'a10675', 'a11675'), +('id676', 'value676', 'name676', 'age676', 'bir676', 'a1676', 'a2676', 'a3676', 'a4676', 'a5676', 'a6676', 'a7676', 'a8676', 'a9676', 'a10676', 'a11676'), +('id677', 'value677', 'name677', 'age677', 'bir677', 'a1677', 'a2677', 'a3677', 'a4677', 'a5677', 'a6677', 'a7677', 'a8677', 'a9677', 'a10677', 'a11677'), +('id678', 'value678', 'name678', 'age678', 'bir678', 'a1678', 'a2678', 'a3678', 'a4678', 'a5678', 'a6678', 'a7678', 'a8678', 'a9678', 'a10678', 'a11678'), +('id679', 'value679', 'name679', 'age679', 'bir679', 'a1679', 'a2679', 'a3679', 'a4679', 'a5679', 'a6679', 'a7679', 'a8679', 'a9679', 'a10679', 'a11679'), +('id680', 'value680', 'name680', 'age680', 'bir680', 'a1680', 'a2680', 'a3680', 'a4680', 'a5680', 'a6680', 'a7680', 'a8680', 'a9680', 'a10680', 'a11680'), +('id681', 'value681', 'name681', 'age681', 'bir681', 'a1681', 'a2681', 'a3681', 'a4681', 'a5681', 'a6681', 'a7681', 'a8681', 'a9681', 'a10681', 'a11681'), +('id682', 'value682', 'name682', 'age682', 'bir682', 'a1682', 'a2682', 'a3682', 'a4682', 'a5682', 'a6682', 'a7682', 'a8682', 'a9682', 'a10682', 'a11682'), +('id683', 'value683', 'name683', 'age683', 'bir683', 'a1683', 'a2683', 'a3683', 'a4683', 'a5683', 'a6683', 'a7683', 'a8683', 'a9683', 'a10683', 'a11683'), +('id684', 'value684', 'name684', 'age684', 'bir684', 'a1684', 'a2684', 'a3684', 'a4684', 'a5684', 'a6684', 'a7684', 'a8684', 'a9684', 'a10684', 'a11684'), +('id685', 'value685', 'name685', 'age685', 'bir685', 'a1685', 'a2685', 'a3685', 'a4685', 'a5685', 'a6685', 'a7685', 'a8685', 'a9685', 'a10685', 'a11685'), +('id686', 'value686', 'name686', 'age686', 'bir686', 'a1686', 'a2686', 'a3686', 'a4686', 'a5686', 'a6686', 'a7686', 'a8686', 'a9686', 'a10686', 'a11686'), +('id687', 'value687', 'name687', 'age687', 'bir687', 'a1687', 'a2687', 'a3687', 'a4687', 'a5687', 'a6687', 'a7687', 'a8687', 'a9687', 'a10687', 'a11687'), +('id688', 'value688', 'name688', 'age688', 'bir688', 'a1688', 'a2688', 'a3688', 'a4688', 'a5688', 'a6688', 'a7688', 'a8688', 'a9688', 'a10688', 'a11688'), +('id689', 'value689', 'name689', 'age689', 'bir689', 'a1689', 'a2689', 'a3689', 'a4689', 'a5689', 'a6689', 'a7689', 'a8689', 'a9689', 'a10689', 'a11689'), +('id690', 'value690', 'name690', 'age690', 'bir690', 'a1690', 'a2690', 'a3690', 'a4690', 'a5690', 'a6690', 'a7690', 'a8690', 'a9690', 'a10690', 'a11690'), +('id691', 'value691', 'name691', 'age691', 'bir691', 'a1691', 'a2691', 'a3691', 'a4691', 'a5691', 'a6691', 'a7691', 'a8691', 'a9691', 'a10691', 'a11691'), +('id692', 'value692', 'name692', 'age692', 'bir692', 'a1692', 'a2692', 'a3692', 'a4692', 'a5692', 'a6692', 'a7692', 'a8692', 'a9692', 'a10692', 'a11692'), +('id693', 'value693', 'name693', 'age693', 'bir693', 'a1693', 'a2693', 'a3693', 'a4693', 'a5693', 'a6693', 'a7693', 'a8693', 'a9693', 'a10693', 'a11693'), +('id694', 'value694', 'name694', 'age694', 'bir694', 'a1694', 'a2694', 'a3694', 'a4694', 'a5694', 'a6694', 'a7694', 'a8694', 'a9694', 'a10694', 'a11694'), +('id695', 'value695', 'name695', 'age695', 'bir695', 'a1695', 'a2695', 'a3695', 'a4695', 'a5695', 'a6695', 'a7695', 'a8695', 'a9695', 'a10695', 'a11695'), +('id696', 'value696', 'name696', 'age696', 'bir696', 'a1696', 'a2696', 'a3696', 'a4696', 'a5696', 'a6696', 'a7696', 'a8696', 'a9696', 'a10696', 'a11696'), +('id697', 'value697', 'name697', 'age697', 'bir697', 'a1697', 'a2697', 'a3697', 'a4697', 'a5697', 'a6697', 'a7697', 'a8697', 'a9697', 'a10697', 'a11697'), +('id698', 'value698', 'name698', 'age698', 'bir698', 'a1698', 'a2698', 'a3698', 'a4698', 'a5698', 'a6698', 'a7698', 'a8698', 'a9698', 'a10698', 'a11698'), +('id699', 'value699', 'name699', 'age699', 'bir699', 'a1699', 'a2699', 'a3699', 'a4699', 'a5699', 'a6699', 'a7699', 'a8699', 'a9699', 'a10699', 'a11699'), +('id700', 'value700', 'name700', 'age700', 'bir700', 'a1700', 'a2700', 'a3700', 'a4700', 'a5700', 'a6700', 'a7700', 'a8700', 'a9700', 'a10700', 'a11700'), +('id701', 'value701', 'name701', 'age701', 'bir701', 'a1701', 'a2701', 'a3701', 'a4701', 'a5701', 'a6701', 'a7701', 'a8701', 'a9701', 'a10701', 'a11701'), +('id702', 'value702', 'name702', 'age702', 'bir702', 'a1702', 'a2702', 'a3702', 'a4702', 'a5702', 'a6702', 'a7702', 'a8702', 'a9702', 'a10702', 'a11702'), +('id703', 'value703', 'name703', 'age703', 'bir703', 'a1703', 'a2703', 'a3703', 'a4703', 'a5703', 'a6703', 'a7703', 'a8703', 'a9703', 'a10703', 'a11703'), +('id704', 'value704', 'name704', 'age704', 'bir704', 'a1704', 'a2704', 'a3704', 'a4704', 'a5704', 'a6704', 'a7704', 'a8704', 'a9704', 'a10704', 'a11704'), +('id705', 'value705', 'name705', 'age705', 'bir705', 'a1705', 'a2705', 'a3705', 'a4705', 'a5705', 'a6705', 'a7705', 'a8705', 'a9705', 'a10705', 'a11705'), +('id706', 'value706', 'name706', 'age706', 'bir706', 'a1706', 'a2706', 'a3706', 'a4706', 'a5706', 'a6706', 'a7706', 'a8706', 'a9706', 'a10706', 'a11706'), +('id707', 'value707', 'name707', 'age707', 'bir707', 'a1707', 'a2707', 'a3707', 'a4707', 'a5707', 'a6707', 'a7707', 'a8707', 'a9707', 'a10707', 'a11707'), +('id708', 'value708', 'name708', 'age708', 'bir708', 'a1708', 'a2708', 'a3708', 'a4708', 'a5708', 'a6708', 'a7708', 'a8708', 'a9708', 'a10708', 'a11708'), +('id709', 'value709', 'name709', 'age709', 'bir709', 'a1709', 'a2709', 'a3709', 'a4709', 'a5709', 'a6709', 'a7709', 'a8709', 'a9709', 'a10709', 'a11709'), +('id710', 'value710', 'name710', 'age710', 'bir710', 'a1710', 'a2710', 'a3710', 'a4710', 'a5710', 'a6710', 'a7710', 'a8710', 'a9710', 'a10710', 'a11710'), +('id711', 'value711', 'name711', 'age711', 'bir711', 'a1711', 'a2711', 'a3711', 'a4711', 'a5711', 'a6711', 'a7711', 'a8711', 'a9711', 'a10711', 'a11711'), +('id712', 'value712', 'name712', 'age712', 'bir712', 'a1712', 'a2712', 'a3712', 'a4712', 'a5712', 'a6712', 'a7712', 'a8712', 'a9712', 'a10712', 'a11712'), +('id713', 'value713', 'name713', 'age713', 'bir713', 'a1713', 'a2713', 'a3713', 'a4713', 'a5713', 'a6713', 'a7713', 'a8713', 'a9713', 'a10713', 'a11713'), +('id714', 'value714', 'name714', 'age714', 'bir714', 'a1714', 'a2714', 'a3714', 'a4714', 'a5714', 'a6714', 'a7714', 'a8714', 'a9714', 'a10714', 'a11714'), +('id715', 'value715', 'name715', 'age715', 'bir715', 'a1715', 'a2715', 'a3715', 'a4715', 'a5715', 'a6715', 'a7715', 'a8715', 'a9715', 'a10715', 'a11715'), +('id716', 'value716', 'name716', 'age716', 'bir716', 'a1716', 'a2716', 'a3716', 'a4716', 'a5716', 'a6716', 'a7716', 'a8716', 'a9716', 'a10716', 'a11716'), +('id717', 'value717', 'name717', 'age717', 'bir717', 'a1717', 'a2717', 'a3717', 'a4717', 'a5717', 'a6717', 'a7717', 'a8717', 'a9717', 'a10717', 'a11717'), +('id718', 'value718', 'name718', 'age718', 'bir718', 'a1718', 'a2718', 'a3718', 'a4718', 'a5718', 'a6718', 'a7718', 'a8718', 'a9718', 'a10718', 'a11718'), +('id719', 'value719', 'name719', 'age719', 'bir719', 'a1719', 'a2719', 'a3719', 'a4719', 'a5719', 'a6719', 'a7719', 'a8719', 'a9719', 'a10719', 'a11719'), +('id720', 'value720', 'name720', 'age720', 'bir720', 'a1720', 'a2720', 'a3720', 'a4720', 'a5720', 'a6720', 'a7720', 'a8720', 'a9720', 'a10720', 'a11720'), +('id721', 'value721', 'name721', 'age721', 'bir721', 'a1721', 'a2721', 'a3721', 'a4721', 'a5721', 'a6721', 'a7721', 'a8721', 'a9721', 'a10721', 'a11721'), +('id722', 'value722', 'name722', 'age722', 'bir722', 'a1722', 'a2722', 'a3722', 'a4722', 'a5722', 'a6722', 'a7722', 'a8722', 'a9722', 'a10722', 'a11722'), +('id723', 'value723', 'name723', 'age723', 'bir723', 'a1723', 'a2723', 'a3723', 'a4723', 'a5723', 'a6723', 'a7723', 'a8723', 'a9723', 'a10723', 'a11723'), +('id724', 'value724', 'name724', 'age724', 'bir724', 'a1724', 'a2724', 'a3724', 'a4724', 'a5724', 'a6724', 'a7724', 'a8724', 'a9724', 'a10724', 'a11724'), +('id725', 'value725', 'name725', 'age725', 'bir725', 'a1725', 'a2725', 'a3725', 'a4725', 'a5725', 'a6725', 'a7725', 'a8725', 'a9725', 'a10725', 'a11725'), +('id726', 'value726', 'name726', 'age726', 'bir726', 'a1726', 'a2726', 'a3726', 'a4726', 'a5726', 'a6726', 'a7726', 'a8726', 'a9726', 'a10726', 'a11726'), +('id727', 'value727', 'name727', 'age727', 'bir727', 'a1727', 'a2727', 'a3727', 'a4727', 'a5727', 'a6727', 'a7727', 'a8727', 'a9727', 'a10727', 'a11727'), +('id728', 'value728', 'name728', 'age728', 'bir728', 'a1728', 'a2728', 'a3728', 'a4728', 'a5728', 'a6728', 'a7728', 'a8728', 'a9728', 'a10728', 'a11728'), +('id729', 'value729', 'name729', 'age729', 'bir729', 'a1729', 'a2729', 'a3729', 'a4729', 'a5729', 'a6729', 'a7729', 'a8729', 'a9729', 'a10729', 'a11729'), +('id730', 'value730', 'name730', 'age730', 'bir730', 'a1730', 'a2730', 'a3730', 'a4730', 'a5730', 'a6730', 'a7730', 'a8730', 'a9730', 'a10730', 'a11730'), +('id731', 'value731', 'name731', 'age731', 'bir731', 'a1731', 'a2731', 'a3731', 'a4731', 'a5731', 'a6731', 'a7731', 'a8731', 'a9731', 'a10731', 'a11731'), +('id732', 'value732', 'name732', 'age732', 'bir732', 'a1732', 'a2732', 'a3732', 'a4732', 'a5732', 'a6732', 'a7732', 'a8732', 'a9732', 'a10732', 'a11732'), +('id733', 'value733', 'name733', 'age733', 'bir733', 'a1733', 'a2733', 'a3733', 'a4733', 'a5733', 'a6733', 'a7733', 'a8733', 'a9733', 'a10733', 'a11733'), +('id734', 'value734', 'name734', 'age734', 'bir734', 'a1734', 'a2734', 'a3734', 'a4734', 'a5734', 'a6734', 'a7734', 'a8734', 'a9734', 'a10734', 'a11734'), +('id735', 'value735', 'name735', 'age735', 'bir735', 'a1735', 'a2735', 'a3735', 'a4735', 'a5735', 'a6735', 'a7735', 'a8735', 'a9735', 'a10735', 'a11735'), +('id736', 'value736', 'name736', 'age736', 'bir736', 'a1736', 'a2736', 'a3736', 'a4736', 'a5736', 'a6736', 'a7736', 'a8736', 'a9736', 'a10736', 'a11736'), +('id737', 'value737', 'name737', 'age737', 'bir737', 'a1737', 'a2737', 'a3737', 'a4737', 'a5737', 'a6737', 'a7737', 'a8737', 'a9737', 'a10737', 'a11737'), +('id738', 'value738', 'name738', 'age738', 'bir738', 'a1738', 'a2738', 'a3738', 'a4738', 'a5738', 'a6738', 'a7738', 'a8738', 'a9738', 'a10738', 'a11738'), +('id739', 'value739', 'name739', 'age739', 'bir739', 'a1739', 'a2739', 'a3739', 'a4739', 'a5739', 'a6739', 'a7739', 'a8739', 'a9739', 'a10739', 'a11739'), +('id740', 'value740', 'name740', 'age740', 'bir740', 'a1740', 'a2740', 'a3740', 'a4740', 'a5740', 'a6740', 'a7740', 'a8740', 'a9740', 'a10740', 'a11740'), +('id741', 'value741', 'name741', 'age741', 'bir741', 'a1741', 'a2741', 'a3741', 'a4741', 'a5741', 'a6741', 'a7741', 'a8741', 'a9741', 'a10741', 'a11741'), +('id742', 'value742', 'name742', 'age742', 'bir742', 'a1742', 'a2742', 'a3742', 'a4742', 'a5742', 'a6742', 'a7742', 'a8742', 'a9742', 'a10742', 'a11742'), +('id743', 'value743', 'name743', 'age743', 'bir743', 'a1743', 'a2743', 'a3743', 'a4743', 'a5743', 'a6743', 'a7743', 'a8743', 'a9743', 'a10743', 'a11743'), +('id744', 'value744', 'name744', 'age744', 'bir744', 'a1744', 'a2744', 'a3744', 'a4744', 'a5744', 'a6744', 'a7744', 'a8744', 'a9744', 'a10744', 'a11744'), +('id745', 'value745', 'name745', 'age745', 'bir745', 'a1745', 'a2745', 'a3745', 'a4745', 'a5745', 'a6745', 'a7745', 'a8745', 'a9745', 'a10745', 'a11745'), +('id746', 'value746', 'name746', 'age746', 'bir746', 'a1746', 'a2746', 'a3746', 'a4746', 'a5746', 'a6746', 'a7746', 'a8746', 'a9746', 'a10746', 'a11746'), +('id747', 'value747', 'name747', 'age747', 'bir747', 'a1747', 'a2747', 'a3747', 'a4747', 'a5747', 'a6747', 'a7747', 'a8747', 'a9747', 'a10747', 'a11747'), +('id748', 'value748', 'name748', 'age748', 'bir748', 'a1748', 'a2748', 'a3748', 'a4748', 'a5748', 'a6748', 'a7748', 'a8748', 'a9748', 'a10748', 'a11748'), +('id749', 'value749', 'name749', 'age749', 'bir749', 'a1749', 'a2749', 'a3749', 'a4749', 'a5749', 'a6749', 'a7749', 'a8749', 'a9749', 'a10749', 'a11749'), +('id750', 'value750', 'name750', 'age750', 'bir750', 'a1750', 'a2750', 'a3750', 'a4750', 'a5750', 'a6750', 'a7750', 'a8750', 'a9750', 'a10750', 'a11750'), +('id751', 'value751', 'name751', 'age751', 'bir751', 'a1751', 'a2751', 'a3751', 'a4751', 'a5751', 'a6751', 'a7751', 'a8751', 'a9751', 'a10751', 'a11751'), +('id752', 'value752', 'name752', 'age752', 'bir752', 'a1752', 'a2752', 'a3752', 'a4752', 'a5752', 'a6752', 'a7752', 'a8752', 'a9752', 'a10752', 'a11752'), +('id753', 'value753', 'name753', 'age753', 'bir753', 'a1753', 'a2753', 'a3753', 'a4753', 'a5753', 'a6753', 'a7753', 'a8753', 'a9753', 'a10753', 'a11753'), +('id754', 'value754', 'name754', 'age754', 'bir754', 'a1754', 'a2754', 'a3754', 'a4754', 'a5754', 'a6754', 'a7754', 'a8754', 'a9754', 'a10754', 'a11754'), +('id755', 'value755', 'name755', 'age755', 'bir755', 'a1755', 'a2755', 'a3755', 'a4755', 'a5755', 'a6755', 'a7755', 'a8755', 'a9755', 'a10755', 'a11755'), +('id756', 'value756', 'name756', 'age756', 'bir756', 'a1756', 'a2756', 'a3756', 'a4756', 'a5756', 'a6756', 'a7756', 'a8756', 'a9756', 'a10756', 'a11756'), +('id757', 'value757', 'name757', 'age757', 'bir757', 'a1757', 'a2757', 'a3757', 'a4757', 'a5757', 'a6757', 'a7757', 'a8757', 'a9757', 'a10757', 'a11757'), +('id758', 'value758', 'name758', 'age758', 'bir758', 'a1758', 'a2758', 'a3758', 'a4758', 'a5758', 'a6758', 'a7758', 'a8758', 'a9758', 'a10758', 'a11758'), +('id759', 'value759', 'name759', 'age759', 'bir759', 'a1759', 'a2759', 'a3759', 'a4759', 'a5759', 'a6759', 'a7759', 'a8759', 'a9759', 'a10759', 'a11759'), +('id760', 'value760', 'name760', 'age760', 'bir760', 'a1760', 'a2760', 'a3760', 'a4760', 'a5760', 'a6760', 'a7760', 'a8760', 'a9760', 'a10760', 'a11760'), +('id761', 'value761', 'name761', 'age761', 'bir761', 'a1761', 'a2761', 'a3761', 'a4761', 'a5761', 'a6761', 'a7761', 'a8761', 'a9761', 'a10761', 'a11761'), +('id762', 'value762', 'name762', 'age762', 'bir762', 'a1762', 'a2762', 'a3762', 'a4762', 'a5762', 'a6762', 'a7762', 'a8762', 'a9762', 'a10762', 'a11762'), +('id763', 'value763', 'name763', 'age763', 'bir763', 'a1763', 'a2763', 'a3763', 'a4763', 'a5763', 'a6763', 'a7763', 'a8763', 'a9763', 'a10763', 'a11763'), +('id764', 'value764', 'name764', 'age764', 'bir764', 'a1764', 'a2764', 'a3764', 'a4764', 'a5764', 'a6764', 'a7764', 'a8764', 'a9764', 'a10764', 'a11764'), +('id765', 'value765', 'name765', 'age765', 'bir765', 'a1765', 'a2765', 'a3765', 'a4765', 'a5765', 'a6765', 'a7765', 'a8765', 'a9765', 'a10765', 'a11765'), +('id766', 'value766', 'name766', 'age766', 'bir766', 'a1766', 'a2766', 'a3766', 'a4766', 'a5766', 'a6766', 'a7766', 'a8766', 'a9766', 'a10766', 'a11766'), +('id767', 'value767', 'name767', 'age767', 'bir767', 'a1767', 'a2767', 'a3767', 'a4767', 'a5767', 'a6767', 'a7767', 'a8767', 'a9767', 'a10767', 'a11767'), +('id768', 'value768', 'name768', 'age768', 'bir768', 'a1768', 'a2768', 'a3768', 'a4768', 'a5768', 'a6768', 'a7768', 'a8768', 'a9768', 'a10768', 'a11768'), +('id769', 'value769', 'name769', 'age769', 'bir769', 'a1769', 'a2769', 'a3769', 'a4769', 'a5769', 'a6769', 'a7769', 'a8769', 'a9769', 'a10769', 'a11769'), +('id770', 'value770', 'name770', 'age770', 'bir770', 'a1770', 'a2770', 'a3770', 'a4770', 'a5770', 'a6770', 'a7770', 'a8770', 'a9770', 'a10770', 'a11770'), +('id771', 'value771', 'name771', 'age771', 'bir771', 'a1771', 'a2771', 'a3771', 'a4771', 'a5771', 'a6771', 'a7771', 'a8771', 'a9771', 'a10771', 'a11771'), +('id772', 'value772', 'name772', 'age772', 'bir772', 'a1772', 'a2772', 'a3772', 'a4772', 'a5772', 'a6772', 'a7772', 'a8772', 'a9772', 'a10772', 'a11772'), +('id773', 'value773', 'name773', 'age773', 'bir773', 'a1773', 'a2773', 'a3773', 'a4773', 'a5773', 'a6773', 'a7773', 'a8773', 'a9773', 'a10773', 'a11773'), +('id774', 'value774', 'name774', 'age774', 'bir774', 'a1774', 'a2774', 'a3774', 'a4774', 'a5774', 'a6774', 'a7774', 'a8774', 'a9774', 'a10774', 'a11774'), +('id775', 'value775', 'name775', 'age775', 'bir775', 'a1775', 'a2775', 'a3775', 'a4775', 'a5775', 'a6775', 'a7775', 'a8775', 'a9775', 'a10775', 'a11775'), +('id776', 'value776', 'name776', 'age776', 'bir776', 'a1776', 'a2776', 'a3776', 'a4776', 'a5776', 'a6776', 'a7776', 'a8776', 'a9776', 'a10776', 'a11776'), +('id777', 'value777', 'name777', 'age777', 'bir777', 'a1777', 'a2777', 'a3777', 'a4777', 'a5777', 'a6777', 'a7777', 'a8777', 'a9777', 'a10777', 'a11777'), +('id778', 'value778', 'name778', 'age778', 'bir778', 'a1778', 'a2778', 'a3778', 'a4778', 'a5778', 'a6778', 'a7778', 'a8778', 'a9778', 'a10778', 'a11778'), +('id779', 'value779', 'name779', 'age779', 'bir779', 'a1779', 'a2779', 'a3779', 'a4779', 'a5779', 'a6779', 'a7779', 'a8779', 'a9779', 'a10779', 'a11779'), +('id780', 'value780', 'name780', 'age780', 'bir780', 'a1780', 'a2780', 'a3780', 'a4780', 'a5780', 'a6780', 'a7780', 'a8780', 'a9780', 'a10780', 'a11780'), +('id781', 'value781', 'name781', 'age781', 'bir781', 'a1781', 'a2781', 'a3781', 'a4781', 'a5781', 'a6781', 'a7781', 'a8781', 'a9781', 'a10781', 'a11781'), +('id782', 'value782', 'name782', 'age782', 'bir782', 'a1782', 'a2782', 'a3782', 'a4782', 'a5782', 'a6782', 'a7782', 'a8782', 'a9782', 'a10782', 'a11782'), +('id783', 'value783', 'name783', 'age783', 'bir783', 'a1783', 'a2783', 'a3783', 'a4783', 'a5783', 'a6783', 'a7783', 'a8783', 'a9783', 'a10783', 'a11783'), +('id784', 'value784', 'name784', 'age784', 'bir784', 'a1784', 'a2784', 'a3784', 'a4784', 'a5784', 'a6784', 'a7784', 'a8784', 'a9784', 'a10784', 'a11784'), +('id785', 'value785', 'name785', 'age785', 'bir785', 'a1785', 'a2785', 'a3785', 'a4785', 'a5785', 'a6785', 'a7785', 'a8785', 'a9785', 'a10785', 'a11785'), +('id786', 'value786', 'name786', 'age786', 'bir786', 'a1786', 'a2786', 'a3786', 'a4786', 'a5786', 'a6786', 'a7786', 'a8786', 'a9786', 'a10786', 'a11786'), +('id787', 'value787', 'name787', 'age787', 'bir787', 'a1787', 'a2787', 'a3787', 'a4787', 'a5787', 'a6787', 'a7787', 'a8787', 'a9787', 'a10787', 'a11787'), +('id788', 'value788', 'name788', 'age788', 'bir788', 'a1788', 'a2788', 'a3788', 'a4788', 'a5788', 'a6788', 'a7788', 'a8788', 'a9788', 'a10788', 'a11788'), +('id789', 'value789', 'name789', 'age789', 'bir789', 'a1789', 'a2789', 'a3789', 'a4789', 'a5789', 'a6789', 'a7789', 'a8789', 'a9789', 'a10789', 'a11789'), +('id790', 'value790', 'name790', 'age790', 'bir790', 'a1790', 'a2790', 'a3790', 'a4790', 'a5790', 'a6790', 'a7790', 'a8790', 'a9790', 'a10790', 'a11790'), +('id791', 'value791', 'name791', 'age791', 'bir791', 'a1791', 'a2791', 'a3791', 'a4791', 'a5791', 'a6791', 'a7791', 'a8791', 'a9791', 'a10791', 'a11791'), +('id792', 'value792', 'name792', 'age792', 'bir792', 'a1792', 'a2792', 'a3792', 'a4792', 'a5792', 'a6792', 'a7792', 'a8792', 'a9792', 'a10792', 'a11792'), +('id793', 'value793', 'name793', 'age793', 'bir793', 'a1793', 'a2793', 'a3793', 'a4793', 'a5793', 'a6793', 'a7793', 'a8793', 'a9793', 'a10793', 'a11793'), +('id794', 'value794', 'name794', 'age794', 'bir794', 'a1794', 'a2794', 'a3794', 'a4794', 'a5794', 'a6794', 'a7794', 'a8794', 'a9794', 'a10794', 'a11794'), +('id795', 'value795', 'name795', 'age795', 'bir795', 'a1795', 'a2795', 'a3795', 'a4795', 'a5795', 'a6795', 'a7795', 'a8795', 'a9795', 'a10795', 'a11795'), +('id796', 'value796', 'name796', 'age796', 'bir796', 'a1796', 'a2796', 'a3796', 'a4796', 'a5796', 'a6796', 'a7796', 'a8796', 'a9796', 'a10796', 'a11796'), +('id797', 'value797', 'name797', 'age797', 'bir797', 'a1797', 'a2797', 'a3797', 'a4797', 'a5797', 'a6797', 'a7797', 'a8797', 'a9797', 'a10797', 'a11797'), +('id798', 'value798', 'name798', 'age798', 'bir798', 'a1798', 'a2798', 'a3798', 'a4798', 'a5798', 'a6798', 'a7798', 'a8798', 'a9798', 'a10798', 'a11798'), +('id799', 'value799', 'name799', 'age799', 'bir799', 'a1799', 'a2799', 'a3799', 'a4799', 'a5799', 'a6799', 'a7799', 'a8799', 'a9799', 'a10799', 'a11799'), +('id800', 'value800', 'name800', 'age800', 'bir800', 'a1800', 'a2800', 'a3800', 'a4800', 'a5800', 'a6800', 'a7800', 'a8800', 'a9800', 'a10800', 'a11800'), +('id801', 'value801', 'name801', 'age801', 'bir801', 'a1801', 'a2801', 'a3801', 'a4801', 'a5801', 'a6801', 'a7801', 'a8801', 'a9801', 'a10801', 'a11801'), +('id802', 'value802', 'name802', 'age802', 'bir802', 'a1802', 'a2802', 'a3802', 'a4802', 'a5802', 'a6802', 'a7802', 'a8802', 'a9802', 'a10802', 'a11802'), +('id803', 'value803', 'name803', 'age803', 'bir803', 'a1803', 'a2803', 'a3803', 'a4803', 'a5803', 'a6803', 'a7803', 'a8803', 'a9803', 'a10803', 'a11803'), +('id804', 'value804', 'name804', 'age804', 'bir804', 'a1804', 'a2804', 'a3804', 'a4804', 'a5804', 'a6804', 'a7804', 'a8804', 'a9804', 'a10804', 'a11804'), +('id805', 'value805', 'name805', 'age805', 'bir805', 'a1805', 'a2805', 'a3805', 'a4805', 'a5805', 'a6805', 'a7805', 'a8805', 'a9805', 'a10805', 'a11805'), +('id806', 'value806', 'name806', 'age806', 'bir806', 'a1806', 'a2806', 'a3806', 'a4806', 'a5806', 'a6806', 'a7806', 'a8806', 'a9806', 'a10806', 'a11806'), +('id807', 'value807', 'name807', 'age807', 'bir807', 'a1807', 'a2807', 'a3807', 'a4807', 'a5807', 'a6807', 'a7807', 'a8807', 'a9807', 'a10807', 'a11807'), +('id808', 'value808', 'name808', 'age808', 'bir808', 'a1808', 'a2808', 'a3808', 'a4808', 'a5808', 'a6808', 'a7808', 'a8808', 'a9808', 'a10808', 'a11808'), +('id809', 'value809', 'name809', 'age809', 'bir809', 'a1809', 'a2809', 'a3809', 'a4809', 'a5809', 'a6809', 'a7809', 'a8809', 'a9809', 'a10809', 'a11809'), +('id810', 'value810', 'name810', 'age810', 'bir810', 'a1810', 'a2810', 'a3810', 'a4810', 'a5810', 'a6810', 'a7810', 'a8810', 'a9810', 'a10810', 'a11810'), +('id811', 'value811', 'name811', 'age811', 'bir811', 'a1811', 'a2811', 'a3811', 'a4811', 'a5811', 'a6811', 'a7811', 'a8811', 'a9811', 'a10811', 'a11811'), +('id812', 'value812', 'name812', 'age812', 'bir812', 'a1812', 'a2812', 'a3812', 'a4812', 'a5812', 'a6812', 'a7812', 'a8812', 'a9812', 'a10812', 'a11812'), +('id813', 'value813', 'name813', 'age813', 'bir813', 'a1813', 'a2813', 'a3813', 'a4813', 'a5813', 'a6813', 'a7813', 'a8813', 'a9813', 'a10813', 'a11813'), +('id814', 'value814', 'name814', 'age814', 'bir814', 'a1814', 'a2814', 'a3814', 'a4814', 'a5814', 'a6814', 'a7814', 'a8814', 'a9814', 'a10814', 'a11814'), +('id815', 'value815', 'name815', 'age815', 'bir815', 'a1815', 'a2815', 'a3815', 'a4815', 'a5815', 'a6815', 'a7815', 'a8815', 'a9815', 'a10815', 'a11815'), +('id816', 'value816', 'name816', 'age816', 'bir816', 'a1816', 'a2816', 'a3816', 'a4816', 'a5816', 'a6816', 'a7816', 'a8816', 'a9816', 'a10816', 'a11816'), +('id817', 'value817', 'name817', 'age817', 'bir817', 'a1817', 'a2817', 'a3817', 'a4817', 'a5817', 'a6817', 'a7817', 'a8817', 'a9817', 'a10817', 'a11817'), +('id818', 'value818', 'name818', 'age818', 'bir818', 'a1818', 'a2818', 'a3818', 'a4818', 'a5818', 'a6818', 'a7818', 'a8818', 'a9818', 'a10818', 'a11818'), +('id819', 'value819', 'name819', 'age819', 'bir819', 'a1819', 'a2819', 'a3819', 'a4819', 'a5819', 'a6819', 'a7819', 'a8819', 'a9819', 'a10819', 'a11819'), +('id820', 'value820', 'name820', 'age820', 'bir820', 'a1820', 'a2820', 'a3820', 'a4820', 'a5820', 'a6820', 'a7820', 'a8820', 'a9820', 'a10820', 'a11820'), +('id821', 'value821', 'name821', 'age821', 'bir821', 'a1821', 'a2821', 'a3821', 'a4821', 'a5821', 'a6821', 'a7821', 'a8821', 'a9821', 'a10821', 'a11821'), +('id822', 'value822', 'name822', 'age822', 'bir822', 'a1822', 'a2822', 'a3822', 'a4822', 'a5822', 'a6822', 'a7822', 'a8822', 'a9822', 'a10822', 'a11822'), +('id823', 'value823', 'name823', 'age823', 'bir823', 'a1823', 'a2823', 'a3823', 'a4823', 'a5823', 'a6823', 'a7823', 'a8823', 'a9823', 'a10823', 'a11823'), +('id824', 'value824', 'name824', 'age824', 'bir824', 'a1824', 'a2824', 'a3824', 'a4824', 'a5824', 'a6824', 'a7824', 'a8824', 'a9824', 'a10824', 'a11824'), +('id825', 'value825', 'name825', 'age825', 'bir825', 'a1825', 'a2825', 'a3825', 'a4825', 'a5825', 'a6825', 'a7825', 'a8825', 'a9825', 'a10825', 'a11825'), +('id826', 'value826', 'name826', 'age826', 'bir826', 'a1826', 'a2826', 'a3826', 'a4826', 'a5826', 'a6826', 'a7826', 'a8826', 'a9826', 'a10826', 'a11826'), +('id827', 'value827', 'name827', 'age827', 'bir827', 'a1827', 'a2827', 'a3827', 'a4827', 'a5827', 'a6827', 'a7827', 'a8827', 'a9827', 'a10827', 'a11827'), +('id828', 'value828', 'name828', 'age828', 'bir828', 'a1828', 'a2828', 'a3828', 'a4828', 'a5828', 'a6828', 'a7828', 'a8828', 'a9828', 'a10828', 'a11828'), +('id829', 'value829', 'name829', 'age829', 'bir829', 'a1829', 'a2829', 'a3829', 'a4829', 'a5829', 'a6829', 'a7829', 'a8829', 'a9829', 'a10829', 'a11829'), +('id830', 'value830', 'name830', 'age830', 'bir830', 'a1830', 'a2830', 'a3830', 'a4830', 'a5830', 'a6830', 'a7830', 'a8830', 'a9830', 'a10830', 'a11830'), +('id831', 'value831', 'name831', 'age831', 'bir831', 'a1831', 'a2831', 'a3831', 'a4831', 'a5831', 'a6831', 'a7831', 'a8831', 'a9831', 'a10831', 'a11831'), +('id832', 'value832', 'name832', 'age832', 'bir832', 'a1832', 'a2832', 'a3832', 'a4832', 'a5832', 'a6832', 'a7832', 'a8832', 'a9832', 'a10832', 'a11832'), +('id833', 'value833', 'name833', 'age833', 'bir833', 'a1833', 'a2833', 'a3833', 'a4833', 'a5833', 'a6833', 'a7833', 'a8833', 'a9833', 'a10833', 'a11833'), +('id834', 'value834', 'name834', 'age834', 'bir834', 'a1834', 'a2834', 'a3834', 'a4834', 'a5834', 'a6834', 'a7834', 'a8834', 'a9834', 'a10834', 'a11834'), +('id835', 'value835', 'name835', 'age835', 'bir835', 'a1835', 'a2835', 'a3835', 'a4835', 'a5835', 'a6835', 'a7835', 'a8835', 'a9835', 'a10835', 'a11835'), +('id836', 'value836', 'name836', 'age836', 'bir836', 'a1836', 'a2836', 'a3836', 'a4836', 'a5836', 'a6836', 'a7836', 'a8836', 'a9836', 'a10836', 'a11836'), +('id837', 'value837', 'name837', 'age837', 'bir837', 'a1837', 'a2837', 'a3837', 'a4837', 'a5837', 'a6837', 'a7837', 'a8837', 'a9837', 'a10837', 'a11837'), +('id838', 'value838', 'name838', 'age838', 'bir838', 'a1838', 'a2838', 'a3838', 'a4838', 'a5838', 'a6838', 'a7838', 'a8838', 'a9838', 'a10838', 'a11838'), +('id839', 'value839', 'name839', 'age839', 'bir839', 'a1839', 'a2839', 'a3839', 'a4839', 'a5839', 'a6839', 'a7839', 'a8839', 'a9839', 'a10839', 'a11839'), +('id840', 'value840', 'name840', 'age840', 'bir840', 'a1840', 'a2840', 'a3840', 'a4840', 'a5840', 'a6840', 'a7840', 'a8840', 'a9840', 'a10840', 'a11840'), +('id841', 'value841', 'name841', 'age841', 'bir841', 'a1841', 'a2841', 'a3841', 'a4841', 'a5841', 'a6841', 'a7841', 'a8841', 'a9841', 'a10841', 'a11841'), +('id842', 'value842', 'name842', 'age842', 'bir842', 'a1842', 'a2842', 'a3842', 'a4842', 'a5842', 'a6842', 'a7842', 'a8842', 'a9842', 'a10842', 'a11842'), +('id843', 'value843', 'name843', 'age843', 'bir843', 'a1843', 'a2843', 'a3843', 'a4843', 'a5843', 'a6843', 'a7843', 'a8843', 'a9843', 'a10843', 'a11843'), +('id844', 'value844', 'name844', 'age844', 'bir844', 'a1844', 'a2844', 'a3844', 'a4844', 'a5844', 'a6844', 'a7844', 'a8844', 'a9844', 'a10844', 'a11844'), +('id845', 'value845', 'name845', 'age845', 'bir845', 'a1845', 'a2845', 'a3845', 'a4845', 'a5845', 'a6845', 'a7845', 'a8845', 'a9845', 'a10845', 'a11845'), +('id846', 'value846', 'name846', 'age846', 'bir846', 'a1846', 'a2846', 'a3846', 'a4846', 'a5846', 'a6846', 'a7846', 'a8846', 'a9846', 'a10846', 'a11846'), +('id847', 'value847', 'name847', 'age847', 'bir847', 'a1847', 'a2847', 'a3847', 'a4847', 'a5847', 'a6847', 'a7847', 'a8847', 'a9847', 'a10847', 'a11847'), +('id848', 'value848', 'name848', 'age848', 'bir848', 'a1848', 'a2848', 'a3848', 'a4848', 'a5848', 'a6848', 'a7848', 'a8848', 'a9848', 'a10848', 'a11848'), +('id849', 'value849', 'name849', 'age849', 'bir849', 'a1849', 'a2849', 'a3849', 'a4849', 'a5849', 'a6849', 'a7849', 'a8849', 'a9849', 'a10849', 'a11849'), +('id850', 'value850', 'name850', 'age850', 'bir850', 'a1850', 'a2850', 'a3850', 'a4850', 'a5850', 'a6850', 'a7850', 'a8850', 'a9850', 'a10850', 'a11850'), +('id851', 'value851', 'name851', 'age851', 'bir851', 'a1851', 'a2851', 'a3851', 'a4851', 'a5851', 'a6851', 'a7851', 'a8851', 'a9851', 'a10851', 'a11851'), +('id852', 'value852', 'name852', 'age852', 'bir852', 'a1852', 'a2852', 'a3852', 'a4852', 'a5852', 'a6852', 'a7852', 'a8852', 'a9852', 'a10852', 'a11852'), +('id853', 'value853', 'name853', 'age853', 'bir853', 'a1853', 'a2853', 'a3853', 'a4853', 'a5853', 'a6853', 'a7853', 'a8853', 'a9853', 'a10853', 'a11853'), +('id854', 'value854', 'name854', 'age854', 'bir854', 'a1854', 'a2854', 'a3854', 'a4854', 'a5854', 'a6854', 'a7854', 'a8854', 'a9854', 'a10854', 'a11854'), +('id855', 'value855', 'name855', 'age855', 'bir855', 'a1855', 'a2855', 'a3855', 'a4855', 'a5855', 'a6855', 'a7855', 'a8855', 'a9855', 'a10855', 'a11855'), +('id856', 'value856', 'name856', 'age856', 'bir856', 'a1856', 'a2856', 'a3856', 'a4856', 'a5856', 'a6856', 'a7856', 'a8856', 'a9856', 'a10856', 'a11856'), +('id857', 'value857', 'name857', 'age857', 'bir857', 'a1857', 'a2857', 'a3857', 'a4857', 'a5857', 'a6857', 'a7857', 'a8857', 'a9857', 'a10857', 'a11857'), +('id858', 'value858', 'name858', 'age858', 'bir858', 'a1858', 'a2858', 'a3858', 'a4858', 'a5858', 'a6858', 'a7858', 'a8858', 'a9858', 'a10858', 'a11858'), +('id859', 'value859', 'name859', 'age859', 'bir859', 'a1859', 'a2859', 'a3859', 'a4859', 'a5859', 'a6859', 'a7859', 'a8859', 'a9859', 'a10859', 'a11859'), +('id860', 'value860', 'name860', 'age860', 'bir860', 'a1860', 'a2860', 'a3860', 'a4860', 'a5860', 'a6860', 'a7860', 'a8860', 'a9860', 'a10860', 'a11860'), +('id861', 'value861', 'name861', 'age861', 'bir861', 'a1861', 'a2861', 'a3861', 'a4861', 'a5861', 'a6861', 'a7861', 'a8861', 'a9861', 'a10861', 'a11861'), +('id862', 'value862', 'name862', 'age862', 'bir862', 'a1862', 'a2862', 'a3862', 'a4862', 'a5862', 'a6862', 'a7862', 'a8862', 'a9862', 'a10862', 'a11862'), +('id863', 'value863', 'name863', 'age863', 'bir863', 'a1863', 'a2863', 'a3863', 'a4863', 'a5863', 'a6863', 'a7863', 'a8863', 'a9863', 'a10863', 'a11863'), +('id864', 'value864', 'name864', 'age864', 'bir864', 'a1864', 'a2864', 'a3864', 'a4864', 'a5864', 'a6864', 'a7864', 'a8864', 'a9864', 'a10864', 'a11864'), +('id865', 'value865', 'name865', 'age865', 'bir865', 'a1865', 'a2865', 'a3865', 'a4865', 'a5865', 'a6865', 'a7865', 'a8865', 'a9865', 'a10865', 'a11865'), +('id866', 'value866', 'name866', 'age866', 'bir866', 'a1866', 'a2866', 'a3866', 'a4866', 'a5866', 'a6866', 'a7866', 'a8866', 'a9866', 'a10866', 'a11866'), +('id867', 'value867', 'name867', 'age867', 'bir867', 'a1867', 'a2867', 'a3867', 'a4867', 'a5867', 'a6867', 'a7867', 'a8867', 'a9867', 'a10867', 'a11867'), +('id868', 'value868', 'name868', 'age868', 'bir868', 'a1868', 'a2868', 'a3868', 'a4868', 'a5868', 'a6868', 'a7868', 'a8868', 'a9868', 'a10868', 'a11868'), +('id869', 'value869', 'name869', 'age869', 'bir869', 'a1869', 'a2869', 'a3869', 'a4869', 'a5869', 'a6869', 'a7869', 'a8869', 'a9869', 'a10869', 'a11869'), +('id870', 'value870', 'name870', 'age870', 'bir870', 'a1870', 'a2870', 'a3870', 'a4870', 'a5870', 'a6870', 'a7870', 'a8870', 'a9870', 'a10870', 'a11870'), +('id871', 'value871', 'name871', 'age871', 'bir871', 'a1871', 'a2871', 'a3871', 'a4871', 'a5871', 'a6871', 'a7871', 'a8871', 'a9871', 'a10871', 'a11871'), +('id872', 'value872', 'name872', 'age872', 'bir872', 'a1872', 'a2872', 'a3872', 'a4872', 'a5872', 'a6872', 'a7872', 'a8872', 'a9872', 'a10872', 'a11872'), +('id873', 'value873', 'name873', 'age873', 'bir873', 'a1873', 'a2873', 'a3873', 'a4873', 'a5873', 'a6873', 'a7873', 'a8873', 'a9873', 'a10873', 'a11873'), +('id874', 'value874', 'name874', 'age874', 'bir874', 'a1874', 'a2874', 'a3874', 'a4874', 'a5874', 'a6874', 'a7874', 'a8874', 'a9874', 'a10874', 'a11874'), +('id875', 'value875', 'name875', 'age875', 'bir875', 'a1875', 'a2875', 'a3875', 'a4875', 'a5875', 'a6875', 'a7875', 'a8875', 'a9875', 'a10875', 'a11875'), +('id876', 'value876', 'name876', 'age876', 'bir876', 'a1876', 'a2876', 'a3876', 'a4876', 'a5876', 'a6876', 'a7876', 'a8876', 'a9876', 'a10876', 'a11876'), +('id877', 'value877', 'name877', 'age877', 'bir877', 'a1877', 'a2877', 'a3877', 'a4877', 'a5877', 'a6877', 'a7877', 'a8877', 'a9877', 'a10877', 'a11877'), +('id878', 'value878', 'name878', 'age878', 'bir878', 'a1878', 'a2878', 'a3878', 'a4878', 'a5878', 'a6878', 'a7878', 'a8878', 'a9878', 'a10878', 'a11878'), +('id879', 'value879', 'name879', 'age879', 'bir879', 'a1879', 'a2879', 'a3879', 'a4879', 'a5879', 'a6879', 'a7879', 'a8879', 'a9879', 'a10879', 'a11879'), +('id880', 'value880', 'name880', 'age880', 'bir880', 'a1880', 'a2880', 'a3880', 'a4880', 'a5880', 'a6880', 'a7880', 'a8880', 'a9880', 'a10880', 'a11880'), +('id881', 'value881', 'name881', 'age881', 'bir881', 'a1881', 'a2881', 'a3881', 'a4881', 'a5881', 'a6881', 'a7881', 'a8881', 'a9881', 'a10881', 'a11881'), +('id882', 'value882', 'name882', 'age882', 'bir882', 'a1882', 'a2882', 'a3882', 'a4882', 'a5882', 'a6882', 'a7882', 'a8882', 'a9882', 'a10882', 'a11882'), +('id883', 'value883', 'name883', 'age883', 'bir883', 'a1883', 'a2883', 'a3883', 'a4883', 'a5883', 'a6883', 'a7883', 'a8883', 'a9883', 'a10883', 'a11883'), +('id884', 'value884', 'name884', 'age884', 'bir884', 'a1884', 'a2884', 'a3884', 'a4884', 'a5884', 'a6884', 'a7884', 'a8884', 'a9884', 'a10884', 'a11884'), +('id885', 'value885', 'name885', 'age885', 'bir885', 'a1885', 'a2885', 'a3885', 'a4885', 'a5885', 'a6885', 'a7885', 'a8885', 'a9885', 'a10885', 'a11885'), +('id886', 'value886', 'name886', 'age886', 'bir886', 'a1886', 'a2886', 'a3886', 'a4886', 'a5886', 'a6886', 'a7886', 'a8886', 'a9886', 'a10886', 'a11886'), +('id887', 'value887', 'name887', 'age887', 'bir887', 'a1887', 'a2887', 'a3887', 'a4887', 'a5887', 'a6887', 'a7887', 'a8887', 'a9887', 'a10887', 'a11887'), +('id888', 'value888', 'name888', 'age888', 'bir888', 'a1888', 'a2888', 'a3888', 'a4888', 'a5888', 'a6888', 'a7888', 'a8888', 'a9888', 'a10888', 'a11888'), +('id889', 'value889', 'name889', 'age889', 'bir889', 'a1889', 'a2889', 'a3889', 'a4889', 'a5889', 'a6889', 'a7889', 'a8889', 'a9889', 'a10889', 'a11889'), +('id890', 'value890', 'name890', 'age890', 'bir890', 'a1890', 'a2890', 'a3890', 'a4890', 'a5890', 'a6890', 'a7890', 'a8890', 'a9890', 'a10890', 'a11890'), +('id891', 'value891', 'name891', 'age891', 'bir891', 'a1891', 'a2891', 'a3891', 'a4891', 'a5891', 'a6891', 'a7891', 'a8891', 'a9891', 'a10891', 'a11891'), +('id892', 'value892', 'name892', 'age892', 'bir892', 'a1892', 'a2892', 'a3892', 'a4892', 'a5892', 'a6892', 'a7892', 'a8892', 'a9892', 'a10892', 'a11892'), +('id893', 'value893', 'name893', 'age893', 'bir893', 'a1893', 'a2893', 'a3893', 'a4893', 'a5893', 'a6893', 'a7893', 'a8893', 'a9893', 'a10893', 'a11893'), +('id894', 'value894', 'name894', 'age894', 'bir894', 'a1894', 'a2894', 'a3894', 'a4894', 'a5894', 'a6894', 'a7894', 'a8894', 'a9894', 'a10894', 'a11894'), +('id895', 'value895', 'name895', 'age895', 'bir895', 'a1895', 'a2895', 'a3895', 'a4895', 'a5895', 'a6895', 'a7895', 'a8895', 'a9895', 'a10895', 'a11895'), +('id896', 'value896', 'name896', 'age896', 'bir896', 'a1896', 'a2896', 'a3896', 'a4896', 'a5896', 'a6896', 'a7896', 'a8896', 'a9896', 'a10896', 'a11896'), +('id897', 'value897', 'name897', 'age897', 'bir897', 'a1897', 'a2897', 'a3897', 'a4897', 'a5897', 'a6897', 'a7897', 'a8897', 'a9897', 'a10897', 'a11897'), +('id898', 'value898', 'name898', 'age898', 'bir898', 'a1898', 'a2898', 'a3898', 'a4898', 'a5898', 'a6898', 'a7898', 'a8898', 'a9898', 'a10898', 'a11898'), +('id899', 'value899', 'name899', 'age899', 'bir899', 'a1899', 'a2899', 'a3899', 'a4899', 'a5899', 'a6899', 'a7899', 'a8899', 'a9899', 'a10899', 'a11899'), +('id900', 'value900', 'name900', 'age900', 'bir900', 'a1900', 'a2900', 'a3900', 'a4900', 'a5900', 'a6900', 'a7900', 'a8900', 'a9900', 'a10900', 'a11900'), +('id901', 'value901', 'name901', 'age901', 'bir901', 'a1901', 'a2901', 'a3901', 'a4901', 'a5901', 'a6901', 'a7901', 'a8901', 'a9901', 'a10901', 'a11901'), +('id902', 'value902', 'name902', 'age902', 'bir902', 'a1902', 'a2902', 'a3902', 'a4902', 'a5902', 'a6902', 'a7902', 'a8902', 'a9902', 'a10902', 'a11902'), +('id903', 'value903', 'name903', 'age903', 'bir903', 'a1903', 'a2903', 'a3903', 'a4903', 'a5903', 'a6903', 'a7903', 'a8903', 'a9903', 'a10903', 'a11903'), +('id904', 'value904', 'name904', 'age904', 'bir904', 'a1904', 'a2904', 'a3904', 'a4904', 'a5904', 'a6904', 'a7904', 'a8904', 'a9904', 'a10904', 'a11904'), +('id905', 'value905', 'name905', 'age905', 'bir905', 'a1905', 'a2905', 'a3905', 'a4905', 'a5905', 'a6905', 'a7905', 'a8905', 'a9905', 'a10905', 'a11905'), +('id906', 'value906', 'name906', 'age906', 'bir906', 'a1906', 'a2906', 'a3906', 'a4906', 'a5906', 'a6906', 'a7906', 'a8906', 'a9906', 'a10906', 'a11906'), +('id907', 'value907', 'name907', 'age907', 'bir907', 'a1907', 'a2907', 'a3907', 'a4907', 'a5907', 'a6907', 'a7907', 'a8907', 'a9907', 'a10907', 'a11907'), +('id908', 'value908', 'name908', 'age908', 'bir908', 'a1908', 'a2908', 'a3908', 'a4908', 'a5908', 'a6908', 'a7908', 'a8908', 'a9908', 'a10908', 'a11908'), +('id909', 'value909', 'name909', 'age909', 'bir909', 'a1909', 'a2909', 'a3909', 'a4909', 'a5909', 'a6909', 'a7909', 'a8909', 'a9909', 'a10909', 'a11909'), +('id910', 'value910', 'name910', 'age910', 'bir910', 'a1910', 'a2910', 'a3910', 'a4910', 'a5910', 'a6910', 'a7910', 'a8910', 'a9910', 'a10910', 'a11910'), +('id911', 'value911', 'name911', 'age911', 'bir911', 'a1911', 'a2911', 'a3911', 'a4911', 'a5911', 'a6911', 'a7911', 'a8911', 'a9911', 'a10911', 'a11911'), +('id912', 'value912', 'name912', 'age912', 'bir912', 'a1912', 'a2912', 'a3912', 'a4912', 'a5912', 'a6912', 'a7912', 'a8912', 'a9912', 'a10912', 'a11912'), +('id913', 'value913', 'name913', 'age913', 'bir913', 'a1913', 'a2913', 'a3913', 'a4913', 'a5913', 'a6913', 'a7913', 'a8913', 'a9913', 'a10913', 'a11913'), +('id914', 'value914', 'name914', 'age914', 'bir914', 'a1914', 'a2914', 'a3914', 'a4914', 'a5914', 'a6914', 'a7914', 'a8914', 'a9914', 'a10914', 'a11914'), +('id915', 'value915', 'name915', 'age915', 'bir915', 'a1915', 'a2915', 'a3915', 'a4915', 'a5915', 'a6915', 'a7915', 'a8915', 'a9915', 'a10915', 'a11915'), +('id916', 'value916', 'name916', 'age916', 'bir916', 'a1916', 'a2916', 'a3916', 'a4916', 'a5916', 'a6916', 'a7916', 'a8916', 'a9916', 'a10916', 'a11916'), +('id917', 'value917', 'name917', 'age917', 'bir917', 'a1917', 'a2917', 'a3917', 'a4917', 'a5917', 'a6917', 'a7917', 'a8917', 'a9917', 'a10917', 'a11917'), +('id918', 'value918', 'name918', 'age918', 'bir918', 'a1918', 'a2918', 'a3918', 'a4918', 'a5918', 'a6918', 'a7918', 'a8918', 'a9918', 'a10918', 'a11918'), +('id919', 'value919', 'name919', 'age919', 'bir919', 'a1919', 'a2919', 'a3919', 'a4919', 'a5919', 'a6919', 'a7919', 'a8919', 'a9919', 'a10919', 'a11919'), +('id920', 'value920', 'name920', 'age920', 'bir920', 'a1920', 'a2920', 'a3920', 'a4920', 'a5920', 'a6920', 'a7920', 'a8920', 'a9920', 'a10920', 'a11920'), +('id921', 'value921', 'name921', 'age921', 'bir921', 'a1921', 'a2921', 'a3921', 'a4921', 'a5921', 'a6921', 'a7921', 'a8921', 'a9921', 'a10921', 'a11921'), +('id922', 'value922', 'name922', 'age922', 'bir922', 'a1922', 'a2922', 'a3922', 'a4922', 'a5922', 'a6922', 'a7922', 'a8922', 'a9922', 'a10922', 'a11922'), +('id923', 'value923', 'name923', 'age923', 'bir923', 'a1923', 'a2923', 'a3923', 'a4923', 'a5923', 'a6923', 'a7923', 'a8923', 'a9923', 'a10923', 'a11923'), +('id924', 'value924', 'name924', 'age924', 'bir924', 'a1924', 'a2924', 'a3924', 'a4924', 'a5924', 'a6924', 'a7924', 'a8924', 'a9924', 'a10924', 'a11924'), +('id925', 'value925', 'name925', 'age925', 'bir925', 'a1925', 'a2925', 'a3925', 'a4925', 'a5925', 'a6925', 'a7925', 'a8925', 'a9925', 'a10925', 'a11925'), +('id926', 'value926', 'name926', 'age926', 'bir926', 'a1926', 'a2926', 'a3926', 'a4926', 'a5926', 'a6926', 'a7926', 'a8926', 'a9926', 'a10926', 'a11926'), +('id927', 'value927', 'name927', 'age927', 'bir927', 'a1927', 'a2927', 'a3927', 'a4927', 'a5927', 'a6927', 'a7927', 'a8927', 'a9927', 'a10927', 'a11927'), +('id928', 'value928', 'name928', 'age928', 'bir928', 'a1928', 'a2928', 'a3928', 'a4928', 'a5928', 'a6928', 'a7928', 'a8928', 'a9928', 'a10928', 'a11928'), +('id929', 'value929', 'name929', 'age929', 'bir929', 'a1929', 'a2929', 'a3929', 'a4929', 'a5929', 'a6929', 'a7929', 'a8929', 'a9929', 'a10929', 'a11929'), +('id930', 'value930', 'name930', 'age930', 'bir930', 'a1930', 'a2930', 'a3930', 'a4930', 'a5930', 'a6930', 'a7930', 'a8930', 'a9930', 'a10930', 'a11930'), +('id931', 'value931', 'name931', 'age931', 'bir931', 'a1931', 'a2931', 'a3931', 'a4931', 'a5931', 'a6931', 'a7931', 'a8931', 'a9931', 'a10931', 'a11931'), +('id932', 'value932', 'name932', 'age932', 'bir932', 'a1932', 'a2932', 'a3932', 'a4932', 'a5932', 'a6932', 'a7932', 'a8932', 'a9932', 'a10932', 'a11932'), +('id933', 'value933', 'name933', 'age933', 'bir933', 'a1933', 'a2933', 'a3933', 'a4933', 'a5933', 'a6933', 'a7933', 'a8933', 'a9933', 'a10933', 'a11933'), +('id934', 'value934', 'name934', 'age934', 'bir934', 'a1934', 'a2934', 'a3934', 'a4934', 'a5934', 'a6934', 'a7934', 'a8934', 'a9934', 'a10934', 'a11934'), +('id935', 'value935', 'name935', 'age935', 'bir935', 'a1935', 'a2935', 'a3935', 'a4935', 'a5935', 'a6935', 'a7935', 'a8935', 'a9935', 'a10935', 'a11935'), +('id936', 'value936', 'name936', 'age936', 'bir936', 'a1936', 'a2936', 'a3936', 'a4936', 'a5936', 'a6936', 'a7936', 'a8936', 'a9936', 'a10936', 'a11936'), +('id937', 'value937', 'name937', 'age937', 'bir937', 'a1937', 'a2937', 'a3937', 'a4937', 'a5937', 'a6937', 'a7937', 'a8937', 'a9937', 'a10937', 'a11937'), +('id938', 'value938', 'name938', 'age938', 'bir938', 'a1938', 'a2938', 'a3938', 'a4938', 'a5938', 'a6938', 'a7938', 'a8938', 'a9938', 'a10938', 'a11938'), +('id939', 'value939', 'name939', 'age939', 'bir939', 'a1939', 'a2939', 'a3939', 'a4939', 'a5939', 'a6939', 'a7939', 'a8939', 'a9939', 'a10939', 'a11939'), +('id940', 'value940', 'name940', 'age940', 'bir940', 'a1940', 'a2940', 'a3940', 'a4940', 'a5940', 'a6940', 'a7940', 'a8940', 'a9940', 'a10940', 'a11940'), +('id941', 'value941', 'name941', 'age941', 'bir941', 'a1941', 'a2941', 'a3941', 'a4941', 'a5941', 'a6941', 'a7941', 'a8941', 'a9941', 'a10941', 'a11941'), +('id942', 'value942', 'name942', 'age942', 'bir942', 'a1942', 'a2942', 'a3942', 'a4942', 'a5942', 'a6942', 'a7942', 'a8942', 'a9942', 'a10942', 'a11942'), +('id943', 'value943', 'name943', 'age943', 'bir943', 'a1943', 'a2943', 'a3943', 'a4943', 'a5943', 'a6943', 'a7943', 'a8943', 'a9943', 'a10943', 'a11943'), +('id944', 'value944', 'name944', 'age944', 'bir944', 'a1944', 'a2944', 'a3944', 'a4944', 'a5944', 'a6944', 'a7944', 'a8944', 'a9944', 'a10944', 'a11944'), +('id945', 'value945', 'name945', 'age945', 'bir945', 'a1945', 'a2945', 'a3945', 'a4945', 'a5945', 'a6945', 'a7945', 'a8945', 'a9945', 'a10945', 'a11945'), +('id946', 'value946', 'name946', 'age946', 'bir946', 'a1946', 'a2946', 'a3946', 'a4946', 'a5946', 'a6946', 'a7946', 'a8946', 'a9946', 'a10946', 'a11946'), +('id947', 'value947', 'name947', 'age947', 'bir947', 'a1947', 'a2947', 'a3947', 'a4947', 'a5947', 'a6947', 'a7947', 'a8947', 'a9947', 'a10947', 'a11947'), +('id948', 'value948', 'name948', 'age948', 'bir948', 'a1948', 'a2948', 'a3948', 'a4948', 'a5948', 'a6948', 'a7948', 'a8948', 'a9948', 'a10948', 'a11948'), +('id949', 'value949', 'name949', 'age949', 'bir949', 'a1949', 'a2949', 'a3949', 'a4949', 'a5949', 'a6949', 'a7949', 'a8949', 'a9949', 'a10949', 'a11949'), +('id950', 'value950', 'name950', 'age950', 'bir950', 'a1950', 'a2950', 'a3950', 'a4950', 'a5950', 'a6950', 'a7950', 'a8950', 'a9950', 'a10950', 'a11950'), +('id951', 'value951', 'name951', 'age951', 'bir951', 'a1951', 'a2951', 'a3951', 'a4951', 'a5951', 'a6951', 'a7951', 'a8951', 'a9951', 'a10951', 'a11951'), +('id952', 'value952', 'name952', 'age952', 'bir952', 'a1952', 'a2952', 'a3952', 'a4952', 'a5952', 'a6952', 'a7952', 'a8952', 'a9952', 'a10952', 'a11952'), +('id953', 'value953', 'name953', 'age953', 'bir953', 'a1953', 'a2953', 'a3953', 'a4953', 'a5953', 'a6953', 'a7953', 'a8953', 'a9953', 'a10953', 'a11953'), +('id954', 'value954', 'name954', 'age954', 'bir954', 'a1954', 'a2954', 'a3954', 'a4954', 'a5954', 'a6954', 'a7954', 'a8954', 'a9954', 'a10954', 'a11954'), +('id955', 'value955', 'name955', 'age955', 'bir955', 'a1955', 'a2955', 'a3955', 'a4955', 'a5955', 'a6955', 'a7955', 'a8955', 'a9955', 'a10955', 'a11955'), +('id956', 'value956', 'name956', 'age956', 'bir956', 'a1956', 'a2956', 'a3956', 'a4956', 'a5956', 'a6956', 'a7956', 'a8956', 'a9956', 'a10956', 'a11956'), +('id957', 'value957', 'name957', 'age957', 'bir957', 'a1957', 'a2957', 'a3957', 'a4957', 'a5957', 'a6957', 'a7957', 'a8957', 'a9957', 'a10957', 'a11957'), +('id958', 'value958', 'name958', 'age958', 'bir958', 'a1958', 'a2958', 'a3958', 'a4958', 'a5958', 'a6958', 'a7958', 'a8958', 'a9958', 'a10958', 'a11958'), +('id959', 'value959', 'name959', 'age959', 'bir959', 'a1959', 'a2959', 'a3959', 'a4959', 'a5959', 'a6959', 'a7959', 'a8959', 'a9959', 'a10959', 'a11959'), +('id960', 'value960', 'name960', 'age960', 'bir960', 'a1960', 'a2960', 'a3960', 'a4960', 'a5960', 'a6960', 'a7960', 'a8960', 'a9960', 'a10960', 'a11960'), +('id961', 'value961', 'name961', 'age961', 'bir961', 'a1961', 'a2961', 'a3961', 'a4961', 'a5961', 'a6961', 'a7961', 'a8961', 'a9961', 'a10961', 'a11961'), +('id962', 'value962', 'name962', 'age962', 'bir962', 'a1962', 'a2962', 'a3962', 'a4962', 'a5962', 'a6962', 'a7962', 'a8962', 'a9962', 'a10962', 'a11962'), +('id963', 'value963', 'name963', 'age963', 'bir963', 'a1963', 'a2963', 'a3963', 'a4963', 'a5963', 'a6963', 'a7963', 'a8963', 'a9963', 'a10963', 'a11963'), +('id964', 'value964', 'name964', 'age964', 'bir964', 'a1964', 'a2964', 'a3964', 'a4964', 'a5964', 'a6964', 'a7964', 'a8964', 'a9964', 'a10964', 'a11964'), +('id965', 'value965', 'name965', 'age965', 'bir965', 'a1965', 'a2965', 'a3965', 'a4965', 'a5965', 'a6965', 'a7965', 'a8965', 'a9965', 'a10965', 'a11965'), +('id966', 'value966', 'name966', 'age966', 'bir966', 'a1966', 'a2966', 'a3966', 'a4966', 'a5966', 'a6966', 'a7966', 'a8966', 'a9966', 'a10966', 'a11966'), +('id967', 'value967', 'name967', 'age967', 'bir967', 'a1967', 'a2967', 'a3967', 'a4967', 'a5967', 'a6967', 'a7967', 'a8967', 'a9967', 'a10967', 'a11967'), +('id968', 'value968', 'name968', 'age968', 'bir968', 'a1968', 'a2968', 'a3968', 'a4968', 'a5968', 'a6968', 'a7968', 'a8968', 'a9968', 'a10968', 'a11968'), +('id969', 'value969', 'name969', 'age969', 'bir969', 'a1969', 'a2969', 'a3969', 'a4969', 'a5969', 'a6969', 'a7969', 'a8969', 'a9969', 'a10969', 'a11969'), +('id970', 'value970', 'name970', 'age970', 'bir970', 'a1970', 'a2970', 'a3970', 'a4970', 'a5970', 'a6970', 'a7970', 'a8970', 'a9970', 'a10970', 'a11970'), +('id971', 'value971', 'name971', 'age971', 'bir971', 'a1971', 'a2971', 'a3971', 'a4971', 'a5971', 'a6971', 'a7971', 'a8971', 'a9971', 'a10971', 'a11971'), +('id972', 'value972', 'name972', 'age972', 'bir972', 'a1972', 'a2972', 'a3972', 'a4972', 'a5972', 'a6972', 'a7972', 'a8972', 'a9972', 'a10972', 'a11972'), +('id973', 'value973', 'name973', 'age973', 'bir973', 'a1973', 'a2973', 'a3973', 'a4973', 'a5973', 'a6973', 'a7973', 'a8973', 'a9973', 'a10973', 'a11973'), +('id974', 'value974', 'name974', 'age974', 'bir974', 'a1974', 'a2974', 'a3974', 'a4974', 'a5974', 'a6974', 'a7974', 'a8974', 'a9974', 'a10974', 'a11974'), +('id975', 'value975', 'name975', 'age975', 'bir975', 'a1975', 'a2975', 'a3975', 'a4975', 'a5975', 'a6975', 'a7975', 'a8975', 'a9975', 'a10975', 'a11975'), +('id976', 'value976', 'name976', 'age976', 'bir976', 'a1976', 'a2976', 'a3976', 'a4976', 'a5976', 'a6976', 'a7976', 'a8976', 'a9976', 'a10976', 'a11976'), +('id977', 'value977', 'name977', 'age977', 'bir977', 'a1977', 'a2977', 'a3977', 'a4977', 'a5977', 'a6977', 'a7977', 'a8977', 'a9977', 'a10977', 'a11977'), +('id978', 'value978', 'name978', 'age978', 'bir978', 'a1978', 'a2978', 'a3978', 'a4978', 'a5978', 'a6978', 'a7978', 'a8978', 'a9978', 'a10978', 'a11978'), +('id979', 'value979', 'name979', 'age979', 'bir979', 'a1979', 'a2979', 'a3979', 'a4979', 'a5979', 'a6979', 'a7979', 'a8979', 'a9979', 'a10979', 'a11979'), +('id980', 'value980', 'name980', 'age980', 'bir980', 'a1980', 'a2980', 'a3980', 'a4980', 'a5980', 'a6980', 'a7980', 'a8980', 'a9980', 'a10980', 'a11980'), +('id981', 'value981', 'name981', 'age981', 'bir981', 'a1981', 'a2981', 'a3981', 'a4981', 'a5981', 'a6981', 'a7981', 'a8981', 'a9981', 'a10981', 'a11981'), +('id982', 'value982', 'name982', 'age982', 'bir982', 'a1982', 'a2982', 'a3982', 'a4982', 'a5982', 'a6982', 'a7982', 'a8982', 'a9982', 'a10982', 'a11982'), +('id983', 'value983', 'name983', 'age983', 'bir983', 'a1983', 'a2983', 'a3983', 'a4983', 'a5983', 'a6983', 'a7983', 'a8983', 'a9983', 'a10983', 'a11983'), +('id984', 'value984', 'name984', 'age984', 'bir984', 'a1984', 'a2984', 'a3984', 'a4984', 'a5984', 'a6984', 'a7984', 'a8984', 'a9984', 'a10984', 'a11984'), +('id985', 'value985', 'name985', 'age985', 'bir985', 'a1985', 'a2985', 'a3985', 'a4985', 'a5985', 'a6985', 'a7985', 'a8985', 'a9985', 'a10985', 'a11985'), +('id986', 'value986', 'name986', 'age986', 'bir986', 'a1986', 'a2986', 'a3986', 'a4986', 'a5986', 'a6986', 'a7986', 'a8986', 'a9986', 'a10986', 'a11986'), +('id987', 'value987', 'name987', 'age987', 'bir987', 'a1987', 'a2987', 'a3987', 'a4987', 'a5987', 'a6987', 'a7987', 'a8987', 'a9987', 'a10987', 'a11987'), +('id988', 'value988', 'name988', 'age988', 'bir988', 'a1988', 'a2988', 'a3988', 'a4988', 'a5988', 'a6988', 'a7988', 'a8988', 'a9988', 'a10988', 'a11988'), +('id989', 'value989', 'name989', 'age989', 'bir989', 'a1989', 'a2989', 'a3989', 'a4989', 'a5989', 'a6989', 'a7989', 'a8989', 'a9989', 'a10989', 'a11989'), +('id990', 'value990', 'name990', 'age990', 'bir990', 'a1990', 'a2990', 'a3990', 'a4990', 'a5990', 'a6990', 'a7990', 'a8990', 'a9990', 'a10990', 'a11990'), +('id991', 'value991', 'name991', 'age991', 'bir991', 'a1991', 'a2991', 'a3991', 'a4991', 'a5991', 'a6991', 'a7991', 'a8991', 'a9991', 'a10991', 'a11991'), +('id992', 'value992', 'name992', 'age992', 'bir992', 'a1992', 'a2992', 'a3992', 'a4992', 'a5992', 'a6992', 'a7992', 'a8992', 'a9992', 'a10992', 'a11992'), +('id993', 'value993', 'name993', 'age993', 'bir993', 'a1993', 'a2993', 'a3993', 'a4993', 'a5993', 'a6993', 'a7993', 'a8993', 'a9993', 'a10993', 'a11993'), +('id994', 'value994', 'name994', 'age994', 'bir994', 'a1994', 'a2994', 'a3994', 'a4994', 'a5994', 'a6994', 'a7994', 'a8994', 'a9994', 'a10994', 'a11994'), +('id995', 'value995', 'name995', 'age995', 'bir995', 'a1995', 'a2995', 'a3995', 'a4995', 'a5995', 'a6995', 'a7995', 'a8995', 'a9995', 'a10995', 'a11995'), +('id996', 'value996', 'name996', 'age996', 'bir996', 'a1996', 'a2996', 'a3996', 'a4996', 'a5996', 'a6996', 'a7996', 'a8996', 'a9996', 'a10996', 'a11996'), +('id997', 'value997', 'name997', 'age997', 'bir997', 'a1997', 'a2997', 'a3997', 'a4997', 'a5997', 'a6997', 'a7997', 'a8997', 'a9997', 'a10997', 'a11997'), +('id998', 'value998', 'name998', 'age998', 'bir998', 'a1998', 'a2998', 'a3998', 'a4998', 'a5998', 'a6998', 'a7998', 'a8998', 'a9998', 'a10998', 'a11998'), +('id999', 'value999', 'name999', 'age999', 'bir999', 'a1999', 'a2999', 'a3999', 'a4999', 'a5999', 'a6999', 'a7999', 'a8999', 'a9999', 'a10999', 'a11999'), +('id1000', 'value1000', 'name1000', 'age1000', 'bir1000', 'a11000', 'a21000', 'a31000', 'a41000', 'a51000', 'a61000', 'a71000', 'a81000', 'a91000', 'a101000', 'a111000'); \ No newline at end of file diff --git a/benchmark/data/mysql/create.sql b/benchmark/data/mysql/create.sql deleted file mode 100644 index fe059083..00000000 --- a/benchmark/data/mysql/create.sql +++ /dev/null @@ -1,97 +0,0 @@ -CREATE TEMPORARY TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0; - -CREATE TABLE new_tbl LIKE orig_tbl; -CREATE TABLE new_tbl SELECT * FROM orig_tbl LIMIT 0; -CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl; - -CREATE TABLE test (a INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (a), KEY(b)) ENGINE=InnoDB SELECT b,c FROM test2; - -CREATE TABLE bar (m INT) SELECT n FROM foo; - -CREATE TABLE artists_and_works SELECT artist.name, COUNT(work.artist_id) AS number_of_works FROM artist LEFT JOIN work ON artist.id = work.artist_id GROUP BY artist.id; - -CREATE TABLE new_tbl AS SELECT * FROM orig_tbl; -CREATE TABLE t (c CHAR(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin); -CREATE TABLE test (blob_col BLOB, INDEX(blob_col(10))); -CREATE TABLE t1 (c1 INT) ENGINE_ATTRIBUTE='{"key":"value"}'; -CREATE TABLE my_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255)) ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; -CREATE TABLE t1 (c1 INT STORAGE DISK, c2 INT STORAGE MEMORY) TABLESPACE ts_1 ENGINE NDB; -CREATE TABLE t1 (c1 INT STORAGE MEMORY, c2 INT STORAGE MEMORY) TABLESPACE ts_1 ENGINE NDB; - -CREATE TABLE lookup (id INT, INDEX USING BTREE (id)) ENGINE = MEMORY; -CREATE TABLE t1 (c1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, c2 VARCHAR(100), c3 VARCHAR(100)) ENGINE=NDB COMMENT="NDB_TABLE=READ_BACKUP=0,PARTITION_BALANCE=FOR_RP_BY_NODE"; - -CREATE TABLE t1 (col1 INT, col2 CHAR(5)) PARTITION BY HASH(col1); -CREATE TABLE t1 (col1 INT, col2 CHAR(5), col3 DATETIME) PARTITION BY HASH (YEAR(col3)); - -CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY KEY(col3) PARTITIONS 4; -CREATE TABLE tk (col1 INT, col2 CHAR(5), col3 DATE) PARTITION BY LINEAR KEY(col3) PARTITIONS 5; -CREATE TABLE t1 (year_col INT, some_data INT) PARTITION BY RANGE (year_col) ( - PARTITION p0 VALUES LESS THAN (1991), - PARTITION p1 VALUES LESS THAN (1995), - PARTITION p2 VALUES LESS THAN (1999), - PARTITION p3 VALUES LESS THAN (2002), - PARTITION p4 VALUES LESS THAN (2006), - PARTITION p5 VALUES LESS THAN MAXVALUE -); -CREATE TABLE rc (a INT NOT NULL, b INT NOT NULL) PARTITION BY RANGE COLUMNS(a,b) ( - PARTITION p0 VALUES LESS THAN (10,5), - PARTITION p1 VALUES LESS THAN (20,10), - PARTITION p2 VALUES LESS THAN (50,MAXVALUE), - PARTITION p3 VALUES LESS THAN (65,MAXVALUE), - PARTITION p4 VALUES LESS THAN (MAXVALUE,MAXVALUE) -); -CREATE TABLE client_firms (id INT, name VARCHAR(35)) PARTITION BY LIST (id) ( - PARTITION r0 VALUES IN (1, 5, 9, 13, 17, 21), - PARTITION r1 VALUES IN (2, 6, 10, 14, 18, 22), - PARTITION r2 VALUES IN (3, 7, 11, 15, 19, 23), - PARTITION r3 VALUES IN (4, 8, 12, 16, 20, 24) -); -CREATE TABLE lc (a INT NULL, b INT NULL) PARTITION BY LIST COLUMNS(a,b) ( - PARTITION p0 VALUES IN( (0,0), (NULL,NULL) ), - PARTITION p1 VALUES IN( (0,1), (0,2), (0,3), (1,1), (1,2) ), - PARTITION p2 VALUES IN( (1,0), (2,0), (2,1), (3,0), (3,1) ), - PARTITION p3 VALUES IN( (1,3), (2,2), (2,3), (3,2), (3,3) ) -); -CREATE TABLE th (id INT, name VARCHAR(30), adate DATE) PARTITION BY LIST(YEAR(adate)) ( - PARTITION p1999 VALUES IN (1995, 1999, 2003) - DATA DIRECTORY = '/var/appdata/95/data' - INDEX DIRECTORY = '/var/appdata/95/idx', - PARTITION p2000 VALUES IN (1996, 2000, 2004) - DATA DIRECTORY = '/var/appdata/96/data' - INDEX DIRECTORY = '/var/appdata/96/idx', - PARTITION p2001 VALUES IN (1997, 2001, 2005) - DATA DIRECTORY = '/var/appdata/97/data' - INDEX DIRECTORY = '/var/appdata/97/idx', - PARTITION p2002 VALUES IN (1998, 2002, 2006) - DATA DIRECTORY = '/var/appdata/98/data' - INDEX DIRECTORY = '/var/appdata/98/idx' -); -CREATE TABLE t1 (s1 INT, s2 INT AS (EXP(s1)) STORED) PARTITION BY LIST (s2) (PARTITION p1 VALUES IN (1)); - -CREATE TABLE foo (a TINYINT NOT NULL) SELECT b+1 AS a FROM bar; - -CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; -CREATE TABLE child (id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE) ENGINE=INNODB; - -CREATE TABLE product (category INT NOT NULL, id INT NOT NULL, price DECIMAL, PRIMARY KEY(category, id)) ENGINE=INNODB; -CREATE TABLE customer (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB; -CREATE TABLE product_order (no INT NOT NULL AUTO_INCREMENT, product_category INT NOT NULL, product_id INT NOT NULL, customer_id INT NOT NULL, PRIMARY KEY(no), INDEX (product_category, product_id), INDEX (customer_id), FOREIGN KEY (product_category, product_id) REFERENCES product(category, id) ON UPDATE CASCADE ON DELETE RESTRICT, FOREIGN KEY (customer_id) REFERENCES customer(id)) ENGINE=INNODB; - -CREATE TABLE t1 (CHECK (c1 <> c2), c1 INT CHECK (c1 > 10), c2 INT CONSTRAINT c2_positive CHECK (c2 > 0), c3 INT CHECK (c3 < 100), CONSTRAINT c1_nonzero CHECK (c1 <> 0), CHECK (c1 > c3)); -CREATE TABLE t2 (c1 VARCHAR(10) CHARACTER SET binary, c2 TEXT CHARACTER SET binary, c3 ENUM('a','b','c') CHARACTER SET binary); -CREATE TABLE t3 (c1 VARBINARY(10), c2 BLOB, c3 ENUM('a','b','c') CHARACTER SET binary); - -CREATE TABLE triangle (sidea DOUBLE, sideb DOUBLE, sidec DOUBLE AS (SQRT(sidea * sidea + sideb * sideb))); -CREATE VIEW v1 AS SELECT *, CONCAT(first_name,' ',last_name) AS full_name FROM t1; -CREATE TABLE t1 (first_name VARCHAR(10), last_name VARCHAR(10), full_name VARCHAR(255) AS (CONCAT(first_name,' ',last_name))); - -CREATE TABLE t1 (c JSON, g INT GENERATED ALWAYS AS (c->"$.id"), INDEX i (g)); -CREATE TABLE t2 (a BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, c JSON DEFAULT NULL, g INT GENERATED ALWAYS AS (c->"$.id") STORED, INDEX i (g)) ENGINE=NDB; - -CREATE TABLE t1 (i INT, j DATE INVISIBLE) ENGINE = InnoDB; -CREATE TABLE t1 (col1 INT, col2 INT INVISIBLE); -CREATE TABLE t2 AS SELECT col1, col2 FROM t1; -CREATE TABLE t2 (col2 INT INVISIBLE) AS SELECT col1, col2 FROM t1; - -CREATE TABLE auto_0 (c1 VARCHAR(50), c2 INT); \ No newline at end of file diff --git a/benchmark/data/mysql/select.sql b/benchmark/data/mysql/select.sql deleted file mode 100644 index eae12733..00000000 --- a/benchmark/data/mysql/select.sql +++ /dev/null @@ -1,36 +0,0 @@ -SELECT 1 + 1 FROM DUAL; -SELECT AVG(score), t1.* FROM t1; -SELECT CONCAT(last_name,', ',first_name) AS full_name FROM my_table ORDER BY full_name; -SELECT CONCAT(last_name,', ',first_name) full_name FROM my_table ORDER BY full_name; -SELECT column1 column2 FROM my_table; -SELECT t1.name, t2.salary FROM employee AS t1, info AS t2 WHERE t1.name = t2.name; -SELECT t1.name, t2.salary FROM employee t1, info t2 WHERE t1.name = t2.name; -SELECT college, region, seed FROM tournament ORDER BY region, seed; -SELECT college, region AS r, seed AS s FROM tournament ORDER BY r, s; -SELECT college, region, seed FROM tournament ORDER BY 2, 3; -SELECT a, b, COUNT(c) AS t FROM test_table GROUP BY a,b ORDER BY a,t DESC; -SELECT COUNT(col1) AS col2 FROM t GROUP BY col2 HAVING col2 = 2; -SELECT col_name FROM tbl_name HAVING col_name > 0; -SELECT col_name FROM tbl_name WHERE col_name > 0; -SELECT user, MAX(salary) FROM users GROUP BY user HAVING MAX(salary) > 10; -SELECT 12 AS a, a FROM t GROUP BY a; -SELECT * FROM tbl LIMIT 5,10; -SELECT * FROM tbl LIMIT 95,18446744073709551615; -SELECT * FROM tbl LIMIT 5; -SELECT * FROM tbl WINDOW window_name AS (window_spec) LIMIT 5; - -SELECT * FROM t1, t2 FOR SHARE OF t1; -SELECT * FROM t1, t2 INTO OUTFILE '/path/to/file_name'; -SELECT ALL HIGH_PRIORITY STRAIGHT_JOIN SQL_SMALL_RESULT SQL_CACHE * FROM tbl PARTITION (partition_name, partition_name1) LOCK IN SHARE MODE; -SELECT DISTINCTROW HIGH_PRIORITY STRAIGHT_JOIN SQL_BIG_RESULT SQL_NO_CACHE * FROM tbl PARTITION (partition_name, partition_name1) FOR UPDATE OF tbl_name SKIP LOCKED; -SELECT DISTINCT HIGH_PRIORITY STRAIGHT_JOIN SQL_BUFFER_RESULT SQL_CALC_FOUND_ROWS * FROM tbl PARTITION (partition_name, partition_name1) FOR UPDATE OF tbl_name SKIP LOCKED; - -SELECT * INTO @my_var FROM t1; -SELECT * FROM t1 INTO @my_var FOR UPDATE; -SELECT 1 FOR UPDATE INTO @my_var; -SELECT * FROM t1 FOR UPDATE INTO @my_var; -SELECT id, data INTO @x, @y FROM test.t1 LIMIT 1; - -SELECT * FROM t1 AS t INTO @x,@y,@z; -SELECT * FROM t1 AS t INTO OUTFILE '/tmp/select-values.txt'; -SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table; diff --git a/benchmark/data/params.json b/benchmark/data/params.json new file mode 100644 index 00000000..e9bf1ef7 --- /dev/null +++ b/benchmark/data/params.json @@ -0,0 +1,10 @@ +{ + "suggestion": { + "getAllEntities": ["$sql", { "lineNumber": 974, "column": 37 }], + "getSuggestionAtCaretPosition": ["$sql", { "lineNumber": 974, "column": 37 }] + }, + "suggestion_flink": { + "getAllEntities": ["$sql", { "lineNumber": 1020, "column": 38 }], + "getSuggestionAtCaretPosition": ["$sql", { "lineNumber": 1020, "column": 38 }] + } +} \ No newline at end of file diff --git a/benchmark/data/pgsql/create.sql b/benchmark/data/pgsql/create.sql deleted file mode 100644 index c8fceb79..00000000 --- a/benchmark/data/pgsql/create.sql +++ /dev/null @@ -1,97 +0,0 @@ -CREATE GLOBAL TEMPORARY TABLE IF NOT EXISTS table1 (col1 int COLLATE collation1 CONSTRAINT constraint_name NOT NULL DEFERRABLE) INHERITS (table_parent) WITH (storage_parameter = 1) ON COMMIT PRESERVE ROWS TABLESPACE tablespace_name; - -CREATE LOCAL TEMP TABLE table1 (col1 int CONSTRAINT constraint_name NULL NOT DEFERRABLE, col2 text CHECK (age > 5) NOT DEFERRABLE INITIALLY DEFERRED, LIKE source_table INCLUDING DEFAULTS) INHERITS (table_parent) WITH OIDS TABLESPACE tablespace_name; - -CREATE LOCAL TEMP TABLE table1 (col1 int) INHERITS (table_parent) WITH OIDS ON COMMIT DELETE ROWS; - -CREATE UNLOGGED TABLE table1 (col1 int) INHERITS (table_parent) WITHOUT OIDS ON COMMIT DROP; - -CREATE TABLE table_name1 OF type_name (col1 WITH OPTIONS CONSTRAINT constraint_name NOT NULL, col2 WITH OPTIONS CONSTRAINT constraint_name CHECK (age > 5) NOT DEFERRABLE INITIALLY DEFERRED); - -CREATE TABLE table_name1 OF type_name (col1 WITH OPTIONS CONSTRAINT constraint_name NOT NULL, EXCLUDE USING hash (c WITH &&+) WITH (storage_parameter=3) USING INDEX TABLESPACE tablespace_name WHERE (predicate1=123) NOT DEFERRABLE INITIALLY DEFERRED); - - -CREATE TABLE weather ( - city varchar(80), - temp_lo int, - -- low temperature - temp_hi int, - -- high temperature - prcp real, - -- precipitation - date date -); - -CREATE TABLE cities ( - name varchar(80), - location point -); - --- remove it -DROP TABLE weather; - --- operate view -CREATE VIEW myview AS -SELECT - city, - temp_lo, - temp_hi, - prcp, - date, - location -FROM - weather, - cities -WHERE - city = name; - --- Foreign Keys -CREATE TABLE cities ( - city varchar(80) primary key, - location point -); - -CREATE TABLE weather ( - city varchar(80) references cities(city), - temp_lo int, - temp_hi int, - prcp real, - date date -); - --- Schemas - --- Creating a Schema -CREATE SCHEMA myschema; - -CREATE SCHEMA database1.schema1.table1; - -CREATE SCHEMA schemaname AUTHORIZATION username; - --- The Public Schema -CREATE TABLE public7.products(col1 int); - --- Inheritance -CREATE TABLE capitals ( - state char(2) -) INHERITS (cities); - --- Partitioning Implementing Partitioning -CREATE TABLE measurement_y2006m02 ( - CHECK ( logdate >= DATE '2006-02-01' AND logdate < DATE '2006-03-01' ) -) INHERITS (measurement); - -CREATE TRIGGER insert_measurement_trigger - BEFORE INSERT ON measurement - FOR EACH ROW EXECUTE PROCEDURE measurement_insert_trigger(); - -CREATE TABLE measurement ( - city_id int not null, - logdate date not null, - peaktemp int, - unitsales int -); - -CREATE VIEW measurement AS - SELECT * FROM measurement_y2006m02 -UNION ALL SELECT * FROM measurement_y2006m03; diff --git a/benchmark/data/pgsql/select.sql b/benchmark/data/pgsql/select.sql deleted file mode 100644 index 9b5896ef..00000000 --- a/benchmark/data/pgsql/select.sql +++ /dev/null @@ -1,99 +0,0 @@ -WITH RECURSIVE query_name (id) AS (SELECT id FROM table_expression) -SELECT DISTINCT ON (col1,col2) random() AS name1 FROM table_expression -WHERE name1=name1 -GROUP BY DISTINCT id -HAVING sum(len) < interval '5 hours' -WINDOW w AS (PARTITION BY depname ORDER BY salary DESC) - UNION ALL (SELECT * FROM others) - ORDER BY salary DESC - FETCH NEXT ROWS ONLY - OFFSET start ROWS - FOR UPDATE OF table_name, table_name2 NOWAIT; -SELECT; - -SELECT * FROM db.tbs GROUP BY (col1 > 3, col2 < 8) ORDER BY col3 > 9; - -WITH query_name (id) AS (SELECT id FROM table_expression) SELECT DISTINCT random() AS name1 FROM table_expression WHERE name1=name1 GROUP BY id HAVING sum(len) < interval '5 hours' WINDOW w AS (PARTITION BY depname ORDER BY salary DESC) INTERSECT DISTINCT (SELECT * FROM others) ORDER BY salary ASC OFFSET start FETCH NEXT ROW ONLY FOR NO KEY UPDATE; - -WITH query_name (id) AS (SELECT id FROM table_expression) SELECT DISTINCT ON (col1) random() AS name1 FROM table_expression WHERE name1=name1 GROUP BY id HAVING sum(len) < interval '5 hours' WINDOW w AS (PARTITION BY depname ORDER BY salary DESC) EXCEPT (SELECT * FROM others) ORDER BY salary USING > NULLS FIRST OFFSET start FETCH NEXT ROW ONLY FOR SHARE; - -WITH query_name (id) AS (SELECT id FROM table_expression) SELECT DISTINCT ON (col1) random() AS name1 FROM table_expression WHERE name1=name1 GROUP BY id HAVING sum(len) < interval '5 hours' WINDOW w AS (PARTITION BY depname ORDER BY salary DESC) EXCEPT (SELECT * FROM others) ORDER BY salary USING > NULLS FIRST OFFSET start FETCH NEXT ROW ONLY FOR KEY SHARE OF table_name NOWAIT; - --- SELECT INTO -WITH RECURSIVE query_name (id) AS (SELECT id FROM table_expression) -SELECT DISTINCT ON (col2, col3) -INTO TEMPORARY TABLE new_table - FROM from_item - WHERE name2=name1 - GROUP BY name - HAVING s > 8 - WINDOW window_name AS ( RANGE UNBOUNDED PRECEDING ) - INTERSECT DISTINCT (SELECT * FROM tb) - ORDER BY expression_1 USING > NULLS FIRST - LIMIT ALL - OFFSET start ROW - FOR UPDATE OF table_name NOWAIT; -SELECT INTO new_table; - --- The Most Easy -SELECT * ; - --- Querying a Table - -SELECT city, temp_lo, temp_hi, prcp, date FROM weather; - -SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather; - -SELECT * FROM weather - WHERE city = 'San Francisco' AND prcp > 0.0; - -SELECT * FROM weather - ORDER BY city; - -SELECT * FROM weather - ORDER BY city, temp_lo; - -SELECT DISTINCT city - FROM weather; - -SELECT DISTINCT city - FROM weather - ORDER BY city; - --- Joins Between Tables -SELECT weather.city, weather.temp_lo, weather.temp_hi, - weather.prcp, weather.date, cities.location - FROM weather NATURAL LEFT OUTER JOIN cities - WHERE cities.name = weather.city; - -SELECT W1.city, W1.temp_lo AS low, W1.temp_hi AS high, - W2.city, W2.temp_lo AS low, W2.temp_hi AS high - FROM weather W1 NATURAL RIGHT OUTER JOIN weather W2 - WHERE W1.temp_lo < W2.temp_lo - AND W1.temp_hi > W2.temp_hi; - -SELECT * - FROM weather w NATURAL FULL OUTER JOIN cities c - WHERE w.city = c.name; - -SELECT * - FROM weather w CROSS JOIN cities c - WHERE w.city = c.name; - --- Aggregate Functions - -SELECT city, max(temp_lo) - FROM weather - WHERE city LIKE 'S%' - GROUP BY city - HAVING max(temp_lo) < 40; - --- Window Functions - -SELECT depname, empno, salary, enroll_date -FROM - (SELECT depname, empno, salary, enroll_date, - rank() OVER (PARTITION BY depname ORDER BY salary DESC, empno) AS pos - FROM empsalary - ) AS ss -WHERE pos < 3; \ No newline at end of file diff --git a/benchmark/data/select.sql b/benchmark/data/select.sql new file mode 100644 index 00000000..92fc3fe8 --- /dev/null +++ b/benchmark/data/select.sql @@ -0,0 +1,1014 @@ +SELECT + main_query.* +FROM ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS main_query +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query1 on main_query.product_id = sub_query1.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query2 on main_query.product_id = sub_query2.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query3 on main_query.product_id = sub_query3.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query4 on main_query.product_id = sub_query4.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query5 on main_query.product_id = sub_query5.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query6 on main_query.product_id = sub_query6.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query7 on main_query.product_id = sub_query7.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query8 on main_query.product_id = sub_query8.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query9 on main_query.product_id = sub_query9.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query10 on main_query.product_id = sub_query10.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query11 on main_query.product_id = sub_query11.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query12 on main_query.product_id = sub_query12.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query13 on main_query.product_id = sub_query13.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query14 on main_query.product_id = sub_query14.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query15 on main_query.product_id = sub_query15.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query16 on main_query.product_id = sub_query16.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query17 on main_query.product_id = sub_query17.product_id + +JOIN ( + SELECT + region_data.region_name, + category_data.category_name, + region_data.total_sales_amount, + region_data.total_sales_quantity, + region_data.avg_price, + region_data.max_sale_date, + product_data.product_name, + store_data.store_name, + store_data.store_total_sales + FROM ( + SELECT + r.region_name, + c.category_name, + SUM(s.sale_amount) AS total_sales_amount, + SUM(s.sale_quantity) AS total_sales_quantity, + AVG(s.sale_amount / s.sale_quantity) AS avg_price, + MAX(s.sale_date) AS max_sale_date + FROM + sales s + JOIN products p ON s.product_id = p.product_id + JOIN categories c ON p.category_id = c.category_id + JOIN stores st ON s.store_id = st.store_id + JOIN regions r ON st.region_id = r.region_id + WHERE + s.sale_date BETWEEN '2023-01-01' AND '2023-12-31' + GROUP BY + r.region_name, c.category_name + ) AS region_data + JOIN ( + SELECT + p.product_id, + p.product_name, + c.category_name + FROM + products p + JOIN categories c ON p.category_id = c.category_id + ) AS product_data ON region_data.category_name = product_data.category_name + JOIN ( + SELECT + st.store_id, + st.store_name, + st.region_id, + SUM(s.sale_amount) AS store_total_sales + FROM + sales s + JOIN stores st ON s.store_id = st.store_id + GROUP BY + st.store_id, st.store_name, st.region_id + ) AS store_data ON region_data.region_name = store_data.region_id +) AS sub_query18 on main_query.product_id = sub_query18.product_id + +WHERE + main_query.total_sales_amount > 1000 +ORDER BY + main_query.region_name, + main_query.category_name, + main_query.total_sales_amount DESC; diff --git a/benchmark/data/spark/create.sql b/benchmark/data/spark/create.sql deleted file mode 100644 index 341fdedf..00000000 --- a/benchmark/data/spark/create.sql +++ /dev/null @@ -1,120 +0,0 @@ --- Syntax --- CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier --- USING data_source --- [ ROW FORMAT row_format ] --- [ STORED AS file_format ] --- [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ] --- [ LOCATION path ] - - --- Create table using an existing table -CREATE TABLE Student_Duple like Student; -CREATE TABLE IF NOT EXISTS Student_Duple like Student; - --- Create table like using a data source -CREATE TABLE Student_Duple like Student USING CSV; - --- Table is created as external table at the location specified -CREATE TABLE Student_Duple like Student location '/root1/home'; - --- Create table like using a rowformat -CREATE TABLE Student_Duple like Student - ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' - STORED AS TEXTFILE - TBLPROPERTIES ('owner'='xxxx'); --- Syntax --- CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier --- USING data_source --- [ ROW FORMAT row_format ] --- [ STORED AS file_format ] --- [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ] --- [ LOCATION path ] - - --- Create table using an existing table -CREATE TABLE Student_Duple like Student; -CREATE TABLE IF NOT EXISTS Student_Duple like Student; - --- Create table like using a data source -CREATE TABLE Student_Duple like Student USING CSV; - --- Table is created as external table at the location specified -CREATE TABLE Student_Duple like Student location '/root1/home'; - --- Create table like using a rowformat -CREATE TABLE Student_Duple like Student - ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' - STORED AS TEXTFILE - TBLPROPERTIES ('owner'='xxxx'); --- Syntax --- CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier --- USING data_source --- [ ROW FORMAT row_format ] --- [ STORED AS file_format ] --- [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ] --- [ LOCATION path ] - - --- Create table using an existing table -CREATE TABLE Student_Duple like Student; -CREATE TABLE IF NOT EXISTS Student_Duple like Student; - --- Create table like using a data source -CREATE TABLE Student_Duple like Student USING CSV; - --- Table is created as external table at the location specified -CREATE TABLE Student_Duple like Student location '/root1/home'; - --- Create table like using a rowformat -CREATE TABLE Student_Duple like Student - ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' - STORED AS TEXTFILE - TBLPROPERTIES ('owner'='xxxx'); --- Syntax --- CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier --- USING data_source --- [ ROW FORMAT row_format ] --- [ STORED AS file_format ] --- [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ] --- [ LOCATION path ] - - --- Create table using an existing table -CREATE TABLE Student_Duple like Student; -CREATE TABLE IF NOT EXISTS Student_Duple like Student; - --- Create table like using a data source -CREATE TABLE Student_Duple like Student USING CSV; - --- Table is created as external table at the location specified -CREATE TABLE Student_Duple like Student location '/root1/home'; - --- Create table like using a rowformat -CREATE TABLE Student_Duple like Student - ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' - STORED AS TEXTFILE - TBLPROPERTIES ('owner'='xxxx'); --- Syntax --- CREATE TABLE [IF NOT EXISTS] table_identifier LIKE source_table_identifier --- USING data_source --- [ ROW FORMAT row_format ] --- [ STORED AS file_format ] --- [ TBLPROPERTIES ( key1=val1, key2=val2, ... ) ] --- [ LOCATION path ] - - --- Create table using an existing table -CREATE TABLE Student_Duple like Student; -CREATE TABLE IF NOT EXISTS Student_Duple like Student; - --- Create table like using a data source -CREATE TABLE Student_Duple like Student USING CSV; - --- Table is created as external table at the location specified -CREATE TABLE Student_Duple like Student location '/root1/home'; - --- Create table like using a rowformat -CREATE TABLE Student_Duple like Student - ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' - STORED AS TEXTFILE - TBLPROPERTIES ('owner'='xxxx'); diff --git a/benchmark/data/spark/select.sql b/benchmark/data/spark/select.sql deleted file mode 100644 index 60f772fb..00000000 --- a/benchmark/data/spark/select.sql +++ /dev/null @@ -1,162 +0,0 @@ --- aggregate_function(input1 [, input2, ...]) FILTER (WHERE boolean_expression) - --- { PERCENTILE_CONT | PERCENTILE_DISC }(percentile) WITHIN GROUP (ORDER BY { order_by_expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] }) FILTER (WHERE boolean_expression) - -CREATE OR REPLACE TEMPORARY VIEW basic_pays AS SELECT * FROM VALUES -('Diane Murphy','Accounting',8435), -('Mary Patterson','Accounting',9998), -('Jeff Firrelli','Accounting',8992), -('William Patterson','Accounting',8870), -('Gerard Bondur','Accounting',11472), -('Anthony Bow','Accounting',6627), -('Leslie Jennings','IT',8113), -('Leslie Thompson','IT',5186), -('Julie Firrelli','Sales',9181), -('Steve Patterson','Sales',9441), -('Foon Yue Tseng','Sales',6660), -('George Vanauf','Sales',10563), -('Loui Bondur','SCM',10449), -('Gerard Hernandez','SCM',6949), -('Pamela Castillo','SCM',11303), -('Larry Bott','SCM',11798), -('Barry Jones','SCM',10586) -AS basic_pays(employee_name, department, salary); - -SELECT * FROM basic_pays; - -SELECT - department, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) AS pc1, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pc2, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pc3, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pc4, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) AS pd1, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pd2, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pd3, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pd4 -FROM basic_pays -GROUP BY department -ORDER BY department; - - --- aggregate_function(input1 [, input2, ...]) FILTER (WHERE boolean_expression) - --- { PERCENTILE_CONT | PERCENTILE_DISC }(percentile) WITHIN GROUP (ORDER BY { order_by_expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] }) FILTER (WHERE boolean_expression) - -CREATE OR REPLACE TEMPORARY VIEW basic_pays AS SELECT * FROM VALUES -('Diane Murphy','Accounting',8435), -('Mary Patterson','Accounting',9998), -('Jeff Firrelli','Accounting',8992), -('William Patterson','Accounting',8870), -('Gerard Bondur','Accounting',11472), -('Anthony Bow','Accounting',6627), -('Leslie Jennings','IT',8113), -('Leslie Thompson','IT',5186), -('Julie Firrelli','Sales',9181), -('Steve Patterson','Sales',9441), -('Foon Yue Tseng','Sales',6660), -('George Vanauf','Sales',10563), -('Loui Bondur','SCM',10449), -('Gerard Hernandez','SCM',6949), -('Pamela Castillo','SCM',11303), -('Larry Bott','SCM',11798), -('Barry Jones','SCM',10586) -AS basic_pays(employee_name, department, salary); - -SELECT * FROM basic_pays; - -SELECT - department, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) AS pc1, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pc2, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pc3, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pc4, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) AS pd1, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pd2, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pd3, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pd4 -FROM basic_pays -GROUP BY department -ORDER BY department; - - --- aggregate_function(input1 [, input2, ...]) FILTER (WHERE boolean_expression) - --- { PERCENTILE_CONT | PERCENTILE_DISC }(percentile) WITHIN GROUP (ORDER BY { order_by_expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] }) FILTER (WHERE boolean_expression) - -CREATE OR REPLACE TEMPORARY VIEW basic_pays AS SELECT * FROM VALUES -('Diane Murphy','Accounting',8435), -('Mary Patterson','Accounting',9998), -('Jeff Firrelli','Accounting',8992), -('William Patterson','Accounting',8870), -('Gerard Bondur','Accounting',11472), -('Anthony Bow','Accounting',6627), -('Leslie Jennings','IT',8113), -('Leslie Thompson','IT',5186), -('Julie Firrelli','Sales',9181), -('Steve Patterson','Sales',9441), -('Foon Yue Tseng','Sales',6660), -('George Vanauf','Sales',10563), -('Loui Bondur','SCM',10449), -('Gerard Hernandez','SCM',6949), -('Pamela Castillo','SCM',11303), -('Larry Bott','SCM',11798), -('Barry Jones','SCM',10586) -AS basic_pays(employee_name, department, salary); - -SELECT * FROM basic_pays; - -SELECT - department, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) AS pc1, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pc2, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pc3, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pc4, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) AS pd1, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pd2, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pd3, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pd4 -FROM basic_pays -GROUP BY department -ORDER BY department; - - --- aggregate_function(input1 [, input2, ...]) FILTER (WHERE boolean_expression) - --- { PERCENTILE_CONT | PERCENTILE_DISC }(percentile) WITHIN GROUP (ORDER BY { order_by_expression [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [ , ... ] }) FILTER (WHERE boolean_expression) - -CREATE OR REPLACE TEMPORARY VIEW basic_pays AS SELECT * FROM VALUES -('Diane Murphy','Accounting',8435), -('Mary Patterson','Accounting',9998), -('Jeff Firrelli','Accounting',8992), -('William Patterson','Accounting',8870), -('Gerard Bondur','Accounting',11472), -('Anthony Bow','Accounting',6627), -('Leslie Jennings','IT',8113), -('Leslie Thompson','IT',5186), -('Julie Firrelli','Sales',9181), -('Steve Patterson','Sales',9441), -('Foon Yue Tseng','Sales',6660), -('George Vanauf','Sales',10563), -('Loui Bondur','SCM',10449), -('Gerard Hernandez','SCM',6949), -('Pamela Castillo','SCM',11303), -('Larry Bott','SCM',11798), -('Barry Jones','SCM',10586) -AS basic_pays(employee_name, department, salary); - -SELECT * FROM basic_pays; - -SELECT - department, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) AS pc1, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pc2, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pc3, - percentile_cont(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pc4, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) AS pd1, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary) FILTER (WHERE employee_name LIKE '%Bo%') AS pd2, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) AS pd3, - percentile_disc(0.25) WITHIN GROUP (ORDER BY salary DESC) FILTER (WHERE employee_name LIKE '%Bo%') AS pd4 -FROM basic_pays -GROUP BY department -ORDER BY department; diff --git a/benchmark/data/split.sql b/benchmark/data/split.sql new file mode 100644 index 00000000..e729aa8c --- /dev/null +++ b/benchmark/data/split.sql @@ -0,0 +1,1001 @@ +CREATE TABLE table_0 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_0 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_0 AS +SELECT + * +FROM + origin_table_0; + +CREATE TABLE table_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_1 AS +SELECT + * +FROM + origin_table_1; + +SELECT col1, col2 FROM table_name_1; + +SELECT col3, col4 FROM table_name_1 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_1 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_1 AS +SELECT + * +FROM + origin_table_1; + +CREATE TABLE table_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_2 AS +SELECT + * +FROM + origin_table_2; + +SELECT col1, col2 FROM table_name_2; + +SELECT col3, col4 FROM table_name_2 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_2 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_2 AS +SELECT + * +FROM + origin_table_2; + +CREATE TABLE table_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_3 AS +SELECT + * +FROM + origin_table_3; + +SELECT col1, col2 FROM table_name_3; + +SELECT col3, col4 FROM table_name_3 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_3 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_3 AS +SELECT + * +FROM + origin_table_3; + +CREATE TABLE table_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_4 AS +SELECT + * +FROM + origin_table_4; + +SELECT col1, col2 FROM table_name_4; + +SELECT col3, col4 FROM table_name_4 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_4 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_4 AS +SELECT + * +FROM + origin_table_4; + +CREATE TABLE table_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_5 AS +SELECT + * +FROM + origin_table_5; + +SELECT col1, col2 FROM table_name_5; + +SELECT col3, col4 FROM table_name_5 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_5 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_5 AS +SELECT + * +FROM + origin_table_5; + +CREATE TABLE table_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_6 AS +SELECT + * +FROM + origin_table_6; + +SELECT col1, col2 FROM table_name_6; + +SELECT col3, col4 FROM table_name_6 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_6 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_6 AS +SELECT + * +FROM + origin_table_6; + +CREATE TABLE table_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_7 AS +SELECT + * +FROM + origin_table_7; + +SELECT col1, col2 FROM table_name_7; + +SELECT col3, col4 FROM table_name_7 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_7 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_7 AS +SELECT + * +FROM + origin_table_7; + +CREATE TABLE table_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_8 AS +SELECT + * +FROM + origin_table_8; + +SELECT col1, col2 FROM table_name_8; + +SELECT col3, col4 FROM table_name_8 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_8 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_8 AS +SELECT + * +FROM + origin_table_8; + +CREATE TABLE table_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_9 AS +SELECT + * +FROM + origin_table_9; + +SELECT col1, col2 FROM table_name_9; + +SELECT col3, col4 FROM table_name_9 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_9 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_9 AS +SELECT + * +FROM + origin_table_9; + +CREATE TABLE table_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_10 AS +SELECT + * +FROM + origin_table_10; + +SELECT col1, col2 FROM table_name_10; + +SELECT col3, col4 FROM table_name_10 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_10 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_10 AS +SELECT + * +FROM + origin_table_10; + +CREATE TABLE table_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_11 AS +SELECT + * +FROM + origin_table_11; + +SELECT col1, col2 FROM table_name_11; + +SELECT col3, col4 FROM table_name_11 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_11 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_11 AS +SELECT + * +FROM + origin_table_11; + +CREATE TABLE table_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_12 AS +SELECT + * +FROM + origin_table_12; + +SELECT col1, col2 FROM table_name_12; + +SELECT col3, col4 FROM table_name_12 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_12 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_12 AS +SELECT + * +FROM + origin_table_12; + +CREATE TABLE table_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_13 AS +SELECT + * +FROM + origin_table_13; + +SELECT col1, col2 FROM table_name_13; + +SELECT col3, col4 FROM table_name_13 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_13 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_13 AS +SELECT + * +FROM + origin_table_13; + +CREATE TABLE table_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_14 AS +SELECT + * +FROM + origin_table_14; + +SELECT col1, col2 FROM table_name_14; + +SELECT col3, col4 FROM table_name_14 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_14 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_14 AS +SELECT + * +FROM + origin_table_14; + +CREATE TABLE table_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_15 AS +SELECT + * +FROM + origin_table_15; + +SELECT col1, col2 FROM table_name_15; + +SELECT col3, col4 FROM table_name_15 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_15 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_15 AS +SELECT + * +FROM + origin_table_15; + +CREATE TABLE table_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_16 AS +SELECT + * +FROM + origin_table_16; + +SELECT col1, col2 FROM table_name_16; + +SELECT col3, col4 FROM table_name_16 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_16 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_16 AS +SELECT + * +FROM + origin_table_16; + +CREATE TABLE table_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_17 AS +SELECT + * +FROM + origin_table_17; + +SELECT col1, col2 FROM table_name_17; + +SELECT col3, col4 FROM table_name_17 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_17 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_17 AS +SELECT + * +FROM + origin_table_17; + +CREATE TABLE table_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_18 AS +SELECT + * +FROM + origin_table_18; + +SELECT col1, col2 FROM table_name_18; + +SELECT col3, col4 FROM table_name_18 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_18 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_18 AS +SELECT + * +FROM + origin_table_18; + +CREATE TABLE table_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_19 AS +SELECT + * +FROM + origin_table_19; + +SELECT col1, col2 FROM table_name_19; + +SELECT col3, col4 FROM table_name_19 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_19 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_19 AS +SELECT + * +FROM + origin_table_19; + +CREATE TABLE table_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_20 AS +SELECT + * +FROM + origin_table_20; + +SELECT col1, col2 FROM table_name_20; + +SELECT col3, col4 FROM table_name_20 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_20 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_20 AS +SELECT + * +FROM + origin_table_20; + +CREATE TABLE table_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_21 AS +SELECT + * +FROM + origin_table_21; + +SELECT col1, col2 FROM table_name_21; + +SELECT col3, col4 FROM table_name_21 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_21 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_21 AS +SELECT + * +FROM + origin_table_21; + +CREATE TABLE table_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_22 AS +SELECT + * +FROM + origin_table_22; + +SELECT col1, col2 FROM table_name_22; + +SELECT col3, col4 FROM table_name_22 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_22 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_22 AS +SELECT + * +FROM + origin_table_22; + +CREATE TABLE table_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_23 AS +SELECT + * +FROM + origin_table_23; + +SELECT col1, col2 FROM table_name_23; + +SELECT col3, col4 FROM table_name_23 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_23 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_23 AS +SELECT + * +FROM + origin_table_23; + +CREATE TABLE table_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_24 AS +SELECT + * +FROM + origin_table_24; + +SELECT col1, col2 FROM table_name_24; + +SELECT col3, col4 FROM table_name_24 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_24 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_24 AS +SELECT + * +FROM + origin_table_24; + +CREATE TABLE table_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_25 AS +SELECT + * +FROM + origin_table_25; + +SELECT col1, col2 FROM table_name_25; + +SELECT col3, col4 FROM table_name_25 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_25 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_25 AS +SELECT + * +FROM + origin_table_25; + +CREATE TABLE table_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_26 AS +SELECT + * +FROM + origin_table_26; + +SELECT col1, col2 FROM table_name_26; + +SELECT col3, col4 FROM table_name_26 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_26 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_26 AS +SELECT + * +FROM + origin_table_26; + +CREATE TABLE table_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_27 AS +SELECT + * +FROM + origin_table_27; + +SELECT col1, col2 FROM table_name_27; + +SELECT col3, col4 FROM table_name_27 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_27 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_27 AS +SELECT + * +FROM + origin_table_27; + +CREATE TABLE table_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_28 AS +SELECT + * +FROM + origin_table_28; + +SELECT col1, col2 FROM table_name_28; + +SELECT col3, col4 FROM table_name_28 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_28 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_28 AS +SELECT + * +FROM + origin_table_28; + +CREATE TABLE table_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_29 AS +SELECT + * +FROM + origin_table_29; + +SELECT col1, col2 FROM table_name_29; + +SELECT col3, col4 FROM table_name_29 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_29 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_29 AS +SELECT + * +FROM + origin_table_29; + +CREATE TABLE table_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_30 AS +SELECT + * +FROM + origin_table_30; + +SELECT col1, col2 FROM table_name_30; + +SELECT col3, col4 FROM table_name_30 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_30 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_30 AS +SELECT + * +FROM + origin_table_30; + +CREATE TABLE table_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_31 AS +SELECT + * +FROM + origin_table_31; + +SELECT col1, col2 FROM table_name_31; + +SELECT col3, col4 FROM table_name_31 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_31 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_31 AS +SELECT + * +FROM + origin_table_31; + +CREATE TABLE table_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_32 AS +SELECT + * +FROM + origin_table_32; + +SELECT col1, col2 FROM table_name_32; + +SELECT col3, col4 FROM table_name_32 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_32 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_32 AS +SELECT + * +FROM + origin_table_32; + +CREATE TABLE table_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_33 AS +SELECT + * +FROM + origin_table_33; + +SELECT col1, col2 FROM table_name_33; + +SELECT col3, col4 FROM table_name_33 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_33 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_33 AS +SELECT + * +FROM + origin_table_33; + +CREATE TABLE table_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_34 AS +SELECT + * +FROM + origin_table_34; + +SELECT col1, col2 FROM table_name_34; + +SELECT col3, col4 FROM table_name_34 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_34 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_34 AS +SELECT + * +FROM + origin_table_34; + +CREATE TABLE table_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_35 AS +SELECT + * +FROM + origin_table_35; + +SELECT col1, col2 FROM table_name_35; + +SELECT col3, col4 FROM table_name_35 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_35 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_35 AS +SELECT + * +FROM + origin_table_35; + +CREATE TABLE table_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_36 AS +SELECT + * +FROM + origin_table_36; + +SELECT col1, col2 FROM table_name_36; + +SELECT col3, col4 FROM table_name_36 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_36 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_36 AS +SELECT + * +FROM + origin_table_36; + +CREATE TABLE table_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_37 AS +SELECT + * +FROM + origin_table_37; + +SELECT col1, col2 FROM table_name_37; + +SELECT col3, col4 FROM table_name_37 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_37 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_37 AS +SELECT + * +FROM + origin_table_37; + +CREATE TABLE table_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_38 AS +SELECT + * +FROM + origin_table_38; + +SELECT col1, col2 FROM table_name_38; + +SELECT col3, col4 FROM table_name_38 WHERE amount > 10 AND region = "US"; + +SELECT * FROM sales_38 WHERE amount > 10 AND region = "US"; + +CREATE TABLE table_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_39 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_39 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_39 AS +SELECT + * +FROM + origin_table_39; \ No newline at end of file diff --git a/benchmark/data/split_flink.sql b/benchmark/data/split_flink.sql new file mode 100644 index 00000000..0091adec --- /dev/null +++ b/benchmark/data/split_flink.sql @@ -0,0 +1,999 @@ +CREATE TABLE table_0 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_0 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_0 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_0; + +CREATE TABLE table_1 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_1 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_1 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_1; + +CREATE TABLE table_2 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_2 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_2 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_2; + +CREATE TABLE table_3 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_3 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_3 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_3; + +CREATE TABLE table_4 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_4 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_4 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_4; + +CREATE TABLE table_5 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_5 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_5 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_5; + +CREATE TABLE table_6 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_6 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_6 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_6; + +CREATE TABLE table_7 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_7 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_7 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_7; + +CREATE TABLE table_8 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_8 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_8 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_8; + +CREATE TABLE table_9 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_9 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_9 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_9; + +CREATE TABLE table_10 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_10 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_10 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_10; + +CREATE TABLE table_11 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_11 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_11 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_11; + +CREATE TABLE table_12 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_12 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_12 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_12; + +CREATE TABLE table_13 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_13 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_13 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_13; + +CREATE TABLE table_14 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_14 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_14 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_14; + +CREATE TABLE table_15 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_15 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_15 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_15; + +CREATE TABLE table_16 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_16 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_16 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_16; + +CREATE TABLE table_17 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_17 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_17 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_17; + +CREATE TABLE table_18 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_18 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_18 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_18; + +CREATE TABLE table_19 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_19 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_19 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_19; + +CREATE TABLE table_20 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_20 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_20 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_20; + +CREATE TABLE table_21 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_21 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_21 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_21; + +CREATE TABLE table_22 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_22 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_22 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_22; + +CREATE TABLE table_23 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_23 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_23 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_23; + +CREATE TABLE table_24 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_24 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_24 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_24; + +CREATE TABLE table_25 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_25 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_25 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_25; + +CREATE TABLE table_26 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_26 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_26 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_26; + +CREATE TABLE table_27 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_27 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_27 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_27; + +CREATE TABLE table_28 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_28 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_28 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_28; + +CREATE TABLE table_29 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_29 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_29 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_29; + +CREATE TABLE table_30 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_30 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_30 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_30; + +CREATE TABLE table_31 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_31 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_31 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_31; + +CREATE TABLE table_32 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_32 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_32 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_32; + +CREATE TABLE table_33 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_33 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_33 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_33; + +CREATE TABLE table_34 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_34 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_34 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_34; + +CREATE TABLE table_35 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_35 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_35 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_35; + +CREATE TABLE table_36 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_36 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_36 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_36; + +CREATE TABLE table_37 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_37 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_37 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_37; + +CREATE TABLE table_38 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_38 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_38 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_38; + +CREATE TABLE table_39 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_39 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_39 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_39; + +CREATE TABLE table_40 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_40 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_40 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_40; + +CREATE TABLE table_41 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_41 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_41 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_41; + +CREATE TABLE table_42 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_42 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_42 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_42; + +CREATE TABLE table_43 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_43 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_43 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_43; + +CREATE TABLE table_44 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_44 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_44 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_44; + +CREATE TABLE table_45 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_45 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_45 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_45; + +CREATE TABLE table_46 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_46 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_46 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_46; + +CREATE TABLE table_47 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_47 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_47 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_47; + +CREATE TABLE table_48 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_48 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_48 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_48; + +CREATE TABLE table_49 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_49 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_49 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_49; + +CREATE TABLE table_50 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_50 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_50 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_50; + +CREATE TABLE table_51 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_51 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_51 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_51; + +CREATE TABLE table_52 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_52 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_52 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_52; + +CREATE TABLE table_53 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_53 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_53 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_53; + +CREATE TABLE table_54 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_54 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_54 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_54; + +CREATE TABLE table_55 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_55 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_55 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_55; + +CREATE TABLE table_56 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_56 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_56 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_56; + +CREATE TABLE table_57 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_57 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_57 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_57; + +CREATE TABLE table_58 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_58 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_58 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_58; + +CREATE TABLE table_59 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_59 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_59 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_59; + +CREATE TABLE table_60 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_60 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_60 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_60; + +CREATE TABLE table_61 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_61 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_61 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_61; + +CREATE TABLE table_62 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_62 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_62 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_62; + +CREATE TABLE table_63 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_63 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_63 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_63; + +CREATE TABLE table_64 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_64 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_64 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_64; + +CREATE TABLE table_65 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_65 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_65 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_65; + +CREATE TABLE table_66 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_66 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_66 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_66; + +CREATE TABLE table_67 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_67 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_67 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_67; + +CREATE TABLE table_68 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_68 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_68 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_68; + +CREATE TABLE table_69 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_69 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_69 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_69; + +CREATE TABLE table_70 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_70 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_70 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_70; + +CREATE TABLE table_71 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_71 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_71 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_71; + +CREATE TABLE table_72 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_72 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_72 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_72; + +CREATE TABLE table_73 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_73 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_73 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_73; + +CREATE TABLE table_74 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_74 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_74 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_74; + +CREATE TABLE table_75 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_75 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_75 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_75; + +CREATE TABLE table_76 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_76 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_76 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_76; + +CREATE TABLE table_77 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_77 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_77 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_77; + +CREATE TABLE table_78 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_78 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_78 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_78; + +CREATE TABLE table_79 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_79 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_79 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_79; + +CREATE TABLE table_80 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_80 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_80 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_80; + +CREATE TABLE table_81 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_81 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_81 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_81; + +CREATE TABLE table_82 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_82 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_82 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_82; + +CREATE TABLE table_83 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_83 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_83 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_83; + +CREATE TABLE table_84 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_84 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_84 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_84; + +CREATE TABLE table_85 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_85 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_85 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_85; + +CREATE TABLE table_86 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_86 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_86 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_86; + +CREATE TABLE table_87 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_87 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_87 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_87; + +CREATE TABLE table_88 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_88 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_88 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_88; + +CREATE TABLE table_89 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_89 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_89 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_89; + +CREATE TABLE table_90 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_90 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_90 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_90; + +CREATE TABLE table_91 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_91 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_91 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_91; + +CREATE TABLE table_92 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_92 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_92 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_92; + +CREATE TABLE table_93 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_93 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_93 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_93; + +CREATE TABLE table_94 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_94 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_94 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_94; + +CREATE TABLE table_95 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_95 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_95 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_95; + +CREATE TABLE table_96 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_96 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_96 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_96; + +CREATE TABLE table_97 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_97 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_97 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_97; + +CREATE TABLE table_98 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_98 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_98 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_98; + +CREATE TABLE table_99 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_99 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_99 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_99; \ No newline at end of file diff --git a/benchmark/data/suggestion.sql b/benchmark/data/suggestion.sql new file mode 100644 index 00000000..0f1a176b --- /dev/null +++ b/benchmark/data/suggestion.sql @@ -0,0 +1,1066 @@ +CREATE TABLE table_0 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_0 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_0 AS +SELECT + * +FROM + origin_table_0; + +CREATE TABLE table_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_1 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_1 AS +SELECT + * +FROM + origin_table_1; + +CREATE TABLE table_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_2 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_2 AS +SELECT + * +FROM + origin_table_2; + +CREATE TABLE table_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_3 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_3 AS +SELECT + * +FROM + origin_table_3; + +CREATE TABLE table_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_4 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_4 AS +SELECT + * +FROM + origin_table_4; + +CREATE TABLE table_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_5 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_5 AS +SELECT + * +FROM + origin_table_5; + +CREATE TABLE table_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_6 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_6 AS +SELECT + * +FROM + origin_table_6; + +CREATE TABLE table_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_7 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_7 AS +SELECT + * +FROM + origin_table_7; + +CREATE TABLE table_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_8 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_8 AS +SELECT + * +FROM + origin_table_8; + +CREATE TABLE table_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_9 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_9 AS +SELECT + * +FROM + origin_table_9; + +CREATE TABLE table_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_10 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_10 AS +SELECT + * +FROM + origin_table_10; + +CREATE TABLE table_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_11 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_11 AS +SELECT + * +FROM + origin_table_11; + +CREATE TABLE table_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_12 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_12 AS +SELECT + * +FROM + origin_table_12; + +CREATE TABLE table_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_13 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_13 AS +SELECT + * +FROM + origin_table_13; + +CREATE TABLE table_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_14 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_14 AS +SELECT + * +FROM + origin_table_14; + +CREATE TABLE table_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_15 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_15 AS +SELECT + * +FROM + origin_table_15; + +CREATE TABLE table_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_16 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_16 AS +SELECT + * +FROM + origin_table_16; + +CREATE TABLE table_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_17 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_17 AS +SELECT + * +FROM + origin_table_17; + +CREATE TABLE table_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_18 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_18 AS +SELECT + * +FROM + origin_table_18; + +CREATE TABLE table_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_19 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_19 AS +SELECT + * +FROM + origin_table_19; + +CREATE TABLE table_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_20 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_20 AS +SELECT + * +FROM + origin_table_20; + +CREATE TABLE table_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_21 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_21 AS +SELECT + * +FROM + origin_table_21; + +CREATE TABLE table_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_22 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_22 AS +SELECT + * +FROM + origin_table_22; + +CREATE TABLE table_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_23 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_23 AS +SELECT + * +FROM + origin_table_23; + +CREATE TABLE table_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_24 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_24 AS +SELECT + * +FROM + origin_table_24; + +CREATE TABLE table_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_25 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_25 AS +SELECT + * +FROM + origin_table_25; + +CREATE TABLE table_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_26 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_26 AS +SELECT + * +FROM + origin_table_26; + +CREATE TABLE table_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_27 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_27 AS +SELECT + * +FROM + origin_table_27; + +CREATE TABLE table_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_28 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_28 AS +SELECT + * +FROM + origin_table_28; + +CREATE TABLE table_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_29 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_29 AS +SELECT + * +FROM + origin_table_29; + +CREATE TABLE table_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_30 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_30 AS +SELECT + * +FROM + origin_table_30; + +CREATE TABLE table_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_31 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_31 AS +SELECT + * +FROM + origin_table_31; + +CREATE TABLE table_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_32 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_32 AS +SELECT + * +FROM + origin_table_32; + +CREATE TABLE table_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_33 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_33 AS +SELECT + * +FROM + origin_table_33; + +CREATE TABLE table_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_34 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_34 AS +SELECT + * +FROM + origin_table_34; + +CREATE TABLE table_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_35 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_35 AS +SELECT + * +FROM + origin_table_35; + +CREATE TABLE table_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_36 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_36 AS +SELECT + * +FROM + origin_table_36; + +CREATE TABLE table_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_37 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_37 AS +SELECT + * +FROM + origin_table_37; + +CREATE TABLE table_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_38 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_38 AS +SELECT + * +FROM + origin_table_38; + +CREATE TABLE table_39 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_39 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_39 AS +SELECT + * +FROM + origin_table_39; + +CREATE TABLE table_40 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_40 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_40 AS +SELECT + * +FROM + origin_table_40; + +CREATE TABLE table_41 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_41 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_41 AS +SELECT + * +FROM + origin_table_41; + +CREATE TABLE table_42 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_42 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_42 AS +SELECT + * +FROM + origin_table_42; + +CREATE TABLE table_43 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_43 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_43 AS +SELECT + * +FROM + origin_table_43; + +CREATE TABLE table_44 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_44 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_44 AS +SELECT + * +FROM + origin_table_44; + +CREATE TABLE table_45 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_45 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_45 AS +SELECT + * +FROM + origin_table_45; + +CREATE TABLE table_46 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_46 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_46 AS +SELECT + * +FROM + origin_table_46; + +CREATE TABLE table_47 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_47 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_47 AS +SELECT + * +FROM + origin_table_47; + +CREATE TABLE table_48 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_48 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_48 AS +SELECT + * +FROM + origin_table_48; + +CREATE TABLE table_49 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_49 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_49 AS +SELECT + * +FROM + origin_table_49; + +CREATE TABLE table_50 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_50 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_50 AS +SELECT + * +FROM + origin_table_50; + +CREATE TABLE table_51 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_51 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_51 AS +SELECT + * +FROM + origin_table_51; + +CREATE TABLE table_52 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_52 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_52 AS +SELECT + * +FROM + origin_table_52; + +CREATE TABLE table_53 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_53 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_53 AS +SELECT + * +FROM + origin_table_53; + +CREATE TABLE table_54 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_54 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_54 AS +SELECT + * +FROM + origin_table_54; + +CREATE TABLE table_55 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_55 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_55 AS +SELECT + * +FROM + origin_table_55; + +CREATE TABLE table_56 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_56 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_56 AS +SELECT + * +FROM + origin_table_56; + +CREATE TABLE table_57 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_57 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_57 AS +SELECT + * +FROM + origin_table_57; + +CREATE TABLE table_58 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_58 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_58 AS +SELECT + * +FROM + origin_table_58; + +CREATE TABLE table_59 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_59 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_59 AS +SELECT + * +FROM + origin_table_59; + +CREATE TABLE table_60 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_60 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_60 AS +SELECT + * +FROM + origin_table_60; + +CREATE TABLE table_61 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_61 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_61 AS +SELECT + * +FROM + origin_table_61; + +CREATE TABLE table_62 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_62 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_62 AS +SELECT + * +FROM + origin_table_62; + +CREATE TABLE table_63 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_63 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_63 AS +SELECT + * +FROM + origin_table_63; + +CREATE TABLE table_64 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_64 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_64 AS +SELECT + * +FROM + origin_table_64; + +CREATE TABLE table_65 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_65 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_65 AS +SELECT + * +FROM + origin_table_65; + +CREATE TABLE table_66 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_66 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_66 AS +SELECT + * +FROM + origin_table_66; + +CREATE TABLE table_67 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_67 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_67 AS +SELECT + * +FROM + origin_table_67; + +CREATE TABLE table_68 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_68 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_68 AS +SELECT + * +FROM + origin_table_68; + +CREATE TABLE table_69 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_69 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_69 AS +SELECT + * +FROM + origin_table_69; + +CREATE TABLE table_70 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_70 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_70 AS +SELECT + * +FROM + origin_table_70; + +CREATE TABLE table_71 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_71 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_71 AS +SELECT + * +FROM + origin_table_71; + +CREATE TABLE table_72 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_72 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_72 AS +SELECT + * +FROM + origin_table_72; + +CREATE TABLE table_73 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_73 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_73 AS +SELECT + * +FROM + origin_table_73; + +CREATE TABLE table_74 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_74 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_74 AS +SELECT + * +FROM + origin_table_74; + +CREATE TABLE table_75 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_75 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_75 AS +SELECT + * +FROM + origin_table_75; + +CREATE TABLE table_76 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_76 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_76 AS +SELECT + * +FROM + origin_table_76; + +CREATE TABLE table_77 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_77 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_77 AS +SELECT + * +FROM + origin_table_77; + +CREATE TABLE table_78 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_78 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_78 AS +SELECT + * +FROM + origin_table_78; + +CREATE TABLE table_79 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_79 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_79 AS +SELECT + * +FROM + origin_table_79; + +CREATE TABLE table_80 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_80 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_80 AS +SELECT + * +FROM + origin_table_80; + +CREATE TABLE table_81 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_81 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_81 AS +SELECT + * +FROM + origin_table_81; + +CREATE TABLE table_82 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_82 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_82 AS +SELECT + * +FROM + origin_table_82; + +CREATE TABLE table_83 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_83 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_83 AS +SELECT + * +FROM + origin_table_83; + +CREATE TABLE table_84 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_84 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_84 AS +SELECT + * +FROM + origin_table_84; + +CREATE TABLE table_85 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_85 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_85 AS +SELECT + * +FROM + origin_table_85; + +CREATE TABLE table_86 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_86 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_86 AS +SELECT + * +FROM + origin_table_86; + +CREATE TABLE table_87 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_87 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_87 AS +SELECT + * +FROM + origin_table_87; + +CREATE TABLE table_88 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_88 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_88 AS +SELECT + * +FROM + origin_table_88; + +CREATE TABLE table_89 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_89 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_89 AS +SELECT + * +FROM + origin_table_89; + +CREATE TABLE table_90 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_90 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_90 AS +SELECT + * +FROM + origin_table_90; + +CREATE TABLE table_91 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_91 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_91 AS +SELECT + * +FROM + origin_table_91; + +CREATE TABLE table_92 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_92 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_92 AS +SELECT + * +FROM + origin_table_92; + +CREATE TABLE table_93 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_93 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_93 AS +SELECT + * +FROM + origin_table_93; + +CREATE TABLE table_94 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_94 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_94 AS +SELECT + * +FROM + origin_table_94; + +CREATE TABLE table_95 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_95 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_95 AS +SELECT + * +FROM + origin_table_95; + +CREATE TABLE table_96 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_96 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_96 AS +SELECT + * +FROM + origin_table_96; + +CREATE TABLE table_97 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_97 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_97 AS +SELECT + * +FROM + origin_table_97; + +CREATE TABLE table_98 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_98 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_98 AS +SELECT + * +FROM + origin_table_98; + +CREATE TABLE table_99 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_99 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_99 AS +SELECT + * +FROM + origin_table_99; + +CREATE TABLE table_100 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE table_exists_100 (col1 INT, col2 INT, col3 INT); + +CREATE TABLE derived_table_100 AS +SELECT + * +FROM + origin_table_100; + +SELECT + A.user_id, + A.user_name, + B.total_order_amount, + C.average_product_price, + D.max_order_date, + E.min_quantity, + F.product_category_count +FROM + (SELECT user_id, user_name FROM ) A +JOIN + (SELECT user_id, SUM(order_total) AS total_order_amount + FROM orders + GROUP BY user_id) B ON A.user_id = B.user_id +JOIN + (SELECT O.user_id, AVG(P.price) AS average_product_price + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + JOIN products P ON OI.product_id = P.product_id + GROUP BY O.user_id) C ON A.user_id = C.user_id +JOIN + (SELECT user_id, MAX(order_date) AS max_order_date + FROM orders + GROUP BY user_id) D ON A.user_id = D.user_id +JOIN + (SELECT O.user_id, MIN(OI.quantity) AS min_quantity + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + GROUP BY O.user_id) E ON A.user_id = E.user_id +JOIN + (SELECT P.category_id, COUNT(DISTINCT P.product_id) AS product_category_count + FROM products P + JOIN categories C ON P.category_id = C.category_id + GROUP BY P.category_id) F ON C.user_id = F.category_id +JOIN + (SELECT O.user_id, COUNT(OI.product_id) AS product_count + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + GROUP BY O.user_id) G ON A.user_id = G.user_id +JOIN + (SELECT P.product_id, MAX(O.order_total) AS max_product_order_total + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + JOIN orders O ON OI.order_id = O.order_id + GROUP BY P.product_id) H ON G.product_count = H.product_id +JOIN + (SELECT P.product_id, MIN(O.order_total) AS min_product_order_total + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + JOIN orders O ON OI.order_id = O.order_id + GROUP BY P.product_id) I ON H.product_id = I.product_id +JOIN + (SELECT P.product_id, AVG(OI.quantity) AS avg_quantity_per_product + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + GROUP BY P.product_id) J ON I.product_id = J.product_id; \ No newline at end of file diff --git a/benchmark/data/suggestion_flink.sql b/benchmark/data/suggestion_flink.sql new file mode 100644 index 00000000..18897f26 --- /dev/null +++ b/benchmark/data/suggestion_flink.sql @@ -0,0 +1,1056 @@ +CREATE TABLE table_0 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_0 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_0 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_0; + +CREATE TABLE table_1 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_1 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_1 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_1; + +CREATE TABLE table_2 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_2 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_2 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_2; + +CREATE TABLE table_3 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_3 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_3 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_3; + +CREATE TABLE table_4 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_4 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_4 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_4; + +CREATE TABLE table_5 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_5 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_5 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_5; + +CREATE TABLE table_6 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_6 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_6 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_6; + +CREATE TABLE table_7 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_7 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_7 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_7; + +CREATE TABLE table_8 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_8 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_8 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_8; + +CREATE TABLE table_9 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_9 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_9 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_9; + +CREATE TABLE table_10 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_10 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_10 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_10; + +CREATE TABLE table_11 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_11 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_11 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_11; + +CREATE TABLE table_12 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_12 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_12 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_12; + +CREATE TABLE table_13 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_13 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_13 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_13; + +CREATE TABLE table_14 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_14 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_14 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_14; + +CREATE TABLE table_15 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_15 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_15 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_15; + +CREATE TABLE table_16 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_16 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_16 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_16; + +CREATE TABLE table_17 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_17 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_17 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_17; + +CREATE TABLE table_18 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_18 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_18 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_18; + +CREATE TABLE table_19 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_19 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_19 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_19; + +CREATE TABLE table_20 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_20 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_20 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_20; + +CREATE TABLE table_21 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_21 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_21 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_21; + +CREATE TABLE table_22 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_22 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_22 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_22; + +CREATE TABLE table_23 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_23 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_23 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_23; + +CREATE TABLE table_24 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_24 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_24 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_24; + +CREATE TABLE table_25 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_25 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_25 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_25; + +CREATE TABLE table_26 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_26 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_26 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_26; + +CREATE TABLE table_27 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_27 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_27 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_27; + +CREATE TABLE table_28 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_28 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_28 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_28; + +CREATE TABLE table_29 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_29 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_29 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_29; + +CREATE TABLE table_30 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_30 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_30 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_30; + +CREATE TABLE table_31 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_31 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_31 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_31; + +CREATE TABLE table_32 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_32 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_32 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_32; + +CREATE TABLE table_33 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_33 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_33 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_33; + +CREATE TABLE table_34 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_34 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_34 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_34; + +CREATE TABLE table_35 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_35 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_35 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_35; + +CREATE TABLE table_36 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_36 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_36 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_36; + +CREATE TABLE table_37 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_37 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_37 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_37; + +CREATE TABLE table_38 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_38 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_38 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_38; + +CREATE TABLE table_39 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_39 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_39 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_39; + +CREATE TABLE table_40 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_40 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_40 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_40; + +CREATE TABLE table_41 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_41 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_41 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_41; + +CREATE TABLE table_42 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_42 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_42 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_42; + +CREATE TABLE table_43 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_43 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_43 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_43; + +CREATE TABLE table_44 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_44 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_44 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_44; + +CREATE TABLE table_45 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_45 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_45 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_45; + +CREATE TABLE table_46 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_46 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_46 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_46; + +CREATE TABLE table_47 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_47 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_47 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_47; + +CREATE TABLE table_48 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_48 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_48 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_48; + +CREATE TABLE table_49 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_49 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_49 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_49; + +CREATE TABLE table_50 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_50 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_50 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_50; + +CREATE TABLE table_51 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_51 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_51 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_51; + +CREATE TABLE table_52 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_52 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_52 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_52; + +CREATE TABLE table_53 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_53 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_53 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_53; + +CREATE TABLE table_54 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_54 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_54 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_54; + +CREATE TABLE table_55 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_55 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_55 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_55; + +CREATE TABLE table_56 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_56 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_56 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_56; + +CREATE TABLE table_57 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_57 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_57 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_57; + +CREATE TABLE table_58 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_58 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_58 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_58; + +CREATE TABLE table_59 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_59 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_59 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_59; + +CREATE TABLE table_60 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_60 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_60 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_60; + +CREATE TABLE table_61 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_61 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_61 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_61; + +CREATE TABLE table_62 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_62 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_62 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_62; + +CREATE TABLE table_63 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_63 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_63 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_63; + +CREATE TABLE table_64 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_64 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_64 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_64; + +CREATE TABLE table_65 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_65 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_65 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_65; + +CREATE TABLE table_66 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_66 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_66 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_66; + +CREATE TABLE table_67 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_67 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_67 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_67; + +CREATE TABLE table_68 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_68 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_68 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_68; + +CREATE TABLE table_69 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_69 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_69 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_69; + +CREATE TABLE table_70 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_70 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_70 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_70; + +CREATE TABLE table_71 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_71 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_71 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_71; + +CREATE TABLE table_72 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_72 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_72 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_72; + +CREATE TABLE table_73 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_73 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_73 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_73; + +CREATE TABLE table_74 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_74 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_74 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_74; + +CREATE TABLE table_75 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_75 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_75 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_75; + +CREATE TABLE table_76 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_76 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_76 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_76; + +CREATE TABLE table_77 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_77 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_77 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_77; + +CREATE TABLE table_78 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_78 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_78 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_78; + +CREATE TABLE table_79 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_79 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_79 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_79; + +CREATE TABLE table_80 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_80 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_80 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_80; + +CREATE TABLE table_81 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_81 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_81 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_81; + +CREATE TABLE table_82 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_82 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_82 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_82; + +CREATE TABLE table_83 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_83 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_83 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_83; + +CREATE TABLE table_84 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_84 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_84 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_84; + +CREATE TABLE table_85 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_85 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_85 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_85; + +CREATE TABLE table_86 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_86 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_86 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_86; + +CREATE TABLE table_87 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_87 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_87 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_87; + +CREATE TABLE table_88 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_88 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_88 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_88; + +CREATE TABLE table_89 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_89 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_89 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_89; + +CREATE TABLE table_90 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_90 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_90 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_90; + +CREATE TABLE table_91 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_91 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_91 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_91; + +CREATE TABLE table_92 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_92 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_92 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_92; + +CREATE TABLE table_93 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_93 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_93 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_93; + +CREATE TABLE table_94 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_94 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_94 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_94; + +CREATE TABLE table_95 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_95 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_95 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_95; + +CREATE TABLE table_96 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_96 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_96 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_96; + +CREATE TABLE table_97 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_97 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_97 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_97; + +CREATE TABLE table_98 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_98 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_98 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_98; + +CREATE TABLE table_99 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE table_exists_99 (col1 INT, col2 INT, col3 INT) with ("a" = "1"); + +CREATE TABLE my_ctas_table_99 WITH ('connector' = 'kafka') +AS SELECT + id +FROM + source_table_99; + +SELECT + A.user_id, + A.user_name, + B.total_order_amount, + C.average_product_price, + D.max_order_date, + E.min_quantity, + F.product_category_count +FROM + (SELECT user_id, user_name FROM ) A +JOIN + (SELECT user_id, SUM(order_total) AS total_order_amount + FROM orders + GROUP BY user_id) B ON A.user_id = B.user_id +JOIN + (SELECT O.user_id, AVG(P.price) AS average_product_price + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + JOIN products P ON OI.product_id = P.product_id + GROUP BY O.user_id) C ON A.user_id = C.user_id +JOIN + (SELECT user_id, MAX(order_date) AS max_order_date + FROM orders + GROUP BY user_id) D ON A.user_id = D.user_id +JOIN + (SELECT O.user_id, MIN(OI.quantity) AS min_quantity + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + GROUP BY O.user_id) E ON A.user_id = E.user_id +JOIN + (SELECT P.category_id, COUNT(DISTINCT P.product_id) AS product_category_count + FROM products P + JOIN categories C ON P.category_id = C.category_id + GROUP BY P.category_id) F ON C.user_id = F.category_id +JOIN + (SELECT O.user_id, COUNT(OI.product_id) AS product_count + FROM orders O + JOIN order_items OI ON O.order_id = OI.order_id + GROUP BY O.user_id) G ON A.user_id = G.user_id +JOIN + (SELECT P.product_id, MAX(O.order_total) AS max_product_order_total + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + JOIN orders O ON OI.order_id = O.order_id + GROUP BY P.product_id) H ON G.product_count = H.product_id +JOIN + (SELECT P.product_id, MIN(O.order_total) AS min_product_order_total + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + JOIN orders O ON OI.order_id = O.order_id + GROUP BY P.product_id) I ON H.product_id = I.product_id +JOIN + (SELECT P.product_id, AVG(OI.quantity) AS avg_quantity_per_product + FROM products P + JOIN order_items OI ON P.product_id = OI.product_id + GROUP BY P.product_id) J ON I.product_id = J.product_id; \ No newline at end of file diff --git a/benchmark/data/trino/create.sql b/benchmark/data/trino/create.sql deleted file mode 100644 index eb2b026e..00000000 --- a/benchmark/data/trino/create.sql +++ /dev/null @@ -1,95 +0,0 @@ -CREATE TABLE foo AS SELECT * FROM t; -CREATE TABLE foo(x) AS SELECT a FROM t; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t; -CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t; -CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE foo AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo AS SELECT * FROM t; -CREATE TABLE foo(x) AS SELECT a FROM t; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t; -CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t; -CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE foo AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo AS SELECT * FROM t; -CREATE TABLE foo(x) AS SELECT a FROM t; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t; -CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t; -CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE foo AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo AS SELECT * FROM t; -CREATE TABLE foo(x) AS SELECT a FROM t; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t; -CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t; -CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE foo AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo AS SELECT * FROM t; -CREATE TABLE foo(x) AS SELECT a FROM t; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE IF NOT EXISTS foo AS SELECT * FROM t; -CREATE TABLE IF NOT EXISTS foo(x) AS SELECT a FROM t; -CREATE TABLE IF NOT EXISTS foo(x,y) AS SELECT a,b FROM t; -CREATE TABLE foo AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t; -CREATE TABLE foo WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT * FROM t WITH NO DATA; -CREATE TABLE foo(x) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( string = 'bar', long = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; -CREATE TABLE foo(x,y) COMMENT 'test'WITH ( "string" = 'bar', "long" = 42, computed = 'ban' || 'ana', a = ARRAY[ 'v1', 'v2' ] ) AS SELECT a,b FROM t WITH NO DATA; diff --git a/benchmark/data/trino/select.sql b/benchmark/data/trino/select.sql deleted file mode 100644 index 471b91de..00000000 --- a/benchmark/data/trino/select.sql +++ /dev/null @@ -1,117 +0,0 @@ --- DOUBLE IN Query -SELECT 123.456E7 FROM DUAL; --- GROUP BY -SELECT * FROM table1 GROUP BY a; -SELECT * FROM table1 GROUP BY a, b; -SELECT * FROM table1 GROUP BY (); --- GROUP BY GROUPING SETS -SELECT * FROM table1 GROUP BY GROUPING SETS (a); -SELECT a, b, GROUPING(a, b) FROM table1 GROUP BY GROUPING SETS ((a), (b)); --- GROUP BY ROLLUP -SELECT * FROM table1 GROUP BY ALL GROUPING SETS ((a, b), (a), ()), CUBE (c), ROLLUP (d); -SELECT * FROM table1 GROUP BY DISTINCT GROUPING SETS ((a, b), (a), ()), CUBE (c), ROLLUP (d); --- GROUP BY CUBE -SELECT origin_state, destination_state, sum(package_weight) -FROM shipping -GROUP BY CUBE (origin_state, destination_state); --- GROUP BY Combining multiple grouping expressions -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY - GROUPING SETS ((origin_state, destination_state)), - ROLLUP (origin_zip); - -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY GROUPING SETS ( - (origin_state, destination_state, origin_zip), - (origin_state, destination_state) -); - -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY - GROUPING SETS ((origin_state, destination_state)), - GROUPING SETS ((origin_zip), ()); --- GROUP BY ALL and DISTINCT quantifiers -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY ALL - CUBE (origin_state, destination_state), - ROLLUP (origin_state, origin_zip); - -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY GROUPING SETS ( - (origin_state, destination_state, origin_zip), - (origin_state, origin_zip), - (origin_state, destination_state, origin_zip), - (origin_state, origin_zip), - (origin_state, destination_state), - (origin_state), - (origin_state, destination_state), - (origin_state), - (origin_state, destination_state), - (origin_state), - (destination_state), - () -); - -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY DISTINCT - CUBE (origin_state, destination_state), - ROLLUP (origin_state, origin_zip); - -SELECT origin_state, destination_state, origin_zip, sum(package_weight) -FROM shipping -GROUP BY GROUPING SETS ( - (origin_state, destination_state, origin_zip), - (origin_state, origin_zip), - (origin_state, destination_state), - (origin_state), - (destination_state), - () -); - --- GROUP BY GROUPING operation -SELECT origin_state, origin_zip, destination_state, sum(package_weight), - grouping(origin_state, origin_zip, destination_state) -FROM shipping -GROUP BY GROUPING SETS ( - (origin_state), - (origin_state, origin_zip), - (destination_state) -); - --- ORDER BY -SELECT * FROM table1 ORDER BY a; --- Select expressions -SELECT (CAST(ROW(1, true) AS ROW(field1 bigint, field2 boolean))).* AS (alias1, alias2); -SELECT (CAST(ROW(1, true) AS ROW(field1 bigint, field2 boolean))).*; -SELECT (ROW(1, true)).*; --- LIMIT -SELECT * FROM table1 LIMIT 2; -SELECT * FROM table1 LIMIT ALL; -SELECT * FROM (VALUES (1, '1'), (2, '2')) LIMIT ALL; --- HAVING -SELECT count(*), mktsegment, nationkey, - CAST(sum(acctbal) AS bigint) AS totalbal -FROM customer -GROUP BY mktsegment, nationkey -HAVING sum(acctbal) > 5700000 -ORDER BY totalbal DESC; --- WINDOW -SELECT orderkey, clerk, totalprice, - rank() OVER w AS rnk -FROM orders -WINDOW w AS (PARTITION BY clerk ORDER BY totalprice DESC) -ORDER BY count() OVER w, clerk, rnk --- AGGREGATION FILTER/ ORDER BY -SELECT SUM(x) FILTER (WHERE x > 4); -SELECT array_agg(x ORDER BY t.y) FROM t; --- INTERSECT -SELECT 123 INTERSECT DISTINCT SELECT 123 INTERSECT ALL SELECT 123; --- substring_built_in_function -SELECT substring('string' FROM 2); -SELECT substring('string' FROM 2 FOR 3); diff --git a/benchmark/data/update.sql b/benchmark/data/update.sql new file mode 100644 index 00000000..5b130786 --- /dev/null +++ b/benchmark/data/update.sql @@ -0,0 +1,1010 @@ +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); + +UPDATE database_name.table_name +SET + column14 = ( + SELECT SUM(column15) + FROM database_name.aggregate_table + WHERE aggregate_table.agg_id = table_name.id + ), + column16 = 'Processed' +WHERE + column17 > ( + SELECT AVG(column17) + FROM database_name.threshold_table + ) + AND column18 LIKE '%pattern%' + AND column19 IS NOT NULL + AND ( + column20 = 'specific_value' + OR column21 BETWEEN 10 AND 20 + ) + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ); + +UPDATE database_name.table_name +SET + column22 = ( + SELECT MIN(column23) + FROM database_name.min_table + WHERE min_table.min_id = table_name.id + ), + column24 = CASE + WHEN column25 > 200 THEN 'Very High' + WHEN column25 BETWEEN 100 AND 200 THEN 'High' + WHEN column25 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column26 = column26 * 1.1, + column27 = ( + SELECT column28 + FROM database_name.lookup_table + WHERE lookup_table.lookup_id = table_name.id + ), + column29 = 'Updated' +WHERE + column30 IN (SELECT column30 FROM database_name.filter_table WHERE filter_condition = 'active') + AND column31 = 'pending' + AND column32 < (SELECT MAX(column32) FROM database_name.limit_table) + AND ( + column33 = 'value1' + OR column34 IN ('value2', 'value3', 'value4') + ) + AND column35 BETWEEN '2023-06-01' AND '2023-12-31'; + +UPDATE database_name.table_name +SET + column36 = ( + SELECT COUNT(*) + FROM database_name.count_table + WHERE count_table.count_id = table_name.id + ), + column37 = 'Processed' +WHERE + column38 > 0 + AND column39 IN (SELECT column39 FROM database_name.subset_table WHERE subset_condition = 'true') + AND column40 = 'active' + AND NOT EXISTS ( + SELECT 1 + FROM database_name.exclude_table e + WHERE e.exclude_id = table_name.id + AND e.exclude_condition = 'exclude' + ) + AND column41 IS NOT NULL + AND ( + column42 = 'specific_value' + OR column43 BETWEEN 5 AND 15 + ) + AND column44 IN ( + SELECT column44 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ); + +UPDATE database_name.table_name +SET + column45 = ( + SELECT AVG(column46) + FROM database_name.average_table + WHERE average_table.avg_id = table_name.id + ), + column47 = CASE + WHEN column48 > 300 THEN 'Extremely High' + WHEN column48 BETWEEN 200 AND 300 THEN 'Very High' + WHEN column48 BETWEEN 100 AND 200 THEN 'High' + ELSE 'Moderate' + END, + column49 = column49 / 1.2, + column50 = 'Updated' +WHERE + column51 IN (SELECT column51 FROM database_name.active_table WHERE active_condition = 'active') + AND column52 = 'valid' + AND column53 BETWEEN '2024-01-01' AND '2024-06-30' + AND EXISTS ( + SELECT 1 + FROM database_name.related_table r + WHERE r.related_id = table_name.id + AND r.related_status = 'active' + ) + AND column54 NOT IN ( + SELECT column54 + FROM database_name.exclude_table + WHERE exclude_condition = 'inactive' + ); + +UPDATE database_name.table_name +SET + column1 = CASE + WHEN column2 > 100 THEN 'High' + WHEN column2 BETWEEN 50 AND 100 THEN 'Medium' + ELSE 'Low' + END, + column3 = column3 + 1.5, + column4 = ( + SELECT AVG(column5) + FROM database_name.other_table + WHERE table_name.id = other_table.id + ), + column6 = ( + SELECT COUNT(*) + FROM database_name.yet_another_table + WHERE yet_another_table.foreign_key = table_name.id + ), + column7 = ( + SELECT MAX(column8) + FROM database_name.different_table + WHERE different_table.link_id = table_name.id + ), + column8 = 'Updated' +WHERE + column9 IN (SELECT column9 FROM database_name.another_table WHERE condition_column = 'some_condition') + AND column10 = 'active' + AND column11 BETWEEN '2023-01-01' AND '2023-12-31' + AND EXISTS ( + SELECT 1 + FROM database_name.yet_another_table y + WHERE y.foreign_key = table_name.id + AND y.status = 'valid' + ) + AND column12 IN ( + SELECT column12 + FROM database_name.reference_table + WHERE reference_table.ref_column = table_name.ref_column + ) + AND column13 NOT IN ( + SELECT column13 + FROM database_name.exclude_table + WHERE exclude_table.exclusion_column = table_name.exclusion_column + ); diff --git a/benchmark/run.ts b/benchmark/run.ts index 6992c34d..0f97b5e6 100644 --- a/benchmark/run.ts +++ b/benchmark/run.ts @@ -5,66 +5,36 @@ import SqlBenchmark, { languageNameMap, languages } from './sqlBenchmark'; import type { Language } from './sqlBenchmark'; import inquirer from 'inquirer'; import chalk from 'chalk'; +import config from './benchmark.config'; import { Table } from 'console-table-printer'; const argv = argsParser(process.argv.slice(2)); const isChooseAll = argv.lang === 'all'; - -type TestFile = { - /** Benchmark Name */ - name: string; - /** Test sql name */ - sqlFileName: string; - /** Test run times */ - loopTimes?: number; - /** Test method name of parser */ - testTypes: string[]; - /** Exclude languages */ - excludes?: Language[]; - /** Include languages */ - includes?: Language[]; -}; - -const testFiles: TestFile[] = [ - { - name: 'Query Collection (100 Rows)', - sqlFileName: 'select.sql', - loopTimes: 3, - testTypes: ['validate', 'getAllTokens'], - }, - { - name: 'Select All Entities', - sqlFileName: 'select.sql', - loopTimes: 1, - testTypes: ['getAllEntities'], - includes: ['hive'], - }, - { - name: 'Create Table (100 Rows)', - sqlFileName: 'create.sql', - loopTimes: 3, - testTypes: ['validate', 'getAllTokens'], - }, -]; +const testFiles = config.testFiles; let benchmarkResults: SqlBenchmark[] = []; -const readSql = (fileName: string, lang: string) => { - const sqlPath = path.join(__dirname, `./data/${lang}/${fileName}`); +const readSql = (fileName: string) => { + const sqlPath = path.join(__dirname, `./data/${fileName}`); if (!fs.existsSync(sqlPath)) return ''; return fs.readFileSync(sqlPath, 'utf-8'); }; -const readParams = (lang: string) => { - const paramsPath = path.join(__dirname, `./data/${lang}/params.json`); +const readParams = () => { + const paramsPath = path.join(__dirname, `./data/params.json`); if (!fs.existsSync(paramsPath)) return null; return fs.readFileSync(paramsPath, 'utf-8'); }; const getParams = (originalParams: any, sqlFileName: string, methodType: string): any[] => { if (!originalParams) return ['$sql']; - const fileName = sqlFileName.substring(0, sqlFileName.lastIndexOf('.sql') + 1); - return originalParams[fileName]?.[methodType] || ['$sql']; + try { + const params = JSON.parse(originalParams); + const fileName = sqlFileName.substring(0, sqlFileName.lastIndexOf('.sql')); + return params[fileName]?.[methodType] || ['$sql']; + } catch (error) { + return ['$sql']; + } }; const askForSaveResult = () => { @@ -122,8 +92,10 @@ const printSummaryReport = () => { langsCostTime[lang] = costTime ?? '-'; }); + if (rows.some((row) => row.name === name && row.testType === testType)) return; + rows.push({ - name: name, + name, testType, ...langsCostTime, }); @@ -144,12 +116,12 @@ const printSummaryReport = () => { const benchmark = (lang: Language) => { const sqlBenchmark = new SqlBenchmark(lang); - const originalParams = readParams(lang); + const originalParams = readParams(); testFiles.forEach((testInfo) => { const { name, sqlFileName, testTypes, loopTimes, excludes, includes } = testInfo; if (excludes?.includes(lang) || (includes?.length && !includes.includes(lang))) return; - const sql = readSql(sqlFileName, lang); + const sql = readSql(sqlFileName); const sqlRows = sql.split('\n').length; testTypes.forEach((type) => { const params = getParams(originalParams, sqlFileName, type); diff --git a/benchmark/sqlBenchmark.ts b/benchmark/sqlBenchmark.ts index f31eff64..a4de6704 100644 --- a/benchmark/sqlBenchmark.ts +++ b/benchmark/sqlBenchmark.ts @@ -15,11 +15,26 @@ export type BenchmarkResult = { lastCostTime?: number; }; +// 过滤掉异常数据,m为判断为异常值的标准差倍数 +const removeOutliers = (data, m = 2) => { + if (data.length <= 2) return data; + const mean = data.reduce((a, b) => a + b, 0) / data.length; + const standardDeviation = Math.sqrt( + data.map((x) => Math.pow(x - mean, 2)).reduce((a, b) => a + b) / data.length + ); + + return data.filter((x) => Math.abs(x - mean) < m * standardDeviation); +}; + const tableColumns = [ { name: 'name', title: 'Benchmark Name', }, + { + name: 'type', + title: 'Method Name', + }, { name: 'rows', title: 'SQL Rows', @@ -40,10 +55,6 @@ const tableColumns = [ name: 'loopTimes', title: 'Loops', }, - { - name: 'type', - title: 'Type', - }, ]; /** @@ -52,7 +63,6 @@ const tableColumns = [ export const languageNameMap = { hive: 'HiveSQL', mysql: 'MySQL', - plsql: 'PLSQL', flink: 'FlinkSQL', spark: 'SparkSQL', postgresql: 'PostgreSQL', @@ -74,12 +84,12 @@ class SqlBenchmark { public readonly language: string; - private _DEFAULT_LOOP_TIMES = 3; + private _DEFAULT_LOOP_TIMES = 5; /** * If current average time difference from last time grater than DIFF_RATIO, we will highlight that record. */ - private _HIGHLIGHT_DIFF_RATIO = 0.1; + private _HIGHLIGHT_DIFF_RATIO = 0.15; private _lastResultsCache: BenchmarkResult[] | null = null; @@ -90,18 +100,15 @@ class SqlBenchmark { */ getSqlParser(): BasicSQL { const caches = Object.keys(require.cache); - const cacheModules = [ - path.join(__dirname, `../src/parser/common/`), - path.join(__dirname, `../src/parser/${this.language}/`), - path.join(__dirname, `../src/lib/${this.language}/`), - path.normalize(require.resolve('antlr4ng')), - ]; - caches - .filter((moduleName) => - cacheModules.some((cacheModuleName) => moduleName.includes(cacheModuleName)) - ) - .forEach((moduleName) => delete require.cache[moduleName]); - const Parser = require(path.join(__dirname, `../src/parser/${this.language}/index.ts`))[ + caches.forEach((moduleName) => { + const module = require.cache[moduleName]!; + // Fix Memory Leak + if (module.parent) { + module.parent.children = []; + } + delete require.cache[moduleName]; + }); + const Parser = require(path.resolve(`src/parser/${this.language}/index.ts`))[ languageNameMap[this.language] ]; return new Parser(); @@ -111,8 +118,8 @@ class SqlBenchmark { * @param type Which parser method you want to run * @param name Benchmark name * @param params Parser method parameters - * @param params Rows count of sql - * @param loopTimes Loop times, default run 3 times + * @param sqlRows Rows count of sql + * @param loopTimes Loop times, default run 5 times */ run( type: string, @@ -127,14 +134,17 @@ class SqlBenchmark { for (let i = 0; i < loopTimes; i++) { const parser = this.getSqlParser(); if (!parser[type] || typeof parser[type] !== 'function') return; + const startTime = performance.now(); parser[type](...params); const costTime = performance.now() - startTime; costTimes.push(Math.round(costTime)); } - - const avgTime = Math.round(costTimes.reduce((prev, curr) => prev + curr, 0) / loopTimes); + const filteredData = removeOutliers(costTimes); + const avgTime = Math.round( + filteredData.reduce((prev, curr) => prev + curr, 0) / filteredData.length + ); const result = { name, avgTime, diff --git a/package.json b/package.json index 5bcbe1c6..dcc92a5d 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "jest": "^29.5.0", "lint-staged": "12.5.0", "prettier": "^3.0.3", + "semver": "^7.6.2", "standard-version": "^9.5.0", "tsx": "^4.7.1", "typescript": "^5.0.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 796803ea..0640a74d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,6 +22,7 @@ specifiers: jest: ^29.5.0 lint-staged: 12.5.0 prettier: ^3.0.3 + semver: ^7.6.2 standard-version: ^9.5.0 tsx: ^4.7.1 typescript: ^5.0.4 @@ -51,6 +52,7 @@ devDependencies: jest: 29.5.0_@types+node@18.16.16 lint-staged: 12.5.0 prettier: 3.0.3 + semver: 7.6.2 standard-version: 9.5.0 tsx: 4.7.1 typescript: 5.0.4 @@ -3342,7 +3344,7 @@ packages: jest-util: 29.5.0 natural-compare: 1.4.0 pretty-format: 29.5.0 - semver: 7.5.4 + semver: 7.6.2 transitivePeerDependencies: - supports-color dev: true @@ -3847,7 +3849,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.12.1 - semver: 7.5.4 + semver: 7.6.2 validate-npm-package-license: 3.0.4 dev: true @@ -4306,20 +4308,18 @@ packages: hasBin: true dev: true - /semver/7.5.1: - resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} + /semver/7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 dev: true - /semver/7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver/7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 dev: true /shebang-command/2.0.0: @@ -4455,7 +4455,7 @@ packages: figures: 3.2.0 find-up: 5.0.0 git-semver-tags: 4.1.1 - semver: 7.5.1 + semver: 7.6.2 stringify-package: 1.0.1 yargs: 16.2.0 dev: true diff --git a/scripts/benchmark.js b/scripts/benchmark.js index 84754bc4..5c05dcdd 100644 --- a/scripts/benchmark.js +++ b/scripts/benchmark.js @@ -4,6 +4,7 @@ const fs = require('fs'); const argv = require('yargs-parser')(process.argv.slice(2)); const inquirer = require('inquirer'); const chalk = require('chalk'); +const semver = require('semver'); const outputPath = path.resolve(__dirname, '../src/lib'); const languages = fs.readdirSync(outputPath).filter((item) => { @@ -22,6 +23,28 @@ function runBenchmark(language) { console.info(chalk.green('Executing:'), chalk.gray(tsx.spawnargs.join(' '))); } +function checkVersion() { + const currentVersion = process.versions.node; + const minVersion = '16.14.0'; + const recommendedVersion = '21.6.1'; + if (semver.lt(currentVersion, minVersion)) { + console.error( + chalk.bold.red( + `Current Node.js version (v${currentVersion}) is lower than required version (v${minVersion})` + ) + ); + return false; + } else { + if (semver.lt(currentVersion, recommendedVersion)) + console.warn( + chalk.bold.bgCyan( + `Node.js version v${recommendedVersion} is recommended, otherwise there may be a memory leak!` + ) + ); + return true; + } +} + function prompt() { inquirer .prompt([ @@ -39,6 +62,7 @@ function prompt() { } function main() { + if (!checkVersion()) return; if (argv.lang) { const supportedLanguage = languages.some((language) => language === argv.lang); if (supportedLanguage || argv.lang === 'All Languages') { diff --git a/src/grammar/impala/ImpalaSqlParser.g4 b/src/grammar/impala/ImpalaSqlParser.g4 index 4f910793..198db2b3 100644 --- a/src/grammar/impala/ImpalaSqlParser.g4 +++ b/src/grammar/impala/ImpalaSqlParser.g4 @@ -169,7 +169,7 @@ alterPartitionCache ; changeColumnDefine - : KW_ALTER KW_TABLE tableNamePath KW_CHANGE KW_COLUMN columnSpecWithKudu + : KW_ALTER KW_TABLE tableNamePath KW_CHANGE columnNamePath columnSpecWithKudu ; alterDropSingleColumn @@ -635,7 +635,7 @@ kuduColumnDefinition ; columnSpecWithKudu - : columnSpec? (kuduAttributes kuduAttributes*?)? + : columnSpec (kuduAttributes kuduAttributes*?)? ; createColumnSpecWithKudu diff --git a/src/grammar/mysql/MySqlParser.g4 b/src/grammar/mysql/MySqlParser.g4 index 8cb1e3eb..328a5589 100644 --- a/src/grammar/mysql/MySqlParser.g4 +++ b/src/grammar/mysql/MySqlParser.g4 @@ -75,6 +75,7 @@ ddlStatement | createLogfileGroup | createProcedure | createFunction + | createFunctionLoadable | createServer | createTable | createTablespaceInnodb @@ -266,6 +267,22 @@ createProcedure )* ')' routineOption* routineBody ; +createFunction + : KW_CREATE ownerStatement? KW_AGGREGATE? KW_FUNCTION ifNotExists? functionNameCreate '(' functionParameter? ( + ',' functionParameter + )* ')' KW_RETURNS dataType routineOption* (routineBody | returnStatement) + ; + +// https://dev.mysql.com/doc/refman/8.0/en/create-function-loadable.html +createFunctionLoadable + : KW_CREATE KW_AGGREGATE? KW_FUNCTION ifNotExists? functionNameCreate KW_RETURNS returnType=( + KW_STRING + | KW_INTEGER + | KW_REAL + | KW_DECIMAL + ) KW_SONAME STRING_LITERAL + ; + createRole : KW_CREATE KW_ROLE ifNotExists? userOrRoleNames ; @@ -310,7 +327,7 @@ createTablespaceNdb ; createTrigger - : KW_CREATE ownerStatement? KW_TRIGGER ifNotExists? trigger_name=fullId triggerTime=( + : KW_CREATE ownerStatement? ifNotExists? KW_TRIGGER ifNotExists? trigger_name=fullId triggerTime=( KW_BEFORE | KW_AFTER ) triggerEvent=(KW_INSERT | KW_UPDATE | KW_DELETE) KW_ON tableName KW_FOR KW_EACH KW_ROW ( @@ -420,6 +437,10 @@ procedureParameter : direction=(KW_IN | KW_OUT | KW_INOUT)? paramName=uid dataType ; +functionParameter + : paramName=uid dataType + ; + routineOption : KW_COMMENT STRING_LITERAL # routineComment | KW_LANGUAGE KW_SQL # routineLanguage @@ -907,19 +928,6 @@ replaceStatement )? (('(' columnNames ')')? replaceStatementValuesOrSelectOrTable | setAssignmentList) ; -// selectStatement -// : querySpecification lockClause? # simpleSelect -// | querySpecificationNointo lockClause? intoClause? # simpleSelect -// | queryExpression lockClause? # parenthesisSelect -// | querySpecificationNointo unionStatement+ ( -// KW_UNION unionType=(KW_ALL | KW_DISTINCT)? (querySpecification | queryExpression) -// )? orderByClause? limitClause? lockClause? # unionSelect -// | queryExpressionNointo unionParenthesis+ ( -// KW_UNION unionType=(KW_ALL | KW_DISTINCT)? queryExpression -// )? orderByClause? limitClause? lockClause? # unionParenthesisSelect -// | querySpecificationNointo (',' lateralStatement)+ # withLateralStatement -// ; - // TODO: Simplify the rules to fit SLL(*) Mode selectStatement : querySpecification unionStatement* ( @@ -1127,6 +1135,7 @@ queryExpression */ querySpecification : KW_SELECT selectSpec* selectElements intoClause? fromClause groupByClause? havingClause? windowClause? orderByClause? limitClause? intoClause? + unionStatement? ; unionStatement @@ -1996,15 +2005,6 @@ checkTableOption | KW_CHANGED ; -createFunction - : KW_CREATE KW_AGGREGATE? KW_FUNCTION ifNotExists? functionNameCreate KW_RETURNS returnType=( - KW_STRING - | KW_INTEGER - | KW_REAL - | KW_DECIMAL - ) KW_SONAME STRING_LITERAL - ; - installComponent : KW_INSTALL KW_COMPONENT component_name=uid (',' component_name=uid)* ( KW_SET variableExpr (',' variableExpr)* @@ -3421,6 +3421,7 @@ keywordsCanBeId | KW_RESOURCE_GROUP_USER | KW_RESUME | KW_RETURNED_SQLSTATE + | KW_RETURNING | KW_RETURNS | KW_REUSE | KW_ROLE diff --git a/src/grammar/postgresql/PostgreSqlParser.g4 b/src/grammar/postgresql/PostgreSqlParser.g4 index 63d6f9ae..59a9e64f 100644 --- a/src/grammar/postgresql/PostgreSqlParser.g4 +++ b/src/grammar/postgresql/PostgreSqlParser.g4 @@ -609,9 +609,9 @@ tableelementlist ; tableelement - : column_def + : (KW_CONSTRAINT colid)? constraintelem + | column_def | KW_LIKE qualified_name ((KW_INCLUDING | KW_EXCLUDING) tablelikeoption)* - | (KW_CONSTRAINT colid)? constraintelem ; typedtableelement @@ -2788,28 +2788,24 @@ role_list colid : identifier - | unreserved_keyword | col_name_keyword - | plsql_unreserved_keyword ; type_function_name : identifier - | unreserved_keyword - | plsql_unreserved_keyword | type_func_name_keyword ; nonreservedword : identifier - | unreserved_keyword | col_name_keyword | type_func_name_keyword ; collabel - : nonreservedword - | plsql_unreserved_keyword + : identifier + | col_name_keyword + | type_func_name_keyword | reserved_keyword ; @@ -2820,7 +2816,7 @@ identifier | UnicodeQuotedIdentifier | PLSQLVARIABLENAME | PLSQLIDENTIFIER - | plsql_unreserved_keyword + | unreserved_keyword ; unreserved_keyword @@ -3125,6 +3121,39 @@ unreserved_keyword | KW_YEAR | KW_YES | KW_ZONE + | KW_ALIAS + | KW_ASSERT + | KW_CONSTANT + | KW_DEBUG + | KW_DEFAULT + | KW_DIAGNOSTICS + | KW_DUMP + | KW_ELSIF + | KW_ERROR + | KW_EXCEPTION + | KW_EXIT + | KW_GET + | KW_INFO + | KW_IS + | KW_LOG + | KW_NOTICE + | KW_OPEN + | KW_PUBLIC + | KW_PERFORM + | KW_PRINT_STRICT_PARAMS + | KW_QUERY + | KW_RAISE + | KW_RETURN + | KW_REVERSE + | KW_ROWTYPE + | KW_SLICE + | KW_SQLSTATE + | KW_STACKED + | KW_USE_COLUMN + | KW_USE_VARIABLE + | KW_VARIABLE_CONFLICT + | KW_WARNING + | KW_OUTER ; col_name_keyword @@ -3600,73 +3629,7 @@ proc_condition any_identifier : colid - | plsql_unreserved_keyword - ; - -plsql_unreserved_keyword - : KW_ABSOLUTE - | KW_ALIAS - | KW_AND - | KW_ARRAY - | KW_ASSERT - | KW_BACKWARD - | KW_CALL - | KW_CHAIN - | KW_CLOSE - | KW_COLLATE - | KW_COMMIT - | KW_CONSTANT - | KW_CONSTRAINT - | KW_CONTINUE - | KW_CURRENT - | KW_CURSOR - | KW_DEBUG - | KW_DEFAULT - | KW_DIAGNOSTICS - | KW_DO - | KW_DUMP - | KW_ELSIF - | KW_ERROR - | KW_EXCEPTION - | KW_EXIT - | KW_FETCH - | KW_FIRST - | KW_FORWARD - | KW_GET - | KW_INFO - | KW_INSERT - | KW_IS - | KW_LAST - | KW_LOG - | KW_MOVE - | KW_NEXT - | KW_NO - | KW_NOTICE - | KW_OPEN - | KW_OPTION - | KW_PERFORM - | KW_PRINT_STRICT_PARAMS - | KW_PRIOR - | KW_QUERY - | KW_RAISE - | KW_RELATIVE - | KW_RESET - | KW_RETURN - | KW_REVERSE - | KW_ROLLBACK - | KW_ROWTYPE - | KW_SCHEMA - | KW_SCROLL - | KW_SET - | KW_SLICE - | KW_SQLSTATE - | KW_STACKED - | KW_TYPE - | KW_USE_COLUMN - | KW_USE_VARIABLE - | KW_VARIABLE_CONFLICT - | KW_WARNING - | KW_OUTER + | unreserved_keyword ; sql_expression diff --git a/src/grammar/trino/TrinoSql.g4 b/src/grammar/trino/TrinoSql.g4 index 98a2e0c6..ed74b529 100644 --- a/src/grammar/trino/TrinoSql.g4 +++ b/src/grammar/trino/TrinoSql.g4 @@ -15,9 +15,10 @@ /** * This file is an adaptation of trino's trino/core/trino-parser/src/main/antlr4/io/trino/sql/parser/SqlBase.g4 grammar. * Reference: https://github.com/trinodb/trino/blob/385/core/trino-parser/src/main/antlr4/io/trino/sql/parser/SqlBase.g4 + * current version 450 */ -// $antlr-format alignTrailingComments true, columnLimit 150, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false +// $antlr-format alignTrailingComments true, columnLimit 160, minEmptyLines 1, maxEmptyLinesToKeep 1, reflowComments false, useTab false // $antlr-format allowShortRulesOnASingleLine false, allowShortBlocksOnASingleLine true, alignSemicolons hanging, alignColons hanging // $antlr-format spaceBeforeAssignmentOperators false, keepEmptyLinesAtTheStartOfBlocks true @@ -45,13 +46,6 @@ statements : singleStatement ; -standaloneClause - : standaloneExpression - | standalonePathSpecification - | standaloneType - | standaloneRowPattern - ; - singleStatement : statement SEMICOLON? ; @@ -72,114 +66,138 @@ standaloneRowPattern : rowPattern SEMICOLON? ; +standaloneFunctionSpecification + : functionSpecification EOF + ; + statement - : query # statementDefault - | KW_USE schemaName # use + : rootQuery # statementDefault + | KW_USE schemaRef # use + | KW_CREATE KW_CATALOG (KW_IF KW_NOT KW_EXISTS)? catalog=catalogNameCreate KW_USING connectorName=identifier ( + KW_COMMENT string + )? (KW_AUTHORIZATION principal)? (KW_WITH properties)? # createCatalog + | KW_DROP KW_CATALOG (KW_IF KW_EXISTS)? catalog=catalogRef (KW_CASCADE | KW_RESTRICT)? # dropCatalog | KW_CREATE KW_SCHEMA (KW_IF KW_NOT KW_EXISTS)? schemaNameCreate (KW_AUTHORIZATION principal)? ( KW_WITH properties - )? # createSchema - | KW_DROP KW_SCHEMA (KW_IF KW_EXISTS)? schemaName (KW_CASCADE | KW_RESTRICT)? # dropSchema - | KW_ALTER KW_SCHEMA schemaName KW_RENAME KW_TO schemaNameCreate # renameSchema - | KW_ALTER KW_SCHEMA schemaName KW_SET KW_AUTHORIZATION principal # setSchemaAuthorization - | KW_CREATE KW_TABLE (KW_IF KW_NOT KW_EXISTS)? tableNameCreate columnListCreate? ( + )? # createSchema + | KW_DROP KW_SCHEMA (KW_IF KW_EXISTS)? schemaRef (KW_CASCADE | KW_RESTRICT)? # dropSchema + | KW_ALTER KW_SCHEMA schemaRef KW_RENAME KW_TO schemaNameCreate # renameSchema + | KW_ALTER KW_SCHEMA schemaRef KW_SET KW_AUTHORIZATION principal # setSchemaAuthorization + | KW_CREATE (KW_OR KW_REPLACE)? KW_TABLE (KW_IF KW_NOT KW_EXISTS)? tableNameCreate columnListCreate? ( KW_COMMENT string - )? (KW_WITH properties)? KW_AS (query | '(' query ')') (KW_WITH (KW_NO)? KW_DATA)? # createTableAsSelect - | KW_CREATE KW_TABLE (KW_IF KW_NOT KW_EXISTS)? tableNameCreate '(' tableElement ( + )? (KW_WITH properties)? KW_AS (rootQuery | '(' rootQuery ')') (KW_WITH (KW_NO)? KW_DATA)? # createTableAsSelect + | KW_CREATE (KW_OR KW_REPLACE)? KW_TABLE (KW_IF KW_NOT KW_EXISTS)? tableNameCreate '(' tableElement ( ',' tableElement - )* ')' (KW_COMMENT string)? (KW_WITH properties)? # createTable - | KW_DROP KW_TABLE (KW_IF KW_EXISTS)? tableName # dropTable - | KW_INSERT KW_INTO tableName columnList? query # insertInto - | KW_DELETE KW_FROM tableName (KW_WHERE booleanExpression)? # delete - | KW_TRUNCATE KW_TABLE tableName # truncateTable - | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? from= tableName KW_RENAME KW_TO to= tableNameCreate # renameTable - | KW_COMMENT KW_ON KW_TABLE tableName KW_IS (string | KW_NULL) # commentTable - | KW_COMMENT KW_ON KW_COLUMN columnName KW_IS (string | KW_NULL) # commentColumn - | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName KW_RENAME KW_COLUMN (KW_IF KW_EXISTS)? from= columnName KW_TO to= columnNameCreate # renameColumn - | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName KW_DROP KW_COLUMN (KW_IF KW_EXISTS)? column= columnName # dropColumn - | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName KW_ADD KW_COLUMN (KW_IF KW_NOT KW_EXISTS)? column= columnDefinition # addColumn - | KW_ALTER KW_TABLE tableName KW_SET KW_AUTHORIZATION principal # setTableAuthorization - | KW_ALTER KW_TABLE tableName KW_SET KW_PROPERTIES propertyAssignments # setTableProperties - | KW_ALTER KW_TABLE tableName KW_EXECUTE procedureName= identifier ( + )* ')' (KW_COMMENT string)? (KW_WITH properties)? # createTable + | KW_DROP KW_TABLE (KW_IF KW_EXISTS)? tableRef # dropTable + | KW_INSERT KW_INTO tableRef columnList? rootQuery # insertInto + | KW_DELETE KW_FROM tableRef (KW_WHERE booleanExpression)? # delete + | KW_TRUNCATE KW_TABLE tableRef # truncateTable + | KW_COMMENT KW_ON KW_TABLE tableRef KW_IS (string | KW_NULL) # commentTable + | KW_COMMENT KW_ON KW_VIEW viewRef KW_IS (string | KW_NULL) # commentView + | KW_COMMENT KW_ON KW_COLUMN columnRef KW_IS (string | KW_NULL) # commentColumn + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? from=tableRef KW_RENAME KW_TO to=tableNameCreate # renameTable + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName=tableRef KW_ADD KW_COLUMN (KW_IF KW_NOT KW_EXISTS)? column=columnDefinition # addColumn + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName=tableRef KW_RENAME KW_COLUMN (KW_IF KW_EXISTS)? from=columnRef KW_TO to=columnNameCreate # renameColumn + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName=tableRef KW_DROP KW_COLUMN (KW_IF KW_EXISTS)? column=columnRef # dropColumn + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName=tableRef KW_ALTER KW_COLUMN column=columnRef KW_SET KW_DATA KW_TYPE type # setColumnType + | KW_ALTER KW_TABLE (KW_IF KW_EXISTS)? tableName=tableRef KW_ALTER KW_COLUMN column=columnRef KW_DROP KW_NOT KW_NULL # dropNotNullConstraint + | KW_ALTER KW_TABLE tableName=tableRef KW_SET KW_AUTHORIZATION principal # setTableAuthorization + | KW_ALTER KW_TABLE tableName=tableRef KW_SET KW_PROPERTIES propertyAssignments # setTableProperties + | KW_ALTER KW_TABLE tableName=tableRef KW_EXECUTE procedureName=functionName ( '(' (callArgument (',' callArgument)*)? ')' - )? (KW_WHERE where= booleanExpression)? # tableExecute - | KW_ANALYZE tableName (KW_WITH properties)? # analyze + )? (KW_WHERE where=booleanExpression)? # tableExecute + | KW_ANALYZE tableRef (KW_WITH properties)? # analyze | KW_CREATE (KW_OR KW_REPLACE)? KW_MATERIALIZED KW_VIEW (KW_IF KW_NOT KW_EXISTS)? viewNameCreate ( - KW_COMMENT string - )? (KW_WITH properties)? KW_AS query # createMaterializedView + KW_GRACE KW_PERIOD interval + )? (KW_COMMENT string)? (KW_WITH properties)? KW_AS rootQuery # createMaterializedView | KW_CREATE (KW_OR KW_REPLACE)? KW_VIEW viewNameCreate (KW_COMMENT string)? ( KW_SECURITY (KW_DEFINER | KW_INVOKER) - )? KW_AS query # createView - | KW_REFRESH KW_MATERIALIZED KW_VIEW viewName # refreshMaterializedView - | KW_DROP KW_MATERIALIZED KW_VIEW (KW_IF KW_EXISTS)? viewName # dropMaterializedView - | KW_ALTER KW_MATERIALIZED KW_VIEW (KW_IF KW_EXISTS)? from= viewName KW_RENAME KW_TO to= viewNameCreate # renameMaterializedView - | KW_ALTER KW_MATERIALIZED KW_VIEW viewName KW_SET KW_PROPERTIES propertyAssignments # setMaterializedViewProperties - | KW_DROP KW_VIEW (KW_IF KW_EXISTS)? viewName # dropView - | KW_ALTER KW_VIEW from= viewName KW_RENAME KW_TO to= viewNameCreate # renameView - | KW_ALTER KW_VIEW from= viewName KW_SET KW_AUTHORIZATION principal # setViewAuthorization - | KW_CALL functionName '(' (callArgument (',' callArgument)*)? ')' # call - | KW_CREATE KW_ROLE name= identifier (KW_WITH KW_ADMIN grantor)? (KW_IN catalogName)? # createRole - | KW_DROP KW_ROLE name= identifier # dropRole - | KW_GRANT roles KW_TO principal (',' principal)* (KW_WITH KW_ADMIN KW_OPTION)? ( - KW_GRANTED KW_BY grantor - )? (KW_IN catalogName)? # grantRoles - | KW_REVOKE (KW_ADMIN KW_OPTION KW_FOR)? roles KW_FROM principal (',' principal)* ( - KW_GRANTED KW_BY grantor - )? (KW_IN catalogName)? # revokeRoles - | KW_SET KW_ROLE (KW_ALL | KW_NONE | role= identifier) (KW_IN catalogName)? # setRole - | KW_GRANT (privilege (',' privilege)* | KW_ALL KW_PRIVILEGES) KW_ON ( - KW_SCHEMA? schemaName - | KW_TABLE? tableName - )? KW_TO grantee= principal (KW_WITH KW_GRANT KW_OPTION)? # grant - | KW_DENY (privilege (',' privilege)* | KW_ALL KW_PRIVILEGES) KW_ON ( - KW_SCHEMA? schemaName - | KW_TABLE? tableName - ) KW_TO grantee= principal # deny - | KW_REVOKE (KW_GRANT KW_OPTION KW_FOR)? (privilege (',' privilege)* | KW_ALL KW_PRIVILEGES) KW_ON ( - KW_SCHEMA? schemaName - | KW_TABLE? tableName - )? KW_FROM grantee= principal # revoke - | KW_SHOW KW_GRANTS (KW_ON KW_TABLE? tableName)? # showGrants - | KW_EXPLAIN KW_ANALYZE? KW_VERBOSE? ('(' explainOption (',' explainOption)* ')')? statement # explain - | KW_SHOW KW_CREATE KW_TABLE tableName # showCreateTable - | KW_SHOW KW_CREATE KW_SCHEMA schemaName # showCreateSchema - | KW_SHOW KW_CREATE KW_VIEW viewName # showCreateView - | KW_SHOW KW_CREATE KW_MATERIALIZED KW_VIEW viewName # showCreateMaterializedView - | KW_SHOW KW_TABLES ((KW_FROM | KW_IN) schemaName)? ( - KW_LIKE pattern= string (KW_ESCAPE escape= string)? + )? (KW_WITH properties)? KW_AS rootQuery # createView + | KW_REFRESH KW_MATERIALIZED KW_VIEW viewRef # refreshMaterializedView + | KW_DROP KW_MATERIALIZED KW_VIEW (KW_IF KW_EXISTS)? viewRef # dropMaterializedView + | KW_ALTER KW_MATERIALIZED KW_VIEW (KW_IF KW_EXISTS)? from=viewRef KW_RENAME KW_TO to=viewNameCreate # renameMaterializedView + | KW_ALTER KW_MATERIALIZED KW_VIEW viewRef KW_SET KW_PROPERTIES propertyAssignments # setMaterializedViewProperties + | KW_DROP KW_VIEW (KW_IF KW_EXISTS)? viewRef # dropView + | KW_ALTER KW_VIEW from=viewRef KW_RENAME KW_TO to=viewNameCreate # renameView + | KW_ALTER KW_VIEW from=viewRef KW_SET KW_AUTHORIZATION principal # setViewAuthorization + | KW_CALL functionName '(' (callArgument (',' callArgument)*)? ')' # call + | KW_CREATE (KW_OR KW_REPLACE)? functionSpecification # createFunction + | KW_DROP KW_FUNCTION (KW_IF KW_EXISTS)? functionSignature # dropFunction + | KW_CREATE KW_ROLE name=identifier (KW_WITH KW_ADMIN grantor)? (KW_IN catalog=catalogRef)? # createRole + | KW_DROP KW_ROLE name=identifier (KW_IN catalog=catalogRef)? # dropRole + | KW_GRANT privilegeOrRole (',' privilegeOrRole)* KW_TO principal (',' principal)* ( + KW_WITH KW_ADMIN KW_OPTION + )? (KW_GRANTED KW_BY grantor)? (KW_IN catalog=catalogRef)? # grantRoles + | KW_GRANT ((privilegeOrRole (',' privilegeOrRole)*) | KW_ALL KW_PRIVILEGES) KW_ON grantObject KW_TO principal ( + KW_WITH KW_GRANT KW_OPTION + )? # grantPrivileges + | KW_REVOKE (KW_ADMIN KW_OPTION KW_FOR)? privilegeOrRole (',' privilegeOrRole)* KW_FROM principal ( + ',' principal + )* (KW_GRANTED KW_BY grantor)? (KW_IN catalog=catalogRef)? # revokeRoles + | KW_REVOKE (KW_GRANT KW_OPTION KW_FOR)? ( + (privilegeOrRole (',' privilegeOrRole)*) + | KW_ALL KW_PRIVILEGES + ) KW_ON grantObject KW_FROM grantee=principal # revokePrivileges + | KW_DENY (privilege (',' privilege)* | KW_ALL KW_PRIVILEGES) KW_ON grantObject KW_TO grantee=principal # deny + | KW_SET KW_ROLE (KW_ALL | KW_NONE | role=identifier) (KW_IN catalog=catalogRef)? # setRole + | KW_SHOW KW_GRANTS (KW_ON grantObject)? # showGrants + | KW_EXPLAIN ('(' explainOption (',' explainOption)* ')')? statement # explain + | KW_EXPLAIN KW_ANALYZE KW_VERBOSE? statement # explainAnalyze + | KW_SHOW KW_CREATE KW_TABLE tableRef # showCreateTable + | KW_SHOW KW_CREATE KW_SCHEMA schemaRef # showCreateSchema + | KW_SHOW KW_CREATE KW_VIEW viewRef # showCreateView + | KW_SHOW KW_CREATE KW_MATERIALIZED KW_VIEW viewRef # showCreateMaterializedView + | KW_SHOW KW_CREATE KW_FUNCTION functionName # showCreateFunction + | KW_SHOW KW_TABLES ((KW_FROM | KW_IN) schemaRef)? ( + KW_LIKE pattern=string (KW_ESCAPE escape=string)? )? # showTables - | KW_SHOW KW_SCHEMAS ((KW_FROM | KW_IN) catalogName)? ( - KW_LIKE pattern= string (KW_ESCAPE escape= string)? - )? # showSchemas - | KW_SHOW KW_CATALOGS (KW_LIKE pattern= string (KW_ESCAPE escape= string)?)? # showCatalogs - | KW_SHOW KW_COLUMNS (KW_FROM | KW_IN) tableOrViewName? ( - KW_LIKE pattern= string (KW_ESCAPE escape= string)? - )? # showColumns - | KW_SHOW KW_STATS KW_FOR tableName # showStats - | KW_SHOW KW_STATS KW_FOR '(' query ')' # showStatsForQuery - | KW_SHOW KW_CURRENT? KW_ROLES ((KW_FROM | KW_IN) identifier)? # showRoles - | KW_SHOW KW_ROLE KW_GRANTS ((KW_FROM | KW_IN) identifier)? # showRoleGrants - | KW_DESCRIBE tableOrViewName # showColumns - | KW_DESC tableOrViewName # showColumns - | KW_SHOW KW_FUNCTIONS (KW_LIKE pattern= string (KW_ESCAPE escape= string)?)? # showFunctions - | KW_SHOW KW_SESSION (KW_LIKE pattern= string (KW_ESCAPE escape= string)?)? # showSession - | KW_SET KW_SESSION qualifiedName EQ expression # setSession - | KW_RESET KW_SESSION qualifiedName # resetSession - | KW_START KW_TRANSACTION (transactionMode (',' transactionMode)*)? # startTransaction - | KW_COMMIT KW_WORK? # commit - | KW_ROLLBACK KW_WORK? # rollback - | KW_PREPARE identifier KW_FROM statement # prepare - | KW_DEALLOCATE KW_PREPARE identifier # deallocate - | KW_EXECUTE identifier (KW_USING expression (',' expression)*)? # execute - | KW_DESCRIBE KW_INPUT identifier # describeInput - | KW_DESCRIBE KW_OUTPUT identifier # describeOutput - | KW_SET KW_PATH pathSpecification # setPath - | KW_SET KW_TIME KW_ZONE (KW_LOCAL | expression) # setTimeZone - | KW_UPDATE tableName KW_SET updateAssignment (',' updateAssignment)* ( - KW_WHERE where= booleanExpression - )? # update - | KW_MERGE KW_INTO tableName (KW_AS? identifier)? KW_USING relation KW_ON expression mergeCase+ # merge - | KW_SHOW KW_COMMENT KW_ON KW_TABLE tableName # showTableComment // dtstack - | KW_SHOW KW_COMMENT KW_ON KW_COLUMN columnName # showColumnComment // dtstack + | KW_SHOW KW_SCHEMAS ((KW_FROM | KW_IN) catalogRef)? ( + KW_LIKE pattern=string (KW_ESCAPE escape=string)? + )? # showSchemas + | KW_SHOW KW_CATALOGS (KW_LIKE pattern=string (KW_ESCAPE escape=string)?)? # showCatalogs + | KW_SHOW KW_COLUMNS (KW_FROM | KW_IN) tableOrViewName ( + KW_LIKE pattern=string (KW_ESCAPE escape=string)? + )? # showColumns + | KW_SHOW KW_STATS KW_FOR tableOrViewName # showStats + | KW_SHOW KW_STATS KW_FOR '(' rootQuery ')' # showStatsForQuery + | KW_SHOW KW_CURRENT? KW_ROLES ((KW_FROM | KW_IN) catalogRef)? # showRoles + | KW_SHOW KW_ROLE KW_GRANTS ((KW_FROM | KW_IN) catalogRef)? # showRoleGrants + | KW_DESCRIBE tableOrViewName # showColumns + | KW_DESC tableOrViewName # showColumns + | KW_SHOW KW_FUNCTIONS ((KW_FROM | KW_IN) schemaRef)? ( + KW_LIKE pattern=string (KW_ESCAPE escape=string)? + )? # showFunctions + | KW_SHOW KW_SESSION (KW_LIKE pattern=string (KW_ESCAPE escape=string)?)? # showSession + | KW_SET KW_SESSION KW_AUTHORIZATION authorizationUser # setSessionAuthorization + | KW_RESET KW_SESSION KW_AUTHORIZATION # resetSessionAuthorization + | KW_SET KW_SESSION qualifiedName EQ expression # setSession + | KW_RESET KW_SESSION qualifiedName # resetSession + | KW_START KW_TRANSACTION (transactionMode (',' transactionMode)*)? # startTransaction + | KW_COMMIT KW_WORK? # commit + | KW_ROLLBACK KW_WORK? # rollback + | KW_PREPARE identifier KW_FROM statement # prepare + | KW_DEALLOCATE KW_PREPARE identifier # deallocate + | KW_EXECUTE identifier (KW_USING expression (',' expression)*)? # execute + | KW_EXECUTE KW_IMMEDIATE string (KW_USING expression (',' expression)*)? # executeImmediate + | KW_DESCRIBE KW_INPUT identifier # describeInput + | KW_DESCRIBE KW_OUTPUT identifier # describeOutput + | KW_SET KW_PATH pathSpecification # setPath + | KW_SET KW_TIME KW_ZONE ( KW_LOCAL | expression) # setTimeZone + | KW_UPDATE tableRef KW_SET updateAssignment (',' updateAssignment)* ( + KW_WHERE where=booleanExpression + )? # update + | KW_MERGE KW_INTO tableRef (KW_AS? identifier)? KW_USING relation KW_ON expression mergeCase+ # merge + | KW_SHOW KW_COMMENT KW_ON KW_TABLE tableRef # showTableComment // dtstack + | KW_SHOW KW_COMMENT KW_ON KW_COLUMN columnRef # showColumnComment // dtstack + ; + +rootQuery + : withFunction? query + ; + +withFunction + : KW_WITH functionSpecification (',' functionSpecification)* ; query @@ -200,7 +218,7 @@ columnDefinition ; likeClause - : KW_LIKE tableName (optionType= (KW_INCLUDING | KW_EXCLUDING) KW_PROPERTIES)? + : KW_LIKE tableRef (optionType=( KW_INCLUDING | KW_EXCLUDING) KW_PROPERTIES)? ; properties @@ -222,11 +240,11 @@ propertyValue queryNoWith : queryTerm (KW_ORDER KW_BY sortItem (',' sortItem)*)? ( - KW_OFFSET offset= rowCount (KW_ROW | KW_ROWS)? + KW_OFFSET offset=rowCount (KW_ROW | KW_ROWS)? )? ( - (KW_LIMIT limit= limitRowCount) + (KW_LIMIT limit=limitRowCount) | ( - KW_FETCH (KW_FIRST | KW_NEXT) (fetchFirst= rowCount)? (KW_ROW | KW_ROWS) ( + KW_FETCH (KW_FIRST | KW_NEXT) (fetchFirst=rowCount)? (KW_ROW | KW_ROWS) ( KW_ONLY | KW_WITH KW_TIES ) @@ -245,28 +263,28 @@ rowCount ; queryTerm - : queryPrimary # queryTermDefault - | left= queryTerm operator= KW_INTERSECT setQuantifier? right= queryTerm # setOperation - | left= queryTerm operator= (KW_UNION | KW_EXCEPT) setQuantifier? right= queryTerm # setOperation + : queryPrimary # queryTermDefault + | left=queryTerm operator=KW_INTERSECT setQuantifier? right=queryTerm # setOperation + | left=queryTerm operator=(KW_UNION | KW_EXCEPT) setQuantifier? right=queryTerm # setOperation ; queryPrimary : querySpecification # queryPrimaryDefault - | KW_TABLE tableName # table + | KW_TABLE tableRef # table | KW_VALUES expression (',' expression)* # inlineTable | '(' queryNoWith ')' # subquery ; sortItem - : (columnName | expression) ordering= (KW_ASC | KW_DESC)? ( - KW_NULLS nullOrdering= (KW_FIRST | KW_LAST) + : (columnRef | expression) ordering=(KW_ASC | KW_DESC)? ( + KW_NULLS nullOrdering=(KW_FIRST | KW_LAST) )? ; querySpecification : KW_SELECT setQuantifier? selectItem (',' selectItem)* (KW_FROM relation (',' relation)*)? ( - KW_WHERE where= booleanExpression - )? (KW_GROUP KW_BY groupBy)? (KW_HAVING having= booleanExpression)? ( + KW_WHERE where=booleanExpression + )? (KW_GROUP KW_BY groupBy)? (KW_HAVING having=booleanExpression)? ( KW_WINDOW windowDefinition (',' windowDefinition)* )? ; @@ -277,8 +295,8 @@ groupBy groupingElement : groupingSet # singleGroupingSet - | KW_ROLLUP '(' (groupingTerm (',' groupingTerm)*)? ')' # rollup - | KW_CUBE '(' (groupingTerm (',' groupingTerm)*)? ')' # cube + | KW_ROLLUP '(' (groupingSet (',' groupingSet)*)? ')' # rollup + | KW_CUBE '(' (groupingSet (',' groupingSet)*)? ')' # cube | KW_GROUPING KW_SETS '(' groupingSet (',' groupingSet)* ')' # multipleGroupingSets ; @@ -288,22 +306,22 @@ groupingSet ; groupingTerm - : columnName + : columnRef | expression ; windowDefinition - : name= identifier KW_AS '(' windowSpecification ')' + : name=identifier KW_AS '(' windowSpecification ')' ; windowSpecification - : (existingWindowName= identifier)? ( - KW_PARTITION KW_BY partition+= expression (',' partition+= expression)* + : (existingWindowName=identifier)? ( + KW_PARTITION KW_BY partition+=expression (',' partition+=expression)* )? (KW_ORDER KW_BY sortItem (',' sortItem)*)? windowFrame? ; namedQuery - : name= identifier (columnAliases)? KW_AS '(' query ')' + : name=identifier (columnAliases)? KW_AS '(' query ')' ; setQuantifier @@ -312,16 +330,16 @@ setQuantifier ; selectItem - : (columnName | expression) (KW_AS? identifier)? # selectSingle + : (columnRef | expression) (KW_AS? identifier)? # selectSingle | primaryExpression '.' ASTERISK (KW_AS columnAliases)? # selectAll | ASTERISK # selectAll ; relation - : left= relation ( - KW_CROSS KW_JOIN right= sampledRelation - | joinType KW_JOIN rightRelation= relation joinCriteria - | KW_NATURAL joinType KW_JOIN right= sampledRelation + : left=relation ( + KW_CROSS KW_JOIN right=sampledRelation + | joinType KW_JOIN rightRelation=relation joinCriteria + | KW_NATURAL joinType KW_JOIN right=sampledRelation ) # joinRelation | sampledRelation # relationDefault ; @@ -339,7 +357,7 @@ joinCriteria ; sampledRelation - : patternRecognition (KW_TABLESAMPLE sampleType '(' percentage= expression ')')? + : patternRecognition (KW_TABLESAMPLE sampleType '(' percentage=expression ')')? ; sampleType @@ -347,17 +365,31 @@ sampleType | KW_SYSTEM ; +trimsSpecification + : KW_LEADING + | KW_TRAILING + | KW_BOTH + ; + +listAggOverflowBehavior + : KW_ERROR + | KW_TRUNCATE string? listaggCountIndication + ; + +listaggCountIndication + : KW_WITH KW_COUNT + | KW_WITHOUT KW_COUNT + ; + patternRecognition : aliasedRelation ( KW_MATCH_RECOGNIZE '(' ( - KW_PARTITION KW_BY partition+= expression (',' partition+= expression)* + KW_PARTITION KW_BY partition+=expression (',' partition+=expression)* )? (KW_ORDER KW_BY sortItem (',' sortItem)*)? ( KW_MEASURES measureDefinition (',' measureDefinition)* )? rowsPerMatch? (KW_AFTER KW_MATCH skipTo)? (KW_INITIAL | KW_SEEK)? KW_PATTERN '(' rowPattern ')' ( KW_SUBSET subsetDefinition (',' subsetDefinition)* - )? KW_DEFINE variableDefinition (',' variableDefinition)* ')' ( - KW_AS? identifier columnAliases? - )? + )? KW_DEFINE variableDefinition (',' variableDefinition)* ')' (KW_AS? identifier columnAliases?)? )? ; @@ -385,7 +417,7 @@ skipTo ; subsetDefinition - : name= identifier EQ '(' union+= identifier (',' union+= identifier)* ')' + : name=identifier EQ '(' union+=identifier (',' union+=identifier)* ')' ; variableDefinition @@ -401,7 +433,7 @@ columnListCreate ; columnList - : '(' columnName (',' columnName)* ')' + : '(' columnRef (',' columnRef)* ')' ; columnAliases @@ -409,11 +441,89 @@ columnAliases ; relationPrimary - : tableOrViewName # tableOrViewRelation + : tableOrViewName queryPeriod? # tableName | '(' query ')' # subqueryRelation | KW_UNNEST '(' expression (',' expression)* ')' (KW_WITH KW_ORDINALITY)? # unnest | KW_LATERAL '(' query ')' # lateral + | KW_TABLE '(' tableFunctionCall ')' # tableFunctionInvocation | '(' relation ')' # parenthesizedRelation + | KW_JSON_TABLE '(' jsonPathInvocation KW_COLUMNS '(' jsonTableColumn (',' jsonTableColumn)* ')' ( + KW_PLAN '(' jsonTableSpecificPlan ')' + | KW_PLAN KW_DEFAULT '(' jsonTableDefaultPlan ')' + )? ((KW_ERROR | KW_EMPTY) KW_ON KW_ERROR)? ')' # jsonTable + ; + +jsonTableColumn + : identifier KW_FOR KW_ORDINALITY # ordinalityColumn + | identifier type (KW_PATH string)? (emptyBehavior=jsonValueBehavior KW_ON KW_EMPTY)? ( + errorBehavior=jsonValueBehavior KW_ON KW_ERROR + )? # valueColumn + | identifier type KW_FORMAT jsonRepresentation (KW_PATH string)? ( + jsonQueryWrapperBehavior KW_WRAPPER + )? ((KW_KEEP | KW_OMIT) KW_QUOTES (KW_ON KW_SCALAR KW_TEXT_STRING)?)? ( + emptyBehavior=jsonQueryBehavior KW_ON KW_EMPTY + )? (errorBehavior=jsonQueryBehavior KW_ON KW_ERROR)? # queryColumn + | KW_NESTED KW_PATH? string (KW_AS identifier)? KW_COLUMNS '(' jsonTableColumn (',' jsonTableColumn)* ')' # nestedColumns + ; + +jsonTableSpecificPlan + : jsonTablePathName # leafPlan + | jsonTablePathName (KW_OUTER | KW_INNER) planPrimary # joinPlan + | planPrimary KW_UNION planPrimary (KW_UNION planPrimary)* # unionPlan + | planPrimary KW_CROSS planPrimary (KW_CROSS planPrimary)* # crossPlan + ; + +jsonTablePathName + : identifier + ; + +planPrimary + : jsonTablePathName + | '(' jsonTableSpecificPlan ')' + ; + +jsonTableDefaultPlan + : (KW_OUTER | KW_INNER) (',' (KW_UNION | KW_CROSS))? + | (KW_UNION | KW_CROSS) (',' (KW_OUTER | KW_INNER))? + ; + +tableFunctionCall + : functionName '(' (tableFunctionArgument (',' tableFunctionArgument)*)? ( + KW_COPARTITION copartitionTables (',' copartitionTables)* + )? ')' + ; + +tableFunctionArgument + : (identifier '=>')? ( + tableArgument + | descriptorArgument + | expression + ) // descriptor before expression to avoid parsing descriptor as a function call + ; + +tableArgument + : tableArgumentRelation (KW_PARTITION KW_BY ('(' (expression (',' expression)*)? ')' | expression))? ( + KW_PRUNE KW_WHEN KW_EMPTY + | KW_KEEP KW_WHEN KW_EMPTY + )? (KW_ORDER KW_BY ('(' sortItem (',' sortItem)* ')' | sortItem))? + ; + +tableArgumentRelation + : KW_TABLE '(' tableRef ')' (KW_AS? identifier columnAliases?)? # tableArgumentTable + | KW_TABLE '(' query ')' (KW_AS? identifier columnAliases?)? # tableArgumentQuery + ; + +descriptorArgument + : KW_DESCRIPTOR '(' descriptorField (',' descriptorField)* ')' + | KW_CAST '(' KW_NULL KW_AS KW_DESCRIPTOR ')' + ; + +descriptorField + : identifier type? + ; + +copartitionTables + : '(' qualifiedName ',' qualifiedName (',' qualifiedName)* ')' ; expression @@ -421,31 +531,31 @@ expression ; booleanExpression - : valueExpression predicate[$valueExpression.ctx]? # predicated - | KW_NOT booleanExpression # logicalNot - | left= booleanExpression operator= KW_AND right= booleanExpression # logicalBinary - | left= booleanExpression operator= KW_OR right= booleanExpression # logicalBinary + : valueExpression predicate[$valueExpression.ctx]? # predicated + | KW_NOT booleanExpression # logicalNot + | booleanExpression KW_AND booleanExpression # and + | booleanExpression KW_OR booleanExpression # or ; // workaround for https://github.com/antlr/antlr4/issues/780 predicate[antlr.ParserRuleContext value] - : comparisonOperator right= valueExpression # comparison - | comparisonOperator comparisonQuantifier '(' query ')' # quantifiedComparison - | KW_NOT? KW_BETWEEN lower= valueExpression KW_AND upper= valueExpression # between - | KW_NOT? KW_IN '(' expression (',' expression)* ')' # inList - | KW_NOT? KW_IN '(' query ')' # inSubquery - | KW_NOT? KW_LIKE pattern= valueExpression (KW_ESCAPE escape= valueExpression)? # like - | KW_IS KW_NOT? KW_NULL # nullPredicate - | KW_IS KW_NOT? KW_DISTINCT KW_FROM right= valueExpression # distinctFrom + : comparisonOperator right=valueExpression # comparison + | comparisonOperator comparisonQuantifier '(' query ')' # quantifiedComparison + | KW_NOT? KW_BETWEEN lower=valueExpression KW_AND upper=valueExpression # between + | KW_NOT? KW_IN '(' expression (',' expression)* ')' # inList + | KW_NOT? KW_IN '(' query ')' # inSubquery + | KW_NOT? KW_LIKE pattern=valueExpression (KW_ESCAPE escape=valueExpression)? # like + | KW_IS KW_NOT? KW_NULL # nullPredicate + | KW_IS KW_NOT? KW_DISTINCT KW_FROM right=valueExpression # distinctFrom ; valueExpression - : primaryExpression # valueExpressionDefault - | valueExpression KW_AT timeZoneSpecifier # atTimeZone - | operator= (MINUS | PLUS) valueExpression # arithmeticUnary - | left= valueExpression operator= (ASTERISK | SLASH | PERCENT) right= valueExpression # arithmeticBinary - | left= valueExpression operator= (PLUS | MINUS) right= valueExpression # arithmeticBinary - | left= valueExpression CONCAT right= valueExpression # concatenation + : primaryExpression # valueExpressionDefault + | valueExpression KW_AT timeZoneSpecifier # atTimeZone + | operator=(MINUS | PLUS) valueExpression # arithmeticUnary + | left=valueExpression operator=(ASTERISK | SLASH | PERCENT) right=valueExpression # arithmeticBinary + | left=valueExpression operator=(PLUS | MINUS) right=valueExpression # arithmeticBinary + | left=valueExpression CONCAT right=valueExpression # concatenation ; primaryExpression @@ -461,7 +571,10 @@ primaryExpression | KW_POSITION '(' valueExpression KW_IN valueExpression ')' # position | '(' expression (',' expression)+ ')' # rowConstructor | KW_ROW '(' expression (',' expression)* ')' # rowConstructor - | functionName '(' ASTERISK ')' filter? over? # functionCall + | name=KW_LISTAGG '(' setQuantifier? expression (',' string)? ( + KW_ON KW_OVERFLOW listAggOverflowBehavior + )? ')' (KW_WITHIN KW_GROUP '(' KW_ORDER KW_BY sortItem (',' sortItem)* ')') filter? # listagg + | processingMode? functionName '(' (label=identifier '.')? ASTERISK ')' filter? over? # functionCall | processingMode? functionName '(' (setQuantifier? expression (',' expression)*)? ( KW_ORDER KW_BY sortItem (',' sortItem)* )? ')' filter? (nullTreatment? over)? # functionCall @@ -470,29 +583,97 @@ primaryExpression | '(' (identifier (',' identifier)*)? ')' '->' expression # lambda | '(' query ')' # subqueryExpression // This is an extension to ANSI SQL, which considers KW_EXISTS to be a - | KW_EXISTS '(' query ')' # exists - | KW_CASE operand= expression whenClause+ (KW_ELSE elseExpression= expression)? KW_END # simpleCase - | KW_CASE whenClause+ (KW_ELSE elseExpression= expression)? KW_END # searchedCase - | KW_CAST '(' expression KW_AS type ')' # cast - | KW_TRY_CAST '(' expression KW_AS type ')' # cast - | KW_ARRAY '[' (expression (',' expression)*)? ']' # arrayConstructor - | value= primaryExpression '[' index= valueExpression ']' # subscript - | identifier # columnReference - | base= primaryExpression '.' fieldName= identifier # dereference - | name= KW_CURRENT_DATE # specialDateTimeFunction - | name= KW_CURRENT_TIME ('(' precision= INTEGER_VALUE ')')? # specialDateTimeFunction - | name= KW_CURRENT_TIMESTAMP ('(' precision= INTEGER_VALUE ')')? # specialDateTimeFunction - | name= KW_LOCALTIME ('(' precision= INTEGER_VALUE ')')? # specialDateTimeFunction - | name= KW_LOCALTIMESTAMP ('(' precision= INTEGER_VALUE ')')? # specialDateTimeFunction - | name= KW_CURRENT_USER # currentUser - | name= KW_CURRENT_CATALOG # currentCatalog - | name= KW_CURRENT_SCHEMA # currentSchema - | name= KW_CURRENT_PATH # currentPath - | KW_SUBSTRING '(' valueExpression KW_FROM valueExpression (KW_FOR valueExpression)? ')' # substring - | KW_NORMALIZE '(' valueExpression (',' normalForm)? ')' # normalize - | KW_EXTRACT '(' identifier KW_FROM valueExpression ')' # extract - | '(' expression ')' # parenthesizedExpression - | KW_GROUPING '(' (qualifiedName (',' qualifiedName)*)? ')' # groupingOperation + | KW_EXISTS '(' query ')' # exists + | KW_CASE operand=expression whenClause+ (KW_ELSE elseExpression=expression)? KW_END # simpleCase + | KW_CASE whenClause+ (KW_ELSE elseExpression=expression)? KW_END # searchedCase + | KW_CAST '(' expression KW_AS type ')' # cast + | KW_TRY_CAST '(' expression KW_AS type ')' # cast + | KW_ARRAY '[' (expression (',' expression)*)? ']' # arrayConstructor + | value=primaryExpression '[' index=valueExpression ']' # subscript + | identifier # columnReference + | base=primaryExpression '.' fieldName=identifier # dereference + | name=KW_CURRENT_DATE # currentDate + | name=KW_CURRENT_TIME ('(' precision=INTEGER_VALUE ')')? # currentTime + | name=KW_CURRENT_TIMESTAMP ('(' precision=INTEGER_VALUE ')')? # currentTimestamp + | name=KW_LOCALTIME ('(' precision=INTEGER_VALUE ')')? # localTime + | name=KW_LOCALTIMESTAMP ('(' precision=INTEGER_VALUE ')')? # localTimestamp + | name=KW_CURRENT_USER # currentUser + | name=KW_CURRENT_CATALOG # currentCatalog + | name=KW_CURRENT_SCHEMA # currentSchema + | name=KW_CURRENT_PATH # currentPath + | KW_TRIM '(' (trimsSpecification? trimChar=valueExpression? KW_FROM)? trimSource=valueExpression ')' # trim + | KW_TRIM '(' trimSource=valueExpression ',' trimChar=valueExpression ')' # trim + | KW_SUBSTRING '(' valueExpression KW_FROM valueExpression (KW_FOR valueExpression)? ')' # substring + | KW_NORMALIZE '(' valueExpression (',' normalForm)? ')' # normalize + | KW_EXTRACT '(' identifier KW_FROM valueExpression ')' # extract + | '(' expression ')' # parenthesizedExpression + | KW_GROUPING '(' (qualifiedName (',' qualifiedName)*)? ')' # groupingOperation + | KW_JSON_EXISTS '(' jsonPathInvocation (jsonExistsErrorBehavior KW_ON KW_ERROR)? ')' # jsonExists + | KW_JSON_VALUE '(' jsonPathInvocation (KW_RETURNING type)? ( + emptyBehavior=jsonValueBehavior KW_ON KW_EMPTY + )? (errorBehavior=jsonValueBehavior KW_ON KW_ERROR)? ')' # jsonValue + | KW_JSON_QUERY '(' jsonPathInvocation (KW_RETURNING type (KW_FORMAT jsonRepresentation)?)? ( + jsonQueryWrapperBehavior KW_WRAPPER + )? ((KW_KEEP | KW_OMIT) KW_QUOTES (KW_ON KW_SCALAR KW_TEXT_STRING)?)? ( + emptyBehavior=jsonQueryBehavior KW_ON KW_EMPTY + )? (errorBehavior=jsonQueryBehavior KW_ON KW_ERROR)? ')' # jsonQuery + | KW_JSON_OBJECT '(' ( + jsonObjectMember (',' jsonObjectMember)* (KW_NULL KW_ON KW_NULL | KW_ABSENT KW_ON KW_NULL)? ( + KW_WITH KW_UNIQUE KW_KEYS? + | KW_WITHOUT KW_UNIQUE KW_KEYS? + )? + )? (KW_RETURNING type (KW_FORMAT jsonRepresentation)?)? ')' # jsonObject + | KW_JSON_ARRAY '(' ( + jsonValueExpression (',' jsonValueExpression)* (KW_NULL KW_ON KW_NULL | KW_ABSENT KW_ON KW_NULL)? + )? (KW_RETURNING type (KW_FORMAT jsonRepresentation)?)? ')' # jsonArray + ; + +jsonPathInvocation + : jsonValueExpression ',' path=string (KW_AS pathName=identifier)? ( + KW_PASSING jsonArgument (',' jsonArgument)* + )? + ; + +jsonValueExpression + : expression (KW_FORMAT jsonRepresentation)? + ; + +jsonRepresentation + : KW_JSON (KW_ENCODING (KW_UTF8 | KW_UTF16 | KW_UTF32))? // TODO add implementation-defined JSON representation option + ; + +jsonArgument + : jsonValueExpression KW_AS identifier + ; + +jsonExistsErrorBehavior + : KW_TRUE + | KW_FALSE + | KW_UNKNOWN + | KW_ERROR + ; + +jsonValueBehavior + : KW_ERROR + | KW_NULL + | KW_DEFAULT expression + ; + +jsonQueryWrapperBehavior + : KW_WITHOUT KW_ARRAY? + | KW_WITH (KW_CONDITIONAL | KW_UNCONDITIONAL)? KW_ARRAY? + ; + +jsonQueryBehavior + : KW_ERROR + | KW_NULL + | KW_EMPTY KW_ARRAY + | KW_EMPTY KW_OBJECT + ; + +jsonObjectMember + : KW_KEY? expression KW_VALUE jsonValueExpression + | expression ':' jsonValueExpression ; processingMode @@ -536,7 +717,7 @@ booleanValue ; interval - : KW_INTERVAL sign= (PLUS | MINUS)? string from= intervalField (KW_TO to= intervalField)? + : KW_INTERVAL sign=(PLUS | MINUS)? string from=intervalField (KW_TO to=intervalField)? ; intervalField @@ -556,17 +737,17 @@ normalForm ; type - : KW_ROW '(' rowField (',' rowField)* ')' # rowType - | KW_INTERVAL from= intervalField (KW_TO to= intervalField)? # intervalType - | base= KW_TIMESTAMP ('(' precision= typeParameter ')')? (KW_WITHOUT KW_TIME KW_ZONE)? # dateTimeType - | base= KW_TIMESTAMP ('(' precision= typeParameter ')')? KW_WITH KW_TIME KW_ZONE # dateTimeType - | base= KW_TIME ('(' precision= typeParameter ')')? (KW_WITHOUT KW_TIME KW_ZONE)? # dateTimeType - | base= KW_TIME ('(' precision= typeParameter ')')? KW_WITH KW_TIME KW_ZONE # dateTimeType - | KW_DOUBLE KW_PRECISION # doublePrecisionType - | KW_ARRAY '<' type '>' # legacyArrayType - | KW_MAP '<' keyType= type ',' valueType= type '>' # legacyMapType - | type KW_ARRAY ('[' INTEGER_VALUE ']')? # arrayType - | identifier ('(' typeParameter (',' typeParameter)* ')')? # genericType + : KW_ROW '(' rowField (',' rowField)* ')' # rowType + | KW_INTERVAL from=intervalField (KW_TO to=intervalField)? # intervalType + | base=KW_TIMESTAMP ('(' precision= typeParameter ')')? (KW_WITHOUT KW_TIME KW_ZONE)? # dateTimeType + | base=KW_TIMESTAMP ('(' precision= typeParameter ')')? KW_WITH KW_TIME KW_ZONE # dateTimeType + | base=KW_TIME ('(' precision= typeParameter ')')? (KW_WITHOUT KW_TIME KW_ZONE)? # dateTimeType + | base=KW_TIME ('(' precision= typeParameter ')')? KW_WITH KW_TIME KW_ZONE # dateTimeType + | KW_DOUBLE KW_PRECISION # doublePrecisionType + | KW_ARRAY '<' type '>' # legacyArrayType + | KW_MAP '<' keyType=type ',' valueType=type '>' # legacyMapType + | type KW_ARRAY ('[' INTEGER_VALUE ']')? # arrayType + | identifier ('(' typeParameter (',' typeParameter)* ')')? # genericType ; rowField @@ -580,7 +761,7 @@ typeParameter ; whenClause - : KW_WHEN condition= expression KW_THEN result= expression + : KW_WHEN condition=expression KW_THEN result=expression ; filter @@ -588,41 +769,42 @@ filter ; mergeCase - : KW_WHEN KW_MATCHED (KW_AND condition= expression)? KW_THEN KW_UPDATE KW_SET targets+= identifier EQ values+= expression ( - ',' targets+= identifier EQ values+= expression - )* # mergeUpdate - | KW_WHEN KW_MATCHED (KW_AND condition= expression)? KW_THEN KW_DELETE # mergeDelete - | KW_WHEN KW_NOT KW_MATCHED (KW_AND condition= expression)? KW_THEN KW_INSERT ( - '(' targets+= identifier (',' targets+= identifier)* ')' - )? KW_VALUES '(' values+= expression (',' values+= expression)* ')' # mergeInsert + : KW_WHEN KW_MATCHED (KW_AND condition=expression)? KW_THEN KW_UPDATE KW_SET targets+=identifier EQ values+=expression ( + ',' targets+=identifier EQ values+=expression + )* # mergeUpdate + | KW_WHEN KW_MATCHED (KW_AND condition=expression)? KW_THEN KW_DELETE # mergeDelete + | KW_WHEN KW_NOT KW_MATCHED (KW_AND condition=expression)? KW_THEN KW_INSERT ( + '(' targets+=identifier (',' targets+=identifier)* ')' + )? KW_VALUES '(' values+=expression (',' values+=expression)* ')' # mergeInsert ; over - : KW_OVER (windowName= identifier | '(' windowSpecification ')') + : KW_OVER (windowName=identifier | '(' windowSpecification ')') ; windowFrame - : (KW_MEASURES measureDefinition (',' measureDefinition)*)? frameExtent ( - KW_AFTER KW_MATCH skipTo - )? (KW_INITIAL | KW_SEEK)? (KW_PATTERN '(' rowPattern ')')? ( - KW_SUBSET subsetDefinition (',' subsetDefinition)* - )? (KW_DEFINE variableDefinition (',' variableDefinition)*)? + : (KW_MEASURES measureDefinition (',' measureDefinition)*)? frameExtent (KW_AFTER KW_MATCH skipTo)? ( + KW_INITIAL + | KW_SEEK + )? (KW_PATTERN '(' rowPattern ')')? (KW_SUBSET subsetDefinition (',' subsetDefinition)*)? ( + KW_DEFINE variableDefinition (',' variableDefinition)* + )? ; frameExtent - : frameType= KW_RANGE frameStart= frameBound - | frameType= KW_ROWS frameStart= frameBound - | frameType= KW_GROUPS frameStart= frameBound - | frameType= KW_RANGE KW_BETWEEN frameStart= frameBound KW_AND end= frameBound - | frameType= KW_ROWS KW_BETWEEN frameStart= frameBound KW_AND end= frameBound - | frameType= KW_GROUPS KW_BETWEEN frameStart= frameBound KW_AND end= frameBound + : frameType=KW_RANGE start=frameBound + | frameType=KW_ROWS start=frameBound + | frameType=KW_GROUPS start=frameBound + | frameType=KW_RANGE KW_BETWEEN start=frameBound KW_AND end=frameBound + | frameType=KW_ROWS KW_BETWEEN start=frameBound KW_AND end=frameBound + | frameType=KW_GROUPS KW_BETWEEN start=frameBound KW_AND end=frameBound ; frameBound - : KW_UNBOUNDED boundType= KW_PRECEDING # unboundedFrame - | KW_UNBOUNDED boundType= KW_FOLLOWING # unboundedFrame - | KW_CURRENT KW_ROW # currentRowBound - | expression boundType= (KW_PRECEDING | KW_FOLLOWING) # boundedFrame + : KW_UNBOUNDED boundType=KW_PRECEDING # unboundedFrame + | KW_UNBOUNDED boundType=KW_FOLLOWING # unboundedFrame + | KW_CURRENT KW_ROW # currentRowBound + | expression boundType=(KW_PRECEDING | KW_FOLLOWING) # boundedFrame ; rowPattern @@ -642,11 +824,11 @@ patternPrimary ; patternQuantifier - : ASTERISK (reluctant= QUESTION_MARK)? # zeroOrMoreQuantifier - | PLUS (reluctant= QUESTION_MARK)? # oneOrMoreQuantifier - | QUESTION_MARK (reluctant= QUESTION_MARK)? # zeroOrOneQuantifier - | '{' exactly= INTEGER_VALUE '}' (reluctant= QUESTION_MARK)? # rangeQuantifier - | '{' (atLeast= INTEGER_VALUE)? ',' (atMost= INTEGER_VALUE)? '}' (reluctant= QUESTION_MARK)? # rangeQuantifier + : ASTERISK (reluctant=QUESTION_MARK)? # zeroOrMoreQuantifier + | PLUS (reluctant=QUESTION_MARK)? # oneOrMoreQuantifier + | QUESTION_MARK (reluctant=QUESTION_MARK)? # zeroOrOneQuantifier + | '{' exactly=INTEGER_VALUE '}' (reluctant=QUESTION_MARK)? # rangeQuantifier + | '{' (atLeast=INTEGER_VALUE)? ',' (atMost=INTEGER_VALUE)? '}' (reluctant=QUESTION_MARK)? # rangeQuantifier ; updateAssignment @@ -654,13 +836,13 @@ updateAssignment ; explainOption - : KW_FORMAT value= (KW_TEXT | KW_GRAPHVIZ | KW_JSON) # explainFormat - | KW_TYPE value= (KW_LOGICAL | KW_DISTRIBUTED | KW_VALIDATE | KW_IO) # explainType + : KW_FORMAT value=(KW_TEXT | KW_GRAPHVIZ | KW_JSON) # explainFormat + | KW_TYPE value=(KW_LOGICAL | KW_DISTRIBUTED | KW_VALIDATE | KW_IO) # explainType ; transactionMode - : KW_ISOLATION KW_LEVEL levelOfIsolation # isolationLevel - | KW_READ accessMode= (KW_ONLY | KW_WRITE) # transactionAccessMode + : KW_ISOLATION KW_LEVEL levelOfIsolation # isolationLevel + | KW_READ accessMode=(KW_ONLY | KW_WRITE) # transactionAccessMode ; levelOfIsolation @@ -684,60 +866,128 @@ pathSpecification : pathElement (',' pathElement)* ; +functionSpecification + : KW_FUNCTION functionDeclaration returnsClause routineCharacteristic* controlStatement + ; + +functionDeclaration + : functionNameCreate '(' (parameterDeclaration (',' parameterDeclaration)*)? ')' + ; + +functionSignature + : functionName '(' (parameterDeclaration (',' parameterDeclaration)*)? ')' + ; + +parameterDeclaration + : identifier? type + ; + +returnsClause + : KW_RETURNS type + ; + +routineCharacteristic + : KW_LANGUAGE identifier # languageCharacteristic + | KW_NOT? KW_DETERMINISTIC # deterministicCharacteristic + | KW_RETURNS KW_NULL KW_ON KW_NULL KW_INPUT # returnsNullOnNullInputCharacteristic + | KW_CALLED KW_ON KW_NULL KW_INPUT # calledOnNullInputCharacteristic + | KW_SECURITY (KW_DEFINER | KW_INVOKER) # securityCharacteristic + | KW_COMMENT string # commentCharacteristic + ; + +controlStatement + : KW_RETURN valueExpression # returnStatement + | KW_SET identifier EQ expression # assignmentStatement + | KW_CASE expression caseStatementWhenClause+ elseClause? KW_END KW_CASE # simpleCaseStatement + | KW_CASE caseStatementWhenClause+ elseClause? KW_END KW_CASE # searchedCaseStatement + | KW_IF expression KW_THEN sqlStatementList elseIfClause* elseClause? KW_END KW_IF # ifStatement + | KW_ITERATE identifier # iterateStatement + | KW_LEAVE identifier # leaveStatement + | KW_BEGIN (variableDeclaration SEMICOLON)* sqlStatementList? KW_END # compoundStatement + | (label=identifier ':')? KW_LOOP sqlStatementList KW_END KW_LOOP # loopStatement + | (label=identifier ':')? KW_WHILE expression KW_DO sqlStatementList KW_END KW_WHILE # whileStatement + | (label=identifier ':')? KW_REPEAT sqlStatementList KW_UNTIL expression KW_END KW_REPEAT # repeatStatement + ; + +caseStatementWhenClause + : KW_WHEN expression KW_THEN sqlStatementList + ; + +elseIfClause + : KW_ELSEIF expression KW_THEN sqlStatementList + ; + +elseClause + : KW_ELSE sqlStatementList + ; + +variableDeclaration + : KW_DECLARE identifier (',' identifier)* type (KW_DEFAULT valueExpression)? + ; + +sqlStatementList + : (controlStatement SEMICOLON)+ + ; + privilege - : KW_SELECT + : KW_CREATE + | KW_SELECT | KW_DELETE | KW_INSERT | KW_UPDATE + | identifier ; -tableOrViewName - : tableName - | viewName - ; - -tableName - : tablePath +entityKind + : KW_TABLE + | KW_SCHEMA + | identifier ; -tableNameCreate - : tablePath +grantObject + : entityKind? qualifiedName ; -viewName - : viewPath +tableOrViewName + : tableRef + | viewRef ; -viewNameCreate - : viewPath +tableRef + : table= identifier + | schema= identifier '.' table= identifier + | catalog= identifier '.' schema= identifier '.' table= identifier ; -tablePath +tableNameCreate : table= identifier | schema= identifier '.' table= identifier | catalog= identifier '.' schema= identifier '.' table= identifier ; -viewPath +viewRef : view= identifier | schema= identifier '.' view= identifier | catalog= identifier '.' schema= identifier '.' view= identifier ; -schemaName - : schemaPath +viewNameCreate + : view= identifier + | schema= identifier '.' view= identifier + | catalog= identifier '.' schema= identifier '.' view= identifier ; -schemaNameCreate - : schemaPath +schemaRef + : schema= identifier + | catalog= identifier '.' schema= identifier ; -schemaPath +schemaNameCreate : schema= identifier | catalog= identifier '.' schema= identifier ; -catalogName +catalogRef : catalog= identifier ; @@ -749,7 +999,11 @@ functionName : qualifiedName ; -columnName +functionNameCreate + : qualifiedName + ; + +columnRef : qualifiedName | {this.shouldMatchEmpty()}? ; @@ -762,6 +1016,15 @@ qualifiedName : identifier ('.' identifier)* ; +queryPeriod + : KW_FOR rangeType KW_AS KW_OF end=valueExpression + ; + +rangeType + : KW_TIMESTAMP + | KW_VERSION + ; + grantor : principal # specifiedPrincipal | KW_CURRENT_USER # currentUserGrantor @@ -778,6 +1041,16 @@ roles : identifier (',' identifier)* ; +privilegeOrRole + : KW_CREATE + | KW_SELECT + | KW_DELETE + | KW_INSERT + | KW_UPDATE + | KW_EXECUTE + | identifier + ; + identifier : IDENTIFIER # unquotedIdentifier | QUOTED_IDENTIFIER # quotedIdentifier @@ -792,8 +1065,15 @@ number | MINUS? INTEGER_VALUE # integerLiteral ; +authorizationUser + : identifier # identifierUser + | string # stringUser + ; + nonReserved - : KW_ADD + // IMPORTANT: this rule must only contain tokens. Nested rules are not supported. See SqlParser.exitNonReserved + : KW_ABSENT + | KW_ADD | KW_ADMIN | KW_AFTER | KW_ALL @@ -803,26 +1083,41 @@ nonReserved | KW_ASC | KW_AT | KW_AUTHORIZATION + | KW_BEGIN | KW_BERNOULLI + | KW_BOTH | KW_CALL + | KW_CALLED | KW_CASCADE + | KW_CATALOG | KW_CATALOGS | KW_COLUMN | KW_COLUMNS | KW_COMMENT | KW_COMMIT | KW_COMMITTED + | KW_CONDITIONAL + | KW_COPARTITION + | KW_COUNT | KW_CURRENT | KW_DATA | KW_DATE | KW_DAY + | KW_DECLARE | KW_DEFAULT | KW_DEFINE | KW_DEFINER + | KW_DENY | KW_DESC + | KW_DESCRIPTOR + | KW_DETERMINISTIC | KW_DISTRIBUTED + | KW_DO | KW_DOUBLE + | KW_ELSEIF | KW_EMPTY + | KW_ENCODING + | KW_ERROR | KW_EXCLUDING | KW_EXPLAIN | KW_FETCH @@ -831,30 +1126,40 @@ nonReserved | KW_FIRST | KW_FOLLOWING | KW_FORMAT + | KW_FUNCTION | KW_FUNCTIONS + | KW_GRACE | KW_GRANT | KW_GRANTED | KW_GRANTS - | KW_DENY | KW_GRAPHVIZ | KW_GROUPS | KW_HOUR | KW_IF | KW_IGNORE + | KW_IMMEDIATE | KW_INCLUDING | KW_INITIAL | KW_INPUT | KW_INTERVAL | KW_INVOKER | KW_IO + | KW_ITERATE | KW_ISOLATION | KW_JSON + | KW_KEEP + | KW_KEY + | KW_KEYS + | KW_LANGUAGE | KW_LAST | KW_LATERAL + | KW_LEADING + | KW_LEAVE | KW_LEVEL | KW_LIMIT | KW_LOCAL | KW_LOGICAL + | KW_LOOP | KW_MAP | KW_MATCH | KW_MATCHED @@ -865,6 +1170,7 @@ nonReserved | KW_MERGE | KW_MINUTE | KW_MONTH + | KW_NESTED | KW_NEXT | KW_NFC | KW_NFD @@ -874,6 +1180,8 @@ nonReserved | KW_NONE | KW_NULLIF | KW_NULLS + | KW_OBJECT + | KW_OF | KW_OFFSET | KW_OMIT | KW_ONE @@ -882,27 +1190,37 @@ nonReserved | KW_ORDINALITY | KW_OUTPUT | KW_OVER + | KW_OVERFLOW | KW_PARTITION | KW_PARTITIONS + | KW_PASSING | KW_PAST | KW_PATH | KW_PATTERN | KW_PER + | KW_PERIOD | KW_PERMUTE + | KW_PLAN | KW_POSITION | KW_PRECEDING | KW_PRECISION | KW_PRIVILEGES | KW_PROPERTIES + | KW_PRUNE + | KW_QUOTES | KW_RANGE | KW_READ | KW_REFRESH | KW_RENAME + | KW_REPEAT | KW_REPEATABLE | KW_REPLACE | KW_RESET | KW_RESPECT | KW_RESTRICT + | KW_RETURN + | KW_RETURNING + | KW_RETURNS | KW_REVOKE | KW_ROLE | KW_ROLES @@ -910,6 +1228,7 @@ nonReserved | KW_ROW | KW_ROWS | KW_RUNNING + | KW_SCALAR | KW_SCHEMA | KW_SCHEMAS | KW_SECOND @@ -929,26 +1248,40 @@ nonReserved | KW_TABLES | KW_TABLESAMPLE | KW_TEXT + | KW_TEXT_STRING | KW_TIES | KW_TIME | KW_TIMESTAMP | KW_TO + | KW_TRAILING | KW_TRANSACTION | KW_TRUNCATE | KW_TRY_CAST | KW_TYPE | KW_UNBOUNDED | KW_UNCOMMITTED + | KW_UNCONDITIONAL + | KW_UNIQUE + | KW_UNKNOWN | KW_UNMATCHED + | KW_UNTIL | KW_UPDATE | KW_USE | KW_USER + | KW_UTF16 + | KW_UTF32 + | KW_UTF8 | KW_VALIDATE + | KW_VALUE | KW_VERBOSE + | KW_VERSION | KW_VIEW + | KW_WHILE | KW_WINDOW + | KW_WITHIN | KW_WITHOUT | KW_WORK + | KW_WRAPPER | KW_WRITE | KW_YEAR | KW_ZONE @@ -965,6 +1298,7 @@ nonReserved // $antlr-format singleLineOverrulesHangingColon true, alignLexerCommands true, alignLabels true, alignTrailers true // $antlr-format spaceBeforeAssignmentOperators false, groupedAlignments true +KW_ABSENT : 'ABSENT'; KW_ADD : 'ADD'; KW_ADMIN : 'ADMIN'; KW_AFTER : 'AFTER'; @@ -978,20 +1312,27 @@ KW_AS : 'AS'; KW_ASC : 'ASC'; KW_AT : 'AT'; KW_AUTHORIZATION : 'AUTHORIZATION'; +KW_BEGIN : 'BEGIN'; KW_BERNOULLI : 'BERNOULLI'; KW_BETWEEN : 'BETWEEN'; +KW_BOTH : 'BOTH'; KW_BY : 'BY'; KW_CALL : 'CALL'; +KW_CALLED : 'CALLED'; KW_CASCADE : 'CASCADE'; KW_CASE : 'CASE'; KW_CAST : 'CAST'; +KW_CATALOG : 'CATALOG'; KW_CATALOGS : 'CATALOGS'; KW_COLUMN : 'COLUMN'; KW_COLUMNS : 'COLUMNS'; KW_COMMENT : 'COMMENT'; KW_COMMIT : 'COMMIT'; KW_COMMITTED : 'COMMITTED'; +KW_CONDITIONAL : 'CONDITIONAL'; KW_CONSTRAINT : 'CONSTRAINT'; +KW_COUNT : 'COUNT'; +KW_COPARTITION : 'COPARTITION'; KW_CREATE : 'CREATE'; KW_CROSS : 'CROSS'; KW_CUBE : 'CUBE'; @@ -1007,20 +1348,28 @@ KW_CURRENT_USER : 'CURRENT_USER'; KW_DATA : 'DATA'; KW_DATE : 'DATE'; KW_DAY : 'DAY'; -KW_DEFAULT : 'DEFAULT'; KW_DEALLOCATE : 'DEALLOCATE'; +KW_DECLARE : 'DECLARE'; +KW_DEFAULT : 'DEFAULT'; +KW_DEFINE : 'DEFINE'; KW_DEFINER : 'DEFINER'; KW_DELETE : 'DELETE'; +KW_DENY : 'DENY'; KW_DESC : 'DESC'; KW_DESCRIBE : 'DESCRIBE'; -KW_DEFINE : 'DEFINE'; +KW_DESCRIPTOR : 'DESCRIPTOR'; +KW_DETERMINISTIC : 'DETERMINISTIC'; KW_DISTINCT : 'DISTINCT'; KW_DISTRIBUTED : 'DISTRIBUTED'; +KW_DO : 'DO'; KW_DOUBLE : 'DOUBLE'; KW_DROP : 'DROP'; KW_ELSE : 'ELSE'; KW_EMPTY : 'EMPTY'; +KW_ELSEIF : 'ELSEIF'; +KW_ENCODING : 'ENCODING'; KW_END : 'END'; +KW_ERROR : 'ERROR'; KW_ESCAPE : 'ESCAPE'; KW_EXCEPT : 'EXCEPT'; KW_EXCLUDING : 'EXCLUDING'; @@ -1038,11 +1387,12 @@ KW_FOR : 'FOR'; KW_FORMAT : 'FORMAT'; KW_FROM : 'FROM'; KW_FULL : 'FULL'; +KW_FUNCTION : 'FUNCTION'; KW_FUNCTIONS : 'FUNCTIONS'; +KW_GRACE : 'GRACE'; KW_GRANT : 'GRANT'; KW_GRANTED : 'GRANTED'; KW_GRANTS : 'GRANTS'; -KW_DENY : 'DENY'; KW_GRAPHVIZ : 'GRAPHVIZ'; KW_GROUP : 'GROUP'; KW_GROUPING : 'GROUPING'; @@ -1051,6 +1401,7 @@ KW_HAVING : 'HAVING'; KW_HOUR : 'HOUR'; KW_IF : 'IF'; KW_IGNORE : 'IGNORE'; +KW_IMMEDIATE : 'IMMEDIATE'; KW_IN : 'IN'; KW_INCLUDING : 'INCLUDING'; KW_INITIAL : 'INITIAL'; @@ -1064,18 +1415,33 @@ KW_INVOKER : 'INVOKER'; KW_IO : 'IO'; KW_IS : 'IS'; KW_ISOLATION : 'ISOLATION'; +KW_ITERATE : 'ITERATE'; KW_JOIN : 'JOIN'; KW_JSON : 'JSON'; +KW_JSON_ARRAY : 'JSON_ARRAY'; +KW_JSON_EXISTS : 'JSON_EXISTS'; +KW_JSON_OBJECT : 'JSON_OBJECT'; +KW_JSON_QUERY : 'JSON_QUERY'; +KW_JSON_TABLE : 'JSON_TABLE'; +KW_JSON_VALUE : 'JSON_VALUE'; +KW_KEEP : 'KEEP'; +KW_KEY : 'KEY'; +KW_KEYS : 'KEYS'; +KW_LANGUAGE : 'LANGUAGE'; KW_LAST : 'LAST'; KW_LATERAL : 'LATERAL'; +KW_LEADING : 'LEADING'; +KW_LEAVE : 'LEAVE'; KW_LEFT : 'LEFT'; KW_LEVEL : 'LEVEL'; KW_LIKE : 'LIKE'; KW_LIMIT : 'LIMIT'; +KW_LISTAGG : 'LISTAGG'; KW_LOCAL : 'LOCAL'; KW_LOCALTIME : 'LOCALTIME'; KW_LOCALTIMESTAMP : 'LOCALTIMESTAMP'; KW_LOGICAL : 'LOGICAL'; +KW_LOOP : 'LOOP'; KW_MAP : 'MAP'; KW_MATCH : 'MATCH'; KW_MATCHED : 'MATCHED'; @@ -1087,6 +1453,7 @@ KW_MERGE : 'MERGE'; KW_MINUTE : 'MINUTE'; KW_MONTH : 'MONTH'; KW_NATURAL : 'NATURAL'; +KW_NESTED : 'NESTED'; KW_NEXT : 'NEXT'; KW_NFC : 'NFC'; KW_NFD : 'NFD'; @@ -1099,6 +1466,8 @@ KW_NOT : 'NOT'; KW_NULL : 'NULL'; KW_NULLIF : 'NULLIF'; KW_NULLS : 'NULLS'; +KW_OBJECT : 'OBJECT'; +KW_OF : 'OF'; KW_OFFSET : 'OFFSET'; KW_OMIT : 'OMIT'; KW_ON : 'ON'; @@ -1111,29 +1480,39 @@ KW_ORDINALITY : 'ORDINALITY'; KW_OUTER : 'OUTER'; KW_OUTPUT : 'OUTPUT'; KW_OVER : 'OVER'; +KW_OVERFLOW : 'OVERFLOW'; KW_PARTITION : 'PARTITION'; KW_PARTITIONS : 'PARTITIONS'; +KW_PASSING : 'PASSING'; KW_PAST : 'PAST'; KW_PATH : 'PATH'; KW_PATTERN : 'PATTERN'; KW_PER : 'PER'; +KW_PERIOD : 'PERIOD'; KW_PERMUTE : 'PERMUTE'; +KW_PLAN : 'PLAN'; KW_POSITION : 'POSITION'; KW_PRECEDING : 'PRECEDING'; KW_PRECISION : 'PRECISION'; KW_PREPARE : 'PREPARE'; KW_PRIVILEGES : 'PRIVILEGES'; KW_PROPERTIES : 'PROPERTIES'; +KW_PRUNE : 'PRUNE'; +KW_QUOTES : 'QUOTES'; KW_RANGE : 'RANGE'; KW_READ : 'READ'; KW_RECURSIVE : 'RECURSIVE'; KW_REFRESH : 'REFRESH'; KW_RENAME : 'RENAME'; +KW_REPEAT : 'REPEAT'; KW_REPEATABLE : 'REPEATABLE'; KW_REPLACE : 'REPLACE'; KW_RESET : 'RESET'; KW_RESPECT : 'RESPECT'; KW_RESTRICT : 'RESTRICT'; +KW_RETURN : 'RETURN'; +KW_RETURNING : 'RETURNING'; +KW_RETURNS : 'RETURNS'; KW_REVOKE : 'REVOKE'; KW_RIGHT : 'RIGHT'; KW_ROLE : 'ROLE'; @@ -1143,6 +1522,7 @@ KW_ROLLUP : 'ROLLUP'; KW_ROW : 'ROW'; KW_ROWS : 'ROWS'; KW_RUNNING : 'RUNNING'; +KW_SCALAR : 'SCALAR'; KW_SCHEMA : 'SCHEMA'; KW_SCHEMAS : 'SCHEMAS'; KW_SECOND : 'SECOND'; @@ -1164,36 +1544,51 @@ KW_TABLE : 'TABLE'; KW_TABLES : 'TABLES'; KW_TABLESAMPLE : 'TABLESAMPLE'; KW_TEXT : 'TEXT'; +KW_TEXT_STRING : 'STRING'; KW_THEN : 'THEN'; KW_TIES : 'TIES'; KW_TIME : 'TIME'; KW_TIMESTAMP : 'TIMESTAMP'; KW_TO : 'TO'; +KW_TRAILING : 'TRAILING'; KW_TRANSACTION : 'TRANSACTION'; -KW_TRUNCATE : 'TRUNCATE'; +KW_TRIM : 'TRIM'; KW_TRUE : 'TRUE'; +KW_TRUNCATE : 'TRUNCATE'; KW_TRY_CAST : 'TRY_CAST'; KW_TYPE : 'TYPE'; KW_UESCAPE : 'UESCAPE'; KW_UNBOUNDED : 'UNBOUNDED'; KW_UNCOMMITTED : 'UNCOMMITTED'; +KW_UNCONDITIONAL : 'UNCONDITIONAL'; KW_UNION : 'UNION'; +KW_UNIQUE : 'UNIQUE'; +KW_UNKNOWN : 'UNKNOWN'; KW_UNMATCHED : 'UNMATCHED'; KW_UNNEST : 'UNNEST'; +KW_UNTIL : 'UNTIL'; KW_UPDATE : 'UPDATE'; KW_USE : 'USE'; KW_USER : 'USER'; KW_USING : 'USING'; +KW_UTF16 : 'UTF16'; +KW_UTF32 : 'UTF32'; +KW_UTF8 : 'UTF8'; KW_VALIDATE : 'VALIDATE'; +KW_VALUE : 'VALUE'; KW_VALUES : 'VALUES'; KW_VERBOSE : 'VERBOSE'; +KW_VERSION : 'VERSION'; KW_VIEW : 'VIEW'; KW_WHEN : 'WHEN'; KW_WHERE : 'WHERE'; +KW_WHILE : 'WHILE'; KW_WINDOW : 'WINDOW'; KW_WITH : 'WITH'; +KW_WITHIN : 'WITHIN'; KW_WITHOUT : 'WITHOUT'; KW_WORK : 'WORK'; +KW_WRAPPER : 'WRAPPER'; KW_WRITE : 'WRITE'; KW_YEAR : 'YEAR'; KW_ZONE : 'ZONE'; @@ -1212,19 +1607,20 @@ SLASH : '/'; PERCENT : '%'; CONCAT : '||'; QUESTION_MARK : '?'; +SEMICOLON : ';'; STRING: '\'' ( ~'\'' | '\'\'')* '\''; UNICODE_STRING: 'U&\'' ( ~'\'' | '\'\'')* '\''; -// Note: we allow any character inside the binary literal and validate its a correct literal when -// the AST is being constructed. This allows us to provide more meaningful error messages to the -// user +// Note: we allow any character inside the binary literal and validate +// its a correct literal when the AST is being constructed. This +// allows us to provide more meaningful error messages to the user BINARY_LITERAL: 'X\'' (~'\'')* '\''; -INTEGER_VALUE: DIGIT+; +INTEGER_VALUE: DECIMAL_INTEGER | HEXADECIMAL_INTEGER | OCTAL_INTEGER | BINARY_INTEGER; -DECIMAL_VALUE: DIGIT+ '.' DIGIT* | '.' DIGIT+; +DECIMAL_VALUE: DECIMAL_INTEGER '.' DECIMAL_INTEGER? | '.' DECIMAL_INTEGER; DOUBLE_VALUE: DIGIT+ ('.' DIGIT*)? EXPONENT | '.' DIGIT+ EXPONENT; @@ -1234,8 +1630,15 @@ DIGIT_IDENTIFIER: DIGIT (LETTER | DIGIT | '_')+; QUOTED_IDENTIFIER: '"' ( ~'"' | '""')* '"'; -BACKQUOTED_IDENTIFIER : '`' ( ~'`' | '``')* '`'; -SEMICOLON : ';'; +BACKQUOTED_IDENTIFIER: '`' ( ~'`' | '``')* '`'; + +fragment DECIMAL_INTEGER: DIGIT ('_'? DIGIT)*; + +fragment HEXADECIMAL_INTEGER: '0X' ('_'? (DIGIT | [A-F]))+; + +fragment OCTAL_INTEGER: '0O' ('_'? [0-7])+; + +fragment BINARY_INTEGER: '0B' ('_'? [01])+; fragment EXPONENT: 'E' [+-]? DIGIT+; @@ -1249,6 +1652,7 @@ BRACKETED_COMMENT: '/*' .*? '*/' -> channel(HIDDEN); WS: [ \r\n\t]+ -> channel(HIDDEN); -// Catch-all for anything we can't recognize. We use this to be able to ignore and recover all the -// text when splitting statements with DelimiterLexer +// Catch-all for anything we can't recognize. +// We use this to be able to ignore and recover all the text +// when splitting statements with DelimiterLexer UNRECOGNIZED: .; \ No newline at end of file diff --git a/src/lib/impala/ImpalaSqlParser.interp b/src/lib/impala/ImpalaSqlParser.interp index da5ba8a2..fe75d1a6 100644 --- a/src/lib/impala/ImpalaSqlParser.interp +++ b/src/lib/impala/ImpalaSqlParser.interp @@ -769,4 +769,4 @@ nonReserved atn: -[4, 1, 289, 2773, 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, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 1, 0, 5, 0, 368, 8, 0, 10, 0, 12, 0, 371, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 377, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 401, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 414, 8, 4, 1, 5, 1, 5, 3, 5, 418, 8, 5, 1, 5, 1, 5, 3, 5, 422, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 429, 8, 5, 10, 5, 12, 5, 432, 9, 5, 1, 5, 1, 5, 3, 5, 436, 8, 5, 1, 5, 1, 5, 3, 5, 440, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 446, 8, 5, 3, 5, 448, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 453, 8, 5, 1, 6, 1, 6, 3, 6, 457, 8, 6, 1, 6, 1, 6, 3, 6, 461, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 468, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 473, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 3, 7, 479, 8, 7, 1, 7, 1, 7, 3, 7, 483, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 490, 8, 7, 10, 7, 12, 7, 493, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 499, 8, 7, 1, 7, 1, 7, 3, 7, 503, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 508, 8, 7, 3, 7, 510, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 515, 8, 7, 1, 7, 1, 7, 3, 7, 519, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 526, 8, 7, 1, 7, 1, 7, 3, 7, 530, 8, 7, 1, 8, 1, 8, 1, 8, 3, 8, 535, 8, 8, 1, 8, 1, 8, 3, 8, 539, 8, 8, 1, 8, 1, 8, 3, 8, 543, 8, 8, 1, 8, 1, 8, 3, 8, 547, 8, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 555, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 560, 8, 9, 1, 9, 1, 9, 3, 9, 564, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 572, 8, 11, 1, 11, 1, 11, 3, 11, 576, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 583, 8, 11, 10, 11, 12, 11, 586, 9, 11, 3, 11, 588, 8, 11, 1, 11, 3, 11, 591, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 597, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 604, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 615, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 620, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 625, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 630, 8, 11, 1, 12, 1, 12, 1, 12, 3, 12, 635, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 642, 8, 12, 10, 12, 12, 12, 645, 9, 12, 3, 12, 647, 8, 12, 1, 12, 3, 12, 650, 8, 12, 1, 12, 1, 12, 3, 12, 654, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 680, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 706, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 715, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 725, 8, 16, 1, 16, 3, 16, 728, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 742, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 760, 8, 20, 3, 20, 762, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 769, 8, 20, 10, 20, 12, 20, 772, 9, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 782, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 791, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 798, 8, 22, 1, 22, 1, 22, 3, 22, 802, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 809, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 815, 8, 23, 1, 23, 3, 23, 818, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 823, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 830, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 844, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 857, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 862, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 867, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 873, 8, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 909, 8, 32, 1, 32, 3, 32, 912, 8, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 918, 8, 33, 1, 33, 3, 33, 921, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 927, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 933, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 945, 8, 35, 3, 35, 947, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 958, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 966, 8, 37, 1, 38, 1, 38, 1, 38, 3, 38, 971, 8, 38, 1, 38, 1, 38, 3, 38, 975, 8, 38, 1, 39, 1, 39, 1, 39, 3, 39, 980, 8, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 987, 8, 40, 1, 40, 1, 40, 3, 40, 991, 8, 40, 1, 41, 1, 41, 3, 41, 995, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1001, 8, 41, 1, 42, 1, 42, 3, 42, 1005, 8, 42, 1, 42, 1, 42, 3, 42, 1009, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 1016, 8, 42, 10, 42, 12, 42, 1019, 9, 42, 3, 42, 1021, 8, 42, 1, 42, 3, 42, 1024, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 3, 44, 1032, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1046, 8, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47, 1053, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1066, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1072, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1077, 8, 49, 1, 49, 3, 49, 1080, 8, 49, 1, 50, 3, 50, 1083, 8, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1088, 8, 50, 1, 50, 1, 50, 3, 50, 1092, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1099, 8, 50, 10, 50, 12, 50, 1102, 9, 50, 1, 50, 1, 50, 3, 50, 1106, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 1112, 8, 51, 1, 52, 1, 52, 3, 52, 1116, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1121, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 1126, 8, 53, 1, 53, 3, 53, 1129, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1135, 8, 53, 10, 53, 12, 53, 1138, 9, 53, 3, 53, 1140, 8, 53, 1, 53, 1, 53, 3, 53, 1144, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1154, 8, 54, 10, 54, 12, 54, 1157, 9, 54, 3, 54, 1159, 8, 54, 1, 54, 1, 54, 3, 54, 1163, 8, 54, 1, 55, 1, 55, 1, 55, 3, 55, 1168, 8, 55, 1, 55, 1, 55, 3, 55, 1172, 8, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1188, 8, 56, 1, 57, 1, 57, 1, 57, 3, 57, 1193, 8, 57, 1, 57, 1, 57, 1, 57, 5, 57, 1198, 8, 57, 10, 57, 12, 57, 1201, 9, 57, 3, 57, 1203, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1209, 8, 58, 1, 58, 3, 58, 1212, 8, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1217, 8, 58, 10, 58, 12, 58, 1220, 9, 58, 3, 58, 1222, 8, 58, 1, 59, 1, 59, 3, 59, 1226, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1231, 8, 59, 1, 59, 3, 59, 1234, 8, 59, 1, 59, 1, 59, 1, 59, 5, 59, 1239, 8, 59, 10, 59, 12, 59, 1242, 9, 59, 3, 59, 1244, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 3, 64, 1268, 8, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1282, 8, 65, 1, 65, 1, 65, 3, 65, 1286, 8, 65, 1, 66, 1, 66, 3, 66, 1290, 8, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1310, 8, 68, 3, 68, 1312, 8, 68, 3, 68, 1314, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1323, 8, 69, 3, 69, 1325, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1334, 8, 70, 3, 70, 1336, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1345, 8, 71, 3, 71, 1347, 8, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1352, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1361, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1370, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1379, 8, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1390, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1396, 8, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1401, 8, 78, 1, 78, 3, 78, 1404, 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1417, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1427, 8, 80, 1, 80, 1, 80, 3, 80, 1431, 8, 80, 1, 81, 1, 81, 1, 81, 3, 81, 1436, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 5, 82, 1445, 8, 82, 10, 82, 12, 82, 1448, 9, 82, 1, 82, 1, 82, 3, 82, 1452, 8, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 5, 93, 1483, 8, 93, 10, 93, 12, 93, 1486, 9, 93, 1, 94, 1, 94, 1, 94, 5, 94, 1491, 8, 94, 10, 94, 12, 94, 1494, 9, 94, 1, 95, 1, 95, 3, 95, 1498, 8, 95, 1, 96, 1, 96, 3, 96, 1502, 8, 96, 1, 97, 1, 97, 3, 97, 1506, 8, 97, 1, 98, 1, 98, 1, 98, 3, 98, 1511, 8, 98, 1, 98, 1, 98, 3, 98, 1515, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1520, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1525, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1530, 8, 98, 1, 98, 1, 98, 3, 98, 1534, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1543, 8, 98, 1, 98, 3, 98, 1546, 8, 98, 1, 98, 1, 98, 3, 98, 1550, 8, 98, 1, 99, 1, 99, 1, 99, 5, 99, 1555, 8, 99, 10, 99, 12, 99, 1558, 9, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1568, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1574, 8, 101, 5, 101, 1576, 8, 101, 10, 101, 12, 101, 1579, 9, 101, 1, 101, 1, 101, 1, 102, 3, 102, 1584, 8, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1592, 8, 103, 10, 103, 12, 103, 1595, 9, 103, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1601, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1606, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1611, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1616, 8, 104, 1, 104, 1, 104, 5, 104, 1620, 8, 104, 10, 104, 12, 104, 1623, 9, 104, 3, 104, 1625, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 1634, 8, 105, 1, 105, 3, 105, 1637, 8, 105, 1, 105, 3, 105, 1640, 8, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1646, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 1652, 8, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 5, 109, 1660, 8, 109, 10, 109, 12, 109, 1663, 9, 109, 3, 109, 1665, 8, 109, 1, 109, 1, 109, 3, 109, 1669, 8, 109, 1, 109, 1, 109, 3, 109, 1673, 8, 109, 1, 110, 3, 110, 1676, 8, 110, 1, 110, 1, 110, 5, 110, 1680, 8, 110, 10, 110, 12, 110, 1683, 9, 110, 3, 110, 1685, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1691, 8, 111, 1, 111, 1, 111, 5, 111, 1695, 8, 111, 10, 111, 12, 111, 1698, 9, 111, 3, 111, 1700, 8, 111, 1, 112, 3, 112, 1703, 8, 112, 1, 112, 1, 112, 3, 112, 1707, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1717, 8, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 5, 116, 1726, 8, 116, 10, 116, 12, 116, 1729, 9, 116, 1, 116, 1, 116, 3, 116, 1733, 8, 116, 1, 116, 3, 116, 1736, 8, 116, 1, 117, 1, 117, 3, 117, 1740, 8, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 3, 118, 1747, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 1755, 8, 118, 10, 118, 12, 118, 1758, 9, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1769, 8, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1775, 8, 119, 3, 119, 1777, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1786, 8, 120, 1, 120, 3, 120, 1789, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 1796, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1806, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1812, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 5, 124, 1818, 8, 124, 10, 124, 12, 124, 1821, 9, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 1829, 8, 125, 10, 125, 12, 125, 1832, 9, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 5, 126, 1839, 8, 126, 10, 126, 12, 126, 1842, 9, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 1852, 8, 127, 3, 127, 1854, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 1860, 8, 127, 1, 128, 1, 128, 1, 128, 3, 128, 1865, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 5, 129, 1873, 8, 129, 10, 129, 12, 129, 1876, 9, 129, 3, 129, 1878, 8, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 1884, 8, 129, 3, 129, 1886, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1894, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1900, 8, 130, 1, 130, 5, 130, 1903, 8, 130, 10, 130, 12, 130, 1906, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 1915, 8, 131, 10, 131, 12, 131, 1918, 9, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1924, 8, 131, 1, 132, 1, 132, 3, 132, 1928, 8, 132, 1, 132, 1, 132, 3, 132, 1932, 8, 132, 1, 133, 1, 133, 3, 133, 1936, 8, 133, 1, 133, 3, 133, 1939, 8, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1944, 8, 133, 10, 133, 12, 133, 1947, 9, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1953, 8, 133, 10, 133, 12, 133, 1956, 9, 133, 3, 133, 1958, 8, 133, 1, 133, 1, 133, 3, 133, 1962, 8, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1967, 8, 133, 1, 133, 1, 133, 3, 133, 1971, 8, 133, 1, 134, 3, 134, 1974, 8, 134, 1, 134, 1, 134, 1, 134, 5, 134, 1979, 8, 134, 10, 134, 12, 134, 1982, 9, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 5, 136, 1990, 8, 136, 10, 136, 12, 136, 1993, 9, 136, 3, 136, 1995, 8, 136, 1, 136, 1, 136, 3, 136, 1999, 8, 136, 1, 137, 1, 137, 3, 137, 2003, 8, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 3, 139, 2012, 8, 139, 1, 139, 3, 139, 2015, 8, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2022, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2036, 8, 140, 5, 140, 2038, 8, 140, 10, 140, 12, 140, 2041, 9, 140, 1, 141, 3, 141, 2044, 8, 141, 1, 141, 1, 141, 3, 141, 2048, 8, 141, 1, 141, 1, 141, 3, 141, 2052, 8, 141, 1, 141, 1, 141, 3, 141, 2056, 8, 141, 1, 141, 1, 141, 3, 141, 2060, 8, 141, 1, 141, 1, 141, 3, 141, 2064, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2074, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 2083, 8, 142, 10, 142, 12, 142, 2086, 9, 142, 1, 142, 1, 142, 3, 142, 2090, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 2103, 8, 143, 3, 143, 2105, 8, 143, 1, 144, 1, 144, 1, 145, 1, 145, 3, 145, 2111, 8, 145, 1, 145, 1, 145, 3, 145, 2115, 8, 145, 3, 145, 2117, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 5, 146, 2123, 8, 146, 10, 146, 12, 146, 2126, 9, 146, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 2132, 8, 147, 1, 147, 1, 147, 1, 147, 3, 147, 2137, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 5, 149, 2148, 8, 149, 10, 149, 12, 149, 2151, 9, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2156, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 3, 151, 2164, 8, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 3, 153, 2171, 8, 153, 1, 153, 1, 153, 3, 153, 2175, 8, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 5, 153, 2183, 8, 153, 10, 153, 12, 153, 2186, 9, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2196, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2204, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 2211, 8, 154, 10, 154, 12, 154, 2214, 9, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2219, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2224, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2230, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2236, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2241, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2246, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 2252, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 2263, 8, 155, 10, 155, 12, 155, 2266, 9, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2292, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2298, 8, 156, 5, 156, 2300, 8, 156, 10, 156, 12, 156, 2303, 9, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2312, 8, 156, 10, 156, 12, 156, 2315, 9, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2324, 8, 156, 1, 156, 3, 156, 2327, 8, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2332, 8, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2337, 8, 156, 10, 156, 12, 156, 2340, 9, 156, 3, 156, 2342, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2349, 8, 156, 10, 156, 12, 156, 2352, 9, 156, 3, 156, 2354, 8, 156, 1, 156, 1, 156, 3, 156, 2358, 8, 156, 1, 156, 3, 156, 2361, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2371, 8, 156, 10, 156, 12, 156, 2374, 9, 156, 3, 156, 2376, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 4, 156, 2393, 8, 156, 11, 156, 12, 156, 2394, 1, 156, 1, 156, 3, 156, 2399, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 4, 156, 2405, 8, 156, 11, 156, 12, 156, 2406, 1, 156, 1, 156, 3, 156, 2411, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2434, 8, 156, 10, 156, 12, 156, 2437, 9, 156, 3, 156, 2439, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2448, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2454, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2460, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2466, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2477, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2486, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2506, 8, 156, 10, 156, 12, 156, 2509, 9, 156, 3, 156, 2511, 8, 156, 1, 156, 3, 156, 2514, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2524, 8, 156, 10, 156, 12, 156, 2527, 9, 156, 1, 157, 1, 157, 1, 157, 1, 157, 3, 157, 2533, 8, 157, 3, 157, 2535, 8, 157, 1, 158, 1, 158, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 3, 161, 2557, 8, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, 2584, 8, 164, 10, 164, 12, 164, 2587, 9, 164, 1, 164, 1, 164, 1, 164, 1, 164, 3, 164, 2593, 8, 164, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, 2599, 8, 164, 10, 164, 12, 164, 2602, 9, 164, 1, 164, 1, 164, 3, 164, 2606, 8, 164, 3, 164, 2608, 8, 164, 1, 164, 1, 164, 5, 164, 2612, 8, 164, 10, 164, 12, 164, 2615, 9, 164, 1, 165, 1, 165, 1, 166, 1, 166, 3, 166, 2621, 8, 166, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 2627, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 5, 170, 2647, 8, 170, 10, 170, 12, 170, 2650, 9, 170, 3, 170, 2652, 8, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 5, 170, 2659, 8, 170, 10, 170, 12, 170, 2662, 9, 170, 3, 170, 2664, 8, 170, 1, 170, 3, 170, 2667, 8, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 2687, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 2698, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 2705, 8, 173, 1, 174, 1, 174, 1, 174, 5, 174, 2710, 8, 174, 10, 174, 12, 174, 2713, 9, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 2726, 8, 175, 3, 175, 2728, 8, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 5, 177, 2735, 8, 177, 10, 177, 12, 177, 2738, 9, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 3, 178, 2746, 8, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 3, 179, 2753, 8, 179, 1, 180, 3, 180, 2756, 8, 180, 1, 180, 1, 180, 3, 180, 2760, 8, 180, 1, 180, 1, 180, 3, 180, 2764, 8, 180, 1, 180, 3, 180, 2767, 8, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 10, 770, 1446, 1621, 1661, 1681, 1696, 1727, 1756, 1830, 2301, 6, 260, 280, 306, 310, 312, 328, 183, 0, 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, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 0, 33, 2, 0, 46, 46, 170, 170, 2, 0, 166, 166, 204, 204, 2, 0, 176, 176, 202, 202, 2, 0, 69, 69, 80, 80, 2, 0, 27, 27, 159, 159, 2, 0, 103, 103, 144, 144, 2, 0, 47, 47, 171, 171, 2, 0, 3, 3, 12, 12, 3, 0, 87, 87, 166, 166, 204, 204, 2, 0, 178, 178, 209, 209, 1, 0, 245, 248, 2, 0, 147, 147, 219, 223, 2, 0, 65, 65, 95, 95, 2, 0, 64, 64, 200, 200, 2, 0, 10, 10, 55, 55, 2, 0, 75, 75, 112, 112, 2, 0, 2, 2, 57, 57, 2, 0, 14, 14, 185, 185, 3, 0, 106, 106, 115, 115, 164, 164, 2, 0, 105, 105, 163, 163, 4, 0, 70, 70, 133, 133, 194, 194, 208, 208, 1, 0, 255, 256, 1, 0, 257, 259, 1, 0, 249, 254, 3, 0, 2, 2, 6, 6, 181, 181, 2, 0, 70, 70, 194, 194, 5, 0, 48, 49, 91, 92, 122, 125, 172, 173, 217, 218, 1, 0, 127, 130, 2, 0, 8, 8, 227, 244, 2, 0, 77, 77, 149, 149, 4, 0, 46, 46, 178, 178, 188, 188, 209, 209, 16, 0, 28, 29, 40, 40, 43, 43, 48, 48, 68, 68, 91, 91, 114, 114, 122, 122, 124, 124, 158, 158, 165, 165, 172, 172, 184, 184, 196, 196, 204, 204, 217, 217, 23, 0, 14, 14, 43, 44, 48, 49, 65, 65, 68, 68, 91, 91, 95, 95, 110, 110, 119, 119, 122, 125, 127, 130, 137, 137, 140, 140, 152, 153, 172, 173, 180, 180, 184, 185, 195, 195, 204, 204, 213, 213, 217, 217, 220, 220, 231, 231, 3096, 0, 369, 1, 0, 0, 0, 2, 374, 1, 0, 0, 0, 4, 400, 1, 0, 0, 0, 6, 402, 1, 0, 0, 0, 8, 413, 1, 0, 0, 0, 10, 415, 1, 0, 0, 0, 12, 454, 1, 0, 0, 0, 14, 476, 1, 0, 0, 0, 16, 531, 1, 0, 0, 0, 18, 551, 1, 0, 0, 0, 20, 565, 1, 0, 0, 0, 22, 569, 1, 0, 0, 0, 24, 631, 1, 0, 0, 0, 26, 679, 1, 0, 0, 0, 28, 681, 1, 0, 0, 0, 30, 689, 1, 0, 0, 0, 32, 709, 1, 0, 0, 0, 34, 729, 1, 0, 0, 0, 36, 736, 1, 0, 0, 0, 38, 745, 1, 0, 0, 0, 40, 753, 1, 0, 0, 0, 42, 775, 1, 0, 0, 0, 44, 785, 1, 0, 0, 0, 46, 803, 1, 0, 0, 0, 48, 824, 1, 0, 0, 0, 50, 845, 1, 0, 0, 0, 52, 851, 1, 0, 0, 0, 54, 868, 1, 0, 0, 0, 56, 877, 1, 0, 0, 0, 58, 884, 1, 0, 0, 0, 60, 892, 1, 0, 0, 0, 62, 899, 1, 0, 0, 0, 64, 906, 1, 0, 0, 0, 66, 915, 1, 0, 0, 0, 68, 926, 1, 0, 0, 0, 70, 928, 1, 0, 0, 0, 72, 948, 1, 0, 0, 0, 74, 965, 1, 0, 0, 0, 76, 967, 1, 0, 0, 0, 78, 976, 1, 0, 0, 0, 80, 983, 1, 0, 0, 0, 82, 992, 1, 0, 0, 0, 84, 1002, 1, 0, 0, 0, 86, 1025, 1, 0, 0, 0, 88, 1031, 1, 0, 0, 0, 90, 1033, 1, 0, 0, 0, 92, 1040, 1, 0, 0, 0, 94, 1052, 1, 0, 0, 0, 96, 1054, 1, 0, 0, 0, 98, 1061, 1, 0, 0, 0, 100, 1082, 1, 0, 0, 0, 102, 1111, 1, 0, 0, 0, 104, 1113, 1, 0, 0, 0, 106, 1122, 1, 0, 0, 0, 108, 1145, 1, 0, 0, 0, 110, 1164, 1, 0, 0, 0, 112, 1187, 1, 0, 0, 0, 114, 1189, 1, 0, 0, 0, 116, 1204, 1, 0, 0, 0, 118, 1223, 1, 0, 0, 0, 120, 1245, 1, 0, 0, 0, 122, 1250, 1, 0, 0, 0, 124, 1255, 1, 0, 0, 0, 126, 1260, 1, 0, 0, 0, 128, 1265, 1, 0, 0, 0, 130, 1272, 1, 0, 0, 0, 132, 1287, 1, 0, 0, 0, 134, 1293, 1, 0, 0, 0, 136, 1313, 1, 0, 0, 0, 138, 1315, 1, 0, 0, 0, 140, 1326, 1, 0, 0, 0, 142, 1337, 1, 0, 0, 0, 144, 1351, 1, 0, 0, 0, 146, 1353, 1, 0, 0, 0, 148, 1362, 1, 0, 0, 0, 150, 1371, 1, 0, 0, 0, 152, 1380, 1, 0, 0, 0, 154, 1383, 1, 0, 0, 0, 156, 1391, 1, 0, 0, 0, 158, 1407, 1, 0, 0, 0, 160, 1411, 1, 0, 0, 0, 162, 1435, 1, 0, 0, 0, 164, 1437, 1, 0, 0, 0, 166, 1453, 1, 0, 0, 0, 168, 1456, 1, 0, 0, 0, 170, 1460, 1, 0, 0, 0, 172, 1463, 1, 0, 0, 0, 174, 1467, 1, 0, 0, 0, 176, 1469, 1, 0, 0, 0, 178, 1471, 1, 0, 0, 0, 180, 1473, 1, 0, 0, 0, 182, 1475, 1, 0, 0, 0, 184, 1477, 1, 0, 0, 0, 186, 1479, 1, 0, 0, 0, 188, 1487, 1, 0, 0, 0, 190, 1497, 1, 0, 0, 0, 192, 1501, 1, 0, 0, 0, 194, 1505, 1, 0, 0, 0, 196, 1510, 1, 0, 0, 0, 198, 1551, 1, 0, 0, 0, 200, 1559, 1, 0, 0, 0, 202, 1563, 1, 0, 0, 0, 204, 1583, 1, 0, 0, 0, 206, 1587, 1, 0, 0, 0, 208, 1596, 1, 0, 0, 0, 210, 1626, 1, 0, 0, 0, 212, 1641, 1, 0, 0, 0, 214, 1647, 1, 0, 0, 0, 216, 1653, 1, 0, 0, 0, 218, 1655, 1, 0, 0, 0, 220, 1675, 1, 0, 0, 0, 222, 1686, 1, 0, 0, 0, 224, 1706, 1, 0, 0, 0, 226, 1716, 1, 0, 0, 0, 228, 1718, 1, 0, 0, 0, 230, 1720, 1, 0, 0, 0, 232, 1735, 1, 0, 0, 0, 234, 1737, 1, 0, 0, 0, 236, 1744, 1, 0, 0, 0, 238, 1776, 1, 0, 0, 0, 240, 1788, 1, 0, 0, 0, 242, 1795, 1, 0, 0, 0, 244, 1805, 1, 0, 0, 0, 246, 1807, 1, 0, 0, 0, 248, 1813, 1, 0, 0, 0, 250, 1824, 1, 0, 0, 0, 252, 1835, 1, 0, 0, 0, 254, 1843, 1, 0, 0, 0, 256, 1861, 1, 0, 0, 0, 258, 1866, 1, 0, 0, 0, 260, 1887, 1, 0, 0, 0, 262, 1923, 1, 0, 0, 0, 264, 1925, 1, 0, 0, 0, 266, 1933, 1, 0, 0, 0, 268, 1973, 1, 0, 0, 0, 270, 1983, 1, 0, 0, 0, 272, 1998, 1, 0, 0, 0, 274, 2000, 1, 0, 0, 0, 276, 2007, 1, 0, 0, 0, 278, 2021, 1, 0, 0, 0, 280, 2023, 1, 0, 0, 0, 282, 2073, 1, 0, 0, 0, 284, 2089, 1, 0, 0, 0, 286, 2091, 1, 0, 0, 0, 288, 2106, 1, 0, 0, 0, 290, 2108, 1, 0, 0, 0, 292, 2118, 1, 0, 0, 0, 294, 2136, 1, 0, 0, 0, 296, 2138, 1, 0, 0, 0, 298, 2142, 1, 0, 0, 0, 300, 2157, 1, 0, 0, 0, 302, 2163, 1, 0, 0, 0, 304, 2165, 1, 0, 0, 0, 306, 2174, 1, 0, 0, 0, 308, 2245, 1, 0, 0, 0, 310, 2251, 1, 0, 0, 0, 312, 2513, 1, 0, 0, 0, 314, 2534, 1, 0, 0, 0, 316, 2536, 1, 0, 0, 0, 318, 2538, 1, 0, 0, 0, 320, 2540, 1, 0, 0, 0, 322, 2556, 1, 0, 0, 0, 324, 2558, 1, 0, 0, 0, 326, 2560, 1, 0, 0, 0, 328, 2607, 1, 0, 0, 0, 330, 2616, 1, 0, 0, 0, 332, 2620, 1, 0, 0, 0, 334, 2626, 1, 0, 0, 0, 336, 2628, 1, 0, 0, 0, 338, 2633, 1, 0, 0, 0, 340, 2639, 1, 0, 0, 0, 342, 2686, 1, 0, 0, 0, 344, 2697, 1, 0, 0, 0, 346, 2704, 1, 0, 0, 0, 348, 2706, 1, 0, 0, 0, 350, 2727, 1, 0, 0, 0, 352, 2729, 1, 0, 0, 0, 354, 2731, 1, 0, 0, 0, 356, 2745, 1, 0, 0, 0, 358, 2752, 1, 0, 0, 0, 360, 2766, 1, 0, 0, 0, 362, 2768, 1, 0, 0, 0, 364, 2770, 1, 0, 0, 0, 366, 368, 3, 2, 1, 0, 367, 366, 1, 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 372, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 372, 373, 5, 0, 0, 1, 373, 1, 1, 0, 0, 0, 374, 376, 3, 4, 2, 0, 375, 377, 5, 262, 0, 0, 376, 375, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 3, 1, 0, 0, 0, 378, 401, 3, 204, 102, 0, 379, 401, 3, 6, 3, 0, 380, 401, 3, 8, 4, 0, 381, 401, 3, 26, 13, 0, 382, 401, 3, 64, 32, 0, 383, 401, 3, 66, 33, 0, 384, 401, 3, 68, 34, 0, 385, 401, 3, 74, 37, 0, 386, 401, 3, 88, 44, 0, 387, 401, 3, 94, 47, 0, 388, 401, 3, 100, 50, 0, 389, 401, 3, 102, 51, 0, 390, 401, 3, 108, 54, 0, 391, 401, 3, 110, 55, 0, 392, 401, 3, 112, 56, 0, 393, 401, 3, 144, 72, 0, 394, 401, 3, 152, 76, 0, 395, 401, 3, 154, 77, 0, 396, 401, 3, 156, 78, 0, 397, 401, 3, 158, 79, 0, 398, 401, 3, 160, 80, 0, 399, 401, 3, 162, 81, 0, 400, 378, 1, 0, 0, 0, 400, 379, 1, 0, 0, 0, 400, 380, 1, 0, 0, 0, 400, 381, 1, 0, 0, 0, 400, 382, 1, 0, 0, 0, 400, 383, 1, 0, 0, 0, 400, 384, 1, 0, 0, 0, 400, 385, 1, 0, 0, 0, 400, 386, 1, 0, 0, 0, 400, 387, 1, 0, 0, 0, 400, 388, 1, 0, 0, 0, 400, 389, 1, 0, 0, 0, 400, 390, 1, 0, 0, 0, 400, 391, 1, 0, 0, 0, 400, 392, 1, 0, 0, 0, 400, 393, 1, 0, 0, 0, 400, 394, 1, 0, 0, 0, 400, 395, 1, 0, 0, 0, 400, 396, 1, 0, 0, 0, 400, 397, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 5, 1, 0, 0, 0, 402, 403, 5, 203, 0, 0, 403, 404, 3, 184, 92, 0, 404, 7, 1, 0, 0, 0, 405, 414, 3, 18, 9, 0, 406, 414, 3, 20, 10, 0, 407, 414, 3, 22, 11, 0, 408, 414, 3, 24, 12, 0, 409, 414, 3, 16, 8, 0, 410, 414, 3, 14, 7, 0, 411, 414, 3, 12, 6, 0, 412, 414, 3, 10, 5, 0, 413, 405, 1, 0, 0, 0, 413, 406, 1, 0, 0, 0, 413, 407, 1, 0, 0, 0, 413, 408, 1, 0, 0, 0, 413, 409, 1, 0, 0, 0, 413, 410, 1, 0, 0, 0, 413, 411, 1, 0, 0, 0, 413, 412, 1, 0, 0, 0, 414, 9, 1, 0, 0, 0, 415, 417, 5, 37, 0, 0, 416, 418, 5, 19, 0, 0, 417, 416, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 421, 5, 188, 0, 0, 420, 422, 3, 172, 86, 0, 421, 420, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 439, 3, 174, 87, 0, 424, 425, 5, 265, 0, 0, 425, 430, 3, 214, 107, 0, 426, 427, 5, 263, 0, 0, 427, 429, 3, 214, 107, 0, 428, 426, 1, 0, 0, 0, 429, 432, 1, 0, 0, 0, 430, 428, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 435, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 433, 434, 5, 263, 0, 0, 434, 436, 3, 208, 104, 0, 435, 433, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 438, 5, 266, 0, 0, 438, 440, 1, 0, 0, 0, 439, 424, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 447, 1, 0, 0, 0, 441, 442, 5, 17, 0, 0, 442, 445, 5, 26, 0, 0, 443, 446, 3, 292, 146, 0, 444, 446, 3, 250, 125, 0, 445, 443, 1, 0, 0, 0, 445, 444, 1, 0, 0, 0, 446, 448, 1, 0, 0, 0, 447, 441, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 452, 3, 196, 98, 0, 450, 451, 5, 9, 0, 0, 451, 453, 3, 204, 102, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 11, 1, 0, 0, 0, 454, 456, 5, 37, 0, 0, 455, 457, 5, 19, 0, 0, 456, 455, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 460, 5, 188, 0, 0, 459, 461, 3, 172, 86, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 463, 3, 174, 87, 0, 463, 467, 5, 115, 0, 0, 464, 468, 3, 186, 93, 0, 465, 466, 5, 147, 0, 0, 466, 468, 3, 314, 157, 0, 467, 464, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 468, 472, 1, 0, 0, 0, 469, 470, 5, 17, 0, 0, 470, 471, 5, 26, 0, 0, 471, 473, 3, 250, 125, 0, 472, 469, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 3, 196, 98, 0, 475, 13, 1, 0, 0, 0, 476, 478, 5, 37, 0, 0, 477, 479, 5, 19, 0, 0, 478, 477, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 482, 5, 188, 0, 0, 481, 483, 3, 172, 86, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 502, 3, 174, 87, 0, 485, 486, 5, 265, 0, 0, 486, 491, 3, 216, 108, 0, 487, 488, 5, 263, 0, 0, 488, 490, 3, 216, 108, 0, 489, 487, 1, 0, 0, 0, 490, 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 498, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 494, 495, 5, 263, 0, 0, 495, 496, 5, 150, 0, 0, 496, 497, 5, 110, 0, 0, 497, 499, 3, 292, 146, 0, 498, 494, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, 5, 266, 0, 0, 501, 503, 1, 0, 0, 0, 502, 485, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 509, 1, 0, 0, 0, 504, 505, 5, 150, 0, 0, 505, 507, 5, 110, 0, 0, 506, 508, 3, 292, 146, 0, 507, 506, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 510, 1, 0, 0, 0, 509, 504, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 514, 1, 0, 0, 0, 511, 512, 5, 145, 0, 0, 512, 513, 5, 26, 0, 0, 513, 515, 3, 232, 116, 0, 514, 511, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 518, 1, 0, 0, 0, 516, 517, 5, 34, 0, 0, 517, 519, 3, 314, 157, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 521, 5, 23, 0, 0, 521, 522, 5, 9, 0, 0, 522, 525, 5, 111, 0, 0, 523, 524, 5, 25, 0, 0, 524, 526, 3, 248, 124, 0, 525, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 529, 1, 0, 0, 0, 527, 528, 5, 9, 0, 0, 528, 530, 3, 204, 102, 0, 529, 527, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 15, 1, 0, 0, 0, 531, 532, 5, 37, 0, 0, 532, 534, 5, 212, 0, 0, 533, 535, 3, 172, 86, 0, 534, 533, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 538, 3, 178, 89, 0, 537, 539, 3, 202, 101, 0, 538, 537, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 541, 5, 34, 0, 0, 541, 543, 3, 314, 157, 0, 542, 540, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 546, 1, 0, 0, 0, 544, 545, 5, 25, 0, 0, 545, 547, 3, 248, 124, 0, 546, 544, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 549, 5, 9, 0, 0, 549, 550, 3, 204, 102, 0, 550, 17, 1, 0, 0, 0, 551, 552, 5, 37, 0, 0, 552, 554, 7, 0, 0, 0, 553, 555, 3, 172, 86, 0, 554, 553, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 559, 3, 176, 88, 0, 557, 558, 5, 34, 0, 0, 558, 560, 3, 314, 157, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 563, 1, 0, 0, 0, 561, 562, 5, 24, 0, 0, 562, 564, 3, 314, 157, 0, 563, 561, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 19, 1, 0, 0, 0, 565, 566, 5, 37, 0, 0, 566, 567, 5, 166, 0, 0, 567, 568, 3, 358, 179, 0, 568, 21, 1, 0, 0, 0, 569, 571, 5, 37, 0, 0, 570, 572, 5, 12, 0, 0, 571, 570, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 575, 5, 84, 0, 0, 574, 576, 3, 172, 86, 0, 575, 574, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 590, 3, 180, 90, 0, 578, 587, 5, 265, 0, 0, 579, 584, 3, 328, 164, 0, 580, 581, 5, 263, 0, 0, 581, 583, 3, 328, 164, 0, 582, 580, 1, 0, 0, 0, 583, 586, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 588, 1, 0, 0, 0, 586, 584, 1, 0, 0, 0, 587, 579, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 591, 5, 266, 0, 0, 590, 578, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 593, 5, 160, 0, 0, 593, 596, 3, 328, 164, 0, 594, 595, 5, 102, 0, 0, 595, 597, 3, 328, 164, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 599, 5, 24, 0, 0, 599, 603, 5, 274, 0, 0, 600, 601, 5, 104, 0, 0, 601, 602, 5, 249, 0, 0, 602, 604, 5, 274, 0, 0, 603, 600, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 5, 206, 0, 0, 606, 607, 5, 249, 0, 0, 607, 608, 5, 274, 0, 0, 608, 609, 5, 126, 0, 0, 609, 610, 5, 249, 0, 0, 610, 614, 5, 274, 0, 0, 611, 612, 5, 18, 0, 0, 612, 613, 5, 249, 0, 0, 613, 615, 5, 274, 0, 0, 614, 611, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 619, 1, 0, 0, 0, 616, 617, 5, 20, 0, 0, 617, 618, 5, 249, 0, 0, 618, 620, 5, 274, 0, 0, 619, 616, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 624, 1, 0, 0, 0, 621, 622, 5, 187, 0, 0, 622, 623, 5, 249, 0, 0, 623, 625, 5, 274, 0, 0, 624, 621, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 629, 1, 0, 0, 0, 626, 627, 5, 76, 0, 0, 627, 628, 5, 249, 0, 0, 628, 630, 5, 274, 0, 0, 629, 626, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 23, 1, 0, 0, 0, 631, 632, 5, 37, 0, 0, 632, 634, 5, 84, 0, 0, 633, 635, 3, 172, 86, 0, 634, 633, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 649, 3, 180, 90, 0, 637, 646, 5, 265, 0, 0, 638, 643, 3, 328, 164, 0, 639, 640, 5, 263, 0, 0, 640, 642, 3, 328, 164, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 638, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 650, 5, 266, 0, 0, 649, 637, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 653, 1, 0, 0, 0, 651, 652, 5, 160, 0, 0, 652, 654, 3, 328, 164, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 656, 5, 24, 0, 0, 656, 657, 5, 274, 0, 0, 657, 658, 5, 186, 0, 0, 658, 659, 5, 249, 0, 0, 659, 660, 3, 314, 157, 0, 660, 25, 1, 0, 0, 0, 661, 680, 3, 28, 14, 0, 662, 680, 3, 62, 31, 0, 663, 680, 3, 60, 30, 0, 664, 680, 3, 58, 29, 0, 665, 680, 3, 54, 27, 0, 666, 680, 3, 56, 28, 0, 667, 680, 3, 52, 26, 0, 668, 680, 3, 48, 24, 0, 669, 680, 3, 50, 25, 0, 670, 680, 3, 46, 23, 0, 671, 680, 3, 44, 22, 0, 672, 680, 3, 42, 21, 0, 673, 680, 3, 40, 20, 0, 674, 680, 3, 34, 17, 0, 675, 680, 3, 30, 15, 0, 676, 680, 3, 32, 16, 0, 677, 680, 3, 36, 18, 0, 678, 680, 3, 38, 19, 0, 679, 661, 1, 0, 0, 0, 679, 662, 1, 0, 0, 0, 679, 663, 1, 0, 0, 0, 679, 664, 1, 0, 0, 0, 679, 665, 1, 0, 0, 0, 679, 666, 1, 0, 0, 0, 679, 667, 1, 0, 0, 0, 679, 668, 1, 0, 0, 0, 679, 669, 1, 0, 0, 0, 679, 670, 1, 0, 0, 0, 679, 671, 1, 0, 0, 0, 679, 672, 1, 0, 0, 0, 679, 673, 1, 0, 0, 0, 679, 674, 1, 0, 0, 0, 679, 675, 1, 0, 0, 0, 679, 676, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 679, 678, 1, 0, 0, 0, 680, 27, 1, 0, 0, 0, 681, 682, 5, 4, 0, 0, 682, 683, 5, 46, 0, 0, 683, 684, 3, 184, 92, 0, 684, 685, 5, 176, 0, 0, 685, 686, 5, 142, 0, 0, 686, 687, 7, 1, 0, 0, 687, 688, 3, 358, 179, 0, 688, 29, 1, 0, 0, 0, 689, 690, 5, 4, 0, 0, 690, 691, 5, 188, 0, 0, 691, 692, 3, 186, 93, 0, 692, 693, 5, 176, 0, 0, 693, 694, 5, 32, 0, 0, 694, 695, 5, 182, 0, 0, 695, 696, 3, 192, 96, 0, 696, 697, 5, 265, 0, 0, 697, 698, 3, 228, 114, 0, 698, 699, 5, 249, 0, 0, 699, 705, 3, 314, 157, 0, 700, 701, 5, 263, 0, 0, 701, 702, 3, 228, 114, 0, 702, 703, 5, 249, 0, 0, 703, 704, 3, 314, 157, 0, 704, 706, 1, 0, 0, 0, 705, 700, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 708, 5, 266, 0, 0, 708, 31, 1, 0, 0, 0, 709, 710, 5, 4, 0, 0, 710, 711, 5, 188, 0, 0, 711, 714, 3, 186, 93, 0, 712, 713, 5, 145, 0, 0, 713, 715, 3, 304, 152, 0, 714, 712, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 727, 5, 176, 0, 0, 717, 718, 5, 30, 0, 0, 718, 719, 5, 94, 0, 0, 719, 724, 3, 314, 157, 0, 720, 721, 5, 216, 0, 0, 721, 722, 5, 151, 0, 0, 722, 723, 5, 249, 0, 0, 723, 725, 3, 360, 180, 0, 724, 720, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 728, 1, 0, 0, 0, 726, 728, 5, 197, 0, 0, 727, 717, 1, 0, 0, 0, 727, 726, 1, 0, 0, 0, 728, 33, 1, 0, 0, 0, 729, 730, 5, 4, 0, 0, 730, 731, 5, 188, 0, 0, 731, 732, 3, 186, 93, 0, 732, 733, 5, 31, 0, 0, 733, 734, 5, 32, 0, 0, 734, 735, 3, 220, 110, 0, 735, 35, 1, 0, 0, 0, 736, 737, 5, 4, 0, 0, 737, 738, 5, 188, 0, 0, 738, 739, 3, 186, 93, 0, 739, 741, 5, 58, 0, 0, 740, 742, 5, 32, 0, 0, 741, 740, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 3, 192, 96, 0, 744, 37, 1, 0, 0, 0, 745, 746, 5, 4, 0, 0, 746, 747, 5, 188, 0, 0, 747, 748, 3, 186, 93, 0, 748, 749, 5, 176, 0, 0, 749, 750, 5, 142, 0, 0, 750, 751, 7, 1, 0, 0, 751, 752, 3, 358, 179, 0, 752, 39, 1, 0, 0, 0, 753, 754, 5, 4, 0, 0, 754, 755, 5, 188, 0, 0, 755, 761, 3, 186, 93, 0, 756, 762, 5, 158, 0, 0, 757, 759, 5, 1, 0, 0, 758, 760, 3, 172, 86, 0, 759, 758, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 756, 1, 0, 0, 0, 761, 757, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 5, 33, 0, 0, 764, 765, 5, 265, 0, 0, 765, 770, 3, 220, 110, 0, 766, 767, 5, 263, 0, 0, 767, 769, 3, 220, 110, 0, 768, 766, 1, 0, 0, 0, 769, 772, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 773, 1, 0, 0, 0, 772, 770, 1, 0, 0, 0, 773, 774, 5, 266, 0, 0, 774, 41, 1, 0, 0, 0, 775, 776, 5, 4, 0, 0, 776, 777, 5, 188, 0, 0, 777, 778, 3, 186, 93, 0, 778, 779, 5, 1, 0, 0, 779, 781, 5, 32, 0, 0, 780, 782, 3, 172, 86, 0, 781, 780, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 784, 3, 222, 111, 0, 784, 43, 1, 0, 0, 0, 785, 786, 5, 4, 0, 0, 786, 787, 5, 188, 0, 0, 787, 788, 3, 186, 93, 0, 788, 790, 5, 4, 0, 0, 789, 791, 5, 32, 0, 0, 790, 789, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 801, 3, 192, 96, 0, 793, 797, 5, 176, 0, 0, 794, 798, 3, 226, 113, 0, 795, 796, 5, 34, 0, 0, 796, 798, 3, 314, 157, 0, 797, 794, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 798, 802, 1, 0, 0, 0, 799, 800, 5, 58, 0, 0, 800, 802, 5, 51, 0, 0, 801, 793, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 802, 45, 1, 0, 0, 0, 803, 804, 5, 4, 0, 0, 804, 805, 5, 188, 0, 0, 805, 806, 3, 186, 93, 0, 806, 808, 5, 1, 0, 0, 807, 809, 3, 172, 86, 0, 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 822, 1, 0, 0, 0, 810, 811, 5, 145, 0, 0, 811, 814, 3, 304, 152, 0, 812, 813, 5, 24, 0, 0, 813, 815, 3, 314, 157, 0, 814, 812, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 817, 1, 0, 0, 0, 816, 818, 3, 240, 120, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 823, 1, 0, 0, 0, 819, 820, 5, 154, 0, 0, 820, 821, 5, 145, 0, 0, 821, 823, 3, 238, 119, 0, 822, 810, 1, 0, 0, 0, 822, 819, 1, 0, 0, 0, 823, 47, 1, 0, 0, 0, 824, 825, 5, 4, 0, 0, 825, 826, 5, 188, 0, 0, 826, 829, 3, 186, 93, 0, 827, 828, 5, 145, 0, 0, 828, 830, 3, 304, 152, 0, 829, 827, 1, 0, 0, 0, 829, 830, 1, 0, 0, 0, 830, 831, 1, 0, 0, 0, 831, 843, 5, 176, 0, 0, 832, 833, 5, 72, 0, 0, 833, 844, 3, 230, 115, 0, 834, 835, 5, 168, 0, 0, 835, 836, 5, 79, 0, 0, 836, 844, 3, 254, 127, 0, 837, 838, 5, 24, 0, 0, 838, 844, 3, 314, 157, 0, 839, 840, 5, 25, 0, 0, 840, 844, 3, 248, 124, 0, 841, 842, 5, 175, 0, 0, 842, 844, 3, 248, 124, 0, 843, 832, 1, 0, 0, 0, 843, 834, 1, 0, 0, 0, 843, 837, 1, 0, 0, 0, 843, 839, 1, 0, 0, 0, 843, 841, 1, 0, 0, 0, 844, 49, 1, 0, 0, 0, 845, 846, 5, 4, 0, 0, 846, 847, 5, 188, 0, 0, 847, 848, 3, 186, 93, 0, 848, 849, 5, 155, 0, 0, 849, 850, 5, 146, 0, 0, 850, 51, 1, 0, 0, 0, 851, 852, 5, 4, 0, 0, 852, 853, 5, 188, 0, 0, 853, 854, 3, 186, 93, 0, 854, 856, 5, 58, 0, 0, 855, 857, 3, 170, 85, 0, 856, 855, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 866, 1, 0, 0, 0, 858, 859, 5, 145, 0, 0, 859, 861, 3, 304, 152, 0, 860, 862, 5, 22, 0, 0, 861, 860, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 867, 1, 0, 0, 0, 863, 864, 5, 154, 0, 0, 864, 865, 5, 145, 0, 0, 865, 867, 3, 238, 119, 0, 866, 858, 1, 0, 0, 0, 866, 863, 1, 0, 0, 0, 867, 53, 1, 0, 0, 0, 868, 869, 5, 4, 0, 0, 869, 870, 5, 212, 0, 0, 870, 872, 3, 188, 94, 0, 871, 873, 3, 202, 101, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 5, 9, 0, 0, 875, 876, 3, 204, 102, 0, 876, 55, 1, 0, 0, 0, 877, 878, 5, 4, 0, 0, 878, 879, 5, 212, 0, 0, 879, 880, 3, 188, 94, 0, 880, 881, 5, 156, 0, 0, 881, 882, 5, 193, 0, 0, 882, 883, 3, 188, 94, 0, 883, 57, 1, 0, 0, 0, 884, 885, 5, 4, 0, 0, 885, 886, 5, 212, 0, 0, 886, 887, 3, 188, 94, 0, 887, 888, 5, 176, 0, 0, 888, 889, 5, 142, 0, 0, 889, 890, 7, 1, 0, 0, 890, 891, 3, 354, 177, 0, 891, 59, 1, 0, 0, 0, 892, 893, 5, 4, 0, 0, 893, 894, 5, 188, 0, 0, 894, 895, 3, 186, 93, 0, 895, 896, 5, 156, 0, 0, 896, 897, 5, 193, 0, 0, 897, 898, 3, 186, 93, 0, 898, 61, 1, 0, 0, 0, 899, 900, 5, 4, 0, 0, 900, 901, 5, 212, 0, 0, 901, 902, 3, 188, 94, 0, 902, 903, 7, 2, 0, 0, 903, 904, 5, 25, 0, 0, 904, 905, 3, 248, 124, 0, 905, 63, 1, 0, 0, 0, 906, 908, 5, 196, 0, 0, 907, 909, 5, 188, 0, 0, 908, 907, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 911, 1, 0, 0, 0, 910, 912, 3, 170, 85, 0, 911, 910, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 914, 3, 186, 93, 0, 914, 65, 1, 0, 0, 0, 915, 917, 5, 56, 0, 0, 916, 918, 5, 46, 0, 0, 917, 916, 1, 0, 0, 0, 917, 918, 1, 0, 0, 0, 918, 920, 1, 0, 0, 0, 919, 921, 7, 3, 0, 0, 920, 919, 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 923, 3, 354, 177, 0, 923, 67, 1, 0, 0, 0, 924, 927, 3, 70, 35, 0, 925, 927, 3, 72, 36, 0, 926, 924, 1, 0, 0, 0, 926, 925, 1, 0, 0, 0, 927, 69, 1, 0, 0, 0, 928, 929, 5, 36, 0, 0, 929, 930, 5, 182, 0, 0, 930, 932, 3, 186, 93, 0, 931, 933, 3, 292, 146, 0, 932, 931, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 946, 1, 0, 0, 0, 934, 935, 5, 190, 0, 0, 935, 936, 5, 185, 0, 0, 936, 937, 5, 265, 0, 0, 937, 938, 3, 360, 180, 0, 938, 944, 5, 266, 0, 0, 939, 940, 5, 157, 0, 0, 940, 941, 5, 265, 0, 0, 941, 942, 3, 360, 180, 0, 942, 943, 5, 266, 0, 0, 943, 945, 1, 0, 0, 0, 944, 939, 1, 0, 0, 0, 944, 945, 1, 0, 0, 0, 945, 947, 1, 0, 0, 0, 946, 934, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 71, 1, 0, 0, 0, 948, 949, 5, 36, 0, 0, 949, 950, 5, 96, 0, 0, 950, 951, 5, 182, 0, 0, 951, 957, 3, 186, 93, 0, 952, 953, 5, 145, 0, 0, 953, 954, 5, 265, 0, 0, 954, 955, 3, 304, 152, 0, 955, 956, 5, 266, 0, 0, 956, 958, 1, 0, 0, 0, 957, 952, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 73, 1, 0, 0, 0, 959, 966, 3, 86, 43, 0, 960, 966, 3, 84, 42, 0, 961, 966, 3, 82, 41, 0, 962, 966, 3, 78, 39, 0, 963, 966, 3, 80, 40, 0, 964, 966, 3, 76, 38, 0, 965, 959, 1, 0, 0, 0, 965, 960, 1, 0, 0, 0, 965, 961, 1, 0, 0, 0, 965, 962, 1, 0, 0, 0, 965, 963, 1, 0, 0, 0, 965, 964, 1, 0, 0, 0, 966, 75, 1, 0, 0, 0, 967, 968, 5, 58, 0, 0, 968, 970, 7, 0, 0, 0, 969, 971, 3, 170, 85, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 974, 3, 184, 92, 0, 973, 975, 7, 4, 0, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 77, 1, 0, 0, 0, 976, 977, 5, 58, 0, 0, 977, 979, 5, 212, 0, 0, 978, 980, 3, 170, 85, 0, 979, 978, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 981, 1, 0, 0, 0, 981, 982, 3, 188, 94, 0, 982, 79, 1, 0, 0, 0, 983, 984, 5, 58, 0, 0, 984, 986, 5, 188, 0, 0, 985, 987, 3, 170, 85, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 3, 186, 93, 0, 989, 991, 5, 22, 0, 0, 990, 989, 1, 0, 0, 0, 990, 991, 1, 0, 0, 0, 991, 81, 1, 0, 0, 0, 992, 994, 5, 58, 0, 0, 993, 995, 5, 96, 0, 0, 994, 993, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 997, 5, 182, 0, 0, 997, 1000, 3, 186, 93, 0, 998, 999, 5, 145, 0, 0, 999, 1001, 3, 304, 152, 0, 1000, 998, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 83, 1, 0, 0, 0, 1002, 1004, 5, 58, 0, 0, 1003, 1005, 5, 12, 0, 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, 0, 1006, 1008, 5, 84, 0, 0, 1007, 1009, 3, 170, 85, 0, 1008, 1007, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1010, 1, 0, 0, 0, 1010, 1023, 3, 190, 95, 0, 1011, 1020, 5, 265, 0, 0, 1012, 1017, 3, 328, 164, 0, 1013, 1014, 5, 263, 0, 0, 1014, 1016, 3, 328, 164, 0, 1015, 1013, 1, 0, 0, 0, 1016, 1019, 1, 0, 0, 0, 1017, 1015, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1021, 1, 0, 0, 0, 1019, 1017, 1, 0, 0, 0, 1020, 1012, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 1024, 5, 266, 0, 0, 1023, 1011, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 85, 1, 0, 0, 0, 1025, 1026, 5, 58, 0, 0, 1026, 1027, 5, 166, 0, 0, 1027, 1028, 3, 358, 179, 0, 1028, 87, 1, 0, 0, 0, 1029, 1032, 3, 90, 45, 0, 1030, 1032, 3, 92, 46, 0, 1031, 1029, 1, 0, 0, 0, 1031, 1030, 1, 0, 0, 0, 1032, 89, 1, 0, 0, 0, 1033, 1034, 5, 86, 0, 0, 1034, 1035, 5, 166, 0, 0, 1035, 1036, 3, 358, 179, 0, 1036, 1037, 5, 193, 0, 0, 1037, 1038, 5, 87, 0, 0, 1038, 1039, 3, 358, 179, 0, 1039, 91, 1, 0, 0, 0, 1040, 1041, 5, 86, 0, 0, 1041, 1042, 3, 350, 175, 0, 1042, 1043, 5, 136, 0, 0, 1043, 1045, 3, 352, 176, 0, 1044, 1046, 3, 354, 177, 0, 1045, 1044, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1048, 5, 193, 0, 0, 1048, 1049, 3, 356, 178, 0, 1049, 93, 1, 0, 0, 0, 1050, 1053, 3, 96, 48, 0, 1051, 1053, 3, 98, 49, 0, 1052, 1050, 1, 0, 0, 0, 1052, 1051, 1, 0, 0, 0, 1053, 95, 1, 0, 0, 0, 1054, 1055, 5, 161, 0, 0, 1055, 1056, 5, 166, 0, 0, 1056, 1057, 3, 358, 179, 0, 1057, 1058, 5, 82, 0, 0, 1058, 1059, 5, 87, 0, 0, 1059, 1060, 3, 358, 179, 0, 1060, 97, 1, 0, 0, 0, 1061, 1065, 5, 161, 0, 0, 1062, 1063, 5, 86, 0, 0, 1063, 1064, 5, 137, 0, 0, 1064, 1066, 5, 78, 0, 0, 1065, 1062, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 3, 350, 175, 0, 1068, 1069, 5, 136, 0, 0, 1069, 1071, 3, 352, 176, 0, 1070, 1072, 3, 354, 177, 0, 1071, 1070, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1079, 5, 82, 0, 0, 1074, 1080, 3, 356, 178, 0, 1075, 1077, 5, 166, 0, 0, 1076, 1075, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1080, 3, 358, 179, 0, 1079, 1074, 1, 0, 0, 0, 1079, 1076, 1, 0, 0, 0, 1080, 99, 1, 0, 0, 0, 1081, 1083, 3, 206, 103, 0, 1082, 1081, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1085, 5, 99, 0, 0, 1085, 1087, 7, 5, 0, 0, 1086, 1088, 5, 188, 0, 0, 1087, 1086, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1091, 3, 186, 93, 0, 1090, 1092, 3, 292, 146, 0, 1091, 1090, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1105, 1, 0, 0, 0, 1093, 1094, 5, 145, 0, 0, 1094, 1095, 5, 265, 0, 0, 1095, 1100, 3, 304, 152, 0, 1096, 1097, 5, 263, 0, 0, 1097, 1099, 3, 304, 152, 0, 1098, 1096, 1, 0, 0, 0, 1099, 1102, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, 1100, 1101, 1, 0, 0, 0, 1101, 1103, 1, 0, 0, 0, 1102, 1100, 1, 0, 0, 0, 1103, 1104, 5, 266, 0, 0, 1104, 1106, 1, 0, 0, 0, 1105, 1093, 1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1108, 3, 204, 102, 0, 1108, 101, 1, 0, 0, 0, 1109, 1112, 3, 104, 52, 0, 1110, 1112, 3, 106, 53, 0, 1111, 1109, 1, 0, 0, 0, 1111, 1110, 1, 0, 0, 0, 1112, 103, 1, 0, 0, 0, 1113, 1115, 5, 50, 0, 0, 1114, 1116, 5, 82, 0, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1120, 3, 186, 93, 0, 1118, 1119, 5, 215, 0, 0, 1119, 1121, 3, 306, 153, 0, 1120, 1118, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 105, 1, 0, 0, 0, 1122, 1123, 5, 50, 0, 0, 1123, 1128, 3, 186, 93, 0, 1124, 1126, 5, 9, 0, 0, 1125, 1124, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 1129, 3, 358, 179, 0, 1128, 1125, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1139, 5, 82, 0, 0, 1131, 1136, 3, 280, 140, 0, 1132, 1133, 5, 263, 0, 0, 1133, 1135, 3, 280, 140, 0, 1134, 1132, 1, 0, 0, 0, 1135, 1138, 1, 0, 0, 0, 1136, 1134, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1140, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1143, 1, 0, 0, 0, 1141, 1142, 5, 215, 0, 0, 1142, 1144, 3, 306, 153, 0, 1143, 1141, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 107, 1, 0, 0, 0, 1145, 1146, 5, 54, 0, 0, 1146, 1147, 3, 186, 93, 0, 1147, 1148, 5, 176, 0, 0, 1148, 1158, 3, 198, 99, 0, 1149, 1150, 5, 82, 0, 0, 1150, 1155, 3, 280, 140, 0, 1151, 1152, 5, 263, 0, 0, 1152, 1154, 3, 280, 140, 0, 1153, 1151, 1, 0, 0, 0, 1154, 1157, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1158, 1149, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1162, 1, 0, 0, 0, 1160, 1161, 5, 215, 0, 0, 1161, 1163, 3, 306, 153, 0, 1162, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 109, 1, 0, 0, 0, 1164, 1165, 5, 207, 0, 0, 1165, 1167, 5, 103, 0, 0, 1166, 1168, 5, 188, 0, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1171, 3, 186, 93, 0, 1170, 1172, 3, 292, 146, 0, 1171, 1170, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1174, 3, 204, 102, 0, 1174, 111, 1, 0, 0, 0, 1175, 1188, 3, 132, 66, 0, 1176, 1188, 3, 134, 67, 0, 1177, 1188, 3, 136, 68, 0, 1178, 1188, 3, 130, 65, 0, 1179, 1188, 3, 128, 64, 0, 1180, 1188, 3, 126, 63, 0, 1181, 1188, 3, 124, 62, 0, 1182, 1188, 3, 122, 61, 0, 1183, 1188, 3, 120, 60, 0, 1184, 1188, 3, 118, 59, 0, 1185, 1188, 3, 116, 58, 0, 1186, 1188, 3, 114, 57, 0, 1187, 1175, 1, 0, 0, 0, 1187, 1176, 1, 0, 0, 0, 1187, 1177, 1, 0, 0, 0, 1187, 1178, 1, 0, 0, 0, 1187, 1179, 1, 0, 0, 0, 1187, 1180, 1, 0, 0, 0, 1187, 1181, 1, 0, 0, 0, 1187, 1182, 1, 0, 0, 0, 1187, 1183, 1, 0, 0, 0, 1187, 1184, 1, 0, 0, 0, 1187, 1185, 1, 0, 0, 0, 1187, 1186, 1, 0, 0, 0, 1188, 113, 1, 0, 0, 0, 1189, 1190, 5, 179, 0, 0, 1190, 1202, 7, 6, 0, 0, 1191, 1193, 5, 115, 0, 0, 1192, 1191, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1199, 3, 314, 157, 0, 1195, 1196, 5, 271, 0, 0, 1196, 1198, 3, 314, 157, 0, 1197, 1195, 1, 0, 0, 0, 1198, 1201, 1, 0, 0, 0, 1199, 1197, 1, 0, 0, 0, 1199, 1200, 1, 0, 0, 0, 1200, 1203, 1, 0, 0, 0, 1201, 1199, 1, 0, 0, 0, 1202, 1192, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 115, 1, 0, 0, 0, 1204, 1205, 5, 179, 0, 0, 1205, 1208, 5, 189, 0, 0, 1206, 1207, 5, 94, 0, 0, 1207, 1209, 3, 186, 93, 0, 1208, 1206, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1221, 1, 0, 0, 0, 1210, 1212, 5, 115, 0, 0, 1211, 1210, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1218, 3, 314, 157, 0, 1214, 1215, 5, 271, 0, 0, 1215, 1217, 3, 314, 157, 0, 1216, 1214, 1, 0, 0, 0, 1217, 1220, 1, 0, 0, 0, 1218, 1216, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1222, 1, 0, 0, 0, 1220, 1218, 1, 0, 0, 0, 1221, 1211, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 117, 1, 0, 0, 0, 1223, 1225, 5, 179, 0, 0, 1224, 1226, 7, 7, 0, 0, 1225, 1224, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1230, 5, 85, 0, 0, 1228, 1229, 5, 94, 0, 0, 1229, 1231, 3, 184, 92, 0, 1230, 1228, 1, 0, 0, 0, 1230, 1231, 1, 0, 0, 0, 1231, 1243, 1, 0, 0, 0, 1232, 1234, 5, 115, 0, 0, 1233, 1232, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1240, 3, 314, 157, 0, 1236, 1237, 5, 271, 0, 0, 1237, 1239, 3, 314, 157, 0, 1238, 1236, 1, 0, 0, 0, 1239, 1242, 1, 0, 0, 0, 1240, 1238, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1244, 1, 0, 0, 0, 1242, 1240, 1, 0, 0, 0, 1243, 1233, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 119, 1, 0, 0, 0, 1245, 1246, 5, 179, 0, 0, 1246, 1247, 5, 37, 0, 0, 1247, 1248, 5, 188, 0, 0, 1248, 1249, 3, 186, 93, 0, 1249, 121, 1, 0, 0, 0, 1250, 1251, 5, 179, 0, 0, 1251, 1252, 5, 37, 0, 0, 1252, 1253, 5, 212, 0, 0, 1253, 1254, 3, 188, 94, 0, 1254, 123, 1, 0, 0, 0, 1255, 1256, 5, 179, 0, 0, 1256, 1257, 5, 188, 0, 0, 1257, 1258, 5, 182, 0, 0, 1258, 1259, 3, 186, 93, 0, 1259, 125, 1, 0, 0, 0, 1260, 1261, 5, 179, 0, 0, 1261, 1262, 5, 32, 0, 0, 1262, 1263, 5, 182, 0, 0, 1263, 1264, 3, 186, 93, 0, 1264, 127, 1, 0, 0, 0, 1265, 1267, 5, 179, 0, 0, 1266, 1268, 5, 154, 0, 0, 1267, 1266, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1270, 5, 146, 0, 0, 1270, 1271, 3, 186, 93, 0, 1271, 129, 1, 0, 0, 0, 1272, 1273, 5, 179, 0, 0, 1273, 1274, 5, 73, 0, 0, 1274, 1275, 5, 94, 0, 0, 1275, 1285, 3, 186, 93, 0, 1276, 1277, 5, 145, 0, 0, 1277, 1278, 5, 265, 0, 0, 1278, 1281, 3, 304, 152, 0, 1279, 1280, 5, 263, 0, 0, 1280, 1282, 3, 304, 152, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 5, 266, 0, 0, 1284, 1286, 1, 0, 0, 0, 1285, 1276, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 131, 1, 0, 0, 0, 1287, 1289, 5, 179, 0, 0, 1288, 1290, 5, 39, 0, 0, 1289, 1288, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1292, 5, 167, 0, 0, 1292, 133, 1, 0, 0, 0, 1293, 1294, 5, 179, 0, 0, 1294, 1295, 5, 166, 0, 0, 1295, 1296, 5, 86, 0, 0, 1296, 1297, 5, 87, 0, 0, 1297, 1298, 3, 358, 179, 0, 1298, 135, 1, 0, 0, 0, 1299, 1314, 3, 138, 69, 0, 1300, 1314, 3, 140, 70, 0, 1301, 1314, 3, 142, 71, 0, 1302, 1303, 5, 179, 0, 0, 1303, 1304, 5, 86, 0, 0, 1304, 1305, 7, 8, 0, 0, 1305, 1311, 3, 358, 179, 0, 1306, 1307, 5, 136, 0, 0, 1307, 1309, 7, 9, 0, 0, 1308, 1310, 3, 354, 177, 0, 1309, 1308, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1312, 1, 0, 0, 0, 1311, 1306, 1, 0, 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1314, 1, 0, 0, 0, 1313, 1299, 1, 0, 0, 0, 1313, 1300, 1, 0, 0, 0, 1313, 1301, 1, 0, 0, 0, 1313, 1302, 1, 0, 0, 0, 1314, 137, 1, 0, 0, 0, 1315, 1316, 5, 179, 0, 0, 1316, 1317, 5, 86, 0, 0, 1317, 1318, 7, 8, 0, 0, 1318, 1324, 3, 358, 179, 0, 1319, 1320, 5, 136, 0, 0, 1320, 1322, 5, 46, 0, 0, 1321, 1323, 3, 184, 92, 0, 1322, 1321, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1325, 1, 0, 0, 0, 1324, 1319, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 139, 1, 0, 0, 0, 1326, 1327, 5, 179, 0, 0, 1327, 1328, 5, 86, 0, 0, 1328, 1329, 7, 8, 0, 0, 1329, 1335, 3, 358, 179, 0, 1330, 1331, 5, 136, 0, 0, 1331, 1333, 5, 188, 0, 0, 1332, 1334, 3, 186, 93, 0, 1333, 1332, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1336, 1, 0, 0, 0, 1335, 1330, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 141, 1, 0, 0, 0, 1337, 1338, 5, 179, 0, 0, 1338, 1339, 5, 86, 0, 0, 1339, 1340, 7, 8, 0, 0, 1340, 1346, 3, 358, 179, 0, 1341, 1342, 5, 136, 0, 0, 1342, 1344, 5, 32, 0, 0, 1343, 1345, 3, 192, 96, 0, 1344, 1343, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 1, 0, 0, 0, 1346, 1341, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 143, 1, 0, 0, 0, 1348, 1352, 3, 146, 73, 0, 1349, 1352, 3, 148, 74, 0, 1350, 1352, 3, 150, 75, 0, 1351, 1348, 1, 0, 0, 0, 1351, 1349, 1, 0, 0, 0, 1351, 1350, 1, 0, 0, 0, 1352, 145, 1, 0, 0, 0, 1353, 1354, 5, 34, 0, 0, 1354, 1355, 5, 136, 0, 0, 1355, 1356, 5, 46, 0, 0, 1356, 1357, 3, 184, 92, 0, 1357, 1360, 5, 108, 0, 0, 1358, 1361, 3, 314, 157, 0, 1359, 1361, 5, 133, 0, 0, 1360, 1358, 1, 0, 0, 0, 1360, 1359, 1, 0, 0, 0, 1361, 147, 1, 0, 0, 0, 1362, 1363, 5, 34, 0, 0, 1363, 1364, 5, 136, 0, 0, 1364, 1365, 5, 188, 0, 0, 1365, 1366, 3, 186, 93, 0, 1366, 1369, 5, 108, 0, 0, 1367, 1370, 3, 314, 157, 0, 1368, 1370, 5, 133, 0, 0, 1369, 1367, 1, 0, 0, 0, 1369, 1368, 1, 0, 0, 0, 1370, 149, 1, 0, 0, 0, 1371, 1372, 5, 34, 0, 0, 1372, 1373, 5, 136, 0, 0, 1373, 1374, 5, 32, 0, 0, 1374, 1375, 3, 192, 96, 0, 1375, 1378, 5, 108, 0, 0, 1376, 1379, 3, 314, 157, 0, 1377, 1379, 5, 133, 0, 0, 1378, 1376, 1, 0, 0, 0, 1378, 1377, 1, 0, 0, 0, 1379, 151, 1, 0, 0, 0, 1380, 1381, 5, 67, 0, 0, 1381, 1382, 3, 4, 2, 0, 1382, 153, 1, 0, 0, 0, 1383, 1389, 5, 176, 0, 0, 1384, 1390, 5, 2, 0, 0, 1385, 1386, 3, 358, 179, 0, 1386, 1387, 5, 249, 0, 0, 1387, 1388, 3, 304, 152, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1384, 1, 0, 0, 0, 1389, 1385, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 155, 1, 0, 0, 0, 1391, 1392, 5, 264, 0, 0, 1392, 1393, 5, 180, 0, 0, 1393, 1403, 5, 265, 0, 0, 1394, 1396, 3, 314, 157, 0, 1395, 1394, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1404, 1, 0, 0, 0, 1397, 1400, 3, 314, 157, 0, 1398, 1399, 5, 263, 0, 0, 1399, 1401, 3, 304, 152, 0, 1400, 1398, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1404, 3, 304, 152, 0, 1403, 1395, 1, 0, 0, 0, 1403, 1397, 1, 0, 0, 0, 1403, 1402, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 5, 266, 0, 0, 1406, 157, 1, 0, 0, 0, 1407, 1408, 5, 107, 0, 0, 1408, 1409, 5, 121, 0, 0, 1409, 1410, 3, 186, 93, 0, 1410, 159, 1, 0, 0, 0, 1411, 1412, 5, 118, 0, 0, 1412, 1413, 5, 45, 0, 0, 1413, 1414, 5, 98, 0, 0, 1414, 1416, 5, 274, 0, 0, 1415, 1417, 5, 144, 0, 0, 1416, 1415, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 1418, 1, 0, 0, 0, 1418, 1419, 5, 103, 0, 0, 1419, 1420, 5, 188, 0, 0, 1420, 1430, 3, 186, 93, 0, 1421, 1422, 5, 145, 0, 0, 1422, 1423, 5, 265, 0, 0, 1423, 1426, 3, 304, 152, 0, 1424, 1425, 5, 263, 0, 0, 1425, 1427, 3, 304, 152, 0, 1426, 1424, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1428, 1, 0, 0, 0, 1428, 1429, 5, 266, 0, 0, 1429, 1431, 1, 0, 0, 0, 1430, 1421, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, 161, 1, 0, 0, 0, 1432, 1436, 3, 164, 82, 0, 1433, 1436, 3, 166, 83, 0, 1434, 1436, 3, 168, 84, 0, 1435, 1432, 1, 0, 0, 0, 1435, 1433, 1, 0, 0, 0, 1435, 1434, 1, 0, 0, 0, 1436, 163, 1, 0, 0, 0, 1437, 1438, 5, 162, 0, 0, 1438, 1451, 3, 186, 93, 0, 1439, 1440, 5, 145, 0, 0, 1440, 1441, 5, 265, 0, 0, 1441, 1446, 3, 304, 152, 0, 1442, 1443, 5, 263, 0, 0, 1443, 1445, 3, 304, 152, 0, 1444, 1442, 1, 0, 0, 0, 1445, 1448, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1446, 1444, 1, 0, 0, 0, 1447, 1449, 1, 0, 0, 0, 1448, 1446, 1, 0, 0, 0, 1449, 1450, 5, 266, 0, 0, 1450, 1452, 1, 0, 0, 0, 1451, 1439, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 165, 1, 0, 0, 0, 1453, 1454, 5, 162, 0, 0, 1454, 1455, 5, 13, 0, 0, 1455, 167, 1, 0, 0, 0, 1456, 1457, 5, 162, 0, 0, 1457, 1458, 5, 85, 0, 0, 1458, 1459, 3, 190, 95, 0, 1459, 169, 1, 0, 0, 0, 1460, 1461, 5, 93, 0, 0, 1461, 1462, 5, 66, 0, 0, 1462, 171, 1, 0, 0, 0, 1463, 1464, 5, 93, 0, 0, 1464, 1465, 5, 132, 0, 0, 1465, 1466, 5, 66, 0, 0, 1466, 173, 1, 0, 0, 0, 1467, 1468, 3, 354, 177, 0, 1468, 175, 1, 0, 0, 0, 1469, 1470, 3, 354, 177, 0, 1470, 177, 1, 0, 0, 0, 1471, 1472, 3, 354, 177, 0, 1472, 179, 1, 0, 0, 0, 1473, 1474, 3, 354, 177, 0, 1474, 181, 1, 0, 0, 0, 1475, 1476, 3, 354, 177, 0, 1476, 183, 1, 0, 0, 0, 1477, 1478, 3, 354, 177, 0, 1478, 185, 1, 0, 0, 0, 1479, 1484, 3, 358, 179, 0, 1480, 1481, 5, 261, 0, 0, 1481, 1483, 3, 358, 179, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 187, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1487, 1492, 3, 358, 179, 0, 1488, 1489, 5, 261, 0, 0, 1489, 1491, 3, 358, 179, 0, 1490, 1488, 1, 0, 0, 0, 1491, 1494, 1, 0, 0, 0, 1492, 1490, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 189, 1, 0, 0, 0, 1494, 1492, 1, 0, 0, 0, 1495, 1498, 3, 362, 181, 0, 1496, 1498, 3, 354, 177, 0, 1497, 1495, 1, 0, 0, 0, 1497, 1496, 1, 0, 0, 0, 1498, 191, 1, 0, 0, 0, 1499, 1502, 3, 354, 177, 0, 1500, 1502, 4, 96, 0, 0, 1501, 1499, 1, 0, 0, 0, 1501, 1500, 1, 0, 0, 0, 1502, 193, 1, 0, 0, 0, 1503, 1506, 3, 186, 93, 0, 1504, 1506, 3, 188, 94, 0, 1505, 1503, 1, 0, 0, 0, 1505, 1504, 1, 0, 0, 0, 1506, 195, 1, 0, 0, 0, 1507, 1508, 5, 21, 0, 0, 1508, 1509, 5, 26, 0, 0, 1509, 1511, 3, 292, 146, 0, 1510, 1507, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1514, 1, 0, 0, 0, 1512, 1513, 5, 34, 0, 0, 1513, 1515, 3, 314, 157, 0, 1514, 1512, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1519, 1, 0, 0, 0, 1516, 1517, 5, 168, 0, 0, 1517, 1518, 5, 79, 0, 0, 1518, 1520, 3, 254, 127, 0, 1519, 1516, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1524, 1, 0, 0, 0, 1521, 1522, 5, 216, 0, 0, 1522, 1523, 5, 175, 0, 0, 1523, 1525, 3, 248, 124, 0, 1524, 1521, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1529, 1, 0, 0, 0, 1526, 1527, 5, 23, 0, 0, 1527, 1528, 5, 9, 0, 0, 1528, 1530, 3, 230, 115, 0, 1529, 1526, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1533, 1, 0, 0, 0, 1531, 1532, 5, 24, 0, 0, 1532, 1534, 3, 314, 157, 0, 1533, 1531, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1545, 1, 0, 0, 0, 1535, 1536, 5, 30, 0, 0, 1536, 1537, 5, 94, 0, 0, 1537, 1542, 3, 354, 177, 0, 1538, 1539, 5, 216, 0, 0, 1539, 1540, 5, 151, 0, 0, 1540, 1541, 5, 249, 0, 0, 1541, 1543, 5, 277, 0, 0, 1542, 1538, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1546, 1, 0, 0, 0, 1544, 1546, 5, 197, 0, 0, 1545, 1535, 1, 0, 0, 0, 1545, 1544, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1549, 1, 0, 0, 0, 1547, 1548, 5, 25, 0, 0, 1548, 1550, 3, 248, 124, 0, 1549, 1547, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 197, 1, 0, 0, 0, 1551, 1556, 3, 200, 100, 0, 1552, 1553, 5, 263, 0, 0, 1553, 1555, 3, 200, 100, 0, 1554, 1552, 1, 0, 0, 0, 1555, 1558, 1, 0, 0, 0, 1556, 1554, 1, 0, 0, 0, 1556, 1557, 1, 0, 0, 0, 1557, 199, 1, 0, 0, 0, 1558, 1556, 1, 0, 0, 0, 1559, 1560, 3, 354, 177, 0, 1560, 1561, 5, 249, 0, 0, 1561, 1562, 3, 304, 152, 0, 1562, 201, 1, 0, 0, 0, 1563, 1564, 5, 265, 0, 0, 1564, 1567, 3, 182, 91, 0, 1565, 1566, 5, 34, 0, 0, 1566, 1568, 3, 314, 157, 0, 1567, 1565, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1577, 1, 0, 0, 0, 1569, 1570, 5, 263, 0, 0, 1570, 1573, 3, 182, 91, 0, 1571, 1572, 5, 34, 0, 0, 1572, 1574, 3, 314, 157, 0, 1573, 1571, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1576, 1, 0, 0, 0, 1575, 1569, 1, 0, 0, 0, 1576, 1579, 1, 0, 0, 0, 1577, 1575, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 1580, 1, 0, 0, 0, 1579, 1577, 1, 0, 0, 0, 1580, 1581, 5, 266, 0, 0, 1581, 203, 1, 0, 0, 0, 1582, 1584, 3, 206, 103, 0, 1583, 1582, 1, 0, 0, 0, 1583, 1584, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1586, 3, 258, 129, 0, 1586, 205, 1, 0, 0, 0, 1587, 1588, 5, 216, 0, 0, 1588, 1593, 3, 274, 137, 0, 1589, 1590, 5, 263, 0, 0, 1590, 1592, 3, 274, 137, 0, 1591, 1589, 1, 0, 0, 0, 1592, 1595, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1593, 1594, 1, 0, 0, 0, 1594, 207, 1, 0, 0, 0, 1595, 1593, 1, 0, 0, 0, 1596, 1597, 5, 150, 0, 0, 1597, 1598, 5, 110, 0, 0, 1598, 1600, 3, 292, 146, 0, 1599, 1601, 5, 53, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1605, 1, 0, 0, 0, 1602, 1606, 5, 225, 0, 0, 1603, 1604, 5, 263, 0, 0, 1604, 1606, 5, 225, 0, 0, 1605, 1602, 1, 0, 0, 0, 1605, 1603, 1, 0, 0, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1610, 1, 0, 0, 0, 1607, 1611, 5, 226, 0, 0, 1608, 1609, 5, 263, 0, 0, 1609, 1611, 5, 226, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1608, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1624, 1, 0, 0, 0, 1612, 1613, 5, 263, 0, 0, 1613, 1616, 3, 210, 105, 0, 1614, 1616, 3, 210, 105, 0, 1615, 1612, 1, 0, 0, 0, 1615, 1614, 1, 0, 0, 0, 1616, 1621, 1, 0, 0, 0, 1617, 1618, 5, 263, 0, 0, 1618, 1620, 3, 210, 105, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1623, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1622, 1625, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1624, 1615, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 209, 1, 0, 0, 0, 1626, 1627, 5, 81, 0, 0, 1627, 1628, 5, 110, 0, 0, 1628, 1629, 3, 292, 146, 0, 1629, 1630, 5, 224, 0, 0, 1630, 1631, 3, 186, 93, 0, 1631, 1633, 3, 292, 146, 0, 1632, 1634, 5, 53, 0, 0, 1633, 1632, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1637, 5, 225, 0, 0, 1636, 1635, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1639, 1, 0, 0, 0, 1638, 1640, 5, 226, 0, 0, 1639, 1638, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 211, 1, 0, 0, 0, 1641, 1642, 3, 192, 96, 0, 1642, 1645, 3, 328, 164, 0, 1643, 1644, 5, 34, 0, 0, 1644, 1646, 3, 314, 157, 0, 1645, 1643, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 213, 1, 0, 0, 0, 1647, 1648, 3, 182, 91, 0, 1648, 1651, 3, 328, 164, 0, 1649, 1650, 5, 34, 0, 0, 1650, 1652, 3, 314, 157, 0, 1651, 1649, 1, 0, 0, 0, 1651, 1652, 1, 0, 0, 0, 1652, 215, 1, 0, 0, 0, 1653, 1654, 3, 218, 109, 0, 1654, 217, 1, 0, 0, 0, 1655, 1656, 3, 182, 91, 0, 1656, 1664, 3, 328, 164, 0, 1657, 1661, 3, 224, 112, 0, 1658, 1660, 3, 224, 112, 0, 1659, 1658, 1, 0, 0, 0, 1660, 1663, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1661, 1659, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, 1664, 1657, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1668, 1, 0, 0, 0, 1666, 1667, 5, 34, 0, 0, 1667, 1669, 3, 314, 157, 0, 1668, 1666, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1672, 1, 0, 0, 0, 1670, 1671, 5, 150, 0, 0, 1671, 1673, 5, 110, 0, 0, 1672, 1670, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 219, 1, 0, 0, 0, 1674, 1676, 3, 212, 106, 0, 1675, 1674, 1, 0, 0, 0, 1675, 1676, 1, 0, 0, 0, 1676, 1684, 1, 0, 0, 0, 1677, 1681, 3, 224, 112, 0, 1678, 1680, 3, 224, 112, 0, 1679, 1678, 1, 0, 0, 0, 1680, 1683, 1, 0, 0, 0, 1681, 1682, 1, 0, 0, 0, 1681, 1679, 1, 0, 0, 0, 1682, 1685, 1, 0, 0, 0, 1683, 1681, 1, 0, 0, 0, 1684, 1677, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 221, 1, 0, 0, 0, 1686, 1687, 3, 182, 91, 0, 1687, 1690, 3, 328, 164, 0, 1688, 1689, 5, 34, 0, 0, 1689, 1691, 3, 314, 157, 0, 1690, 1688, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1699, 1, 0, 0, 0, 1692, 1696, 3, 224, 112, 0, 1693, 1695, 3, 224, 112, 0, 1694, 1693, 1, 0, 0, 0, 1695, 1698, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1696, 1694, 1, 0, 0, 0, 1697, 1700, 1, 0, 0, 0, 1698, 1696, 1, 0, 0, 0, 1699, 1692, 1, 0, 0, 0, 1699, 1700, 1, 0, 0, 0, 1700, 223, 1, 0, 0, 0, 1701, 1703, 5, 132, 0, 0, 1702, 1701, 1, 0, 0, 0, 1702, 1703, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1707, 5, 133, 0, 0, 1705, 1707, 3, 226, 113, 0, 1706, 1702, 1, 0, 0, 0, 1706, 1705, 1, 0, 0, 0, 1707, 225, 1, 0, 0, 0, 1708, 1709, 5, 60, 0, 0, 1709, 1717, 3, 304, 152, 0, 1710, 1711, 5, 35, 0, 0, 1711, 1717, 3, 304, 152, 0, 1712, 1713, 5, 51, 0, 0, 1713, 1717, 3, 304, 152, 0, 1714, 1715, 5, 16, 0, 0, 1715, 1717, 3, 360, 180, 0, 1716, 1708, 1, 0, 0, 0, 1716, 1710, 1, 0, 0, 0, 1716, 1712, 1, 0, 0, 0, 1716, 1714, 1, 0, 0, 0, 1717, 227, 1, 0, 0, 0, 1718, 1719, 7, 10, 0, 0, 1719, 229, 1, 0, 0, 0, 1720, 1721, 7, 11, 0, 0, 1721, 231, 1, 0, 0, 0, 1722, 1727, 3, 234, 117, 0, 1723, 1724, 5, 263, 0, 0, 1724, 1726, 3, 234, 117, 0, 1725, 1723, 1, 0, 0, 0, 1726, 1729, 1, 0, 0, 0, 1727, 1728, 1, 0, 0, 0, 1727, 1725, 1, 0, 0, 0, 1728, 1732, 1, 0, 0, 0, 1729, 1727, 1, 0, 0, 0, 1730, 1731, 5, 263, 0, 0, 1731, 1733, 3, 236, 118, 0, 1732, 1730, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1736, 1, 0, 0, 0, 1734, 1736, 3, 236, 118, 0, 1735, 1722, 1, 0, 0, 0, 1735, 1734, 1, 0, 0, 0, 1736, 233, 1, 0, 0, 0, 1737, 1739, 5, 89, 0, 0, 1738, 1740, 3, 292, 146, 0, 1739, 1738, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1742, 5, 146, 0, 0, 1742, 1743, 3, 360, 180, 0, 1743, 235, 1, 0, 0, 0, 1744, 1746, 5, 154, 0, 0, 1745, 1747, 3, 292, 146, 0, 1746, 1745, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1749, 5, 265, 0, 0, 1749, 1750, 5, 145, 0, 0, 1750, 1756, 3, 238, 119, 0, 1751, 1752, 5, 263, 0, 0, 1752, 1753, 5, 145, 0, 0, 1753, 1755, 3, 238, 119, 0, 1754, 1751, 1, 0, 0, 0, 1755, 1758, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1756, 1754, 1, 0, 0, 0, 1757, 1759, 1, 0, 0, 0, 1758, 1756, 1, 0, 0, 0, 1759, 1760, 5, 266, 0, 0, 1760, 237, 1, 0, 0, 0, 1761, 1762, 5, 210, 0, 0, 1762, 1763, 3, 244, 122, 0, 1763, 1764, 3, 304, 152, 0, 1764, 1777, 1, 0, 0, 0, 1765, 1766, 3, 304, 152, 0, 1766, 1767, 3, 242, 121, 0, 1767, 1769, 1, 0, 0, 0, 1768, 1765, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1774, 5, 211, 0, 0, 1771, 1772, 3, 242, 121, 0, 1772, 1773, 3, 304, 152, 0, 1773, 1775, 1, 0, 0, 0, 1774, 1771, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1777, 1, 0, 0, 0, 1776, 1761, 1, 0, 0, 0, 1776, 1768, 1, 0, 0, 0, 1777, 239, 1, 0, 0, 0, 1778, 1779, 5, 30, 0, 0, 1779, 1780, 5, 94, 0, 0, 1780, 1785, 3, 358, 179, 0, 1781, 1782, 5, 216, 0, 0, 1782, 1783, 5, 151, 0, 0, 1783, 1784, 5, 249, 0, 0, 1784, 1786, 3, 360, 180, 0, 1785, 1781, 1, 0, 0, 0, 1785, 1786, 1, 0, 0, 0, 1786, 1789, 1, 0, 0, 0, 1787, 1789, 5, 197, 0, 0, 1788, 1778, 1, 0, 0, 0, 1788, 1787, 1, 0, 0, 0, 1789, 241, 1, 0, 0, 0, 1790, 1796, 1, 0, 0, 0, 1791, 1796, 5, 251, 0, 0, 1792, 1796, 5, 252, 0, 0, 1793, 1796, 5, 253, 0, 0, 1794, 1796, 5, 254, 0, 0, 1795, 1790, 1, 0, 0, 0, 1795, 1791, 1, 0, 0, 0, 1795, 1792, 1, 0, 0, 0, 1795, 1793, 1, 0, 0, 0, 1795, 1794, 1, 0, 0, 0, 1796, 243, 1, 0, 0, 0, 1797, 1806, 5, 249, 0, 0, 1798, 1806, 5, 250, 0, 0, 1799, 1806, 5, 115, 0, 0, 1800, 1806, 5, 164, 0, 0, 1801, 1806, 5, 163, 0, 0, 1802, 1806, 5, 15, 0, 0, 1803, 1806, 5, 94, 0, 0, 1804, 1806, 3, 242, 121, 0, 1805, 1797, 1, 0, 0, 0, 1805, 1798, 1, 0, 0, 0, 1805, 1799, 1, 0, 0, 0, 1805, 1800, 1, 0, 0, 0, 1805, 1801, 1, 0, 0, 0, 1805, 1802, 1, 0, 0, 0, 1805, 1803, 1, 0, 0, 0, 1805, 1804, 1, 0, 0, 0, 1806, 245, 1, 0, 0, 0, 1807, 1808, 5, 115, 0, 0, 1808, 1811, 3, 354, 177, 0, 1809, 1810, 7, 12, 0, 0, 1810, 1812, 5, 153, 0, 0, 1811, 1809, 1, 0, 0, 0, 1811, 1812, 1, 0, 0, 0, 1812, 247, 1, 0, 0, 0, 1813, 1814, 5, 265, 0, 0, 1814, 1819, 3, 256, 128, 0, 1815, 1816, 5, 263, 0, 0, 1816, 1818, 3, 256, 128, 0, 1817, 1815, 1, 0, 0, 0, 1818, 1821, 1, 0, 0, 0, 1819, 1817, 1, 0, 0, 0, 1819, 1820, 1, 0, 0, 0, 1820, 1822, 1, 0, 0, 0, 1821, 1819, 1, 0, 0, 0, 1822, 1823, 5, 266, 0, 0, 1823, 249, 1, 0, 0, 0, 1824, 1825, 5, 265, 0, 0, 1825, 1830, 3, 212, 106, 0, 1826, 1827, 5, 263, 0, 0, 1827, 1829, 3, 212, 106, 0, 1828, 1826, 1, 0, 0, 0, 1829, 1832, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1830, 1828, 1, 0, 0, 0, 1831, 1833, 1, 0, 0, 0, 1832, 1830, 1, 0, 0, 0, 1833, 1834, 5, 266, 0, 0, 1834, 251, 1, 0, 0, 0, 1835, 1840, 3, 304, 152, 0, 1836, 1837, 5, 263, 0, 0, 1837, 1839, 3, 304, 152, 0, 1838, 1836, 1, 0, 0, 0, 1839, 1842, 1, 0, 0, 0, 1840, 1838, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 253, 1, 0, 0, 0, 1842, 1840, 1, 0, 0, 0, 1843, 1853, 5, 52, 0, 0, 1844, 1845, 5, 71, 0, 0, 1845, 1846, 5, 191, 0, 0, 1846, 1847, 5, 26, 0, 0, 1847, 1851, 3, 314, 157, 0, 1848, 1849, 5, 63, 0, 0, 1849, 1850, 5, 26, 0, 0, 1850, 1852, 3, 314, 157, 0, 1851, 1848, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1854, 1, 0, 0, 0, 1853, 1844, 1, 0, 0, 0, 1853, 1854, 1, 0, 0, 0, 1854, 1859, 1, 0, 0, 0, 1855, 1856, 5, 117, 0, 0, 1856, 1857, 5, 191, 0, 0, 1857, 1858, 5, 26, 0, 0, 1858, 1860, 3, 314, 157, 0, 1859, 1855, 1, 0, 0, 0, 1859, 1860, 1, 0, 0, 0, 1860, 255, 1, 0, 0, 0, 1861, 1864, 3, 358, 179, 0, 1862, 1863, 5, 249, 0, 0, 1863, 1865, 3, 304, 152, 0, 1864, 1862, 1, 0, 0, 0, 1864, 1865, 1, 0, 0, 0, 1865, 257, 1, 0, 0, 0, 1866, 1877, 3, 260, 130, 0, 1867, 1868, 5, 139, 0, 0, 1868, 1869, 5, 26, 0, 0, 1869, 1874, 3, 264, 132, 0, 1870, 1871, 5, 263, 0, 0, 1871, 1873, 3, 264, 132, 0, 1872, 1870, 1, 0, 0, 0, 1873, 1876, 1, 0, 0, 0, 1874, 1872, 1, 0, 0, 0, 1874, 1875, 1, 0, 0, 0, 1875, 1878, 1, 0, 0, 0, 1876, 1874, 1, 0, 0, 0, 1877, 1867, 1, 0, 0, 0, 1877, 1878, 1, 0, 0, 0, 1878, 1885, 1, 0, 0, 0, 1879, 1880, 5, 116, 0, 0, 1880, 1883, 3, 304, 152, 0, 1881, 1882, 5, 135, 0, 0, 1882, 1884, 5, 277, 0, 0, 1883, 1881, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 1886, 1, 0, 0, 0, 1885, 1879, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 259, 1, 0, 0, 0, 1887, 1888, 6, 130, -1, 0, 1888, 1889, 3, 262, 131, 0, 1889, 1904, 1, 0, 0, 0, 1890, 1891, 10, 2, 0, 0, 1891, 1893, 5, 100, 0, 0, 1892, 1894, 3, 276, 138, 0, 1893, 1892, 1, 0, 0, 0, 1893, 1894, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1903, 3, 260, 130, 3, 1896, 1897, 10, 1, 0, 0, 1897, 1899, 7, 13, 0, 0, 1898, 1900, 3, 276, 138, 0, 1899, 1898, 1, 0, 0, 0, 1899, 1900, 1, 0, 0, 0, 1900, 1901, 1, 0, 0, 0, 1901, 1903, 3, 260, 130, 2, 1902, 1890, 1, 0, 0, 0, 1902, 1896, 1, 0, 0, 0, 1903, 1906, 1, 0, 0, 0, 1904, 1902, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 261, 1, 0, 0, 0, 1906, 1904, 1, 0, 0, 0, 1907, 1924, 3, 266, 133, 0, 1908, 1909, 5, 188, 0, 0, 1909, 1924, 3, 186, 93, 0, 1910, 1911, 5, 211, 0, 0, 1911, 1916, 3, 304, 152, 0, 1912, 1913, 5, 263, 0, 0, 1913, 1915, 3, 304, 152, 0, 1914, 1912, 1, 0, 0, 0, 1915, 1918, 1, 0, 0, 0, 1916, 1914, 1, 0, 0, 0, 1916, 1917, 1, 0, 0, 0, 1917, 1924, 1, 0, 0, 0, 1918, 1916, 1, 0, 0, 0, 1919, 1920, 5, 265, 0, 0, 1920, 1921, 3, 258, 129, 0, 1921, 1922, 5, 266, 0, 0, 1922, 1924, 1, 0, 0, 0, 1923, 1907, 1, 0, 0, 0, 1923, 1908, 1, 0, 0, 0, 1923, 1910, 1, 0, 0, 0, 1923, 1919, 1, 0, 0, 0, 1924, 263, 1, 0, 0, 0, 1925, 1927, 3, 302, 151, 0, 1926, 1928, 7, 14, 0, 0, 1927, 1926, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 1931, 1, 0, 0, 0, 1929, 1930, 5, 134, 0, 0, 1930, 1932, 7, 15, 0, 0, 1931, 1929, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 265, 1, 0, 0, 0, 1933, 1935, 5, 174, 0, 0, 1934, 1936, 3, 276, 138, 0, 1935, 1934, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1938, 1, 0, 0, 0, 1937, 1939, 5, 183, 0, 0, 1938, 1937, 1, 0, 0, 0, 1938, 1939, 1, 0, 0, 0, 1939, 1940, 1, 0, 0, 0, 1940, 1945, 3, 278, 139, 0, 1941, 1942, 5, 263, 0, 0, 1942, 1944, 3, 278, 139, 0, 1943, 1941, 1, 0, 0, 0, 1944, 1947, 1, 0, 0, 0, 1945, 1943, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1957, 1, 0, 0, 0, 1947, 1945, 1, 0, 0, 0, 1948, 1949, 5, 82, 0, 0, 1949, 1954, 3, 280, 140, 0, 1950, 1951, 5, 263, 0, 0, 1951, 1953, 3, 280, 140, 0, 1952, 1950, 1, 0, 0, 0, 1953, 1956, 1, 0, 0, 0, 1954, 1952, 1, 0, 0, 0, 1954, 1955, 1, 0, 0, 0, 1955, 1958, 1, 0, 0, 0, 1956, 1954, 1, 0, 0, 0, 1957, 1948, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 1961, 1, 0, 0, 0, 1959, 1960, 5, 215, 0, 0, 1960, 1962, 3, 306, 153, 0, 1961, 1959, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1966, 1, 0, 0, 0, 1963, 1964, 5, 87, 0, 0, 1964, 1965, 5, 26, 0, 0, 1965, 1967, 3, 268, 134, 0, 1966, 1963, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1970, 1, 0, 0, 0, 1968, 1969, 5, 90, 0, 0, 1969, 1971, 3, 306, 153, 0, 1970, 1968, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 267, 1, 0, 0, 0, 1972, 1974, 3, 276, 138, 0, 1973, 1972, 1, 0, 0, 0, 1973, 1974, 1, 0, 0, 0, 1974, 1975, 1, 0, 0, 0, 1975, 1980, 3, 270, 135, 0, 1976, 1977, 5, 263, 0, 0, 1977, 1979, 3, 270, 135, 0, 1978, 1976, 1, 0, 0, 0, 1979, 1982, 1, 0, 0, 0, 1980, 1978, 1, 0, 0, 0, 1980, 1981, 1, 0, 0, 0, 1981, 269, 1, 0, 0, 0, 1982, 1980, 1, 0, 0, 0, 1983, 1984, 3, 272, 136, 0, 1984, 271, 1, 0, 0, 0, 1985, 1994, 5, 265, 0, 0, 1986, 1991, 3, 302, 151, 0, 1987, 1988, 5, 263, 0, 0, 1988, 1990, 3, 302, 151, 0, 1989, 1987, 1, 0, 0, 0, 1990, 1993, 1, 0, 0, 0, 1991, 1989, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1995, 1, 0, 0, 0, 1993, 1991, 1, 0, 0, 0, 1994, 1986, 1, 0, 0, 0, 1994, 1995, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1999, 5, 266, 0, 0, 1997, 1999, 3, 302, 151, 0, 1998, 1985, 1, 0, 0, 0, 1998, 1997, 1, 0, 0, 0, 1999, 273, 1, 0, 0, 0, 2000, 2002, 3, 358, 179, 0, 2001, 2003, 3, 292, 146, 0, 2002, 2001, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 2005, 5, 9, 0, 0, 2005, 2006, 3, 296, 148, 0, 2006, 275, 1, 0, 0, 0, 2007, 2008, 7, 16, 0, 0, 2008, 277, 1, 0, 0, 0, 2009, 2014, 3, 302, 151, 0, 2010, 2012, 5, 9, 0, 0, 2011, 2010, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2015, 3, 358, 179, 0, 2014, 2011, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2022, 1, 0, 0, 0, 2016, 2017, 3, 354, 177, 0, 2017, 2018, 5, 261, 0, 0, 2018, 2019, 5, 257, 0, 0, 2019, 2022, 1, 0, 0, 0, 2020, 2022, 5, 257, 0, 0, 2021, 2009, 1, 0, 0, 0, 2021, 2016, 1, 0, 0, 0, 2021, 2020, 1, 0, 0, 0, 2022, 279, 1, 0, 0, 0, 2023, 2024, 6, 140, -1, 0, 2024, 2025, 3, 286, 143, 0, 2025, 2039, 1, 0, 0, 0, 2026, 2035, 10, 2, 0, 0, 2027, 2028, 5, 38, 0, 0, 2028, 2029, 5, 109, 0, 0, 2029, 2036, 3, 286, 143, 0, 2030, 2031, 3, 282, 141, 0, 2031, 2032, 5, 109, 0, 0, 2032, 2033, 3, 280, 140, 0, 2033, 2034, 3, 284, 142, 0, 2034, 2036, 1, 0, 0, 0, 2035, 2027, 1, 0, 0, 0, 2035, 2030, 1, 0, 0, 0, 2036, 2038, 1, 0, 0, 0, 2037, 2026, 1, 0, 0, 0, 2038, 2041, 1, 0, 0, 0, 2039, 2037, 1, 0, 0, 0, 2039, 2040, 1, 0, 0, 0, 2040, 281, 1, 0, 0, 0, 2041, 2039, 1, 0, 0, 0, 2042, 2044, 5, 97, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2074, 1, 0, 0, 0, 2045, 2047, 5, 114, 0, 0, 2046, 2048, 5, 97, 0, 0, 2047, 2046, 1, 0, 0, 0, 2047, 2048, 1, 0, 0, 0, 2048, 2074, 1, 0, 0, 0, 2049, 2051, 5, 165, 0, 0, 2050, 2052, 5, 97, 0, 0, 2051, 2050, 1, 0, 0, 0, 2051, 2052, 1, 0, 0, 0, 2052, 2074, 1, 0, 0, 0, 2053, 2055, 5, 114, 0, 0, 2054, 2056, 5, 141, 0, 0, 2055, 2054, 1, 0, 0, 0, 2055, 2056, 1, 0, 0, 0, 2056, 2074, 1, 0, 0, 0, 2057, 2059, 5, 165, 0, 0, 2058, 2060, 5, 141, 0, 0, 2059, 2058, 1, 0, 0, 0, 2059, 2060, 1, 0, 0, 0, 2060, 2074, 1, 0, 0, 0, 2061, 2063, 5, 83, 0, 0, 2062, 2064, 5, 141, 0, 0, 2063, 2062, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2074, 1, 0, 0, 0, 2065, 2066, 5, 114, 0, 0, 2066, 2074, 5, 177, 0, 0, 2067, 2068, 5, 165, 0, 0, 2068, 2074, 5, 177, 0, 0, 2069, 2070, 5, 114, 0, 0, 2070, 2074, 5, 7, 0, 0, 2071, 2072, 5, 165, 0, 0, 2072, 2074, 5, 7, 0, 0, 2073, 2043, 1, 0, 0, 0, 2073, 2045, 1, 0, 0, 0, 2073, 2049, 1, 0, 0, 0, 2073, 2053, 1, 0, 0, 0, 2073, 2057, 1, 0, 0, 0, 2073, 2061, 1, 0, 0, 0, 2073, 2065, 1, 0, 0, 0, 2073, 2067, 1, 0, 0, 0, 2073, 2069, 1, 0, 0, 0, 2073, 2071, 1, 0, 0, 0, 2074, 283, 1, 0, 0, 0, 2075, 2076, 5, 136, 0, 0, 2076, 2090, 3, 306, 153, 0, 2077, 2078, 5, 205, 0, 0, 2078, 2079, 5, 265, 0, 0, 2079, 2084, 3, 358, 179, 0, 2080, 2081, 5, 263, 0, 0, 2081, 2083, 3, 358, 179, 0, 2082, 2080, 1, 0, 0, 0, 2083, 2086, 1, 0, 0, 0, 2084, 2082, 1, 0, 0, 0, 2084, 2085, 1, 0, 0, 0, 2085, 2087, 1, 0, 0, 0, 2086, 2084, 1, 0, 0, 0, 2087, 2088, 5, 266, 0, 0, 2088, 2090, 1, 0, 0, 0, 2089, 2075, 1, 0, 0, 0, 2089, 2077, 1, 0, 0, 0, 2090, 285, 1, 0, 0, 0, 2091, 2104, 3, 290, 145, 0, 2092, 2093, 5, 190, 0, 0, 2093, 2094, 3, 288, 144, 0, 2094, 2095, 5, 265, 0, 0, 2095, 2096, 3, 304, 152, 0, 2096, 2102, 5, 266, 0, 0, 2097, 2098, 5, 157, 0, 0, 2098, 2099, 5, 265, 0, 0, 2099, 2100, 3, 304, 152, 0, 2100, 2101, 5, 266, 0, 0, 2101, 2103, 1, 0, 0, 0, 2102, 2097, 1, 0, 0, 0, 2102, 2103, 1, 0, 0, 0, 2103, 2105, 1, 0, 0, 0, 2104, 2092, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 287, 1, 0, 0, 0, 2106, 2107, 7, 17, 0, 0, 2107, 289, 1, 0, 0, 0, 2108, 2116, 3, 294, 147, 0, 2109, 2111, 5, 9, 0, 0, 2110, 2109, 1, 0, 0, 0, 2110, 2111, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2114, 3, 358, 179, 0, 2113, 2115, 3, 292, 146, 0, 2114, 2113, 1, 0, 0, 0, 2114, 2115, 1, 0, 0, 0, 2115, 2117, 1, 0, 0, 0, 2116, 2110, 1, 0, 0, 0, 2116, 2117, 1, 0, 0, 0, 2117, 291, 1, 0, 0, 0, 2118, 2119, 5, 265, 0, 0, 2119, 2124, 3, 192, 96, 0, 2120, 2121, 5, 263, 0, 0, 2121, 2123, 3, 192, 96, 0, 2122, 2120, 1, 0, 0, 0, 2123, 2126, 1, 0, 0, 0, 2124, 2122, 1, 0, 0, 0, 2124, 2125, 1, 0, 0, 0, 2125, 2127, 1, 0, 0, 0, 2126, 2124, 1, 0, 0, 0, 2127, 2128, 5, 266, 0, 0, 2128, 293, 1, 0, 0, 0, 2129, 2137, 3, 194, 97, 0, 2130, 2132, 5, 113, 0, 0, 2131, 2130, 1, 0, 0, 0, 2131, 2132, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2137, 3, 296, 148, 0, 2134, 2137, 3, 298, 149, 0, 2135, 2137, 3, 300, 150, 0, 2136, 2129, 1, 0, 0, 0, 2136, 2131, 1, 0, 0, 0, 2136, 2134, 1, 0, 0, 0, 2136, 2135, 1, 0, 0, 0, 2137, 295, 1, 0, 0, 0, 2138, 2139, 5, 265, 0, 0, 2139, 2140, 3, 204, 102, 0, 2140, 2141, 5, 266, 0, 0, 2141, 297, 1, 0, 0, 0, 2142, 2143, 5, 201, 0, 0, 2143, 2144, 5, 265, 0, 0, 2144, 2149, 3, 304, 152, 0, 2145, 2146, 5, 263, 0, 0, 2146, 2148, 3, 304, 152, 0, 2147, 2145, 1, 0, 0, 0, 2148, 2151, 1, 0, 0, 0, 2149, 2147, 1, 0, 0, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2152, 1, 0, 0, 0, 2151, 2149, 1, 0, 0, 0, 2152, 2155, 5, 266, 0, 0, 2153, 2154, 5, 216, 0, 0, 2154, 2156, 5, 140, 0, 0, 2155, 2153, 1, 0, 0, 0, 2155, 2156, 1, 0, 0, 0, 2156, 299, 1, 0, 0, 0, 2157, 2158, 5, 265, 0, 0, 2158, 2159, 3, 280, 140, 0, 2159, 2160, 5, 266, 0, 0, 2160, 301, 1, 0, 0, 0, 2161, 2164, 3, 192, 96, 0, 2162, 2164, 3, 304, 152, 0, 2163, 2161, 1, 0, 0, 0, 2163, 2162, 1, 0, 0, 0, 2164, 303, 1, 0, 0, 0, 2165, 2166, 3, 306, 153, 0, 2166, 305, 1, 0, 0, 0, 2167, 2168, 6, 153, -1, 0, 2168, 2170, 3, 310, 155, 0, 2169, 2171, 3, 308, 154, 0, 2170, 2169, 1, 0, 0, 0, 2170, 2171, 1, 0, 0, 0, 2171, 2175, 1, 0, 0, 0, 2172, 2173, 5, 132, 0, 0, 2173, 2175, 3, 306, 153, 3, 2174, 2167, 1, 0, 0, 0, 2174, 2172, 1, 0, 0, 0, 2175, 2184, 1, 0, 0, 0, 2176, 2177, 10, 2, 0, 0, 2177, 2178, 5, 5, 0, 0, 2178, 2183, 3, 306, 153, 3, 2179, 2180, 10, 1, 0, 0, 2180, 2181, 5, 138, 0, 0, 2181, 2183, 3, 306, 153, 2, 2182, 2176, 1, 0, 0, 0, 2182, 2179, 1, 0, 0, 0, 2183, 2186, 1, 0, 0, 0, 2184, 2182, 1, 0, 0, 0, 2184, 2185, 1, 0, 0, 0, 2185, 307, 1, 0, 0, 0, 2186, 2184, 1, 0, 0, 0, 2187, 2188, 3, 316, 158, 0, 2188, 2189, 3, 310, 155, 0, 2189, 2246, 1, 0, 0, 0, 2190, 2191, 3, 316, 158, 0, 2191, 2192, 3, 318, 159, 0, 2192, 2193, 3, 296, 148, 0, 2193, 2246, 1, 0, 0, 0, 2194, 2196, 5, 132, 0, 0, 2195, 2194, 1, 0, 0, 0, 2195, 2196, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 2198, 5, 15, 0, 0, 2198, 2199, 3, 310, 155, 0, 2199, 2200, 5, 5, 0, 0, 2200, 2201, 3, 310, 155, 0, 2201, 2246, 1, 0, 0, 0, 2202, 2204, 5, 132, 0, 0, 2203, 2202, 1, 0, 0, 0, 2203, 2204, 1, 0, 0, 0, 2204, 2205, 1, 0, 0, 0, 2205, 2206, 5, 94, 0, 0, 2206, 2207, 5, 265, 0, 0, 2207, 2212, 3, 304, 152, 0, 2208, 2209, 5, 263, 0, 0, 2209, 2211, 3, 304, 152, 0, 2210, 2208, 1, 0, 0, 0, 2211, 2214, 1, 0, 0, 0, 2212, 2210, 1, 0, 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 2215, 1, 0, 0, 0, 2214, 2212, 1, 0, 0, 0, 2215, 2216, 5, 266, 0, 0, 2216, 2246, 1, 0, 0, 0, 2217, 2219, 5, 132, 0, 0, 2218, 2217, 1, 0, 0, 0, 2218, 2219, 1, 0, 0, 0, 2219, 2220, 1, 0, 0, 0, 2220, 2221, 5, 94, 0, 0, 2221, 2246, 3, 296, 148, 0, 2222, 2224, 5, 132, 0, 0, 2223, 2222, 1, 0, 0, 0, 2223, 2224, 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2226, 7, 18, 0, 0, 2226, 2229, 3, 310, 155, 0, 2227, 2228, 5, 62, 0, 0, 2228, 2230, 3, 310, 155, 0, 2229, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 2246, 1, 0, 0, 0, 2231, 2232, 7, 19, 0, 0, 2232, 2246, 3, 310, 155, 0, 2233, 2235, 5, 108, 0, 0, 2234, 2236, 5, 132, 0, 0, 2235, 2234, 1, 0, 0, 0, 2235, 2236, 1, 0, 0, 0, 2236, 2237, 1, 0, 0, 0, 2237, 2246, 7, 20, 0, 0, 2238, 2240, 5, 108, 0, 0, 2239, 2241, 5, 132, 0, 0, 2240, 2239, 1, 0, 0, 0, 2240, 2241, 1, 0, 0, 0, 2241, 2242, 1, 0, 0, 0, 2242, 2243, 5, 57, 0, 0, 2243, 2244, 5, 82, 0, 0, 2244, 2246, 3, 310, 155, 0, 2245, 2187, 1, 0, 0, 0, 2245, 2190, 1, 0, 0, 0, 2245, 2195, 1, 0, 0, 0, 2245, 2203, 1, 0, 0, 0, 2245, 2218, 1, 0, 0, 0, 2245, 2223, 1, 0, 0, 0, 2245, 2231, 1, 0, 0, 0, 2245, 2233, 1, 0, 0, 0, 2245, 2238, 1, 0, 0, 0, 2246, 309, 1, 0, 0, 0, 2247, 2248, 6, 155, -1, 0, 2248, 2252, 3, 312, 156, 0, 2249, 2250, 7, 21, 0, 0, 2250, 2252, 3, 310, 155, 4, 2251, 2247, 1, 0, 0, 0, 2251, 2249, 1, 0, 0, 0, 2252, 2264, 1, 0, 0, 0, 2253, 2254, 10, 3, 0, 0, 2254, 2255, 7, 22, 0, 0, 2255, 2263, 3, 310, 155, 4, 2256, 2257, 10, 2, 0, 0, 2257, 2258, 7, 21, 0, 0, 2258, 2263, 3, 310, 155, 3, 2259, 2260, 10, 1, 0, 0, 2260, 2261, 5, 260, 0, 0, 2261, 2263, 3, 310, 155, 2, 2262, 2253, 1, 0, 0, 0, 2262, 2256, 1, 0, 0, 0, 2262, 2259, 1, 0, 0, 0, 2263, 2266, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 311, 1, 0, 0, 0, 2266, 2264, 1, 0, 0, 0, 2267, 2268, 6, 156, -1, 0, 2268, 2514, 5, 133, 0, 0, 2269, 2514, 3, 322, 161, 0, 2270, 2271, 3, 358, 179, 0, 2271, 2272, 3, 314, 157, 0, 2272, 2514, 1, 0, 0, 0, 2273, 2274, 5, 286, 0, 0, 2274, 2514, 3, 314, 157, 0, 2275, 2514, 3, 360, 180, 0, 2276, 2514, 3, 320, 160, 0, 2277, 2514, 3, 314, 157, 0, 2278, 2514, 5, 276, 0, 0, 2279, 2514, 5, 272, 0, 0, 2280, 2281, 5, 148, 0, 0, 2281, 2282, 5, 265, 0, 0, 2282, 2283, 3, 310, 155, 0, 2283, 2284, 5, 94, 0, 0, 2284, 2285, 3, 310, 155, 0, 2285, 2286, 5, 266, 0, 0, 2286, 2514, 1, 0, 0, 0, 2287, 2288, 5, 265, 0, 0, 2288, 2291, 3, 304, 152, 0, 2289, 2290, 5, 9, 0, 0, 2290, 2292, 3, 328, 164, 0, 2291, 2289, 1, 0, 0, 0, 2291, 2292, 1, 0, 0, 0, 2292, 2301, 1, 0, 0, 0, 2293, 2294, 5, 263, 0, 0, 2294, 2297, 3, 304, 152, 0, 2295, 2296, 5, 9, 0, 0, 2296, 2298, 3, 328, 164, 0, 2297, 2295, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2300, 1, 0, 0, 0, 2299, 2293, 1, 0, 0, 0, 2300, 2303, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2301, 2299, 1, 0, 0, 0, 2302, 2304, 1, 0, 0, 0, 2303, 2301, 1, 0, 0, 0, 2304, 2305, 5, 266, 0, 0, 2305, 2514, 1, 0, 0, 0, 2306, 2307, 5, 168, 0, 0, 2307, 2308, 5, 265, 0, 0, 2308, 2313, 3, 304, 152, 0, 2309, 2310, 5, 263, 0, 0, 2310, 2312, 3, 304, 152, 0, 2311, 2309, 1, 0, 0, 0, 2312, 2315, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2313, 2314, 1, 0, 0, 0, 2314, 2316, 1, 0, 0, 0, 2315, 2313, 1, 0, 0, 0, 2316, 2317, 5, 266, 0, 0, 2317, 2514, 1, 0, 0, 0, 2318, 2319, 3, 190, 95, 0, 2319, 2320, 5, 265, 0, 0, 2320, 2321, 5, 257, 0, 0, 2321, 2323, 5, 266, 0, 0, 2322, 2324, 3, 338, 169, 0, 2323, 2322, 1, 0, 0, 0, 2323, 2324, 1, 0, 0, 0, 2324, 2326, 1, 0, 0, 0, 2325, 2327, 3, 340, 170, 0, 2326, 2325, 1, 0, 0, 0, 2326, 2327, 1, 0, 0, 0, 2327, 2514, 1, 0, 0, 0, 2328, 2329, 3, 190, 95, 0, 2329, 2341, 5, 265, 0, 0, 2330, 2332, 3, 276, 138, 0, 2331, 2330, 1, 0, 0, 0, 2331, 2332, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 2338, 3, 304, 152, 0, 2334, 2335, 5, 263, 0, 0, 2335, 2337, 3, 304, 152, 0, 2336, 2334, 1, 0, 0, 0, 2337, 2340, 1, 0, 0, 0, 2338, 2336, 1, 0, 0, 0, 2338, 2339, 1, 0, 0, 0, 2339, 2342, 1, 0, 0, 0, 2340, 2338, 1, 0, 0, 0, 2341, 2331, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2353, 1, 0, 0, 0, 2343, 2344, 5, 139, 0, 0, 2344, 2345, 5, 26, 0, 0, 2345, 2350, 3, 264, 132, 0, 2346, 2347, 5, 263, 0, 0, 2347, 2349, 3, 264, 132, 0, 2348, 2346, 1, 0, 0, 0, 2349, 2352, 1, 0, 0, 0, 2350, 2348, 1, 0, 0, 0, 2350, 2351, 1, 0, 0, 0, 2351, 2354, 1, 0, 0, 0, 2352, 2350, 1, 0, 0, 0, 2353, 2343, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2357, 5, 266, 0, 0, 2356, 2358, 3, 338, 169, 0, 2357, 2356, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2360, 1, 0, 0, 0, 2359, 2361, 3, 340, 170, 0, 2360, 2359, 1, 0, 0, 0, 2360, 2361, 1, 0, 0, 0, 2361, 2514, 1, 0, 0, 0, 2362, 2363, 3, 358, 179, 0, 2363, 2364, 5, 273, 0, 0, 2364, 2365, 3, 304, 152, 0, 2365, 2514, 1, 0, 0, 0, 2366, 2375, 5, 265, 0, 0, 2367, 2372, 3, 358, 179, 0, 2368, 2369, 5, 263, 0, 0, 2369, 2371, 3, 358, 179, 0, 2370, 2368, 1, 0, 0, 0, 2371, 2374, 1, 0, 0, 0, 2372, 2370, 1, 0, 0, 0, 2372, 2373, 1, 0, 0, 0, 2373, 2376, 1, 0, 0, 0, 2374, 2372, 1, 0, 0, 0, 2375, 2367, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2378, 5, 266, 0, 0, 2378, 2379, 5, 273, 0, 0, 2379, 2514, 3, 304, 152, 0, 2380, 2381, 5, 265, 0, 0, 2381, 2382, 3, 204, 102, 0, 2382, 2383, 5, 266, 0, 0, 2383, 2514, 1, 0, 0, 0, 2384, 2385, 5, 66, 0, 0, 2385, 2386, 5, 265, 0, 0, 2386, 2387, 3, 204, 102, 0, 2387, 2388, 5, 266, 0, 0, 2388, 2514, 1, 0, 0, 0, 2389, 2390, 5, 28, 0, 0, 2390, 2392, 3, 310, 155, 0, 2391, 2393, 3, 336, 168, 0, 2392, 2391, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2392, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2398, 1, 0, 0, 0, 2396, 2397, 5, 59, 0, 0, 2397, 2399, 3, 304, 152, 0, 2398, 2396, 1, 0, 0, 0, 2398, 2399, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2401, 5, 61, 0, 0, 2401, 2514, 1, 0, 0, 0, 2402, 2404, 5, 28, 0, 0, 2403, 2405, 3, 336, 168, 0, 2404, 2403, 1, 0, 0, 0, 2405, 2406, 1, 0, 0, 0, 2406, 2404, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2410, 1, 0, 0, 0, 2408, 2409, 5, 59, 0, 0, 2409, 2411, 3, 304, 152, 0, 2410, 2408, 1, 0, 0, 0, 2410, 2411, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2413, 5, 61, 0, 0, 2413, 2514, 1, 0, 0, 0, 2414, 2415, 5, 29, 0, 0, 2415, 2416, 5, 265, 0, 0, 2416, 2417, 3, 304, 152, 0, 2417, 2418, 5, 9, 0, 0, 2418, 2419, 3, 328, 164, 0, 2419, 2420, 5, 266, 0, 0, 2420, 2514, 1, 0, 0, 0, 2421, 2422, 5, 195, 0, 0, 2422, 2423, 5, 265, 0, 0, 2423, 2424, 3, 304, 152, 0, 2424, 2425, 5, 9, 0, 0, 2425, 2426, 3, 328, 164, 0, 2426, 2427, 5, 266, 0, 0, 2427, 2514, 1, 0, 0, 0, 2428, 2429, 5, 8, 0, 0, 2429, 2438, 5, 267, 0, 0, 2430, 2435, 3, 304, 152, 0, 2431, 2432, 5, 263, 0, 0, 2432, 2434, 3, 304, 152, 0, 2433, 2431, 1, 0, 0, 0, 2434, 2437, 1, 0, 0, 0, 2435, 2433, 1, 0, 0, 0, 2435, 2436, 1, 0, 0, 0, 2436, 2439, 1, 0, 0, 0, 2437, 2435, 1, 0, 0, 0, 2438, 2430, 1, 0, 0, 0, 2438, 2439, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2514, 5, 268, 0, 0, 2441, 2514, 3, 358, 179, 0, 2442, 2514, 5, 40, 0, 0, 2443, 2447, 5, 42, 0, 0, 2444, 2445, 5, 265, 0, 0, 2445, 2446, 5, 277, 0, 0, 2446, 2448, 5, 266, 0, 0, 2447, 2444, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2514, 1, 0, 0, 0, 2449, 2453, 5, 43, 0, 0, 2450, 2451, 5, 265, 0, 0, 2451, 2452, 5, 277, 0, 0, 2452, 2454, 5, 266, 0, 0, 2453, 2450, 1, 0, 0, 0, 2453, 2454, 1, 0, 0, 0, 2454, 2514, 1, 0, 0, 0, 2455, 2459, 5, 119, 0, 0, 2456, 2457, 5, 265, 0, 0, 2457, 2458, 5, 277, 0, 0, 2458, 2460, 5, 266, 0, 0, 2459, 2456, 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 2514, 1, 0, 0, 0, 2461, 2465, 5, 120, 0, 0, 2462, 2463, 5, 265, 0, 0, 2463, 2464, 5, 277, 0, 0, 2464, 2466, 5, 266, 0, 0, 2465, 2462, 1, 0, 0, 0, 2465, 2466, 1, 0, 0, 0, 2466, 2514, 1, 0, 0, 0, 2467, 2514, 5, 44, 0, 0, 2468, 2514, 5, 41, 0, 0, 2469, 2470, 5, 184, 0, 0, 2470, 2471, 5, 265, 0, 0, 2471, 2472, 3, 310, 155, 0, 2472, 2473, 5, 82, 0, 0, 2473, 2476, 3, 310, 155, 0, 2474, 2475, 5, 78, 0, 0, 2475, 2477, 3, 310, 155, 0, 2476, 2474, 1, 0, 0, 0, 2476, 2477, 1, 0, 0, 0, 2477, 2478, 1, 0, 0, 0, 2478, 2479, 5, 266, 0, 0, 2479, 2514, 1, 0, 0, 0, 2480, 2481, 5, 131, 0, 0, 2481, 2482, 5, 265, 0, 0, 2482, 2485, 3, 310, 155, 0, 2483, 2484, 5, 263, 0, 0, 2484, 2486, 3, 326, 163, 0, 2485, 2483, 1, 0, 0, 0, 2485, 2486, 1, 0, 0, 0, 2486, 2487, 1, 0, 0, 0, 2487, 2488, 5, 266, 0, 0, 2488, 2514, 1, 0, 0, 0, 2489, 2490, 5, 68, 0, 0, 2490, 2491, 5, 265, 0, 0, 2491, 2492, 3, 358, 179, 0, 2492, 2493, 5, 82, 0, 0, 2493, 2494, 3, 310, 155, 0, 2494, 2495, 5, 266, 0, 0, 2495, 2514, 1, 0, 0, 0, 2496, 2497, 5, 265, 0, 0, 2497, 2498, 3, 304, 152, 0, 2498, 2499, 5, 266, 0, 0, 2499, 2514, 1, 0, 0, 0, 2500, 2501, 5, 88, 0, 0, 2501, 2510, 5, 265, 0, 0, 2502, 2507, 3, 354, 177, 0, 2503, 2504, 5, 263, 0, 0, 2504, 2506, 3, 354, 177, 0, 2505, 2503, 1, 0, 0, 0, 2506, 2509, 1, 0, 0, 0, 2507, 2505, 1, 0, 0, 0, 2507, 2508, 1, 0, 0, 0, 2508, 2511, 1, 0, 0, 0, 2509, 2507, 1, 0, 0, 0, 2510, 2502, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 2512, 1, 0, 0, 0, 2512, 2514, 5, 266, 0, 0, 2513, 2267, 1, 0, 0, 0, 2513, 2269, 1, 0, 0, 0, 2513, 2270, 1, 0, 0, 0, 2513, 2273, 1, 0, 0, 0, 2513, 2275, 1, 0, 0, 0, 2513, 2276, 1, 0, 0, 0, 2513, 2277, 1, 0, 0, 0, 2513, 2278, 1, 0, 0, 0, 2513, 2279, 1, 0, 0, 0, 2513, 2280, 1, 0, 0, 0, 2513, 2287, 1, 0, 0, 0, 2513, 2306, 1, 0, 0, 0, 2513, 2318, 1, 0, 0, 0, 2513, 2328, 1, 0, 0, 0, 2513, 2362, 1, 0, 0, 0, 2513, 2366, 1, 0, 0, 0, 2513, 2380, 1, 0, 0, 0, 2513, 2384, 1, 0, 0, 0, 2513, 2389, 1, 0, 0, 0, 2513, 2402, 1, 0, 0, 0, 2513, 2414, 1, 0, 0, 0, 2513, 2421, 1, 0, 0, 0, 2513, 2428, 1, 0, 0, 0, 2513, 2441, 1, 0, 0, 0, 2513, 2442, 1, 0, 0, 0, 2513, 2443, 1, 0, 0, 0, 2513, 2449, 1, 0, 0, 0, 2513, 2455, 1, 0, 0, 0, 2513, 2461, 1, 0, 0, 0, 2513, 2467, 1, 0, 0, 0, 2513, 2468, 1, 0, 0, 0, 2513, 2469, 1, 0, 0, 0, 2513, 2480, 1, 0, 0, 0, 2513, 2489, 1, 0, 0, 0, 2513, 2496, 1, 0, 0, 0, 2513, 2500, 1, 0, 0, 0, 2514, 2525, 1, 0, 0, 0, 2515, 2516, 10, 15, 0, 0, 2516, 2517, 5, 267, 0, 0, 2517, 2518, 3, 310, 155, 0, 2518, 2519, 5, 268, 0, 0, 2519, 2524, 1, 0, 0, 0, 2520, 2521, 10, 13, 0, 0, 2521, 2522, 5, 261, 0, 0, 2522, 2524, 3, 358, 179, 0, 2523, 2515, 1, 0, 0, 0, 2523, 2520, 1, 0, 0, 0, 2524, 2527, 1, 0, 0, 0, 2525, 2523, 1, 0, 0, 0, 2525, 2526, 1, 0, 0, 0, 2526, 313, 1, 0, 0, 0, 2527, 2525, 1, 0, 0, 0, 2528, 2535, 5, 274, 0, 0, 2529, 2532, 5, 275, 0, 0, 2530, 2531, 5, 198, 0, 0, 2531, 2533, 5, 274, 0, 0, 2532, 2530, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2535, 1, 0, 0, 0, 2534, 2528, 1, 0, 0, 0, 2534, 2529, 1, 0, 0, 0, 2535, 315, 1, 0, 0, 0, 2536, 2537, 7, 23, 0, 0, 2537, 317, 1, 0, 0, 0, 2538, 2539, 7, 24, 0, 0, 2539, 319, 1, 0, 0, 0, 2540, 2541, 7, 25, 0, 0, 2541, 321, 1, 0, 0, 0, 2542, 2543, 5, 277, 0, 0, 2543, 2557, 3, 324, 162, 0, 2544, 2545, 5, 265, 0, 0, 2545, 2546, 5, 277, 0, 0, 2546, 2547, 5, 266, 0, 0, 2547, 2557, 3, 324, 162, 0, 2548, 2549, 5, 101, 0, 0, 2549, 2550, 5, 277, 0, 0, 2550, 2557, 3, 324, 162, 0, 2551, 2552, 5, 101, 0, 0, 2552, 2553, 5, 265, 0, 0, 2553, 2554, 5, 277, 0, 0, 2554, 2555, 5, 266, 0, 0, 2555, 2557, 3, 324, 162, 0, 2556, 2542, 1, 0, 0, 0, 2556, 2544, 1, 0, 0, 0, 2556, 2548, 1, 0, 0, 0, 2556, 2551, 1, 0, 0, 0, 2557, 323, 1, 0, 0, 0, 2558, 2559, 7, 26, 0, 0, 2559, 325, 1, 0, 0, 0, 2560, 2561, 7, 27, 0, 0, 2561, 327, 1, 0, 0, 0, 2562, 2563, 6, 164, -1, 0, 2563, 2564, 5, 8, 0, 0, 2564, 2565, 5, 251, 0, 0, 2565, 2566, 3, 328, 164, 0, 2566, 2567, 5, 253, 0, 0, 2567, 2608, 1, 0, 0, 0, 2568, 2569, 5, 235, 0, 0, 2569, 2570, 5, 251, 0, 0, 2570, 2571, 3, 328, 164, 0, 2571, 2572, 5, 263, 0, 0, 2572, 2573, 3, 328, 164, 0, 2573, 2574, 5, 253, 0, 0, 2574, 2608, 1, 0, 0, 0, 2575, 2576, 5, 240, 0, 0, 2576, 2577, 5, 251, 0, 0, 2577, 2578, 3, 358, 179, 0, 2578, 2585, 3, 328, 164, 0, 2579, 2580, 5, 263, 0, 0, 2580, 2581, 3, 358, 179, 0, 2581, 2582, 3, 328, 164, 0, 2582, 2584, 1, 0, 0, 0, 2583, 2579, 1, 0, 0, 0, 2584, 2587, 1, 0, 0, 0, 2585, 2583, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2588, 1, 0, 0, 0, 2587, 2585, 1, 0, 0, 0, 2588, 2589, 5, 253, 0, 0, 2589, 2608, 1, 0, 0, 0, 2590, 2593, 3, 334, 167, 0, 2591, 2593, 3, 330, 165, 0, 2592, 2590, 1, 0, 0, 0, 2592, 2591, 1, 0, 0, 0, 2593, 2605, 1, 0, 0, 0, 2594, 2595, 5, 265, 0, 0, 2595, 2600, 3, 332, 166, 0, 2596, 2597, 5, 263, 0, 0, 2597, 2599, 3, 332, 166, 0, 2598, 2596, 1, 0, 0, 0, 2599, 2602, 1, 0, 0, 0, 2600, 2598, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2603, 1, 0, 0, 0, 2602, 2600, 1, 0, 0, 0, 2603, 2604, 5, 266, 0, 0, 2604, 2606, 1, 0, 0, 0, 2605, 2594, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 2608, 1, 0, 0, 0, 2607, 2562, 1, 0, 0, 0, 2607, 2568, 1, 0, 0, 0, 2607, 2575, 1, 0, 0, 0, 2607, 2592, 1, 0, 0, 0, 2608, 2613, 1, 0, 0, 0, 2609, 2610, 10, 5, 0, 0, 2610, 2612, 5, 8, 0, 0, 2611, 2609, 1, 0, 0, 0, 2612, 2615, 1, 0, 0, 0, 2613, 2611, 1, 0, 0, 0, 2613, 2614, 1, 0, 0, 0, 2614, 329, 1, 0, 0, 0, 2615, 2613, 1, 0, 0, 0, 2616, 2617, 7, 28, 0, 0, 2617, 331, 1, 0, 0, 0, 2618, 2621, 5, 277, 0, 0, 2619, 2621, 3, 328, 164, 0, 2620, 2618, 1, 0, 0, 0, 2620, 2619, 1, 0, 0, 0, 2621, 333, 1, 0, 0, 0, 2622, 2627, 5, 284, 0, 0, 2623, 2627, 5, 285, 0, 0, 2624, 2627, 5, 286, 0, 0, 2625, 2627, 3, 358, 179, 0, 2626, 2622, 1, 0, 0, 0, 2626, 2623, 1, 0, 0, 0, 2626, 2624, 1, 0, 0, 0, 2626, 2625, 1, 0, 0, 0, 2627, 335, 1, 0, 0, 0, 2628, 2629, 5, 214, 0, 0, 2629, 2630, 3, 304, 152, 0, 2630, 2631, 5, 192, 0, 0, 2631, 2632, 3, 304, 152, 0, 2632, 337, 1, 0, 0, 0, 2633, 2634, 5, 74, 0, 0, 2634, 2635, 5, 265, 0, 0, 2635, 2636, 5, 215, 0, 0, 2636, 2637, 3, 306, 153, 0, 2637, 2638, 5, 266, 0, 0, 2638, 339, 1, 0, 0, 0, 2639, 2640, 5, 143, 0, 0, 2640, 2651, 5, 265, 0, 0, 2641, 2642, 5, 145, 0, 0, 2642, 2643, 5, 26, 0, 0, 2643, 2648, 3, 304, 152, 0, 2644, 2645, 5, 263, 0, 0, 2645, 2647, 3, 304, 152, 0, 2646, 2644, 1, 0, 0, 0, 2647, 2650, 1, 0, 0, 0, 2648, 2646, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 2652, 1, 0, 0, 0, 2650, 2648, 1, 0, 0, 0, 2651, 2641, 1, 0, 0, 0, 2651, 2652, 1, 0, 0, 0, 2652, 2663, 1, 0, 0, 0, 2653, 2654, 5, 139, 0, 0, 2654, 2655, 5, 26, 0, 0, 2655, 2660, 3, 264, 132, 0, 2656, 2657, 5, 263, 0, 0, 2657, 2659, 3, 264, 132, 0, 2658, 2656, 1, 0, 0, 0, 2659, 2662, 1, 0, 0, 0, 2660, 2658, 1, 0, 0, 0, 2660, 2661, 1, 0, 0, 0, 2661, 2664, 1, 0, 0, 0, 2662, 2660, 1, 0, 0, 0, 2663, 2653, 1, 0, 0, 0, 2663, 2664, 1, 0, 0, 0, 2664, 2666, 1, 0, 0, 0, 2665, 2667, 3, 342, 171, 0, 2666, 2665, 1, 0, 0, 0, 2666, 2667, 1, 0, 0, 0, 2667, 2668, 1, 0, 0, 0, 2668, 2669, 5, 266, 0, 0, 2669, 341, 1, 0, 0, 0, 2670, 2671, 5, 154, 0, 0, 2671, 2687, 3, 344, 172, 0, 2672, 2673, 5, 169, 0, 0, 2673, 2687, 3, 344, 172, 0, 2674, 2675, 5, 154, 0, 0, 2675, 2676, 5, 15, 0, 0, 2676, 2677, 3, 344, 172, 0, 2677, 2678, 5, 5, 0, 0, 2678, 2679, 3, 344, 172, 0, 2679, 2687, 1, 0, 0, 0, 2680, 2681, 5, 169, 0, 0, 2681, 2682, 5, 15, 0, 0, 2682, 2683, 3, 344, 172, 0, 2683, 2684, 5, 5, 0, 0, 2684, 2685, 3, 344, 172, 0, 2685, 2687, 1, 0, 0, 0, 2686, 2670, 1, 0, 0, 0, 2686, 2672, 1, 0, 0, 0, 2686, 2674, 1, 0, 0, 0, 2686, 2680, 1, 0, 0, 0, 2687, 343, 1, 0, 0, 0, 2688, 2689, 5, 199, 0, 0, 2689, 2698, 5, 149, 0, 0, 2690, 2691, 5, 199, 0, 0, 2691, 2698, 5, 77, 0, 0, 2692, 2693, 5, 39, 0, 0, 2693, 2698, 5, 168, 0, 0, 2694, 2695, 3, 304, 152, 0, 2695, 2696, 7, 29, 0, 0, 2696, 2698, 1, 0, 0, 0, 2697, 2688, 1, 0, 0, 0, 2697, 2690, 1, 0, 0, 0, 2697, 2692, 1, 0, 0, 0, 2697, 2694, 1, 0, 0, 0, 2698, 345, 1, 0, 0, 0, 2699, 2700, 3, 358, 179, 0, 2700, 2701, 5, 261, 0, 0, 2701, 2702, 3, 358, 179, 0, 2702, 2705, 1, 0, 0, 0, 2703, 2705, 3, 358, 179, 0, 2704, 2699, 1, 0, 0, 0, 2704, 2703, 1, 0, 0, 0, 2705, 347, 1, 0, 0, 0, 2706, 2711, 3, 346, 173, 0, 2707, 2708, 5, 263, 0, 0, 2708, 2710, 3, 346, 173, 0, 2709, 2707, 1, 0, 0, 0, 2710, 2713, 1, 0, 0, 0, 2711, 2709, 1, 0, 0, 0, 2711, 2712, 1, 0, 0, 0, 2712, 349, 1, 0, 0, 0, 2713, 2711, 1, 0, 0, 0, 2714, 2728, 5, 2, 0, 0, 2715, 2728, 5, 4, 0, 0, 2716, 2728, 5, 58, 0, 0, 2717, 2728, 5, 37, 0, 0, 2718, 2728, 5, 99, 0, 0, 2719, 2728, 5, 162, 0, 0, 2720, 2725, 5, 174, 0, 0, 2721, 2722, 5, 265, 0, 0, 2722, 2723, 3, 358, 179, 0, 2723, 2724, 5, 266, 0, 0, 2724, 2726, 1, 0, 0, 0, 2725, 2721, 1, 0, 0, 0, 2725, 2726, 1, 0, 0, 0, 2726, 2728, 1, 0, 0, 0, 2727, 2714, 1, 0, 0, 0, 2727, 2715, 1, 0, 0, 0, 2727, 2716, 1, 0, 0, 0, 2727, 2717, 1, 0, 0, 0, 2727, 2718, 1, 0, 0, 0, 2727, 2719, 1, 0, 0, 0, 2727, 2720, 1, 0, 0, 0, 2728, 351, 1, 0, 0, 0, 2729, 2730, 7, 30, 0, 0, 2730, 353, 1, 0, 0, 0, 2731, 2736, 3, 358, 179, 0, 2732, 2733, 5, 261, 0, 0, 2733, 2735, 3, 358, 179, 0, 2734, 2732, 1, 0, 0, 0, 2735, 2738, 1, 0, 0, 0, 2736, 2734, 1, 0, 0, 0, 2736, 2737, 1, 0, 0, 0, 2737, 355, 1, 0, 0, 0, 2738, 2736, 1, 0, 0, 0, 2739, 2740, 5, 166, 0, 0, 2740, 2746, 3, 358, 179, 0, 2741, 2742, 5, 204, 0, 0, 2742, 2746, 3, 358, 179, 0, 2743, 2744, 5, 87, 0, 0, 2744, 2746, 3, 358, 179, 0, 2745, 2739, 1, 0, 0, 0, 2745, 2741, 1, 0, 0, 0, 2745, 2743, 1, 0, 0, 0, 2746, 357, 1, 0, 0, 0, 2747, 2753, 5, 280, 0, 0, 2748, 2753, 5, 274, 0, 0, 2749, 2753, 3, 364, 182, 0, 2750, 2753, 5, 283, 0, 0, 2751, 2753, 5, 281, 0, 0, 2752, 2747, 1, 0, 0, 0, 2752, 2748, 1, 0, 0, 0, 2752, 2749, 1, 0, 0, 0, 2752, 2750, 1, 0, 0, 0, 2752, 2751, 1, 0, 0, 0, 2753, 359, 1, 0, 0, 0, 2754, 2756, 5, 256, 0, 0, 2755, 2754, 1, 0, 0, 0, 2755, 2756, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2767, 5, 278, 0, 0, 2758, 2760, 5, 256, 0, 0, 2759, 2758, 1, 0, 0, 0, 2759, 2760, 1, 0, 0, 0, 2760, 2761, 1, 0, 0, 0, 2761, 2767, 5, 279, 0, 0, 2762, 2764, 5, 256, 0, 0, 2763, 2762, 1, 0, 0, 0, 2763, 2764, 1, 0, 0, 0, 2764, 2765, 1, 0, 0, 0, 2765, 2767, 5, 277, 0, 0, 2766, 2755, 1, 0, 0, 0, 2766, 2759, 1, 0, 0, 0, 2766, 2763, 1, 0, 0, 0, 2767, 361, 1, 0, 0, 0, 2768, 2769, 7, 31, 0, 0, 2769, 363, 1, 0, 0, 0, 2770, 2771, 7, 32, 0, 0, 2771, 365, 1, 0, 0, 0, 353, 369, 376, 400, 413, 417, 421, 430, 435, 439, 445, 447, 452, 456, 460, 467, 472, 478, 482, 491, 498, 502, 507, 509, 514, 518, 525, 529, 534, 538, 542, 546, 554, 559, 563, 571, 575, 584, 587, 590, 596, 603, 614, 619, 624, 629, 634, 643, 646, 649, 653, 679, 705, 714, 724, 727, 741, 759, 761, 770, 781, 790, 797, 801, 808, 814, 817, 822, 829, 843, 856, 861, 866, 872, 908, 911, 917, 920, 926, 932, 944, 946, 957, 965, 970, 974, 979, 986, 990, 994, 1000, 1004, 1008, 1017, 1020, 1023, 1031, 1045, 1052, 1065, 1071, 1076, 1079, 1082, 1087, 1091, 1100, 1105, 1111, 1115, 1120, 1125, 1128, 1136, 1139, 1143, 1155, 1158, 1162, 1167, 1171, 1187, 1192, 1199, 1202, 1208, 1211, 1218, 1221, 1225, 1230, 1233, 1240, 1243, 1267, 1281, 1285, 1289, 1309, 1311, 1313, 1322, 1324, 1333, 1335, 1344, 1346, 1351, 1360, 1369, 1378, 1389, 1395, 1400, 1403, 1416, 1426, 1430, 1435, 1446, 1451, 1484, 1492, 1497, 1501, 1505, 1510, 1514, 1519, 1524, 1529, 1533, 1542, 1545, 1549, 1556, 1567, 1573, 1577, 1583, 1593, 1600, 1605, 1610, 1615, 1621, 1624, 1633, 1636, 1639, 1645, 1651, 1661, 1664, 1668, 1672, 1675, 1681, 1684, 1690, 1696, 1699, 1702, 1706, 1716, 1727, 1732, 1735, 1739, 1746, 1756, 1768, 1774, 1776, 1785, 1788, 1795, 1805, 1811, 1819, 1830, 1840, 1851, 1853, 1859, 1864, 1874, 1877, 1883, 1885, 1893, 1899, 1902, 1904, 1916, 1923, 1927, 1931, 1935, 1938, 1945, 1954, 1957, 1961, 1966, 1970, 1973, 1980, 1991, 1994, 1998, 2002, 2011, 2014, 2021, 2035, 2039, 2043, 2047, 2051, 2055, 2059, 2063, 2073, 2084, 2089, 2102, 2104, 2110, 2114, 2116, 2124, 2131, 2136, 2149, 2155, 2163, 2170, 2174, 2182, 2184, 2195, 2203, 2212, 2218, 2223, 2229, 2235, 2240, 2245, 2251, 2262, 2264, 2291, 2297, 2301, 2313, 2323, 2326, 2331, 2338, 2341, 2350, 2353, 2357, 2360, 2372, 2375, 2394, 2398, 2406, 2410, 2435, 2438, 2447, 2453, 2459, 2465, 2476, 2485, 2507, 2510, 2513, 2523, 2525, 2532, 2534, 2556, 2585, 2592, 2600, 2605, 2607, 2613, 2620, 2626, 2648, 2651, 2660, 2663, 2666, 2686, 2697, 2704, 2711, 2725, 2727, 2736, 2745, 2752, 2755, 2759, 2763, 2766] \ No newline at end of file +[4, 1, 289, 2771, 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, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 1, 0, 5, 0, 368, 8, 0, 10, 0, 12, 0, 371, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 377, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 401, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 414, 8, 4, 1, 5, 1, 5, 3, 5, 418, 8, 5, 1, 5, 1, 5, 3, 5, 422, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 429, 8, 5, 10, 5, 12, 5, 432, 9, 5, 1, 5, 1, 5, 3, 5, 436, 8, 5, 1, 5, 1, 5, 3, 5, 440, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 446, 8, 5, 3, 5, 448, 8, 5, 1, 5, 1, 5, 1, 5, 3, 5, 453, 8, 5, 1, 6, 1, 6, 3, 6, 457, 8, 6, 1, 6, 1, 6, 3, 6, 461, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 468, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 473, 8, 6, 1, 6, 1, 6, 1, 7, 1, 7, 3, 7, 479, 8, 7, 1, 7, 1, 7, 3, 7, 483, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 5, 7, 490, 8, 7, 10, 7, 12, 7, 493, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 499, 8, 7, 1, 7, 1, 7, 3, 7, 503, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 508, 8, 7, 3, 7, 510, 8, 7, 1, 7, 1, 7, 1, 7, 3, 7, 515, 8, 7, 1, 7, 1, 7, 3, 7, 519, 8, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 526, 8, 7, 1, 7, 1, 7, 3, 7, 530, 8, 7, 1, 8, 1, 8, 1, 8, 3, 8, 535, 8, 8, 1, 8, 1, 8, 3, 8, 539, 8, 8, 1, 8, 1, 8, 3, 8, 543, 8, 8, 1, 8, 1, 8, 3, 8, 547, 8, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 3, 9, 555, 8, 9, 1, 9, 1, 9, 1, 9, 3, 9, 560, 8, 9, 1, 9, 1, 9, 3, 9, 564, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 3, 11, 572, 8, 11, 1, 11, 1, 11, 3, 11, 576, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 5, 11, 583, 8, 11, 10, 11, 12, 11, 586, 9, 11, 3, 11, 588, 8, 11, 1, 11, 3, 11, 591, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 597, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 604, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 615, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 620, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 625, 8, 11, 1, 11, 1, 11, 1, 11, 3, 11, 630, 8, 11, 1, 12, 1, 12, 1, 12, 3, 12, 635, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 5, 12, 642, 8, 12, 10, 12, 12, 12, 645, 9, 12, 3, 12, 647, 8, 12, 1, 12, 3, 12, 650, 8, 12, 1, 12, 1, 12, 3, 12, 654, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 680, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 706, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 715, 8, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 3, 16, 725, 8, 16, 1, 16, 3, 16, 728, 8, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 742, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 760, 8, 20, 3, 20, 762, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 769, 8, 20, 10, 20, 12, 20, 772, 9, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 782, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 791, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 798, 8, 22, 1, 22, 1, 22, 3, 22, 802, 8, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 809, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 815, 8, 23, 1, 23, 3, 23, 818, 8, 23, 1, 23, 1, 23, 1, 23, 3, 23, 823, 8, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 830, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 844, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 857, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 862, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 867, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 873, 8, 27, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 3, 32, 909, 8, 32, 1, 32, 3, 32, 912, 8, 32, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 918, 8, 33, 1, 33, 3, 33, 921, 8, 33, 1, 33, 1, 33, 1, 34, 1, 34, 3, 34, 927, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 933, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 945, 8, 35, 3, 35, 947, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 958, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 966, 8, 37, 1, 38, 1, 38, 1, 38, 3, 38, 971, 8, 38, 1, 38, 1, 38, 3, 38, 975, 8, 38, 1, 39, 1, 39, 1, 39, 3, 39, 980, 8, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 3, 40, 987, 8, 40, 1, 40, 1, 40, 3, 40, 991, 8, 40, 1, 41, 1, 41, 3, 41, 995, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1001, 8, 41, 1, 42, 1, 42, 3, 42, 1005, 8, 42, 1, 42, 1, 42, 3, 42, 1009, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 5, 42, 1016, 8, 42, 10, 42, 12, 42, 1019, 9, 42, 3, 42, 1021, 8, 42, 1, 42, 3, 42, 1024, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 3, 44, 1032, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1046, 8, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 3, 47, 1053, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1066, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1072, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1077, 8, 49, 1, 49, 3, 49, 1080, 8, 49, 1, 50, 3, 50, 1083, 8, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1088, 8, 50, 1, 50, 1, 50, 3, 50, 1092, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1099, 8, 50, 10, 50, 12, 50, 1102, 9, 50, 1, 50, 1, 50, 3, 50, 1106, 8, 50, 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 1112, 8, 51, 1, 52, 1, 52, 3, 52, 1116, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1121, 8, 52, 1, 53, 1, 53, 1, 53, 3, 53, 1126, 8, 53, 1, 53, 3, 53, 1129, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1135, 8, 53, 10, 53, 12, 53, 1138, 9, 53, 3, 53, 1140, 8, 53, 1, 53, 1, 53, 3, 53, 1144, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1154, 8, 54, 10, 54, 12, 54, 1157, 9, 54, 3, 54, 1159, 8, 54, 1, 54, 1, 54, 3, 54, 1163, 8, 54, 1, 55, 1, 55, 1, 55, 3, 55, 1168, 8, 55, 1, 55, 1, 55, 3, 55, 1172, 8, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1188, 8, 56, 1, 57, 1, 57, 1, 57, 3, 57, 1193, 8, 57, 1, 57, 1, 57, 1, 57, 5, 57, 1198, 8, 57, 10, 57, 12, 57, 1201, 9, 57, 3, 57, 1203, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 1209, 8, 58, 1, 58, 3, 58, 1212, 8, 58, 1, 58, 1, 58, 1, 58, 5, 58, 1217, 8, 58, 10, 58, 12, 58, 1220, 9, 58, 3, 58, 1222, 8, 58, 1, 59, 1, 59, 3, 59, 1226, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 1231, 8, 59, 1, 59, 3, 59, 1234, 8, 59, 1, 59, 1, 59, 1, 59, 5, 59, 1239, 8, 59, 10, 59, 12, 59, 1242, 9, 59, 3, 59, 1244, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 3, 64, 1268, 8, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 1282, 8, 65, 1, 65, 1, 65, 3, 65, 1286, 8, 65, 1, 66, 1, 66, 3, 66, 1290, 8, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 1310, 8, 68, 3, 68, 1312, 8, 68, 3, 68, 1314, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 1323, 8, 69, 3, 69, 1325, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 1334, 8, 70, 3, 70, 1336, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 1345, 8, 71, 3, 71, 1347, 8, 71, 1, 72, 1, 72, 1, 72, 3, 72, 1352, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 1361, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 1370, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 1379, 8, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 1390, 8, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1396, 8, 78, 1, 78, 1, 78, 1, 78, 3, 78, 1401, 8, 78, 1, 78, 3, 78, 1404, 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1417, 8, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 1427, 8, 80, 1, 80, 1, 80, 3, 80, 1431, 8, 80, 1, 81, 1, 81, 1, 81, 3, 81, 1436, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 5, 82, 1445, 8, 82, 10, 82, 12, 82, 1448, 9, 82, 1, 82, 1, 82, 3, 82, 1452, 8, 82, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 5, 93, 1483, 8, 93, 10, 93, 12, 93, 1486, 9, 93, 1, 94, 1, 94, 1, 94, 5, 94, 1491, 8, 94, 10, 94, 12, 94, 1494, 9, 94, 1, 95, 1, 95, 3, 95, 1498, 8, 95, 1, 96, 1, 96, 3, 96, 1502, 8, 96, 1, 97, 1, 97, 3, 97, 1506, 8, 97, 1, 98, 1, 98, 1, 98, 3, 98, 1511, 8, 98, 1, 98, 1, 98, 3, 98, 1515, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1520, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1525, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1530, 8, 98, 1, 98, 1, 98, 3, 98, 1534, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 1543, 8, 98, 1, 98, 3, 98, 1546, 8, 98, 1, 98, 1, 98, 3, 98, 1550, 8, 98, 1, 99, 1, 99, 1, 99, 5, 99, 1555, 8, 99, 10, 99, 12, 99, 1558, 9, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1568, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 1574, 8, 101, 5, 101, 1576, 8, 101, 10, 101, 12, 101, 1579, 9, 101, 1, 101, 1, 101, 1, 102, 3, 102, 1584, 8, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 1592, 8, 103, 10, 103, 12, 103, 1595, 9, 103, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1601, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1606, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1611, 8, 104, 1, 104, 1, 104, 1, 104, 3, 104, 1616, 8, 104, 1, 104, 1, 104, 5, 104, 1620, 8, 104, 10, 104, 12, 104, 1623, 9, 104, 3, 104, 1625, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 1634, 8, 105, 1, 105, 3, 105, 1637, 8, 105, 1, 105, 3, 105, 1640, 8, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 1646, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 1652, 8, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 5, 109, 1660, 8, 109, 10, 109, 12, 109, 1663, 9, 109, 3, 109, 1665, 8, 109, 1, 109, 1, 109, 3, 109, 1669, 8, 109, 1, 109, 1, 109, 3, 109, 1673, 8, 109, 1, 110, 1, 110, 1, 110, 5, 110, 1678, 8, 110, 10, 110, 12, 110, 1681, 9, 110, 3, 110, 1683, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 1689, 8, 111, 1, 111, 1, 111, 5, 111, 1693, 8, 111, 10, 111, 12, 111, 1696, 9, 111, 3, 111, 1698, 8, 111, 1, 112, 3, 112, 1701, 8, 112, 1, 112, 1, 112, 3, 112, 1705, 8, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 3, 113, 1715, 8, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 5, 116, 1724, 8, 116, 10, 116, 12, 116, 1727, 9, 116, 1, 116, 1, 116, 3, 116, 1731, 8, 116, 1, 116, 3, 116, 1734, 8, 116, 1, 117, 1, 117, 3, 117, 1738, 8, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 3, 118, 1745, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 1753, 8, 118, 10, 118, 12, 118, 1756, 9, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1767, 8, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 1773, 8, 119, 3, 119, 1775, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 1784, 8, 120, 1, 120, 3, 120, 1787, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 1794, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 1804, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 1810, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 5, 124, 1816, 8, 124, 10, 124, 12, 124, 1819, 9, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 1827, 8, 125, 10, 125, 12, 125, 1830, 9, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 5, 126, 1837, 8, 126, 10, 126, 12, 126, 1840, 9, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 1850, 8, 127, 3, 127, 1852, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 3, 127, 1858, 8, 127, 1, 128, 1, 128, 1, 128, 3, 128, 1863, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 5, 129, 1871, 8, 129, 10, 129, 12, 129, 1874, 9, 129, 3, 129, 1876, 8, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 1882, 8, 129, 3, 129, 1884, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1892, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 1898, 8, 130, 1, 130, 5, 130, 1901, 8, 130, 10, 130, 12, 130, 1904, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 5, 131, 1913, 8, 131, 10, 131, 12, 131, 1916, 9, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 1922, 8, 131, 1, 132, 1, 132, 3, 132, 1926, 8, 132, 1, 132, 1, 132, 3, 132, 1930, 8, 132, 1, 133, 1, 133, 3, 133, 1934, 8, 133, 1, 133, 3, 133, 1937, 8, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1942, 8, 133, 10, 133, 12, 133, 1945, 9, 133, 1, 133, 1, 133, 1, 133, 1, 133, 5, 133, 1951, 8, 133, 10, 133, 12, 133, 1954, 9, 133, 3, 133, 1956, 8, 133, 1, 133, 1, 133, 3, 133, 1960, 8, 133, 1, 133, 1, 133, 1, 133, 3, 133, 1965, 8, 133, 1, 133, 1, 133, 3, 133, 1969, 8, 133, 1, 134, 3, 134, 1972, 8, 134, 1, 134, 1, 134, 1, 134, 5, 134, 1977, 8, 134, 10, 134, 12, 134, 1980, 9, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 5, 136, 1988, 8, 136, 10, 136, 12, 136, 1991, 9, 136, 3, 136, 1993, 8, 136, 1, 136, 1, 136, 3, 136, 1997, 8, 136, 1, 137, 1, 137, 3, 137, 2001, 8, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 139, 1, 139, 3, 139, 2010, 8, 139, 1, 139, 3, 139, 2013, 8, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 2020, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 2034, 8, 140, 5, 140, 2036, 8, 140, 10, 140, 12, 140, 2039, 9, 140, 1, 141, 3, 141, 2042, 8, 141, 1, 141, 1, 141, 3, 141, 2046, 8, 141, 1, 141, 1, 141, 3, 141, 2050, 8, 141, 1, 141, 1, 141, 3, 141, 2054, 8, 141, 1, 141, 1, 141, 3, 141, 2058, 8, 141, 1, 141, 1, 141, 3, 141, 2062, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 2072, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 2081, 8, 142, 10, 142, 12, 142, 2084, 9, 142, 1, 142, 1, 142, 3, 142, 2088, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 2101, 8, 143, 3, 143, 2103, 8, 143, 1, 144, 1, 144, 1, 145, 1, 145, 3, 145, 2109, 8, 145, 1, 145, 1, 145, 3, 145, 2113, 8, 145, 3, 145, 2115, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 5, 146, 2121, 8, 146, 10, 146, 12, 146, 2124, 9, 146, 1, 146, 1, 146, 1, 147, 1, 147, 3, 147, 2130, 8, 147, 1, 147, 1, 147, 1, 147, 3, 147, 2135, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 5, 149, 2146, 8, 149, 10, 149, 12, 149, 2149, 9, 149, 1, 149, 1, 149, 1, 149, 3, 149, 2154, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 3, 151, 2162, 8, 151, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 3, 153, 2169, 8, 153, 1, 153, 1, 153, 3, 153, 2173, 8, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 5, 153, 2181, 8, 153, 10, 153, 12, 153, 2184, 9, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2194, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2202, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 2209, 8, 154, 10, 154, 12, 154, 2212, 9, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2217, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2222, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2228, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2234, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2239, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 2244, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 2250, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 2261, 8, 155, 10, 155, 12, 155, 2264, 9, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2290, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2296, 8, 156, 5, 156, 2298, 8, 156, 10, 156, 12, 156, 2301, 9, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2310, 8, 156, 10, 156, 12, 156, 2313, 9, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2322, 8, 156, 1, 156, 3, 156, 2325, 8, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2330, 8, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2335, 8, 156, 10, 156, 12, 156, 2338, 9, 156, 3, 156, 2340, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2347, 8, 156, 10, 156, 12, 156, 2350, 9, 156, 3, 156, 2352, 8, 156, 1, 156, 1, 156, 3, 156, 2356, 8, 156, 1, 156, 3, 156, 2359, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2369, 8, 156, 10, 156, 12, 156, 2372, 9, 156, 3, 156, 2374, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 4, 156, 2391, 8, 156, 11, 156, 12, 156, 2392, 1, 156, 1, 156, 3, 156, 2397, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 4, 156, 2403, 8, 156, 11, 156, 12, 156, 2404, 1, 156, 1, 156, 3, 156, 2409, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2432, 8, 156, 10, 156, 12, 156, 2435, 9, 156, 3, 156, 2437, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2446, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2452, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2458, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2464, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2475, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 2484, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2504, 8, 156, 10, 156, 12, 156, 2507, 9, 156, 3, 156, 2509, 8, 156, 1, 156, 3, 156, 2512, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 5, 156, 2522, 8, 156, 10, 156, 12, 156, 2525, 9, 156, 1, 157, 1, 157, 1, 157, 1, 157, 3, 157, 2531, 8, 157, 3, 157, 2533, 8, 157, 1, 158, 1, 158, 1, 159, 1, 159, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 3, 161, 2555, 8, 161, 1, 162, 1, 162, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, 2582, 8, 164, 10, 164, 12, 164, 2585, 9, 164, 1, 164, 1, 164, 1, 164, 1, 164, 3, 164, 2591, 8, 164, 1, 164, 1, 164, 1, 164, 1, 164, 5, 164, 2597, 8, 164, 10, 164, 12, 164, 2600, 9, 164, 1, 164, 1, 164, 3, 164, 2604, 8, 164, 3, 164, 2606, 8, 164, 1, 164, 1, 164, 5, 164, 2610, 8, 164, 10, 164, 12, 164, 2613, 9, 164, 1, 165, 1, 165, 1, 166, 1, 166, 3, 166, 2619, 8, 166, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 2625, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 5, 170, 2645, 8, 170, 10, 170, 12, 170, 2648, 9, 170, 3, 170, 2650, 8, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 5, 170, 2657, 8, 170, 10, 170, 12, 170, 2660, 9, 170, 3, 170, 2662, 8, 170, 1, 170, 3, 170, 2665, 8, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 2685, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 2696, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 2703, 8, 173, 1, 174, 1, 174, 1, 174, 5, 174, 2708, 8, 174, 10, 174, 12, 174, 2711, 9, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 2724, 8, 175, 3, 175, 2726, 8, 175, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 5, 177, 2733, 8, 177, 10, 177, 12, 177, 2736, 9, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 3, 178, 2744, 8, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 3, 179, 2751, 8, 179, 1, 180, 3, 180, 2754, 8, 180, 1, 180, 1, 180, 3, 180, 2758, 8, 180, 1, 180, 1, 180, 3, 180, 2762, 8, 180, 1, 180, 3, 180, 2765, 8, 180, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 10, 770, 1446, 1621, 1661, 1679, 1694, 1725, 1754, 1828, 2299, 6, 260, 280, 306, 310, 312, 328, 183, 0, 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, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 0, 33, 2, 0, 46, 46, 170, 170, 2, 0, 166, 166, 204, 204, 2, 0, 176, 176, 202, 202, 2, 0, 69, 69, 80, 80, 2, 0, 27, 27, 159, 159, 2, 0, 103, 103, 144, 144, 2, 0, 47, 47, 171, 171, 2, 0, 3, 3, 12, 12, 3, 0, 87, 87, 166, 166, 204, 204, 2, 0, 178, 178, 209, 209, 1, 0, 245, 248, 2, 0, 147, 147, 219, 223, 2, 0, 65, 65, 95, 95, 2, 0, 64, 64, 200, 200, 2, 0, 10, 10, 55, 55, 2, 0, 75, 75, 112, 112, 2, 0, 2, 2, 57, 57, 2, 0, 14, 14, 185, 185, 3, 0, 106, 106, 115, 115, 164, 164, 2, 0, 105, 105, 163, 163, 4, 0, 70, 70, 133, 133, 194, 194, 208, 208, 1, 0, 255, 256, 1, 0, 257, 259, 1, 0, 249, 254, 3, 0, 2, 2, 6, 6, 181, 181, 2, 0, 70, 70, 194, 194, 5, 0, 48, 49, 91, 92, 122, 125, 172, 173, 217, 218, 1, 0, 127, 130, 2, 0, 8, 8, 227, 244, 2, 0, 77, 77, 149, 149, 4, 0, 46, 46, 178, 178, 188, 188, 209, 209, 16, 0, 28, 29, 40, 40, 43, 43, 48, 48, 68, 68, 91, 91, 114, 114, 122, 122, 124, 124, 158, 158, 165, 165, 172, 172, 184, 184, 196, 196, 204, 204, 217, 217, 23, 0, 14, 14, 43, 44, 48, 49, 65, 65, 68, 68, 91, 91, 95, 95, 110, 110, 119, 119, 122, 125, 127, 130, 137, 137, 140, 140, 152, 153, 172, 173, 180, 180, 184, 185, 195, 195, 204, 204, 213, 213, 217, 217, 220, 220, 231, 231, 3093, 0, 369, 1, 0, 0, 0, 2, 374, 1, 0, 0, 0, 4, 400, 1, 0, 0, 0, 6, 402, 1, 0, 0, 0, 8, 413, 1, 0, 0, 0, 10, 415, 1, 0, 0, 0, 12, 454, 1, 0, 0, 0, 14, 476, 1, 0, 0, 0, 16, 531, 1, 0, 0, 0, 18, 551, 1, 0, 0, 0, 20, 565, 1, 0, 0, 0, 22, 569, 1, 0, 0, 0, 24, 631, 1, 0, 0, 0, 26, 679, 1, 0, 0, 0, 28, 681, 1, 0, 0, 0, 30, 689, 1, 0, 0, 0, 32, 709, 1, 0, 0, 0, 34, 729, 1, 0, 0, 0, 36, 736, 1, 0, 0, 0, 38, 745, 1, 0, 0, 0, 40, 753, 1, 0, 0, 0, 42, 775, 1, 0, 0, 0, 44, 785, 1, 0, 0, 0, 46, 803, 1, 0, 0, 0, 48, 824, 1, 0, 0, 0, 50, 845, 1, 0, 0, 0, 52, 851, 1, 0, 0, 0, 54, 868, 1, 0, 0, 0, 56, 877, 1, 0, 0, 0, 58, 884, 1, 0, 0, 0, 60, 892, 1, 0, 0, 0, 62, 899, 1, 0, 0, 0, 64, 906, 1, 0, 0, 0, 66, 915, 1, 0, 0, 0, 68, 926, 1, 0, 0, 0, 70, 928, 1, 0, 0, 0, 72, 948, 1, 0, 0, 0, 74, 965, 1, 0, 0, 0, 76, 967, 1, 0, 0, 0, 78, 976, 1, 0, 0, 0, 80, 983, 1, 0, 0, 0, 82, 992, 1, 0, 0, 0, 84, 1002, 1, 0, 0, 0, 86, 1025, 1, 0, 0, 0, 88, 1031, 1, 0, 0, 0, 90, 1033, 1, 0, 0, 0, 92, 1040, 1, 0, 0, 0, 94, 1052, 1, 0, 0, 0, 96, 1054, 1, 0, 0, 0, 98, 1061, 1, 0, 0, 0, 100, 1082, 1, 0, 0, 0, 102, 1111, 1, 0, 0, 0, 104, 1113, 1, 0, 0, 0, 106, 1122, 1, 0, 0, 0, 108, 1145, 1, 0, 0, 0, 110, 1164, 1, 0, 0, 0, 112, 1187, 1, 0, 0, 0, 114, 1189, 1, 0, 0, 0, 116, 1204, 1, 0, 0, 0, 118, 1223, 1, 0, 0, 0, 120, 1245, 1, 0, 0, 0, 122, 1250, 1, 0, 0, 0, 124, 1255, 1, 0, 0, 0, 126, 1260, 1, 0, 0, 0, 128, 1265, 1, 0, 0, 0, 130, 1272, 1, 0, 0, 0, 132, 1287, 1, 0, 0, 0, 134, 1293, 1, 0, 0, 0, 136, 1313, 1, 0, 0, 0, 138, 1315, 1, 0, 0, 0, 140, 1326, 1, 0, 0, 0, 142, 1337, 1, 0, 0, 0, 144, 1351, 1, 0, 0, 0, 146, 1353, 1, 0, 0, 0, 148, 1362, 1, 0, 0, 0, 150, 1371, 1, 0, 0, 0, 152, 1380, 1, 0, 0, 0, 154, 1383, 1, 0, 0, 0, 156, 1391, 1, 0, 0, 0, 158, 1407, 1, 0, 0, 0, 160, 1411, 1, 0, 0, 0, 162, 1435, 1, 0, 0, 0, 164, 1437, 1, 0, 0, 0, 166, 1453, 1, 0, 0, 0, 168, 1456, 1, 0, 0, 0, 170, 1460, 1, 0, 0, 0, 172, 1463, 1, 0, 0, 0, 174, 1467, 1, 0, 0, 0, 176, 1469, 1, 0, 0, 0, 178, 1471, 1, 0, 0, 0, 180, 1473, 1, 0, 0, 0, 182, 1475, 1, 0, 0, 0, 184, 1477, 1, 0, 0, 0, 186, 1479, 1, 0, 0, 0, 188, 1487, 1, 0, 0, 0, 190, 1497, 1, 0, 0, 0, 192, 1501, 1, 0, 0, 0, 194, 1505, 1, 0, 0, 0, 196, 1510, 1, 0, 0, 0, 198, 1551, 1, 0, 0, 0, 200, 1559, 1, 0, 0, 0, 202, 1563, 1, 0, 0, 0, 204, 1583, 1, 0, 0, 0, 206, 1587, 1, 0, 0, 0, 208, 1596, 1, 0, 0, 0, 210, 1626, 1, 0, 0, 0, 212, 1641, 1, 0, 0, 0, 214, 1647, 1, 0, 0, 0, 216, 1653, 1, 0, 0, 0, 218, 1655, 1, 0, 0, 0, 220, 1674, 1, 0, 0, 0, 222, 1684, 1, 0, 0, 0, 224, 1704, 1, 0, 0, 0, 226, 1714, 1, 0, 0, 0, 228, 1716, 1, 0, 0, 0, 230, 1718, 1, 0, 0, 0, 232, 1733, 1, 0, 0, 0, 234, 1735, 1, 0, 0, 0, 236, 1742, 1, 0, 0, 0, 238, 1774, 1, 0, 0, 0, 240, 1786, 1, 0, 0, 0, 242, 1793, 1, 0, 0, 0, 244, 1803, 1, 0, 0, 0, 246, 1805, 1, 0, 0, 0, 248, 1811, 1, 0, 0, 0, 250, 1822, 1, 0, 0, 0, 252, 1833, 1, 0, 0, 0, 254, 1841, 1, 0, 0, 0, 256, 1859, 1, 0, 0, 0, 258, 1864, 1, 0, 0, 0, 260, 1885, 1, 0, 0, 0, 262, 1921, 1, 0, 0, 0, 264, 1923, 1, 0, 0, 0, 266, 1931, 1, 0, 0, 0, 268, 1971, 1, 0, 0, 0, 270, 1981, 1, 0, 0, 0, 272, 1996, 1, 0, 0, 0, 274, 1998, 1, 0, 0, 0, 276, 2005, 1, 0, 0, 0, 278, 2019, 1, 0, 0, 0, 280, 2021, 1, 0, 0, 0, 282, 2071, 1, 0, 0, 0, 284, 2087, 1, 0, 0, 0, 286, 2089, 1, 0, 0, 0, 288, 2104, 1, 0, 0, 0, 290, 2106, 1, 0, 0, 0, 292, 2116, 1, 0, 0, 0, 294, 2134, 1, 0, 0, 0, 296, 2136, 1, 0, 0, 0, 298, 2140, 1, 0, 0, 0, 300, 2155, 1, 0, 0, 0, 302, 2161, 1, 0, 0, 0, 304, 2163, 1, 0, 0, 0, 306, 2172, 1, 0, 0, 0, 308, 2243, 1, 0, 0, 0, 310, 2249, 1, 0, 0, 0, 312, 2511, 1, 0, 0, 0, 314, 2532, 1, 0, 0, 0, 316, 2534, 1, 0, 0, 0, 318, 2536, 1, 0, 0, 0, 320, 2538, 1, 0, 0, 0, 322, 2554, 1, 0, 0, 0, 324, 2556, 1, 0, 0, 0, 326, 2558, 1, 0, 0, 0, 328, 2605, 1, 0, 0, 0, 330, 2614, 1, 0, 0, 0, 332, 2618, 1, 0, 0, 0, 334, 2624, 1, 0, 0, 0, 336, 2626, 1, 0, 0, 0, 338, 2631, 1, 0, 0, 0, 340, 2637, 1, 0, 0, 0, 342, 2684, 1, 0, 0, 0, 344, 2695, 1, 0, 0, 0, 346, 2702, 1, 0, 0, 0, 348, 2704, 1, 0, 0, 0, 350, 2725, 1, 0, 0, 0, 352, 2727, 1, 0, 0, 0, 354, 2729, 1, 0, 0, 0, 356, 2743, 1, 0, 0, 0, 358, 2750, 1, 0, 0, 0, 360, 2764, 1, 0, 0, 0, 362, 2766, 1, 0, 0, 0, 364, 2768, 1, 0, 0, 0, 366, 368, 3, 2, 1, 0, 367, 366, 1, 0, 0, 0, 368, 371, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 372, 1, 0, 0, 0, 371, 369, 1, 0, 0, 0, 372, 373, 5, 0, 0, 1, 373, 1, 1, 0, 0, 0, 374, 376, 3, 4, 2, 0, 375, 377, 5, 262, 0, 0, 376, 375, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 3, 1, 0, 0, 0, 378, 401, 3, 204, 102, 0, 379, 401, 3, 6, 3, 0, 380, 401, 3, 8, 4, 0, 381, 401, 3, 26, 13, 0, 382, 401, 3, 64, 32, 0, 383, 401, 3, 66, 33, 0, 384, 401, 3, 68, 34, 0, 385, 401, 3, 74, 37, 0, 386, 401, 3, 88, 44, 0, 387, 401, 3, 94, 47, 0, 388, 401, 3, 100, 50, 0, 389, 401, 3, 102, 51, 0, 390, 401, 3, 108, 54, 0, 391, 401, 3, 110, 55, 0, 392, 401, 3, 112, 56, 0, 393, 401, 3, 144, 72, 0, 394, 401, 3, 152, 76, 0, 395, 401, 3, 154, 77, 0, 396, 401, 3, 156, 78, 0, 397, 401, 3, 158, 79, 0, 398, 401, 3, 160, 80, 0, 399, 401, 3, 162, 81, 0, 400, 378, 1, 0, 0, 0, 400, 379, 1, 0, 0, 0, 400, 380, 1, 0, 0, 0, 400, 381, 1, 0, 0, 0, 400, 382, 1, 0, 0, 0, 400, 383, 1, 0, 0, 0, 400, 384, 1, 0, 0, 0, 400, 385, 1, 0, 0, 0, 400, 386, 1, 0, 0, 0, 400, 387, 1, 0, 0, 0, 400, 388, 1, 0, 0, 0, 400, 389, 1, 0, 0, 0, 400, 390, 1, 0, 0, 0, 400, 391, 1, 0, 0, 0, 400, 392, 1, 0, 0, 0, 400, 393, 1, 0, 0, 0, 400, 394, 1, 0, 0, 0, 400, 395, 1, 0, 0, 0, 400, 396, 1, 0, 0, 0, 400, 397, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 5, 1, 0, 0, 0, 402, 403, 5, 203, 0, 0, 403, 404, 3, 184, 92, 0, 404, 7, 1, 0, 0, 0, 405, 414, 3, 18, 9, 0, 406, 414, 3, 20, 10, 0, 407, 414, 3, 22, 11, 0, 408, 414, 3, 24, 12, 0, 409, 414, 3, 16, 8, 0, 410, 414, 3, 14, 7, 0, 411, 414, 3, 12, 6, 0, 412, 414, 3, 10, 5, 0, 413, 405, 1, 0, 0, 0, 413, 406, 1, 0, 0, 0, 413, 407, 1, 0, 0, 0, 413, 408, 1, 0, 0, 0, 413, 409, 1, 0, 0, 0, 413, 410, 1, 0, 0, 0, 413, 411, 1, 0, 0, 0, 413, 412, 1, 0, 0, 0, 414, 9, 1, 0, 0, 0, 415, 417, 5, 37, 0, 0, 416, 418, 5, 19, 0, 0, 417, 416, 1, 0, 0, 0, 417, 418, 1, 0, 0, 0, 418, 419, 1, 0, 0, 0, 419, 421, 5, 188, 0, 0, 420, 422, 3, 172, 86, 0, 421, 420, 1, 0, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 439, 3, 174, 87, 0, 424, 425, 5, 265, 0, 0, 425, 430, 3, 214, 107, 0, 426, 427, 5, 263, 0, 0, 427, 429, 3, 214, 107, 0, 428, 426, 1, 0, 0, 0, 429, 432, 1, 0, 0, 0, 430, 428, 1, 0, 0, 0, 430, 431, 1, 0, 0, 0, 431, 435, 1, 0, 0, 0, 432, 430, 1, 0, 0, 0, 433, 434, 5, 263, 0, 0, 434, 436, 3, 208, 104, 0, 435, 433, 1, 0, 0, 0, 435, 436, 1, 0, 0, 0, 436, 437, 1, 0, 0, 0, 437, 438, 5, 266, 0, 0, 438, 440, 1, 0, 0, 0, 439, 424, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 447, 1, 0, 0, 0, 441, 442, 5, 17, 0, 0, 442, 445, 5, 26, 0, 0, 443, 446, 3, 292, 146, 0, 444, 446, 3, 250, 125, 0, 445, 443, 1, 0, 0, 0, 445, 444, 1, 0, 0, 0, 446, 448, 1, 0, 0, 0, 447, 441, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 452, 3, 196, 98, 0, 450, 451, 5, 9, 0, 0, 451, 453, 3, 204, 102, 0, 452, 450, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 11, 1, 0, 0, 0, 454, 456, 5, 37, 0, 0, 455, 457, 5, 19, 0, 0, 456, 455, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 460, 5, 188, 0, 0, 459, 461, 3, 172, 86, 0, 460, 459, 1, 0, 0, 0, 460, 461, 1, 0, 0, 0, 461, 462, 1, 0, 0, 0, 462, 463, 3, 174, 87, 0, 463, 467, 5, 115, 0, 0, 464, 468, 3, 186, 93, 0, 465, 466, 5, 147, 0, 0, 466, 468, 3, 314, 157, 0, 467, 464, 1, 0, 0, 0, 467, 465, 1, 0, 0, 0, 468, 472, 1, 0, 0, 0, 469, 470, 5, 17, 0, 0, 470, 471, 5, 26, 0, 0, 471, 473, 3, 250, 125, 0, 472, 469, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 3, 196, 98, 0, 475, 13, 1, 0, 0, 0, 476, 478, 5, 37, 0, 0, 477, 479, 5, 19, 0, 0, 478, 477, 1, 0, 0, 0, 478, 479, 1, 0, 0, 0, 479, 480, 1, 0, 0, 0, 480, 482, 5, 188, 0, 0, 481, 483, 3, 172, 86, 0, 482, 481, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 502, 3, 174, 87, 0, 485, 486, 5, 265, 0, 0, 486, 491, 3, 216, 108, 0, 487, 488, 5, 263, 0, 0, 488, 490, 3, 216, 108, 0, 489, 487, 1, 0, 0, 0, 490, 493, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 492, 498, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 494, 495, 5, 263, 0, 0, 495, 496, 5, 150, 0, 0, 496, 497, 5, 110, 0, 0, 497, 499, 3, 292, 146, 0, 498, 494, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 501, 5, 266, 0, 0, 501, 503, 1, 0, 0, 0, 502, 485, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 509, 1, 0, 0, 0, 504, 505, 5, 150, 0, 0, 505, 507, 5, 110, 0, 0, 506, 508, 3, 292, 146, 0, 507, 506, 1, 0, 0, 0, 507, 508, 1, 0, 0, 0, 508, 510, 1, 0, 0, 0, 509, 504, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 514, 1, 0, 0, 0, 511, 512, 5, 145, 0, 0, 512, 513, 5, 26, 0, 0, 513, 515, 3, 232, 116, 0, 514, 511, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 518, 1, 0, 0, 0, 516, 517, 5, 34, 0, 0, 517, 519, 3, 314, 157, 0, 518, 516, 1, 0, 0, 0, 518, 519, 1, 0, 0, 0, 519, 520, 1, 0, 0, 0, 520, 521, 5, 23, 0, 0, 521, 522, 5, 9, 0, 0, 522, 525, 5, 111, 0, 0, 523, 524, 5, 25, 0, 0, 524, 526, 3, 248, 124, 0, 525, 523, 1, 0, 0, 0, 525, 526, 1, 0, 0, 0, 526, 529, 1, 0, 0, 0, 527, 528, 5, 9, 0, 0, 528, 530, 3, 204, 102, 0, 529, 527, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 15, 1, 0, 0, 0, 531, 532, 5, 37, 0, 0, 532, 534, 5, 212, 0, 0, 533, 535, 3, 172, 86, 0, 534, 533, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 538, 3, 178, 89, 0, 537, 539, 3, 202, 101, 0, 538, 537, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 541, 5, 34, 0, 0, 541, 543, 3, 314, 157, 0, 542, 540, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 546, 1, 0, 0, 0, 544, 545, 5, 25, 0, 0, 545, 547, 3, 248, 124, 0, 546, 544, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 1, 0, 0, 0, 548, 549, 5, 9, 0, 0, 549, 550, 3, 204, 102, 0, 550, 17, 1, 0, 0, 0, 551, 552, 5, 37, 0, 0, 552, 554, 7, 0, 0, 0, 553, 555, 3, 172, 86, 0, 554, 553, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 1, 0, 0, 0, 556, 559, 3, 176, 88, 0, 557, 558, 5, 34, 0, 0, 558, 560, 3, 314, 157, 0, 559, 557, 1, 0, 0, 0, 559, 560, 1, 0, 0, 0, 560, 563, 1, 0, 0, 0, 561, 562, 5, 24, 0, 0, 562, 564, 3, 314, 157, 0, 563, 561, 1, 0, 0, 0, 563, 564, 1, 0, 0, 0, 564, 19, 1, 0, 0, 0, 565, 566, 5, 37, 0, 0, 566, 567, 5, 166, 0, 0, 567, 568, 3, 358, 179, 0, 568, 21, 1, 0, 0, 0, 569, 571, 5, 37, 0, 0, 570, 572, 5, 12, 0, 0, 571, 570, 1, 0, 0, 0, 571, 572, 1, 0, 0, 0, 572, 573, 1, 0, 0, 0, 573, 575, 5, 84, 0, 0, 574, 576, 3, 172, 86, 0, 575, 574, 1, 0, 0, 0, 575, 576, 1, 0, 0, 0, 576, 577, 1, 0, 0, 0, 577, 590, 3, 180, 90, 0, 578, 587, 5, 265, 0, 0, 579, 584, 3, 328, 164, 0, 580, 581, 5, 263, 0, 0, 581, 583, 3, 328, 164, 0, 582, 580, 1, 0, 0, 0, 583, 586, 1, 0, 0, 0, 584, 582, 1, 0, 0, 0, 584, 585, 1, 0, 0, 0, 585, 588, 1, 0, 0, 0, 586, 584, 1, 0, 0, 0, 587, 579, 1, 0, 0, 0, 587, 588, 1, 0, 0, 0, 588, 589, 1, 0, 0, 0, 589, 591, 5, 266, 0, 0, 590, 578, 1, 0, 0, 0, 590, 591, 1, 0, 0, 0, 591, 592, 1, 0, 0, 0, 592, 593, 5, 160, 0, 0, 593, 596, 3, 328, 164, 0, 594, 595, 5, 102, 0, 0, 595, 597, 3, 328, 164, 0, 596, 594, 1, 0, 0, 0, 596, 597, 1, 0, 0, 0, 597, 598, 1, 0, 0, 0, 598, 599, 5, 24, 0, 0, 599, 603, 5, 274, 0, 0, 600, 601, 5, 104, 0, 0, 601, 602, 5, 249, 0, 0, 602, 604, 5, 274, 0, 0, 603, 600, 1, 0, 0, 0, 603, 604, 1, 0, 0, 0, 604, 605, 1, 0, 0, 0, 605, 606, 5, 206, 0, 0, 606, 607, 5, 249, 0, 0, 607, 608, 5, 274, 0, 0, 608, 609, 5, 126, 0, 0, 609, 610, 5, 249, 0, 0, 610, 614, 5, 274, 0, 0, 611, 612, 5, 18, 0, 0, 612, 613, 5, 249, 0, 0, 613, 615, 5, 274, 0, 0, 614, 611, 1, 0, 0, 0, 614, 615, 1, 0, 0, 0, 615, 619, 1, 0, 0, 0, 616, 617, 5, 20, 0, 0, 617, 618, 5, 249, 0, 0, 618, 620, 5, 274, 0, 0, 619, 616, 1, 0, 0, 0, 619, 620, 1, 0, 0, 0, 620, 624, 1, 0, 0, 0, 621, 622, 5, 187, 0, 0, 622, 623, 5, 249, 0, 0, 623, 625, 5, 274, 0, 0, 624, 621, 1, 0, 0, 0, 624, 625, 1, 0, 0, 0, 625, 629, 1, 0, 0, 0, 626, 627, 5, 76, 0, 0, 627, 628, 5, 249, 0, 0, 628, 630, 5, 274, 0, 0, 629, 626, 1, 0, 0, 0, 629, 630, 1, 0, 0, 0, 630, 23, 1, 0, 0, 0, 631, 632, 5, 37, 0, 0, 632, 634, 5, 84, 0, 0, 633, 635, 3, 172, 86, 0, 634, 633, 1, 0, 0, 0, 634, 635, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 649, 3, 180, 90, 0, 637, 646, 5, 265, 0, 0, 638, 643, 3, 328, 164, 0, 639, 640, 5, 263, 0, 0, 640, 642, 3, 328, 164, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 638, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 650, 5, 266, 0, 0, 649, 637, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 653, 1, 0, 0, 0, 651, 652, 5, 160, 0, 0, 652, 654, 3, 328, 164, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 655, 1, 0, 0, 0, 655, 656, 5, 24, 0, 0, 656, 657, 5, 274, 0, 0, 657, 658, 5, 186, 0, 0, 658, 659, 5, 249, 0, 0, 659, 660, 3, 314, 157, 0, 660, 25, 1, 0, 0, 0, 661, 680, 3, 28, 14, 0, 662, 680, 3, 62, 31, 0, 663, 680, 3, 60, 30, 0, 664, 680, 3, 58, 29, 0, 665, 680, 3, 54, 27, 0, 666, 680, 3, 56, 28, 0, 667, 680, 3, 52, 26, 0, 668, 680, 3, 48, 24, 0, 669, 680, 3, 50, 25, 0, 670, 680, 3, 46, 23, 0, 671, 680, 3, 44, 22, 0, 672, 680, 3, 42, 21, 0, 673, 680, 3, 40, 20, 0, 674, 680, 3, 34, 17, 0, 675, 680, 3, 30, 15, 0, 676, 680, 3, 32, 16, 0, 677, 680, 3, 36, 18, 0, 678, 680, 3, 38, 19, 0, 679, 661, 1, 0, 0, 0, 679, 662, 1, 0, 0, 0, 679, 663, 1, 0, 0, 0, 679, 664, 1, 0, 0, 0, 679, 665, 1, 0, 0, 0, 679, 666, 1, 0, 0, 0, 679, 667, 1, 0, 0, 0, 679, 668, 1, 0, 0, 0, 679, 669, 1, 0, 0, 0, 679, 670, 1, 0, 0, 0, 679, 671, 1, 0, 0, 0, 679, 672, 1, 0, 0, 0, 679, 673, 1, 0, 0, 0, 679, 674, 1, 0, 0, 0, 679, 675, 1, 0, 0, 0, 679, 676, 1, 0, 0, 0, 679, 677, 1, 0, 0, 0, 679, 678, 1, 0, 0, 0, 680, 27, 1, 0, 0, 0, 681, 682, 5, 4, 0, 0, 682, 683, 5, 46, 0, 0, 683, 684, 3, 184, 92, 0, 684, 685, 5, 176, 0, 0, 685, 686, 5, 142, 0, 0, 686, 687, 7, 1, 0, 0, 687, 688, 3, 358, 179, 0, 688, 29, 1, 0, 0, 0, 689, 690, 5, 4, 0, 0, 690, 691, 5, 188, 0, 0, 691, 692, 3, 186, 93, 0, 692, 693, 5, 176, 0, 0, 693, 694, 5, 32, 0, 0, 694, 695, 5, 182, 0, 0, 695, 696, 3, 192, 96, 0, 696, 697, 5, 265, 0, 0, 697, 698, 3, 228, 114, 0, 698, 699, 5, 249, 0, 0, 699, 705, 3, 314, 157, 0, 700, 701, 5, 263, 0, 0, 701, 702, 3, 228, 114, 0, 702, 703, 5, 249, 0, 0, 703, 704, 3, 314, 157, 0, 704, 706, 1, 0, 0, 0, 705, 700, 1, 0, 0, 0, 705, 706, 1, 0, 0, 0, 706, 707, 1, 0, 0, 0, 707, 708, 5, 266, 0, 0, 708, 31, 1, 0, 0, 0, 709, 710, 5, 4, 0, 0, 710, 711, 5, 188, 0, 0, 711, 714, 3, 186, 93, 0, 712, 713, 5, 145, 0, 0, 713, 715, 3, 304, 152, 0, 714, 712, 1, 0, 0, 0, 714, 715, 1, 0, 0, 0, 715, 716, 1, 0, 0, 0, 716, 727, 5, 176, 0, 0, 717, 718, 5, 30, 0, 0, 718, 719, 5, 94, 0, 0, 719, 724, 3, 314, 157, 0, 720, 721, 5, 216, 0, 0, 721, 722, 5, 151, 0, 0, 722, 723, 5, 249, 0, 0, 723, 725, 3, 360, 180, 0, 724, 720, 1, 0, 0, 0, 724, 725, 1, 0, 0, 0, 725, 728, 1, 0, 0, 0, 726, 728, 5, 197, 0, 0, 727, 717, 1, 0, 0, 0, 727, 726, 1, 0, 0, 0, 728, 33, 1, 0, 0, 0, 729, 730, 5, 4, 0, 0, 730, 731, 5, 188, 0, 0, 731, 732, 3, 186, 93, 0, 732, 733, 5, 31, 0, 0, 733, 734, 3, 192, 96, 0, 734, 735, 3, 220, 110, 0, 735, 35, 1, 0, 0, 0, 736, 737, 5, 4, 0, 0, 737, 738, 5, 188, 0, 0, 738, 739, 3, 186, 93, 0, 739, 741, 5, 58, 0, 0, 740, 742, 5, 32, 0, 0, 741, 740, 1, 0, 0, 0, 741, 742, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 3, 192, 96, 0, 744, 37, 1, 0, 0, 0, 745, 746, 5, 4, 0, 0, 746, 747, 5, 188, 0, 0, 747, 748, 3, 186, 93, 0, 748, 749, 5, 176, 0, 0, 749, 750, 5, 142, 0, 0, 750, 751, 7, 1, 0, 0, 751, 752, 3, 358, 179, 0, 752, 39, 1, 0, 0, 0, 753, 754, 5, 4, 0, 0, 754, 755, 5, 188, 0, 0, 755, 761, 3, 186, 93, 0, 756, 762, 5, 158, 0, 0, 757, 759, 5, 1, 0, 0, 758, 760, 3, 172, 86, 0, 759, 758, 1, 0, 0, 0, 759, 760, 1, 0, 0, 0, 760, 762, 1, 0, 0, 0, 761, 756, 1, 0, 0, 0, 761, 757, 1, 0, 0, 0, 762, 763, 1, 0, 0, 0, 763, 764, 5, 33, 0, 0, 764, 765, 5, 265, 0, 0, 765, 770, 3, 220, 110, 0, 766, 767, 5, 263, 0, 0, 767, 769, 3, 220, 110, 0, 768, 766, 1, 0, 0, 0, 769, 772, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 770, 768, 1, 0, 0, 0, 771, 773, 1, 0, 0, 0, 772, 770, 1, 0, 0, 0, 773, 774, 5, 266, 0, 0, 774, 41, 1, 0, 0, 0, 775, 776, 5, 4, 0, 0, 776, 777, 5, 188, 0, 0, 777, 778, 3, 186, 93, 0, 778, 779, 5, 1, 0, 0, 779, 781, 5, 32, 0, 0, 780, 782, 3, 172, 86, 0, 781, 780, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 784, 3, 222, 111, 0, 784, 43, 1, 0, 0, 0, 785, 786, 5, 4, 0, 0, 786, 787, 5, 188, 0, 0, 787, 788, 3, 186, 93, 0, 788, 790, 5, 4, 0, 0, 789, 791, 5, 32, 0, 0, 790, 789, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 801, 3, 192, 96, 0, 793, 797, 5, 176, 0, 0, 794, 798, 3, 226, 113, 0, 795, 796, 5, 34, 0, 0, 796, 798, 3, 314, 157, 0, 797, 794, 1, 0, 0, 0, 797, 795, 1, 0, 0, 0, 798, 802, 1, 0, 0, 0, 799, 800, 5, 58, 0, 0, 800, 802, 5, 51, 0, 0, 801, 793, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 802, 45, 1, 0, 0, 0, 803, 804, 5, 4, 0, 0, 804, 805, 5, 188, 0, 0, 805, 806, 3, 186, 93, 0, 806, 808, 5, 1, 0, 0, 807, 809, 3, 172, 86, 0, 808, 807, 1, 0, 0, 0, 808, 809, 1, 0, 0, 0, 809, 822, 1, 0, 0, 0, 810, 811, 5, 145, 0, 0, 811, 814, 3, 304, 152, 0, 812, 813, 5, 24, 0, 0, 813, 815, 3, 314, 157, 0, 814, 812, 1, 0, 0, 0, 814, 815, 1, 0, 0, 0, 815, 817, 1, 0, 0, 0, 816, 818, 3, 240, 120, 0, 817, 816, 1, 0, 0, 0, 817, 818, 1, 0, 0, 0, 818, 823, 1, 0, 0, 0, 819, 820, 5, 154, 0, 0, 820, 821, 5, 145, 0, 0, 821, 823, 3, 238, 119, 0, 822, 810, 1, 0, 0, 0, 822, 819, 1, 0, 0, 0, 823, 47, 1, 0, 0, 0, 824, 825, 5, 4, 0, 0, 825, 826, 5, 188, 0, 0, 826, 829, 3, 186, 93, 0, 827, 828, 5, 145, 0, 0, 828, 830, 3, 304, 152, 0, 829, 827, 1, 0, 0, 0, 829, 830, 1, 0, 0, 0, 830, 831, 1, 0, 0, 0, 831, 843, 5, 176, 0, 0, 832, 833, 5, 72, 0, 0, 833, 844, 3, 230, 115, 0, 834, 835, 5, 168, 0, 0, 835, 836, 5, 79, 0, 0, 836, 844, 3, 254, 127, 0, 837, 838, 5, 24, 0, 0, 838, 844, 3, 314, 157, 0, 839, 840, 5, 25, 0, 0, 840, 844, 3, 248, 124, 0, 841, 842, 5, 175, 0, 0, 842, 844, 3, 248, 124, 0, 843, 832, 1, 0, 0, 0, 843, 834, 1, 0, 0, 0, 843, 837, 1, 0, 0, 0, 843, 839, 1, 0, 0, 0, 843, 841, 1, 0, 0, 0, 844, 49, 1, 0, 0, 0, 845, 846, 5, 4, 0, 0, 846, 847, 5, 188, 0, 0, 847, 848, 3, 186, 93, 0, 848, 849, 5, 155, 0, 0, 849, 850, 5, 146, 0, 0, 850, 51, 1, 0, 0, 0, 851, 852, 5, 4, 0, 0, 852, 853, 5, 188, 0, 0, 853, 854, 3, 186, 93, 0, 854, 856, 5, 58, 0, 0, 855, 857, 3, 170, 85, 0, 856, 855, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 866, 1, 0, 0, 0, 858, 859, 5, 145, 0, 0, 859, 861, 3, 304, 152, 0, 860, 862, 5, 22, 0, 0, 861, 860, 1, 0, 0, 0, 861, 862, 1, 0, 0, 0, 862, 867, 1, 0, 0, 0, 863, 864, 5, 154, 0, 0, 864, 865, 5, 145, 0, 0, 865, 867, 3, 238, 119, 0, 866, 858, 1, 0, 0, 0, 866, 863, 1, 0, 0, 0, 867, 53, 1, 0, 0, 0, 868, 869, 5, 4, 0, 0, 869, 870, 5, 212, 0, 0, 870, 872, 3, 188, 94, 0, 871, 873, 3, 202, 101, 0, 872, 871, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 874, 1, 0, 0, 0, 874, 875, 5, 9, 0, 0, 875, 876, 3, 204, 102, 0, 876, 55, 1, 0, 0, 0, 877, 878, 5, 4, 0, 0, 878, 879, 5, 212, 0, 0, 879, 880, 3, 188, 94, 0, 880, 881, 5, 156, 0, 0, 881, 882, 5, 193, 0, 0, 882, 883, 3, 188, 94, 0, 883, 57, 1, 0, 0, 0, 884, 885, 5, 4, 0, 0, 885, 886, 5, 212, 0, 0, 886, 887, 3, 188, 94, 0, 887, 888, 5, 176, 0, 0, 888, 889, 5, 142, 0, 0, 889, 890, 7, 1, 0, 0, 890, 891, 3, 354, 177, 0, 891, 59, 1, 0, 0, 0, 892, 893, 5, 4, 0, 0, 893, 894, 5, 188, 0, 0, 894, 895, 3, 186, 93, 0, 895, 896, 5, 156, 0, 0, 896, 897, 5, 193, 0, 0, 897, 898, 3, 186, 93, 0, 898, 61, 1, 0, 0, 0, 899, 900, 5, 4, 0, 0, 900, 901, 5, 212, 0, 0, 901, 902, 3, 188, 94, 0, 902, 903, 7, 2, 0, 0, 903, 904, 5, 25, 0, 0, 904, 905, 3, 248, 124, 0, 905, 63, 1, 0, 0, 0, 906, 908, 5, 196, 0, 0, 907, 909, 5, 188, 0, 0, 908, 907, 1, 0, 0, 0, 908, 909, 1, 0, 0, 0, 909, 911, 1, 0, 0, 0, 910, 912, 3, 170, 85, 0, 911, 910, 1, 0, 0, 0, 911, 912, 1, 0, 0, 0, 912, 913, 1, 0, 0, 0, 913, 914, 3, 186, 93, 0, 914, 65, 1, 0, 0, 0, 915, 917, 5, 56, 0, 0, 916, 918, 5, 46, 0, 0, 917, 916, 1, 0, 0, 0, 917, 918, 1, 0, 0, 0, 918, 920, 1, 0, 0, 0, 919, 921, 7, 3, 0, 0, 920, 919, 1, 0, 0, 0, 920, 921, 1, 0, 0, 0, 921, 922, 1, 0, 0, 0, 922, 923, 3, 354, 177, 0, 923, 67, 1, 0, 0, 0, 924, 927, 3, 70, 35, 0, 925, 927, 3, 72, 36, 0, 926, 924, 1, 0, 0, 0, 926, 925, 1, 0, 0, 0, 927, 69, 1, 0, 0, 0, 928, 929, 5, 36, 0, 0, 929, 930, 5, 182, 0, 0, 930, 932, 3, 186, 93, 0, 931, 933, 3, 292, 146, 0, 932, 931, 1, 0, 0, 0, 932, 933, 1, 0, 0, 0, 933, 946, 1, 0, 0, 0, 934, 935, 5, 190, 0, 0, 935, 936, 5, 185, 0, 0, 936, 937, 5, 265, 0, 0, 937, 938, 3, 360, 180, 0, 938, 944, 5, 266, 0, 0, 939, 940, 5, 157, 0, 0, 940, 941, 5, 265, 0, 0, 941, 942, 3, 360, 180, 0, 942, 943, 5, 266, 0, 0, 943, 945, 1, 0, 0, 0, 944, 939, 1, 0, 0, 0, 944, 945, 1, 0, 0, 0, 945, 947, 1, 0, 0, 0, 946, 934, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 71, 1, 0, 0, 0, 948, 949, 5, 36, 0, 0, 949, 950, 5, 96, 0, 0, 950, 951, 5, 182, 0, 0, 951, 957, 3, 186, 93, 0, 952, 953, 5, 145, 0, 0, 953, 954, 5, 265, 0, 0, 954, 955, 3, 304, 152, 0, 955, 956, 5, 266, 0, 0, 956, 958, 1, 0, 0, 0, 957, 952, 1, 0, 0, 0, 957, 958, 1, 0, 0, 0, 958, 73, 1, 0, 0, 0, 959, 966, 3, 86, 43, 0, 960, 966, 3, 84, 42, 0, 961, 966, 3, 82, 41, 0, 962, 966, 3, 78, 39, 0, 963, 966, 3, 80, 40, 0, 964, 966, 3, 76, 38, 0, 965, 959, 1, 0, 0, 0, 965, 960, 1, 0, 0, 0, 965, 961, 1, 0, 0, 0, 965, 962, 1, 0, 0, 0, 965, 963, 1, 0, 0, 0, 965, 964, 1, 0, 0, 0, 966, 75, 1, 0, 0, 0, 967, 968, 5, 58, 0, 0, 968, 970, 7, 0, 0, 0, 969, 971, 3, 170, 85, 0, 970, 969, 1, 0, 0, 0, 970, 971, 1, 0, 0, 0, 971, 972, 1, 0, 0, 0, 972, 974, 3, 184, 92, 0, 973, 975, 7, 4, 0, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 77, 1, 0, 0, 0, 976, 977, 5, 58, 0, 0, 977, 979, 5, 212, 0, 0, 978, 980, 3, 170, 85, 0, 979, 978, 1, 0, 0, 0, 979, 980, 1, 0, 0, 0, 980, 981, 1, 0, 0, 0, 981, 982, 3, 188, 94, 0, 982, 79, 1, 0, 0, 0, 983, 984, 5, 58, 0, 0, 984, 986, 5, 188, 0, 0, 985, 987, 3, 170, 85, 0, 986, 985, 1, 0, 0, 0, 986, 987, 1, 0, 0, 0, 987, 988, 1, 0, 0, 0, 988, 990, 3, 186, 93, 0, 989, 991, 5, 22, 0, 0, 990, 989, 1, 0, 0, 0, 990, 991, 1, 0, 0, 0, 991, 81, 1, 0, 0, 0, 992, 994, 5, 58, 0, 0, 993, 995, 5, 96, 0, 0, 994, 993, 1, 0, 0, 0, 994, 995, 1, 0, 0, 0, 995, 996, 1, 0, 0, 0, 996, 997, 5, 182, 0, 0, 997, 1000, 3, 186, 93, 0, 998, 999, 5, 145, 0, 0, 999, 1001, 3, 304, 152, 0, 1000, 998, 1, 0, 0, 0, 1000, 1001, 1, 0, 0, 0, 1001, 83, 1, 0, 0, 0, 1002, 1004, 5, 58, 0, 0, 1003, 1005, 5, 12, 0, 0, 1004, 1003, 1, 0, 0, 0, 1004, 1005, 1, 0, 0, 0, 1005, 1006, 1, 0, 0, 0, 1006, 1008, 5, 84, 0, 0, 1007, 1009, 3, 170, 85, 0, 1008, 1007, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1010, 1, 0, 0, 0, 1010, 1023, 3, 190, 95, 0, 1011, 1020, 5, 265, 0, 0, 1012, 1017, 3, 328, 164, 0, 1013, 1014, 5, 263, 0, 0, 1014, 1016, 3, 328, 164, 0, 1015, 1013, 1, 0, 0, 0, 1016, 1019, 1, 0, 0, 0, 1017, 1015, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1021, 1, 0, 0, 0, 1019, 1017, 1, 0, 0, 0, 1020, 1012, 1, 0, 0, 0, 1020, 1021, 1, 0, 0, 0, 1021, 1022, 1, 0, 0, 0, 1022, 1024, 5, 266, 0, 0, 1023, 1011, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 85, 1, 0, 0, 0, 1025, 1026, 5, 58, 0, 0, 1026, 1027, 5, 166, 0, 0, 1027, 1028, 3, 358, 179, 0, 1028, 87, 1, 0, 0, 0, 1029, 1032, 3, 90, 45, 0, 1030, 1032, 3, 92, 46, 0, 1031, 1029, 1, 0, 0, 0, 1031, 1030, 1, 0, 0, 0, 1032, 89, 1, 0, 0, 0, 1033, 1034, 5, 86, 0, 0, 1034, 1035, 5, 166, 0, 0, 1035, 1036, 3, 358, 179, 0, 1036, 1037, 5, 193, 0, 0, 1037, 1038, 5, 87, 0, 0, 1038, 1039, 3, 358, 179, 0, 1039, 91, 1, 0, 0, 0, 1040, 1041, 5, 86, 0, 0, 1041, 1042, 3, 350, 175, 0, 1042, 1043, 5, 136, 0, 0, 1043, 1045, 3, 352, 176, 0, 1044, 1046, 3, 354, 177, 0, 1045, 1044, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1048, 5, 193, 0, 0, 1048, 1049, 3, 356, 178, 0, 1049, 93, 1, 0, 0, 0, 1050, 1053, 3, 96, 48, 0, 1051, 1053, 3, 98, 49, 0, 1052, 1050, 1, 0, 0, 0, 1052, 1051, 1, 0, 0, 0, 1053, 95, 1, 0, 0, 0, 1054, 1055, 5, 161, 0, 0, 1055, 1056, 5, 166, 0, 0, 1056, 1057, 3, 358, 179, 0, 1057, 1058, 5, 82, 0, 0, 1058, 1059, 5, 87, 0, 0, 1059, 1060, 3, 358, 179, 0, 1060, 97, 1, 0, 0, 0, 1061, 1065, 5, 161, 0, 0, 1062, 1063, 5, 86, 0, 0, 1063, 1064, 5, 137, 0, 0, 1064, 1066, 5, 78, 0, 0, 1065, 1062, 1, 0, 0, 0, 1065, 1066, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 3, 350, 175, 0, 1068, 1069, 5, 136, 0, 0, 1069, 1071, 3, 352, 176, 0, 1070, 1072, 3, 354, 177, 0, 1071, 1070, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 1073, 1, 0, 0, 0, 1073, 1079, 5, 82, 0, 0, 1074, 1080, 3, 356, 178, 0, 1075, 1077, 5, 166, 0, 0, 1076, 1075, 1, 0, 0, 0, 1076, 1077, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 1080, 3, 358, 179, 0, 1079, 1074, 1, 0, 0, 0, 1079, 1076, 1, 0, 0, 0, 1080, 99, 1, 0, 0, 0, 1081, 1083, 3, 206, 103, 0, 1082, 1081, 1, 0, 0, 0, 1082, 1083, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1085, 5, 99, 0, 0, 1085, 1087, 7, 5, 0, 0, 1086, 1088, 5, 188, 0, 0, 1087, 1086, 1, 0, 0, 0, 1087, 1088, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 1091, 3, 186, 93, 0, 1090, 1092, 3, 292, 146, 0, 1091, 1090, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1105, 1, 0, 0, 0, 1093, 1094, 5, 145, 0, 0, 1094, 1095, 5, 265, 0, 0, 1095, 1100, 3, 304, 152, 0, 1096, 1097, 5, 263, 0, 0, 1097, 1099, 3, 304, 152, 0, 1098, 1096, 1, 0, 0, 0, 1099, 1102, 1, 0, 0, 0, 1100, 1098, 1, 0, 0, 0, 1100, 1101, 1, 0, 0, 0, 1101, 1103, 1, 0, 0, 0, 1102, 1100, 1, 0, 0, 0, 1103, 1104, 5, 266, 0, 0, 1104, 1106, 1, 0, 0, 0, 1105, 1093, 1, 0, 0, 0, 1105, 1106, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1108, 3, 204, 102, 0, 1108, 101, 1, 0, 0, 0, 1109, 1112, 3, 104, 52, 0, 1110, 1112, 3, 106, 53, 0, 1111, 1109, 1, 0, 0, 0, 1111, 1110, 1, 0, 0, 0, 1112, 103, 1, 0, 0, 0, 1113, 1115, 5, 50, 0, 0, 1114, 1116, 5, 82, 0, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1120, 3, 186, 93, 0, 1118, 1119, 5, 215, 0, 0, 1119, 1121, 3, 306, 153, 0, 1120, 1118, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 105, 1, 0, 0, 0, 1122, 1123, 5, 50, 0, 0, 1123, 1128, 3, 186, 93, 0, 1124, 1126, 5, 9, 0, 0, 1125, 1124, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 1129, 3, 358, 179, 0, 1128, 1125, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1139, 5, 82, 0, 0, 1131, 1136, 3, 280, 140, 0, 1132, 1133, 5, 263, 0, 0, 1133, 1135, 3, 280, 140, 0, 1134, 1132, 1, 0, 0, 0, 1135, 1138, 1, 0, 0, 0, 1136, 1134, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1140, 1, 0, 0, 0, 1138, 1136, 1, 0, 0, 0, 1139, 1131, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1143, 1, 0, 0, 0, 1141, 1142, 5, 215, 0, 0, 1142, 1144, 3, 306, 153, 0, 1143, 1141, 1, 0, 0, 0, 1143, 1144, 1, 0, 0, 0, 1144, 107, 1, 0, 0, 0, 1145, 1146, 5, 54, 0, 0, 1146, 1147, 3, 186, 93, 0, 1147, 1148, 5, 176, 0, 0, 1148, 1158, 3, 198, 99, 0, 1149, 1150, 5, 82, 0, 0, 1150, 1155, 3, 280, 140, 0, 1151, 1152, 5, 263, 0, 0, 1152, 1154, 3, 280, 140, 0, 1153, 1151, 1, 0, 0, 0, 1154, 1157, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1158, 1149, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1162, 1, 0, 0, 0, 1160, 1161, 5, 215, 0, 0, 1161, 1163, 3, 306, 153, 0, 1162, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 109, 1, 0, 0, 0, 1164, 1165, 5, 207, 0, 0, 1165, 1167, 5, 103, 0, 0, 1166, 1168, 5, 188, 0, 0, 1167, 1166, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1169, 1, 0, 0, 0, 1169, 1171, 3, 186, 93, 0, 1170, 1172, 3, 292, 146, 0, 1171, 1170, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1174, 3, 204, 102, 0, 1174, 111, 1, 0, 0, 0, 1175, 1188, 3, 132, 66, 0, 1176, 1188, 3, 134, 67, 0, 1177, 1188, 3, 136, 68, 0, 1178, 1188, 3, 130, 65, 0, 1179, 1188, 3, 128, 64, 0, 1180, 1188, 3, 126, 63, 0, 1181, 1188, 3, 124, 62, 0, 1182, 1188, 3, 122, 61, 0, 1183, 1188, 3, 120, 60, 0, 1184, 1188, 3, 118, 59, 0, 1185, 1188, 3, 116, 58, 0, 1186, 1188, 3, 114, 57, 0, 1187, 1175, 1, 0, 0, 0, 1187, 1176, 1, 0, 0, 0, 1187, 1177, 1, 0, 0, 0, 1187, 1178, 1, 0, 0, 0, 1187, 1179, 1, 0, 0, 0, 1187, 1180, 1, 0, 0, 0, 1187, 1181, 1, 0, 0, 0, 1187, 1182, 1, 0, 0, 0, 1187, 1183, 1, 0, 0, 0, 1187, 1184, 1, 0, 0, 0, 1187, 1185, 1, 0, 0, 0, 1187, 1186, 1, 0, 0, 0, 1188, 113, 1, 0, 0, 0, 1189, 1190, 5, 179, 0, 0, 1190, 1202, 7, 6, 0, 0, 1191, 1193, 5, 115, 0, 0, 1192, 1191, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1194, 1, 0, 0, 0, 1194, 1199, 3, 314, 157, 0, 1195, 1196, 5, 271, 0, 0, 1196, 1198, 3, 314, 157, 0, 1197, 1195, 1, 0, 0, 0, 1198, 1201, 1, 0, 0, 0, 1199, 1197, 1, 0, 0, 0, 1199, 1200, 1, 0, 0, 0, 1200, 1203, 1, 0, 0, 0, 1201, 1199, 1, 0, 0, 0, 1202, 1192, 1, 0, 0, 0, 1202, 1203, 1, 0, 0, 0, 1203, 115, 1, 0, 0, 0, 1204, 1205, 5, 179, 0, 0, 1205, 1208, 5, 189, 0, 0, 1206, 1207, 5, 94, 0, 0, 1207, 1209, 3, 186, 93, 0, 1208, 1206, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1221, 1, 0, 0, 0, 1210, 1212, 5, 115, 0, 0, 1211, 1210, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1218, 3, 314, 157, 0, 1214, 1215, 5, 271, 0, 0, 1215, 1217, 3, 314, 157, 0, 1216, 1214, 1, 0, 0, 0, 1217, 1220, 1, 0, 0, 0, 1218, 1216, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1222, 1, 0, 0, 0, 1220, 1218, 1, 0, 0, 0, 1221, 1211, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 117, 1, 0, 0, 0, 1223, 1225, 5, 179, 0, 0, 1224, 1226, 7, 7, 0, 0, 1225, 1224, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1230, 5, 85, 0, 0, 1228, 1229, 5, 94, 0, 0, 1229, 1231, 3, 184, 92, 0, 1230, 1228, 1, 0, 0, 0, 1230, 1231, 1, 0, 0, 0, 1231, 1243, 1, 0, 0, 0, 1232, 1234, 5, 115, 0, 0, 1233, 1232, 1, 0, 0, 0, 1233, 1234, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1240, 3, 314, 157, 0, 1236, 1237, 5, 271, 0, 0, 1237, 1239, 3, 314, 157, 0, 1238, 1236, 1, 0, 0, 0, 1239, 1242, 1, 0, 0, 0, 1240, 1238, 1, 0, 0, 0, 1240, 1241, 1, 0, 0, 0, 1241, 1244, 1, 0, 0, 0, 1242, 1240, 1, 0, 0, 0, 1243, 1233, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 119, 1, 0, 0, 0, 1245, 1246, 5, 179, 0, 0, 1246, 1247, 5, 37, 0, 0, 1247, 1248, 5, 188, 0, 0, 1248, 1249, 3, 186, 93, 0, 1249, 121, 1, 0, 0, 0, 1250, 1251, 5, 179, 0, 0, 1251, 1252, 5, 37, 0, 0, 1252, 1253, 5, 212, 0, 0, 1253, 1254, 3, 188, 94, 0, 1254, 123, 1, 0, 0, 0, 1255, 1256, 5, 179, 0, 0, 1256, 1257, 5, 188, 0, 0, 1257, 1258, 5, 182, 0, 0, 1258, 1259, 3, 186, 93, 0, 1259, 125, 1, 0, 0, 0, 1260, 1261, 5, 179, 0, 0, 1261, 1262, 5, 32, 0, 0, 1262, 1263, 5, 182, 0, 0, 1263, 1264, 3, 186, 93, 0, 1264, 127, 1, 0, 0, 0, 1265, 1267, 5, 179, 0, 0, 1266, 1268, 5, 154, 0, 0, 1267, 1266, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1270, 5, 146, 0, 0, 1270, 1271, 3, 186, 93, 0, 1271, 129, 1, 0, 0, 0, 1272, 1273, 5, 179, 0, 0, 1273, 1274, 5, 73, 0, 0, 1274, 1275, 5, 94, 0, 0, 1275, 1285, 3, 186, 93, 0, 1276, 1277, 5, 145, 0, 0, 1277, 1278, 5, 265, 0, 0, 1278, 1281, 3, 304, 152, 0, 1279, 1280, 5, 263, 0, 0, 1280, 1282, 3, 304, 152, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1284, 5, 266, 0, 0, 1284, 1286, 1, 0, 0, 0, 1285, 1276, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 131, 1, 0, 0, 0, 1287, 1289, 5, 179, 0, 0, 1288, 1290, 5, 39, 0, 0, 1289, 1288, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1292, 5, 167, 0, 0, 1292, 133, 1, 0, 0, 0, 1293, 1294, 5, 179, 0, 0, 1294, 1295, 5, 166, 0, 0, 1295, 1296, 5, 86, 0, 0, 1296, 1297, 5, 87, 0, 0, 1297, 1298, 3, 358, 179, 0, 1298, 135, 1, 0, 0, 0, 1299, 1314, 3, 138, 69, 0, 1300, 1314, 3, 140, 70, 0, 1301, 1314, 3, 142, 71, 0, 1302, 1303, 5, 179, 0, 0, 1303, 1304, 5, 86, 0, 0, 1304, 1305, 7, 8, 0, 0, 1305, 1311, 3, 358, 179, 0, 1306, 1307, 5, 136, 0, 0, 1307, 1309, 7, 9, 0, 0, 1308, 1310, 3, 354, 177, 0, 1309, 1308, 1, 0, 0, 0, 1309, 1310, 1, 0, 0, 0, 1310, 1312, 1, 0, 0, 0, 1311, 1306, 1, 0, 0, 0, 1311, 1312, 1, 0, 0, 0, 1312, 1314, 1, 0, 0, 0, 1313, 1299, 1, 0, 0, 0, 1313, 1300, 1, 0, 0, 0, 1313, 1301, 1, 0, 0, 0, 1313, 1302, 1, 0, 0, 0, 1314, 137, 1, 0, 0, 0, 1315, 1316, 5, 179, 0, 0, 1316, 1317, 5, 86, 0, 0, 1317, 1318, 7, 8, 0, 0, 1318, 1324, 3, 358, 179, 0, 1319, 1320, 5, 136, 0, 0, 1320, 1322, 5, 46, 0, 0, 1321, 1323, 3, 184, 92, 0, 1322, 1321, 1, 0, 0, 0, 1322, 1323, 1, 0, 0, 0, 1323, 1325, 1, 0, 0, 0, 1324, 1319, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 139, 1, 0, 0, 0, 1326, 1327, 5, 179, 0, 0, 1327, 1328, 5, 86, 0, 0, 1328, 1329, 7, 8, 0, 0, 1329, 1335, 3, 358, 179, 0, 1330, 1331, 5, 136, 0, 0, 1331, 1333, 5, 188, 0, 0, 1332, 1334, 3, 186, 93, 0, 1333, 1332, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1336, 1, 0, 0, 0, 1335, 1330, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 141, 1, 0, 0, 0, 1337, 1338, 5, 179, 0, 0, 1338, 1339, 5, 86, 0, 0, 1339, 1340, 7, 8, 0, 0, 1340, 1346, 3, 358, 179, 0, 1341, 1342, 5, 136, 0, 0, 1342, 1344, 5, 32, 0, 0, 1343, 1345, 3, 192, 96, 0, 1344, 1343, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1347, 1, 0, 0, 0, 1346, 1341, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 143, 1, 0, 0, 0, 1348, 1352, 3, 146, 73, 0, 1349, 1352, 3, 148, 74, 0, 1350, 1352, 3, 150, 75, 0, 1351, 1348, 1, 0, 0, 0, 1351, 1349, 1, 0, 0, 0, 1351, 1350, 1, 0, 0, 0, 1352, 145, 1, 0, 0, 0, 1353, 1354, 5, 34, 0, 0, 1354, 1355, 5, 136, 0, 0, 1355, 1356, 5, 46, 0, 0, 1356, 1357, 3, 184, 92, 0, 1357, 1360, 5, 108, 0, 0, 1358, 1361, 3, 314, 157, 0, 1359, 1361, 5, 133, 0, 0, 1360, 1358, 1, 0, 0, 0, 1360, 1359, 1, 0, 0, 0, 1361, 147, 1, 0, 0, 0, 1362, 1363, 5, 34, 0, 0, 1363, 1364, 5, 136, 0, 0, 1364, 1365, 5, 188, 0, 0, 1365, 1366, 3, 186, 93, 0, 1366, 1369, 5, 108, 0, 0, 1367, 1370, 3, 314, 157, 0, 1368, 1370, 5, 133, 0, 0, 1369, 1367, 1, 0, 0, 0, 1369, 1368, 1, 0, 0, 0, 1370, 149, 1, 0, 0, 0, 1371, 1372, 5, 34, 0, 0, 1372, 1373, 5, 136, 0, 0, 1373, 1374, 5, 32, 0, 0, 1374, 1375, 3, 192, 96, 0, 1375, 1378, 5, 108, 0, 0, 1376, 1379, 3, 314, 157, 0, 1377, 1379, 5, 133, 0, 0, 1378, 1376, 1, 0, 0, 0, 1378, 1377, 1, 0, 0, 0, 1379, 151, 1, 0, 0, 0, 1380, 1381, 5, 67, 0, 0, 1381, 1382, 3, 4, 2, 0, 1382, 153, 1, 0, 0, 0, 1383, 1389, 5, 176, 0, 0, 1384, 1390, 5, 2, 0, 0, 1385, 1386, 3, 358, 179, 0, 1386, 1387, 5, 249, 0, 0, 1387, 1388, 3, 304, 152, 0, 1388, 1390, 1, 0, 0, 0, 1389, 1384, 1, 0, 0, 0, 1389, 1385, 1, 0, 0, 0, 1389, 1390, 1, 0, 0, 0, 1390, 155, 1, 0, 0, 0, 1391, 1392, 5, 264, 0, 0, 1392, 1393, 5, 180, 0, 0, 1393, 1403, 5, 265, 0, 0, 1394, 1396, 3, 314, 157, 0, 1395, 1394, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1404, 1, 0, 0, 0, 1397, 1400, 3, 314, 157, 0, 1398, 1399, 5, 263, 0, 0, 1399, 1401, 3, 304, 152, 0, 1400, 1398, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1404, 1, 0, 0, 0, 1402, 1404, 3, 304, 152, 0, 1403, 1395, 1, 0, 0, 0, 1403, 1397, 1, 0, 0, 0, 1403, 1402, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1406, 5, 266, 0, 0, 1406, 157, 1, 0, 0, 0, 1407, 1408, 5, 107, 0, 0, 1408, 1409, 5, 121, 0, 0, 1409, 1410, 3, 186, 93, 0, 1410, 159, 1, 0, 0, 0, 1411, 1412, 5, 118, 0, 0, 1412, 1413, 5, 45, 0, 0, 1413, 1414, 5, 98, 0, 0, 1414, 1416, 5, 274, 0, 0, 1415, 1417, 5, 144, 0, 0, 1416, 1415, 1, 0, 0, 0, 1416, 1417, 1, 0, 0, 0, 1417, 1418, 1, 0, 0, 0, 1418, 1419, 5, 103, 0, 0, 1419, 1420, 5, 188, 0, 0, 1420, 1430, 3, 186, 93, 0, 1421, 1422, 5, 145, 0, 0, 1422, 1423, 5, 265, 0, 0, 1423, 1426, 3, 304, 152, 0, 1424, 1425, 5, 263, 0, 0, 1425, 1427, 3, 304, 152, 0, 1426, 1424, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1428, 1, 0, 0, 0, 1428, 1429, 5, 266, 0, 0, 1429, 1431, 1, 0, 0, 0, 1430, 1421, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, 161, 1, 0, 0, 0, 1432, 1436, 3, 164, 82, 0, 1433, 1436, 3, 166, 83, 0, 1434, 1436, 3, 168, 84, 0, 1435, 1432, 1, 0, 0, 0, 1435, 1433, 1, 0, 0, 0, 1435, 1434, 1, 0, 0, 0, 1436, 163, 1, 0, 0, 0, 1437, 1438, 5, 162, 0, 0, 1438, 1451, 3, 186, 93, 0, 1439, 1440, 5, 145, 0, 0, 1440, 1441, 5, 265, 0, 0, 1441, 1446, 3, 304, 152, 0, 1442, 1443, 5, 263, 0, 0, 1443, 1445, 3, 304, 152, 0, 1444, 1442, 1, 0, 0, 0, 1445, 1448, 1, 0, 0, 0, 1446, 1447, 1, 0, 0, 0, 1446, 1444, 1, 0, 0, 0, 1447, 1449, 1, 0, 0, 0, 1448, 1446, 1, 0, 0, 0, 1449, 1450, 5, 266, 0, 0, 1450, 1452, 1, 0, 0, 0, 1451, 1439, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 165, 1, 0, 0, 0, 1453, 1454, 5, 162, 0, 0, 1454, 1455, 5, 13, 0, 0, 1455, 167, 1, 0, 0, 0, 1456, 1457, 5, 162, 0, 0, 1457, 1458, 5, 85, 0, 0, 1458, 1459, 3, 190, 95, 0, 1459, 169, 1, 0, 0, 0, 1460, 1461, 5, 93, 0, 0, 1461, 1462, 5, 66, 0, 0, 1462, 171, 1, 0, 0, 0, 1463, 1464, 5, 93, 0, 0, 1464, 1465, 5, 132, 0, 0, 1465, 1466, 5, 66, 0, 0, 1466, 173, 1, 0, 0, 0, 1467, 1468, 3, 354, 177, 0, 1468, 175, 1, 0, 0, 0, 1469, 1470, 3, 354, 177, 0, 1470, 177, 1, 0, 0, 0, 1471, 1472, 3, 354, 177, 0, 1472, 179, 1, 0, 0, 0, 1473, 1474, 3, 354, 177, 0, 1474, 181, 1, 0, 0, 0, 1475, 1476, 3, 354, 177, 0, 1476, 183, 1, 0, 0, 0, 1477, 1478, 3, 354, 177, 0, 1478, 185, 1, 0, 0, 0, 1479, 1484, 3, 358, 179, 0, 1480, 1481, 5, 261, 0, 0, 1481, 1483, 3, 358, 179, 0, 1482, 1480, 1, 0, 0, 0, 1483, 1486, 1, 0, 0, 0, 1484, 1482, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 187, 1, 0, 0, 0, 1486, 1484, 1, 0, 0, 0, 1487, 1492, 3, 358, 179, 0, 1488, 1489, 5, 261, 0, 0, 1489, 1491, 3, 358, 179, 0, 1490, 1488, 1, 0, 0, 0, 1491, 1494, 1, 0, 0, 0, 1492, 1490, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 189, 1, 0, 0, 0, 1494, 1492, 1, 0, 0, 0, 1495, 1498, 3, 362, 181, 0, 1496, 1498, 3, 354, 177, 0, 1497, 1495, 1, 0, 0, 0, 1497, 1496, 1, 0, 0, 0, 1498, 191, 1, 0, 0, 0, 1499, 1502, 3, 354, 177, 0, 1500, 1502, 4, 96, 0, 0, 1501, 1499, 1, 0, 0, 0, 1501, 1500, 1, 0, 0, 0, 1502, 193, 1, 0, 0, 0, 1503, 1506, 3, 186, 93, 0, 1504, 1506, 3, 188, 94, 0, 1505, 1503, 1, 0, 0, 0, 1505, 1504, 1, 0, 0, 0, 1506, 195, 1, 0, 0, 0, 1507, 1508, 5, 21, 0, 0, 1508, 1509, 5, 26, 0, 0, 1509, 1511, 3, 292, 146, 0, 1510, 1507, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1514, 1, 0, 0, 0, 1512, 1513, 5, 34, 0, 0, 1513, 1515, 3, 314, 157, 0, 1514, 1512, 1, 0, 0, 0, 1514, 1515, 1, 0, 0, 0, 1515, 1519, 1, 0, 0, 0, 1516, 1517, 5, 168, 0, 0, 1517, 1518, 5, 79, 0, 0, 1518, 1520, 3, 254, 127, 0, 1519, 1516, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1524, 1, 0, 0, 0, 1521, 1522, 5, 216, 0, 0, 1522, 1523, 5, 175, 0, 0, 1523, 1525, 3, 248, 124, 0, 1524, 1521, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1529, 1, 0, 0, 0, 1526, 1527, 5, 23, 0, 0, 1527, 1528, 5, 9, 0, 0, 1528, 1530, 3, 230, 115, 0, 1529, 1526, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1533, 1, 0, 0, 0, 1531, 1532, 5, 24, 0, 0, 1532, 1534, 3, 314, 157, 0, 1533, 1531, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1545, 1, 0, 0, 0, 1535, 1536, 5, 30, 0, 0, 1536, 1537, 5, 94, 0, 0, 1537, 1542, 3, 354, 177, 0, 1538, 1539, 5, 216, 0, 0, 1539, 1540, 5, 151, 0, 0, 1540, 1541, 5, 249, 0, 0, 1541, 1543, 5, 277, 0, 0, 1542, 1538, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1546, 1, 0, 0, 0, 1544, 1546, 5, 197, 0, 0, 1545, 1535, 1, 0, 0, 0, 1545, 1544, 1, 0, 0, 0, 1545, 1546, 1, 0, 0, 0, 1546, 1549, 1, 0, 0, 0, 1547, 1548, 5, 25, 0, 0, 1548, 1550, 3, 248, 124, 0, 1549, 1547, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 197, 1, 0, 0, 0, 1551, 1556, 3, 200, 100, 0, 1552, 1553, 5, 263, 0, 0, 1553, 1555, 3, 200, 100, 0, 1554, 1552, 1, 0, 0, 0, 1555, 1558, 1, 0, 0, 0, 1556, 1554, 1, 0, 0, 0, 1556, 1557, 1, 0, 0, 0, 1557, 199, 1, 0, 0, 0, 1558, 1556, 1, 0, 0, 0, 1559, 1560, 3, 354, 177, 0, 1560, 1561, 5, 249, 0, 0, 1561, 1562, 3, 304, 152, 0, 1562, 201, 1, 0, 0, 0, 1563, 1564, 5, 265, 0, 0, 1564, 1567, 3, 182, 91, 0, 1565, 1566, 5, 34, 0, 0, 1566, 1568, 3, 314, 157, 0, 1567, 1565, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1577, 1, 0, 0, 0, 1569, 1570, 5, 263, 0, 0, 1570, 1573, 3, 182, 91, 0, 1571, 1572, 5, 34, 0, 0, 1572, 1574, 3, 314, 157, 0, 1573, 1571, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1576, 1, 0, 0, 0, 1575, 1569, 1, 0, 0, 0, 1576, 1579, 1, 0, 0, 0, 1577, 1575, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 1580, 1, 0, 0, 0, 1579, 1577, 1, 0, 0, 0, 1580, 1581, 5, 266, 0, 0, 1581, 203, 1, 0, 0, 0, 1582, 1584, 3, 206, 103, 0, 1583, 1582, 1, 0, 0, 0, 1583, 1584, 1, 0, 0, 0, 1584, 1585, 1, 0, 0, 0, 1585, 1586, 3, 258, 129, 0, 1586, 205, 1, 0, 0, 0, 1587, 1588, 5, 216, 0, 0, 1588, 1593, 3, 274, 137, 0, 1589, 1590, 5, 263, 0, 0, 1590, 1592, 3, 274, 137, 0, 1591, 1589, 1, 0, 0, 0, 1592, 1595, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1593, 1594, 1, 0, 0, 0, 1594, 207, 1, 0, 0, 0, 1595, 1593, 1, 0, 0, 0, 1596, 1597, 5, 150, 0, 0, 1597, 1598, 5, 110, 0, 0, 1598, 1600, 3, 292, 146, 0, 1599, 1601, 5, 53, 0, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1605, 1, 0, 0, 0, 1602, 1606, 5, 225, 0, 0, 1603, 1604, 5, 263, 0, 0, 1604, 1606, 5, 225, 0, 0, 1605, 1602, 1, 0, 0, 0, 1605, 1603, 1, 0, 0, 0, 1605, 1606, 1, 0, 0, 0, 1606, 1610, 1, 0, 0, 0, 1607, 1611, 5, 226, 0, 0, 1608, 1609, 5, 263, 0, 0, 1609, 1611, 5, 226, 0, 0, 1610, 1607, 1, 0, 0, 0, 1610, 1608, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1624, 1, 0, 0, 0, 1612, 1613, 5, 263, 0, 0, 1613, 1616, 3, 210, 105, 0, 1614, 1616, 3, 210, 105, 0, 1615, 1612, 1, 0, 0, 0, 1615, 1614, 1, 0, 0, 0, 1616, 1621, 1, 0, 0, 0, 1617, 1618, 5, 263, 0, 0, 1618, 1620, 3, 210, 105, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1623, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1622, 1625, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1624, 1615, 1, 0, 0, 0, 1624, 1625, 1, 0, 0, 0, 1625, 209, 1, 0, 0, 0, 1626, 1627, 5, 81, 0, 0, 1627, 1628, 5, 110, 0, 0, 1628, 1629, 3, 292, 146, 0, 1629, 1630, 5, 224, 0, 0, 1630, 1631, 3, 186, 93, 0, 1631, 1633, 3, 292, 146, 0, 1632, 1634, 5, 53, 0, 0, 1633, 1632, 1, 0, 0, 0, 1633, 1634, 1, 0, 0, 0, 1634, 1636, 1, 0, 0, 0, 1635, 1637, 5, 225, 0, 0, 1636, 1635, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1639, 1, 0, 0, 0, 1638, 1640, 5, 226, 0, 0, 1639, 1638, 1, 0, 0, 0, 1639, 1640, 1, 0, 0, 0, 1640, 211, 1, 0, 0, 0, 1641, 1642, 3, 192, 96, 0, 1642, 1645, 3, 328, 164, 0, 1643, 1644, 5, 34, 0, 0, 1644, 1646, 3, 314, 157, 0, 1645, 1643, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 213, 1, 0, 0, 0, 1647, 1648, 3, 182, 91, 0, 1648, 1651, 3, 328, 164, 0, 1649, 1650, 5, 34, 0, 0, 1650, 1652, 3, 314, 157, 0, 1651, 1649, 1, 0, 0, 0, 1651, 1652, 1, 0, 0, 0, 1652, 215, 1, 0, 0, 0, 1653, 1654, 3, 218, 109, 0, 1654, 217, 1, 0, 0, 0, 1655, 1656, 3, 182, 91, 0, 1656, 1664, 3, 328, 164, 0, 1657, 1661, 3, 224, 112, 0, 1658, 1660, 3, 224, 112, 0, 1659, 1658, 1, 0, 0, 0, 1660, 1663, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1661, 1659, 1, 0, 0, 0, 1662, 1665, 1, 0, 0, 0, 1663, 1661, 1, 0, 0, 0, 1664, 1657, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1668, 1, 0, 0, 0, 1666, 1667, 5, 34, 0, 0, 1667, 1669, 3, 314, 157, 0, 1668, 1666, 1, 0, 0, 0, 1668, 1669, 1, 0, 0, 0, 1669, 1672, 1, 0, 0, 0, 1670, 1671, 5, 150, 0, 0, 1671, 1673, 5, 110, 0, 0, 1672, 1670, 1, 0, 0, 0, 1672, 1673, 1, 0, 0, 0, 1673, 219, 1, 0, 0, 0, 1674, 1682, 3, 212, 106, 0, 1675, 1679, 3, 224, 112, 0, 1676, 1678, 3, 224, 112, 0, 1677, 1676, 1, 0, 0, 0, 1678, 1681, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1679, 1677, 1, 0, 0, 0, 1680, 1683, 1, 0, 0, 0, 1681, 1679, 1, 0, 0, 0, 1682, 1675, 1, 0, 0, 0, 1682, 1683, 1, 0, 0, 0, 1683, 221, 1, 0, 0, 0, 1684, 1685, 3, 182, 91, 0, 1685, 1688, 3, 328, 164, 0, 1686, 1687, 5, 34, 0, 0, 1687, 1689, 3, 314, 157, 0, 1688, 1686, 1, 0, 0, 0, 1688, 1689, 1, 0, 0, 0, 1689, 1697, 1, 0, 0, 0, 1690, 1694, 3, 224, 112, 0, 1691, 1693, 3, 224, 112, 0, 1692, 1691, 1, 0, 0, 0, 1693, 1696, 1, 0, 0, 0, 1694, 1695, 1, 0, 0, 0, 1694, 1692, 1, 0, 0, 0, 1695, 1698, 1, 0, 0, 0, 1696, 1694, 1, 0, 0, 0, 1697, 1690, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 223, 1, 0, 0, 0, 1699, 1701, 5, 132, 0, 0, 1700, 1699, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1702, 1, 0, 0, 0, 1702, 1705, 5, 133, 0, 0, 1703, 1705, 3, 226, 113, 0, 1704, 1700, 1, 0, 0, 0, 1704, 1703, 1, 0, 0, 0, 1705, 225, 1, 0, 0, 0, 1706, 1707, 5, 60, 0, 0, 1707, 1715, 3, 304, 152, 0, 1708, 1709, 5, 35, 0, 0, 1709, 1715, 3, 304, 152, 0, 1710, 1711, 5, 51, 0, 0, 1711, 1715, 3, 304, 152, 0, 1712, 1713, 5, 16, 0, 0, 1713, 1715, 3, 360, 180, 0, 1714, 1706, 1, 0, 0, 0, 1714, 1708, 1, 0, 0, 0, 1714, 1710, 1, 0, 0, 0, 1714, 1712, 1, 0, 0, 0, 1715, 227, 1, 0, 0, 0, 1716, 1717, 7, 10, 0, 0, 1717, 229, 1, 0, 0, 0, 1718, 1719, 7, 11, 0, 0, 1719, 231, 1, 0, 0, 0, 1720, 1725, 3, 234, 117, 0, 1721, 1722, 5, 263, 0, 0, 1722, 1724, 3, 234, 117, 0, 1723, 1721, 1, 0, 0, 0, 1724, 1727, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1725, 1723, 1, 0, 0, 0, 1726, 1730, 1, 0, 0, 0, 1727, 1725, 1, 0, 0, 0, 1728, 1729, 5, 263, 0, 0, 1729, 1731, 3, 236, 118, 0, 1730, 1728, 1, 0, 0, 0, 1730, 1731, 1, 0, 0, 0, 1731, 1734, 1, 0, 0, 0, 1732, 1734, 3, 236, 118, 0, 1733, 1720, 1, 0, 0, 0, 1733, 1732, 1, 0, 0, 0, 1734, 233, 1, 0, 0, 0, 1735, 1737, 5, 89, 0, 0, 1736, 1738, 3, 292, 146, 0, 1737, 1736, 1, 0, 0, 0, 1737, 1738, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1740, 5, 146, 0, 0, 1740, 1741, 3, 360, 180, 0, 1741, 235, 1, 0, 0, 0, 1742, 1744, 5, 154, 0, 0, 1743, 1745, 3, 292, 146, 0, 1744, 1743, 1, 0, 0, 0, 1744, 1745, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 5, 265, 0, 0, 1747, 1748, 5, 145, 0, 0, 1748, 1754, 3, 238, 119, 0, 1749, 1750, 5, 263, 0, 0, 1750, 1751, 5, 145, 0, 0, 1751, 1753, 3, 238, 119, 0, 1752, 1749, 1, 0, 0, 0, 1753, 1756, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1754, 1752, 1, 0, 0, 0, 1755, 1757, 1, 0, 0, 0, 1756, 1754, 1, 0, 0, 0, 1757, 1758, 5, 266, 0, 0, 1758, 237, 1, 0, 0, 0, 1759, 1760, 5, 210, 0, 0, 1760, 1761, 3, 244, 122, 0, 1761, 1762, 3, 304, 152, 0, 1762, 1775, 1, 0, 0, 0, 1763, 1764, 3, 304, 152, 0, 1764, 1765, 3, 242, 121, 0, 1765, 1767, 1, 0, 0, 0, 1766, 1763, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1772, 5, 211, 0, 0, 1769, 1770, 3, 242, 121, 0, 1770, 1771, 3, 304, 152, 0, 1771, 1773, 1, 0, 0, 0, 1772, 1769, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 1775, 1, 0, 0, 0, 1774, 1759, 1, 0, 0, 0, 1774, 1766, 1, 0, 0, 0, 1775, 239, 1, 0, 0, 0, 1776, 1777, 5, 30, 0, 0, 1777, 1778, 5, 94, 0, 0, 1778, 1783, 3, 358, 179, 0, 1779, 1780, 5, 216, 0, 0, 1780, 1781, 5, 151, 0, 0, 1781, 1782, 5, 249, 0, 0, 1782, 1784, 3, 360, 180, 0, 1783, 1779, 1, 0, 0, 0, 1783, 1784, 1, 0, 0, 0, 1784, 1787, 1, 0, 0, 0, 1785, 1787, 5, 197, 0, 0, 1786, 1776, 1, 0, 0, 0, 1786, 1785, 1, 0, 0, 0, 1787, 241, 1, 0, 0, 0, 1788, 1794, 1, 0, 0, 0, 1789, 1794, 5, 251, 0, 0, 1790, 1794, 5, 252, 0, 0, 1791, 1794, 5, 253, 0, 0, 1792, 1794, 5, 254, 0, 0, 1793, 1788, 1, 0, 0, 0, 1793, 1789, 1, 0, 0, 0, 1793, 1790, 1, 0, 0, 0, 1793, 1791, 1, 0, 0, 0, 1793, 1792, 1, 0, 0, 0, 1794, 243, 1, 0, 0, 0, 1795, 1804, 5, 249, 0, 0, 1796, 1804, 5, 250, 0, 0, 1797, 1804, 5, 115, 0, 0, 1798, 1804, 5, 164, 0, 0, 1799, 1804, 5, 163, 0, 0, 1800, 1804, 5, 15, 0, 0, 1801, 1804, 5, 94, 0, 0, 1802, 1804, 3, 242, 121, 0, 1803, 1795, 1, 0, 0, 0, 1803, 1796, 1, 0, 0, 0, 1803, 1797, 1, 0, 0, 0, 1803, 1798, 1, 0, 0, 0, 1803, 1799, 1, 0, 0, 0, 1803, 1800, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1803, 1802, 1, 0, 0, 0, 1804, 245, 1, 0, 0, 0, 1805, 1806, 5, 115, 0, 0, 1806, 1809, 3, 354, 177, 0, 1807, 1808, 7, 12, 0, 0, 1808, 1810, 5, 153, 0, 0, 1809, 1807, 1, 0, 0, 0, 1809, 1810, 1, 0, 0, 0, 1810, 247, 1, 0, 0, 0, 1811, 1812, 5, 265, 0, 0, 1812, 1817, 3, 256, 128, 0, 1813, 1814, 5, 263, 0, 0, 1814, 1816, 3, 256, 128, 0, 1815, 1813, 1, 0, 0, 0, 1816, 1819, 1, 0, 0, 0, 1817, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1820, 1, 0, 0, 0, 1819, 1817, 1, 0, 0, 0, 1820, 1821, 5, 266, 0, 0, 1821, 249, 1, 0, 0, 0, 1822, 1823, 5, 265, 0, 0, 1823, 1828, 3, 212, 106, 0, 1824, 1825, 5, 263, 0, 0, 1825, 1827, 3, 212, 106, 0, 1826, 1824, 1, 0, 0, 0, 1827, 1830, 1, 0, 0, 0, 1828, 1829, 1, 0, 0, 0, 1828, 1826, 1, 0, 0, 0, 1829, 1831, 1, 0, 0, 0, 1830, 1828, 1, 0, 0, 0, 1831, 1832, 5, 266, 0, 0, 1832, 251, 1, 0, 0, 0, 1833, 1838, 3, 304, 152, 0, 1834, 1835, 5, 263, 0, 0, 1835, 1837, 3, 304, 152, 0, 1836, 1834, 1, 0, 0, 0, 1837, 1840, 1, 0, 0, 0, 1838, 1836, 1, 0, 0, 0, 1838, 1839, 1, 0, 0, 0, 1839, 253, 1, 0, 0, 0, 1840, 1838, 1, 0, 0, 0, 1841, 1851, 5, 52, 0, 0, 1842, 1843, 5, 71, 0, 0, 1843, 1844, 5, 191, 0, 0, 1844, 1845, 5, 26, 0, 0, 1845, 1849, 3, 314, 157, 0, 1846, 1847, 5, 63, 0, 0, 1847, 1848, 5, 26, 0, 0, 1848, 1850, 3, 314, 157, 0, 1849, 1846, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 1852, 1, 0, 0, 0, 1851, 1842, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1857, 1, 0, 0, 0, 1853, 1854, 5, 117, 0, 0, 1854, 1855, 5, 191, 0, 0, 1855, 1856, 5, 26, 0, 0, 1856, 1858, 3, 314, 157, 0, 1857, 1853, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 255, 1, 0, 0, 0, 1859, 1862, 3, 358, 179, 0, 1860, 1861, 5, 249, 0, 0, 1861, 1863, 3, 304, 152, 0, 1862, 1860, 1, 0, 0, 0, 1862, 1863, 1, 0, 0, 0, 1863, 257, 1, 0, 0, 0, 1864, 1875, 3, 260, 130, 0, 1865, 1866, 5, 139, 0, 0, 1866, 1867, 5, 26, 0, 0, 1867, 1872, 3, 264, 132, 0, 1868, 1869, 5, 263, 0, 0, 1869, 1871, 3, 264, 132, 0, 1870, 1868, 1, 0, 0, 0, 1871, 1874, 1, 0, 0, 0, 1872, 1870, 1, 0, 0, 0, 1872, 1873, 1, 0, 0, 0, 1873, 1876, 1, 0, 0, 0, 1874, 1872, 1, 0, 0, 0, 1875, 1865, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 1883, 1, 0, 0, 0, 1877, 1878, 5, 116, 0, 0, 1878, 1881, 3, 304, 152, 0, 1879, 1880, 5, 135, 0, 0, 1880, 1882, 5, 277, 0, 0, 1881, 1879, 1, 0, 0, 0, 1881, 1882, 1, 0, 0, 0, 1882, 1884, 1, 0, 0, 0, 1883, 1877, 1, 0, 0, 0, 1883, 1884, 1, 0, 0, 0, 1884, 259, 1, 0, 0, 0, 1885, 1886, 6, 130, -1, 0, 1886, 1887, 3, 262, 131, 0, 1887, 1902, 1, 0, 0, 0, 1888, 1889, 10, 2, 0, 0, 1889, 1891, 5, 100, 0, 0, 1890, 1892, 3, 276, 138, 0, 1891, 1890, 1, 0, 0, 0, 1891, 1892, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 1901, 3, 260, 130, 3, 1894, 1895, 10, 1, 0, 0, 1895, 1897, 7, 13, 0, 0, 1896, 1898, 3, 276, 138, 0, 1897, 1896, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 1899, 1, 0, 0, 0, 1899, 1901, 3, 260, 130, 2, 1900, 1888, 1, 0, 0, 0, 1900, 1894, 1, 0, 0, 0, 1901, 1904, 1, 0, 0, 0, 1902, 1900, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 261, 1, 0, 0, 0, 1904, 1902, 1, 0, 0, 0, 1905, 1922, 3, 266, 133, 0, 1906, 1907, 5, 188, 0, 0, 1907, 1922, 3, 186, 93, 0, 1908, 1909, 5, 211, 0, 0, 1909, 1914, 3, 304, 152, 0, 1910, 1911, 5, 263, 0, 0, 1911, 1913, 3, 304, 152, 0, 1912, 1910, 1, 0, 0, 0, 1913, 1916, 1, 0, 0, 0, 1914, 1912, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1922, 1, 0, 0, 0, 1916, 1914, 1, 0, 0, 0, 1917, 1918, 5, 265, 0, 0, 1918, 1919, 3, 258, 129, 0, 1919, 1920, 5, 266, 0, 0, 1920, 1922, 1, 0, 0, 0, 1921, 1905, 1, 0, 0, 0, 1921, 1906, 1, 0, 0, 0, 1921, 1908, 1, 0, 0, 0, 1921, 1917, 1, 0, 0, 0, 1922, 263, 1, 0, 0, 0, 1923, 1925, 3, 302, 151, 0, 1924, 1926, 7, 14, 0, 0, 1925, 1924, 1, 0, 0, 0, 1925, 1926, 1, 0, 0, 0, 1926, 1929, 1, 0, 0, 0, 1927, 1928, 5, 134, 0, 0, 1928, 1930, 7, 15, 0, 0, 1929, 1927, 1, 0, 0, 0, 1929, 1930, 1, 0, 0, 0, 1930, 265, 1, 0, 0, 0, 1931, 1933, 5, 174, 0, 0, 1932, 1934, 3, 276, 138, 0, 1933, 1932, 1, 0, 0, 0, 1933, 1934, 1, 0, 0, 0, 1934, 1936, 1, 0, 0, 0, 1935, 1937, 5, 183, 0, 0, 1936, 1935, 1, 0, 0, 0, 1936, 1937, 1, 0, 0, 0, 1937, 1938, 1, 0, 0, 0, 1938, 1943, 3, 278, 139, 0, 1939, 1940, 5, 263, 0, 0, 1940, 1942, 3, 278, 139, 0, 1941, 1939, 1, 0, 0, 0, 1942, 1945, 1, 0, 0, 0, 1943, 1941, 1, 0, 0, 0, 1943, 1944, 1, 0, 0, 0, 1944, 1955, 1, 0, 0, 0, 1945, 1943, 1, 0, 0, 0, 1946, 1947, 5, 82, 0, 0, 1947, 1952, 3, 280, 140, 0, 1948, 1949, 5, 263, 0, 0, 1949, 1951, 3, 280, 140, 0, 1950, 1948, 1, 0, 0, 0, 1951, 1954, 1, 0, 0, 0, 1952, 1950, 1, 0, 0, 0, 1952, 1953, 1, 0, 0, 0, 1953, 1956, 1, 0, 0, 0, 1954, 1952, 1, 0, 0, 0, 1955, 1946, 1, 0, 0, 0, 1955, 1956, 1, 0, 0, 0, 1956, 1959, 1, 0, 0, 0, 1957, 1958, 5, 215, 0, 0, 1958, 1960, 3, 306, 153, 0, 1959, 1957, 1, 0, 0, 0, 1959, 1960, 1, 0, 0, 0, 1960, 1964, 1, 0, 0, 0, 1961, 1962, 5, 87, 0, 0, 1962, 1963, 5, 26, 0, 0, 1963, 1965, 3, 268, 134, 0, 1964, 1961, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 1968, 1, 0, 0, 0, 1966, 1967, 5, 90, 0, 0, 1967, 1969, 3, 306, 153, 0, 1968, 1966, 1, 0, 0, 0, 1968, 1969, 1, 0, 0, 0, 1969, 267, 1, 0, 0, 0, 1970, 1972, 3, 276, 138, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1978, 3, 270, 135, 0, 1974, 1975, 5, 263, 0, 0, 1975, 1977, 3, 270, 135, 0, 1976, 1974, 1, 0, 0, 0, 1977, 1980, 1, 0, 0, 0, 1978, 1976, 1, 0, 0, 0, 1978, 1979, 1, 0, 0, 0, 1979, 269, 1, 0, 0, 0, 1980, 1978, 1, 0, 0, 0, 1981, 1982, 3, 272, 136, 0, 1982, 271, 1, 0, 0, 0, 1983, 1992, 5, 265, 0, 0, 1984, 1989, 3, 302, 151, 0, 1985, 1986, 5, 263, 0, 0, 1986, 1988, 3, 302, 151, 0, 1987, 1985, 1, 0, 0, 0, 1988, 1991, 1, 0, 0, 0, 1989, 1987, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1993, 1, 0, 0, 0, 1991, 1989, 1, 0, 0, 0, 1992, 1984, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 1997, 5, 266, 0, 0, 1995, 1997, 3, 302, 151, 0, 1996, 1983, 1, 0, 0, 0, 1996, 1995, 1, 0, 0, 0, 1997, 273, 1, 0, 0, 0, 1998, 2000, 3, 358, 179, 0, 1999, 2001, 3, 292, 146, 0, 2000, 1999, 1, 0, 0, 0, 2000, 2001, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2003, 5, 9, 0, 0, 2003, 2004, 3, 296, 148, 0, 2004, 275, 1, 0, 0, 0, 2005, 2006, 7, 16, 0, 0, 2006, 277, 1, 0, 0, 0, 2007, 2012, 3, 302, 151, 0, 2008, 2010, 5, 9, 0, 0, 2009, 2008, 1, 0, 0, 0, 2009, 2010, 1, 0, 0, 0, 2010, 2011, 1, 0, 0, 0, 2011, 2013, 3, 358, 179, 0, 2012, 2009, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2020, 1, 0, 0, 0, 2014, 2015, 3, 354, 177, 0, 2015, 2016, 5, 261, 0, 0, 2016, 2017, 5, 257, 0, 0, 2017, 2020, 1, 0, 0, 0, 2018, 2020, 5, 257, 0, 0, 2019, 2007, 1, 0, 0, 0, 2019, 2014, 1, 0, 0, 0, 2019, 2018, 1, 0, 0, 0, 2020, 279, 1, 0, 0, 0, 2021, 2022, 6, 140, -1, 0, 2022, 2023, 3, 286, 143, 0, 2023, 2037, 1, 0, 0, 0, 2024, 2033, 10, 2, 0, 0, 2025, 2026, 5, 38, 0, 0, 2026, 2027, 5, 109, 0, 0, 2027, 2034, 3, 286, 143, 0, 2028, 2029, 3, 282, 141, 0, 2029, 2030, 5, 109, 0, 0, 2030, 2031, 3, 280, 140, 0, 2031, 2032, 3, 284, 142, 0, 2032, 2034, 1, 0, 0, 0, 2033, 2025, 1, 0, 0, 0, 2033, 2028, 1, 0, 0, 0, 2034, 2036, 1, 0, 0, 0, 2035, 2024, 1, 0, 0, 0, 2036, 2039, 1, 0, 0, 0, 2037, 2035, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 281, 1, 0, 0, 0, 2039, 2037, 1, 0, 0, 0, 2040, 2042, 5, 97, 0, 0, 2041, 2040, 1, 0, 0, 0, 2041, 2042, 1, 0, 0, 0, 2042, 2072, 1, 0, 0, 0, 2043, 2045, 5, 114, 0, 0, 2044, 2046, 5, 97, 0, 0, 2045, 2044, 1, 0, 0, 0, 2045, 2046, 1, 0, 0, 0, 2046, 2072, 1, 0, 0, 0, 2047, 2049, 5, 165, 0, 0, 2048, 2050, 5, 97, 0, 0, 2049, 2048, 1, 0, 0, 0, 2049, 2050, 1, 0, 0, 0, 2050, 2072, 1, 0, 0, 0, 2051, 2053, 5, 114, 0, 0, 2052, 2054, 5, 141, 0, 0, 2053, 2052, 1, 0, 0, 0, 2053, 2054, 1, 0, 0, 0, 2054, 2072, 1, 0, 0, 0, 2055, 2057, 5, 165, 0, 0, 2056, 2058, 5, 141, 0, 0, 2057, 2056, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2072, 1, 0, 0, 0, 2059, 2061, 5, 83, 0, 0, 2060, 2062, 5, 141, 0, 0, 2061, 2060, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2072, 1, 0, 0, 0, 2063, 2064, 5, 114, 0, 0, 2064, 2072, 5, 177, 0, 0, 2065, 2066, 5, 165, 0, 0, 2066, 2072, 5, 177, 0, 0, 2067, 2068, 5, 114, 0, 0, 2068, 2072, 5, 7, 0, 0, 2069, 2070, 5, 165, 0, 0, 2070, 2072, 5, 7, 0, 0, 2071, 2041, 1, 0, 0, 0, 2071, 2043, 1, 0, 0, 0, 2071, 2047, 1, 0, 0, 0, 2071, 2051, 1, 0, 0, 0, 2071, 2055, 1, 0, 0, 0, 2071, 2059, 1, 0, 0, 0, 2071, 2063, 1, 0, 0, 0, 2071, 2065, 1, 0, 0, 0, 2071, 2067, 1, 0, 0, 0, 2071, 2069, 1, 0, 0, 0, 2072, 283, 1, 0, 0, 0, 2073, 2074, 5, 136, 0, 0, 2074, 2088, 3, 306, 153, 0, 2075, 2076, 5, 205, 0, 0, 2076, 2077, 5, 265, 0, 0, 2077, 2082, 3, 358, 179, 0, 2078, 2079, 5, 263, 0, 0, 2079, 2081, 3, 358, 179, 0, 2080, 2078, 1, 0, 0, 0, 2081, 2084, 1, 0, 0, 0, 2082, 2080, 1, 0, 0, 0, 2082, 2083, 1, 0, 0, 0, 2083, 2085, 1, 0, 0, 0, 2084, 2082, 1, 0, 0, 0, 2085, 2086, 5, 266, 0, 0, 2086, 2088, 1, 0, 0, 0, 2087, 2073, 1, 0, 0, 0, 2087, 2075, 1, 0, 0, 0, 2088, 285, 1, 0, 0, 0, 2089, 2102, 3, 290, 145, 0, 2090, 2091, 5, 190, 0, 0, 2091, 2092, 3, 288, 144, 0, 2092, 2093, 5, 265, 0, 0, 2093, 2094, 3, 304, 152, 0, 2094, 2100, 5, 266, 0, 0, 2095, 2096, 5, 157, 0, 0, 2096, 2097, 5, 265, 0, 0, 2097, 2098, 3, 304, 152, 0, 2098, 2099, 5, 266, 0, 0, 2099, 2101, 1, 0, 0, 0, 2100, 2095, 1, 0, 0, 0, 2100, 2101, 1, 0, 0, 0, 2101, 2103, 1, 0, 0, 0, 2102, 2090, 1, 0, 0, 0, 2102, 2103, 1, 0, 0, 0, 2103, 287, 1, 0, 0, 0, 2104, 2105, 7, 17, 0, 0, 2105, 289, 1, 0, 0, 0, 2106, 2114, 3, 294, 147, 0, 2107, 2109, 5, 9, 0, 0, 2108, 2107, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2112, 3, 358, 179, 0, 2111, 2113, 3, 292, 146, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2115, 1, 0, 0, 0, 2114, 2108, 1, 0, 0, 0, 2114, 2115, 1, 0, 0, 0, 2115, 291, 1, 0, 0, 0, 2116, 2117, 5, 265, 0, 0, 2117, 2122, 3, 192, 96, 0, 2118, 2119, 5, 263, 0, 0, 2119, 2121, 3, 192, 96, 0, 2120, 2118, 1, 0, 0, 0, 2121, 2124, 1, 0, 0, 0, 2122, 2120, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2125, 1, 0, 0, 0, 2124, 2122, 1, 0, 0, 0, 2125, 2126, 5, 266, 0, 0, 2126, 293, 1, 0, 0, 0, 2127, 2135, 3, 194, 97, 0, 2128, 2130, 5, 113, 0, 0, 2129, 2128, 1, 0, 0, 0, 2129, 2130, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2135, 3, 296, 148, 0, 2132, 2135, 3, 298, 149, 0, 2133, 2135, 3, 300, 150, 0, 2134, 2127, 1, 0, 0, 0, 2134, 2129, 1, 0, 0, 0, 2134, 2132, 1, 0, 0, 0, 2134, 2133, 1, 0, 0, 0, 2135, 295, 1, 0, 0, 0, 2136, 2137, 5, 265, 0, 0, 2137, 2138, 3, 204, 102, 0, 2138, 2139, 5, 266, 0, 0, 2139, 297, 1, 0, 0, 0, 2140, 2141, 5, 201, 0, 0, 2141, 2142, 5, 265, 0, 0, 2142, 2147, 3, 304, 152, 0, 2143, 2144, 5, 263, 0, 0, 2144, 2146, 3, 304, 152, 0, 2145, 2143, 1, 0, 0, 0, 2146, 2149, 1, 0, 0, 0, 2147, 2145, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2150, 1, 0, 0, 0, 2149, 2147, 1, 0, 0, 0, 2150, 2153, 5, 266, 0, 0, 2151, 2152, 5, 216, 0, 0, 2152, 2154, 5, 140, 0, 0, 2153, 2151, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 299, 1, 0, 0, 0, 2155, 2156, 5, 265, 0, 0, 2156, 2157, 3, 280, 140, 0, 2157, 2158, 5, 266, 0, 0, 2158, 301, 1, 0, 0, 0, 2159, 2162, 3, 192, 96, 0, 2160, 2162, 3, 304, 152, 0, 2161, 2159, 1, 0, 0, 0, 2161, 2160, 1, 0, 0, 0, 2162, 303, 1, 0, 0, 0, 2163, 2164, 3, 306, 153, 0, 2164, 305, 1, 0, 0, 0, 2165, 2166, 6, 153, -1, 0, 2166, 2168, 3, 310, 155, 0, 2167, 2169, 3, 308, 154, 0, 2168, 2167, 1, 0, 0, 0, 2168, 2169, 1, 0, 0, 0, 2169, 2173, 1, 0, 0, 0, 2170, 2171, 5, 132, 0, 0, 2171, 2173, 3, 306, 153, 3, 2172, 2165, 1, 0, 0, 0, 2172, 2170, 1, 0, 0, 0, 2173, 2182, 1, 0, 0, 0, 2174, 2175, 10, 2, 0, 0, 2175, 2176, 5, 5, 0, 0, 2176, 2181, 3, 306, 153, 3, 2177, 2178, 10, 1, 0, 0, 2178, 2179, 5, 138, 0, 0, 2179, 2181, 3, 306, 153, 2, 2180, 2174, 1, 0, 0, 0, 2180, 2177, 1, 0, 0, 0, 2181, 2184, 1, 0, 0, 0, 2182, 2180, 1, 0, 0, 0, 2182, 2183, 1, 0, 0, 0, 2183, 307, 1, 0, 0, 0, 2184, 2182, 1, 0, 0, 0, 2185, 2186, 3, 316, 158, 0, 2186, 2187, 3, 310, 155, 0, 2187, 2244, 1, 0, 0, 0, 2188, 2189, 3, 316, 158, 0, 2189, 2190, 3, 318, 159, 0, 2190, 2191, 3, 296, 148, 0, 2191, 2244, 1, 0, 0, 0, 2192, 2194, 5, 132, 0, 0, 2193, 2192, 1, 0, 0, 0, 2193, 2194, 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 2196, 5, 15, 0, 0, 2196, 2197, 3, 310, 155, 0, 2197, 2198, 5, 5, 0, 0, 2198, 2199, 3, 310, 155, 0, 2199, 2244, 1, 0, 0, 0, 2200, 2202, 5, 132, 0, 0, 2201, 2200, 1, 0, 0, 0, 2201, 2202, 1, 0, 0, 0, 2202, 2203, 1, 0, 0, 0, 2203, 2204, 5, 94, 0, 0, 2204, 2205, 5, 265, 0, 0, 2205, 2210, 3, 304, 152, 0, 2206, 2207, 5, 263, 0, 0, 2207, 2209, 3, 304, 152, 0, 2208, 2206, 1, 0, 0, 0, 2209, 2212, 1, 0, 0, 0, 2210, 2208, 1, 0, 0, 0, 2210, 2211, 1, 0, 0, 0, 2211, 2213, 1, 0, 0, 0, 2212, 2210, 1, 0, 0, 0, 2213, 2214, 5, 266, 0, 0, 2214, 2244, 1, 0, 0, 0, 2215, 2217, 5, 132, 0, 0, 2216, 2215, 1, 0, 0, 0, 2216, 2217, 1, 0, 0, 0, 2217, 2218, 1, 0, 0, 0, 2218, 2219, 5, 94, 0, 0, 2219, 2244, 3, 296, 148, 0, 2220, 2222, 5, 132, 0, 0, 2221, 2220, 1, 0, 0, 0, 2221, 2222, 1, 0, 0, 0, 2222, 2223, 1, 0, 0, 0, 2223, 2224, 7, 18, 0, 0, 2224, 2227, 3, 310, 155, 0, 2225, 2226, 5, 62, 0, 0, 2226, 2228, 3, 310, 155, 0, 2227, 2225, 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 2244, 1, 0, 0, 0, 2229, 2230, 7, 19, 0, 0, 2230, 2244, 3, 310, 155, 0, 2231, 2233, 5, 108, 0, 0, 2232, 2234, 5, 132, 0, 0, 2233, 2232, 1, 0, 0, 0, 2233, 2234, 1, 0, 0, 0, 2234, 2235, 1, 0, 0, 0, 2235, 2244, 7, 20, 0, 0, 2236, 2238, 5, 108, 0, 0, 2237, 2239, 5, 132, 0, 0, 2238, 2237, 1, 0, 0, 0, 2238, 2239, 1, 0, 0, 0, 2239, 2240, 1, 0, 0, 0, 2240, 2241, 5, 57, 0, 0, 2241, 2242, 5, 82, 0, 0, 2242, 2244, 3, 310, 155, 0, 2243, 2185, 1, 0, 0, 0, 2243, 2188, 1, 0, 0, 0, 2243, 2193, 1, 0, 0, 0, 2243, 2201, 1, 0, 0, 0, 2243, 2216, 1, 0, 0, 0, 2243, 2221, 1, 0, 0, 0, 2243, 2229, 1, 0, 0, 0, 2243, 2231, 1, 0, 0, 0, 2243, 2236, 1, 0, 0, 0, 2244, 309, 1, 0, 0, 0, 2245, 2246, 6, 155, -1, 0, 2246, 2250, 3, 312, 156, 0, 2247, 2248, 7, 21, 0, 0, 2248, 2250, 3, 310, 155, 4, 2249, 2245, 1, 0, 0, 0, 2249, 2247, 1, 0, 0, 0, 2250, 2262, 1, 0, 0, 0, 2251, 2252, 10, 3, 0, 0, 2252, 2253, 7, 22, 0, 0, 2253, 2261, 3, 310, 155, 4, 2254, 2255, 10, 2, 0, 0, 2255, 2256, 7, 21, 0, 0, 2256, 2261, 3, 310, 155, 3, 2257, 2258, 10, 1, 0, 0, 2258, 2259, 5, 260, 0, 0, 2259, 2261, 3, 310, 155, 2, 2260, 2251, 1, 0, 0, 0, 2260, 2254, 1, 0, 0, 0, 2260, 2257, 1, 0, 0, 0, 2261, 2264, 1, 0, 0, 0, 2262, 2260, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 311, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2265, 2266, 6, 156, -1, 0, 2266, 2512, 5, 133, 0, 0, 2267, 2512, 3, 322, 161, 0, 2268, 2269, 3, 358, 179, 0, 2269, 2270, 3, 314, 157, 0, 2270, 2512, 1, 0, 0, 0, 2271, 2272, 5, 286, 0, 0, 2272, 2512, 3, 314, 157, 0, 2273, 2512, 3, 360, 180, 0, 2274, 2512, 3, 320, 160, 0, 2275, 2512, 3, 314, 157, 0, 2276, 2512, 5, 276, 0, 0, 2277, 2512, 5, 272, 0, 0, 2278, 2279, 5, 148, 0, 0, 2279, 2280, 5, 265, 0, 0, 2280, 2281, 3, 310, 155, 0, 2281, 2282, 5, 94, 0, 0, 2282, 2283, 3, 310, 155, 0, 2283, 2284, 5, 266, 0, 0, 2284, 2512, 1, 0, 0, 0, 2285, 2286, 5, 265, 0, 0, 2286, 2289, 3, 304, 152, 0, 2287, 2288, 5, 9, 0, 0, 2288, 2290, 3, 328, 164, 0, 2289, 2287, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2299, 1, 0, 0, 0, 2291, 2292, 5, 263, 0, 0, 2292, 2295, 3, 304, 152, 0, 2293, 2294, 5, 9, 0, 0, 2294, 2296, 3, 328, 164, 0, 2295, 2293, 1, 0, 0, 0, 2295, 2296, 1, 0, 0, 0, 2296, 2298, 1, 0, 0, 0, 2297, 2291, 1, 0, 0, 0, 2298, 2301, 1, 0, 0, 0, 2299, 2300, 1, 0, 0, 0, 2299, 2297, 1, 0, 0, 0, 2300, 2302, 1, 0, 0, 0, 2301, 2299, 1, 0, 0, 0, 2302, 2303, 5, 266, 0, 0, 2303, 2512, 1, 0, 0, 0, 2304, 2305, 5, 168, 0, 0, 2305, 2306, 5, 265, 0, 0, 2306, 2311, 3, 304, 152, 0, 2307, 2308, 5, 263, 0, 0, 2308, 2310, 3, 304, 152, 0, 2309, 2307, 1, 0, 0, 0, 2310, 2313, 1, 0, 0, 0, 2311, 2309, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 2314, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2314, 2315, 5, 266, 0, 0, 2315, 2512, 1, 0, 0, 0, 2316, 2317, 3, 190, 95, 0, 2317, 2318, 5, 265, 0, 0, 2318, 2319, 5, 257, 0, 0, 2319, 2321, 5, 266, 0, 0, 2320, 2322, 3, 338, 169, 0, 2321, 2320, 1, 0, 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2324, 1, 0, 0, 0, 2323, 2325, 3, 340, 170, 0, 2324, 2323, 1, 0, 0, 0, 2324, 2325, 1, 0, 0, 0, 2325, 2512, 1, 0, 0, 0, 2326, 2327, 3, 190, 95, 0, 2327, 2339, 5, 265, 0, 0, 2328, 2330, 3, 276, 138, 0, 2329, 2328, 1, 0, 0, 0, 2329, 2330, 1, 0, 0, 0, 2330, 2331, 1, 0, 0, 0, 2331, 2336, 3, 304, 152, 0, 2332, 2333, 5, 263, 0, 0, 2333, 2335, 3, 304, 152, 0, 2334, 2332, 1, 0, 0, 0, 2335, 2338, 1, 0, 0, 0, 2336, 2334, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2340, 1, 0, 0, 0, 2338, 2336, 1, 0, 0, 0, 2339, 2329, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2351, 1, 0, 0, 0, 2341, 2342, 5, 139, 0, 0, 2342, 2343, 5, 26, 0, 0, 2343, 2348, 3, 264, 132, 0, 2344, 2345, 5, 263, 0, 0, 2345, 2347, 3, 264, 132, 0, 2346, 2344, 1, 0, 0, 0, 2347, 2350, 1, 0, 0, 0, 2348, 2346, 1, 0, 0, 0, 2348, 2349, 1, 0, 0, 0, 2349, 2352, 1, 0, 0, 0, 2350, 2348, 1, 0, 0, 0, 2351, 2341, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 2353, 1, 0, 0, 0, 2353, 2355, 5, 266, 0, 0, 2354, 2356, 3, 338, 169, 0, 2355, 2354, 1, 0, 0, 0, 2355, 2356, 1, 0, 0, 0, 2356, 2358, 1, 0, 0, 0, 2357, 2359, 3, 340, 170, 0, 2358, 2357, 1, 0, 0, 0, 2358, 2359, 1, 0, 0, 0, 2359, 2512, 1, 0, 0, 0, 2360, 2361, 3, 358, 179, 0, 2361, 2362, 5, 273, 0, 0, 2362, 2363, 3, 304, 152, 0, 2363, 2512, 1, 0, 0, 0, 2364, 2373, 5, 265, 0, 0, 2365, 2370, 3, 358, 179, 0, 2366, 2367, 5, 263, 0, 0, 2367, 2369, 3, 358, 179, 0, 2368, 2366, 1, 0, 0, 0, 2369, 2372, 1, 0, 0, 0, 2370, 2368, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2374, 1, 0, 0, 0, 2372, 2370, 1, 0, 0, 0, 2373, 2365, 1, 0, 0, 0, 2373, 2374, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2376, 5, 266, 0, 0, 2376, 2377, 5, 273, 0, 0, 2377, 2512, 3, 304, 152, 0, 2378, 2379, 5, 265, 0, 0, 2379, 2380, 3, 204, 102, 0, 2380, 2381, 5, 266, 0, 0, 2381, 2512, 1, 0, 0, 0, 2382, 2383, 5, 66, 0, 0, 2383, 2384, 5, 265, 0, 0, 2384, 2385, 3, 204, 102, 0, 2385, 2386, 5, 266, 0, 0, 2386, 2512, 1, 0, 0, 0, 2387, 2388, 5, 28, 0, 0, 2388, 2390, 3, 310, 155, 0, 2389, 2391, 3, 336, 168, 0, 2390, 2389, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2390, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2396, 1, 0, 0, 0, 2394, 2395, 5, 59, 0, 0, 2395, 2397, 3, 304, 152, 0, 2396, 2394, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2398, 1, 0, 0, 0, 2398, 2399, 5, 61, 0, 0, 2399, 2512, 1, 0, 0, 0, 2400, 2402, 5, 28, 0, 0, 2401, 2403, 3, 336, 168, 0, 2402, 2401, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2402, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2408, 1, 0, 0, 0, 2406, 2407, 5, 59, 0, 0, 2407, 2409, 3, 304, 152, 0, 2408, 2406, 1, 0, 0, 0, 2408, 2409, 1, 0, 0, 0, 2409, 2410, 1, 0, 0, 0, 2410, 2411, 5, 61, 0, 0, 2411, 2512, 1, 0, 0, 0, 2412, 2413, 5, 29, 0, 0, 2413, 2414, 5, 265, 0, 0, 2414, 2415, 3, 304, 152, 0, 2415, 2416, 5, 9, 0, 0, 2416, 2417, 3, 328, 164, 0, 2417, 2418, 5, 266, 0, 0, 2418, 2512, 1, 0, 0, 0, 2419, 2420, 5, 195, 0, 0, 2420, 2421, 5, 265, 0, 0, 2421, 2422, 3, 304, 152, 0, 2422, 2423, 5, 9, 0, 0, 2423, 2424, 3, 328, 164, 0, 2424, 2425, 5, 266, 0, 0, 2425, 2512, 1, 0, 0, 0, 2426, 2427, 5, 8, 0, 0, 2427, 2436, 5, 267, 0, 0, 2428, 2433, 3, 304, 152, 0, 2429, 2430, 5, 263, 0, 0, 2430, 2432, 3, 304, 152, 0, 2431, 2429, 1, 0, 0, 0, 2432, 2435, 1, 0, 0, 0, 2433, 2431, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2437, 1, 0, 0, 0, 2435, 2433, 1, 0, 0, 0, 2436, 2428, 1, 0, 0, 0, 2436, 2437, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2512, 5, 268, 0, 0, 2439, 2512, 3, 358, 179, 0, 2440, 2512, 5, 40, 0, 0, 2441, 2445, 5, 42, 0, 0, 2442, 2443, 5, 265, 0, 0, 2443, 2444, 5, 277, 0, 0, 2444, 2446, 5, 266, 0, 0, 2445, 2442, 1, 0, 0, 0, 2445, 2446, 1, 0, 0, 0, 2446, 2512, 1, 0, 0, 0, 2447, 2451, 5, 43, 0, 0, 2448, 2449, 5, 265, 0, 0, 2449, 2450, 5, 277, 0, 0, 2450, 2452, 5, 266, 0, 0, 2451, 2448, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2512, 1, 0, 0, 0, 2453, 2457, 5, 119, 0, 0, 2454, 2455, 5, 265, 0, 0, 2455, 2456, 5, 277, 0, 0, 2456, 2458, 5, 266, 0, 0, 2457, 2454, 1, 0, 0, 0, 2457, 2458, 1, 0, 0, 0, 2458, 2512, 1, 0, 0, 0, 2459, 2463, 5, 120, 0, 0, 2460, 2461, 5, 265, 0, 0, 2461, 2462, 5, 277, 0, 0, 2462, 2464, 5, 266, 0, 0, 2463, 2460, 1, 0, 0, 0, 2463, 2464, 1, 0, 0, 0, 2464, 2512, 1, 0, 0, 0, 2465, 2512, 5, 44, 0, 0, 2466, 2512, 5, 41, 0, 0, 2467, 2468, 5, 184, 0, 0, 2468, 2469, 5, 265, 0, 0, 2469, 2470, 3, 310, 155, 0, 2470, 2471, 5, 82, 0, 0, 2471, 2474, 3, 310, 155, 0, 2472, 2473, 5, 78, 0, 0, 2473, 2475, 3, 310, 155, 0, 2474, 2472, 1, 0, 0, 0, 2474, 2475, 1, 0, 0, 0, 2475, 2476, 1, 0, 0, 0, 2476, 2477, 5, 266, 0, 0, 2477, 2512, 1, 0, 0, 0, 2478, 2479, 5, 131, 0, 0, 2479, 2480, 5, 265, 0, 0, 2480, 2483, 3, 310, 155, 0, 2481, 2482, 5, 263, 0, 0, 2482, 2484, 3, 326, 163, 0, 2483, 2481, 1, 0, 0, 0, 2483, 2484, 1, 0, 0, 0, 2484, 2485, 1, 0, 0, 0, 2485, 2486, 5, 266, 0, 0, 2486, 2512, 1, 0, 0, 0, 2487, 2488, 5, 68, 0, 0, 2488, 2489, 5, 265, 0, 0, 2489, 2490, 3, 358, 179, 0, 2490, 2491, 5, 82, 0, 0, 2491, 2492, 3, 310, 155, 0, 2492, 2493, 5, 266, 0, 0, 2493, 2512, 1, 0, 0, 0, 2494, 2495, 5, 265, 0, 0, 2495, 2496, 3, 304, 152, 0, 2496, 2497, 5, 266, 0, 0, 2497, 2512, 1, 0, 0, 0, 2498, 2499, 5, 88, 0, 0, 2499, 2508, 5, 265, 0, 0, 2500, 2505, 3, 354, 177, 0, 2501, 2502, 5, 263, 0, 0, 2502, 2504, 3, 354, 177, 0, 2503, 2501, 1, 0, 0, 0, 2504, 2507, 1, 0, 0, 0, 2505, 2503, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2509, 1, 0, 0, 0, 2507, 2505, 1, 0, 0, 0, 2508, 2500, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2510, 1, 0, 0, 0, 2510, 2512, 5, 266, 0, 0, 2511, 2265, 1, 0, 0, 0, 2511, 2267, 1, 0, 0, 0, 2511, 2268, 1, 0, 0, 0, 2511, 2271, 1, 0, 0, 0, 2511, 2273, 1, 0, 0, 0, 2511, 2274, 1, 0, 0, 0, 2511, 2275, 1, 0, 0, 0, 2511, 2276, 1, 0, 0, 0, 2511, 2277, 1, 0, 0, 0, 2511, 2278, 1, 0, 0, 0, 2511, 2285, 1, 0, 0, 0, 2511, 2304, 1, 0, 0, 0, 2511, 2316, 1, 0, 0, 0, 2511, 2326, 1, 0, 0, 0, 2511, 2360, 1, 0, 0, 0, 2511, 2364, 1, 0, 0, 0, 2511, 2378, 1, 0, 0, 0, 2511, 2382, 1, 0, 0, 0, 2511, 2387, 1, 0, 0, 0, 2511, 2400, 1, 0, 0, 0, 2511, 2412, 1, 0, 0, 0, 2511, 2419, 1, 0, 0, 0, 2511, 2426, 1, 0, 0, 0, 2511, 2439, 1, 0, 0, 0, 2511, 2440, 1, 0, 0, 0, 2511, 2441, 1, 0, 0, 0, 2511, 2447, 1, 0, 0, 0, 2511, 2453, 1, 0, 0, 0, 2511, 2459, 1, 0, 0, 0, 2511, 2465, 1, 0, 0, 0, 2511, 2466, 1, 0, 0, 0, 2511, 2467, 1, 0, 0, 0, 2511, 2478, 1, 0, 0, 0, 2511, 2487, 1, 0, 0, 0, 2511, 2494, 1, 0, 0, 0, 2511, 2498, 1, 0, 0, 0, 2512, 2523, 1, 0, 0, 0, 2513, 2514, 10, 15, 0, 0, 2514, 2515, 5, 267, 0, 0, 2515, 2516, 3, 310, 155, 0, 2516, 2517, 5, 268, 0, 0, 2517, 2522, 1, 0, 0, 0, 2518, 2519, 10, 13, 0, 0, 2519, 2520, 5, 261, 0, 0, 2520, 2522, 3, 358, 179, 0, 2521, 2513, 1, 0, 0, 0, 2521, 2518, 1, 0, 0, 0, 2522, 2525, 1, 0, 0, 0, 2523, 2521, 1, 0, 0, 0, 2523, 2524, 1, 0, 0, 0, 2524, 313, 1, 0, 0, 0, 2525, 2523, 1, 0, 0, 0, 2526, 2533, 5, 274, 0, 0, 2527, 2530, 5, 275, 0, 0, 2528, 2529, 5, 198, 0, 0, 2529, 2531, 5, 274, 0, 0, 2530, 2528, 1, 0, 0, 0, 2530, 2531, 1, 0, 0, 0, 2531, 2533, 1, 0, 0, 0, 2532, 2526, 1, 0, 0, 0, 2532, 2527, 1, 0, 0, 0, 2533, 315, 1, 0, 0, 0, 2534, 2535, 7, 23, 0, 0, 2535, 317, 1, 0, 0, 0, 2536, 2537, 7, 24, 0, 0, 2537, 319, 1, 0, 0, 0, 2538, 2539, 7, 25, 0, 0, 2539, 321, 1, 0, 0, 0, 2540, 2541, 5, 277, 0, 0, 2541, 2555, 3, 324, 162, 0, 2542, 2543, 5, 265, 0, 0, 2543, 2544, 5, 277, 0, 0, 2544, 2545, 5, 266, 0, 0, 2545, 2555, 3, 324, 162, 0, 2546, 2547, 5, 101, 0, 0, 2547, 2548, 5, 277, 0, 0, 2548, 2555, 3, 324, 162, 0, 2549, 2550, 5, 101, 0, 0, 2550, 2551, 5, 265, 0, 0, 2551, 2552, 5, 277, 0, 0, 2552, 2553, 5, 266, 0, 0, 2553, 2555, 3, 324, 162, 0, 2554, 2540, 1, 0, 0, 0, 2554, 2542, 1, 0, 0, 0, 2554, 2546, 1, 0, 0, 0, 2554, 2549, 1, 0, 0, 0, 2555, 323, 1, 0, 0, 0, 2556, 2557, 7, 26, 0, 0, 2557, 325, 1, 0, 0, 0, 2558, 2559, 7, 27, 0, 0, 2559, 327, 1, 0, 0, 0, 2560, 2561, 6, 164, -1, 0, 2561, 2562, 5, 8, 0, 0, 2562, 2563, 5, 251, 0, 0, 2563, 2564, 3, 328, 164, 0, 2564, 2565, 5, 253, 0, 0, 2565, 2606, 1, 0, 0, 0, 2566, 2567, 5, 235, 0, 0, 2567, 2568, 5, 251, 0, 0, 2568, 2569, 3, 328, 164, 0, 2569, 2570, 5, 263, 0, 0, 2570, 2571, 3, 328, 164, 0, 2571, 2572, 5, 253, 0, 0, 2572, 2606, 1, 0, 0, 0, 2573, 2574, 5, 240, 0, 0, 2574, 2575, 5, 251, 0, 0, 2575, 2576, 3, 358, 179, 0, 2576, 2583, 3, 328, 164, 0, 2577, 2578, 5, 263, 0, 0, 2578, 2579, 3, 358, 179, 0, 2579, 2580, 3, 328, 164, 0, 2580, 2582, 1, 0, 0, 0, 2581, 2577, 1, 0, 0, 0, 2582, 2585, 1, 0, 0, 0, 2583, 2581, 1, 0, 0, 0, 2583, 2584, 1, 0, 0, 0, 2584, 2586, 1, 0, 0, 0, 2585, 2583, 1, 0, 0, 0, 2586, 2587, 5, 253, 0, 0, 2587, 2606, 1, 0, 0, 0, 2588, 2591, 3, 334, 167, 0, 2589, 2591, 3, 330, 165, 0, 2590, 2588, 1, 0, 0, 0, 2590, 2589, 1, 0, 0, 0, 2591, 2603, 1, 0, 0, 0, 2592, 2593, 5, 265, 0, 0, 2593, 2598, 3, 332, 166, 0, 2594, 2595, 5, 263, 0, 0, 2595, 2597, 3, 332, 166, 0, 2596, 2594, 1, 0, 0, 0, 2597, 2600, 1, 0, 0, 0, 2598, 2596, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2601, 1, 0, 0, 0, 2600, 2598, 1, 0, 0, 0, 2601, 2602, 5, 266, 0, 0, 2602, 2604, 1, 0, 0, 0, 2603, 2592, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2606, 1, 0, 0, 0, 2605, 2560, 1, 0, 0, 0, 2605, 2566, 1, 0, 0, 0, 2605, 2573, 1, 0, 0, 0, 2605, 2590, 1, 0, 0, 0, 2606, 2611, 1, 0, 0, 0, 2607, 2608, 10, 5, 0, 0, 2608, 2610, 5, 8, 0, 0, 2609, 2607, 1, 0, 0, 0, 2610, 2613, 1, 0, 0, 0, 2611, 2609, 1, 0, 0, 0, 2611, 2612, 1, 0, 0, 0, 2612, 329, 1, 0, 0, 0, 2613, 2611, 1, 0, 0, 0, 2614, 2615, 7, 28, 0, 0, 2615, 331, 1, 0, 0, 0, 2616, 2619, 5, 277, 0, 0, 2617, 2619, 3, 328, 164, 0, 2618, 2616, 1, 0, 0, 0, 2618, 2617, 1, 0, 0, 0, 2619, 333, 1, 0, 0, 0, 2620, 2625, 5, 284, 0, 0, 2621, 2625, 5, 285, 0, 0, 2622, 2625, 5, 286, 0, 0, 2623, 2625, 3, 358, 179, 0, 2624, 2620, 1, 0, 0, 0, 2624, 2621, 1, 0, 0, 0, 2624, 2622, 1, 0, 0, 0, 2624, 2623, 1, 0, 0, 0, 2625, 335, 1, 0, 0, 0, 2626, 2627, 5, 214, 0, 0, 2627, 2628, 3, 304, 152, 0, 2628, 2629, 5, 192, 0, 0, 2629, 2630, 3, 304, 152, 0, 2630, 337, 1, 0, 0, 0, 2631, 2632, 5, 74, 0, 0, 2632, 2633, 5, 265, 0, 0, 2633, 2634, 5, 215, 0, 0, 2634, 2635, 3, 306, 153, 0, 2635, 2636, 5, 266, 0, 0, 2636, 339, 1, 0, 0, 0, 2637, 2638, 5, 143, 0, 0, 2638, 2649, 5, 265, 0, 0, 2639, 2640, 5, 145, 0, 0, 2640, 2641, 5, 26, 0, 0, 2641, 2646, 3, 304, 152, 0, 2642, 2643, 5, 263, 0, 0, 2643, 2645, 3, 304, 152, 0, 2644, 2642, 1, 0, 0, 0, 2645, 2648, 1, 0, 0, 0, 2646, 2644, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 2650, 1, 0, 0, 0, 2648, 2646, 1, 0, 0, 0, 2649, 2639, 1, 0, 0, 0, 2649, 2650, 1, 0, 0, 0, 2650, 2661, 1, 0, 0, 0, 2651, 2652, 5, 139, 0, 0, 2652, 2653, 5, 26, 0, 0, 2653, 2658, 3, 264, 132, 0, 2654, 2655, 5, 263, 0, 0, 2655, 2657, 3, 264, 132, 0, 2656, 2654, 1, 0, 0, 0, 2657, 2660, 1, 0, 0, 0, 2658, 2656, 1, 0, 0, 0, 2658, 2659, 1, 0, 0, 0, 2659, 2662, 1, 0, 0, 0, 2660, 2658, 1, 0, 0, 0, 2661, 2651, 1, 0, 0, 0, 2661, 2662, 1, 0, 0, 0, 2662, 2664, 1, 0, 0, 0, 2663, 2665, 3, 342, 171, 0, 2664, 2663, 1, 0, 0, 0, 2664, 2665, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2667, 5, 266, 0, 0, 2667, 341, 1, 0, 0, 0, 2668, 2669, 5, 154, 0, 0, 2669, 2685, 3, 344, 172, 0, 2670, 2671, 5, 169, 0, 0, 2671, 2685, 3, 344, 172, 0, 2672, 2673, 5, 154, 0, 0, 2673, 2674, 5, 15, 0, 0, 2674, 2675, 3, 344, 172, 0, 2675, 2676, 5, 5, 0, 0, 2676, 2677, 3, 344, 172, 0, 2677, 2685, 1, 0, 0, 0, 2678, 2679, 5, 169, 0, 0, 2679, 2680, 5, 15, 0, 0, 2680, 2681, 3, 344, 172, 0, 2681, 2682, 5, 5, 0, 0, 2682, 2683, 3, 344, 172, 0, 2683, 2685, 1, 0, 0, 0, 2684, 2668, 1, 0, 0, 0, 2684, 2670, 1, 0, 0, 0, 2684, 2672, 1, 0, 0, 0, 2684, 2678, 1, 0, 0, 0, 2685, 343, 1, 0, 0, 0, 2686, 2687, 5, 199, 0, 0, 2687, 2696, 5, 149, 0, 0, 2688, 2689, 5, 199, 0, 0, 2689, 2696, 5, 77, 0, 0, 2690, 2691, 5, 39, 0, 0, 2691, 2696, 5, 168, 0, 0, 2692, 2693, 3, 304, 152, 0, 2693, 2694, 7, 29, 0, 0, 2694, 2696, 1, 0, 0, 0, 2695, 2686, 1, 0, 0, 0, 2695, 2688, 1, 0, 0, 0, 2695, 2690, 1, 0, 0, 0, 2695, 2692, 1, 0, 0, 0, 2696, 345, 1, 0, 0, 0, 2697, 2698, 3, 358, 179, 0, 2698, 2699, 5, 261, 0, 0, 2699, 2700, 3, 358, 179, 0, 2700, 2703, 1, 0, 0, 0, 2701, 2703, 3, 358, 179, 0, 2702, 2697, 1, 0, 0, 0, 2702, 2701, 1, 0, 0, 0, 2703, 347, 1, 0, 0, 0, 2704, 2709, 3, 346, 173, 0, 2705, 2706, 5, 263, 0, 0, 2706, 2708, 3, 346, 173, 0, 2707, 2705, 1, 0, 0, 0, 2708, 2711, 1, 0, 0, 0, 2709, 2707, 1, 0, 0, 0, 2709, 2710, 1, 0, 0, 0, 2710, 349, 1, 0, 0, 0, 2711, 2709, 1, 0, 0, 0, 2712, 2726, 5, 2, 0, 0, 2713, 2726, 5, 4, 0, 0, 2714, 2726, 5, 58, 0, 0, 2715, 2726, 5, 37, 0, 0, 2716, 2726, 5, 99, 0, 0, 2717, 2726, 5, 162, 0, 0, 2718, 2723, 5, 174, 0, 0, 2719, 2720, 5, 265, 0, 0, 2720, 2721, 3, 358, 179, 0, 2721, 2722, 5, 266, 0, 0, 2722, 2724, 1, 0, 0, 0, 2723, 2719, 1, 0, 0, 0, 2723, 2724, 1, 0, 0, 0, 2724, 2726, 1, 0, 0, 0, 2725, 2712, 1, 0, 0, 0, 2725, 2713, 1, 0, 0, 0, 2725, 2714, 1, 0, 0, 0, 2725, 2715, 1, 0, 0, 0, 2725, 2716, 1, 0, 0, 0, 2725, 2717, 1, 0, 0, 0, 2725, 2718, 1, 0, 0, 0, 2726, 351, 1, 0, 0, 0, 2727, 2728, 7, 30, 0, 0, 2728, 353, 1, 0, 0, 0, 2729, 2734, 3, 358, 179, 0, 2730, 2731, 5, 261, 0, 0, 2731, 2733, 3, 358, 179, 0, 2732, 2730, 1, 0, 0, 0, 2733, 2736, 1, 0, 0, 0, 2734, 2732, 1, 0, 0, 0, 2734, 2735, 1, 0, 0, 0, 2735, 355, 1, 0, 0, 0, 2736, 2734, 1, 0, 0, 0, 2737, 2738, 5, 166, 0, 0, 2738, 2744, 3, 358, 179, 0, 2739, 2740, 5, 204, 0, 0, 2740, 2744, 3, 358, 179, 0, 2741, 2742, 5, 87, 0, 0, 2742, 2744, 3, 358, 179, 0, 2743, 2737, 1, 0, 0, 0, 2743, 2739, 1, 0, 0, 0, 2743, 2741, 1, 0, 0, 0, 2744, 357, 1, 0, 0, 0, 2745, 2751, 5, 280, 0, 0, 2746, 2751, 5, 274, 0, 0, 2747, 2751, 3, 364, 182, 0, 2748, 2751, 5, 283, 0, 0, 2749, 2751, 5, 281, 0, 0, 2750, 2745, 1, 0, 0, 0, 2750, 2746, 1, 0, 0, 0, 2750, 2747, 1, 0, 0, 0, 2750, 2748, 1, 0, 0, 0, 2750, 2749, 1, 0, 0, 0, 2751, 359, 1, 0, 0, 0, 2752, 2754, 5, 256, 0, 0, 2753, 2752, 1, 0, 0, 0, 2753, 2754, 1, 0, 0, 0, 2754, 2755, 1, 0, 0, 0, 2755, 2765, 5, 278, 0, 0, 2756, 2758, 5, 256, 0, 0, 2757, 2756, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2765, 5, 279, 0, 0, 2760, 2762, 5, 256, 0, 0, 2761, 2760, 1, 0, 0, 0, 2761, 2762, 1, 0, 0, 0, 2762, 2763, 1, 0, 0, 0, 2763, 2765, 5, 277, 0, 0, 2764, 2753, 1, 0, 0, 0, 2764, 2757, 1, 0, 0, 0, 2764, 2761, 1, 0, 0, 0, 2765, 361, 1, 0, 0, 0, 2766, 2767, 7, 31, 0, 0, 2767, 363, 1, 0, 0, 0, 2768, 2769, 7, 32, 0, 0, 2769, 365, 1, 0, 0, 0, 352, 369, 376, 400, 413, 417, 421, 430, 435, 439, 445, 447, 452, 456, 460, 467, 472, 478, 482, 491, 498, 502, 507, 509, 514, 518, 525, 529, 534, 538, 542, 546, 554, 559, 563, 571, 575, 584, 587, 590, 596, 603, 614, 619, 624, 629, 634, 643, 646, 649, 653, 679, 705, 714, 724, 727, 741, 759, 761, 770, 781, 790, 797, 801, 808, 814, 817, 822, 829, 843, 856, 861, 866, 872, 908, 911, 917, 920, 926, 932, 944, 946, 957, 965, 970, 974, 979, 986, 990, 994, 1000, 1004, 1008, 1017, 1020, 1023, 1031, 1045, 1052, 1065, 1071, 1076, 1079, 1082, 1087, 1091, 1100, 1105, 1111, 1115, 1120, 1125, 1128, 1136, 1139, 1143, 1155, 1158, 1162, 1167, 1171, 1187, 1192, 1199, 1202, 1208, 1211, 1218, 1221, 1225, 1230, 1233, 1240, 1243, 1267, 1281, 1285, 1289, 1309, 1311, 1313, 1322, 1324, 1333, 1335, 1344, 1346, 1351, 1360, 1369, 1378, 1389, 1395, 1400, 1403, 1416, 1426, 1430, 1435, 1446, 1451, 1484, 1492, 1497, 1501, 1505, 1510, 1514, 1519, 1524, 1529, 1533, 1542, 1545, 1549, 1556, 1567, 1573, 1577, 1583, 1593, 1600, 1605, 1610, 1615, 1621, 1624, 1633, 1636, 1639, 1645, 1651, 1661, 1664, 1668, 1672, 1679, 1682, 1688, 1694, 1697, 1700, 1704, 1714, 1725, 1730, 1733, 1737, 1744, 1754, 1766, 1772, 1774, 1783, 1786, 1793, 1803, 1809, 1817, 1828, 1838, 1849, 1851, 1857, 1862, 1872, 1875, 1881, 1883, 1891, 1897, 1900, 1902, 1914, 1921, 1925, 1929, 1933, 1936, 1943, 1952, 1955, 1959, 1964, 1968, 1971, 1978, 1989, 1992, 1996, 2000, 2009, 2012, 2019, 2033, 2037, 2041, 2045, 2049, 2053, 2057, 2061, 2071, 2082, 2087, 2100, 2102, 2108, 2112, 2114, 2122, 2129, 2134, 2147, 2153, 2161, 2168, 2172, 2180, 2182, 2193, 2201, 2210, 2216, 2221, 2227, 2233, 2238, 2243, 2249, 2260, 2262, 2289, 2295, 2299, 2311, 2321, 2324, 2329, 2336, 2339, 2348, 2351, 2355, 2358, 2370, 2373, 2392, 2396, 2404, 2408, 2433, 2436, 2445, 2451, 2457, 2463, 2474, 2483, 2505, 2508, 2511, 2521, 2523, 2530, 2532, 2554, 2583, 2590, 2598, 2603, 2605, 2611, 2618, 2624, 2646, 2649, 2658, 2661, 2664, 2684, 2695, 2702, 2709, 2723, 2725, 2734, 2743, 2750, 2753, 2757, 2761, 2764] \ No newline at end of file diff --git a/src/lib/impala/ImpalaSqlParser.ts b/src/lib/impala/ImpalaSqlParser.ts index 76ae3471..b9a88388 100644 --- a/src/lib/impala/ImpalaSqlParser.ts +++ b/src/lib/impala/ImpalaSqlParser.ts @@ -2269,7 +2269,7 @@ export class ImpalaSqlParser extends SQLParserBase { this.state = 732; this.match(ImpalaSqlParser.KW_CHANGE); this.state = 733; - this.match(ImpalaSqlParser.KW_COLUMN); + this.columnNamePath(); this.state = 734; this.columnSpecWithKudu(); } @@ -7132,38 +7132,30 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1675; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 195, this.context) ) { - case 1: - { - this.state = 1674; - this.columnSpec(); - } - break; - } - this.state = 1684; + this.state = 1674; + this.columnSpec(); + this.state = 1682; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 16 || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 33619969) !== 0) || _la === 132 || _la === 133) { { - this.state = 1677; + this.state = 1675; this.kuduAttributes(); - this.state = 1681; + this.state = 1679; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 196, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 195, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 1678; + this.state = 1676; this.kuduAttributes(); } } } - this.state = 1683; + this.state = 1681; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 196, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 195, this.context); } } } @@ -7192,44 +7184,44 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1686; + this.state = 1684; this.columnNamePathCreate(); - this.state = 1687; + this.state = 1685; this.type_(0); - this.state = 1690; + this.state = 1688; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 198, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 197, this.context) ) { case 1: { - this.state = 1688; + this.state = 1686; this.match(ImpalaSqlParser.KW_COMMENT); - this.state = 1689; + this.state = 1687; this.stringLiteral(); } break; } - this.state = 1699; + this.state = 1697; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 16 || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 33619969) !== 0) || _la === 132 || _la === 133) { { - this.state = 1692; + this.state = 1690; this.kuduAttributes(); - this.state = 1696; + this.state = 1694; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 199, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 198, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 1693; + this.state = 1691; this.kuduAttributes(); } } } - this.state = 1698; + this.state = 1696; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 199, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 198, this.context); } } } @@ -7257,23 +7249,23 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1706; + this.state = 1704; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_NOT: case ImpalaSqlParser.KW_NULL: { - this.state = 1702; + this.state = 1700; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 1701; + this.state = 1699; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 1704; + this.state = 1702; this.match(ImpalaSqlParser.KW_NULL); } break; @@ -7282,7 +7274,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.KW_DEFAULT: case ImpalaSqlParser.KW_ENCODING: { - this.state = 1705; + this.state = 1703; this.kuduStorageAttr(); } break; @@ -7309,42 +7301,42 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new KuduStorageAttrContext(this.context, this.state); this.enterRule(localContext, 226, ImpalaSqlParser.RULE_kuduStorageAttr); try { - this.state = 1716; + this.state = 1714; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ENCODING: this.enterOuterAlt(localContext, 1); { - this.state = 1708; + this.state = 1706; this.match(ImpalaSqlParser.KW_ENCODING); - this.state = 1709; + this.state = 1707; this.expression(); } break; case ImpalaSqlParser.KW_COMPRESSION: this.enterOuterAlt(localContext, 2); { - this.state = 1710; + this.state = 1708; this.match(ImpalaSqlParser.KW_COMPRESSION); - this.state = 1711; + this.state = 1709; this.expression(); } break; case ImpalaSqlParser.KW_DEFAULT: this.enterOuterAlt(localContext, 3); { - this.state = 1712; + this.state = 1710; this.match(ImpalaSqlParser.KW_DEFAULT); - this.state = 1713; + this.state = 1711; this.expression(); } break; case ImpalaSqlParser.KW_BLOCK_SIZE: this.enterOuterAlt(localContext, 4); { - this.state = 1714; + this.state = 1712; this.match(ImpalaSqlParser.KW_BLOCK_SIZE); - this.state = 1715; + this.state = 1713; this.number_(); } break; @@ -7373,7 +7365,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1718; + this.state = 1716; _la = this.tokenStream.LA(1); if(!(((((_la - 245)) & ~0x1F) === 0 && ((1 << (_la - 245)) & 15) !== 0))) { this.errorHandler.recoverInline(this); @@ -7405,7 +7397,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1720; + this.state = 1718; _la = this.tokenStream.LA(1); if(!(_la === 147 || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 31) !== 0))) { this.errorHandler.recoverInline(this); @@ -7436,41 +7428,41 @@ export class ImpalaSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 1735; + this.state = 1733; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_HASH: this.enterOuterAlt(localContext, 1); { { - this.state = 1722; + this.state = 1720; this.hashClause(); - this.state = 1727; + this.state = 1725; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 204, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 203, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 1723; + this.state = 1721; this.match(ImpalaSqlParser.COMMA); - this.state = 1724; + this.state = 1722; this.hashClause(); } } } - this.state = 1729; + this.state = 1727; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 204, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 203, this.context); } - this.state = 1732; + this.state = 1730; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 263) { { - this.state = 1730; + this.state = 1728; this.match(ImpalaSqlParser.COMMA); - this.state = 1731; + this.state = 1729; this.rangeClause(); } } @@ -7481,7 +7473,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.KW_RANGE: this.enterOuterAlt(localContext, 2); { - this.state = 1734; + this.state = 1732; this.rangeClause(); } break; @@ -7510,21 +7502,21 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1737; + this.state = 1735; this.match(ImpalaSqlParser.KW_HASH); - this.state = 1739; + this.state = 1737; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 265) { { - this.state = 1738; + this.state = 1736; this.columnAliases(); } } - this.state = 1741; + this.state = 1739; this.match(ImpalaSqlParser.KW_PARTITIONS); - this.state = 1742; + this.state = 1740; this.number_(); } } @@ -7549,47 +7541,47 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1744; + this.state = 1742; this.match(ImpalaSqlParser.KW_RANGE); - this.state = 1746; + this.state = 1744; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 208, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 207, this.context) ) { case 1: { - this.state = 1745; + this.state = 1743; this.columnAliases(); } break; } - this.state = 1748; + this.state = 1746; this.match(ImpalaSqlParser.LPAREN); { - this.state = 1749; + this.state = 1747; this.match(ImpalaSqlParser.KW_PARTITION); - this.state = 1750; + this.state = 1748; this.kuduPartitionSpec(); - this.state = 1756; + this.state = 1754; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 209, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 208, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 1751; + this.state = 1749; this.match(ImpalaSqlParser.COMMA); - this.state = 1752; + this.state = 1750; this.match(ImpalaSqlParser.KW_PARTITION); - this.state = 1753; + this.state = 1751; this.kuduPartitionSpec(); } } } - this.state = 1758; + this.state = 1756; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 209, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 208, this.context); } } - this.state = 1759; + this.state = 1757; this.match(ImpalaSqlParser.RPAREN); } } @@ -7612,17 +7604,17 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 238, ImpalaSqlParser.RULE_kuduPartitionSpec); let _la: number; try { - this.state = 1776; + this.state = 1774; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_VALUE: this.enterOuterAlt(localContext, 1); { - this.state = 1761; + this.state = 1759; this.match(ImpalaSqlParser.KW_VALUE); - this.state = 1762; + this.state = 1760; this.partitionCol(); - this.state = 1763; + this.state = 1761; this.expression(); } break; @@ -7698,28 +7690,28 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.DOUBLE_PRECISION: this.enterOuterAlt(localContext, 2); { - this.state = 1768; + this.state = 1766; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805323008) !== 0) || ((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 1442841375) !== 0) || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 2218795145) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 269631421) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 271654979) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 537926659) !== 0) || ((((_la - 217)) & ~0x1F) === 0 && ((1 << (_la - 217)) & 16393) !== 0) || ((((_la - 255)) & ~0x1F) === 0 && ((1 << (_la - 255)) & 2549744643) !== 0)) { { - this.state = 1765; + this.state = 1763; this.expression(); - this.state = 1766; + this.state = 1764; this.rangeOperator(); } } - this.state = 1770; + this.state = 1768; this.match(ImpalaSqlParser.KW_VALUES); - this.state = 1774; + this.state = 1772; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { case 1: { - this.state = 1771; + this.state = 1769; this.rangeOperator(); - this.state = 1772; + this.state = 1770; this.expression(); } break; @@ -7748,30 +7740,30 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new CacheSpecContext(this.context, this.state); this.enterRule(localContext, 240, ImpalaSqlParser.RULE_cacheSpec); try { - this.state = 1788; + this.state = 1786; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_CACHED: this.enterOuterAlt(localContext, 1); { - this.state = 1778; + this.state = 1776; this.match(ImpalaSqlParser.KW_CACHED); - this.state = 1779; + this.state = 1777; this.match(ImpalaSqlParser.KW_IN); - this.state = 1780; + this.state = 1778; this.identifier(); - this.state = 1785; + this.state = 1783; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 213, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 212, this.context) ) { case 1: { - this.state = 1781; + this.state = 1779; this.match(ImpalaSqlParser.KW_WITH); - this.state = 1782; + this.state = 1780; this.match(ImpalaSqlParser.KW_REPLICATION); - this.state = 1783; + this.state = 1781; this.match(ImpalaSqlParser.EQ); - this.state = 1784; + this.state = 1782; this.number_(); } break; @@ -7781,7 +7773,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.KW_UNCACHED: this.enterOuterAlt(localContext, 2); { - this.state = 1787; + this.state = 1785; this.match(ImpalaSqlParser.KW_UNCACHED); } break; @@ -7807,7 +7799,7 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new RangeOperatorContext(this.context, this.state); this.enterRule(localContext, 242, ImpalaSqlParser.RULE_rangeOperator); try { - this.state = 1795; + this.state = 1793; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ARRAY: @@ -7888,28 +7880,28 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.LT: this.enterOuterAlt(localContext, 2); { - this.state = 1791; + this.state = 1789; this.match(ImpalaSqlParser.LT); } break; case ImpalaSqlParser.LTE: this.enterOuterAlt(localContext, 3); { - this.state = 1792; + this.state = 1790; this.match(ImpalaSqlParser.LTE); } break; case ImpalaSqlParser.GT: this.enterOuterAlt(localContext, 4); { - this.state = 1793; + this.state = 1791; this.match(ImpalaSqlParser.GT); } break; case ImpalaSqlParser.GTE: this.enterOuterAlt(localContext, 5); { - this.state = 1794; + this.state = 1792; this.match(ImpalaSqlParser.GTE); } break; @@ -7935,55 +7927,55 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new PartitionColContext(this.context, this.state); this.enterRule(localContext, 244, ImpalaSqlParser.RULE_partitionCol); try { - this.state = 1805; + this.state = 1803; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.EQ: this.enterOuterAlt(localContext, 1); { - this.state = 1797; + this.state = 1795; this.match(ImpalaSqlParser.EQ); } break; case ImpalaSqlParser.NEQ: this.enterOuterAlt(localContext, 2); { - this.state = 1798; + this.state = 1796; this.match(ImpalaSqlParser.NEQ); } break; case ImpalaSqlParser.KW_LIKE: this.enterOuterAlt(localContext, 3); { - this.state = 1799; + this.state = 1797; this.match(ImpalaSqlParser.KW_LIKE); } break; case ImpalaSqlParser.KW_RLIKE: this.enterOuterAlt(localContext, 4); { - this.state = 1800; + this.state = 1798; this.match(ImpalaSqlParser.KW_RLIKE); } break; case ImpalaSqlParser.KW_REGEXP: this.enterOuterAlt(localContext, 5); { - this.state = 1801; + this.state = 1799; this.match(ImpalaSqlParser.KW_REGEXP); } break; case ImpalaSqlParser.KW_BETWEEN: this.enterOuterAlt(localContext, 6); { - this.state = 1802; + this.state = 1800; this.match(ImpalaSqlParser.KW_BETWEEN); } break; case ImpalaSqlParser.KW_IN: this.enterOuterAlt(localContext, 7); { - this.state = 1803; + this.state = 1801; this.match(ImpalaSqlParser.KW_IN); } break; @@ -8062,7 +8054,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.DOUBLE_PRECISION: this.enterOuterAlt(localContext, 8); { - this.state = 1804; + this.state = 1802; this.rangeOperator(); } break; @@ -8091,16 +8083,16 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1807; + this.state = 1805; this.match(ImpalaSqlParser.KW_LIKE); - this.state = 1808; + this.state = 1806; this.qualifiedName(); - this.state = 1811; + this.state = 1809; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65 || _la === 95) { { - this.state = 1809; + this.state = 1807; localContext._optionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 65 || _la === 95)) { @@ -8110,7 +8102,7 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1810; + this.state = 1808; this.match(ImpalaSqlParser.KW_PROPERTIES); } } @@ -8138,27 +8130,27 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1813; + this.state = 1811; this.match(ImpalaSqlParser.LPAREN); - this.state = 1814; + this.state = 1812; this.property(); - this.state = 1819; + this.state = 1817; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 1815; + this.state = 1813; this.match(ImpalaSqlParser.COMMA); - this.state = 1816; + this.state = 1814; this.property(); } } - this.state = 1821; + this.state = 1819; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1822; + this.state = 1820; this.match(ImpalaSqlParser.RPAREN); } } @@ -8183,29 +8175,29 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1824; + this.state = 1822; this.match(ImpalaSqlParser.LPAREN); - this.state = 1825; + this.state = 1823; this.columnSpec(); - this.state = 1830; + this.state = 1828; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 219, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 218, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 1826; + this.state = 1824; this.match(ImpalaSqlParser.COMMA); - this.state = 1827; + this.state = 1825; this.columnSpec(); } } } - this.state = 1832; + this.state = 1830; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 219, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 218, this.context); } - this.state = 1833; + this.state = 1831; this.match(ImpalaSqlParser.RPAREN); } } @@ -8230,21 +8222,21 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1835; + this.state = 1833; this.expression(); - this.state = 1840; + this.state = 1838; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 1836; + this.state = 1834; this.match(ImpalaSqlParser.COMMA); - this.state = 1837; + this.state = 1835; this.expression(); } } - this.state = 1842; + this.state = 1840; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -8271,31 +8263,31 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1843; + this.state = 1841; this.match(ImpalaSqlParser.KW_DELIMITED); - this.state = 1853; + this.state = 1851; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 71) { { - this.state = 1844; + this.state = 1842; this.match(ImpalaSqlParser.KW_FIELDS); - this.state = 1845; + this.state = 1843; this.match(ImpalaSqlParser.KW_TERMINATED); - this.state = 1846; + this.state = 1844; this.match(ImpalaSqlParser.KW_BY); - this.state = 1847; + this.state = 1845; this.stringLiteral(); - this.state = 1851; + this.state = 1849; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 1848; + this.state = 1846; this.match(ImpalaSqlParser.KW_ESCAPED); - this.state = 1849; + this.state = 1847; this.match(ImpalaSqlParser.KW_BY); - this.state = 1850; + this.state = 1848; this.stringLiteral(); } } @@ -8303,18 +8295,18 @@ export class ImpalaSqlParser extends SQLParserBase { } } - this.state = 1859; + this.state = 1857; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 117) { { - this.state = 1855; + this.state = 1853; this.match(ImpalaSqlParser.KW_LINES); - this.state = 1856; + this.state = 1854; this.match(ImpalaSqlParser.KW_TERMINATED); - this.state = 1857; + this.state = 1855; this.match(ImpalaSqlParser.KW_BY); - this.state = 1858; + this.state = 1856; this.stringLiteral(); } } @@ -8342,16 +8334,16 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1861; + this.state = 1859; this.identifier(); - this.state = 1864; + this.state = 1862; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 249) { { - this.state = 1862; + this.state = 1860; this.match(ImpalaSqlParser.EQ); - this.state = 1863; + this.state = 1861; this.expression(); } } @@ -8379,55 +8371,55 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1866; + this.state = 1864; this.queryTerm(0); - this.state = 1877; + this.state = 1875; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 139) { { - this.state = 1867; + this.state = 1865; this.match(ImpalaSqlParser.KW_ORDER); - this.state = 1868; + this.state = 1866; this.match(ImpalaSqlParser.KW_BY); - this.state = 1869; + this.state = 1867; this.sortItem(); - this.state = 1874; + this.state = 1872; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 1870; + this.state = 1868; this.match(ImpalaSqlParser.COMMA); - this.state = 1871; + this.state = 1869; this.sortItem(); } } - this.state = 1876; + this.state = 1874; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1885; + this.state = 1883; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 116) { { - this.state = 1879; + this.state = 1877; this.match(ImpalaSqlParser.KW_LIMIT); - this.state = 1880; + this.state = 1878; localContext._rows = this.expression(); - this.state = 1883; + this.state = 1881; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 135) { { - this.state = 1881; + this.state = 1879; this.match(ImpalaSqlParser.KW_OFFSET); - this.state = 1882; + this.state = 1880; localContext._offset = this.match(ImpalaSqlParser.INTEGER_VALUE); } } @@ -8475,13 +8467,13 @@ export class ImpalaSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 1888; + this.state = 1886; this.queryPrimary(); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 1904; + this.state = 1902; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 232, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 231, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -8489,31 +8481,31 @@ export class ImpalaSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 1902; + this.state = 1900; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { case 1: { localContext = new SetOperationContext(new QueryTermContext(parentContext, parentState)); (localContext as SetOperationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_queryTerm); - this.state = 1890; + this.state = 1888; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 1891; + this.state = 1889; (localContext as SetOperationContext)._operator = this.match(ImpalaSqlParser.KW_INTERSECT); - this.state = 1893; + this.state = 1891; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2 || _la === 57) { { - this.state = 1892; + this.state = 1890; this.setQuantifier(); } } - this.state = 1895; + this.state = 1893; (localContext as SetOperationContext)._right = this.queryTerm(3); } break; @@ -8522,11 +8514,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SetOperationContext(new QueryTermContext(parentContext, parentState)); (localContext as SetOperationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_queryTerm); - this.state = 1896; + this.state = 1894; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 1897; + this.state = 1895; (localContext as SetOperationContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 64 || _la === 200)) { @@ -8536,26 +8528,26 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1899; + this.state = 1897; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2 || _la === 57) { { - this.state = 1898; + this.state = 1896; this.setQuantifier(); } } - this.state = 1901; + this.state = 1899; (localContext as SetOperationContext)._right = this.queryTerm(2); } break; } } } - this.state = 1906; + this.state = 1904; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 232, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 231, this.context); } } } @@ -8578,14 +8570,14 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 262, ImpalaSqlParser.RULE_queryPrimary); try { let alternative: number; - this.state = 1923; + this.state = 1921; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_SELECT: localContext = new QueryPrimaryDefaultContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1907; + this.state = 1905; this.querySpecification(); } break; @@ -8593,9 +8585,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new TableContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1908; + this.state = 1906; this.match(ImpalaSqlParser.KW_TABLE); - this.state = 1909; + this.state = 1907; this.tableNamePath(); } break; @@ -8603,27 +8595,27 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new InlineTableContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1910; + this.state = 1908; this.match(ImpalaSqlParser.KW_VALUES); - this.state = 1911; + this.state = 1909; this.expression(); - this.state = 1916; + this.state = 1914; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 232, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1912; + this.state = 1910; this.match(ImpalaSqlParser.COMMA); - this.state = 1913; + this.state = 1911; this.expression(); } } } - this.state = 1918; + this.state = 1916; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 232, this.context); } } break; @@ -8631,11 +8623,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SubqueryContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1919; + this.state = 1917; this.match(ImpalaSqlParser.LPAREN); - this.state = 1920; + this.state = 1918; this.queryNoWith(); - this.state = 1921; + this.state = 1919; this.match(ImpalaSqlParser.RPAREN); } break; @@ -8664,14 +8656,14 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1925; + this.state = 1923; this.columnItem(); - this.state = 1927; + this.state = 1925; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10 || _la === 55) { { - this.state = 1926; + this.state = 1924; localContext._ordering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 55)) { @@ -8684,14 +8676,14 @@ export class ImpalaSqlParser extends SQLParserBase { } } - this.state = 1931; + this.state = 1929; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 134) { { - this.state = 1929; + this.state = 1927; this.match(ImpalaSqlParser.KW_NULLS); - this.state = 1930; + this.state = 1928; localContext._nullOrdering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 75 || _la === 112)) { @@ -8727,112 +8719,112 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1933; + this.state = 1931; this.match(ImpalaSqlParser.KW_SELECT); - this.state = 1935; + this.state = 1933; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 236, this.context) ) { case 1: { - this.state = 1934; + this.state = 1932; this.setQuantifier(); } break; } - this.state = 1938; + this.state = 1936; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 238, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { case 1: { - this.state = 1937; + this.state = 1935; this.match(ImpalaSqlParser.KW_STRAIGHT_JOIN); } break; } - this.state = 1940; + this.state = 1938; this.selectItem(); - this.state = 1945; + this.state = 1943; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 239, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 238, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1941; + this.state = 1939; this.match(ImpalaSqlParser.COMMA); - this.state = 1942; + this.state = 1940; this.selectItem(); } } } - this.state = 1947; + this.state = 1945; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 239, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 238, this.context); } - this.state = 1957; + this.state = 1955; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 241, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 240, this.context) ) { case 1: { - this.state = 1948; + this.state = 1946; this.match(ImpalaSqlParser.KW_FROM); - this.state = 1949; + this.state = 1947; this.relation(0); - this.state = 1954; + this.state = 1952; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 240, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 239, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1950; + this.state = 1948; this.match(ImpalaSqlParser.COMMA); - this.state = 1951; + this.state = 1949; this.relation(0); } } } - this.state = 1956; + this.state = 1954; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 240, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 239, this.context); } } break; } - this.state = 1961; + this.state = 1959; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 242, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 241, this.context) ) { case 1: { - this.state = 1959; + this.state = 1957; this.match(ImpalaSqlParser.KW_WHERE); - this.state = 1960; + this.state = 1958; localContext._where = this.booleanExpression(0); } break; } - this.state = 1966; + this.state = 1964; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 243, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 242, this.context) ) { case 1: { - this.state = 1963; + this.state = 1961; this.match(ImpalaSqlParser.KW_GROUP); - this.state = 1964; + this.state = 1962; this.match(ImpalaSqlParser.KW_BY); - this.state = 1965; + this.state = 1963; this.groupBy(); } break; } - this.state = 1970; + this.state = 1968; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 243, this.context) ) { case 1: { - this.state = 1968; + this.state = 1966; this.match(ImpalaSqlParser.KW_HAVING); - this.state = 1969; + this.state = 1967; localContext._having = this.booleanExpression(0); } break; @@ -8860,35 +8852,35 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1973; + this.state = 1971; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 245, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { case 1: { - this.state = 1972; + this.state = 1970; this.setQuantifier(); } break; } - this.state = 1975; + this.state = 1973; this.groupingElement(); - this.state = 1980; + this.state = 1978; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 246, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 245, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1976; + this.state = 1974; this.match(ImpalaSqlParser.COMMA); - this.state = 1977; + this.state = 1975; this.groupingElement(); } } } - this.state = 1982; + this.state = 1980; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 246, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 245, this.context); } } } @@ -8913,7 +8905,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SingleGroupingSetContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1983; + this.state = 1981; this.groupingSet(); } } @@ -8936,48 +8928,48 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 272, ImpalaSqlParser.RULE_groupingSet); let _la: number; try { - this.state = 1998; + this.state = 1996; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 248, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1985; + this.state = 1983; this.match(ImpalaSqlParser.LPAREN); - this.state = 1994; + this.state = 1992; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 248, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context) ) { case 1: { - this.state = 1986; + this.state = 1984; this.columnItem(); - this.state = 1991; + this.state = 1989; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 1987; + this.state = 1985; this.match(ImpalaSqlParser.COMMA); - this.state = 1988; + this.state = 1986; this.columnItem(); } } - this.state = 1993; + this.state = 1991; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - this.state = 1996; + this.state = 1994; this.match(ImpalaSqlParser.RPAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1997; + this.state = 1995; this.columnItem(); } break; @@ -9004,21 +8996,21 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2000; + this.state = 1998; localContext._name = this.identifier(); - this.state = 2002; + this.state = 2000; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 265) { { - this.state = 2001; + this.state = 1999; this.columnAliases(); } } - this.state = 2004; + this.state = 2002; this.match(ImpalaSqlParser.KW_AS); - this.state = 2005; + this.state = 2003; this.subQueryRelation(); } } @@ -9043,7 +9035,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2007; + this.state = 2005; _la = this.tokenStream.LA(1); if(!(_la === 2 || _la === 57)) { this.errorHandler.recoverInline(this); @@ -9073,31 +9065,31 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 278, ImpalaSqlParser.RULE_selectItem); let _la: number; try { - this.state = 2021; + this.state = 2019; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 253, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 252, this.context) ) { case 1: localContext = new SelectSingleContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2009; + this.state = 2007; this.columnItem(); - this.state = 2014; + this.state = 2012; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 252, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 251, this.context) ) { case 1: { - this.state = 2011; + this.state = 2009; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 2010; + this.state = 2008; this.match(ImpalaSqlParser.KW_AS); } } - this.state = 2013; + this.state = 2011; this.identifier(); } break; @@ -9108,11 +9100,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SelectAllContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2016; + this.state = 2014; this.qualifiedName(); - this.state = 2017; + this.state = 2015; this.match(ImpalaSqlParser.DOT); - this.state = 2018; + this.state = 2016; this.match(ImpalaSqlParser.ASTERISK); } break; @@ -9120,7 +9112,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SelectAllContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2020; + this.state = 2018; this.match(ImpalaSqlParser.ASTERISK); } break; @@ -9163,13 +9155,13 @@ export class ImpalaSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 2024; + this.state = 2022; this.sampledRelation(); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2039; + this.state = 2037; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 255, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 254, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -9181,20 +9173,20 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new JoinRelationContext(new RelationContext(parentContext, parentState)); (localContext as JoinRelationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_relation); - this.state = 2026; + this.state = 2024; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 2035; + this.state = 2033; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_CROSS: { - this.state = 2027; + this.state = 2025; this.match(ImpalaSqlParser.KW_CROSS); - this.state = 2028; + this.state = 2026; this.match(ImpalaSqlParser.KW_JOIN); - this.state = 2029; + this.state = 2027; (localContext as JoinRelationContext)._right = this.sampledRelation(); } break; @@ -9204,13 +9196,13 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.KW_LEFT: case ImpalaSqlParser.KW_RIGHT: { - this.state = 2030; + this.state = 2028; this.joinType(); - this.state = 2031; + this.state = 2029; this.match(ImpalaSqlParser.KW_JOIN); - this.state = 2032; + this.state = 2030; (localContext as JoinRelationContext)._rightRelation = this.relation(0); - this.state = 2033; + this.state = 2031; this.joinCriteria(); } break; @@ -9220,9 +9212,9 @@ export class ImpalaSqlParser extends SQLParserBase { } } } - this.state = 2041; + this.state = 2039; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 255, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 254, this.context); } } } @@ -9245,18 +9237,18 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 282, ImpalaSqlParser.RULE_joinType); let _la: number; try { - this.state = 2073; + this.state = 2071; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 262, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 261, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2043; + this.state = 2041; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 97) { { - this.state = 2042; + this.state = 2040; this.match(ImpalaSqlParser.KW_INNER); } } @@ -9266,14 +9258,14 @@ export class ImpalaSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2045; + this.state = 2043; this.match(ImpalaSqlParser.KW_LEFT); - this.state = 2047; + this.state = 2045; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 97) { { - this.state = 2046; + this.state = 2044; this.match(ImpalaSqlParser.KW_INNER); } } @@ -9283,14 +9275,14 @@ export class ImpalaSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2049; + this.state = 2047; this.match(ImpalaSqlParser.KW_RIGHT); - this.state = 2051; + this.state = 2049; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 97) { { - this.state = 2050; + this.state = 2048; this.match(ImpalaSqlParser.KW_INNER); } } @@ -9300,14 +9292,14 @@ export class ImpalaSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2053; + this.state = 2051; this.match(ImpalaSqlParser.KW_LEFT); - this.state = 2055; + this.state = 2053; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 141) { { - this.state = 2054; + this.state = 2052; this.match(ImpalaSqlParser.KW_OUTER); } } @@ -9317,14 +9309,14 @@ export class ImpalaSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2057; + this.state = 2055; this.match(ImpalaSqlParser.KW_RIGHT); - this.state = 2059; + this.state = 2057; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 141) { { - this.state = 2058; + this.state = 2056; this.match(ImpalaSqlParser.KW_OUTER); } } @@ -9334,14 +9326,14 @@ export class ImpalaSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 2061; + this.state = 2059; this.match(ImpalaSqlParser.KW_FULL); - this.state = 2063; + this.state = 2061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 141) { { - this.state = 2062; + this.state = 2060; this.match(ImpalaSqlParser.KW_OUTER); } } @@ -9351,36 +9343,36 @@ export class ImpalaSqlParser extends SQLParserBase { case 7: this.enterOuterAlt(localContext, 7); { - this.state = 2065; + this.state = 2063; this.match(ImpalaSqlParser.KW_LEFT); - this.state = 2066; + this.state = 2064; this.match(ImpalaSqlParser.KW_SEMI); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 2067; + this.state = 2065; this.match(ImpalaSqlParser.KW_RIGHT); - this.state = 2068; + this.state = 2066; this.match(ImpalaSqlParser.KW_SEMI); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 2069; + this.state = 2067; this.match(ImpalaSqlParser.KW_LEFT); - this.state = 2070; + this.state = 2068; this.match(ImpalaSqlParser.KW_ANTI); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 2071; + this.state = 2069; this.match(ImpalaSqlParser.KW_RIGHT); - this.state = 2072; + this.state = 2070; this.match(ImpalaSqlParser.KW_ANTI); } break; @@ -9405,44 +9397,44 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 284, ImpalaSqlParser.RULE_joinCriteria); let _la: number; try { - this.state = 2089; + this.state = 2087; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ON: this.enterOuterAlt(localContext, 1); { - this.state = 2075; + this.state = 2073; this.match(ImpalaSqlParser.KW_ON); - this.state = 2076; + this.state = 2074; this.booleanExpression(0); } break; case ImpalaSqlParser.KW_USING: this.enterOuterAlt(localContext, 2); { - this.state = 2077; + this.state = 2075; this.match(ImpalaSqlParser.KW_USING); - this.state = 2078; + this.state = 2076; this.match(ImpalaSqlParser.LPAREN); - this.state = 2079; + this.state = 2077; this.identifier(); - this.state = 2084; + this.state = 2082; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2080; + this.state = 2078; this.match(ImpalaSqlParser.COMMA); - this.state = 2081; + this.state = 2079; this.identifier(); } } - this.state = 2086; + this.state = 2084; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2087; + this.state = 2085; this.match(ImpalaSqlParser.RPAREN); } break; @@ -9470,35 +9462,35 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2091; + this.state = 2089; this.aliasedRelation(); - this.state = 2104; + this.state = 2102; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 266, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 265, this.context) ) { case 1: { - this.state = 2092; + this.state = 2090; this.match(ImpalaSqlParser.KW_TABLESAMPLE); - this.state = 2093; + this.state = 2091; this.sampleType(); - this.state = 2094; + this.state = 2092; this.match(ImpalaSqlParser.LPAREN); - this.state = 2095; + this.state = 2093; localContext._percentage = this.expression(); - this.state = 2096; + this.state = 2094; this.match(ImpalaSqlParser.RPAREN); - this.state = 2102; + this.state = 2100; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 265, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 264, this.context) ) { case 1: { - this.state = 2097; + this.state = 2095; this.match(ImpalaSqlParser.KW_REPEATABLE); - this.state = 2098; + this.state = 2096; this.match(ImpalaSqlParser.LPAREN); - this.state = 2099; + this.state = 2097; localContext._seed = this.expression(); - this.state = 2100; + this.state = 2098; this.match(ImpalaSqlParser.RPAREN); } break; @@ -9529,7 +9521,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2106; + this.state = 2104; _la = this.tokenStream.LA(1); if(!(_la === 14 || _la === 185)) { this.errorHandler.recoverInline(this); @@ -9561,31 +9553,31 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2108; + this.state = 2106; this.relationPrimary(); - this.state = 2116; + this.state = 2114; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 269, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 268, this.context) ) { case 1: { - this.state = 2110; + this.state = 2108; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 2109; + this.state = 2107; this.match(ImpalaSqlParser.KW_AS); } } - this.state = 2112; + this.state = 2110; this.identifier(); - this.state = 2114; + this.state = 2112; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 268, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 267, this.context) ) { case 1: { - this.state = 2113; + this.state = 2111; this.columnAliases(); } break; @@ -9616,27 +9608,27 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2118; + this.state = 2116; this.match(ImpalaSqlParser.LPAREN); - this.state = 2119; + this.state = 2117; this.columnNamePath(); - this.state = 2124; + this.state = 2122; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2120; + this.state = 2118; this.match(ImpalaSqlParser.COMMA); - this.state = 2121; + this.state = 2119; this.columnNamePath(); } } - this.state = 2126; + this.state = 2124; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2127; + this.state = 2125; this.match(ImpalaSqlParser.RPAREN); } } @@ -9659,44 +9651,44 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 294, ImpalaSqlParser.RULE_relationPrimary); let _la: number; try { - this.state = 2136; + this.state = 2134; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 272, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 271, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2129; + this.state = 2127; this.tableOrViewPath(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2131; + this.state = 2129; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 113) { { - this.state = 2130; + this.state = 2128; this.match(ImpalaSqlParser.KW_LATERAL); } } - this.state = 2133; + this.state = 2131; this.subQueryRelation(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2134; + this.state = 2132; this.unnest(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2135; + this.state = 2133; this.parenthesizedRelation(); } break; @@ -9722,11 +9714,11 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2138; + this.state = 2136; this.match(ImpalaSqlParser.LPAREN); - this.state = 2139; + this.state = 2137; this.queryStatement(); - this.state = 2140; + this.state = 2138; this.match(ImpalaSqlParser.RPAREN); } } @@ -9751,38 +9743,38 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2142; + this.state = 2140; this.match(ImpalaSqlParser.KW_UNNEST); - this.state = 2143; + this.state = 2141; this.match(ImpalaSqlParser.LPAREN); - this.state = 2144; + this.state = 2142; this.expression(); - this.state = 2149; + this.state = 2147; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2145; + this.state = 2143; this.match(ImpalaSqlParser.COMMA); - this.state = 2146; + this.state = 2144; this.expression(); } } - this.state = 2151; + this.state = 2149; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2152; + this.state = 2150; this.match(ImpalaSqlParser.RPAREN); - this.state = 2155; + this.state = 2153; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 273, this.context) ) { case 1: { - this.state = 2153; + this.state = 2151; this.match(ImpalaSqlParser.KW_WITH); - this.state = 2154; + this.state = 2152; this.match(ImpalaSqlParser.KW_ORDINALITY); } break; @@ -9809,11 +9801,11 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2157; + this.state = 2155; this.match(ImpalaSqlParser.LPAREN); - this.state = 2158; + this.state = 2156; this.relation(0); - this.state = 2159; + this.state = 2157; this.match(ImpalaSqlParser.RPAREN); } } @@ -9835,20 +9827,20 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new ColumnItemContext(this.context, this.state); this.enterRule(localContext, 302, ImpalaSqlParser.RULE_columnItem); try { - this.state = 2163; + this.state = 2161; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 275, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2161; + this.state = 2159; this.columnNamePath(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2162; + this.state = 2160; this.expression(); } break; @@ -9874,7 +9866,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2165; + this.state = 2163; this.booleanExpression(0); } } @@ -9910,7 +9902,7 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2174; + this.state = 2172; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ARRAY: @@ -9986,14 +9978,14 @@ export class ImpalaSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 2168; + this.state = 2166; (localContext as PredicatedContext)._valueExpression = this.valueExpression(0); - this.state = 2170; + this.state = 2168; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 276, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 275, this.context) ) { case 1: { - this.state = 2169; + this.state = 2167; this.predicate((localContext as PredicatedContext)._valueExpression); } break; @@ -10005,9 +9997,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new LogicalNotContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2172; + this.state = 2170; this.match(ImpalaSqlParser.KW_NOT); - this.state = 2173; + this.state = 2171; this.booleanExpression(3); } break; @@ -10015,9 +10007,9 @@ export class ImpalaSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2184; + this.state = 2182; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 279, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 278, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -10025,21 +10017,21 @@ export class ImpalaSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 2182; + this.state = 2180; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 278, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 277, this.context) ) { case 1: { localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); (localContext as LogicalBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_booleanExpression); - this.state = 2176; + this.state = 2174; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 2177; + this.state = 2175; (localContext as LogicalBinaryContext)._operator = this.match(ImpalaSqlParser.KW_AND); - this.state = 2178; + this.state = 2176; (localContext as LogicalBinaryContext)._right = this.booleanExpression(3); } break; @@ -10048,22 +10040,22 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); (localContext as LogicalBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_booleanExpression); - this.state = 2179; + this.state = 2177; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 2180; + this.state = 2178; (localContext as LogicalBinaryContext)._operator = this.match(ImpalaSqlParser.KW_OR); - this.state = 2181; + this.state = 2179; (localContext as LogicalBinaryContext)._right = this.booleanExpression(2); } break; } } } - this.state = 2186; + this.state = 2184; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 279, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 278, this.context); } } } @@ -10086,16 +10078,16 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 308, ImpalaSqlParser.RULE_predicate); let _la: number; try { - this.state = 2245; + this.state = 2243; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 288, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 287, this.context) ) { case 1: localContext = new ComparisonContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2187; + this.state = 2185; this.comparisonOperator(); - this.state = 2188; + this.state = 2186; (localContext as ComparisonContext)._right = this.valueExpression(0); } break; @@ -10103,11 +10095,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new QuantifiedComparisonContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2190; + this.state = 2188; this.comparisonOperator(); - this.state = 2191; + this.state = 2189; this.comparisonQuantifier(); - this.state = 2192; + this.state = 2190; this.subQueryRelation(); } break; @@ -10115,23 +10107,23 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new BetweenContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2195; + this.state = 2193; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2194; + this.state = 2192; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2197; + this.state = 2195; this.match(ImpalaSqlParser.KW_BETWEEN); - this.state = 2198; + this.state = 2196; (localContext as BetweenContext)._lower = this.valueExpression(0); - this.state = 2199; + this.state = 2197; this.match(ImpalaSqlParser.KW_AND); - this.state = 2200; + this.state = 2198; (localContext as BetweenContext)._upper = this.valueExpression(0); } break; @@ -10139,39 +10131,39 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new InListContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2203; + this.state = 2201; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2202; + this.state = 2200; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2205; + this.state = 2203; this.match(ImpalaSqlParser.KW_IN); - this.state = 2206; + this.state = 2204; this.match(ImpalaSqlParser.LPAREN); - this.state = 2207; + this.state = 2205; this.expression(); - this.state = 2212; + this.state = 2210; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2208; + this.state = 2206; this.match(ImpalaSqlParser.COMMA); - this.state = 2209; + this.state = 2207; this.expression(); } } - this.state = 2214; + this.state = 2212; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2215; + this.state = 2213; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10179,19 +10171,19 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new InSubqueryContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2218; + this.state = 2216; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2217; + this.state = 2215; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2220; + this.state = 2218; this.match(ImpalaSqlParser.KW_IN); - this.state = 2221; + this.state = 2219; this.subQueryRelation(); } break; @@ -10199,17 +10191,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new LikeContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 2223; + this.state = 2221; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2222; + this.state = 2220; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2225; + this.state = 2223; _la = this.tokenStream.LA(1); if(!(_la === 106 || _la === 115 || _la === 164)) { this.errorHandler.recoverInline(this); @@ -10218,16 +10210,16 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2226; + this.state = 2224; (localContext as LikeContext)._pattern = this.valueExpression(0); - this.state = 2229; + this.state = 2227; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 285, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 284, this.context) ) { case 1: { - this.state = 2227; + this.state = 2225; this.match(ImpalaSqlParser.KW_ESCAPE); - this.state = 2228; + this.state = 2226; (localContext as LikeContext)._escape = this.valueExpression(0); } break; @@ -10238,7 +10230,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new REGEXPContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 2231; + this.state = 2229; _la = this.tokenStream.LA(1); if(!(_la === 105 || _la === 163)) { this.errorHandler.recoverInline(this); @@ -10247,7 +10239,7 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2232; + this.state = 2230; (localContext as REGEXPContext)._pattern = this.valueExpression(0); } break; @@ -10255,19 +10247,19 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new NullOrUnKnownOrBooleanPredicateContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 2233; + this.state = 2231; this.match(ImpalaSqlParser.KW_IS); - this.state = 2235; + this.state = 2233; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2234; + this.state = 2232; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2237; + this.state = 2235; _la = this.tokenStream.LA(1); if(!(_la === 70 || _la === 133 || _la === 194 || _la === 208)) { this.errorHandler.recoverInline(this); @@ -10282,23 +10274,23 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new DistinctFromContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 2238; + this.state = 2236; this.match(ImpalaSqlParser.KW_IS); - this.state = 2240; + this.state = 2238; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 132) { { - this.state = 2239; + this.state = 2237; this.match(ImpalaSqlParser.KW_NOT); } } - this.state = 2242; + this.state = 2240; this.match(ImpalaSqlParser.KW_DISTINCT); - this.state = 2243; + this.state = 2241; this.match(ImpalaSqlParser.KW_FROM); - this.state = 2244; + this.state = 2242; (localContext as DistinctFromContext)._right = this.valueExpression(0); } break; @@ -10337,16 +10329,16 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2251; + this.state = 2249; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 289, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 288, this.context) ) { case 1: { localContext = new ValueExpressionDefaultContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2248; + this.state = 2246; this.primaryExpression(0); } break; @@ -10355,7 +10347,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ArithmeticUnaryContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2249; + this.state = 2247; (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 255 || _la === 256)) { @@ -10365,15 +10357,15 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2250; + this.state = 2248; this.valueExpression(4); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2264; + this.state = 2262; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 291, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 290, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -10381,19 +10373,19 @@ export class ImpalaSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 2262; + this.state = 2260; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 290, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 289, this.context) ) { case 1: { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_valueExpression); - this.state = 2253; + this.state = 2251; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 2254; + this.state = 2252; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 7) !== 0))) { @@ -10403,7 +10395,7 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2255; + this.state = 2253; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(4); } break; @@ -10412,11 +10404,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_valueExpression); - this.state = 2256; + this.state = 2254; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 2257; + this.state = 2255; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 255 || _la === 256)) { @@ -10426,7 +10418,7 @@ export class ImpalaSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2258; + this.state = 2256; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(3); } break; @@ -10435,22 +10427,22 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ConcatenationContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ConcatenationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_valueExpression); - this.state = 2259; + this.state = 2257; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 2260; + this.state = 2258; this.match(ImpalaSqlParser.CONCAT); - this.state = 2261; + this.state = 2259; (localContext as ConcatenationContext)._right = this.valueExpression(2); } break; } } } - this.state = 2266; + this.state = 2264; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 291, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 290, this.context); } } } @@ -10487,16 +10479,16 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2513; + this.state = 2511; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 321, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 320, this.context) ) { case 1: { localContext = new NullLiteralContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2268; + this.state = 2266; this.match(ImpalaSqlParser.KW_NULL); } break; @@ -10505,7 +10497,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new IntervalLiteralContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2269; + this.state = 2267; this.interval(); } break; @@ -10514,9 +10506,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new TypeConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2270; + this.state = 2268; this.identifier(); - this.state = 2271; + this.state = 2269; this.stringLiteral(); } break; @@ -10525,9 +10517,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new TypeConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2273; + this.state = 2271; this.match(ImpalaSqlParser.DOUBLE_PRECISION); - this.state = 2274; + this.state = 2272; this.stringLiteral(); } break; @@ -10536,7 +10528,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new NumericLiteralContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2275; + this.state = 2273; this.number_(); } break; @@ -10545,7 +10537,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new BooleanLiteralContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2276; + this.state = 2274; this.booleanValue(); } break; @@ -10554,7 +10546,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new StringLiteralValuesContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2277; + this.state = 2275; this.stringLiteral(); } break; @@ -10563,7 +10555,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new BinaryLiteralContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2278; + this.state = 2276; this.match(ImpalaSqlParser.BINARY_LITERAL); } break; @@ -10572,7 +10564,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ParameterContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2279; + this.state = 2277; this.match(ImpalaSqlParser.QUESTION); } break; @@ -10581,17 +10573,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new PositionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2280; + this.state = 2278; this.match(ImpalaSqlParser.KW_POSITION); - this.state = 2281; + this.state = 2279; this.match(ImpalaSqlParser.LPAREN); - this.state = 2282; + this.state = 2280; this.valueExpression(0); - this.state = 2283; + this.state = 2281; this.match(ImpalaSqlParser.KW_IN); - this.state = 2284; + this.state = 2282; this.valueExpression(0); - this.state = 2285; + this.state = 2283; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10600,41 +10592,41 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new RowConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2287; + this.state = 2285; this.match(ImpalaSqlParser.LPAREN); - this.state = 2288; + this.state = 2286; this.expression(); - this.state = 2291; + this.state = 2289; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 2289; + this.state = 2287; this.match(ImpalaSqlParser.KW_AS); - this.state = 2290; + this.state = 2288; this.type_(0); } } - this.state = 2301; + this.state = 2299; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 294, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 293, this.context); while (alternative !== 1 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1 + 1) { { { - this.state = 2293; + this.state = 2291; this.match(ImpalaSqlParser.COMMA); - this.state = 2294; + this.state = 2292; this.expression(); - this.state = 2297; + this.state = 2295; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 2295; + this.state = 2293; this.match(ImpalaSqlParser.KW_AS); - this.state = 2296; + this.state = 2294; this.type_(0); } } @@ -10642,11 +10634,11 @@ export class ImpalaSqlParser extends SQLParserBase { } } } - this.state = 2303; + this.state = 2301; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 294, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 293, this.context); } - this.state = 2304; + this.state = 2302; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10655,29 +10647,29 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new RowConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2306; + this.state = 2304; this.match(ImpalaSqlParser.KW_ROW); - this.state = 2307; + this.state = 2305; this.match(ImpalaSqlParser.LPAREN); - this.state = 2308; + this.state = 2306; this.expression(); - this.state = 2313; + this.state = 2311; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2309; + this.state = 2307; this.match(ImpalaSqlParser.COMMA); - this.state = 2310; + this.state = 2308; this.expression(); } } - this.state = 2315; + this.state = 2313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2316; + this.state = 2314; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10686,30 +10678,30 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new FunctionCallContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2318; + this.state = 2316; this.functionNamePath(); - this.state = 2319; + this.state = 2317; this.match(ImpalaSqlParser.LPAREN); - this.state = 2320; + this.state = 2318; this.match(ImpalaSqlParser.ASTERISK); - this.state = 2321; + this.state = 2319; this.match(ImpalaSqlParser.RPAREN); - this.state = 2323; + this.state = 2321; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 296, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 295, this.context) ) { case 1: { - this.state = 2322; + this.state = 2320; this.filter(); } break; } - this.state = 2326; + this.state = 2324; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 297, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 296, this.context) ) { case 1: { - this.state = 2325; + this.state = 2323; this.over(); } break; @@ -10721,94 +10713,94 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new FunctionCallContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2328; + this.state = 2326; this.functionNamePath(); - this.state = 2329; + this.state = 2327; this.match(ImpalaSqlParser.LPAREN); - this.state = 2341; + this.state = 2339; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805323012) !== 0) || ((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 1442972447) !== 0) || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 2218795145) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 269631421) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 271654979) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 537926659) !== 0) || ((((_la - 217)) & ~0x1F) === 0 && ((1 << (_la - 217)) & 16393) !== 0) || ((((_la - 255)) & ~0x1F) === 0 && ((1 << (_la - 255)) & 2549744643) !== 0)) { { - this.state = 2331; + this.state = 2329; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2 || _la === 57) { { - this.state = 2330; + this.state = 2328; this.setQuantifier(); } } - this.state = 2333; + this.state = 2331; this.expression(); - this.state = 2338; + this.state = 2336; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2334; + this.state = 2332; this.match(ImpalaSqlParser.COMMA); - this.state = 2335; + this.state = 2333; this.expression(); } } - this.state = 2340; + this.state = 2338; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2353; + this.state = 2351; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 139) { { - this.state = 2343; + this.state = 2341; this.match(ImpalaSqlParser.KW_ORDER); - this.state = 2344; + this.state = 2342; this.match(ImpalaSqlParser.KW_BY); - this.state = 2345; + this.state = 2343; this.sortItem(); - this.state = 2350; + this.state = 2348; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2346; + this.state = 2344; this.match(ImpalaSqlParser.COMMA); - this.state = 2347; + this.state = 2345; this.sortItem(); } } - this.state = 2352; + this.state = 2350; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2355; + this.state = 2353; this.match(ImpalaSqlParser.RPAREN); - this.state = 2357; + this.state = 2355; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 303, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 302, this.context) ) { case 1: { - this.state = 2356; + this.state = 2354; this.filter(); } break; } - this.state = 2360; + this.state = 2358; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 304, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 303, this.context) ) { case 1: { - this.state = 2359; + this.state = 2357; this.over(); } break; @@ -10820,11 +10812,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new LambdaContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2362; + this.state = 2360; this.identifier(); - this.state = 2363; + this.state = 2361; this.match(ImpalaSqlParser.RIGHT_ARROW); - this.state = 2364; + this.state = 2362; this.expression(); } break; @@ -10833,39 +10825,39 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new LambdaContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2366; + this.state = 2364; this.match(ImpalaSqlParser.LPAREN); - this.state = 2375; + this.state = 2373; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 14 || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 37748835) !== 0) || ((((_la - 91)) & ~0x1F) === 0 && ((1 << (_la - 91)) & 2416443409) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1610760439) !== 0) || ((((_la - 172)) & ~0x1F) === 0 && ((1 << (_la - 172)) & 8401155) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 134291969) !== 0) || ((((_la - 274)) & ~0x1F) === 0 && ((1 << (_la - 274)) & 705) !== 0)) { { - this.state = 2367; + this.state = 2365; this.identifier(); - this.state = 2372; + this.state = 2370; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2368; + this.state = 2366; this.match(ImpalaSqlParser.COMMA); - this.state = 2369; + this.state = 2367; this.identifier(); } } - this.state = 2374; + this.state = 2372; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2377; + this.state = 2375; this.match(ImpalaSqlParser.RPAREN); - this.state = 2378; + this.state = 2376; this.match(ImpalaSqlParser.RIGHT_ARROW); - this.state = 2379; + this.state = 2377; this.expression(); } break; @@ -10874,11 +10866,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SubqueryExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2380; + this.state = 2378; this.match(ImpalaSqlParser.LPAREN); - this.state = 2381; + this.state = 2379; this.queryStatement(); - this.state = 2382; + this.state = 2380; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10887,13 +10879,13 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ExistsContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2384; + this.state = 2382; this.match(ImpalaSqlParser.KW_EXISTS); - this.state = 2385; + this.state = 2383; this.match(ImpalaSqlParser.LPAREN); - this.state = 2386; + this.state = 2384; this.queryStatement(); - this.state = 2387; + this.state = 2385; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10902,37 +10894,37 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SimpleCaseContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2389; + this.state = 2387; this.match(ImpalaSqlParser.KW_CASE); - this.state = 2390; + this.state = 2388; this.valueExpression(0); - this.state = 2392; + this.state = 2390; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2391; + this.state = 2389; this.whenClause(); } } - this.state = 2394; + this.state = 2392; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 214); - this.state = 2398; + this.state = 2396; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59) { { - this.state = 2396; + this.state = 2394; this.match(ImpalaSqlParser.KW_ELSE); - this.state = 2397; + this.state = 2395; (localContext as SimpleCaseContext)._elseExpression = this.expression(); } } - this.state = 2400; + this.state = 2398; this.match(ImpalaSqlParser.KW_END); } break; @@ -10941,35 +10933,35 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SearchedCaseContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2402; + this.state = 2400; this.match(ImpalaSqlParser.KW_CASE); - this.state = 2404; + this.state = 2402; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2403; + this.state = 2401; this.whenClause(); } } - this.state = 2406; + this.state = 2404; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 214); - this.state = 2410; + this.state = 2408; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59) { { - this.state = 2408; + this.state = 2406; this.match(ImpalaSqlParser.KW_ELSE); - this.state = 2409; + this.state = 2407; (localContext as SearchedCaseContext)._elseExpression = this.expression(); } } - this.state = 2412; + this.state = 2410; this.match(ImpalaSqlParser.KW_END); } break; @@ -10978,17 +10970,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new CastContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2414; + this.state = 2412; this.match(ImpalaSqlParser.KW_CAST); - this.state = 2415; + this.state = 2413; this.match(ImpalaSqlParser.LPAREN); - this.state = 2416; + this.state = 2414; this.expression(); - this.state = 2417; + this.state = 2415; this.match(ImpalaSqlParser.KW_AS); - this.state = 2418; + this.state = 2416; this.type_(0); - this.state = 2419; + this.state = 2417; this.match(ImpalaSqlParser.RPAREN); } break; @@ -10997,17 +10989,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new CastContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2421; + this.state = 2419; this.match(ImpalaSqlParser.KW_TRY_CAST); - this.state = 2422; + this.state = 2420; this.match(ImpalaSqlParser.LPAREN); - this.state = 2423; + this.state = 2421; this.expression(); - this.state = 2424; + this.state = 2422; this.match(ImpalaSqlParser.KW_AS); - this.state = 2425; + this.state = 2423; this.type_(0); - this.state = 2426; + this.state = 2424; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11016,37 +11008,37 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ArrayConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2428; + this.state = 2426; this.match(ImpalaSqlParser.KW_ARRAY); - this.state = 2429; + this.state = 2427; this.match(ImpalaSqlParser.LSQUARE); - this.state = 2438; + this.state = 2436; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805323008) !== 0) || ((((_la - 40)) & ~0x1F) === 0 && ((1 << (_la - 40)) & 1442841375) !== 0) || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 2218795145) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 269631421) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 271654979) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 537926659) !== 0) || ((((_la - 217)) & ~0x1F) === 0 && ((1 << (_la - 217)) & 16393) !== 0) || ((((_la - 255)) & ~0x1F) === 0 && ((1 << (_la - 255)) & 2549744643) !== 0)) { { - this.state = 2430; + this.state = 2428; this.expression(); - this.state = 2435; + this.state = 2433; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2431; + this.state = 2429; this.match(ImpalaSqlParser.COMMA); - this.state = 2432; + this.state = 2430; this.expression(); } } - this.state = 2437; + this.state = 2435; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2440; + this.state = 2438; this.match(ImpalaSqlParser.RSQUARE); } break; @@ -11055,7 +11047,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ColumnReferenceContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2441; + this.state = 2439; this.identifier(); } break; @@ -11064,7 +11056,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SpecialDateTimeFunctionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2442; + this.state = 2440; (localContext as SpecialDateTimeFunctionContext)._name = this.match(ImpalaSqlParser.KW_CURRENT_DATE); } break; @@ -11073,18 +11065,18 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SpecialDateTimeFunctionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2443; + this.state = 2441; (localContext as SpecialDateTimeFunctionContext)._name = this.match(ImpalaSqlParser.KW_CURRENT_TIME); - this.state = 2447; + this.state = 2445; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 313, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 312, this.context) ) { case 1: { - this.state = 2444; + this.state = 2442; this.match(ImpalaSqlParser.LPAREN); - this.state = 2445; + this.state = 2443; (localContext as SpecialDateTimeFunctionContext)._precision = this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2446; + this.state = 2444; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11096,18 +11088,18 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SpecialDateTimeFunctionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2449; + this.state = 2447; (localContext as SpecialDateTimeFunctionContext)._name = this.match(ImpalaSqlParser.KW_CURRENT_TIMESTAMP); - this.state = 2453; + this.state = 2451; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 313, this.context) ) { case 1: { - this.state = 2450; + this.state = 2448; this.match(ImpalaSqlParser.LPAREN); - this.state = 2451; + this.state = 2449; (localContext as SpecialDateTimeFunctionContext)._precision = this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2452; + this.state = 2450; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11119,18 +11111,18 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SpecialDateTimeFunctionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2455; + this.state = 2453; (localContext as SpecialDateTimeFunctionContext)._name = this.match(ImpalaSqlParser.KW_LOCALTIME); - this.state = 2459; + this.state = 2457; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context) ) { case 1: { - this.state = 2456; + this.state = 2454; this.match(ImpalaSqlParser.LPAREN); - this.state = 2457; + this.state = 2455; (localContext as SpecialDateTimeFunctionContext)._precision = this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2458; + this.state = 2456; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11142,18 +11134,18 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SpecialDateTimeFunctionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2461; + this.state = 2459; (localContext as SpecialDateTimeFunctionContext)._name = this.match(ImpalaSqlParser.KW_LOCALTIMESTAMP); - this.state = 2465; + this.state = 2463; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 316, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { case 1: { - this.state = 2462; + this.state = 2460; this.match(ImpalaSqlParser.LPAREN); - this.state = 2463; + this.state = 2461; (localContext as SpecialDateTimeFunctionContext)._precision = this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2464; + this.state = 2462; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11165,7 +11157,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new CurrentUserContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2467; + this.state = 2465; (localContext as CurrentUserContext)._name = this.match(ImpalaSqlParser.KW_CURRENT_USER); } break; @@ -11174,7 +11166,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new CurrentPathContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2468; + this.state = 2466; (localContext as CurrentPathContext)._name = this.match(ImpalaSqlParser.KW_CURRENT_PATH); } break; @@ -11183,29 +11175,29 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new SubstringContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2469; + this.state = 2467; this.match(ImpalaSqlParser.KW_SUBSTRING); - this.state = 2470; + this.state = 2468; this.match(ImpalaSqlParser.LPAREN); - this.state = 2471; + this.state = 2469; this.valueExpression(0); - this.state = 2472; + this.state = 2470; this.match(ImpalaSqlParser.KW_FROM); - this.state = 2473; + this.state = 2471; this.valueExpression(0); - this.state = 2476; + this.state = 2474; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 2474; + this.state = 2472; this.match(ImpalaSqlParser.KW_FOR); - this.state = 2475; + this.state = 2473; this.valueExpression(0); } } - this.state = 2478; + this.state = 2476; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11214,25 +11206,25 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new NormalizeContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2480; + this.state = 2478; this.match(ImpalaSqlParser.KW_NORMALIZE); - this.state = 2481; + this.state = 2479; this.match(ImpalaSqlParser.LPAREN); - this.state = 2482; + this.state = 2480; this.valueExpression(0); - this.state = 2485; + this.state = 2483; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 263) { { - this.state = 2483; + this.state = 2481; this.match(ImpalaSqlParser.COMMA); - this.state = 2484; + this.state = 2482; this.normalForm(); } } - this.state = 2487; + this.state = 2485; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11241,17 +11233,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ExtractContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2489; + this.state = 2487; this.match(ImpalaSqlParser.KW_EXTRACT); - this.state = 2490; + this.state = 2488; this.match(ImpalaSqlParser.LPAREN); - this.state = 2491; + this.state = 2489; this.identifier(); - this.state = 2492; + this.state = 2490; this.match(ImpalaSqlParser.KW_FROM); - this.state = 2493; + this.state = 2491; this.valueExpression(0); - this.state = 2494; + this.state = 2492; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11260,11 +11252,11 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new ParenthesizedExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2496; + this.state = 2494; this.match(ImpalaSqlParser.LPAREN); - this.state = 2497; + this.state = 2495; this.expression(); - this.state = 2498; + this.state = 2496; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11273,45 +11265,45 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new GroupingOperationContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2500; + this.state = 2498; this.match(ImpalaSqlParser.KW_GROUPING); - this.state = 2501; + this.state = 2499; this.match(ImpalaSqlParser.LPAREN); - this.state = 2510; + this.state = 2508; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 14 || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 37748835) !== 0) || ((((_la - 91)) & ~0x1F) === 0 && ((1 << (_la - 91)) & 2416443409) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1610760439) !== 0) || ((((_la - 172)) & ~0x1F) === 0 && ((1 << (_la - 172)) & 8401155) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 134291969) !== 0) || ((((_la - 274)) & ~0x1F) === 0 && ((1 << (_la - 274)) & 705) !== 0)) { { - this.state = 2502; + this.state = 2500; this.qualifiedName(); - this.state = 2507; + this.state = 2505; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2503; + this.state = 2501; this.match(ImpalaSqlParser.COMMA); - this.state = 2504; + this.state = 2502; this.qualifiedName(); } } - this.state = 2509; + this.state = 2507; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2512; + this.state = 2510; this.match(ImpalaSqlParser.RPAREN); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2525; + this.state = 2523; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 323, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 322, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -11319,23 +11311,23 @@ export class ImpalaSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 2523; + this.state = 2521; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 322, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 321, this.context) ) { case 1: { localContext = new SubscriptContext(new PrimaryExpressionContext(parentContext, parentState)); (localContext as SubscriptContext)._value = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_primaryExpression); - this.state = 2515; + this.state = 2513; if (!(this.precpred(this.context, 15))) { throw this.createFailedPredicateException("this.precpred(this.context, 15)"); } - this.state = 2516; + this.state = 2514; this.match(ImpalaSqlParser.LSQUARE); - this.state = 2517; + this.state = 2515; (localContext as SubscriptContext)._index = this.valueExpression(0); - this.state = 2518; + this.state = 2516; this.match(ImpalaSqlParser.RSQUARE); } break; @@ -11344,22 +11336,22 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new DereferenceContext(new PrimaryExpressionContext(parentContext, parentState)); (localContext as DereferenceContext)._base = previousContext; this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_primaryExpression); - this.state = 2520; + this.state = 2518; if (!(this.precpred(this.context, 13))) { throw this.createFailedPredicateException("this.precpred(this.context, 13)"); } - this.state = 2521; + this.state = 2519; this.match(ImpalaSqlParser.DOT); - this.state = 2522; + this.state = 2520; (localContext as DereferenceContext)._fieldName = this.identifier(); } break; } } } - this.state = 2527; + this.state = 2525; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 323, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 322, this.context); } } } @@ -11381,14 +11373,14 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new StringLiteralContext(this.context, this.state); this.enterRule(localContext, 314, ImpalaSqlParser.RULE_stringLiteral); try { - this.state = 2534; + this.state = 2532; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.STRING: localContext = new BasicStringLiteralContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2528; + this.state = 2526; this.match(ImpalaSqlParser.STRING); } break; @@ -11396,16 +11388,16 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new UnicodeStringLiteralContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2529; + this.state = 2527; this.match(ImpalaSqlParser.UNICODE_STRING); - this.state = 2532; + this.state = 2530; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 324, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 323, this.context) ) { case 1: { - this.state = 2530; + this.state = 2528; this.match(ImpalaSqlParser.KW_UESCAPE); - this.state = 2531; + this.state = 2529; this.match(ImpalaSqlParser.STRING); } break; @@ -11437,7 +11429,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2536; + this.state = 2534; _la = this.tokenStream.LA(1); if(!(((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 63) !== 0))) { this.errorHandler.recoverInline(this); @@ -11469,7 +11461,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2538; + this.state = 2536; _la = this.tokenStream.LA(1); if(!(_la === 2 || _la === 6 || _la === 181)) { this.errorHandler.recoverInline(this); @@ -11501,7 +11493,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2540; + this.state = 2538; _la = this.tokenStream.LA(1); if(!(_la === 70 || _la === 194)) { this.errorHandler.recoverInline(this); @@ -11530,54 +11522,54 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new IntervalContext(this.context, this.state); this.enterRule(localContext, 322, ImpalaSqlParser.RULE_interval); try { - this.state = 2556; + this.state = 2554; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 326, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 325, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2542; + this.state = 2540; this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2543; + this.state = 2541; this.intervalField(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2544; + this.state = 2542; this.match(ImpalaSqlParser.LPAREN); - this.state = 2545; + this.state = 2543; this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2546; + this.state = 2544; this.match(ImpalaSqlParser.RPAREN); - this.state = 2547; + this.state = 2545; this.intervalField(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2548; + this.state = 2546; this.match(ImpalaSqlParser.KW_INTERVAL); - this.state = 2549; + this.state = 2547; this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2550; + this.state = 2548; this.intervalField(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2551; + this.state = 2549; this.match(ImpalaSqlParser.KW_INTERVAL); - this.state = 2552; + this.state = 2550; this.match(ImpalaSqlParser.LPAREN); - this.state = 2553; + this.state = 2551; this.match(ImpalaSqlParser.INTEGER_VALUE); - this.state = 2554; + this.state = 2552; this.match(ImpalaSqlParser.RPAREN); - this.state = 2555; + this.state = 2553; this.intervalField(); } break; @@ -11604,7 +11596,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2558; + this.state = 2556; _la = this.tokenStream.LA(1); if(!(_la === 48 || _la === 49 || ((((_la - 91)) & ~0x1F) === 0 && ((1 << (_la - 91)) & 2147483651) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 7) !== 0) || _la === 172 || _la === 173 || _la === 217 || _la === 218)) { this.errorHandler.recoverInline(this); @@ -11636,7 +11628,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2560; + this.state = 2558; _la = this.tokenStream.LA(1); if(!(((((_la - 127)) & ~0x1F) === 0 && ((1 << (_la - 127)) & 15) !== 0))) { this.errorHandler.recoverInline(this); @@ -11680,113 +11672,113 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2607; + this.state = 2605; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 331, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 330, this.context) ) { case 1: { - this.state = 2563; + this.state = 2561; this.match(ImpalaSqlParser.KW_ARRAY); - this.state = 2564; + this.state = 2562; this.match(ImpalaSqlParser.LT); - this.state = 2565; + this.state = 2563; this.type_(0); - this.state = 2566; + this.state = 2564; this.match(ImpalaSqlParser.GT); } break; case 2: { - this.state = 2568; + this.state = 2566; this.match(ImpalaSqlParser.KW_MAP); - this.state = 2569; + this.state = 2567; this.match(ImpalaSqlParser.LT); - this.state = 2570; + this.state = 2568; this.type_(0); - this.state = 2571; + this.state = 2569; this.match(ImpalaSqlParser.COMMA); - this.state = 2572; + this.state = 2570; this.type_(0); - this.state = 2573; + this.state = 2571; this.match(ImpalaSqlParser.GT); } break; case 3: { - this.state = 2575; + this.state = 2573; this.match(ImpalaSqlParser.KW_STRUCT); - this.state = 2576; + this.state = 2574; this.match(ImpalaSqlParser.LT); - this.state = 2577; + this.state = 2575; this.identifier(); - this.state = 2578; + this.state = 2576; this.type_(0); - this.state = 2585; + this.state = 2583; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2579; + this.state = 2577; this.match(ImpalaSqlParser.COMMA); - this.state = 2580; + this.state = 2578; this.identifier(); - this.state = 2581; + this.state = 2579; this.type_(0); } } - this.state = 2587; + this.state = 2585; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2588; + this.state = 2586; this.match(ImpalaSqlParser.GT); } break; case 4: { - this.state = 2592; + this.state = 2590; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 328, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 327, this.context) ) { case 1: { - this.state = 2590; + this.state = 2588; this.baseType(); } break; case 2: { - this.state = 2591; + this.state = 2589; this.dataType(); } break; } - this.state = 2605; + this.state = 2603; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 330, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 329, this.context) ) { case 1: { - this.state = 2594; + this.state = 2592; this.match(ImpalaSqlParser.LPAREN); - this.state = 2595; + this.state = 2593; this.typeParameter(); - this.state = 2600; + this.state = 2598; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2596; + this.state = 2594; this.match(ImpalaSqlParser.COMMA); - this.state = 2597; + this.state = 2595; this.typeParameter(); } } - this.state = 2602; + this.state = 2600; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2603; + this.state = 2601; this.match(ImpalaSqlParser.RPAREN); } break; @@ -11795,9 +11787,9 @@ export class ImpalaSqlParser extends SQLParserBase { break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2613; + this.state = 2611; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 332, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 331, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -11808,18 +11800,18 @@ export class ImpalaSqlParser extends SQLParserBase { { localContext = new TypeContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, ImpalaSqlParser.RULE_type); - this.state = 2609; + this.state = 2607; if (!(this.precpred(this.context, 5))) { throw this.createFailedPredicateException("this.precpred(this.context, 5)"); } - this.state = 2610; + this.state = 2608; this.match(ImpalaSqlParser.KW_ARRAY); } } } - this.state = 2615; + this.state = 2613; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 332, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 331, this.context); } } } @@ -11844,7 +11836,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2616; + this.state = 2614; _la = this.tokenStream.LA(1); if(!(_la === 8 || ((((_la - 227)) & ~0x1F) === 0 && ((1 << (_la - 227)) & 262143) !== 0))) { this.errorHandler.recoverInline(this); @@ -11873,13 +11865,13 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new TypeParameterContext(this.context, this.state); this.enterRule(localContext, 332, ImpalaSqlParser.RULE_typeParameter); try { - this.state = 2620; + this.state = 2618; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.INTEGER_VALUE: this.enterOuterAlt(localContext, 1); { - this.state = 2618; + this.state = 2616; this.match(ImpalaSqlParser.INTEGER_VALUE); } break; @@ -11944,7 +11936,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.DOUBLE_PRECISION: this.enterOuterAlt(localContext, 2); { - this.state = 2619; + this.state = 2617; this.type_(0); } break; @@ -11970,27 +11962,27 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new BaseTypeContext(this.context, this.state); this.enterRule(localContext, 334, ImpalaSqlParser.RULE_baseType); try { - this.state = 2626; + this.state = 2624; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.TIME_WITH_TIME_ZONE: this.enterOuterAlt(localContext, 1); { - this.state = 2622; + this.state = 2620; this.match(ImpalaSqlParser.TIME_WITH_TIME_ZONE); } break; case ImpalaSqlParser.TIMESTAMP_WITH_TIME_ZONE: this.enterOuterAlt(localContext, 2); { - this.state = 2623; + this.state = 2621; this.match(ImpalaSqlParser.TIMESTAMP_WITH_TIME_ZONE); } break; case ImpalaSqlParser.DOUBLE_PRECISION: this.enterOuterAlt(localContext, 3); { - this.state = 2624; + this.state = 2622; this.match(ImpalaSqlParser.DOUBLE_PRECISION); } break; @@ -12034,7 +12026,7 @@ export class ImpalaSqlParser extends SQLParserBase { case ImpalaSqlParser.BACKQUOTED_IDENTIFIER: this.enterOuterAlt(localContext, 4); { - this.state = 2625; + this.state = 2623; this.identifier(); } break; @@ -12062,13 +12054,13 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2628; + this.state = 2626; this.match(ImpalaSqlParser.KW_WHEN); - this.state = 2629; + this.state = 2627; localContext._condition = this.expression(); - this.state = 2630; + this.state = 2628; this.match(ImpalaSqlParser.KW_THEN); - this.state = 2631; + this.state = 2629; localContext._result = this.expression(); } } @@ -12092,15 +12084,15 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2633; + this.state = 2631; this.match(ImpalaSqlParser.KW_FILTER); - this.state = 2634; + this.state = 2632; this.match(ImpalaSqlParser.LPAREN); - this.state = 2635; + this.state = 2633; this.match(ImpalaSqlParser.KW_WHERE); - this.state = 2636; + this.state = 2634; this.booleanExpression(0); - this.state = 2637; + this.state = 2635; this.match(ImpalaSqlParser.RPAREN); } } @@ -12125,83 +12117,83 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2639; + this.state = 2637; this.match(ImpalaSqlParser.KW_OVER); - this.state = 2640; + this.state = 2638; this.match(ImpalaSqlParser.LPAREN); - this.state = 2651; + this.state = 2649; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 145) { { - this.state = 2641; + this.state = 2639; this.match(ImpalaSqlParser.KW_PARTITION); - this.state = 2642; + this.state = 2640; this.match(ImpalaSqlParser.KW_BY); - this.state = 2643; + this.state = 2641; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); - this.state = 2648; + this.state = 2646; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2644; + this.state = 2642; this.match(ImpalaSqlParser.COMMA); - this.state = 2645; + this.state = 2643; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); } } - this.state = 2650; + this.state = 2648; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2663; + this.state = 2661; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 139) { { - this.state = 2653; + this.state = 2651; this.match(ImpalaSqlParser.KW_ORDER); - this.state = 2654; + this.state = 2652; this.match(ImpalaSqlParser.KW_BY); - this.state = 2655; + this.state = 2653; this.sortItem(); - this.state = 2660; + this.state = 2658; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2656; + this.state = 2654; this.match(ImpalaSqlParser.COMMA); - this.state = 2657; + this.state = 2655; this.sortItem(); } } - this.state = 2662; + this.state = 2660; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 2666; + this.state = 2664; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 154 || _la === 169) { { - this.state = 2665; + this.state = 2663; this.windowFrame(); } } - this.state = 2668; + this.state = 2666; this.match(ImpalaSqlParser.RPAREN); } } @@ -12223,54 +12215,54 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new WindowFrameContext(this.context, this.state); this.enterRule(localContext, 342, ImpalaSqlParser.RULE_windowFrame); try { - this.state = 2686; + this.state = 2684; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 340, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 339, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2670; + this.state = 2668; localContext._frameType = this.match(ImpalaSqlParser.KW_RANGE); - this.state = 2671; + this.state = 2669; localContext._start_ = this.frameBound(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2672; + this.state = 2670; localContext._frameType = this.match(ImpalaSqlParser.KW_ROWS); - this.state = 2673; + this.state = 2671; localContext._start_ = this.frameBound(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2674; + this.state = 2672; localContext._frameType = this.match(ImpalaSqlParser.KW_RANGE); - this.state = 2675; + this.state = 2673; this.match(ImpalaSqlParser.KW_BETWEEN); - this.state = 2676; + this.state = 2674; localContext._start_ = this.frameBound(); - this.state = 2677; + this.state = 2675; this.match(ImpalaSqlParser.KW_AND); - this.state = 2678; + this.state = 2676; localContext._end = this.frameBound(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2680; + this.state = 2678; localContext._frameType = this.match(ImpalaSqlParser.KW_ROWS); - this.state = 2681; + this.state = 2679; this.match(ImpalaSqlParser.KW_BETWEEN); - this.state = 2682; + this.state = 2680; localContext._start_ = this.frameBound(); - this.state = 2683; + this.state = 2681; this.match(ImpalaSqlParser.KW_AND); - this.state = 2684; + this.state = 2682; localContext._end = this.frameBound(); } break; @@ -12295,16 +12287,16 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 344, ImpalaSqlParser.RULE_frameBound); let _la: number; try { - this.state = 2697; + this.state = 2695; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 341, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 340, this.context) ) { case 1: localContext = new UnboundedFrameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2688; + this.state = 2686; this.match(ImpalaSqlParser.KW_UNBOUNDED); - this.state = 2689; + this.state = 2687; (localContext as UnboundedFrameContext)._boundType = this.match(ImpalaSqlParser.KW_PRECEDING); } break; @@ -12312,9 +12304,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new UnboundedFrameContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2690; + this.state = 2688; this.match(ImpalaSqlParser.KW_UNBOUNDED); - this.state = 2691; + this.state = 2689; (localContext as UnboundedFrameContext)._boundType = this.match(ImpalaSqlParser.KW_FOLLOWING); } break; @@ -12322,9 +12314,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new CurrentRowBoundContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2692; + this.state = 2690; this.match(ImpalaSqlParser.KW_CURRENT); - this.state = 2693; + this.state = 2691; this.match(ImpalaSqlParser.KW_ROW); } break; @@ -12332,9 +12324,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new BoundedFrameContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2694; + this.state = 2692; this.expression(); - this.state = 2695; + this.state = 2693; (localContext as BoundedFrameContext)._boundType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 77 || _la === 149)) { @@ -12366,18 +12358,18 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new PathElementContext(this.context, this.state); this.enterRule(localContext, 346, ImpalaSqlParser.RULE_pathElement); try { - this.state = 2704; + this.state = 2702; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 342, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 341, this.context) ) { case 1: localContext = new QualifiedArgumentContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2699; + this.state = 2697; this.identifier(); - this.state = 2700; + this.state = 2698; this.match(ImpalaSqlParser.DOT); - this.state = 2701; + this.state = 2699; this.identifier(); } break; @@ -12385,7 +12377,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new UnqualifiedArgumentContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2703; + this.state = 2701; this.identifier(); } break; @@ -12412,21 +12404,21 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2706; + this.state = 2704; this.pathElement(); - this.state = 2711; + this.state = 2709; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 263) { { { - this.state = 2707; + this.state = 2705; this.match(ImpalaSqlParser.COMMA); - this.state = 2708; + this.state = 2706; this.pathElement(); } } - this.state = 2713; + this.state = 2711; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -12451,66 +12443,66 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 350, ImpalaSqlParser.RULE_privilege); let _la: number; try { - this.state = 2727; + this.state = 2725; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ALL: this.enterOuterAlt(localContext, 1); { - this.state = 2714; + this.state = 2712; this.match(ImpalaSqlParser.KW_ALL); } break; case ImpalaSqlParser.KW_ALTER: this.enterOuterAlt(localContext, 2); { - this.state = 2715; + this.state = 2713; this.match(ImpalaSqlParser.KW_ALTER); } break; case ImpalaSqlParser.KW_DROP: this.enterOuterAlt(localContext, 3); { - this.state = 2716; + this.state = 2714; this.match(ImpalaSqlParser.KW_DROP); } break; case ImpalaSqlParser.KW_CREATE: this.enterOuterAlt(localContext, 4); { - this.state = 2717; + this.state = 2715; this.match(ImpalaSqlParser.KW_CREATE); } break; case ImpalaSqlParser.KW_INSERT: this.enterOuterAlt(localContext, 5); { - this.state = 2718; + this.state = 2716; this.match(ImpalaSqlParser.KW_INSERT); } break; case ImpalaSqlParser.KW_REFRESH: this.enterOuterAlt(localContext, 6); { - this.state = 2719; + this.state = 2717; this.match(ImpalaSqlParser.KW_REFRESH); } break; case ImpalaSqlParser.KW_SELECT: this.enterOuterAlt(localContext, 7); { - this.state = 2720; + this.state = 2718; this.match(ImpalaSqlParser.KW_SELECT); - this.state = 2725; + this.state = 2723; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 265) { { - this.state = 2721; + this.state = 2719; this.match(ImpalaSqlParser.LPAREN); - this.state = 2722; + this.state = 2720; localContext._columnName = this.identifier(); - this.state = 2723; + this.state = 2721; this.match(ImpalaSqlParser.RPAREN); } } @@ -12542,7 +12534,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2729; + this.state = 2727; _la = this.tokenStream.LA(1); if(!(_la === 46 || ((((_la - 178)) & ~0x1F) === 0 && ((1 << (_la - 178)) & 2147484673) !== 0))) { this.errorHandler.recoverInline(this); @@ -12574,25 +12566,25 @@ export class ImpalaSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2731; + this.state = 2729; this.identifier(); - this.state = 2736; + this.state = 2734; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 346, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 345, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2732; + this.state = 2730; this.match(ImpalaSqlParser.DOT); - this.state = 2733; + this.state = 2731; this.identifier(); } } } - this.state = 2738; + this.state = 2736; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 346, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 345, this.context); } } } @@ -12614,16 +12606,16 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new PrincipalContext(this.context, this.state); this.enterRule(localContext, 356, ImpalaSqlParser.RULE_principal); try { - this.state = 2745; + this.state = 2743; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.KW_ROLE: localContext = new RolePrincipalContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2739; + this.state = 2737; this.match(ImpalaSqlParser.KW_ROLE); - this.state = 2740; + this.state = 2738; this.identifier(); } break; @@ -12631,9 +12623,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new UserPrincipalContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2741; + this.state = 2739; this.match(ImpalaSqlParser.KW_USER); - this.state = 2742; + this.state = 2740; this.identifier(); } break; @@ -12641,9 +12633,9 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new GroupPrincipalContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2743; + this.state = 2741; this.match(ImpalaSqlParser.KW_GROUP); - this.state = 2744; + this.state = 2742; this.identifier(); } break; @@ -12669,14 +12661,14 @@ export class ImpalaSqlParser extends SQLParserBase { let localContext = new IdentifierContext(this.context, this.state); this.enterRule(localContext, 358, ImpalaSqlParser.RULE_identifier); try { - this.state = 2752; + this.state = 2750; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case ImpalaSqlParser.IDENTIFIER: localContext = new UnquotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2747; + this.state = 2745; this.match(ImpalaSqlParser.IDENTIFIER); } break; @@ -12684,7 +12676,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new QuotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2748; + this.state = 2746; this.match(ImpalaSqlParser.STRING); } break; @@ -12725,7 +12717,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new UnquotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2749; + this.state = 2747; this.nonReserved(); } break; @@ -12733,7 +12725,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new BackQuotedIdentifierContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2750; + this.state = 2748; this.match(ImpalaSqlParser.BACKQUOTED_IDENTIFIER); } break; @@ -12741,7 +12733,7 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new DigitIdentifierContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2751; + this.state = 2749; this.match(ImpalaSqlParser.DIGIT_IDENTIFIER); } break; @@ -12768,24 +12760,24 @@ export class ImpalaSqlParser extends SQLParserBase { this.enterRule(localContext, 360, ImpalaSqlParser.RULE_number); let _la: number; try { - this.state = 2766; + this.state = 2764; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 352, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context) ) { case 1: localContext = new DecimalLiteralContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2755; + this.state = 2753; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 256) { { - this.state = 2754; + this.state = 2752; this.match(ImpalaSqlParser.MINUS); } } - this.state = 2757; + this.state = 2755; this.match(ImpalaSqlParser.DECIMAL_VALUE); } break; @@ -12793,17 +12785,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new DoubleLiteralContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2759; + this.state = 2757; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 256) { { - this.state = 2758; + this.state = 2756; this.match(ImpalaSqlParser.MINUS); } } - this.state = 2761; + this.state = 2759; this.match(ImpalaSqlParser.DOUBLE_VALUE); } break; @@ -12811,17 +12803,17 @@ export class ImpalaSqlParser extends SQLParserBase { localContext = new IntegerLiteralContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2763; + this.state = 2761; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 256) { { - this.state = 2762; + this.state = 2760; this.match(ImpalaSqlParser.MINUS); } } - this.state = 2765; + this.state = 2763; this.match(ImpalaSqlParser.INTEGER_VALUE); } break; @@ -12848,7 +12840,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2768; + this.state = 2766; _la = this.tokenStream.LA(1); if(!(((((_la - 28)) & ~0x1F) === 0 && ((1 << (_la - 28)) & 1085443) !== 0) || _la === 68 || _la === 91 || ((((_la - 114)) & ~0x1F) === 0 && ((1 << (_la - 114)) & 1281) !== 0) || ((((_la - 158)) & ~0x1F) === 0 && ((1 << (_la - 158)) & 67125377) !== 0) || ((((_la - 196)) & ~0x1F) === 0 && ((1 << (_la - 196)) & 2097409) !== 0))) { this.errorHandler.recoverInline(this); @@ -12880,7 +12872,7 @@ export class ImpalaSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2770; + this.state = 2768; _la = this.tokenStream.LA(1); if(!(_la === 14 || ((((_la - 43)) & ~0x1F) === 0 && ((1 << (_la - 43)) & 37748835) !== 0) || ((((_la - 91)) & ~0x1F) === 0 && ((1 << (_la - 91)) & 2416443409) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 1610760439) !== 0) || ((((_la - 172)) & ~0x1F) === 0 && ((1 << (_la - 172)) & 8401155) !== 0) || ((((_la - 204)) & ~0x1F) === 0 && ((1 << (_la - 204)) & 134291969) !== 0))) { this.errorHandler.recoverInline(this); @@ -12986,7 +12978,7 @@ export class ImpalaSqlParser extends SQLParserBase { } public static readonly _serializedATN: number[] = [ - 4,1,289,2773,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, + 4,1,289,2771,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, @@ -13131,1023 +13123,1022 @@ export class ImpalaSqlParser extends SQLParserBase { 106,1,106,1,106,3,106,1646,8,106,1,107,1,107,1,107,1,107,3,107,1652, 8,107,1,108,1,108,1,109,1,109,1,109,1,109,5,109,1660,8,109,10,109, 12,109,1663,9,109,3,109,1665,8,109,1,109,1,109,3,109,1669,8,109, - 1,109,1,109,3,109,1673,8,109,1,110,3,110,1676,8,110,1,110,1,110, - 5,110,1680,8,110,10,110,12,110,1683,9,110,3,110,1685,8,110,1,111, - 1,111,1,111,1,111,3,111,1691,8,111,1,111,1,111,5,111,1695,8,111, - 10,111,12,111,1698,9,111,3,111,1700,8,111,1,112,3,112,1703,8,112, - 1,112,1,112,3,112,1707,8,112,1,113,1,113,1,113,1,113,1,113,1,113, - 1,113,1,113,3,113,1717,8,113,1,114,1,114,1,115,1,115,1,116,1,116, - 1,116,5,116,1726,8,116,10,116,12,116,1729,9,116,1,116,1,116,3,116, - 1733,8,116,1,116,3,116,1736,8,116,1,117,1,117,3,117,1740,8,117,1, - 117,1,117,1,117,1,118,1,118,3,118,1747,8,118,1,118,1,118,1,118,1, - 118,1,118,1,118,5,118,1755,8,118,10,118,12,118,1758,9,118,1,118, - 1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,3,119,1769,8,119, - 1,119,1,119,1,119,1,119,3,119,1775,8,119,3,119,1777,8,119,1,120, - 1,120,1,120,1,120,1,120,1,120,1,120,3,120,1786,8,120,1,120,3,120, - 1789,8,120,1,121,1,121,1,121,1,121,1,121,3,121,1796,8,121,1,122, - 1,122,1,122,1,122,1,122,1,122,1,122,1,122,3,122,1806,8,122,1,123, - 1,123,1,123,1,123,3,123,1812,8,123,1,124,1,124,1,124,1,124,5,124, - 1818,8,124,10,124,12,124,1821,9,124,1,124,1,124,1,125,1,125,1,125, - 1,125,5,125,1829,8,125,10,125,12,125,1832,9,125,1,125,1,125,1,126, - 1,126,1,126,5,126,1839,8,126,10,126,12,126,1842,9,126,1,127,1,127, - 1,127,1,127,1,127,1,127,1,127,1,127,3,127,1852,8,127,3,127,1854, - 8,127,1,127,1,127,1,127,1,127,3,127,1860,8,127,1,128,1,128,1,128, - 3,128,1865,8,128,1,129,1,129,1,129,1,129,1,129,1,129,5,129,1873, - 8,129,10,129,12,129,1876,9,129,3,129,1878,8,129,1,129,1,129,1,129, - 1,129,3,129,1884,8,129,3,129,1886,8,129,1,130,1,130,1,130,1,130, - 1,130,1,130,3,130,1894,8,130,1,130,1,130,1,130,1,130,3,130,1900, - 8,130,1,130,5,130,1903,8,130,10,130,12,130,1906,9,130,1,131,1,131, - 1,131,1,131,1,131,1,131,1,131,5,131,1915,8,131,10,131,12,131,1918, - 9,131,1,131,1,131,1,131,1,131,3,131,1924,8,131,1,132,1,132,3,132, - 1928,8,132,1,132,1,132,3,132,1932,8,132,1,133,1,133,3,133,1936,8, - 133,1,133,3,133,1939,8,133,1,133,1,133,1,133,5,133,1944,8,133,10, - 133,12,133,1947,9,133,1,133,1,133,1,133,1,133,5,133,1953,8,133,10, - 133,12,133,1956,9,133,3,133,1958,8,133,1,133,1,133,3,133,1962,8, - 133,1,133,1,133,1,133,3,133,1967,8,133,1,133,1,133,3,133,1971,8, - 133,1,134,3,134,1974,8,134,1,134,1,134,1,134,5,134,1979,8,134,10, - 134,12,134,1982,9,134,1,135,1,135,1,136,1,136,1,136,1,136,5,136, - 1990,8,136,10,136,12,136,1993,9,136,3,136,1995,8,136,1,136,1,136, - 3,136,1999,8,136,1,137,1,137,3,137,2003,8,137,1,137,1,137,1,137, - 1,138,1,138,1,139,1,139,3,139,2012,8,139,1,139,3,139,2015,8,139, - 1,139,1,139,1,139,1,139,1,139,3,139,2022,8,139,1,140,1,140,1,140, - 1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,3,140,2036, - 8,140,5,140,2038,8,140,10,140,12,140,2041,9,140,1,141,3,141,2044, - 8,141,1,141,1,141,3,141,2048,8,141,1,141,1,141,3,141,2052,8,141, - 1,141,1,141,3,141,2056,8,141,1,141,1,141,3,141,2060,8,141,1,141, - 1,141,3,141,2064,8,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141, - 1,141,3,141,2074,8,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142, - 5,142,2083,8,142,10,142,12,142,2086,9,142,1,142,1,142,3,142,2090, - 8,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143, - 1,143,3,143,2103,8,143,3,143,2105,8,143,1,144,1,144,1,145,1,145, - 3,145,2111,8,145,1,145,1,145,3,145,2115,8,145,3,145,2117,8,145,1, - 146,1,146,1,146,1,146,5,146,2123,8,146,10,146,12,146,2126,9,146, - 1,146,1,146,1,147,1,147,3,147,2132,8,147,1,147,1,147,1,147,3,147, - 2137,8,147,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149, - 5,149,2148,8,149,10,149,12,149,2151,9,149,1,149,1,149,1,149,3,149, - 2156,8,149,1,150,1,150,1,150,1,150,1,151,1,151,3,151,2164,8,151, - 1,152,1,152,1,153,1,153,1,153,3,153,2171,8,153,1,153,1,153,3,153, - 2175,8,153,1,153,1,153,1,153,1,153,1,153,1,153,5,153,2183,8,153, - 10,153,12,153,2186,9,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154, - 1,154,3,154,2196,8,154,1,154,1,154,1,154,1,154,1,154,1,154,3,154, - 2204,8,154,1,154,1,154,1,154,1,154,1,154,5,154,2211,8,154,10,154, - 12,154,2214,9,154,1,154,1,154,1,154,3,154,2219,8,154,1,154,1,154, - 1,154,3,154,2224,8,154,1,154,1,154,1,154,1,154,3,154,2230,8,154, - 1,154,1,154,1,154,1,154,3,154,2236,8,154,1,154,1,154,1,154,3,154, - 2241,8,154,1,154,1,154,1,154,3,154,2246,8,154,1,155,1,155,1,155, - 1,155,3,155,2252,8,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155, - 1,155,1,155,5,155,2263,8,155,10,155,12,155,2266,9,155,1,156,1,156, + 1,109,1,109,3,109,1673,8,109,1,110,1,110,1,110,5,110,1678,8,110, + 10,110,12,110,1681,9,110,3,110,1683,8,110,1,111,1,111,1,111,1,111, + 3,111,1689,8,111,1,111,1,111,5,111,1693,8,111,10,111,12,111,1696, + 9,111,3,111,1698,8,111,1,112,3,112,1701,8,112,1,112,1,112,3,112, + 1705,8,112,1,113,1,113,1,113,1,113,1,113,1,113,1,113,1,113,3,113, + 1715,8,113,1,114,1,114,1,115,1,115,1,116,1,116,1,116,5,116,1724, + 8,116,10,116,12,116,1727,9,116,1,116,1,116,3,116,1731,8,116,1,116, + 3,116,1734,8,116,1,117,1,117,3,117,1738,8,117,1,117,1,117,1,117, + 1,118,1,118,3,118,1745,8,118,1,118,1,118,1,118,1,118,1,118,1,118, + 5,118,1753,8,118,10,118,12,118,1756,9,118,1,118,1,118,1,119,1,119, + 1,119,1,119,1,119,1,119,1,119,3,119,1767,8,119,1,119,1,119,1,119, + 1,119,3,119,1773,8,119,3,119,1775,8,119,1,120,1,120,1,120,1,120, + 1,120,1,120,1,120,3,120,1784,8,120,1,120,3,120,1787,8,120,1,121, + 1,121,1,121,1,121,1,121,3,121,1794,8,121,1,122,1,122,1,122,1,122, + 1,122,1,122,1,122,1,122,3,122,1804,8,122,1,123,1,123,1,123,1,123, + 3,123,1810,8,123,1,124,1,124,1,124,1,124,5,124,1816,8,124,10,124, + 12,124,1819,9,124,1,124,1,124,1,125,1,125,1,125,1,125,5,125,1827, + 8,125,10,125,12,125,1830,9,125,1,125,1,125,1,126,1,126,1,126,5,126, + 1837,8,126,10,126,12,126,1840,9,126,1,127,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,3,127,1850,8,127,3,127,1852,8,127,1,127,1,127, + 1,127,1,127,3,127,1858,8,127,1,128,1,128,1,128,3,128,1863,8,128, + 1,129,1,129,1,129,1,129,1,129,1,129,5,129,1871,8,129,10,129,12,129, + 1874,9,129,3,129,1876,8,129,1,129,1,129,1,129,1,129,3,129,1882,8, + 129,3,129,1884,8,129,1,130,1,130,1,130,1,130,1,130,1,130,3,130,1892, + 8,130,1,130,1,130,1,130,1,130,3,130,1898,8,130,1,130,5,130,1901, + 8,130,10,130,12,130,1904,9,130,1,131,1,131,1,131,1,131,1,131,1,131, + 1,131,5,131,1913,8,131,10,131,12,131,1916,9,131,1,131,1,131,1,131, + 1,131,3,131,1922,8,131,1,132,1,132,3,132,1926,8,132,1,132,1,132, + 3,132,1930,8,132,1,133,1,133,3,133,1934,8,133,1,133,3,133,1937,8, + 133,1,133,1,133,1,133,5,133,1942,8,133,10,133,12,133,1945,9,133, + 1,133,1,133,1,133,1,133,5,133,1951,8,133,10,133,12,133,1954,9,133, + 3,133,1956,8,133,1,133,1,133,3,133,1960,8,133,1,133,1,133,1,133, + 3,133,1965,8,133,1,133,1,133,3,133,1969,8,133,1,134,3,134,1972,8, + 134,1,134,1,134,1,134,5,134,1977,8,134,10,134,12,134,1980,9,134, + 1,135,1,135,1,136,1,136,1,136,1,136,5,136,1988,8,136,10,136,12,136, + 1991,9,136,3,136,1993,8,136,1,136,1,136,3,136,1997,8,136,1,137,1, + 137,3,137,2001,8,137,1,137,1,137,1,137,1,138,1,138,1,139,1,139,3, + 139,2010,8,139,1,139,3,139,2013,8,139,1,139,1,139,1,139,1,139,1, + 139,3,139,2020,8,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1, + 140,1,140,1,140,1,140,1,140,3,140,2034,8,140,5,140,2036,8,140,10, + 140,12,140,2039,9,140,1,141,3,141,2042,8,141,1,141,1,141,3,141,2046, + 8,141,1,141,1,141,3,141,2050,8,141,1,141,1,141,3,141,2054,8,141, + 1,141,1,141,3,141,2058,8,141,1,141,1,141,3,141,2062,8,141,1,141, + 1,141,1,141,1,141,1,141,1,141,1,141,1,141,3,141,2072,8,141,1,142, + 1,142,1,142,1,142,1,142,1,142,1,142,5,142,2081,8,142,10,142,12,142, + 2084,9,142,1,142,1,142,3,142,2088,8,142,1,143,1,143,1,143,1,143, + 1,143,1,143,1,143,1,143,1,143,1,143,1,143,3,143,2101,8,143,3,143, + 2103,8,143,1,144,1,144,1,145,1,145,3,145,2109,8,145,1,145,1,145, + 3,145,2113,8,145,3,145,2115,8,145,1,146,1,146,1,146,1,146,5,146, + 2121,8,146,10,146,12,146,2124,9,146,1,146,1,146,1,147,1,147,3,147, + 2130,8,147,1,147,1,147,1,147,3,147,2135,8,147,1,148,1,148,1,148, + 1,148,1,149,1,149,1,149,1,149,1,149,5,149,2146,8,149,10,149,12,149, + 2149,9,149,1,149,1,149,1,149,3,149,2154,8,149,1,150,1,150,1,150, + 1,150,1,151,1,151,3,151,2162,8,151,1,152,1,152,1,153,1,153,1,153, + 3,153,2169,8,153,1,153,1,153,3,153,2173,8,153,1,153,1,153,1,153, + 1,153,1,153,1,153,5,153,2181,8,153,10,153,12,153,2184,9,153,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,1,154,3,154,2194,8,154,1,154, + 1,154,1,154,1,154,1,154,1,154,3,154,2202,8,154,1,154,1,154,1,154, + 1,154,1,154,5,154,2209,8,154,10,154,12,154,2212,9,154,1,154,1,154, + 1,154,3,154,2217,8,154,1,154,1,154,1,154,3,154,2222,8,154,1,154, + 1,154,1,154,1,154,3,154,2228,8,154,1,154,1,154,1,154,1,154,3,154, + 2234,8,154,1,154,1,154,1,154,3,154,2239,8,154,1,154,1,154,1,154, + 3,154,2244,8,154,1,155,1,155,1,155,1,155,3,155,2250,8,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,5,155,2261,8,155, + 10,155,12,155,2264,9,155,1,156,1,156,1,156,1,156,1,156,1,156,1,156, 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,1,156,1,156,3,156,2290,8,156,1,156,1,156, + 1,156,1,156,3,156,2296,8,156,5,156,2298,8,156,10,156,12,156,2301, + 9,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,5,156,2310,8,156, + 10,156,12,156,2313,9,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, + 3,156,2322,8,156,1,156,3,156,2325,8,156,1,156,1,156,1,156,3,156, + 2330,8,156,1,156,1,156,1,156,5,156,2335,8,156,10,156,12,156,2338, + 9,156,3,156,2340,8,156,1,156,1,156,1,156,1,156,1,156,5,156,2347, + 8,156,10,156,12,156,2350,9,156,3,156,2352,8,156,1,156,1,156,3,156, + 2356,8,156,1,156,3,156,2359,8,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,5,156,2369,8,156,10,156,12,156,2372,9,156,3,156, + 2374,8,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,1,156,1,156,4,156,2391,8,156,11,156,12,156, + 2392,1,156,1,156,3,156,2397,8,156,1,156,1,156,1,156,1,156,4,156, + 2403,8,156,11,156,12,156,2404,1,156,1,156,3,156,2409,8,156,1,156, 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, - 3,156,2292,8,156,1,156,1,156,1,156,1,156,3,156,2298,8,156,5,156, - 2300,8,156,10,156,12,156,2303,9,156,1,156,1,156,1,156,1,156,1,156, - 1,156,1,156,5,156,2312,8,156,10,156,12,156,2315,9,156,1,156,1,156, - 1,156,1,156,1,156,1,156,1,156,3,156,2324,8,156,1,156,3,156,2327, - 8,156,1,156,1,156,1,156,3,156,2332,8,156,1,156,1,156,1,156,5,156, - 2337,8,156,10,156,12,156,2340,9,156,3,156,2342,8,156,1,156,1,156, - 1,156,1,156,1,156,5,156,2349,8,156,10,156,12,156,2352,9,156,3,156, - 2354,8,156,1,156,1,156,3,156,2358,8,156,1,156,3,156,2361,8,156,1, - 156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,5,156,2371,8,156,10, - 156,12,156,2374,9,156,3,156,2376,8,156,1,156,1,156,1,156,1,156,1, - 156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, - 4,156,2393,8,156,11,156,12,156,2394,1,156,1,156,3,156,2399,8,156, - 1,156,1,156,1,156,1,156,4,156,2405,8,156,11,156,12,156,2406,1,156, - 1,156,3,156,2411,8,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,5,156,2432, + 8,156,10,156,12,156,2435,9,156,3,156,2437,8,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,3,156,2446,8,156,1,156,1,156,1,156,1,156, + 3,156,2452,8,156,1,156,1,156,1,156,1,156,3,156,2458,8,156,1,156, + 1,156,1,156,1,156,3,156,2464,8,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,1,156,3,156,2475,8,156,1,156,1,156,1,156,1,156, + 1,156,1,156,1,156,3,156,2484,8,156,1,156,1,156,1,156,1,156,1,156, 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, - 1,156,1,156,1,156,5,156,2434,8,156,10,156,12,156,2437,9,156,3,156, - 2439,8,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,3,156,2448, - 8,156,1,156,1,156,1,156,1,156,3,156,2454,8,156,1,156,1,156,1,156, - 1,156,3,156,2460,8,156,1,156,1,156,1,156,1,156,3,156,2466,8,156, - 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,3,156,2477, - 8,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,3,156,2486,8,156, - 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, - 1,156,1,156,1,156,1,156,1,156,1,156,1,156,5,156,2506,8,156,10,156, - 12,156,2509,9,156,3,156,2511,8,156,1,156,3,156,2514,8,156,1,156, - 1,156,1,156,1,156,1,156,1,156,1,156,1,156,5,156,2524,8,156,10,156, - 12,156,2527,9,156,1,157,1,157,1,157,1,157,3,157,2533,8,157,3,157, - 2535,8,157,1,158,1,158,1,159,1,159,1,160,1,160,1,161,1,161,1,161, - 1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161, - 3,161,2557,8,161,1,162,1,162,1,163,1,163,1,164,1,164,1,164,1,164, + 1,156,1,156,5,156,2504,8,156,10,156,12,156,2507,9,156,3,156,2509, + 8,156,1,156,3,156,2512,8,156,1,156,1,156,1,156,1,156,1,156,1,156, + 1,156,1,156,5,156,2522,8,156,10,156,12,156,2525,9,156,1,157,1,157, + 1,157,1,157,3,157,2531,8,157,3,157,2533,8,157,1,158,1,158,1,159, + 1,159,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,161,1,161,1,161, + 1,161,1,161,1,161,1,161,1,161,1,161,3,161,2555,8,161,1,162,1,162, + 1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, 1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164, - 1,164,1,164,1,164,1,164,1,164,1,164,5,164,2584,8,164,10,164,12,164, - 2587,9,164,1,164,1,164,1,164,1,164,3,164,2593,8,164,1,164,1,164, - 1,164,1,164,5,164,2599,8,164,10,164,12,164,2602,9,164,1,164,1,164, - 3,164,2606,8,164,3,164,2608,8,164,1,164,1,164,5,164,2612,8,164,10, - 164,12,164,2615,9,164,1,165,1,165,1,166,1,166,3,166,2621,8,166,1, - 167,1,167,1,167,1,167,3,167,2627,8,167,1,168,1,168,1,168,1,168,1, - 168,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170, - 1,170,1,170,1,170,5,170,2647,8,170,10,170,12,170,2650,9,170,3,170, - 2652,8,170,1,170,1,170,1,170,1,170,1,170,5,170,2659,8,170,10,170, - 12,170,2662,9,170,3,170,2664,8,170,1,170,3,170,2667,8,170,1,170, - 1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, - 1,171,1,171,1,171,1,171,1,171,1,171,3,171,2687,8,171,1,172,1,172, - 1,172,1,172,1,172,1,172,1,172,1,172,1,172,3,172,2698,8,172,1,173, - 1,173,1,173,1,173,1,173,3,173,2705,8,173,1,174,1,174,1,174,5,174, - 2710,8,174,10,174,12,174,2713,9,174,1,175,1,175,1,175,1,175,1,175, - 1,175,1,175,1,175,1,175,1,175,1,175,3,175,2726,8,175,3,175,2728, - 8,175,1,176,1,176,1,177,1,177,1,177,5,177,2735,8,177,10,177,12,177, - 2738,9,177,1,178,1,178,1,178,1,178,1,178,1,178,3,178,2746,8,178, - 1,179,1,179,1,179,1,179,1,179,3,179,2753,8,179,1,180,3,180,2756, - 8,180,1,180,1,180,3,180,2760,8,180,1,180,1,180,3,180,2764,8,180, - 1,180,3,180,2767,8,180,1,181,1,181,1,182,1,182,1,182,10,770,1446, - 1621,1661,1681,1696,1727,1756,1830,2301,6,260,280,306,310,312,328, - 183,0,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, - 156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186, - 188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218, - 220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250, - 252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282, - 284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314, - 316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346, - 348,350,352,354,356,358,360,362,364,0,33,2,0,46,46,170,170,2,0,166, - 166,204,204,2,0,176,176,202,202,2,0,69,69,80,80,2,0,27,27,159,159, - 2,0,103,103,144,144,2,0,47,47,171,171,2,0,3,3,12,12,3,0,87,87,166, - 166,204,204,2,0,178,178,209,209,1,0,245,248,2,0,147,147,219,223, - 2,0,65,65,95,95,2,0,64,64,200,200,2,0,10,10,55,55,2,0,75,75,112, - 112,2,0,2,2,57,57,2,0,14,14,185,185,3,0,106,106,115,115,164,164, - 2,0,105,105,163,163,4,0,70,70,133,133,194,194,208,208,1,0,255,256, - 1,0,257,259,1,0,249,254,3,0,2,2,6,6,181,181,2,0,70,70,194,194,5, - 0,48,49,91,92,122,125,172,173,217,218,1,0,127,130,2,0,8,8,227,244, - 2,0,77,77,149,149,4,0,46,46,178,178,188,188,209,209,16,0,28,29,40, - 40,43,43,48,48,68,68,91,91,114,114,122,122,124,124,158,158,165,165, - 172,172,184,184,196,196,204,204,217,217,23,0,14,14,43,44,48,49,65, - 65,68,68,91,91,95,95,110,110,119,119,122,125,127,130,137,137,140, - 140,152,153,172,173,180,180,184,185,195,195,204,204,213,213,217, - 217,220,220,231,231,3096,0,369,1,0,0,0,2,374,1,0,0,0,4,400,1,0,0, - 0,6,402,1,0,0,0,8,413,1,0,0,0,10,415,1,0,0,0,12,454,1,0,0,0,14,476, - 1,0,0,0,16,531,1,0,0,0,18,551,1,0,0,0,20,565,1,0,0,0,22,569,1,0, - 0,0,24,631,1,0,0,0,26,679,1,0,0,0,28,681,1,0,0,0,30,689,1,0,0,0, - 32,709,1,0,0,0,34,729,1,0,0,0,36,736,1,0,0,0,38,745,1,0,0,0,40,753, - 1,0,0,0,42,775,1,0,0,0,44,785,1,0,0,0,46,803,1,0,0,0,48,824,1,0, - 0,0,50,845,1,0,0,0,52,851,1,0,0,0,54,868,1,0,0,0,56,877,1,0,0,0, - 58,884,1,0,0,0,60,892,1,0,0,0,62,899,1,0,0,0,64,906,1,0,0,0,66,915, - 1,0,0,0,68,926,1,0,0,0,70,928,1,0,0,0,72,948,1,0,0,0,74,965,1,0, - 0,0,76,967,1,0,0,0,78,976,1,0,0,0,80,983,1,0,0,0,82,992,1,0,0,0, - 84,1002,1,0,0,0,86,1025,1,0,0,0,88,1031,1,0,0,0,90,1033,1,0,0,0, - 92,1040,1,0,0,0,94,1052,1,0,0,0,96,1054,1,0,0,0,98,1061,1,0,0,0, - 100,1082,1,0,0,0,102,1111,1,0,0,0,104,1113,1,0,0,0,106,1122,1,0, - 0,0,108,1145,1,0,0,0,110,1164,1,0,0,0,112,1187,1,0,0,0,114,1189, - 1,0,0,0,116,1204,1,0,0,0,118,1223,1,0,0,0,120,1245,1,0,0,0,122,1250, - 1,0,0,0,124,1255,1,0,0,0,126,1260,1,0,0,0,128,1265,1,0,0,0,130,1272, - 1,0,0,0,132,1287,1,0,0,0,134,1293,1,0,0,0,136,1313,1,0,0,0,138,1315, - 1,0,0,0,140,1326,1,0,0,0,142,1337,1,0,0,0,144,1351,1,0,0,0,146,1353, - 1,0,0,0,148,1362,1,0,0,0,150,1371,1,0,0,0,152,1380,1,0,0,0,154,1383, - 1,0,0,0,156,1391,1,0,0,0,158,1407,1,0,0,0,160,1411,1,0,0,0,162,1435, - 1,0,0,0,164,1437,1,0,0,0,166,1453,1,0,0,0,168,1456,1,0,0,0,170,1460, - 1,0,0,0,172,1463,1,0,0,0,174,1467,1,0,0,0,176,1469,1,0,0,0,178,1471, - 1,0,0,0,180,1473,1,0,0,0,182,1475,1,0,0,0,184,1477,1,0,0,0,186,1479, - 1,0,0,0,188,1487,1,0,0,0,190,1497,1,0,0,0,192,1501,1,0,0,0,194,1505, - 1,0,0,0,196,1510,1,0,0,0,198,1551,1,0,0,0,200,1559,1,0,0,0,202,1563, - 1,0,0,0,204,1583,1,0,0,0,206,1587,1,0,0,0,208,1596,1,0,0,0,210,1626, - 1,0,0,0,212,1641,1,0,0,0,214,1647,1,0,0,0,216,1653,1,0,0,0,218,1655, - 1,0,0,0,220,1675,1,0,0,0,222,1686,1,0,0,0,224,1706,1,0,0,0,226,1716, - 1,0,0,0,228,1718,1,0,0,0,230,1720,1,0,0,0,232,1735,1,0,0,0,234,1737, - 1,0,0,0,236,1744,1,0,0,0,238,1776,1,0,0,0,240,1788,1,0,0,0,242,1795, - 1,0,0,0,244,1805,1,0,0,0,246,1807,1,0,0,0,248,1813,1,0,0,0,250,1824, - 1,0,0,0,252,1835,1,0,0,0,254,1843,1,0,0,0,256,1861,1,0,0,0,258,1866, - 1,0,0,0,260,1887,1,0,0,0,262,1923,1,0,0,0,264,1925,1,0,0,0,266,1933, - 1,0,0,0,268,1973,1,0,0,0,270,1983,1,0,0,0,272,1998,1,0,0,0,274,2000, - 1,0,0,0,276,2007,1,0,0,0,278,2021,1,0,0,0,280,2023,1,0,0,0,282,2073, - 1,0,0,0,284,2089,1,0,0,0,286,2091,1,0,0,0,288,2106,1,0,0,0,290,2108, - 1,0,0,0,292,2118,1,0,0,0,294,2136,1,0,0,0,296,2138,1,0,0,0,298,2142, - 1,0,0,0,300,2157,1,0,0,0,302,2163,1,0,0,0,304,2165,1,0,0,0,306,2174, - 1,0,0,0,308,2245,1,0,0,0,310,2251,1,0,0,0,312,2513,1,0,0,0,314,2534, - 1,0,0,0,316,2536,1,0,0,0,318,2538,1,0,0,0,320,2540,1,0,0,0,322,2556, - 1,0,0,0,324,2558,1,0,0,0,326,2560,1,0,0,0,328,2607,1,0,0,0,330,2616, - 1,0,0,0,332,2620,1,0,0,0,334,2626,1,0,0,0,336,2628,1,0,0,0,338,2633, - 1,0,0,0,340,2639,1,0,0,0,342,2686,1,0,0,0,344,2697,1,0,0,0,346,2704, - 1,0,0,0,348,2706,1,0,0,0,350,2727,1,0,0,0,352,2729,1,0,0,0,354,2731, - 1,0,0,0,356,2745,1,0,0,0,358,2752,1,0,0,0,360,2766,1,0,0,0,362,2768, - 1,0,0,0,364,2770,1,0,0,0,366,368,3,2,1,0,367,366,1,0,0,0,368,371, - 1,0,0,0,369,367,1,0,0,0,369,370,1,0,0,0,370,372,1,0,0,0,371,369, - 1,0,0,0,372,373,5,0,0,1,373,1,1,0,0,0,374,376,3,4,2,0,375,377,5, - 262,0,0,376,375,1,0,0,0,376,377,1,0,0,0,377,3,1,0,0,0,378,401,3, - 204,102,0,379,401,3,6,3,0,380,401,3,8,4,0,381,401,3,26,13,0,382, - 401,3,64,32,0,383,401,3,66,33,0,384,401,3,68,34,0,385,401,3,74,37, - 0,386,401,3,88,44,0,387,401,3,94,47,0,388,401,3,100,50,0,389,401, - 3,102,51,0,390,401,3,108,54,0,391,401,3,110,55,0,392,401,3,112,56, - 0,393,401,3,144,72,0,394,401,3,152,76,0,395,401,3,154,77,0,396,401, - 3,156,78,0,397,401,3,158,79,0,398,401,3,160,80,0,399,401,3,162,81, - 0,400,378,1,0,0,0,400,379,1,0,0,0,400,380,1,0,0,0,400,381,1,0,0, - 0,400,382,1,0,0,0,400,383,1,0,0,0,400,384,1,0,0,0,400,385,1,0,0, - 0,400,386,1,0,0,0,400,387,1,0,0,0,400,388,1,0,0,0,400,389,1,0,0, - 0,400,390,1,0,0,0,400,391,1,0,0,0,400,392,1,0,0,0,400,393,1,0,0, - 0,400,394,1,0,0,0,400,395,1,0,0,0,400,396,1,0,0,0,400,397,1,0,0, - 0,400,398,1,0,0,0,400,399,1,0,0,0,401,5,1,0,0,0,402,403,5,203,0, - 0,403,404,3,184,92,0,404,7,1,0,0,0,405,414,3,18,9,0,406,414,3,20, - 10,0,407,414,3,22,11,0,408,414,3,24,12,0,409,414,3,16,8,0,410,414, - 3,14,7,0,411,414,3,12,6,0,412,414,3,10,5,0,413,405,1,0,0,0,413,406, - 1,0,0,0,413,407,1,0,0,0,413,408,1,0,0,0,413,409,1,0,0,0,413,410, - 1,0,0,0,413,411,1,0,0,0,413,412,1,0,0,0,414,9,1,0,0,0,415,417,5, - 37,0,0,416,418,5,19,0,0,417,416,1,0,0,0,417,418,1,0,0,0,418,419, - 1,0,0,0,419,421,5,188,0,0,420,422,3,172,86,0,421,420,1,0,0,0,421, - 422,1,0,0,0,422,423,1,0,0,0,423,439,3,174,87,0,424,425,5,265,0,0, - 425,430,3,214,107,0,426,427,5,263,0,0,427,429,3,214,107,0,428,426, - 1,0,0,0,429,432,1,0,0,0,430,428,1,0,0,0,430,431,1,0,0,0,431,435, - 1,0,0,0,432,430,1,0,0,0,433,434,5,263,0,0,434,436,3,208,104,0,435, - 433,1,0,0,0,435,436,1,0,0,0,436,437,1,0,0,0,437,438,5,266,0,0,438, - 440,1,0,0,0,439,424,1,0,0,0,439,440,1,0,0,0,440,447,1,0,0,0,441, - 442,5,17,0,0,442,445,5,26,0,0,443,446,3,292,146,0,444,446,3,250, - 125,0,445,443,1,0,0,0,445,444,1,0,0,0,446,448,1,0,0,0,447,441,1, - 0,0,0,447,448,1,0,0,0,448,449,1,0,0,0,449,452,3,196,98,0,450,451, - 5,9,0,0,451,453,3,204,102,0,452,450,1,0,0,0,452,453,1,0,0,0,453, - 11,1,0,0,0,454,456,5,37,0,0,455,457,5,19,0,0,456,455,1,0,0,0,456, - 457,1,0,0,0,457,458,1,0,0,0,458,460,5,188,0,0,459,461,3,172,86,0, - 460,459,1,0,0,0,460,461,1,0,0,0,461,462,1,0,0,0,462,463,3,174,87, - 0,463,467,5,115,0,0,464,468,3,186,93,0,465,466,5,147,0,0,466,468, - 3,314,157,0,467,464,1,0,0,0,467,465,1,0,0,0,468,472,1,0,0,0,469, - 470,5,17,0,0,470,471,5,26,0,0,471,473,3,250,125,0,472,469,1,0,0, - 0,472,473,1,0,0,0,473,474,1,0,0,0,474,475,3,196,98,0,475,13,1,0, - 0,0,476,478,5,37,0,0,477,479,5,19,0,0,478,477,1,0,0,0,478,479,1, - 0,0,0,479,480,1,0,0,0,480,482,5,188,0,0,481,483,3,172,86,0,482,481, - 1,0,0,0,482,483,1,0,0,0,483,484,1,0,0,0,484,502,3,174,87,0,485,486, - 5,265,0,0,486,491,3,216,108,0,487,488,5,263,0,0,488,490,3,216,108, - 0,489,487,1,0,0,0,490,493,1,0,0,0,491,489,1,0,0,0,491,492,1,0,0, - 0,492,498,1,0,0,0,493,491,1,0,0,0,494,495,5,263,0,0,495,496,5,150, - 0,0,496,497,5,110,0,0,497,499,3,292,146,0,498,494,1,0,0,0,498,499, - 1,0,0,0,499,500,1,0,0,0,500,501,5,266,0,0,501,503,1,0,0,0,502,485, - 1,0,0,0,502,503,1,0,0,0,503,509,1,0,0,0,504,505,5,150,0,0,505,507, - 5,110,0,0,506,508,3,292,146,0,507,506,1,0,0,0,507,508,1,0,0,0,508, - 510,1,0,0,0,509,504,1,0,0,0,509,510,1,0,0,0,510,514,1,0,0,0,511, - 512,5,145,0,0,512,513,5,26,0,0,513,515,3,232,116,0,514,511,1,0,0, - 0,514,515,1,0,0,0,515,518,1,0,0,0,516,517,5,34,0,0,517,519,3,314, - 157,0,518,516,1,0,0,0,518,519,1,0,0,0,519,520,1,0,0,0,520,521,5, - 23,0,0,521,522,5,9,0,0,522,525,5,111,0,0,523,524,5,25,0,0,524,526, - 3,248,124,0,525,523,1,0,0,0,525,526,1,0,0,0,526,529,1,0,0,0,527, - 528,5,9,0,0,528,530,3,204,102,0,529,527,1,0,0,0,529,530,1,0,0,0, - 530,15,1,0,0,0,531,532,5,37,0,0,532,534,5,212,0,0,533,535,3,172, - 86,0,534,533,1,0,0,0,534,535,1,0,0,0,535,536,1,0,0,0,536,538,3,178, - 89,0,537,539,3,202,101,0,538,537,1,0,0,0,538,539,1,0,0,0,539,542, - 1,0,0,0,540,541,5,34,0,0,541,543,3,314,157,0,542,540,1,0,0,0,542, - 543,1,0,0,0,543,546,1,0,0,0,544,545,5,25,0,0,545,547,3,248,124,0, - 546,544,1,0,0,0,546,547,1,0,0,0,547,548,1,0,0,0,548,549,5,9,0,0, - 549,550,3,204,102,0,550,17,1,0,0,0,551,552,5,37,0,0,552,554,7,0, - 0,0,553,555,3,172,86,0,554,553,1,0,0,0,554,555,1,0,0,0,555,556,1, - 0,0,0,556,559,3,176,88,0,557,558,5,34,0,0,558,560,3,314,157,0,559, - 557,1,0,0,0,559,560,1,0,0,0,560,563,1,0,0,0,561,562,5,24,0,0,562, - 564,3,314,157,0,563,561,1,0,0,0,563,564,1,0,0,0,564,19,1,0,0,0,565, - 566,5,37,0,0,566,567,5,166,0,0,567,568,3,358,179,0,568,21,1,0,0, - 0,569,571,5,37,0,0,570,572,5,12,0,0,571,570,1,0,0,0,571,572,1,0, - 0,0,572,573,1,0,0,0,573,575,5,84,0,0,574,576,3,172,86,0,575,574, - 1,0,0,0,575,576,1,0,0,0,576,577,1,0,0,0,577,590,3,180,90,0,578,587, - 5,265,0,0,579,584,3,328,164,0,580,581,5,263,0,0,581,583,3,328,164, - 0,582,580,1,0,0,0,583,586,1,0,0,0,584,582,1,0,0,0,584,585,1,0,0, - 0,585,588,1,0,0,0,586,584,1,0,0,0,587,579,1,0,0,0,587,588,1,0,0, - 0,588,589,1,0,0,0,589,591,5,266,0,0,590,578,1,0,0,0,590,591,1,0, - 0,0,591,592,1,0,0,0,592,593,5,160,0,0,593,596,3,328,164,0,594,595, - 5,102,0,0,595,597,3,328,164,0,596,594,1,0,0,0,596,597,1,0,0,0,597, - 598,1,0,0,0,598,599,5,24,0,0,599,603,5,274,0,0,600,601,5,104,0,0, - 601,602,5,249,0,0,602,604,5,274,0,0,603,600,1,0,0,0,603,604,1,0, - 0,0,604,605,1,0,0,0,605,606,5,206,0,0,606,607,5,249,0,0,607,608, - 5,274,0,0,608,609,5,126,0,0,609,610,5,249,0,0,610,614,5,274,0,0, - 611,612,5,18,0,0,612,613,5,249,0,0,613,615,5,274,0,0,614,611,1,0, - 0,0,614,615,1,0,0,0,615,619,1,0,0,0,616,617,5,20,0,0,617,618,5,249, - 0,0,618,620,5,274,0,0,619,616,1,0,0,0,619,620,1,0,0,0,620,624,1, - 0,0,0,621,622,5,187,0,0,622,623,5,249,0,0,623,625,5,274,0,0,624, - 621,1,0,0,0,624,625,1,0,0,0,625,629,1,0,0,0,626,627,5,76,0,0,627, - 628,5,249,0,0,628,630,5,274,0,0,629,626,1,0,0,0,629,630,1,0,0,0, - 630,23,1,0,0,0,631,632,5,37,0,0,632,634,5,84,0,0,633,635,3,172,86, - 0,634,633,1,0,0,0,634,635,1,0,0,0,635,636,1,0,0,0,636,649,3,180, - 90,0,637,646,5,265,0,0,638,643,3,328,164,0,639,640,5,263,0,0,640, - 642,3,328,164,0,641,639,1,0,0,0,642,645,1,0,0,0,643,641,1,0,0,0, - 643,644,1,0,0,0,644,647,1,0,0,0,645,643,1,0,0,0,646,638,1,0,0,0, - 646,647,1,0,0,0,647,648,1,0,0,0,648,650,5,266,0,0,649,637,1,0,0, - 0,649,650,1,0,0,0,650,653,1,0,0,0,651,652,5,160,0,0,652,654,3,328, - 164,0,653,651,1,0,0,0,653,654,1,0,0,0,654,655,1,0,0,0,655,656,5, - 24,0,0,656,657,5,274,0,0,657,658,5,186,0,0,658,659,5,249,0,0,659, - 660,3,314,157,0,660,25,1,0,0,0,661,680,3,28,14,0,662,680,3,62,31, - 0,663,680,3,60,30,0,664,680,3,58,29,0,665,680,3,54,27,0,666,680, - 3,56,28,0,667,680,3,52,26,0,668,680,3,48,24,0,669,680,3,50,25,0, - 670,680,3,46,23,0,671,680,3,44,22,0,672,680,3,42,21,0,673,680,3, - 40,20,0,674,680,3,34,17,0,675,680,3,30,15,0,676,680,3,32,16,0,677, - 680,3,36,18,0,678,680,3,38,19,0,679,661,1,0,0,0,679,662,1,0,0,0, - 679,663,1,0,0,0,679,664,1,0,0,0,679,665,1,0,0,0,679,666,1,0,0,0, - 679,667,1,0,0,0,679,668,1,0,0,0,679,669,1,0,0,0,679,670,1,0,0,0, - 679,671,1,0,0,0,679,672,1,0,0,0,679,673,1,0,0,0,679,674,1,0,0,0, - 679,675,1,0,0,0,679,676,1,0,0,0,679,677,1,0,0,0,679,678,1,0,0,0, - 680,27,1,0,0,0,681,682,5,4,0,0,682,683,5,46,0,0,683,684,3,184,92, - 0,684,685,5,176,0,0,685,686,5,142,0,0,686,687,7,1,0,0,687,688,3, - 358,179,0,688,29,1,0,0,0,689,690,5,4,0,0,690,691,5,188,0,0,691,692, - 3,186,93,0,692,693,5,176,0,0,693,694,5,32,0,0,694,695,5,182,0,0, - 695,696,3,192,96,0,696,697,5,265,0,0,697,698,3,228,114,0,698,699, - 5,249,0,0,699,705,3,314,157,0,700,701,5,263,0,0,701,702,3,228,114, - 0,702,703,5,249,0,0,703,704,3,314,157,0,704,706,1,0,0,0,705,700, - 1,0,0,0,705,706,1,0,0,0,706,707,1,0,0,0,707,708,5,266,0,0,708,31, - 1,0,0,0,709,710,5,4,0,0,710,711,5,188,0,0,711,714,3,186,93,0,712, - 713,5,145,0,0,713,715,3,304,152,0,714,712,1,0,0,0,714,715,1,0,0, - 0,715,716,1,0,0,0,716,727,5,176,0,0,717,718,5,30,0,0,718,719,5,94, - 0,0,719,724,3,314,157,0,720,721,5,216,0,0,721,722,5,151,0,0,722, - 723,5,249,0,0,723,725,3,360,180,0,724,720,1,0,0,0,724,725,1,0,0, - 0,725,728,1,0,0,0,726,728,5,197,0,0,727,717,1,0,0,0,727,726,1,0, - 0,0,728,33,1,0,0,0,729,730,5,4,0,0,730,731,5,188,0,0,731,732,3,186, - 93,0,732,733,5,31,0,0,733,734,5,32,0,0,734,735,3,220,110,0,735,35, - 1,0,0,0,736,737,5,4,0,0,737,738,5,188,0,0,738,739,3,186,93,0,739, - 741,5,58,0,0,740,742,5,32,0,0,741,740,1,0,0,0,741,742,1,0,0,0,742, - 743,1,0,0,0,743,744,3,192,96,0,744,37,1,0,0,0,745,746,5,4,0,0,746, - 747,5,188,0,0,747,748,3,186,93,0,748,749,5,176,0,0,749,750,5,142, - 0,0,750,751,7,1,0,0,751,752,3,358,179,0,752,39,1,0,0,0,753,754,5, - 4,0,0,754,755,5,188,0,0,755,761,3,186,93,0,756,762,5,158,0,0,757, - 759,5,1,0,0,758,760,3,172,86,0,759,758,1,0,0,0,759,760,1,0,0,0,760, - 762,1,0,0,0,761,756,1,0,0,0,761,757,1,0,0,0,762,763,1,0,0,0,763, - 764,5,33,0,0,764,765,5,265,0,0,765,770,3,220,110,0,766,767,5,263, - 0,0,767,769,3,220,110,0,768,766,1,0,0,0,769,772,1,0,0,0,770,771, - 1,0,0,0,770,768,1,0,0,0,771,773,1,0,0,0,772,770,1,0,0,0,773,774, - 5,266,0,0,774,41,1,0,0,0,775,776,5,4,0,0,776,777,5,188,0,0,777,778, - 3,186,93,0,778,779,5,1,0,0,779,781,5,32,0,0,780,782,3,172,86,0,781, - 780,1,0,0,0,781,782,1,0,0,0,782,783,1,0,0,0,783,784,3,222,111,0, - 784,43,1,0,0,0,785,786,5,4,0,0,786,787,5,188,0,0,787,788,3,186,93, - 0,788,790,5,4,0,0,789,791,5,32,0,0,790,789,1,0,0,0,790,791,1,0,0, - 0,791,792,1,0,0,0,792,801,3,192,96,0,793,797,5,176,0,0,794,798,3, - 226,113,0,795,796,5,34,0,0,796,798,3,314,157,0,797,794,1,0,0,0,797, - 795,1,0,0,0,798,802,1,0,0,0,799,800,5,58,0,0,800,802,5,51,0,0,801, - 793,1,0,0,0,801,799,1,0,0,0,802,45,1,0,0,0,803,804,5,4,0,0,804,805, - 5,188,0,0,805,806,3,186,93,0,806,808,5,1,0,0,807,809,3,172,86,0, - 808,807,1,0,0,0,808,809,1,0,0,0,809,822,1,0,0,0,810,811,5,145,0, - 0,811,814,3,304,152,0,812,813,5,24,0,0,813,815,3,314,157,0,814,812, - 1,0,0,0,814,815,1,0,0,0,815,817,1,0,0,0,816,818,3,240,120,0,817, - 816,1,0,0,0,817,818,1,0,0,0,818,823,1,0,0,0,819,820,5,154,0,0,820, - 821,5,145,0,0,821,823,3,238,119,0,822,810,1,0,0,0,822,819,1,0,0, - 0,823,47,1,0,0,0,824,825,5,4,0,0,825,826,5,188,0,0,826,829,3,186, - 93,0,827,828,5,145,0,0,828,830,3,304,152,0,829,827,1,0,0,0,829,830, - 1,0,0,0,830,831,1,0,0,0,831,843,5,176,0,0,832,833,5,72,0,0,833,844, - 3,230,115,0,834,835,5,168,0,0,835,836,5,79,0,0,836,844,3,254,127, - 0,837,838,5,24,0,0,838,844,3,314,157,0,839,840,5,25,0,0,840,844, - 3,248,124,0,841,842,5,175,0,0,842,844,3,248,124,0,843,832,1,0,0, - 0,843,834,1,0,0,0,843,837,1,0,0,0,843,839,1,0,0,0,843,841,1,0,0, - 0,844,49,1,0,0,0,845,846,5,4,0,0,846,847,5,188,0,0,847,848,3,186, - 93,0,848,849,5,155,0,0,849,850,5,146,0,0,850,51,1,0,0,0,851,852, - 5,4,0,0,852,853,5,188,0,0,853,854,3,186,93,0,854,856,5,58,0,0,855, - 857,3,170,85,0,856,855,1,0,0,0,856,857,1,0,0,0,857,866,1,0,0,0,858, - 859,5,145,0,0,859,861,3,304,152,0,860,862,5,22,0,0,861,860,1,0,0, - 0,861,862,1,0,0,0,862,867,1,0,0,0,863,864,5,154,0,0,864,865,5,145, - 0,0,865,867,3,238,119,0,866,858,1,0,0,0,866,863,1,0,0,0,867,53,1, - 0,0,0,868,869,5,4,0,0,869,870,5,212,0,0,870,872,3,188,94,0,871,873, - 3,202,101,0,872,871,1,0,0,0,872,873,1,0,0,0,873,874,1,0,0,0,874, - 875,5,9,0,0,875,876,3,204,102,0,876,55,1,0,0,0,877,878,5,4,0,0,878, - 879,5,212,0,0,879,880,3,188,94,0,880,881,5,156,0,0,881,882,5,193, - 0,0,882,883,3,188,94,0,883,57,1,0,0,0,884,885,5,4,0,0,885,886,5, - 212,0,0,886,887,3,188,94,0,887,888,5,176,0,0,888,889,5,142,0,0,889, - 890,7,1,0,0,890,891,3,354,177,0,891,59,1,0,0,0,892,893,5,4,0,0,893, - 894,5,188,0,0,894,895,3,186,93,0,895,896,5,156,0,0,896,897,5,193, - 0,0,897,898,3,186,93,0,898,61,1,0,0,0,899,900,5,4,0,0,900,901,5, - 212,0,0,901,902,3,188,94,0,902,903,7,2,0,0,903,904,5,25,0,0,904, - 905,3,248,124,0,905,63,1,0,0,0,906,908,5,196,0,0,907,909,5,188,0, - 0,908,907,1,0,0,0,908,909,1,0,0,0,909,911,1,0,0,0,910,912,3,170, - 85,0,911,910,1,0,0,0,911,912,1,0,0,0,912,913,1,0,0,0,913,914,3,186, - 93,0,914,65,1,0,0,0,915,917,5,56,0,0,916,918,5,46,0,0,917,916,1, - 0,0,0,917,918,1,0,0,0,918,920,1,0,0,0,919,921,7,3,0,0,920,919,1, - 0,0,0,920,921,1,0,0,0,921,922,1,0,0,0,922,923,3,354,177,0,923,67, - 1,0,0,0,924,927,3,70,35,0,925,927,3,72,36,0,926,924,1,0,0,0,926, - 925,1,0,0,0,927,69,1,0,0,0,928,929,5,36,0,0,929,930,5,182,0,0,930, - 932,3,186,93,0,931,933,3,292,146,0,932,931,1,0,0,0,932,933,1,0,0, - 0,933,946,1,0,0,0,934,935,5,190,0,0,935,936,5,185,0,0,936,937,5, - 265,0,0,937,938,3,360,180,0,938,944,5,266,0,0,939,940,5,157,0,0, - 940,941,5,265,0,0,941,942,3,360,180,0,942,943,5,266,0,0,943,945, - 1,0,0,0,944,939,1,0,0,0,944,945,1,0,0,0,945,947,1,0,0,0,946,934, - 1,0,0,0,946,947,1,0,0,0,947,71,1,0,0,0,948,949,5,36,0,0,949,950, - 5,96,0,0,950,951,5,182,0,0,951,957,3,186,93,0,952,953,5,145,0,0, - 953,954,5,265,0,0,954,955,3,304,152,0,955,956,5,266,0,0,956,958, - 1,0,0,0,957,952,1,0,0,0,957,958,1,0,0,0,958,73,1,0,0,0,959,966,3, - 86,43,0,960,966,3,84,42,0,961,966,3,82,41,0,962,966,3,78,39,0,963, - 966,3,80,40,0,964,966,3,76,38,0,965,959,1,0,0,0,965,960,1,0,0,0, - 965,961,1,0,0,0,965,962,1,0,0,0,965,963,1,0,0,0,965,964,1,0,0,0, - 966,75,1,0,0,0,967,968,5,58,0,0,968,970,7,0,0,0,969,971,3,170,85, - 0,970,969,1,0,0,0,970,971,1,0,0,0,971,972,1,0,0,0,972,974,3,184, - 92,0,973,975,7,4,0,0,974,973,1,0,0,0,974,975,1,0,0,0,975,77,1,0, - 0,0,976,977,5,58,0,0,977,979,5,212,0,0,978,980,3,170,85,0,979,978, - 1,0,0,0,979,980,1,0,0,0,980,981,1,0,0,0,981,982,3,188,94,0,982,79, - 1,0,0,0,983,984,5,58,0,0,984,986,5,188,0,0,985,987,3,170,85,0,986, - 985,1,0,0,0,986,987,1,0,0,0,987,988,1,0,0,0,988,990,3,186,93,0,989, - 991,5,22,0,0,990,989,1,0,0,0,990,991,1,0,0,0,991,81,1,0,0,0,992, - 994,5,58,0,0,993,995,5,96,0,0,994,993,1,0,0,0,994,995,1,0,0,0,995, - 996,1,0,0,0,996,997,5,182,0,0,997,1000,3,186,93,0,998,999,5,145, - 0,0,999,1001,3,304,152,0,1000,998,1,0,0,0,1000,1001,1,0,0,0,1001, - 83,1,0,0,0,1002,1004,5,58,0,0,1003,1005,5,12,0,0,1004,1003,1,0,0, - 0,1004,1005,1,0,0,0,1005,1006,1,0,0,0,1006,1008,5,84,0,0,1007,1009, - 3,170,85,0,1008,1007,1,0,0,0,1008,1009,1,0,0,0,1009,1010,1,0,0,0, - 1010,1023,3,190,95,0,1011,1020,5,265,0,0,1012,1017,3,328,164,0,1013, - 1014,5,263,0,0,1014,1016,3,328,164,0,1015,1013,1,0,0,0,1016,1019, - 1,0,0,0,1017,1015,1,0,0,0,1017,1018,1,0,0,0,1018,1021,1,0,0,0,1019, - 1017,1,0,0,0,1020,1012,1,0,0,0,1020,1021,1,0,0,0,1021,1022,1,0,0, - 0,1022,1024,5,266,0,0,1023,1011,1,0,0,0,1023,1024,1,0,0,0,1024,85, - 1,0,0,0,1025,1026,5,58,0,0,1026,1027,5,166,0,0,1027,1028,3,358,179, - 0,1028,87,1,0,0,0,1029,1032,3,90,45,0,1030,1032,3,92,46,0,1031,1029, - 1,0,0,0,1031,1030,1,0,0,0,1032,89,1,0,0,0,1033,1034,5,86,0,0,1034, - 1035,5,166,0,0,1035,1036,3,358,179,0,1036,1037,5,193,0,0,1037,1038, - 5,87,0,0,1038,1039,3,358,179,0,1039,91,1,0,0,0,1040,1041,5,86,0, - 0,1041,1042,3,350,175,0,1042,1043,5,136,0,0,1043,1045,3,352,176, - 0,1044,1046,3,354,177,0,1045,1044,1,0,0,0,1045,1046,1,0,0,0,1046, - 1047,1,0,0,0,1047,1048,5,193,0,0,1048,1049,3,356,178,0,1049,93,1, - 0,0,0,1050,1053,3,96,48,0,1051,1053,3,98,49,0,1052,1050,1,0,0,0, - 1052,1051,1,0,0,0,1053,95,1,0,0,0,1054,1055,5,161,0,0,1055,1056, - 5,166,0,0,1056,1057,3,358,179,0,1057,1058,5,82,0,0,1058,1059,5,87, - 0,0,1059,1060,3,358,179,0,1060,97,1,0,0,0,1061,1065,5,161,0,0,1062, - 1063,5,86,0,0,1063,1064,5,137,0,0,1064,1066,5,78,0,0,1065,1062,1, - 0,0,0,1065,1066,1,0,0,0,1066,1067,1,0,0,0,1067,1068,3,350,175,0, - 1068,1069,5,136,0,0,1069,1071,3,352,176,0,1070,1072,3,354,177,0, - 1071,1070,1,0,0,0,1071,1072,1,0,0,0,1072,1073,1,0,0,0,1073,1079, - 5,82,0,0,1074,1080,3,356,178,0,1075,1077,5,166,0,0,1076,1075,1,0, - 0,0,1076,1077,1,0,0,0,1077,1078,1,0,0,0,1078,1080,3,358,179,0,1079, - 1074,1,0,0,0,1079,1076,1,0,0,0,1080,99,1,0,0,0,1081,1083,3,206,103, - 0,1082,1081,1,0,0,0,1082,1083,1,0,0,0,1083,1084,1,0,0,0,1084,1085, - 5,99,0,0,1085,1087,7,5,0,0,1086,1088,5,188,0,0,1087,1086,1,0,0,0, - 1087,1088,1,0,0,0,1088,1089,1,0,0,0,1089,1091,3,186,93,0,1090,1092, - 3,292,146,0,1091,1090,1,0,0,0,1091,1092,1,0,0,0,1092,1105,1,0,0, - 0,1093,1094,5,145,0,0,1094,1095,5,265,0,0,1095,1100,3,304,152,0, - 1096,1097,5,263,0,0,1097,1099,3,304,152,0,1098,1096,1,0,0,0,1099, - 1102,1,0,0,0,1100,1098,1,0,0,0,1100,1101,1,0,0,0,1101,1103,1,0,0, - 0,1102,1100,1,0,0,0,1103,1104,5,266,0,0,1104,1106,1,0,0,0,1105,1093, - 1,0,0,0,1105,1106,1,0,0,0,1106,1107,1,0,0,0,1107,1108,3,204,102, - 0,1108,101,1,0,0,0,1109,1112,3,104,52,0,1110,1112,3,106,53,0,1111, - 1109,1,0,0,0,1111,1110,1,0,0,0,1112,103,1,0,0,0,1113,1115,5,50,0, - 0,1114,1116,5,82,0,0,1115,1114,1,0,0,0,1115,1116,1,0,0,0,1116,1117, - 1,0,0,0,1117,1120,3,186,93,0,1118,1119,5,215,0,0,1119,1121,3,306, - 153,0,1120,1118,1,0,0,0,1120,1121,1,0,0,0,1121,105,1,0,0,0,1122, - 1123,5,50,0,0,1123,1128,3,186,93,0,1124,1126,5,9,0,0,1125,1124,1, - 0,0,0,1125,1126,1,0,0,0,1126,1127,1,0,0,0,1127,1129,3,358,179,0, - 1128,1125,1,0,0,0,1128,1129,1,0,0,0,1129,1130,1,0,0,0,1130,1139, - 5,82,0,0,1131,1136,3,280,140,0,1132,1133,5,263,0,0,1133,1135,3,280, - 140,0,1134,1132,1,0,0,0,1135,1138,1,0,0,0,1136,1134,1,0,0,0,1136, - 1137,1,0,0,0,1137,1140,1,0,0,0,1138,1136,1,0,0,0,1139,1131,1,0,0, - 0,1139,1140,1,0,0,0,1140,1143,1,0,0,0,1141,1142,5,215,0,0,1142,1144, - 3,306,153,0,1143,1141,1,0,0,0,1143,1144,1,0,0,0,1144,107,1,0,0,0, - 1145,1146,5,54,0,0,1146,1147,3,186,93,0,1147,1148,5,176,0,0,1148, - 1158,3,198,99,0,1149,1150,5,82,0,0,1150,1155,3,280,140,0,1151,1152, - 5,263,0,0,1152,1154,3,280,140,0,1153,1151,1,0,0,0,1154,1157,1,0, - 0,0,1155,1153,1,0,0,0,1155,1156,1,0,0,0,1156,1159,1,0,0,0,1157,1155, - 1,0,0,0,1158,1149,1,0,0,0,1158,1159,1,0,0,0,1159,1162,1,0,0,0,1160, - 1161,5,215,0,0,1161,1163,3,306,153,0,1162,1160,1,0,0,0,1162,1163, - 1,0,0,0,1163,109,1,0,0,0,1164,1165,5,207,0,0,1165,1167,5,103,0,0, - 1166,1168,5,188,0,0,1167,1166,1,0,0,0,1167,1168,1,0,0,0,1168,1169, - 1,0,0,0,1169,1171,3,186,93,0,1170,1172,3,292,146,0,1171,1170,1,0, - 0,0,1171,1172,1,0,0,0,1172,1173,1,0,0,0,1173,1174,3,204,102,0,1174, - 111,1,0,0,0,1175,1188,3,132,66,0,1176,1188,3,134,67,0,1177,1188, - 3,136,68,0,1178,1188,3,130,65,0,1179,1188,3,128,64,0,1180,1188,3, - 126,63,0,1181,1188,3,124,62,0,1182,1188,3,122,61,0,1183,1188,3,120, - 60,0,1184,1188,3,118,59,0,1185,1188,3,116,58,0,1186,1188,3,114,57, - 0,1187,1175,1,0,0,0,1187,1176,1,0,0,0,1187,1177,1,0,0,0,1187,1178, - 1,0,0,0,1187,1179,1,0,0,0,1187,1180,1,0,0,0,1187,1181,1,0,0,0,1187, - 1182,1,0,0,0,1187,1183,1,0,0,0,1187,1184,1,0,0,0,1187,1185,1,0,0, - 0,1187,1186,1,0,0,0,1188,113,1,0,0,0,1189,1190,5,179,0,0,1190,1202, - 7,6,0,0,1191,1193,5,115,0,0,1192,1191,1,0,0,0,1192,1193,1,0,0,0, - 1193,1194,1,0,0,0,1194,1199,3,314,157,0,1195,1196,5,271,0,0,1196, - 1198,3,314,157,0,1197,1195,1,0,0,0,1198,1201,1,0,0,0,1199,1197,1, - 0,0,0,1199,1200,1,0,0,0,1200,1203,1,0,0,0,1201,1199,1,0,0,0,1202, - 1192,1,0,0,0,1202,1203,1,0,0,0,1203,115,1,0,0,0,1204,1205,5,179, - 0,0,1205,1208,5,189,0,0,1206,1207,5,94,0,0,1207,1209,3,186,93,0, - 1208,1206,1,0,0,0,1208,1209,1,0,0,0,1209,1221,1,0,0,0,1210,1212, - 5,115,0,0,1211,1210,1,0,0,0,1211,1212,1,0,0,0,1212,1213,1,0,0,0, - 1213,1218,3,314,157,0,1214,1215,5,271,0,0,1215,1217,3,314,157,0, - 1216,1214,1,0,0,0,1217,1220,1,0,0,0,1218,1216,1,0,0,0,1218,1219, - 1,0,0,0,1219,1222,1,0,0,0,1220,1218,1,0,0,0,1221,1211,1,0,0,0,1221, - 1222,1,0,0,0,1222,117,1,0,0,0,1223,1225,5,179,0,0,1224,1226,7,7, - 0,0,1225,1224,1,0,0,0,1225,1226,1,0,0,0,1226,1227,1,0,0,0,1227,1230, - 5,85,0,0,1228,1229,5,94,0,0,1229,1231,3,184,92,0,1230,1228,1,0,0, - 0,1230,1231,1,0,0,0,1231,1243,1,0,0,0,1232,1234,5,115,0,0,1233,1232, - 1,0,0,0,1233,1234,1,0,0,0,1234,1235,1,0,0,0,1235,1240,3,314,157, - 0,1236,1237,5,271,0,0,1237,1239,3,314,157,0,1238,1236,1,0,0,0,1239, - 1242,1,0,0,0,1240,1238,1,0,0,0,1240,1241,1,0,0,0,1241,1244,1,0,0, - 0,1242,1240,1,0,0,0,1243,1233,1,0,0,0,1243,1244,1,0,0,0,1244,119, - 1,0,0,0,1245,1246,5,179,0,0,1246,1247,5,37,0,0,1247,1248,5,188,0, - 0,1248,1249,3,186,93,0,1249,121,1,0,0,0,1250,1251,5,179,0,0,1251, - 1252,5,37,0,0,1252,1253,5,212,0,0,1253,1254,3,188,94,0,1254,123, - 1,0,0,0,1255,1256,5,179,0,0,1256,1257,5,188,0,0,1257,1258,5,182, - 0,0,1258,1259,3,186,93,0,1259,125,1,0,0,0,1260,1261,5,179,0,0,1261, - 1262,5,32,0,0,1262,1263,5,182,0,0,1263,1264,3,186,93,0,1264,127, - 1,0,0,0,1265,1267,5,179,0,0,1266,1268,5,154,0,0,1267,1266,1,0,0, - 0,1267,1268,1,0,0,0,1268,1269,1,0,0,0,1269,1270,5,146,0,0,1270,1271, - 3,186,93,0,1271,129,1,0,0,0,1272,1273,5,179,0,0,1273,1274,5,73,0, - 0,1274,1275,5,94,0,0,1275,1285,3,186,93,0,1276,1277,5,145,0,0,1277, - 1278,5,265,0,0,1278,1281,3,304,152,0,1279,1280,5,263,0,0,1280,1282, - 3,304,152,0,1281,1279,1,0,0,0,1281,1282,1,0,0,0,1282,1283,1,0,0, - 0,1283,1284,5,266,0,0,1284,1286,1,0,0,0,1285,1276,1,0,0,0,1285,1286, - 1,0,0,0,1286,131,1,0,0,0,1287,1289,5,179,0,0,1288,1290,5,39,0,0, - 1289,1288,1,0,0,0,1289,1290,1,0,0,0,1290,1291,1,0,0,0,1291,1292, - 5,167,0,0,1292,133,1,0,0,0,1293,1294,5,179,0,0,1294,1295,5,166,0, - 0,1295,1296,5,86,0,0,1296,1297,5,87,0,0,1297,1298,3,358,179,0,1298, - 135,1,0,0,0,1299,1314,3,138,69,0,1300,1314,3,140,70,0,1301,1314, - 3,142,71,0,1302,1303,5,179,0,0,1303,1304,5,86,0,0,1304,1305,7,8, - 0,0,1305,1311,3,358,179,0,1306,1307,5,136,0,0,1307,1309,7,9,0,0, - 1308,1310,3,354,177,0,1309,1308,1,0,0,0,1309,1310,1,0,0,0,1310,1312, - 1,0,0,0,1311,1306,1,0,0,0,1311,1312,1,0,0,0,1312,1314,1,0,0,0,1313, - 1299,1,0,0,0,1313,1300,1,0,0,0,1313,1301,1,0,0,0,1313,1302,1,0,0, - 0,1314,137,1,0,0,0,1315,1316,5,179,0,0,1316,1317,5,86,0,0,1317,1318, - 7,8,0,0,1318,1324,3,358,179,0,1319,1320,5,136,0,0,1320,1322,5,46, - 0,0,1321,1323,3,184,92,0,1322,1321,1,0,0,0,1322,1323,1,0,0,0,1323, - 1325,1,0,0,0,1324,1319,1,0,0,0,1324,1325,1,0,0,0,1325,139,1,0,0, - 0,1326,1327,5,179,0,0,1327,1328,5,86,0,0,1328,1329,7,8,0,0,1329, - 1335,3,358,179,0,1330,1331,5,136,0,0,1331,1333,5,188,0,0,1332,1334, - 3,186,93,0,1333,1332,1,0,0,0,1333,1334,1,0,0,0,1334,1336,1,0,0,0, - 1335,1330,1,0,0,0,1335,1336,1,0,0,0,1336,141,1,0,0,0,1337,1338,5, - 179,0,0,1338,1339,5,86,0,0,1339,1340,7,8,0,0,1340,1346,3,358,179, - 0,1341,1342,5,136,0,0,1342,1344,5,32,0,0,1343,1345,3,192,96,0,1344, - 1343,1,0,0,0,1344,1345,1,0,0,0,1345,1347,1,0,0,0,1346,1341,1,0,0, - 0,1346,1347,1,0,0,0,1347,143,1,0,0,0,1348,1352,3,146,73,0,1349,1352, - 3,148,74,0,1350,1352,3,150,75,0,1351,1348,1,0,0,0,1351,1349,1,0, - 0,0,1351,1350,1,0,0,0,1352,145,1,0,0,0,1353,1354,5,34,0,0,1354,1355, - 5,136,0,0,1355,1356,5,46,0,0,1356,1357,3,184,92,0,1357,1360,5,108, - 0,0,1358,1361,3,314,157,0,1359,1361,5,133,0,0,1360,1358,1,0,0,0, - 1360,1359,1,0,0,0,1361,147,1,0,0,0,1362,1363,5,34,0,0,1363,1364, - 5,136,0,0,1364,1365,5,188,0,0,1365,1366,3,186,93,0,1366,1369,5,108, - 0,0,1367,1370,3,314,157,0,1368,1370,5,133,0,0,1369,1367,1,0,0,0, - 1369,1368,1,0,0,0,1370,149,1,0,0,0,1371,1372,5,34,0,0,1372,1373, - 5,136,0,0,1373,1374,5,32,0,0,1374,1375,3,192,96,0,1375,1378,5,108, - 0,0,1376,1379,3,314,157,0,1377,1379,5,133,0,0,1378,1376,1,0,0,0, - 1378,1377,1,0,0,0,1379,151,1,0,0,0,1380,1381,5,67,0,0,1381,1382, - 3,4,2,0,1382,153,1,0,0,0,1383,1389,5,176,0,0,1384,1390,5,2,0,0,1385, - 1386,3,358,179,0,1386,1387,5,249,0,0,1387,1388,3,304,152,0,1388, - 1390,1,0,0,0,1389,1384,1,0,0,0,1389,1385,1,0,0,0,1389,1390,1,0,0, - 0,1390,155,1,0,0,0,1391,1392,5,264,0,0,1392,1393,5,180,0,0,1393, - 1403,5,265,0,0,1394,1396,3,314,157,0,1395,1394,1,0,0,0,1395,1396, - 1,0,0,0,1396,1404,1,0,0,0,1397,1400,3,314,157,0,1398,1399,5,263, - 0,0,1399,1401,3,304,152,0,1400,1398,1,0,0,0,1400,1401,1,0,0,0,1401, - 1404,1,0,0,0,1402,1404,3,304,152,0,1403,1395,1,0,0,0,1403,1397,1, - 0,0,0,1403,1402,1,0,0,0,1404,1405,1,0,0,0,1405,1406,5,266,0,0,1406, - 157,1,0,0,0,1407,1408,5,107,0,0,1408,1409,5,121,0,0,1409,1410,3, - 186,93,0,1410,159,1,0,0,0,1411,1412,5,118,0,0,1412,1413,5,45,0,0, - 1413,1414,5,98,0,0,1414,1416,5,274,0,0,1415,1417,5,144,0,0,1416, - 1415,1,0,0,0,1416,1417,1,0,0,0,1417,1418,1,0,0,0,1418,1419,5,103, - 0,0,1419,1420,5,188,0,0,1420,1430,3,186,93,0,1421,1422,5,145,0,0, - 1422,1423,5,265,0,0,1423,1426,3,304,152,0,1424,1425,5,263,0,0,1425, - 1427,3,304,152,0,1426,1424,1,0,0,0,1426,1427,1,0,0,0,1427,1428,1, - 0,0,0,1428,1429,5,266,0,0,1429,1431,1,0,0,0,1430,1421,1,0,0,0,1430, - 1431,1,0,0,0,1431,161,1,0,0,0,1432,1436,3,164,82,0,1433,1436,3,166, - 83,0,1434,1436,3,168,84,0,1435,1432,1,0,0,0,1435,1433,1,0,0,0,1435, - 1434,1,0,0,0,1436,163,1,0,0,0,1437,1438,5,162,0,0,1438,1451,3,186, - 93,0,1439,1440,5,145,0,0,1440,1441,5,265,0,0,1441,1446,3,304,152, - 0,1442,1443,5,263,0,0,1443,1445,3,304,152,0,1444,1442,1,0,0,0,1445, - 1448,1,0,0,0,1446,1447,1,0,0,0,1446,1444,1,0,0,0,1447,1449,1,0,0, - 0,1448,1446,1,0,0,0,1449,1450,5,266,0,0,1450,1452,1,0,0,0,1451,1439, - 1,0,0,0,1451,1452,1,0,0,0,1452,165,1,0,0,0,1453,1454,5,162,0,0,1454, - 1455,5,13,0,0,1455,167,1,0,0,0,1456,1457,5,162,0,0,1457,1458,5,85, - 0,0,1458,1459,3,190,95,0,1459,169,1,0,0,0,1460,1461,5,93,0,0,1461, - 1462,5,66,0,0,1462,171,1,0,0,0,1463,1464,5,93,0,0,1464,1465,5,132, - 0,0,1465,1466,5,66,0,0,1466,173,1,0,0,0,1467,1468,3,354,177,0,1468, - 175,1,0,0,0,1469,1470,3,354,177,0,1470,177,1,0,0,0,1471,1472,3,354, - 177,0,1472,179,1,0,0,0,1473,1474,3,354,177,0,1474,181,1,0,0,0,1475, - 1476,3,354,177,0,1476,183,1,0,0,0,1477,1478,3,354,177,0,1478,185, - 1,0,0,0,1479,1484,3,358,179,0,1480,1481,5,261,0,0,1481,1483,3,358, - 179,0,1482,1480,1,0,0,0,1483,1486,1,0,0,0,1484,1482,1,0,0,0,1484, - 1485,1,0,0,0,1485,187,1,0,0,0,1486,1484,1,0,0,0,1487,1492,3,358, - 179,0,1488,1489,5,261,0,0,1489,1491,3,358,179,0,1490,1488,1,0,0, - 0,1491,1494,1,0,0,0,1492,1490,1,0,0,0,1492,1493,1,0,0,0,1493,189, - 1,0,0,0,1494,1492,1,0,0,0,1495,1498,3,362,181,0,1496,1498,3,354, - 177,0,1497,1495,1,0,0,0,1497,1496,1,0,0,0,1498,191,1,0,0,0,1499, - 1502,3,354,177,0,1500,1502,4,96,0,0,1501,1499,1,0,0,0,1501,1500, - 1,0,0,0,1502,193,1,0,0,0,1503,1506,3,186,93,0,1504,1506,3,188,94, - 0,1505,1503,1,0,0,0,1505,1504,1,0,0,0,1506,195,1,0,0,0,1507,1508, - 5,21,0,0,1508,1509,5,26,0,0,1509,1511,3,292,146,0,1510,1507,1,0, - 0,0,1510,1511,1,0,0,0,1511,1514,1,0,0,0,1512,1513,5,34,0,0,1513, - 1515,3,314,157,0,1514,1512,1,0,0,0,1514,1515,1,0,0,0,1515,1519,1, - 0,0,0,1516,1517,5,168,0,0,1517,1518,5,79,0,0,1518,1520,3,254,127, - 0,1519,1516,1,0,0,0,1519,1520,1,0,0,0,1520,1524,1,0,0,0,1521,1522, - 5,216,0,0,1522,1523,5,175,0,0,1523,1525,3,248,124,0,1524,1521,1, - 0,0,0,1524,1525,1,0,0,0,1525,1529,1,0,0,0,1526,1527,5,23,0,0,1527, - 1528,5,9,0,0,1528,1530,3,230,115,0,1529,1526,1,0,0,0,1529,1530,1, - 0,0,0,1530,1533,1,0,0,0,1531,1532,5,24,0,0,1532,1534,3,314,157,0, - 1533,1531,1,0,0,0,1533,1534,1,0,0,0,1534,1545,1,0,0,0,1535,1536, - 5,30,0,0,1536,1537,5,94,0,0,1537,1542,3,354,177,0,1538,1539,5,216, - 0,0,1539,1540,5,151,0,0,1540,1541,5,249,0,0,1541,1543,5,277,0,0, - 1542,1538,1,0,0,0,1542,1543,1,0,0,0,1543,1546,1,0,0,0,1544,1546, - 5,197,0,0,1545,1535,1,0,0,0,1545,1544,1,0,0,0,1545,1546,1,0,0,0, - 1546,1549,1,0,0,0,1547,1548,5,25,0,0,1548,1550,3,248,124,0,1549, - 1547,1,0,0,0,1549,1550,1,0,0,0,1550,197,1,0,0,0,1551,1556,3,200, - 100,0,1552,1553,5,263,0,0,1553,1555,3,200,100,0,1554,1552,1,0,0, - 0,1555,1558,1,0,0,0,1556,1554,1,0,0,0,1556,1557,1,0,0,0,1557,199, - 1,0,0,0,1558,1556,1,0,0,0,1559,1560,3,354,177,0,1560,1561,5,249, - 0,0,1561,1562,3,304,152,0,1562,201,1,0,0,0,1563,1564,5,265,0,0,1564, - 1567,3,182,91,0,1565,1566,5,34,0,0,1566,1568,3,314,157,0,1567,1565, - 1,0,0,0,1567,1568,1,0,0,0,1568,1577,1,0,0,0,1569,1570,5,263,0,0, - 1570,1573,3,182,91,0,1571,1572,5,34,0,0,1572,1574,3,314,157,0,1573, - 1571,1,0,0,0,1573,1574,1,0,0,0,1574,1576,1,0,0,0,1575,1569,1,0,0, - 0,1576,1579,1,0,0,0,1577,1575,1,0,0,0,1577,1578,1,0,0,0,1578,1580, - 1,0,0,0,1579,1577,1,0,0,0,1580,1581,5,266,0,0,1581,203,1,0,0,0,1582, - 1584,3,206,103,0,1583,1582,1,0,0,0,1583,1584,1,0,0,0,1584,1585,1, - 0,0,0,1585,1586,3,258,129,0,1586,205,1,0,0,0,1587,1588,5,216,0,0, - 1588,1593,3,274,137,0,1589,1590,5,263,0,0,1590,1592,3,274,137,0, - 1591,1589,1,0,0,0,1592,1595,1,0,0,0,1593,1591,1,0,0,0,1593,1594, - 1,0,0,0,1594,207,1,0,0,0,1595,1593,1,0,0,0,1596,1597,5,150,0,0,1597, - 1598,5,110,0,0,1598,1600,3,292,146,0,1599,1601,5,53,0,0,1600,1599, - 1,0,0,0,1600,1601,1,0,0,0,1601,1605,1,0,0,0,1602,1606,5,225,0,0, - 1603,1604,5,263,0,0,1604,1606,5,225,0,0,1605,1602,1,0,0,0,1605,1603, - 1,0,0,0,1605,1606,1,0,0,0,1606,1610,1,0,0,0,1607,1611,5,226,0,0, - 1608,1609,5,263,0,0,1609,1611,5,226,0,0,1610,1607,1,0,0,0,1610,1608, - 1,0,0,0,1610,1611,1,0,0,0,1611,1624,1,0,0,0,1612,1613,5,263,0,0, - 1613,1616,3,210,105,0,1614,1616,3,210,105,0,1615,1612,1,0,0,0,1615, - 1614,1,0,0,0,1616,1621,1,0,0,0,1617,1618,5,263,0,0,1618,1620,3,210, - 105,0,1619,1617,1,0,0,0,1620,1623,1,0,0,0,1621,1622,1,0,0,0,1621, - 1619,1,0,0,0,1622,1625,1,0,0,0,1623,1621,1,0,0,0,1624,1615,1,0,0, - 0,1624,1625,1,0,0,0,1625,209,1,0,0,0,1626,1627,5,81,0,0,1627,1628, - 5,110,0,0,1628,1629,3,292,146,0,1629,1630,5,224,0,0,1630,1631,3, - 186,93,0,1631,1633,3,292,146,0,1632,1634,5,53,0,0,1633,1632,1,0, - 0,0,1633,1634,1,0,0,0,1634,1636,1,0,0,0,1635,1637,5,225,0,0,1636, - 1635,1,0,0,0,1636,1637,1,0,0,0,1637,1639,1,0,0,0,1638,1640,5,226, - 0,0,1639,1638,1,0,0,0,1639,1640,1,0,0,0,1640,211,1,0,0,0,1641,1642, - 3,192,96,0,1642,1645,3,328,164,0,1643,1644,5,34,0,0,1644,1646,3, - 314,157,0,1645,1643,1,0,0,0,1645,1646,1,0,0,0,1646,213,1,0,0,0,1647, - 1648,3,182,91,0,1648,1651,3,328,164,0,1649,1650,5,34,0,0,1650,1652, - 3,314,157,0,1651,1649,1,0,0,0,1651,1652,1,0,0,0,1652,215,1,0,0,0, - 1653,1654,3,218,109,0,1654,217,1,0,0,0,1655,1656,3,182,91,0,1656, - 1664,3,328,164,0,1657,1661,3,224,112,0,1658,1660,3,224,112,0,1659, - 1658,1,0,0,0,1660,1663,1,0,0,0,1661,1662,1,0,0,0,1661,1659,1,0,0, - 0,1662,1665,1,0,0,0,1663,1661,1,0,0,0,1664,1657,1,0,0,0,1664,1665, - 1,0,0,0,1665,1668,1,0,0,0,1666,1667,5,34,0,0,1667,1669,3,314,157, - 0,1668,1666,1,0,0,0,1668,1669,1,0,0,0,1669,1672,1,0,0,0,1670,1671, - 5,150,0,0,1671,1673,5,110,0,0,1672,1670,1,0,0,0,1672,1673,1,0,0, - 0,1673,219,1,0,0,0,1674,1676,3,212,106,0,1675,1674,1,0,0,0,1675, - 1676,1,0,0,0,1676,1684,1,0,0,0,1677,1681,3,224,112,0,1678,1680,3, - 224,112,0,1679,1678,1,0,0,0,1680,1683,1,0,0,0,1681,1682,1,0,0,0, - 1681,1679,1,0,0,0,1682,1685,1,0,0,0,1683,1681,1,0,0,0,1684,1677, - 1,0,0,0,1684,1685,1,0,0,0,1685,221,1,0,0,0,1686,1687,3,182,91,0, - 1687,1690,3,328,164,0,1688,1689,5,34,0,0,1689,1691,3,314,157,0,1690, - 1688,1,0,0,0,1690,1691,1,0,0,0,1691,1699,1,0,0,0,1692,1696,3,224, - 112,0,1693,1695,3,224,112,0,1694,1693,1,0,0,0,1695,1698,1,0,0,0, - 1696,1697,1,0,0,0,1696,1694,1,0,0,0,1697,1700,1,0,0,0,1698,1696, - 1,0,0,0,1699,1692,1,0,0,0,1699,1700,1,0,0,0,1700,223,1,0,0,0,1701, - 1703,5,132,0,0,1702,1701,1,0,0,0,1702,1703,1,0,0,0,1703,1704,1,0, - 0,0,1704,1707,5,133,0,0,1705,1707,3,226,113,0,1706,1702,1,0,0,0, - 1706,1705,1,0,0,0,1707,225,1,0,0,0,1708,1709,5,60,0,0,1709,1717, - 3,304,152,0,1710,1711,5,35,0,0,1711,1717,3,304,152,0,1712,1713,5, - 51,0,0,1713,1717,3,304,152,0,1714,1715,5,16,0,0,1715,1717,3,360, - 180,0,1716,1708,1,0,0,0,1716,1710,1,0,0,0,1716,1712,1,0,0,0,1716, - 1714,1,0,0,0,1717,227,1,0,0,0,1718,1719,7,10,0,0,1719,229,1,0,0, - 0,1720,1721,7,11,0,0,1721,231,1,0,0,0,1722,1727,3,234,117,0,1723, - 1724,5,263,0,0,1724,1726,3,234,117,0,1725,1723,1,0,0,0,1726,1729, - 1,0,0,0,1727,1728,1,0,0,0,1727,1725,1,0,0,0,1728,1732,1,0,0,0,1729, - 1727,1,0,0,0,1730,1731,5,263,0,0,1731,1733,3,236,118,0,1732,1730, - 1,0,0,0,1732,1733,1,0,0,0,1733,1736,1,0,0,0,1734,1736,3,236,118, - 0,1735,1722,1,0,0,0,1735,1734,1,0,0,0,1736,233,1,0,0,0,1737,1739, - 5,89,0,0,1738,1740,3,292,146,0,1739,1738,1,0,0,0,1739,1740,1,0,0, - 0,1740,1741,1,0,0,0,1741,1742,5,146,0,0,1742,1743,3,360,180,0,1743, - 235,1,0,0,0,1744,1746,5,154,0,0,1745,1747,3,292,146,0,1746,1745, - 1,0,0,0,1746,1747,1,0,0,0,1747,1748,1,0,0,0,1748,1749,5,265,0,0, - 1749,1750,5,145,0,0,1750,1756,3,238,119,0,1751,1752,5,263,0,0,1752, - 1753,5,145,0,0,1753,1755,3,238,119,0,1754,1751,1,0,0,0,1755,1758, - 1,0,0,0,1756,1757,1,0,0,0,1756,1754,1,0,0,0,1757,1759,1,0,0,0,1758, - 1756,1,0,0,0,1759,1760,5,266,0,0,1760,237,1,0,0,0,1761,1762,5,210, - 0,0,1762,1763,3,244,122,0,1763,1764,3,304,152,0,1764,1777,1,0,0, - 0,1765,1766,3,304,152,0,1766,1767,3,242,121,0,1767,1769,1,0,0,0, - 1768,1765,1,0,0,0,1768,1769,1,0,0,0,1769,1770,1,0,0,0,1770,1774, - 5,211,0,0,1771,1772,3,242,121,0,1772,1773,3,304,152,0,1773,1775, - 1,0,0,0,1774,1771,1,0,0,0,1774,1775,1,0,0,0,1775,1777,1,0,0,0,1776, - 1761,1,0,0,0,1776,1768,1,0,0,0,1777,239,1,0,0,0,1778,1779,5,30,0, - 0,1779,1780,5,94,0,0,1780,1785,3,358,179,0,1781,1782,5,216,0,0,1782, - 1783,5,151,0,0,1783,1784,5,249,0,0,1784,1786,3,360,180,0,1785,1781, - 1,0,0,0,1785,1786,1,0,0,0,1786,1789,1,0,0,0,1787,1789,5,197,0,0, - 1788,1778,1,0,0,0,1788,1787,1,0,0,0,1789,241,1,0,0,0,1790,1796,1, - 0,0,0,1791,1796,5,251,0,0,1792,1796,5,252,0,0,1793,1796,5,253,0, - 0,1794,1796,5,254,0,0,1795,1790,1,0,0,0,1795,1791,1,0,0,0,1795,1792, - 1,0,0,0,1795,1793,1,0,0,0,1795,1794,1,0,0,0,1796,243,1,0,0,0,1797, - 1806,5,249,0,0,1798,1806,5,250,0,0,1799,1806,5,115,0,0,1800,1806, - 5,164,0,0,1801,1806,5,163,0,0,1802,1806,5,15,0,0,1803,1806,5,94, - 0,0,1804,1806,3,242,121,0,1805,1797,1,0,0,0,1805,1798,1,0,0,0,1805, - 1799,1,0,0,0,1805,1800,1,0,0,0,1805,1801,1,0,0,0,1805,1802,1,0,0, - 0,1805,1803,1,0,0,0,1805,1804,1,0,0,0,1806,245,1,0,0,0,1807,1808, - 5,115,0,0,1808,1811,3,354,177,0,1809,1810,7,12,0,0,1810,1812,5,153, - 0,0,1811,1809,1,0,0,0,1811,1812,1,0,0,0,1812,247,1,0,0,0,1813,1814, - 5,265,0,0,1814,1819,3,256,128,0,1815,1816,5,263,0,0,1816,1818,3, - 256,128,0,1817,1815,1,0,0,0,1818,1821,1,0,0,0,1819,1817,1,0,0,0, - 1819,1820,1,0,0,0,1820,1822,1,0,0,0,1821,1819,1,0,0,0,1822,1823, - 5,266,0,0,1823,249,1,0,0,0,1824,1825,5,265,0,0,1825,1830,3,212,106, - 0,1826,1827,5,263,0,0,1827,1829,3,212,106,0,1828,1826,1,0,0,0,1829, - 1832,1,0,0,0,1830,1831,1,0,0,0,1830,1828,1,0,0,0,1831,1833,1,0,0, - 0,1832,1830,1,0,0,0,1833,1834,5,266,0,0,1834,251,1,0,0,0,1835,1840, - 3,304,152,0,1836,1837,5,263,0,0,1837,1839,3,304,152,0,1838,1836, - 1,0,0,0,1839,1842,1,0,0,0,1840,1838,1,0,0,0,1840,1841,1,0,0,0,1841, - 253,1,0,0,0,1842,1840,1,0,0,0,1843,1853,5,52,0,0,1844,1845,5,71, - 0,0,1845,1846,5,191,0,0,1846,1847,5,26,0,0,1847,1851,3,314,157,0, - 1848,1849,5,63,0,0,1849,1850,5,26,0,0,1850,1852,3,314,157,0,1851, - 1848,1,0,0,0,1851,1852,1,0,0,0,1852,1854,1,0,0,0,1853,1844,1,0,0, - 0,1853,1854,1,0,0,0,1854,1859,1,0,0,0,1855,1856,5,117,0,0,1856,1857, - 5,191,0,0,1857,1858,5,26,0,0,1858,1860,3,314,157,0,1859,1855,1,0, - 0,0,1859,1860,1,0,0,0,1860,255,1,0,0,0,1861,1864,3,358,179,0,1862, - 1863,5,249,0,0,1863,1865,3,304,152,0,1864,1862,1,0,0,0,1864,1865, - 1,0,0,0,1865,257,1,0,0,0,1866,1877,3,260,130,0,1867,1868,5,139,0, - 0,1868,1869,5,26,0,0,1869,1874,3,264,132,0,1870,1871,5,263,0,0,1871, - 1873,3,264,132,0,1872,1870,1,0,0,0,1873,1876,1,0,0,0,1874,1872,1, - 0,0,0,1874,1875,1,0,0,0,1875,1878,1,0,0,0,1876,1874,1,0,0,0,1877, - 1867,1,0,0,0,1877,1878,1,0,0,0,1878,1885,1,0,0,0,1879,1880,5,116, - 0,0,1880,1883,3,304,152,0,1881,1882,5,135,0,0,1882,1884,5,277,0, - 0,1883,1881,1,0,0,0,1883,1884,1,0,0,0,1884,1886,1,0,0,0,1885,1879, - 1,0,0,0,1885,1886,1,0,0,0,1886,259,1,0,0,0,1887,1888,6,130,-1,0, - 1888,1889,3,262,131,0,1889,1904,1,0,0,0,1890,1891,10,2,0,0,1891, - 1893,5,100,0,0,1892,1894,3,276,138,0,1893,1892,1,0,0,0,1893,1894, - 1,0,0,0,1894,1895,1,0,0,0,1895,1903,3,260,130,3,1896,1897,10,1,0, - 0,1897,1899,7,13,0,0,1898,1900,3,276,138,0,1899,1898,1,0,0,0,1899, - 1900,1,0,0,0,1900,1901,1,0,0,0,1901,1903,3,260,130,2,1902,1890,1, - 0,0,0,1902,1896,1,0,0,0,1903,1906,1,0,0,0,1904,1902,1,0,0,0,1904, - 1905,1,0,0,0,1905,261,1,0,0,0,1906,1904,1,0,0,0,1907,1924,3,266, - 133,0,1908,1909,5,188,0,0,1909,1924,3,186,93,0,1910,1911,5,211,0, - 0,1911,1916,3,304,152,0,1912,1913,5,263,0,0,1913,1915,3,304,152, - 0,1914,1912,1,0,0,0,1915,1918,1,0,0,0,1916,1914,1,0,0,0,1916,1917, - 1,0,0,0,1917,1924,1,0,0,0,1918,1916,1,0,0,0,1919,1920,5,265,0,0, - 1920,1921,3,258,129,0,1921,1922,5,266,0,0,1922,1924,1,0,0,0,1923, - 1907,1,0,0,0,1923,1908,1,0,0,0,1923,1910,1,0,0,0,1923,1919,1,0,0, - 0,1924,263,1,0,0,0,1925,1927,3,302,151,0,1926,1928,7,14,0,0,1927, - 1926,1,0,0,0,1927,1928,1,0,0,0,1928,1931,1,0,0,0,1929,1930,5,134, - 0,0,1930,1932,7,15,0,0,1931,1929,1,0,0,0,1931,1932,1,0,0,0,1932, - 265,1,0,0,0,1933,1935,5,174,0,0,1934,1936,3,276,138,0,1935,1934, - 1,0,0,0,1935,1936,1,0,0,0,1936,1938,1,0,0,0,1937,1939,5,183,0,0, - 1938,1937,1,0,0,0,1938,1939,1,0,0,0,1939,1940,1,0,0,0,1940,1945, - 3,278,139,0,1941,1942,5,263,0,0,1942,1944,3,278,139,0,1943,1941, - 1,0,0,0,1944,1947,1,0,0,0,1945,1943,1,0,0,0,1945,1946,1,0,0,0,1946, - 1957,1,0,0,0,1947,1945,1,0,0,0,1948,1949,5,82,0,0,1949,1954,3,280, - 140,0,1950,1951,5,263,0,0,1951,1953,3,280,140,0,1952,1950,1,0,0, - 0,1953,1956,1,0,0,0,1954,1952,1,0,0,0,1954,1955,1,0,0,0,1955,1958, - 1,0,0,0,1956,1954,1,0,0,0,1957,1948,1,0,0,0,1957,1958,1,0,0,0,1958, - 1961,1,0,0,0,1959,1960,5,215,0,0,1960,1962,3,306,153,0,1961,1959, - 1,0,0,0,1961,1962,1,0,0,0,1962,1966,1,0,0,0,1963,1964,5,87,0,0,1964, - 1965,5,26,0,0,1965,1967,3,268,134,0,1966,1963,1,0,0,0,1966,1967, - 1,0,0,0,1967,1970,1,0,0,0,1968,1969,5,90,0,0,1969,1971,3,306,153, - 0,1970,1968,1,0,0,0,1970,1971,1,0,0,0,1971,267,1,0,0,0,1972,1974, - 3,276,138,0,1973,1972,1,0,0,0,1973,1974,1,0,0,0,1974,1975,1,0,0, - 0,1975,1980,3,270,135,0,1976,1977,5,263,0,0,1977,1979,3,270,135, - 0,1978,1976,1,0,0,0,1979,1982,1,0,0,0,1980,1978,1,0,0,0,1980,1981, - 1,0,0,0,1981,269,1,0,0,0,1982,1980,1,0,0,0,1983,1984,3,272,136,0, - 1984,271,1,0,0,0,1985,1994,5,265,0,0,1986,1991,3,302,151,0,1987, - 1988,5,263,0,0,1988,1990,3,302,151,0,1989,1987,1,0,0,0,1990,1993, - 1,0,0,0,1991,1989,1,0,0,0,1991,1992,1,0,0,0,1992,1995,1,0,0,0,1993, - 1991,1,0,0,0,1994,1986,1,0,0,0,1994,1995,1,0,0,0,1995,1996,1,0,0, - 0,1996,1999,5,266,0,0,1997,1999,3,302,151,0,1998,1985,1,0,0,0,1998, - 1997,1,0,0,0,1999,273,1,0,0,0,2000,2002,3,358,179,0,2001,2003,3, - 292,146,0,2002,2001,1,0,0,0,2002,2003,1,0,0,0,2003,2004,1,0,0,0, - 2004,2005,5,9,0,0,2005,2006,3,296,148,0,2006,275,1,0,0,0,2007,2008, - 7,16,0,0,2008,277,1,0,0,0,2009,2014,3,302,151,0,2010,2012,5,9,0, - 0,2011,2010,1,0,0,0,2011,2012,1,0,0,0,2012,2013,1,0,0,0,2013,2015, - 3,358,179,0,2014,2011,1,0,0,0,2014,2015,1,0,0,0,2015,2022,1,0,0, - 0,2016,2017,3,354,177,0,2017,2018,5,261,0,0,2018,2019,5,257,0,0, - 2019,2022,1,0,0,0,2020,2022,5,257,0,0,2021,2009,1,0,0,0,2021,2016, - 1,0,0,0,2021,2020,1,0,0,0,2022,279,1,0,0,0,2023,2024,6,140,-1,0, - 2024,2025,3,286,143,0,2025,2039,1,0,0,0,2026,2035,10,2,0,0,2027, - 2028,5,38,0,0,2028,2029,5,109,0,0,2029,2036,3,286,143,0,2030,2031, - 3,282,141,0,2031,2032,5,109,0,0,2032,2033,3,280,140,0,2033,2034, - 3,284,142,0,2034,2036,1,0,0,0,2035,2027,1,0,0,0,2035,2030,1,0,0, - 0,2036,2038,1,0,0,0,2037,2026,1,0,0,0,2038,2041,1,0,0,0,2039,2037, - 1,0,0,0,2039,2040,1,0,0,0,2040,281,1,0,0,0,2041,2039,1,0,0,0,2042, - 2044,5,97,0,0,2043,2042,1,0,0,0,2043,2044,1,0,0,0,2044,2074,1,0, - 0,0,2045,2047,5,114,0,0,2046,2048,5,97,0,0,2047,2046,1,0,0,0,2047, - 2048,1,0,0,0,2048,2074,1,0,0,0,2049,2051,5,165,0,0,2050,2052,5,97, - 0,0,2051,2050,1,0,0,0,2051,2052,1,0,0,0,2052,2074,1,0,0,0,2053,2055, - 5,114,0,0,2054,2056,5,141,0,0,2055,2054,1,0,0,0,2055,2056,1,0,0, - 0,2056,2074,1,0,0,0,2057,2059,5,165,0,0,2058,2060,5,141,0,0,2059, - 2058,1,0,0,0,2059,2060,1,0,0,0,2060,2074,1,0,0,0,2061,2063,5,83, - 0,0,2062,2064,5,141,0,0,2063,2062,1,0,0,0,2063,2064,1,0,0,0,2064, - 2074,1,0,0,0,2065,2066,5,114,0,0,2066,2074,5,177,0,0,2067,2068,5, - 165,0,0,2068,2074,5,177,0,0,2069,2070,5,114,0,0,2070,2074,5,7,0, - 0,2071,2072,5,165,0,0,2072,2074,5,7,0,0,2073,2043,1,0,0,0,2073,2045, - 1,0,0,0,2073,2049,1,0,0,0,2073,2053,1,0,0,0,2073,2057,1,0,0,0,2073, - 2061,1,0,0,0,2073,2065,1,0,0,0,2073,2067,1,0,0,0,2073,2069,1,0,0, - 0,2073,2071,1,0,0,0,2074,283,1,0,0,0,2075,2076,5,136,0,0,2076,2090, - 3,306,153,0,2077,2078,5,205,0,0,2078,2079,5,265,0,0,2079,2084,3, - 358,179,0,2080,2081,5,263,0,0,2081,2083,3,358,179,0,2082,2080,1, - 0,0,0,2083,2086,1,0,0,0,2084,2082,1,0,0,0,2084,2085,1,0,0,0,2085, - 2087,1,0,0,0,2086,2084,1,0,0,0,2087,2088,5,266,0,0,2088,2090,1,0, - 0,0,2089,2075,1,0,0,0,2089,2077,1,0,0,0,2090,285,1,0,0,0,2091,2104, - 3,290,145,0,2092,2093,5,190,0,0,2093,2094,3,288,144,0,2094,2095, - 5,265,0,0,2095,2096,3,304,152,0,2096,2102,5,266,0,0,2097,2098,5, - 157,0,0,2098,2099,5,265,0,0,2099,2100,3,304,152,0,2100,2101,5,266, - 0,0,2101,2103,1,0,0,0,2102,2097,1,0,0,0,2102,2103,1,0,0,0,2103,2105, - 1,0,0,0,2104,2092,1,0,0,0,2104,2105,1,0,0,0,2105,287,1,0,0,0,2106, - 2107,7,17,0,0,2107,289,1,0,0,0,2108,2116,3,294,147,0,2109,2111,5, - 9,0,0,2110,2109,1,0,0,0,2110,2111,1,0,0,0,2111,2112,1,0,0,0,2112, - 2114,3,358,179,0,2113,2115,3,292,146,0,2114,2113,1,0,0,0,2114,2115, - 1,0,0,0,2115,2117,1,0,0,0,2116,2110,1,0,0,0,2116,2117,1,0,0,0,2117, - 291,1,0,0,0,2118,2119,5,265,0,0,2119,2124,3,192,96,0,2120,2121,5, - 263,0,0,2121,2123,3,192,96,0,2122,2120,1,0,0,0,2123,2126,1,0,0,0, - 2124,2122,1,0,0,0,2124,2125,1,0,0,0,2125,2127,1,0,0,0,2126,2124, - 1,0,0,0,2127,2128,5,266,0,0,2128,293,1,0,0,0,2129,2137,3,194,97, - 0,2130,2132,5,113,0,0,2131,2130,1,0,0,0,2131,2132,1,0,0,0,2132,2133, - 1,0,0,0,2133,2137,3,296,148,0,2134,2137,3,298,149,0,2135,2137,3, - 300,150,0,2136,2129,1,0,0,0,2136,2131,1,0,0,0,2136,2134,1,0,0,0, - 2136,2135,1,0,0,0,2137,295,1,0,0,0,2138,2139,5,265,0,0,2139,2140, - 3,204,102,0,2140,2141,5,266,0,0,2141,297,1,0,0,0,2142,2143,5,201, - 0,0,2143,2144,5,265,0,0,2144,2149,3,304,152,0,2145,2146,5,263,0, - 0,2146,2148,3,304,152,0,2147,2145,1,0,0,0,2148,2151,1,0,0,0,2149, - 2147,1,0,0,0,2149,2150,1,0,0,0,2150,2152,1,0,0,0,2151,2149,1,0,0, - 0,2152,2155,5,266,0,0,2153,2154,5,216,0,0,2154,2156,5,140,0,0,2155, - 2153,1,0,0,0,2155,2156,1,0,0,0,2156,299,1,0,0,0,2157,2158,5,265, - 0,0,2158,2159,3,280,140,0,2159,2160,5,266,0,0,2160,301,1,0,0,0,2161, - 2164,3,192,96,0,2162,2164,3,304,152,0,2163,2161,1,0,0,0,2163,2162, - 1,0,0,0,2164,303,1,0,0,0,2165,2166,3,306,153,0,2166,305,1,0,0,0, - 2167,2168,6,153,-1,0,2168,2170,3,310,155,0,2169,2171,3,308,154,0, - 2170,2169,1,0,0,0,2170,2171,1,0,0,0,2171,2175,1,0,0,0,2172,2173, - 5,132,0,0,2173,2175,3,306,153,3,2174,2167,1,0,0,0,2174,2172,1,0, - 0,0,2175,2184,1,0,0,0,2176,2177,10,2,0,0,2177,2178,5,5,0,0,2178, - 2183,3,306,153,3,2179,2180,10,1,0,0,2180,2181,5,138,0,0,2181,2183, - 3,306,153,2,2182,2176,1,0,0,0,2182,2179,1,0,0,0,2183,2186,1,0,0, - 0,2184,2182,1,0,0,0,2184,2185,1,0,0,0,2185,307,1,0,0,0,2186,2184, - 1,0,0,0,2187,2188,3,316,158,0,2188,2189,3,310,155,0,2189,2246,1, - 0,0,0,2190,2191,3,316,158,0,2191,2192,3,318,159,0,2192,2193,3,296, - 148,0,2193,2246,1,0,0,0,2194,2196,5,132,0,0,2195,2194,1,0,0,0,2195, - 2196,1,0,0,0,2196,2197,1,0,0,0,2197,2198,5,15,0,0,2198,2199,3,310, - 155,0,2199,2200,5,5,0,0,2200,2201,3,310,155,0,2201,2246,1,0,0,0, - 2202,2204,5,132,0,0,2203,2202,1,0,0,0,2203,2204,1,0,0,0,2204,2205, - 1,0,0,0,2205,2206,5,94,0,0,2206,2207,5,265,0,0,2207,2212,3,304,152, - 0,2208,2209,5,263,0,0,2209,2211,3,304,152,0,2210,2208,1,0,0,0,2211, - 2214,1,0,0,0,2212,2210,1,0,0,0,2212,2213,1,0,0,0,2213,2215,1,0,0, - 0,2214,2212,1,0,0,0,2215,2216,5,266,0,0,2216,2246,1,0,0,0,2217,2219, - 5,132,0,0,2218,2217,1,0,0,0,2218,2219,1,0,0,0,2219,2220,1,0,0,0, - 2220,2221,5,94,0,0,2221,2246,3,296,148,0,2222,2224,5,132,0,0,2223, - 2222,1,0,0,0,2223,2224,1,0,0,0,2224,2225,1,0,0,0,2225,2226,7,18, - 0,0,2226,2229,3,310,155,0,2227,2228,5,62,0,0,2228,2230,3,310,155, - 0,2229,2227,1,0,0,0,2229,2230,1,0,0,0,2230,2246,1,0,0,0,2231,2232, - 7,19,0,0,2232,2246,3,310,155,0,2233,2235,5,108,0,0,2234,2236,5,132, - 0,0,2235,2234,1,0,0,0,2235,2236,1,0,0,0,2236,2237,1,0,0,0,2237,2246, - 7,20,0,0,2238,2240,5,108,0,0,2239,2241,5,132,0,0,2240,2239,1,0,0, - 0,2240,2241,1,0,0,0,2241,2242,1,0,0,0,2242,2243,5,57,0,0,2243,2244, - 5,82,0,0,2244,2246,3,310,155,0,2245,2187,1,0,0,0,2245,2190,1,0,0, - 0,2245,2195,1,0,0,0,2245,2203,1,0,0,0,2245,2218,1,0,0,0,2245,2223, - 1,0,0,0,2245,2231,1,0,0,0,2245,2233,1,0,0,0,2245,2238,1,0,0,0,2246, - 309,1,0,0,0,2247,2248,6,155,-1,0,2248,2252,3,312,156,0,2249,2250, - 7,21,0,0,2250,2252,3,310,155,4,2251,2247,1,0,0,0,2251,2249,1,0,0, - 0,2252,2264,1,0,0,0,2253,2254,10,3,0,0,2254,2255,7,22,0,0,2255,2263, - 3,310,155,4,2256,2257,10,2,0,0,2257,2258,7,21,0,0,2258,2263,3,310, - 155,3,2259,2260,10,1,0,0,2260,2261,5,260,0,0,2261,2263,3,310,155, - 2,2262,2253,1,0,0,0,2262,2256,1,0,0,0,2262,2259,1,0,0,0,2263,2266, - 1,0,0,0,2264,2262,1,0,0,0,2264,2265,1,0,0,0,2265,311,1,0,0,0,2266, - 2264,1,0,0,0,2267,2268,6,156,-1,0,2268,2514,5,133,0,0,2269,2514, - 3,322,161,0,2270,2271,3,358,179,0,2271,2272,3,314,157,0,2272,2514, - 1,0,0,0,2273,2274,5,286,0,0,2274,2514,3,314,157,0,2275,2514,3,360, - 180,0,2276,2514,3,320,160,0,2277,2514,3,314,157,0,2278,2514,5,276, - 0,0,2279,2514,5,272,0,0,2280,2281,5,148,0,0,2281,2282,5,265,0,0, - 2282,2283,3,310,155,0,2283,2284,5,94,0,0,2284,2285,3,310,155,0,2285, - 2286,5,266,0,0,2286,2514,1,0,0,0,2287,2288,5,265,0,0,2288,2291,3, - 304,152,0,2289,2290,5,9,0,0,2290,2292,3,328,164,0,2291,2289,1,0, - 0,0,2291,2292,1,0,0,0,2292,2301,1,0,0,0,2293,2294,5,263,0,0,2294, - 2297,3,304,152,0,2295,2296,5,9,0,0,2296,2298,3,328,164,0,2297,2295, - 1,0,0,0,2297,2298,1,0,0,0,2298,2300,1,0,0,0,2299,2293,1,0,0,0,2300, - 2303,1,0,0,0,2301,2302,1,0,0,0,2301,2299,1,0,0,0,2302,2304,1,0,0, - 0,2303,2301,1,0,0,0,2304,2305,5,266,0,0,2305,2514,1,0,0,0,2306,2307, - 5,168,0,0,2307,2308,5,265,0,0,2308,2313,3,304,152,0,2309,2310,5, - 263,0,0,2310,2312,3,304,152,0,2311,2309,1,0,0,0,2312,2315,1,0,0, - 0,2313,2311,1,0,0,0,2313,2314,1,0,0,0,2314,2316,1,0,0,0,2315,2313, - 1,0,0,0,2316,2317,5,266,0,0,2317,2514,1,0,0,0,2318,2319,3,190,95, - 0,2319,2320,5,265,0,0,2320,2321,5,257,0,0,2321,2323,5,266,0,0,2322, - 2324,3,338,169,0,2323,2322,1,0,0,0,2323,2324,1,0,0,0,2324,2326,1, - 0,0,0,2325,2327,3,340,170,0,2326,2325,1,0,0,0,2326,2327,1,0,0,0, - 2327,2514,1,0,0,0,2328,2329,3,190,95,0,2329,2341,5,265,0,0,2330, - 2332,3,276,138,0,2331,2330,1,0,0,0,2331,2332,1,0,0,0,2332,2333,1, - 0,0,0,2333,2338,3,304,152,0,2334,2335,5,263,0,0,2335,2337,3,304, - 152,0,2336,2334,1,0,0,0,2337,2340,1,0,0,0,2338,2336,1,0,0,0,2338, - 2339,1,0,0,0,2339,2342,1,0,0,0,2340,2338,1,0,0,0,2341,2331,1,0,0, - 0,2341,2342,1,0,0,0,2342,2353,1,0,0,0,2343,2344,5,139,0,0,2344,2345, - 5,26,0,0,2345,2350,3,264,132,0,2346,2347,5,263,0,0,2347,2349,3,264, - 132,0,2348,2346,1,0,0,0,2349,2352,1,0,0,0,2350,2348,1,0,0,0,2350, - 2351,1,0,0,0,2351,2354,1,0,0,0,2352,2350,1,0,0,0,2353,2343,1,0,0, - 0,2353,2354,1,0,0,0,2354,2355,1,0,0,0,2355,2357,5,266,0,0,2356,2358, - 3,338,169,0,2357,2356,1,0,0,0,2357,2358,1,0,0,0,2358,2360,1,0,0, - 0,2359,2361,3,340,170,0,2360,2359,1,0,0,0,2360,2361,1,0,0,0,2361, - 2514,1,0,0,0,2362,2363,3,358,179,0,2363,2364,5,273,0,0,2364,2365, - 3,304,152,0,2365,2514,1,0,0,0,2366,2375,5,265,0,0,2367,2372,3,358, - 179,0,2368,2369,5,263,0,0,2369,2371,3,358,179,0,2370,2368,1,0,0, - 0,2371,2374,1,0,0,0,2372,2370,1,0,0,0,2372,2373,1,0,0,0,2373,2376, - 1,0,0,0,2374,2372,1,0,0,0,2375,2367,1,0,0,0,2375,2376,1,0,0,0,2376, - 2377,1,0,0,0,2377,2378,5,266,0,0,2378,2379,5,273,0,0,2379,2514,3, - 304,152,0,2380,2381,5,265,0,0,2381,2382,3,204,102,0,2382,2383,5, - 266,0,0,2383,2514,1,0,0,0,2384,2385,5,66,0,0,2385,2386,5,265,0,0, - 2386,2387,3,204,102,0,2387,2388,5,266,0,0,2388,2514,1,0,0,0,2389, - 2390,5,28,0,0,2390,2392,3,310,155,0,2391,2393,3,336,168,0,2392,2391, - 1,0,0,0,2393,2394,1,0,0,0,2394,2392,1,0,0,0,2394,2395,1,0,0,0,2395, - 2398,1,0,0,0,2396,2397,5,59,0,0,2397,2399,3,304,152,0,2398,2396, - 1,0,0,0,2398,2399,1,0,0,0,2399,2400,1,0,0,0,2400,2401,5,61,0,0,2401, - 2514,1,0,0,0,2402,2404,5,28,0,0,2403,2405,3,336,168,0,2404,2403, - 1,0,0,0,2405,2406,1,0,0,0,2406,2404,1,0,0,0,2406,2407,1,0,0,0,2407, - 2410,1,0,0,0,2408,2409,5,59,0,0,2409,2411,3,304,152,0,2410,2408, - 1,0,0,0,2410,2411,1,0,0,0,2411,2412,1,0,0,0,2412,2413,5,61,0,0,2413, - 2514,1,0,0,0,2414,2415,5,29,0,0,2415,2416,5,265,0,0,2416,2417,3, - 304,152,0,2417,2418,5,9,0,0,2418,2419,3,328,164,0,2419,2420,5,266, - 0,0,2420,2514,1,0,0,0,2421,2422,5,195,0,0,2422,2423,5,265,0,0,2423, - 2424,3,304,152,0,2424,2425,5,9,0,0,2425,2426,3,328,164,0,2426,2427, - 5,266,0,0,2427,2514,1,0,0,0,2428,2429,5,8,0,0,2429,2438,5,267,0, - 0,2430,2435,3,304,152,0,2431,2432,5,263,0,0,2432,2434,3,304,152, - 0,2433,2431,1,0,0,0,2434,2437,1,0,0,0,2435,2433,1,0,0,0,2435,2436, - 1,0,0,0,2436,2439,1,0,0,0,2437,2435,1,0,0,0,2438,2430,1,0,0,0,2438, - 2439,1,0,0,0,2439,2440,1,0,0,0,2440,2514,5,268,0,0,2441,2514,3,358, - 179,0,2442,2514,5,40,0,0,2443,2447,5,42,0,0,2444,2445,5,265,0,0, - 2445,2446,5,277,0,0,2446,2448,5,266,0,0,2447,2444,1,0,0,0,2447,2448, - 1,0,0,0,2448,2514,1,0,0,0,2449,2453,5,43,0,0,2450,2451,5,265,0,0, - 2451,2452,5,277,0,0,2452,2454,5,266,0,0,2453,2450,1,0,0,0,2453,2454, - 1,0,0,0,2454,2514,1,0,0,0,2455,2459,5,119,0,0,2456,2457,5,265,0, - 0,2457,2458,5,277,0,0,2458,2460,5,266,0,0,2459,2456,1,0,0,0,2459, - 2460,1,0,0,0,2460,2514,1,0,0,0,2461,2465,5,120,0,0,2462,2463,5,265, - 0,0,2463,2464,5,277,0,0,2464,2466,5,266,0,0,2465,2462,1,0,0,0,2465, - 2466,1,0,0,0,2466,2514,1,0,0,0,2467,2514,5,44,0,0,2468,2514,5,41, - 0,0,2469,2470,5,184,0,0,2470,2471,5,265,0,0,2471,2472,3,310,155, - 0,2472,2473,5,82,0,0,2473,2476,3,310,155,0,2474,2475,5,78,0,0,2475, - 2477,3,310,155,0,2476,2474,1,0,0,0,2476,2477,1,0,0,0,2477,2478,1, - 0,0,0,2478,2479,5,266,0,0,2479,2514,1,0,0,0,2480,2481,5,131,0,0, - 2481,2482,5,265,0,0,2482,2485,3,310,155,0,2483,2484,5,263,0,0,2484, - 2486,3,326,163,0,2485,2483,1,0,0,0,2485,2486,1,0,0,0,2486,2487,1, - 0,0,0,2487,2488,5,266,0,0,2488,2514,1,0,0,0,2489,2490,5,68,0,0,2490, - 2491,5,265,0,0,2491,2492,3,358,179,0,2492,2493,5,82,0,0,2493,2494, - 3,310,155,0,2494,2495,5,266,0,0,2495,2514,1,0,0,0,2496,2497,5,265, - 0,0,2497,2498,3,304,152,0,2498,2499,5,266,0,0,2499,2514,1,0,0,0, - 2500,2501,5,88,0,0,2501,2510,5,265,0,0,2502,2507,3,354,177,0,2503, - 2504,5,263,0,0,2504,2506,3,354,177,0,2505,2503,1,0,0,0,2506,2509, - 1,0,0,0,2507,2505,1,0,0,0,2507,2508,1,0,0,0,2508,2511,1,0,0,0,2509, - 2507,1,0,0,0,2510,2502,1,0,0,0,2510,2511,1,0,0,0,2511,2512,1,0,0, - 0,2512,2514,5,266,0,0,2513,2267,1,0,0,0,2513,2269,1,0,0,0,2513,2270, - 1,0,0,0,2513,2273,1,0,0,0,2513,2275,1,0,0,0,2513,2276,1,0,0,0,2513, - 2277,1,0,0,0,2513,2278,1,0,0,0,2513,2279,1,0,0,0,2513,2280,1,0,0, - 0,2513,2287,1,0,0,0,2513,2306,1,0,0,0,2513,2318,1,0,0,0,2513,2328, - 1,0,0,0,2513,2362,1,0,0,0,2513,2366,1,0,0,0,2513,2380,1,0,0,0,2513, - 2384,1,0,0,0,2513,2389,1,0,0,0,2513,2402,1,0,0,0,2513,2414,1,0,0, - 0,2513,2421,1,0,0,0,2513,2428,1,0,0,0,2513,2441,1,0,0,0,2513,2442, - 1,0,0,0,2513,2443,1,0,0,0,2513,2449,1,0,0,0,2513,2455,1,0,0,0,2513, - 2461,1,0,0,0,2513,2467,1,0,0,0,2513,2468,1,0,0,0,2513,2469,1,0,0, - 0,2513,2480,1,0,0,0,2513,2489,1,0,0,0,2513,2496,1,0,0,0,2513,2500, - 1,0,0,0,2514,2525,1,0,0,0,2515,2516,10,15,0,0,2516,2517,5,267,0, - 0,2517,2518,3,310,155,0,2518,2519,5,268,0,0,2519,2524,1,0,0,0,2520, - 2521,10,13,0,0,2521,2522,5,261,0,0,2522,2524,3,358,179,0,2523,2515, - 1,0,0,0,2523,2520,1,0,0,0,2524,2527,1,0,0,0,2525,2523,1,0,0,0,2525, - 2526,1,0,0,0,2526,313,1,0,0,0,2527,2525,1,0,0,0,2528,2535,5,274, - 0,0,2529,2532,5,275,0,0,2530,2531,5,198,0,0,2531,2533,5,274,0,0, - 2532,2530,1,0,0,0,2532,2533,1,0,0,0,2533,2535,1,0,0,0,2534,2528, - 1,0,0,0,2534,2529,1,0,0,0,2535,315,1,0,0,0,2536,2537,7,23,0,0,2537, - 317,1,0,0,0,2538,2539,7,24,0,0,2539,319,1,0,0,0,2540,2541,7,25,0, - 0,2541,321,1,0,0,0,2542,2543,5,277,0,0,2543,2557,3,324,162,0,2544, - 2545,5,265,0,0,2545,2546,5,277,0,0,2546,2547,5,266,0,0,2547,2557, - 3,324,162,0,2548,2549,5,101,0,0,2549,2550,5,277,0,0,2550,2557,3, - 324,162,0,2551,2552,5,101,0,0,2552,2553,5,265,0,0,2553,2554,5,277, - 0,0,2554,2555,5,266,0,0,2555,2557,3,324,162,0,2556,2542,1,0,0,0, - 2556,2544,1,0,0,0,2556,2548,1,0,0,0,2556,2551,1,0,0,0,2557,323,1, - 0,0,0,2558,2559,7,26,0,0,2559,325,1,0,0,0,2560,2561,7,27,0,0,2561, - 327,1,0,0,0,2562,2563,6,164,-1,0,2563,2564,5,8,0,0,2564,2565,5,251, - 0,0,2565,2566,3,328,164,0,2566,2567,5,253,0,0,2567,2608,1,0,0,0, - 2568,2569,5,235,0,0,2569,2570,5,251,0,0,2570,2571,3,328,164,0,2571, - 2572,5,263,0,0,2572,2573,3,328,164,0,2573,2574,5,253,0,0,2574,2608, - 1,0,0,0,2575,2576,5,240,0,0,2576,2577,5,251,0,0,2577,2578,3,358, - 179,0,2578,2585,3,328,164,0,2579,2580,5,263,0,0,2580,2581,3,358, - 179,0,2581,2582,3,328,164,0,2582,2584,1,0,0,0,2583,2579,1,0,0,0, - 2584,2587,1,0,0,0,2585,2583,1,0,0,0,2585,2586,1,0,0,0,2586,2588, - 1,0,0,0,2587,2585,1,0,0,0,2588,2589,5,253,0,0,2589,2608,1,0,0,0, - 2590,2593,3,334,167,0,2591,2593,3,330,165,0,2592,2590,1,0,0,0,2592, - 2591,1,0,0,0,2593,2605,1,0,0,0,2594,2595,5,265,0,0,2595,2600,3,332, - 166,0,2596,2597,5,263,0,0,2597,2599,3,332,166,0,2598,2596,1,0,0, - 0,2599,2602,1,0,0,0,2600,2598,1,0,0,0,2600,2601,1,0,0,0,2601,2603, - 1,0,0,0,2602,2600,1,0,0,0,2603,2604,5,266,0,0,2604,2606,1,0,0,0, - 2605,2594,1,0,0,0,2605,2606,1,0,0,0,2606,2608,1,0,0,0,2607,2562, - 1,0,0,0,2607,2568,1,0,0,0,2607,2575,1,0,0,0,2607,2592,1,0,0,0,2608, - 2613,1,0,0,0,2609,2610,10,5,0,0,2610,2612,5,8,0,0,2611,2609,1,0, - 0,0,2612,2615,1,0,0,0,2613,2611,1,0,0,0,2613,2614,1,0,0,0,2614,329, - 1,0,0,0,2615,2613,1,0,0,0,2616,2617,7,28,0,0,2617,331,1,0,0,0,2618, - 2621,5,277,0,0,2619,2621,3,328,164,0,2620,2618,1,0,0,0,2620,2619, - 1,0,0,0,2621,333,1,0,0,0,2622,2627,5,284,0,0,2623,2627,5,285,0,0, - 2624,2627,5,286,0,0,2625,2627,3,358,179,0,2626,2622,1,0,0,0,2626, - 2623,1,0,0,0,2626,2624,1,0,0,0,2626,2625,1,0,0,0,2627,335,1,0,0, - 0,2628,2629,5,214,0,0,2629,2630,3,304,152,0,2630,2631,5,192,0,0, - 2631,2632,3,304,152,0,2632,337,1,0,0,0,2633,2634,5,74,0,0,2634,2635, - 5,265,0,0,2635,2636,5,215,0,0,2636,2637,3,306,153,0,2637,2638,5, - 266,0,0,2638,339,1,0,0,0,2639,2640,5,143,0,0,2640,2651,5,265,0,0, - 2641,2642,5,145,0,0,2642,2643,5,26,0,0,2643,2648,3,304,152,0,2644, - 2645,5,263,0,0,2645,2647,3,304,152,0,2646,2644,1,0,0,0,2647,2650, - 1,0,0,0,2648,2646,1,0,0,0,2648,2649,1,0,0,0,2649,2652,1,0,0,0,2650, - 2648,1,0,0,0,2651,2641,1,0,0,0,2651,2652,1,0,0,0,2652,2663,1,0,0, - 0,2653,2654,5,139,0,0,2654,2655,5,26,0,0,2655,2660,3,264,132,0,2656, - 2657,5,263,0,0,2657,2659,3,264,132,0,2658,2656,1,0,0,0,2659,2662, - 1,0,0,0,2660,2658,1,0,0,0,2660,2661,1,0,0,0,2661,2664,1,0,0,0,2662, - 2660,1,0,0,0,2663,2653,1,0,0,0,2663,2664,1,0,0,0,2664,2666,1,0,0, - 0,2665,2667,3,342,171,0,2666,2665,1,0,0,0,2666,2667,1,0,0,0,2667, - 2668,1,0,0,0,2668,2669,5,266,0,0,2669,341,1,0,0,0,2670,2671,5,154, - 0,0,2671,2687,3,344,172,0,2672,2673,5,169,0,0,2673,2687,3,344,172, - 0,2674,2675,5,154,0,0,2675,2676,5,15,0,0,2676,2677,3,344,172,0,2677, - 2678,5,5,0,0,2678,2679,3,344,172,0,2679,2687,1,0,0,0,2680,2681,5, - 169,0,0,2681,2682,5,15,0,0,2682,2683,3,344,172,0,2683,2684,5,5,0, - 0,2684,2685,3,344,172,0,2685,2687,1,0,0,0,2686,2670,1,0,0,0,2686, - 2672,1,0,0,0,2686,2674,1,0,0,0,2686,2680,1,0,0,0,2687,343,1,0,0, - 0,2688,2689,5,199,0,0,2689,2698,5,149,0,0,2690,2691,5,199,0,0,2691, - 2698,5,77,0,0,2692,2693,5,39,0,0,2693,2698,5,168,0,0,2694,2695,3, - 304,152,0,2695,2696,7,29,0,0,2696,2698,1,0,0,0,2697,2688,1,0,0,0, - 2697,2690,1,0,0,0,2697,2692,1,0,0,0,2697,2694,1,0,0,0,2698,345,1, - 0,0,0,2699,2700,3,358,179,0,2700,2701,5,261,0,0,2701,2702,3,358, - 179,0,2702,2705,1,0,0,0,2703,2705,3,358,179,0,2704,2699,1,0,0,0, - 2704,2703,1,0,0,0,2705,347,1,0,0,0,2706,2711,3,346,173,0,2707,2708, - 5,263,0,0,2708,2710,3,346,173,0,2709,2707,1,0,0,0,2710,2713,1,0, - 0,0,2711,2709,1,0,0,0,2711,2712,1,0,0,0,2712,349,1,0,0,0,2713,2711, - 1,0,0,0,2714,2728,5,2,0,0,2715,2728,5,4,0,0,2716,2728,5,58,0,0,2717, - 2728,5,37,0,0,2718,2728,5,99,0,0,2719,2728,5,162,0,0,2720,2725,5, - 174,0,0,2721,2722,5,265,0,0,2722,2723,3,358,179,0,2723,2724,5,266, - 0,0,2724,2726,1,0,0,0,2725,2721,1,0,0,0,2725,2726,1,0,0,0,2726,2728, - 1,0,0,0,2727,2714,1,0,0,0,2727,2715,1,0,0,0,2727,2716,1,0,0,0,2727, - 2717,1,0,0,0,2727,2718,1,0,0,0,2727,2719,1,0,0,0,2727,2720,1,0,0, - 0,2728,351,1,0,0,0,2729,2730,7,30,0,0,2730,353,1,0,0,0,2731,2736, - 3,358,179,0,2732,2733,5,261,0,0,2733,2735,3,358,179,0,2734,2732, - 1,0,0,0,2735,2738,1,0,0,0,2736,2734,1,0,0,0,2736,2737,1,0,0,0,2737, - 355,1,0,0,0,2738,2736,1,0,0,0,2739,2740,5,166,0,0,2740,2746,3,358, - 179,0,2741,2742,5,204,0,0,2742,2746,3,358,179,0,2743,2744,5,87,0, - 0,2744,2746,3,358,179,0,2745,2739,1,0,0,0,2745,2741,1,0,0,0,2745, - 2743,1,0,0,0,2746,357,1,0,0,0,2747,2753,5,280,0,0,2748,2753,5,274, - 0,0,2749,2753,3,364,182,0,2750,2753,5,283,0,0,2751,2753,5,281,0, - 0,2752,2747,1,0,0,0,2752,2748,1,0,0,0,2752,2749,1,0,0,0,2752,2750, - 1,0,0,0,2752,2751,1,0,0,0,2753,359,1,0,0,0,2754,2756,5,256,0,0,2755, - 2754,1,0,0,0,2755,2756,1,0,0,0,2756,2757,1,0,0,0,2757,2767,5,278, - 0,0,2758,2760,5,256,0,0,2759,2758,1,0,0,0,2759,2760,1,0,0,0,2760, - 2761,1,0,0,0,2761,2767,5,279,0,0,2762,2764,5,256,0,0,2763,2762,1, - 0,0,0,2763,2764,1,0,0,0,2764,2765,1,0,0,0,2765,2767,5,277,0,0,2766, - 2755,1,0,0,0,2766,2759,1,0,0,0,2766,2763,1,0,0,0,2767,361,1,0,0, - 0,2768,2769,7,31,0,0,2769,363,1,0,0,0,2770,2771,7,32,0,0,2771,365, - 1,0,0,0,353,369,376,400,413,417,421,430,435,439,445,447,452,456, + 1,164,5,164,2582,8,164,10,164,12,164,2585,9,164,1,164,1,164,1,164, + 1,164,3,164,2591,8,164,1,164,1,164,1,164,1,164,5,164,2597,8,164, + 10,164,12,164,2600,9,164,1,164,1,164,3,164,2604,8,164,3,164,2606, + 8,164,1,164,1,164,5,164,2610,8,164,10,164,12,164,2613,9,164,1,165, + 1,165,1,166,1,166,3,166,2619,8,166,1,167,1,167,1,167,1,167,3,167, + 2625,8,167,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169, + 1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,170,1,170,5,170,2645, + 8,170,10,170,12,170,2648,9,170,3,170,2650,8,170,1,170,1,170,1,170, + 1,170,1,170,5,170,2657,8,170,10,170,12,170,2660,9,170,3,170,2662, + 8,170,1,170,3,170,2665,8,170,1,170,1,170,1,171,1,171,1,171,1,171, + 1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, + 1,171,3,171,2685,8,171,1,172,1,172,1,172,1,172,1,172,1,172,1,172, + 1,172,1,172,3,172,2696,8,172,1,173,1,173,1,173,1,173,1,173,3,173, + 2703,8,173,1,174,1,174,1,174,5,174,2708,8,174,10,174,12,174,2711, + 9,174,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175,1,175, + 1,175,3,175,2724,8,175,3,175,2726,8,175,1,176,1,176,1,177,1,177, + 1,177,5,177,2733,8,177,10,177,12,177,2736,9,177,1,178,1,178,1,178, + 1,178,1,178,1,178,3,178,2744,8,178,1,179,1,179,1,179,1,179,1,179, + 3,179,2751,8,179,1,180,3,180,2754,8,180,1,180,1,180,3,180,2758,8, + 180,1,180,1,180,3,180,2762,8,180,1,180,3,180,2765,8,180,1,181,1, + 181,1,182,1,182,1,182,10,770,1446,1621,1661,1679,1694,1725,1754, + 1828,2299,6,260,280,306,310,312,328,183,0,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,156,158,160,162,164,166,168, + 170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200, + 202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232, + 234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264, + 266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296, + 298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328, + 330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360, + 362,364,0,33,2,0,46,46,170,170,2,0,166,166,204,204,2,0,176,176,202, + 202,2,0,69,69,80,80,2,0,27,27,159,159,2,0,103,103,144,144,2,0,47, + 47,171,171,2,0,3,3,12,12,3,0,87,87,166,166,204,204,2,0,178,178,209, + 209,1,0,245,248,2,0,147,147,219,223,2,0,65,65,95,95,2,0,64,64,200, + 200,2,0,10,10,55,55,2,0,75,75,112,112,2,0,2,2,57,57,2,0,14,14,185, + 185,3,0,106,106,115,115,164,164,2,0,105,105,163,163,4,0,70,70,133, + 133,194,194,208,208,1,0,255,256,1,0,257,259,1,0,249,254,3,0,2,2, + 6,6,181,181,2,0,70,70,194,194,5,0,48,49,91,92,122,125,172,173,217, + 218,1,0,127,130,2,0,8,8,227,244,2,0,77,77,149,149,4,0,46,46,178, + 178,188,188,209,209,16,0,28,29,40,40,43,43,48,48,68,68,91,91,114, + 114,122,122,124,124,158,158,165,165,172,172,184,184,196,196,204, + 204,217,217,23,0,14,14,43,44,48,49,65,65,68,68,91,91,95,95,110,110, + 119,119,122,125,127,130,137,137,140,140,152,153,172,173,180,180, + 184,185,195,195,204,204,213,213,217,217,220,220,231,231,3093,0,369, + 1,0,0,0,2,374,1,0,0,0,4,400,1,0,0,0,6,402,1,0,0,0,8,413,1,0,0,0, + 10,415,1,0,0,0,12,454,1,0,0,0,14,476,1,0,0,0,16,531,1,0,0,0,18,551, + 1,0,0,0,20,565,1,0,0,0,22,569,1,0,0,0,24,631,1,0,0,0,26,679,1,0, + 0,0,28,681,1,0,0,0,30,689,1,0,0,0,32,709,1,0,0,0,34,729,1,0,0,0, + 36,736,1,0,0,0,38,745,1,0,0,0,40,753,1,0,0,0,42,775,1,0,0,0,44,785, + 1,0,0,0,46,803,1,0,0,0,48,824,1,0,0,0,50,845,1,0,0,0,52,851,1,0, + 0,0,54,868,1,0,0,0,56,877,1,0,0,0,58,884,1,0,0,0,60,892,1,0,0,0, + 62,899,1,0,0,0,64,906,1,0,0,0,66,915,1,0,0,0,68,926,1,0,0,0,70,928, + 1,0,0,0,72,948,1,0,0,0,74,965,1,0,0,0,76,967,1,0,0,0,78,976,1,0, + 0,0,80,983,1,0,0,0,82,992,1,0,0,0,84,1002,1,0,0,0,86,1025,1,0,0, + 0,88,1031,1,0,0,0,90,1033,1,0,0,0,92,1040,1,0,0,0,94,1052,1,0,0, + 0,96,1054,1,0,0,0,98,1061,1,0,0,0,100,1082,1,0,0,0,102,1111,1,0, + 0,0,104,1113,1,0,0,0,106,1122,1,0,0,0,108,1145,1,0,0,0,110,1164, + 1,0,0,0,112,1187,1,0,0,0,114,1189,1,0,0,0,116,1204,1,0,0,0,118,1223, + 1,0,0,0,120,1245,1,0,0,0,122,1250,1,0,0,0,124,1255,1,0,0,0,126,1260, + 1,0,0,0,128,1265,1,0,0,0,130,1272,1,0,0,0,132,1287,1,0,0,0,134,1293, + 1,0,0,0,136,1313,1,0,0,0,138,1315,1,0,0,0,140,1326,1,0,0,0,142,1337, + 1,0,0,0,144,1351,1,0,0,0,146,1353,1,0,0,0,148,1362,1,0,0,0,150,1371, + 1,0,0,0,152,1380,1,0,0,0,154,1383,1,0,0,0,156,1391,1,0,0,0,158,1407, + 1,0,0,0,160,1411,1,0,0,0,162,1435,1,0,0,0,164,1437,1,0,0,0,166,1453, + 1,0,0,0,168,1456,1,0,0,0,170,1460,1,0,0,0,172,1463,1,0,0,0,174,1467, + 1,0,0,0,176,1469,1,0,0,0,178,1471,1,0,0,0,180,1473,1,0,0,0,182,1475, + 1,0,0,0,184,1477,1,0,0,0,186,1479,1,0,0,0,188,1487,1,0,0,0,190,1497, + 1,0,0,0,192,1501,1,0,0,0,194,1505,1,0,0,0,196,1510,1,0,0,0,198,1551, + 1,0,0,0,200,1559,1,0,0,0,202,1563,1,0,0,0,204,1583,1,0,0,0,206,1587, + 1,0,0,0,208,1596,1,0,0,0,210,1626,1,0,0,0,212,1641,1,0,0,0,214,1647, + 1,0,0,0,216,1653,1,0,0,0,218,1655,1,0,0,0,220,1674,1,0,0,0,222,1684, + 1,0,0,0,224,1704,1,0,0,0,226,1714,1,0,0,0,228,1716,1,0,0,0,230,1718, + 1,0,0,0,232,1733,1,0,0,0,234,1735,1,0,0,0,236,1742,1,0,0,0,238,1774, + 1,0,0,0,240,1786,1,0,0,0,242,1793,1,0,0,0,244,1803,1,0,0,0,246,1805, + 1,0,0,0,248,1811,1,0,0,0,250,1822,1,0,0,0,252,1833,1,0,0,0,254,1841, + 1,0,0,0,256,1859,1,0,0,0,258,1864,1,0,0,0,260,1885,1,0,0,0,262,1921, + 1,0,0,0,264,1923,1,0,0,0,266,1931,1,0,0,0,268,1971,1,0,0,0,270,1981, + 1,0,0,0,272,1996,1,0,0,0,274,1998,1,0,0,0,276,2005,1,0,0,0,278,2019, + 1,0,0,0,280,2021,1,0,0,0,282,2071,1,0,0,0,284,2087,1,0,0,0,286,2089, + 1,0,0,0,288,2104,1,0,0,0,290,2106,1,0,0,0,292,2116,1,0,0,0,294,2134, + 1,0,0,0,296,2136,1,0,0,0,298,2140,1,0,0,0,300,2155,1,0,0,0,302,2161, + 1,0,0,0,304,2163,1,0,0,0,306,2172,1,0,0,0,308,2243,1,0,0,0,310,2249, + 1,0,0,0,312,2511,1,0,0,0,314,2532,1,0,0,0,316,2534,1,0,0,0,318,2536, + 1,0,0,0,320,2538,1,0,0,0,322,2554,1,0,0,0,324,2556,1,0,0,0,326,2558, + 1,0,0,0,328,2605,1,0,0,0,330,2614,1,0,0,0,332,2618,1,0,0,0,334,2624, + 1,0,0,0,336,2626,1,0,0,0,338,2631,1,0,0,0,340,2637,1,0,0,0,342,2684, + 1,0,0,0,344,2695,1,0,0,0,346,2702,1,0,0,0,348,2704,1,0,0,0,350,2725, + 1,0,0,0,352,2727,1,0,0,0,354,2729,1,0,0,0,356,2743,1,0,0,0,358,2750, + 1,0,0,0,360,2764,1,0,0,0,362,2766,1,0,0,0,364,2768,1,0,0,0,366,368, + 3,2,1,0,367,366,1,0,0,0,368,371,1,0,0,0,369,367,1,0,0,0,369,370, + 1,0,0,0,370,372,1,0,0,0,371,369,1,0,0,0,372,373,5,0,0,1,373,1,1, + 0,0,0,374,376,3,4,2,0,375,377,5,262,0,0,376,375,1,0,0,0,376,377, + 1,0,0,0,377,3,1,0,0,0,378,401,3,204,102,0,379,401,3,6,3,0,380,401, + 3,8,4,0,381,401,3,26,13,0,382,401,3,64,32,0,383,401,3,66,33,0,384, + 401,3,68,34,0,385,401,3,74,37,0,386,401,3,88,44,0,387,401,3,94,47, + 0,388,401,3,100,50,0,389,401,3,102,51,0,390,401,3,108,54,0,391,401, + 3,110,55,0,392,401,3,112,56,0,393,401,3,144,72,0,394,401,3,152,76, + 0,395,401,3,154,77,0,396,401,3,156,78,0,397,401,3,158,79,0,398,401, + 3,160,80,0,399,401,3,162,81,0,400,378,1,0,0,0,400,379,1,0,0,0,400, + 380,1,0,0,0,400,381,1,0,0,0,400,382,1,0,0,0,400,383,1,0,0,0,400, + 384,1,0,0,0,400,385,1,0,0,0,400,386,1,0,0,0,400,387,1,0,0,0,400, + 388,1,0,0,0,400,389,1,0,0,0,400,390,1,0,0,0,400,391,1,0,0,0,400, + 392,1,0,0,0,400,393,1,0,0,0,400,394,1,0,0,0,400,395,1,0,0,0,400, + 396,1,0,0,0,400,397,1,0,0,0,400,398,1,0,0,0,400,399,1,0,0,0,401, + 5,1,0,0,0,402,403,5,203,0,0,403,404,3,184,92,0,404,7,1,0,0,0,405, + 414,3,18,9,0,406,414,3,20,10,0,407,414,3,22,11,0,408,414,3,24,12, + 0,409,414,3,16,8,0,410,414,3,14,7,0,411,414,3,12,6,0,412,414,3,10, + 5,0,413,405,1,0,0,0,413,406,1,0,0,0,413,407,1,0,0,0,413,408,1,0, + 0,0,413,409,1,0,0,0,413,410,1,0,0,0,413,411,1,0,0,0,413,412,1,0, + 0,0,414,9,1,0,0,0,415,417,5,37,0,0,416,418,5,19,0,0,417,416,1,0, + 0,0,417,418,1,0,0,0,418,419,1,0,0,0,419,421,5,188,0,0,420,422,3, + 172,86,0,421,420,1,0,0,0,421,422,1,0,0,0,422,423,1,0,0,0,423,439, + 3,174,87,0,424,425,5,265,0,0,425,430,3,214,107,0,426,427,5,263,0, + 0,427,429,3,214,107,0,428,426,1,0,0,0,429,432,1,0,0,0,430,428,1, + 0,0,0,430,431,1,0,0,0,431,435,1,0,0,0,432,430,1,0,0,0,433,434,5, + 263,0,0,434,436,3,208,104,0,435,433,1,0,0,0,435,436,1,0,0,0,436, + 437,1,0,0,0,437,438,5,266,0,0,438,440,1,0,0,0,439,424,1,0,0,0,439, + 440,1,0,0,0,440,447,1,0,0,0,441,442,5,17,0,0,442,445,5,26,0,0,443, + 446,3,292,146,0,444,446,3,250,125,0,445,443,1,0,0,0,445,444,1,0, + 0,0,446,448,1,0,0,0,447,441,1,0,0,0,447,448,1,0,0,0,448,449,1,0, + 0,0,449,452,3,196,98,0,450,451,5,9,0,0,451,453,3,204,102,0,452,450, + 1,0,0,0,452,453,1,0,0,0,453,11,1,0,0,0,454,456,5,37,0,0,455,457, + 5,19,0,0,456,455,1,0,0,0,456,457,1,0,0,0,457,458,1,0,0,0,458,460, + 5,188,0,0,459,461,3,172,86,0,460,459,1,0,0,0,460,461,1,0,0,0,461, + 462,1,0,0,0,462,463,3,174,87,0,463,467,5,115,0,0,464,468,3,186,93, + 0,465,466,5,147,0,0,466,468,3,314,157,0,467,464,1,0,0,0,467,465, + 1,0,0,0,468,472,1,0,0,0,469,470,5,17,0,0,470,471,5,26,0,0,471,473, + 3,250,125,0,472,469,1,0,0,0,472,473,1,0,0,0,473,474,1,0,0,0,474, + 475,3,196,98,0,475,13,1,0,0,0,476,478,5,37,0,0,477,479,5,19,0,0, + 478,477,1,0,0,0,478,479,1,0,0,0,479,480,1,0,0,0,480,482,5,188,0, + 0,481,483,3,172,86,0,482,481,1,0,0,0,482,483,1,0,0,0,483,484,1,0, + 0,0,484,502,3,174,87,0,485,486,5,265,0,0,486,491,3,216,108,0,487, + 488,5,263,0,0,488,490,3,216,108,0,489,487,1,0,0,0,490,493,1,0,0, + 0,491,489,1,0,0,0,491,492,1,0,0,0,492,498,1,0,0,0,493,491,1,0,0, + 0,494,495,5,263,0,0,495,496,5,150,0,0,496,497,5,110,0,0,497,499, + 3,292,146,0,498,494,1,0,0,0,498,499,1,0,0,0,499,500,1,0,0,0,500, + 501,5,266,0,0,501,503,1,0,0,0,502,485,1,0,0,0,502,503,1,0,0,0,503, + 509,1,0,0,0,504,505,5,150,0,0,505,507,5,110,0,0,506,508,3,292,146, + 0,507,506,1,0,0,0,507,508,1,0,0,0,508,510,1,0,0,0,509,504,1,0,0, + 0,509,510,1,0,0,0,510,514,1,0,0,0,511,512,5,145,0,0,512,513,5,26, + 0,0,513,515,3,232,116,0,514,511,1,0,0,0,514,515,1,0,0,0,515,518, + 1,0,0,0,516,517,5,34,0,0,517,519,3,314,157,0,518,516,1,0,0,0,518, + 519,1,0,0,0,519,520,1,0,0,0,520,521,5,23,0,0,521,522,5,9,0,0,522, + 525,5,111,0,0,523,524,5,25,0,0,524,526,3,248,124,0,525,523,1,0,0, + 0,525,526,1,0,0,0,526,529,1,0,0,0,527,528,5,9,0,0,528,530,3,204, + 102,0,529,527,1,0,0,0,529,530,1,0,0,0,530,15,1,0,0,0,531,532,5,37, + 0,0,532,534,5,212,0,0,533,535,3,172,86,0,534,533,1,0,0,0,534,535, + 1,0,0,0,535,536,1,0,0,0,536,538,3,178,89,0,537,539,3,202,101,0,538, + 537,1,0,0,0,538,539,1,0,0,0,539,542,1,0,0,0,540,541,5,34,0,0,541, + 543,3,314,157,0,542,540,1,0,0,0,542,543,1,0,0,0,543,546,1,0,0,0, + 544,545,5,25,0,0,545,547,3,248,124,0,546,544,1,0,0,0,546,547,1,0, + 0,0,547,548,1,0,0,0,548,549,5,9,0,0,549,550,3,204,102,0,550,17,1, + 0,0,0,551,552,5,37,0,0,552,554,7,0,0,0,553,555,3,172,86,0,554,553, + 1,0,0,0,554,555,1,0,0,0,555,556,1,0,0,0,556,559,3,176,88,0,557,558, + 5,34,0,0,558,560,3,314,157,0,559,557,1,0,0,0,559,560,1,0,0,0,560, + 563,1,0,0,0,561,562,5,24,0,0,562,564,3,314,157,0,563,561,1,0,0,0, + 563,564,1,0,0,0,564,19,1,0,0,0,565,566,5,37,0,0,566,567,5,166,0, + 0,567,568,3,358,179,0,568,21,1,0,0,0,569,571,5,37,0,0,570,572,5, + 12,0,0,571,570,1,0,0,0,571,572,1,0,0,0,572,573,1,0,0,0,573,575,5, + 84,0,0,574,576,3,172,86,0,575,574,1,0,0,0,575,576,1,0,0,0,576,577, + 1,0,0,0,577,590,3,180,90,0,578,587,5,265,0,0,579,584,3,328,164,0, + 580,581,5,263,0,0,581,583,3,328,164,0,582,580,1,0,0,0,583,586,1, + 0,0,0,584,582,1,0,0,0,584,585,1,0,0,0,585,588,1,0,0,0,586,584,1, + 0,0,0,587,579,1,0,0,0,587,588,1,0,0,0,588,589,1,0,0,0,589,591,5, + 266,0,0,590,578,1,0,0,0,590,591,1,0,0,0,591,592,1,0,0,0,592,593, + 5,160,0,0,593,596,3,328,164,0,594,595,5,102,0,0,595,597,3,328,164, + 0,596,594,1,0,0,0,596,597,1,0,0,0,597,598,1,0,0,0,598,599,5,24,0, + 0,599,603,5,274,0,0,600,601,5,104,0,0,601,602,5,249,0,0,602,604, + 5,274,0,0,603,600,1,0,0,0,603,604,1,0,0,0,604,605,1,0,0,0,605,606, + 5,206,0,0,606,607,5,249,0,0,607,608,5,274,0,0,608,609,5,126,0,0, + 609,610,5,249,0,0,610,614,5,274,0,0,611,612,5,18,0,0,612,613,5,249, + 0,0,613,615,5,274,0,0,614,611,1,0,0,0,614,615,1,0,0,0,615,619,1, + 0,0,0,616,617,5,20,0,0,617,618,5,249,0,0,618,620,5,274,0,0,619,616, + 1,0,0,0,619,620,1,0,0,0,620,624,1,0,0,0,621,622,5,187,0,0,622,623, + 5,249,0,0,623,625,5,274,0,0,624,621,1,0,0,0,624,625,1,0,0,0,625, + 629,1,0,0,0,626,627,5,76,0,0,627,628,5,249,0,0,628,630,5,274,0,0, + 629,626,1,0,0,0,629,630,1,0,0,0,630,23,1,0,0,0,631,632,5,37,0,0, + 632,634,5,84,0,0,633,635,3,172,86,0,634,633,1,0,0,0,634,635,1,0, + 0,0,635,636,1,0,0,0,636,649,3,180,90,0,637,646,5,265,0,0,638,643, + 3,328,164,0,639,640,5,263,0,0,640,642,3,328,164,0,641,639,1,0,0, + 0,642,645,1,0,0,0,643,641,1,0,0,0,643,644,1,0,0,0,644,647,1,0,0, + 0,645,643,1,0,0,0,646,638,1,0,0,0,646,647,1,0,0,0,647,648,1,0,0, + 0,648,650,5,266,0,0,649,637,1,0,0,0,649,650,1,0,0,0,650,653,1,0, + 0,0,651,652,5,160,0,0,652,654,3,328,164,0,653,651,1,0,0,0,653,654, + 1,0,0,0,654,655,1,0,0,0,655,656,5,24,0,0,656,657,5,274,0,0,657,658, + 5,186,0,0,658,659,5,249,0,0,659,660,3,314,157,0,660,25,1,0,0,0,661, + 680,3,28,14,0,662,680,3,62,31,0,663,680,3,60,30,0,664,680,3,58,29, + 0,665,680,3,54,27,0,666,680,3,56,28,0,667,680,3,52,26,0,668,680, + 3,48,24,0,669,680,3,50,25,0,670,680,3,46,23,0,671,680,3,44,22,0, + 672,680,3,42,21,0,673,680,3,40,20,0,674,680,3,34,17,0,675,680,3, + 30,15,0,676,680,3,32,16,0,677,680,3,36,18,0,678,680,3,38,19,0,679, + 661,1,0,0,0,679,662,1,0,0,0,679,663,1,0,0,0,679,664,1,0,0,0,679, + 665,1,0,0,0,679,666,1,0,0,0,679,667,1,0,0,0,679,668,1,0,0,0,679, + 669,1,0,0,0,679,670,1,0,0,0,679,671,1,0,0,0,679,672,1,0,0,0,679, + 673,1,0,0,0,679,674,1,0,0,0,679,675,1,0,0,0,679,676,1,0,0,0,679, + 677,1,0,0,0,679,678,1,0,0,0,680,27,1,0,0,0,681,682,5,4,0,0,682,683, + 5,46,0,0,683,684,3,184,92,0,684,685,5,176,0,0,685,686,5,142,0,0, + 686,687,7,1,0,0,687,688,3,358,179,0,688,29,1,0,0,0,689,690,5,4,0, + 0,690,691,5,188,0,0,691,692,3,186,93,0,692,693,5,176,0,0,693,694, + 5,32,0,0,694,695,5,182,0,0,695,696,3,192,96,0,696,697,5,265,0,0, + 697,698,3,228,114,0,698,699,5,249,0,0,699,705,3,314,157,0,700,701, + 5,263,0,0,701,702,3,228,114,0,702,703,5,249,0,0,703,704,3,314,157, + 0,704,706,1,0,0,0,705,700,1,0,0,0,705,706,1,0,0,0,706,707,1,0,0, + 0,707,708,5,266,0,0,708,31,1,0,0,0,709,710,5,4,0,0,710,711,5,188, + 0,0,711,714,3,186,93,0,712,713,5,145,0,0,713,715,3,304,152,0,714, + 712,1,0,0,0,714,715,1,0,0,0,715,716,1,0,0,0,716,727,5,176,0,0,717, + 718,5,30,0,0,718,719,5,94,0,0,719,724,3,314,157,0,720,721,5,216, + 0,0,721,722,5,151,0,0,722,723,5,249,0,0,723,725,3,360,180,0,724, + 720,1,0,0,0,724,725,1,0,0,0,725,728,1,0,0,0,726,728,5,197,0,0,727, + 717,1,0,0,0,727,726,1,0,0,0,728,33,1,0,0,0,729,730,5,4,0,0,730,731, + 5,188,0,0,731,732,3,186,93,0,732,733,5,31,0,0,733,734,3,192,96,0, + 734,735,3,220,110,0,735,35,1,0,0,0,736,737,5,4,0,0,737,738,5,188, + 0,0,738,739,3,186,93,0,739,741,5,58,0,0,740,742,5,32,0,0,741,740, + 1,0,0,0,741,742,1,0,0,0,742,743,1,0,0,0,743,744,3,192,96,0,744,37, + 1,0,0,0,745,746,5,4,0,0,746,747,5,188,0,0,747,748,3,186,93,0,748, + 749,5,176,0,0,749,750,5,142,0,0,750,751,7,1,0,0,751,752,3,358,179, + 0,752,39,1,0,0,0,753,754,5,4,0,0,754,755,5,188,0,0,755,761,3,186, + 93,0,756,762,5,158,0,0,757,759,5,1,0,0,758,760,3,172,86,0,759,758, + 1,0,0,0,759,760,1,0,0,0,760,762,1,0,0,0,761,756,1,0,0,0,761,757, + 1,0,0,0,762,763,1,0,0,0,763,764,5,33,0,0,764,765,5,265,0,0,765,770, + 3,220,110,0,766,767,5,263,0,0,767,769,3,220,110,0,768,766,1,0,0, + 0,769,772,1,0,0,0,770,771,1,0,0,0,770,768,1,0,0,0,771,773,1,0,0, + 0,772,770,1,0,0,0,773,774,5,266,0,0,774,41,1,0,0,0,775,776,5,4,0, + 0,776,777,5,188,0,0,777,778,3,186,93,0,778,779,5,1,0,0,779,781,5, + 32,0,0,780,782,3,172,86,0,781,780,1,0,0,0,781,782,1,0,0,0,782,783, + 1,0,0,0,783,784,3,222,111,0,784,43,1,0,0,0,785,786,5,4,0,0,786,787, + 5,188,0,0,787,788,3,186,93,0,788,790,5,4,0,0,789,791,5,32,0,0,790, + 789,1,0,0,0,790,791,1,0,0,0,791,792,1,0,0,0,792,801,3,192,96,0,793, + 797,5,176,0,0,794,798,3,226,113,0,795,796,5,34,0,0,796,798,3,314, + 157,0,797,794,1,0,0,0,797,795,1,0,0,0,798,802,1,0,0,0,799,800,5, + 58,0,0,800,802,5,51,0,0,801,793,1,0,0,0,801,799,1,0,0,0,802,45,1, + 0,0,0,803,804,5,4,0,0,804,805,5,188,0,0,805,806,3,186,93,0,806,808, + 5,1,0,0,807,809,3,172,86,0,808,807,1,0,0,0,808,809,1,0,0,0,809,822, + 1,0,0,0,810,811,5,145,0,0,811,814,3,304,152,0,812,813,5,24,0,0,813, + 815,3,314,157,0,814,812,1,0,0,0,814,815,1,0,0,0,815,817,1,0,0,0, + 816,818,3,240,120,0,817,816,1,0,0,0,817,818,1,0,0,0,818,823,1,0, + 0,0,819,820,5,154,0,0,820,821,5,145,0,0,821,823,3,238,119,0,822, + 810,1,0,0,0,822,819,1,0,0,0,823,47,1,0,0,0,824,825,5,4,0,0,825,826, + 5,188,0,0,826,829,3,186,93,0,827,828,5,145,0,0,828,830,3,304,152, + 0,829,827,1,0,0,0,829,830,1,0,0,0,830,831,1,0,0,0,831,843,5,176, + 0,0,832,833,5,72,0,0,833,844,3,230,115,0,834,835,5,168,0,0,835,836, + 5,79,0,0,836,844,3,254,127,0,837,838,5,24,0,0,838,844,3,314,157, + 0,839,840,5,25,0,0,840,844,3,248,124,0,841,842,5,175,0,0,842,844, + 3,248,124,0,843,832,1,0,0,0,843,834,1,0,0,0,843,837,1,0,0,0,843, + 839,1,0,0,0,843,841,1,0,0,0,844,49,1,0,0,0,845,846,5,4,0,0,846,847, + 5,188,0,0,847,848,3,186,93,0,848,849,5,155,0,0,849,850,5,146,0,0, + 850,51,1,0,0,0,851,852,5,4,0,0,852,853,5,188,0,0,853,854,3,186,93, + 0,854,856,5,58,0,0,855,857,3,170,85,0,856,855,1,0,0,0,856,857,1, + 0,0,0,857,866,1,0,0,0,858,859,5,145,0,0,859,861,3,304,152,0,860, + 862,5,22,0,0,861,860,1,0,0,0,861,862,1,0,0,0,862,867,1,0,0,0,863, + 864,5,154,0,0,864,865,5,145,0,0,865,867,3,238,119,0,866,858,1,0, + 0,0,866,863,1,0,0,0,867,53,1,0,0,0,868,869,5,4,0,0,869,870,5,212, + 0,0,870,872,3,188,94,0,871,873,3,202,101,0,872,871,1,0,0,0,872,873, + 1,0,0,0,873,874,1,0,0,0,874,875,5,9,0,0,875,876,3,204,102,0,876, + 55,1,0,0,0,877,878,5,4,0,0,878,879,5,212,0,0,879,880,3,188,94,0, + 880,881,5,156,0,0,881,882,5,193,0,0,882,883,3,188,94,0,883,57,1, + 0,0,0,884,885,5,4,0,0,885,886,5,212,0,0,886,887,3,188,94,0,887,888, + 5,176,0,0,888,889,5,142,0,0,889,890,7,1,0,0,890,891,3,354,177,0, + 891,59,1,0,0,0,892,893,5,4,0,0,893,894,5,188,0,0,894,895,3,186,93, + 0,895,896,5,156,0,0,896,897,5,193,0,0,897,898,3,186,93,0,898,61, + 1,0,0,0,899,900,5,4,0,0,900,901,5,212,0,0,901,902,3,188,94,0,902, + 903,7,2,0,0,903,904,5,25,0,0,904,905,3,248,124,0,905,63,1,0,0,0, + 906,908,5,196,0,0,907,909,5,188,0,0,908,907,1,0,0,0,908,909,1,0, + 0,0,909,911,1,0,0,0,910,912,3,170,85,0,911,910,1,0,0,0,911,912,1, + 0,0,0,912,913,1,0,0,0,913,914,3,186,93,0,914,65,1,0,0,0,915,917, + 5,56,0,0,916,918,5,46,0,0,917,916,1,0,0,0,917,918,1,0,0,0,918,920, + 1,0,0,0,919,921,7,3,0,0,920,919,1,0,0,0,920,921,1,0,0,0,921,922, + 1,0,0,0,922,923,3,354,177,0,923,67,1,0,0,0,924,927,3,70,35,0,925, + 927,3,72,36,0,926,924,1,0,0,0,926,925,1,0,0,0,927,69,1,0,0,0,928, + 929,5,36,0,0,929,930,5,182,0,0,930,932,3,186,93,0,931,933,3,292, + 146,0,932,931,1,0,0,0,932,933,1,0,0,0,933,946,1,0,0,0,934,935,5, + 190,0,0,935,936,5,185,0,0,936,937,5,265,0,0,937,938,3,360,180,0, + 938,944,5,266,0,0,939,940,5,157,0,0,940,941,5,265,0,0,941,942,3, + 360,180,0,942,943,5,266,0,0,943,945,1,0,0,0,944,939,1,0,0,0,944, + 945,1,0,0,0,945,947,1,0,0,0,946,934,1,0,0,0,946,947,1,0,0,0,947, + 71,1,0,0,0,948,949,5,36,0,0,949,950,5,96,0,0,950,951,5,182,0,0,951, + 957,3,186,93,0,952,953,5,145,0,0,953,954,5,265,0,0,954,955,3,304, + 152,0,955,956,5,266,0,0,956,958,1,0,0,0,957,952,1,0,0,0,957,958, + 1,0,0,0,958,73,1,0,0,0,959,966,3,86,43,0,960,966,3,84,42,0,961,966, + 3,82,41,0,962,966,3,78,39,0,963,966,3,80,40,0,964,966,3,76,38,0, + 965,959,1,0,0,0,965,960,1,0,0,0,965,961,1,0,0,0,965,962,1,0,0,0, + 965,963,1,0,0,0,965,964,1,0,0,0,966,75,1,0,0,0,967,968,5,58,0,0, + 968,970,7,0,0,0,969,971,3,170,85,0,970,969,1,0,0,0,970,971,1,0,0, + 0,971,972,1,0,0,0,972,974,3,184,92,0,973,975,7,4,0,0,974,973,1,0, + 0,0,974,975,1,0,0,0,975,77,1,0,0,0,976,977,5,58,0,0,977,979,5,212, + 0,0,978,980,3,170,85,0,979,978,1,0,0,0,979,980,1,0,0,0,980,981,1, + 0,0,0,981,982,3,188,94,0,982,79,1,0,0,0,983,984,5,58,0,0,984,986, + 5,188,0,0,985,987,3,170,85,0,986,985,1,0,0,0,986,987,1,0,0,0,987, + 988,1,0,0,0,988,990,3,186,93,0,989,991,5,22,0,0,990,989,1,0,0,0, + 990,991,1,0,0,0,991,81,1,0,0,0,992,994,5,58,0,0,993,995,5,96,0,0, + 994,993,1,0,0,0,994,995,1,0,0,0,995,996,1,0,0,0,996,997,5,182,0, + 0,997,1000,3,186,93,0,998,999,5,145,0,0,999,1001,3,304,152,0,1000, + 998,1,0,0,0,1000,1001,1,0,0,0,1001,83,1,0,0,0,1002,1004,5,58,0,0, + 1003,1005,5,12,0,0,1004,1003,1,0,0,0,1004,1005,1,0,0,0,1005,1006, + 1,0,0,0,1006,1008,5,84,0,0,1007,1009,3,170,85,0,1008,1007,1,0,0, + 0,1008,1009,1,0,0,0,1009,1010,1,0,0,0,1010,1023,3,190,95,0,1011, + 1020,5,265,0,0,1012,1017,3,328,164,0,1013,1014,5,263,0,0,1014,1016, + 3,328,164,0,1015,1013,1,0,0,0,1016,1019,1,0,0,0,1017,1015,1,0,0, + 0,1017,1018,1,0,0,0,1018,1021,1,0,0,0,1019,1017,1,0,0,0,1020,1012, + 1,0,0,0,1020,1021,1,0,0,0,1021,1022,1,0,0,0,1022,1024,5,266,0,0, + 1023,1011,1,0,0,0,1023,1024,1,0,0,0,1024,85,1,0,0,0,1025,1026,5, + 58,0,0,1026,1027,5,166,0,0,1027,1028,3,358,179,0,1028,87,1,0,0,0, + 1029,1032,3,90,45,0,1030,1032,3,92,46,0,1031,1029,1,0,0,0,1031,1030, + 1,0,0,0,1032,89,1,0,0,0,1033,1034,5,86,0,0,1034,1035,5,166,0,0,1035, + 1036,3,358,179,0,1036,1037,5,193,0,0,1037,1038,5,87,0,0,1038,1039, + 3,358,179,0,1039,91,1,0,0,0,1040,1041,5,86,0,0,1041,1042,3,350,175, + 0,1042,1043,5,136,0,0,1043,1045,3,352,176,0,1044,1046,3,354,177, + 0,1045,1044,1,0,0,0,1045,1046,1,0,0,0,1046,1047,1,0,0,0,1047,1048, + 5,193,0,0,1048,1049,3,356,178,0,1049,93,1,0,0,0,1050,1053,3,96,48, + 0,1051,1053,3,98,49,0,1052,1050,1,0,0,0,1052,1051,1,0,0,0,1053,95, + 1,0,0,0,1054,1055,5,161,0,0,1055,1056,5,166,0,0,1056,1057,3,358, + 179,0,1057,1058,5,82,0,0,1058,1059,5,87,0,0,1059,1060,3,358,179, + 0,1060,97,1,0,0,0,1061,1065,5,161,0,0,1062,1063,5,86,0,0,1063,1064, + 5,137,0,0,1064,1066,5,78,0,0,1065,1062,1,0,0,0,1065,1066,1,0,0,0, + 1066,1067,1,0,0,0,1067,1068,3,350,175,0,1068,1069,5,136,0,0,1069, + 1071,3,352,176,0,1070,1072,3,354,177,0,1071,1070,1,0,0,0,1071,1072, + 1,0,0,0,1072,1073,1,0,0,0,1073,1079,5,82,0,0,1074,1080,3,356,178, + 0,1075,1077,5,166,0,0,1076,1075,1,0,0,0,1076,1077,1,0,0,0,1077,1078, + 1,0,0,0,1078,1080,3,358,179,0,1079,1074,1,0,0,0,1079,1076,1,0,0, + 0,1080,99,1,0,0,0,1081,1083,3,206,103,0,1082,1081,1,0,0,0,1082,1083, + 1,0,0,0,1083,1084,1,0,0,0,1084,1085,5,99,0,0,1085,1087,7,5,0,0,1086, + 1088,5,188,0,0,1087,1086,1,0,0,0,1087,1088,1,0,0,0,1088,1089,1,0, + 0,0,1089,1091,3,186,93,0,1090,1092,3,292,146,0,1091,1090,1,0,0,0, + 1091,1092,1,0,0,0,1092,1105,1,0,0,0,1093,1094,5,145,0,0,1094,1095, + 5,265,0,0,1095,1100,3,304,152,0,1096,1097,5,263,0,0,1097,1099,3, + 304,152,0,1098,1096,1,0,0,0,1099,1102,1,0,0,0,1100,1098,1,0,0,0, + 1100,1101,1,0,0,0,1101,1103,1,0,0,0,1102,1100,1,0,0,0,1103,1104, + 5,266,0,0,1104,1106,1,0,0,0,1105,1093,1,0,0,0,1105,1106,1,0,0,0, + 1106,1107,1,0,0,0,1107,1108,3,204,102,0,1108,101,1,0,0,0,1109,1112, + 3,104,52,0,1110,1112,3,106,53,0,1111,1109,1,0,0,0,1111,1110,1,0, + 0,0,1112,103,1,0,0,0,1113,1115,5,50,0,0,1114,1116,5,82,0,0,1115, + 1114,1,0,0,0,1115,1116,1,0,0,0,1116,1117,1,0,0,0,1117,1120,3,186, + 93,0,1118,1119,5,215,0,0,1119,1121,3,306,153,0,1120,1118,1,0,0,0, + 1120,1121,1,0,0,0,1121,105,1,0,0,0,1122,1123,5,50,0,0,1123,1128, + 3,186,93,0,1124,1126,5,9,0,0,1125,1124,1,0,0,0,1125,1126,1,0,0,0, + 1126,1127,1,0,0,0,1127,1129,3,358,179,0,1128,1125,1,0,0,0,1128,1129, + 1,0,0,0,1129,1130,1,0,0,0,1130,1139,5,82,0,0,1131,1136,3,280,140, + 0,1132,1133,5,263,0,0,1133,1135,3,280,140,0,1134,1132,1,0,0,0,1135, + 1138,1,0,0,0,1136,1134,1,0,0,0,1136,1137,1,0,0,0,1137,1140,1,0,0, + 0,1138,1136,1,0,0,0,1139,1131,1,0,0,0,1139,1140,1,0,0,0,1140,1143, + 1,0,0,0,1141,1142,5,215,0,0,1142,1144,3,306,153,0,1143,1141,1,0, + 0,0,1143,1144,1,0,0,0,1144,107,1,0,0,0,1145,1146,5,54,0,0,1146,1147, + 3,186,93,0,1147,1148,5,176,0,0,1148,1158,3,198,99,0,1149,1150,5, + 82,0,0,1150,1155,3,280,140,0,1151,1152,5,263,0,0,1152,1154,3,280, + 140,0,1153,1151,1,0,0,0,1154,1157,1,0,0,0,1155,1153,1,0,0,0,1155, + 1156,1,0,0,0,1156,1159,1,0,0,0,1157,1155,1,0,0,0,1158,1149,1,0,0, + 0,1158,1159,1,0,0,0,1159,1162,1,0,0,0,1160,1161,5,215,0,0,1161,1163, + 3,306,153,0,1162,1160,1,0,0,0,1162,1163,1,0,0,0,1163,109,1,0,0,0, + 1164,1165,5,207,0,0,1165,1167,5,103,0,0,1166,1168,5,188,0,0,1167, + 1166,1,0,0,0,1167,1168,1,0,0,0,1168,1169,1,0,0,0,1169,1171,3,186, + 93,0,1170,1172,3,292,146,0,1171,1170,1,0,0,0,1171,1172,1,0,0,0,1172, + 1173,1,0,0,0,1173,1174,3,204,102,0,1174,111,1,0,0,0,1175,1188,3, + 132,66,0,1176,1188,3,134,67,0,1177,1188,3,136,68,0,1178,1188,3,130, + 65,0,1179,1188,3,128,64,0,1180,1188,3,126,63,0,1181,1188,3,124,62, + 0,1182,1188,3,122,61,0,1183,1188,3,120,60,0,1184,1188,3,118,59,0, + 1185,1188,3,116,58,0,1186,1188,3,114,57,0,1187,1175,1,0,0,0,1187, + 1176,1,0,0,0,1187,1177,1,0,0,0,1187,1178,1,0,0,0,1187,1179,1,0,0, + 0,1187,1180,1,0,0,0,1187,1181,1,0,0,0,1187,1182,1,0,0,0,1187,1183, + 1,0,0,0,1187,1184,1,0,0,0,1187,1185,1,0,0,0,1187,1186,1,0,0,0,1188, + 113,1,0,0,0,1189,1190,5,179,0,0,1190,1202,7,6,0,0,1191,1193,5,115, + 0,0,1192,1191,1,0,0,0,1192,1193,1,0,0,0,1193,1194,1,0,0,0,1194,1199, + 3,314,157,0,1195,1196,5,271,0,0,1196,1198,3,314,157,0,1197,1195, + 1,0,0,0,1198,1201,1,0,0,0,1199,1197,1,0,0,0,1199,1200,1,0,0,0,1200, + 1203,1,0,0,0,1201,1199,1,0,0,0,1202,1192,1,0,0,0,1202,1203,1,0,0, + 0,1203,115,1,0,0,0,1204,1205,5,179,0,0,1205,1208,5,189,0,0,1206, + 1207,5,94,0,0,1207,1209,3,186,93,0,1208,1206,1,0,0,0,1208,1209,1, + 0,0,0,1209,1221,1,0,0,0,1210,1212,5,115,0,0,1211,1210,1,0,0,0,1211, + 1212,1,0,0,0,1212,1213,1,0,0,0,1213,1218,3,314,157,0,1214,1215,5, + 271,0,0,1215,1217,3,314,157,0,1216,1214,1,0,0,0,1217,1220,1,0,0, + 0,1218,1216,1,0,0,0,1218,1219,1,0,0,0,1219,1222,1,0,0,0,1220,1218, + 1,0,0,0,1221,1211,1,0,0,0,1221,1222,1,0,0,0,1222,117,1,0,0,0,1223, + 1225,5,179,0,0,1224,1226,7,7,0,0,1225,1224,1,0,0,0,1225,1226,1,0, + 0,0,1226,1227,1,0,0,0,1227,1230,5,85,0,0,1228,1229,5,94,0,0,1229, + 1231,3,184,92,0,1230,1228,1,0,0,0,1230,1231,1,0,0,0,1231,1243,1, + 0,0,0,1232,1234,5,115,0,0,1233,1232,1,0,0,0,1233,1234,1,0,0,0,1234, + 1235,1,0,0,0,1235,1240,3,314,157,0,1236,1237,5,271,0,0,1237,1239, + 3,314,157,0,1238,1236,1,0,0,0,1239,1242,1,0,0,0,1240,1238,1,0,0, + 0,1240,1241,1,0,0,0,1241,1244,1,0,0,0,1242,1240,1,0,0,0,1243,1233, + 1,0,0,0,1243,1244,1,0,0,0,1244,119,1,0,0,0,1245,1246,5,179,0,0,1246, + 1247,5,37,0,0,1247,1248,5,188,0,0,1248,1249,3,186,93,0,1249,121, + 1,0,0,0,1250,1251,5,179,0,0,1251,1252,5,37,0,0,1252,1253,5,212,0, + 0,1253,1254,3,188,94,0,1254,123,1,0,0,0,1255,1256,5,179,0,0,1256, + 1257,5,188,0,0,1257,1258,5,182,0,0,1258,1259,3,186,93,0,1259,125, + 1,0,0,0,1260,1261,5,179,0,0,1261,1262,5,32,0,0,1262,1263,5,182,0, + 0,1263,1264,3,186,93,0,1264,127,1,0,0,0,1265,1267,5,179,0,0,1266, + 1268,5,154,0,0,1267,1266,1,0,0,0,1267,1268,1,0,0,0,1268,1269,1,0, + 0,0,1269,1270,5,146,0,0,1270,1271,3,186,93,0,1271,129,1,0,0,0,1272, + 1273,5,179,0,0,1273,1274,5,73,0,0,1274,1275,5,94,0,0,1275,1285,3, + 186,93,0,1276,1277,5,145,0,0,1277,1278,5,265,0,0,1278,1281,3,304, + 152,0,1279,1280,5,263,0,0,1280,1282,3,304,152,0,1281,1279,1,0,0, + 0,1281,1282,1,0,0,0,1282,1283,1,0,0,0,1283,1284,5,266,0,0,1284,1286, + 1,0,0,0,1285,1276,1,0,0,0,1285,1286,1,0,0,0,1286,131,1,0,0,0,1287, + 1289,5,179,0,0,1288,1290,5,39,0,0,1289,1288,1,0,0,0,1289,1290,1, + 0,0,0,1290,1291,1,0,0,0,1291,1292,5,167,0,0,1292,133,1,0,0,0,1293, + 1294,5,179,0,0,1294,1295,5,166,0,0,1295,1296,5,86,0,0,1296,1297, + 5,87,0,0,1297,1298,3,358,179,0,1298,135,1,0,0,0,1299,1314,3,138, + 69,0,1300,1314,3,140,70,0,1301,1314,3,142,71,0,1302,1303,5,179,0, + 0,1303,1304,5,86,0,0,1304,1305,7,8,0,0,1305,1311,3,358,179,0,1306, + 1307,5,136,0,0,1307,1309,7,9,0,0,1308,1310,3,354,177,0,1309,1308, + 1,0,0,0,1309,1310,1,0,0,0,1310,1312,1,0,0,0,1311,1306,1,0,0,0,1311, + 1312,1,0,0,0,1312,1314,1,0,0,0,1313,1299,1,0,0,0,1313,1300,1,0,0, + 0,1313,1301,1,0,0,0,1313,1302,1,0,0,0,1314,137,1,0,0,0,1315,1316, + 5,179,0,0,1316,1317,5,86,0,0,1317,1318,7,8,0,0,1318,1324,3,358,179, + 0,1319,1320,5,136,0,0,1320,1322,5,46,0,0,1321,1323,3,184,92,0,1322, + 1321,1,0,0,0,1322,1323,1,0,0,0,1323,1325,1,0,0,0,1324,1319,1,0,0, + 0,1324,1325,1,0,0,0,1325,139,1,0,0,0,1326,1327,5,179,0,0,1327,1328, + 5,86,0,0,1328,1329,7,8,0,0,1329,1335,3,358,179,0,1330,1331,5,136, + 0,0,1331,1333,5,188,0,0,1332,1334,3,186,93,0,1333,1332,1,0,0,0,1333, + 1334,1,0,0,0,1334,1336,1,0,0,0,1335,1330,1,0,0,0,1335,1336,1,0,0, + 0,1336,141,1,0,0,0,1337,1338,5,179,0,0,1338,1339,5,86,0,0,1339,1340, + 7,8,0,0,1340,1346,3,358,179,0,1341,1342,5,136,0,0,1342,1344,5,32, + 0,0,1343,1345,3,192,96,0,1344,1343,1,0,0,0,1344,1345,1,0,0,0,1345, + 1347,1,0,0,0,1346,1341,1,0,0,0,1346,1347,1,0,0,0,1347,143,1,0,0, + 0,1348,1352,3,146,73,0,1349,1352,3,148,74,0,1350,1352,3,150,75,0, + 1351,1348,1,0,0,0,1351,1349,1,0,0,0,1351,1350,1,0,0,0,1352,145,1, + 0,0,0,1353,1354,5,34,0,0,1354,1355,5,136,0,0,1355,1356,5,46,0,0, + 1356,1357,3,184,92,0,1357,1360,5,108,0,0,1358,1361,3,314,157,0,1359, + 1361,5,133,0,0,1360,1358,1,0,0,0,1360,1359,1,0,0,0,1361,147,1,0, + 0,0,1362,1363,5,34,0,0,1363,1364,5,136,0,0,1364,1365,5,188,0,0,1365, + 1366,3,186,93,0,1366,1369,5,108,0,0,1367,1370,3,314,157,0,1368,1370, + 5,133,0,0,1369,1367,1,0,0,0,1369,1368,1,0,0,0,1370,149,1,0,0,0,1371, + 1372,5,34,0,0,1372,1373,5,136,0,0,1373,1374,5,32,0,0,1374,1375,3, + 192,96,0,1375,1378,5,108,0,0,1376,1379,3,314,157,0,1377,1379,5,133, + 0,0,1378,1376,1,0,0,0,1378,1377,1,0,0,0,1379,151,1,0,0,0,1380,1381, + 5,67,0,0,1381,1382,3,4,2,0,1382,153,1,0,0,0,1383,1389,5,176,0,0, + 1384,1390,5,2,0,0,1385,1386,3,358,179,0,1386,1387,5,249,0,0,1387, + 1388,3,304,152,0,1388,1390,1,0,0,0,1389,1384,1,0,0,0,1389,1385,1, + 0,0,0,1389,1390,1,0,0,0,1390,155,1,0,0,0,1391,1392,5,264,0,0,1392, + 1393,5,180,0,0,1393,1403,5,265,0,0,1394,1396,3,314,157,0,1395,1394, + 1,0,0,0,1395,1396,1,0,0,0,1396,1404,1,0,0,0,1397,1400,3,314,157, + 0,1398,1399,5,263,0,0,1399,1401,3,304,152,0,1400,1398,1,0,0,0,1400, + 1401,1,0,0,0,1401,1404,1,0,0,0,1402,1404,3,304,152,0,1403,1395,1, + 0,0,0,1403,1397,1,0,0,0,1403,1402,1,0,0,0,1404,1405,1,0,0,0,1405, + 1406,5,266,0,0,1406,157,1,0,0,0,1407,1408,5,107,0,0,1408,1409,5, + 121,0,0,1409,1410,3,186,93,0,1410,159,1,0,0,0,1411,1412,5,118,0, + 0,1412,1413,5,45,0,0,1413,1414,5,98,0,0,1414,1416,5,274,0,0,1415, + 1417,5,144,0,0,1416,1415,1,0,0,0,1416,1417,1,0,0,0,1417,1418,1,0, + 0,0,1418,1419,5,103,0,0,1419,1420,5,188,0,0,1420,1430,3,186,93,0, + 1421,1422,5,145,0,0,1422,1423,5,265,0,0,1423,1426,3,304,152,0,1424, + 1425,5,263,0,0,1425,1427,3,304,152,0,1426,1424,1,0,0,0,1426,1427, + 1,0,0,0,1427,1428,1,0,0,0,1428,1429,5,266,0,0,1429,1431,1,0,0,0, + 1430,1421,1,0,0,0,1430,1431,1,0,0,0,1431,161,1,0,0,0,1432,1436,3, + 164,82,0,1433,1436,3,166,83,0,1434,1436,3,168,84,0,1435,1432,1,0, + 0,0,1435,1433,1,0,0,0,1435,1434,1,0,0,0,1436,163,1,0,0,0,1437,1438, + 5,162,0,0,1438,1451,3,186,93,0,1439,1440,5,145,0,0,1440,1441,5,265, + 0,0,1441,1446,3,304,152,0,1442,1443,5,263,0,0,1443,1445,3,304,152, + 0,1444,1442,1,0,0,0,1445,1448,1,0,0,0,1446,1447,1,0,0,0,1446,1444, + 1,0,0,0,1447,1449,1,0,0,0,1448,1446,1,0,0,0,1449,1450,5,266,0,0, + 1450,1452,1,0,0,0,1451,1439,1,0,0,0,1451,1452,1,0,0,0,1452,165,1, + 0,0,0,1453,1454,5,162,0,0,1454,1455,5,13,0,0,1455,167,1,0,0,0,1456, + 1457,5,162,0,0,1457,1458,5,85,0,0,1458,1459,3,190,95,0,1459,169, + 1,0,0,0,1460,1461,5,93,0,0,1461,1462,5,66,0,0,1462,171,1,0,0,0,1463, + 1464,5,93,0,0,1464,1465,5,132,0,0,1465,1466,5,66,0,0,1466,173,1, + 0,0,0,1467,1468,3,354,177,0,1468,175,1,0,0,0,1469,1470,3,354,177, + 0,1470,177,1,0,0,0,1471,1472,3,354,177,0,1472,179,1,0,0,0,1473,1474, + 3,354,177,0,1474,181,1,0,0,0,1475,1476,3,354,177,0,1476,183,1,0, + 0,0,1477,1478,3,354,177,0,1478,185,1,0,0,0,1479,1484,3,358,179,0, + 1480,1481,5,261,0,0,1481,1483,3,358,179,0,1482,1480,1,0,0,0,1483, + 1486,1,0,0,0,1484,1482,1,0,0,0,1484,1485,1,0,0,0,1485,187,1,0,0, + 0,1486,1484,1,0,0,0,1487,1492,3,358,179,0,1488,1489,5,261,0,0,1489, + 1491,3,358,179,0,1490,1488,1,0,0,0,1491,1494,1,0,0,0,1492,1490,1, + 0,0,0,1492,1493,1,0,0,0,1493,189,1,0,0,0,1494,1492,1,0,0,0,1495, + 1498,3,362,181,0,1496,1498,3,354,177,0,1497,1495,1,0,0,0,1497,1496, + 1,0,0,0,1498,191,1,0,0,0,1499,1502,3,354,177,0,1500,1502,4,96,0, + 0,1501,1499,1,0,0,0,1501,1500,1,0,0,0,1502,193,1,0,0,0,1503,1506, + 3,186,93,0,1504,1506,3,188,94,0,1505,1503,1,0,0,0,1505,1504,1,0, + 0,0,1506,195,1,0,0,0,1507,1508,5,21,0,0,1508,1509,5,26,0,0,1509, + 1511,3,292,146,0,1510,1507,1,0,0,0,1510,1511,1,0,0,0,1511,1514,1, + 0,0,0,1512,1513,5,34,0,0,1513,1515,3,314,157,0,1514,1512,1,0,0,0, + 1514,1515,1,0,0,0,1515,1519,1,0,0,0,1516,1517,5,168,0,0,1517,1518, + 5,79,0,0,1518,1520,3,254,127,0,1519,1516,1,0,0,0,1519,1520,1,0,0, + 0,1520,1524,1,0,0,0,1521,1522,5,216,0,0,1522,1523,5,175,0,0,1523, + 1525,3,248,124,0,1524,1521,1,0,0,0,1524,1525,1,0,0,0,1525,1529,1, + 0,0,0,1526,1527,5,23,0,0,1527,1528,5,9,0,0,1528,1530,3,230,115,0, + 1529,1526,1,0,0,0,1529,1530,1,0,0,0,1530,1533,1,0,0,0,1531,1532, + 5,24,0,0,1532,1534,3,314,157,0,1533,1531,1,0,0,0,1533,1534,1,0,0, + 0,1534,1545,1,0,0,0,1535,1536,5,30,0,0,1536,1537,5,94,0,0,1537,1542, + 3,354,177,0,1538,1539,5,216,0,0,1539,1540,5,151,0,0,1540,1541,5, + 249,0,0,1541,1543,5,277,0,0,1542,1538,1,0,0,0,1542,1543,1,0,0,0, + 1543,1546,1,0,0,0,1544,1546,5,197,0,0,1545,1535,1,0,0,0,1545,1544, + 1,0,0,0,1545,1546,1,0,0,0,1546,1549,1,0,0,0,1547,1548,5,25,0,0,1548, + 1550,3,248,124,0,1549,1547,1,0,0,0,1549,1550,1,0,0,0,1550,197,1, + 0,0,0,1551,1556,3,200,100,0,1552,1553,5,263,0,0,1553,1555,3,200, + 100,0,1554,1552,1,0,0,0,1555,1558,1,0,0,0,1556,1554,1,0,0,0,1556, + 1557,1,0,0,0,1557,199,1,0,0,0,1558,1556,1,0,0,0,1559,1560,3,354, + 177,0,1560,1561,5,249,0,0,1561,1562,3,304,152,0,1562,201,1,0,0,0, + 1563,1564,5,265,0,0,1564,1567,3,182,91,0,1565,1566,5,34,0,0,1566, + 1568,3,314,157,0,1567,1565,1,0,0,0,1567,1568,1,0,0,0,1568,1577,1, + 0,0,0,1569,1570,5,263,0,0,1570,1573,3,182,91,0,1571,1572,5,34,0, + 0,1572,1574,3,314,157,0,1573,1571,1,0,0,0,1573,1574,1,0,0,0,1574, + 1576,1,0,0,0,1575,1569,1,0,0,0,1576,1579,1,0,0,0,1577,1575,1,0,0, + 0,1577,1578,1,0,0,0,1578,1580,1,0,0,0,1579,1577,1,0,0,0,1580,1581, + 5,266,0,0,1581,203,1,0,0,0,1582,1584,3,206,103,0,1583,1582,1,0,0, + 0,1583,1584,1,0,0,0,1584,1585,1,0,0,0,1585,1586,3,258,129,0,1586, + 205,1,0,0,0,1587,1588,5,216,0,0,1588,1593,3,274,137,0,1589,1590, + 5,263,0,0,1590,1592,3,274,137,0,1591,1589,1,0,0,0,1592,1595,1,0, + 0,0,1593,1591,1,0,0,0,1593,1594,1,0,0,0,1594,207,1,0,0,0,1595,1593, + 1,0,0,0,1596,1597,5,150,0,0,1597,1598,5,110,0,0,1598,1600,3,292, + 146,0,1599,1601,5,53,0,0,1600,1599,1,0,0,0,1600,1601,1,0,0,0,1601, + 1605,1,0,0,0,1602,1606,5,225,0,0,1603,1604,5,263,0,0,1604,1606,5, + 225,0,0,1605,1602,1,0,0,0,1605,1603,1,0,0,0,1605,1606,1,0,0,0,1606, + 1610,1,0,0,0,1607,1611,5,226,0,0,1608,1609,5,263,0,0,1609,1611,5, + 226,0,0,1610,1607,1,0,0,0,1610,1608,1,0,0,0,1610,1611,1,0,0,0,1611, + 1624,1,0,0,0,1612,1613,5,263,0,0,1613,1616,3,210,105,0,1614,1616, + 3,210,105,0,1615,1612,1,0,0,0,1615,1614,1,0,0,0,1616,1621,1,0,0, + 0,1617,1618,5,263,0,0,1618,1620,3,210,105,0,1619,1617,1,0,0,0,1620, + 1623,1,0,0,0,1621,1622,1,0,0,0,1621,1619,1,0,0,0,1622,1625,1,0,0, + 0,1623,1621,1,0,0,0,1624,1615,1,0,0,0,1624,1625,1,0,0,0,1625,209, + 1,0,0,0,1626,1627,5,81,0,0,1627,1628,5,110,0,0,1628,1629,3,292,146, + 0,1629,1630,5,224,0,0,1630,1631,3,186,93,0,1631,1633,3,292,146,0, + 1632,1634,5,53,0,0,1633,1632,1,0,0,0,1633,1634,1,0,0,0,1634,1636, + 1,0,0,0,1635,1637,5,225,0,0,1636,1635,1,0,0,0,1636,1637,1,0,0,0, + 1637,1639,1,0,0,0,1638,1640,5,226,0,0,1639,1638,1,0,0,0,1639,1640, + 1,0,0,0,1640,211,1,0,0,0,1641,1642,3,192,96,0,1642,1645,3,328,164, + 0,1643,1644,5,34,0,0,1644,1646,3,314,157,0,1645,1643,1,0,0,0,1645, + 1646,1,0,0,0,1646,213,1,0,0,0,1647,1648,3,182,91,0,1648,1651,3,328, + 164,0,1649,1650,5,34,0,0,1650,1652,3,314,157,0,1651,1649,1,0,0,0, + 1651,1652,1,0,0,0,1652,215,1,0,0,0,1653,1654,3,218,109,0,1654,217, + 1,0,0,0,1655,1656,3,182,91,0,1656,1664,3,328,164,0,1657,1661,3,224, + 112,0,1658,1660,3,224,112,0,1659,1658,1,0,0,0,1660,1663,1,0,0,0, + 1661,1662,1,0,0,0,1661,1659,1,0,0,0,1662,1665,1,0,0,0,1663,1661, + 1,0,0,0,1664,1657,1,0,0,0,1664,1665,1,0,0,0,1665,1668,1,0,0,0,1666, + 1667,5,34,0,0,1667,1669,3,314,157,0,1668,1666,1,0,0,0,1668,1669, + 1,0,0,0,1669,1672,1,0,0,0,1670,1671,5,150,0,0,1671,1673,5,110,0, + 0,1672,1670,1,0,0,0,1672,1673,1,0,0,0,1673,219,1,0,0,0,1674,1682, + 3,212,106,0,1675,1679,3,224,112,0,1676,1678,3,224,112,0,1677,1676, + 1,0,0,0,1678,1681,1,0,0,0,1679,1680,1,0,0,0,1679,1677,1,0,0,0,1680, + 1683,1,0,0,0,1681,1679,1,0,0,0,1682,1675,1,0,0,0,1682,1683,1,0,0, + 0,1683,221,1,0,0,0,1684,1685,3,182,91,0,1685,1688,3,328,164,0,1686, + 1687,5,34,0,0,1687,1689,3,314,157,0,1688,1686,1,0,0,0,1688,1689, + 1,0,0,0,1689,1697,1,0,0,0,1690,1694,3,224,112,0,1691,1693,3,224, + 112,0,1692,1691,1,0,0,0,1693,1696,1,0,0,0,1694,1695,1,0,0,0,1694, + 1692,1,0,0,0,1695,1698,1,0,0,0,1696,1694,1,0,0,0,1697,1690,1,0,0, + 0,1697,1698,1,0,0,0,1698,223,1,0,0,0,1699,1701,5,132,0,0,1700,1699, + 1,0,0,0,1700,1701,1,0,0,0,1701,1702,1,0,0,0,1702,1705,5,133,0,0, + 1703,1705,3,226,113,0,1704,1700,1,0,0,0,1704,1703,1,0,0,0,1705,225, + 1,0,0,0,1706,1707,5,60,0,0,1707,1715,3,304,152,0,1708,1709,5,35, + 0,0,1709,1715,3,304,152,0,1710,1711,5,51,0,0,1711,1715,3,304,152, + 0,1712,1713,5,16,0,0,1713,1715,3,360,180,0,1714,1706,1,0,0,0,1714, + 1708,1,0,0,0,1714,1710,1,0,0,0,1714,1712,1,0,0,0,1715,227,1,0,0, + 0,1716,1717,7,10,0,0,1717,229,1,0,0,0,1718,1719,7,11,0,0,1719,231, + 1,0,0,0,1720,1725,3,234,117,0,1721,1722,5,263,0,0,1722,1724,3,234, + 117,0,1723,1721,1,0,0,0,1724,1727,1,0,0,0,1725,1726,1,0,0,0,1725, + 1723,1,0,0,0,1726,1730,1,0,0,0,1727,1725,1,0,0,0,1728,1729,5,263, + 0,0,1729,1731,3,236,118,0,1730,1728,1,0,0,0,1730,1731,1,0,0,0,1731, + 1734,1,0,0,0,1732,1734,3,236,118,0,1733,1720,1,0,0,0,1733,1732,1, + 0,0,0,1734,233,1,0,0,0,1735,1737,5,89,0,0,1736,1738,3,292,146,0, + 1737,1736,1,0,0,0,1737,1738,1,0,0,0,1738,1739,1,0,0,0,1739,1740, + 5,146,0,0,1740,1741,3,360,180,0,1741,235,1,0,0,0,1742,1744,5,154, + 0,0,1743,1745,3,292,146,0,1744,1743,1,0,0,0,1744,1745,1,0,0,0,1745, + 1746,1,0,0,0,1746,1747,5,265,0,0,1747,1748,5,145,0,0,1748,1754,3, + 238,119,0,1749,1750,5,263,0,0,1750,1751,5,145,0,0,1751,1753,3,238, + 119,0,1752,1749,1,0,0,0,1753,1756,1,0,0,0,1754,1755,1,0,0,0,1754, + 1752,1,0,0,0,1755,1757,1,0,0,0,1756,1754,1,0,0,0,1757,1758,5,266, + 0,0,1758,237,1,0,0,0,1759,1760,5,210,0,0,1760,1761,3,244,122,0,1761, + 1762,3,304,152,0,1762,1775,1,0,0,0,1763,1764,3,304,152,0,1764,1765, + 3,242,121,0,1765,1767,1,0,0,0,1766,1763,1,0,0,0,1766,1767,1,0,0, + 0,1767,1768,1,0,0,0,1768,1772,5,211,0,0,1769,1770,3,242,121,0,1770, + 1771,3,304,152,0,1771,1773,1,0,0,0,1772,1769,1,0,0,0,1772,1773,1, + 0,0,0,1773,1775,1,0,0,0,1774,1759,1,0,0,0,1774,1766,1,0,0,0,1775, + 239,1,0,0,0,1776,1777,5,30,0,0,1777,1778,5,94,0,0,1778,1783,3,358, + 179,0,1779,1780,5,216,0,0,1780,1781,5,151,0,0,1781,1782,5,249,0, + 0,1782,1784,3,360,180,0,1783,1779,1,0,0,0,1783,1784,1,0,0,0,1784, + 1787,1,0,0,0,1785,1787,5,197,0,0,1786,1776,1,0,0,0,1786,1785,1,0, + 0,0,1787,241,1,0,0,0,1788,1794,1,0,0,0,1789,1794,5,251,0,0,1790, + 1794,5,252,0,0,1791,1794,5,253,0,0,1792,1794,5,254,0,0,1793,1788, + 1,0,0,0,1793,1789,1,0,0,0,1793,1790,1,0,0,0,1793,1791,1,0,0,0,1793, + 1792,1,0,0,0,1794,243,1,0,0,0,1795,1804,5,249,0,0,1796,1804,5,250, + 0,0,1797,1804,5,115,0,0,1798,1804,5,164,0,0,1799,1804,5,163,0,0, + 1800,1804,5,15,0,0,1801,1804,5,94,0,0,1802,1804,3,242,121,0,1803, + 1795,1,0,0,0,1803,1796,1,0,0,0,1803,1797,1,0,0,0,1803,1798,1,0,0, + 0,1803,1799,1,0,0,0,1803,1800,1,0,0,0,1803,1801,1,0,0,0,1803,1802, + 1,0,0,0,1804,245,1,0,0,0,1805,1806,5,115,0,0,1806,1809,3,354,177, + 0,1807,1808,7,12,0,0,1808,1810,5,153,0,0,1809,1807,1,0,0,0,1809, + 1810,1,0,0,0,1810,247,1,0,0,0,1811,1812,5,265,0,0,1812,1817,3,256, + 128,0,1813,1814,5,263,0,0,1814,1816,3,256,128,0,1815,1813,1,0,0, + 0,1816,1819,1,0,0,0,1817,1815,1,0,0,0,1817,1818,1,0,0,0,1818,1820, + 1,0,0,0,1819,1817,1,0,0,0,1820,1821,5,266,0,0,1821,249,1,0,0,0,1822, + 1823,5,265,0,0,1823,1828,3,212,106,0,1824,1825,5,263,0,0,1825,1827, + 3,212,106,0,1826,1824,1,0,0,0,1827,1830,1,0,0,0,1828,1829,1,0,0, + 0,1828,1826,1,0,0,0,1829,1831,1,0,0,0,1830,1828,1,0,0,0,1831,1832, + 5,266,0,0,1832,251,1,0,0,0,1833,1838,3,304,152,0,1834,1835,5,263, + 0,0,1835,1837,3,304,152,0,1836,1834,1,0,0,0,1837,1840,1,0,0,0,1838, + 1836,1,0,0,0,1838,1839,1,0,0,0,1839,253,1,0,0,0,1840,1838,1,0,0, + 0,1841,1851,5,52,0,0,1842,1843,5,71,0,0,1843,1844,5,191,0,0,1844, + 1845,5,26,0,0,1845,1849,3,314,157,0,1846,1847,5,63,0,0,1847,1848, + 5,26,0,0,1848,1850,3,314,157,0,1849,1846,1,0,0,0,1849,1850,1,0,0, + 0,1850,1852,1,0,0,0,1851,1842,1,0,0,0,1851,1852,1,0,0,0,1852,1857, + 1,0,0,0,1853,1854,5,117,0,0,1854,1855,5,191,0,0,1855,1856,5,26,0, + 0,1856,1858,3,314,157,0,1857,1853,1,0,0,0,1857,1858,1,0,0,0,1858, + 255,1,0,0,0,1859,1862,3,358,179,0,1860,1861,5,249,0,0,1861,1863, + 3,304,152,0,1862,1860,1,0,0,0,1862,1863,1,0,0,0,1863,257,1,0,0,0, + 1864,1875,3,260,130,0,1865,1866,5,139,0,0,1866,1867,5,26,0,0,1867, + 1872,3,264,132,0,1868,1869,5,263,0,0,1869,1871,3,264,132,0,1870, + 1868,1,0,0,0,1871,1874,1,0,0,0,1872,1870,1,0,0,0,1872,1873,1,0,0, + 0,1873,1876,1,0,0,0,1874,1872,1,0,0,0,1875,1865,1,0,0,0,1875,1876, + 1,0,0,0,1876,1883,1,0,0,0,1877,1878,5,116,0,0,1878,1881,3,304,152, + 0,1879,1880,5,135,0,0,1880,1882,5,277,0,0,1881,1879,1,0,0,0,1881, + 1882,1,0,0,0,1882,1884,1,0,0,0,1883,1877,1,0,0,0,1883,1884,1,0,0, + 0,1884,259,1,0,0,0,1885,1886,6,130,-1,0,1886,1887,3,262,131,0,1887, + 1902,1,0,0,0,1888,1889,10,2,0,0,1889,1891,5,100,0,0,1890,1892,3, + 276,138,0,1891,1890,1,0,0,0,1891,1892,1,0,0,0,1892,1893,1,0,0,0, + 1893,1901,3,260,130,3,1894,1895,10,1,0,0,1895,1897,7,13,0,0,1896, + 1898,3,276,138,0,1897,1896,1,0,0,0,1897,1898,1,0,0,0,1898,1899,1, + 0,0,0,1899,1901,3,260,130,2,1900,1888,1,0,0,0,1900,1894,1,0,0,0, + 1901,1904,1,0,0,0,1902,1900,1,0,0,0,1902,1903,1,0,0,0,1903,261,1, + 0,0,0,1904,1902,1,0,0,0,1905,1922,3,266,133,0,1906,1907,5,188,0, + 0,1907,1922,3,186,93,0,1908,1909,5,211,0,0,1909,1914,3,304,152,0, + 1910,1911,5,263,0,0,1911,1913,3,304,152,0,1912,1910,1,0,0,0,1913, + 1916,1,0,0,0,1914,1912,1,0,0,0,1914,1915,1,0,0,0,1915,1922,1,0,0, + 0,1916,1914,1,0,0,0,1917,1918,5,265,0,0,1918,1919,3,258,129,0,1919, + 1920,5,266,0,0,1920,1922,1,0,0,0,1921,1905,1,0,0,0,1921,1906,1,0, + 0,0,1921,1908,1,0,0,0,1921,1917,1,0,0,0,1922,263,1,0,0,0,1923,1925, + 3,302,151,0,1924,1926,7,14,0,0,1925,1924,1,0,0,0,1925,1926,1,0,0, + 0,1926,1929,1,0,0,0,1927,1928,5,134,0,0,1928,1930,7,15,0,0,1929, + 1927,1,0,0,0,1929,1930,1,0,0,0,1930,265,1,0,0,0,1931,1933,5,174, + 0,0,1932,1934,3,276,138,0,1933,1932,1,0,0,0,1933,1934,1,0,0,0,1934, + 1936,1,0,0,0,1935,1937,5,183,0,0,1936,1935,1,0,0,0,1936,1937,1,0, + 0,0,1937,1938,1,0,0,0,1938,1943,3,278,139,0,1939,1940,5,263,0,0, + 1940,1942,3,278,139,0,1941,1939,1,0,0,0,1942,1945,1,0,0,0,1943,1941, + 1,0,0,0,1943,1944,1,0,0,0,1944,1955,1,0,0,0,1945,1943,1,0,0,0,1946, + 1947,5,82,0,0,1947,1952,3,280,140,0,1948,1949,5,263,0,0,1949,1951, + 3,280,140,0,1950,1948,1,0,0,0,1951,1954,1,0,0,0,1952,1950,1,0,0, + 0,1952,1953,1,0,0,0,1953,1956,1,0,0,0,1954,1952,1,0,0,0,1955,1946, + 1,0,0,0,1955,1956,1,0,0,0,1956,1959,1,0,0,0,1957,1958,5,215,0,0, + 1958,1960,3,306,153,0,1959,1957,1,0,0,0,1959,1960,1,0,0,0,1960,1964, + 1,0,0,0,1961,1962,5,87,0,0,1962,1963,5,26,0,0,1963,1965,3,268,134, + 0,1964,1961,1,0,0,0,1964,1965,1,0,0,0,1965,1968,1,0,0,0,1966,1967, + 5,90,0,0,1967,1969,3,306,153,0,1968,1966,1,0,0,0,1968,1969,1,0,0, + 0,1969,267,1,0,0,0,1970,1972,3,276,138,0,1971,1970,1,0,0,0,1971, + 1972,1,0,0,0,1972,1973,1,0,0,0,1973,1978,3,270,135,0,1974,1975,5, + 263,0,0,1975,1977,3,270,135,0,1976,1974,1,0,0,0,1977,1980,1,0,0, + 0,1978,1976,1,0,0,0,1978,1979,1,0,0,0,1979,269,1,0,0,0,1980,1978, + 1,0,0,0,1981,1982,3,272,136,0,1982,271,1,0,0,0,1983,1992,5,265,0, + 0,1984,1989,3,302,151,0,1985,1986,5,263,0,0,1986,1988,3,302,151, + 0,1987,1985,1,0,0,0,1988,1991,1,0,0,0,1989,1987,1,0,0,0,1989,1990, + 1,0,0,0,1990,1993,1,0,0,0,1991,1989,1,0,0,0,1992,1984,1,0,0,0,1992, + 1993,1,0,0,0,1993,1994,1,0,0,0,1994,1997,5,266,0,0,1995,1997,3,302, + 151,0,1996,1983,1,0,0,0,1996,1995,1,0,0,0,1997,273,1,0,0,0,1998, + 2000,3,358,179,0,1999,2001,3,292,146,0,2000,1999,1,0,0,0,2000,2001, + 1,0,0,0,2001,2002,1,0,0,0,2002,2003,5,9,0,0,2003,2004,3,296,148, + 0,2004,275,1,0,0,0,2005,2006,7,16,0,0,2006,277,1,0,0,0,2007,2012, + 3,302,151,0,2008,2010,5,9,0,0,2009,2008,1,0,0,0,2009,2010,1,0,0, + 0,2010,2011,1,0,0,0,2011,2013,3,358,179,0,2012,2009,1,0,0,0,2012, + 2013,1,0,0,0,2013,2020,1,0,0,0,2014,2015,3,354,177,0,2015,2016,5, + 261,0,0,2016,2017,5,257,0,0,2017,2020,1,0,0,0,2018,2020,5,257,0, + 0,2019,2007,1,0,0,0,2019,2014,1,0,0,0,2019,2018,1,0,0,0,2020,279, + 1,0,0,0,2021,2022,6,140,-1,0,2022,2023,3,286,143,0,2023,2037,1,0, + 0,0,2024,2033,10,2,0,0,2025,2026,5,38,0,0,2026,2027,5,109,0,0,2027, + 2034,3,286,143,0,2028,2029,3,282,141,0,2029,2030,5,109,0,0,2030, + 2031,3,280,140,0,2031,2032,3,284,142,0,2032,2034,1,0,0,0,2033,2025, + 1,0,0,0,2033,2028,1,0,0,0,2034,2036,1,0,0,0,2035,2024,1,0,0,0,2036, + 2039,1,0,0,0,2037,2035,1,0,0,0,2037,2038,1,0,0,0,2038,281,1,0,0, + 0,2039,2037,1,0,0,0,2040,2042,5,97,0,0,2041,2040,1,0,0,0,2041,2042, + 1,0,0,0,2042,2072,1,0,0,0,2043,2045,5,114,0,0,2044,2046,5,97,0,0, + 2045,2044,1,0,0,0,2045,2046,1,0,0,0,2046,2072,1,0,0,0,2047,2049, + 5,165,0,0,2048,2050,5,97,0,0,2049,2048,1,0,0,0,2049,2050,1,0,0,0, + 2050,2072,1,0,0,0,2051,2053,5,114,0,0,2052,2054,5,141,0,0,2053,2052, + 1,0,0,0,2053,2054,1,0,0,0,2054,2072,1,0,0,0,2055,2057,5,165,0,0, + 2056,2058,5,141,0,0,2057,2056,1,0,0,0,2057,2058,1,0,0,0,2058,2072, + 1,0,0,0,2059,2061,5,83,0,0,2060,2062,5,141,0,0,2061,2060,1,0,0,0, + 2061,2062,1,0,0,0,2062,2072,1,0,0,0,2063,2064,5,114,0,0,2064,2072, + 5,177,0,0,2065,2066,5,165,0,0,2066,2072,5,177,0,0,2067,2068,5,114, + 0,0,2068,2072,5,7,0,0,2069,2070,5,165,0,0,2070,2072,5,7,0,0,2071, + 2041,1,0,0,0,2071,2043,1,0,0,0,2071,2047,1,0,0,0,2071,2051,1,0,0, + 0,2071,2055,1,0,0,0,2071,2059,1,0,0,0,2071,2063,1,0,0,0,2071,2065, + 1,0,0,0,2071,2067,1,0,0,0,2071,2069,1,0,0,0,2072,283,1,0,0,0,2073, + 2074,5,136,0,0,2074,2088,3,306,153,0,2075,2076,5,205,0,0,2076,2077, + 5,265,0,0,2077,2082,3,358,179,0,2078,2079,5,263,0,0,2079,2081,3, + 358,179,0,2080,2078,1,0,0,0,2081,2084,1,0,0,0,2082,2080,1,0,0,0, + 2082,2083,1,0,0,0,2083,2085,1,0,0,0,2084,2082,1,0,0,0,2085,2086, + 5,266,0,0,2086,2088,1,0,0,0,2087,2073,1,0,0,0,2087,2075,1,0,0,0, + 2088,285,1,0,0,0,2089,2102,3,290,145,0,2090,2091,5,190,0,0,2091, + 2092,3,288,144,0,2092,2093,5,265,0,0,2093,2094,3,304,152,0,2094, + 2100,5,266,0,0,2095,2096,5,157,0,0,2096,2097,5,265,0,0,2097,2098, + 3,304,152,0,2098,2099,5,266,0,0,2099,2101,1,0,0,0,2100,2095,1,0, + 0,0,2100,2101,1,0,0,0,2101,2103,1,0,0,0,2102,2090,1,0,0,0,2102,2103, + 1,0,0,0,2103,287,1,0,0,0,2104,2105,7,17,0,0,2105,289,1,0,0,0,2106, + 2114,3,294,147,0,2107,2109,5,9,0,0,2108,2107,1,0,0,0,2108,2109,1, + 0,0,0,2109,2110,1,0,0,0,2110,2112,3,358,179,0,2111,2113,3,292,146, + 0,2112,2111,1,0,0,0,2112,2113,1,0,0,0,2113,2115,1,0,0,0,2114,2108, + 1,0,0,0,2114,2115,1,0,0,0,2115,291,1,0,0,0,2116,2117,5,265,0,0,2117, + 2122,3,192,96,0,2118,2119,5,263,0,0,2119,2121,3,192,96,0,2120,2118, + 1,0,0,0,2121,2124,1,0,0,0,2122,2120,1,0,0,0,2122,2123,1,0,0,0,2123, + 2125,1,0,0,0,2124,2122,1,0,0,0,2125,2126,5,266,0,0,2126,293,1,0, + 0,0,2127,2135,3,194,97,0,2128,2130,5,113,0,0,2129,2128,1,0,0,0,2129, + 2130,1,0,0,0,2130,2131,1,0,0,0,2131,2135,3,296,148,0,2132,2135,3, + 298,149,0,2133,2135,3,300,150,0,2134,2127,1,0,0,0,2134,2129,1,0, + 0,0,2134,2132,1,0,0,0,2134,2133,1,0,0,0,2135,295,1,0,0,0,2136,2137, + 5,265,0,0,2137,2138,3,204,102,0,2138,2139,5,266,0,0,2139,297,1,0, + 0,0,2140,2141,5,201,0,0,2141,2142,5,265,0,0,2142,2147,3,304,152, + 0,2143,2144,5,263,0,0,2144,2146,3,304,152,0,2145,2143,1,0,0,0,2146, + 2149,1,0,0,0,2147,2145,1,0,0,0,2147,2148,1,0,0,0,2148,2150,1,0,0, + 0,2149,2147,1,0,0,0,2150,2153,5,266,0,0,2151,2152,5,216,0,0,2152, + 2154,5,140,0,0,2153,2151,1,0,0,0,2153,2154,1,0,0,0,2154,299,1,0, + 0,0,2155,2156,5,265,0,0,2156,2157,3,280,140,0,2157,2158,5,266,0, + 0,2158,301,1,0,0,0,2159,2162,3,192,96,0,2160,2162,3,304,152,0,2161, + 2159,1,0,0,0,2161,2160,1,0,0,0,2162,303,1,0,0,0,2163,2164,3,306, + 153,0,2164,305,1,0,0,0,2165,2166,6,153,-1,0,2166,2168,3,310,155, + 0,2167,2169,3,308,154,0,2168,2167,1,0,0,0,2168,2169,1,0,0,0,2169, + 2173,1,0,0,0,2170,2171,5,132,0,0,2171,2173,3,306,153,3,2172,2165, + 1,0,0,0,2172,2170,1,0,0,0,2173,2182,1,0,0,0,2174,2175,10,2,0,0,2175, + 2176,5,5,0,0,2176,2181,3,306,153,3,2177,2178,10,1,0,0,2178,2179, + 5,138,0,0,2179,2181,3,306,153,2,2180,2174,1,0,0,0,2180,2177,1,0, + 0,0,2181,2184,1,0,0,0,2182,2180,1,0,0,0,2182,2183,1,0,0,0,2183,307, + 1,0,0,0,2184,2182,1,0,0,0,2185,2186,3,316,158,0,2186,2187,3,310, + 155,0,2187,2244,1,0,0,0,2188,2189,3,316,158,0,2189,2190,3,318,159, + 0,2190,2191,3,296,148,0,2191,2244,1,0,0,0,2192,2194,5,132,0,0,2193, + 2192,1,0,0,0,2193,2194,1,0,0,0,2194,2195,1,0,0,0,2195,2196,5,15, + 0,0,2196,2197,3,310,155,0,2197,2198,5,5,0,0,2198,2199,3,310,155, + 0,2199,2244,1,0,0,0,2200,2202,5,132,0,0,2201,2200,1,0,0,0,2201,2202, + 1,0,0,0,2202,2203,1,0,0,0,2203,2204,5,94,0,0,2204,2205,5,265,0,0, + 2205,2210,3,304,152,0,2206,2207,5,263,0,0,2207,2209,3,304,152,0, + 2208,2206,1,0,0,0,2209,2212,1,0,0,0,2210,2208,1,0,0,0,2210,2211, + 1,0,0,0,2211,2213,1,0,0,0,2212,2210,1,0,0,0,2213,2214,5,266,0,0, + 2214,2244,1,0,0,0,2215,2217,5,132,0,0,2216,2215,1,0,0,0,2216,2217, + 1,0,0,0,2217,2218,1,0,0,0,2218,2219,5,94,0,0,2219,2244,3,296,148, + 0,2220,2222,5,132,0,0,2221,2220,1,0,0,0,2221,2222,1,0,0,0,2222,2223, + 1,0,0,0,2223,2224,7,18,0,0,2224,2227,3,310,155,0,2225,2226,5,62, + 0,0,2226,2228,3,310,155,0,2227,2225,1,0,0,0,2227,2228,1,0,0,0,2228, + 2244,1,0,0,0,2229,2230,7,19,0,0,2230,2244,3,310,155,0,2231,2233, + 5,108,0,0,2232,2234,5,132,0,0,2233,2232,1,0,0,0,2233,2234,1,0,0, + 0,2234,2235,1,0,0,0,2235,2244,7,20,0,0,2236,2238,5,108,0,0,2237, + 2239,5,132,0,0,2238,2237,1,0,0,0,2238,2239,1,0,0,0,2239,2240,1,0, + 0,0,2240,2241,5,57,0,0,2241,2242,5,82,0,0,2242,2244,3,310,155,0, + 2243,2185,1,0,0,0,2243,2188,1,0,0,0,2243,2193,1,0,0,0,2243,2201, + 1,0,0,0,2243,2216,1,0,0,0,2243,2221,1,0,0,0,2243,2229,1,0,0,0,2243, + 2231,1,0,0,0,2243,2236,1,0,0,0,2244,309,1,0,0,0,2245,2246,6,155, + -1,0,2246,2250,3,312,156,0,2247,2248,7,21,0,0,2248,2250,3,310,155, + 4,2249,2245,1,0,0,0,2249,2247,1,0,0,0,2250,2262,1,0,0,0,2251,2252, + 10,3,0,0,2252,2253,7,22,0,0,2253,2261,3,310,155,4,2254,2255,10,2, + 0,0,2255,2256,7,21,0,0,2256,2261,3,310,155,3,2257,2258,10,1,0,0, + 2258,2259,5,260,0,0,2259,2261,3,310,155,2,2260,2251,1,0,0,0,2260, + 2254,1,0,0,0,2260,2257,1,0,0,0,2261,2264,1,0,0,0,2262,2260,1,0,0, + 0,2262,2263,1,0,0,0,2263,311,1,0,0,0,2264,2262,1,0,0,0,2265,2266, + 6,156,-1,0,2266,2512,5,133,0,0,2267,2512,3,322,161,0,2268,2269,3, + 358,179,0,2269,2270,3,314,157,0,2270,2512,1,0,0,0,2271,2272,5,286, + 0,0,2272,2512,3,314,157,0,2273,2512,3,360,180,0,2274,2512,3,320, + 160,0,2275,2512,3,314,157,0,2276,2512,5,276,0,0,2277,2512,5,272, + 0,0,2278,2279,5,148,0,0,2279,2280,5,265,0,0,2280,2281,3,310,155, + 0,2281,2282,5,94,0,0,2282,2283,3,310,155,0,2283,2284,5,266,0,0,2284, + 2512,1,0,0,0,2285,2286,5,265,0,0,2286,2289,3,304,152,0,2287,2288, + 5,9,0,0,2288,2290,3,328,164,0,2289,2287,1,0,0,0,2289,2290,1,0,0, + 0,2290,2299,1,0,0,0,2291,2292,5,263,0,0,2292,2295,3,304,152,0,2293, + 2294,5,9,0,0,2294,2296,3,328,164,0,2295,2293,1,0,0,0,2295,2296,1, + 0,0,0,2296,2298,1,0,0,0,2297,2291,1,0,0,0,2298,2301,1,0,0,0,2299, + 2300,1,0,0,0,2299,2297,1,0,0,0,2300,2302,1,0,0,0,2301,2299,1,0,0, + 0,2302,2303,5,266,0,0,2303,2512,1,0,0,0,2304,2305,5,168,0,0,2305, + 2306,5,265,0,0,2306,2311,3,304,152,0,2307,2308,5,263,0,0,2308,2310, + 3,304,152,0,2309,2307,1,0,0,0,2310,2313,1,0,0,0,2311,2309,1,0,0, + 0,2311,2312,1,0,0,0,2312,2314,1,0,0,0,2313,2311,1,0,0,0,2314,2315, + 5,266,0,0,2315,2512,1,0,0,0,2316,2317,3,190,95,0,2317,2318,5,265, + 0,0,2318,2319,5,257,0,0,2319,2321,5,266,0,0,2320,2322,3,338,169, + 0,2321,2320,1,0,0,0,2321,2322,1,0,0,0,2322,2324,1,0,0,0,2323,2325, + 3,340,170,0,2324,2323,1,0,0,0,2324,2325,1,0,0,0,2325,2512,1,0,0, + 0,2326,2327,3,190,95,0,2327,2339,5,265,0,0,2328,2330,3,276,138,0, + 2329,2328,1,0,0,0,2329,2330,1,0,0,0,2330,2331,1,0,0,0,2331,2336, + 3,304,152,0,2332,2333,5,263,0,0,2333,2335,3,304,152,0,2334,2332, + 1,0,0,0,2335,2338,1,0,0,0,2336,2334,1,0,0,0,2336,2337,1,0,0,0,2337, + 2340,1,0,0,0,2338,2336,1,0,0,0,2339,2329,1,0,0,0,2339,2340,1,0,0, + 0,2340,2351,1,0,0,0,2341,2342,5,139,0,0,2342,2343,5,26,0,0,2343, + 2348,3,264,132,0,2344,2345,5,263,0,0,2345,2347,3,264,132,0,2346, + 2344,1,0,0,0,2347,2350,1,0,0,0,2348,2346,1,0,0,0,2348,2349,1,0,0, + 0,2349,2352,1,0,0,0,2350,2348,1,0,0,0,2351,2341,1,0,0,0,2351,2352, + 1,0,0,0,2352,2353,1,0,0,0,2353,2355,5,266,0,0,2354,2356,3,338,169, + 0,2355,2354,1,0,0,0,2355,2356,1,0,0,0,2356,2358,1,0,0,0,2357,2359, + 3,340,170,0,2358,2357,1,0,0,0,2358,2359,1,0,0,0,2359,2512,1,0,0, + 0,2360,2361,3,358,179,0,2361,2362,5,273,0,0,2362,2363,3,304,152, + 0,2363,2512,1,0,0,0,2364,2373,5,265,0,0,2365,2370,3,358,179,0,2366, + 2367,5,263,0,0,2367,2369,3,358,179,0,2368,2366,1,0,0,0,2369,2372, + 1,0,0,0,2370,2368,1,0,0,0,2370,2371,1,0,0,0,2371,2374,1,0,0,0,2372, + 2370,1,0,0,0,2373,2365,1,0,0,0,2373,2374,1,0,0,0,2374,2375,1,0,0, + 0,2375,2376,5,266,0,0,2376,2377,5,273,0,0,2377,2512,3,304,152,0, + 2378,2379,5,265,0,0,2379,2380,3,204,102,0,2380,2381,5,266,0,0,2381, + 2512,1,0,0,0,2382,2383,5,66,0,0,2383,2384,5,265,0,0,2384,2385,3, + 204,102,0,2385,2386,5,266,0,0,2386,2512,1,0,0,0,2387,2388,5,28,0, + 0,2388,2390,3,310,155,0,2389,2391,3,336,168,0,2390,2389,1,0,0,0, + 2391,2392,1,0,0,0,2392,2390,1,0,0,0,2392,2393,1,0,0,0,2393,2396, + 1,0,0,0,2394,2395,5,59,0,0,2395,2397,3,304,152,0,2396,2394,1,0,0, + 0,2396,2397,1,0,0,0,2397,2398,1,0,0,0,2398,2399,5,61,0,0,2399,2512, + 1,0,0,0,2400,2402,5,28,0,0,2401,2403,3,336,168,0,2402,2401,1,0,0, + 0,2403,2404,1,0,0,0,2404,2402,1,0,0,0,2404,2405,1,0,0,0,2405,2408, + 1,0,0,0,2406,2407,5,59,0,0,2407,2409,3,304,152,0,2408,2406,1,0,0, + 0,2408,2409,1,0,0,0,2409,2410,1,0,0,0,2410,2411,5,61,0,0,2411,2512, + 1,0,0,0,2412,2413,5,29,0,0,2413,2414,5,265,0,0,2414,2415,3,304,152, + 0,2415,2416,5,9,0,0,2416,2417,3,328,164,0,2417,2418,5,266,0,0,2418, + 2512,1,0,0,0,2419,2420,5,195,0,0,2420,2421,5,265,0,0,2421,2422,3, + 304,152,0,2422,2423,5,9,0,0,2423,2424,3,328,164,0,2424,2425,5,266, + 0,0,2425,2512,1,0,0,0,2426,2427,5,8,0,0,2427,2436,5,267,0,0,2428, + 2433,3,304,152,0,2429,2430,5,263,0,0,2430,2432,3,304,152,0,2431, + 2429,1,0,0,0,2432,2435,1,0,0,0,2433,2431,1,0,0,0,2433,2434,1,0,0, + 0,2434,2437,1,0,0,0,2435,2433,1,0,0,0,2436,2428,1,0,0,0,2436,2437, + 1,0,0,0,2437,2438,1,0,0,0,2438,2512,5,268,0,0,2439,2512,3,358,179, + 0,2440,2512,5,40,0,0,2441,2445,5,42,0,0,2442,2443,5,265,0,0,2443, + 2444,5,277,0,0,2444,2446,5,266,0,0,2445,2442,1,0,0,0,2445,2446,1, + 0,0,0,2446,2512,1,0,0,0,2447,2451,5,43,0,0,2448,2449,5,265,0,0,2449, + 2450,5,277,0,0,2450,2452,5,266,0,0,2451,2448,1,0,0,0,2451,2452,1, + 0,0,0,2452,2512,1,0,0,0,2453,2457,5,119,0,0,2454,2455,5,265,0,0, + 2455,2456,5,277,0,0,2456,2458,5,266,0,0,2457,2454,1,0,0,0,2457,2458, + 1,0,0,0,2458,2512,1,0,0,0,2459,2463,5,120,0,0,2460,2461,5,265,0, + 0,2461,2462,5,277,0,0,2462,2464,5,266,0,0,2463,2460,1,0,0,0,2463, + 2464,1,0,0,0,2464,2512,1,0,0,0,2465,2512,5,44,0,0,2466,2512,5,41, + 0,0,2467,2468,5,184,0,0,2468,2469,5,265,0,0,2469,2470,3,310,155, + 0,2470,2471,5,82,0,0,2471,2474,3,310,155,0,2472,2473,5,78,0,0,2473, + 2475,3,310,155,0,2474,2472,1,0,0,0,2474,2475,1,0,0,0,2475,2476,1, + 0,0,0,2476,2477,5,266,0,0,2477,2512,1,0,0,0,2478,2479,5,131,0,0, + 2479,2480,5,265,0,0,2480,2483,3,310,155,0,2481,2482,5,263,0,0,2482, + 2484,3,326,163,0,2483,2481,1,0,0,0,2483,2484,1,0,0,0,2484,2485,1, + 0,0,0,2485,2486,5,266,0,0,2486,2512,1,0,0,0,2487,2488,5,68,0,0,2488, + 2489,5,265,0,0,2489,2490,3,358,179,0,2490,2491,5,82,0,0,2491,2492, + 3,310,155,0,2492,2493,5,266,0,0,2493,2512,1,0,0,0,2494,2495,5,265, + 0,0,2495,2496,3,304,152,0,2496,2497,5,266,0,0,2497,2512,1,0,0,0, + 2498,2499,5,88,0,0,2499,2508,5,265,0,0,2500,2505,3,354,177,0,2501, + 2502,5,263,0,0,2502,2504,3,354,177,0,2503,2501,1,0,0,0,2504,2507, + 1,0,0,0,2505,2503,1,0,0,0,2505,2506,1,0,0,0,2506,2509,1,0,0,0,2507, + 2505,1,0,0,0,2508,2500,1,0,0,0,2508,2509,1,0,0,0,2509,2510,1,0,0, + 0,2510,2512,5,266,0,0,2511,2265,1,0,0,0,2511,2267,1,0,0,0,2511,2268, + 1,0,0,0,2511,2271,1,0,0,0,2511,2273,1,0,0,0,2511,2274,1,0,0,0,2511, + 2275,1,0,0,0,2511,2276,1,0,0,0,2511,2277,1,0,0,0,2511,2278,1,0,0, + 0,2511,2285,1,0,0,0,2511,2304,1,0,0,0,2511,2316,1,0,0,0,2511,2326, + 1,0,0,0,2511,2360,1,0,0,0,2511,2364,1,0,0,0,2511,2378,1,0,0,0,2511, + 2382,1,0,0,0,2511,2387,1,0,0,0,2511,2400,1,0,0,0,2511,2412,1,0,0, + 0,2511,2419,1,0,0,0,2511,2426,1,0,0,0,2511,2439,1,0,0,0,2511,2440, + 1,0,0,0,2511,2441,1,0,0,0,2511,2447,1,0,0,0,2511,2453,1,0,0,0,2511, + 2459,1,0,0,0,2511,2465,1,0,0,0,2511,2466,1,0,0,0,2511,2467,1,0,0, + 0,2511,2478,1,0,0,0,2511,2487,1,0,0,0,2511,2494,1,0,0,0,2511,2498, + 1,0,0,0,2512,2523,1,0,0,0,2513,2514,10,15,0,0,2514,2515,5,267,0, + 0,2515,2516,3,310,155,0,2516,2517,5,268,0,0,2517,2522,1,0,0,0,2518, + 2519,10,13,0,0,2519,2520,5,261,0,0,2520,2522,3,358,179,0,2521,2513, + 1,0,0,0,2521,2518,1,0,0,0,2522,2525,1,0,0,0,2523,2521,1,0,0,0,2523, + 2524,1,0,0,0,2524,313,1,0,0,0,2525,2523,1,0,0,0,2526,2533,5,274, + 0,0,2527,2530,5,275,0,0,2528,2529,5,198,0,0,2529,2531,5,274,0,0, + 2530,2528,1,0,0,0,2530,2531,1,0,0,0,2531,2533,1,0,0,0,2532,2526, + 1,0,0,0,2532,2527,1,0,0,0,2533,315,1,0,0,0,2534,2535,7,23,0,0,2535, + 317,1,0,0,0,2536,2537,7,24,0,0,2537,319,1,0,0,0,2538,2539,7,25,0, + 0,2539,321,1,0,0,0,2540,2541,5,277,0,0,2541,2555,3,324,162,0,2542, + 2543,5,265,0,0,2543,2544,5,277,0,0,2544,2545,5,266,0,0,2545,2555, + 3,324,162,0,2546,2547,5,101,0,0,2547,2548,5,277,0,0,2548,2555,3, + 324,162,0,2549,2550,5,101,0,0,2550,2551,5,265,0,0,2551,2552,5,277, + 0,0,2552,2553,5,266,0,0,2553,2555,3,324,162,0,2554,2540,1,0,0,0, + 2554,2542,1,0,0,0,2554,2546,1,0,0,0,2554,2549,1,0,0,0,2555,323,1, + 0,0,0,2556,2557,7,26,0,0,2557,325,1,0,0,0,2558,2559,7,27,0,0,2559, + 327,1,0,0,0,2560,2561,6,164,-1,0,2561,2562,5,8,0,0,2562,2563,5,251, + 0,0,2563,2564,3,328,164,0,2564,2565,5,253,0,0,2565,2606,1,0,0,0, + 2566,2567,5,235,0,0,2567,2568,5,251,0,0,2568,2569,3,328,164,0,2569, + 2570,5,263,0,0,2570,2571,3,328,164,0,2571,2572,5,253,0,0,2572,2606, + 1,0,0,0,2573,2574,5,240,0,0,2574,2575,5,251,0,0,2575,2576,3,358, + 179,0,2576,2583,3,328,164,0,2577,2578,5,263,0,0,2578,2579,3,358, + 179,0,2579,2580,3,328,164,0,2580,2582,1,0,0,0,2581,2577,1,0,0,0, + 2582,2585,1,0,0,0,2583,2581,1,0,0,0,2583,2584,1,0,0,0,2584,2586, + 1,0,0,0,2585,2583,1,0,0,0,2586,2587,5,253,0,0,2587,2606,1,0,0,0, + 2588,2591,3,334,167,0,2589,2591,3,330,165,0,2590,2588,1,0,0,0,2590, + 2589,1,0,0,0,2591,2603,1,0,0,0,2592,2593,5,265,0,0,2593,2598,3,332, + 166,0,2594,2595,5,263,0,0,2595,2597,3,332,166,0,2596,2594,1,0,0, + 0,2597,2600,1,0,0,0,2598,2596,1,0,0,0,2598,2599,1,0,0,0,2599,2601, + 1,0,0,0,2600,2598,1,0,0,0,2601,2602,5,266,0,0,2602,2604,1,0,0,0, + 2603,2592,1,0,0,0,2603,2604,1,0,0,0,2604,2606,1,0,0,0,2605,2560, + 1,0,0,0,2605,2566,1,0,0,0,2605,2573,1,0,0,0,2605,2590,1,0,0,0,2606, + 2611,1,0,0,0,2607,2608,10,5,0,0,2608,2610,5,8,0,0,2609,2607,1,0, + 0,0,2610,2613,1,0,0,0,2611,2609,1,0,0,0,2611,2612,1,0,0,0,2612,329, + 1,0,0,0,2613,2611,1,0,0,0,2614,2615,7,28,0,0,2615,331,1,0,0,0,2616, + 2619,5,277,0,0,2617,2619,3,328,164,0,2618,2616,1,0,0,0,2618,2617, + 1,0,0,0,2619,333,1,0,0,0,2620,2625,5,284,0,0,2621,2625,5,285,0,0, + 2622,2625,5,286,0,0,2623,2625,3,358,179,0,2624,2620,1,0,0,0,2624, + 2621,1,0,0,0,2624,2622,1,0,0,0,2624,2623,1,0,0,0,2625,335,1,0,0, + 0,2626,2627,5,214,0,0,2627,2628,3,304,152,0,2628,2629,5,192,0,0, + 2629,2630,3,304,152,0,2630,337,1,0,0,0,2631,2632,5,74,0,0,2632,2633, + 5,265,0,0,2633,2634,5,215,0,0,2634,2635,3,306,153,0,2635,2636,5, + 266,0,0,2636,339,1,0,0,0,2637,2638,5,143,0,0,2638,2649,5,265,0,0, + 2639,2640,5,145,0,0,2640,2641,5,26,0,0,2641,2646,3,304,152,0,2642, + 2643,5,263,0,0,2643,2645,3,304,152,0,2644,2642,1,0,0,0,2645,2648, + 1,0,0,0,2646,2644,1,0,0,0,2646,2647,1,0,0,0,2647,2650,1,0,0,0,2648, + 2646,1,0,0,0,2649,2639,1,0,0,0,2649,2650,1,0,0,0,2650,2661,1,0,0, + 0,2651,2652,5,139,0,0,2652,2653,5,26,0,0,2653,2658,3,264,132,0,2654, + 2655,5,263,0,0,2655,2657,3,264,132,0,2656,2654,1,0,0,0,2657,2660, + 1,0,0,0,2658,2656,1,0,0,0,2658,2659,1,0,0,0,2659,2662,1,0,0,0,2660, + 2658,1,0,0,0,2661,2651,1,0,0,0,2661,2662,1,0,0,0,2662,2664,1,0,0, + 0,2663,2665,3,342,171,0,2664,2663,1,0,0,0,2664,2665,1,0,0,0,2665, + 2666,1,0,0,0,2666,2667,5,266,0,0,2667,341,1,0,0,0,2668,2669,5,154, + 0,0,2669,2685,3,344,172,0,2670,2671,5,169,0,0,2671,2685,3,344,172, + 0,2672,2673,5,154,0,0,2673,2674,5,15,0,0,2674,2675,3,344,172,0,2675, + 2676,5,5,0,0,2676,2677,3,344,172,0,2677,2685,1,0,0,0,2678,2679,5, + 169,0,0,2679,2680,5,15,0,0,2680,2681,3,344,172,0,2681,2682,5,5,0, + 0,2682,2683,3,344,172,0,2683,2685,1,0,0,0,2684,2668,1,0,0,0,2684, + 2670,1,0,0,0,2684,2672,1,0,0,0,2684,2678,1,0,0,0,2685,343,1,0,0, + 0,2686,2687,5,199,0,0,2687,2696,5,149,0,0,2688,2689,5,199,0,0,2689, + 2696,5,77,0,0,2690,2691,5,39,0,0,2691,2696,5,168,0,0,2692,2693,3, + 304,152,0,2693,2694,7,29,0,0,2694,2696,1,0,0,0,2695,2686,1,0,0,0, + 2695,2688,1,0,0,0,2695,2690,1,0,0,0,2695,2692,1,0,0,0,2696,345,1, + 0,0,0,2697,2698,3,358,179,0,2698,2699,5,261,0,0,2699,2700,3,358, + 179,0,2700,2703,1,0,0,0,2701,2703,3,358,179,0,2702,2697,1,0,0,0, + 2702,2701,1,0,0,0,2703,347,1,0,0,0,2704,2709,3,346,173,0,2705,2706, + 5,263,0,0,2706,2708,3,346,173,0,2707,2705,1,0,0,0,2708,2711,1,0, + 0,0,2709,2707,1,0,0,0,2709,2710,1,0,0,0,2710,349,1,0,0,0,2711,2709, + 1,0,0,0,2712,2726,5,2,0,0,2713,2726,5,4,0,0,2714,2726,5,58,0,0,2715, + 2726,5,37,0,0,2716,2726,5,99,0,0,2717,2726,5,162,0,0,2718,2723,5, + 174,0,0,2719,2720,5,265,0,0,2720,2721,3,358,179,0,2721,2722,5,266, + 0,0,2722,2724,1,0,0,0,2723,2719,1,0,0,0,2723,2724,1,0,0,0,2724,2726, + 1,0,0,0,2725,2712,1,0,0,0,2725,2713,1,0,0,0,2725,2714,1,0,0,0,2725, + 2715,1,0,0,0,2725,2716,1,0,0,0,2725,2717,1,0,0,0,2725,2718,1,0,0, + 0,2726,351,1,0,0,0,2727,2728,7,30,0,0,2728,353,1,0,0,0,2729,2734, + 3,358,179,0,2730,2731,5,261,0,0,2731,2733,3,358,179,0,2732,2730, + 1,0,0,0,2733,2736,1,0,0,0,2734,2732,1,0,0,0,2734,2735,1,0,0,0,2735, + 355,1,0,0,0,2736,2734,1,0,0,0,2737,2738,5,166,0,0,2738,2744,3,358, + 179,0,2739,2740,5,204,0,0,2740,2744,3,358,179,0,2741,2742,5,87,0, + 0,2742,2744,3,358,179,0,2743,2737,1,0,0,0,2743,2739,1,0,0,0,2743, + 2741,1,0,0,0,2744,357,1,0,0,0,2745,2751,5,280,0,0,2746,2751,5,274, + 0,0,2747,2751,3,364,182,0,2748,2751,5,283,0,0,2749,2751,5,281,0, + 0,2750,2745,1,0,0,0,2750,2746,1,0,0,0,2750,2747,1,0,0,0,2750,2748, + 1,0,0,0,2750,2749,1,0,0,0,2751,359,1,0,0,0,2752,2754,5,256,0,0,2753, + 2752,1,0,0,0,2753,2754,1,0,0,0,2754,2755,1,0,0,0,2755,2765,5,278, + 0,0,2756,2758,5,256,0,0,2757,2756,1,0,0,0,2757,2758,1,0,0,0,2758, + 2759,1,0,0,0,2759,2765,5,279,0,0,2760,2762,5,256,0,0,2761,2760,1, + 0,0,0,2761,2762,1,0,0,0,2762,2763,1,0,0,0,2763,2765,5,277,0,0,2764, + 2753,1,0,0,0,2764,2757,1,0,0,0,2764,2761,1,0,0,0,2765,361,1,0,0, + 0,2766,2767,7,31,0,0,2767,363,1,0,0,0,2768,2769,7,32,0,0,2769,365, + 1,0,0,0,352,369,376,400,413,417,421,430,435,439,445,447,452,456, 460,467,472,478,482,491,498,502,507,509,514,518,525,529,534,538, 542,546,554,559,563,571,575,584,587,590,596,603,614,619,624,629, 634,643,646,649,653,679,705,714,724,727,741,759,761,770,781,790, @@ -14160,19 +14151,19 @@ export class ImpalaSqlParser extends SQLParserBase { 1346,1351,1360,1369,1378,1389,1395,1400,1403,1416,1426,1430,1435, 1446,1451,1484,1492,1497,1501,1505,1510,1514,1519,1524,1529,1533, 1542,1545,1549,1556,1567,1573,1577,1583,1593,1600,1605,1610,1615, - 1621,1624,1633,1636,1639,1645,1651,1661,1664,1668,1672,1675,1681, - 1684,1690,1696,1699,1702,1706,1716,1727,1732,1735,1739,1746,1756, - 1768,1774,1776,1785,1788,1795,1805,1811,1819,1830,1840,1851,1853, - 1859,1864,1874,1877,1883,1885,1893,1899,1902,1904,1916,1923,1927, - 1931,1935,1938,1945,1954,1957,1961,1966,1970,1973,1980,1991,1994, - 1998,2002,2011,2014,2021,2035,2039,2043,2047,2051,2055,2059,2063, - 2073,2084,2089,2102,2104,2110,2114,2116,2124,2131,2136,2149,2155, - 2163,2170,2174,2182,2184,2195,2203,2212,2218,2223,2229,2235,2240, - 2245,2251,2262,2264,2291,2297,2301,2313,2323,2326,2331,2338,2341, - 2350,2353,2357,2360,2372,2375,2394,2398,2406,2410,2435,2438,2447, - 2453,2459,2465,2476,2485,2507,2510,2513,2523,2525,2532,2534,2556, - 2585,2592,2600,2605,2607,2613,2620,2626,2648,2651,2660,2663,2666, - 2686,2697,2704,2711,2725,2727,2736,2745,2752,2755,2759,2763,2766 + 1621,1624,1633,1636,1639,1645,1651,1661,1664,1668,1672,1679,1682, + 1688,1694,1697,1700,1704,1714,1725,1730,1733,1737,1744,1754,1766, + 1772,1774,1783,1786,1793,1803,1809,1817,1828,1838,1849,1851,1857, + 1862,1872,1875,1881,1883,1891,1897,1900,1902,1914,1921,1925,1929, + 1933,1936,1943,1952,1955,1959,1964,1968,1971,1978,1989,1992,1996, + 2000,2009,2012,2019,2033,2037,2041,2045,2049,2053,2057,2061,2071, + 2082,2087,2100,2102,2108,2112,2114,2122,2129,2134,2147,2153,2161, + 2168,2172,2180,2182,2193,2201,2210,2216,2221,2227,2233,2238,2243, + 2249,2260,2262,2289,2295,2299,2311,2321,2324,2329,2336,2339,2348, + 2351,2355,2358,2370,2373,2392,2396,2404,2408,2433,2436,2445,2451, + 2457,2463,2474,2483,2505,2508,2511,2521,2523,2530,2532,2554,2583, + 2590,2598,2603,2605,2611,2618,2624,2646,2649,2658,2661,2664,2684, + 2695,2702,2709,2723,2725,2734,2743,2750,2753,2757,2761,2764 ]; private static __ATN: antlr.ATN; @@ -15387,8 +15378,8 @@ export class ChangeColumnDefineContext extends antlr.ParserRuleContext { public KW_CHANGE(): antlr.TerminalNode { return this.getToken(ImpalaSqlParser.KW_CHANGE, 0)!; } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(ImpalaSqlParser.KW_COLUMN, 0)!; + public columnNamePath(): ColumnNamePathContext { + return this.getRuleContext(0, ColumnNamePathContext)!; } public columnSpecWithKudu(): ColumnSpecWithKuduContext { return this.getRuleContext(0, ColumnSpecWithKuduContext)!; @@ -19801,8 +19792,8 @@ export class ColumnSpecWithKuduContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public columnSpec(): ColumnSpecContext | null { - return this.getRuleContext(0, ColumnSpecContext); + public columnSpec(): ColumnSpecContext { + return this.getRuleContext(0, ColumnSpecContext)!; } public kuduAttributes(): KuduAttributesContext[]; public kuduAttributes(i: number): KuduAttributesContext | null; diff --git a/src/lib/mysql/MySqlParser.interp b/src/lib/mysql/MySqlParser.interp index 3ca33e28..3c8fce42 100644 --- a/src/lib/mysql/MySqlParser.interp +++ b/src/lib/mysql/MySqlParser.interp @@ -1812,6 +1812,8 @@ createEvent createIndex createLogfileGroup createProcedure +createFunction +createFunctionLoadable createRole createServer createTable @@ -1833,6 +1835,7 @@ enableType indexType indexOption procedureParameter +functionParameter routineOption serverOption createDefinitions @@ -2063,7 +2066,6 @@ optimizeTable repairTable tableActionOption checkTableOption -createFunction installComponent variableExpr uninstallComponent @@ -2215,4 +2217,4 @@ functionNameBase atn: -[4, 1, 895, 8022, 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, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 1, 0, 5, 0, 836, 8, 0, 10, 0, 12, 0, 839, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 845, 8, 1, 1, 1, 3, 1, 848, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 857, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 900, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 919, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 930, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 946, 8, 7, 1, 8, 1, 8, 1, 8, 3, 8, 951, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 963, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 998, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1008, 8, 11, 1, 12, 1, 12, 1, 12, 3, 12, 1013, 8, 12, 1, 12, 1, 12, 5, 12, 1017, 8, 12, 10, 12, 12, 12, 1020, 9, 12, 1, 13, 1, 13, 3, 13, 1024, 8, 13, 1, 13, 1, 13, 3, 13, 1028, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1037, 8, 13, 1, 13, 3, 13, 1040, 8, 13, 1, 13, 3, 13, 1043, 8, 13, 1, 13, 1, 13, 3, 13, 1047, 8, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 1054, 8, 14, 1, 14, 3, 14, 1057, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1062, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 1068, 8, 14, 10, 14, 12, 14, 1071, 9, 14, 1, 14, 1, 14, 3, 14, 1075, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1080, 8, 14, 1, 14, 5, 14, 1083, 8, 14, 10, 14, 12, 14, 1086, 9, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1097, 8, 15, 1, 15, 3, 15, 1100, 8, 15, 1, 15, 1, 15, 3, 15, 1104, 8, 15, 1, 15, 3, 15, 1107, 8, 15, 1, 15, 1, 15, 3, 15, 1111, 8, 15, 1, 15, 3, 15, 1114, 8, 15, 1, 15, 1, 15, 3, 15, 1118, 8, 15, 1, 15, 3, 15, 1121, 8, 15, 1, 15, 3, 15, 1124, 8, 15, 1, 15, 1, 15, 3, 15, 1128, 8, 15, 1, 15, 3, 15, 1131, 8, 15, 1, 15, 1, 15, 3, 15, 1135, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 1141, 8, 16, 1, 16, 1, 16, 3, 16, 1145, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 1150, 8, 16, 1, 16, 1, 16, 5, 16, 1154, 8, 16, 10, 16, 12, 16, 1157, 9, 16, 1, 16, 1, 16, 5, 16, 1161, 8, 16, 10, 16, 12, 16, 1164, 9, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 3, 17, 1171, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 1187, 8, 18, 10, 18, 12, 18, 1190, 9, 18, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 1196, 8, 19, 1, 19, 1, 19, 3, 19, 1200, 8, 19, 1, 19, 1, 19, 3, 19, 1204, 8, 19, 1, 19, 1, 19, 3, 19, 1208, 8, 19, 1, 19, 5, 19, 1211, 8, 19, 10, 19, 12, 19, 1214, 9, 19, 3, 19, 1216, 8, 19, 1, 19, 3, 19, 1219, 8, 19, 1, 19, 3, 19, 1222, 8, 19, 1, 19, 3, 19, 1225, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1231, 8, 19, 1, 19, 1, 19, 3, 19, 1235, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1245, 8, 19, 1, 19, 1, 19, 3, 19, 1249, 8, 19, 1, 19, 1, 19, 3, 19, 1253, 8, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1259, 8, 19, 1, 19, 5, 19, 1262, 8, 19, 10, 19, 12, 19, 1265, 9, 19, 3, 19, 1267, 8, 19, 1, 19, 3, 19, 1270, 8, 19, 3, 19, 1272, 8, 19, 1, 20, 1, 20, 3, 20, 1276, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1283, 8, 20, 1, 20, 1, 20, 3, 20, 1287, 8, 20, 1, 20, 3, 20, 1290, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1295, 8, 20, 1, 20, 1, 20, 3, 20, 1299, 8, 20, 1, 20, 3, 20, 1302, 8, 20, 1, 20, 1, 20, 3, 20, 1306, 8, 20, 1, 20, 3, 20, 1309, 8, 20, 1, 21, 1, 21, 3, 21, 1313, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1326, 8, 21, 1, 21, 3, 21, 1329, 8, 21, 1, 21, 1, 21, 3, 21, 1333, 8, 21, 1, 21, 3, 21, 1336, 8, 21, 1, 21, 1, 21, 3, 21, 1340, 8, 21, 1, 21, 3, 21, 1343, 8, 21, 1, 21, 1, 21, 3, 21, 1347, 8, 21, 1, 21, 3, 21, 1350, 8, 21, 1, 21, 1, 21, 3, 21, 1354, 8, 21, 1, 21, 3, 21, 1357, 8, 21, 1, 21, 3, 21, 1360, 8, 21, 1, 21, 1, 21, 3, 21, 1364, 8, 21, 1, 21, 3, 21, 1367, 8, 21, 1, 21, 1, 21, 3, 21, 1371, 8, 21, 1, 21, 1, 21, 1, 22, 1, 22, 3, 22, 1377, 8, 22, 1, 22, 1, 22, 3, 22, 1381, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1393, 8, 22, 1, 22, 1, 22, 1, 23, 1, 23, 3, 23, 1399, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1408, 8, 24, 10, 24, 12, 24, 1411, 9, 24, 1, 24, 1, 24, 3, 24, 1415, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1423, 8, 24, 1, 25, 1, 25, 3, 25, 1427, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1432, 8, 25, 1, 25, 3, 25, 1435, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1440, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 1448, 8, 25, 10, 25, 12, 25, 1451, 9, 25, 1, 25, 1, 25, 3, 25, 1455, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1460, 8, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1466, 8, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1471, 8, 25, 1, 25, 1, 25, 3, 25, 1475, 8, 25, 3, 25, 1477, 8, 25, 1, 26, 3, 26, 1480, 8, 26, 1, 26, 1, 26, 3, 26, 1484, 8, 26, 1, 26, 1, 26, 3, 26, 1488, 8, 26, 1, 26, 3, 26, 1491, 8, 26, 1, 26, 1, 26, 3, 26, 1495, 8, 26, 1, 26, 1, 26, 3, 26, 1499, 8, 26, 1, 26, 1, 26, 3, 26, 1503, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1509, 8, 26, 1, 26, 3, 26, 1512, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1519, 8, 27, 1, 28, 1, 28, 1, 28, 3, 28, 1524, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 1530, 8, 29, 1, 30, 1, 30, 1, 30, 5, 30, 1535, 8, 30, 10, 30, 12, 30, 1538, 9, 30, 1, 30, 1, 30, 1, 30, 3, 30, 1543, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 1549, 8, 30, 10, 30, 12, 30, 1552, 9, 30, 3, 30, 1554, 8, 30, 1, 30, 1, 30, 1, 30, 5, 30, 1559, 8, 30, 10, 30, 12, 30, 1562, 9, 30, 3, 30, 1564, 8, 30, 3, 30, 1566, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 1572, 8, 31, 1, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1578, 8, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1595, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1602, 8, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 3, 36, 1609, 8, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1621, 8, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1626, 8, 36, 1, 36, 3, 36, 1629, 8, 36, 1, 37, 3, 37, 1632, 8, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1642, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1655, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1660, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1676, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 5, 40, 1682, 8, 40, 10, 40, 12, 40, 1685, 9, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1694, 8, 41, 1, 41, 3, 41, 1697, 8, 41, 1, 41, 1, 41, 5, 41, 1701, 8, 41, 10, 41, 12, 41, 1704, 9, 41, 1, 41, 1, 41, 3, 41, 1708, 8, 41, 1, 41, 3, 41, 1711, 8, 41, 1, 41, 1, 41, 5, 41, 1715, 8, 41, 10, 41, 12, 41, 1718, 9, 41, 1, 41, 3, 41, 1721, 8, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1726, 8, 41, 1, 41, 1, 41, 5, 41, 1730, 8, 41, 10, 41, 12, 41, 1733, 9, 41, 1, 41, 3, 41, 1736, 8, 41, 1, 41, 1, 41, 3, 41, 1740, 8, 41, 1, 41, 3, 41, 1743, 8, 41, 1, 41, 3, 41, 1746, 8, 41, 1, 41, 1, 41, 5, 41, 1750, 8, 41, 10, 41, 12, 41, 1753, 9, 41, 1, 41, 3, 41, 1756, 8, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1761, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1772, 8, 41, 1, 42, 3, 42, 1775, 8, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1782, 8, 42, 1, 42, 3, 42, 1785, 8, 42, 1, 43, 1, 43, 3, 43, 1789, 8, 43, 1, 44, 1, 44, 5, 44, 1793, 8, 44, 10, 44, 12, 44, 1796, 9, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1807, 8, 45, 1, 45, 3, 45, 1810, 8, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1815, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1828, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1835, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1841, 8, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1846, 8, 46, 1, 46, 1, 46, 3, 46, 1850, 8, 46, 1, 46, 3, 46, 1853, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1861, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1869, 8, 47, 3, 47, 1871, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1881, 8, 48, 1, 49, 1, 49, 3, 49, 1885, 8, 49, 1, 49, 3, 49, 1888, 8, 49, 1, 49, 1, 49, 3, 49, 1892, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1897, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1902, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1907, 8, 49, 1, 49, 1, 49, 3, 49, 1911, 8, 49, 1, 49, 1, 49, 3, 49, 1915, 8, 49, 1, 49, 1, 49, 3, 49, 1919, 8, 49, 1, 49, 1, 49, 3, 49, 1923, 8, 49, 1, 49, 1, 49, 3, 49, 1927, 8, 49, 1, 49, 1, 49, 3, 49, 1931, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1936, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1941, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1946, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1952, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1957, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1962, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1967, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1972, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1977, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1983, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1988, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1993, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 1998, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2003, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2008, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2013, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2018, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2025, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2030, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2035, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2040, 8, 49, 1, 49, 1, 49, 3, 49, 2044, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2049, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2057, 8, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2062, 8, 49, 1, 49, 1, 49, 1, 49, 1, 49, 3, 49, 2068, 8, 49, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2080, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2087, 8, 52, 3, 52, 2089, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 2095, 8, 52, 10, 52, 12, 52, 2098, 9, 52, 1, 52, 1, 52, 3, 52, 2102, 8, 52, 1, 53, 3, 53, 2105, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 2113, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 2119, 8, 53, 1, 53, 1, 53, 3, 53, 2123, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 2136, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 2148, 8, 53, 3, 53, 2150, 8, 53, 1, 54, 3, 54, 2153, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 2161, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 2167, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 2173, 8, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2184, 8, 55, 10, 55, 12, 55, 2187, 9, 55, 1, 55, 1, 55, 5, 55, 2191, 8, 55, 10, 55, 12, 55, 2194, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2200, 8, 55, 10, 55, 12, 55, 2203, 9, 55, 1, 55, 1, 55, 3, 55, 2207, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2216, 8, 55, 10, 55, 12, 55, 2219, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2225, 8, 55, 10, 55, 12, 55, 2228, 9, 55, 1, 55, 1, 55, 3, 55, 2232, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2242, 8, 55, 10, 55, 12, 55, 2245, 9, 55, 1, 55, 1, 55, 5, 55, 2249, 8, 55, 10, 55, 12, 55, 2252, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2258, 8, 55, 10, 55, 12, 55, 2261, 9, 55, 1, 55, 1, 55, 3, 55, 2265, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2275, 8, 55, 10, 55, 12, 55, 2278, 9, 55, 1, 55, 1, 55, 5, 55, 2282, 8, 55, 10, 55, 12, 55, 2285, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2291, 8, 55, 10, 55, 12, 55, 2294, 9, 55, 1, 55, 1, 55, 3, 55, 2298, 8, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2303, 8, 55, 10, 55, 12, 55, 2306, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2312, 8, 55, 10, 55, 12, 55, 2315, 9, 55, 1, 55, 1, 55, 3, 55, 2319, 8, 55, 3, 55, 2321, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 2326, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 4, 57, 2332, 8, 57, 11, 57, 12, 57, 2333, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 5, 58, 2341, 8, 58, 10, 58, 12, 58, 2344, 9, 58, 1, 59, 3, 59, 2347, 8, 59, 1, 59, 3, 59, 2350, 8, 59, 1, 59, 1, 59, 3, 59, 2354, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2359, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2365, 8, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2371, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2376, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2381, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2386, 8, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2391, 8, 59, 1, 59, 3, 59, 2394, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 2399, 8, 60, 1, 60, 4, 60, 2402, 8, 60, 11, 60, 12, 60, 2403, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2414, 8, 60, 1, 61, 1, 61, 3, 61, 2418, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2425, 8, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2430, 8, 61, 1, 61, 3, 61, 2433, 8, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2438, 8, 61, 1, 61, 3, 61, 2441, 8, 61, 1, 61, 1, 61, 3, 61, 2445, 8, 61, 1, 61, 1, 61, 3, 61, 2449, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 2455, 8, 62, 10, 62, 12, 62, 2458, 9, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2476, 8, 64, 1, 64, 3, 64, 2479, 8, 64, 1, 64, 3, 64, 2482, 8, 64, 1, 64, 1, 64, 3, 64, 2486, 8, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 2494, 8, 65, 10, 65, 12, 65, 2497, 9, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 2507, 8, 66, 10, 66, 12, 66, 2510, 9, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 2520, 8, 67, 10, 67, 12, 67, 2523, 9, 67, 3, 67, 2525, 8, 67, 1, 67, 1, 67, 5, 67, 2529, 8, 67, 10, 67, 12, 67, 2532, 9, 67, 3, 67, 2534, 8, 67, 1, 68, 1, 68, 3, 68, 2538, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2547, 8, 68, 1, 68, 3, 68, 2550, 8, 68, 1, 68, 3, 68, 2553, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2558, 8, 68, 1, 68, 1, 68, 3, 68, 2562, 8, 68, 1, 68, 3, 68, 2565, 8, 68, 1, 68, 1, 68, 3, 68, 2569, 8, 68, 1, 68, 1, 68, 3, 68, 2573, 8, 68, 1, 68, 3, 68, 2576, 8, 68, 1, 68, 1, 68, 3, 68, 2580, 8, 68, 1, 68, 3, 68, 2583, 8, 68, 1, 68, 1, 68, 3, 68, 2587, 8, 68, 1, 68, 3, 68, 2590, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2596, 8, 69, 1, 69, 3, 69, 2599, 8, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2604, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2612, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 3, 69, 2618, 8, 69, 1, 69, 1, 69, 3, 69, 2622, 8, 69, 1, 70, 1, 70, 3, 70, 2626, 8, 70, 1, 70, 5, 70, 2629, 8, 70, 10, 70, 12, 70, 2632, 9, 70, 1, 70, 1, 70, 3, 70, 2636, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2643, 8, 70, 1, 70, 1, 70, 3, 70, 2647, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 2656, 8, 70, 10, 70, 12, 70, 2659, 9, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2666, 8, 70, 1, 70, 3, 70, 2669, 8, 70, 1, 70, 1, 70, 5, 70, 2673, 8, 70, 10, 70, 12, 70, 2676, 9, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2681, 8, 70, 1, 70, 3, 70, 2684, 8, 70, 1, 70, 1, 70, 5, 70, 2688, 8, 70, 10, 70, 12, 70, 2691, 9, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2696, 8, 70, 3, 70, 2698, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2703, 8, 70, 1, 70, 1, 70, 5, 70, 2707, 8, 70, 10, 70, 12, 70, 2710, 9, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2715, 8, 70, 3, 70, 2717, 8, 70, 1, 70, 1, 70, 3, 70, 2721, 8, 70, 1, 70, 3, 70, 2724, 8, 70, 1, 70, 3, 70, 2727, 8, 70, 1, 70, 1, 70, 5, 70, 2731, 8, 70, 10, 70, 12, 70, 2734, 9, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2739, 8, 70, 3, 70, 2741, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2746, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2753, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2762, 8, 70, 1, 70, 3, 70, 2765, 8, 70, 1, 70, 1, 70, 3, 70, 2769, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2774, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2784, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2793, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2801, 8, 70, 1, 70, 3, 70, 2804, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2812, 8, 70, 1, 70, 3, 70, 2815, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2822, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2827, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2835, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2851, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2856, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2863, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2882, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2888, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2896, 8, 71, 10, 71, 12, 71, 2899, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2910, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2917, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2924, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2937, 8, 71, 10, 71, 12, 71, 2940, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2952, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2958, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2964, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2970, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2976, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2982, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2988, 8, 71, 1, 72, 1, 72, 1, 72, 3, 72, 2993, 8, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 3, 73, 3000, 8, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 3, 74, 3007, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3014, 8, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3019, 8, 74, 1, 74, 5, 74, 3022, 8, 74, 10, 74, 12, 74, 3025, 9, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 3033, 8, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 3, 76, 3040, 8, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 3, 77, 3047, 8, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 3, 78, 3054, 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 3, 79, 3063, 8, 79, 1, 79, 1, 79, 1, 80, 1, 80, 3, 80, 3069, 8, 80, 1, 80, 1, 80, 3, 80, 3073, 8, 80, 1, 80, 1, 80, 3, 80, 3077, 8, 80, 1, 81, 1, 81, 3, 81, 3081, 8, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 3087, 8, 81, 1, 81, 3, 81, 3090, 8, 81, 1, 82, 1, 82, 1, 82, 3, 82, 3095, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 3, 83, 3102, 8, 83, 1, 83, 1, 83, 1, 83, 5, 83, 3107, 8, 83, 10, 83, 12, 83, 3110, 9, 83, 1, 83, 3, 83, 3113, 8, 83, 1, 84, 1, 84, 1, 84, 3, 84, 3118, 8, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 3128, 8, 85, 1, 85, 1, 85, 1, 85, 1, 85, 5, 85, 3134, 8, 85, 10, 85, 12, 85, 3137, 9, 85, 1, 85, 1, 85, 1, 85, 3, 85, 3142, 8, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 5, 86, 3149, 8, 86, 10, 86, 12, 86, 3152, 9, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 3, 88, 3160, 8, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 3169, 8, 89, 1, 89, 3, 89, 3172, 8, 89, 1, 90, 1, 90, 3, 90, 3176, 8, 90, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 3185, 8, 92, 1, 93, 1, 93, 3, 93, 3189, 8, 93, 1, 93, 3, 93, 3192, 8, 93, 1, 93, 3, 93, 3195, 8, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 3201, 8, 93, 1, 93, 3, 93, 3204, 8, 93, 1, 93, 3, 93, 3207, 8, 93, 1, 93, 1, 93, 3, 93, 3211, 8, 93, 1, 93, 3, 93, 3214, 8, 93, 1, 93, 3, 93, 3217, 8, 93, 1, 93, 3, 93, 3220, 8, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 5, 93, 3229, 8, 93, 10, 93, 12, 93, 3232, 9, 93, 3, 93, 3234, 8, 93, 1, 94, 1, 94, 1, 94, 3, 94, 3239, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 3245, 8, 95, 1, 96, 1, 96, 1, 96, 3, 96, 3250, 8, 96, 1, 96, 4, 96, 3253, 8, 96, 11, 96, 12, 96, 3254, 1, 97, 3, 97, 3258, 8, 97, 1, 97, 1, 97, 3, 97, 3262, 8, 97, 1, 98, 1, 98, 1, 98, 3, 98, 3267, 8, 98, 1, 98, 3, 98, 3270, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3275, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3285, 8, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3290, 8, 98, 1, 98, 1, 98, 4, 98, 3294, 8, 98, 11, 98, 12, 98, 3295, 3, 98, 3298, 8, 98, 1, 98, 1, 98, 4, 98, 3302, 8, 98, 11, 98, 12, 98, 3303, 3, 98, 3306, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3312, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 5, 98, 3318, 8, 98, 10, 98, 12, 98, 3321, 9, 98, 1, 98, 1, 98, 3, 98, 3325, 8, 98, 1, 98, 1, 98, 1, 98, 1, 98, 5, 98, 3331, 8, 98, 10, 98, 12, 98, 3334, 9, 98, 3, 98, 3336, 8, 98, 1, 99, 1, 99, 1, 99, 3, 99, 3341, 8, 99, 1, 99, 3, 99, 3344, 8, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3349, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3357, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3363, 8, 99, 1, 99, 1, 99, 3, 99, 3367, 8, 99, 3, 99, 3369, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3375, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 3381, 8, 99, 10, 99, 12, 99, 3384, 9, 99, 1, 99, 1, 99, 3, 99, 3388, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 3394, 8, 99, 10, 99, 12, 99, 3397, 9, 99, 3, 99, 3399, 8, 99, 1, 100, 1, 100, 1, 100, 3, 100, 3404, 8, 100, 1, 100, 3, 100, 3407, 8, 100, 1, 100, 1, 100, 3, 100, 3411, 8, 100, 1, 100, 3, 100, 3414, 8, 100, 1, 100, 3, 100, 3417, 8, 100, 1, 101, 1, 101, 3, 101, 3421, 8, 101, 1, 101, 3, 101, 3424, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3432, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3438, 8, 101, 1, 101, 1, 101, 3, 101, 3442, 8, 101, 1, 102, 1, 102, 5, 102, 3446, 8, 102, 10, 102, 12, 102, 3449, 9, 102, 1, 102, 1, 102, 3, 102, 3453, 8, 102, 1, 102, 1, 102, 3, 102, 3457, 8, 102, 3, 102, 3459, 8, 102, 1, 102, 1, 102, 5, 102, 3463, 8, 102, 10, 102, 12, 102, 3466, 9, 102, 1, 102, 3, 102, 3469, 8, 102, 1, 102, 3, 102, 3472, 8, 102, 1, 102, 3, 102, 3475, 8, 102, 1, 102, 3, 102, 3478, 8, 102, 1, 102, 1, 102, 5, 102, 3482, 8, 102, 10, 102, 12, 102, 3485, 9, 102, 1, 102, 1, 102, 3, 102, 3489, 8, 102, 1, 102, 3, 102, 3492, 8, 102, 1, 102, 3, 102, 3495, 8, 102, 1, 102, 3, 102, 3498, 8, 102, 1, 102, 3, 102, 3501, 8, 102, 3, 102, 3503, 8, 102, 1, 103, 3, 103, 3506, 8, 103, 1, 103, 1, 103, 3, 103, 3510, 8, 103, 1, 103, 3, 103, 3513, 8, 103, 1, 103, 3, 103, 3516, 8, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3524, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3530, 8, 104, 1, 104, 5, 104, 3533, 8, 104, 10, 104, 12, 104, 3536, 9, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 3, 105, 3544, 8, 105, 1, 105, 5, 105, 3547, 8, 105, 10, 105, 12, 105, 3550, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 3556, 8, 106, 1, 106, 3, 106, 3559, 8, 106, 1, 106, 3, 106, 3562, 8, 106, 1, 106, 1, 106, 3, 106, 3566, 8, 106, 1, 107, 1, 107, 3, 107, 3570, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 3576, 8, 108, 1, 108, 1, 108, 3, 108, 3580, 8, 108, 1, 109, 1, 109, 1, 109, 5, 109, 3585, 8, 109, 10, 109, 12, 109, 3588, 9, 109, 1, 109, 3, 109, 3591, 8, 109, 1, 109, 3, 109, 3594, 8, 109, 1, 109, 3, 109, 3597, 8, 109, 1, 110, 1, 110, 1, 110, 3, 110, 3602, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 3609, 8, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 5, 112, 3617, 8, 112, 10, 112, 12, 112, 3620, 9, 112, 1, 113, 1, 113, 1, 113, 1, 113, 5, 113, 3626, 8, 113, 10, 113, 12, 113, 3629, 9, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 3, 115, 3637, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 3645, 8, 116, 10, 116, 12, 116, 3648, 9, 116, 3, 116, 3650, 8, 116, 1, 116, 1, 116, 3, 116, 3654, 8, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 3660, 8, 116, 1, 117, 1, 117, 3, 117, 3664, 8, 117, 1, 117, 3, 117, 3667, 8, 117, 1, 117, 3, 117, 3670, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3675, 8, 117, 1, 117, 3, 117, 3678, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3685, 8, 117, 1, 117, 1, 117, 3, 117, 3689, 8, 117, 1, 117, 3, 117, 3692, 8, 117, 1, 117, 1, 117, 3, 117, 3696, 8, 117, 1, 118, 1, 118, 3, 118, 3700, 8, 118, 1, 118, 3, 118, 3703, 8, 118, 1, 118, 3, 118, 3706, 8, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3711, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3717, 8, 118, 5, 118, 3719, 8, 118, 10, 118, 12, 118, 3722, 9, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3731, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3737, 8, 118, 5, 118, 3739, 8, 118, 10, 118, 12, 118, 3742, 9, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3747, 8, 118, 1, 118, 1, 118, 3, 118, 3751, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3757, 8, 119, 1, 119, 3, 119, 3760, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3772, 8, 120, 1, 120, 1, 120, 3, 120, 3776, 8, 120, 1, 120, 1, 120, 3, 120, 3780, 8, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3788, 8, 121, 1, 121, 1, 121, 3, 121, 3792, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 5, 123, 3804, 8, 123, 10, 123, 12, 123, 3807, 9, 123, 1, 124, 1, 124, 3, 124, 3811, 8, 124, 1, 124, 3, 124, 3814, 8, 124, 1, 124, 1, 124, 3, 124, 3818, 8, 124, 1, 124, 3, 124, 3821, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 5, 124, 3827, 8, 124, 10, 124, 12, 124, 3830, 9, 124, 1, 124, 1, 124, 3, 124, 3834, 8, 124, 1, 124, 3, 124, 3837, 8, 124, 1, 124, 3, 124, 3840, 8, 124, 1, 125, 1, 125, 3, 125, 3844, 8, 125, 1, 125, 3, 125, 3847, 8, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 5, 125, 3854, 8, 125, 10, 125, 12, 125, 3857, 9, 125, 1, 125, 1, 125, 3, 125, 3861, 8, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 5, 126, 3868, 8, 126, 10, 126, 12, 126, 3871, 9, 126, 1, 127, 1, 127, 3, 127, 3875, 8, 127, 1, 128, 1, 128, 1, 128, 5, 128, 3880, 8, 128, 10, 128, 12, 128, 3883, 9, 128, 1, 129, 1, 129, 5, 129, 3887, 8, 129, 10, 129, 12, 129, 3890, 9, 129, 1, 129, 1, 129, 1, 129, 5, 129, 3895, 8, 129, 10, 129, 12, 129, 3898, 9, 129, 1, 129, 1, 129, 1, 129, 3, 129, 3903, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 3911, 8, 130, 1, 130, 3, 130, 3914, 8, 130, 1, 130, 3, 130, 3917, 8, 130, 1, 130, 1, 130, 1, 130, 5, 130, 3922, 8, 130, 10, 130, 12, 130, 3925, 9, 130, 3, 130, 3927, 8, 130, 1, 130, 3, 130, 3930, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 3937, 8, 130, 1, 130, 3, 130, 3940, 8, 130, 1, 130, 1, 130, 3, 130, 3944, 8, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 3950, 8, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 3960, 8, 132, 1, 132, 1, 132, 3, 132, 3964, 8, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3973, 8, 133, 1, 134, 3, 134, 3976, 8, 134, 1, 134, 1, 134, 3, 134, 3980, 8, 134, 1, 134, 1, 134, 5, 134, 3984, 8, 134, 10, 134, 12, 134, 3987, 9, 134, 1, 134, 1, 134, 1, 134, 5, 134, 3992, 8, 134, 10, 134, 12, 134, 3995, 9, 134, 1, 134, 1, 134, 3, 134, 3999, 8, 134, 1, 134, 1, 134, 3, 134, 4003, 8, 134, 1, 134, 1, 134, 5, 134, 4007, 8, 134, 10, 134, 12, 134, 4010, 9, 134, 1, 134, 1, 134, 1, 134, 3, 134, 4015, 8, 134, 1, 134, 3, 134, 4018, 8, 134, 3, 134, 4020, 8, 134, 1, 134, 1, 134, 3, 134, 4024, 8, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 4033, 8, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 4043, 8, 136, 1, 137, 1, 137, 5, 137, 4047, 8, 137, 10, 137, 12, 137, 4050, 9, 137, 1, 137, 1, 137, 3, 137, 4054, 8, 137, 1, 137, 1, 137, 3, 137, 4058, 8, 137, 1, 137, 3, 137, 4061, 8, 137, 1, 137, 3, 137, 4064, 8, 137, 1, 137, 3, 137, 4067, 8, 137, 1, 137, 3, 137, 4070, 8, 137, 1, 137, 3, 137, 4073, 8, 137, 1, 138, 1, 138, 3, 138, 4077, 8, 138, 1, 138, 1, 138, 3, 138, 4081, 8, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 4089, 8, 139, 1, 139, 1, 139, 3, 139, 4093, 8, 139, 1, 139, 3, 139, 4096, 8, 139, 3, 139, 4098, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 3, 140, 4111, 8, 140, 1, 140, 3, 140, 4114, 8, 140, 1, 141, 1, 141, 1, 141, 5, 141, 4119, 8, 141, 10, 141, 12, 141, 4122, 9, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 4131, 8, 142, 1, 142, 3, 142, 4134, 8, 142, 1, 142, 1, 142, 1, 142, 3, 142, 4139, 8, 142, 3, 142, 4141, 8, 142, 1, 142, 1, 142, 3, 142, 4145, 8, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 4153, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 4159, 8, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 4168, 8, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 4181, 8, 145, 1, 146, 1, 146, 3, 146, 4185, 8, 146, 1, 146, 1, 146, 5, 146, 4189, 8, 146, 10, 146, 12, 146, 4192, 9, 146, 1, 147, 1, 147, 3, 147, 4196, 8, 147, 1, 147, 1, 147, 3, 147, 4200, 8, 147, 1, 147, 3, 147, 4203, 8, 147, 1, 147, 1, 147, 3, 147, 4207, 8, 147, 1, 147, 3, 147, 4210, 8, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 4218, 8, 147, 1, 147, 3, 147, 4221, 8, 147, 3, 147, 4223, 8, 147, 1, 148, 1, 148, 1, 148, 1, 148, 5, 148, 4229, 8, 148, 10, 148, 12, 148, 4232, 9, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 4243, 8, 148, 1, 148, 1, 148, 4, 148, 4247, 8, 148, 11, 148, 12, 148, 4248, 3, 148, 4251, 8, 148, 1, 148, 1, 148, 4, 148, 4255, 8, 148, 11, 148, 12, 148, 4256, 3, 148, 4259, 8, 148, 3, 148, 4261, 8, 148, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 4267, 8, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 4275, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 4283, 8, 150, 1, 151, 1, 151, 3, 151, 4287, 8, 151, 1, 151, 1, 151, 3, 151, 4291, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 5, 152, 4298, 8, 152, 10, 152, 12, 152, 4301, 9, 152, 1, 152, 1, 152, 3, 152, 4305, 8, 152, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 4323, 8, 154, 10, 154, 12, 154, 4326, 9, 154, 1, 155, 1, 155, 3, 155, 4330, 8, 155, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 4336, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 4343, 8, 156, 1, 157, 1, 157, 1, 157, 3, 157, 4348, 8, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 5, 158, 4355, 8, 158, 10, 158, 12, 158, 4358, 9, 158, 3, 158, 4360, 8, 158, 1, 159, 1, 159, 3, 159, 4364, 8, 159, 1, 160, 1, 160, 3, 160, 4368, 8, 160, 1, 160, 1, 160, 3, 160, 4372, 8, 160, 1, 160, 3, 160, 4375, 8, 160, 1, 160, 3, 160, 4378, 8, 160, 1, 160, 3, 160, 4381, 8, 160, 1, 161, 1, 161, 3, 161, 4385, 8, 161, 1, 161, 1, 161, 3, 161, 4389, 8, 161, 1, 161, 3, 161, 4392, 8, 161, 1, 161, 3, 161, 4395, 8, 161, 1, 161, 3, 161, 4398, 8, 161, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 3, 163, 4405, 8, 163, 1, 163, 1, 163, 3, 163, 4409, 8, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 5, 165, 4422, 8, 165, 10, 165, 12, 165, 4425, 9, 165, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 3, 168, 4437, 8, 168, 1, 168, 1, 168, 1, 168, 1, 168, 5, 168, 4443, 8, 168, 10, 168, 12, 168, 4446, 9, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 3, 169, 4455, 8, 169, 1, 170, 1, 170, 3, 170, 4459, 8, 170, 1, 170, 3, 170, 4462, 8, 170, 1, 170, 1, 170, 1, 171, 1, 171, 3, 171, 4468, 8, 171, 1, 171, 3, 171, 4471, 8, 171, 1, 171, 3, 171, 4474, 8, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4483, 8, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 4492, 8, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 5, 174, 4500, 8, 174, 10, 174, 12, 174, 4503, 9, 174, 1, 174, 3, 174, 4506, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 5, 175, 4514, 8, 175, 10, 175, 12, 175, 4517, 9, 175, 1, 175, 3, 175, 4520, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 5, 176, 4529, 8, 176, 10, 176, 12, 176, 4532, 9, 176, 1, 176, 3, 176, 4535, 8, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4544, 8, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 5, 178, 4551, 8, 178, 10, 178, 12, 178, 4554, 9, 178, 3, 178, 4556, 8, 178, 1, 178, 1, 178, 3, 178, 4560, 8, 178, 1, 178, 5, 178, 4563, 8, 178, 10, 178, 12, 178, 4566, 9, 178, 1, 178, 3, 178, 4569, 8, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 5, 179, 4576, 8, 179, 10, 179, 12, 179, 4579, 9, 179, 3, 179, 4581, 8, 179, 1, 179, 3, 179, 4584, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 4591, 8, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 4597, 8, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 4603, 8, 180, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4627, 8, 182, 10, 182, 12, 182, 4630, 9, 182, 3, 182, 4632, 8, 182, 1, 182, 3, 182, 4635, 8, 182, 1, 183, 1, 183, 1, 184, 1, 184, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 3, 186, 4654, 8, 186, 3, 186, 4656, 8, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 5, 187, 4677, 8, 187, 10, 187, 12, 187, 4680, 9, 187, 3, 187, 4682, 8, 187, 1, 187, 3, 187, 4685, 8, 187, 1, 188, 1, 188, 1, 189, 1, 189, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 4704, 8, 191, 3, 191, 4706, 8, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 4718, 8, 193, 10, 193, 12, 193, 4721, 9, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 4731, 8, 193, 10, 193, 12, 193, 4734, 9, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 5, 193, 4768, 8, 193, 10, 193, 12, 193, 4771, 9, 193, 1, 193, 1, 193, 3, 193, 4775, 8, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 3, 196, 4810, 8, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 3, 197, 4824, 8, 197, 1, 198, 1, 198, 1, 198, 5, 198, 4829, 8, 198, 10, 198, 12, 198, 4832, 9, 198, 1, 198, 3, 198, 4835, 8, 198, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4841, 8, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 4849, 8, 200, 3, 200, 4851, 8, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 4862, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 3, 204, 4872, 8, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 3, 205, 4879, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4885, 8, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 3, 208, 4893, 8, 208, 1, 209, 1, 209, 1, 209, 3, 209, 4898, 8, 209, 1, 209, 1, 209, 1, 209, 1, 209, 5, 209, 4904, 8, 209, 10, 209, 12, 209, 4907, 9, 209, 1, 209, 1, 209, 1, 209, 5, 209, 4912, 8, 209, 10, 209, 12, 209, 4915, 9, 209, 1, 209, 1, 209, 1, 209, 5, 209, 4920, 8, 209, 10, 209, 12, 209, 4923, 9, 209, 1, 209, 1, 209, 1, 209, 5, 209, 4928, 8, 209, 10, 209, 12, 209, 4931, 9, 209, 1, 209, 5, 209, 4934, 8, 209, 10, 209, 12, 209, 4937, 9, 209, 1, 209, 1, 209, 3, 209, 4941, 8, 209, 1, 210, 1, 210, 1, 210, 3, 210, 4946, 8, 210, 1, 210, 4, 210, 4949, 8, 210, 11, 210, 12, 210, 4950, 1, 210, 1, 210, 4, 210, 4955, 8, 210, 11, 210, 12, 210, 4956, 3, 210, 4959, 8, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 4, 211, 4968, 8, 211, 11, 211, 12, 211, 4969, 1, 211, 5, 211, 4973, 8, 211, 10, 211, 12, 211, 4976, 9, 211, 1, 211, 1, 211, 4, 211, 4980, 8, 211, 11, 211, 12, 211, 4981, 3, 211, 4984, 8, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 3, 214, 4998, 8, 214, 1, 214, 1, 214, 4, 214, 5002, 8, 214, 11, 214, 12, 214, 5003, 1, 214, 1, 214, 1, 214, 3, 214, 5009, 8, 214, 1, 215, 1, 215, 1, 215, 3, 215, 5014, 8, 215, 1, 215, 1, 215, 4, 215, 5018, 8, 215, 11, 215, 12, 215, 5019, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 3, 215, 5027, 8, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 3, 217, 5035, 8, 217, 1, 217, 1, 217, 1, 217, 1, 217, 4, 217, 5041, 8, 217, 11, 217, 12, 217, 5042, 1, 217, 1, 217, 1, 217, 3, 217, 5048, 8, 217, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5054, 8, 218, 1, 218, 3, 218, 5057, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5065, 8, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 3, 219, 5072, 8, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 3, 220, 5081, 8, 220, 1, 220, 3, 220, 5084, 8, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 5, 222, 5099, 8, 222, 10, 222, 12, 222, 5102, 9, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 3, 223, 5109, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5117, 8, 223, 1, 224, 1, 224, 3, 224, 5121, 8, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 3, 225, 5128, 8, 225, 1, 225, 1, 225, 4, 225, 5132, 8, 225, 11, 225, 12, 225, 5133, 1, 226, 1, 226, 1, 226, 1, 226, 4, 226, 5140, 8, 226, 11, 226, 12, 226, 5141, 1, 227, 1, 227, 1, 227, 3, 227, 5147, 8, 227, 1, 227, 1, 227, 1, 227, 5, 227, 5152, 8, 227, 10, 227, 12, 227, 5155, 9, 227, 1, 227, 1, 227, 1, 227, 5, 227, 5160, 8, 227, 10, 227, 12, 227, 5163, 9, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5169, 8, 227, 1, 227, 5, 227, 5172, 8, 227, 10, 227, 12, 227, 5175, 9, 227, 3, 227, 5177, 8, 227, 3, 227, 5179, 8, 227, 1, 227, 1, 227, 4, 227, 5183, 8, 227, 11, 227, 12, 227, 5184, 3, 227, 5187, 8, 227, 1, 227, 1, 227, 5, 227, 5191, 8, 227, 10, 227, 12, 227, 5194, 9, 227, 1, 227, 1, 227, 3, 227, 5198, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5205, 8, 227, 1, 228, 1, 228, 1, 228, 3, 228, 5210, 8, 228, 1, 228, 1, 228, 3, 228, 5214, 8, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5219, 8, 228, 5, 228, 5221, 8, 228, 10, 228, 12, 228, 5224, 9, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5229, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5235, 8, 228, 1, 228, 5, 228, 5238, 8, 228, 10, 228, 12, 228, 5241, 9, 228, 3, 228, 5243, 8, 228, 3, 228, 5245, 8, 228, 1, 228, 1, 228, 4, 228, 5249, 8, 228, 11, 228, 12, 228, 5250, 3, 228, 5253, 8, 228, 1, 228, 1, 228, 5, 228, 5257, 8, 228, 10, 228, 12, 228, 5260, 9, 228, 1, 228, 1, 228, 3, 228, 5264, 8, 228, 1, 229, 1, 229, 1, 229, 3, 229, 5269, 8, 229, 1, 229, 1, 229, 1, 229, 5, 229, 5274, 8, 229, 10, 229, 12, 229, 5277, 9, 229, 1, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5283, 8, 230, 10, 230, 12, 230, 5286, 9, 230, 1, 230, 1, 230, 3, 230, 5290, 8, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5297, 8, 230, 10, 230, 12, 230, 5300, 9, 230, 1, 230, 3, 230, 5303, 8, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5309, 8, 230, 1, 230, 5, 230, 5312, 8, 230, 10, 230, 12, 230, 5315, 9, 230, 3, 230, 5317, 8, 230, 3, 230, 5319, 8, 230, 1, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5325, 8, 230, 10, 230, 12, 230, 5328, 9, 230, 3, 230, 5330, 8, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5337, 8, 230, 3, 230, 5339, 8, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5344, 8, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5349, 8, 230, 10, 230, 12, 230, 5352, 9, 230, 1, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5358, 8, 230, 10, 230, 12, 230, 5361, 9, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5366, 8, 230, 3, 230, 5368, 8, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 3, 231, 5375, 8, 231, 1, 231, 3, 231, 5378, 8, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 5, 232, 5388, 8, 232, 10, 232, 12, 232, 5391, 9, 232, 1, 232, 1, 232, 1, 232, 3, 232, 5396, 8, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 5404, 8, 233, 1, 233, 3, 233, 5407, 8, 233, 1, 233, 1, 233, 3, 233, 5411, 8, 233, 1, 233, 3, 233, 5414, 8, 233, 1, 233, 1, 233, 3, 233, 5418, 8, 233, 3, 233, 5420, 8, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5431, 8, 234, 1, 234, 3, 234, 5434, 8, 234, 1, 234, 1, 234, 3, 234, 5438, 8, 234, 1, 234, 3, 234, 5441, 8, 234, 1, 234, 3, 234, 5444, 8, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 3, 235, 5451, 8, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 5, 236, 5461, 8, 236, 10, 236, 12, 236, 5464, 9, 236, 3, 236, 5466, 8, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 3, 237, 5473, 8, 237, 1, 237, 1, 237, 5, 237, 5477, 8, 237, 10, 237, 12, 237, 5480, 9, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 5, 238, 5487, 8, 238, 10, 238, 12, 238, 5490, 9, 238, 1, 239, 1, 239, 3, 239, 5494, 8, 239, 1, 239, 1, 239, 1, 239, 5, 239, 5499, 8, 239, 10, 239, 12, 239, 5502, 9, 239, 1, 239, 1, 239, 3, 239, 5506, 8, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 5512, 8, 239, 1, 239, 1, 239, 3, 239, 5516, 8, 239, 1, 239, 1, 239, 3, 239, 5520, 8, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 5528, 8, 239, 1, 239, 1, 239, 3, 239, 5532, 8, 239, 1, 239, 1, 239, 3, 239, 5536, 8, 239, 1, 239, 1, 239, 1, 239, 1, 239, 3, 239, 5542, 8, 239, 3, 239, 5544, 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5556, 8, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5561, 8, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5567, 8, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5573, 8, 242, 1, 242, 1, 242, 3, 242, 5577, 8, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5582, 8, 242, 3, 242, 5584, 8, 242, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 3, 244, 5608, 8, 244, 4, 244, 5610, 8, 244, 11, 244, 12, 244, 5611, 1, 244, 3, 244, 5615, 8, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5624, 8, 245, 1, 245, 1, 245, 3, 245, 5628, 8, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5637, 8, 245, 1, 245, 1, 245, 3, 245, 5641, 8, 245, 1, 245, 1, 245, 3, 245, 5645, 8, 245, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5651, 8, 245, 3, 245, 5653, 8, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 5662, 8, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 5672, 8, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5699, 8, 247, 1, 248, 1, 248, 3, 248, 5703, 8, 248, 1, 248, 1, 248, 1, 248, 3, 248, 5708, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5715, 8, 249, 1, 249, 3, 249, 5718, 8, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5724, 8, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 3, 250, 5734, 8, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 3, 251, 5744, 8, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5754, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5760, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5769, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5775, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5782, 8, 252, 3, 252, 5784, 8, 252, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 3, 254, 5792, 8, 254, 1, 254, 1, 254, 1, 254, 1, 254, 3, 254, 5798, 8, 254, 1, 254, 1, 254, 3, 254, 5802, 8, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5819, 8, 255, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 5829, 8, 257, 1, 258, 1, 258, 3, 258, 5833, 8, 258, 1, 258, 1, 258, 3, 258, 5837, 8, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 5847, 8, 258, 1, 258, 1, 258, 1, 258, 3, 258, 5852, 8, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 5924, 8, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 3, 259, 5942, 8, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 3, 261, 5950, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5956, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5968, 8, 261, 1, 261, 1, 261, 3, 261, 5972, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5983, 8, 261, 1, 261, 1, 261, 3, 261, 5987, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5996, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 6002, 8, 262, 10, 262, 12, 262, 6005, 9, 262, 1, 263, 1, 263, 1, 263, 1, 263, 3, 263, 6011, 8, 263, 1, 264, 1, 264, 3, 264, 6015, 8, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 3, 265, 6022, 8, 265, 1, 265, 1, 265, 1, 265, 3, 265, 6027, 8, 265, 1, 265, 3, 265, 6030, 8, 265, 1, 265, 3, 265, 6033, 8, 265, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 3, 267, 6044, 8, 267, 1, 268, 1, 268, 3, 268, 6048, 8, 268, 1, 268, 1, 268, 3, 268, 6052, 8, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 5, 269, 6065, 8, 269, 10, 269, 12, 269, 6068, 9, 269, 1, 269, 1, 269, 1, 269, 1, 269, 5, 269, 6074, 8, 269, 10, 269, 12, 269, 6077, 9, 269, 3, 269, 6079, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 5, 271, 6091, 8, 271, 10, 271, 12, 271, 6094, 9, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 6111, 8, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 6124, 8, 274, 1, 274, 3, 274, 6127, 8, 274, 1, 274, 1, 274, 3, 274, 6131, 8, 274, 1, 274, 3, 274, 6134, 8, 274, 3, 274, 6136, 8, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 6143, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 6150, 8, 275, 5, 275, 6152, 8, 275, 10, 275, 12, 275, 6155, 9, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 6161, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 6168, 8, 275, 1, 275, 3, 275, 6171, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 5, 275, 6185, 8, 275, 10, 275, 12, 275, 6188, 9, 275, 3, 275, 6190, 8, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6200, 8, 276, 1, 276, 1, 276, 3, 276, 6204, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6210, 8, 276, 1, 276, 3, 276, 6213, 8, 276, 1, 276, 3, 276, 6216, 8, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6221, 8, 276, 1, 276, 1, 276, 3, 276, 6225, 8, 276, 1, 276, 3, 276, 6228, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6235, 8, 276, 1, 276, 3, 276, 6238, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6244, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6280, 8, 276, 1, 276, 3, 276, 6283, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6295, 8, 276, 1, 276, 3, 276, 6298, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6314, 8, 276, 3, 276, 6316, 8, 276, 1, 276, 1, 276, 3, 276, 6320, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6327, 8, 276, 1, 276, 1, 276, 3, 276, 6331, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6338, 8, 276, 1, 276, 3, 276, 6341, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 6348, 8, 276, 10, 276, 12, 276, 6351, 9, 276, 3, 276, 6353, 8, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6358, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6364, 8, 276, 3, 276, 6366, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6372, 8, 276, 1, 276, 1, 276, 3, 276, 6376, 8, 276, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 6382, 8, 277, 1, 277, 3, 277, 6385, 8, 277, 1, 277, 3, 277, 6388, 8, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6401, 8, 278, 1, 278, 3, 278, 6404, 8, 278, 1, 279, 1, 279, 1, 279, 1, 279, 3, 279, 6410, 8, 279, 1, 280, 3, 280, 6413, 8, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 6421, 8, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 6429, 8, 280, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 6435, 8, 281, 1, 281, 3, 281, 6438, 8, 281, 1, 281, 1, 281, 3, 281, 6442, 8, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 3, 282, 6456, 8, 282, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 5, 284, 6466, 8, 284, 10, 284, 12, 284, 6469, 9, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6476, 8, 284, 1, 284, 1, 284, 3, 284, 6480, 8, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 3, 285, 6487, 8, 285, 1, 285, 1, 285, 1, 285, 5, 285, 6492, 8, 285, 10, 285, 12, 285, 6495, 9, 285, 1, 286, 1, 286, 3, 286, 6499, 8, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 1, 287, 5, 287, 6510, 8, 287, 10, 287, 12, 287, 6513, 9, 287, 1, 288, 1, 288, 1, 288, 1, 288, 5, 288, 6519, 8, 288, 10, 288, 12, 288, 6522, 9, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 6529, 8, 289, 1, 290, 1, 290, 1, 290, 3, 290, 6534, 8, 290, 1, 290, 3, 290, 6537, 8, 290, 1, 291, 1, 291, 1, 291, 3, 291, 6542, 8, 291, 1, 291, 3, 291, 6545, 8, 291, 1, 292, 1, 292, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 3, 294, 6557, 8, 294, 1, 295, 1, 295, 1, 295, 3, 295, 6562, 8, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 3, 295, 6575, 8, 295, 3, 295, 6577, 8, 295, 1, 295, 1, 295, 1, 295, 3, 295, 6582, 8, 295, 1, 295, 1, 295, 3, 295, 6586, 8, 295, 1, 295, 3, 295, 6589, 8, 295, 3, 295, 6591, 8, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 3, 296, 6598, 8, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6605, 8, 297, 1, 297, 3, 297, 6608, 8, 297, 1, 297, 3, 297, 6611, 8, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6617, 8, 297, 1, 297, 1, 297, 3, 297, 6621, 8, 297, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 6627, 8, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 6635, 8, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 6644, 8, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 3, 303, 6657, 8, 303, 1, 303, 1, 303, 1, 303, 3, 303, 6662, 8, 303, 1, 303, 1, 303, 1, 303, 1, 303, 5, 303, 6668, 8, 303, 10, 303, 12, 303, 6671, 9, 303, 3, 303, 6673, 8, 303, 1, 304, 1, 304, 1, 304, 3, 304, 6678, 8, 304, 1, 304, 1, 304, 1, 304, 3, 304, 6683, 8, 304, 1, 304, 1, 304, 1, 304, 1, 304, 5, 304, 6689, 8, 304, 10, 304, 12, 304, 6692, 9, 304, 3, 304, 6694, 8, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 3, 305, 6702, 8, 305, 1, 306, 1, 306, 3, 306, 6706, 8, 306, 1, 306, 1, 306, 1, 306, 5, 306, 6711, 8, 306, 10, 306, 12, 306, 6714, 9, 306, 1, 307, 1, 307, 1, 307, 3, 307, 6719, 8, 307, 1, 307, 3, 307, 6722, 8, 307, 1, 308, 1, 308, 3, 308, 6726, 8, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 5, 308, 6737, 8, 308, 10, 308, 12, 308, 6740, 9, 308, 1, 308, 1, 308, 1, 308, 3, 308, 6745, 8, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 5, 308, 6755, 8, 308, 10, 308, 12, 308, 6758, 9, 308, 3, 308, 6760, 8, 308, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 3, 310, 6769, 8, 310, 1, 310, 1, 310, 1, 310, 3, 310, 6774, 8, 310, 1, 311, 1, 311, 1, 312, 1, 312, 1, 313, 1, 313, 1, 314, 1, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 317, 1, 317, 1, 318, 1, 318, 1, 318, 5, 318, 6793, 8, 318, 10, 318, 12, 318, 6796, 9, 318, 1, 319, 1, 319, 1, 320, 1, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 323, 1, 323, 1, 323, 5, 323, 6809, 8, 323, 10, 323, 12, 323, 6812, 9, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 5, 325, 6819, 8, 325, 10, 325, 12, 325, 6822, 9, 325, 1, 326, 1, 326, 3, 326, 6826, 8, 326, 1, 327, 1, 327, 1, 327, 3, 327, 6831, 8, 327, 3, 327, 6833, 8, 327, 1, 327, 3, 327, 6836, 8, 327, 1, 327, 1, 327, 3, 327, 6840, 8, 327, 3, 327, 6842, 8, 327, 1, 328, 1, 328, 1, 328, 5, 328, 6847, 8, 328, 10, 328, 12, 328, 6850, 9, 328, 1, 329, 1, 329, 1, 329, 3, 329, 6855, 8, 329, 3, 329, 6857, 8, 329, 1, 329, 3, 329, 6860, 8, 329, 1, 329, 1, 329, 3, 329, 6864, 8, 329, 1, 329, 3, 329, 6867, 8, 329, 1, 330, 1, 330, 1, 331, 1, 331, 1, 332, 1, 332, 1, 333, 1, 333, 1, 333, 5, 333, 6878, 8, 333, 10, 333, 12, 333, 6881, 9, 333, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 1, 335, 1, 335, 3, 335, 6890, 8, 335, 1, 335, 3, 335, 6893, 8, 335, 1, 335, 3, 335, 6896, 8, 335, 1, 336, 1, 336, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 6909, 8, 338, 1, 339, 1, 339, 1, 340, 1, 340, 3, 340, 6915, 8, 340, 1, 340, 3, 340, 6918, 8, 340, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 6926, 8, 342, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 3, 344, 6933, 8, 344, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 1, 346, 4, 346, 6951, 8, 346, 11, 346, 12, 346, 6952, 1, 347, 1, 347, 1, 347, 1, 347, 1, 347, 3, 347, 6960, 8, 347, 3, 347, 6962, 8, 347, 1, 348, 1, 348, 1, 348, 4, 348, 6967, 8, 348, 11, 348, 12, 348, 6968, 3, 348, 6971, 8, 348, 1, 349, 1, 349, 3, 349, 6975, 8, 349, 1, 350, 1, 350, 1, 350, 5, 350, 6980, 8, 350, 10, 350, 12, 350, 6983, 9, 350, 1, 351, 1, 351, 1, 351, 3, 351, 6988, 8, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 1, 352, 3, 352, 6999, 8, 352, 1, 353, 1, 353, 1, 353, 1, 353, 3, 353, 7005, 8, 353, 1, 354, 1, 354, 1, 355, 1, 355, 3, 355, 7011, 8, 355, 1, 356, 3, 356, 7014, 8, 356, 1, 356, 1, 356, 3, 356, 7018, 8, 356, 1, 356, 4, 356, 7021, 8, 356, 11, 356, 12, 356, 7022, 1, 356, 3, 356, 7026, 8, 356, 1, 356, 1, 356, 3, 356, 7030, 8, 356, 1, 356, 1, 356, 3, 356, 7034, 8, 356, 3, 356, 7036, 8, 356, 1, 357, 1, 357, 1, 358, 3, 358, 7041, 8, 358, 1, 358, 1, 358, 1, 359, 3, 359, 7046, 8, 359, 1, 359, 1, 359, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 1, 360, 3, 360, 7059, 8, 360, 1, 360, 3, 360, 7062, 8, 360, 1, 361, 1, 361, 3, 361, 7066, 8, 361, 1, 361, 3, 361, 7069, 8, 361, 1, 361, 3, 361, 7072, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7077, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7082, 8, 361, 1, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7088, 8, 361, 1, 361, 3, 361, 7091, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7096, 8, 361, 1, 361, 3, 361, 7099, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7104, 8, 361, 1, 361, 3, 361, 7107, 8, 361, 1, 361, 1, 361, 3, 361, 7111, 8, 361, 1, 361, 5, 361, 7114, 8, 361, 10, 361, 12, 361, 7117, 9, 361, 1, 361, 1, 361, 3, 361, 7121, 8, 361, 1, 361, 5, 361, 7124, 8, 361, 10, 361, 12, 361, 7127, 9, 361, 1, 361, 1, 361, 3, 361, 7131, 8, 361, 1, 361, 3, 361, 7134, 8, 361, 1, 361, 5, 361, 7137, 8, 361, 10, 361, 12, 361, 7140, 9, 361, 1, 361, 1, 361, 3, 361, 7144, 8, 361, 1, 361, 5, 361, 7147, 8, 361, 10, 361, 12, 361, 7150, 9, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7155, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7160, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7165, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7170, 8, 361, 1, 361, 1, 361, 3, 361, 7174, 8, 361, 1, 361, 3, 361, 7177, 8, 361, 1, 361, 1, 361, 1, 361, 3, 361, 7182, 8, 361, 1, 361, 1, 361, 3, 361, 7186, 8, 361, 1, 361, 1, 361, 3, 361, 7190, 8, 361, 1, 362, 1, 362, 1, 362, 1, 362, 5, 362, 7196, 8, 362, 10, 362, 12, 362, 7199, 9, 362, 1, 362, 1, 362, 1, 363, 1, 363, 3, 363, 7205, 8, 363, 1, 363, 1, 363, 3, 363, 7209, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7214, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7219, 8, 363, 1, 363, 1, 363, 3, 363, 7223, 8, 363, 3, 363, 7225, 8, 363, 1, 363, 3, 363, 7228, 8, 363, 1, 364, 1, 364, 1, 364, 1, 364, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 365, 1, 366, 1, 366, 1, 366, 1, 366, 3, 366, 7244, 8, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 5, 367, 7252, 8, 367, 10, 367, 12, 367, 7255, 9, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 5, 368, 7262, 8, 368, 10, 368, 12, 368, 7265, 9, 368, 1, 369, 1, 369, 1, 369, 1, 369, 5, 369, 7271, 8, 369, 10, 369, 12, 369, 7274, 9, 369, 1, 370, 1, 370, 1, 370, 1, 370, 5, 370, 7280, 8, 370, 10, 370, 12, 370, 7283, 9, 370, 1, 370, 1, 370, 1, 371, 1, 371, 3, 371, 7289, 8, 371, 1, 372, 1, 372, 1, 372, 5, 372, 7294, 8, 372, 10, 372, 12, 372, 7297, 9, 372, 1, 373, 1, 373, 1, 373, 5, 373, 7302, 8, 373, 10, 373, 12, 373, 7305, 9, 373, 1, 374, 1, 374, 1, 374, 5, 374, 7310, 8, 374, 10, 374, 12, 374, 7313, 9, 374, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7324, 8, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7331, 8, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7341, 8, 375, 1, 376, 1, 376, 1, 376, 3, 376, 7346, 8, 376, 1, 376, 3, 376, 7349, 8, 376, 1, 376, 1, 376, 1, 376, 3, 376, 7354, 8, 376, 1, 376, 3, 376, 7357, 8, 376, 1, 377, 1, 377, 1, 377, 1, 378, 1, 378, 1, 378, 1, 378, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 3, 380, 7379, 8, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 1, 380, 3, 380, 7388, 8, 380, 1, 380, 3, 380, 7391, 8, 380, 1, 381, 1, 381, 1, 381, 3, 381, 7396, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 4, 381, 7427, 8, 381, 11, 381, 12, 381, 7428, 1, 381, 1, 381, 3, 381, 7433, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 4, 381, 7440, 8, 381, 11, 381, 12, 381, 7441, 1, 381, 1, 381, 3, 381, 7446, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7455, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7463, 8, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7468, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7476, 8, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7481, 8, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7486, 8, 381, 3, 381, 7488, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7497, 8, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7502, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7510, 8, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7515, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7523, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7531, 8, 381, 1, 381, 3, 381, 7534, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7544, 8, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 1, 381, 3, 381, 7562, 8, 381, 1, 381, 3, 381, 7565, 8, 381, 1, 381, 3, 381, 7568, 8, 381, 1, 381, 1, 381, 3, 381, 7572, 8, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 383, 1, 383, 1, 383, 1, 383, 5, 383, 7583, 8, 383, 10, 383, 12, 383, 7586, 9, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7593, 8, 383, 1, 384, 1, 384, 3, 384, 7597, 8, 384, 1, 385, 1, 385, 1, 385, 3, 385, 7602, 8, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7607, 8, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7613, 8, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7618, 8, 385, 1, 385, 1, 385, 3, 385, 7622, 8, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7627, 8, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7632, 8, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7637, 8, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 5, 385, 7645, 8, 385, 10, 385, 12, 385, 7648, 9, 385, 3, 385, 7650, 8, 385, 1, 385, 1, 385, 3, 385, 7654, 8, 385, 1, 385, 1, 385, 3, 385, 7658, 8, 385, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 3, 386, 7665, 8, 386, 1, 386, 1, 386, 3, 386, 7669, 8, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 1, 386, 3, 386, 7698, 8, 386, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7706, 8, 387, 1, 388, 3, 388, 7709, 8, 388, 1, 388, 3, 388, 7712, 8, 388, 1, 388, 3, 388, 7715, 8, 388, 1, 388, 3, 388, 7718, 8, 388, 1, 389, 1, 389, 1, 390, 1, 390, 1, 390, 1, 391, 1, 391, 1, 392, 1, 392, 3, 392, 7729, 8, 392, 1, 393, 1, 393, 1, 393, 1, 393, 1, 393, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 1, 394, 3, 394, 7743, 8, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 5, 395, 7750, 8, 395, 10, 395, 12, 395, 7753, 9, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 3, 396, 7779, 8, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 5, 398, 7789, 8, 398, 10, 398, 12, 398, 7792, 9, 398, 1, 399, 1, 399, 1, 399, 3, 399, 7797, 8, 399, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 1, 400, 3, 400, 7805, 8, 400, 1, 400, 1, 400, 1, 400, 3, 400, 7810, 8, 400, 1, 400, 1, 400, 1, 400, 1, 400, 5, 400, 7816, 8, 400, 10, 400, 12, 400, 7819, 9, 400, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7826, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7839, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7845, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7851, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7866, 8, 401, 1, 401, 1, 401, 3, 401, 7870, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 3, 401, 7876, 8, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 1, 401, 5, 401, 7885, 8, 401, 10, 401, 12, 401, 7888, 9, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 5, 402, 7906, 8, 402, 10, 402, 12, 402, 7909, 9, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 4, 402, 7918, 8, 402, 11, 402, 12, 402, 7919, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7938, 8, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 5, 402, 7955, 8, 402, 10, 402, 12, 402, 7958, 9, 402, 1, 403, 1, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 3, 404, 7970, 8, 404, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 1, 405, 3, 405, 7979, 8, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 3, 406, 7988, 8, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 3, 407, 7997, 8, 407, 1, 408, 1, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 8006, 8, 409, 1, 410, 1, 410, 1, 411, 1, 411, 1, 412, 1, 412, 1, 413, 1, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 416, 1, 416, 1, 416, 0, 5, 208, 210, 800, 802, 804, 417, 0, 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, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 0, 160, 2, 0, 39, 39, 152, 152, 2, 0, 508, 508, 514, 514, 3, 0, 69, 69, 161, 161, 182, 182, 3, 0, 42, 42, 357, 357, 430, 430, 4, 0, 42, 42, 389, 389, 505, 505, 595, 595, 2, 0, 494, 494, 882, 882, 2, 0, 79, 79, 143, 143, 2, 0, 16, 16, 306, 306, 3, 0, 44, 44, 86, 86, 185, 185, 2, 0, 406, 406, 538, 538, 3, 0, 486, 486, 661, 661, 670, 670, 2, 0, 364, 364, 436, 436, 2, 0, 325, 325, 450, 450, 2, 0, 42, 42, 871, 872, 2, 0, 37, 37, 678, 678, 2, 0, 323, 323, 418, 418, 2, 0, 435, 435, 686, 686, 3, 0, 80, 80, 85, 85, 126, 126, 2, 0, 82, 82, 92, 92, 2, 0, 69, 69, 161, 161, 3, 0, 42, 42, 374, 374, 403, 403, 3, 0, 42, 42, 370, 370, 802, 802, 2, 0, 648, 648, 685, 685, 3, 0, 408, 408, 526, 526, 597, 597, 2, 0, 329, 329, 522, 522, 1, 0, 871, 872, 2, 0, 882, 882, 889, 889, 2, 0, 82, 82, 360, 360, 2, 0, 523, 523, 882, 882, 2, 0, 524, 524, 882, 882, 3, 0, 402, 402, 445, 445, 502, 502, 7, 0, 42, 42, 342, 342, 345, 345, 374, 374, 403, 403, 554, 554, 889, 889, 2, 0, 494, 494, 506, 506, 1, 0, 872, 873, 2, 0, 6, 6, 51, 51, 2, 0, 5, 5, 81, 81, 2, 0, 27, 27, 31, 31, 4, 0, 42, 42, 357, 357, 430, 430, 434, 434, 2, 0, 368, 368, 375, 375, 2, 0, 369, 369, 425, 425, 2, 0, 13, 13, 176, 176, 2, 0, 194, 194, 690, 690, 2, 0, 22, 22, 146, 146, 3, 0, 43, 43, 76, 76, 107, 107, 2, 0, 7, 7, 49, 49, 2, 0, 107, 107, 347, 347, 2, 0, 337, 337, 398, 398, 2, 0, 102, 102, 587, 587, 2, 0, 43, 43, 107, 107, 3, 0, 59, 59, 181, 181, 828, 828, 2, 0, 185, 185, 594, 594, 2, 0, 159, 159, 503, 503, 4, 0, 402, 402, 445, 445, 501, 501, 542, 542, 2, 0, 402, 402, 501, 501, 2, 0, 14, 14, 45, 45, 3, 0, 66, 66, 79, 79, 187, 187, 2, 0, 35, 35, 84, 84, 2, 0, 98, 98, 150, 150, 2, 0, 7, 7, 49, 50, 1, 0, 637, 638, 2, 0, 173, 173, 752, 752, 2, 0, 413, 413, 593, 593, 2, 0, 228, 228, 453, 453, 2, 0, 563, 563, 598, 598, 8, 0, 108, 108, 455, 455, 459, 460, 462, 462, 464, 464, 467, 476, 499, 499, 557, 557, 6, 0, 456, 458, 461, 461, 463, 463, 465, 465, 477, 477, 558, 558, 7, 0, 109, 109, 411, 411, 416, 416, 454, 454, 466, 466, 573, 573, 617, 617, 2, 0, 116, 116, 882, 882, 2, 0, 118, 119, 507, 507, 7, 0, 499, 499, 557, 557, 606, 609, 611, 611, 619, 619, 622, 628, 630, 632, 6, 0, 558, 558, 610, 610, 612, 612, 614, 616, 618, 618, 620, 620, 7, 0, 412, 412, 416, 416, 573, 573, 613, 613, 617, 617, 621, 621, 629, 629, 3, 0, 70, 70, 118, 119, 507, 507, 2, 0, 438, 438, 639, 639, 2, 0, 633, 633, 635, 635, 2, 0, 317, 317, 640, 640, 2, 0, 91, 91, 577, 577, 2, 0, 51, 51, 362, 362, 3, 0, 32, 32, 61, 61, 180, 180, 2, 0, 15, 15, 340, 340, 2, 0, 678, 678, 835, 835, 3, 0, 132, 132, 173, 173, 409, 409, 3, 0, 6, 6, 51, 51, 492, 492, 3, 0, 13, 13, 20, 20, 188, 188, 2, 0, 42, 42, 122, 122, 2, 0, 104, 104, 183, 183, 1, 0, 873, 874, 2, 0, 333, 333, 598, 598, 2, 0, 40, 40, 684, 684, 2, 0, 392, 392, 549, 549, 2, 0, 115, 115, 450, 450, 4, 0, 208, 208, 210, 210, 216, 216, 649, 649, 3, 0, 413, 413, 531, 531, 893, 894, 2, 0, 841, 841, 857, 857, 2, 0, 318, 318, 559, 559, 2, 0, 68, 68, 80, 80, 3, 0, 132, 132, 178, 178, 385, 385, 2, 0, 493, 493, 645, 645, 2, 0, 383, 383, 688, 688, 3, 0, 82, 82, 93, 93, 426, 426, 4, 0, 413, 413, 450, 450, 531, 532, 593, 593, 2, 0, 645, 645, 683, 683, 2, 0, 349, 349, 548, 548, 6, 0, 228, 228, 380, 380, 382, 382, 410, 410, 556, 556, 599, 599, 2, 0, 45, 46, 62, 62, 3, 0, 442, 442, 663, 663, 666, 666, 10, 0, 332, 332, 339, 339, 351, 353, 359, 359, 487, 487, 495, 495, 650, 650, 657, 657, 822, 822, 832, 832, 2, 0, 36, 36, 170, 170, 2, 0, 117, 117, 831, 831, 11, 0, 332, 332, 339, 339, 351, 353, 359, 359, 487, 487, 495, 495, 578, 578, 650, 650, 657, 657, 822, 822, 832, 832, 2, 0, 870, 870, 891, 892, 1, 0, 892, 893, 2, 0, 348, 348, 797, 808, 3, 0, 871, 874, 883, 883, 885, 885, 2, 0, 63, 63, 179, 179, 2, 0, 116, 116, 886, 886, 5, 0, 26, 26, 224, 226, 233, 233, 235, 238, 498, 498, 2, 0, 26, 26, 224, 224, 2, 0, 26, 26, 224, 225, 1, 0, 198, 209, 3, 0, 184, 184, 197, 197, 596, 596, 2, 0, 213, 218, 403, 403, 6, 0, 219, 219, 230, 230, 232, 232, 234, 234, 241, 241, 321, 322, 4, 0, 220, 223, 228, 229, 231, 231, 319, 319, 2, 0, 155, 155, 239, 239, 2, 0, 442, 442, 813, 821, 2, 0, 228, 228, 498, 498, 5, 0, 202, 202, 208, 208, 219, 220, 222, 222, 442, 442, 1, 0, 216, 217, 2, 0, 184, 184, 596, 596, 2, 0, 202, 202, 208, 208, 2, 0, 189, 189, 682, 682, 2, 0, 287, 288, 294, 294, 3, 0, 152, 152, 285, 288, 303, 303, 1, 0, 297, 298, 3, 0, 18, 18, 96, 96, 177, 177, 2, 0, 224, 224, 228, 228, 2, 0, 219, 220, 222, 222, 3, 0, 14, 14, 45, 45, 830, 830, 3, 0, 258, 258, 270, 271, 281, 281, 3, 0, 259, 261, 277, 280, 282, 284, 2, 0, 267, 267, 269, 269, 2, 0, 265, 265, 268, 268, 2, 0, 263, 264, 274, 276, 2, 0, 134, 134, 587, 587, 2, 0, 405, 405, 539, 539, 2, 0, 512, 512, 529, 529, 2, 0, 114, 114, 860, 860, 3, 0, 63, 63, 179, 179, 674, 674, 2, 0, 139, 139, 151, 151, 3, 0, 7, 7, 309, 309, 602, 602, 3, 0, 114, 114, 853, 854, 860, 861, 1, 0, 850, 856, 2, 0, 228, 228, 756, 796, 1, 0, 809, 812, 5, 0, 717, 718, 734, 736, 743, 743, 749, 750, 752, 752, 1, 0, 696, 703, 3, 0, 219, 223, 236, 236, 239, 239, 76, 0, 12, 12, 15, 15, 19, 19, 30, 30, 36, 37, 42, 42, 48, 48, 55, 55, 57, 57, 59, 59, 74, 74, 95, 95, 117, 117, 122, 122, 125, 125, 131, 131, 160, 160, 170, 170, 241, 241, 255, 262, 266, 266, 270, 271, 277, 284, 304, 309, 311, 329, 331, 343, 345, 376, 378, 393, 395, 400, 402, 404, 406, 410, 413, 415, 417, 426, 428, 428, 430, 434, 436, 454, 456, 463, 465, 473, 475, 476, 478, 498, 500, 506, 508, 510, 512, 522, 525, 530, 533, 538, 540, 542, 544, 554, 556, 562, 565, 572, 575, 575, 577, 578, 580, 605, 633, 647, 649, 665, 667, 674, 676, 685, 687, 688, 690, 695, 704, 704, 706, 707, 709, 712, 714, 716, 719, 721, 726, 727, 729, 733, 737, 738, 740, 742, 744, 744, 746, 748, 751, 751, 753, 755, 802, 802, 822, 822, 825, 825, 832, 833, 838, 838, 24, 0, 39, 39, 98, 98, 150, 150, 152, 152, 219, 221, 223, 223, 253, 254, 262, 265, 267, 269, 272, 276, 296, 296, 435, 435, 686, 686, 696, 703, 746, 746, 813, 813, 816, 821, 823, 824, 826, 827, 829, 831, 834, 834, 836, 836, 840, 840, 856, 856, 9382, 0, 837, 1, 0, 0, 0, 2, 847, 1, 0, 0, 0, 4, 856, 1, 0, 0, 0, 6, 858, 1, 0, 0, 0, 8, 899, 1, 0, 0, 0, 10, 918, 1, 0, 0, 0, 12, 929, 1, 0, 0, 0, 14, 945, 1, 0, 0, 0, 16, 950, 1, 0, 0, 0, 18, 962, 1, 0, 0, 0, 20, 997, 1, 0, 0, 0, 22, 1007, 1, 0, 0, 0, 24, 1009, 1, 0, 0, 0, 26, 1021, 1, 0, 0, 0, 28, 1051, 1, 0, 0, 0, 30, 1087, 1, 0, 0, 0, 32, 1138, 1, 0, 0, 0, 34, 1167, 1, 0, 0, 0, 36, 1174, 1, 0, 0, 0, 38, 1271, 1, 0, 0, 0, 40, 1273, 1, 0, 0, 0, 42, 1310, 1, 0, 0, 0, 44, 1374, 1, 0, 0, 0, 46, 1396, 1, 0, 0, 0, 48, 1402, 1, 0, 0, 0, 50, 1424, 1, 0, 0, 0, 52, 1511, 1, 0, 0, 0, 54, 1518, 1, 0, 0, 0, 56, 1520, 1, 0, 0, 0, 58, 1525, 1, 0, 0, 0, 60, 1565, 1, 0, 0, 0, 62, 1571, 1, 0, 0, 0, 64, 1573, 1, 0, 0, 0, 66, 1594, 1, 0, 0, 0, 68, 1601, 1, 0, 0, 0, 70, 1603, 1, 0, 0, 0, 72, 1628, 1, 0, 0, 0, 74, 1631, 1, 0, 0, 0, 76, 1659, 1, 0, 0, 0, 78, 1675, 1, 0, 0, 0, 80, 1677, 1, 0, 0, 0, 82, 1771, 1, 0, 0, 0, 84, 1774, 1, 0, 0, 0, 86, 1786, 1, 0, 0, 0, 88, 1790, 1, 0, 0, 0, 90, 1840, 1, 0, 0, 0, 92, 1842, 1, 0, 0, 0, 94, 1870, 1, 0, 0, 0, 96, 1880, 1, 0, 0, 0, 98, 2067, 1, 0, 0, 0, 100, 2069, 1, 0, 0, 0, 102, 2071, 1, 0, 0, 0, 104, 2074, 1, 0, 0, 0, 106, 2149, 1, 0, 0, 0, 108, 2172, 1, 0, 0, 0, 110, 2320, 1, 0, 0, 0, 112, 2325, 1, 0, 0, 0, 114, 2327, 1, 0, 0, 0, 116, 2337, 1, 0, 0, 0, 118, 2393, 1, 0, 0, 0, 120, 2413, 1, 0, 0, 0, 122, 2415, 1, 0, 0, 0, 124, 2450, 1, 0, 0, 0, 126, 2459, 1, 0, 0, 0, 128, 2466, 1, 0, 0, 0, 130, 2489, 1, 0, 0, 0, 132, 2498, 1, 0, 0, 0, 134, 2513, 1, 0, 0, 0, 136, 2535, 1, 0, 0, 0, 138, 2591, 1, 0, 0, 0, 140, 2887, 1, 0, 0, 0, 142, 2987, 1, 0, 0, 0, 144, 2989, 1, 0, 0, 0, 146, 2996, 1, 0, 0, 0, 148, 3003, 1, 0, 0, 0, 150, 3026, 1, 0, 0, 0, 152, 3036, 1, 0, 0, 0, 154, 3043, 1, 0, 0, 0, 156, 3050, 1, 0, 0, 0, 158, 3057, 1, 0, 0, 0, 160, 3066, 1, 0, 0, 0, 162, 3078, 1, 0, 0, 0, 164, 3091, 1, 0, 0, 0, 166, 3098, 1, 0, 0, 0, 168, 3114, 1, 0, 0, 0, 170, 3141, 1, 0, 0, 0, 172, 3143, 1, 0, 0, 0, 174, 3153, 1, 0, 0, 0, 176, 3157, 1, 0, 0, 0, 178, 3163, 1, 0, 0, 0, 180, 3175, 1, 0, 0, 0, 182, 3177, 1, 0, 0, 0, 184, 3184, 1, 0, 0, 0, 186, 3186, 1, 0, 0, 0, 188, 3235, 1, 0, 0, 0, 190, 3244, 1, 0, 0, 0, 192, 3246, 1, 0, 0, 0, 194, 3257, 1, 0, 0, 0, 196, 3263, 1, 0, 0, 0, 198, 3337, 1, 0, 0, 0, 200, 3400, 1, 0, 0, 0, 202, 3418, 1, 0, 0, 0, 204, 3502, 1, 0, 0, 0, 206, 3505, 1, 0, 0, 0, 208, 3517, 1, 0, 0, 0, 210, 3537, 1, 0, 0, 0, 212, 3565, 1, 0, 0, 0, 214, 3569, 1, 0, 0, 0, 216, 3571, 1, 0, 0, 0, 218, 3581, 1, 0, 0, 0, 220, 3601, 1, 0, 0, 0, 222, 3608, 1, 0, 0, 0, 224, 3610, 1, 0, 0, 0, 226, 3621, 1, 0, 0, 0, 228, 3630, 1, 0, 0, 0, 230, 3636, 1, 0, 0, 0, 232, 3659, 1, 0, 0, 0, 234, 3661, 1, 0, 0, 0, 236, 3697, 1, 0, 0, 0, 238, 3752, 1, 0, 0, 0, 240, 3761, 1, 0, 0, 0, 242, 3781, 1, 0, 0, 0, 244, 3793, 1, 0, 0, 0, 246, 3797, 1, 0, 0, 0, 248, 3808, 1, 0, 0, 0, 250, 3841, 1, 0, 0, 0, 252, 3862, 1, 0, 0, 0, 254, 3872, 1, 0, 0, 0, 256, 3876, 1, 0, 0, 0, 258, 3902, 1, 0, 0, 0, 260, 3949, 1, 0, 0, 0, 262, 3951, 1, 0, 0, 0, 264, 3955, 1, 0, 0, 0, 266, 3972, 1, 0, 0, 0, 268, 4023, 1, 0, 0, 0, 270, 4032, 1, 0, 0, 0, 272, 4042, 1, 0, 0, 0, 274, 4044, 1, 0, 0, 0, 276, 4074, 1, 0, 0, 0, 278, 4082, 1, 0, 0, 0, 280, 4099, 1, 0, 0, 0, 282, 4115, 1, 0, 0, 0, 284, 4152, 1, 0, 0, 0, 286, 4158, 1, 0, 0, 0, 288, 4167, 1, 0, 0, 0, 290, 4180, 1, 0, 0, 0, 292, 4184, 1, 0, 0, 0, 294, 4222, 1, 0, 0, 0, 296, 4260, 1, 0, 0, 0, 298, 4274, 1, 0, 0, 0, 300, 4282, 1, 0, 0, 0, 302, 4286, 1, 0, 0, 0, 304, 4292, 1, 0, 0, 0, 306, 4306, 1, 0, 0, 0, 308, 4309, 1, 0, 0, 0, 310, 4327, 1, 0, 0, 0, 312, 4331, 1, 0, 0, 0, 314, 4347, 1, 0, 0, 0, 316, 4349, 1, 0, 0, 0, 318, 4361, 1, 0, 0, 0, 320, 4365, 1, 0, 0, 0, 322, 4382, 1, 0, 0, 0, 324, 4399, 1, 0, 0, 0, 326, 4402, 1, 0, 0, 0, 328, 4412, 1, 0, 0, 0, 330, 4416, 1, 0, 0, 0, 332, 4426, 1, 0, 0, 0, 334, 4429, 1, 0, 0, 0, 336, 4434, 1, 0, 0, 0, 338, 4454, 1, 0, 0, 0, 340, 4456, 1, 0, 0, 0, 342, 4473, 1, 0, 0, 0, 344, 4482, 1, 0, 0, 0, 346, 4491, 1, 0, 0, 0, 348, 4493, 1, 0, 0, 0, 350, 4507, 1, 0, 0, 0, 352, 4521, 1, 0, 0, 0, 354, 4536, 1, 0, 0, 0, 356, 4545, 1, 0, 0, 0, 358, 4570, 1, 0, 0, 0, 360, 4585, 1, 0, 0, 0, 362, 4604, 1, 0, 0, 0, 364, 4634, 1, 0, 0, 0, 366, 4636, 1, 0, 0, 0, 368, 4638, 1, 0, 0, 0, 370, 4640, 1, 0, 0, 0, 372, 4655, 1, 0, 0, 0, 374, 4684, 1, 0, 0, 0, 376, 4686, 1, 0, 0, 0, 378, 4688, 1, 0, 0, 0, 380, 4690, 1, 0, 0, 0, 382, 4705, 1, 0, 0, 0, 384, 4707, 1, 0, 0, 0, 386, 4774, 1, 0, 0, 0, 388, 4776, 1, 0, 0, 0, 390, 4782, 1, 0, 0, 0, 392, 4809, 1, 0, 0, 0, 394, 4823, 1, 0, 0, 0, 396, 4834, 1, 0, 0, 0, 398, 4836, 1, 0, 0, 0, 400, 4842, 1, 0, 0, 0, 402, 4852, 1, 0, 0, 0, 404, 4856, 1, 0, 0, 0, 406, 4863, 1, 0, 0, 0, 408, 4867, 1, 0, 0, 0, 410, 4873, 1, 0, 0, 0, 412, 4880, 1, 0, 0, 0, 414, 4886, 1, 0, 0, 0, 416, 4892, 1, 0, 0, 0, 418, 4897, 1, 0, 0, 0, 420, 4942, 1, 0, 0, 0, 422, 4963, 1, 0, 0, 0, 424, 4988, 1, 0, 0, 0, 426, 4991, 1, 0, 0, 0, 428, 4997, 1, 0, 0, 0, 430, 5013, 1, 0, 0, 0, 432, 5028, 1, 0, 0, 0, 434, 5034, 1, 0, 0, 0, 436, 5064, 1, 0, 0, 0, 438, 5066, 1, 0, 0, 0, 440, 5073, 1, 0, 0, 0, 442, 5085, 1, 0, 0, 0, 444, 5091, 1, 0, 0, 0, 446, 5116, 1, 0, 0, 0, 448, 5120, 1, 0, 0, 0, 450, 5124, 1, 0, 0, 0, 452, 5135, 1, 0, 0, 0, 454, 5143, 1, 0, 0, 0, 456, 5206, 1, 0, 0, 0, 458, 5265, 1, 0, 0, 0, 460, 5367, 1, 0, 0, 0, 462, 5377, 1, 0, 0, 0, 464, 5379, 1, 0, 0, 0, 466, 5397, 1, 0, 0, 0, 468, 5421, 1, 0, 0, 0, 470, 5445, 1, 0, 0, 0, 472, 5452, 1, 0, 0, 0, 474, 5472, 1, 0, 0, 0, 476, 5481, 1, 0, 0, 0, 478, 5543, 1, 0, 0, 0, 480, 5545, 1, 0, 0, 0, 482, 5549, 1, 0, 0, 0, 484, 5583, 1, 0, 0, 0, 486, 5585, 1, 0, 0, 0, 488, 5588, 1, 0, 0, 0, 490, 5652, 1, 0, 0, 0, 492, 5671, 1, 0, 0, 0, 494, 5698, 1, 0, 0, 0, 496, 5702, 1, 0, 0, 0, 498, 5723, 1, 0, 0, 0, 500, 5733, 1, 0, 0, 0, 502, 5743, 1, 0, 0, 0, 504, 5783, 1, 0, 0, 0, 506, 5785, 1, 0, 0, 0, 508, 5788, 1, 0, 0, 0, 510, 5818, 1, 0, 0, 0, 512, 5820, 1, 0, 0, 0, 514, 5823, 1, 0, 0, 0, 516, 5923, 1, 0, 0, 0, 518, 5941, 1, 0, 0, 0, 520, 5943, 1, 0, 0, 0, 522, 5995, 1, 0, 0, 0, 524, 5997, 1, 0, 0, 0, 526, 6006, 1, 0, 0, 0, 528, 6012, 1, 0, 0, 0, 530, 6019, 1, 0, 0, 0, 532, 6034, 1, 0, 0, 0, 534, 6043, 1, 0, 0, 0, 536, 6045, 1, 0, 0, 0, 538, 6059, 1, 0, 0, 0, 540, 6080, 1, 0, 0, 0, 542, 6085, 1, 0, 0, 0, 544, 6095, 1, 0, 0, 0, 546, 6101, 1, 0, 0, 0, 548, 6135, 1, 0, 0, 0, 550, 6189, 1, 0, 0, 0, 552, 6375, 1, 0, 0, 0, 554, 6387, 1, 0, 0, 0, 556, 6403, 1, 0, 0, 0, 558, 6409, 1, 0, 0, 0, 560, 6428, 1, 0, 0, 0, 562, 6441, 1, 0, 0, 0, 564, 6455, 1, 0, 0, 0, 566, 6457, 1, 0, 0, 0, 568, 6460, 1, 0, 0, 0, 570, 6484, 1, 0, 0, 0, 572, 6496, 1, 0, 0, 0, 574, 6502, 1, 0, 0, 0, 576, 6514, 1, 0, 0, 0, 578, 6528, 1, 0, 0, 0, 580, 6530, 1, 0, 0, 0, 582, 6538, 1, 0, 0, 0, 584, 6546, 1, 0, 0, 0, 586, 6548, 1, 0, 0, 0, 588, 6550, 1, 0, 0, 0, 590, 6590, 1, 0, 0, 0, 592, 6597, 1, 0, 0, 0, 594, 6599, 1, 0, 0, 0, 596, 6622, 1, 0, 0, 0, 598, 6628, 1, 0, 0, 0, 600, 6638, 1, 0, 0, 0, 602, 6647, 1, 0, 0, 0, 604, 6650, 1, 0, 0, 0, 606, 6653, 1, 0, 0, 0, 608, 6674, 1, 0, 0, 0, 610, 6695, 1, 0, 0, 0, 612, 6703, 1, 0, 0, 0, 614, 6715, 1, 0, 0, 0, 616, 6723, 1, 0, 0, 0, 618, 6761, 1, 0, 0, 0, 620, 6773, 1, 0, 0, 0, 622, 6775, 1, 0, 0, 0, 624, 6777, 1, 0, 0, 0, 626, 6779, 1, 0, 0, 0, 628, 6781, 1, 0, 0, 0, 630, 6783, 1, 0, 0, 0, 632, 6785, 1, 0, 0, 0, 634, 6787, 1, 0, 0, 0, 636, 6789, 1, 0, 0, 0, 638, 6797, 1, 0, 0, 0, 640, 6799, 1, 0, 0, 0, 642, 6801, 1, 0, 0, 0, 644, 6803, 1, 0, 0, 0, 646, 6805, 1, 0, 0, 0, 648, 6813, 1, 0, 0, 0, 650, 6815, 1, 0, 0, 0, 652, 6825, 1, 0, 0, 0, 654, 6841, 1, 0, 0, 0, 656, 6843, 1, 0, 0, 0, 658, 6866, 1, 0, 0, 0, 660, 6868, 1, 0, 0, 0, 662, 6870, 1, 0, 0, 0, 664, 6872, 1, 0, 0, 0, 666, 6874, 1, 0, 0, 0, 668, 6882, 1, 0, 0, 0, 670, 6892, 1, 0, 0, 0, 672, 6897, 1, 0, 0, 0, 674, 6901, 1, 0, 0, 0, 676, 6908, 1, 0, 0, 0, 678, 6910, 1, 0, 0, 0, 680, 6917, 1, 0, 0, 0, 682, 6919, 1, 0, 0, 0, 684, 6925, 1, 0, 0, 0, 686, 6927, 1, 0, 0, 0, 688, 6932, 1, 0, 0, 0, 690, 6934, 1, 0, 0, 0, 692, 6936, 1, 0, 0, 0, 694, 6954, 1, 0, 0, 0, 696, 6970, 1, 0, 0, 0, 698, 6972, 1, 0, 0, 0, 700, 6976, 1, 0, 0, 0, 702, 6987, 1, 0, 0, 0, 704, 6998, 1, 0, 0, 0, 706, 7004, 1, 0, 0, 0, 708, 7006, 1, 0, 0, 0, 710, 7010, 1, 0, 0, 0, 712, 7035, 1, 0, 0, 0, 714, 7037, 1, 0, 0, 0, 716, 7040, 1, 0, 0, 0, 718, 7045, 1, 0, 0, 0, 720, 7061, 1, 0, 0, 0, 722, 7189, 1, 0, 0, 0, 724, 7191, 1, 0, 0, 0, 726, 7224, 1, 0, 0, 0, 728, 7229, 1, 0, 0, 0, 730, 7233, 1, 0, 0, 0, 732, 7239, 1, 0, 0, 0, 734, 7247, 1, 0, 0, 0, 736, 7258, 1, 0, 0, 0, 738, 7266, 1, 0, 0, 0, 740, 7275, 1, 0, 0, 0, 742, 7288, 1, 0, 0, 0, 744, 7290, 1, 0, 0, 0, 746, 7298, 1, 0, 0, 0, 748, 7306, 1, 0, 0, 0, 750, 7340, 1, 0, 0, 0, 752, 7356, 1, 0, 0, 0, 754, 7358, 1, 0, 0, 0, 756, 7361, 1, 0, 0, 0, 758, 7365, 1, 0, 0, 0, 760, 7390, 1, 0, 0, 0, 762, 7571, 1, 0, 0, 0, 764, 7573, 1, 0, 0, 0, 766, 7592, 1, 0, 0, 0, 768, 7594, 1, 0, 0, 0, 770, 7657, 1, 0, 0, 0, 772, 7697, 1, 0, 0, 0, 774, 7699, 1, 0, 0, 0, 776, 7708, 1, 0, 0, 0, 778, 7719, 1, 0, 0, 0, 780, 7721, 1, 0, 0, 0, 782, 7724, 1, 0, 0, 0, 784, 7728, 1, 0, 0, 0, 786, 7730, 1, 0, 0, 0, 788, 7742, 1, 0, 0, 0, 790, 7744, 1, 0, 0, 0, 792, 7778, 1, 0, 0, 0, 794, 7780, 1, 0, 0, 0, 796, 7785, 1, 0, 0, 0, 798, 7796, 1, 0, 0, 0, 800, 7809, 1, 0, 0, 0, 802, 7820, 1, 0, 0, 0, 804, 7937, 1, 0, 0, 0, 806, 7959, 1, 0, 0, 0, 808, 7969, 1, 0, 0, 0, 810, 7978, 1, 0, 0, 0, 812, 7987, 1, 0, 0, 0, 814, 7996, 1, 0, 0, 0, 816, 7998, 1, 0, 0, 0, 818, 8005, 1, 0, 0, 0, 820, 8007, 1, 0, 0, 0, 822, 8009, 1, 0, 0, 0, 824, 8011, 1, 0, 0, 0, 826, 8013, 1, 0, 0, 0, 828, 8015, 1, 0, 0, 0, 830, 8017, 1, 0, 0, 0, 832, 8019, 1, 0, 0, 0, 834, 836, 3, 2, 1, 0, 835, 834, 1, 0, 0, 0, 836, 839, 1, 0, 0, 0, 837, 835, 1, 0, 0, 0, 837, 838, 1, 0, 0, 0, 838, 840, 1, 0, 0, 0, 839, 837, 1, 0, 0, 0, 840, 841, 5, 0, 0, 1, 841, 1, 1, 0, 0, 0, 842, 844, 3, 4, 2, 0, 843, 845, 5, 869, 0, 0, 844, 843, 1, 0, 0, 0, 844, 845, 1, 0, 0, 0, 845, 848, 1, 0, 0, 0, 846, 848, 3, 6, 3, 0, 847, 842, 1, 0, 0, 0, 847, 846, 1, 0, 0, 0, 848, 3, 1, 0, 0, 0, 849, 857, 3, 8, 4, 0, 850, 857, 3, 10, 5, 0, 851, 857, 3, 12, 6, 0, 852, 857, 3, 14, 7, 0, 853, 857, 3, 16, 8, 0, 854, 857, 3, 20, 10, 0, 855, 857, 3, 22, 11, 0, 856, 849, 1, 0, 0, 0, 856, 850, 1, 0, 0, 0, 856, 851, 1, 0, 0, 0, 856, 852, 1, 0, 0, 0, 856, 853, 1, 0, 0, 0, 856, 854, 1, 0, 0, 0, 856, 855, 1, 0, 0, 0, 857, 5, 1, 0, 0, 0, 858, 859, 5, 869, 0, 0, 859, 7, 1, 0, 0, 0, 860, 900, 3, 24, 12, 0, 861, 900, 3, 26, 13, 0, 862, 900, 3, 28, 14, 0, 863, 900, 3, 30, 15, 0, 864, 900, 3, 32, 16, 0, 865, 900, 3, 536, 268, 0, 866, 900, 3, 36, 18, 0, 867, 900, 3, 38, 19, 0, 868, 900, 3, 40, 20, 0, 869, 900, 3, 42, 21, 0, 870, 900, 3, 44, 22, 0, 871, 900, 3, 50, 25, 0, 872, 900, 3, 34, 17, 0, 873, 900, 3, 120, 60, 0, 874, 900, 3, 122, 61, 0, 875, 900, 3, 124, 62, 0, 876, 900, 3, 126, 63, 0, 877, 900, 3, 128, 64, 0, 878, 900, 3, 130, 65, 0, 879, 900, 3, 132, 66, 0, 880, 900, 3, 134, 67, 0, 881, 900, 3, 136, 68, 0, 882, 900, 3, 138, 69, 0, 883, 900, 3, 144, 72, 0, 884, 900, 3, 146, 73, 0, 885, 900, 3, 148, 74, 0, 886, 900, 3, 150, 75, 0, 887, 900, 3, 152, 76, 0, 888, 900, 3, 154, 77, 0, 889, 900, 3, 156, 78, 0, 890, 900, 3, 158, 79, 0, 891, 900, 3, 160, 80, 0, 892, 900, 3, 162, 81, 0, 893, 900, 3, 164, 82, 0, 894, 900, 3, 166, 83, 0, 895, 900, 3, 168, 84, 0, 896, 900, 3, 170, 85, 0, 897, 900, 3, 172, 86, 0, 898, 900, 3, 176, 88, 0, 899, 860, 1, 0, 0, 0, 899, 861, 1, 0, 0, 0, 899, 862, 1, 0, 0, 0, 899, 863, 1, 0, 0, 0, 899, 864, 1, 0, 0, 0, 899, 865, 1, 0, 0, 0, 899, 866, 1, 0, 0, 0, 899, 867, 1, 0, 0, 0, 899, 868, 1, 0, 0, 0, 899, 869, 1, 0, 0, 0, 899, 870, 1, 0, 0, 0, 899, 871, 1, 0, 0, 0, 899, 872, 1, 0, 0, 0, 899, 873, 1, 0, 0, 0, 899, 874, 1, 0, 0, 0, 899, 875, 1, 0, 0, 0, 899, 876, 1, 0, 0, 0, 899, 877, 1, 0, 0, 0, 899, 878, 1, 0, 0, 0, 899, 879, 1, 0, 0, 0, 899, 880, 1, 0, 0, 0, 899, 881, 1, 0, 0, 0, 899, 882, 1, 0, 0, 0, 899, 883, 1, 0, 0, 0, 899, 884, 1, 0, 0, 0, 899, 885, 1, 0, 0, 0, 899, 886, 1, 0, 0, 0, 899, 887, 1, 0, 0, 0, 899, 888, 1, 0, 0, 0, 899, 889, 1, 0, 0, 0, 899, 890, 1, 0, 0, 0, 899, 891, 1, 0, 0, 0, 899, 892, 1, 0, 0, 0, 899, 893, 1, 0, 0, 0, 899, 894, 1, 0, 0, 0, 899, 895, 1, 0, 0, 0, 899, 896, 1, 0, 0, 0, 899, 897, 1, 0, 0, 0, 899, 898, 1, 0, 0, 0, 900, 9, 1, 0, 0, 0, 901, 919, 3, 204, 102, 0, 902, 919, 3, 206, 103, 0, 903, 919, 3, 186, 93, 0, 904, 919, 3, 214, 107, 0, 905, 919, 3, 180, 90, 0, 906, 919, 3, 202, 101, 0, 907, 919, 3, 178, 89, 0, 908, 919, 3, 192, 96, 0, 909, 919, 3, 196, 98, 0, 910, 919, 3, 198, 99, 0, 911, 919, 3, 200, 100, 0, 912, 919, 3, 182, 91, 0, 913, 919, 3, 184, 92, 0, 914, 919, 3, 246, 123, 0, 915, 919, 3, 216, 108, 0, 916, 919, 3, 612, 306, 0, 917, 919, 3, 614, 307, 0, 918, 901, 1, 0, 0, 0, 918, 902, 1, 0, 0, 0, 918, 903, 1, 0, 0, 0, 918, 904, 1, 0, 0, 0, 918, 905, 1, 0, 0, 0, 918, 906, 1, 0, 0, 0, 918, 907, 1, 0, 0, 0, 918, 908, 1, 0, 0, 0, 918, 909, 1, 0, 0, 0, 918, 910, 1, 0, 0, 0, 918, 911, 1, 0, 0, 0, 918, 912, 1, 0, 0, 0, 918, 913, 1, 0, 0, 0, 918, 914, 1, 0, 0, 0, 918, 915, 1, 0, 0, 0, 918, 916, 1, 0, 0, 0, 918, 917, 1, 0, 0, 0, 919, 11, 1, 0, 0, 0, 920, 930, 3, 316, 158, 0, 921, 930, 3, 318, 159, 0, 922, 930, 3, 320, 160, 0, 923, 930, 3, 322, 161, 0, 924, 930, 3, 324, 162, 0, 925, 930, 3, 326, 163, 0, 926, 930, 3, 328, 164, 0, 927, 930, 3, 330, 165, 0, 928, 930, 3, 332, 166, 0, 929, 920, 1, 0, 0, 0, 929, 921, 1, 0, 0, 0, 929, 922, 1, 0, 0, 0, 929, 923, 1, 0, 0, 0, 929, 924, 1, 0, 0, 0, 929, 925, 1, 0, 0, 0, 929, 926, 1, 0, 0, 0, 929, 927, 1, 0, 0, 0, 929, 928, 1, 0, 0, 0, 930, 13, 1, 0, 0, 0, 931, 946, 3, 348, 174, 0, 932, 946, 3, 350, 175, 0, 933, 946, 3, 352, 176, 0, 934, 946, 3, 354, 177, 0, 935, 946, 3, 356, 178, 0, 936, 946, 3, 358, 179, 0, 937, 946, 3, 360, 180, 0, 938, 946, 3, 362, 181, 0, 939, 946, 3, 398, 199, 0, 940, 946, 3, 400, 200, 0, 941, 946, 3, 402, 201, 0, 942, 946, 3, 404, 202, 0, 943, 946, 3, 406, 203, 0, 944, 946, 3, 408, 204, 0, 945, 931, 1, 0, 0, 0, 945, 932, 1, 0, 0, 0, 945, 933, 1, 0, 0, 0, 945, 934, 1, 0, 0, 0, 945, 935, 1, 0, 0, 0, 945, 936, 1, 0, 0, 0, 945, 937, 1, 0, 0, 0, 945, 938, 1, 0, 0, 0, 945, 939, 1, 0, 0, 0, 945, 940, 1, 0, 0, 0, 945, 941, 1, 0, 0, 0, 945, 942, 1, 0, 0, 0, 945, 943, 1, 0, 0, 0, 945, 944, 1, 0, 0, 0, 946, 15, 1, 0, 0, 0, 947, 951, 3, 410, 205, 0, 948, 951, 3, 412, 206, 0, 949, 951, 3, 414, 207, 0, 950, 947, 1, 0, 0, 0, 950, 948, 1, 0, 0, 0, 950, 949, 1, 0, 0, 0, 951, 17, 1, 0, 0, 0, 952, 963, 3, 418, 209, 0, 953, 963, 3, 420, 210, 0, 954, 963, 3, 422, 211, 0, 955, 963, 3, 426, 213, 0, 956, 963, 3, 428, 214, 0, 957, 963, 3, 430, 215, 0, 958, 963, 3, 434, 217, 0, 959, 963, 3, 424, 212, 0, 960, 963, 3, 432, 216, 0, 961, 963, 3, 436, 218, 0, 962, 952, 1, 0, 0, 0, 962, 953, 1, 0, 0, 0, 962, 954, 1, 0, 0, 0, 962, 955, 1, 0, 0, 0, 962, 956, 1, 0, 0, 0, 962, 957, 1, 0, 0, 0, 962, 958, 1, 0, 0, 0, 962, 959, 1, 0, 0, 0, 962, 960, 1, 0, 0, 0, 962, 961, 1, 0, 0, 0, 963, 19, 1, 0, 0, 0, 964, 998, 3, 454, 227, 0, 965, 998, 3, 456, 228, 0, 966, 998, 3, 458, 229, 0, 967, 998, 3, 460, 230, 0, 968, 998, 3, 464, 232, 0, 969, 998, 3, 476, 238, 0, 970, 998, 3, 478, 239, 0, 971, 998, 3, 466, 233, 0, 972, 998, 3, 468, 234, 0, 973, 998, 3, 470, 235, 0, 974, 998, 3, 472, 236, 0, 975, 998, 3, 522, 261, 0, 976, 998, 3, 524, 262, 0, 977, 998, 3, 526, 263, 0, 978, 998, 3, 528, 264, 0, 979, 998, 3, 530, 265, 0, 980, 998, 3, 538, 269, 0, 981, 998, 3, 542, 271, 0, 982, 998, 3, 544, 272, 0, 983, 998, 3, 546, 273, 0, 984, 998, 3, 548, 274, 0, 985, 998, 3, 550, 275, 0, 986, 998, 3, 552, 276, 0, 987, 998, 3, 566, 283, 0, 988, 998, 3, 568, 284, 0, 989, 998, 3, 570, 285, 0, 990, 998, 3, 572, 286, 0, 991, 998, 3, 574, 287, 0, 992, 998, 3, 576, 288, 0, 993, 998, 3, 580, 290, 0, 994, 998, 3, 582, 291, 0, 995, 998, 3, 584, 292, 0, 996, 998, 3, 586, 293, 0, 997, 964, 1, 0, 0, 0, 997, 965, 1, 0, 0, 0, 997, 966, 1, 0, 0, 0, 997, 967, 1, 0, 0, 0, 997, 968, 1, 0, 0, 0, 997, 969, 1, 0, 0, 0, 997, 970, 1, 0, 0, 0, 997, 971, 1, 0, 0, 0, 997, 972, 1, 0, 0, 0, 997, 973, 1, 0, 0, 0, 997, 974, 1, 0, 0, 0, 997, 975, 1, 0, 0, 0, 997, 976, 1, 0, 0, 0, 997, 977, 1, 0, 0, 0, 997, 978, 1, 0, 0, 0, 997, 979, 1, 0, 0, 0, 997, 980, 1, 0, 0, 0, 997, 981, 1, 0, 0, 0, 997, 982, 1, 0, 0, 0, 997, 983, 1, 0, 0, 0, 997, 984, 1, 0, 0, 0, 997, 985, 1, 0, 0, 0, 997, 986, 1, 0, 0, 0, 997, 987, 1, 0, 0, 0, 997, 988, 1, 0, 0, 0, 997, 989, 1, 0, 0, 0, 997, 990, 1, 0, 0, 0, 997, 991, 1, 0, 0, 0, 997, 992, 1, 0, 0, 0, 997, 993, 1, 0, 0, 0, 997, 994, 1, 0, 0, 0, 997, 995, 1, 0, 0, 0, 997, 996, 1, 0, 0, 0, 998, 21, 1, 0, 0, 0, 999, 1008, 3, 598, 299, 0, 1000, 1008, 3, 596, 298, 0, 1001, 1008, 3, 600, 300, 0, 1002, 1008, 3, 602, 301, 0, 1003, 1008, 3, 604, 302, 0, 1004, 1008, 3, 606, 303, 0, 1005, 1008, 3, 608, 304, 0, 1006, 1008, 3, 616, 308, 0, 1007, 999, 1, 0, 0, 0, 1007, 1000, 1, 0, 0, 0, 1007, 1001, 1, 0, 0, 0, 1007, 1002, 1, 0, 0, 0, 1007, 1003, 1, 0, 0, 0, 1007, 1004, 1, 0, 0, 0, 1007, 1005, 1, 0, 0, 0, 1007, 1006, 1, 0, 0, 0, 1008, 23, 1, 0, 0, 0, 1009, 1010, 5, 34, 0, 0, 1010, 1012, 7, 0, 0, 0, 1011, 1013, 3, 756, 378, 0, 1012, 1011, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1018, 3, 622, 311, 0, 1015, 1017, 3, 52, 26, 0, 1016, 1015, 1, 0, 0, 0, 1017, 1020, 1, 0, 0, 0, 1018, 1016, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 25, 1, 0, 0, 0, 1020, 1018, 1, 0, 0, 0, 1021, 1023, 5, 34, 0, 0, 1022, 1024, 3, 58, 29, 0, 1023, 1022, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1027, 5, 385, 0, 0, 1026, 1028, 3, 756, 378, 0, 1027, 1026, 1, 0, 0, 0, 1027, 1028, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1030, 3, 698, 349, 0, 1030, 1031, 5, 119, 0, 0, 1031, 1032, 5, 590, 0, 0, 1032, 1039, 3, 60, 30, 0, 1033, 1034, 5, 119, 0, 0, 1034, 1036, 5, 343, 0, 0, 1035, 1037, 5, 114, 0, 0, 1036, 1035, 1, 0, 0, 0, 1036, 1037, 1, 0, 0, 0, 1037, 1038, 1, 0, 0, 0, 1038, 1040, 5, 541, 0, 0, 1039, 1033, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1042, 1, 0, 0, 0, 1041, 1043, 3, 68, 34, 0, 1042, 1041, 1, 0, 0, 0, 1042, 1043, 1, 0, 0, 0, 1043, 1046, 1, 0, 0, 0, 1044, 1045, 5, 340, 0, 0, 1045, 1047, 5, 882, 0, 0, 1046, 1044, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, 1049, 5, 371, 0, 0, 1049, 1050, 3, 416, 208, 0, 1050, 27, 1, 0, 0, 0, 1051, 1053, 5, 34, 0, 0, 1052, 1054, 7, 1, 0, 0, 1053, 1052, 1, 0, 0, 0, 1053, 1054, 1, 0, 0, 0, 1054, 1056, 1, 0, 0, 0, 1055, 1057, 7, 2, 0, 0, 1056, 1055, 1, 0, 0, 0, 1056, 1057, 1, 0, 0, 0, 1057, 1058, 1, 0, 0, 0, 1058, 1059, 5, 82, 0, 0, 1059, 1061, 3, 634, 317, 0, 1060, 1062, 3, 70, 35, 0, 1061, 1060, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1064, 5, 119, 0, 0, 1064, 1065, 3, 648, 324, 0, 1065, 1069, 3, 734, 367, 0, 1066, 1068, 3, 72, 36, 0, 1067, 1066, 1, 0, 0, 0, 1068, 1071, 1, 0, 0, 0, 1069, 1067, 1, 0, 0, 0, 1069, 1070, 1, 0, 0, 0, 1070, 1084, 1, 0, 0, 0, 1071, 1069, 1, 0, 0, 0, 1072, 1074, 5, 308, 0, 0, 1073, 1075, 5, 857, 0, 0, 1074, 1073, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1083, 7, 3, 0, 0, 1077, 1079, 5, 104, 0, 0, 1078, 1080, 5, 857, 0, 0, 1079, 1078, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1083, 7, 4, 0, 0, 1082, 1072, 1, 0, 0, 0, 1082, 1077, 1, 0, 0, 0, 1083, 1086, 1, 0, 0, 0, 1084, 1082, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 29, 1, 0, 0, 0, 1086, 1084, 1, 0, 0, 0, 1087, 1088, 5, 34, 0, 0, 1088, 1089, 5, 451, 0, 0, 1089, 1090, 5, 74, 0, 0, 1090, 1091, 3, 702, 351, 0, 1091, 1092, 5, 6, 0, 0, 1092, 1093, 5, 671, 0, 0, 1093, 1099, 5, 882, 0, 0, 1094, 1096, 5, 428, 0, 0, 1095, 1097, 5, 857, 0, 0, 1096, 1095, 1, 0, 0, 0, 1096, 1097, 1, 0, 0, 0, 1097, 1098, 1, 0, 0, 0, 1098, 1100, 3, 710, 355, 0, 1099, 1094, 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1106, 1, 0, 0, 0, 1101, 1103, 5, 672, 0, 0, 1102, 1104, 5, 857, 0, 0, 1103, 1102, 1, 0, 0, 0, 1103, 1104, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1107, 3, 710, 355, 0, 1106, 1101, 1, 0, 0, 0, 1106, 1107, 1, 0, 0, 0, 1107, 1113, 1, 0, 0, 0, 1108, 1110, 5, 553, 0, 0, 1109, 1111, 5, 857, 0, 0, 1110, 1109, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1114, 3, 710, 355, 0, 1113, 1108, 1, 0, 0, 0, 1113, 1114, 1, 0, 0, 0, 1114, 1120, 1, 0, 0, 0, 1115, 1117, 5, 504, 0, 0, 1116, 1118, 5, 857, 0, 0, 1117, 1116, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1121, 3, 702, 351, 0, 1120, 1115, 1, 0, 0, 0, 1120, 1121, 1, 0, 0, 0, 1121, 1123, 1, 0, 0, 0, 1122, 1124, 5, 687, 0, 0, 1123, 1122, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1130, 1, 0, 0, 0, 1125, 1127, 5, 340, 0, 0, 1126, 1128, 5, 857, 0, 0, 1127, 1126, 1, 0, 0, 0, 1127, 1128, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1131, 5, 882, 0, 0, 1130, 1125, 1, 0, 0, 0, 1130, 1131, 1, 0, 0, 0, 1131, 1132, 1, 0, 0, 0, 1132, 1134, 5, 380, 0, 0, 1133, 1135, 5, 857, 0, 0, 1134, 1133, 1, 0, 0, 0, 1134, 1135, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 3, 688, 344, 0, 1137, 31, 1, 0, 0, 0, 1138, 1140, 5, 34, 0, 0, 1139, 1141, 3, 58, 29, 0, 1140, 1139, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1142, 1, 0, 0, 0, 1142, 1144, 5, 132, 0, 0, 1143, 1145, 3, 756, 378, 0, 1144, 1143, 1, 0, 0, 0, 1144, 1145, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1147, 3, 698, 349, 0, 1147, 1149, 5, 866, 0, 0, 1148, 1150, 3, 74, 37, 0, 1149, 1148, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1155, 1, 0, 0, 0, 1151, 1152, 5, 868, 0, 0, 1152, 1154, 3, 74, 37, 0, 1153, 1151, 1, 0, 0, 0, 1154, 1157, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1158, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1158, 1162, 5, 867, 0, 0, 1159, 1161, 3, 76, 38, 0, 1160, 1159, 1, 0, 0, 0, 1161, 1164, 1, 0, 0, 0, 1162, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1165, 1, 0, 0, 0, 1164, 1162, 1, 0, 0, 0, 1165, 1166, 3, 416, 208, 0, 1166, 33, 1, 0, 0, 0, 1167, 1168, 5, 34, 0, 0, 1168, 1170, 5, 582, 0, 0, 1169, 1171, 3, 756, 378, 0, 1170, 1169, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 3, 650, 325, 0, 1173, 35, 1, 0, 0, 0, 1174, 1175, 5, 34, 0, 0, 1175, 1176, 5, 592, 0, 0, 1176, 1177, 3, 702, 351, 0, 1177, 1178, 5, 67, 0, 0, 1178, 1179, 5, 360, 0, 0, 1179, 1180, 5, 692, 0, 0, 1180, 1181, 7, 5, 0, 0, 1181, 1182, 5, 518, 0, 0, 1182, 1183, 5, 866, 0, 0, 1183, 1188, 3, 78, 39, 0, 1184, 1185, 5, 868, 0, 0, 1185, 1187, 3, 78, 39, 0, 1186, 1184, 1, 0, 0, 0, 1187, 1190, 1, 0, 0, 0, 1188, 1186, 1, 0, 0, 0, 1188, 1189, 1, 0, 0, 0, 1189, 1191, 1, 0, 0, 0, 1190, 1188, 1, 0, 0, 0, 1191, 1192, 5, 867, 0, 0, 1192, 37, 1, 0, 0, 0, 1193, 1195, 5, 34, 0, 0, 1194, 1196, 5, 660, 0, 0, 1195, 1194, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1199, 5, 173, 0, 0, 1198, 1200, 3, 756, 378, 0, 1199, 1198, 1, 0, 0, 0, 1199, 1200, 1, 0, 0, 0, 1200, 1201, 1, 0, 0, 0, 1201, 1203, 3, 644, 322, 0, 1202, 1204, 3, 80, 40, 0, 1203, 1202, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1215, 1, 0, 0, 0, 1205, 1212, 3, 98, 49, 0, 1206, 1208, 5, 868, 0, 0, 1207, 1206, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1211, 3, 98, 49, 0, 1210, 1207, 1, 0, 0, 0, 1211, 1214, 1, 0, 0, 0, 1212, 1210, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1216, 1, 0, 0, 0, 1214, 1212, 1, 0, 0, 0, 1215, 1205, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1218, 1, 0, 0, 0, 1217, 1219, 3, 104, 52, 0, 1218, 1217, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1221, 1, 0, 0, 0, 1220, 1222, 7, 6, 0, 0, 1221, 1220, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1224, 1, 0, 0, 0, 1223, 1225, 5, 13, 0, 0, 1224, 1223, 1, 0, 0, 0, 1224, 1225, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1227, 3, 204, 102, 0, 1227, 1272, 1, 0, 0, 0, 1228, 1230, 5, 34, 0, 0, 1229, 1231, 5, 660, 0, 0, 1230, 1229, 1, 0, 0, 0, 1230, 1231, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1234, 5, 173, 0, 0, 1233, 1235, 3, 756, 378, 0, 1234, 1233, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 1236, 1, 0, 0, 0, 1236, 1244, 3, 644, 322, 0, 1237, 1238, 5, 99, 0, 0, 1238, 1245, 3, 648, 324, 0, 1239, 1240, 5, 866, 0, 0, 1240, 1241, 5, 99, 0, 0, 1241, 1242, 3, 648, 324, 0, 1242, 1243, 5, 867, 0, 0, 1243, 1245, 1, 0, 0, 0, 1244, 1237, 1, 0, 0, 0, 1244, 1239, 1, 0, 0, 0, 1245, 1272, 1, 0, 0, 0, 1246, 1248, 5, 34, 0, 0, 1247, 1249, 5, 660, 0, 0, 1248, 1247, 1, 0, 0, 0, 1248, 1249, 1, 0, 0, 0, 1249, 1250, 1, 0, 0, 0, 1250, 1252, 5, 173, 0, 0, 1251, 1253, 3, 756, 378, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1254, 1, 0, 0, 0, 1254, 1255, 3, 644, 322, 0, 1255, 1266, 3, 80, 40, 0, 1256, 1263, 3, 98, 49, 0, 1257, 1259, 5, 868, 0, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1262, 3, 98, 49, 0, 1261, 1258, 1, 0, 0, 0, 1262, 1265, 1, 0, 0, 0, 1263, 1261, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1267, 1, 0, 0, 0, 1265, 1263, 1, 0, 0, 0, 1266, 1256, 1, 0, 0, 0, 1266, 1267, 1, 0, 0, 0, 1267, 1269, 1, 0, 0, 0, 1268, 1270, 3, 104, 52, 0, 1269, 1268, 1, 0, 0, 0, 1269, 1270, 1, 0, 0, 0, 1270, 1272, 1, 0, 0, 0, 1271, 1193, 1, 0, 0, 0, 1271, 1228, 1, 0, 0, 0, 1271, 1246, 1, 0, 0, 0, 1272, 39, 1, 0, 0, 0, 1273, 1275, 5, 34, 0, 0, 1274, 1276, 5, 180, 0, 0, 1275, 1274, 1, 0, 0, 0, 1275, 1276, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1278, 5, 658, 0, 0, 1278, 1282, 3, 660, 330, 0, 1279, 1280, 5, 6, 0, 0, 1280, 1281, 5, 361, 0, 0, 1281, 1283, 5, 882, 0, 0, 1282, 1279, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1289, 1, 0, 0, 0, 1284, 1286, 5, 314, 0, 0, 1285, 1287, 5, 857, 0, 0, 1286, 1285, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1288, 1, 0, 0, 0, 1288, 1290, 3, 710, 355, 0, 1289, 1284, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1294, 1, 0, 0, 0, 1291, 1292, 5, 399, 0, 0, 1292, 1293, 5, 857, 0, 0, 1293, 1295, 3, 710, 355, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1295, 1, 0, 0, 0, 1295, 1301, 1, 0, 0, 0, 1296, 1298, 5, 380, 0, 0, 1297, 1299, 5, 857, 0, 0, 1298, 1297, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1302, 3, 688, 344, 0, 1301, 1296, 1, 0, 0, 0, 1301, 1302, 1, 0, 0, 0, 1302, 1308, 1, 0, 0, 0, 1303, 1305, 5, 825, 0, 0, 1304, 1306, 5, 857, 0, 0, 1305, 1304, 1, 0, 0, 0, 1305, 1306, 1, 0, 0, 0, 1306, 1307, 1, 0, 0, 0, 1307, 1309, 5, 882, 0, 0, 1308, 1303, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 41, 1, 0, 0, 0, 1310, 1312, 5, 34, 0, 0, 1311, 1313, 5, 180, 0, 0, 1312, 1311, 1, 0, 0, 0, 1312, 1313, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 5, 658, 0, 0, 1315, 1316, 3, 660, 330, 0, 1316, 1317, 5, 6, 0, 0, 1317, 1318, 5, 361, 0, 0, 1318, 1319, 5, 882, 0, 0, 1319, 1320, 5, 187, 0, 0, 1320, 1321, 5, 451, 0, 0, 1321, 1322, 5, 74, 0, 0, 1322, 1328, 3, 702, 351, 0, 1323, 1325, 5, 393, 0, 0, 1324, 1326, 5, 857, 0, 0, 1325, 1324, 1, 0, 0, 0, 1325, 1326, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1329, 3, 710, 355, 0, 1328, 1323, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1335, 1, 0, 0, 0, 1330, 1332, 5, 428, 0, 0, 1331, 1333, 5, 857, 0, 0, 1332, 1331, 1, 0, 0, 0, 1332, 1333, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1336, 3, 710, 355, 0, 1335, 1330, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1342, 1, 0, 0, 0, 1337, 1339, 5, 314, 0, 0, 1338, 1340, 5, 857, 0, 0, 1339, 1338, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1341, 1, 0, 0, 0, 1341, 1343, 3, 710, 355, 0, 1342, 1337, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 1349, 1, 0, 0, 0, 1344, 1346, 5, 481, 0, 0, 1345, 1347, 5, 857, 0, 0, 1346, 1345, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1350, 3, 710, 355, 0, 1349, 1344, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1356, 1, 0, 0, 0, 1351, 1353, 5, 504, 0, 0, 1352, 1354, 5, 857, 0, 0, 1353, 1352, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1357, 3, 702, 351, 0, 1356, 1351, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1359, 1, 0, 0, 0, 1358, 1360, 5, 687, 0, 0, 1359, 1358, 1, 0, 0, 0, 1359, 1360, 1, 0, 0, 0, 1360, 1366, 1, 0, 0, 0, 1361, 1363, 5, 340, 0, 0, 1362, 1364, 5, 857, 0, 0, 1363, 1362, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1367, 5, 882, 0, 0, 1366, 1361, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1370, 5, 380, 0, 0, 1369, 1371, 5, 857, 0, 0, 1370, 1369, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1372, 1, 0, 0, 0, 1372, 1373, 3, 688, 344, 0, 1373, 43, 1, 0, 0, 0, 1374, 1376, 5, 34, 0, 0, 1375, 1377, 3, 58, 29, 0, 1376, 1375, 1, 0, 0, 0, 1376, 1377, 1, 0, 0, 0, 1377, 1378, 1, 0, 0, 0, 1378, 1380, 5, 178, 0, 0, 1379, 1381, 3, 756, 378, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1383, 3, 698, 349, 0, 1383, 1384, 7, 7, 0, 0, 1384, 1385, 7, 8, 0, 0, 1385, 1386, 5, 119, 0, 0, 1386, 1387, 3, 648, 324, 0, 1387, 1388, 5, 65, 0, 0, 1388, 1389, 5, 52, 0, 0, 1389, 1392, 5, 586, 0, 0, 1390, 1391, 7, 9, 0, 0, 1391, 1393, 3, 698, 349, 0, 1392, 1390, 1, 0, 0, 0, 1392, 1393, 1, 0, 0, 0, 1393, 1394, 1, 0, 0, 0, 1394, 1395, 3, 416, 208, 0, 1395, 45, 1, 0, 0, 0, 1396, 1398, 5, 194, 0, 0, 1397, 1399, 5, 552, 0, 0, 1398, 1397, 1, 0, 0, 0, 1398, 1399, 1, 0, 0, 0, 1399, 1400, 1, 0, 0, 0, 1400, 1401, 3, 48, 24, 0, 1401, 47, 1, 0, 0, 0, 1402, 1414, 3, 702, 351, 0, 1403, 1404, 5, 866, 0, 0, 1404, 1409, 3, 702, 351, 0, 1405, 1406, 5, 868, 0, 0, 1406, 1408, 3, 702, 351, 0, 1407, 1405, 1, 0, 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1412, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1413, 5, 867, 0, 0, 1413, 1415, 1, 0, 0, 0, 1414, 1403, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1416, 1, 0, 0, 0, 1416, 1417, 5, 13, 0, 0, 1417, 1418, 5, 866, 0, 0, 1418, 1419, 3, 10, 5, 0, 1419, 1422, 5, 867, 0, 0, 1420, 1421, 5, 868, 0, 0, 1421, 1423, 3, 48, 24, 0, 1422, 1420, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 49, 1, 0, 0, 0, 1424, 1426, 5, 34, 0, 0, 1425, 1427, 3, 758, 379, 0, 1426, 1425, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1431, 1, 0, 0, 0, 1428, 1429, 5, 308, 0, 0, 1429, 1430, 5, 857, 0, 0, 1430, 1432, 7, 10, 0, 0, 1431, 1428, 1, 0, 0, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1434, 1, 0, 0, 0, 1433, 1435, 3, 58, 29, 0, 1434, 1433, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1439, 1, 0, 0, 0, 1436, 1437, 5, 162, 0, 0, 1437, 1438, 5, 591, 0, 0, 1438, 1440, 7, 11, 0, 0, 1439, 1436, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1441, 1, 0, 0, 0, 1441, 1442, 5, 684, 0, 0, 1442, 1454, 3, 630, 315, 0, 1443, 1444, 5, 866, 0, 0, 1444, 1449, 3, 654, 327, 0, 1445, 1446, 5, 868, 0, 0, 1446, 1448, 3, 654, 327, 0, 1447, 1445, 1, 0, 0, 0, 1448, 1451, 1, 0, 0, 0, 1449, 1447, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1452, 1, 0, 0, 0, 1451, 1449, 1, 0, 0, 0, 1452, 1453, 5, 867, 0, 0, 1453, 1455, 1, 0, 0, 0, 1454, 1443, 1, 0, 0, 0, 1454, 1455, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 1476, 5, 13, 0, 0, 1457, 1459, 5, 866, 0, 0, 1458, 1460, 3, 46, 23, 0, 1459, 1458, 1, 0, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1461, 1, 0, 0, 0, 1461, 1462, 3, 204, 102, 0, 1462, 1463, 5, 867, 0, 0, 1463, 1477, 1, 0, 0, 0, 1464, 1466, 3, 46, 23, 0, 1465, 1464, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1474, 3, 204, 102, 0, 1468, 1470, 5, 194, 0, 0, 1469, 1471, 7, 12, 0, 0, 1470, 1469, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1472, 1, 0, 0, 0, 1472, 1473, 5, 27, 0, 0, 1473, 1475, 5, 121, 0, 0, 1474, 1468, 1, 0, 0, 0, 1474, 1475, 1, 0, 0, 0, 1475, 1477, 1, 0, 0, 0, 1476, 1457, 1, 0, 0, 0, 1476, 1465, 1, 0, 0, 0, 1477, 51, 1, 0, 0, 0, 1478, 1480, 5, 42, 0, 0, 1479, 1478, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1483, 3, 54, 27, 0, 1482, 1484, 5, 857, 0, 0, 1483, 1482, 1, 0, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1487, 1, 0, 0, 0, 1485, 1488, 3, 684, 342, 0, 1486, 1488, 5, 42, 0, 0, 1487, 1485, 1, 0, 0, 0, 1487, 1486, 1, 0, 0, 0, 1488, 1512, 1, 0, 0, 0, 1489, 1491, 5, 42, 0, 0, 1490, 1489, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1494, 5, 28, 0, 0, 1493, 1495, 5, 857, 0, 0, 1494, 1493, 1, 0, 0, 0, 1494, 1495, 1, 0, 0, 0, 1495, 1496, 1, 0, 0, 0, 1496, 1512, 3, 686, 343, 0, 1497, 1499, 5, 42, 0, 0, 1498, 1497, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 1500, 1, 0, 0, 0, 1500, 1502, 5, 376, 0, 0, 1501, 1503, 5, 857, 0, 0, 1502, 1501, 1, 0, 0, 0, 1502, 1503, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1512, 5, 882, 0, 0, 1505, 1506, 5, 135, 0, 0, 1506, 1508, 5, 515, 0, 0, 1507, 1509, 5, 857, 0, 0, 1508, 1507, 1, 0, 0, 0, 1508, 1509, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 1512, 7, 13, 0, 0, 1511, 1479, 1, 0, 0, 0, 1511, 1490, 1, 0, 0, 0, 1511, 1498, 1, 0, 0, 0, 1511, 1505, 1, 0, 0, 0, 1512, 53, 1, 0, 0, 0, 1513, 1514, 5, 26, 0, 0, 1514, 1519, 5, 155, 0, 0, 1515, 1519, 5, 823, 0, 0, 1516, 1517, 5, 224, 0, 0, 1517, 1519, 5, 155, 0, 0, 1518, 1513, 1, 0, 0, 0, 1518, 1515, 1, 0, 0, 0, 1518, 1516, 1, 0, 0, 0, 1519, 55, 1, 0, 0, 0, 1520, 1523, 7, 14, 0, 0, 1521, 1522, 5, 866, 0, 0, 1522, 1524, 5, 867, 0, 0, 1523, 1521, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 57, 1, 0, 0, 0, 1525, 1526, 5, 364, 0, 0, 1526, 1529, 5, 857, 0, 0, 1527, 1530, 3, 680, 340, 0, 1528, 1530, 3, 56, 28, 0, 1529, 1527, 1, 0, 0, 0, 1529, 1528, 1, 0, 0, 0, 1530, 59, 1, 0, 0, 0, 1531, 1532, 5, 311, 0, 0, 1532, 1536, 3, 62, 31, 0, 1533, 1535, 3, 64, 32, 0, 1534, 1533, 1, 0, 0, 0, 1535, 1538, 1, 0, 0, 0, 1536, 1534, 1, 0, 0, 0, 1536, 1537, 1, 0, 0, 0, 1537, 1566, 1, 0, 0, 0, 1538, 1536, 1, 0, 0, 0, 1539, 1542, 5, 387, 0, 0, 1540, 1543, 3, 708, 354, 0, 1541, 1543, 3, 800, 400, 0, 1542, 1540, 1, 0, 0, 0, 1542, 1541, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1553, 3, 66, 33, 0, 1545, 1546, 5, 641, 0, 0, 1546, 1550, 3, 62, 31, 0, 1547, 1549, 3, 64, 32, 0, 1548, 1547, 1, 0, 0, 0, 1549, 1552, 1, 0, 0, 0, 1550, 1548, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1554, 1, 0, 0, 0, 1552, 1550, 1, 0, 0, 0, 1553, 1545, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1563, 1, 0, 0, 0, 1555, 1556, 5, 379, 0, 0, 1556, 1560, 3, 62, 31, 0, 1557, 1559, 3, 64, 32, 0, 1558, 1557, 1, 0, 0, 0, 1559, 1562, 1, 0, 0, 0, 1560, 1558, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1564, 1, 0, 0, 0, 1562, 1560, 1, 0, 0, 0, 1563, 1555, 1, 0, 0, 0, 1563, 1564, 1, 0, 0, 0, 1564, 1566, 1, 0, 0, 0, 1565, 1531, 1, 0, 0, 0, 1565, 1539, 1, 0, 0, 0, 1566, 61, 1, 0, 0, 0, 1567, 1572, 5, 287, 0, 0, 1568, 1572, 3, 712, 356, 0, 1569, 1572, 3, 708, 354, 0, 1570, 1572, 3, 800, 400, 0, 1571, 1567, 1, 0, 0, 0, 1571, 1568, 1, 0, 0, 0, 1571, 1569, 1, 0, 0, 0, 1571, 1570, 1, 0, 0, 0, 1572, 63, 1, 0, 0, 0, 1573, 1574, 5, 853, 0, 0, 1574, 1577, 5, 87, 0, 0, 1575, 1578, 3, 708, 354, 0, 1576, 1578, 3, 800, 400, 0, 1577, 1575, 1, 0, 0, 0, 1577, 1576, 1, 0, 0, 0, 1578, 1579, 1, 0, 0, 0, 1579, 1580, 3, 66, 33, 0, 1580, 65, 1, 0, 0, 0, 1581, 1595, 3, 826, 413, 0, 1582, 1595, 5, 223, 0, 0, 1583, 1595, 5, 242, 0, 0, 1584, 1595, 5, 243, 0, 0, 1585, 1595, 5, 244, 0, 0, 1586, 1595, 5, 245, 0, 0, 1587, 1595, 5, 246, 0, 0, 1588, 1595, 5, 247, 0, 0, 1589, 1595, 5, 248, 0, 0, 1590, 1595, 5, 249, 0, 0, 1591, 1595, 5, 250, 0, 0, 1592, 1595, 5, 251, 0, 0, 1593, 1595, 5, 252, 0, 0, 1594, 1581, 1, 0, 0, 0, 1594, 1582, 1, 0, 0, 0, 1594, 1583, 1, 0, 0, 0, 1594, 1584, 1, 0, 0, 0, 1594, 1585, 1, 0, 0, 0, 1594, 1586, 1, 0, 0, 0, 1594, 1587, 1, 0, 0, 0, 1594, 1588, 1, 0, 0, 0, 1594, 1589, 1, 0, 0, 0, 1594, 1590, 1, 0, 0, 0, 1594, 1591, 1, 0, 0, 0, 1594, 1592, 1, 0, 0, 0, 1594, 1593, 1, 0, 0, 0, 1595, 67, 1, 0, 0, 0, 1596, 1602, 5, 375, 0, 0, 1597, 1602, 5, 368, 0, 0, 1598, 1599, 5, 368, 0, 0, 1599, 1600, 5, 119, 0, 0, 1600, 1602, 5, 598, 0, 0, 1601, 1596, 1, 0, 0, 0, 1601, 1597, 1, 0, 0, 0, 1601, 1598, 1, 0, 0, 0, 1602, 69, 1, 0, 0, 0, 1603, 1604, 5, 188, 0, 0, 1604, 1605, 7, 15, 0, 0, 1605, 71, 1, 0, 0, 0, 1606, 1608, 5, 443, 0, 0, 1607, 1609, 5, 857, 0, 0, 1608, 1607, 1, 0, 0, 0, 1608, 1609, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1629, 3, 710, 355, 0, 1611, 1629, 3, 70, 35, 0, 1612, 1613, 5, 194, 0, 0, 1613, 1614, 5, 525, 0, 0, 1614, 1629, 3, 702, 351, 0, 1615, 1616, 5, 340, 0, 0, 1616, 1629, 5, 882, 0, 0, 1617, 1629, 7, 16, 0, 0, 1618, 1620, 5, 825, 0, 0, 1619, 1621, 5, 857, 0, 0, 1620, 1619, 1, 0, 0, 0, 1620, 1621, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1629, 5, 882, 0, 0, 1623, 1625, 5, 833, 0, 0, 1624, 1626, 5, 857, 0, 0, 1625, 1624, 1, 0, 0, 0, 1625, 1626, 1, 0, 0, 0, 1626, 1627, 1, 0, 0, 0, 1627, 1629, 5, 882, 0, 0, 1628, 1606, 1, 0, 0, 0, 1628, 1611, 1, 0, 0, 0, 1628, 1612, 1, 0, 0, 0, 1628, 1615, 1, 0, 0, 0, 1628, 1617, 1, 0, 0, 0, 1628, 1618, 1, 0, 0, 0, 1628, 1623, 1, 0, 0, 0, 1629, 73, 1, 0, 0, 0, 1630, 1632, 7, 17, 0, 0, 1631, 1630, 1, 0, 0, 0, 1631, 1632, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1634, 3, 702, 351, 0, 1634, 1635, 3, 722, 361, 0, 1635, 75, 1, 0, 0, 0, 1636, 1637, 5, 340, 0, 0, 1637, 1660, 5, 882, 0, 0, 1638, 1639, 5, 444, 0, 0, 1639, 1660, 5, 162, 0, 0, 1640, 1642, 5, 114, 0, 0, 1641, 1640, 1, 0, 0, 0, 1641, 1642, 1, 0, 0, 0, 1642, 1643, 1, 0, 0, 0, 1643, 1660, 5, 47, 0, 0, 1644, 1645, 5, 354, 0, 0, 1645, 1655, 5, 162, 0, 0, 1646, 1647, 5, 502, 0, 0, 1647, 1655, 5, 162, 0, 0, 1648, 1649, 5, 136, 0, 0, 1649, 1650, 5, 162, 0, 0, 1650, 1655, 5, 360, 0, 0, 1651, 1652, 5, 112, 0, 0, 1652, 1653, 5, 162, 0, 0, 1653, 1655, 5, 360, 0, 0, 1654, 1644, 1, 0, 0, 0, 1654, 1646, 1, 0, 0, 0, 1654, 1648, 1, 0, 0, 0, 1654, 1651, 1, 0, 0, 0, 1655, 1660, 1, 0, 0, 0, 1656, 1657, 5, 162, 0, 0, 1657, 1658, 5, 591, 0, 0, 1658, 1660, 7, 11, 0, 0, 1659, 1636, 1, 0, 0, 0, 1659, 1638, 1, 0, 0, 0, 1659, 1641, 1, 0, 0, 0, 1659, 1654, 1, 0, 0, 0, 1659, 1656, 1, 0, 0, 0, 1660, 77, 1, 0, 0, 0, 1661, 1662, 5, 421, 0, 0, 1662, 1676, 5, 882, 0, 0, 1663, 1664, 5, 39, 0, 0, 1664, 1676, 5, 882, 0, 0, 1665, 1666, 5, 678, 0, 0, 1666, 1676, 5, 882, 0, 0, 1667, 1668, 5, 529, 0, 0, 1668, 1676, 5, 882, 0, 0, 1669, 1670, 5, 601, 0, 0, 1670, 1676, 5, 882, 0, 0, 1671, 1672, 5, 519, 0, 0, 1672, 1676, 5, 882, 0, 0, 1673, 1674, 5, 537, 0, 0, 1674, 1676, 3, 708, 354, 0, 1675, 1661, 1, 0, 0, 0, 1675, 1663, 1, 0, 0, 0, 1675, 1665, 1, 0, 0, 0, 1675, 1667, 1, 0, 0, 0, 1675, 1669, 1, 0, 0, 0, 1675, 1671, 1, 0, 0, 0, 1675, 1673, 1, 0, 0, 0, 1676, 79, 1, 0, 0, 0, 1677, 1678, 5, 866, 0, 0, 1678, 1683, 3, 82, 41, 0, 1679, 1680, 5, 868, 0, 0, 1680, 1682, 3, 82, 41, 0, 1681, 1679, 1, 0, 0, 0, 1682, 1685, 1, 0, 0, 0, 1683, 1681, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1686, 1, 0, 0, 0, 1685, 1683, 1, 0, 0, 0, 1686, 1687, 5, 867, 0, 0, 1687, 81, 1, 0, 0, 0, 1688, 1689, 3, 654, 327, 0, 1689, 1690, 3, 88, 44, 0, 1690, 1772, 1, 0, 0, 0, 1691, 1693, 7, 18, 0, 0, 1692, 1694, 3, 638, 319, 0, 1693, 1692, 1, 0, 0, 0, 1693, 1694, 1, 0, 0, 0, 1694, 1696, 1, 0, 0, 0, 1695, 1697, 3, 70, 35, 0, 1696, 1695, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1702, 3, 734, 367, 0, 1699, 1701, 3, 72, 36, 0, 1700, 1699, 1, 0, 0, 0, 1701, 1704, 1, 0, 0, 0, 1702, 1700, 1, 0, 0, 0, 1702, 1703, 1, 0, 0, 0, 1703, 1772, 1, 0, 0, 0, 1704, 1702, 1, 0, 0, 0, 1705, 1707, 7, 19, 0, 0, 1706, 1708, 7, 18, 0, 0, 1707, 1706, 1, 0, 0, 0, 1707, 1708, 1, 0, 0, 0, 1708, 1710, 1, 0, 0, 0, 1709, 1711, 3, 638, 319, 0, 1710, 1709, 1, 0, 0, 0, 1710, 1711, 1, 0, 0, 0, 1711, 1712, 1, 0, 0, 0, 1712, 1716, 3, 734, 367, 0, 1713, 1715, 3, 72, 36, 0, 1714, 1713, 1, 0, 0, 0, 1715, 1718, 1, 0, 0, 0, 1716, 1714, 1, 0, 0, 0, 1716, 1717, 1, 0, 0, 0, 1717, 1772, 1, 0, 0, 0, 1718, 1716, 1, 0, 0, 0, 1719, 1721, 3, 86, 43, 0, 1720, 1719, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1723, 5, 131, 0, 0, 1723, 1725, 5, 92, 0, 0, 1724, 1726, 3, 70, 35, 0, 1725, 1724, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1726, 1727, 1, 0, 0, 0, 1727, 1731, 3, 734, 367, 0, 1728, 1730, 3, 72, 36, 0, 1729, 1728, 1, 0, 0, 0, 1730, 1733, 1, 0, 0, 0, 1731, 1729, 1, 0, 0, 0, 1731, 1732, 1, 0, 0, 0, 1732, 1772, 1, 0, 0, 0, 1733, 1731, 1, 0, 0, 0, 1734, 1736, 3, 86, 43, 0, 1735, 1734, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 1737, 1, 0, 0, 0, 1737, 1739, 5, 182, 0, 0, 1738, 1740, 7, 18, 0, 0, 1739, 1738, 1, 0, 0, 0, 1739, 1740, 1, 0, 0, 0, 1740, 1742, 1, 0, 0, 0, 1741, 1743, 3, 638, 319, 0, 1742, 1741, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1745, 1, 0, 0, 0, 1744, 1746, 3, 70, 35, 0, 1745, 1744, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1751, 3, 734, 367, 0, 1748, 1750, 3, 72, 36, 0, 1749, 1748, 1, 0, 0, 0, 1750, 1753, 1, 0, 0, 0, 1751, 1749, 1, 0, 0, 0, 1751, 1752, 1, 0, 0, 0, 1752, 1772, 1, 0, 0, 0, 1753, 1751, 1, 0, 0, 0, 1754, 1756, 3, 86, 43, 0, 1755, 1754, 1, 0, 0, 0, 1755, 1756, 1, 0, 0, 0, 1756, 1757, 1, 0, 0, 0, 1757, 1758, 5, 67, 0, 0, 1758, 1760, 5, 92, 0, 0, 1759, 1761, 3, 638, 319, 0, 1760, 1759, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 1, 0, 0, 0, 1762, 1763, 3, 734, 367, 0, 1763, 1764, 3, 92, 46, 0, 1764, 1772, 1, 0, 0, 0, 1765, 1766, 5, 27, 0, 0, 1766, 1767, 5, 866, 0, 0, 1767, 1768, 3, 800, 400, 0, 1768, 1769, 5, 867, 0, 0, 1769, 1772, 1, 0, 0, 0, 1770, 1772, 3, 84, 42, 0, 1771, 1688, 1, 0, 0, 0, 1771, 1691, 1, 0, 0, 0, 1771, 1705, 1, 0, 0, 0, 1771, 1720, 1, 0, 0, 0, 1771, 1735, 1, 0, 0, 0, 1771, 1755, 1, 0, 0, 0, 1771, 1765, 1, 0, 0, 0, 1771, 1770, 1, 0, 0, 0, 1772, 83, 1, 0, 0, 0, 1773, 1775, 3, 86, 43, 0, 1774, 1773, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1776, 1, 0, 0, 0, 1776, 1777, 5, 27, 0, 0, 1777, 1778, 5, 866, 0, 0, 1778, 1779, 3, 800, 400, 0, 1779, 1784, 5, 867, 0, 0, 1780, 1782, 5, 114, 0, 0, 1781, 1780, 1, 0, 0, 0, 1781, 1782, 1, 0, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1785, 5, 57, 0, 0, 1784, 1781, 1, 0, 0, 0, 1784, 1785, 1, 0, 0, 0, 1785, 85, 1, 0, 0, 0, 1786, 1788, 5, 31, 0, 0, 1787, 1789, 3, 702, 351, 0, 1788, 1787, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 87, 1, 0, 0, 0, 1790, 1794, 3, 722, 361, 0, 1791, 1793, 3, 90, 45, 0, 1792, 1791, 1, 0, 0, 0, 1793, 1796, 1, 0, 0, 0, 1794, 1792, 1, 0, 0, 0, 1794, 1795, 1, 0, 0, 0, 1795, 89, 1, 0, 0, 0, 1796, 1794, 1, 0, 0, 0, 1797, 1841, 3, 718, 359, 0, 1798, 1799, 5, 42, 0, 0, 1799, 1841, 3, 750, 375, 0, 1800, 1841, 5, 686, 0, 0, 1801, 1841, 5, 435, 0, 0, 1802, 1807, 5, 315, 0, 0, 1803, 1804, 5, 119, 0, 0, 1804, 1805, 5, 185, 0, 0, 1805, 1807, 3, 752, 376, 0, 1806, 1802, 1, 0, 0, 0, 1806, 1803, 1, 0, 0, 0, 1807, 1841, 1, 0, 0, 0, 1808, 1810, 5, 131, 0, 0, 1809, 1808, 1, 0, 0, 0, 1809, 1810, 1, 0, 0, 0, 1810, 1811, 1, 0, 0, 0, 1811, 1841, 5, 92, 0, 0, 1812, 1814, 5, 182, 0, 0, 1813, 1815, 5, 92, 0, 0, 1814, 1813, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1841, 1, 0, 0, 0, 1816, 1817, 5, 340, 0, 0, 1817, 1841, 5, 882, 0, 0, 1818, 1819, 5, 338, 0, 0, 1819, 1841, 7, 20, 0, 0, 1820, 1821, 5, 647, 0, 0, 1821, 1841, 7, 21, 0, 0, 1822, 1841, 3, 92, 46, 0, 1823, 1824, 5, 28, 0, 0, 1824, 1841, 3, 686, 343, 0, 1825, 1826, 5, 71, 0, 0, 1826, 1828, 5, 9, 0, 0, 1827, 1825, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1829, 1, 0, 0, 0, 1829, 1830, 5, 13, 0, 0, 1830, 1831, 5, 866, 0, 0, 1831, 1832, 3, 800, 400, 0, 1832, 1834, 5, 867, 0, 0, 1833, 1835, 7, 22, 0, 0, 1834, 1833, 1, 0, 0, 0, 1834, 1835, 1, 0, 0, 0, 1835, 1841, 1, 0, 0, 0, 1836, 1837, 5, 241, 0, 0, 1837, 1838, 5, 42, 0, 0, 1838, 1841, 5, 682, 0, 0, 1839, 1841, 3, 84, 42, 0, 1840, 1797, 1, 0, 0, 0, 1840, 1798, 1, 0, 0, 0, 1840, 1800, 1, 0, 0, 0, 1840, 1801, 1, 0, 0, 0, 1840, 1806, 1, 0, 0, 0, 1840, 1809, 1, 0, 0, 0, 1840, 1812, 1, 0, 0, 0, 1840, 1816, 1, 0, 0, 0, 1840, 1818, 1, 0, 0, 0, 1840, 1820, 1, 0, 0, 0, 1840, 1822, 1, 0, 0, 0, 1840, 1823, 1, 0, 0, 0, 1840, 1827, 1, 0, 0, 0, 1840, 1836, 1, 0, 0, 0, 1840, 1839, 1, 0, 0, 0, 1841, 91, 1, 0, 0, 0, 1842, 1843, 5, 138, 0, 0, 1843, 1845, 3, 648, 324, 0, 1844, 1846, 3, 734, 367, 0, 1845, 1844, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 1849, 1, 0, 0, 0, 1847, 1848, 5, 110, 0, 0, 1848, 1850, 7, 23, 0, 0, 1849, 1847, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 1852, 1, 0, 0, 0, 1851, 1853, 3, 94, 47, 0, 1852, 1851, 1, 0, 0, 0, 1852, 1853, 1, 0, 0, 0, 1853, 93, 1, 0, 0, 0, 1854, 1855, 5, 119, 0, 0, 1855, 1856, 5, 44, 0, 0, 1856, 1860, 3, 96, 48, 0, 1857, 1858, 5, 119, 0, 0, 1858, 1859, 5, 185, 0, 0, 1859, 1861, 3, 96, 48, 0, 1860, 1857, 1, 0, 0, 0, 1860, 1861, 1, 0, 0, 0, 1861, 1871, 1, 0, 0, 0, 1862, 1863, 5, 119, 0, 0, 1863, 1864, 5, 185, 0, 0, 1864, 1868, 3, 96, 48, 0, 1865, 1866, 5, 119, 0, 0, 1866, 1867, 5, 44, 0, 0, 1867, 1869, 3, 96, 48, 0, 1868, 1865, 1, 0, 0, 0, 1868, 1869, 1, 0, 0, 0, 1869, 1871, 1, 0, 0, 0, 1870, 1854, 1, 0, 0, 0, 1870, 1862, 1, 0, 0, 0, 1871, 95, 1, 0, 0, 0, 1872, 1881, 5, 146, 0, 0, 1873, 1881, 5, 22, 0, 0, 1874, 1875, 5, 155, 0, 0, 1875, 1881, 5, 116, 0, 0, 1876, 1877, 5, 502, 0, 0, 1877, 1881, 5, 305, 0, 0, 1878, 1879, 5, 155, 0, 0, 1879, 1881, 5, 42, 0, 0, 1880, 1872, 1, 0, 0, 0, 1880, 1873, 1, 0, 0, 0, 1880, 1874, 1, 0, 0, 0, 1880, 1876, 1, 0, 0, 0, 1880, 1878, 1, 0, 0, 0, 1881, 97, 1, 0, 0, 0, 1882, 1884, 5, 380, 0, 0, 1883, 1885, 5, 857, 0, 0, 1884, 1883, 1, 0, 0, 0, 1884, 1885, 1, 0, 0, 0, 1885, 1887, 1, 0, 0, 0, 1886, 1888, 3, 688, 344, 0, 1887, 1886, 1, 0, 0, 0, 1887, 1888, 1, 0, 0, 0, 1888, 2068, 1, 0, 0, 0, 1889, 1891, 5, 825, 0, 0, 1890, 1892, 5, 857, 0, 0, 1891, 1890, 1, 0, 0, 0, 1891, 1892, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 2068, 5, 882, 0, 0, 1894, 1896, 5, 314, 0, 0, 1895, 1897, 5, 857, 0, 0, 1896, 1895, 1, 0, 0, 0, 1896, 1897, 1, 0, 0, 0, 1897, 1898, 1, 0, 0, 0, 1898, 2068, 3, 708, 354, 0, 1899, 1901, 5, 315, 0, 0, 1900, 1902, 5, 857, 0, 0, 1901, 1900, 1, 0, 0, 0, 1901, 1902, 1, 0, 0, 0, 1902, 1903, 1, 0, 0, 0, 1903, 2068, 3, 708, 354, 0, 1904, 1906, 5, 316, 0, 0, 1905, 1907, 5, 857, 0, 0, 1906, 1905, 1, 0, 0, 0, 1906, 1907, 1, 0, 0, 0, 1907, 1908, 1, 0, 0, 0, 1908, 2068, 3, 708, 354, 0, 1909, 1911, 5, 42, 0, 0, 1910, 1909, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1914, 3, 54, 27, 0, 1913, 1915, 5, 857, 0, 0, 1914, 1913, 1, 0, 0, 0, 1914, 1915, 1, 0, 0, 0, 1915, 1918, 1, 0, 0, 0, 1916, 1919, 3, 684, 342, 0, 1917, 1919, 5, 42, 0, 0, 1918, 1916, 1, 0, 0, 0, 1918, 1917, 1, 0, 0, 0, 1919, 2068, 1, 0, 0, 0, 1920, 1922, 7, 24, 0, 0, 1921, 1923, 5, 857, 0, 0, 1922, 1921, 1, 0, 0, 0, 1922, 1923, 1, 0, 0, 0, 1923, 1924, 1, 0, 0, 0, 1924, 2068, 7, 25, 0, 0, 1925, 1927, 5, 42, 0, 0, 1926, 1925, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1927, 1928, 1, 0, 0, 0, 1928, 1930, 5, 28, 0, 0, 1929, 1931, 5, 857, 0, 0, 1930, 1929, 1, 0, 0, 0, 1930, 1931, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 2068, 3, 686, 343, 0, 1933, 1935, 5, 340, 0, 0, 1934, 1936, 5, 857, 0, 0, 1935, 1934, 1, 0, 0, 0, 1935, 1936, 1, 0, 0, 0, 1936, 1937, 1, 0, 0, 0, 1937, 2068, 5, 882, 0, 0, 1938, 1940, 5, 346, 0, 0, 1939, 1941, 5, 857, 0, 0, 1940, 1939, 1, 0, 0, 0, 1940, 1941, 1, 0, 0, 0, 1941, 1942, 1, 0, 0, 0, 1942, 2068, 7, 26, 0, 0, 1943, 1945, 5, 349, 0, 0, 1944, 1946, 5, 857, 0, 0, 1945, 1944, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 2068, 5, 882, 0, 0, 1948, 1949, 7, 27, 0, 0, 1949, 1951, 5, 367, 0, 0, 1950, 1952, 5, 857, 0, 0, 1951, 1950, 1, 0, 0, 0, 1951, 1952, 1, 0, 0, 0, 1952, 1953, 1, 0, 0, 0, 1953, 2068, 5, 882, 0, 0, 1954, 1956, 5, 365, 0, 0, 1955, 1957, 5, 857, 0, 0, 1956, 1955, 1, 0, 0, 0, 1956, 1957, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 2068, 7, 25, 0, 0, 1959, 1961, 5, 376, 0, 0, 1960, 1962, 5, 857, 0, 0, 1961, 1960, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 2068, 5, 882, 0, 0, 1964, 1966, 7, 28, 0, 0, 1965, 1967, 5, 857, 0, 0, 1966, 1965, 1, 0, 0, 0, 1966, 1967, 1, 0, 0, 0, 1967, 1968, 1, 0, 0, 0, 1968, 2068, 7, 25, 0, 0, 1969, 1971, 7, 29, 0, 0, 1970, 1972, 5, 857, 0, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 2068, 3, 708, 354, 0, 1974, 1976, 5, 377, 0, 0, 1975, 1977, 5, 857, 0, 0, 1976, 1975, 1, 0, 0, 0, 1976, 1977, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 2068, 3, 708, 354, 0, 1979, 1980, 5, 82, 0, 0, 1980, 1982, 5, 367, 0, 0, 1981, 1983, 5, 857, 0, 0, 1982, 1981, 1, 0, 0, 0, 1982, 1983, 1, 0, 0, 0, 1983, 1984, 1, 0, 0, 0, 1984, 2068, 5, 882, 0, 0, 1985, 1987, 5, 431, 0, 0, 1986, 1988, 5, 857, 0, 0, 1987, 1986, 1, 0, 0, 0, 1987, 1988, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 2068, 7, 30, 0, 0, 1990, 1992, 5, 443, 0, 0, 1991, 1993, 5, 857, 0, 0, 1992, 1991, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 2068, 3, 710, 355, 0, 1995, 1997, 5, 480, 0, 0, 1996, 1998, 5, 857, 0, 0, 1997, 1996, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2068, 3, 708, 354, 0, 2000, 2002, 5, 490, 0, 0, 2001, 2003, 5, 857, 0, 0, 2002, 2001, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2004, 1, 0, 0, 0, 2004, 2068, 3, 708, 354, 0, 2005, 2007, 5, 520, 0, 0, 2006, 2008, 5, 857, 0, 0, 2007, 2006, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2009, 1, 0, 0, 0, 2009, 2068, 7, 13, 0, 0, 2010, 2012, 5, 529, 0, 0, 2011, 2013, 5, 857, 0, 0, 2012, 2011, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2014, 1, 0, 0, 0, 2014, 2068, 5, 882, 0, 0, 2015, 2017, 5, 588, 0, 0, 2016, 2018, 5, 857, 0, 0, 2017, 2016, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2068, 7, 31, 0, 0, 2020, 2021, 5, 640, 0, 0, 2021, 2068, 5, 664, 0, 0, 2022, 2024, 5, 833, 0, 0, 2023, 2025, 5, 857, 0, 0, 2024, 2023, 1, 0, 0, 0, 2024, 2025, 1, 0, 0, 0, 2025, 2026, 1, 0, 0, 0, 2026, 2068, 5, 882, 0, 0, 2027, 2029, 5, 642, 0, 0, 2028, 2030, 5, 857, 0, 0, 2029, 2028, 1, 0, 0, 0, 2029, 2030, 1, 0, 0, 0, 2030, 2031, 1, 0, 0, 0, 2031, 2068, 7, 13, 0, 0, 2032, 2034, 5, 643, 0, 0, 2033, 2035, 5, 857, 0, 0, 2034, 2033, 1, 0, 0, 0, 2034, 2035, 1, 0, 0, 0, 2035, 2036, 1, 0, 0, 0, 2036, 2068, 7, 13, 0, 0, 2037, 2039, 5, 644, 0, 0, 2038, 2040, 5, 857, 0, 0, 2039, 2038, 1, 0, 0, 0, 2039, 2040, 1, 0, 0, 0, 2040, 2043, 1, 0, 0, 0, 2041, 2044, 5, 42, 0, 0, 2042, 2044, 3, 708, 354, 0, 2043, 2041, 1, 0, 0, 0, 2043, 2042, 1, 0, 0, 0, 2044, 2068, 1, 0, 0, 0, 2045, 2046, 5, 658, 0, 0, 2046, 2048, 3, 662, 331, 0, 2047, 2049, 3, 102, 51, 0, 2048, 2047, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 2068, 1, 0, 0, 0, 2050, 2051, 5, 659, 0, 0, 2051, 2052, 5, 857, 0, 0, 2052, 2068, 3, 100, 50, 0, 2053, 2068, 3, 102, 51, 0, 2054, 2056, 5, 665, 0, 0, 2055, 2057, 5, 857, 0, 0, 2056, 2055, 1, 0, 0, 0, 2056, 2057, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2068, 7, 25, 0, 0, 2059, 2061, 5, 181, 0, 0, 2060, 2062, 5, 857, 0, 0, 2061, 2060, 1, 0, 0, 0, 2061, 2062, 1, 0, 0, 0, 2062, 2063, 1, 0, 0, 0, 2063, 2064, 5, 866, 0, 0, 2064, 2065, 3, 646, 323, 0, 2065, 2066, 5, 867, 0, 0, 2066, 2068, 1, 0, 0, 0, 2067, 1882, 1, 0, 0, 0, 2067, 1889, 1, 0, 0, 0, 2067, 1894, 1, 0, 0, 0, 2067, 1899, 1, 0, 0, 0, 2067, 1904, 1, 0, 0, 0, 2067, 1910, 1, 0, 0, 0, 2067, 1920, 1, 0, 0, 0, 2067, 1926, 1, 0, 0, 0, 2067, 1933, 1, 0, 0, 0, 2067, 1938, 1, 0, 0, 0, 2067, 1943, 1, 0, 0, 0, 2067, 1948, 1, 0, 0, 0, 2067, 1954, 1, 0, 0, 0, 2067, 1959, 1, 0, 0, 0, 2067, 1964, 1, 0, 0, 0, 2067, 1969, 1, 0, 0, 0, 2067, 1974, 1, 0, 0, 0, 2067, 1979, 1, 0, 0, 0, 2067, 1985, 1, 0, 0, 0, 2067, 1990, 1, 0, 0, 0, 2067, 1995, 1, 0, 0, 0, 2067, 2000, 1, 0, 0, 0, 2067, 2005, 1, 0, 0, 0, 2067, 2010, 1, 0, 0, 0, 2067, 2015, 1, 0, 0, 0, 2067, 2020, 1, 0, 0, 0, 2067, 2022, 1, 0, 0, 0, 2067, 2027, 1, 0, 0, 0, 2067, 2032, 1, 0, 0, 0, 2067, 2037, 1, 0, 0, 0, 2067, 2045, 1, 0, 0, 0, 2067, 2050, 1, 0, 0, 0, 2067, 2053, 1, 0, 0, 0, 2067, 2054, 1, 0, 0, 0, 2067, 2059, 1, 0, 0, 0, 2068, 99, 1, 0, 0, 0, 2069, 2070, 7, 32, 0, 0, 2070, 101, 1, 0, 0, 0, 2071, 2072, 5, 647, 0, 0, 2072, 2073, 7, 21, 0, 0, 2073, 103, 1, 0, 0, 0, 2074, 2075, 5, 130, 0, 0, 2075, 2076, 5, 20, 0, 0, 2076, 2079, 3, 106, 53, 0, 2077, 2078, 5, 528, 0, 0, 2078, 2080, 3, 708, 354, 0, 2079, 2077, 1, 0, 0, 0, 2079, 2080, 1, 0, 0, 0, 2080, 2088, 1, 0, 0, 0, 2081, 2082, 5, 652, 0, 0, 2082, 2083, 5, 20, 0, 0, 2083, 2086, 3, 108, 54, 0, 2084, 2085, 5, 653, 0, 0, 2085, 2087, 3, 708, 354, 0, 2086, 2084, 1, 0, 0, 0, 2086, 2087, 1, 0, 0, 0, 2087, 2089, 1, 0, 0, 0, 2088, 2081, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2101, 1, 0, 0, 0, 2090, 2091, 5, 866, 0, 0, 2091, 2096, 3, 110, 55, 0, 2092, 2093, 5, 868, 0, 0, 2093, 2095, 3, 110, 55, 0, 2094, 2092, 1, 0, 0, 0, 2095, 2098, 1, 0, 0, 0, 2096, 2094, 1, 0, 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2099, 1, 0, 0, 0, 2098, 2096, 1, 0, 0, 0, 2099, 2100, 5, 867, 0, 0, 2100, 2102, 1, 0, 0, 0, 2101, 2090, 1, 0, 0, 0, 2101, 2102, 1, 0, 0, 0, 2102, 105, 1, 0, 0, 0, 2103, 2105, 5, 101, 0, 0, 2104, 2103, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 2106, 1, 0, 0, 0, 2106, 2107, 5, 418, 0, 0, 2107, 2108, 5, 866, 0, 0, 2108, 2109, 3, 800, 400, 0, 2109, 2110, 5, 867, 0, 0, 2110, 2150, 1, 0, 0, 0, 2111, 2113, 5, 101, 0, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2118, 5, 92, 0, 0, 2115, 2116, 5, 308, 0, 0, 2116, 2117, 5, 857, 0, 0, 2117, 2119, 7, 33, 0, 0, 2118, 2115, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2120, 1, 0, 0, 0, 2120, 2122, 5, 866, 0, 0, 2121, 2123, 3, 656, 328, 0, 2122, 2121, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 2150, 5, 867, 0, 0, 2125, 2135, 5, 134, 0, 0, 2126, 2127, 5, 866, 0, 0, 2127, 2128, 3, 800, 400, 0, 2128, 2129, 5, 867, 0, 0, 2129, 2136, 1, 0, 0, 0, 2130, 2131, 5, 337, 0, 0, 2131, 2132, 5, 866, 0, 0, 2132, 2133, 3, 656, 328, 0, 2133, 2134, 5, 867, 0, 0, 2134, 2136, 1, 0, 0, 0, 2135, 2126, 1, 0, 0, 0, 2135, 2130, 1, 0, 0, 0, 2136, 2150, 1, 0, 0, 0, 2137, 2147, 5, 449, 0, 0, 2138, 2139, 5, 866, 0, 0, 2139, 2140, 3, 800, 400, 0, 2140, 2141, 5, 867, 0, 0, 2141, 2148, 1, 0, 0, 0, 2142, 2143, 5, 337, 0, 0, 2143, 2144, 5, 866, 0, 0, 2144, 2145, 3, 656, 328, 0, 2145, 2146, 5, 867, 0, 0, 2146, 2148, 1, 0, 0, 0, 2147, 2138, 1, 0, 0, 0, 2147, 2142, 1, 0, 0, 0, 2148, 2150, 1, 0, 0, 0, 2149, 2104, 1, 0, 0, 0, 2149, 2112, 1, 0, 0, 0, 2149, 2125, 1, 0, 0, 0, 2149, 2137, 1, 0, 0, 0, 2150, 107, 1, 0, 0, 0, 2151, 2153, 5, 101, 0, 0, 2152, 2151, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 2155, 5, 418, 0, 0, 2155, 2156, 5, 866, 0, 0, 2156, 2157, 3, 800, 400, 0, 2157, 2158, 5, 867, 0, 0, 2158, 2173, 1, 0, 0, 0, 2159, 2161, 5, 101, 0, 0, 2160, 2159, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, 2166, 5, 92, 0, 0, 2163, 2164, 5, 308, 0, 0, 2164, 2165, 5, 857, 0, 0, 2165, 2167, 7, 33, 0, 0, 2166, 2163, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2169, 5, 866, 0, 0, 2169, 2170, 3, 656, 328, 0, 2170, 2171, 5, 867, 0, 0, 2171, 2173, 1, 0, 0, 0, 2172, 2152, 1, 0, 0, 0, 2172, 2160, 1, 0, 0, 0, 2173, 109, 1, 0, 0, 0, 2174, 2175, 5, 130, 0, 0, 2175, 2176, 3, 668, 334, 0, 2176, 2177, 5, 189, 0, 0, 2177, 2178, 5, 447, 0, 0, 2178, 2179, 5, 662, 0, 0, 2179, 2180, 5, 866, 0, 0, 2180, 2185, 3, 112, 56, 0, 2181, 2182, 5, 868, 0, 0, 2182, 2184, 3, 112, 56, 0, 2183, 2181, 1, 0, 0, 0, 2184, 2187, 1, 0, 0, 0, 2185, 2183, 1, 0, 0, 0, 2185, 2186, 1, 0, 0, 0, 2186, 2188, 1, 0, 0, 0, 2187, 2185, 1, 0, 0, 0, 2188, 2192, 5, 867, 0, 0, 2189, 2191, 3, 118, 59, 0, 2190, 2189, 1, 0, 0, 0, 2191, 2194, 1, 0, 0, 0, 2192, 2190, 1, 0, 0, 0, 2192, 2193, 1, 0, 0, 0, 2193, 2206, 1, 0, 0, 0, 2194, 2192, 1, 0, 0, 0, 2195, 2196, 5, 866, 0, 0, 2196, 2201, 3, 116, 58, 0, 2197, 2198, 5, 868, 0, 0, 2198, 2200, 3, 116, 58, 0, 2199, 2197, 1, 0, 0, 0, 2200, 2203, 1, 0, 0, 0, 2201, 2199, 1, 0, 0, 0, 2201, 2202, 1, 0, 0, 0, 2202, 2204, 1, 0, 0, 0, 2203, 2201, 1, 0, 0, 0, 2204, 2205, 5, 867, 0, 0, 2205, 2207, 1, 0, 0, 0, 2206, 2195, 1, 0, 0, 0, 2206, 2207, 1, 0, 0, 0, 2207, 2321, 1, 0, 0, 0, 2208, 2209, 5, 130, 0, 0, 2209, 2210, 3, 668, 334, 0, 2210, 2211, 5, 189, 0, 0, 2211, 2212, 5, 447, 0, 0, 2212, 2213, 5, 662, 0, 0, 2213, 2217, 3, 112, 56, 0, 2214, 2216, 3, 118, 59, 0, 2215, 2214, 1, 0, 0, 0, 2216, 2219, 1, 0, 0, 0, 2217, 2215, 1, 0, 0, 0, 2217, 2218, 1, 0, 0, 0, 2218, 2231, 1, 0, 0, 0, 2219, 2217, 1, 0, 0, 0, 2220, 2221, 5, 866, 0, 0, 2221, 2226, 3, 116, 58, 0, 2222, 2223, 5, 868, 0, 0, 2223, 2225, 3, 116, 58, 0, 2224, 2222, 1, 0, 0, 0, 2225, 2228, 1, 0, 0, 0, 2226, 2224, 1, 0, 0, 0, 2226, 2227, 1, 0, 0, 0, 2227, 2229, 1, 0, 0, 0, 2228, 2226, 1, 0, 0, 0, 2229, 2230, 5, 867, 0, 0, 2230, 2232, 1, 0, 0, 0, 2231, 2220, 1, 0, 0, 0, 2231, 2232, 1, 0, 0, 0, 2232, 2321, 1, 0, 0, 0, 2233, 2234, 5, 130, 0, 0, 2234, 2235, 3, 668, 334, 0, 2235, 2236, 5, 189, 0, 0, 2236, 2237, 5, 80, 0, 0, 2237, 2238, 5, 866, 0, 0, 2238, 2243, 3, 112, 56, 0, 2239, 2240, 5, 868, 0, 0, 2240, 2242, 3, 112, 56, 0, 2241, 2239, 1, 0, 0, 0, 2242, 2245, 1, 0, 0, 0, 2243, 2241, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2246, 1, 0, 0, 0, 2245, 2243, 1, 0, 0, 0, 2246, 2250, 5, 867, 0, 0, 2247, 2249, 3, 118, 59, 0, 2248, 2247, 1, 0, 0, 0, 2249, 2252, 1, 0, 0, 0, 2250, 2248, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2264, 1, 0, 0, 0, 2252, 2250, 1, 0, 0, 0, 2253, 2254, 5, 866, 0, 0, 2254, 2259, 3, 116, 58, 0, 2255, 2256, 5, 868, 0, 0, 2256, 2258, 3, 116, 58, 0, 2257, 2255, 1, 0, 0, 0, 2258, 2261, 1, 0, 0, 0, 2259, 2257, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2262, 1, 0, 0, 0, 2261, 2259, 1, 0, 0, 0, 2262, 2263, 5, 867, 0, 0, 2263, 2265, 1, 0, 0, 0, 2264, 2253, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 2321, 1, 0, 0, 0, 2266, 2267, 5, 130, 0, 0, 2267, 2268, 3, 668, 334, 0, 2268, 2269, 5, 189, 0, 0, 2269, 2270, 5, 80, 0, 0, 2270, 2271, 5, 866, 0, 0, 2271, 2276, 3, 114, 57, 0, 2272, 2273, 5, 868, 0, 0, 2273, 2275, 3, 114, 57, 0, 2274, 2272, 1, 0, 0, 0, 2275, 2278, 1, 0, 0, 0, 2276, 2274, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2279, 1, 0, 0, 0, 2278, 2276, 1, 0, 0, 0, 2279, 2283, 5, 867, 0, 0, 2280, 2282, 3, 118, 59, 0, 2281, 2280, 1, 0, 0, 0, 2282, 2285, 1, 0, 0, 0, 2283, 2281, 1, 0, 0, 0, 2283, 2284, 1, 0, 0, 0, 2284, 2297, 1, 0, 0, 0, 2285, 2283, 1, 0, 0, 0, 2286, 2287, 5, 866, 0, 0, 2287, 2292, 3, 116, 58, 0, 2288, 2289, 5, 868, 0, 0, 2289, 2291, 3, 116, 58, 0, 2290, 2288, 1, 0, 0, 0, 2291, 2294, 1, 0, 0, 0, 2292, 2290, 1, 0, 0, 0, 2292, 2293, 1, 0, 0, 0, 2293, 2295, 1, 0, 0, 0, 2294, 2292, 1, 0, 0, 0, 2295, 2296, 5, 867, 0, 0, 2296, 2298, 1, 0, 0, 0, 2297, 2286, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2321, 1, 0, 0, 0, 2299, 2300, 5, 130, 0, 0, 2300, 2304, 3, 668, 334, 0, 2301, 2303, 3, 118, 59, 0, 2302, 2301, 1, 0, 0, 0, 2303, 2306, 1, 0, 0, 0, 2304, 2302, 1, 0, 0, 0, 2304, 2305, 1, 0, 0, 0, 2305, 2318, 1, 0, 0, 0, 2306, 2304, 1, 0, 0, 0, 2307, 2308, 5, 866, 0, 0, 2308, 2313, 3, 116, 58, 0, 2309, 2310, 5, 868, 0, 0, 2310, 2312, 3, 116, 58, 0, 2311, 2309, 1, 0, 0, 0, 2312, 2315, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2313, 2314, 1, 0, 0, 0, 2314, 2316, 1, 0, 0, 0, 2315, 2313, 1, 0, 0, 0, 2316, 2317, 5, 867, 0, 0, 2317, 2319, 1, 0, 0, 0, 2318, 2307, 1, 0, 0, 0, 2318, 2319, 1, 0, 0, 0, 2319, 2321, 1, 0, 0, 0, 2320, 2174, 1, 0, 0, 0, 2320, 2208, 1, 0, 0, 0, 2320, 2233, 1, 0, 0, 0, 2320, 2266, 1, 0, 0, 0, 2320, 2299, 1, 0, 0, 0, 2321, 111, 1, 0, 0, 0, 2322, 2326, 3, 720, 360, 0, 2323, 2326, 3, 800, 400, 0, 2324, 2326, 5, 111, 0, 0, 2325, 2322, 1, 0, 0, 0, 2325, 2323, 1, 0, 0, 0, 2325, 2324, 1, 0, 0, 0, 2326, 113, 1, 0, 0, 0, 2327, 2328, 5, 866, 0, 0, 2328, 2331, 3, 112, 56, 0, 2329, 2330, 5, 868, 0, 0, 2330, 2332, 3, 112, 56, 0, 2331, 2329, 1, 0, 0, 0, 2332, 2333, 1, 0, 0, 0, 2333, 2331, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2335, 1, 0, 0, 0, 2335, 2336, 5, 867, 0, 0, 2336, 115, 1, 0, 0, 0, 2337, 2338, 5, 652, 0, 0, 2338, 2342, 3, 702, 351, 0, 2339, 2341, 3, 118, 59, 0, 2340, 2339, 1, 0, 0, 0, 2341, 2344, 1, 0, 0, 0, 2342, 2340, 1, 0, 0, 0, 2342, 2343, 1, 0, 0, 0, 2343, 117, 1, 0, 0, 0, 2344, 2342, 1, 0, 0, 0, 2345, 2347, 5, 42, 0, 0, 2346, 2345, 1, 0, 0, 0, 2346, 2347, 1, 0, 0, 0, 2347, 2349, 1, 0, 0, 0, 2348, 2350, 5, 647, 0, 0, 2349, 2348, 1, 0, 0, 0, 2349, 2350, 1, 0, 0, 0, 2350, 2351, 1, 0, 0, 0, 2351, 2353, 5, 380, 0, 0, 2352, 2354, 5, 857, 0, 0, 2353, 2352, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2394, 3, 688, 344, 0, 2356, 2358, 5, 340, 0, 0, 2357, 2359, 5, 857, 0, 0, 2358, 2357, 1, 0, 0, 0, 2358, 2359, 1, 0, 0, 0, 2359, 2360, 1, 0, 0, 0, 2360, 2394, 5, 882, 0, 0, 2361, 2362, 5, 360, 0, 0, 2362, 2364, 5, 367, 0, 0, 2363, 2365, 5, 857, 0, 0, 2364, 2363, 1, 0, 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2394, 5, 882, 0, 0, 2367, 2368, 5, 82, 0, 0, 2368, 2370, 5, 367, 0, 0, 2369, 2371, 5, 857, 0, 0, 2370, 2369, 1, 0, 0, 0, 2370, 2371, 1, 0, 0, 0, 2371, 2372, 1, 0, 0, 0, 2372, 2394, 5, 882, 0, 0, 2373, 2375, 5, 480, 0, 0, 2374, 2376, 5, 857, 0, 0, 2375, 2374, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2394, 3, 708, 354, 0, 2378, 2380, 5, 490, 0, 0, 2379, 2381, 5, 857, 0, 0, 2380, 2379, 1, 0, 0, 0, 2380, 2381, 1, 0, 0, 0, 2381, 2382, 1, 0, 0, 0, 2382, 2394, 3, 708, 354, 0, 2383, 2385, 5, 658, 0, 0, 2384, 2386, 5, 857, 0, 0, 2385, 2384, 1, 0, 0, 0, 2385, 2386, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2394, 3, 662, 331, 0, 2388, 2390, 5, 504, 0, 0, 2389, 2391, 5, 857, 0, 0, 2390, 2389, 1, 0, 0, 0, 2390, 2391, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 3, 702, 351, 0, 2393, 2346, 1, 0, 0, 0, 2393, 2356, 1, 0, 0, 0, 2393, 2361, 1, 0, 0, 0, 2393, 2367, 1, 0, 0, 0, 2393, 2373, 1, 0, 0, 0, 2393, 2378, 1, 0, 0, 0, 2393, 2383, 1, 0, 0, 0, 2393, 2388, 1, 0, 0, 0, 2394, 119, 1, 0, 0, 0, 2395, 2396, 5, 8, 0, 0, 2396, 2398, 7, 0, 0, 0, 2397, 2399, 3, 624, 312, 0, 2398, 2397, 1, 0, 0, 0, 2398, 2399, 1, 0, 0, 0, 2399, 2401, 1, 0, 0, 0, 2400, 2402, 3, 52, 26, 0, 2401, 2400, 1, 0, 0, 0, 2402, 2403, 1, 0, 0, 0, 2403, 2401, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2414, 1, 0, 0, 0, 2405, 2406, 5, 8, 0, 0, 2406, 2407, 7, 0, 0, 0, 2407, 2408, 3, 624, 312, 0, 2408, 2409, 5, 677, 0, 0, 2409, 2410, 5, 360, 0, 0, 2410, 2411, 5, 367, 0, 0, 2411, 2412, 5, 496, 0, 0, 2412, 2414, 1, 0, 0, 0, 2413, 2395, 1, 0, 0, 0, 2413, 2405, 1, 0, 0, 0, 2414, 121, 1, 0, 0, 0, 2415, 2417, 5, 8, 0, 0, 2416, 2418, 3, 58, 29, 0, 2417, 2416, 1, 0, 0, 0, 2417, 2418, 1, 0, 0, 0, 2418, 2419, 1, 0, 0, 0, 2419, 2420, 5, 385, 0, 0, 2420, 2424, 3, 698, 349, 0, 2421, 2422, 5, 119, 0, 0, 2422, 2423, 5, 590, 0, 0, 2423, 2425, 3, 60, 30, 0, 2424, 2421, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2432, 1, 0, 0, 0, 2426, 2427, 5, 119, 0, 0, 2427, 2429, 5, 343, 0, 0, 2428, 2430, 5, 114, 0, 0, 2429, 2428, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2431, 1, 0, 0, 0, 2431, 2433, 5, 541, 0, 0, 2432, 2426, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2437, 1, 0, 0, 0, 2434, 2435, 5, 141, 0, 0, 2435, 2436, 5, 176, 0, 0, 2436, 2438, 3, 698, 349, 0, 2437, 2434, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2440, 1, 0, 0, 0, 2439, 2441, 3, 68, 34, 0, 2440, 2439, 1, 0, 0, 0, 2440, 2441, 1, 0, 0, 0, 2441, 2444, 1, 0, 0, 0, 2442, 2443, 5, 340, 0, 0, 2443, 2445, 5, 882, 0, 0, 2444, 2442, 1, 0, 0, 0, 2444, 2445, 1, 0, 0, 0, 2445, 2448, 1, 0, 0, 0, 2446, 2447, 5, 371, 0, 0, 2447, 2449, 3, 416, 208, 0, 2448, 2446, 1, 0, 0, 0, 2448, 2449, 1, 0, 0, 0, 2449, 123, 1, 0, 0, 0, 2450, 2451, 5, 8, 0, 0, 2451, 2452, 5, 409, 0, 0, 2452, 2456, 3, 628, 314, 0, 2453, 2455, 3, 76, 38, 0, 2454, 2453, 1, 0, 0, 0, 2455, 2458, 1, 0, 0, 0, 2456, 2454, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 125, 1, 0, 0, 0, 2458, 2456, 1, 0, 0, 0, 2459, 2460, 5, 8, 0, 0, 2460, 2461, 5, 433, 0, 0, 2461, 2462, 5, 585, 0, 0, 2462, 2463, 5, 801, 0, 0, 2463, 2464, 5, 453, 0, 0, 2464, 2465, 5, 92, 0, 0, 2465, 127, 1, 0, 0, 0, 2466, 2467, 5, 8, 0, 0, 2467, 2468, 5, 451, 0, 0, 2468, 2469, 5, 74, 0, 0, 2469, 2470, 3, 702, 351, 0, 2470, 2471, 5, 6, 0, 0, 2471, 2472, 5, 671, 0, 0, 2472, 2478, 5, 882, 0, 0, 2473, 2475, 5, 428, 0, 0, 2474, 2476, 5, 857, 0, 0, 2475, 2474, 1, 0, 0, 0, 2475, 2476, 1, 0, 0, 0, 2476, 2477, 1, 0, 0, 0, 2477, 2479, 3, 710, 355, 0, 2478, 2473, 1, 0, 0, 0, 2478, 2479, 1, 0, 0, 0, 2479, 2481, 1, 0, 0, 0, 2480, 2482, 5, 687, 0, 0, 2481, 2480, 1, 0, 0, 0, 2481, 2482, 1, 0, 0, 0, 2482, 2483, 1, 0, 0, 0, 2483, 2485, 5, 380, 0, 0, 2484, 2486, 5, 857, 0, 0, 2485, 2484, 1, 0, 0, 0, 2485, 2486, 1, 0, 0, 0, 2486, 2487, 1, 0, 0, 0, 2487, 2488, 3, 688, 344, 0, 2488, 129, 1, 0, 0, 0, 2489, 2490, 5, 8, 0, 0, 2490, 2491, 5, 132, 0, 0, 2491, 2495, 3, 698, 349, 0, 2492, 2494, 3, 76, 38, 0, 2493, 2492, 1, 0, 0, 0, 2494, 2497, 1, 0, 0, 0, 2495, 2493, 1, 0, 0, 0, 2495, 2496, 1, 0, 0, 0, 2496, 131, 1, 0, 0, 0, 2497, 2495, 1, 0, 0, 0, 2498, 2499, 5, 8, 0, 0, 2499, 2500, 5, 592, 0, 0, 2500, 2501, 3, 702, 351, 0, 2501, 2502, 5, 518, 0, 0, 2502, 2503, 5, 866, 0, 0, 2503, 2508, 3, 78, 39, 0, 2504, 2505, 5, 868, 0, 0, 2505, 2507, 3, 78, 39, 0, 2506, 2504, 1, 0, 0, 0, 2507, 2510, 1, 0, 0, 0, 2508, 2506, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2511, 1, 0, 0, 0, 2510, 2508, 1, 0, 0, 0, 2511, 2512, 5, 867, 0, 0, 2512, 133, 1, 0, 0, 0, 2513, 2514, 5, 8, 0, 0, 2514, 2515, 5, 173, 0, 0, 2515, 2524, 3, 648, 324, 0, 2516, 2521, 3, 140, 70, 0, 2517, 2518, 5, 868, 0, 0, 2518, 2520, 3, 140, 70, 0, 2519, 2517, 1, 0, 0, 0, 2520, 2523, 1, 0, 0, 0, 2521, 2519, 1, 0, 0, 0, 2521, 2522, 1, 0, 0, 0, 2522, 2525, 1, 0, 0, 0, 2523, 2521, 1, 0, 0, 0, 2524, 2516, 1, 0, 0, 0, 2524, 2525, 1, 0, 0, 0, 2525, 2533, 1, 0, 0, 0, 2526, 2530, 3, 142, 71, 0, 2527, 2529, 3, 142, 71, 0, 2528, 2527, 1, 0, 0, 0, 2529, 2532, 1, 0, 0, 0, 2530, 2528, 1, 0, 0, 0, 2530, 2531, 1, 0, 0, 0, 2531, 2534, 1, 0, 0, 0, 2532, 2530, 1, 0, 0, 0, 2533, 2526, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 135, 1, 0, 0, 0, 2535, 2537, 5, 8, 0, 0, 2536, 2538, 5, 180, 0, 0, 2537, 2536, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2539, 1, 0, 0, 0, 2539, 2540, 5, 658, 0, 0, 2540, 2541, 3, 662, 331, 0, 2541, 2542, 7, 34, 0, 0, 2542, 2543, 5, 361, 0, 0, 2543, 2549, 5, 882, 0, 0, 2544, 2546, 5, 428, 0, 0, 2545, 2547, 5, 857, 0, 0, 2546, 2545, 1, 0, 0, 0, 2546, 2547, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 2550, 3, 710, 355, 0, 2549, 2544, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2552, 1, 0, 0, 0, 2551, 2553, 5, 687, 0, 0, 2552, 2551, 1, 0, 0, 0, 2552, 2553, 1, 0, 0, 0, 2553, 2557, 1, 0, 0, 0, 2554, 2555, 5, 141, 0, 0, 2555, 2556, 5, 176, 0, 0, 2556, 2558, 3, 660, 330, 0, 2557, 2554, 1, 0, 0, 0, 2557, 2558, 1, 0, 0, 0, 2558, 2564, 1, 0, 0, 0, 2559, 2561, 5, 314, 0, 0, 2560, 2562, 5, 857, 0, 0, 2561, 2560, 1, 0, 0, 0, 2561, 2562, 1, 0, 0, 0, 2562, 2563, 1, 0, 0, 0, 2563, 2565, 3, 710, 355, 0, 2564, 2559, 1, 0, 0, 0, 2564, 2565, 1, 0, 0, 0, 2565, 2568, 1, 0, 0, 0, 2566, 2567, 5, 155, 0, 0, 2567, 2569, 7, 35, 0, 0, 2568, 2566, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 2575, 1, 0, 0, 0, 2570, 2572, 5, 376, 0, 0, 2571, 2573, 5, 857, 0, 0, 2572, 2571, 1, 0, 0, 0, 2572, 2573, 1, 0, 0, 0, 2573, 2574, 1, 0, 0, 0, 2574, 2576, 5, 882, 0, 0, 2575, 2570, 1, 0, 0, 0, 2575, 2576, 1, 0, 0, 0, 2576, 2582, 1, 0, 0, 0, 2577, 2579, 5, 380, 0, 0, 2578, 2580, 5, 857, 0, 0, 2579, 2578, 1, 0, 0, 0, 2579, 2580, 1, 0, 0, 0, 2580, 2581, 1, 0, 0, 0, 2581, 2583, 3, 688, 344, 0, 2582, 2577, 1, 0, 0, 0, 2582, 2583, 1, 0, 0, 0, 2583, 2589, 1, 0, 0, 0, 2584, 2586, 5, 825, 0, 0, 2585, 2587, 5, 857, 0, 0, 2586, 2585, 1, 0, 0, 0, 2586, 2587, 1, 0, 0, 0, 2587, 2588, 1, 0, 0, 0, 2588, 2590, 5, 882, 0, 0, 2589, 2584, 1, 0, 0, 0, 2589, 2590, 1, 0, 0, 0, 2590, 137, 1, 0, 0, 0, 2591, 2595, 5, 8, 0, 0, 2592, 2593, 5, 308, 0, 0, 2593, 2594, 5, 857, 0, 0, 2594, 2596, 7, 10, 0, 0, 2595, 2592, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 2598, 1, 0, 0, 0, 2597, 2599, 3, 58, 29, 0, 2598, 2597, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2603, 1, 0, 0, 0, 2600, 2601, 5, 162, 0, 0, 2601, 2602, 5, 591, 0, 0, 2602, 2604, 7, 11, 0, 0, 2603, 2600, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2605, 1, 0, 0, 0, 2605, 2606, 5, 684, 0, 0, 2606, 2611, 3, 632, 316, 0, 2607, 2608, 5, 866, 0, 0, 2608, 2609, 3, 656, 328, 0, 2609, 2610, 5, 867, 0, 0, 2610, 2612, 1, 0, 0, 0, 2611, 2607, 1, 0, 0, 0, 2611, 2612, 1, 0, 0, 0, 2612, 2613, 1, 0, 0, 0, 2613, 2614, 5, 13, 0, 0, 2614, 2621, 3, 204, 102, 0, 2615, 2617, 5, 194, 0, 0, 2616, 2618, 7, 12, 0, 0, 2617, 2616, 1, 0, 0, 0, 2617, 2618, 1, 0, 0, 0, 2618, 2619, 1, 0, 0, 0, 2619, 2620, 5, 27, 0, 0, 2620, 2622, 5, 121, 0, 0, 2621, 2615, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 139, 1, 0, 0, 0, 2623, 2630, 3, 98, 49, 0, 2624, 2626, 5, 868, 0, 0, 2625, 2624, 1, 0, 0, 0, 2625, 2626, 1, 0, 0, 0, 2626, 2627, 1, 0, 0, 0, 2627, 2629, 3, 98, 49, 0, 2628, 2625, 1, 0, 0, 0, 2629, 2632, 1, 0, 0, 0, 2630, 2628, 1, 0, 0, 0, 2630, 2631, 1, 0, 0, 0, 2631, 2888, 1, 0, 0, 0, 2632, 2630, 1, 0, 0, 0, 2633, 2635, 5, 6, 0, 0, 2634, 2636, 5, 29, 0, 0, 2635, 2634, 1, 0, 0, 0, 2635, 2636, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2638, 3, 658, 329, 0, 2638, 2642, 3, 88, 44, 0, 2639, 2643, 5, 402, 0, 0, 2640, 2641, 5, 306, 0, 0, 2641, 2643, 3, 658, 329, 0, 2642, 2639, 1, 0, 0, 0, 2642, 2640, 1, 0, 0, 0, 2642, 2643, 1, 0, 0, 0, 2643, 2888, 1, 0, 0, 0, 2644, 2646, 5, 6, 0, 0, 2645, 2647, 5, 29, 0, 0, 2646, 2645, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 2648, 1, 0, 0, 0, 2648, 2649, 5, 866, 0, 0, 2649, 2650, 3, 658, 329, 0, 2650, 2657, 3, 88, 44, 0, 2651, 2652, 5, 868, 0, 0, 2652, 2653, 3, 658, 329, 0, 2653, 2654, 3, 88, 44, 0, 2654, 2656, 1, 0, 0, 0, 2655, 2651, 1, 0, 0, 0, 2656, 2659, 1, 0, 0, 0, 2657, 2655, 1, 0, 0, 0, 2657, 2658, 1, 0, 0, 0, 2658, 2660, 1, 0, 0, 0, 2659, 2657, 1, 0, 0, 0, 2660, 2661, 5, 867, 0, 0, 2661, 2888, 1, 0, 0, 0, 2662, 2663, 5, 6, 0, 0, 2663, 2665, 7, 18, 0, 0, 2664, 2666, 3, 638, 319, 0, 2665, 2664, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2668, 1, 0, 0, 0, 2667, 2669, 3, 70, 35, 0, 2668, 2667, 1, 0, 0, 0, 2668, 2669, 1, 0, 0, 0, 2669, 2670, 1, 0, 0, 0, 2670, 2674, 3, 734, 367, 0, 2671, 2673, 3, 72, 36, 0, 2672, 2671, 1, 0, 0, 0, 2673, 2676, 1, 0, 0, 0, 2674, 2672, 1, 0, 0, 0, 2674, 2675, 1, 0, 0, 0, 2675, 2888, 1, 0, 0, 0, 2676, 2674, 1, 0, 0, 0, 2677, 2678, 5, 6, 0, 0, 2678, 2680, 7, 19, 0, 0, 2679, 2681, 7, 18, 0, 0, 2680, 2679, 1, 0, 0, 0, 2680, 2681, 1, 0, 0, 0, 2681, 2683, 1, 0, 0, 0, 2682, 2684, 3, 638, 319, 0, 2683, 2682, 1, 0, 0, 0, 2683, 2684, 1, 0, 0, 0, 2684, 2685, 1, 0, 0, 0, 2685, 2689, 3, 734, 367, 0, 2686, 2688, 3, 72, 36, 0, 2687, 2686, 1, 0, 0, 0, 2688, 2691, 1, 0, 0, 0, 2689, 2687, 1, 0, 0, 0, 2689, 2690, 1, 0, 0, 0, 2690, 2888, 1, 0, 0, 0, 2691, 2689, 1, 0, 0, 0, 2692, 2697, 5, 6, 0, 0, 2693, 2695, 5, 31, 0, 0, 2694, 2696, 3, 702, 351, 0, 2695, 2694, 1, 0, 0, 0, 2695, 2696, 1, 0, 0, 0, 2696, 2698, 1, 0, 0, 0, 2697, 2693, 1, 0, 0, 0, 2697, 2698, 1, 0, 0, 0, 2698, 2699, 1, 0, 0, 0, 2699, 2700, 5, 131, 0, 0, 2700, 2702, 5, 92, 0, 0, 2701, 2703, 3, 70, 35, 0, 2702, 2701, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 2704, 1, 0, 0, 0, 2704, 2708, 3, 734, 367, 0, 2705, 2707, 3, 72, 36, 0, 2706, 2705, 1, 0, 0, 0, 2707, 2710, 1, 0, 0, 0, 2708, 2706, 1, 0, 0, 0, 2708, 2709, 1, 0, 0, 0, 2709, 2888, 1, 0, 0, 0, 2710, 2708, 1, 0, 0, 0, 2711, 2716, 5, 6, 0, 0, 2712, 2714, 5, 31, 0, 0, 2713, 2715, 3, 702, 351, 0, 2714, 2713, 1, 0, 0, 0, 2714, 2715, 1, 0, 0, 0, 2715, 2717, 1, 0, 0, 0, 2716, 2712, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2718, 1, 0, 0, 0, 2718, 2720, 5, 182, 0, 0, 2719, 2721, 7, 18, 0, 0, 2720, 2719, 1, 0, 0, 0, 2720, 2721, 1, 0, 0, 0, 2721, 2723, 1, 0, 0, 0, 2722, 2724, 3, 638, 319, 0, 2723, 2722, 1, 0, 0, 0, 2723, 2724, 1, 0, 0, 0, 2724, 2726, 1, 0, 0, 0, 2725, 2727, 3, 70, 35, 0, 2726, 2725, 1, 0, 0, 0, 2726, 2727, 1, 0, 0, 0, 2727, 2728, 1, 0, 0, 0, 2728, 2732, 3, 734, 367, 0, 2729, 2731, 3, 72, 36, 0, 2730, 2729, 1, 0, 0, 0, 2731, 2734, 1, 0, 0, 0, 2732, 2730, 1, 0, 0, 0, 2732, 2733, 1, 0, 0, 0, 2733, 2888, 1, 0, 0, 0, 2734, 2732, 1, 0, 0, 0, 2735, 2740, 5, 6, 0, 0, 2736, 2738, 5, 31, 0, 0, 2737, 2739, 3, 702, 351, 0, 2738, 2737, 1, 0, 0, 0, 2738, 2739, 1, 0, 0, 0, 2739, 2741, 1, 0, 0, 0, 2740, 2736, 1, 0, 0, 0, 2740, 2741, 1, 0, 0, 0, 2741, 2742, 1, 0, 0, 0, 2742, 2743, 5, 67, 0, 0, 2743, 2745, 5, 92, 0, 0, 2744, 2746, 3, 638, 319, 0, 2745, 2744, 1, 0, 0, 0, 2745, 2746, 1, 0, 0, 0, 2746, 2747, 1, 0, 0, 0, 2747, 2748, 3, 734, 367, 0, 2748, 2749, 3, 92, 46, 0, 2749, 2888, 1, 0, 0, 0, 2750, 2752, 5, 6, 0, 0, 2751, 2753, 3, 84, 42, 0, 2752, 2751, 1, 0, 0, 0, 2752, 2753, 1, 0, 0, 0, 2753, 2888, 1, 0, 0, 0, 2754, 2755, 5, 51, 0, 0, 2755, 2756, 7, 36, 0, 0, 2756, 2888, 3, 702, 351, 0, 2757, 2758, 5, 8, 0, 0, 2758, 2759, 7, 36, 0, 0, 2759, 2761, 3, 702, 351, 0, 2760, 2762, 5, 114, 0, 0, 2761, 2760, 1, 0, 0, 0, 2761, 2762, 1, 0, 0, 0, 2762, 2764, 1, 0, 0, 0, 2763, 2765, 5, 57, 0, 0, 2764, 2763, 1, 0, 0, 0, 2764, 2765, 1, 0, 0, 0, 2765, 2888, 1, 0, 0, 0, 2766, 2768, 5, 308, 0, 0, 2767, 2769, 5, 857, 0, 0, 2768, 2767, 1, 0, 0, 0, 2768, 2769, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2888, 7, 37, 0, 0, 2771, 2773, 5, 8, 0, 0, 2772, 2774, 5, 29, 0, 0, 2773, 2772, 1, 0, 0, 0, 2773, 2774, 1, 0, 0, 0, 2774, 2775, 1, 0, 0, 0, 2775, 2783, 3, 658, 329, 0, 2776, 2777, 5, 155, 0, 0, 2777, 2778, 5, 42, 0, 0, 2778, 2784, 3, 750, 375, 0, 2779, 2780, 5, 155, 0, 0, 2780, 2784, 7, 16, 0, 0, 2781, 2782, 5, 51, 0, 0, 2782, 2784, 5, 42, 0, 0, 2783, 2776, 1, 0, 0, 0, 2783, 2779, 1, 0, 0, 0, 2783, 2781, 1, 0, 0, 0, 2784, 2888, 1, 0, 0, 0, 2785, 2786, 5, 8, 0, 0, 2786, 2787, 5, 82, 0, 0, 2787, 2788, 3, 638, 319, 0, 2788, 2789, 7, 16, 0, 0, 2789, 2888, 1, 0, 0, 0, 2790, 2792, 5, 25, 0, 0, 2791, 2793, 5, 29, 0, 0, 2792, 2791, 1, 0, 0, 0, 2792, 2793, 1, 0, 0, 0, 2793, 2794, 1, 0, 0, 0, 2794, 2795, 3, 658, 329, 0, 2795, 2796, 3, 654, 327, 0, 2796, 2800, 3, 88, 44, 0, 2797, 2801, 5, 402, 0, 0, 2798, 2799, 5, 306, 0, 0, 2799, 2801, 3, 658, 329, 0, 2800, 2797, 1, 0, 0, 0, 2800, 2798, 1, 0, 0, 0, 2800, 2801, 1, 0, 0, 0, 2801, 2888, 1, 0, 0, 0, 2802, 2804, 5, 42, 0, 0, 2803, 2802, 1, 0, 0, 0, 2803, 2804, 1, 0, 0, 0, 2804, 2805, 1, 0, 0, 0, 2805, 2806, 5, 26, 0, 0, 2806, 2807, 5, 155, 0, 0, 2807, 2808, 5, 857, 0, 0, 2808, 2814, 3, 684, 342, 0, 2809, 2811, 5, 28, 0, 0, 2810, 2812, 5, 857, 0, 0, 2811, 2810, 1, 0, 0, 0, 2811, 2812, 1, 0, 0, 0, 2812, 2813, 1, 0, 0, 0, 2813, 2815, 3, 686, 343, 0, 2814, 2809, 1, 0, 0, 0, 2814, 2815, 1, 0, 0, 0, 2815, 2888, 1, 0, 0, 0, 2816, 2817, 5, 33, 0, 0, 2817, 2821, 5, 176, 0, 0, 2818, 2822, 5, 823, 0, 0, 2819, 2820, 5, 26, 0, 0, 2820, 2822, 5, 155, 0, 0, 2821, 2818, 1, 0, 0, 0, 2821, 2819, 1, 0, 0, 0, 2822, 2823, 1, 0, 0, 0, 2823, 2826, 3, 684, 342, 0, 2824, 2825, 5, 28, 0, 0, 2825, 2827, 3, 686, 343, 0, 2826, 2824, 1, 0, 0, 0, 2826, 2827, 1, 0, 0, 0, 2827, 2888, 1, 0, 0, 0, 2828, 2829, 7, 38, 0, 0, 2829, 2888, 5, 93, 0, 0, 2830, 2831, 7, 39, 0, 0, 2831, 2888, 5, 658, 0, 0, 2832, 2834, 5, 51, 0, 0, 2833, 2835, 5, 29, 0, 0, 2834, 2833, 1, 0, 0, 0, 2834, 2835, 1, 0, 0, 0, 2835, 2836, 1, 0, 0, 0, 2836, 2888, 3, 658, 329, 0, 2837, 2838, 5, 51, 0, 0, 2838, 2839, 7, 18, 0, 0, 2839, 2888, 3, 638, 319, 0, 2840, 2841, 5, 51, 0, 0, 2841, 2842, 5, 131, 0, 0, 2842, 2888, 5, 92, 0, 0, 2843, 2844, 5, 51, 0, 0, 2844, 2845, 5, 67, 0, 0, 2845, 2846, 5, 92, 0, 0, 2846, 2888, 3, 702, 351, 0, 2847, 2888, 5, 66, 0, 0, 2848, 2850, 5, 104, 0, 0, 2849, 2851, 5, 857, 0, 0, 2850, 2849, 1, 0, 0, 0, 2850, 2851, 1, 0, 0, 0, 2851, 2852, 1, 0, 0, 0, 2852, 2888, 7, 4, 0, 0, 2853, 2855, 5, 492, 0, 0, 2854, 2856, 5, 29, 0, 0, 2855, 2854, 1, 0, 0, 0, 2855, 2856, 1, 0, 0, 0, 2856, 2857, 1, 0, 0, 0, 2857, 2858, 3, 658, 329, 0, 2858, 2862, 3, 88, 44, 0, 2859, 2863, 5, 402, 0, 0, 2860, 2861, 5, 306, 0, 0, 2861, 2863, 3, 658, 329, 0, 2862, 2859, 1, 0, 0, 0, 2862, 2860, 1, 0, 0, 0, 2862, 2863, 1, 0, 0, 0, 2863, 2888, 1, 0, 0, 0, 2864, 2865, 5, 125, 0, 0, 2865, 2866, 5, 20, 0, 0, 2866, 2888, 3, 656, 328, 0, 2867, 2868, 5, 141, 0, 0, 2868, 2869, 5, 29, 0, 0, 2869, 2870, 3, 658, 329, 0, 2870, 2871, 5, 176, 0, 0, 2871, 2872, 3, 654, 327, 0, 2872, 2888, 1, 0, 0, 0, 2873, 2874, 5, 141, 0, 0, 2874, 2875, 7, 18, 0, 0, 2875, 2876, 3, 638, 319, 0, 2876, 2877, 5, 176, 0, 0, 2877, 2878, 3, 634, 317, 0, 2878, 2888, 1, 0, 0, 0, 2879, 2881, 5, 141, 0, 0, 2880, 2882, 7, 40, 0, 0, 2881, 2880, 1, 0, 0, 0, 2881, 2882, 1, 0, 0, 0, 2882, 2883, 1, 0, 0, 0, 2883, 2888, 3, 644, 322, 0, 2884, 2885, 7, 41, 0, 0, 2885, 2888, 5, 681, 0, 0, 2886, 2888, 3, 142, 71, 0, 2887, 2623, 1, 0, 0, 0, 2887, 2633, 1, 0, 0, 0, 2887, 2644, 1, 0, 0, 0, 2887, 2662, 1, 0, 0, 0, 2887, 2677, 1, 0, 0, 0, 2887, 2692, 1, 0, 0, 0, 2887, 2711, 1, 0, 0, 0, 2887, 2735, 1, 0, 0, 0, 2887, 2750, 1, 0, 0, 0, 2887, 2754, 1, 0, 0, 0, 2887, 2757, 1, 0, 0, 0, 2887, 2766, 1, 0, 0, 0, 2887, 2771, 1, 0, 0, 0, 2887, 2785, 1, 0, 0, 0, 2887, 2790, 1, 0, 0, 0, 2887, 2803, 1, 0, 0, 0, 2887, 2816, 1, 0, 0, 0, 2887, 2828, 1, 0, 0, 0, 2887, 2830, 1, 0, 0, 0, 2887, 2832, 1, 0, 0, 0, 2887, 2837, 1, 0, 0, 0, 2887, 2840, 1, 0, 0, 0, 2887, 2843, 1, 0, 0, 0, 2887, 2847, 1, 0, 0, 0, 2887, 2848, 1, 0, 0, 0, 2887, 2853, 1, 0, 0, 0, 2887, 2864, 1, 0, 0, 0, 2887, 2867, 1, 0, 0, 0, 2887, 2873, 1, 0, 0, 0, 2887, 2879, 1, 0, 0, 0, 2887, 2884, 1, 0, 0, 0, 2887, 2886, 1, 0, 0, 0, 2888, 141, 1, 0, 0, 0, 2889, 2890, 5, 6, 0, 0, 2890, 2891, 5, 130, 0, 0, 2891, 2892, 5, 866, 0, 0, 2892, 2897, 3, 110, 55, 0, 2893, 2894, 5, 868, 0, 0, 2894, 2896, 3, 110, 55, 0, 2895, 2893, 1, 0, 0, 0, 2896, 2899, 1, 0, 0, 0, 2897, 2895, 1, 0, 0, 0, 2897, 2898, 1, 0, 0, 0, 2898, 2900, 1, 0, 0, 0, 2899, 2897, 1, 0, 0, 0, 2900, 2901, 5, 867, 0, 0, 2901, 2988, 1, 0, 0, 0, 2902, 2903, 5, 51, 0, 0, 2903, 2904, 5, 130, 0, 0, 2904, 2988, 3, 666, 333, 0, 2905, 2906, 5, 369, 0, 0, 2906, 2909, 5, 130, 0, 0, 2907, 2910, 3, 666, 333, 0, 2908, 2910, 5, 7, 0, 0, 2909, 2907, 1, 0, 0, 0, 2909, 2908, 1, 0, 0, 0, 2910, 2911, 1, 0, 0, 0, 2911, 2988, 5, 658, 0, 0, 2912, 2913, 5, 425, 0, 0, 2913, 2916, 5, 130, 0, 0, 2914, 2917, 3, 666, 333, 0, 2915, 2917, 5, 7, 0, 0, 2916, 2914, 1, 0, 0, 0, 2916, 2915, 1, 0, 0, 0, 2917, 2918, 1, 0, 0, 0, 2918, 2988, 5, 658, 0, 0, 2919, 2920, 5, 668, 0, 0, 2920, 2923, 5, 130, 0, 0, 2921, 2924, 3, 666, 333, 0, 2922, 2924, 5, 7, 0, 0, 2923, 2921, 1, 0, 0, 0, 2923, 2922, 1, 0, 0, 0, 2924, 2988, 1, 0, 0, 0, 2925, 2926, 5, 335, 0, 0, 2926, 2927, 5, 130, 0, 0, 2927, 2988, 3, 708, 354, 0, 2928, 2929, 5, 561, 0, 0, 2929, 2930, 5, 130, 0, 0, 2930, 2931, 3, 666, 333, 0, 2931, 2932, 5, 88, 0, 0, 2932, 2933, 5, 866, 0, 0, 2933, 2938, 3, 110, 55, 0, 2934, 2935, 5, 868, 0, 0, 2935, 2937, 3, 110, 55, 0, 2936, 2934, 1, 0, 0, 0, 2937, 2940, 1, 0, 0, 0, 2938, 2936, 1, 0, 0, 0, 2938, 2939, 1, 0, 0, 0, 2939, 2941, 1, 0, 0, 0, 2940, 2938, 1, 0, 0, 0, 2941, 2942, 5, 867, 0, 0, 2942, 2988, 1, 0, 0, 0, 2943, 2944, 5, 388, 0, 0, 2944, 2945, 5, 130, 0, 0, 2945, 2946, 3, 668, 334, 0, 2946, 2947, 5, 194, 0, 0, 2947, 2948, 5, 173, 0, 0, 2948, 2951, 3, 648, 324, 0, 2949, 2950, 7, 41, 0, 0, 2950, 2952, 5, 681, 0, 0, 2951, 2949, 1, 0, 0, 0, 2951, 2952, 1, 0, 0, 0, 2952, 2988, 1, 0, 0, 0, 2953, 2954, 5, 10, 0, 0, 2954, 2957, 5, 130, 0, 0, 2955, 2958, 3, 666, 333, 0, 2956, 2958, 5, 7, 0, 0, 2957, 2955, 1, 0, 0, 0, 2957, 2956, 1, 0, 0, 0, 2958, 2988, 1, 0, 0, 0, 2959, 2960, 5, 27, 0, 0, 2960, 2963, 5, 130, 0, 0, 2961, 2964, 3, 666, 333, 0, 2962, 2964, 5, 7, 0, 0, 2963, 2961, 1, 0, 0, 0, 2963, 2962, 1, 0, 0, 0, 2964, 2988, 1, 0, 0, 0, 2965, 2966, 5, 120, 0, 0, 2966, 2969, 5, 130, 0, 0, 2967, 2970, 3, 666, 333, 0, 2968, 2970, 5, 7, 0, 0, 2969, 2967, 1, 0, 0, 0, 2969, 2968, 1, 0, 0, 0, 2970, 2988, 1, 0, 0, 0, 2971, 2972, 5, 550, 0, 0, 2972, 2975, 5, 130, 0, 0, 2973, 2976, 3, 666, 333, 0, 2974, 2976, 5, 7, 0, 0, 2975, 2973, 1, 0, 0, 0, 2975, 2974, 1, 0, 0, 0, 2976, 2988, 1, 0, 0, 0, 2977, 2978, 5, 562, 0, 0, 2978, 2981, 5, 130, 0, 0, 2979, 2982, 3, 666, 333, 0, 2980, 2982, 5, 7, 0, 0, 2981, 2979, 1, 0, 0, 0, 2981, 2980, 1, 0, 0, 0, 2982, 2988, 1, 0, 0, 0, 2983, 2984, 5, 560, 0, 0, 2984, 2988, 5, 527, 0, 0, 2985, 2986, 5, 677, 0, 0, 2986, 2988, 5, 527, 0, 0, 2987, 2889, 1, 0, 0, 0, 2987, 2902, 1, 0, 0, 0, 2987, 2905, 1, 0, 0, 0, 2987, 2912, 1, 0, 0, 0, 2987, 2919, 1, 0, 0, 0, 2987, 2925, 1, 0, 0, 0, 2987, 2928, 1, 0, 0, 0, 2987, 2943, 1, 0, 0, 0, 2987, 2953, 1, 0, 0, 0, 2987, 2959, 1, 0, 0, 0, 2987, 2965, 1, 0, 0, 0, 2987, 2971, 1, 0, 0, 0, 2987, 2977, 1, 0, 0, 0, 2987, 2983, 1, 0, 0, 0, 2987, 2985, 1, 0, 0, 0, 2988, 143, 1, 0, 0, 0, 2989, 2990, 5, 51, 0, 0, 2990, 2992, 7, 0, 0, 0, 2991, 2993, 3, 754, 377, 0, 2992, 2991, 1, 0, 0, 0, 2992, 2993, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2995, 3, 624, 312, 0, 2995, 145, 1, 0, 0, 0, 2996, 2997, 5, 51, 0, 0, 2997, 2999, 5, 385, 0, 0, 2998, 3000, 3, 754, 377, 0, 2999, 2998, 1, 0, 0, 0, 2999, 3000, 1, 0, 0, 0, 3000, 3001, 1, 0, 0, 0, 3001, 3002, 3, 698, 349, 0, 3002, 147, 1, 0, 0, 0, 3003, 3004, 5, 51, 0, 0, 3004, 3006, 5, 82, 0, 0, 3005, 3007, 7, 1, 0, 0, 3006, 3005, 1, 0, 0, 0, 3006, 3007, 1, 0, 0, 0, 3007, 3008, 1, 0, 0, 0, 3008, 3009, 3, 638, 319, 0, 3009, 3010, 5, 119, 0, 0, 3010, 3023, 3, 648, 324, 0, 3011, 3013, 5, 308, 0, 0, 3012, 3014, 5, 857, 0, 0, 3013, 3012, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3015, 1, 0, 0, 0, 3015, 3022, 7, 3, 0, 0, 3016, 3018, 5, 104, 0, 0, 3017, 3019, 5, 857, 0, 0, 3018, 3017, 1, 0, 0, 0, 3018, 3019, 1, 0, 0, 0, 3019, 3020, 1, 0, 0, 0, 3020, 3022, 7, 4, 0, 0, 3021, 3011, 1, 0, 0, 0, 3021, 3016, 1, 0, 0, 0, 3022, 3025, 1, 0, 0, 0, 3023, 3021, 1, 0, 0, 0, 3023, 3024, 1, 0, 0, 0, 3024, 149, 1, 0, 0, 0, 3025, 3023, 1, 0, 0, 0, 3026, 3027, 5, 51, 0, 0, 3027, 3028, 5, 451, 0, 0, 3028, 3029, 5, 74, 0, 0, 3029, 3030, 3, 702, 351, 0, 3030, 3032, 5, 380, 0, 0, 3031, 3033, 5, 857, 0, 0, 3032, 3031, 1, 0, 0, 0, 3032, 3033, 1, 0, 0, 0, 3033, 3034, 1, 0, 0, 0, 3034, 3035, 3, 688, 344, 0, 3035, 151, 1, 0, 0, 0, 3036, 3037, 5, 51, 0, 0, 3037, 3039, 5, 132, 0, 0, 3038, 3040, 3, 754, 377, 0, 3039, 3038, 1, 0, 0, 0, 3039, 3040, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041, 3042, 3, 698, 349, 0, 3042, 153, 1, 0, 0, 0, 3043, 3044, 5, 51, 0, 0, 3044, 3046, 5, 409, 0, 0, 3045, 3047, 3, 754, 377, 0, 3046, 3045, 1, 0, 0, 0, 3046, 3047, 1, 0, 0, 0, 3047, 3048, 1, 0, 0, 0, 3048, 3049, 3, 628, 314, 0, 3049, 155, 1, 0, 0, 0, 3050, 3051, 5, 51, 0, 0, 3051, 3053, 5, 592, 0, 0, 3052, 3054, 3, 754, 377, 0, 3053, 3052, 1, 0, 0, 0, 3053, 3054, 1, 0, 0, 0, 3054, 3055, 1, 0, 0, 0, 3055, 3056, 3, 702, 351, 0, 3056, 157, 1, 0, 0, 0, 3057, 3058, 5, 51, 0, 0, 3058, 3059, 5, 161, 0, 0, 3059, 3060, 5, 137, 0, 0, 3060, 3062, 5, 835, 0, 0, 3061, 3063, 3, 754, 377, 0, 3062, 3061, 1, 0, 0, 0, 3062, 3063, 1, 0, 0, 0, 3063, 3064, 1, 0, 0, 0, 3064, 3065, 5, 883, 0, 0, 3065, 159, 1, 0, 0, 0, 3066, 3068, 5, 51, 0, 0, 3067, 3069, 5, 660, 0, 0, 3068, 3067, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3070, 1, 0, 0, 0, 3070, 3072, 5, 173, 0, 0, 3071, 3073, 3, 754, 377, 0, 3072, 3071, 1, 0, 0, 0, 3072, 3073, 1, 0, 0, 0, 3073, 3074, 1, 0, 0, 0, 3074, 3076, 3, 646, 323, 0, 3075, 3077, 7, 42, 0, 0, 3076, 3075, 1, 0, 0, 0, 3076, 3077, 1, 0, 0, 0, 3077, 161, 1, 0, 0, 0, 3078, 3080, 5, 51, 0, 0, 3079, 3081, 5, 180, 0, 0, 3080, 3079, 1, 0, 0, 0, 3080, 3081, 1, 0, 0, 0, 3081, 3082, 1, 0, 0, 0, 3082, 3083, 5, 658, 0, 0, 3083, 3089, 3, 662, 331, 0, 3084, 3086, 5, 380, 0, 0, 3085, 3087, 5, 857, 0, 0, 3086, 3085, 1, 0, 0, 0, 3086, 3087, 1, 0, 0, 0, 3087, 3088, 1, 0, 0, 0, 3088, 3090, 3, 688, 344, 0, 3089, 3084, 1, 0, 0, 0, 3089, 3090, 1, 0, 0, 0, 3090, 163, 1, 0, 0, 0, 3091, 3092, 5, 51, 0, 0, 3092, 3094, 5, 178, 0, 0, 3093, 3095, 3, 754, 377, 0, 3094, 3093, 1, 0, 0, 0, 3094, 3095, 1, 0, 0, 0, 3095, 3096, 1, 0, 0, 0, 3096, 3097, 3, 698, 349, 0, 3097, 165, 1, 0, 0, 0, 3098, 3099, 5, 51, 0, 0, 3099, 3101, 5, 684, 0, 0, 3100, 3102, 3, 754, 377, 0, 3101, 3100, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3103, 1, 0, 0, 0, 3103, 3108, 3, 632, 316, 0, 3104, 3105, 5, 868, 0, 0, 3105, 3107, 3, 632, 316, 0, 3106, 3104, 1, 0, 0, 0, 3107, 3110, 1, 0, 0, 0, 3108, 3106, 1, 0, 0, 0, 3108, 3109, 1, 0, 0, 0, 3109, 3112, 1, 0, 0, 0, 3110, 3108, 1, 0, 0, 0, 3111, 3113, 7, 42, 0, 0, 3112, 3111, 1, 0, 0, 0, 3112, 3113, 1, 0, 0, 0, 3113, 167, 1, 0, 0, 0, 3114, 3115, 5, 51, 0, 0, 3115, 3117, 5, 582, 0, 0, 3116, 3118, 3, 754, 377, 0, 3117, 3116, 1, 0, 0, 0, 3117, 3118, 1, 0, 0, 0, 3118, 3119, 1, 0, 0, 0, 3119, 3120, 3, 650, 325, 0, 3120, 169, 1, 0, 0, 0, 3121, 3122, 5, 155, 0, 0, 3122, 3123, 5, 42, 0, 0, 3123, 3127, 5, 582, 0, 0, 3124, 3128, 5, 505, 0, 0, 3125, 3128, 5, 7, 0, 0, 3126, 3128, 3, 650, 325, 0, 3127, 3124, 1, 0, 0, 0, 3127, 3125, 1, 0, 0, 0, 3127, 3126, 1, 0, 0, 0, 3128, 3129, 1, 0, 0, 0, 3129, 3130, 5, 176, 0, 0, 3130, 3135, 3, 652, 326, 0, 3131, 3132, 5, 868, 0, 0, 3132, 3134, 3, 652, 326, 0, 3133, 3131, 1, 0, 0, 0, 3134, 3137, 1, 0, 0, 0, 3135, 3133, 1, 0, 0, 0, 3135, 3136, 1, 0, 0, 0, 3136, 3142, 1, 0, 0, 0, 3137, 3135, 1, 0, 0, 0, 3138, 3139, 5, 155, 0, 0, 3139, 3140, 5, 582, 0, 0, 3140, 3142, 3, 462, 231, 0, 3141, 3121, 1, 0, 0, 0, 3141, 3138, 1, 0, 0, 0, 3142, 171, 1, 0, 0, 0, 3143, 3144, 5, 141, 0, 0, 3144, 3145, 5, 173, 0, 0, 3145, 3150, 3, 174, 87, 0, 3146, 3147, 5, 868, 0, 0, 3147, 3149, 3, 174, 87, 0, 3148, 3146, 1, 0, 0, 0, 3149, 3152, 1, 0, 0, 0, 3150, 3148, 1, 0, 0, 0, 3150, 3151, 1, 0, 0, 0, 3151, 173, 1, 0, 0, 0, 3152, 3150, 1, 0, 0, 0, 3153, 3154, 3, 648, 324, 0, 3154, 3155, 5, 176, 0, 0, 3155, 3156, 3, 644, 322, 0, 3156, 175, 1, 0, 0, 0, 3157, 3159, 5, 668, 0, 0, 3158, 3160, 5, 173, 0, 0, 3159, 3158, 1, 0, 0, 0, 3159, 3160, 1, 0, 0, 0, 3160, 3161, 1, 0, 0, 0, 3161, 3162, 3, 648, 324, 0, 3162, 177, 1, 0, 0, 0, 3163, 3164, 5, 21, 0, 0, 3164, 3171, 3, 698, 349, 0, 3165, 3168, 5, 866, 0, 0, 3166, 3169, 3, 744, 372, 0, 3167, 3169, 3, 736, 368, 0, 3168, 3166, 1, 0, 0, 0, 3168, 3167, 1, 0, 0, 0, 3168, 3169, 1, 0, 0, 0, 3169, 3170, 1, 0, 0, 0, 3170, 3172, 5, 867, 0, 0, 3171, 3165, 1, 0, 0, 0, 3171, 3172, 1, 0, 0, 0, 3172, 179, 1, 0, 0, 0, 3173, 3176, 3, 234, 117, 0, 3174, 3176, 3, 236, 118, 0, 3175, 3173, 1, 0, 0, 0, 3175, 3174, 1, 0, 0, 0, 3176, 181, 1, 0, 0, 0, 3177, 3178, 5, 371, 0, 0, 3178, 3179, 3, 736, 368, 0, 3179, 183, 1, 0, 0, 0, 3180, 3185, 3, 238, 119, 0, 3181, 3185, 3, 240, 120, 0, 3182, 3185, 3, 242, 121, 0, 3183, 3185, 3, 244, 122, 0, 3184, 3180, 1, 0, 0, 0, 3184, 3181, 1, 0, 0, 0, 3184, 3182, 1, 0, 0, 0, 3184, 3183, 1, 0, 0, 0, 3185, 185, 1, 0, 0, 0, 3186, 3188, 5, 86, 0, 0, 3187, 3189, 7, 43, 0, 0, 3188, 3187, 1, 0, 0, 0, 3188, 3189, 1, 0, 0, 0, 3189, 3191, 1, 0, 0, 0, 3190, 3192, 5, 79, 0, 0, 3191, 3190, 1, 0, 0, 0, 3191, 3192, 1, 0, 0, 0, 3192, 3194, 1, 0, 0, 0, 3193, 3195, 5, 88, 0, 0, 3194, 3193, 1, 0, 0, 0, 3194, 3195, 1, 0, 0, 0, 3195, 3196, 1, 0, 0, 0, 3196, 3203, 3, 648, 324, 0, 3197, 3198, 5, 130, 0, 0, 3198, 3200, 5, 866, 0, 0, 3199, 3201, 3, 666, 333, 0, 3200, 3199, 1, 0, 0, 0, 3200, 3201, 1, 0, 0, 0, 3201, 3202, 1, 0, 0, 0, 3202, 3204, 5, 867, 0, 0, 3203, 3197, 1, 0, 0, 0, 3203, 3204, 1, 0, 0, 0, 3204, 3216, 1, 0, 0, 0, 3205, 3207, 3, 262, 131, 0, 3206, 3205, 1, 0, 0, 0, 3206, 3207, 1, 0, 0, 0, 3207, 3210, 1, 0, 0, 0, 3208, 3211, 3, 738, 369, 0, 3209, 3211, 3, 190, 95, 0, 3210, 3208, 1, 0, 0, 0, 3210, 3209, 1, 0, 0, 0, 3210, 3211, 1, 0, 0, 0, 3211, 3213, 1, 0, 0, 0, 3212, 3214, 3, 188, 94, 0, 3213, 3212, 1, 0, 0, 0, 3213, 3214, 1, 0, 0, 0, 3214, 3217, 1, 0, 0, 0, 3215, 3217, 3, 226, 113, 0, 3216, 3206, 1, 0, 0, 0, 3216, 3215, 1, 0, 0, 0, 3217, 3219, 1, 0, 0, 0, 3218, 3220, 3, 188, 94, 0, 3219, 3218, 1, 0, 0, 0, 3219, 3220, 1, 0, 0, 0, 3220, 3233, 1, 0, 0, 0, 3221, 3222, 5, 119, 0, 0, 3222, 3223, 5, 373, 0, 0, 3223, 3224, 5, 92, 0, 0, 3224, 3225, 5, 185, 0, 0, 3225, 3230, 3, 228, 114, 0, 3226, 3227, 5, 868, 0, 0, 3227, 3229, 3, 228, 114, 0, 3228, 3226, 1, 0, 0, 0, 3229, 3232, 1, 0, 0, 0, 3230, 3228, 1, 0, 0, 0, 3230, 3231, 1, 0, 0, 0, 3231, 3234, 1, 0, 0, 0, 3232, 3230, 1, 0, 0, 0, 3233, 3221, 1, 0, 0, 0, 3233, 3234, 1, 0, 0, 0, 3234, 187, 1, 0, 0, 0, 3235, 3236, 5, 13, 0, 0, 3236, 3238, 3, 702, 351, 0, 3237, 3239, 3, 262, 131, 0, 3238, 3237, 1, 0, 0, 0, 3238, 3239, 1, 0, 0, 0, 3239, 189, 1, 0, 0, 0, 3240, 3245, 3, 204, 102, 0, 3241, 3242, 5, 173, 0, 0, 3242, 3245, 3, 648, 324, 0, 3243, 3245, 3, 224, 112, 0, 3244, 3240, 1, 0, 0, 0, 3244, 3241, 1, 0, 0, 0, 3244, 3243, 1, 0, 0, 0, 3245, 191, 1, 0, 0, 0, 3246, 3252, 3, 194, 97, 0, 3247, 3249, 5, 828, 0, 0, 3248, 3250, 7, 44, 0, 0, 3249, 3248, 1, 0, 0, 0, 3249, 3250, 1, 0, 0, 0, 3250, 3251, 1, 0, 0, 0, 3251, 3253, 3, 194, 97, 0, 3252, 3247, 1, 0, 0, 0, 3253, 3254, 1, 0, 0, 0, 3254, 3252, 1, 0, 0, 0, 3254, 3255, 1, 0, 0, 0, 3255, 193, 1, 0, 0, 0, 3256, 3258, 5, 866, 0, 0, 3257, 3256, 1, 0, 0, 0, 3257, 3258, 1, 0, 0, 0, 3258, 3259, 1, 0, 0, 0, 3259, 3261, 3, 274, 137, 0, 3260, 3262, 5, 867, 0, 0, 3261, 3260, 1, 0, 0, 0, 3261, 3262, 1, 0, 0, 0, 3262, 195, 1, 0, 0, 0, 3263, 3264, 5, 103, 0, 0, 3264, 3266, 5, 360, 0, 0, 3265, 3267, 7, 45, 0, 0, 3266, 3265, 1, 0, 0, 0, 3266, 3267, 1, 0, 0, 0, 3267, 3269, 1, 0, 0, 0, 3268, 3270, 5, 450, 0, 0, 3269, 3268, 1, 0, 0, 0, 3269, 3270, 1, 0, 0, 0, 3270, 3271, 1, 0, 0, 0, 3271, 3272, 5, 83, 0, 0, 3272, 3274, 5, 882, 0, 0, 3273, 3275, 7, 6, 0, 0, 3274, 3273, 1, 0, 0, 0, 3274, 3275, 1, 0, 0, 0, 3275, 3276, 1, 0, 0, 0, 3276, 3277, 5, 88, 0, 0, 3277, 3278, 5, 173, 0, 0, 3278, 3284, 3, 648, 324, 0, 3279, 3280, 5, 130, 0, 0, 3280, 3281, 5, 866, 0, 0, 3281, 3282, 3, 666, 333, 0, 3282, 3283, 5, 867, 0, 0, 3283, 3285, 1, 0, 0, 0, 3284, 3279, 1, 0, 0, 0, 3284, 3285, 1, 0, 0, 0, 3285, 3289, 1, 0, 0, 0, 3286, 3287, 5, 26, 0, 0, 3287, 3288, 5, 155, 0, 0, 3288, 3290, 3, 684, 342, 0, 3289, 3286, 1, 0, 0, 0, 3289, 3290, 1, 0, 0, 0, 3290, 3297, 1, 0, 0, 0, 3291, 3293, 7, 46, 0, 0, 3292, 3294, 3, 298, 149, 0, 3293, 3292, 1, 0, 0, 0, 3294, 3295, 1, 0, 0, 0, 3295, 3293, 1, 0, 0, 0, 3295, 3296, 1, 0, 0, 0, 3296, 3298, 1, 0, 0, 0, 3297, 3291, 1, 0, 0, 0, 3297, 3298, 1, 0, 0, 0, 3298, 3305, 1, 0, 0, 0, 3299, 3301, 5, 102, 0, 0, 3300, 3302, 3, 300, 150, 0, 3301, 3300, 1, 0, 0, 0, 3302, 3303, 1, 0, 0, 0, 3303, 3301, 1, 0, 0, 0, 3303, 3304, 1, 0, 0, 0, 3304, 3306, 1, 0, 0, 0, 3305, 3299, 1, 0, 0, 0, 3305, 3306, 1, 0, 0, 0, 3306, 3311, 1, 0, 0, 0, 3307, 3308, 5, 79, 0, 0, 3308, 3309, 3, 708, 354, 0, 3309, 3310, 7, 47, 0, 0, 3310, 3312, 1, 0, 0, 0, 3311, 3307, 1, 0, 0, 0, 3311, 3312, 1, 0, 0, 0, 3312, 3324, 1, 0, 0, 0, 3313, 3314, 5, 866, 0, 0, 3314, 3319, 3, 230, 115, 0, 3315, 3316, 5, 868, 0, 0, 3316, 3318, 3, 230, 115, 0, 3317, 3315, 1, 0, 0, 0, 3318, 3321, 1, 0, 0, 0, 3319, 3317, 1, 0, 0, 0, 3319, 3320, 1, 0, 0, 0, 3320, 3322, 1, 0, 0, 0, 3321, 3319, 1, 0, 0, 0, 3322, 3323, 5, 867, 0, 0, 3323, 3325, 1, 0, 0, 0, 3324, 3313, 1, 0, 0, 0, 3324, 3325, 1, 0, 0, 0, 3325, 3335, 1, 0, 0, 0, 3326, 3327, 5, 155, 0, 0, 3327, 3332, 3, 228, 114, 0, 3328, 3329, 5, 868, 0, 0, 3329, 3331, 3, 228, 114, 0, 3330, 3328, 1, 0, 0, 0, 3331, 3334, 1, 0, 0, 0, 3332, 3330, 1, 0, 0, 0, 3332, 3333, 1, 0, 0, 0, 3333, 3336, 1, 0, 0, 0, 3334, 3332, 1, 0, 0, 0, 3335, 3326, 1, 0, 0, 0, 3335, 3336, 1, 0, 0, 0, 3336, 197, 1, 0, 0, 0, 3337, 3338, 5, 103, 0, 0, 3338, 3340, 5, 695, 0, 0, 3339, 3341, 7, 45, 0, 0, 3340, 3339, 1, 0, 0, 0, 3340, 3341, 1, 0, 0, 0, 3341, 3343, 1, 0, 0, 0, 3342, 3344, 5, 450, 0, 0, 3343, 3342, 1, 0, 0, 0, 3343, 3344, 1, 0, 0, 0, 3344, 3345, 1, 0, 0, 0, 3345, 3346, 5, 83, 0, 0, 3346, 3348, 5, 882, 0, 0, 3347, 3349, 7, 6, 0, 0, 3348, 3347, 1, 0, 0, 0, 3348, 3349, 1, 0, 0, 0, 3349, 3350, 1, 0, 0, 0, 3350, 3351, 5, 88, 0, 0, 3351, 3352, 5, 173, 0, 0, 3352, 3356, 3, 648, 324, 0, 3353, 3354, 5, 26, 0, 0, 3354, 3355, 5, 155, 0, 0, 3355, 3357, 3, 684, 342, 0, 3356, 3353, 1, 0, 0, 0, 3356, 3357, 1, 0, 0, 0, 3357, 3368, 1, 0, 0, 0, 3358, 3359, 5, 587, 0, 0, 3359, 3360, 5, 423, 0, 0, 3360, 3362, 5, 20, 0, 0, 3361, 3363, 5, 859, 0, 0, 3362, 3361, 1, 0, 0, 0, 3362, 3363, 1, 0, 0, 0, 3363, 3364, 1, 0, 0, 0, 3364, 3366, 5, 882, 0, 0, 3365, 3367, 5, 858, 0, 0, 3366, 3365, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3369, 1, 0, 0, 0, 3368, 3358, 1, 0, 0, 0, 3368, 3369, 1, 0, 0, 0, 3369, 3374, 1, 0, 0, 0, 3370, 3371, 5, 79, 0, 0, 3371, 3372, 3, 708, 354, 0, 3372, 3373, 7, 47, 0, 0, 3373, 3375, 1, 0, 0, 0, 3374, 3370, 1, 0, 0, 0, 3374, 3375, 1, 0, 0, 0, 3375, 3387, 1, 0, 0, 0, 3376, 3377, 5, 866, 0, 0, 3377, 3382, 3, 230, 115, 0, 3378, 3379, 5, 868, 0, 0, 3379, 3381, 3, 230, 115, 0, 3380, 3378, 1, 0, 0, 0, 3381, 3384, 1, 0, 0, 0, 3382, 3380, 1, 0, 0, 0, 3382, 3383, 1, 0, 0, 0, 3383, 3385, 1, 0, 0, 0, 3384, 3382, 1, 0, 0, 0, 3385, 3386, 5, 867, 0, 0, 3386, 3388, 1, 0, 0, 0, 3387, 3376, 1, 0, 0, 0, 3387, 3388, 1, 0, 0, 0, 3388, 3398, 1, 0, 0, 0, 3389, 3390, 5, 155, 0, 0, 3390, 3395, 3, 228, 114, 0, 3391, 3392, 5, 868, 0, 0, 3392, 3394, 3, 228, 114, 0, 3393, 3391, 1, 0, 0, 0, 3394, 3397, 1, 0, 0, 0, 3395, 3393, 1, 0, 0, 0, 3395, 3396, 1, 0, 0, 0, 3396, 3399, 1, 0, 0, 0, 3397, 3395, 1, 0, 0, 0, 3398, 3389, 1, 0, 0, 0, 3398, 3399, 1, 0, 0, 0, 3399, 199, 1, 0, 0, 0, 3400, 3401, 5, 866, 0, 0, 3401, 3403, 3, 218, 109, 0, 3402, 3404, 3, 252, 126, 0, 3403, 3402, 1, 0, 0, 0, 3403, 3404, 1, 0, 0, 0, 3404, 3406, 1, 0, 0, 0, 3405, 3407, 3, 312, 156, 0, 3406, 3405, 1, 0, 0, 0, 3406, 3407, 1, 0, 0, 0, 3407, 3408, 1, 0, 0, 0, 3408, 3410, 5, 867, 0, 0, 3409, 3411, 3, 252, 126, 0, 3410, 3409, 1, 0, 0, 0, 3410, 3411, 1, 0, 0, 0, 3411, 3413, 1, 0, 0, 0, 3412, 3414, 3, 312, 156, 0, 3413, 3412, 1, 0, 0, 0, 3413, 3414, 1, 0, 0, 0, 3414, 3416, 1, 0, 0, 0, 3415, 3417, 3, 296, 148, 0, 3416, 3415, 1, 0, 0, 0, 3416, 3417, 1, 0, 0, 0, 3417, 201, 1, 0, 0, 0, 3418, 3420, 5, 143, 0, 0, 3419, 3421, 7, 48, 0, 0, 3420, 3419, 1, 0, 0, 0, 3420, 3421, 1, 0, 0, 0, 3421, 3423, 1, 0, 0, 0, 3422, 3424, 5, 88, 0, 0, 3423, 3422, 1, 0, 0, 0, 3423, 3424, 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 3431, 3, 648, 324, 0, 3426, 3427, 5, 130, 0, 0, 3427, 3428, 5, 866, 0, 0, 3428, 3429, 3, 666, 333, 0, 3429, 3430, 5, 867, 0, 0, 3430, 3432, 1, 0, 0, 0, 3431, 3426, 1, 0, 0, 0, 3431, 3432, 1, 0, 0, 0, 3432, 3441, 1, 0, 0, 0, 3433, 3434, 5, 866, 0, 0, 3434, 3435, 3, 656, 328, 0, 3435, 3436, 5, 867, 0, 0, 3436, 3438, 1, 0, 0, 0, 3437, 3433, 1, 0, 0, 0, 3437, 3438, 1, 0, 0, 0, 3438, 3439, 1, 0, 0, 0, 3439, 3442, 3, 222, 111, 0, 3440, 3442, 3, 226, 113, 0, 3441, 3437, 1, 0, 0, 0, 3441, 3440, 1, 0, 0, 0, 3442, 203, 1, 0, 0, 0, 3443, 3447, 3, 274, 137, 0, 3444, 3446, 3, 276, 138, 0, 3445, 3444, 1, 0, 0, 0, 3446, 3449, 1, 0, 0, 0, 3447, 3445, 1, 0, 0, 0, 3447, 3448, 1, 0, 0, 0, 3448, 3458, 1, 0, 0, 0, 3449, 3447, 1, 0, 0, 0, 3450, 3452, 5, 181, 0, 0, 3451, 3453, 7, 44, 0, 0, 3452, 3451, 1, 0, 0, 0, 3452, 3453, 1, 0, 0, 0, 3453, 3456, 1, 0, 0, 0, 3454, 3457, 3, 274, 137, 0, 3455, 3457, 3, 272, 136, 0, 3456, 3454, 1, 0, 0, 0, 3456, 3455, 1, 0, 0, 0, 3457, 3459, 1, 0, 0, 0, 3458, 3450, 1, 0, 0, 0, 3458, 3459, 1, 0, 0, 0, 3459, 3464, 1, 0, 0, 0, 3460, 3461, 5, 868, 0, 0, 3461, 3463, 3, 278, 139, 0, 3462, 3460, 1, 0, 0, 0, 3463, 3466, 1, 0, 0, 0, 3464, 3462, 1, 0, 0, 0, 3464, 3465, 1, 0, 0, 0, 3465, 3468, 1, 0, 0, 0, 3466, 3464, 1, 0, 0, 0, 3467, 3469, 3, 252, 126, 0, 3468, 3467, 1, 0, 0, 0, 3468, 3469, 1, 0, 0, 0, 3469, 3471, 1, 0, 0, 0, 3470, 3472, 3, 312, 156, 0, 3471, 3470, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3474, 1, 0, 0, 0, 3473, 3475, 3, 232, 116, 0, 3474, 3473, 1, 0, 0, 0, 3474, 3475, 1, 0, 0, 0, 3475, 3477, 1, 0, 0, 0, 3476, 3478, 3, 296, 148, 0, 3477, 3476, 1, 0, 0, 0, 3477, 3478, 1, 0, 0, 0, 3478, 3503, 1, 0, 0, 0, 3479, 3483, 3, 272, 136, 0, 3480, 3482, 3, 276, 138, 0, 3481, 3480, 1, 0, 0, 0, 3482, 3485, 1, 0, 0, 0, 3483, 3481, 1, 0, 0, 0, 3483, 3484, 1, 0, 0, 0, 3484, 3491, 1, 0, 0, 0, 3485, 3483, 1, 0, 0, 0, 3486, 3488, 5, 181, 0, 0, 3487, 3489, 7, 44, 0, 0, 3488, 3487, 1, 0, 0, 0, 3488, 3489, 1, 0, 0, 0, 3489, 3490, 1, 0, 0, 0, 3490, 3492, 3, 272, 136, 0, 3491, 3486, 1, 0, 0, 0, 3491, 3492, 1, 0, 0, 0, 3492, 3494, 1, 0, 0, 0, 3493, 3495, 3, 252, 126, 0, 3494, 3493, 1, 0, 0, 0, 3494, 3495, 1, 0, 0, 0, 3495, 3497, 1, 0, 0, 0, 3496, 3498, 3, 312, 156, 0, 3497, 3496, 1, 0, 0, 0, 3497, 3498, 1, 0, 0, 0, 3498, 3500, 1, 0, 0, 0, 3499, 3501, 3, 232, 116, 0, 3500, 3499, 1, 0, 0, 0, 3500, 3501, 1, 0, 0, 0, 3501, 3503, 1, 0, 0, 0, 3502, 3443, 1, 0, 0, 0, 3502, 3479, 1, 0, 0, 0, 3503, 205, 1, 0, 0, 0, 3504, 3506, 3, 46, 23, 0, 3505, 3504, 1, 0, 0, 0, 3505, 3506, 1, 0, 0, 0, 3506, 3507, 1, 0, 0, 0, 3507, 3509, 3, 208, 104, 0, 3508, 3510, 3, 252, 126, 0, 3509, 3508, 1, 0, 0, 0, 3509, 3510, 1, 0, 0, 0, 3510, 3512, 1, 0, 0, 0, 3511, 3513, 3, 312, 156, 0, 3512, 3511, 1, 0, 0, 0, 3512, 3513, 1, 0, 0, 0, 3513, 3515, 1, 0, 0, 0, 3514, 3516, 3, 296, 148, 0, 3515, 3514, 1, 0, 0, 0, 3515, 3516, 1, 0, 0, 0, 3516, 207, 1, 0, 0, 0, 3517, 3518, 6, 104, -1, 0, 3518, 3519, 3, 210, 105, 0, 3519, 3534, 1, 0, 0, 0, 3520, 3521, 10, 2, 0, 0, 3521, 3523, 5, 181, 0, 0, 3522, 3524, 7, 44, 0, 0, 3523, 3522, 1, 0, 0, 0, 3523, 3524, 1, 0, 0, 0, 3524, 3525, 1, 0, 0, 0, 3525, 3533, 3, 210, 105, 0, 3526, 3527, 10, 1, 0, 0, 3527, 3529, 5, 59, 0, 0, 3528, 3530, 7, 44, 0, 0, 3529, 3528, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3531, 1, 0, 0, 0, 3531, 3533, 3, 210, 105, 0, 3532, 3520, 1, 0, 0, 0, 3532, 3526, 1, 0, 0, 0, 3533, 3536, 1, 0, 0, 0, 3534, 3532, 1, 0, 0, 0, 3534, 3535, 1, 0, 0, 0, 3535, 209, 1, 0, 0, 0, 3536, 3534, 1, 0, 0, 0, 3537, 3538, 6, 105, -1, 0, 3538, 3539, 3, 212, 106, 0, 3539, 3548, 1, 0, 0, 0, 3540, 3541, 10, 1, 0, 0, 3541, 3543, 5, 828, 0, 0, 3542, 3544, 7, 44, 0, 0, 3543, 3542, 1, 0, 0, 0, 3543, 3544, 1, 0, 0, 0, 3544, 3545, 1, 0, 0, 0, 3545, 3547, 3, 212, 106, 0, 3546, 3540, 1, 0, 0, 0, 3547, 3550, 1, 0, 0, 0, 3548, 3546, 1, 0, 0, 0, 3548, 3549, 1, 0, 0, 0, 3549, 211, 1, 0, 0, 0, 3550, 3548, 1, 0, 0, 0, 3551, 3566, 3, 220, 110, 0, 3552, 3553, 5, 866, 0, 0, 3553, 3555, 3, 208, 104, 0, 3554, 3556, 3, 252, 126, 0, 3555, 3554, 1, 0, 0, 0, 3555, 3556, 1, 0, 0, 0, 3556, 3558, 1, 0, 0, 0, 3557, 3559, 3, 312, 156, 0, 3558, 3557, 1, 0, 0, 0, 3558, 3559, 1, 0, 0, 0, 3559, 3561, 1, 0, 0, 0, 3560, 3562, 3, 296, 148, 0, 3561, 3560, 1, 0, 0, 0, 3561, 3562, 1, 0, 0, 0, 3562, 3563, 1, 0, 0, 0, 3563, 3564, 5, 867, 0, 0, 3564, 3566, 1, 0, 0, 0, 3565, 3551, 1, 0, 0, 0, 3565, 3552, 1, 0, 0, 0, 3566, 213, 1, 0, 0, 0, 3567, 3570, 3, 248, 124, 0, 3568, 3570, 3, 250, 125, 0, 3569, 3567, 1, 0, 0, 0, 3569, 3568, 1, 0, 0, 0, 3570, 215, 1, 0, 0, 0, 3571, 3575, 3, 224, 112, 0, 3572, 3573, 5, 125, 0, 0, 3573, 3574, 5, 20, 0, 0, 3574, 3576, 3, 670, 335, 0, 3575, 3572, 1, 0, 0, 0, 3575, 3576, 1, 0, 0, 0, 3576, 3579, 1, 0, 0, 0, 3577, 3578, 5, 100, 0, 0, 3578, 3580, 3, 314, 157, 0, 3579, 3577, 1, 0, 0, 0, 3579, 3580, 1, 0, 0, 0, 3580, 217, 1, 0, 0, 0, 3581, 3586, 3, 220, 110, 0, 3582, 3583, 7, 49, 0, 0, 3583, 3585, 3, 220, 110, 0, 3584, 3582, 1, 0, 0, 0, 3585, 3588, 1, 0, 0, 0, 3586, 3584, 1, 0, 0, 0, 3586, 3587, 1, 0, 0, 0, 3587, 3590, 1, 0, 0, 0, 3588, 3586, 1, 0, 0, 0, 3589, 3591, 3, 252, 126, 0, 3590, 3589, 1, 0, 0, 0, 3590, 3591, 1, 0, 0, 0, 3591, 3593, 1, 0, 0, 0, 3592, 3594, 3, 312, 156, 0, 3593, 3592, 1, 0, 0, 0, 3593, 3594, 1, 0, 0, 0, 3594, 3596, 1, 0, 0, 0, 3595, 3597, 3, 296, 148, 0, 3596, 3595, 1, 0, 0, 0, 3596, 3597, 1, 0, 0, 0, 3597, 219, 1, 0, 0, 0, 3598, 3602, 3, 204, 102, 0, 3599, 3602, 3, 614, 307, 0, 3600, 3602, 3, 216, 108, 0, 3601, 3598, 1, 0, 0, 0, 3601, 3599, 1, 0, 0, 0, 3601, 3600, 1, 0, 0, 0, 3602, 221, 1, 0, 0, 0, 3603, 3609, 3, 204, 102, 0, 3604, 3605, 5, 173, 0, 0, 3605, 3609, 3, 648, 324, 0, 3606, 3609, 3, 738, 369, 0, 3607, 3609, 3, 224, 112, 0, 3608, 3603, 1, 0, 0, 0, 3608, 3604, 1, 0, 0, 0, 3608, 3606, 1, 0, 0, 0, 3608, 3607, 1, 0, 0, 0, 3609, 223, 1, 0, 0, 0, 3610, 3611, 5, 189, 0, 0, 3611, 3612, 5, 586, 0, 0, 3612, 3618, 3, 740, 370, 0, 3613, 3614, 5, 868, 0, 0, 3614, 3615, 5, 586, 0, 0, 3615, 3617, 3, 740, 370, 0, 3616, 3613, 1, 0, 0, 0, 3617, 3620, 1, 0, 0, 0, 3618, 3616, 1, 0, 0, 0, 3618, 3619, 1, 0, 0, 0, 3619, 225, 1, 0, 0, 0, 3620, 3618, 1, 0, 0, 0, 3621, 3622, 5, 155, 0, 0, 3622, 3627, 3, 228, 114, 0, 3623, 3624, 5, 868, 0, 0, 3624, 3626, 3, 228, 114, 0, 3625, 3623, 1, 0, 0, 0, 3626, 3629, 1, 0, 0, 0, 3627, 3625, 1, 0, 0, 0, 3627, 3628, 1, 0, 0, 0, 3628, 227, 1, 0, 0, 0, 3629, 3627, 1, 0, 0, 0, 3630, 3631, 3, 658, 329, 0, 3631, 3632, 5, 857, 0, 0, 3632, 3633, 3, 742, 371, 0, 3633, 229, 1, 0, 0, 0, 3634, 3637, 3, 702, 351, 0, 3635, 3637, 5, 892, 0, 0, 3636, 3634, 1, 0, 0, 0, 3636, 3635, 1, 0, 0, 0, 3637, 231, 1, 0, 0, 0, 3638, 3639, 5, 65, 0, 0, 3639, 3649, 7, 50, 0, 0, 3640, 3641, 5, 510, 0, 0, 3641, 3646, 3, 648, 324, 0, 3642, 3643, 5, 868, 0, 0, 3643, 3645, 3, 648, 324, 0, 3644, 3642, 1, 0, 0, 0, 3645, 3648, 1, 0, 0, 0, 3646, 3644, 1, 0, 0, 0, 3646, 3647, 1, 0, 0, 0, 3647, 3650, 1, 0, 0, 0, 3648, 3646, 1, 0, 0, 0, 3649, 3640, 1, 0, 0, 0, 3649, 3650, 1, 0, 0, 0, 3650, 3653, 1, 0, 0, 0, 3651, 3652, 7, 51, 0, 0, 3652, 3654, 5, 105, 0, 0, 3653, 3651, 1, 0, 0, 0, 3653, 3654, 1, 0, 0, 0, 3654, 3660, 1, 0, 0, 0, 3655, 3656, 5, 104, 0, 0, 3656, 3657, 5, 80, 0, 0, 3657, 3658, 5, 594, 0, 0, 3658, 3660, 5, 491, 0, 0, 3659, 3638, 1, 0, 0, 0, 3659, 3655, 1, 0, 0, 0, 3660, 233, 1, 0, 0, 0, 3661, 3663, 5, 44, 0, 0, 3662, 3664, 5, 107, 0, 0, 3663, 3662, 1, 0, 0, 0, 3663, 3664, 1, 0, 0, 0, 3664, 3666, 1, 0, 0, 0, 3665, 3667, 5, 549, 0, 0, 3666, 3665, 1, 0, 0, 0, 3666, 3667, 1, 0, 0, 0, 3667, 3669, 1, 0, 0, 0, 3668, 3670, 5, 79, 0, 0, 3669, 3668, 1, 0, 0, 0, 3669, 3670, 1, 0, 0, 0, 3670, 3671, 1, 0, 0, 0, 3671, 3672, 5, 68, 0, 0, 3672, 3677, 3, 648, 324, 0, 3673, 3675, 5, 13, 0, 0, 3674, 3673, 1, 0, 0, 0, 3674, 3675, 1, 0, 0, 0, 3675, 3676, 1, 0, 0, 0, 3676, 3678, 3, 702, 351, 0, 3677, 3674, 1, 0, 0, 0, 3677, 3678, 1, 0, 0, 0, 3678, 3684, 1, 0, 0, 0, 3679, 3680, 5, 130, 0, 0, 3680, 3681, 5, 866, 0, 0, 3681, 3682, 3, 666, 333, 0, 3682, 3683, 5, 867, 0, 0, 3683, 3685, 1, 0, 0, 0, 3684, 3679, 1, 0, 0, 0, 3684, 3685, 1, 0, 0, 0, 3685, 3688, 1, 0, 0, 0, 3686, 3687, 5, 192, 0, 0, 3687, 3689, 3, 800, 400, 0, 3688, 3686, 1, 0, 0, 0, 3688, 3689, 1, 0, 0, 0, 3689, 3691, 1, 0, 0, 0, 3690, 3692, 3, 252, 126, 0, 3691, 3690, 1, 0, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3695, 1, 0, 0, 0, 3693, 3694, 5, 100, 0, 0, 3694, 3696, 3, 314, 157, 0, 3695, 3693, 1, 0, 0, 0, 3695, 3696, 1, 0, 0, 0, 3696, 235, 1, 0, 0, 0, 3697, 3699, 5, 44, 0, 0, 3698, 3700, 5, 107, 0, 0, 3699, 3698, 1, 0, 0, 0, 3699, 3700, 1, 0, 0, 0, 3700, 3702, 1, 0, 0, 0, 3701, 3703, 5, 549, 0, 0, 3702, 3701, 1, 0, 0, 0, 3702, 3703, 1, 0, 0, 0, 3703, 3705, 1, 0, 0, 0, 3704, 3706, 5, 79, 0, 0, 3705, 3704, 1, 0, 0, 0, 3705, 3706, 1, 0, 0, 0, 3706, 3746, 1, 0, 0, 0, 3707, 3710, 3, 648, 324, 0, 3708, 3709, 5, 865, 0, 0, 3709, 3711, 5, 850, 0, 0, 3710, 3708, 1, 0, 0, 0, 3710, 3711, 1, 0, 0, 0, 3711, 3720, 1, 0, 0, 0, 3712, 3713, 5, 868, 0, 0, 3713, 3716, 3, 648, 324, 0, 3714, 3715, 5, 865, 0, 0, 3715, 3717, 5, 850, 0, 0, 3716, 3714, 1, 0, 0, 0, 3716, 3717, 1, 0, 0, 0, 3717, 3719, 1, 0, 0, 0, 3718, 3712, 1, 0, 0, 0, 3719, 3722, 1, 0, 0, 0, 3720, 3718, 1, 0, 0, 0, 3720, 3721, 1, 0, 0, 0, 3721, 3723, 1, 0, 0, 0, 3722, 3720, 1, 0, 0, 0, 3723, 3724, 5, 68, 0, 0, 3724, 3725, 3, 256, 128, 0, 3725, 3747, 1, 0, 0, 0, 3726, 3727, 5, 68, 0, 0, 3727, 3730, 3, 648, 324, 0, 3728, 3729, 5, 865, 0, 0, 3729, 3731, 5, 850, 0, 0, 3730, 3728, 1, 0, 0, 0, 3730, 3731, 1, 0, 0, 0, 3731, 3740, 1, 0, 0, 0, 3732, 3733, 5, 868, 0, 0, 3733, 3736, 3, 648, 324, 0, 3734, 3735, 5, 865, 0, 0, 3735, 3737, 5, 850, 0, 0, 3736, 3734, 1, 0, 0, 0, 3736, 3737, 1, 0, 0, 0, 3737, 3739, 1, 0, 0, 0, 3738, 3732, 1, 0, 0, 0, 3739, 3742, 1, 0, 0, 0, 3740, 3738, 1, 0, 0, 0, 3740, 3741, 1, 0, 0, 0, 3741, 3743, 1, 0, 0, 0, 3742, 3740, 1, 0, 0, 0, 3743, 3744, 5, 188, 0, 0, 3744, 3745, 3, 256, 128, 0, 3745, 3747, 1, 0, 0, 0, 3746, 3707, 1, 0, 0, 0, 3746, 3726, 1, 0, 0, 0, 3747, 3750, 1, 0, 0, 0, 3748, 3749, 5, 192, 0, 0, 3749, 3751, 3, 800, 400, 0, 3750, 3748, 1, 0, 0, 0, 3750, 3751, 1, 0, 0, 0, 3751, 237, 1, 0, 0, 0, 3752, 3753, 5, 417, 0, 0, 3753, 3754, 3, 648, 324, 0, 3754, 3759, 5, 516, 0, 0, 3755, 3757, 5, 13, 0, 0, 3756, 3755, 1, 0, 0, 0, 3756, 3757, 1, 0, 0, 0, 3757, 3758, 1, 0, 0, 0, 3758, 3760, 3, 702, 351, 0, 3759, 3756, 1, 0, 0, 0, 3759, 3760, 1, 0, 0, 0, 3760, 239, 1, 0, 0, 0, 3761, 3762, 5, 417, 0, 0, 3762, 3763, 3, 648, 324, 0, 3763, 3764, 5, 135, 0, 0, 3764, 3771, 3, 638, 319, 0, 3765, 3766, 3, 810, 405, 0, 3766, 3767, 5, 866, 0, 0, 3767, 3768, 3, 744, 372, 0, 3768, 3769, 5, 867, 0, 0, 3769, 3772, 1, 0, 0, 0, 3770, 3772, 7, 52, 0, 0, 3771, 3765, 1, 0, 0, 0, 3771, 3770, 1, 0, 0, 0, 3772, 3775, 1, 0, 0, 0, 3773, 3774, 5, 192, 0, 0, 3774, 3776, 3, 800, 400, 0, 3775, 3773, 1, 0, 0, 0, 3775, 3776, 1, 0, 0, 0, 3776, 3779, 1, 0, 0, 0, 3777, 3778, 5, 100, 0, 0, 3778, 3780, 3, 314, 157, 0, 3779, 3777, 1, 0, 0, 0, 3779, 3780, 1, 0, 0, 0, 3780, 241, 1, 0, 0, 0, 3781, 3782, 5, 417, 0, 0, 3782, 3783, 3, 648, 324, 0, 3783, 3784, 5, 135, 0, 0, 3784, 3787, 7, 53, 0, 0, 3785, 3786, 5, 192, 0, 0, 3786, 3788, 3, 800, 400, 0, 3787, 3785, 1, 0, 0, 0, 3787, 3788, 1, 0, 0, 0, 3788, 3791, 1, 0, 0, 0, 3789, 3790, 5, 100, 0, 0, 3790, 3792, 3, 314, 157, 0, 3791, 3789, 1, 0, 0, 0, 3791, 3792, 1, 0, 0, 0, 3792, 243, 1, 0, 0, 0, 3793, 3794, 5, 417, 0, 0, 3794, 3795, 3, 648, 324, 0, 3795, 3796, 5, 334, 0, 0, 3796, 245, 1, 0, 0, 0, 3797, 3798, 5, 425, 0, 0, 3798, 3799, 5, 173, 0, 0, 3799, 3800, 5, 68, 0, 0, 3800, 3805, 3, 712, 356, 0, 3801, 3802, 5, 868, 0, 0, 3802, 3804, 3, 712, 356, 0, 3803, 3801, 1, 0, 0, 0, 3804, 3807, 1, 0, 0, 0, 3805, 3803, 1, 0, 0, 0, 3805, 3806, 1, 0, 0, 0, 3806, 247, 1, 0, 0, 0, 3807, 3805, 1, 0, 0, 0, 3808, 3810, 5, 185, 0, 0, 3809, 3811, 5, 107, 0, 0, 3810, 3809, 1, 0, 0, 0, 3810, 3811, 1, 0, 0, 0, 3811, 3813, 1, 0, 0, 0, 3812, 3814, 5, 79, 0, 0, 3813, 3812, 1, 0, 0, 0, 3813, 3814, 1, 0, 0, 0, 3814, 3815, 1, 0, 0, 0, 3815, 3820, 3, 648, 324, 0, 3816, 3818, 5, 13, 0, 0, 3817, 3816, 1, 0, 0, 0, 3817, 3818, 1, 0, 0, 0, 3818, 3819, 1, 0, 0, 0, 3819, 3821, 3, 702, 351, 0, 3820, 3817, 1, 0, 0, 0, 3820, 3821, 1, 0, 0, 0, 3821, 3822, 1, 0, 0, 0, 3822, 3823, 5, 155, 0, 0, 3823, 3828, 3, 228, 114, 0, 3824, 3825, 5, 868, 0, 0, 3825, 3827, 3, 228, 114, 0, 3826, 3824, 1, 0, 0, 0, 3827, 3830, 1, 0, 0, 0, 3828, 3826, 1, 0, 0, 0, 3828, 3829, 1, 0, 0, 0, 3829, 3833, 1, 0, 0, 0, 3830, 3828, 1, 0, 0, 0, 3831, 3832, 5, 192, 0, 0, 3832, 3834, 3, 800, 400, 0, 3833, 3831, 1, 0, 0, 0, 3833, 3834, 1, 0, 0, 0, 3834, 3836, 1, 0, 0, 0, 3835, 3837, 3, 252, 126, 0, 3836, 3835, 1, 0, 0, 0, 3836, 3837, 1, 0, 0, 0, 3837, 3839, 1, 0, 0, 0, 3838, 3840, 3, 312, 156, 0, 3839, 3838, 1, 0, 0, 0, 3839, 3840, 1, 0, 0, 0, 3840, 249, 1, 0, 0, 0, 3841, 3843, 5, 185, 0, 0, 3842, 3844, 5, 107, 0, 0, 3843, 3842, 1, 0, 0, 0, 3843, 3844, 1, 0, 0, 0, 3844, 3846, 1, 0, 0, 0, 3845, 3847, 5, 79, 0, 0, 3846, 3845, 1, 0, 0, 0, 3846, 3847, 1, 0, 0, 0, 3847, 3848, 1, 0, 0, 0, 3848, 3849, 3, 256, 128, 0, 3849, 3850, 5, 155, 0, 0, 3850, 3855, 3, 228, 114, 0, 3851, 3852, 5, 868, 0, 0, 3852, 3854, 3, 228, 114, 0, 3853, 3851, 1, 0, 0, 0, 3854, 3857, 1, 0, 0, 0, 3855, 3853, 1, 0, 0, 0, 3855, 3856, 1, 0, 0, 0, 3856, 3860, 1, 0, 0, 0, 3857, 3855, 1, 0, 0, 0, 3858, 3859, 5, 192, 0, 0, 3859, 3861, 3, 800, 400, 0, 3860, 3858, 1, 0, 0, 0, 3860, 3861, 1, 0, 0, 0, 3861, 251, 1, 0, 0, 0, 3862, 3863, 5, 125, 0, 0, 3863, 3864, 5, 20, 0, 0, 3864, 3869, 3, 254, 127, 0, 3865, 3866, 5, 868, 0, 0, 3866, 3868, 3, 254, 127, 0, 3867, 3865, 1, 0, 0, 0, 3868, 3871, 1, 0, 0, 0, 3869, 3867, 1, 0, 0, 0, 3869, 3870, 1, 0, 0, 0, 3870, 253, 1, 0, 0, 0, 3871, 3869, 1, 0, 0, 0, 3872, 3874, 3, 800, 400, 0, 3873, 3875, 7, 54, 0, 0, 3874, 3873, 1, 0, 0, 0, 3874, 3875, 1, 0, 0, 0, 3875, 255, 1, 0, 0, 0, 3876, 3881, 3, 258, 129, 0, 3877, 3878, 5, 868, 0, 0, 3878, 3880, 3, 258, 129, 0, 3879, 3877, 1, 0, 0, 0, 3880, 3883, 1, 0, 0, 0, 3881, 3879, 1, 0, 0, 0, 3881, 3882, 1, 0, 0, 0, 3882, 257, 1, 0, 0, 0, 3883, 3881, 1, 0, 0, 0, 3884, 3888, 3, 260, 130, 0, 3885, 3887, 3, 268, 134, 0, 3886, 3885, 1, 0, 0, 0, 3887, 3890, 1, 0, 0, 0, 3888, 3886, 1, 0, 0, 0, 3888, 3889, 1, 0, 0, 0, 3889, 3903, 1, 0, 0, 0, 3890, 3888, 1, 0, 0, 0, 3891, 3892, 5, 866, 0, 0, 3892, 3896, 3, 260, 130, 0, 3893, 3895, 3, 268, 134, 0, 3894, 3893, 1, 0, 0, 0, 3895, 3898, 1, 0, 0, 0, 3896, 3894, 1, 0, 0, 0, 3896, 3897, 1, 0, 0, 0, 3897, 3899, 1, 0, 0, 0, 3898, 3896, 1, 0, 0, 0, 3899, 3900, 5, 867, 0, 0, 3900, 3903, 1, 0, 0, 0, 3901, 3903, 3, 280, 140, 0, 3902, 3884, 1, 0, 0, 0, 3902, 3891, 1, 0, 0, 0, 3902, 3901, 1, 0, 0, 0, 3903, 259, 1, 0, 0, 0, 3904, 3910, 3, 648, 324, 0, 3905, 3906, 5, 130, 0, 0, 3906, 3907, 5, 866, 0, 0, 3907, 3908, 3, 666, 333, 0, 3908, 3909, 5, 867, 0, 0, 3909, 3911, 1, 0, 0, 0, 3910, 3905, 1, 0, 0, 0, 3910, 3911, 1, 0, 0, 0, 3911, 3916, 1, 0, 0, 0, 3912, 3914, 5, 13, 0, 0, 3913, 3912, 1, 0, 0, 0, 3913, 3914, 1, 0, 0, 0, 3914, 3915, 1, 0, 0, 0, 3915, 3917, 3, 702, 351, 0, 3916, 3913, 1, 0, 0, 0, 3916, 3917, 1, 0, 0, 0, 3917, 3926, 1, 0, 0, 0, 3918, 3923, 3, 264, 132, 0, 3919, 3920, 5, 868, 0, 0, 3920, 3922, 3, 264, 132, 0, 3921, 3919, 1, 0, 0, 0, 3922, 3925, 1, 0, 0, 0, 3923, 3921, 1, 0, 0, 0, 3923, 3924, 1, 0, 0, 0, 3924, 3927, 1, 0, 0, 0, 3925, 3923, 1, 0, 0, 0, 3926, 3918, 1, 0, 0, 0, 3926, 3927, 1, 0, 0, 0, 3927, 3950, 1, 0, 0, 0, 3928, 3930, 5, 95, 0, 0, 3929, 3928, 1, 0, 0, 0, 3929, 3930, 1, 0, 0, 0, 3930, 3936, 1, 0, 0, 0, 3931, 3937, 3, 204, 102, 0, 3932, 3933, 5, 866, 0, 0, 3933, 3934, 3, 204, 102, 0, 3934, 3935, 5, 867, 0, 0, 3935, 3937, 1, 0, 0, 0, 3936, 3931, 1, 0, 0, 0, 3936, 3932, 1, 0, 0, 0, 3937, 3939, 1, 0, 0, 0, 3938, 3940, 5, 13, 0, 0, 3939, 3938, 1, 0, 0, 0, 3939, 3940, 1, 0, 0, 0, 3940, 3941, 1, 0, 0, 0, 3941, 3943, 3, 702, 351, 0, 3942, 3944, 3, 262, 131, 0, 3943, 3942, 1, 0, 0, 0, 3943, 3944, 1, 0, 0, 0, 3944, 3950, 1, 0, 0, 0, 3945, 3946, 5, 866, 0, 0, 3946, 3947, 3, 256, 128, 0, 3947, 3948, 5, 867, 0, 0, 3948, 3950, 1, 0, 0, 0, 3949, 3904, 1, 0, 0, 0, 3949, 3929, 1, 0, 0, 0, 3949, 3945, 1, 0, 0, 0, 3950, 261, 1, 0, 0, 0, 3951, 3952, 5, 866, 0, 0, 3952, 3953, 3, 656, 328, 0, 3953, 3954, 5, 867, 0, 0, 3954, 263, 1, 0, 0, 0, 3955, 3956, 7, 55, 0, 0, 3956, 3959, 7, 18, 0, 0, 3957, 3958, 5, 65, 0, 0, 3958, 3960, 3, 266, 133, 0, 3959, 3957, 1, 0, 0, 0, 3959, 3960, 1, 0, 0, 0, 3960, 3961, 1, 0, 0, 0, 3961, 3963, 5, 866, 0, 0, 3962, 3964, 3, 636, 318, 0, 3963, 3962, 1, 0, 0, 0, 3963, 3964, 1, 0, 0, 0, 3964, 3965, 1, 0, 0, 0, 3965, 3966, 5, 867, 0, 0, 3966, 265, 1, 0, 0, 0, 3967, 3973, 5, 91, 0, 0, 3968, 3969, 5, 125, 0, 0, 3969, 3973, 5, 20, 0, 0, 3970, 3971, 5, 74, 0, 0, 3971, 3973, 5, 20, 0, 0, 3972, 3967, 1, 0, 0, 0, 3972, 3968, 1, 0, 0, 0, 3972, 3970, 1, 0, 0, 0, 3973, 267, 1, 0, 0, 0, 3974, 3976, 7, 56, 0, 0, 3975, 3974, 1, 0, 0, 0, 3975, 3976, 1, 0, 0, 0, 3976, 3977, 1, 0, 0, 0, 3977, 3979, 5, 91, 0, 0, 3978, 3980, 5, 95, 0, 0, 3979, 3978, 1, 0, 0, 0, 3979, 3980, 1, 0, 0, 0, 3980, 3981, 1, 0, 0, 0, 3981, 3985, 3, 260, 130, 0, 3982, 3984, 3, 270, 135, 0, 3983, 3982, 1, 0, 0, 0, 3984, 3987, 1, 0, 0, 0, 3985, 3983, 1, 0, 0, 0, 3985, 3986, 1, 0, 0, 0, 3986, 4024, 1, 0, 0, 0, 3987, 3985, 1, 0, 0, 0, 3988, 3989, 5, 172, 0, 0, 3989, 3993, 3, 260, 130, 0, 3990, 3992, 3, 270, 135, 0, 3991, 3990, 1, 0, 0, 0, 3992, 3995, 1, 0, 0, 0, 3993, 3991, 1, 0, 0, 0, 3993, 3994, 1, 0, 0, 0, 3994, 4024, 1, 0, 0, 0, 3995, 3993, 1, 0, 0, 0, 3996, 3998, 7, 57, 0, 0, 3997, 3999, 5, 127, 0, 0, 3998, 3997, 1, 0, 0, 0, 3998, 3999, 1, 0, 0, 0, 3999, 4000, 1, 0, 0, 0, 4000, 4002, 5, 91, 0, 0, 4001, 4003, 5, 95, 0, 0, 4002, 4001, 1, 0, 0, 0, 4002, 4003, 1, 0, 0, 0, 4003, 4004, 1, 0, 0, 0, 4004, 4008, 3, 260, 130, 0, 4005, 4007, 3, 270, 135, 0, 4006, 4005, 1, 0, 0, 0, 4007, 4010, 1, 0, 0, 0, 4008, 4006, 1, 0, 0, 0, 4008, 4009, 1, 0, 0, 0, 4009, 4024, 1, 0, 0, 0, 4010, 4008, 1, 0, 0, 0, 4011, 4019, 5, 113, 0, 0, 4012, 4015, 5, 84, 0, 0, 4013, 4015, 7, 57, 0, 0, 4014, 4012, 1, 0, 0, 0, 4014, 4013, 1, 0, 0, 0, 4015, 4017, 1, 0, 0, 0, 4016, 4018, 5, 127, 0, 0, 4017, 4016, 1, 0, 0, 0, 4017, 4018, 1, 0, 0, 0, 4018, 4020, 1, 0, 0, 0, 4019, 4014, 1, 0, 0, 0, 4019, 4020, 1, 0, 0, 0, 4020, 4021, 1, 0, 0, 0, 4021, 4022, 5, 91, 0, 0, 4022, 4024, 3, 260, 130, 0, 4023, 3975, 1, 0, 0, 0, 4023, 3988, 1, 0, 0, 0, 4023, 3996, 1, 0, 0, 0, 4023, 4011, 1, 0, 0, 0, 4024, 269, 1, 0, 0, 0, 4025, 4026, 5, 119, 0, 0, 4026, 4033, 3, 800, 400, 0, 4027, 4028, 5, 188, 0, 0, 4028, 4029, 5, 866, 0, 0, 4029, 4030, 3, 656, 328, 0, 4030, 4031, 5, 867, 0, 0, 4031, 4033, 1, 0, 0, 0, 4032, 4025, 1, 0, 0, 0, 4032, 4027, 1, 0, 0, 0, 4033, 271, 1, 0, 0, 0, 4034, 4035, 5, 866, 0, 0, 4035, 4036, 3, 274, 137, 0, 4036, 4037, 5, 867, 0, 0, 4037, 4043, 1, 0, 0, 0, 4038, 4039, 5, 866, 0, 0, 4039, 4040, 3, 272, 136, 0, 4040, 4041, 5, 867, 0, 0, 4041, 4043, 1, 0, 0, 0, 4042, 4034, 1, 0, 0, 0, 4042, 4038, 1, 0, 0, 0, 4043, 273, 1, 0, 0, 0, 4044, 4048, 5, 154, 0, 0, 4045, 4047, 3, 290, 145, 0, 4046, 4045, 1, 0, 0, 0, 4047, 4050, 1, 0, 0, 0, 4048, 4046, 1, 0, 0, 0, 4048, 4049, 1, 0, 0, 0, 4049, 4051, 1, 0, 0, 0, 4050, 4048, 1, 0, 0, 0, 4051, 4053, 3, 292, 146, 0, 4052, 4054, 3, 296, 148, 0, 4053, 4052, 1, 0, 0, 0, 4053, 4054, 1, 0, 0, 0, 4054, 4055, 1, 0, 0, 0, 4055, 4057, 3, 302, 151, 0, 4056, 4058, 3, 304, 152, 0, 4057, 4056, 1, 0, 0, 0, 4057, 4058, 1, 0, 0, 0, 4058, 4060, 1, 0, 0, 0, 4059, 4061, 3, 306, 153, 0, 4060, 4059, 1, 0, 0, 0, 4060, 4061, 1, 0, 0, 0, 4061, 4063, 1, 0, 0, 0, 4062, 4064, 3, 308, 154, 0, 4063, 4062, 1, 0, 0, 0, 4063, 4064, 1, 0, 0, 0, 4064, 4066, 1, 0, 0, 0, 4065, 4067, 3, 252, 126, 0, 4066, 4065, 1, 0, 0, 0, 4066, 4067, 1, 0, 0, 0, 4067, 4069, 1, 0, 0, 0, 4068, 4070, 3, 312, 156, 0, 4069, 4068, 1, 0, 0, 0, 4069, 4070, 1, 0, 0, 0, 4070, 4072, 1, 0, 0, 0, 4071, 4073, 3, 296, 148, 0, 4072, 4071, 1, 0, 0, 0, 4072, 4073, 1, 0, 0, 0, 4073, 275, 1, 0, 0, 0, 4074, 4076, 5, 181, 0, 0, 4075, 4077, 7, 44, 0, 0, 4076, 4075, 1, 0, 0, 0, 4076, 4077, 1, 0, 0, 0, 4077, 4080, 1, 0, 0, 0, 4078, 4081, 3, 274, 137, 0, 4079, 4081, 3, 272, 136, 0, 4080, 4078, 1, 0, 0, 0, 4080, 4079, 1, 0, 0, 0, 4081, 277, 1, 0, 0, 0, 4082, 4097, 5, 95, 0, 0, 4083, 4098, 3, 274, 137, 0, 4084, 4098, 3, 272, 136, 0, 4085, 4088, 5, 866, 0, 0, 4086, 4089, 3, 274, 137, 0, 4087, 4089, 3, 272, 136, 0, 4088, 4086, 1, 0, 0, 0, 4088, 4087, 1, 0, 0, 0, 4089, 4090, 1, 0, 0, 0, 4090, 4095, 5, 867, 0, 0, 4091, 4093, 5, 13, 0, 0, 4092, 4091, 1, 0, 0, 0, 4092, 4093, 1, 0, 0, 0, 4093, 4094, 1, 0, 0, 0, 4094, 4096, 3, 702, 351, 0, 4095, 4092, 1, 0, 0, 0, 4095, 4096, 1, 0, 0, 0, 4096, 4098, 1, 0, 0, 0, 4097, 4083, 1, 0, 0, 0, 4097, 4084, 1, 0, 0, 0, 4097, 4085, 1, 0, 0, 0, 4098, 279, 1, 0, 0, 0, 4099, 4100, 5, 253, 0, 0, 4100, 4101, 5, 866, 0, 0, 4101, 4102, 5, 882, 0, 0, 4102, 4103, 5, 868, 0, 0, 4103, 4104, 5, 882, 0, 0, 4104, 4105, 5, 337, 0, 0, 4105, 4106, 5, 866, 0, 0, 4106, 4107, 3, 282, 141, 0, 4107, 4108, 5, 867, 0, 0, 4108, 4113, 5, 867, 0, 0, 4109, 4111, 5, 13, 0, 0, 4110, 4109, 1, 0, 0, 0, 4110, 4111, 1, 0, 0, 0, 4111, 4112, 1, 0, 0, 0, 4112, 4114, 3, 702, 351, 0, 4113, 4110, 1, 0, 0, 0, 4113, 4114, 1, 0, 0, 0, 4114, 281, 1, 0, 0, 0, 4115, 4120, 3, 284, 142, 0, 4116, 4117, 5, 868, 0, 0, 4117, 4119, 3, 284, 142, 0, 4118, 4116, 1, 0, 0, 0, 4119, 4122, 1, 0, 0, 0, 4120, 4118, 1, 0, 0, 0, 4120, 4121, 1, 0, 0, 0, 4121, 283, 1, 0, 0, 0, 4122, 4120, 1, 0, 0, 0, 4123, 4140, 3, 658, 329, 0, 4124, 4125, 5, 65, 0, 0, 4125, 4141, 5, 256, 0, 0, 4126, 4138, 3, 722, 361, 0, 4127, 4128, 5, 257, 0, 0, 4128, 4130, 5, 882, 0, 0, 4129, 4131, 3, 286, 143, 0, 4130, 4129, 1, 0, 0, 0, 4130, 4131, 1, 0, 0, 0, 4131, 4133, 1, 0, 0, 0, 4132, 4134, 3, 288, 144, 0, 4133, 4132, 1, 0, 0, 0, 4133, 4134, 1, 0, 0, 0, 4134, 4139, 1, 0, 0, 0, 4135, 4136, 5, 60, 0, 0, 4136, 4137, 5, 257, 0, 0, 4137, 4139, 5, 882, 0, 0, 4138, 4127, 1, 0, 0, 0, 4138, 4135, 1, 0, 0, 0, 4139, 4141, 1, 0, 0, 0, 4140, 4124, 1, 0, 0, 0, 4140, 4126, 1, 0, 0, 0, 4141, 4153, 1, 0, 0, 0, 4142, 4144, 5, 255, 0, 0, 4143, 4145, 5, 257, 0, 0, 4144, 4143, 1, 0, 0, 0, 4144, 4145, 1, 0, 0, 0, 4145, 4146, 1, 0, 0, 0, 4146, 4147, 5, 882, 0, 0, 4147, 4148, 5, 337, 0, 0, 4148, 4149, 5, 866, 0, 0, 4149, 4150, 3, 282, 141, 0, 4150, 4151, 5, 867, 0, 0, 4151, 4153, 1, 0, 0, 0, 4152, 4123, 1, 0, 0, 0, 4152, 4142, 1, 0, 0, 0, 4153, 285, 1, 0, 0, 0, 4154, 4159, 5, 116, 0, 0, 4155, 4159, 5, 382, 0, 0, 4156, 4157, 5, 42, 0, 0, 4157, 4159, 3, 750, 375, 0, 4158, 4154, 1, 0, 0, 0, 4158, 4155, 1, 0, 0, 0, 4158, 4156, 1, 0, 0, 0, 4159, 4160, 1, 0, 0, 0, 4160, 4161, 5, 119, 0, 0, 4161, 4162, 5, 55, 0, 0, 4162, 287, 1, 0, 0, 0, 4163, 4168, 5, 116, 0, 0, 4164, 4168, 5, 382, 0, 0, 4165, 4166, 5, 42, 0, 0, 4166, 4168, 3, 750, 375, 0, 4167, 4163, 1, 0, 0, 0, 4167, 4164, 1, 0, 0, 0, 4167, 4165, 1, 0, 0, 0, 4168, 4169, 1, 0, 0, 0, 4169, 4170, 5, 119, 0, 0, 4170, 4171, 5, 382, 0, 0, 4171, 289, 1, 0, 0, 0, 4172, 4181, 7, 58, 0, 0, 4173, 4181, 5, 76, 0, 0, 4174, 4181, 5, 172, 0, 0, 4175, 4181, 5, 168, 0, 0, 4176, 4181, 5, 166, 0, 0, 4177, 4181, 5, 636, 0, 0, 4178, 4181, 7, 59, 0, 0, 4179, 4181, 5, 167, 0, 0, 4180, 4172, 1, 0, 0, 0, 4180, 4173, 1, 0, 0, 0, 4180, 4174, 1, 0, 0, 0, 4180, 4175, 1, 0, 0, 0, 4180, 4176, 1, 0, 0, 0, 4180, 4177, 1, 0, 0, 0, 4180, 4178, 1, 0, 0, 0, 4180, 4179, 1, 0, 0, 0, 4181, 291, 1, 0, 0, 0, 4182, 4185, 5, 850, 0, 0, 4183, 4185, 3, 294, 147, 0, 4184, 4182, 1, 0, 0, 0, 4184, 4183, 1, 0, 0, 0, 4185, 4190, 1, 0, 0, 0, 4186, 4187, 5, 868, 0, 0, 4187, 4189, 3, 294, 147, 0, 4188, 4186, 1, 0, 0, 0, 4189, 4192, 1, 0, 0, 0, 4190, 4188, 1, 0, 0, 0, 4190, 4191, 1, 0, 0, 0, 4191, 293, 1, 0, 0, 0, 4192, 4190, 1, 0, 0, 0, 4193, 4194, 5, 892, 0, 0, 4194, 4196, 5, 841, 0, 0, 4195, 4193, 1, 0, 0, 0, 4195, 4196, 1, 0, 0, 0, 4196, 4197, 1, 0, 0, 0, 4197, 4202, 3, 800, 400, 0, 4198, 4200, 5, 13, 0, 0, 4199, 4198, 1, 0, 0, 0, 4199, 4200, 1, 0, 0, 0, 4200, 4201, 1, 0, 0, 0, 4201, 4203, 3, 702, 351, 0, 4202, 4199, 1, 0, 0, 0, 4202, 4203, 1, 0, 0, 0, 4203, 4223, 1, 0, 0, 0, 4204, 4209, 3, 760, 380, 0, 4205, 4207, 5, 13, 0, 0, 4206, 4205, 1, 0, 0, 0, 4206, 4207, 1, 0, 0, 0, 4207, 4208, 1, 0, 0, 0, 4208, 4210, 3, 702, 351, 0, 4209, 4206, 1, 0, 0, 0, 4209, 4210, 1, 0, 0, 0, 4210, 4223, 1, 0, 0, 0, 4211, 4212, 3, 698, 349, 0, 4212, 4213, 5, 865, 0, 0, 4213, 4214, 5, 850, 0, 0, 4214, 4223, 1, 0, 0, 0, 4215, 4220, 3, 658, 329, 0, 4216, 4218, 5, 13, 0, 0, 4217, 4216, 1, 0, 0, 0, 4217, 4218, 1, 0, 0, 0, 4218, 4219, 1, 0, 0, 0, 4219, 4221, 3, 702, 351, 0, 4220, 4217, 1, 0, 0, 0, 4220, 4221, 1, 0, 0, 0, 4221, 4223, 1, 0, 0, 0, 4222, 4195, 1, 0, 0, 0, 4222, 4204, 1, 0, 0, 0, 4222, 4211, 1, 0, 0, 0, 4222, 4215, 1, 0, 0, 0, 4223, 295, 1, 0, 0, 0, 4224, 4225, 5, 88, 0, 0, 4225, 4230, 3, 230, 115, 0, 4226, 4227, 5, 868, 0, 0, 4227, 4229, 3, 230, 115, 0, 4228, 4226, 1, 0, 0, 0, 4229, 4232, 1, 0, 0, 0, 4230, 4228, 1, 0, 0, 0, 4230, 4231, 1, 0, 0, 0, 4231, 4261, 1, 0, 0, 0, 4232, 4230, 1, 0, 0, 0, 4233, 4234, 5, 88, 0, 0, 4234, 4235, 5, 372, 0, 0, 4235, 4261, 5, 882, 0, 0, 4236, 4237, 5, 88, 0, 0, 4237, 4238, 5, 128, 0, 0, 4238, 4242, 5, 882, 0, 0, 4239, 4240, 5, 26, 0, 0, 4240, 4241, 5, 155, 0, 0, 4241, 4243, 3, 684, 342, 0, 4242, 4239, 1, 0, 0, 0, 4242, 4243, 1, 0, 0, 0, 4243, 4250, 1, 0, 0, 0, 4244, 4246, 7, 46, 0, 0, 4245, 4247, 3, 298, 149, 0, 4246, 4245, 1, 0, 0, 0, 4247, 4248, 1, 0, 0, 0, 4248, 4246, 1, 0, 0, 0, 4248, 4249, 1, 0, 0, 0, 4249, 4251, 1, 0, 0, 0, 4250, 4244, 1, 0, 0, 0, 4250, 4251, 1, 0, 0, 0, 4251, 4258, 1, 0, 0, 0, 4252, 4254, 5, 102, 0, 0, 4253, 4255, 3, 300, 150, 0, 4254, 4253, 1, 0, 0, 0, 4255, 4256, 1, 0, 0, 0, 4256, 4254, 1, 0, 0, 0, 4256, 4257, 1, 0, 0, 0, 4257, 4259, 1, 0, 0, 0, 4258, 4252, 1, 0, 0, 0, 4258, 4259, 1, 0, 0, 0, 4259, 4261, 1, 0, 0, 0, 4260, 4224, 1, 0, 0, 0, 4260, 4233, 1, 0, 0, 0, 4260, 4236, 1, 0, 0, 0, 4261, 297, 1, 0, 0, 0, 4262, 4263, 5, 174, 0, 0, 4263, 4264, 5, 20, 0, 0, 4264, 4275, 5, 882, 0, 0, 4265, 4267, 5, 123, 0, 0, 4266, 4265, 1, 0, 0, 0, 4266, 4267, 1, 0, 0, 0, 4267, 4268, 1, 0, 0, 0, 4268, 4269, 5, 56, 0, 0, 4269, 4270, 5, 20, 0, 0, 4270, 4275, 5, 882, 0, 0, 4271, 4272, 5, 58, 0, 0, 4272, 4273, 5, 20, 0, 0, 4273, 4275, 5, 882, 0, 0, 4274, 4262, 1, 0, 0, 0, 4274, 4266, 1, 0, 0, 0, 4274, 4271, 1, 0, 0, 0, 4275, 299, 1, 0, 0, 0, 4276, 4277, 5, 171, 0, 0, 4277, 4278, 5, 20, 0, 0, 4278, 4283, 5, 882, 0, 0, 4279, 4280, 5, 174, 0, 0, 4280, 4281, 5, 20, 0, 0, 4281, 4283, 5, 882, 0, 0, 4282, 4276, 1, 0, 0, 0, 4282, 4279, 1, 0, 0, 0, 4283, 301, 1, 0, 0, 0, 4284, 4285, 5, 68, 0, 0, 4285, 4287, 3, 256, 128, 0, 4286, 4284, 1, 0, 0, 0, 4286, 4287, 1, 0, 0, 0, 4287, 4290, 1, 0, 0, 0, 4288, 4289, 5, 192, 0, 0, 4289, 4291, 3, 800, 400, 0, 4290, 4288, 1, 0, 0, 0, 4290, 4291, 1, 0, 0, 0, 4291, 303, 1, 0, 0, 0, 4292, 4293, 5, 74, 0, 0, 4293, 4294, 5, 20, 0, 0, 4294, 4299, 3, 310, 155, 0, 4295, 4296, 5, 868, 0, 0, 4296, 4298, 3, 310, 155, 0, 4297, 4295, 1, 0, 0, 0, 4298, 4301, 1, 0, 0, 0, 4299, 4297, 1, 0, 0, 0, 4299, 4300, 1, 0, 0, 0, 4300, 4304, 1, 0, 0, 0, 4301, 4299, 1, 0, 0, 0, 4302, 4303, 5, 194, 0, 0, 4303, 4305, 5, 584, 0, 0, 4304, 4302, 1, 0, 0, 0, 4304, 4305, 1, 0, 0, 0, 4305, 305, 1, 0, 0, 0, 4306, 4307, 5, 75, 0, 0, 4307, 4308, 3, 800, 400, 0, 4308, 307, 1, 0, 0, 0, 4309, 4310, 5, 689, 0, 0, 4310, 4311, 3, 778, 389, 0, 4311, 4312, 5, 13, 0, 0, 4312, 4313, 5, 866, 0, 0, 4313, 4314, 3, 776, 388, 0, 4314, 4324, 5, 867, 0, 0, 4315, 4316, 5, 868, 0, 0, 4316, 4317, 3, 778, 389, 0, 4317, 4318, 5, 13, 0, 0, 4318, 4319, 5, 866, 0, 0, 4319, 4320, 3, 776, 388, 0, 4320, 4321, 5, 867, 0, 0, 4321, 4323, 1, 0, 0, 0, 4322, 4315, 1, 0, 0, 0, 4323, 4326, 1, 0, 0, 0, 4324, 4322, 1, 0, 0, 0, 4324, 4325, 1, 0, 0, 0, 4325, 309, 1, 0, 0, 0, 4326, 4324, 1, 0, 0, 0, 4327, 4329, 3, 800, 400, 0, 4328, 4330, 7, 54, 0, 0, 4329, 4328, 1, 0, 0, 0, 4329, 4330, 1, 0, 0, 0, 4330, 311, 1, 0, 0, 0, 4331, 4342, 5, 100, 0, 0, 4332, 4333, 3, 314, 157, 0, 4333, 4334, 5, 868, 0, 0, 4334, 4336, 1, 0, 0, 0, 4335, 4332, 1, 0, 0, 0, 4335, 4336, 1, 0, 0, 0, 4336, 4337, 1, 0, 0, 0, 4337, 4343, 3, 314, 157, 0, 4338, 4339, 3, 314, 157, 0, 4339, 4340, 5, 509, 0, 0, 4340, 4341, 3, 314, 157, 0, 4341, 4343, 1, 0, 0, 0, 4342, 4335, 1, 0, 0, 0, 4342, 4338, 1, 0, 0, 0, 4343, 313, 1, 0, 0, 0, 4344, 4348, 3, 708, 354, 0, 4345, 4348, 3, 682, 341, 0, 4346, 4348, 3, 704, 352, 0, 4347, 4344, 1, 0, 0, 0, 4347, 4345, 1, 0, 0, 0, 4347, 4346, 1, 0, 0, 0, 4348, 315, 1, 0, 0, 0, 4349, 4350, 5, 640, 0, 0, 4350, 4359, 5, 664, 0, 0, 4351, 4356, 3, 338, 169, 0, 4352, 4353, 5, 868, 0, 0, 4353, 4355, 3, 338, 169, 0, 4354, 4352, 1, 0, 0, 0, 4355, 4358, 1, 0, 0, 0, 4356, 4354, 1, 0, 0, 0, 4356, 4357, 1, 0, 0, 0, 4357, 4360, 1, 0, 0, 0, 4358, 4356, 1, 0, 0, 0, 4359, 4351, 1, 0, 0, 0, 4359, 4360, 1, 0, 0, 0, 4360, 317, 1, 0, 0, 0, 4361, 4363, 5, 317, 0, 0, 4362, 4364, 5, 691, 0, 0, 4363, 4362, 1, 0, 0, 0, 4363, 4364, 1, 0, 0, 0, 4364, 319, 1, 0, 0, 0, 4365, 4367, 5, 341, 0, 0, 4366, 4368, 5, 691, 0, 0, 4367, 4366, 1, 0, 0, 0, 4367, 4368, 1, 0, 0, 0, 4368, 4374, 1, 0, 0, 0, 4369, 4371, 5, 11, 0, 0, 4370, 4372, 5, 502, 0, 0, 4371, 4370, 1, 0, 0, 0, 4371, 4372, 1, 0, 0, 0, 4372, 4373, 1, 0, 0, 0, 4373, 4375, 5, 326, 0, 0, 4374, 4369, 1, 0, 0, 0, 4374, 4375, 1, 0, 0, 0, 4375, 4380, 1, 0, 0, 0, 4376, 4378, 5, 502, 0, 0, 4377, 4376, 1, 0, 0, 0, 4377, 4378, 1, 0, 0, 0, 4378, 4379, 1, 0, 0, 0, 4379, 4381, 5, 140, 0, 0, 4380, 4377, 1, 0, 0, 0, 4380, 4381, 1, 0, 0, 0, 4381, 321, 1, 0, 0, 0, 4382, 4384, 5, 583, 0, 0, 4383, 4385, 5, 691, 0, 0, 4384, 4383, 1, 0, 0, 0, 4384, 4385, 1, 0, 0, 0, 4385, 4391, 1, 0, 0, 0, 4386, 4388, 5, 11, 0, 0, 4387, 4389, 5, 502, 0, 0, 4388, 4387, 1, 0, 0, 0, 4388, 4389, 1, 0, 0, 0, 4389, 4390, 1, 0, 0, 0, 4390, 4392, 5, 326, 0, 0, 4391, 4386, 1, 0, 0, 0, 4391, 4392, 1, 0, 0, 0, 4392, 4397, 1, 0, 0, 0, 4393, 4395, 5, 502, 0, 0, 4394, 4393, 1, 0, 0, 0, 4394, 4395, 1, 0, 0, 0, 4395, 4396, 1, 0, 0, 0, 4396, 4398, 5, 140, 0, 0, 4397, 4394, 1, 0, 0, 0, 4397, 4398, 1, 0, 0, 0, 4398, 323, 1, 0, 0, 0, 4399, 4400, 5, 589, 0, 0, 4400, 4401, 3, 702, 351, 0, 4401, 325, 1, 0, 0, 0, 4402, 4404, 5, 583, 0, 0, 4403, 4405, 5, 691, 0, 0, 4404, 4403, 1, 0, 0, 0, 4404, 4405, 1, 0, 0, 0, 4405, 4406, 1, 0, 0, 0, 4406, 4408, 5, 176, 0, 0, 4407, 4409, 5, 589, 0, 0, 4408, 4407, 1, 0, 0, 0, 4408, 4409, 1, 0, 0, 0, 4409, 4410, 1, 0, 0, 0, 4410, 4411, 3, 702, 351, 0, 4411, 327, 1, 0, 0, 0, 4412, 4413, 5, 140, 0, 0, 4413, 4414, 5, 589, 0, 0, 4414, 4415, 3, 702, 351, 0, 4415, 329, 1, 0, 0, 0, 4416, 4417, 5, 104, 0, 0, 4417, 4418, 7, 60, 0, 0, 4418, 4423, 3, 340, 170, 0, 4419, 4420, 5, 868, 0, 0, 4420, 4422, 3, 340, 170, 0, 4421, 4419, 1, 0, 0, 0, 4422, 4425, 1, 0, 0, 0, 4423, 4421, 1, 0, 0, 0, 4423, 4424, 1, 0, 0, 0, 4424, 331, 1, 0, 0, 0, 4425, 4423, 1, 0, 0, 0, 4426, 4427, 5, 183, 0, 0, 4427, 4428, 5, 752, 0, 0, 4428, 333, 1, 0, 0, 0, 4429, 4430, 5, 155, 0, 0, 4430, 4431, 5, 313, 0, 0, 4431, 4432, 5, 857, 0, 0, 4432, 4433, 7, 25, 0, 0, 4433, 335, 1, 0, 0, 0, 4434, 4436, 5, 155, 0, 0, 4435, 4437, 7, 61, 0, 0, 4436, 4435, 1, 0, 0, 0, 4436, 4437, 1, 0, 0, 0, 4437, 4438, 1, 0, 0, 0, 4438, 4439, 5, 664, 0, 0, 4439, 4444, 3, 344, 172, 0, 4440, 4441, 5, 868, 0, 0, 4441, 4443, 3, 344, 172, 0, 4442, 4440, 1, 0, 0, 0, 4443, 4446, 1, 0, 0, 0, 4444, 4442, 1, 0, 0, 0, 4444, 4445, 1, 0, 0, 0, 4445, 337, 1, 0, 0, 0, 4446, 4444, 1, 0, 0, 0, 4447, 4448, 5, 194, 0, 0, 4448, 4449, 5, 350, 0, 0, 4449, 4455, 5, 600, 0, 0, 4450, 4451, 5, 135, 0, 0, 4451, 4455, 5, 195, 0, 0, 4452, 4453, 5, 135, 0, 0, 4453, 4455, 5, 515, 0, 0, 4454, 4447, 1, 0, 0, 0, 4454, 4450, 1, 0, 0, 0, 4454, 4452, 1, 0, 0, 0, 4455, 339, 1, 0, 0, 0, 4456, 4461, 3, 648, 324, 0, 4457, 4459, 5, 13, 0, 0, 4458, 4457, 1, 0, 0, 0, 4458, 4459, 1, 0, 0, 0, 4459, 4460, 1, 0, 0, 0, 4460, 4462, 3, 702, 351, 0, 4461, 4458, 1, 0, 0, 0, 4461, 4462, 1, 0, 0, 0, 4462, 4463, 1, 0, 0, 0, 4463, 4464, 3, 342, 171, 0, 4464, 341, 1, 0, 0, 0, 4465, 4467, 5, 135, 0, 0, 4466, 4468, 5, 450, 0, 0, 4467, 4466, 1, 0, 0, 0, 4467, 4468, 1, 0, 0, 0, 4468, 4474, 1, 0, 0, 0, 4469, 4471, 5, 107, 0, 0, 4470, 4469, 1, 0, 0, 0, 4470, 4471, 1, 0, 0, 0, 4471, 4472, 1, 0, 0, 0, 4472, 4474, 5, 195, 0, 0, 4473, 4465, 1, 0, 0, 0, 4473, 4470, 1, 0, 0, 0, 4474, 343, 1, 0, 0, 0, 4475, 4476, 5, 440, 0, 0, 4476, 4477, 5, 448, 0, 0, 4477, 4483, 3, 346, 173, 0, 4478, 4479, 5, 135, 0, 0, 4479, 4483, 5, 195, 0, 0, 4480, 4481, 5, 135, 0, 0, 4481, 4483, 5, 515, 0, 0, 4482, 4475, 1, 0, 0, 0, 4482, 4478, 1, 0, 0, 0, 4482, 4480, 1, 0, 0, 0, 4483, 345, 1, 0, 0, 0, 4484, 4485, 5, 809, 0, 0, 4485, 4492, 5, 135, 0, 0, 4486, 4487, 5, 135, 0, 0, 4487, 4492, 5, 810, 0, 0, 4488, 4489, 5, 135, 0, 0, 4489, 4492, 5, 811, 0, 0, 4490, 4492, 5, 812, 0, 0, 4491, 4484, 1, 0, 0, 0, 4491, 4486, 1, 0, 0, 0, 4491, 4488, 1, 0, 0, 0, 4491, 4490, 1, 0, 0, 0, 4492, 347, 1, 0, 0, 0, 4493, 4494, 5, 25, 0, 0, 4494, 4495, 5, 453, 0, 0, 4495, 4496, 5, 176, 0, 0, 4496, 4501, 3, 364, 182, 0, 4497, 4498, 5, 868, 0, 0, 4498, 4500, 3, 364, 182, 0, 4499, 4497, 1, 0, 0, 0, 4500, 4503, 1, 0, 0, 0, 4501, 4499, 1, 0, 0, 0, 4501, 4502, 1, 0, 0, 0, 4502, 4505, 1, 0, 0, 0, 4503, 4501, 1, 0, 0, 0, 4504, 4506, 3, 384, 192, 0, 4505, 4504, 1, 0, 0, 0, 4505, 4506, 1, 0, 0, 0, 4506, 349, 1, 0, 0, 0, 4507, 4508, 5, 25, 0, 0, 4508, 4509, 5, 572, 0, 0, 4509, 4510, 5, 400, 0, 0, 4510, 4515, 3, 386, 193, 0, 4511, 4512, 5, 868, 0, 0, 4512, 4514, 3, 386, 193, 0, 4513, 4511, 1, 0, 0, 0, 4514, 4517, 1, 0, 0, 0, 4515, 4513, 1, 0, 0, 0, 4515, 4516, 1, 0, 0, 0, 4516, 4519, 1, 0, 0, 0, 4517, 4515, 1, 0, 0, 0, 4518, 4520, 3, 384, 192, 0, 4519, 4518, 1, 0, 0, 0, 4519, 4520, 1, 0, 0, 0, 4520, 351, 1, 0, 0, 0, 4521, 4522, 5, 25, 0, 0, 4522, 4523, 5, 572, 0, 0, 4523, 4524, 5, 605, 0, 0, 4524, 4525, 5, 176, 0, 0, 4525, 4530, 3, 374, 187, 0, 4526, 4527, 5, 868, 0, 0, 4527, 4529, 3, 374, 187, 0, 4528, 4526, 1, 0, 0, 0, 4529, 4532, 1, 0, 0, 0, 4530, 4528, 1, 0, 0, 0, 4530, 4531, 1, 0, 0, 0, 4531, 4534, 1, 0, 0, 0, 4532, 4530, 1, 0, 0, 0, 4533, 4535, 3, 384, 192, 0, 4534, 4533, 1, 0, 0, 0, 4534, 4535, 1, 0, 0, 0, 4535, 353, 1, 0, 0, 0, 4536, 4537, 5, 133, 0, 0, 4537, 4538, 7, 62, 0, 0, 4538, 4543, 5, 452, 0, 0, 4539, 4540, 5, 176, 0, 0, 4540, 4544, 5, 882, 0, 0, 4541, 4542, 5, 16, 0, 0, 4542, 4544, 5, 882, 0, 0, 4543, 4539, 1, 0, 0, 0, 4543, 4541, 1, 0, 0, 0, 4544, 355, 1, 0, 0, 0, 4545, 4546, 5, 640, 0, 0, 4546, 4555, 7, 63, 0, 0, 4547, 4552, 3, 390, 195, 0, 4548, 4549, 5, 868, 0, 0, 4549, 4551, 3, 390, 195, 0, 4550, 4548, 1, 0, 0, 0, 4551, 4554, 1, 0, 0, 0, 4552, 4550, 1, 0, 0, 0, 4552, 4553, 1, 0, 0, 0, 4553, 4556, 1, 0, 0, 0, 4554, 4552, 1, 0, 0, 0, 4555, 4547, 1, 0, 0, 0, 4555, 4556, 1, 0, 0, 0, 4556, 4559, 1, 0, 0, 0, 4557, 4558, 5, 676, 0, 0, 4558, 4560, 3, 392, 196, 0, 4559, 4557, 1, 0, 0, 0, 4559, 4560, 1, 0, 0, 0, 4560, 4564, 1, 0, 0, 0, 4561, 4563, 3, 394, 197, 0, 4562, 4561, 1, 0, 0, 0, 4563, 4566, 1, 0, 0, 0, 4564, 4562, 1, 0, 0, 0, 4564, 4565, 1, 0, 0, 0, 4565, 4568, 1, 0, 0, 0, 4566, 4564, 1, 0, 0, 0, 4567, 4569, 3, 384, 192, 0, 4568, 4567, 1, 0, 0, 0, 4568, 4569, 1, 0, 0, 0, 4569, 357, 1, 0, 0, 0, 4570, 4571, 5, 646, 0, 0, 4571, 4580, 7, 63, 0, 0, 4572, 4577, 3, 390, 195, 0, 4573, 4574, 5, 868, 0, 0, 4574, 4576, 3, 390, 195, 0, 4575, 4573, 1, 0, 0, 0, 4576, 4579, 1, 0, 0, 0, 4577, 4575, 1, 0, 0, 0, 4577, 4578, 1, 0, 0, 0, 4578, 4581, 1, 0, 0, 0, 4579, 4577, 1, 0, 0, 0, 4580, 4572, 1, 0, 0, 0, 4580, 4581, 1, 0, 0, 0, 4581, 4583, 1, 0, 0, 0, 4582, 4584, 3, 384, 192, 0, 4583, 4582, 1, 0, 0, 0, 4583, 4584, 1, 0, 0, 0, 4584, 359, 1, 0, 0, 0, 4585, 4586, 5, 640, 0, 0, 4586, 4590, 5, 415, 0, 0, 4587, 4588, 5, 678, 0, 0, 4588, 4589, 5, 857, 0, 0, 4589, 4591, 5, 882, 0, 0, 4590, 4587, 1, 0, 0, 0, 4590, 4591, 1, 0, 0, 0, 4591, 4596, 1, 0, 0, 0, 4592, 4593, 5, 868, 0, 0, 4593, 4594, 5, 529, 0, 0, 4594, 4595, 5, 857, 0, 0, 4595, 4597, 5, 882, 0, 0, 4596, 4592, 1, 0, 0, 0, 4596, 4597, 1, 0, 0, 0, 4597, 4602, 1, 0, 0, 0, 4598, 4599, 5, 868, 0, 0, 4599, 4600, 5, 363, 0, 0, 4600, 4601, 5, 857, 0, 0, 4601, 4603, 5, 882, 0, 0, 4602, 4598, 1, 0, 0, 0, 4602, 4603, 1, 0, 0, 0, 4603, 361, 1, 0, 0, 0, 4604, 4605, 5, 646, 0, 0, 4605, 4606, 5, 415, 0, 0, 4606, 363, 1, 0, 0, 0, 4607, 4608, 3, 366, 183, 0, 4608, 4609, 5, 857, 0, 0, 4609, 4610, 5, 882, 0, 0, 4610, 4635, 1, 0, 0, 0, 4611, 4612, 3, 368, 184, 0, 4612, 4613, 5, 857, 0, 0, 4613, 4614, 3, 708, 354, 0, 4614, 4635, 1, 0, 0, 0, 4615, 4616, 3, 370, 185, 0, 4616, 4617, 5, 857, 0, 0, 4617, 4618, 7, 25, 0, 0, 4618, 4635, 1, 0, 0, 0, 4619, 4635, 3, 372, 186, 0, 4620, 4621, 5, 424, 0, 0, 4621, 4622, 5, 857, 0, 0, 4622, 4631, 5, 866, 0, 0, 4623, 4628, 3, 702, 351, 0, 4624, 4625, 5, 868, 0, 0, 4625, 4627, 3, 702, 351, 0, 4626, 4624, 1, 0, 0, 0, 4627, 4630, 1, 0, 0, 0, 4628, 4626, 1, 0, 0, 0, 4628, 4629, 1, 0, 0, 0, 4629, 4632, 1, 0, 0, 0, 4630, 4628, 1, 0, 0, 0, 4631, 4623, 1, 0, 0, 0, 4631, 4632, 1, 0, 0, 0, 4632, 4633, 1, 0, 0, 0, 4633, 4635, 5, 867, 0, 0, 4634, 4607, 1, 0, 0, 0, 4634, 4611, 1, 0, 0, 0, 4634, 4615, 1, 0, 0, 0, 4634, 4619, 1, 0, 0, 0, 4634, 4620, 1, 0, 0, 0, 4635, 365, 1, 0, 0, 0, 4636, 4637, 7, 64, 0, 0, 4637, 367, 1, 0, 0, 0, 4638, 4639, 7, 65, 0, 0, 4639, 369, 1, 0, 0, 0, 4640, 4641, 7, 66, 0, 0, 4641, 371, 1, 0, 0, 0, 4642, 4643, 5, 543, 0, 0, 4643, 4644, 5, 857, 0, 0, 4644, 4656, 7, 67, 0, 0, 4645, 4646, 5, 574, 0, 0, 4646, 4647, 5, 857, 0, 0, 4647, 4656, 7, 68, 0, 0, 4648, 4649, 5, 310, 0, 0, 4649, 4653, 5, 857, 0, 0, 4650, 4654, 5, 507, 0, 0, 4651, 4654, 5, 450, 0, 0, 4652, 4654, 3, 396, 198, 0, 4653, 4650, 1, 0, 0, 0, 4653, 4651, 1, 0, 0, 0, 4653, 4652, 1, 0, 0, 0, 4654, 4656, 1, 0, 0, 0, 4655, 4642, 1, 0, 0, 0, 4655, 4645, 1, 0, 0, 0, 4655, 4648, 1, 0, 0, 0, 4656, 373, 1, 0, 0, 0, 4657, 4658, 3, 376, 188, 0, 4658, 4659, 5, 857, 0, 0, 4659, 4660, 5, 882, 0, 0, 4660, 4685, 1, 0, 0, 0, 4661, 4662, 3, 378, 189, 0, 4662, 4663, 5, 857, 0, 0, 4663, 4664, 3, 708, 354, 0, 4664, 4685, 1, 0, 0, 0, 4665, 4666, 3, 380, 190, 0, 4666, 4667, 5, 857, 0, 0, 4667, 4668, 7, 25, 0, 0, 4668, 4685, 1, 0, 0, 0, 4669, 4685, 3, 382, 191, 0, 4670, 4671, 5, 424, 0, 0, 4671, 4672, 5, 857, 0, 0, 4672, 4681, 5, 866, 0, 0, 4673, 4678, 3, 702, 351, 0, 4674, 4675, 5, 868, 0, 0, 4675, 4677, 3, 702, 351, 0, 4676, 4674, 1, 0, 0, 0, 4677, 4680, 1, 0, 0, 0, 4678, 4676, 1, 0, 0, 0, 4678, 4679, 1, 0, 0, 0, 4679, 4682, 1, 0, 0, 0, 4680, 4678, 1, 0, 0, 0, 4681, 4673, 1, 0, 0, 0, 4681, 4682, 1, 0, 0, 0, 4682, 4683, 1, 0, 0, 0, 4683, 4685, 5, 867, 0, 0, 4684, 4657, 1, 0, 0, 0, 4684, 4661, 1, 0, 0, 0, 4684, 4665, 1, 0, 0, 0, 4684, 4669, 1, 0, 0, 0, 4684, 4670, 1, 0, 0, 0, 4685, 375, 1, 0, 0, 0, 4686, 4687, 7, 69, 0, 0, 4687, 377, 1, 0, 0, 0, 4688, 4689, 7, 70, 0, 0, 4689, 379, 1, 0, 0, 0, 4690, 4691, 7, 71, 0, 0, 4691, 381, 1, 0, 0, 0, 4692, 4693, 5, 543, 0, 0, 4693, 4694, 5, 857, 0, 0, 4694, 4706, 7, 67, 0, 0, 4695, 4696, 5, 574, 0, 0, 4696, 4697, 5, 857, 0, 0, 4697, 4706, 7, 72, 0, 0, 4698, 4699, 5, 310, 0, 0, 4699, 4703, 5, 857, 0, 0, 4700, 4704, 5, 507, 0, 0, 4701, 4704, 5, 450, 0, 0, 4702, 4704, 3, 396, 198, 0, 4703, 4700, 1, 0, 0, 0, 4703, 4701, 1, 0, 0, 0, 4703, 4702, 1, 0, 0, 0, 4704, 4706, 1, 0, 0, 0, 4705, 4692, 1, 0, 0, 0, 4705, 4695, 1, 0, 0, 0, 4705, 4698, 1, 0, 0, 0, 4706, 383, 1, 0, 0, 0, 4707, 4708, 5, 65, 0, 0, 4708, 4709, 5, 328, 0, 0, 4709, 4710, 5, 882, 0, 0, 4710, 385, 1, 0, 0, 0, 4711, 4712, 5, 565, 0, 0, 4712, 4713, 5, 857, 0, 0, 4713, 4714, 5, 866, 0, 0, 4714, 4719, 3, 624, 312, 0, 4715, 4716, 5, 868, 0, 0, 4716, 4718, 3, 624, 312, 0, 4717, 4715, 1, 0, 0, 0, 4718, 4721, 1, 0, 0, 0, 4719, 4717, 1, 0, 0, 0, 4719, 4720, 1, 0, 0, 0, 4720, 4722, 1, 0, 0, 0, 4721, 4719, 1, 0, 0, 0, 4722, 4723, 5, 867, 0, 0, 4723, 4775, 1, 0, 0, 0, 4724, 4725, 5, 567, 0, 0, 4725, 4726, 5, 857, 0, 0, 4726, 4727, 5, 866, 0, 0, 4727, 4732, 3, 624, 312, 0, 4728, 4729, 5, 868, 0, 0, 4729, 4731, 3, 624, 312, 0, 4730, 4728, 1, 0, 0, 0, 4731, 4734, 1, 0, 0, 0, 4732, 4730, 1, 0, 0, 0, 4732, 4733, 1, 0, 0, 0, 4733, 4735, 1, 0, 0, 0, 4734, 4732, 1, 0, 0, 0, 4735, 4736, 5, 867, 0, 0, 4736, 4775, 1, 0, 0, 0, 4737, 4738, 5, 566, 0, 0, 4738, 4739, 5, 857, 0, 0, 4739, 4740, 5, 866, 0, 0, 4740, 4741, 3, 646, 323, 0, 4741, 4742, 5, 867, 0, 0, 4742, 4775, 1, 0, 0, 0, 4743, 4744, 5, 568, 0, 0, 4744, 4745, 5, 857, 0, 0, 4745, 4746, 5, 866, 0, 0, 4746, 4747, 3, 646, 323, 0, 4747, 4748, 5, 867, 0, 0, 4748, 4775, 1, 0, 0, 0, 4749, 4750, 5, 570, 0, 0, 4750, 4751, 5, 857, 0, 0, 4751, 4752, 5, 866, 0, 0, 4752, 4753, 3, 746, 373, 0, 4753, 4754, 5, 867, 0, 0, 4754, 4775, 1, 0, 0, 0, 4755, 4756, 5, 571, 0, 0, 4756, 4757, 5, 857, 0, 0, 4757, 4758, 5, 866, 0, 0, 4758, 4759, 3, 746, 373, 0, 4759, 4760, 5, 867, 0, 0, 4760, 4775, 1, 0, 0, 0, 4761, 4762, 5, 569, 0, 0, 4762, 4763, 5, 857, 0, 0, 4763, 4764, 5, 866, 0, 0, 4764, 4769, 3, 388, 194, 0, 4765, 4766, 5, 868, 0, 0, 4766, 4768, 3, 388, 194, 0, 4767, 4765, 1, 0, 0, 0, 4768, 4771, 1, 0, 0, 0, 4769, 4767, 1, 0, 0, 0, 4769, 4770, 1, 0, 0, 0, 4770, 4772, 1, 0, 0, 0, 4771, 4769, 1, 0, 0, 0, 4772, 4773, 5, 867, 0, 0, 4773, 4775, 1, 0, 0, 0, 4774, 4711, 1, 0, 0, 0, 4774, 4724, 1, 0, 0, 0, 4774, 4737, 1, 0, 0, 0, 4774, 4743, 1, 0, 0, 0, 4774, 4749, 1, 0, 0, 0, 4774, 4755, 1, 0, 0, 0, 4774, 4761, 1, 0, 0, 0, 4775, 387, 1, 0, 0, 0, 4776, 4777, 5, 866, 0, 0, 4777, 4778, 3, 648, 324, 0, 4778, 4779, 5, 868, 0, 0, 4779, 4780, 3, 648, 324, 0, 4780, 4781, 5, 867, 0, 0, 4781, 389, 1, 0, 0, 0, 4782, 4783, 7, 73, 0, 0, 4783, 391, 1, 0, 0, 0, 4784, 4785, 7, 74, 0, 0, 4785, 4786, 5, 857, 0, 0, 4786, 4810, 3, 396, 198, 0, 4787, 4788, 5, 460, 0, 0, 4788, 4789, 5, 857, 0, 0, 4789, 4790, 5, 882, 0, 0, 4790, 4791, 5, 868, 0, 0, 4791, 4792, 5, 461, 0, 0, 4792, 4793, 5, 857, 0, 0, 4793, 4810, 3, 708, 354, 0, 4794, 4795, 5, 611, 0, 0, 4795, 4796, 5, 857, 0, 0, 4796, 4797, 5, 882, 0, 0, 4797, 4798, 5, 868, 0, 0, 4798, 4799, 5, 612, 0, 0, 4799, 4800, 5, 857, 0, 0, 4800, 4810, 3, 708, 354, 0, 4801, 4802, 5, 557, 0, 0, 4802, 4803, 5, 857, 0, 0, 4803, 4804, 5, 882, 0, 0, 4804, 4805, 5, 868, 0, 0, 4805, 4806, 5, 558, 0, 0, 4806, 4807, 5, 857, 0, 0, 4807, 4810, 3, 708, 354, 0, 4808, 4810, 5, 634, 0, 0, 4809, 4784, 1, 0, 0, 0, 4809, 4787, 1, 0, 0, 0, 4809, 4794, 1, 0, 0, 0, 4809, 4801, 1, 0, 0, 0, 4809, 4808, 1, 0, 0, 0, 4810, 393, 1, 0, 0, 0, 4811, 4812, 5, 678, 0, 0, 4812, 4813, 5, 857, 0, 0, 4813, 4824, 5, 882, 0, 0, 4814, 4815, 5, 529, 0, 0, 4815, 4816, 5, 857, 0, 0, 4816, 4824, 5, 882, 0, 0, 4817, 4818, 5, 363, 0, 0, 4818, 4819, 5, 857, 0, 0, 4819, 4824, 5, 882, 0, 0, 4820, 4821, 5, 535, 0, 0, 4821, 4822, 5, 857, 0, 0, 4822, 4824, 5, 882, 0, 0, 4823, 4811, 1, 0, 0, 0, 4823, 4814, 1, 0, 0, 0, 4823, 4817, 1, 0, 0, 0, 4823, 4820, 1, 0, 0, 0, 4824, 395, 1, 0, 0, 0, 4825, 4830, 3, 692, 346, 0, 4826, 4827, 5, 868, 0, 0, 4827, 4829, 3, 692, 346, 0, 4828, 4826, 1, 0, 0, 0, 4829, 4832, 1, 0, 0, 0, 4830, 4828, 1, 0, 0, 0, 4830, 4831, 1, 0, 0, 0, 4831, 4835, 1, 0, 0, 0, 4832, 4830, 1, 0, 0, 0, 4833, 4835, 5, 882, 0, 0, 4834, 4825, 1, 0, 0, 0, 4834, 4833, 1, 0, 0, 0, 4835, 397, 1, 0, 0, 0, 4836, 4837, 5, 694, 0, 0, 4837, 4838, 7, 75, 0, 0, 4838, 4840, 3, 694, 347, 0, 4839, 4841, 7, 76, 0, 0, 4840, 4839, 1, 0, 0, 0, 4840, 4841, 1, 0, 0, 0, 4841, 399, 1, 0, 0, 0, 4842, 4843, 5, 694, 0, 0, 4843, 4844, 5, 378, 0, 0, 4844, 4850, 3, 694, 347, 0, 4845, 4848, 5, 654, 0, 0, 4846, 4847, 5, 65, 0, 0, 4847, 4849, 5, 489, 0, 0, 4848, 4846, 1, 0, 0, 0, 4848, 4849, 1, 0, 0, 0, 4849, 4851, 1, 0, 0, 0, 4850, 4845, 1, 0, 0, 0, 4850, 4851, 1, 0, 0, 0, 4851, 401, 1, 0, 0, 0, 4852, 4853, 5, 694, 0, 0, 4853, 4854, 5, 540, 0, 0, 4854, 4855, 3, 694, 347, 0, 4855, 403, 1, 0, 0, 0, 4856, 4857, 5, 694, 0, 0, 4857, 4858, 5, 341, 0, 0, 4858, 4861, 3, 694, 347, 0, 4859, 4860, 5, 513, 0, 0, 4860, 4862, 5, 533, 0, 0, 4861, 4859, 1, 0, 0, 0, 4861, 4862, 1, 0, 0, 0, 4862, 405, 1, 0, 0, 0, 4863, 4864, 5, 694, 0, 0, 4864, 4865, 5, 583, 0, 0, 4865, 4866, 3, 694, 347, 0, 4866, 407, 1, 0, 0, 0, 4867, 4868, 5, 694, 0, 0, 4868, 4871, 5, 551, 0, 0, 4869, 4870, 5, 33, 0, 0, 4870, 4872, 3, 694, 347, 0, 4871, 4869, 1, 0, 0, 0, 4871, 4872, 1, 0, 0, 0, 4872, 409, 1, 0, 0, 0, 4873, 4874, 5, 540, 0, 0, 4874, 4875, 3, 702, 351, 0, 4875, 4878, 5, 68, 0, 0, 4876, 4879, 5, 882, 0, 0, 4877, 4879, 5, 892, 0, 0, 4878, 4876, 1, 0, 0, 0, 4878, 4877, 1, 0, 0, 0, 4879, 411, 1, 0, 0, 0, 4880, 4881, 5, 717, 0, 0, 4881, 4884, 3, 702, 351, 0, 4882, 4883, 5, 188, 0, 0, 4883, 4885, 3, 748, 374, 0, 4884, 4882, 1, 0, 0, 0, 4884, 4885, 1, 0, 0, 0, 4885, 413, 1, 0, 0, 0, 4886, 4887, 7, 77, 0, 0, 4887, 4888, 5, 540, 0, 0, 4888, 4889, 3, 702, 351, 0, 4889, 415, 1, 0, 0, 0, 4890, 4893, 3, 418, 209, 0, 4891, 4893, 3, 4, 2, 0, 4892, 4890, 1, 0, 0, 0, 4892, 4891, 1, 0, 0, 0, 4893, 417, 1, 0, 0, 0, 4894, 4895, 3, 702, 351, 0, 4895, 4896, 5, 878, 0, 0, 4896, 4898, 1, 0, 0, 0, 4897, 4894, 1, 0, 0, 0, 4897, 4898, 1, 0, 0, 0, 4898, 4899, 1, 0, 0, 0, 4899, 4905, 5, 317, 0, 0, 4900, 4901, 3, 438, 219, 0, 4901, 4902, 5, 869, 0, 0, 4902, 4904, 1, 0, 0, 0, 4903, 4900, 1, 0, 0, 0, 4904, 4907, 1, 0, 0, 0, 4905, 4903, 1, 0, 0, 0, 4905, 4906, 1, 0, 0, 0, 4906, 4913, 1, 0, 0, 0, 4907, 4905, 1, 0, 0, 0, 4908, 4909, 3, 440, 220, 0, 4909, 4910, 5, 869, 0, 0, 4910, 4912, 1, 0, 0, 0, 4911, 4908, 1, 0, 0, 0, 4912, 4915, 1, 0, 0, 0, 4913, 4911, 1, 0, 0, 0, 4913, 4914, 1, 0, 0, 0, 4914, 4921, 1, 0, 0, 0, 4915, 4913, 1, 0, 0, 0, 4916, 4917, 3, 442, 221, 0, 4917, 4918, 5, 869, 0, 0, 4918, 4920, 1, 0, 0, 0, 4919, 4916, 1, 0, 0, 0, 4920, 4923, 1, 0, 0, 0, 4921, 4919, 1, 0, 0, 0, 4921, 4922, 1, 0, 0, 0, 4922, 4929, 1, 0, 0, 0, 4923, 4921, 1, 0, 0, 0, 4924, 4925, 3, 444, 222, 0, 4925, 4926, 5, 869, 0, 0, 4926, 4928, 1, 0, 0, 0, 4927, 4924, 1, 0, 0, 0, 4928, 4931, 1, 0, 0, 0, 4929, 4927, 1, 0, 0, 0, 4929, 4930, 1, 0, 0, 0, 4930, 4935, 1, 0, 0, 0, 4931, 4929, 1, 0, 0, 0, 4932, 4934, 3, 448, 224, 0, 4933, 4932, 1, 0, 0, 0, 4934, 4937, 1, 0, 0, 0, 4935, 4933, 1, 0, 0, 0, 4935, 4936, 1, 0, 0, 0, 4936, 4938, 1, 0, 0, 0, 4937, 4935, 1, 0, 0, 0, 4938, 4940, 5, 378, 0, 0, 4939, 4941, 3, 702, 351, 0, 4940, 4939, 1, 0, 0, 0, 4940, 4941, 1, 0, 0, 0, 4941, 419, 1, 0, 0, 0, 4942, 4945, 5, 23, 0, 0, 4943, 4946, 3, 702, 351, 0, 4944, 4946, 3, 800, 400, 0, 4945, 4943, 1, 0, 0, 0, 4945, 4944, 1, 0, 0, 0, 4945, 4946, 1, 0, 0, 0, 4946, 4948, 1, 0, 0, 0, 4947, 4949, 3, 450, 225, 0, 4948, 4947, 1, 0, 0, 0, 4949, 4950, 1, 0, 0, 0, 4950, 4948, 1, 0, 0, 0, 4950, 4951, 1, 0, 0, 0, 4951, 4958, 1, 0, 0, 0, 4952, 4954, 5, 53, 0, 0, 4953, 4955, 3, 448, 224, 0, 4954, 4953, 1, 0, 0, 0, 4955, 4956, 1, 0, 0, 0, 4956, 4954, 1, 0, 0, 0, 4956, 4957, 1, 0, 0, 0, 4957, 4959, 1, 0, 0, 0, 4958, 4952, 1, 0, 0, 0, 4958, 4959, 1, 0, 0, 0, 4959, 4960, 1, 0, 0, 0, 4960, 4961, 5, 378, 0, 0, 4961, 4962, 5, 23, 0, 0, 4962, 421, 1, 0, 0, 0, 4963, 4964, 5, 78, 0, 0, 4964, 4965, 3, 800, 400, 0, 4965, 4967, 5, 175, 0, 0, 4966, 4968, 3, 448, 224, 0, 4967, 4966, 1, 0, 0, 0, 4968, 4969, 1, 0, 0, 0, 4969, 4967, 1, 0, 0, 0, 4969, 4970, 1, 0, 0, 0, 4970, 4974, 1, 0, 0, 0, 4971, 4973, 3, 452, 226, 0, 4972, 4971, 1, 0, 0, 0, 4973, 4976, 1, 0, 0, 0, 4974, 4972, 1, 0, 0, 0, 4974, 4975, 1, 0, 0, 0, 4975, 4983, 1, 0, 0, 0, 4976, 4974, 1, 0, 0, 0, 4977, 4979, 5, 53, 0, 0, 4978, 4980, 3, 448, 224, 0, 4979, 4978, 1, 0, 0, 0, 4980, 4981, 1, 0, 0, 0, 4981, 4979, 1, 0, 0, 0, 4981, 4982, 1, 0, 0, 0, 4982, 4984, 1, 0, 0, 0, 4983, 4977, 1, 0, 0, 0, 4983, 4984, 1, 0, 0, 0, 4984, 4985, 1, 0, 0, 0, 4985, 4986, 5, 378, 0, 0, 4986, 4987, 5, 78, 0, 0, 4987, 423, 1, 0, 0, 0, 4988, 4989, 5, 90, 0, 0, 4989, 4990, 3, 702, 351, 0, 4990, 425, 1, 0, 0, 0, 4991, 4992, 5, 97, 0, 0, 4992, 4993, 3, 702, 351, 0, 4993, 427, 1, 0, 0, 0, 4994, 4995, 3, 702, 351, 0, 4995, 4996, 5, 878, 0, 0, 4996, 4998, 1, 0, 0, 0, 4997, 4994, 1, 0, 0, 0, 4997, 4998, 1, 0, 0, 0, 4998, 4999, 1, 0, 0, 0, 4999, 5001, 5, 106, 0, 0, 5000, 5002, 3, 448, 224, 0, 5001, 5000, 1, 0, 0, 0, 5002, 5003, 1, 0, 0, 0, 5003, 5001, 1, 0, 0, 0, 5003, 5004, 1, 0, 0, 0, 5004, 5005, 1, 0, 0, 0, 5005, 5006, 5, 378, 0, 0, 5006, 5008, 5, 106, 0, 0, 5007, 5009, 3, 702, 351, 0, 5008, 5007, 1, 0, 0, 0, 5008, 5009, 1, 0, 0, 0, 5009, 429, 1, 0, 0, 0, 5010, 5011, 3, 702, 351, 0, 5011, 5012, 5, 878, 0, 0, 5012, 5014, 1, 0, 0, 0, 5013, 5010, 1, 0, 0, 0, 5013, 5014, 1, 0, 0, 0, 5014, 5015, 1, 0, 0, 0, 5015, 5017, 5, 142, 0, 0, 5016, 5018, 3, 448, 224, 0, 5017, 5016, 1, 0, 0, 0, 5018, 5019, 1, 0, 0, 0, 5019, 5017, 1, 0, 0, 0, 5019, 5020, 1, 0, 0, 0, 5020, 5021, 1, 0, 0, 0, 5021, 5022, 5, 676, 0, 0, 5022, 5023, 3, 800, 400, 0, 5023, 5024, 5, 378, 0, 0, 5024, 5026, 5, 142, 0, 0, 5025, 5027, 3, 702, 351, 0, 5026, 5025, 1, 0, 0, 0, 5026, 5027, 1, 0, 0, 0, 5027, 431, 1, 0, 0, 0, 5028, 5029, 5, 148, 0, 0, 5029, 5030, 3, 800, 400, 0, 5030, 433, 1, 0, 0, 0, 5031, 5032, 3, 702, 351, 0, 5032, 5033, 5, 878, 0, 0, 5033, 5035, 1, 0, 0, 0, 5034, 5031, 1, 0, 0, 0, 5034, 5035, 1, 0, 0, 0, 5035, 5036, 1, 0, 0, 0, 5036, 5037, 5, 193, 0, 0, 5037, 5038, 3, 800, 400, 0, 5038, 5040, 5, 371, 0, 0, 5039, 5041, 3, 448, 224, 0, 5040, 5039, 1, 0, 0, 0, 5041, 5042, 1, 0, 0, 0, 5042, 5040, 1, 0, 0, 0, 5042, 5043, 1, 0, 0, 0, 5043, 5044, 1, 0, 0, 0, 5044, 5045, 5, 378, 0, 0, 5045, 5047, 5, 193, 0, 0, 5046, 5048, 3, 702, 351, 0, 5047, 5046, 1, 0, 0, 0, 5047, 5048, 1, 0, 0, 0, 5048, 435, 1, 0, 0, 0, 5049, 5050, 5, 334, 0, 0, 5050, 5065, 3, 702, 351, 0, 5051, 5056, 5, 64, 0, 0, 5052, 5054, 5, 501, 0, 0, 5053, 5052, 1, 0, 0, 0, 5053, 5054, 1, 0, 0, 0, 5054, 5055, 1, 0, 0, 0, 5055, 5057, 5, 68, 0, 0, 5056, 5053, 1, 0, 0, 0, 5056, 5057, 1, 0, 0, 0, 5057, 5058, 1, 0, 0, 0, 5058, 5059, 3, 702, 351, 0, 5059, 5060, 5, 88, 0, 0, 5060, 5061, 3, 700, 350, 0, 5061, 5065, 1, 0, 0, 0, 5062, 5063, 5, 516, 0, 0, 5063, 5065, 3, 702, 351, 0, 5064, 5049, 1, 0, 0, 0, 5064, 5051, 1, 0, 0, 0, 5064, 5062, 1, 0, 0, 0, 5065, 437, 1, 0, 0, 0, 5066, 5067, 5, 41, 0, 0, 5067, 5068, 3, 700, 350, 0, 5068, 5071, 3, 722, 361, 0, 5069, 5070, 5, 42, 0, 0, 5070, 5072, 3, 800, 400, 0, 5071, 5069, 1, 0, 0, 0, 5071, 5072, 1, 0, 0, 0, 5072, 439, 1, 0, 0, 0, 5073, 5074, 5, 41, 0, 0, 5074, 5075, 3, 702, 351, 0, 5075, 5076, 5, 30, 0, 0, 5076, 5083, 5, 65, 0, 0, 5077, 5084, 3, 708, 354, 0, 5078, 5080, 5, 164, 0, 0, 5079, 5081, 5, 682, 0, 0, 5080, 5079, 1, 0, 0, 0, 5080, 5081, 1, 0, 0, 0, 5081, 5082, 1, 0, 0, 0, 5082, 5084, 5, 882, 0, 0, 5083, 5077, 1, 0, 0, 0, 5083, 5078, 1, 0, 0, 0, 5084, 441, 1, 0, 0, 0, 5085, 5086, 5, 41, 0, 0, 5086, 5087, 3, 702, 351, 0, 5087, 5088, 5, 38, 0, 0, 5088, 5089, 5, 65, 0, 0, 5089, 5090, 3, 204, 102, 0, 5090, 443, 1, 0, 0, 0, 5091, 5092, 5, 41, 0, 0, 5092, 5093, 7, 78, 0, 0, 5093, 5094, 5, 417, 0, 0, 5094, 5095, 5, 65, 0, 0, 5095, 5100, 3, 446, 223, 0, 5096, 5097, 5, 868, 0, 0, 5097, 5099, 3, 446, 223, 0, 5098, 5096, 1, 0, 0, 0, 5099, 5102, 1, 0, 0, 0, 5100, 5098, 1, 0, 0, 0, 5100, 5101, 1, 0, 0, 0, 5101, 5103, 1, 0, 0, 0, 5102, 5100, 1, 0, 0, 0, 5103, 5104, 3, 416, 208, 0, 5104, 445, 1, 0, 0, 0, 5105, 5117, 3, 708, 354, 0, 5106, 5108, 5, 164, 0, 0, 5107, 5109, 5, 682, 0, 0, 5108, 5107, 1, 0, 0, 0, 5108, 5109, 1, 0, 0, 0, 5109, 5110, 1, 0, 0, 0, 5110, 5117, 5, 882, 0, 0, 5111, 5117, 3, 702, 351, 0, 5112, 5117, 5, 165, 0, 0, 5113, 5114, 5, 114, 0, 0, 5114, 5117, 5, 407, 0, 0, 5115, 5117, 5, 163, 0, 0, 5116, 5105, 1, 0, 0, 0, 5116, 5106, 1, 0, 0, 0, 5116, 5111, 1, 0, 0, 0, 5116, 5112, 1, 0, 0, 0, 5116, 5113, 1, 0, 0, 0, 5116, 5115, 1, 0, 0, 0, 5117, 447, 1, 0, 0, 0, 5118, 5121, 3, 18, 9, 0, 5119, 5121, 3, 4, 2, 0, 5120, 5118, 1, 0, 0, 0, 5120, 5119, 1, 0, 0, 0, 5121, 5122, 1, 0, 0, 0, 5122, 5123, 5, 869, 0, 0, 5123, 449, 1, 0, 0, 0, 5124, 5127, 5, 191, 0, 0, 5125, 5128, 3, 720, 360, 0, 5126, 5128, 3, 800, 400, 0, 5127, 5125, 1, 0, 0, 0, 5127, 5126, 1, 0, 0, 0, 5128, 5129, 1, 0, 0, 0, 5129, 5131, 5, 175, 0, 0, 5130, 5132, 3, 448, 224, 0, 5131, 5130, 1, 0, 0, 0, 5132, 5133, 1, 0, 0, 0, 5133, 5131, 1, 0, 0, 0, 5133, 5134, 1, 0, 0, 0, 5134, 451, 1, 0, 0, 0, 5135, 5136, 5, 54, 0, 0, 5136, 5137, 3, 800, 400, 0, 5137, 5139, 5, 175, 0, 0, 5138, 5140, 3, 448, 224, 0, 5139, 5138, 1, 0, 0, 0, 5140, 5141, 1, 0, 0, 0, 5141, 5139, 1, 0, 0, 0, 5141, 5142, 1, 0, 0, 0, 5142, 453, 1, 0, 0, 0, 5143, 5144, 5, 8, 0, 0, 5144, 5146, 5, 678, 0, 0, 5145, 5147, 3, 754, 377, 0, 5146, 5145, 1, 0, 0, 0, 5146, 5147, 1, 0, 0, 0, 5147, 5204, 1, 0, 0, 0, 5148, 5153, 3, 486, 243, 0, 5149, 5150, 5, 868, 0, 0, 5150, 5152, 3, 486, 243, 0, 5151, 5149, 1, 0, 0, 0, 5152, 5155, 1, 0, 0, 0, 5153, 5151, 1, 0, 0, 0, 5153, 5154, 1, 0, 0, 0, 5154, 5205, 1, 0, 0, 0, 5155, 5153, 1, 0, 0, 0, 5156, 5161, 3, 488, 244, 0, 5157, 5158, 5, 868, 0, 0, 5158, 5160, 3, 488, 244, 0, 5159, 5157, 1, 0, 0, 0, 5160, 5163, 1, 0, 0, 0, 5161, 5159, 1, 0, 0, 0, 5161, 5162, 1, 0, 0, 0, 5162, 5178, 1, 0, 0, 0, 5163, 5161, 1, 0, 0, 0, 5164, 5176, 5, 144, 0, 0, 5165, 5177, 5, 505, 0, 0, 5166, 5173, 3, 500, 250, 0, 5167, 5169, 5, 11, 0, 0, 5168, 5167, 1, 0, 0, 0, 5168, 5169, 1, 0, 0, 0, 5169, 5170, 1, 0, 0, 0, 5170, 5172, 3, 500, 250, 0, 5171, 5168, 1, 0, 0, 0, 5172, 5175, 1, 0, 0, 0, 5173, 5171, 1, 0, 0, 0, 5173, 5174, 1, 0, 0, 0, 5174, 5177, 1, 0, 0, 0, 5175, 5173, 1, 0, 0, 0, 5176, 5165, 1, 0, 0, 0, 5176, 5166, 1, 0, 0, 0, 5177, 5179, 1, 0, 0, 0, 5178, 5164, 1, 0, 0, 0, 5178, 5179, 1, 0, 0, 0, 5179, 5186, 1, 0, 0, 0, 5180, 5182, 5, 194, 0, 0, 5181, 5183, 3, 502, 251, 0, 5182, 5181, 1, 0, 0, 0, 5183, 5184, 1, 0, 0, 0, 5184, 5182, 1, 0, 0, 0, 5184, 5185, 1, 0, 0, 0, 5185, 5187, 1, 0, 0, 0, 5186, 5180, 1, 0, 0, 0, 5186, 5187, 1, 0, 0, 0, 5187, 5192, 1, 0, 0, 0, 5188, 5191, 3, 504, 252, 0, 5189, 5191, 3, 506, 253, 0, 5190, 5188, 1, 0, 0, 0, 5190, 5189, 1, 0, 0, 0, 5191, 5194, 1, 0, 0, 0, 5192, 5190, 1, 0, 0, 0, 5192, 5193, 1, 0, 0, 0, 5193, 5197, 1, 0, 0, 0, 5194, 5192, 1, 0, 0, 0, 5195, 5196, 7, 79, 0, 0, 5196, 5198, 5, 882, 0, 0, 5197, 5195, 1, 0, 0, 0, 5197, 5198, 1, 0, 0, 0, 5198, 5205, 1, 0, 0, 0, 5199, 5200, 3, 652, 326, 0, 5200, 5201, 5, 42, 0, 0, 5201, 5202, 5, 582, 0, 0, 5202, 5203, 3, 462, 231, 0, 5203, 5205, 1, 0, 0, 0, 5204, 5148, 1, 0, 0, 0, 5204, 5156, 1, 0, 0, 0, 5204, 5199, 1, 0, 0, 0, 5205, 455, 1, 0, 0, 0, 5206, 5207, 5, 34, 0, 0, 5207, 5209, 5, 678, 0, 0, 5208, 5210, 3, 756, 378, 0, 5209, 5208, 1, 0, 0, 0, 5209, 5210, 1, 0, 0, 0, 5210, 5211, 1, 0, 0, 0, 5211, 5213, 3, 680, 340, 0, 5212, 5214, 3, 490, 245, 0, 5213, 5212, 1, 0, 0, 0, 5213, 5214, 1, 0, 0, 0, 5214, 5222, 1, 0, 0, 0, 5215, 5216, 5, 868, 0, 0, 5216, 5218, 3, 680, 340, 0, 5217, 5219, 3, 490, 245, 0, 5218, 5217, 1, 0, 0, 0, 5218, 5219, 1, 0, 0, 0, 5219, 5221, 1, 0, 0, 0, 5220, 5215, 1, 0, 0, 0, 5221, 5224, 1, 0, 0, 0, 5222, 5220, 1, 0, 0, 0, 5222, 5223, 1, 0, 0, 0, 5223, 5228, 1, 0, 0, 0, 5224, 5222, 1, 0, 0, 0, 5225, 5226, 5, 42, 0, 0, 5226, 5227, 5, 582, 0, 0, 5227, 5229, 3, 462, 231, 0, 5228, 5225, 1, 0, 0, 0, 5228, 5229, 1, 0, 0, 0, 5229, 5244, 1, 0, 0, 0, 5230, 5242, 5, 144, 0, 0, 5231, 5243, 5, 505, 0, 0, 5232, 5239, 3, 500, 250, 0, 5233, 5235, 5, 11, 0, 0, 5234, 5233, 1, 0, 0, 0, 5234, 5235, 1, 0, 0, 0, 5235, 5236, 1, 0, 0, 0, 5236, 5238, 3, 500, 250, 0, 5237, 5234, 1, 0, 0, 0, 5238, 5241, 1, 0, 0, 0, 5239, 5237, 1, 0, 0, 0, 5239, 5240, 1, 0, 0, 0, 5240, 5243, 1, 0, 0, 0, 5241, 5239, 1, 0, 0, 0, 5242, 5231, 1, 0, 0, 0, 5242, 5232, 1, 0, 0, 0, 5243, 5245, 1, 0, 0, 0, 5244, 5230, 1, 0, 0, 0, 5244, 5245, 1, 0, 0, 0, 5245, 5252, 1, 0, 0, 0, 5246, 5248, 5, 194, 0, 0, 5247, 5249, 3, 502, 251, 0, 5248, 5247, 1, 0, 0, 0, 5249, 5250, 1, 0, 0, 0, 5250, 5248, 1, 0, 0, 0, 5250, 5251, 1, 0, 0, 0, 5251, 5253, 1, 0, 0, 0, 5252, 5246, 1, 0, 0, 0, 5252, 5253, 1, 0, 0, 0, 5253, 5258, 1, 0, 0, 0, 5254, 5257, 3, 504, 252, 0, 5255, 5257, 3, 506, 253, 0, 5256, 5254, 1, 0, 0, 0, 5256, 5255, 1, 0, 0, 0, 5257, 5260, 1, 0, 0, 0, 5258, 5256, 1, 0, 0, 0, 5258, 5259, 1, 0, 0, 0, 5259, 5263, 1, 0, 0, 0, 5260, 5258, 1, 0, 0, 0, 5261, 5262, 7, 79, 0, 0, 5262, 5264, 5, 882, 0, 0, 5263, 5261, 1, 0, 0, 0, 5263, 5264, 1, 0, 0, 0, 5264, 457, 1, 0, 0, 0, 5265, 5266, 5, 51, 0, 0, 5266, 5268, 5, 678, 0, 0, 5267, 5269, 3, 754, 377, 0, 5268, 5267, 1, 0, 0, 0, 5268, 5269, 1, 0, 0, 0, 5269, 5270, 1, 0, 0, 0, 5270, 5275, 3, 680, 340, 0, 5271, 5272, 5, 868, 0, 0, 5272, 5274, 3, 680, 340, 0, 5273, 5271, 1, 0, 0, 0, 5274, 5277, 1, 0, 0, 0, 5275, 5273, 1, 0, 0, 0, 5275, 5276, 1, 0, 0, 0, 5276, 459, 1, 0, 0, 0, 5277, 5275, 1, 0, 0, 0, 5278, 5279, 5, 73, 0, 0, 5279, 5284, 3, 514, 257, 0, 5280, 5281, 5, 868, 0, 0, 5281, 5283, 3, 514, 257, 0, 5282, 5280, 1, 0, 0, 0, 5283, 5286, 1, 0, 0, 0, 5284, 5282, 1, 0, 0, 0, 5284, 5285, 1, 0, 0, 0, 5285, 5287, 1, 0, 0, 0, 5286, 5284, 1, 0, 0, 0, 5287, 5289, 5, 119, 0, 0, 5288, 5290, 3, 482, 241, 0, 5289, 5288, 1, 0, 0, 0, 5289, 5290, 1, 0, 0, 0, 5290, 5291, 1, 0, 0, 0, 5291, 5292, 3, 518, 259, 0, 5292, 5302, 5, 176, 0, 0, 5293, 5298, 3, 494, 247, 0, 5294, 5295, 5, 868, 0, 0, 5295, 5297, 3, 494, 247, 0, 5296, 5294, 1, 0, 0, 0, 5297, 5300, 1, 0, 0, 0, 5298, 5296, 1, 0, 0, 0, 5298, 5299, 1, 0, 0, 0, 5299, 5303, 1, 0, 0, 0, 5300, 5298, 1, 0, 0, 0, 5301, 5303, 3, 650, 325, 0, 5302, 5293, 1, 0, 0, 0, 5302, 5301, 1, 0, 0, 0, 5303, 5318, 1, 0, 0, 0, 5304, 5316, 5, 144, 0, 0, 5305, 5317, 5, 505, 0, 0, 5306, 5313, 3, 500, 250, 0, 5307, 5309, 5, 11, 0, 0, 5308, 5307, 1, 0, 0, 0, 5308, 5309, 1, 0, 0, 0, 5309, 5310, 1, 0, 0, 0, 5310, 5312, 3, 500, 250, 0, 5311, 5308, 1, 0, 0, 0, 5312, 5315, 1, 0, 0, 0, 5313, 5311, 1, 0, 0, 0, 5313, 5314, 1, 0, 0, 0, 5314, 5317, 1, 0, 0, 0, 5315, 5313, 1, 0, 0, 0, 5316, 5305, 1, 0, 0, 0, 5316, 5306, 1, 0, 0, 0, 5317, 5319, 1, 0, 0, 0, 5318, 5304, 1, 0, 0, 0, 5318, 5319, 1, 0, 0, 0, 5319, 5329, 1, 0, 0, 0, 5320, 5326, 5, 194, 0, 0, 5321, 5322, 5, 73, 0, 0, 5322, 5325, 5, 121, 0, 0, 5323, 5325, 3, 502, 251, 0, 5324, 5321, 1, 0, 0, 0, 5324, 5323, 1, 0, 0, 0, 5325, 5328, 1, 0, 0, 0, 5326, 5324, 1, 0, 0, 0, 5326, 5327, 1, 0, 0, 0, 5327, 5330, 1, 0, 0, 0, 5328, 5326, 1, 0, 0, 0, 5329, 5320, 1, 0, 0, 0, 5329, 5330, 1, 0, 0, 0, 5330, 5338, 1, 0, 0, 0, 5331, 5332, 5, 13, 0, 0, 5332, 5336, 3, 680, 340, 0, 5333, 5334, 5, 194, 0, 0, 5334, 5335, 5, 582, 0, 0, 5335, 5337, 3, 462, 231, 0, 5336, 5333, 1, 0, 0, 0, 5336, 5337, 1, 0, 0, 0, 5337, 5339, 1, 0, 0, 0, 5338, 5331, 1, 0, 0, 0, 5338, 5339, 1, 0, 0, 0, 5339, 5368, 1, 0, 0, 0, 5340, 5343, 5, 73, 0, 0, 5341, 5342, 5, 547, 0, 0, 5342, 5344, 5, 119, 0, 0, 5343, 5341, 1, 0, 0, 0, 5343, 5344, 1, 0, 0, 0, 5344, 5345, 1, 0, 0, 0, 5345, 5350, 3, 652, 326, 0, 5346, 5347, 5, 868, 0, 0, 5347, 5349, 3, 652, 326, 0, 5348, 5346, 1, 0, 0, 0, 5349, 5352, 1, 0, 0, 0, 5350, 5348, 1, 0, 0, 0, 5350, 5351, 1, 0, 0, 0, 5351, 5353, 1, 0, 0, 0, 5352, 5350, 1, 0, 0, 0, 5353, 5354, 5, 176, 0, 0, 5354, 5359, 3, 652, 326, 0, 5355, 5356, 5, 868, 0, 0, 5356, 5358, 3, 652, 326, 0, 5357, 5355, 1, 0, 0, 0, 5358, 5361, 1, 0, 0, 0, 5359, 5357, 1, 0, 0, 0, 5359, 5360, 1, 0, 0, 0, 5360, 5365, 1, 0, 0, 0, 5361, 5359, 1, 0, 0, 0, 5362, 5363, 5, 194, 0, 0, 5363, 5364, 5, 704, 0, 0, 5364, 5366, 5, 121, 0, 0, 5365, 5362, 1, 0, 0, 0, 5365, 5366, 1, 0, 0, 0, 5366, 5368, 1, 0, 0, 0, 5367, 5278, 1, 0, 0, 0, 5367, 5340, 1, 0, 0, 0, 5368, 461, 1, 0, 0, 0, 5369, 5378, 5, 42, 0, 0, 5370, 5378, 5, 505, 0, 0, 5371, 5374, 5, 7, 0, 0, 5372, 5373, 5, 59, 0, 0, 5373, 5375, 3, 650, 325, 0, 5374, 5372, 1, 0, 0, 0, 5374, 5375, 1, 0, 0, 0, 5375, 5378, 1, 0, 0, 0, 5376, 5378, 3, 650, 325, 0, 5377, 5369, 1, 0, 0, 0, 5377, 5370, 1, 0, 0, 0, 5377, 5371, 1, 0, 0, 0, 5377, 5376, 1, 0, 0, 0, 5378, 463, 1, 0, 0, 0, 5379, 5380, 5, 73, 0, 0, 5380, 5381, 5, 547, 0, 0, 5381, 5382, 5, 119, 0, 0, 5382, 5383, 3, 680, 340, 0, 5383, 5384, 5, 176, 0, 0, 5384, 5389, 3, 680, 340, 0, 5385, 5386, 5, 868, 0, 0, 5386, 5388, 3, 680, 340, 0, 5387, 5385, 1, 0, 0, 0, 5388, 5391, 1, 0, 0, 0, 5389, 5387, 1, 0, 0, 0, 5389, 5390, 1, 0, 0, 0, 5390, 5395, 1, 0, 0, 0, 5391, 5389, 1, 0, 0, 0, 5392, 5393, 5, 194, 0, 0, 5393, 5394, 5, 73, 0, 0, 5394, 5396, 5, 121, 0, 0, 5395, 5392, 1, 0, 0, 0, 5395, 5396, 1, 0, 0, 0, 5396, 465, 1, 0, 0, 0, 5397, 5398, 5, 8, 0, 0, 5398, 5399, 5, 739, 0, 0, 5399, 5400, 5, 74, 0, 0, 5400, 5406, 3, 642, 321, 0, 5401, 5403, 5, 190, 0, 0, 5402, 5404, 5, 857, 0, 0, 5403, 5402, 1, 0, 0, 0, 5403, 5404, 1, 0, 0, 0, 5404, 5405, 1, 0, 0, 0, 5405, 5407, 3, 474, 237, 0, 5406, 5401, 1, 0, 0, 0, 5406, 5407, 1, 0, 0, 0, 5407, 5413, 1, 0, 0, 0, 5408, 5410, 5, 837, 0, 0, 5409, 5411, 5, 857, 0, 0, 5410, 5409, 1, 0, 0, 0, 5410, 5411, 1, 0, 0, 0, 5411, 5412, 1, 0, 0, 0, 5412, 5414, 3, 708, 354, 0, 5413, 5408, 1, 0, 0, 0, 5413, 5414, 1, 0, 0, 0, 5414, 5419, 1, 0, 0, 0, 5415, 5417, 7, 38, 0, 0, 5416, 5418, 5, 66, 0, 0, 5417, 5416, 1, 0, 0, 0, 5417, 5418, 1, 0, 0, 0, 5418, 5420, 1, 0, 0, 0, 5419, 5415, 1, 0, 0, 0, 5419, 5420, 1, 0, 0, 0, 5420, 467, 1, 0, 0, 0, 5421, 5422, 5, 34, 0, 0, 5422, 5423, 5, 739, 0, 0, 5423, 5424, 5, 74, 0, 0, 5424, 5425, 3, 640, 320, 0, 5425, 5426, 5, 839, 0, 0, 5426, 5427, 5, 857, 0, 0, 5427, 5433, 7, 80, 0, 0, 5428, 5430, 5, 190, 0, 0, 5429, 5431, 5, 857, 0, 0, 5430, 5429, 1, 0, 0, 0, 5430, 5431, 1, 0, 0, 0, 5431, 5432, 1, 0, 0, 0, 5432, 5434, 3, 474, 237, 0, 5433, 5428, 1, 0, 0, 0, 5433, 5434, 1, 0, 0, 0, 5434, 5440, 1, 0, 0, 0, 5435, 5437, 5, 837, 0, 0, 5436, 5438, 5, 857, 0, 0, 5437, 5436, 1, 0, 0, 0, 5437, 5438, 1, 0, 0, 0, 5438, 5439, 1, 0, 0, 0, 5439, 5441, 3, 708, 354, 0, 5440, 5435, 1, 0, 0, 0, 5440, 5441, 1, 0, 0, 0, 5441, 5443, 1, 0, 0, 0, 5442, 5444, 7, 38, 0, 0, 5443, 5442, 1, 0, 0, 0, 5443, 5444, 1, 0, 0, 0, 5444, 469, 1, 0, 0, 0, 5445, 5446, 5, 51, 0, 0, 5446, 5447, 5, 739, 0, 0, 5447, 5448, 5, 74, 0, 0, 5448, 5450, 3, 642, 321, 0, 5449, 5451, 5, 66, 0, 0, 5450, 5449, 1, 0, 0, 0, 5450, 5451, 1, 0, 0, 0, 5451, 471, 1, 0, 0, 0, 5452, 5453, 5, 155, 0, 0, 5453, 5454, 5, 739, 0, 0, 5454, 5455, 5, 74, 0, 0, 5455, 5465, 3, 642, 321, 0, 5456, 5457, 5, 65, 0, 0, 5457, 5462, 3, 708, 354, 0, 5458, 5459, 5, 868, 0, 0, 5459, 5461, 3, 708, 354, 0, 5460, 5458, 1, 0, 0, 0, 5461, 5464, 1, 0, 0, 0, 5462, 5460, 1, 0, 0, 0, 5462, 5463, 1, 0, 0, 0, 5463, 5466, 1, 0, 0, 0, 5464, 5462, 1, 0, 0, 0, 5465, 5456, 1, 0, 0, 0, 5465, 5466, 1, 0, 0, 0, 5466, 473, 1, 0, 0, 0, 5467, 5473, 3, 708, 354, 0, 5468, 5469, 3, 708, 354, 0, 5469, 5470, 5, 854, 0, 0, 5470, 5471, 3, 708, 354, 0, 5471, 5473, 1, 0, 0, 0, 5472, 5467, 1, 0, 0, 0, 5472, 5468, 1, 0, 0, 0, 5473, 5478, 1, 0, 0, 0, 5474, 5475, 5, 868, 0, 0, 5475, 5477, 3, 474, 237, 0, 5476, 5474, 1, 0, 0, 0, 5477, 5480, 1, 0, 0, 0, 5478, 5476, 1, 0, 0, 0, 5478, 5479, 1, 0, 0, 0, 5479, 475, 1, 0, 0, 0, 5480, 5478, 1, 0, 0, 0, 5481, 5482, 5, 141, 0, 0, 5482, 5483, 5, 678, 0, 0, 5483, 5488, 3, 520, 260, 0, 5484, 5485, 5, 868, 0, 0, 5485, 5487, 3, 520, 260, 0, 5486, 5484, 1, 0, 0, 0, 5487, 5490, 1, 0, 0, 0, 5488, 5486, 1, 0, 0, 0, 5488, 5489, 1, 0, 0, 0, 5489, 477, 1, 0, 0, 0, 5490, 5488, 1, 0, 0, 0, 5491, 5493, 5, 149, 0, 0, 5492, 5494, 3, 754, 377, 0, 5493, 5492, 1, 0, 0, 0, 5493, 5494, 1, 0, 0, 0, 5494, 5495, 1, 0, 0, 0, 5495, 5500, 3, 514, 257, 0, 5496, 5497, 5, 868, 0, 0, 5497, 5499, 3, 514, 257, 0, 5498, 5496, 1, 0, 0, 0, 5499, 5502, 1, 0, 0, 0, 5500, 5498, 1, 0, 0, 0, 5500, 5501, 1, 0, 0, 0, 5501, 5503, 1, 0, 0, 0, 5502, 5500, 1, 0, 0, 0, 5503, 5505, 5, 119, 0, 0, 5504, 5506, 3, 482, 241, 0, 5505, 5504, 1, 0, 0, 0, 5505, 5506, 1, 0, 0, 0, 5506, 5507, 1, 0, 0, 0, 5507, 5508, 3, 518, 259, 0, 5508, 5509, 5, 68, 0, 0, 5509, 5511, 3, 650, 325, 0, 5510, 5512, 3, 480, 240, 0, 5511, 5510, 1, 0, 0, 0, 5511, 5512, 1, 0, 0, 0, 5512, 5544, 1, 0, 0, 0, 5513, 5515, 5, 149, 0, 0, 5514, 5516, 3, 754, 377, 0, 5515, 5514, 1, 0, 0, 0, 5515, 5516, 1, 0, 0, 0, 5516, 5517, 1, 0, 0, 0, 5517, 5519, 5, 7, 0, 0, 5518, 5520, 5, 734, 0, 0, 5519, 5518, 1, 0, 0, 0, 5519, 5520, 1, 0, 0, 0, 5520, 5521, 1, 0, 0, 0, 5521, 5522, 5, 868, 0, 0, 5522, 5523, 5, 73, 0, 0, 5523, 5524, 5, 121, 0, 0, 5524, 5525, 5, 68, 0, 0, 5525, 5527, 3, 650, 325, 0, 5526, 5528, 3, 480, 240, 0, 5527, 5526, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 5544, 1, 0, 0, 0, 5529, 5531, 5, 149, 0, 0, 5530, 5532, 3, 754, 377, 0, 5531, 5530, 1, 0, 0, 0, 5531, 5532, 1, 0, 0, 0, 5532, 5535, 1, 0, 0, 0, 5533, 5534, 5, 547, 0, 0, 5534, 5536, 5, 119, 0, 0, 5535, 5533, 1, 0, 0, 0, 5535, 5536, 1, 0, 0, 0, 5536, 5537, 1, 0, 0, 0, 5537, 5538, 3, 650, 325, 0, 5538, 5539, 5, 68, 0, 0, 5539, 5541, 3, 650, 325, 0, 5540, 5542, 3, 480, 240, 0, 5541, 5540, 1, 0, 0, 0, 5541, 5542, 1, 0, 0, 0, 5542, 5544, 1, 0, 0, 0, 5543, 5491, 1, 0, 0, 0, 5543, 5513, 1, 0, 0, 0, 5543, 5529, 1, 0, 0, 0, 5544, 479, 1, 0, 0, 0, 5545, 5546, 5, 79, 0, 0, 5546, 5547, 5, 674, 0, 0, 5547, 5548, 5, 678, 0, 0, 5548, 481, 1, 0, 0, 0, 5549, 5550, 7, 81, 0, 0, 5550, 483, 1, 0, 0, 0, 5551, 5552, 5, 155, 0, 0, 5552, 5555, 5, 529, 0, 0, 5553, 5554, 5, 65, 0, 0, 5554, 5556, 3, 680, 340, 0, 5555, 5553, 1, 0, 0, 0, 5555, 5556, 1, 0, 0, 0, 5556, 5557, 1, 0, 0, 0, 5557, 5560, 5, 857, 0, 0, 5558, 5561, 3, 794, 397, 0, 5559, 5561, 5, 882, 0, 0, 5560, 5558, 1, 0, 0, 0, 5560, 5559, 1, 0, 0, 0, 5561, 5584, 1, 0, 0, 0, 5562, 5563, 5, 155, 0, 0, 5563, 5566, 5, 529, 0, 0, 5564, 5565, 5, 65, 0, 0, 5565, 5567, 3, 680, 340, 0, 5566, 5564, 1, 0, 0, 0, 5566, 5567, 1, 0, 0, 0, 5567, 5572, 1, 0, 0, 0, 5568, 5569, 5, 176, 0, 0, 5569, 5573, 5, 829, 0, 0, 5570, 5571, 5, 857, 0, 0, 5571, 5573, 5, 882, 0, 0, 5572, 5568, 1, 0, 0, 0, 5572, 5570, 1, 0, 0, 0, 5573, 5576, 1, 0, 0, 0, 5574, 5575, 5, 143, 0, 0, 5575, 5577, 5, 882, 0, 0, 5576, 5574, 1, 0, 0, 0, 5576, 5577, 1, 0, 0, 0, 5577, 5581, 1, 0, 0, 0, 5578, 5579, 5, 147, 0, 0, 5579, 5580, 5, 36, 0, 0, 5580, 5582, 5, 529, 0, 0, 5581, 5578, 1, 0, 0, 0, 5581, 5582, 1, 0, 0, 0, 5582, 5584, 1, 0, 0, 0, 5583, 5551, 1, 0, 0, 0, 5583, 5562, 1, 0, 0, 0, 5584, 485, 1, 0, 0, 0, 5585, 5586, 3, 680, 340, 0, 5586, 5587, 3, 504, 252, 0, 5587, 487, 1, 0, 0, 0, 5588, 5614, 3, 680, 340, 0, 5589, 5590, 5, 423, 0, 0, 5590, 5591, 5, 20, 0, 0, 5591, 5592, 5, 882, 0, 0, 5592, 5615, 3, 496, 248, 0, 5593, 5594, 5, 423, 0, 0, 5594, 5595, 5, 20, 0, 0, 5595, 5596, 5, 829, 0, 0, 5596, 5597, 5, 529, 0, 0, 5597, 5615, 3, 496, 248, 0, 5598, 5599, 5, 423, 0, 0, 5599, 5600, 5, 194, 0, 0, 5600, 5615, 3, 498, 249, 0, 5601, 5602, 5, 369, 0, 0, 5602, 5603, 5, 511, 0, 0, 5603, 5615, 5, 529, 0, 0, 5604, 5605, 7, 82, 0, 0, 5605, 5607, 3, 512, 256, 0, 5606, 5608, 3, 508, 254, 0, 5607, 5606, 1, 0, 0, 0, 5607, 5608, 1, 0, 0, 0, 5608, 5610, 1, 0, 0, 0, 5609, 5604, 1, 0, 0, 0, 5610, 5611, 1, 0, 0, 0, 5611, 5609, 1, 0, 0, 0, 5611, 5612, 1, 0, 0, 0, 5612, 5615, 1, 0, 0, 0, 5613, 5615, 3, 510, 255, 0, 5614, 5589, 1, 0, 0, 0, 5614, 5593, 1, 0, 0, 0, 5614, 5598, 1, 0, 0, 0, 5614, 5601, 1, 0, 0, 0, 5614, 5609, 1, 0, 0, 0, 5614, 5613, 1, 0, 0, 0, 5614, 5615, 1, 0, 0, 0, 5615, 489, 1, 0, 0, 0, 5616, 5617, 5, 423, 0, 0, 5617, 5623, 5, 20, 0, 0, 5618, 5624, 5, 882, 0, 0, 5619, 5620, 5, 829, 0, 0, 5620, 5624, 5, 529, 0, 0, 5621, 5622, 5, 529, 0, 0, 5622, 5624, 5, 882, 0, 0, 5623, 5618, 1, 0, 0, 0, 5623, 5619, 1, 0, 0, 0, 5623, 5621, 1, 0, 0, 0, 5624, 5627, 1, 0, 0, 0, 5625, 5626, 5, 11, 0, 0, 5626, 5628, 3, 490, 245, 0, 5627, 5625, 1, 0, 0, 0, 5627, 5628, 1, 0, 0, 0, 5628, 5653, 1, 0, 0, 0, 5629, 5630, 5, 423, 0, 0, 5630, 5631, 5, 194, 0, 0, 5631, 5640, 3, 702, 351, 0, 5632, 5636, 5, 20, 0, 0, 5633, 5637, 5, 882, 0, 0, 5634, 5635, 5, 829, 0, 0, 5635, 5637, 5, 529, 0, 0, 5636, 5633, 1, 0, 0, 0, 5636, 5634, 1, 0, 0, 0, 5637, 5641, 1, 0, 0, 0, 5638, 5639, 5, 13, 0, 0, 5639, 5641, 5, 882, 0, 0, 5640, 5632, 1, 0, 0, 0, 5640, 5638, 1, 0, 0, 0, 5640, 5641, 1, 0, 0, 0, 5641, 5644, 1, 0, 0, 0, 5642, 5643, 5, 11, 0, 0, 5643, 5645, 3, 490, 245, 0, 5644, 5642, 1, 0, 0, 0, 5644, 5645, 1, 0, 0, 0, 5645, 5653, 1, 0, 0, 0, 5646, 5647, 5, 423, 0, 0, 5647, 5648, 5, 194, 0, 0, 5648, 5650, 3, 702, 351, 0, 5649, 5651, 3, 492, 246, 0, 5650, 5649, 1, 0, 0, 0, 5650, 5651, 1, 0, 0, 0, 5651, 5653, 1, 0, 0, 0, 5652, 5616, 1, 0, 0, 0, 5652, 5629, 1, 0, 0, 0, 5652, 5646, 1, 0, 0, 0, 5653, 491, 1, 0, 0, 0, 5654, 5655, 5, 427, 0, 0, 5655, 5656, 5, 708, 0, 0, 5656, 5657, 5, 423, 0, 0, 5657, 5661, 5, 20, 0, 0, 5658, 5659, 5, 829, 0, 0, 5659, 5662, 5, 529, 0, 0, 5660, 5662, 5, 882, 0, 0, 5661, 5658, 1, 0, 0, 0, 5661, 5660, 1, 0, 0, 0, 5662, 5672, 1, 0, 0, 0, 5663, 5664, 5, 427, 0, 0, 5664, 5665, 5, 708, 0, 0, 5665, 5666, 5, 423, 0, 0, 5666, 5667, 5, 194, 0, 0, 5667, 5668, 3, 702, 351, 0, 5668, 5669, 5, 13, 0, 0, 5669, 5670, 5, 882, 0, 0, 5670, 5672, 1, 0, 0, 0, 5671, 5654, 1, 0, 0, 0, 5671, 5663, 1, 0, 0, 0, 5672, 493, 1, 0, 0, 0, 5673, 5674, 3, 680, 340, 0, 5674, 5675, 5, 423, 0, 0, 5675, 5676, 5, 20, 0, 0, 5676, 5677, 5, 529, 0, 0, 5677, 5678, 5, 882, 0, 0, 5678, 5699, 1, 0, 0, 0, 5679, 5680, 3, 680, 340, 0, 5680, 5681, 5, 423, 0, 0, 5681, 5682, 5, 20, 0, 0, 5682, 5683, 5, 829, 0, 0, 5683, 5684, 5, 529, 0, 0, 5684, 5685, 3, 496, 248, 0, 5685, 5699, 1, 0, 0, 0, 5686, 5687, 3, 680, 340, 0, 5687, 5688, 5, 423, 0, 0, 5688, 5689, 5, 20, 0, 0, 5689, 5690, 5, 882, 0, 0, 5690, 5691, 3, 496, 248, 0, 5691, 5699, 1, 0, 0, 0, 5692, 5693, 3, 680, 340, 0, 5693, 5694, 5, 423, 0, 0, 5694, 5695, 5, 194, 0, 0, 5695, 5696, 3, 498, 249, 0, 5696, 5699, 1, 0, 0, 0, 5697, 5699, 3, 680, 340, 0, 5698, 5673, 1, 0, 0, 0, 5698, 5679, 1, 0, 0, 0, 5698, 5686, 1, 0, 0, 0, 5698, 5692, 1, 0, 0, 0, 5698, 5697, 1, 0, 0, 0, 5699, 495, 1, 0, 0, 0, 5700, 5701, 5, 143, 0, 0, 5701, 5703, 5, 882, 0, 0, 5702, 5700, 1, 0, 0, 0, 5702, 5703, 1, 0, 0, 0, 5703, 5707, 1, 0, 0, 0, 5704, 5705, 5, 147, 0, 0, 5705, 5706, 5, 36, 0, 0, 5706, 5708, 5, 529, 0, 0, 5707, 5704, 1, 0, 0, 0, 5707, 5708, 1, 0, 0, 0, 5708, 497, 1, 0, 0, 0, 5709, 5717, 3, 702, 351, 0, 5710, 5714, 7, 83, 0, 0, 5711, 5715, 5, 882, 0, 0, 5712, 5713, 5, 829, 0, 0, 5713, 5715, 5, 529, 0, 0, 5714, 5711, 1, 0, 0, 0, 5714, 5712, 1, 0, 0, 0, 5715, 5716, 1, 0, 0, 0, 5716, 5718, 3, 496, 248, 0, 5717, 5710, 1, 0, 0, 0, 5717, 5718, 1, 0, 0, 0, 5718, 5724, 1, 0, 0, 0, 5719, 5720, 3, 702, 351, 0, 5720, 5721, 5, 188, 0, 0, 5721, 5722, 3, 794, 397, 0, 5722, 5724, 1, 0, 0, 0, 5723, 5709, 1, 0, 0, 0, 5723, 5719, 1, 0, 0, 0, 5724, 499, 1, 0, 0, 0, 5725, 5734, 5, 169, 0, 0, 5726, 5734, 5, 693, 0, 0, 5727, 5728, 5, 331, 0, 0, 5728, 5734, 5, 882, 0, 0, 5729, 5730, 5, 441, 0, 0, 5730, 5734, 5, 882, 0, 0, 5731, 5732, 5, 651, 0, 0, 5732, 5734, 5, 882, 0, 0, 5733, 5725, 1, 0, 0, 0, 5733, 5726, 1, 0, 0, 0, 5733, 5727, 1, 0, 0, 0, 5733, 5729, 1, 0, 0, 0, 5733, 5731, 1, 0, 0, 0, 5734, 501, 1, 0, 0, 0, 5735, 5736, 5, 479, 0, 0, 5736, 5744, 3, 708, 354, 0, 5737, 5738, 5, 482, 0, 0, 5738, 5744, 3, 708, 354, 0, 5739, 5740, 5, 478, 0, 0, 5740, 5744, 3, 708, 354, 0, 5741, 5742, 5, 483, 0, 0, 5742, 5744, 3, 708, 354, 0, 5743, 5735, 1, 0, 0, 0, 5743, 5737, 1, 0, 0, 0, 5743, 5739, 1, 0, 0, 0, 5743, 5741, 1, 0, 0, 0, 5744, 503, 1, 0, 0, 0, 5745, 5746, 5, 529, 0, 0, 5746, 5753, 5, 390, 0, 0, 5747, 5754, 5, 42, 0, 0, 5748, 5754, 5, 500, 0, 0, 5749, 5750, 5, 87, 0, 0, 5750, 5751, 3, 708, 354, 0, 5751, 5752, 5, 698, 0, 0, 5752, 5754, 1, 0, 0, 0, 5753, 5747, 1, 0, 0, 0, 5753, 5748, 1, 0, 0, 0, 5753, 5749, 1, 0, 0, 0, 5753, 5754, 1, 0, 0, 0, 5754, 5784, 1, 0, 0, 0, 5755, 5756, 5, 529, 0, 0, 5756, 5759, 5, 420, 0, 0, 5757, 5760, 5, 42, 0, 0, 5758, 5760, 3, 708, 354, 0, 5759, 5757, 1, 0, 0, 0, 5759, 5758, 1, 0, 0, 0, 5760, 5784, 1, 0, 0, 0, 5761, 5762, 5, 529, 0, 0, 5762, 5763, 5, 581, 0, 0, 5763, 5768, 5, 87, 0, 0, 5764, 5769, 5, 42, 0, 0, 5765, 5766, 3, 708, 354, 0, 5766, 5767, 5, 698, 0, 0, 5767, 5769, 1, 0, 0, 0, 5768, 5764, 1, 0, 0, 0, 5768, 5765, 1, 0, 0, 0, 5769, 5784, 1, 0, 0, 0, 5770, 5771, 5, 529, 0, 0, 5771, 5772, 5, 144, 0, 0, 5772, 5774, 5, 36, 0, 0, 5773, 5775, 7, 84, 0, 0, 5774, 5773, 1, 0, 0, 0, 5774, 5775, 1, 0, 0, 0, 5775, 5784, 1, 0, 0, 0, 5776, 5777, 5, 395, 0, 0, 5777, 5784, 3, 708, 354, 0, 5778, 5781, 5, 530, 0, 0, 5779, 5782, 3, 708, 354, 0, 5780, 5782, 5, 669, 0, 0, 5781, 5779, 1, 0, 0, 0, 5781, 5780, 1, 0, 0, 0, 5782, 5784, 1, 0, 0, 0, 5783, 5745, 1, 0, 0, 0, 5783, 5755, 1, 0, 0, 0, 5783, 5761, 1, 0, 0, 0, 5783, 5770, 1, 0, 0, 0, 5783, 5776, 1, 0, 0, 0, 5783, 5778, 1, 0, 0, 0, 5784, 505, 1, 0, 0, 0, 5785, 5786, 5, 304, 0, 0, 5786, 5787, 7, 85, 0, 0, 5787, 507, 1, 0, 0, 0, 5788, 5791, 5, 423, 0, 0, 5789, 5790, 5, 194, 0, 0, 5790, 5792, 3, 702, 351, 0, 5791, 5789, 1, 0, 0, 0, 5791, 5792, 1, 0, 0, 0, 5792, 5801, 1, 0, 0, 0, 5793, 5797, 5, 20, 0, 0, 5794, 5798, 5, 882, 0, 0, 5795, 5796, 5, 829, 0, 0, 5796, 5798, 5, 529, 0, 0, 5797, 5794, 1, 0, 0, 0, 5797, 5795, 1, 0, 0, 0, 5798, 5802, 1, 0, 0, 0, 5799, 5800, 5, 13, 0, 0, 5800, 5802, 5, 882, 0, 0, 5801, 5793, 1, 0, 0, 0, 5801, 5799, 1, 0, 0, 0, 5802, 509, 1, 0, 0, 0, 5803, 5804, 3, 512, 256, 0, 5804, 5805, 5, 429, 0, 0, 5805, 5806, 5, 555, 0, 0, 5806, 5819, 1, 0, 0, 0, 5807, 5808, 3, 512, 256, 0, 5808, 5809, 5, 401, 0, 0, 5809, 5810, 5, 555, 0, 0, 5810, 5811, 5, 155, 0, 0, 5811, 5812, 5, 330, 0, 0, 5812, 5813, 5, 13, 0, 0, 5813, 5814, 5, 882, 0, 0, 5814, 5819, 1, 0, 0, 0, 5815, 5816, 3, 512, 256, 0, 5816, 5817, 5, 675, 0, 0, 5817, 5819, 1, 0, 0, 0, 5818, 5803, 1, 0, 0, 0, 5818, 5807, 1, 0, 0, 0, 5818, 5815, 1, 0, 0, 0, 5819, 511, 1, 0, 0, 0, 5820, 5821, 7, 86, 0, 0, 5821, 5822, 5, 394, 0, 0, 5822, 513, 1, 0, 0, 0, 5823, 5828, 3, 516, 258, 0, 5824, 5825, 5, 866, 0, 0, 5825, 5826, 3, 656, 328, 0, 5826, 5827, 5, 867, 0, 0, 5827, 5829, 1, 0, 0, 0, 5828, 5824, 1, 0, 0, 0, 5828, 5829, 1, 0, 0, 0, 5829, 515, 1, 0, 0, 0, 5830, 5832, 5, 7, 0, 0, 5831, 5833, 5, 734, 0, 0, 5832, 5831, 1, 0, 0, 0, 5832, 5833, 1, 0, 0, 0, 5833, 5924, 1, 0, 0, 0, 5834, 5836, 5, 8, 0, 0, 5835, 5837, 5, 743, 0, 0, 5836, 5835, 1, 0, 0, 0, 5836, 5837, 1, 0, 0, 0, 5837, 5924, 1, 0, 0, 0, 5838, 5846, 5, 34, 0, 0, 5839, 5840, 5, 660, 0, 0, 5840, 5847, 5, 752, 0, 0, 5841, 5847, 5, 743, 0, 0, 5842, 5847, 5, 684, 0, 0, 5843, 5847, 5, 678, 0, 0, 5844, 5847, 5, 658, 0, 0, 5845, 5847, 5, 582, 0, 0, 5846, 5839, 1, 0, 0, 0, 5846, 5841, 1, 0, 0, 0, 5846, 5842, 1, 0, 0, 0, 5846, 5843, 1, 0, 0, 0, 5846, 5844, 1, 0, 0, 0, 5846, 5845, 1, 0, 0, 0, 5846, 5847, 1, 0, 0, 0, 5847, 5924, 1, 0, 0, 0, 5848, 5924, 5, 44, 0, 0, 5849, 5851, 5, 51, 0, 0, 5850, 5852, 5, 582, 0, 0, 5851, 5850, 1, 0, 0, 0, 5851, 5852, 1, 0, 0, 0, 5852, 5924, 1, 0, 0, 0, 5853, 5924, 5, 385, 0, 0, 5854, 5924, 5, 717, 0, 0, 5855, 5924, 5, 718, 0, 0, 5856, 5857, 5, 73, 0, 0, 5857, 5924, 5, 121, 0, 0, 5858, 5924, 5, 82, 0, 0, 5859, 5924, 5, 86, 0, 0, 5860, 5861, 5, 104, 0, 0, 5861, 5924, 5, 752, 0, 0, 5862, 5924, 5, 735, 0, 0, 5863, 5924, 5, 547, 0, 0, 5864, 5924, 5, 138, 0, 0, 5865, 5924, 5, 736, 0, 0, 5866, 5867, 5, 572, 0, 0, 5867, 5924, 7, 87, 0, 0, 5868, 5924, 5, 154, 0, 0, 5869, 5870, 5, 157, 0, 0, 5870, 5924, 7, 88, 0, 0, 5871, 5924, 5, 749, 0, 0, 5872, 5924, 5, 750, 0, 0, 5873, 5924, 5, 178, 0, 0, 5874, 5924, 5, 185, 0, 0, 5875, 5924, 5, 186, 0, 0, 5876, 5924, 5, 705, 0, 0, 5877, 5924, 5, 706, 0, 0, 5878, 5924, 5, 707, 0, 0, 5879, 5924, 5, 709, 0, 0, 5880, 5924, 5, 710, 0, 0, 5881, 5924, 5, 711, 0, 0, 5882, 5924, 5, 712, 0, 0, 5883, 5924, 5, 714, 0, 0, 5884, 5924, 5, 715, 0, 0, 5885, 5924, 5, 716, 0, 0, 5886, 5924, 5, 719, 0, 0, 5887, 5924, 5, 720, 0, 0, 5888, 5924, 5, 721, 0, 0, 5889, 5924, 5, 722, 0, 0, 5890, 5924, 5, 723, 0, 0, 5891, 5924, 5, 724, 0, 0, 5892, 5924, 5, 725, 0, 0, 5893, 5924, 5, 726, 0, 0, 5894, 5924, 5, 727, 0, 0, 5895, 5924, 5, 728, 0, 0, 5896, 5924, 5, 731, 0, 0, 5897, 5924, 5, 732, 0, 0, 5898, 5924, 5, 733, 0, 0, 5899, 5924, 5, 737, 0, 0, 5900, 5924, 5, 738, 0, 0, 5901, 5924, 5, 740, 0, 0, 5902, 5924, 5, 741, 0, 0, 5903, 5924, 5, 742, 0, 0, 5904, 5924, 5, 745, 0, 0, 5905, 5924, 5, 746, 0, 0, 5906, 5924, 5, 747, 0, 0, 5907, 5924, 5, 160, 0, 0, 5908, 5924, 5, 748, 0, 0, 5909, 5924, 5, 836, 0, 0, 5910, 5924, 5, 751, 0, 0, 5911, 5924, 5, 753, 0, 0, 5912, 5924, 5, 838, 0, 0, 5913, 5924, 5, 754, 0, 0, 5914, 5924, 5, 755, 0, 0, 5915, 5916, 5, 103, 0, 0, 5916, 5917, 5, 68, 0, 0, 5917, 5924, 5, 744, 0, 0, 5918, 5919, 5, 154, 0, 0, 5919, 5920, 5, 88, 0, 0, 5920, 5924, 5, 744, 0, 0, 5921, 5922, 5, 729, 0, 0, 5922, 5924, 5, 730, 0, 0, 5923, 5830, 1, 0, 0, 0, 5923, 5834, 1, 0, 0, 0, 5923, 5838, 1, 0, 0, 0, 5923, 5848, 1, 0, 0, 0, 5923, 5849, 1, 0, 0, 0, 5923, 5853, 1, 0, 0, 0, 5923, 5854, 1, 0, 0, 0, 5923, 5855, 1, 0, 0, 0, 5923, 5856, 1, 0, 0, 0, 5923, 5858, 1, 0, 0, 0, 5923, 5859, 1, 0, 0, 0, 5923, 5860, 1, 0, 0, 0, 5923, 5862, 1, 0, 0, 0, 5923, 5863, 1, 0, 0, 0, 5923, 5864, 1, 0, 0, 0, 5923, 5865, 1, 0, 0, 0, 5923, 5866, 1, 0, 0, 0, 5923, 5868, 1, 0, 0, 0, 5923, 5869, 1, 0, 0, 0, 5923, 5871, 1, 0, 0, 0, 5923, 5872, 1, 0, 0, 0, 5923, 5873, 1, 0, 0, 0, 5923, 5874, 1, 0, 0, 0, 5923, 5875, 1, 0, 0, 0, 5923, 5876, 1, 0, 0, 0, 5923, 5877, 1, 0, 0, 0, 5923, 5878, 1, 0, 0, 0, 5923, 5879, 1, 0, 0, 0, 5923, 5880, 1, 0, 0, 0, 5923, 5881, 1, 0, 0, 0, 5923, 5882, 1, 0, 0, 0, 5923, 5883, 1, 0, 0, 0, 5923, 5884, 1, 0, 0, 0, 5923, 5885, 1, 0, 0, 0, 5923, 5886, 1, 0, 0, 0, 5923, 5887, 1, 0, 0, 0, 5923, 5888, 1, 0, 0, 0, 5923, 5889, 1, 0, 0, 0, 5923, 5890, 1, 0, 0, 0, 5923, 5891, 1, 0, 0, 0, 5923, 5892, 1, 0, 0, 0, 5923, 5893, 1, 0, 0, 0, 5923, 5894, 1, 0, 0, 0, 5923, 5895, 1, 0, 0, 0, 5923, 5896, 1, 0, 0, 0, 5923, 5897, 1, 0, 0, 0, 5923, 5898, 1, 0, 0, 0, 5923, 5899, 1, 0, 0, 0, 5923, 5900, 1, 0, 0, 0, 5923, 5901, 1, 0, 0, 0, 5923, 5902, 1, 0, 0, 0, 5923, 5903, 1, 0, 0, 0, 5923, 5904, 1, 0, 0, 0, 5923, 5905, 1, 0, 0, 0, 5923, 5906, 1, 0, 0, 0, 5923, 5907, 1, 0, 0, 0, 5923, 5908, 1, 0, 0, 0, 5923, 5909, 1, 0, 0, 0, 5923, 5910, 1, 0, 0, 0, 5923, 5911, 1, 0, 0, 0, 5923, 5912, 1, 0, 0, 0, 5923, 5913, 1, 0, 0, 0, 5923, 5914, 1, 0, 0, 0, 5923, 5915, 1, 0, 0, 0, 5923, 5918, 1, 0, 0, 0, 5923, 5921, 1, 0, 0, 0, 5924, 517, 1, 0, 0, 0, 5925, 5942, 5, 850, 0, 0, 5926, 5927, 5, 850, 0, 0, 5927, 5928, 5, 865, 0, 0, 5928, 5942, 5, 850, 0, 0, 5929, 5930, 3, 702, 351, 0, 5930, 5931, 5, 865, 0, 0, 5931, 5932, 5, 850, 0, 0, 5932, 5942, 1, 0, 0, 0, 5933, 5934, 3, 702, 351, 0, 5934, 5935, 5, 865, 0, 0, 5935, 5936, 3, 702, 351, 0, 5936, 5942, 1, 0, 0, 0, 5937, 5938, 3, 702, 351, 0, 5938, 5939, 3, 706, 353, 0, 5939, 5942, 1, 0, 0, 0, 5940, 5942, 3, 702, 351, 0, 5941, 5925, 1, 0, 0, 0, 5941, 5926, 1, 0, 0, 0, 5941, 5929, 1, 0, 0, 0, 5941, 5933, 1, 0, 0, 0, 5941, 5937, 1, 0, 0, 0, 5941, 5940, 1, 0, 0, 0, 5942, 519, 1, 0, 0, 0, 5943, 5944, 3, 680, 340, 0, 5944, 5945, 5, 176, 0, 0, 5945, 5946, 3, 680, 340, 0, 5946, 521, 1, 0, 0, 0, 5947, 5949, 5, 10, 0, 0, 5948, 5950, 3, 532, 266, 0, 5949, 5948, 1, 0, 0, 0, 5949, 5950, 1, 0, 0, 0, 5950, 5951, 1, 0, 0, 0, 5951, 5952, 5, 173, 0, 0, 5952, 5996, 3, 646, 323, 0, 5953, 5955, 5, 10, 0, 0, 5954, 5956, 3, 532, 266, 0, 5955, 5954, 1, 0, 0, 0, 5955, 5956, 1, 0, 0, 0, 5956, 5957, 1, 0, 0, 0, 5957, 5958, 5, 173, 0, 0, 5958, 5959, 3, 648, 324, 0, 5959, 5960, 5, 185, 0, 0, 5960, 5961, 5, 77, 0, 0, 5961, 5962, 5, 119, 0, 0, 5962, 5967, 3, 656, 328, 0, 5963, 5964, 5, 194, 0, 0, 5964, 5965, 3, 708, 354, 0, 5965, 5966, 5, 19, 0, 0, 5966, 5968, 1, 0, 0, 0, 5967, 5963, 1, 0, 0, 0, 5967, 5968, 1, 0, 0, 0, 5968, 5996, 1, 0, 0, 0, 5969, 5971, 5, 10, 0, 0, 5970, 5972, 3, 532, 266, 0, 5971, 5970, 1, 0, 0, 0, 5971, 5972, 1, 0, 0, 0, 5972, 5973, 1, 0, 0, 0, 5973, 5974, 5, 173, 0, 0, 5974, 5975, 3, 648, 324, 0, 5975, 5976, 5, 185, 0, 0, 5976, 5977, 5, 77, 0, 0, 5977, 5978, 5, 119, 0, 0, 5978, 5982, 3, 658, 329, 0, 5979, 5980, 5, 188, 0, 0, 5980, 5981, 5, 360, 0, 0, 5981, 5983, 5, 882, 0, 0, 5982, 5979, 1, 0, 0, 0, 5982, 5983, 1, 0, 0, 0, 5983, 5996, 1, 0, 0, 0, 5984, 5986, 5, 10, 0, 0, 5985, 5987, 3, 532, 266, 0, 5986, 5985, 1, 0, 0, 0, 5986, 5987, 1, 0, 0, 0, 5987, 5988, 1, 0, 0, 0, 5988, 5989, 5, 173, 0, 0, 5989, 5990, 3, 648, 324, 0, 5990, 5991, 5, 51, 0, 0, 5991, 5992, 5, 77, 0, 0, 5992, 5993, 5, 119, 0, 0, 5993, 5994, 3, 656, 328, 0, 5994, 5996, 1, 0, 0, 0, 5995, 5947, 1, 0, 0, 0, 5995, 5953, 1, 0, 0, 0, 5995, 5969, 1, 0, 0, 0, 5995, 5984, 1, 0, 0, 0, 5996, 523, 1, 0, 0, 0, 5997, 5998, 5, 27, 0, 0, 5998, 5999, 5, 173, 0, 0, 5999, 6003, 3, 646, 323, 0, 6000, 6002, 3, 534, 267, 0, 6001, 6000, 1, 0, 0, 0, 6002, 6005, 1, 0, 0, 0, 6003, 6001, 1, 0, 0, 0, 6003, 6004, 1, 0, 0, 0, 6004, 525, 1, 0, 0, 0, 6005, 6003, 1, 0, 0, 0, 6006, 6007, 5, 329, 0, 0, 6007, 6008, 5, 173, 0, 0, 6008, 6010, 3, 646, 323, 0, 6009, 6011, 7, 89, 0, 0, 6010, 6009, 1, 0, 0, 0, 6010, 6011, 1, 0, 0, 0, 6011, 527, 1, 0, 0, 0, 6012, 6014, 5, 120, 0, 0, 6013, 6015, 3, 532, 266, 0, 6014, 6013, 1, 0, 0, 0, 6014, 6015, 1, 0, 0, 0, 6015, 6016, 1, 0, 0, 0, 6016, 6017, 7, 60, 0, 0, 6017, 6018, 3, 646, 323, 0, 6018, 529, 1, 0, 0, 0, 6019, 6021, 5, 562, 0, 0, 6020, 6022, 3, 532, 266, 0, 6021, 6020, 1, 0, 0, 0, 6021, 6022, 1, 0, 0, 0, 6022, 6023, 1, 0, 0, 0, 6023, 6024, 5, 173, 0, 0, 6024, 6026, 3, 646, 323, 0, 6025, 6027, 5, 549, 0, 0, 6026, 6025, 1, 0, 0, 0, 6026, 6027, 1, 0, 0, 0, 6027, 6029, 1, 0, 0, 0, 6028, 6030, 5, 392, 0, 0, 6029, 6028, 1, 0, 0, 0, 6029, 6030, 1, 0, 0, 0, 6030, 6032, 1, 0, 0, 0, 6031, 6033, 5, 679, 0, 0, 6032, 6031, 1, 0, 0, 0, 6032, 6033, 1, 0, 0, 0, 6033, 531, 1, 0, 0, 0, 6034, 6035, 7, 90, 0, 0, 6035, 533, 1, 0, 0, 0, 6036, 6037, 5, 65, 0, 0, 6037, 6044, 5, 677, 0, 0, 6038, 6044, 5, 549, 0, 0, 6039, 6044, 5, 396, 0, 0, 6040, 6044, 5, 484, 0, 0, 6041, 6044, 5, 392, 0, 0, 6042, 6044, 5, 327, 0, 0, 6043, 6036, 1, 0, 0, 0, 6043, 6038, 1, 0, 0, 0, 6043, 6039, 1, 0, 0, 0, 6043, 6040, 1, 0, 0, 0, 6043, 6041, 1, 0, 0, 0, 6043, 6042, 1, 0, 0, 0, 6044, 535, 1, 0, 0, 0, 6045, 6047, 5, 34, 0, 0, 6046, 6048, 5, 307, 0, 0, 6047, 6046, 1, 0, 0, 0, 6047, 6048, 1, 0, 0, 0, 6048, 6049, 1, 0, 0, 0, 6049, 6051, 5, 409, 0, 0, 6050, 6052, 3, 756, 378, 0, 6051, 6050, 1, 0, 0, 0, 6051, 6052, 1, 0, 0, 0, 6052, 6053, 1, 0, 0, 0, 6053, 6054, 3, 626, 313, 0, 6054, 6055, 5, 580, 0, 0, 6055, 6056, 7, 91, 0, 0, 6056, 6057, 5, 603, 0, 0, 6057, 6058, 5, 882, 0, 0, 6058, 537, 1, 0, 0, 0, 6059, 6060, 5, 432, 0, 0, 6060, 6061, 5, 344, 0, 0, 6061, 6066, 3, 702, 351, 0, 6062, 6063, 5, 868, 0, 0, 6063, 6065, 3, 702, 351, 0, 6064, 6062, 1, 0, 0, 0, 6065, 6068, 1, 0, 0, 0, 6066, 6064, 1, 0, 0, 0, 6066, 6067, 1, 0, 0, 0, 6067, 6078, 1, 0, 0, 0, 6068, 6066, 1, 0, 0, 0, 6069, 6070, 5, 155, 0, 0, 6070, 6075, 3, 540, 270, 0, 6071, 6072, 5, 868, 0, 0, 6072, 6074, 3, 540, 270, 0, 6073, 6071, 1, 0, 0, 0, 6074, 6077, 1, 0, 0, 0, 6075, 6073, 1, 0, 0, 0, 6075, 6076, 1, 0, 0, 0, 6076, 6079, 1, 0, 0, 0, 6077, 6075, 1, 0, 0, 0, 6078, 6069, 1, 0, 0, 0, 6078, 6079, 1, 0, 0, 0, 6079, 539, 1, 0, 0, 0, 6080, 6081, 7, 92, 0, 0, 6081, 6082, 3, 698, 349, 0, 6082, 6083, 5, 857, 0, 0, 6083, 6084, 3, 800, 400, 0, 6084, 541, 1, 0, 0, 0, 6085, 6086, 5, 673, 0, 0, 6086, 6087, 5, 344, 0, 0, 6087, 6092, 3, 702, 351, 0, 6088, 6089, 5, 868, 0, 0, 6089, 6091, 3, 702, 351, 0, 6090, 6088, 1, 0, 0, 0, 6091, 6094, 1, 0, 0, 0, 6092, 6090, 1, 0, 0, 0, 6092, 6093, 1, 0, 0, 0, 6093, 543, 1, 0, 0, 0, 6094, 6092, 1, 0, 0, 0, 6095, 6096, 5, 432, 0, 0, 6096, 6097, 5, 534, 0, 0, 6097, 6098, 3, 702, 351, 0, 6098, 6099, 5, 603, 0, 0, 6099, 6100, 5, 882, 0, 0, 6100, 545, 1, 0, 0, 0, 6101, 6102, 5, 673, 0, 0, 6102, 6103, 5, 534, 0, 0, 6103, 6104, 3, 702, 351, 0, 6104, 547, 1, 0, 0, 0, 6105, 6106, 5, 713, 0, 0, 6106, 6107, 5, 450, 0, 0, 6107, 6108, 5, 360, 0, 0, 6108, 6110, 5, 367, 0, 0, 6109, 6111, 5, 857, 0, 0, 6110, 6109, 1, 0, 0, 0, 6110, 6111, 1, 0, 0, 0, 6111, 6112, 1, 0, 0, 0, 6112, 6136, 5, 882, 0, 0, 6113, 6114, 5, 713, 0, 0, 6114, 6115, 5, 433, 0, 0, 6115, 6116, 5, 68, 0, 0, 6116, 6117, 3, 672, 336, 0, 6117, 6118, 5, 423, 0, 0, 6118, 6119, 5, 20, 0, 0, 6119, 6126, 5, 882, 0, 0, 6120, 6121, 5, 360, 0, 0, 6121, 6123, 5, 367, 0, 0, 6122, 6124, 5, 857, 0, 0, 6123, 6122, 1, 0, 0, 0, 6123, 6124, 1, 0, 0, 0, 6124, 6125, 1, 0, 0, 0, 6125, 6127, 5, 882, 0, 0, 6126, 6120, 1, 0, 0, 0, 6126, 6127, 1, 0, 0, 0, 6127, 6133, 1, 0, 0, 0, 6128, 6130, 5, 144, 0, 0, 6129, 6131, 5, 502, 0, 0, 6130, 6129, 1, 0, 0, 0, 6130, 6131, 1, 0, 0, 0, 6131, 6132, 1, 0, 0, 0, 6132, 6134, 5, 169, 0, 0, 6133, 6128, 1, 0, 0, 0, 6133, 6134, 1, 0, 0, 0, 6134, 6136, 1, 0, 0, 0, 6135, 6105, 1, 0, 0, 0, 6135, 6113, 1, 0, 0, 0, 6136, 549, 1, 0, 0, 0, 6137, 6138, 5, 155, 0, 0, 6138, 6139, 3, 554, 277, 0, 6139, 6142, 7, 93, 0, 0, 6140, 6143, 3, 800, 400, 0, 6141, 6143, 5, 119, 0, 0, 6142, 6140, 1, 0, 0, 0, 6142, 6141, 1, 0, 0, 0, 6143, 6153, 1, 0, 0, 0, 6144, 6145, 5, 868, 0, 0, 6145, 6146, 3, 554, 277, 0, 6146, 6149, 7, 93, 0, 0, 6147, 6150, 3, 800, 400, 0, 6148, 6150, 5, 119, 0, 0, 6149, 6147, 1, 0, 0, 0, 6149, 6148, 1, 0, 0, 0, 6150, 6152, 1, 0, 0, 0, 6151, 6144, 1, 0, 0, 0, 6152, 6155, 1, 0, 0, 0, 6153, 6151, 1, 0, 0, 0, 6153, 6154, 1, 0, 0, 0, 6154, 6190, 1, 0, 0, 0, 6155, 6153, 1, 0, 0, 0, 6156, 6157, 5, 155, 0, 0, 6157, 6160, 3, 54, 27, 0, 6158, 6161, 3, 684, 342, 0, 6159, 6161, 5, 42, 0, 0, 6160, 6158, 1, 0, 0, 0, 6160, 6159, 1, 0, 0, 0, 6161, 6190, 1, 0, 0, 0, 6162, 6163, 5, 155, 0, 0, 6163, 6170, 5, 497, 0, 0, 6164, 6167, 3, 684, 342, 0, 6165, 6166, 5, 28, 0, 0, 6166, 6168, 3, 686, 343, 0, 6167, 6165, 1, 0, 0, 0, 6167, 6168, 1, 0, 0, 0, 6168, 6171, 1, 0, 0, 0, 6169, 6171, 5, 42, 0, 0, 6170, 6164, 1, 0, 0, 0, 6170, 6169, 1, 0, 0, 0, 6171, 6190, 1, 0, 0, 0, 6172, 6190, 3, 484, 242, 0, 6173, 6190, 3, 336, 168, 0, 6174, 6190, 3, 334, 167, 0, 6175, 6176, 5, 155, 0, 0, 6176, 6177, 3, 698, 349, 0, 6177, 6178, 7, 93, 0, 0, 6178, 6186, 3, 800, 400, 0, 6179, 6180, 5, 868, 0, 0, 6180, 6181, 3, 698, 349, 0, 6181, 6182, 7, 93, 0, 0, 6182, 6183, 3, 800, 400, 0, 6183, 6185, 1, 0, 0, 0, 6184, 6179, 1, 0, 0, 0, 6185, 6188, 1, 0, 0, 0, 6186, 6184, 1, 0, 0, 0, 6186, 6187, 1, 0, 0, 0, 6187, 6190, 1, 0, 0, 0, 6188, 6186, 1, 0, 0, 0, 6189, 6137, 1, 0, 0, 0, 6189, 6156, 1, 0, 0, 0, 6189, 6162, 1, 0, 0, 0, 6189, 6172, 1, 0, 0, 0, 6189, 6173, 1, 0, 0, 0, 6189, 6174, 1, 0, 0, 0, 6189, 6175, 1, 0, 0, 0, 6190, 551, 1, 0, 0, 0, 6191, 6192, 5, 157, 0, 0, 6192, 6193, 7, 62, 0, 0, 6193, 6376, 5, 452, 0, 0, 6194, 6195, 5, 157, 0, 0, 6195, 6196, 7, 94, 0, 0, 6196, 6199, 5, 386, 0, 0, 6197, 6198, 5, 80, 0, 0, 6198, 6200, 5, 882, 0, 0, 6199, 6197, 1, 0, 0, 0, 6199, 6200, 1, 0, 0, 0, 6200, 6203, 1, 0, 0, 0, 6201, 6202, 5, 68, 0, 0, 6202, 6204, 3, 708, 354, 0, 6203, 6201, 1, 0, 0, 0, 6203, 6204, 1, 0, 0, 0, 6204, 6212, 1, 0, 0, 0, 6205, 6209, 5, 100, 0, 0, 6206, 6207, 3, 708, 354, 0, 6207, 6208, 5, 868, 0, 0, 6208, 6210, 1, 0, 0, 0, 6209, 6206, 1, 0, 0, 0, 6209, 6210, 1, 0, 0, 0, 6210, 6211, 1, 0, 0, 0, 6211, 6213, 3, 708, 354, 0, 6212, 6205, 1, 0, 0, 0, 6212, 6213, 1, 0, 0, 0, 6213, 6215, 1, 0, 0, 0, 6214, 6216, 3, 384, 192, 0, 6215, 6214, 1, 0, 0, 0, 6215, 6216, 1, 0, 0, 0, 6216, 6376, 1, 0, 0, 0, 6217, 6218, 5, 157, 0, 0, 6218, 6220, 3, 556, 278, 0, 6219, 6221, 3, 558, 279, 0, 6220, 6219, 1, 0, 0, 0, 6220, 6221, 1, 0, 0, 0, 6221, 6376, 1, 0, 0, 0, 6222, 6224, 5, 157, 0, 0, 6223, 6225, 5, 392, 0, 0, 6224, 6223, 1, 0, 0, 0, 6224, 6225, 1, 0, 0, 0, 6225, 6227, 1, 0, 0, 0, 6226, 6228, 5, 408, 0, 0, 6227, 6226, 1, 0, 0, 0, 6227, 6228, 1, 0, 0, 0, 6228, 6229, 1, 0, 0, 0, 6229, 6230, 7, 46, 0, 0, 6230, 6231, 7, 95, 0, 0, 6231, 6234, 3, 648, 324, 0, 6232, 6233, 7, 95, 0, 0, 6233, 6235, 3, 624, 312, 0, 6234, 6232, 1, 0, 0, 0, 6234, 6235, 1, 0, 0, 0, 6235, 6237, 1, 0, 0, 0, 6236, 6238, 3, 558, 279, 0, 6237, 6236, 1, 0, 0, 0, 6237, 6238, 1, 0, 0, 0, 6238, 6376, 1, 0, 0, 0, 6239, 6240, 5, 157, 0, 0, 6240, 6241, 5, 34, 0, 0, 6241, 6243, 7, 0, 0, 0, 6242, 6244, 3, 756, 378, 0, 6243, 6242, 1, 0, 0, 0, 6243, 6244, 1, 0, 0, 0, 6244, 6245, 1, 0, 0, 0, 6245, 6376, 3, 624, 312, 0, 6246, 6247, 5, 157, 0, 0, 6247, 6248, 5, 34, 0, 0, 6248, 6249, 7, 96, 0, 0, 6249, 6376, 3, 698, 349, 0, 6250, 6251, 5, 157, 0, 0, 6251, 6252, 5, 34, 0, 0, 6252, 6253, 5, 409, 0, 0, 6253, 6376, 3, 628, 314, 0, 6254, 6255, 5, 157, 0, 0, 6255, 6256, 5, 34, 0, 0, 6256, 6257, 5, 684, 0, 0, 6257, 6376, 3, 632, 316, 0, 6258, 6259, 5, 157, 0, 0, 6259, 6260, 5, 34, 0, 0, 6260, 6261, 5, 173, 0, 0, 6261, 6376, 3, 648, 324, 0, 6262, 6263, 5, 157, 0, 0, 6263, 6264, 5, 34, 0, 0, 6264, 6265, 5, 678, 0, 0, 6265, 6376, 3, 680, 340, 0, 6266, 6267, 5, 157, 0, 0, 6267, 6268, 5, 380, 0, 0, 6268, 6269, 3, 688, 344, 0, 6269, 6270, 7, 97, 0, 0, 6270, 6376, 1, 0, 0, 0, 6271, 6272, 5, 157, 0, 0, 6272, 6376, 3, 560, 280, 0, 6273, 6274, 5, 157, 0, 0, 6274, 6282, 7, 98, 0, 0, 6275, 6279, 5, 100, 0, 0, 6276, 6277, 3, 708, 354, 0, 6277, 6278, 5, 868, 0, 0, 6278, 6280, 1, 0, 0, 0, 6279, 6276, 1, 0, 0, 0, 6279, 6280, 1, 0, 0, 0, 6280, 6281, 1, 0, 0, 0, 6281, 6283, 3, 708, 354, 0, 6282, 6275, 1, 0, 0, 0, 6282, 6283, 1, 0, 0, 0, 6283, 6376, 1, 0, 0, 0, 6284, 6285, 5, 157, 0, 0, 6285, 6286, 5, 262, 0, 0, 6286, 6287, 5, 866, 0, 0, 6287, 6288, 5, 850, 0, 0, 6288, 6289, 5, 867, 0, 0, 6289, 6376, 7, 98, 0, 0, 6290, 6291, 5, 157, 0, 0, 6291, 6294, 3, 562, 281, 0, 6292, 6293, 7, 95, 0, 0, 6293, 6295, 3, 624, 312, 0, 6294, 6292, 1, 0, 0, 0, 6294, 6295, 1, 0, 0, 0, 6295, 6297, 1, 0, 0, 0, 6296, 6298, 3, 558, 279, 0, 6297, 6296, 1, 0, 0, 0, 6297, 6298, 1, 0, 0, 0, 6298, 6376, 1, 0, 0, 0, 6299, 6300, 5, 157, 0, 0, 6300, 6301, 5, 132, 0, 0, 6301, 6302, 5, 336, 0, 0, 6302, 6376, 3, 698, 349, 0, 6303, 6304, 5, 157, 0, 0, 6304, 6305, 5, 409, 0, 0, 6305, 6306, 5, 336, 0, 0, 6306, 6376, 3, 628, 314, 0, 6307, 6308, 5, 157, 0, 0, 6308, 6315, 5, 414, 0, 0, 6309, 6310, 5, 65, 0, 0, 6310, 6313, 3, 652, 326, 0, 6311, 6312, 5, 188, 0, 0, 6312, 6314, 3, 650, 325, 0, 6313, 6311, 1, 0, 0, 0, 6313, 6314, 1, 0, 0, 0, 6314, 6316, 1, 0, 0, 0, 6315, 6309, 1, 0, 0, 0, 6315, 6316, 1, 0, 0, 0, 6316, 6376, 1, 0, 0, 0, 6317, 6319, 5, 157, 0, 0, 6318, 6320, 5, 392, 0, 0, 6319, 6318, 1, 0, 0, 0, 6319, 6320, 1, 0, 0, 0, 6320, 6321, 1, 0, 0, 0, 6321, 6322, 7, 99, 0, 0, 6322, 6323, 7, 95, 0, 0, 6323, 6326, 3, 648, 324, 0, 6324, 6325, 7, 95, 0, 0, 6325, 6327, 3, 624, 312, 0, 6326, 6324, 1, 0, 0, 0, 6326, 6327, 1, 0, 0, 0, 6327, 6330, 1, 0, 0, 0, 6328, 6329, 5, 192, 0, 0, 6329, 6331, 3, 800, 400, 0, 6330, 6328, 1, 0, 0, 0, 6330, 6331, 1, 0, 0, 0, 6331, 6376, 1, 0, 0, 0, 6332, 6333, 5, 157, 0, 0, 6333, 6334, 5, 516, 0, 0, 6334, 6337, 5, 752, 0, 0, 6335, 6336, 7, 95, 0, 0, 6336, 6338, 3, 624, 312, 0, 6337, 6335, 1, 0, 0, 0, 6337, 6338, 1, 0, 0, 0, 6338, 6340, 1, 0, 0, 0, 6339, 6341, 3, 558, 279, 0, 6340, 6339, 1, 0, 0, 0, 6340, 6341, 1, 0, 0, 0, 6341, 6376, 1, 0, 0, 0, 6342, 6343, 5, 157, 0, 0, 6343, 6352, 5, 545, 0, 0, 6344, 6349, 3, 564, 282, 0, 6345, 6346, 5, 868, 0, 0, 6346, 6348, 3, 564, 282, 0, 6347, 6345, 1, 0, 0, 0, 6348, 6351, 1, 0, 0, 0, 6349, 6347, 1, 0, 0, 0, 6349, 6350, 1, 0, 0, 0, 6350, 6353, 1, 0, 0, 0, 6351, 6349, 1, 0, 0, 0, 6352, 6344, 1, 0, 0, 0, 6352, 6353, 1, 0, 0, 0, 6353, 6357, 1, 0, 0, 0, 6354, 6355, 5, 65, 0, 0, 6355, 6356, 5, 548, 0, 0, 6356, 6358, 3, 708, 354, 0, 6357, 6354, 1, 0, 0, 0, 6357, 6358, 1, 0, 0, 0, 6358, 6365, 1, 0, 0, 0, 6359, 6360, 5, 100, 0, 0, 6360, 6363, 3, 708, 354, 0, 6361, 6362, 5, 509, 0, 0, 6362, 6364, 3, 708, 354, 0, 6363, 6361, 1, 0, 0, 0, 6363, 6364, 1, 0, 0, 0, 6364, 6366, 1, 0, 0, 0, 6365, 6359, 1, 0, 0, 0, 6365, 6366, 1, 0, 0, 0, 6366, 6376, 1, 0, 0, 0, 6367, 6368, 5, 157, 0, 0, 6368, 6369, 7, 63, 0, 0, 6369, 6371, 5, 645, 0, 0, 6370, 6372, 3, 384, 192, 0, 6371, 6370, 1, 0, 0, 0, 6371, 6372, 1, 0, 0, 0, 6372, 6376, 1, 0, 0, 0, 6373, 6374, 5, 157, 0, 0, 6374, 6376, 5, 564, 0, 0, 6375, 6191, 1, 0, 0, 0, 6375, 6194, 1, 0, 0, 0, 6375, 6217, 1, 0, 0, 0, 6375, 6222, 1, 0, 0, 0, 6375, 6239, 1, 0, 0, 0, 6375, 6246, 1, 0, 0, 0, 6375, 6250, 1, 0, 0, 0, 6375, 6254, 1, 0, 0, 0, 6375, 6258, 1, 0, 0, 0, 6375, 6262, 1, 0, 0, 0, 6375, 6266, 1, 0, 0, 0, 6375, 6271, 1, 0, 0, 0, 6375, 6273, 1, 0, 0, 0, 6375, 6284, 1, 0, 0, 0, 6375, 6290, 1, 0, 0, 0, 6375, 6299, 1, 0, 0, 0, 6375, 6303, 1, 0, 0, 0, 6375, 6307, 1, 0, 0, 0, 6375, 6317, 1, 0, 0, 0, 6375, 6332, 1, 0, 0, 0, 6375, 6342, 1, 0, 0, 0, 6375, 6367, 1, 0, 0, 0, 6375, 6373, 1, 0, 0, 0, 6376, 553, 1, 0, 0, 0, 6377, 6388, 5, 892, 0, 0, 6378, 6388, 5, 893, 0, 0, 6379, 6380, 5, 870, 0, 0, 6380, 6382, 5, 870, 0, 0, 6381, 6379, 1, 0, 0, 0, 6381, 6382, 1, 0, 0, 0, 6382, 6383, 1, 0, 0, 0, 6383, 6385, 7, 100, 0, 0, 6384, 6381, 1, 0, 0, 0, 6384, 6385, 1, 0, 0, 0, 6385, 6386, 1, 0, 0, 0, 6386, 6388, 3, 702, 351, 0, 6387, 6377, 1, 0, 0, 0, 6387, 6378, 1, 0, 0, 0, 6387, 6384, 1, 0, 0, 0, 6388, 555, 1, 0, 0, 0, 6389, 6390, 5, 26, 0, 0, 6390, 6404, 5, 155, 0, 0, 6391, 6404, 5, 823, 0, 0, 6392, 6404, 5, 824, 0, 0, 6393, 6404, 5, 40, 0, 0, 6394, 6404, 5, 153, 0, 0, 6395, 6396, 5, 409, 0, 0, 6396, 6404, 5, 645, 0, 0, 6397, 6398, 5, 132, 0, 0, 6398, 6404, 5, 645, 0, 0, 6399, 6401, 7, 61, 0, 0, 6400, 6399, 1, 0, 0, 0, 6400, 6401, 1, 0, 0, 0, 6401, 6402, 1, 0, 0, 0, 6402, 6404, 7, 101, 0, 0, 6403, 6389, 1, 0, 0, 0, 6403, 6391, 1, 0, 0, 0, 6403, 6392, 1, 0, 0, 0, 6403, 6393, 1, 0, 0, 0, 6403, 6394, 1, 0, 0, 0, 6403, 6395, 1, 0, 0, 0, 6403, 6397, 1, 0, 0, 0, 6403, 6400, 1, 0, 0, 0, 6404, 557, 1, 0, 0, 0, 6405, 6406, 5, 99, 0, 0, 6406, 6410, 5, 882, 0, 0, 6407, 6408, 5, 192, 0, 0, 6408, 6410, 3, 800, 400, 0, 6409, 6405, 1, 0, 0, 0, 6409, 6407, 1, 0, 0, 0, 6410, 559, 1, 0, 0, 0, 6411, 6413, 5, 647, 0, 0, 6412, 6411, 1, 0, 0, 0, 6412, 6413, 1, 0, 0, 0, 6413, 6414, 1, 0, 0, 0, 6414, 6429, 5, 381, 0, 0, 6415, 6416, 5, 453, 0, 0, 6416, 6429, 5, 645, 0, 0, 6417, 6429, 5, 536, 0, 0, 6418, 6429, 5, 734, 0, 0, 6419, 6421, 5, 408, 0, 0, 6420, 6419, 1, 0, 0, 0, 6420, 6421, 1, 0, 0, 0, 6421, 6422, 1, 0, 0, 0, 6422, 6429, 5, 544, 0, 0, 6423, 6429, 5, 546, 0, 0, 6424, 6425, 5, 598, 0, 0, 6425, 6429, 5, 422, 0, 0, 6426, 6429, 5, 312, 0, 0, 6427, 6429, 5, 356, 0, 0, 6428, 6412, 1, 0, 0, 0, 6428, 6415, 1, 0, 0, 0, 6428, 6417, 1, 0, 0, 0, 6428, 6418, 1, 0, 0, 0, 6428, 6420, 1, 0, 0, 0, 6428, 6423, 1, 0, 0, 0, 6428, 6424, 1, 0, 0, 0, 6428, 6426, 1, 0, 0, 0, 6428, 6427, 1, 0, 0, 0, 6429, 561, 1, 0, 0, 0, 6430, 6442, 5, 386, 0, 0, 6431, 6432, 5, 173, 0, 0, 6432, 6442, 5, 645, 0, 0, 6433, 6435, 5, 392, 0, 0, 6434, 6433, 1, 0, 0, 0, 6434, 6435, 1, 0, 0, 0, 6435, 6437, 1, 0, 0, 0, 6436, 6438, 5, 408, 0, 0, 6437, 6436, 1, 0, 0, 0, 6437, 6438, 1, 0, 0, 0, 6438, 6439, 1, 0, 0, 0, 6439, 6442, 5, 752, 0, 0, 6440, 6442, 5, 667, 0, 0, 6441, 6430, 1, 0, 0, 0, 6441, 6431, 1, 0, 0, 0, 6441, 6434, 1, 0, 0, 0, 6441, 6440, 1, 0, 0, 0, 6442, 563, 1, 0, 0, 0, 6443, 6456, 5, 7, 0, 0, 6444, 6445, 5, 320, 0, 0, 6445, 6456, 5, 437, 0, 0, 6446, 6447, 5, 355, 0, 0, 6447, 6456, 5, 656, 0, 0, 6448, 6456, 5, 358, 0, 0, 6449, 6456, 5, 439, 0, 0, 6450, 6456, 5, 802, 0, 0, 6451, 6452, 5, 521, 0, 0, 6452, 6456, 5, 397, 0, 0, 6453, 6456, 5, 605, 0, 0, 6454, 6456, 5, 655, 0, 0, 6455, 6443, 1, 0, 0, 0, 6455, 6444, 1, 0, 0, 0, 6455, 6446, 1, 0, 0, 0, 6455, 6448, 1, 0, 0, 0, 6455, 6449, 1, 0, 0, 0, 6455, 6450, 1, 0, 0, 0, 6455, 6451, 1, 0, 0, 0, 6455, 6453, 1, 0, 0, 0, 6455, 6454, 1, 0, 0, 0, 6456, 565, 1, 0, 0, 0, 6457, 6458, 5, 318, 0, 0, 6458, 6459, 5, 882, 0, 0, 6459, 567, 1, 0, 0, 0, 6460, 6461, 5, 324, 0, 0, 6461, 6479, 5, 82, 0, 0, 6462, 6467, 3, 588, 294, 0, 6463, 6464, 5, 868, 0, 0, 6464, 6466, 3, 588, 294, 0, 6465, 6463, 1, 0, 0, 0, 6466, 6469, 1, 0, 0, 0, 6467, 6465, 1, 0, 0, 0, 6467, 6468, 1, 0, 0, 0, 6468, 6480, 1, 0, 0, 0, 6469, 6467, 1, 0, 0, 0, 6470, 6471, 3, 648, 324, 0, 6471, 6472, 5, 130, 0, 0, 6472, 6475, 5, 866, 0, 0, 6473, 6476, 3, 666, 333, 0, 6474, 6476, 5, 7, 0, 0, 6475, 6473, 1, 0, 0, 0, 6475, 6474, 1, 0, 0, 0, 6476, 6477, 1, 0, 0, 0, 6477, 6478, 5, 867, 0, 0, 6478, 6480, 1, 0, 0, 0, 6479, 6462, 1, 0, 0, 0, 6479, 6470, 1, 0, 0, 0, 6480, 6481, 1, 0, 0, 0, 6481, 6482, 5, 80, 0, 0, 6482, 6483, 3, 624, 312, 0, 6483, 569, 1, 0, 0, 0, 6484, 6486, 5, 404, 0, 0, 6485, 6487, 3, 532, 266, 0, 6486, 6485, 1, 0, 0, 0, 6486, 6487, 1, 0, 0, 0, 6487, 6488, 1, 0, 0, 0, 6488, 6493, 3, 590, 295, 0, 6489, 6490, 5, 868, 0, 0, 6490, 6492, 3, 590, 295, 0, 6491, 6489, 1, 0, 0, 0, 6492, 6495, 1, 0, 0, 0, 6493, 6491, 1, 0, 0, 0, 6493, 6494, 1, 0, 0, 0, 6494, 571, 1, 0, 0, 0, 6495, 6493, 1, 0, 0, 0, 6496, 6498, 5, 94, 0, 0, 6497, 6499, 7, 102, 0, 0, 6498, 6497, 1, 0, 0, 0, 6498, 6499, 1, 0, 0, 0, 6499, 6500, 1, 0, 0, 0, 6500, 6501, 3, 800, 400, 0, 6501, 573, 1, 0, 0, 0, 6502, 6503, 5, 103, 0, 0, 6503, 6504, 5, 82, 0, 0, 6504, 6505, 5, 88, 0, 0, 6505, 6506, 5, 324, 0, 0, 6506, 6511, 3, 594, 297, 0, 6507, 6508, 5, 868, 0, 0, 6508, 6510, 3, 594, 297, 0, 6509, 6507, 1, 0, 0, 0, 6510, 6513, 1, 0, 0, 0, 6511, 6509, 1, 0, 0, 0, 6511, 6512, 1, 0, 0, 0, 6512, 575, 1, 0, 0, 0, 6513, 6511, 1, 0, 0, 0, 6514, 6515, 5, 575, 0, 0, 6515, 6520, 3, 578, 289, 0, 6516, 6517, 5, 868, 0, 0, 6517, 6519, 3, 578, 289, 0, 6518, 6516, 1, 0, 0, 0, 6519, 6522, 1, 0, 0, 0, 6520, 6518, 1, 0, 0, 0, 6520, 6521, 1, 0, 0, 0, 6521, 577, 1, 0, 0, 0, 6522, 6520, 1, 0, 0, 0, 6523, 6529, 5, 453, 0, 0, 6524, 6529, 5, 563, 0, 0, 6525, 6526, 5, 548, 0, 0, 6526, 6529, 5, 324, 0, 0, 6527, 6529, 5, 598, 0, 0, 6528, 6523, 1, 0, 0, 0, 6528, 6524, 1, 0, 0, 0, 6528, 6525, 1, 0, 0, 0, 6528, 6527, 1, 0, 0, 0, 6529, 579, 1, 0, 0, 0, 6530, 6531, 5, 575, 0, 0, 6531, 6536, 5, 531, 0, 0, 6532, 6534, 3, 754, 377, 0, 6533, 6532, 1, 0, 0, 0, 6533, 6534, 1, 0, 0, 0, 6534, 6535, 1, 0, 0, 0, 6535, 6537, 3, 702, 351, 0, 6536, 6533, 1, 0, 0, 0, 6536, 6537, 1, 0, 0, 0, 6537, 581, 1, 0, 0, 0, 6538, 6539, 5, 575, 0, 0, 6539, 6541, 7, 63, 0, 0, 6540, 6542, 5, 7, 0, 0, 6541, 6540, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 6544, 1, 0, 0, 0, 6543, 6545, 3, 384, 192, 0, 6544, 6543, 1, 0, 0, 0, 6544, 6545, 1, 0, 0, 0, 6545, 583, 1, 0, 0, 0, 6546, 6547, 5, 576, 0, 0, 6547, 585, 1, 0, 0, 0, 6548, 6549, 5, 749, 0, 0, 6549, 587, 1, 0, 0, 0, 6550, 6556, 3, 648, 324, 0, 6551, 6552, 7, 18, 0, 0, 6552, 6553, 5, 866, 0, 0, 6553, 6554, 3, 636, 318, 0, 6554, 6555, 5, 867, 0, 0, 6555, 6557, 1, 0, 0, 0, 6556, 6551, 1, 0, 0, 0, 6556, 6557, 1, 0, 0, 0, 6557, 589, 1, 0, 0, 0, 6558, 6577, 5, 366, 0, 0, 6559, 6577, 5, 422, 0, 0, 6560, 6562, 7, 103, 0, 0, 6561, 6560, 1, 0, 0, 0, 6561, 6562, 1, 0, 0, 0, 6562, 6563, 1, 0, 0, 0, 6563, 6577, 5, 452, 0, 0, 6564, 6577, 5, 517, 0, 0, 6565, 6577, 5, 734, 0, 0, 6566, 6567, 5, 548, 0, 0, 6567, 6577, 5, 324, 0, 0, 6568, 6577, 5, 645, 0, 0, 6569, 6577, 5, 680, 0, 0, 6570, 6574, 5, 752, 0, 0, 6571, 6572, 5, 194, 0, 0, 6572, 6573, 5, 135, 0, 0, 6573, 6575, 5, 104, 0, 0, 6574, 6571, 1, 0, 0, 0, 6574, 6575, 1, 0, 0, 0, 6575, 6577, 1, 0, 0, 0, 6576, 6558, 1, 0, 0, 0, 6576, 6559, 1, 0, 0, 0, 6576, 6561, 1, 0, 0, 0, 6576, 6564, 1, 0, 0, 0, 6576, 6565, 1, 0, 0, 0, 6576, 6566, 1, 0, 0, 0, 6576, 6568, 1, 0, 0, 0, 6576, 6569, 1, 0, 0, 0, 6576, 6570, 1, 0, 0, 0, 6577, 6591, 1, 0, 0, 0, 6578, 6579, 5, 556, 0, 0, 6579, 6581, 5, 452, 0, 0, 6580, 6582, 3, 384, 192, 0, 6581, 6580, 1, 0, 0, 0, 6581, 6582, 1, 0, 0, 0, 6582, 6591, 1, 0, 0, 0, 6583, 6585, 7, 60, 0, 0, 6584, 6586, 3, 646, 323, 0, 6585, 6584, 1, 0, 0, 0, 6585, 6586, 1, 0, 0, 0, 6586, 6588, 1, 0, 0, 0, 6587, 6589, 3, 592, 296, 0, 6588, 6587, 1, 0, 0, 0, 6588, 6589, 1, 0, 0, 0, 6589, 6591, 1, 0, 0, 0, 6590, 6576, 1, 0, 0, 0, 6590, 6578, 1, 0, 0, 0, 6590, 6583, 1, 0, 0, 0, 6591, 591, 1, 0, 0, 0, 6592, 6593, 5, 194, 0, 0, 6593, 6594, 5, 135, 0, 0, 6594, 6598, 5, 104, 0, 0, 6595, 6596, 5, 65, 0, 0, 6596, 6598, 5, 391, 0, 0, 6597, 6592, 1, 0, 0, 0, 6597, 6595, 1, 0, 0, 0, 6598, 593, 1, 0, 0, 0, 6599, 6607, 3, 648, 324, 0, 6600, 6601, 5, 130, 0, 0, 6601, 6604, 5, 866, 0, 0, 6602, 6605, 3, 666, 333, 0, 6603, 6605, 5, 7, 0, 0, 6604, 6602, 1, 0, 0, 0, 6604, 6603, 1, 0, 0, 0, 6605, 6606, 1, 0, 0, 0, 6606, 6608, 5, 867, 0, 0, 6607, 6600, 1, 0, 0, 0, 6607, 6608, 1, 0, 0, 0, 6608, 6616, 1, 0, 0, 0, 6609, 6611, 7, 18, 0, 0, 6610, 6609, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6613, 5, 866, 0, 0, 6613, 6614, 3, 636, 318, 0, 6614, 6615, 5, 867, 0, 0, 6615, 6617, 1, 0, 0, 0, 6616, 6610, 1, 0, 0, 0, 6616, 6617, 1, 0, 0, 0, 6617, 6620, 1, 0, 0, 0, 6618, 6619, 5, 79, 0, 0, 6619, 6621, 5, 446, 0, 0, 6620, 6618, 1, 0, 0, 0, 6620, 6621, 1, 0, 0, 0, 6621, 595, 1, 0, 0, 0, 6622, 6623, 7, 104, 0, 0, 6623, 6626, 3, 648, 324, 0, 6624, 6627, 3, 658, 329, 0, 6625, 6627, 5, 882, 0, 0, 6626, 6624, 1, 0, 0, 0, 6626, 6625, 1, 0, 0, 0, 6626, 6627, 1, 0, 0, 0, 6627, 597, 1, 0, 0, 0, 6628, 6634, 7, 104, 0, 0, 6629, 6635, 5, 392, 0, 0, 6630, 6635, 5, 528, 0, 0, 6631, 6632, 5, 826, 0, 0, 6632, 6633, 5, 857, 0, 0, 6633, 6635, 7, 105, 0, 0, 6634, 6629, 1, 0, 0, 0, 6634, 6630, 1, 0, 0, 0, 6634, 6631, 1, 0, 0, 0, 6634, 6635, 1, 0, 0, 0, 6635, 6636, 1, 0, 0, 0, 6636, 6637, 3, 620, 310, 0, 6637, 599, 1, 0, 0, 0, 6638, 6639, 7, 104, 0, 0, 6639, 6643, 5, 10, 0, 0, 6640, 6641, 5, 826, 0, 0, 6641, 6642, 5, 857, 0, 0, 6642, 6644, 5, 666, 0, 0, 6643, 6640, 1, 0, 0, 0, 6643, 6644, 1, 0, 0, 0, 6644, 6645, 1, 0, 0, 0, 6645, 6646, 3, 204, 102, 0, 6646, 601, 1, 0, 0, 0, 6647, 6648, 5, 419, 0, 0, 6648, 6649, 5, 882, 0, 0, 6649, 603, 1, 0, 0, 0, 6650, 6651, 5, 187, 0, 0, 6651, 6652, 3, 624, 312, 0, 6652, 605, 1, 0, 0, 0, 6653, 6661, 5, 158, 0, 0, 6654, 6656, 5, 164, 0, 0, 6655, 6657, 5, 682, 0, 0, 6656, 6655, 1, 0, 0, 0, 6656, 6657, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6662, 3, 712, 356, 0, 6659, 6662, 5, 889, 0, 0, 6660, 6662, 5, 890, 0, 0, 6661, 6654, 1, 0, 0, 0, 6661, 6659, 1, 0, 0, 0, 6661, 6660, 1, 0, 0, 0, 6662, 6672, 1, 0, 0, 0, 6663, 6664, 5, 155, 0, 0, 6664, 6669, 3, 610, 305, 0, 6665, 6666, 5, 868, 0, 0, 6666, 6668, 3, 610, 305, 0, 6667, 6665, 1, 0, 0, 0, 6668, 6671, 1, 0, 0, 0, 6669, 6667, 1, 0, 0, 0, 6669, 6670, 1, 0, 0, 0, 6670, 6673, 1, 0, 0, 0, 6671, 6669, 1, 0, 0, 0, 6672, 6663, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 607, 1, 0, 0, 0, 6674, 6682, 5, 145, 0, 0, 6675, 6677, 5, 164, 0, 0, 6676, 6678, 5, 682, 0, 0, 6677, 6676, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6683, 3, 712, 356, 0, 6680, 6683, 5, 889, 0, 0, 6681, 6683, 5, 890, 0, 0, 6682, 6675, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6682, 6681, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6693, 1, 0, 0, 0, 6684, 6685, 5, 155, 0, 0, 6685, 6690, 3, 610, 305, 0, 6686, 6687, 5, 868, 0, 0, 6687, 6689, 3, 610, 305, 0, 6688, 6686, 1, 0, 0, 0, 6689, 6692, 1, 0, 0, 0, 6690, 6688, 1, 0, 0, 0, 6690, 6691, 1, 0, 0, 0, 6691, 6694, 1, 0, 0, 0, 6692, 6690, 1, 0, 0, 0, 6693, 6684, 1, 0, 0, 0, 6693, 6694, 1, 0, 0, 0, 6694, 609, 1, 0, 0, 0, 6695, 6696, 7, 106, 0, 0, 6696, 6701, 5, 857, 0, 0, 6697, 6702, 3, 712, 356, 0, 6698, 6702, 5, 883, 0, 0, 6699, 6702, 3, 682, 341, 0, 6700, 6702, 3, 704, 352, 0, 6701, 6697, 1, 0, 0, 0, 6701, 6698, 1, 0, 0, 0, 6701, 6699, 1, 0, 0, 0, 6701, 6700, 1, 0, 0, 0, 6702, 611, 1, 0, 0, 0, 6703, 6705, 5, 194, 0, 0, 6704, 6706, 5, 552, 0, 0, 6705, 6704, 1, 0, 0, 0, 6705, 6706, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 6712, 3, 48, 24, 0, 6708, 6709, 5, 868, 0, 0, 6709, 6711, 3, 48, 24, 0, 6710, 6708, 1, 0, 0, 0, 6711, 6714, 1, 0, 0, 0, 6712, 6710, 1, 0, 0, 0, 6712, 6713, 1, 0, 0, 0, 6713, 613, 1, 0, 0, 0, 6714, 6712, 1, 0, 0, 0, 6715, 6716, 5, 173, 0, 0, 6716, 6718, 3, 648, 324, 0, 6717, 6719, 3, 252, 126, 0, 6718, 6717, 1, 0, 0, 0, 6718, 6719, 1, 0, 0, 0, 6719, 6721, 1, 0, 0, 0, 6720, 6722, 3, 312, 156, 0, 6721, 6720, 1, 0, 0, 0, 6721, 6722, 1, 0, 0, 0, 6722, 615, 1, 0, 0, 0, 6723, 6725, 5, 72, 0, 0, 6724, 6726, 7, 107, 0, 0, 6725, 6724, 1, 0, 0, 0, 6725, 6726, 1, 0, 0, 0, 6726, 6727, 1, 0, 0, 0, 6727, 6759, 5, 48, 0, 0, 6728, 6729, 3, 554, 277, 0, 6729, 6730, 5, 857, 0, 0, 6730, 6738, 7, 108, 0, 0, 6731, 6732, 5, 868, 0, 0, 6732, 6733, 3, 554, 277, 0, 6733, 6734, 5, 857, 0, 0, 6734, 6735, 7, 108, 0, 0, 6735, 6737, 1, 0, 0, 0, 6736, 6731, 1, 0, 0, 0, 6737, 6740, 1, 0, 0, 0, 6738, 6736, 1, 0, 0, 0, 6738, 6739, 1, 0, 0, 0, 6739, 6760, 1, 0, 0, 0, 6740, 6738, 1, 0, 0, 0, 6741, 6744, 5, 30, 0, 0, 6742, 6745, 3, 708, 354, 0, 6743, 6745, 3, 554, 277, 0, 6744, 6742, 1, 0, 0, 0, 6744, 6743, 1, 0, 0, 0, 6745, 6746, 1, 0, 0, 0, 6746, 6747, 3, 554, 277, 0, 6747, 6748, 5, 857, 0, 0, 6748, 6756, 3, 618, 309, 0, 6749, 6750, 5, 868, 0, 0, 6750, 6751, 3, 554, 277, 0, 6751, 6752, 5, 857, 0, 0, 6752, 6753, 3, 618, 309, 0, 6753, 6755, 1, 0, 0, 0, 6754, 6749, 1, 0, 0, 0, 6755, 6758, 1, 0, 0, 0, 6756, 6754, 1, 0, 0, 0, 6756, 6757, 1, 0, 0, 0, 6757, 6760, 1, 0, 0, 0, 6758, 6756, 1, 0, 0, 0, 6759, 6728, 1, 0, 0, 0, 6759, 6741, 1, 0, 0, 0, 6760, 617, 1, 0, 0, 0, 6761, 6762, 7, 109, 0, 0, 6762, 619, 1, 0, 0, 0, 6763, 6769, 3, 204, 102, 0, 6764, 6769, 3, 180, 90, 0, 6765, 6769, 3, 186, 93, 0, 6766, 6769, 3, 202, 101, 0, 6767, 6769, 3, 214, 107, 0, 6768, 6763, 1, 0, 0, 0, 6768, 6764, 1, 0, 0, 0, 6768, 6765, 1, 0, 0, 0, 6768, 6766, 1, 0, 0, 0, 6768, 6767, 1, 0, 0, 0, 6769, 6774, 1, 0, 0, 0, 6770, 6771, 5, 65, 0, 0, 6771, 6772, 5, 349, 0, 0, 6772, 6774, 3, 702, 351, 0, 6773, 6768, 1, 0, 0, 0, 6773, 6770, 1, 0, 0, 0, 6774, 621, 1, 0, 0, 0, 6775, 6776, 3, 698, 349, 0, 6776, 623, 1, 0, 0, 0, 6777, 6778, 3, 698, 349, 0, 6778, 625, 1, 0, 0, 0, 6779, 6780, 3, 698, 349, 0, 6780, 627, 1, 0, 0, 0, 6781, 6782, 3, 698, 349, 0, 6782, 629, 1, 0, 0, 0, 6783, 6784, 3, 698, 349, 0, 6784, 631, 1, 0, 0, 0, 6785, 6786, 3, 698, 349, 0, 6786, 633, 1, 0, 0, 0, 6787, 6788, 3, 702, 351, 0, 6788, 635, 1, 0, 0, 0, 6789, 6794, 3, 638, 319, 0, 6790, 6791, 5, 868, 0, 0, 6791, 6793, 3, 638, 319, 0, 6792, 6790, 1, 0, 0, 0, 6793, 6796, 1, 0, 0, 0, 6794, 6792, 1, 0, 0, 0, 6794, 6795, 1, 0, 0, 0, 6795, 637, 1, 0, 0, 0, 6796, 6794, 1, 0, 0, 0, 6797, 6798, 3, 702, 351, 0, 6798, 639, 1, 0, 0, 0, 6799, 6800, 3, 702, 351, 0, 6800, 641, 1, 0, 0, 0, 6801, 6802, 3, 702, 351, 0, 6802, 643, 1, 0, 0, 0, 6803, 6804, 3, 698, 349, 0, 6804, 645, 1, 0, 0, 0, 6805, 6810, 3, 648, 324, 0, 6806, 6807, 5, 868, 0, 0, 6807, 6809, 3, 648, 324, 0, 6808, 6806, 1, 0, 0, 0, 6809, 6812, 1, 0, 0, 0, 6810, 6808, 1, 0, 0, 0, 6810, 6811, 1, 0, 0, 0, 6811, 647, 1, 0, 0, 0, 6812, 6810, 1, 0, 0, 0, 6813, 6814, 3, 698, 349, 0, 6814, 649, 1, 0, 0, 0, 6815, 6820, 3, 652, 326, 0, 6816, 6817, 5, 868, 0, 0, 6817, 6819, 3, 652, 326, 0, 6818, 6816, 1, 0, 0, 0, 6819, 6822, 1, 0, 0, 0, 6820, 6818, 1, 0, 0, 0, 6820, 6821, 1, 0, 0, 0, 6821, 651, 1, 0, 0, 0, 6822, 6820, 1, 0, 0, 0, 6823, 6826, 3, 680, 340, 0, 6824, 6826, 3, 702, 351, 0, 6825, 6823, 1, 0, 0, 0, 6825, 6824, 1, 0, 0, 0, 6826, 653, 1, 0, 0, 0, 6827, 6832, 3, 702, 351, 0, 6828, 6830, 3, 706, 353, 0, 6829, 6831, 3, 706, 353, 0, 6830, 6829, 1, 0, 0, 0, 6830, 6831, 1, 0, 0, 0, 6831, 6833, 1, 0, 0, 0, 6832, 6828, 1, 0, 0, 0, 6832, 6833, 1, 0, 0, 0, 6833, 6842, 1, 0, 0, 0, 6834, 6836, 9, 0, 0, 0, 6835, 6834, 1, 0, 0, 0, 6835, 6836, 1, 0, 0, 0, 6836, 6837, 1, 0, 0, 0, 6837, 6839, 3, 706, 353, 0, 6838, 6840, 3, 706, 353, 0, 6839, 6838, 1, 0, 0, 0, 6839, 6840, 1, 0, 0, 0, 6840, 6842, 1, 0, 0, 0, 6841, 6827, 1, 0, 0, 0, 6841, 6835, 1, 0, 0, 0, 6842, 655, 1, 0, 0, 0, 6843, 6848, 3, 658, 329, 0, 6844, 6845, 5, 868, 0, 0, 6845, 6847, 3, 658, 329, 0, 6846, 6844, 1, 0, 0, 0, 6847, 6850, 1, 0, 0, 0, 6848, 6846, 1, 0, 0, 0, 6848, 6849, 1, 0, 0, 0, 6849, 657, 1, 0, 0, 0, 6850, 6848, 1, 0, 0, 0, 6851, 6856, 3, 702, 351, 0, 6852, 6854, 3, 706, 353, 0, 6853, 6855, 3, 706, 353, 0, 6854, 6853, 1, 0, 0, 0, 6854, 6855, 1, 0, 0, 0, 6855, 6857, 1, 0, 0, 0, 6856, 6852, 1, 0, 0, 0, 6856, 6857, 1, 0, 0, 0, 6857, 6867, 1, 0, 0, 0, 6858, 6860, 9, 0, 0, 0, 6859, 6858, 1, 0, 0, 0, 6859, 6860, 1, 0, 0, 0, 6860, 6861, 1, 0, 0, 0, 6861, 6863, 3, 706, 353, 0, 6862, 6864, 3, 706, 353, 0, 6863, 6862, 1, 0, 0, 0, 6863, 6864, 1, 0, 0, 0, 6864, 6867, 1, 0, 0, 0, 6865, 6867, 4, 329, 3, 0, 6866, 6851, 1, 0, 0, 0, 6866, 6859, 1, 0, 0, 0, 6866, 6865, 1, 0, 0, 0, 6867, 659, 1, 0, 0, 0, 6868, 6869, 3, 702, 351, 0, 6869, 661, 1, 0, 0, 0, 6870, 6871, 3, 702, 351, 0, 6871, 663, 1, 0, 0, 0, 6872, 6873, 3, 702, 351, 0, 6873, 665, 1, 0, 0, 0, 6874, 6879, 3, 668, 334, 0, 6875, 6876, 5, 868, 0, 0, 6876, 6878, 3, 668, 334, 0, 6877, 6875, 1, 0, 0, 0, 6878, 6881, 1, 0, 0, 0, 6879, 6877, 1, 0, 0, 0, 6879, 6880, 1, 0, 0, 0, 6880, 667, 1, 0, 0, 0, 6881, 6879, 1, 0, 0, 0, 6882, 6883, 3, 702, 351, 0, 6883, 669, 1, 0, 0, 0, 6884, 6889, 3, 702, 351, 0, 6885, 6886, 5, 866, 0, 0, 6886, 6887, 3, 708, 354, 0, 6887, 6888, 5, 867, 0, 0, 6888, 6890, 1, 0, 0, 0, 6889, 6885, 1, 0, 0, 0, 6889, 6890, 1, 0, 0, 0, 6890, 6893, 1, 0, 0, 0, 6891, 6893, 3, 800, 400, 0, 6892, 6884, 1, 0, 0, 0, 6892, 6891, 1, 0, 0, 0, 6893, 6895, 1, 0, 0, 0, 6894, 6896, 7, 54, 0, 0, 6895, 6894, 1, 0, 0, 0, 6895, 6896, 1, 0, 0, 0, 6896, 671, 1, 0, 0, 0, 6897, 6898, 3, 674, 337, 0, 6898, 6899, 5, 878, 0, 0, 6899, 6900, 3, 708, 354, 0, 6900, 673, 1, 0, 0, 0, 6901, 6902, 3, 676, 338, 0, 6902, 6903, 5, 891, 0, 0, 6903, 675, 1, 0, 0, 0, 6904, 6909, 5, 882, 0, 0, 6905, 6909, 5, 889, 0, 0, 6906, 6909, 5, 704, 0, 0, 6907, 6909, 3, 830, 415, 0, 6908, 6904, 1, 0, 0, 0, 6908, 6905, 1, 0, 0, 0, 6908, 6906, 1, 0, 0, 0, 6908, 6907, 1, 0, 0, 0, 6909, 677, 1, 0, 0, 0, 6910, 6911, 7, 110, 0, 0, 6911, 679, 1, 0, 0, 0, 6912, 6914, 3, 676, 338, 0, 6913, 6915, 3, 678, 339, 0, 6914, 6913, 1, 0, 0, 0, 6914, 6915, 1, 0, 0, 0, 6915, 6918, 1, 0, 0, 0, 6916, 6918, 3, 56, 28, 0, 6917, 6912, 1, 0, 0, 0, 6917, 6916, 1, 0, 0, 0, 6918, 681, 1, 0, 0, 0, 6919, 6920, 7, 111, 0, 0, 6920, 683, 1, 0, 0, 0, 6921, 6926, 5, 228, 0, 0, 6922, 6926, 3, 820, 410, 0, 6923, 6926, 5, 882, 0, 0, 6924, 6926, 5, 879, 0, 0, 6925, 6921, 1, 0, 0, 0, 6925, 6922, 1, 0, 0, 0, 6925, 6923, 1, 0, 0, 0, 6925, 6924, 1, 0, 0, 0, 6926, 685, 1, 0, 0, 0, 6927, 6928, 3, 702, 351, 0, 6928, 687, 1, 0, 0, 0, 6929, 6933, 3, 690, 345, 0, 6930, 6933, 5, 889, 0, 0, 6931, 6933, 5, 882, 0, 0, 6932, 6929, 1, 0, 0, 0, 6932, 6930, 1, 0, 0, 0, 6932, 6931, 1, 0, 0, 0, 6933, 689, 1, 0, 0, 0, 6934, 6935, 7, 112, 0, 0, 6935, 691, 1, 0, 0, 0, 6936, 6937, 3, 708, 354, 0, 6937, 6938, 5, 854, 0, 0, 6938, 6939, 3, 708, 354, 0, 6939, 6940, 5, 854, 0, 0, 6940, 6941, 3, 708, 354, 0, 6941, 6942, 5, 854, 0, 0, 6942, 6943, 3, 708, 354, 0, 6943, 6944, 5, 854, 0, 0, 6944, 6950, 3, 708, 354, 0, 6945, 6946, 5, 878, 0, 0, 6946, 6947, 3, 708, 354, 0, 6947, 6948, 5, 854, 0, 0, 6948, 6949, 3, 708, 354, 0, 6949, 6951, 1, 0, 0, 0, 6950, 6945, 1, 0, 0, 0, 6951, 6952, 1, 0, 0, 0, 6952, 6950, 1, 0, 0, 0, 6952, 6953, 1, 0, 0, 0, 6953, 693, 1, 0, 0, 0, 6954, 6961, 3, 696, 348, 0, 6955, 6956, 5, 868, 0, 0, 6956, 6959, 3, 696, 348, 0, 6957, 6958, 5, 868, 0, 0, 6958, 6960, 3, 708, 354, 0, 6959, 6957, 1, 0, 0, 0, 6959, 6960, 1, 0, 0, 0, 6960, 6962, 1, 0, 0, 0, 6961, 6955, 1, 0, 0, 0, 6961, 6962, 1, 0, 0, 0, 6962, 695, 1, 0, 0, 0, 6963, 6971, 5, 882, 0, 0, 6964, 6971, 5, 887, 0, 0, 6965, 6967, 5, 884, 0, 0, 6966, 6965, 1, 0, 0, 0, 6967, 6968, 1, 0, 0, 0, 6968, 6966, 1, 0, 0, 0, 6968, 6969, 1, 0, 0, 0, 6969, 6971, 1, 0, 0, 0, 6970, 6963, 1, 0, 0, 0, 6970, 6964, 1, 0, 0, 0, 6970, 6966, 1, 0, 0, 0, 6971, 697, 1, 0, 0, 0, 6972, 6974, 3, 702, 351, 0, 6973, 6975, 3, 706, 353, 0, 6974, 6973, 1, 0, 0, 0, 6974, 6975, 1, 0, 0, 0, 6975, 699, 1, 0, 0, 0, 6976, 6981, 3, 702, 351, 0, 6977, 6978, 5, 868, 0, 0, 6978, 6980, 3, 702, 351, 0, 6979, 6977, 1, 0, 0, 0, 6980, 6983, 1, 0, 0, 0, 6981, 6979, 1, 0, 0, 0, 6981, 6982, 1, 0, 0, 0, 6982, 701, 1, 0, 0, 0, 6983, 6981, 1, 0, 0, 0, 6984, 6988, 3, 704, 352, 0, 6985, 6988, 5, 879, 0, 0, 6986, 6988, 5, 882, 0, 0, 6987, 6984, 1, 0, 0, 0, 6987, 6985, 1, 0, 0, 0, 6987, 6986, 1, 0, 0, 0, 6988, 703, 1, 0, 0, 0, 6989, 6999, 5, 889, 0, 0, 6990, 6999, 3, 820, 410, 0, 6991, 6999, 3, 822, 411, 0, 6992, 6999, 3, 690, 345, 0, 6993, 6999, 3, 824, 412, 0, 6994, 6999, 3, 826, 413, 0, 6995, 6999, 3, 828, 414, 0, 6996, 6999, 3, 830, 415, 0, 6997, 6999, 3, 792, 396, 0, 6998, 6989, 1, 0, 0, 0, 6998, 6990, 1, 0, 0, 0, 6998, 6991, 1, 0, 0, 0, 6998, 6992, 1, 0, 0, 0, 6998, 6993, 1, 0, 0, 0, 6998, 6994, 1, 0, 0, 0, 6998, 6995, 1, 0, 0, 0, 6998, 6996, 1, 0, 0, 0, 6998, 6997, 1, 0, 0, 0, 6999, 705, 1, 0, 0, 0, 7000, 7001, 5, 865, 0, 0, 7001, 7005, 5, 889, 0, 0, 7002, 7003, 5, 865, 0, 0, 7003, 7005, 3, 702, 351, 0, 7004, 7000, 1, 0, 0, 0, 7004, 7002, 1, 0, 0, 0, 7005, 707, 1, 0, 0, 0, 7006, 7007, 7, 113, 0, 0, 7007, 709, 1, 0, 0, 0, 7008, 7011, 5, 880, 0, 0, 7009, 7011, 3, 708, 354, 0, 7010, 7008, 1, 0, 0, 0, 7010, 7009, 1, 0, 0, 0, 7011, 711, 1, 0, 0, 0, 7012, 7014, 5, 888, 0, 0, 7013, 7012, 1, 0, 0, 0, 7013, 7014, 1, 0, 0, 0, 7014, 7015, 1, 0, 0, 0, 7015, 7018, 5, 882, 0, 0, 7016, 7018, 5, 881, 0, 0, 7017, 7013, 1, 0, 0, 0, 7017, 7016, 1, 0, 0, 0, 7018, 7020, 1, 0, 0, 0, 7019, 7021, 5, 882, 0, 0, 7020, 7019, 1, 0, 0, 0, 7021, 7022, 1, 0, 0, 0, 7022, 7020, 1, 0, 0, 0, 7022, 7023, 1, 0, 0, 0, 7023, 7036, 1, 0, 0, 0, 7024, 7026, 5, 888, 0, 0, 7025, 7024, 1, 0, 0, 0, 7025, 7026, 1, 0, 0, 0, 7026, 7027, 1, 0, 0, 0, 7027, 7030, 5, 882, 0, 0, 7028, 7030, 5, 881, 0, 0, 7029, 7025, 1, 0, 0, 0, 7029, 7028, 1, 0, 0, 0, 7030, 7033, 1, 0, 0, 0, 7031, 7032, 5, 28, 0, 0, 7032, 7034, 3, 686, 343, 0, 7033, 7031, 1, 0, 0, 0, 7033, 7034, 1, 0, 0, 0, 7034, 7036, 1, 0, 0, 0, 7035, 7017, 1, 0, 0, 0, 7035, 7029, 1, 0, 0, 0, 7036, 713, 1, 0, 0, 0, 7037, 7038, 7, 114, 0, 0, 7038, 715, 1, 0, 0, 0, 7039, 7041, 5, 888, 0, 0, 7040, 7039, 1, 0, 0, 0, 7040, 7041, 1, 0, 0, 0, 7041, 7042, 1, 0, 0, 0, 7042, 7043, 5, 884, 0, 0, 7043, 717, 1, 0, 0, 0, 7044, 7046, 5, 114, 0, 0, 7045, 7044, 1, 0, 0, 0, 7045, 7046, 1, 0, 0, 0, 7046, 7047, 1, 0, 0, 0, 7047, 7048, 7, 115, 0, 0, 7048, 719, 1, 0, 0, 0, 7049, 7062, 3, 712, 356, 0, 7050, 7062, 3, 708, 354, 0, 7051, 7052, 5, 854, 0, 0, 7052, 7062, 3, 708, 354, 0, 7053, 7062, 3, 716, 358, 0, 7054, 7062, 3, 714, 357, 0, 7055, 7062, 5, 885, 0, 0, 7056, 7062, 5, 887, 0, 0, 7057, 7059, 5, 114, 0, 0, 7058, 7057, 1, 0, 0, 0, 7058, 7059, 1, 0, 0, 0, 7059, 7060, 1, 0, 0, 0, 7060, 7062, 7, 115, 0, 0, 7061, 7049, 1, 0, 0, 0, 7061, 7050, 1, 0, 0, 0, 7061, 7051, 1, 0, 0, 0, 7061, 7053, 1, 0, 0, 0, 7061, 7054, 1, 0, 0, 0, 7061, 7055, 1, 0, 0, 0, 7061, 7056, 1, 0, 0, 0, 7061, 7058, 1, 0, 0, 0, 7062, 721, 1, 0, 0, 0, 7063, 7065, 7, 116, 0, 0, 7064, 7066, 5, 240, 0, 0, 7065, 7064, 1, 0, 0, 0, 7065, 7066, 1, 0, 0, 0, 7066, 7068, 1, 0, 0, 0, 7067, 7069, 3, 728, 364, 0, 7068, 7067, 1, 0, 0, 0, 7068, 7069, 1, 0, 0, 0, 7069, 7071, 1, 0, 0, 0, 7070, 7072, 5, 228, 0, 0, 7071, 7070, 1, 0, 0, 0, 7071, 7072, 1, 0, 0, 0, 7072, 7076, 1, 0, 0, 0, 7073, 7074, 3, 54, 27, 0, 7074, 7075, 3, 684, 342, 0, 7075, 7077, 1, 0, 0, 0, 7076, 7073, 1, 0, 0, 0, 7076, 7077, 1, 0, 0, 0, 7077, 7081, 1, 0, 0, 0, 7078, 7079, 5, 28, 0, 0, 7079, 7082, 3, 686, 343, 0, 7080, 7082, 5, 228, 0, 0, 7081, 7078, 1, 0, 0, 0, 7081, 7080, 1, 0, 0, 0, 7081, 7082, 1, 0, 0, 0, 7082, 7190, 1, 0, 0, 0, 7083, 7084, 5, 227, 0, 0, 7084, 7085, 7, 117, 0, 0, 7085, 7087, 5, 240, 0, 0, 7086, 7088, 3, 728, 364, 0, 7087, 7086, 1, 0, 0, 0, 7087, 7088, 1, 0, 0, 0, 7088, 7090, 1, 0, 0, 0, 7089, 7091, 5, 228, 0, 0, 7090, 7089, 1, 0, 0, 0, 7090, 7091, 1, 0, 0, 0, 7091, 7190, 1, 0, 0, 0, 7092, 7093, 5, 227, 0, 0, 7093, 7095, 7, 118, 0, 0, 7094, 7096, 3, 728, 364, 0, 7095, 7094, 1, 0, 0, 0, 7095, 7096, 1, 0, 0, 0, 7096, 7098, 1, 0, 0, 0, 7097, 7099, 5, 228, 0, 0, 7098, 7097, 1, 0, 0, 0, 7098, 7099, 1, 0, 0, 0, 7099, 7190, 1, 0, 0, 0, 7100, 7101, 5, 498, 0, 0, 7101, 7103, 5, 225, 0, 0, 7102, 7104, 3, 728, 364, 0, 7103, 7102, 1, 0, 0, 0, 7103, 7104, 1, 0, 0, 0, 7104, 7106, 1, 0, 0, 0, 7105, 7107, 5, 228, 0, 0, 7106, 7105, 1, 0, 0, 0, 7106, 7107, 1, 0, 0, 0, 7107, 7190, 1, 0, 0, 0, 7108, 7110, 7, 119, 0, 0, 7109, 7111, 3, 728, 364, 0, 7110, 7109, 1, 0, 0, 0, 7110, 7111, 1, 0, 0, 0, 7111, 7115, 1, 0, 0, 0, 7112, 7114, 7, 120, 0, 0, 7113, 7112, 1, 0, 0, 0, 7114, 7117, 1, 0, 0, 0, 7115, 7113, 1, 0, 0, 0, 7115, 7116, 1, 0, 0, 0, 7116, 7190, 1, 0, 0, 0, 7117, 7115, 1, 0, 0, 0, 7118, 7120, 5, 210, 0, 0, 7119, 7121, 3, 730, 365, 0, 7120, 7119, 1, 0, 0, 0, 7120, 7121, 1, 0, 0, 0, 7121, 7125, 1, 0, 0, 0, 7122, 7124, 7, 120, 0, 0, 7123, 7122, 1, 0, 0, 0, 7124, 7127, 1, 0, 0, 0, 7125, 7123, 1, 0, 0, 0, 7125, 7126, 1, 0, 0, 0, 7126, 7190, 1, 0, 0, 0, 7127, 7125, 1, 0, 0, 0, 7128, 7130, 5, 211, 0, 0, 7129, 7131, 5, 212, 0, 0, 7130, 7129, 1, 0, 0, 0, 7130, 7131, 1, 0, 0, 0, 7131, 7133, 1, 0, 0, 0, 7132, 7134, 3, 730, 365, 0, 7133, 7132, 1, 0, 0, 0, 7133, 7134, 1, 0, 0, 0, 7134, 7138, 1, 0, 0, 0, 7135, 7137, 7, 120, 0, 0, 7136, 7135, 1, 0, 0, 0, 7137, 7140, 1, 0, 0, 0, 7138, 7136, 1, 0, 0, 0, 7138, 7139, 1, 0, 0, 0, 7139, 7190, 1, 0, 0, 0, 7140, 7138, 1, 0, 0, 0, 7141, 7143, 7, 121, 0, 0, 7142, 7144, 3, 732, 366, 0, 7143, 7142, 1, 0, 0, 0, 7143, 7144, 1, 0, 0, 0, 7144, 7148, 1, 0, 0, 0, 7145, 7147, 7, 120, 0, 0, 7146, 7145, 1, 0, 0, 0, 7147, 7150, 1, 0, 0, 0, 7148, 7146, 1, 0, 0, 0, 7148, 7149, 1, 0, 0, 0, 7149, 7190, 1, 0, 0, 0, 7150, 7148, 1, 0, 0, 0, 7151, 7190, 7, 122, 0, 0, 7152, 7154, 7, 123, 0, 0, 7153, 7155, 3, 728, 364, 0, 7154, 7153, 1, 0, 0, 0, 7154, 7155, 1, 0, 0, 0, 7155, 7190, 1, 0, 0, 0, 7156, 7157, 7, 124, 0, 0, 7157, 7159, 3, 724, 362, 0, 7158, 7160, 5, 228, 0, 0, 7159, 7158, 1, 0, 0, 0, 7159, 7160, 1, 0, 0, 0, 7160, 7164, 1, 0, 0, 0, 7161, 7162, 3, 54, 27, 0, 7162, 7163, 3, 684, 342, 0, 7163, 7165, 1, 0, 0, 0, 7164, 7161, 1, 0, 0, 0, 7164, 7165, 1, 0, 0, 0, 7165, 7190, 1, 0, 0, 0, 7166, 7169, 7, 125, 0, 0, 7167, 7168, 5, 834, 0, 0, 7168, 7170, 3, 708, 354, 0, 7169, 7167, 1, 0, 0, 0, 7169, 7170, 1, 0, 0, 0, 7170, 7190, 1, 0, 0, 0, 7171, 7173, 5, 233, 0, 0, 7172, 7174, 5, 225, 0, 0, 7173, 7172, 1, 0, 0, 0, 7173, 7174, 1, 0, 0, 0, 7174, 7176, 1, 0, 0, 0, 7175, 7177, 5, 228, 0, 0, 7176, 7175, 1, 0, 0, 0, 7176, 7177, 1, 0, 0, 0, 7177, 7181, 1, 0, 0, 0, 7178, 7179, 3, 54, 27, 0, 7179, 7180, 3, 684, 342, 0, 7180, 7182, 1, 0, 0, 0, 7181, 7178, 1, 0, 0, 0, 7181, 7182, 1, 0, 0, 0, 7182, 7185, 1, 0, 0, 0, 7183, 7184, 5, 28, 0, 0, 7184, 7186, 3, 686, 343, 0, 7185, 7183, 1, 0, 0, 0, 7185, 7186, 1, 0, 0, 0, 7186, 7190, 1, 0, 0, 0, 7187, 7188, 5, 233, 0, 0, 7188, 7190, 5, 229, 0, 0, 7189, 7063, 1, 0, 0, 0, 7189, 7083, 1, 0, 0, 0, 7189, 7092, 1, 0, 0, 0, 7189, 7100, 1, 0, 0, 0, 7189, 7108, 1, 0, 0, 0, 7189, 7118, 1, 0, 0, 0, 7189, 7128, 1, 0, 0, 0, 7189, 7141, 1, 0, 0, 0, 7189, 7151, 1, 0, 0, 0, 7189, 7152, 1, 0, 0, 0, 7189, 7156, 1, 0, 0, 0, 7189, 7166, 1, 0, 0, 0, 7189, 7171, 1, 0, 0, 0, 7189, 7187, 1, 0, 0, 0, 7190, 723, 1, 0, 0, 0, 7191, 7192, 5, 866, 0, 0, 7192, 7197, 5, 882, 0, 0, 7193, 7194, 5, 868, 0, 0, 7194, 7196, 5, 882, 0, 0, 7195, 7193, 1, 0, 0, 0, 7196, 7199, 1, 0, 0, 0, 7197, 7195, 1, 0, 0, 0, 7197, 7198, 1, 0, 0, 0, 7198, 7200, 1, 0, 0, 0, 7199, 7197, 1, 0, 0, 0, 7200, 7201, 5, 867, 0, 0, 7201, 725, 1, 0, 0, 0, 7202, 7204, 7, 126, 0, 0, 7203, 7205, 3, 728, 364, 0, 7204, 7203, 1, 0, 0, 0, 7204, 7205, 1, 0, 0, 0, 7205, 7225, 1, 0, 0, 0, 7206, 7208, 5, 224, 0, 0, 7207, 7209, 3, 728, 364, 0, 7208, 7207, 1, 0, 0, 0, 7208, 7209, 1, 0, 0, 0, 7209, 7213, 1, 0, 0, 0, 7210, 7211, 3, 54, 27, 0, 7211, 7212, 3, 684, 342, 0, 7212, 7214, 1, 0, 0, 0, 7213, 7210, 1, 0, 0, 0, 7213, 7214, 1, 0, 0, 0, 7214, 7225, 1, 0, 0, 0, 7215, 7225, 7, 127, 0, 0, 7216, 7218, 7, 128, 0, 0, 7217, 7219, 3, 732, 366, 0, 7218, 7217, 1, 0, 0, 0, 7218, 7219, 1, 0, 0, 0, 7219, 7225, 1, 0, 0, 0, 7220, 7222, 7, 129, 0, 0, 7221, 7223, 7, 130, 0, 0, 7222, 7221, 1, 0, 0, 0, 7222, 7223, 1, 0, 0, 0, 7223, 7225, 1, 0, 0, 0, 7224, 7202, 1, 0, 0, 0, 7224, 7206, 1, 0, 0, 0, 7224, 7215, 1, 0, 0, 0, 7224, 7216, 1, 0, 0, 0, 7224, 7220, 1, 0, 0, 0, 7225, 7227, 1, 0, 0, 0, 7226, 7228, 5, 12, 0, 0, 7227, 7226, 1, 0, 0, 0, 7227, 7228, 1, 0, 0, 0, 7228, 727, 1, 0, 0, 0, 7229, 7230, 5, 866, 0, 0, 7230, 7231, 3, 708, 354, 0, 7231, 7232, 5, 867, 0, 0, 7232, 729, 1, 0, 0, 0, 7233, 7234, 5, 866, 0, 0, 7234, 7235, 3, 708, 354, 0, 7235, 7236, 5, 868, 0, 0, 7236, 7237, 3, 708, 354, 0, 7237, 7238, 5, 867, 0, 0, 7238, 731, 1, 0, 0, 0, 7239, 7240, 5, 866, 0, 0, 7240, 7243, 3, 708, 354, 0, 7241, 7242, 5, 868, 0, 0, 7242, 7244, 3, 708, 354, 0, 7243, 7241, 1, 0, 0, 0, 7243, 7244, 1, 0, 0, 0, 7244, 7245, 1, 0, 0, 0, 7245, 7246, 5, 867, 0, 0, 7246, 733, 1, 0, 0, 0, 7247, 7248, 5, 866, 0, 0, 7248, 7253, 3, 670, 335, 0, 7249, 7250, 5, 868, 0, 0, 7250, 7252, 3, 670, 335, 0, 7251, 7249, 1, 0, 0, 0, 7252, 7255, 1, 0, 0, 0, 7253, 7251, 1, 0, 0, 0, 7253, 7254, 1, 0, 0, 0, 7254, 7256, 1, 0, 0, 0, 7255, 7253, 1, 0, 0, 0, 7256, 7257, 5, 867, 0, 0, 7257, 735, 1, 0, 0, 0, 7258, 7263, 3, 800, 400, 0, 7259, 7260, 5, 868, 0, 0, 7260, 7262, 3, 800, 400, 0, 7261, 7259, 1, 0, 0, 0, 7262, 7265, 1, 0, 0, 0, 7263, 7261, 1, 0, 0, 0, 7263, 7264, 1, 0, 0, 0, 7264, 737, 1, 0, 0, 0, 7265, 7263, 1, 0, 0, 0, 7266, 7267, 7, 131, 0, 0, 7267, 7272, 3, 740, 370, 0, 7268, 7269, 5, 868, 0, 0, 7269, 7271, 3, 740, 370, 0, 7270, 7268, 1, 0, 0, 0, 7271, 7274, 1, 0, 0, 0, 7272, 7270, 1, 0, 0, 0, 7272, 7273, 1, 0, 0, 0, 7273, 739, 1, 0, 0, 0, 7274, 7272, 1, 0, 0, 0, 7275, 7276, 5, 866, 0, 0, 7276, 7281, 3, 742, 371, 0, 7277, 7278, 5, 868, 0, 0, 7278, 7280, 3, 742, 371, 0, 7279, 7277, 1, 0, 0, 0, 7280, 7283, 1, 0, 0, 0, 7281, 7279, 1, 0, 0, 0, 7281, 7282, 1, 0, 0, 0, 7282, 7284, 1, 0, 0, 0, 7283, 7281, 1, 0, 0, 0, 7284, 7285, 5, 867, 0, 0, 7285, 741, 1, 0, 0, 0, 7286, 7289, 3, 800, 400, 0, 7287, 7289, 5, 42, 0, 0, 7288, 7286, 1, 0, 0, 0, 7288, 7287, 1, 0, 0, 0, 7289, 743, 1, 0, 0, 0, 7290, 7295, 3, 720, 360, 0, 7291, 7292, 5, 868, 0, 0, 7292, 7294, 3, 720, 360, 0, 7293, 7291, 1, 0, 0, 0, 7294, 7297, 1, 0, 0, 0, 7295, 7293, 1, 0, 0, 0, 7295, 7296, 1, 0, 0, 0, 7296, 745, 1, 0, 0, 0, 7297, 7295, 1, 0, 0, 0, 7298, 7303, 5, 882, 0, 0, 7299, 7300, 5, 868, 0, 0, 7300, 7302, 5, 882, 0, 0, 7301, 7299, 1, 0, 0, 0, 7302, 7305, 1, 0, 0, 0, 7303, 7301, 1, 0, 0, 0, 7303, 7304, 1, 0, 0, 0, 7304, 747, 1, 0, 0, 0, 7305, 7303, 1, 0, 0, 0, 7306, 7311, 5, 892, 0, 0, 7307, 7308, 5, 868, 0, 0, 7308, 7310, 5, 892, 0, 0, 7309, 7307, 1, 0, 0, 0, 7310, 7313, 1, 0, 0, 0, 7311, 7309, 1, 0, 0, 0, 7311, 7312, 1, 0, 0, 0, 7312, 749, 1, 0, 0, 0, 7313, 7311, 1, 0, 0, 0, 7314, 7341, 5, 116, 0, 0, 7315, 7316, 5, 24, 0, 0, 7316, 7317, 5, 866, 0, 0, 7317, 7318, 3, 800, 400, 0, 7318, 7319, 5, 13, 0, 0, 7319, 7320, 3, 726, 363, 0, 7320, 7321, 5, 867, 0, 0, 7321, 7341, 1, 0, 0, 0, 7322, 7324, 3, 806, 403, 0, 7323, 7322, 1, 0, 0, 0, 7323, 7324, 1, 0, 0, 0, 7324, 7325, 1, 0, 0, 0, 7325, 7341, 3, 720, 360, 0, 7326, 7330, 3, 752, 376, 0, 7327, 7328, 5, 119, 0, 0, 7328, 7329, 5, 185, 0, 0, 7329, 7331, 3, 752, 376, 0, 7330, 7327, 1, 0, 0, 0, 7330, 7331, 1, 0, 0, 0, 7331, 7341, 1, 0, 0, 0, 7332, 7333, 5, 866, 0, 0, 7333, 7334, 3, 800, 400, 0, 7334, 7335, 5, 867, 0, 0, 7335, 7341, 1, 0, 0, 0, 7336, 7337, 5, 866, 0, 0, 7337, 7338, 3, 698, 349, 0, 7338, 7339, 5, 867, 0, 0, 7339, 7341, 1, 0, 0, 0, 7340, 7314, 1, 0, 0, 0, 7340, 7315, 1, 0, 0, 0, 7340, 7323, 1, 0, 0, 0, 7340, 7326, 1, 0, 0, 0, 7340, 7332, 1, 0, 0, 0, 7340, 7336, 1, 0, 0, 0, 7341, 751, 1, 0, 0, 0, 7342, 7348, 7, 132, 0, 0, 7343, 7345, 5, 866, 0, 0, 7344, 7346, 3, 708, 354, 0, 7345, 7344, 1, 0, 0, 0, 7345, 7346, 1, 0, 0, 0, 7346, 7347, 1, 0, 0, 0, 7347, 7349, 5, 867, 0, 0, 7348, 7343, 1, 0, 0, 0, 7348, 7349, 1, 0, 0, 0, 7349, 7357, 1, 0, 0, 0, 7350, 7351, 5, 295, 0, 0, 7351, 7353, 5, 866, 0, 0, 7352, 7354, 3, 708, 354, 0, 7353, 7352, 1, 0, 0, 0, 7353, 7354, 1, 0, 0, 0, 7354, 7355, 1, 0, 0, 0, 7355, 7357, 5, 867, 0, 0, 7356, 7342, 1, 0, 0, 0, 7356, 7350, 1, 0, 0, 0, 7357, 753, 1, 0, 0, 0, 7358, 7359, 5, 78, 0, 0, 7359, 7360, 5, 60, 0, 0, 7360, 755, 1, 0, 0, 0, 7361, 7362, 5, 78, 0, 0, 7362, 7363, 5, 114, 0, 0, 7363, 7364, 5, 60, 0, 0, 7364, 757, 1, 0, 0, 0, 7365, 7366, 5, 124, 0, 0, 7366, 7367, 5, 143, 0, 0, 7367, 759, 1, 0, 0, 0, 7368, 7391, 3, 762, 381, 0, 7369, 7391, 3, 770, 385, 0, 7370, 7391, 3, 772, 386, 0, 7371, 7378, 3, 792, 396, 0, 7372, 7373, 5, 866, 0, 0, 7373, 7379, 5, 867, 0, 0, 7374, 7375, 5, 866, 0, 0, 7375, 7376, 3, 796, 398, 0, 7376, 7377, 5, 867, 0, 0, 7377, 7379, 1, 0, 0, 0, 7378, 7372, 1, 0, 0, 0, 7378, 7374, 1, 0, 0, 0, 7379, 7391, 1, 0, 0, 0, 7380, 7387, 3, 628, 314, 0, 7381, 7382, 5, 866, 0, 0, 7382, 7388, 5, 867, 0, 0, 7383, 7384, 5, 866, 0, 0, 7384, 7385, 3, 796, 398, 0, 7385, 7386, 5, 867, 0, 0, 7386, 7388, 1, 0, 0, 0, 7387, 7381, 1, 0, 0, 0, 7387, 7383, 1, 0, 0, 0, 7388, 7391, 1, 0, 0, 0, 7389, 7391, 3, 794, 397, 0, 7390, 7368, 1, 0, 0, 0, 7390, 7369, 1, 0, 0, 0, 7390, 7370, 1, 0, 0, 0, 7390, 7371, 1, 0, 0, 0, 7390, 7380, 1, 0, 0, 0, 7390, 7389, 1, 0, 0, 0, 7391, 761, 1, 0, 0, 0, 7392, 7395, 7, 133, 0, 0, 7393, 7394, 5, 866, 0, 0, 7394, 7396, 5, 867, 0, 0, 7395, 7393, 1, 0, 0, 0, 7395, 7396, 1, 0, 0, 0, 7396, 7572, 1, 0, 0, 0, 7397, 7572, 3, 56, 28, 0, 7398, 7399, 5, 33, 0, 0, 7399, 7400, 5, 866, 0, 0, 7400, 7401, 3, 800, 400, 0, 7401, 7402, 5, 868, 0, 0, 7402, 7403, 3, 726, 363, 0, 7403, 7404, 5, 867, 0, 0, 7404, 7572, 1, 0, 0, 0, 7405, 7406, 5, 33, 0, 0, 7406, 7407, 5, 866, 0, 0, 7407, 7408, 3, 800, 400, 0, 7408, 7409, 5, 188, 0, 0, 7409, 7410, 3, 684, 342, 0, 7410, 7411, 5, 867, 0, 0, 7411, 7572, 1, 0, 0, 0, 7412, 7413, 5, 24, 0, 0, 7413, 7414, 5, 866, 0, 0, 7414, 7415, 3, 800, 400, 0, 7415, 7416, 5, 13, 0, 0, 7416, 7417, 3, 726, 363, 0, 7417, 7418, 5, 867, 0, 0, 7418, 7572, 1, 0, 0, 0, 7419, 7420, 5, 189, 0, 0, 7420, 7421, 5, 866, 0, 0, 7421, 7422, 3, 658, 329, 0, 7422, 7423, 5, 867, 0, 0, 7423, 7572, 1, 0, 0, 0, 7424, 7426, 5, 23, 0, 0, 7425, 7427, 3, 764, 382, 0, 7426, 7425, 1, 0, 0, 0, 7427, 7428, 1, 0, 0, 0, 7428, 7426, 1, 0, 0, 0, 7428, 7429, 1, 0, 0, 0, 7429, 7432, 1, 0, 0, 0, 7430, 7431, 5, 53, 0, 0, 7431, 7433, 3, 798, 399, 0, 7432, 7430, 1, 0, 0, 0, 7432, 7433, 1, 0, 0, 0, 7433, 7434, 1, 0, 0, 0, 7434, 7435, 5, 378, 0, 0, 7435, 7572, 1, 0, 0, 0, 7436, 7437, 5, 23, 0, 0, 7437, 7439, 3, 800, 400, 0, 7438, 7440, 3, 764, 382, 0, 7439, 7438, 1, 0, 0, 0, 7440, 7441, 1, 0, 0, 0, 7441, 7439, 1, 0, 0, 0, 7441, 7442, 1, 0, 0, 0, 7442, 7445, 1, 0, 0, 0, 7443, 7444, 5, 53, 0, 0, 7444, 7446, 3, 798, 399, 0, 7445, 7443, 1, 0, 0, 0, 7445, 7446, 1, 0, 0, 0, 7446, 7447, 1, 0, 0, 0, 7447, 7448, 5, 378, 0, 0, 7448, 7572, 1, 0, 0, 0, 7449, 7450, 5, 224, 0, 0, 7450, 7451, 5, 866, 0, 0, 7451, 7454, 3, 796, 398, 0, 7452, 7453, 5, 188, 0, 0, 7453, 7455, 3, 684, 342, 0, 7454, 7452, 1, 0, 0, 0, 7454, 7455, 1, 0, 0, 0, 7455, 7456, 1, 0, 0, 0, 7456, 7457, 5, 867, 0, 0, 7457, 7572, 1, 0, 0, 0, 7458, 7459, 5, 296, 0, 0, 7459, 7462, 5, 866, 0, 0, 7460, 7463, 3, 712, 356, 0, 7461, 7463, 3, 800, 400, 0, 7462, 7460, 1, 0, 0, 0, 7462, 7461, 1, 0, 0, 0, 7463, 7464, 1, 0, 0, 0, 7464, 7467, 5, 80, 0, 0, 7465, 7468, 3, 712, 356, 0, 7466, 7468, 3, 800, 400, 0, 7467, 7465, 1, 0, 0, 0, 7467, 7466, 1, 0, 0, 0, 7468, 7469, 1, 0, 0, 0, 7469, 7470, 5, 867, 0, 0, 7470, 7572, 1, 0, 0, 0, 7471, 7472, 7, 134, 0, 0, 7472, 7475, 5, 866, 0, 0, 7473, 7476, 3, 712, 356, 0, 7474, 7476, 3, 800, 400, 0, 7475, 7473, 1, 0, 0, 0, 7475, 7474, 1, 0, 0, 0, 7476, 7477, 1, 0, 0, 0, 7477, 7480, 5, 68, 0, 0, 7478, 7481, 3, 708, 354, 0, 7479, 7481, 3, 800, 400, 0, 7480, 7478, 1, 0, 0, 0, 7480, 7479, 1, 0, 0, 0, 7481, 7487, 1, 0, 0, 0, 7482, 7485, 5, 65, 0, 0, 7483, 7486, 3, 708, 354, 0, 7484, 7486, 3, 800, 400, 0, 7485, 7483, 1, 0, 0, 0, 7485, 7484, 1, 0, 0, 0, 7486, 7488, 1, 0, 0, 0, 7487, 7482, 1, 0, 0, 0, 7487, 7488, 1, 0, 0, 0, 7488, 7489, 1, 0, 0, 0, 7489, 7490, 5, 867, 0, 0, 7490, 7572, 1, 0, 0, 0, 7491, 7492, 5, 300, 0, 0, 7492, 7493, 5, 866, 0, 0, 7493, 7496, 7, 135, 0, 0, 7494, 7497, 3, 712, 356, 0, 7495, 7497, 3, 800, 400, 0, 7496, 7494, 1, 0, 0, 0, 7496, 7495, 1, 0, 0, 0, 7496, 7497, 1, 0, 0, 0, 7497, 7498, 1, 0, 0, 0, 7498, 7501, 5, 68, 0, 0, 7499, 7502, 3, 712, 356, 0, 7500, 7502, 3, 800, 400, 0, 7501, 7499, 1, 0, 0, 0, 7501, 7500, 1, 0, 0, 0, 7502, 7503, 1, 0, 0, 0, 7503, 7504, 5, 867, 0, 0, 7504, 7572, 1, 0, 0, 0, 7505, 7506, 5, 300, 0, 0, 7506, 7509, 5, 866, 0, 0, 7507, 7510, 3, 712, 356, 0, 7508, 7510, 3, 800, 400, 0, 7509, 7507, 1, 0, 0, 0, 7509, 7508, 1, 0, 0, 0, 7510, 7511, 1, 0, 0, 0, 7511, 7514, 5, 68, 0, 0, 7512, 7515, 3, 712, 356, 0, 7513, 7515, 3, 800, 400, 0, 7514, 7512, 1, 0, 0, 0, 7514, 7513, 1, 0, 0, 0, 7515, 7516, 1, 0, 0, 0, 7516, 7517, 5, 867, 0, 0, 7517, 7572, 1, 0, 0, 0, 7518, 7519, 5, 840, 0, 0, 7519, 7522, 5, 866, 0, 0, 7520, 7523, 3, 712, 356, 0, 7521, 7523, 3, 800, 400, 0, 7522, 7520, 1, 0, 0, 0, 7522, 7521, 1, 0, 0, 0, 7523, 7530, 1, 0, 0, 0, 7524, 7525, 5, 13, 0, 0, 7525, 7526, 7, 136, 0, 0, 7526, 7527, 5, 866, 0, 0, 7527, 7528, 3, 708, 354, 0, 7528, 7529, 5, 867, 0, 0, 7529, 7531, 1, 0, 0, 0, 7530, 7524, 1, 0, 0, 0, 7530, 7531, 1, 0, 0, 0, 7531, 7533, 1, 0, 0, 0, 7532, 7534, 3, 766, 383, 0, 7533, 7532, 1, 0, 0, 0, 7533, 7534, 1, 0, 0, 0, 7534, 7535, 1, 0, 0, 0, 7535, 7536, 5, 867, 0, 0, 7536, 7572, 1, 0, 0, 0, 7537, 7538, 5, 293, 0, 0, 7538, 7539, 5, 866, 0, 0, 7539, 7540, 3, 66, 33, 0, 7540, 7543, 5, 68, 0, 0, 7541, 7544, 3, 712, 356, 0, 7542, 7544, 3, 800, 400, 0, 7543, 7541, 1, 0, 0, 0, 7543, 7542, 1, 0, 0, 0, 7544, 7545, 1, 0, 0, 0, 7545, 7546, 5, 867, 0, 0, 7546, 7572, 1, 0, 0, 0, 7547, 7548, 5, 827, 0, 0, 7548, 7549, 5, 866, 0, 0, 7549, 7550, 7, 137, 0, 0, 7550, 7551, 5, 868, 0, 0, 7551, 7552, 3, 712, 356, 0, 7552, 7553, 5, 867, 0, 0, 7553, 7572, 1, 0, 0, 0, 7554, 7555, 5, 254, 0, 0, 7555, 7556, 5, 866, 0, 0, 7556, 7557, 3, 800, 400, 0, 7557, 7558, 5, 868, 0, 0, 7558, 7561, 3, 800, 400, 0, 7559, 7560, 5, 579, 0, 0, 7560, 7562, 3, 726, 363, 0, 7561, 7559, 1, 0, 0, 0, 7561, 7562, 1, 0, 0, 0, 7562, 7564, 1, 0, 0, 0, 7563, 7565, 3, 286, 143, 0, 7564, 7563, 1, 0, 0, 0, 7564, 7565, 1, 0, 0, 0, 7565, 7567, 1, 0, 0, 0, 7566, 7568, 3, 288, 144, 0, 7567, 7566, 1, 0, 0, 0, 7567, 7568, 1, 0, 0, 0, 7568, 7569, 1, 0, 0, 0, 7569, 7570, 5, 867, 0, 0, 7570, 7572, 1, 0, 0, 0, 7571, 7392, 1, 0, 0, 0, 7571, 7397, 1, 0, 0, 0, 7571, 7398, 1, 0, 0, 0, 7571, 7405, 1, 0, 0, 0, 7571, 7412, 1, 0, 0, 0, 7571, 7419, 1, 0, 0, 0, 7571, 7424, 1, 0, 0, 0, 7571, 7436, 1, 0, 0, 0, 7571, 7449, 1, 0, 0, 0, 7571, 7458, 1, 0, 0, 0, 7571, 7471, 1, 0, 0, 0, 7571, 7491, 1, 0, 0, 0, 7571, 7505, 1, 0, 0, 0, 7571, 7518, 1, 0, 0, 0, 7571, 7537, 1, 0, 0, 0, 7571, 7547, 1, 0, 0, 0, 7571, 7554, 1, 0, 0, 0, 7572, 763, 1, 0, 0, 0, 7573, 7574, 5, 191, 0, 0, 7574, 7575, 3, 798, 399, 0, 7575, 7576, 5, 175, 0, 0, 7576, 7577, 3, 798, 399, 0, 7577, 765, 1, 0, 0, 0, 7578, 7579, 5, 448, 0, 0, 7579, 7584, 3, 768, 384, 0, 7580, 7581, 5, 868, 0, 0, 7581, 7583, 3, 768, 384, 0, 7582, 7580, 1, 0, 0, 0, 7583, 7586, 1, 0, 0, 0, 7584, 7582, 1, 0, 0, 0, 7584, 7585, 1, 0, 0, 0, 7585, 7593, 1, 0, 0, 0, 7586, 7584, 1, 0, 0, 0, 7587, 7588, 5, 448, 0, 0, 7588, 7589, 3, 708, 354, 0, 7589, 7590, 5, 854, 0, 0, 7590, 7591, 3, 708, 354, 0, 7591, 7593, 1, 0, 0, 0, 7592, 7578, 1, 0, 0, 0, 7592, 7587, 1, 0, 0, 0, 7593, 767, 1, 0, 0, 0, 7594, 7596, 3, 708, 354, 0, 7595, 7597, 7, 138, 0, 0, 7596, 7595, 1, 0, 0, 0, 7596, 7597, 1, 0, 0, 0, 7597, 769, 1, 0, 0, 0, 7598, 7599, 7, 139, 0, 0, 7599, 7601, 5, 866, 0, 0, 7600, 7602, 7, 44, 0, 0, 7601, 7600, 1, 0, 0, 0, 7601, 7602, 1, 0, 0, 0, 7602, 7603, 1, 0, 0, 0, 7603, 7604, 3, 798, 399, 0, 7604, 7606, 5, 867, 0, 0, 7605, 7607, 3, 774, 387, 0, 7606, 7605, 1, 0, 0, 0, 7606, 7607, 1, 0, 0, 0, 7607, 7658, 1, 0, 0, 0, 7608, 7609, 5, 262, 0, 0, 7609, 7617, 5, 866, 0, 0, 7610, 7618, 5, 850, 0, 0, 7611, 7613, 5, 7, 0, 0, 7612, 7611, 1, 0, 0, 0, 7612, 7613, 1, 0, 0, 0, 7613, 7614, 1, 0, 0, 0, 7614, 7618, 3, 798, 399, 0, 7615, 7616, 5, 49, 0, 0, 7616, 7618, 3, 796, 398, 0, 7617, 7610, 1, 0, 0, 0, 7617, 7612, 1, 0, 0, 0, 7617, 7615, 1, 0, 0, 0, 7618, 7619, 1, 0, 0, 0, 7619, 7621, 5, 867, 0, 0, 7620, 7622, 3, 774, 387, 0, 7621, 7620, 1, 0, 0, 0, 7621, 7622, 1, 0, 0, 0, 7622, 7658, 1, 0, 0, 0, 7623, 7624, 7, 140, 0, 0, 7624, 7626, 5, 866, 0, 0, 7625, 7627, 5, 7, 0, 0, 7626, 7625, 1, 0, 0, 0, 7626, 7627, 1, 0, 0, 0, 7627, 7628, 1, 0, 0, 0, 7628, 7629, 3, 798, 399, 0, 7629, 7631, 5, 867, 0, 0, 7630, 7632, 3, 774, 387, 0, 7631, 7630, 1, 0, 0, 0, 7631, 7632, 1, 0, 0, 0, 7632, 7658, 1, 0, 0, 0, 7633, 7634, 5, 266, 0, 0, 7634, 7636, 5, 866, 0, 0, 7635, 7637, 5, 49, 0, 0, 7636, 7635, 1, 0, 0, 0, 7636, 7637, 1, 0, 0, 0, 7637, 7638, 1, 0, 0, 0, 7638, 7649, 3, 796, 398, 0, 7639, 7640, 5, 125, 0, 0, 7640, 7641, 5, 20, 0, 0, 7641, 7646, 3, 254, 127, 0, 7642, 7643, 5, 868, 0, 0, 7643, 7645, 3, 254, 127, 0, 7644, 7642, 1, 0, 0, 0, 7645, 7648, 1, 0, 0, 0, 7646, 7644, 1, 0, 0, 0, 7646, 7647, 1, 0, 0, 0, 7647, 7650, 1, 0, 0, 0, 7648, 7646, 1, 0, 0, 0, 7649, 7639, 1, 0, 0, 0, 7649, 7650, 1, 0, 0, 0, 7650, 7653, 1, 0, 0, 0, 7651, 7652, 5, 156, 0, 0, 7652, 7654, 5, 882, 0, 0, 7653, 7651, 1, 0, 0, 0, 7653, 7654, 1, 0, 0, 0, 7654, 7655, 1, 0, 0, 0, 7655, 7656, 5, 867, 0, 0, 7656, 7658, 1, 0, 0, 0, 7657, 7598, 1, 0, 0, 0, 7657, 7608, 1, 0, 0, 0, 7657, 7623, 1, 0, 0, 0, 7657, 7633, 1, 0, 0, 0, 7658, 771, 1, 0, 0, 0, 7659, 7660, 7, 141, 0, 0, 7660, 7661, 5, 866, 0, 0, 7661, 7664, 3, 800, 400, 0, 7662, 7663, 5, 868, 0, 0, 7663, 7665, 3, 708, 354, 0, 7664, 7662, 1, 0, 0, 0, 7664, 7665, 1, 0, 0, 0, 7665, 7668, 1, 0, 0, 0, 7666, 7667, 5, 868, 0, 0, 7667, 7669, 3, 708, 354, 0, 7668, 7666, 1, 0, 0, 0, 7668, 7669, 1, 0, 0, 0, 7669, 7670, 1, 0, 0, 0, 7670, 7671, 5, 867, 0, 0, 7671, 7672, 3, 774, 387, 0, 7672, 7698, 1, 0, 0, 0, 7673, 7674, 7, 142, 0, 0, 7674, 7675, 5, 866, 0, 0, 7675, 7676, 3, 800, 400, 0, 7676, 7677, 5, 867, 0, 0, 7677, 7678, 3, 774, 387, 0, 7678, 7698, 1, 0, 0, 0, 7679, 7680, 7, 143, 0, 0, 7680, 7681, 5, 866, 0, 0, 7681, 7682, 5, 867, 0, 0, 7682, 7698, 3, 774, 387, 0, 7683, 7684, 5, 273, 0, 0, 7684, 7685, 5, 866, 0, 0, 7685, 7686, 3, 800, 400, 0, 7686, 7687, 5, 868, 0, 0, 7687, 7688, 3, 708, 354, 0, 7688, 7689, 5, 867, 0, 0, 7689, 7690, 3, 774, 387, 0, 7690, 7698, 1, 0, 0, 0, 7691, 7692, 5, 272, 0, 0, 7692, 7693, 5, 866, 0, 0, 7693, 7694, 3, 708, 354, 0, 7694, 7695, 5, 867, 0, 0, 7695, 7696, 3, 774, 387, 0, 7696, 7698, 1, 0, 0, 0, 7697, 7659, 1, 0, 0, 0, 7697, 7673, 1, 0, 0, 0, 7697, 7679, 1, 0, 0, 0, 7697, 7683, 1, 0, 0, 0, 7697, 7691, 1, 0, 0, 0, 7698, 773, 1, 0, 0, 0, 7699, 7705, 5, 129, 0, 0, 7700, 7701, 5, 866, 0, 0, 7701, 7702, 3, 776, 388, 0, 7702, 7703, 5, 867, 0, 0, 7703, 7706, 1, 0, 0, 0, 7704, 7706, 3, 778, 389, 0, 7705, 7700, 1, 0, 0, 0, 7705, 7704, 1, 0, 0, 0, 7706, 775, 1, 0, 0, 0, 7707, 7709, 3, 778, 389, 0, 7708, 7707, 1, 0, 0, 0, 7708, 7709, 1, 0, 0, 0, 7709, 7711, 1, 0, 0, 0, 7710, 7712, 3, 790, 395, 0, 7711, 7710, 1, 0, 0, 0, 7711, 7712, 1, 0, 0, 0, 7712, 7714, 1, 0, 0, 0, 7713, 7715, 3, 252, 126, 0, 7714, 7713, 1, 0, 0, 0, 7714, 7715, 1, 0, 0, 0, 7715, 7717, 1, 0, 0, 0, 7716, 7718, 3, 780, 390, 0, 7717, 7716, 1, 0, 0, 0, 7717, 7718, 1, 0, 0, 0, 7718, 777, 1, 0, 0, 0, 7719, 7720, 3, 702, 351, 0, 7720, 779, 1, 0, 0, 0, 7721, 7722, 3, 782, 391, 0, 7722, 7723, 3, 784, 392, 0, 7723, 781, 1, 0, 0, 0, 7724, 7725, 7, 144, 0, 0, 7725, 783, 1, 0, 0, 0, 7726, 7729, 3, 788, 394, 0, 7727, 7729, 3, 786, 393, 0, 7728, 7726, 1, 0, 0, 0, 7728, 7727, 1, 0, 0, 0, 7729, 785, 1, 0, 0, 0, 7730, 7731, 5, 17, 0, 0, 7731, 7732, 3, 788, 394, 0, 7732, 7733, 5, 11, 0, 0, 7733, 7734, 3, 788, 394, 0, 7734, 787, 1, 0, 0, 0, 7735, 7736, 5, 36, 0, 0, 7736, 7743, 5, 586, 0, 0, 7737, 7738, 5, 669, 0, 0, 7738, 7743, 7, 145, 0, 0, 7739, 7740, 3, 800, 400, 0, 7740, 7741, 7, 145, 0, 0, 7741, 7743, 1, 0, 0, 0, 7742, 7735, 1, 0, 0, 0, 7742, 7737, 1, 0, 0, 0, 7742, 7739, 1, 0, 0, 0, 7743, 789, 1, 0, 0, 0, 7744, 7745, 5, 130, 0, 0, 7745, 7746, 5, 20, 0, 0, 7746, 7751, 3, 800, 400, 0, 7747, 7748, 5, 868, 0, 0, 7748, 7750, 3, 800, 400, 0, 7749, 7747, 1, 0, 0, 0, 7750, 7753, 1, 0, 0, 0, 7751, 7749, 1, 0, 0, 0, 7751, 7752, 1, 0, 0, 0, 7752, 791, 1, 0, 0, 0, 7753, 7751, 1, 0, 0, 0, 7754, 7779, 3, 832, 416, 0, 7755, 7779, 5, 757, 0, 0, 7756, 7779, 5, 289, 0, 0, 7757, 7779, 5, 285, 0, 0, 7758, 7779, 5, 286, 0, 0, 7759, 7779, 5, 287, 0, 0, 7760, 7779, 5, 290, 0, 0, 7761, 7779, 5, 291, 0, 0, 7762, 7779, 5, 292, 0, 0, 7763, 7779, 5, 78, 0, 0, 7764, 7779, 5, 86, 0, 0, 7765, 7779, 5, 288, 0, 0, 7766, 7779, 5, 294, 0, 0, 7767, 7779, 5, 488, 0, 0, 7768, 7779, 5, 295, 0, 0, 7769, 7779, 5, 142, 0, 0, 7770, 7779, 5, 143, 0, 0, 7771, 7779, 5, 297, 0, 0, 7772, 7779, 5, 298, 0, 0, 7773, 7779, 5, 299, 0, 0, 7774, 7779, 5, 300, 0, 0, 7775, 7779, 5, 301, 0, 0, 7776, 7779, 5, 302, 0, 0, 7777, 7779, 5, 303, 0, 0, 7778, 7754, 1, 0, 0, 0, 7778, 7755, 1, 0, 0, 0, 7778, 7756, 1, 0, 0, 0, 7778, 7757, 1, 0, 0, 0, 7778, 7758, 1, 0, 0, 0, 7778, 7759, 1, 0, 0, 0, 7778, 7760, 1, 0, 0, 0, 7778, 7761, 1, 0, 0, 0, 7778, 7762, 1, 0, 0, 0, 7778, 7763, 1, 0, 0, 0, 7778, 7764, 1, 0, 0, 0, 7778, 7765, 1, 0, 0, 0, 7778, 7766, 1, 0, 0, 0, 7778, 7767, 1, 0, 0, 0, 7778, 7768, 1, 0, 0, 0, 7778, 7769, 1, 0, 0, 0, 7778, 7770, 1, 0, 0, 0, 7778, 7771, 1, 0, 0, 0, 7778, 7772, 1, 0, 0, 0, 7778, 7773, 1, 0, 0, 0, 7778, 7774, 1, 0, 0, 0, 7778, 7775, 1, 0, 0, 0, 7778, 7776, 1, 0, 0, 0, 7778, 7777, 1, 0, 0, 0, 7779, 793, 1, 0, 0, 0, 7780, 7781, 7, 146, 0, 0, 7781, 7782, 5, 866, 0, 0, 7782, 7783, 3, 798, 399, 0, 7783, 7784, 5, 867, 0, 0, 7784, 795, 1, 0, 0, 0, 7785, 7790, 3, 798, 399, 0, 7786, 7787, 5, 868, 0, 0, 7787, 7789, 3, 798, 399, 0, 7788, 7786, 1, 0, 0, 0, 7789, 7792, 1, 0, 0, 0, 7790, 7788, 1, 0, 0, 0, 7790, 7791, 1, 0, 0, 0, 7791, 797, 1, 0, 0, 0, 7792, 7790, 1, 0, 0, 0, 7793, 7797, 3, 720, 360, 0, 7794, 7797, 3, 760, 380, 0, 7795, 7797, 3, 800, 400, 0, 7796, 7793, 1, 0, 0, 0, 7796, 7794, 1, 0, 0, 0, 7796, 7795, 1, 0, 0, 0, 7797, 799, 1, 0, 0, 0, 7798, 7799, 6, 400, -1, 0, 7799, 7800, 7, 147, 0, 0, 7800, 7810, 3, 800, 400, 4, 7801, 7802, 3, 802, 401, 0, 7802, 7804, 5, 89, 0, 0, 7803, 7805, 5, 114, 0, 0, 7804, 7803, 1, 0, 0, 0, 7804, 7805, 1, 0, 0, 0, 7805, 7806, 1, 0, 0, 0, 7806, 7807, 7, 148, 0, 0, 7807, 7810, 1, 0, 0, 0, 7808, 7810, 3, 802, 401, 0, 7809, 7798, 1, 0, 0, 0, 7809, 7801, 1, 0, 0, 0, 7809, 7808, 1, 0, 0, 0, 7810, 7817, 1, 0, 0, 0, 7811, 7812, 10, 3, 0, 0, 7812, 7813, 3, 812, 406, 0, 7813, 7814, 3, 800, 400, 4, 7814, 7816, 1, 0, 0, 0, 7815, 7811, 1, 0, 0, 0, 7816, 7819, 1, 0, 0, 0, 7817, 7815, 1, 0, 0, 0, 7817, 7818, 1, 0, 0, 0, 7818, 801, 1, 0, 0, 0, 7819, 7817, 1, 0, 0, 0, 7820, 7821, 6, 401, -1, 0, 7821, 7822, 3, 804, 402, 0, 7822, 7886, 1, 0, 0, 0, 7823, 7825, 10, 6, 0, 0, 7824, 7826, 5, 114, 0, 0, 7825, 7824, 1, 0, 0, 0, 7825, 7826, 1, 0, 0, 0, 7826, 7827, 1, 0, 0, 0, 7827, 7828, 5, 17, 0, 0, 7828, 7829, 3, 802, 401, 0, 7829, 7830, 5, 11, 0, 0, 7830, 7831, 3, 802, 401, 7, 7831, 7885, 1, 0, 0, 0, 7832, 7833, 10, 5, 0, 0, 7833, 7834, 5, 604, 0, 0, 7834, 7835, 5, 99, 0, 0, 7835, 7885, 3, 802, 401, 6, 7836, 7838, 10, 3, 0, 0, 7837, 7839, 5, 114, 0, 0, 7838, 7837, 1, 0, 0, 0, 7838, 7839, 1, 0, 0, 0, 7839, 7840, 1, 0, 0, 0, 7840, 7841, 7, 149, 0, 0, 7841, 7885, 3, 802, 401, 4, 7842, 7844, 10, 9, 0, 0, 7843, 7845, 5, 114, 0, 0, 7844, 7843, 1, 0, 0, 0, 7844, 7845, 1, 0, 0, 0, 7845, 7846, 1, 0, 0, 0, 7846, 7847, 5, 80, 0, 0, 7847, 7850, 5, 866, 0, 0, 7848, 7851, 3, 204, 102, 0, 7849, 7851, 3, 736, 368, 0, 7850, 7848, 1, 0, 0, 0, 7850, 7849, 1, 0, 0, 0, 7851, 7852, 1, 0, 0, 0, 7852, 7853, 5, 867, 0, 0, 7853, 7885, 1, 0, 0, 0, 7854, 7855, 10, 8, 0, 0, 7855, 7856, 5, 89, 0, 0, 7856, 7885, 3, 718, 359, 0, 7857, 7858, 10, 7, 0, 0, 7858, 7865, 3, 808, 404, 0, 7859, 7860, 7, 150, 0, 0, 7860, 7861, 5, 866, 0, 0, 7861, 7862, 3, 204, 102, 0, 7862, 7863, 5, 867, 0, 0, 7863, 7866, 1, 0, 0, 0, 7864, 7866, 3, 802, 401, 0, 7865, 7859, 1, 0, 0, 0, 7865, 7864, 1, 0, 0, 0, 7866, 7885, 1, 0, 0, 0, 7867, 7869, 10, 4, 0, 0, 7868, 7870, 5, 114, 0, 0, 7869, 7868, 1, 0, 0, 0, 7869, 7870, 1, 0, 0, 0, 7870, 7871, 1, 0, 0, 0, 7871, 7872, 5, 99, 0, 0, 7872, 7875, 3, 802, 401, 0, 7873, 7874, 5, 384, 0, 0, 7874, 7876, 5, 882, 0, 0, 7875, 7873, 1, 0, 0, 0, 7875, 7876, 1, 0, 0, 0, 7876, 7885, 1, 0, 0, 0, 7877, 7878, 10, 2, 0, 0, 7878, 7879, 5, 485, 0, 0, 7879, 7880, 5, 510, 0, 0, 7880, 7881, 5, 866, 0, 0, 7881, 7882, 3, 802, 401, 0, 7882, 7883, 5, 867, 0, 0, 7883, 7885, 1, 0, 0, 0, 7884, 7823, 1, 0, 0, 0, 7884, 7832, 1, 0, 0, 0, 7884, 7836, 1, 0, 0, 0, 7884, 7842, 1, 0, 0, 0, 7884, 7854, 1, 0, 0, 0, 7884, 7857, 1, 0, 0, 0, 7884, 7867, 1, 0, 0, 0, 7884, 7877, 1, 0, 0, 0, 7885, 7888, 1, 0, 0, 0, 7886, 7884, 1, 0, 0, 0, 7886, 7887, 1, 0, 0, 0, 7887, 803, 1, 0, 0, 0, 7888, 7886, 1, 0, 0, 0, 7889, 7890, 6, 402, -1, 0, 7890, 7938, 3, 720, 360, 0, 7891, 7938, 3, 760, 380, 0, 7892, 7938, 3, 682, 341, 0, 7893, 7894, 3, 806, 403, 0, 7894, 7895, 3, 804, 402, 12, 7895, 7938, 1, 0, 0, 0, 7896, 7897, 5, 228, 0, 0, 7897, 7938, 3, 804, 402, 11, 7898, 7899, 5, 892, 0, 0, 7899, 7900, 5, 841, 0, 0, 7900, 7938, 3, 804, 402, 10, 7901, 7902, 5, 866, 0, 0, 7902, 7907, 3, 800, 400, 0, 7903, 7904, 5, 868, 0, 0, 7904, 7906, 3, 800, 400, 0, 7905, 7903, 1, 0, 0, 0, 7906, 7909, 1, 0, 0, 0, 7907, 7905, 1, 0, 0, 0, 7907, 7908, 1, 0, 0, 0, 7908, 7910, 1, 0, 0, 0, 7909, 7907, 1, 0, 0, 0, 7910, 7911, 5, 867, 0, 0, 7911, 7938, 1, 0, 0, 0, 7912, 7913, 5, 586, 0, 0, 7913, 7914, 5, 866, 0, 0, 7914, 7917, 3, 800, 400, 0, 7915, 7916, 5, 868, 0, 0, 7916, 7918, 3, 800, 400, 0, 7917, 7915, 1, 0, 0, 0, 7918, 7919, 1, 0, 0, 0, 7919, 7917, 1, 0, 0, 0, 7919, 7920, 1, 0, 0, 0, 7920, 7921, 1, 0, 0, 0, 7921, 7922, 5, 867, 0, 0, 7922, 7938, 1, 0, 0, 0, 7923, 7924, 5, 60, 0, 0, 7924, 7925, 5, 866, 0, 0, 7925, 7926, 3, 204, 102, 0, 7926, 7927, 5, 867, 0, 0, 7927, 7938, 1, 0, 0, 0, 7928, 7929, 5, 866, 0, 0, 7929, 7930, 3, 204, 102, 0, 7930, 7931, 5, 867, 0, 0, 7931, 7938, 1, 0, 0, 0, 7932, 7933, 5, 87, 0, 0, 7933, 7934, 3, 800, 400, 0, 7934, 7935, 3, 66, 33, 0, 7935, 7938, 1, 0, 0, 0, 7936, 7938, 3, 658, 329, 0, 7937, 7889, 1, 0, 0, 0, 7937, 7891, 1, 0, 0, 0, 7937, 7892, 1, 0, 0, 0, 7937, 7893, 1, 0, 0, 0, 7937, 7896, 1, 0, 0, 0, 7937, 7898, 1, 0, 0, 0, 7937, 7901, 1, 0, 0, 0, 7937, 7912, 1, 0, 0, 0, 7937, 7923, 1, 0, 0, 0, 7937, 7928, 1, 0, 0, 0, 7937, 7932, 1, 0, 0, 0, 7937, 7936, 1, 0, 0, 0, 7938, 7956, 1, 0, 0, 0, 7939, 7940, 10, 4, 0, 0, 7940, 7941, 3, 818, 409, 0, 7941, 7942, 3, 804, 402, 5, 7942, 7955, 1, 0, 0, 0, 7943, 7944, 10, 3, 0, 0, 7944, 7945, 3, 814, 407, 0, 7945, 7946, 3, 804, 402, 4, 7946, 7955, 1, 0, 0, 0, 7947, 7948, 10, 2, 0, 0, 7948, 7949, 3, 816, 408, 0, 7949, 7950, 3, 804, 402, 3, 7950, 7955, 1, 0, 0, 0, 7951, 7952, 10, 14, 0, 0, 7952, 7953, 5, 28, 0, 0, 7953, 7955, 3, 686, 343, 0, 7954, 7939, 1, 0, 0, 0, 7954, 7943, 1, 0, 0, 0, 7954, 7947, 1, 0, 0, 0, 7954, 7951, 1, 0, 0, 0, 7955, 7958, 1, 0, 0, 0, 7956, 7954, 1, 0, 0, 0, 7956, 7957, 1, 0, 0, 0, 7957, 805, 1, 0, 0, 0, 7958, 7956, 1, 0, 0, 0, 7959, 7960, 7, 151, 0, 0, 7960, 807, 1, 0, 0, 0, 7961, 7962, 5, 859, 0, 0, 7962, 7970, 5, 858, 0, 0, 7963, 7964, 5, 860, 0, 0, 7964, 7970, 5, 857, 0, 0, 7965, 7966, 5, 859, 0, 0, 7966, 7967, 5, 857, 0, 0, 7967, 7970, 5, 858, 0, 0, 7968, 7970, 3, 810, 405, 0, 7969, 7961, 1, 0, 0, 0, 7969, 7963, 1, 0, 0, 0, 7969, 7965, 1, 0, 0, 0, 7969, 7968, 1, 0, 0, 0, 7970, 809, 1, 0, 0, 0, 7971, 7972, 5, 859, 0, 0, 7972, 7979, 5, 857, 0, 0, 7973, 7974, 5, 858, 0, 0, 7974, 7979, 5, 857, 0, 0, 7975, 7979, 5, 857, 0, 0, 7976, 7979, 5, 858, 0, 0, 7977, 7979, 5, 859, 0, 0, 7978, 7971, 1, 0, 0, 0, 7978, 7973, 1, 0, 0, 0, 7978, 7975, 1, 0, 0, 0, 7978, 7976, 1, 0, 0, 0, 7978, 7977, 1, 0, 0, 0, 7979, 811, 1, 0, 0, 0, 7980, 7988, 5, 11, 0, 0, 7981, 7982, 5, 863, 0, 0, 7982, 7988, 5, 863, 0, 0, 7983, 7988, 5, 196, 0, 0, 7984, 7988, 5, 124, 0, 0, 7985, 7986, 5, 862, 0, 0, 7986, 7988, 5, 862, 0, 0, 7987, 7980, 1, 0, 0, 0, 7987, 7981, 1, 0, 0, 0, 7987, 7983, 1, 0, 0, 0, 7987, 7984, 1, 0, 0, 0, 7987, 7985, 1, 0, 0, 0, 7988, 813, 1, 0, 0, 0, 7989, 7990, 5, 859, 0, 0, 7990, 7997, 5, 859, 0, 0, 7991, 7992, 5, 858, 0, 0, 7992, 7997, 5, 858, 0, 0, 7993, 7997, 5, 863, 0, 0, 7994, 7997, 5, 864, 0, 0, 7995, 7997, 5, 862, 0, 0, 7996, 7989, 1, 0, 0, 0, 7996, 7991, 1, 0, 0, 0, 7996, 7993, 1, 0, 0, 0, 7996, 7994, 1, 0, 0, 0, 7996, 7995, 1, 0, 0, 0, 7997, 815, 1, 0, 0, 0, 7998, 7999, 7, 152, 0, 0, 7999, 817, 1, 0, 0, 0, 8000, 8001, 5, 854, 0, 0, 8001, 8006, 5, 858, 0, 0, 8002, 8003, 5, 854, 0, 0, 8003, 8004, 5, 858, 0, 0, 8004, 8006, 5, 858, 0, 0, 8005, 8000, 1, 0, 0, 0, 8005, 8002, 1, 0, 0, 0, 8006, 819, 1, 0, 0, 0, 8007, 8008, 7, 153, 0, 0, 8008, 821, 1, 0, 0, 0, 8009, 8010, 7, 154, 0, 0, 8010, 823, 1, 0, 0, 0, 8011, 8012, 7, 155, 0, 0, 8012, 825, 1, 0, 0, 0, 8013, 8014, 7, 156, 0, 0, 8014, 827, 1, 0, 0, 0, 8015, 8016, 7, 157, 0, 0, 8016, 829, 1, 0, 0, 0, 8017, 8018, 7, 158, 0, 0, 8018, 831, 1, 0, 0, 0, 8019, 8020, 7, 159, 0, 0, 8020, 833, 1, 0, 0, 0, 1154, 837, 844, 847, 856, 899, 918, 929, 945, 950, 962, 997, 1007, 1012, 1018, 1023, 1027, 1036, 1039, 1042, 1046, 1053, 1056, 1061, 1069, 1074, 1079, 1082, 1084, 1096, 1099, 1103, 1106, 1110, 1113, 1117, 1120, 1123, 1127, 1130, 1134, 1140, 1144, 1149, 1155, 1162, 1170, 1188, 1195, 1199, 1203, 1207, 1212, 1215, 1218, 1221, 1224, 1230, 1234, 1244, 1248, 1252, 1258, 1263, 1266, 1269, 1271, 1275, 1282, 1286, 1289, 1294, 1298, 1301, 1305, 1308, 1312, 1325, 1328, 1332, 1335, 1339, 1342, 1346, 1349, 1353, 1356, 1359, 1363, 1366, 1370, 1376, 1380, 1392, 1398, 1409, 1414, 1422, 1426, 1431, 1434, 1439, 1449, 1454, 1459, 1465, 1470, 1474, 1476, 1479, 1483, 1487, 1490, 1494, 1498, 1502, 1508, 1511, 1518, 1523, 1529, 1536, 1542, 1550, 1553, 1560, 1563, 1565, 1571, 1577, 1594, 1601, 1608, 1620, 1625, 1628, 1631, 1641, 1654, 1659, 1675, 1683, 1693, 1696, 1702, 1707, 1710, 1716, 1720, 1725, 1731, 1735, 1739, 1742, 1745, 1751, 1755, 1760, 1771, 1774, 1781, 1784, 1788, 1794, 1806, 1809, 1814, 1827, 1834, 1840, 1845, 1849, 1852, 1860, 1868, 1870, 1880, 1884, 1887, 1891, 1896, 1901, 1906, 1910, 1914, 1918, 1922, 1926, 1930, 1935, 1940, 1945, 1951, 1956, 1961, 1966, 1971, 1976, 1982, 1987, 1992, 1997, 2002, 2007, 2012, 2017, 2024, 2029, 2034, 2039, 2043, 2048, 2056, 2061, 2067, 2079, 2086, 2088, 2096, 2101, 2104, 2112, 2118, 2122, 2135, 2147, 2149, 2152, 2160, 2166, 2172, 2185, 2192, 2201, 2206, 2217, 2226, 2231, 2243, 2250, 2259, 2264, 2276, 2283, 2292, 2297, 2304, 2313, 2318, 2320, 2325, 2333, 2342, 2346, 2349, 2353, 2358, 2364, 2370, 2375, 2380, 2385, 2390, 2393, 2398, 2403, 2413, 2417, 2424, 2429, 2432, 2437, 2440, 2444, 2448, 2456, 2475, 2478, 2481, 2485, 2495, 2508, 2521, 2524, 2530, 2533, 2537, 2546, 2549, 2552, 2557, 2561, 2564, 2568, 2572, 2575, 2579, 2582, 2586, 2589, 2595, 2598, 2603, 2611, 2617, 2621, 2625, 2630, 2635, 2642, 2646, 2657, 2665, 2668, 2674, 2680, 2683, 2689, 2695, 2697, 2702, 2708, 2714, 2716, 2720, 2723, 2726, 2732, 2738, 2740, 2745, 2752, 2761, 2764, 2768, 2773, 2783, 2792, 2800, 2803, 2811, 2814, 2821, 2826, 2834, 2850, 2855, 2862, 2881, 2887, 2897, 2909, 2916, 2923, 2938, 2951, 2957, 2963, 2969, 2975, 2981, 2987, 2992, 2999, 3006, 3013, 3018, 3021, 3023, 3032, 3039, 3046, 3053, 3062, 3068, 3072, 3076, 3080, 3086, 3089, 3094, 3101, 3108, 3112, 3117, 3127, 3135, 3141, 3150, 3159, 3168, 3171, 3175, 3184, 3188, 3191, 3194, 3200, 3203, 3206, 3210, 3213, 3216, 3219, 3230, 3233, 3238, 3244, 3249, 3254, 3257, 3261, 3266, 3269, 3274, 3284, 3289, 3295, 3297, 3303, 3305, 3311, 3319, 3324, 3332, 3335, 3340, 3343, 3348, 3356, 3362, 3366, 3368, 3374, 3382, 3387, 3395, 3398, 3403, 3406, 3410, 3413, 3416, 3420, 3423, 3431, 3437, 3441, 3447, 3452, 3456, 3458, 3464, 3468, 3471, 3474, 3477, 3483, 3488, 3491, 3494, 3497, 3500, 3502, 3505, 3509, 3512, 3515, 3523, 3529, 3532, 3534, 3543, 3548, 3555, 3558, 3561, 3565, 3569, 3575, 3579, 3586, 3590, 3593, 3596, 3601, 3608, 3618, 3627, 3636, 3646, 3649, 3653, 3659, 3663, 3666, 3669, 3674, 3677, 3684, 3688, 3691, 3695, 3699, 3702, 3705, 3710, 3716, 3720, 3730, 3736, 3740, 3746, 3750, 3756, 3759, 3771, 3775, 3779, 3787, 3791, 3805, 3810, 3813, 3817, 3820, 3828, 3833, 3836, 3839, 3843, 3846, 3855, 3860, 3869, 3874, 3881, 3888, 3896, 3902, 3910, 3913, 3916, 3923, 3926, 3929, 3936, 3939, 3943, 3949, 3959, 3963, 3972, 3975, 3979, 3985, 3993, 3998, 4002, 4008, 4014, 4017, 4019, 4023, 4032, 4042, 4048, 4053, 4057, 4060, 4063, 4066, 4069, 4072, 4076, 4080, 4088, 4092, 4095, 4097, 4110, 4113, 4120, 4130, 4133, 4138, 4140, 4144, 4152, 4158, 4167, 4180, 4184, 4190, 4195, 4199, 4202, 4206, 4209, 4217, 4220, 4222, 4230, 4242, 4248, 4250, 4256, 4258, 4260, 4266, 4274, 4282, 4286, 4290, 4299, 4304, 4324, 4329, 4335, 4342, 4347, 4356, 4359, 4363, 4367, 4371, 4374, 4377, 4380, 4384, 4388, 4391, 4394, 4397, 4404, 4408, 4423, 4436, 4444, 4454, 4458, 4461, 4467, 4470, 4473, 4482, 4491, 4501, 4505, 4515, 4519, 4530, 4534, 4543, 4552, 4555, 4559, 4564, 4568, 4577, 4580, 4583, 4590, 4596, 4602, 4628, 4631, 4634, 4653, 4655, 4678, 4681, 4684, 4703, 4705, 4719, 4732, 4769, 4774, 4809, 4823, 4830, 4834, 4840, 4848, 4850, 4861, 4871, 4878, 4884, 4892, 4897, 4905, 4913, 4921, 4929, 4935, 4940, 4945, 4950, 4956, 4958, 4969, 4974, 4981, 4983, 4997, 5003, 5008, 5013, 5019, 5026, 5034, 5042, 5047, 5053, 5056, 5064, 5071, 5080, 5083, 5100, 5108, 5116, 5120, 5127, 5133, 5141, 5146, 5153, 5161, 5168, 5173, 5176, 5178, 5184, 5186, 5190, 5192, 5197, 5204, 5209, 5213, 5218, 5222, 5228, 5234, 5239, 5242, 5244, 5250, 5252, 5256, 5258, 5263, 5268, 5275, 5284, 5289, 5298, 5302, 5308, 5313, 5316, 5318, 5324, 5326, 5329, 5336, 5338, 5343, 5350, 5359, 5365, 5367, 5374, 5377, 5389, 5395, 5403, 5406, 5410, 5413, 5417, 5419, 5430, 5433, 5437, 5440, 5443, 5450, 5462, 5465, 5472, 5478, 5488, 5493, 5500, 5505, 5511, 5515, 5519, 5527, 5531, 5535, 5541, 5543, 5555, 5560, 5566, 5572, 5576, 5581, 5583, 5607, 5611, 5614, 5623, 5627, 5636, 5640, 5644, 5650, 5652, 5661, 5671, 5698, 5702, 5707, 5714, 5717, 5723, 5733, 5743, 5753, 5759, 5768, 5774, 5781, 5783, 5791, 5797, 5801, 5818, 5828, 5832, 5836, 5846, 5851, 5923, 5941, 5949, 5955, 5967, 5971, 5982, 5986, 5995, 6003, 6010, 6014, 6021, 6026, 6029, 6032, 6043, 6047, 6051, 6066, 6075, 6078, 6092, 6110, 6123, 6126, 6130, 6133, 6135, 6142, 6149, 6153, 6160, 6167, 6170, 6186, 6189, 6199, 6203, 6209, 6212, 6215, 6220, 6224, 6227, 6234, 6237, 6243, 6279, 6282, 6294, 6297, 6313, 6315, 6319, 6326, 6330, 6337, 6340, 6349, 6352, 6357, 6363, 6365, 6371, 6375, 6381, 6384, 6387, 6400, 6403, 6409, 6412, 6420, 6428, 6434, 6437, 6441, 6455, 6467, 6475, 6479, 6486, 6493, 6498, 6511, 6520, 6528, 6533, 6536, 6541, 6544, 6556, 6561, 6574, 6576, 6581, 6585, 6588, 6590, 6597, 6604, 6607, 6610, 6616, 6620, 6626, 6634, 6643, 6656, 6661, 6669, 6672, 6677, 6682, 6690, 6693, 6701, 6705, 6712, 6718, 6721, 6725, 6738, 6744, 6756, 6759, 6768, 6773, 6794, 6810, 6820, 6825, 6830, 6832, 6835, 6839, 6841, 6848, 6854, 6856, 6859, 6863, 6866, 6879, 6889, 6892, 6895, 6908, 6914, 6917, 6925, 6932, 6952, 6959, 6961, 6968, 6970, 6974, 6981, 6987, 6998, 7004, 7010, 7013, 7017, 7022, 7025, 7029, 7033, 7035, 7040, 7045, 7058, 7061, 7065, 7068, 7071, 7076, 7081, 7087, 7090, 7095, 7098, 7103, 7106, 7110, 7115, 7120, 7125, 7130, 7133, 7138, 7143, 7148, 7154, 7159, 7164, 7169, 7173, 7176, 7181, 7185, 7189, 7197, 7204, 7208, 7213, 7218, 7222, 7224, 7227, 7243, 7253, 7263, 7272, 7281, 7288, 7295, 7303, 7311, 7323, 7330, 7340, 7345, 7348, 7353, 7356, 7378, 7387, 7390, 7395, 7428, 7432, 7441, 7445, 7454, 7462, 7467, 7475, 7480, 7485, 7487, 7496, 7501, 7509, 7514, 7522, 7530, 7533, 7543, 7561, 7564, 7567, 7571, 7584, 7592, 7596, 7601, 7606, 7612, 7617, 7621, 7626, 7631, 7636, 7646, 7649, 7653, 7657, 7664, 7668, 7697, 7705, 7708, 7711, 7714, 7717, 7728, 7742, 7751, 7778, 7790, 7796, 7804, 7809, 7817, 7825, 7838, 7844, 7850, 7865, 7869, 7875, 7884, 7886, 7907, 7919, 7937, 7954, 7956, 7969, 7978, 7987, 7996, 8005] \ No newline at end of file +[4, 1, 895, 8072, 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, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 1, 0, 5, 0, 840, 8, 0, 10, 0, 12, 0, 843, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 849, 8, 1, 1, 1, 3, 1, 852, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 861, 8, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 905, 8, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 924, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 935, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 951, 8, 7, 1, 8, 1, 8, 1, 8, 3, 8, 956, 8, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 968, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1003, 8, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1013, 8, 11, 1, 12, 1, 12, 1, 12, 3, 12, 1018, 8, 12, 1, 12, 1, 12, 5, 12, 1022, 8, 12, 10, 12, 12, 12, 1025, 9, 12, 1, 13, 1, 13, 3, 13, 1029, 8, 13, 1, 13, 1, 13, 3, 13, 1033, 8, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1042, 8, 13, 1, 13, 3, 13, 1045, 8, 13, 1, 13, 3, 13, 1048, 8, 13, 1, 13, 1, 13, 3, 13, 1052, 8, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 3, 14, 1059, 8, 14, 1, 14, 3, 14, 1062, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1067, 8, 14, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 1073, 8, 14, 10, 14, 12, 14, 1076, 9, 14, 1, 14, 1, 14, 3, 14, 1080, 8, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1085, 8, 14, 1, 14, 5, 14, 1088, 8, 14, 10, 14, 12, 14, 1091, 9, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1102, 8, 15, 1, 15, 3, 15, 1105, 8, 15, 1, 15, 1, 15, 3, 15, 1109, 8, 15, 1, 15, 3, 15, 1112, 8, 15, 1, 15, 1, 15, 3, 15, 1116, 8, 15, 1, 15, 3, 15, 1119, 8, 15, 1, 15, 1, 15, 3, 15, 1123, 8, 15, 1, 15, 3, 15, 1126, 8, 15, 1, 15, 3, 15, 1129, 8, 15, 1, 15, 1, 15, 3, 15, 1133, 8, 15, 1, 15, 3, 15, 1136, 8, 15, 1, 15, 1, 15, 3, 15, 1140, 8, 15, 1, 15, 1, 15, 1, 16, 1, 16, 3, 16, 1146, 8, 16, 1, 16, 1, 16, 3, 16, 1150, 8, 16, 1, 16, 1, 16, 1, 16, 3, 16, 1155, 8, 16, 1, 16, 1, 16, 5, 16, 1159, 8, 16, 10, 16, 12, 16, 1162, 9, 16, 1, 16, 1, 16, 5, 16, 1166, 8, 16, 10, 16, 12, 16, 1169, 9, 16, 1, 16, 1, 16, 1, 17, 1, 17, 3, 17, 1175, 8, 17, 1, 17, 3, 17, 1178, 8, 17, 1, 17, 1, 17, 3, 17, 1182, 8, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1187, 8, 17, 1, 17, 1, 17, 5, 17, 1191, 8, 17, 10, 17, 12, 17, 1194, 9, 17, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 1200, 8, 17, 10, 17, 12, 17, 1203, 9, 17, 1, 17, 1, 17, 3, 17, 1207, 8, 17, 1, 18, 1, 18, 3, 18, 1211, 8, 18, 1, 18, 1, 18, 3, 18, 1215, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 3, 19, 1226, 8, 19, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 1242, 8, 20, 10, 20, 12, 20, 1245, 9, 20, 1, 20, 1, 20, 1, 21, 1, 21, 3, 21, 1251, 8, 21, 1, 21, 1, 21, 3, 21, 1255, 8, 21, 1, 21, 1, 21, 3, 21, 1259, 8, 21, 1, 21, 1, 21, 3, 21, 1263, 8, 21, 1, 21, 5, 21, 1266, 8, 21, 10, 21, 12, 21, 1269, 9, 21, 3, 21, 1271, 8, 21, 1, 21, 3, 21, 1274, 8, 21, 1, 21, 3, 21, 1277, 8, 21, 1, 21, 3, 21, 1280, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1286, 8, 21, 1, 21, 1, 21, 3, 21, 1290, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1300, 8, 21, 1, 21, 1, 21, 3, 21, 1304, 8, 21, 1, 21, 1, 21, 3, 21, 1308, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1314, 8, 21, 1, 21, 5, 21, 1317, 8, 21, 10, 21, 12, 21, 1320, 9, 21, 3, 21, 1322, 8, 21, 1, 21, 3, 21, 1325, 8, 21, 3, 21, 1327, 8, 21, 1, 22, 1, 22, 3, 22, 1331, 8, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1338, 8, 22, 1, 22, 1, 22, 3, 22, 1342, 8, 22, 1, 22, 3, 22, 1345, 8, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1350, 8, 22, 1, 22, 1, 22, 3, 22, 1354, 8, 22, 1, 22, 3, 22, 1357, 8, 22, 1, 22, 1, 22, 3, 22, 1361, 8, 22, 1, 22, 3, 22, 1364, 8, 22, 1, 23, 1, 23, 3, 23, 1368, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1381, 8, 23, 1, 23, 3, 23, 1384, 8, 23, 1, 23, 1, 23, 3, 23, 1388, 8, 23, 1, 23, 3, 23, 1391, 8, 23, 1, 23, 1, 23, 3, 23, 1395, 8, 23, 1, 23, 3, 23, 1398, 8, 23, 1, 23, 1, 23, 3, 23, 1402, 8, 23, 1, 23, 3, 23, 1405, 8, 23, 1, 23, 1, 23, 3, 23, 1409, 8, 23, 1, 23, 3, 23, 1412, 8, 23, 1, 23, 3, 23, 1415, 8, 23, 1, 23, 1, 23, 3, 23, 1419, 8, 23, 1, 23, 3, 23, 1422, 8, 23, 1, 23, 1, 23, 3, 23, 1426, 8, 23, 1, 23, 1, 23, 1, 24, 1, 24, 3, 24, 1432, 8, 24, 1, 24, 3, 24, 1435, 8, 24, 1, 24, 1, 24, 3, 24, 1439, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1451, 8, 24, 1, 24, 1, 24, 1, 25, 1, 25, 3, 25, 1457, 8, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1466, 8, 26, 10, 26, 12, 26, 1469, 9, 26, 1, 26, 1, 26, 3, 26, 1473, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1481, 8, 26, 1, 27, 1, 27, 3, 27, 1485, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1490, 8, 27, 1, 27, 3, 27, 1493, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1498, 8, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 1506, 8, 27, 10, 27, 12, 27, 1509, 9, 27, 1, 27, 1, 27, 3, 27, 1513, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1518, 8, 27, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1524, 8, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1529, 8, 27, 1, 27, 1, 27, 3, 27, 1533, 8, 27, 3, 27, 1535, 8, 27, 1, 28, 3, 28, 1538, 8, 28, 1, 28, 1, 28, 3, 28, 1542, 8, 28, 1, 28, 1, 28, 3, 28, 1546, 8, 28, 1, 28, 3, 28, 1549, 8, 28, 1, 28, 1, 28, 3, 28, 1553, 8, 28, 1, 28, 1, 28, 3, 28, 1557, 8, 28, 1, 28, 1, 28, 3, 28, 1561, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1567, 8, 28, 1, 28, 3, 28, 1570, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 3, 29, 1577, 8, 29, 1, 30, 1, 30, 1, 30, 3, 30, 1582, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 1588, 8, 31, 1, 32, 1, 32, 1, 32, 5, 32, 1593, 8, 32, 10, 32, 12, 32, 1596, 9, 32, 1, 32, 1, 32, 1, 32, 3, 32, 1601, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1607, 8, 32, 10, 32, 12, 32, 1610, 9, 32, 3, 32, 1612, 8, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1617, 8, 32, 10, 32, 12, 32, 1620, 9, 32, 3, 32, 1622, 8, 32, 3, 32, 1624, 8, 32, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1630, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1636, 8, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1653, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1660, 8, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 3, 38, 1667, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1679, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1684, 8, 38, 1, 38, 3, 38, 1687, 8, 38, 1, 39, 3, 39, 1690, 8, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1703, 8, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1716, 8, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1721, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1737, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 5, 43, 1743, 8, 43, 10, 43, 12, 43, 1746, 9, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1755, 8, 44, 1, 44, 3, 44, 1758, 8, 44, 1, 44, 1, 44, 5, 44, 1762, 8, 44, 10, 44, 12, 44, 1765, 9, 44, 1, 44, 1, 44, 3, 44, 1769, 8, 44, 1, 44, 3, 44, 1772, 8, 44, 1, 44, 1, 44, 5, 44, 1776, 8, 44, 10, 44, 12, 44, 1779, 9, 44, 1, 44, 3, 44, 1782, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1787, 8, 44, 1, 44, 1, 44, 5, 44, 1791, 8, 44, 10, 44, 12, 44, 1794, 9, 44, 1, 44, 3, 44, 1797, 8, 44, 1, 44, 1, 44, 3, 44, 1801, 8, 44, 1, 44, 3, 44, 1804, 8, 44, 1, 44, 3, 44, 1807, 8, 44, 1, 44, 1, 44, 5, 44, 1811, 8, 44, 10, 44, 12, 44, 1814, 9, 44, 1, 44, 3, 44, 1817, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1822, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1833, 8, 44, 1, 45, 3, 45, 1836, 8, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 3, 45, 1843, 8, 45, 1, 45, 3, 45, 1846, 8, 45, 1, 46, 1, 46, 3, 46, 1850, 8, 46, 1, 47, 1, 47, 5, 47, 1854, 8, 47, 10, 47, 12, 47, 1857, 9, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1868, 8, 48, 1, 48, 3, 48, 1871, 8, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1876, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1889, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1896, 8, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1902, 8, 48, 1, 49, 1, 49, 1, 49, 3, 49, 1907, 8, 49, 1, 49, 1, 49, 3, 49, 1911, 8, 49, 1, 49, 3, 49, 1914, 8, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1922, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1930, 8, 50, 3, 50, 1932, 8, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 3, 51, 1942, 8, 51, 1, 52, 1, 52, 3, 52, 1946, 8, 52, 1, 52, 3, 52, 1949, 8, 52, 1, 52, 1, 52, 3, 52, 1953, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1958, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1963, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1968, 8, 52, 1, 52, 1, 52, 3, 52, 1972, 8, 52, 1, 52, 1, 52, 3, 52, 1976, 8, 52, 1, 52, 1, 52, 3, 52, 1980, 8, 52, 1, 52, 1, 52, 3, 52, 1984, 8, 52, 1, 52, 1, 52, 3, 52, 1988, 8, 52, 1, 52, 1, 52, 3, 52, 1992, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1997, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2002, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2007, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2013, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2018, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2023, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2028, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2033, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2038, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2044, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2049, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2054, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2059, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2064, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2069, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2074, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2079, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2086, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2091, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2096, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2101, 8, 52, 1, 52, 1, 52, 3, 52, 2105, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2110, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2118, 8, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2123, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 2129, 8, 52, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 2141, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 2148, 8, 55, 3, 55, 2150, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2156, 8, 55, 10, 55, 12, 55, 2159, 9, 55, 1, 55, 1, 55, 3, 55, 2163, 8, 55, 1, 56, 3, 56, 2166, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 2174, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 2180, 8, 56, 1, 56, 1, 56, 3, 56, 2184, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 2197, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 2209, 8, 56, 3, 56, 2211, 8, 56, 1, 57, 3, 57, 2214, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2222, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2228, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2234, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2245, 8, 58, 10, 58, 12, 58, 2248, 9, 58, 1, 58, 1, 58, 5, 58, 2252, 8, 58, 10, 58, 12, 58, 2255, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2261, 8, 58, 10, 58, 12, 58, 2264, 9, 58, 1, 58, 1, 58, 3, 58, 2268, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2277, 8, 58, 10, 58, 12, 58, 2280, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2286, 8, 58, 10, 58, 12, 58, 2289, 9, 58, 1, 58, 1, 58, 3, 58, 2293, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2303, 8, 58, 10, 58, 12, 58, 2306, 9, 58, 1, 58, 1, 58, 5, 58, 2310, 8, 58, 10, 58, 12, 58, 2313, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2319, 8, 58, 10, 58, 12, 58, 2322, 9, 58, 1, 58, 1, 58, 3, 58, 2326, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2336, 8, 58, 10, 58, 12, 58, 2339, 9, 58, 1, 58, 1, 58, 5, 58, 2343, 8, 58, 10, 58, 12, 58, 2346, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2352, 8, 58, 10, 58, 12, 58, 2355, 9, 58, 1, 58, 1, 58, 3, 58, 2359, 8, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2364, 8, 58, 10, 58, 12, 58, 2367, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2373, 8, 58, 10, 58, 12, 58, 2376, 9, 58, 1, 58, 1, 58, 3, 58, 2380, 8, 58, 3, 58, 2382, 8, 58, 1, 59, 1, 59, 1, 59, 3, 59, 2387, 8, 59, 1, 60, 1, 60, 1, 60, 1, 60, 4, 60, 2393, 8, 60, 11, 60, 12, 60, 2394, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 5, 61, 2402, 8, 61, 10, 61, 12, 61, 2405, 9, 61, 1, 62, 3, 62, 2408, 8, 62, 1, 62, 3, 62, 2411, 8, 62, 1, 62, 1, 62, 3, 62, 2415, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2420, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2426, 8, 62, 1, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2432, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2437, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2442, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2447, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2452, 8, 62, 1, 62, 3, 62, 2455, 8, 62, 1, 63, 1, 63, 1, 63, 3, 63, 2460, 8, 63, 1, 63, 4, 63, 2463, 8, 63, 11, 63, 12, 63, 2464, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2475, 8, 63, 1, 64, 1, 64, 3, 64, 2479, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2486, 8, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2491, 8, 64, 1, 64, 3, 64, 2494, 8, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2499, 8, 64, 1, 64, 3, 64, 2502, 8, 64, 1, 64, 1, 64, 3, 64, 2506, 8, 64, 1, 64, 1, 64, 3, 64, 2510, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 2516, 8, 65, 10, 65, 12, 65, 2519, 9, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 2537, 8, 67, 1, 67, 3, 67, 2540, 8, 67, 1, 67, 3, 67, 2543, 8, 67, 1, 67, 1, 67, 3, 67, 2547, 8, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 5, 68, 2555, 8, 68, 10, 68, 12, 68, 2558, 9, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 5, 69, 2568, 8, 69, 10, 69, 12, 69, 2571, 9, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 2581, 8, 70, 10, 70, 12, 70, 2584, 9, 70, 3, 70, 2586, 8, 70, 1, 70, 1, 70, 5, 70, 2590, 8, 70, 10, 70, 12, 70, 2593, 9, 70, 3, 70, 2595, 8, 70, 1, 71, 1, 71, 3, 71, 2599, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2608, 8, 71, 1, 71, 3, 71, 2611, 8, 71, 1, 71, 3, 71, 2614, 8, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2619, 8, 71, 1, 71, 1, 71, 3, 71, 2623, 8, 71, 1, 71, 3, 71, 2626, 8, 71, 1, 71, 1, 71, 3, 71, 2630, 8, 71, 1, 71, 1, 71, 3, 71, 2634, 8, 71, 1, 71, 3, 71, 2637, 8, 71, 1, 71, 1, 71, 3, 71, 2641, 8, 71, 1, 71, 3, 71, 2644, 8, 71, 1, 71, 1, 71, 3, 71, 2648, 8, 71, 1, 71, 3, 71, 2651, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2657, 8, 72, 1, 72, 3, 72, 2660, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2665, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2673, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2679, 8, 72, 1, 72, 1, 72, 3, 72, 2683, 8, 72, 1, 73, 1, 73, 3, 73, 2687, 8, 73, 1, 73, 5, 73, 2690, 8, 73, 10, 73, 12, 73, 2693, 9, 73, 1, 73, 1, 73, 3, 73, 2697, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2704, 8, 73, 1, 73, 1, 73, 3, 73, 2708, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2717, 8, 73, 10, 73, 12, 73, 2720, 9, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2727, 8, 73, 1, 73, 3, 73, 2730, 8, 73, 1, 73, 1, 73, 5, 73, 2734, 8, 73, 10, 73, 12, 73, 2737, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2742, 8, 73, 1, 73, 3, 73, 2745, 8, 73, 1, 73, 1, 73, 5, 73, 2749, 8, 73, 10, 73, 12, 73, 2752, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2757, 8, 73, 3, 73, 2759, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2764, 8, 73, 1, 73, 1, 73, 5, 73, 2768, 8, 73, 10, 73, 12, 73, 2771, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2776, 8, 73, 3, 73, 2778, 8, 73, 1, 73, 1, 73, 3, 73, 2782, 8, 73, 1, 73, 3, 73, 2785, 8, 73, 1, 73, 3, 73, 2788, 8, 73, 1, 73, 1, 73, 5, 73, 2792, 8, 73, 10, 73, 12, 73, 2795, 9, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2800, 8, 73, 3, 73, 2802, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2807, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2814, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2823, 8, 73, 1, 73, 3, 73, 2826, 8, 73, 1, 73, 1, 73, 3, 73, 2830, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2835, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2845, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2854, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2862, 8, 73, 1, 73, 3, 73, 2865, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2873, 8, 73, 1, 73, 3, 73, 2876, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2883, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2888, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2896, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2912, 8, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2917, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2924, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2943, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2949, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 5, 74, 2957, 8, 74, 10, 74, 12, 74, 2960, 9, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 2971, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 2978, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 2985, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 5, 74, 2998, 8, 74, 10, 74, 12, 74, 3001, 9, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3013, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3019, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3025, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3031, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3037, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3043, 8, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 3049, 8, 74, 1, 75, 1, 75, 1, 75, 3, 75, 3054, 8, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 3, 76, 3061, 8, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 3, 77, 3068, 8, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 3075, 8, 77, 1, 77, 1, 77, 1, 77, 3, 77, 3080, 8, 77, 1, 77, 5, 77, 3083, 8, 77, 10, 77, 12, 77, 3086, 9, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 3094, 8, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 3, 79, 3101, 8, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 3, 80, 3108, 8, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 3, 81, 3115, 8, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 3124, 8, 82, 1, 82, 1, 82, 1, 83, 1, 83, 3, 83, 3130, 8, 83, 1, 83, 1, 83, 3, 83, 3134, 8, 83, 1, 83, 1, 83, 3, 83, 3138, 8, 83, 1, 84, 1, 84, 3, 84, 3142, 8, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 3148, 8, 84, 1, 84, 3, 84, 3151, 8, 84, 1, 85, 1, 85, 1, 85, 3, 85, 3156, 8, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 3, 86, 3163, 8, 86, 1, 86, 1, 86, 1, 86, 5, 86, 3168, 8, 86, 10, 86, 12, 86, 3171, 9, 86, 1, 86, 3, 86, 3174, 8, 86, 1, 87, 1, 87, 1, 87, 3, 87, 3179, 8, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 3, 88, 3189, 8, 88, 1, 88, 1, 88, 1, 88, 1, 88, 5, 88, 3195, 8, 88, 10, 88, 12, 88, 3198, 9, 88, 1, 88, 1, 88, 1, 88, 3, 88, 3203, 8, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 5, 89, 3210, 8, 89, 10, 89, 12, 89, 3213, 9, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 3, 91, 3221, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 3230, 8, 92, 1, 92, 3, 92, 3233, 8, 92, 1, 93, 1, 93, 3, 93, 3237, 8, 93, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 3246, 8, 95, 1, 96, 1, 96, 3, 96, 3250, 8, 96, 1, 96, 3, 96, 3253, 8, 96, 1, 96, 3, 96, 3256, 8, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 3262, 8, 96, 1, 96, 3, 96, 3265, 8, 96, 1, 96, 3, 96, 3268, 8, 96, 1, 96, 1, 96, 3, 96, 3272, 8, 96, 1, 96, 3, 96, 3275, 8, 96, 1, 96, 3, 96, 3278, 8, 96, 1, 96, 3, 96, 3281, 8, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 5, 96, 3290, 8, 96, 10, 96, 12, 96, 3293, 9, 96, 3, 96, 3295, 8, 96, 1, 97, 1, 97, 1, 97, 3, 97, 3300, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3306, 8, 98, 1, 99, 1, 99, 1, 99, 3, 99, 3311, 8, 99, 1, 99, 4, 99, 3314, 8, 99, 11, 99, 12, 99, 3315, 1, 100, 3, 100, 3319, 8, 100, 1, 100, 1, 100, 3, 100, 3323, 8, 100, 1, 101, 1, 101, 1, 101, 3, 101, 3328, 8, 101, 1, 101, 3, 101, 3331, 8, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3336, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3346, 8, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3351, 8, 101, 1, 101, 1, 101, 4, 101, 3355, 8, 101, 11, 101, 12, 101, 3356, 3, 101, 3359, 8, 101, 1, 101, 1, 101, 4, 101, 3363, 8, 101, 11, 101, 12, 101, 3364, 3, 101, 3367, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3373, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 3379, 8, 101, 10, 101, 12, 101, 3382, 9, 101, 1, 101, 1, 101, 3, 101, 3386, 8, 101, 1, 101, 1, 101, 1, 101, 1, 101, 5, 101, 3392, 8, 101, 10, 101, 12, 101, 3395, 9, 101, 3, 101, 3397, 8, 101, 1, 102, 1, 102, 1, 102, 3, 102, 3402, 8, 102, 1, 102, 3, 102, 3405, 8, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3410, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3418, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3424, 8, 102, 1, 102, 1, 102, 3, 102, 3428, 8, 102, 3, 102, 3430, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 3436, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3442, 8, 102, 10, 102, 12, 102, 3445, 9, 102, 1, 102, 1, 102, 3, 102, 3449, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3455, 8, 102, 10, 102, 12, 102, 3458, 9, 102, 3, 102, 3460, 8, 102, 1, 103, 1, 103, 1, 103, 3, 103, 3465, 8, 103, 1, 103, 3, 103, 3468, 8, 103, 1, 103, 1, 103, 3, 103, 3472, 8, 103, 1, 103, 3, 103, 3475, 8, 103, 1, 103, 3, 103, 3478, 8, 103, 1, 104, 1, 104, 3, 104, 3482, 8, 104, 1, 104, 3, 104, 3485, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3493, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3499, 8, 104, 1, 104, 1, 104, 3, 104, 3503, 8, 104, 1, 105, 1, 105, 5, 105, 3507, 8, 105, 10, 105, 12, 105, 3510, 9, 105, 1, 105, 1, 105, 3, 105, 3514, 8, 105, 1, 105, 1, 105, 3, 105, 3518, 8, 105, 3, 105, 3520, 8, 105, 1, 105, 1, 105, 5, 105, 3524, 8, 105, 10, 105, 12, 105, 3527, 9, 105, 1, 105, 3, 105, 3530, 8, 105, 1, 105, 3, 105, 3533, 8, 105, 1, 105, 3, 105, 3536, 8, 105, 1, 105, 3, 105, 3539, 8, 105, 1, 105, 1, 105, 5, 105, 3543, 8, 105, 10, 105, 12, 105, 3546, 9, 105, 1, 105, 1, 105, 3, 105, 3550, 8, 105, 1, 105, 3, 105, 3553, 8, 105, 1, 105, 3, 105, 3556, 8, 105, 1, 105, 3, 105, 3559, 8, 105, 1, 105, 3, 105, 3562, 8, 105, 3, 105, 3564, 8, 105, 1, 106, 3, 106, 3567, 8, 106, 1, 106, 1, 106, 3, 106, 3571, 8, 106, 1, 106, 3, 106, 3574, 8, 106, 1, 106, 3, 106, 3577, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 3585, 8, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 3591, 8, 107, 1, 107, 5, 107, 3594, 8, 107, 10, 107, 12, 107, 3597, 9, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 3605, 8, 108, 1, 108, 5, 108, 3608, 8, 108, 10, 108, 12, 108, 3611, 9, 108, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3617, 8, 109, 1, 109, 3, 109, 3620, 8, 109, 1, 109, 3, 109, 3623, 8, 109, 1, 109, 1, 109, 3, 109, 3627, 8, 109, 1, 110, 1, 110, 3, 110, 3631, 8, 110, 1, 111, 1, 111, 1, 111, 1, 111, 3, 111, 3637, 8, 111, 1, 111, 1, 111, 3, 111, 3641, 8, 111, 1, 112, 1, 112, 1, 112, 5, 112, 3646, 8, 112, 10, 112, 12, 112, 3649, 9, 112, 1, 112, 3, 112, 3652, 8, 112, 1, 112, 3, 112, 3655, 8, 112, 1, 112, 3, 112, 3658, 8, 112, 1, 113, 1, 113, 1, 113, 3, 113, 3663, 8, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 3670, 8, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 5, 115, 3678, 8, 115, 10, 115, 12, 115, 3681, 9, 115, 1, 116, 1, 116, 1, 116, 1, 116, 5, 116, 3687, 8, 116, 10, 116, 12, 116, 3690, 9, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 3, 118, 3698, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 5, 119, 3706, 8, 119, 10, 119, 12, 119, 3709, 9, 119, 3, 119, 3711, 8, 119, 1, 119, 1, 119, 3, 119, 3715, 8, 119, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3721, 8, 119, 1, 120, 1, 120, 3, 120, 3725, 8, 120, 1, 120, 3, 120, 3728, 8, 120, 1, 120, 3, 120, 3731, 8, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3736, 8, 120, 1, 120, 3, 120, 3739, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3746, 8, 120, 1, 120, 1, 120, 3, 120, 3750, 8, 120, 1, 120, 3, 120, 3753, 8, 120, 1, 120, 1, 120, 3, 120, 3757, 8, 120, 1, 121, 1, 121, 3, 121, 3761, 8, 121, 1, 121, 3, 121, 3764, 8, 121, 1, 121, 3, 121, 3767, 8, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3772, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3778, 8, 121, 5, 121, 3780, 8, 121, 10, 121, 12, 121, 3783, 9, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3792, 8, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3798, 8, 121, 5, 121, 3800, 8, 121, 10, 121, 12, 121, 3803, 9, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3808, 8, 121, 1, 121, 1, 121, 3, 121, 3812, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 3818, 8, 122, 1, 122, 3, 122, 3821, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3833, 8, 123, 1, 123, 1, 123, 3, 123, 3837, 8, 123, 1, 123, 1, 123, 3, 123, 3841, 8, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3849, 8, 124, 1, 124, 1, 124, 3, 124, 3853, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 5, 126, 3865, 8, 126, 10, 126, 12, 126, 3868, 9, 126, 1, 127, 1, 127, 3, 127, 3872, 8, 127, 1, 127, 3, 127, 3875, 8, 127, 1, 127, 1, 127, 3, 127, 3879, 8, 127, 1, 127, 3, 127, 3882, 8, 127, 1, 127, 1, 127, 1, 127, 1, 127, 5, 127, 3888, 8, 127, 10, 127, 12, 127, 3891, 9, 127, 1, 127, 1, 127, 3, 127, 3895, 8, 127, 1, 127, 3, 127, 3898, 8, 127, 1, 127, 3, 127, 3901, 8, 127, 1, 128, 1, 128, 3, 128, 3905, 8, 128, 1, 128, 3, 128, 3908, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 5, 128, 3915, 8, 128, 10, 128, 12, 128, 3918, 9, 128, 1, 128, 1, 128, 3, 128, 3922, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 5, 129, 3929, 8, 129, 10, 129, 12, 129, 3932, 9, 129, 1, 130, 1, 130, 3, 130, 3936, 8, 130, 1, 131, 1, 131, 1, 131, 5, 131, 3941, 8, 131, 10, 131, 12, 131, 3944, 9, 131, 1, 132, 1, 132, 5, 132, 3948, 8, 132, 10, 132, 12, 132, 3951, 9, 132, 1, 132, 1, 132, 1, 132, 5, 132, 3956, 8, 132, 10, 132, 12, 132, 3959, 9, 132, 1, 132, 1, 132, 1, 132, 3, 132, 3964, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3972, 8, 133, 1, 133, 3, 133, 3975, 8, 133, 1, 133, 3, 133, 3978, 8, 133, 1, 133, 1, 133, 1, 133, 5, 133, 3983, 8, 133, 10, 133, 12, 133, 3986, 9, 133, 3, 133, 3988, 8, 133, 1, 133, 3, 133, 3991, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3998, 8, 133, 1, 133, 3, 133, 4001, 8, 133, 1, 133, 1, 133, 3, 133, 4005, 8, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 4011, 8, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 4021, 8, 135, 1, 135, 1, 135, 3, 135, 4025, 8, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 4034, 8, 136, 1, 137, 3, 137, 4037, 8, 137, 1, 137, 1, 137, 3, 137, 4041, 8, 137, 1, 137, 1, 137, 5, 137, 4045, 8, 137, 10, 137, 12, 137, 4048, 9, 137, 1, 137, 1, 137, 1, 137, 5, 137, 4053, 8, 137, 10, 137, 12, 137, 4056, 9, 137, 1, 137, 1, 137, 3, 137, 4060, 8, 137, 1, 137, 1, 137, 3, 137, 4064, 8, 137, 1, 137, 1, 137, 5, 137, 4068, 8, 137, 10, 137, 12, 137, 4071, 9, 137, 1, 137, 1, 137, 1, 137, 3, 137, 4076, 8, 137, 1, 137, 3, 137, 4079, 8, 137, 3, 137, 4081, 8, 137, 1, 137, 1, 137, 3, 137, 4085, 8, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 3, 138, 4094, 8, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 4104, 8, 139, 1, 140, 1, 140, 5, 140, 4108, 8, 140, 10, 140, 12, 140, 4111, 9, 140, 1, 140, 1, 140, 3, 140, 4115, 8, 140, 1, 140, 1, 140, 3, 140, 4119, 8, 140, 1, 140, 3, 140, 4122, 8, 140, 1, 140, 3, 140, 4125, 8, 140, 1, 140, 3, 140, 4128, 8, 140, 1, 140, 3, 140, 4131, 8, 140, 1, 140, 3, 140, 4134, 8, 140, 1, 140, 3, 140, 4137, 8, 140, 1, 141, 1, 141, 3, 141, 4141, 8, 141, 1, 141, 1, 141, 3, 141, 4145, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 3, 142, 4153, 8, 142, 1, 142, 1, 142, 3, 142, 4157, 8, 142, 1, 142, 3, 142, 4160, 8, 142, 3, 142, 4162, 8, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 3, 143, 4175, 8, 143, 1, 143, 3, 143, 4178, 8, 143, 1, 144, 1, 144, 1, 144, 5, 144, 4183, 8, 144, 10, 144, 12, 144, 4186, 9, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 4195, 8, 145, 1, 145, 3, 145, 4198, 8, 145, 1, 145, 1, 145, 1, 145, 3, 145, 4203, 8, 145, 3, 145, 4205, 8, 145, 1, 145, 1, 145, 3, 145, 4209, 8, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 3, 145, 4217, 8, 145, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 4223, 8, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 4232, 8, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 4245, 8, 148, 1, 149, 1, 149, 3, 149, 4249, 8, 149, 1, 149, 1, 149, 5, 149, 4253, 8, 149, 10, 149, 12, 149, 4256, 9, 149, 1, 150, 1, 150, 3, 150, 4260, 8, 150, 1, 150, 1, 150, 3, 150, 4264, 8, 150, 1, 150, 3, 150, 4267, 8, 150, 1, 150, 1, 150, 3, 150, 4271, 8, 150, 1, 150, 3, 150, 4274, 8, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 3, 150, 4282, 8, 150, 1, 150, 3, 150, 4285, 8, 150, 3, 150, 4287, 8, 150, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 4293, 8, 151, 10, 151, 12, 151, 4296, 9, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 3, 151, 4307, 8, 151, 1, 151, 1, 151, 4, 151, 4311, 8, 151, 11, 151, 12, 151, 4312, 3, 151, 4315, 8, 151, 1, 151, 1, 151, 4, 151, 4319, 8, 151, 11, 151, 12, 151, 4320, 3, 151, 4323, 8, 151, 3, 151, 4325, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 3, 152, 4331, 8, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 3, 152, 4339, 8, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 3, 153, 4347, 8, 153, 1, 154, 1, 154, 3, 154, 4351, 8, 154, 1, 154, 1, 154, 3, 154, 4355, 8, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 5, 155, 4362, 8, 155, 10, 155, 12, 155, 4365, 9, 155, 1, 155, 1, 155, 3, 155, 4369, 8, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 5, 157, 4387, 8, 157, 10, 157, 12, 157, 4390, 9, 157, 1, 158, 1, 158, 3, 158, 4394, 8, 158, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, 4400, 8, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 3, 159, 4407, 8, 159, 1, 160, 1, 160, 1, 160, 3, 160, 4412, 8, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 5, 161, 4419, 8, 161, 10, 161, 12, 161, 4422, 9, 161, 3, 161, 4424, 8, 161, 1, 162, 1, 162, 3, 162, 4428, 8, 162, 1, 163, 1, 163, 3, 163, 4432, 8, 163, 1, 163, 1, 163, 3, 163, 4436, 8, 163, 1, 163, 3, 163, 4439, 8, 163, 1, 163, 3, 163, 4442, 8, 163, 1, 163, 3, 163, 4445, 8, 163, 1, 164, 1, 164, 3, 164, 4449, 8, 164, 1, 164, 1, 164, 3, 164, 4453, 8, 164, 1, 164, 3, 164, 4456, 8, 164, 1, 164, 3, 164, 4459, 8, 164, 1, 164, 3, 164, 4462, 8, 164, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 3, 166, 4469, 8, 166, 1, 166, 1, 166, 3, 166, 4473, 8, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 5, 168, 4486, 8, 168, 10, 168, 12, 168, 4489, 9, 168, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 3, 171, 4501, 8, 171, 1, 171, 1, 171, 1, 171, 1, 171, 5, 171, 4507, 8, 171, 10, 171, 12, 171, 4510, 9, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4519, 8, 172, 1, 173, 1, 173, 3, 173, 4523, 8, 173, 1, 173, 3, 173, 4526, 8, 173, 1, 173, 1, 173, 1, 174, 1, 174, 3, 174, 4532, 8, 174, 1, 174, 3, 174, 4535, 8, 174, 1, 174, 3, 174, 4538, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4547, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 3, 176, 4556, 8, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 5, 177, 4564, 8, 177, 10, 177, 12, 177, 4567, 9, 177, 1, 177, 3, 177, 4570, 8, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 5, 178, 4578, 8, 178, 10, 178, 12, 178, 4581, 9, 178, 1, 178, 3, 178, 4584, 8, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 5, 179, 4593, 8, 179, 10, 179, 12, 179, 4596, 9, 179, 1, 179, 3, 179, 4599, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 3, 180, 4608, 8, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 5, 181, 4615, 8, 181, 10, 181, 12, 181, 4618, 9, 181, 3, 181, 4620, 8, 181, 1, 181, 1, 181, 3, 181, 4624, 8, 181, 1, 181, 5, 181, 4627, 8, 181, 10, 181, 12, 181, 4630, 9, 181, 1, 181, 3, 181, 4633, 8, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4640, 8, 182, 10, 182, 12, 182, 4643, 9, 182, 3, 182, 4645, 8, 182, 1, 182, 3, 182, 4648, 8, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 4655, 8, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 4661, 8, 183, 1, 183, 1, 183, 1, 183, 1, 183, 3, 183, 4667, 8, 183, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 5, 185, 4691, 8, 185, 10, 185, 12, 185, 4694, 9, 185, 3, 185, 4696, 8, 185, 1, 185, 3, 185, 4699, 8, 185, 1, 186, 1, 186, 1, 187, 1, 187, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 4718, 8, 189, 3, 189, 4720, 8, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 5, 190, 4741, 8, 190, 10, 190, 12, 190, 4744, 9, 190, 3, 190, 4746, 8, 190, 1, 190, 3, 190, 4749, 8, 190, 1, 191, 1, 191, 1, 192, 1, 192, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 4768, 8, 194, 3, 194, 4770, 8, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 5, 196, 4782, 8, 196, 10, 196, 12, 196, 4785, 9, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 5, 196, 4795, 8, 196, 10, 196, 12, 196, 4798, 9, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 5, 196, 4832, 8, 196, 10, 196, 12, 196, 4835, 9, 196, 1, 196, 1, 196, 3, 196, 4839, 8, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4874, 8, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 3, 200, 4888, 8, 200, 1, 201, 1, 201, 1, 201, 5, 201, 4893, 8, 201, 10, 201, 12, 201, 4896, 9, 201, 1, 201, 3, 201, 4899, 8, 201, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 4905, 8, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4913, 8, 203, 3, 203, 4915, 8, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 3, 205, 4926, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 3, 207, 4936, 8, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 3, 208, 4943, 8, 208, 1, 209, 1, 209, 1, 209, 1, 209, 3, 209, 4949, 8, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 3, 211, 4957, 8, 211, 1, 212, 1, 212, 1, 212, 3, 212, 4962, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 5, 212, 4968, 8, 212, 10, 212, 12, 212, 4971, 9, 212, 1, 212, 1, 212, 1, 212, 5, 212, 4976, 8, 212, 10, 212, 12, 212, 4979, 9, 212, 1, 212, 1, 212, 1, 212, 5, 212, 4984, 8, 212, 10, 212, 12, 212, 4987, 9, 212, 1, 212, 1, 212, 1, 212, 5, 212, 4992, 8, 212, 10, 212, 12, 212, 4995, 9, 212, 1, 212, 5, 212, 4998, 8, 212, 10, 212, 12, 212, 5001, 9, 212, 1, 212, 1, 212, 3, 212, 5005, 8, 212, 1, 213, 1, 213, 1, 213, 3, 213, 5010, 8, 213, 1, 213, 4, 213, 5013, 8, 213, 11, 213, 12, 213, 5014, 1, 213, 1, 213, 4, 213, 5019, 8, 213, 11, 213, 12, 213, 5020, 3, 213, 5023, 8, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 4, 214, 5032, 8, 214, 11, 214, 12, 214, 5033, 1, 214, 5, 214, 5037, 8, 214, 10, 214, 12, 214, 5040, 9, 214, 1, 214, 1, 214, 4, 214, 5044, 8, 214, 11, 214, 12, 214, 5045, 3, 214, 5048, 8, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 3, 217, 5062, 8, 217, 1, 217, 1, 217, 4, 217, 5066, 8, 217, 11, 217, 12, 217, 5067, 1, 217, 1, 217, 1, 217, 3, 217, 5073, 8, 217, 1, 218, 1, 218, 1, 218, 3, 218, 5078, 8, 218, 1, 218, 1, 218, 4, 218, 5082, 8, 218, 11, 218, 12, 218, 5083, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5091, 8, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 3, 220, 5099, 8, 220, 1, 220, 1, 220, 1, 220, 1, 220, 4, 220, 5105, 8, 220, 11, 220, 12, 220, 5106, 1, 220, 1, 220, 1, 220, 3, 220, 5112, 8, 220, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 5118, 8, 221, 1, 221, 3, 221, 5121, 8, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 5129, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 3, 222, 5136, 8, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5145, 8, 223, 1, 223, 3, 223, 5148, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 5163, 8, 225, 10, 225, 12, 225, 5166, 9, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 3, 226, 5173, 8, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 3, 226, 5181, 8, 226, 1, 227, 1, 227, 3, 227, 5185, 8, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 3, 228, 5192, 8, 228, 1, 228, 1, 228, 4, 228, 5196, 8, 228, 11, 228, 12, 228, 5197, 1, 229, 1, 229, 1, 229, 1, 229, 4, 229, 5204, 8, 229, 11, 229, 12, 229, 5205, 1, 230, 1, 230, 1, 230, 3, 230, 5211, 8, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5216, 8, 230, 10, 230, 12, 230, 5219, 9, 230, 1, 230, 1, 230, 1, 230, 5, 230, 5224, 8, 230, 10, 230, 12, 230, 5227, 9, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5233, 8, 230, 1, 230, 5, 230, 5236, 8, 230, 10, 230, 12, 230, 5239, 9, 230, 3, 230, 5241, 8, 230, 3, 230, 5243, 8, 230, 1, 230, 1, 230, 4, 230, 5247, 8, 230, 11, 230, 12, 230, 5248, 3, 230, 5251, 8, 230, 1, 230, 1, 230, 5, 230, 5255, 8, 230, 10, 230, 12, 230, 5258, 9, 230, 1, 230, 1, 230, 3, 230, 5262, 8, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 3, 230, 5269, 8, 230, 1, 231, 1, 231, 1, 231, 3, 231, 5274, 8, 231, 1, 231, 1, 231, 3, 231, 5278, 8, 231, 1, 231, 1, 231, 1, 231, 3, 231, 5283, 8, 231, 5, 231, 5285, 8, 231, 10, 231, 12, 231, 5288, 9, 231, 1, 231, 1, 231, 1, 231, 3, 231, 5293, 8, 231, 1, 231, 1, 231, 1, 231, 1, 231, 3, 231, 5299, 8, 231, 1, 231, 5, 231, 5302, 8, 231, 10, 231, 12, 231, 5305, 9, 231, 3, 231, 5307, 8, 231, 3, 231, 5309, 8, 231, 1, 231, 1, 231, 4, 231, 5313, 8, 231, 11, 231, 12, 231, 5314, 3, 231, 5317, 8, 231, 1, 231, 1, 231, 5, 231, 5321, 8, 231, 10, 231, 12, 231, 5324, 9, 231, 1, 231, 1, 231, 3, 231, 5328, 8, 231, 1, 232, 1, 232, 1, 232, 3, 232, 5333, 8, 232, 1, 232, 1, 232, 1, 232, 5, 232, 5338, 8, 232, 10, 232, 12, 232, 5341, 9, 232, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 5347, 8, 233, 10, 233, 12, 233, 5350, 9, 233, 1, 233, 1, 233, 3, 233, 5354, 8, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 5361, 8, 233, 10, 233, 12, 233, 5364, 9, 233, 1, 233, 3, 233, 5367, 8, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 5373, 8, 233, 1, 233, 5, 233, 5376, 8, 233, 10, 233, 12, 233, 5379, 9, 233, 3, 233, 5381, 8, 233, 3, 233, 5383, 8, 233, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 5389, 8, 233, 10, 233, 12, 233, 5392, 9, 233, 3, 233, 5394, 8, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 3, 233, 5401, 8, 233, 3, 233, 5403, 8, 233, 1, 233, 1, 233, 1, 233, 3, 233, 5408, 8, 233, 1, 233, 1, 233, 1, 233, 5, 233, 5413, 8, 233, 10, 233, 12, 233, 5416, 9, 233, 1, 233, 1, 233, 1, 233, 1, 233, 5, 233, 5422, 8, 233, 10, 233, 12, 233, 5425, 9, 233, 1, 233, 1, 233, 1, 233, 3, 233, 5430, 8, 233, 3, 233, 5432, 8, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5439, 8, 234, 1, 234, 3, 234, 5442, 8, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 5, 235, 5452, 8, 235, 10, 235, 12, 235, 5455, 9, 235, 1, 235, 1, 235, 1, 235, 3, 235, 5460, 8, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 3, 236, 5468, 8, 236, 1, 236, 3, 236, 5471, 8, 236, 1, 236, 1, 236, 3, 236, 5475, 8, 236, 1, 236, 3, 236, 5478, 8, 236, 1, 236, 1, 236, 3, 236, 5482, 8, 236, 3, 236, 5484, 8, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 3, 237, 5495, 8, 237, 1, 237, 3, 237, 5498, 8, 237, 1, 237, 1, 237, 3, 237, 5502, 8, 237, 1, 237, 3, 237, 5505, 8, 237, 1, 237, 3, 237, 5508, 8, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5515, 8, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 5, 239, 5525, 8, 239, 10, 239, 12, 239, 5528, 9, 239, 3, 239, 5530, 8, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 5537, 8, 240, 1, 240, 1, 240, 5, 240, 5541, 8, 240, 10, 240, 12, 240, 5544, 9, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 5, 241, 5551, 8, 241, 10, 241, 12, 241, 5554, 9, 241, 1, 242, 1, 242, 3, 242, 5558, 8, 242, 1, 242, 1, 242, 1, 242, 5, 242, 5563, 8, 242, 10, 242, 12, 242, 5566, 9, 242, 1, 242, 1, 242, 3, 242, 5570, 8, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5576, 8, 242, 1, 242, 1, 242, 3, 242, 5580, 8, 242, 1, 242, 1, 242, 3, 242, 5584, 8, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5592, 8, 242, 1, 242, 1, 242, 3, 242, 5596, 8, 242, 1, 242, 1, 242, 3, 242, 5600, 8, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5606, 8, 242, 3, 242, 5608, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5620, 8, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5625, 8, 245, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5631, 8, 245, 1, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5637, 8, 245, 1, 245, 1, 245, 3, 245, 5641, 8, 245, 1, 245, 1, 245, 1, 245, 3, 245, 5646, 8, 245, 3, 245, 5648, 8, 245, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5672, 8, 247, 4, 247, 5674, 8, 247, 11, 247, 12, 247, 5675, 1, 247, 3, 247, 5679, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 5688, 8, 248, 1, 248, 1, 248, 3, 248, 5692, 8, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 5701, 8, 248, 1, 248, 1, 248, 3, 248, 5705, 8, 248, 1, 248, 1, 248, 3, 248, 5709, 8, 248, 1, 248, 1, 248, 1, 248, 1, 248, 3, 248, 5715, 8, 248, 3, 248, 5717, 8, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5726, 8, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5736, 8, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 3, 250, 5763, 8, 250, 1, 251, 1, 251, 3, 251, 5767, 8, 251, 1, 251, 1, 251, 1, 251, 3, 251, 5772, 8, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5779, 8, 252, 1, 252, 3, 252, 5782, 8, 252, 1, 252, 1, 252, 1, 252, 1, 252, 3, 252, 5788, 8, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 3, 253, 5798, 8, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 3, 254, 5808, 8, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5818, 8, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5824, 8, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5833, 8, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5839, 8, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 3, 255, 5846, 8, 255, 3, 255, 5848, 8, 255, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 3, 257, 5856, 8, 257, 1, 257, 1, 257, 1, 257, 1, 257, 3, 257, 5862, 8, 257, 1, 257, 1, 257, 3, 257, 5866, 8, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 3, 258, 5883, 8, 258, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 3, 260, 5893, 8, 260, 1, 261, 1, 261, 3, 261, 5897, 8, 261, 1, 261, 1, 261, 3, 261, 5901, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5911, 8, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5916, 8, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5988, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 3, 262, 6006, 8, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 3, 264, 6014, 8, 264, 1, 264, 1, 264, 1, 264, 1, 264, 3, 264, 6020, 8, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 3, 264, 6032, 8, 264, 1, 264, 1, 264, 3, 264, 6036, 8, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 3, 264, 6047, 8, 264, 1, 264, 1, 264, 3, 264, 6051, 8, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 3, 264, 6060, 8, 264, 1, 265, 1, 265, 1, 265, 1, 265, 5, 265, 6066, 8, 265, 10, 265, 12, 265, 6069, 9, 265, 1, 266, 1, 266, 1, 266, 1, 266, 3, 266, 6075, 8, 266, 1, 267, 1, 267, 3, 267, 6079, 8, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 3, 268, 6086, 8, 268, 1, 268, 1, 268, 1, 268, 3, 268, 6091, 8, 268, 1, 268, 3, 268, 6094, 8, 268, 1, 268, 3, 268, 6097, 8, 268, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 6108, 8, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 5, 271, 6115, 8, 271, 10, 271, 12, 271, 6118, 9, 271, 1, 271, 1, 271, 1, 271, 1, 271, 5, 271, 6124, 8, 271, 10, 271, 12, 271, 6127, 9, 271, 3, 271, 6129, 8, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 5, 273, 6141, 8, 273, 10, 273, 12, 273, 6144, 9, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6161, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6174, 8, 276, 1, 276, 3, 276, 6177, 8, 276, 1, 276, 1, 276, 3, 276, 6181, 8, 276, 1, 276, 3, 276, 6184, 8, 276, 3, 276, 6186, 8, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 6193, 8, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 6200, 8, 277, 5, 277, 6202, 8, 277, 10, 277, 12, 277, 6205, 9, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 6211, 8, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 3, 277, 6218, 8, 277, 1, 277, 3, 277, 6221, 8, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 5, 277, 6235, 8, 277, 10, 277, 12, 277, 6238, 9, 277, 3, 277, 6240, 8, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6250, 8, 278, 1, 278, 1, 278, 3, 278, 6254, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6260, 8, 278, 1, 278, 3, 278, 6263, 8, 278, 1, 278, 3, 278, 6266, 8, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6271, 8, 278, 1, 278, 1, 278, 3, 278, 6275, 8, 278, 1, 278, 3, 278, 6278, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6285, 8, 278, 1, 278, 3, 278, 6288, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6294, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6330, 8, 278, 1, 278, 3, 278, 6333, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6345, 8, 278, 1, 278, 3, 278, 6348, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6364, 8, 278, 3, 278, 6366, 8, 278, 1, 278, 1, 278, 3, 278, 6370, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6377, 8, 278, 1, 278, 1, 278, 3, 278, 6381, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6388, 8, 278, 1, 278, 3, 278, 6391, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 5, 278, 6398, 8, 278, 10, 278, 12, 278, 6401, 9, 278, 3, 278, 6403, 8, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6408, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6414, 8, 278, 3, 278, 6416, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6422, 8, 278, 1, 278, 1, 278, 3, 278, 6426, 8, 278, 1, 279, 1, 279, 1, 279, 1, 279, 3, 279, 6432, 8, 279, 1, 279, 3, 279, 6435, 8, 279, 1, 279, 3, 279, 6438, 8, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 3, 280, 6451, 8, 280, 1, 280, 3, 280, 6454, 8, 280, 1, 281, 1, 281, 1, 281, 1, 281, 3, 281, 6460, 8, 281, 1, 282, 3, 282, 6463, 8, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 3, 282, 6471, 8, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 3, 282, 6479, 8, 282, 1, 283, 1, 283, 1, 283, 1, 283, 3, 283, 6485, 8, 283, 1, 283, 3, 283, 6488, 8, 283, 1, 283, 1, 283, 3, 283, 6492, 8, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6506, 8, 284, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 5, 286, 6516, 8, 286, 10, 286, 12, 286, 6519, 9, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 3, 286, 6526, 8, 286, 1, 286, 1, 286, 3, 286, 6530, 8, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 3, 287, 6537, 8, 287, 1, 287, 1, 287, 1, 287, 5, 287, 6542, 8, 287, 10, 287, 12, 287, 6545, 9, 287, 1, 288, 1, 288, 3, 288, 6549, 8, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 5, 289, 6560, 8, 289, 10, 289, 12, 289, 6563, 9, 289, 1, 290, 1, 290, 1, 290, 1, 290, 5, 290, 6569, 8, 290, 10, 290, 12, 290, 6572, 9, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 3, 291, 6579, 8, 291, 1, 292, 1, 292, 1, 292, 3, 292, 6584, 8, 292, 1, 292, 3, 292, 6587, 8, 292, 1, 293, 1, 293, 1, 293, 3, 293, 6592, 8, 293, 1, 293, 3, 293, 6595, 8, 293, 1, 294, 1, 294, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 3, 296, 6607, 8, 296, 1, 297, 1, 297, 1, 297, 3, 297, 6612, 8, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6625, 8, 297, 3, 297, 6627, 8, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6632, 8, 297, 1, 297, 1, 297, 3, 297, 6636, 8, 297, 1, 297, 3, 297, 6639, 8, 297, 3, 297, 6641, 8, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 6648, 8, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 6655, 8, 299, 1, 299, 3, 299, 6658, 8, 299, 1, 299, 3, 299, 6661, 8, 299, 1, 299, 1, 299, 1, 299, 1, 299, 3, 299, 6667, 8, 299, 1, 299, 1, 299, 3, 299, 6671, 8, 299, 1, 300, 1, 300, 1, 300, 1, 300, 3, 300, 6677, 8, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 3, 301, 6685, 8, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6694, 8, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 3, 305, 6707, 8, 305, 1, 305, 1, 305, 1, 305, 3, 305, 6712, 8, 305, 1, 305, 1, 305, 1, 305, 1, 305, 5, 305, 6718, 8, 305, 10, 305, 12, 305, 6721, 9, 305, 3, 305, 6723, 8, 305, 1, 306, 1, 306, 1, 306, 3, 306, 6728, 8, 306, 1, 306, 1, 306, 1, 306, 3, 306, 6733, 8, 306, 1, 306, 1, 306, 1, 306, 1, 306, 5, 306, 6739, 8, 306, 10, 306, 12, 306, 6742, 9, 306, 3, 306, 6744, 8, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6752, 8, 307, 1, 308, 1, 308, 3, 308, 6756, 8, 308, 1, 308, 1, 308, 1, 308, 5, 308, 6761, 8, 308, 10, 308, 12, 308, 6764, 9, 308, 1, 309, 1, 309, 1, 309, 3, 309, 6769, 8, 309, 1, 309, 3, 309, 6772, 8, 309, 1, 310, 1, 310, 3, 310, 6776, 8, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 5, 310, 6787, 8, 310, 10, 310, 12, 310, 6790, 9, 310, 1, 310, 1, 310, 1, 310, 3, 310, 6795, 8, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 5, 310, 6805, 8, 310, 10, 310, 12, 310, 6808, 9, 310, 3, 310, 6810, 8, 310, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6819, 8, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6824, 8, 312, 1, 313, 1, 313, 1, 314, 1, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 317, 1, 317, 1, 318, 1, 318, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 5, 320, 6843, 8, 320, 10, 320, 12, 320, 6846, 9, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 323, 1, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 5, 325, 6859, 8, 325, 10, 325, 12, 325, 6862, 9, 325, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 5, 327, 6869, 8, 327, 10, 327, 12, 327, 6872, 9, 327, 1, 328, 1, 328, 3, 328, 6876, 8, 328, 1, 329, 1, 329, 1, 329, 3, 329, 6881, 8, 329, 3, 329, 6883, 8, 329, 1, 329, 3, 329, 6886, 8, 329, 1, 329, 1, 329, 3, 329, 6890, 8, 329, 3, 329, 6892, 8, 329, 1, 330, 1, 330, 1, 330, 5, 330, 6897, 8, 330, 10, 330, 12, 330, 6900, 9, 330, 1, 331, 1, 331, 1, 331, 3, 331, 6905, 8, 331, 3, 331, 6907, 8, 331, 1, 331, 3, 331, 6910, 8, 331, 1, 331, 1, 331, 3, 331, 6914, 8, 331, 1, 331, 3, 331, 6917, 8, 331, 1, 332, 1, 332, 1, 333, 1, 333, 1, 334, 1, 334, 1, 335, 1, 335, 1, 335, 5, 335, 6928, 8, 335, 10, 335, 12, 335, 6931, 9, 335, 1, 336, 1, 336, 1, 337, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 6940, 8, 337, 1, 337, 3, 337, 6943, 8, 337, 1, 337, 3, 337, 6946, 8, 337, 1, 338, 1, 338, 1, 338, 1, 338, 1, 339, 1, 339, 1, 339, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 6959, 8, 340, 1, 341, 1, 341, 1, 342, 1, 342, 3, 342, 6965, 8, 342, 1, 342, 3, 342, 6968, 8, 342, 1, 343, 1, 343, 1, 344, 1, 344, 1, 344, 1, 344, 3, 344, 6976, 8, 344, 1, 345, 1, 345, 1, 346, 1, 346, 1, 346, 3, 346, 6983, 8, 346, 1, 347, 1, 347, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 1, 348, 4, 348, 7001, 8, 348, 11, 348, 12, 348, 7002, 1, 349, 1, 349, 1, 349, 1, 349, 1, 349, 3, 349, 7010, 8, 349, 3, 349, 7012, 8, 349, 1, 350, 1, 350, 1, 350, 4, 350, 7017, 8, 350, 11, 350, 12, 350, 7018, 3, 350, 7021, 8, 350, 1, 351, 1, 351, 3, 351, 7025, 8, 351, 1, 352, 1, 352, 1, 352, 5, 352, 7030, 8, 352, 10, 352, 12, 352, 7033, 9, 352, 1, 353, 1, 353, 1, 353, 3, 353, 7038, 8, 353, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 1, 354, 3, 354, 7049, 8, 354, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7055, 8, 355, 1, 356, 1, 356, 1, 357, 1, 357, 3, 357, 7061, 8, 357, 1, 358, 3, 358, 7064, 8, 358, 1, 358, 1, 358, 3, 358, 7068, 8, 358, 1, 358, 4, 358, 7071, 8, 358, 11, 358, 12, 358, 7072, 1, 358, 3, 358, 7076, 8, 358, 1, 358, 1, 358, 3, 358, 7080, 8, 358, 1, 358, 1, 358, 3, 358, 7084, 8, 358, 3, 358, 7086, 8, 358, 1, 359, 1, 359, 1, 360, 3, 360, 7091, 8, 360, 1, 360, 1, 360, 1, 361, 3, 361, 7096, 8, 361, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 3, 362, 7109, 8, 362, 1, 362, 3, 362, 7112, 8, 362, 1, 363, 1, 363, 3, 363, 7116, 8, 363, 1, 363, 3, 363, 7119, 8, 363, 1, 363, 3, 363, 7122, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7127, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7132, 8, 363, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7138, 8, 363, 1, 363, 3, 363, 7141, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7146, 8, 363, 1, 363, 3, 363, 7149, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7154, 8, 363, 1, 363, 3, 363, 7157, 8, 363, 1, 363, 1, 363, 3, 363, 7161, 8, 363, 1, 363, 5, 363, 7164, 8, 363, 10, 363, 12, 363, 7167, 9, 363, 1, 363, 1, 363, 3, 363, 7171, 8, 363, 1, 363, 5, 363, 7174, 8, 363, 10, 363, 12, 363, 7177, 9, 363, 1, 363, 1, 363, 3, 363, 7181, 8, 363, 1, 363, 3, 363, 7184, 8, 363, 1, 363, 5, 363, 7187, 8, 363, 10, 363, 12, 363, 7190, 9, 363, 1, 363, 1, 363, 3, 363, 7194, 8, 363, 1, 363, 5, 363, 7197, 8, 363, 10, 363, 12, 363, 7200, 9, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7205, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7210, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7215, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7220, 8, 363, 1, 363, 1, 363, 3, 363, 7224, 8, 363, 1, 363, 3, 363, 7227, 8, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7232, 8, 363, 1, 363, 1, 363, 3, 363, 7236, 8, 363, 1, 363, 1, 363, 3, 363, 7240, 8, 363, 1, 364, 1, 364, 1, 364, 1, 364, 5, 364, 7246, 8, 364, 10, 364, 12, 364, 7249, 9, 364, 1, 364, 1, 364, 1, 365, 1, 365, 3, 365, 7255, 8, 365, 1, 365, 1, 365, 3, 365, 7259, 8, 365, 1, 365, 1, 365, 1, 365, 3, 365, 7264, 8, 365, 1, 365, 1, 365, 1, 365, 3, 365, 7269, 8, 365, 1, 365, 1, 365, 3, 365, 7273, 8, 365, 3, 365, 7275, 8, 365, 1, 365, 3, 365, 7278, 8, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 367, 1, 368, 1, 368, 1, 368, 1, 368, 3, 368, 7294, 8, 368, 1, 368, 1, 368, 1, 369, 1, 369, 1, 369, 1, 369, 5, 369, 7302, 8, 369, 10, 369, 12, 369, 7305, 9, 369, 1, 369, 1, 369, 1, 370, 1, 370, 1, 370, 5, 370, 7312, 8, 370, 10, 370, 12, 370, 7315, 9, 370, 1, 371, 1, 371, 1, 371, 1, 371, 5, 371, 7321, 8, 371, 10, 371, 12, 371, 7324, 9, 371, 1, 372, 1, 372, 1, 372, 1, 372, 5, 372, 7330, 8, 372, 10, 372, 12, 372, 7333, 9, 372, 1, 372, 1, 372, 1, 373, 1, 373, 3, 373, 7339, 8, 373, 1, 374, 1, 374, 1, 374, 5, 374, 7344, 8, 374, 10, 374, 12, 374, 7347, 9, 374, 1, 375, 1, 375, 1, 375, 5, 375, 7352, 8, 375, 10, 375, 12, 375, 7355, 9, 375, 1, 376, 1, 376, 1, 376, 5, 376, 7360, 8, 376, 10, 376, 12, 376, 7363, 9, 376, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 3, 377, 7374, 8, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 3, 377, 7381, 8, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 1, 377, 3, 377, 7391, 8, 377, 1, 378, 1, 378, 1, 378, 3, 378, 7396, 8, 378, 1, 378, 3, 378, 7399, 8, 378, 1, 378, 1, 378, 1, 378, 3, 378, 7404, 8, 378, 1, 378, 3, 378, 7407, 8, 378, 1, 379, 1, 379, 1, 379, 1, 380, 1, 380, 1, 380, 1, 380, 1, 381, 1, 381, 1, 381, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 3, 382, 7429, 8, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 1, 382, 3, 382, 7438, 8, 382, 1, 382, 3, 382, 7441, 8, 382, 1, 383, 1, 383, 1, 383, 3, 383, 7446, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 4, 383, 7477, 8, 383, 11, 383, 12, 383, 7478, 1, 383, 1, 383, 3, 383, 7483, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 4, 383, 7490, 8, 383, 11, 383, 12, 383, 7491, 1, 383, 1, 383, 3, 383, 7496, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7505, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7513, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7518, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7526, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7531, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7536, 8, 383, 3, 383, 7538, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7547, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7552, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7560, 8, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7565, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7573, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7581, 8, 383, 1, 383, 3, 383, 7584, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7594, 8, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 1, 383, 3, 383, 7612, 8, 383, 1, 383, 3, 383, 7615, 8, 383, 1, 383, 3, 383, 7618, 8, 383, 1, 383, 1, 383, 3, 383, 7622, 8, 383, 1, 384, 1, 384, 1, 384, 1, 384, 1, 384, 1, 385, 1, 385, 1, 385, 1, 385, 5, 385, 7633, 8, 385, 10, 385, 12, 385, 7636, 9, 385, 1, 385, 1, 385, 1, 385, 1, 385, 1, 385, 3, 385, 7643, 8, 385, 1, 386, 1, 386, 3, 386, 7647, 8, 386, 1, 387, 1, 387, 1, 387, 3, 387, 7652, 8, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7657, 8, 387, 1, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7663, 8, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7668, 8, 387, 1, 387, 1, 387, 3, 387, 7672, 8, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7677, 8, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7682, 8, 387, 1, 387, 1, 387, 1, 387, 3, 387, 7687, 8, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 1, 387, 5, 387, 7695, 8, 387, 10, 387, 12, 387, 7698, 9, 387, 3, 387, 7700, 8, 387, 1, 387, 1, 387, 3, 387, 7704, 8, 387, 1, 387, 1, 387, 3, 387, 7708, 8, 387, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 3, 388, 7715, 8, 388, 1, 388, 1, 388, 3, 388, 7719, 8, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 1, 388, 3, 388, 7748, 8, 388, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 1, 389, 3, 389, 7756, 8, 389, 1, 390, 3, 390, 7759, 8, 390, 1, 390, 3, 390, 7762, 8, 390, 1, 390, 3, 390, 7765, 8, 390, 1, 390, 3, 390, 7768, 8, 390, 1, 391, 1, 391, 1, 392, 1, 392, 1, 392, 1, 393, 1, 393, 1, 394, 1, 394, 3, 394, 7779, 8, 394, 1, 395, 1, 395, 1, 395, 1, 395, 1, 395, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 1, 396, 3, 396, 7793, 8, 396, 1, 397, 1, 397, 1, 397, 1, 397, 1, 397, 5, 397, 7800, 8, 397, 10, 397, 12, 397, 7803, 9, 397, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 1, 398, 3, 398, 7829, 8, 398, 1, 399, 1, 399, 1, 399, 1, 399, 1, 399, 1, 400, 1, 400, 1, 400, 5, 400, 7839, 8, 400, 10, 400, 12, 400, 7842, 9, 400, 1, 401, 1, 401, 1, 401, 3, 401, 7847, 8, 401, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7855, 8, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7860, 8, 402, 1, 402, 1, 402, 1, 402, 1, 402, 5, 402, 7866, 8, 402, 10, 402, 12, 402, 7869, 9, 402, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7876, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7889, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7895, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7901, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7916, 8, 403, 1, 403, 1, 403, 3, 403, 7920, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7926, 8, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 1, 403, 5, 403, 7935, 8, 403, 10, 403, 12, 403, 7938, 9, 403, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 5, 404, 7956, 8, 404, 10, 404, 12, 404, 7959, 9, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 4, 404, 7968, 8, 404, 11, 404, 12, 404, 7969, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 3, 404, 7988, 8, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 1, 404, 5, 404, 8005, 8, 404, 10, 404, 12, 404, 8008, 9, 404, 1, 405, 1, 405, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 1, 406, 3, 406, 8020, 8, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 3, 407, 8029, 8, 407, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 1, 408, 3, 408, 8038, 8, 408, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 8047, 8, 409, 1, 410, 1, 410, 1, 411, 1, 411, 1, 411, 1, 411, 1, 411, 3, 411, 8056, 8, 411, 1, 412, 1, 412, 1, 413, 1, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 416, 1, 416, 1, 417, 1, 417, 1, 418, 1, 418, 1, 418, 0, 5, 214, 216, 804, 806, 808, 419, 0, 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, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 0, 160, 2, 0, 39, 39, 152, 152, 2, 0, 508, 508, 514, 514, 3, 0, 69, 69, 161, 161, 182, 182, 3, 0, 42, 42, 357, 357, 430, 430, 4, 0, 42, 42, 389, 389, 505, 505, 595, 595, 4, 0, 208, 208, 210, 210, 216, 216, 649, 649, 2, 0, 494, 494, 882, 882, 2, 0, 79, 79, 143, 143, 2, 0, 16, 16, 306, 306, 3, 0, 44, 44, 86, 86, 185, 185, 2, 0, 406, 406, 538, 538, 3, 0, 486, 486, 661, 661, 670, 670, 2, 0, 364, 364, 436, 436, 2, 0, 325, 325, 450, 450, 2, 0, 42, 42, 871, 872, 2, 0, 37, 37, 678, 678, 2, 0, 323, 323, 418, 418, 2, 0, 435, 435, 686, 686, 3, 0, 80, 80, 85, 85, 126, 126, 2, 0, 82, 82, 92, 92, 2, 0, 69, 69, 161, 161, 3, 0, 42, 42, 374, 374, 403, 403, 3, 0, 42, 42, 370, 370, 802, 802, 2, 0, 648, 648, 685, 685, 3, 0, 408, 408, 526, 526, 597, 597, 2, 0, 329, 329, 522, 522, 1, 0, 871, 872, 2, 0, 882, 882, 889, 889, 2, 0, 82, 82, 360, 360, 2, 0, 523, 523, 882, 882, 2, 0, 524, 524, 882, 882, 3, 0, 402, 402, 445, 445, 502, 502, 7, 0, 42, 42, 342, 342, 345, 345, 374, 374, 403, 403, 554, 554, 889, 889, 2, 0, 494, 494, 506, 506, 1, 0, 872, 873, 2, 0, 6, 6, 51, 51, 2, 0, 5, 5, 81, 81, 2, 0, 27, 27, 31, 31, 4, 0, 42, 42, 357, 357, 430, 430, 434, 434, 2, 0, 368, 368, 375, 375, 2, 0, 369, 369, 425, 425, 2, 0, 13, 13, 176, 176, 2, 0, 194, 194, 690, 690, 2, 0, 22, 22, 146, 146, 3, 0, 43, 43, 76, 76, 107, 107, 2, 0, 7, 7, 49, 49, 2, 0, 107, 107, 347, 347, 2, 0, 337, 337, 398, 398, 2, 0, 102, 102, 587, 587, 2, 0, 43, 43, 107, 107, 3, 0, 59, 59, 181, 181, 828, 828, 2, 0, 185, 185, 594, 594, 2, 0, 159, 159, 503, 503, 4, 0, 402, 402, 445, 445, 501, 501, 542, 542, 2, 0, 402, 402, 501, 501, 2, 0, 14, 14, 45, 45, 3, 0, 66, 66, 79, 79, 187, 187, 2, 0, 35, 35, 84, 84, 2, 0, 98, 98, 150, 150, 2, 0, 7, 7, 49, 50, 1, 0, 637, 638, 2, 0, 173, 173, 752, 752, 2, 0, 413, 413, 593, 593, 2, 0, 228, 228, 453, 453, 2, 0, 563, 563, 598, 598, 8, 0, 108, 108, 455, 455, 459, 460, 462, 462, 464, 464, 467, 476, 499, 499, 557, 557, 6, 0, 456, 458, 461, 461, 463, 463, 465, 465, 477, 477, 558, 558, 7, 0, 109, 109, 411, 411, 416, 416, 454, 454, 466, 466, 573, 573, 617, 617, 2, 0, 116, 116, 882, 882, 2, 0, 118, 119, 507, 507, 7, 0, 499, 499, 557, 557, 606, 609, 611, 611, 619, 619, 622, 628, 630, 632, 6, 0, 558, 558, 610, 610, 612, 612, 614, 616, 618, 618, 620, 620, 7, 0, 412, 412, 416, 416, 573, 573, 613, 613, 617, 617, 621, 621, 629, 629, 3, 0, 70, 70, 118, 119, 507, 507, 2, 0, 438, 438, 639, 639, 2, 0, 633, 633, 635, 635, 2, 0, 317, 317, 640, 640, 2, 0, 91, 91, 577, 577, 2, 0, 51, 51, 362, 362, 3, 0, 32, 32, 61, 61, 180, 180, 2, 0, 15, 15, 340, 340, 2, 0, 678, 678, 835, 835, 3, 0, 132, 132, 173, 173, 409, 409, 3, 0, 6, 6, 51, 51, 492, 492, 3, 0, 13, 13, 20, 20, 188, 188, 2, 0, 42, 42, 122, 122, 2, 0, 104, 104, 183, 183, 1, 0, 873, 874, 2, 0, 333, 333, 598, 598, 2, 0, 40, 40, 684, 684, 2, 0, 392, 392, 549, 549, 2, 0, 115, 115, 450, 450, 3, 0, 413, 413, 531, 531, 893, 894, 2, 0, 841, 841, 857, 857, 2, 0, 318, 318, 559, 559, 2, 0, 68, 68, 80, 80, 3, 0, 132, 132, 178, 178, 385, 385, 2, 0, 493, 493, 645, 645, 2, 0, 383, 383, 688, 688, 3, 0, 82, 82, 93, 93, 426, 426, 4, 0, 413, 413, 450, 450, 531, 532, 593, 593, 2, 0, 645, 645, 683, 683, 2, 0, 349, 349, 548, 548, 6, 0, 228, 228, 380, 380, 382, 382, 410, 410, 556, 556, 599, 599, 2, 0, 45, 46, 62, 62, 3, 0, 442, 442, 663, 663, 666, 666, 10, 0, 332, 332, 339, 339, 351, 353, 359, 359, 487, 487, 495, 495, 650, 650, 657, 657, 822, 822, 832, 832, 2, 0, 36, 36, 170, 170, 2, 0, 117, 117, 831, 831, 11, 0, 332, 332, 339, 339, 351, 353, 359, 359, 487, 487, 495, 495, 578, 578, 650, 650, 657, 657, 822, 822, 832, 832, 2, 0, 870, 870, 891, 892, 1, 0, 892, 893, 2, 0, 348, 348, 797, 808, 3, 0, 871, 874, 883, 883, 885, 885, 2, 0, 63, 63, 179, 179, 2, 0, 116, 116, 886, 886, 5, 0, 26, 26, 224, 226, 233, 233, 235, 238, 498, 498, 2, 0, 26, 26, 224, 224, 2, 0, 26, 26, 224, 225, 1, 0, 198, 209, 3, 0, 184, 184, 197, 197, 596, 596, 2, 0, 213, 218, 403, 403, 6, 0, 219, 219, 230, 230, 232, 232, 234, 234, 241, 241, 321, 322, 4, 0, 220, 223, 228, 229, 231, 231, 319, 319, 2, 0, 155, 155, 239, 239, 2, 0, 442, 442, 813, 821, 2, 0, 228, 228, 498, 498, 5, 0, 202, 202, 208, 208, 219, 220, 222, 222, 442, 442, 1, 0, 216, 217, 2, 0, 184, 184, 596, 596, 2, 0, 202, 202, 208, 208, 2, 0, 189, 189, 682, 682, 2, 0, 287, 288, 294, 294, 3, 0, 152, 152, 285, 288, 303, 303, 1, 0, 297, 298, 3, 0, 18, 18, 96, 96, 177, 177, 2, 0, 224, 224, 228, 228, 2, 0, 219, 220, 222, 222, 3, 0, 14, 14, 45, 45, 830, 830, 3, 0, 258, 258, 270, 271, 281, 281, 3, 0, 259, 261, 277, 280, 282, 284, 2, 0, 267, 267, 269, 269, 2, 0, 265, 265, 268, 268, 2, 0, 263, 264, 274, 276, 2, 0, 134, 134, 587, 587, 2, 0, 405, 405, 539, 539, 2, 0, 512, 512, 529, 529, 2, 0, 114, 114, 860, 860, 3, 0, 63, 63, 179, 179, 674, 674, 2, 0, 139, 139, 151, 151, 3, 0, 7, 7, 309, 309, 602, 602, 3, 0, 114, 114, 853, 854, 860, 861, 1, 0, 850, 856, 2, 0, 228, 228, 756, 796, 1, 0, 809, 812, 5, 0, 717, 718, 734, 736, 743, 743, 749, 750, 752, 752, 1, 0, 696, 703, 3, 0, 219, 223, 236, 236, 239, 239, 75, 0, 12, 12, 15, 15, 19, 19, 30, 30, 36, 37, 42, 42, 48, 48, 55, 55, 57, 57, 59, 59, 74, 74, 95, 95, 117, 117, 122, 122, 125, 125, 131, 131, 160, 160, 170, 170, 241, 241, 255, 262, 266, 266, 270, 271, 277, 284, 304, 309, 311, 329, 331, 343, 345, 376, 378, 393, 395, 400, 402, 404, 406, 410, 413, 415, 417, 426, 428, 428, 430, 434, 436, 454, 456, 463, 465, 473, 475, 476, 478, 498, 500, 506, 508, 510, 512, 522, 525, 530, 533, 538, 540, 542, 544, 554, 556, 562, 565, 572, 575, 575, 577, 605, 633, 647, 649, 665, 667, 674, 676, 685, 687, 688, 690, 695, 704, 704, 706, 707, 709, 712, 714, 716, 719, 721, 726, 727, 729, 733, 737, 738, 740, 742, 744, 744, 746, 748, 751, 751, 753, 755, 802, 802, 822, 822, 825, 825, 832, 833, 838, 838, 24, 0, 39, 39, 98, 98, 150, 150, 152, 152, 219, 221, 223, 223, 253, 254, 262, 265, 267, 269, 272, 276, 296, 296, 435, 435, 686, 686, 696, 703, 746, 746, 813, 813, 816, 821, 823, 824, 826, 827, 829, 831, 834, 834, 836, 836, 840, 840, 856, 856, 9440, 0, 841, 1, 0, 0, 0, 2, 851, 1, 0, 0, 0, 4, 860, 1, 0, 0, 0, 6, 862, 1, 0, 0, 0, 8, 904, 1, 0, 0, 0, 10, 923, 1, 0, 0, 0, 12, 934, 1, 0, 0, 0, 14, 950, 1, 0, 0, 0, 16, 955, 1, 0, 0, 0, 18, 967, 1, 0, 0, 0, 20, 1002, 1, 0, 0, 0, 22, 1012, 1, 0, 0, 0, 24, 1014, 1, 0, 0, 0, 26, 1026, 1, 0, 0, 0, 28, 1056, 1, 0, 0, 0, 30, 1092, 1, 0, 0, 0, 32, 1143, 1, 0, 0, 0, 34, 1172, 1, 0, 0, 0, 36, 1208, 1, 0, 0, 0, 38, 1222, 1, 0, 0, 0, 40, 1229, 1, 0, 0, 0, 42, 1326, 1, 0, 0, 0, 44, 1328, 1, 0, 0, 0, 46, 1365, 1, 0, 0, 0, 48, 1429, 1, 0, 0, 0, 50, 1454, 1, 0, 0, 0, 52, 1460, 1, 0, 0, 0, 54, 1482, 1, 0, 0, 0, 56, 1569, 1, 0, 0, 0, 58, 1576, 1, 0, 0, 0, 60, 1578, 1, 0, 0, 0, 62, 1583, 1, 0, 0, 0, 64, 1623, 1, 0, 0, 0, 66, 1629, 1, 0, 0, 0, 68, 1631, 1, 0, 0, 0, 70, 1652, 1, 0, 0, 0, 72, 1659, 1, 0, 0, 0, 74, 1661, 1, 0, 0, 0, 76, 1686, 1, 0, 0, 0, 78, 1689, 1, 0, 0, 0, 80, 1694, 1, 0, 0, 0, 82, 1720, 1, 0, 0, 0, 84, 1736, 1, 0, 0, 0, 86, 1738, 1, 0, 0, 0, 88, 1832, 1, 0, 0, 0, 90, 1835, 1, 0, 0, 0, 92, 1847, 1, 0, 0, 0, 94, 1851, 1, 0, 0, 0, 96, 1901, 1, 0, 0, 0, 98, 1903, 1, 0, 0, 0, 100, 1931, 1, 0, 0, 0, 102, 1941, 1, 0, 0, 0, 104, 2128, 1, 0, 0, 0, 106, 2130, 1, 0, 0, 0, 108, 2132, 1, 0, 0, 0, 110, 2135, 1, 0, 0, 0, 112, 2210, 1, 0, 0, 0, 114, 2233, 1, 0, 0, 0, 116, 2381, 1, 0, 0, 0, 118, 2386, 1, 0, 0, 0, 120, 2388, 1, 0, 0, 0, 122, 2398, 1, 0, 0, 0, 124, 2454, 1, 0, 0, 0, 126, 2474, 1, 0, 0, 0, 128, 2476, 1, 0, 0, 0, 130, 2511, 1, 0, 0, 0, 132, 2520, 1, 0, 0, 0, 134, 2527, 1, 0, 0, 0, 136, 2550, 1, 0, 0, 0, 138, 2559, 1, 0, 0, 0, 140, 2574, 1, 0, 0, 0, 142, 2596, 1, 0, 0, 0, 144, 2652, 1, 0, 0, 0, 146, 2948, 1, 0, 0, 0, 148, 3048, 1, 0, 0, 0, 150, 3050, 1, 0, 0, 0, 152, 3057, 1, 0, 0, 0, 154, 3064, 1, 0, 0, 0, 156, 3087, 1, 0, 0, 0, 158, 3097, 1, 0, 0, 0, 160, 3104, 1, 0, 0, 0, 162, 3111, 1, 0, 0, 0, 164, 3118, 1, 0, 0, 0, 166, 3127, 1, 0, 0, 0, 168, 3139, 1, 0, 0, 0, 170, 3152, 1, 0, 0, 0, 172, 3159, 1, 0, 0, 0, 174, 3175, 1, 0, 0, 0, 176, 3202, 1, 0, 0, 0, 178, 3204, 1, 0, 0, 0, 180, 3214, 1, 0, 0, 0, 182, 3218, 1, 0, 0, 0, 184, 3224, 1, 0, 0, 0, 186, 3236, 1, 0, 0, 0, 188, 3238, 1, 0, 0, 0, 190, 3245, 1, 0, 0, 0, 192, 3247, 1, 0, 0, 0, 194, 3296, 1, 0, 0, 0, 196, 3305, 1, 0, 0, 0, 198, 3307, 1, 0, 0, 0, 200, 3318, 1, 0, 0, 0, 202, 3324, 1, 0, 0, 0, 204, 3398, 1, 0, 0, 0, 206, 3461, 1, 0, 0, 0, 208, 3479, 1, 0, 0, 0, 210, 3563, 1, 0, 0, 0, 212, 3566, 1, 0, 0, 0, 214, 3578, 1, 0, 0, 0, 216, 3598, 1, 0, 0, 0, 218, 3626, 1, 0, 0, 0, 220, 3630, 1, 0, 0, 0, 222, 3632, 1, 0, 0, 0, 224, 3642, 1, 0, 0, 0, 226, 3662, 1, 0, 0, 0, 228, 3669, 1, 0, 0, 0, 230, 3671, 1, 0, 0, 0, 232, 3682, 1, 0, 0, 0, 234, 3691, 1, 0, 0, 0, 236, 3697, 1, 0, 0, 0, 238, 3720, 1, 0, 0, 0, 240, 3722, 1, 0, 0, 0, 242, 3758, 1, 0, 0, 0, 244, 3813, 1, 0, 0, 0, 246, 3822, 1, 0, 0, 0, 248, 3842, 1, 0, 0, 0, 250, 3854, 1, 0, 0, 0, 252, 3858, 1, 0, 0, 0, 254, 3869, 1, 0, 0, 0, 256, 3902, 1, 0, 0, 0, 258, 3923, 1, 0, 0, 0, 260, 3933, 1, 0, 0, 0, 262, 3937, 1, 0, 0, 0, 264, 3963, 1, 0, 0, 0, 266, 4010, 1, 0, 0, 0, 268, 4012, 1, 0, 0, 0, 270, 4016, 1, 0, 0, 0, 272, 4033, 1, 0, 0, 0, 274, 4084, 1, 0, 0, 0, 276, 4093, 1, 0, 0, 0, 278, 4103, 1, 0, 0, 0, 280, 4105, 1, 0, 0, 0, 282, 4138, 1, 0, 0, 0, 284, 4146, 1, 0, 0, 0, 286, 4163, 1, 0, 0, 0, 288, 4179, 1, 0, 0, 0, 290, 4216, 1, 0, 0, 0, 292, 4222, 1, 0, 0, 0, 294, 4231, 1, 0, 0, 0, 296, 4244, 1, 0, 0, 0, 298, 4248, 1, 0, 0, 0, 300, 4286, 1, 0, 0, 0, 302, 4324, 1, 0, 0, 0, 304, 4338, 1, 0, 0, 0, 306, 4346, 1, 0, 0, 0, 308, 4350, 1, 0, 0, 0, 310, 4356, 1, 0, 0, 0, 312, 4370, 1, 0, 0, 0, 314, 4373, 1, 0, 0, 0, 316, 4391, 1, 0, 0, 0, 318, 4395, 1, 0, 0, 0, 320, 4411, 1, 0, 0, 0, 322, 4413, 1, 0, 0, 0, 324, 4425, 1, 0, 0, 0, 326, 4429, 1, 0, 0, 0, 328, 4446, 1, 0, 0, 0, 330, 4463, 1, 0, 0, 0, 332, 4466, 1, 0, 0, 0, 334, 4476, 1, 0, 0, 0, 336, 4480, 1, 0, 0, 0, 338, 4490, 1, 0, 0, 0, 340, 4493, 1, 0, 0, 0, 342, 4498, 1, 0, 0, 0, 344, 4518, 1, 0, 0, 0, 346, 4520, 1, 0, 0, 0, 348, 4537, 1, 0, 0, 0, 350, 4546, 1, 0, 0, 0, 352, 4555, 1, 0, 0, 0, 354, 4557, 1, 0, 0, 0, 356, 4571, 1, 0, 0, 0, 358, 4585, 1, 0, 0, 0, 360, 4600, 1, 0, 0, 0, 362, 4609, 1, 0, 0, 0, 364, 4634, 1, 0, 0, 0, 366, 4649, 1, 0, 0, 0, 368, 4668, 1, 0, 0, 0, 370, 4698, 1, 0, 0, 0, 372, 4700, 1, 0, 0, 0, 374, 4702, 1, 0, 0, 0, 376, 4704, 1, 0, 0, 0, 378, 4719, 1, 0, 0, 0, 380, 4748, 1, 0, 0, 0, 382, 4750, 1, 0, 0, 0, 384, 4752, 1, 0, 0, 0, 386, 4754, 1, 0, 0, 0, 388, 4769, 1, 0, 0, 0, 390, 4771, 1, 0, 0, 0, 392, 4838, 1, 0, 0, 0, 394, 4840, 1, 0, 0, 0, 396, 4846, 1, 0, 0, 0, 398, 4873, 1, 0, 0, 0, 400, 4887, 1, 0, 0, 0, 402, 4898, 1, 0, 0, 0, 404, 4900, 1, 0, 0, 0, 406, 4906, 1, 0, 0, 0, 408, 4916, 1, 0, 0, 0, 410, 4920, 1, 0, 0, 0, 412, 4927, 1, 0, 0, 0, 414, 4931, 1, 0, 0, 0, 416, 4937, 1, 0, 0, 0, 418, 4944, 1, 0, 0, 0, 420, 4950, 1, 0, 0, 0, 422, 4956, 1, 0, 0, 0, 424, 4961, 1, 0, 0, 0, 426, 5006, 1, 0, 0, 0, 428, 5027, 1, 0, 0, 0, 430, 5052, 1, 0, 0, 0, 432, 5055, 1, 0, 0, 0, 434, 5061, 1, 0, 0, 0, 436, 5077, 1, 0, 0, 0, 438, 5092, 1, 0, 0, 0, 440, 5098, 1, 0, 0, 0, 442, 5128, 1, 0, 0, 0, 444, 5130, 1, 0, 0, 0, 446, 5137, 1, 0, 0, 0, 448, 5149, 1, 0, 0, 0, 450, 5155, 1, 0, 0, 0, 452, 5180, 1, 0, 0, 0, 454, 5184, 1, 0, 0, 0, 456, 5188, 1, 0, 0, 0, 458, 5199, 1, 0, 0, 0, 460, 5207, 1, 0, 0, 0, 462, 5270, 1, 0, 0, 0, 464, 5329, 1, 0, 0, 0, 466, 5431, 1, 0, 0, 0, 468, 5441, 1, 0, 0, 0, 470, 5443, 1, 0, 0, 0, 472, 5461, 1, 0, 0, 0, 474, 5485, 1, 0, 0, 0, 476, 5509, 1, 0, 0, 0, 478, 5516, 1, 0, 0, 0, 480, 5536, 1, 0, 0, 0, 482, 5545, 1, 0, 0, 0, 484, 5607, 1, 0, 0, 0, 486, 5609, 1, 0, 0, 0, 488, 5613, 1, 0, 0, 0, 490, 5647, 1, 0, 0, 0, 492, 5649, 1, 0, 0, 0, 494, 5652, 1, 0, 0, 0, 496, 5716, 1, 0, 0, 0, 498, 5735, 1, 0, 0, 0, 500, 5762, 1, 0, 0, 0, 502, 5766, 1, 0, 0, 0, 504, 5787, 1, 0, 0, 0, 506, 5797, 1, 0, 0, 0, 508, 5807, 1, 0, 0, 0, 510, 5847, 1, 0, 0, 0, 512, 5849, 1, 0, 0, 0, 514, 5852, 1, 0, 0, 0, 516, 5882, 1, 0, 0, 0, 518, 5884, 1, 0, 0, 0, 520, 5887, 1, 0, 0, 0, 522, 5987, 1, 0, 0, 0, 524, 6005, 1, 0, 0, 0, 526, 6007, 1, 0, 0, 0, 528, 6059, 1, 0, 0, 0, 530, 6061, 1, 0, 0, 0, 532, 6070, 1, 0, 0, 0, 534, 6076, 1, 0, 0, 0, 536, 6083, 1, 0, 0, 0, 538, 6098, 1, 0, 0, 0, 540, 6107, 1, 0, 0, 0, 542, 6109, 1, 0, 0, 0, 544, 6130, 1, 0, 0, 0, 546, 6135, 1, 0, 0, 0, 548, 6145, 1, 0, 0, 0, 550, 6151, 1, 0, 0, 0, 552, 6185, 1, 0, 0, 0, 554, 6239, 1, 0, 0, 0, 556, 6425, 1, 0, 0, 0, 558, 6437, 1, 0, 0, 0, 560, 6453, 1, 0, 0, 0, 562, 6459, 1, 0, 0, 0, 564, 6478, 1, 0, 0, 0, 566, 6491, 1, 0, 0, 0, 568, 6505, 1, 0, 0, 0, 570, 6507, 1, 0, 0, 0, 572, 6510, 1, 0, 0, 0, 574, 6534, 1, 0, 0, 0, 576, 6546, 1, 0, 0, 0, 578, 6552, 1, 0, 0, 0, 580, 6564, 1, 0, 0, 0, 582, 6578, 1, 0, 0, 0, 584, 6580, 1, 0, 0, 0, 586, 6588, 1, 0, 0, 0, 588, 6596, 1, 0, 0, 0, 590, 6598, 1, 0, 0, 0, 592, 6600, 1, 0, 0, 0, 594, 6640, 1, 0, 0, 0, 596, 6647, 1, 0, 0, 0, 598, 6649, 1, 0, 0, 0, 600, 6672, 1, 0, 0, 0, 602, 6678, 1, 0, 0, 0, 604, 6688, 1, 0, 0, 0, 606, 6697, 1, 0, 0, 0, 608, 6700, 1, 0, 0, 0, 610, 6703, 1, 0, 0, 0, 612, 6724, 1, 0, 0, 0, 614, 6745, 1, 0, 0, 0, 616, 6753, 1, 0, 0, 0, 618, 6765, 1, 0, 0, 0, 620, 6773, 1, 0, 0, 0, 622, 6811, 1, 0, 0, 0, 624, 6823, 1, 0, 0, 0, 626, 6825, 1, 0, 0, 0, 628, 6827, 1, 0, 0, 0, 630, 6829, 1, 0, 0, 0, 632, 6831, 1, 0, 0, 0, 634, 6833, 1, 0, 0, 0, 636, 6835, 1, 0, 0, 0, 638, 6837, 1, 0, 0, 0, 640, 6839, 1, 0, 0, 0, 642, 6847, 1, 0, 0, 0, 644, 6849, 1, 0, 0, 0, 646, 6851, 1, 0, 0, 0, 648, 6853, 1, 0, 0, 0, 650, 6855, 1, 0, 0, 0, 652, 6863, 1, 0, 0, 0, 654, 6865, 1, 0, 0, 0, 656, 6875, 1, 0, 0, 0, 658, 6891, 1, 0, 0, 0, 660, 6893, 1, 0, 0, 0, 662, 6916, 1, 0, 0, 0, 664, 6918, 1, 0, 0, 0, 666, 6920, 1, 0, 0, 0, 668, 6922, 1, 0, 0, 0, 670, 6924, 1, 0, 0, 0, 672, 6932, 1, 0, 0, 0, 674, 6942, 1, 0, 0, 0, 676, 6947, 1, 0, 0, 0, 678, 6951, 1, 0, 0, 0, 680, 6958, 1, 0, 0, 0, 682, 6960, 1, 0, 0, 0, 684, 6967, 1, 0, 0, 0, 686, 6969, 1, 0, 0, 0, 688, 6975, 1, 0, 0, 0, 690, 6977, 1, 0, 0, 0, 692, 6982, 1, 0, 0, 0, 694, 6984, 1, 0, 0, 0, 696, 6986, 1, 0, 0, 0, 698, 7004, 1, 0, 0, 0, 700, 7020, 1, 0, 0, 0, 702, 7022, 1, 0, 0, 0, 704, 7026, 1, 0, 0, 0, 706, 7037, 1, 0, 0, 0, 708, 7048, 1, 0, 0, 0, 710, 7054, 1, 0, 0, 0, 712, 7056, 1, 0, 0, 0, 714, 7060, 1, 0, 0, 0, 716, 7085, 1, 0, 0, 0, 718, 7087, 1, 0, 0, 0, 720, 7090, 1, 0, 0, 0, 722, 7095, 1, 0, 0, 0, 724, 7111, 1, 0, 0, 0, 726, 7239, 1, 0, 0, 0, 728, 7241, 1, 0, 0, 0, 730, 7274, 1, 0, 0, 0, 732, 7279, 1, 0, 0, 0, 734, 7283, 1, 0, 0, 0, 736, 7289, 1, 0, 0, 0, 738, 7297, 1, 0, 0, 0, 740, 7308, 1, 0, 0, 0, 742, 7316, 1, 0, 0, 0, 744, 7325, 1, 0, 0, 0, 746, 7338, 1, 0, 0, 0, 748, 7340, 1, 0, 0, 0, 750, 7348, 1, 0, 0, 0, 752, 7356, 1, 0, 0, 0, 754, 7390, 1, 0, 0, 0, 756, 7406, 1, 0, 0, 0, 758, 7408, 1, 0, 0, 0, 760, 7411, 1, 0, 0, 0, 762, 7415, 1, 0, 0, 0, 764, 7440, 1, 0, 0, 0, 766, 7621, 1, 0, 0, 0, 768, 7623, 1, 0, 0, 0, 770, 7642, 1, 0, 0, 0, 772, 7644, 1, 0, 0, 0, 774, 7707, 1, 0, 0, 0, 776, 7747, 1, 0, 0, 0, 778, 7749, 1, 0, 0, 0, 780, 7758, 1, 0, 0, 0, 782, 7769, 1, 0, 0, 0, 784, 7771, 1, 0, 0, 0, 786, 7774, 1, 0, 0, 0, 788, 7778, 1, 0, 0, 0, 790, 7780, 1, 0, 0, 0, 792, 7792, 1, 0, 0, 0, 794, 7794, 1, 0, 0, 0, 796, 7828, 1, 0, 0, 0, 798, 7830, 1, 0, 0, 0, 800, 7835, 1, 0, 0, 0, 802, 7846, 1, 0, 0, 0, 804, 7859, 1, 0, 0, 0, 806, 7870, 1, 0, 0, 0, 808, 7987, 1, 0, 0, 0, 810, 8009, 1, 0, 0, 0, 812, 8019, 1, 0, 0, 0, 814, 8028, 1, 0, 0, 0, 816, 8037, 1, 0, 0, 0, 818, 8046, 1, 0, 0, 0, 820, 8048, 1, 0, 0, 0, 822, 8055, 1, 0, 0, 0, 824, 8057, 1, 0, 0, 0, 826, 8059, 1, 0, 0, 0, 828, 8061, 1, 0, 0, 0, 830, 8063, 1, 0, 0, 0, 832, 8065, 1, 0, 0, 0, 834, 8067, 1, 0, 0, 0, 836, 8069, 1, 0, 0, 0, 838, 840, 3, 2, 1, 0, 839, 838, 1, 0, 0, 0, 840, 843, 1, 0, 0, 0, 841, 839, 1, 0, 0, 0, 841, 842, 1, 0, 0, 0, 842, 844, 1, 0, 0, 0, 843, 841, 1, 0, 0, 0, 844, 845, 5, 0, 0, 1, 845, 1, 1, 0, 0, 0, 846, 848, 3, 4, 2, 0, 847, 849, 5, 869, 0, 0, 848, 847, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 852, 1, 0, 0, 0, 850, 852, 3, 6, 3, 0, 851, 846, 1, 0, 0, 0, 851, 850, 1, 0, 0, 0, 852, 3, 1, 0, 0, 0, 853, 861, 3, 8, 4, 0, 854, 861, 3, 10, 5, 0, 855, 861, 3, 12, 6, 0, 856, 861, 3, 14, 7, 0, 857, 861, 3, 16, 8, 0, 858, 861, 3, 20, 10, 0, 859, 861, 3, 22, 11, 0, 860, 853, 1, 0, 0, 0, 860, 854, 1, 0, 0, 0, 860, 855, 1, 0, 0, 0, 860, 856, 1, 0, 0, 0, 860, 857, 1, 0, 0, 0, 860, 858, 1, 0, 0, 0, 860, 859, 1, 0, 0, 0, 861, 5, 1, 0, 0, 0, 862, 863, 5, 869, 0, 0, 863, 7, 1, 0, 0, 0, 864, 905, 3, 24, 12, 0, 865, 905, 3, 26, 13, 0, 866, 905, 3, 28, 14, 0, 867, 905, 3, 30, 15, 0, 868, 905, 3, 32, 16, 0, 869, 905, 3, 34, 17, 0, 870, 905, 3, 36, 18, 0, 871, 905, 3, 40, 20, 0, 872, 905, 3, 42, 21, 0, 873, 905, 3, 44, 22, 0, 874, 905, 3, 46, 23, 0, 875, 905, 3, 48, 24, 0, 876, 905, 3, 54, 27, 0, 877, 905, 3, 38, 19, 0, 878, 905, 3, 126, 63, 0, 879, 905, 3, 128, 64, 0, 880, 905, 3, 130, 65, 0, 881, 905, 3, 132, 66, 0, 882, 905, 3, 134, 67, 0, 883, 905, 3, 136, 68, 0, 884, 905, 3, 138, 69, 0, 885, 905, 3, 140, 70, 0, 886, 905, 3, 142, 71, 0, 887, 905, 3, 144, 72, 0, 888, 905, 3, 150, 75, 0, 889, 905, 3, 152, 76, 0, 890, 905, 3, 154, 77, 0, 891, 905, 3, 156, 78, 0, 892, 905, 3, 158, 79, 0, 893, 905, 3, 160, 80, 0, 894, 905, 3, 162, 81, 0, 895, 905, 3, 164, 82, 0, 896, 905, 3, 166, 83, 0, 897, 905, 3, 168, 84, 0, 898, 905, 3, 170, 85, 0, 899, 905, 3, 172, 86, 0, 900, 905, 3, 174, 87, 0, 901, 905, 3, 176, 88, 0, 902, 905, 3, 178, 89, 0, 903, 905, 3, 182, 91, 0, 904, 864, 1, 0, 0, 0, 904, 865, 1, 0, 0, 0, 904, 866, 1, 0, 0, 0, 904, 867, 1, 0, 0, 0, 904, 868, 1, 0, 0, 0, 904, 869, 1, 0, 0, 0, 904, 870, 1, 0, 0, 0, 904, 871, 1, 0, 0, 0, 904, 872, 1, 0, 0, 0, 904, 873, 1, 0, 0, 0, 904, 874, 1, 0, 0, 0, 904, 875, 1, 0, 0, 0, 904, 876, 1, 0, 0, 0, 904, 877, 1, 0, 0, 0, 904, 878, 1, 0, 0, 0, 904, 879, 1, 0, 0, 0, 904, 880, 1, 0, 0, 0, 904, 881, 1, 0, 0, 0, 904, 882, 1, 0, 0, 0, 904, 883, 1, 0, 0, 0, 904, 884, 1, 0, 0, 0, 904, 885, 1, 0, 0, 0, 904, 886, 1, 0, 0, 0, 904, 887, 1, 0, 0, 0, 904, 888, 1, 0, 0, 0, 904, 889, 1, 0, 0, 0, 904, 890, 1, 0, 0, 0, 904, 891, 1, 0, 0, 0, 904, 892, 1, 0, 0, 0, 904, 893, 1, 0, 0, 0, 904, 894, 1, 0, 0, 0, 904, 895, 1, 0, 0, 0, 904, 896, 1, 0, 0, 0, 904, 897, 1, 0, 0, 0, 904, 898, 1, 0, 0, 0, 904, 899, 1, 0, 0, 0, 904, 900, 1, 0, 0, 0, 904, 901, 1, 0, 0, 0, 904, 902, 1, 0, 0, 0, 904, 903, 1, 0, 0, 0, 905, 9, 1, 0, 0, 0, 906, 924, 3, 210, 105, 0, 907, 924, 3, 212, 106, 0, 908, 924, 3, 192, 96, 0, 909, 924, 3, 220, 110, 0, 910, 924, 3, 186, 93, 0, 911, 924, 3, 208, 104, 0, 912, 924, 3, 184, 92, 0, 913, 924, 3, 198, 99, 0, 914, 924, 3, 202, 101, 0, 915, 924, 3, 204, 102, 0, 916, 924, 3, 206, 103, 0, 917, 924, 3, 188, 94, 0, 918, 924, 3, 190, 95, 0, 919, 924, 3, 252, 126, 0, 920, 924, 3, 222, 111, 0, 921, 924, 3, 616, 308, 0, 922, 924, 3, 618, 309, 0, 923, 906, 1, 0, 0, 0, 923, 907, 1, 0, 0, 0, 923, 908, 1, 0, 0, 0, 923, 909, 1, 0, 0, 0, 923, 910, 1, 0, 0, 0, 923, 911, 1, 0, 0, 0, 923, 912, 1, 0, 0, 0, 923, 913, 1, 0, 0, 0, 923, 914, 1, 0, 0, 0, 923, 915, 1, 0, 0, 0, 923, 916, 1, 0, 0, 0, 923, 917, 1, 0, 0, 0, 923, 918, 1, 0, 0, 0, 923, 919, 1, 0, 0, 0, 923, 920, 1, 0, 0, 0, 923, 921, 1, 0, 0, 0, 923, 922, 1, 0, 0, 0, 924, 11, 1, 0, 0, 0, 925, 935, 3, 322, 161, 0, 926, 935, 3, 324, 162, 0, 927, 935, 3, 326, 163, 0, 928, 935, 3, 328, 164, 0, 929, 935, 3, 330, 165, 0, 930, 935, 3, 332, 166, 0, 931, 935, 3, 334, 167, 0, 932, 935, 3, 336, 168, 0, 933, 935, 3, 338, 169, 0, 934, 925, 1, 0, 0, 0, 934, 926, 1, 0, 0, 0, 934, 927, 1, 0, 0, 0, 934, 928, 1, 0, 0, 0, 934, 929, 1, 0, 0, 0, 934, 930, 1, 0, 0, 0, 934, 931, 1, 0, 0, 0, 934, 932, 1, 0, 0, 0, 934, 933, 1, 0, 0, 0, 935, 13, 1, 0, 0, 0, 936, 951, 3, 354, 177, 0, 937, 951, 3, 356, 178, 0, 938, 951, 3, 358, 179, 0, 939, 951, 3, 360, 180, 0, 940, 951, 3, 362, 181, 0, 941, 951, 3, 364, 182, 0, 942, 951, 3, 366, 183, 0, 943, 951, 3, 368, 184, 0, 944, 951, 3, 404, 202, 0, 945, 951, 3, 406, 203, 0, 946, 951, 3, 408, 204, 0, 947, 951, 3, 410, 205, 0, 948, 951, 3, 412, 206, 0, 949, 951, 3, 414, 207, 0, 950, 936, 1, 0, 0, 0, 950, 937, 1, 0, 0, 0, 950, 938, 1, 0, 0, 0, 950, 939, 1, 0, 0, 0, 950, 940, 1, 0, 0, 0, 950, 941, 1, 0, 0, 0, 950, 942, 1, 0, 0, 0, 950, 943, 1, 0, 0, 0, 950, 944, 1, 0, 0, 0, 950, 945, 1, 0, 0, 0, 950, 946, 1, 0, 0, 0, 950, 947, 1, 0, 0, 0, 950, 948, 1, 0, 0, 0, 950, 949, 1, 0, 0, 0, 951, 15, 1, 0, 0, 0, 952, 956, 3, 416, 208, 0, 953, 956, 3, 418, 209, 0, 954, 956, 3, 420, 210, 0, 955, 952, 1, 0, 0, 0, 955, 953, 1, 0, 0, 0, 955, 954, 1, 0, 0, 0, 956, 17, 1, 0, 0, 0, 957, 968, 3, 424, 212, 0, 958, 968, 3, 426, 213, 0, 959, 968, 3, 428, 214, 0, 960, 968, 3, 432, 216, 0, 961, 968, 3, 434, 217, 0, 962, 968, 3, 436, 218, 0, 963, 968, 3, 440, 220, 0, 964, 968, 3, 430, 215, 0, 965, 968, 3, 438, 219, 0, 966, 968, 3, 442, 221, 0, 967, 957, 1, 0, 0, 0, 967, 958, 1, 0, 0, 0, 967, 959, 1, 0, 0, 0, 967, 960, 1, 0, 0, 0, 967, 961, 1, 0, 0, 0, 967, 962, 1, 0, 0, 0, 967, 963, 1, 0, 0, 0, 967, 964, 1, 0, 0, 0, 967, 965, 1, 0, 0, 0, 967, 966, 1, 0, 0, 0, 968, 19, 1, 0, 0, 0, 969, 1003, 3, 460, 230, 0, 970, 1003, 3, 462, 231, 0, 971, 1003, 3, 464, 232, 0, 972, 1003, 3, 466, 233, 0, 973, 1003, 3, 470, 235, 0, 974, 1003, 3, 482, 241, 0, 975, 1003, 3, 484, 242, 0, 976, 1003, 3, 472, 236, 0, 977, 1003, 3, 474, 237, 0, 978, 1003, 3, 476, 238, 0, 979, 1003, 3, 478, 239, 0, 980, 1003, 3, 528, 264, 0, 981, 1003, 3, 530, 265, 0, 982, 1003, 3, 532, 266, 0, 983, 1003, 3, 534, 267, 0, 984, 1003, 3, 536, 268, 0, 985, 1003, 3, 542, 271, 0, 986, 1003, 3, 546, 273, 0, 987, 1003, 3, 548, 274, 0, 988, 1003, 3, 550, 275, 0, 989, 1003, 3, 552, 276, 0, 990, 1003, 3, 554, 277, 0, 991, 1003, 3, 556, 278, 0, 992, 1003, 3, 570, 285, 0, 993, 1003, 3, 572, 286, 0, 994, 1003, 3, 574, 287, 0, 995, 1003, 3, 576, 288, 0, 996, 1003, 3, 578, 289, 0, 997, 1003, 3, 580, 290, 0, 998, 1003, 3, 584, 292, 0, 999, 1003, 3, 586, 293, 0, 1000, 1003, 3, 588, 294, 0, 1001, 1003, 3, 590, 295, 0, 1002, 969, 1, 0, 0, 0, 1002, 970, 1, 0, 0, 0, 1002, 971, 1, 0, 0, 0, 1002, 972, 1, 0, 0, 0, 1002, 973, 1, 0, 0, 0, 1002, 974, 1, 0, 0, 0, 1002, 975, 1, 0, 0, 0, 1002, 976, 1, 0, 0, 0, 1002, 977, 1, 0, 0, 0, 1002, 978, 1, 0, 0, 0, 1002, 979, 1, 0, 0, 0, 1002, 980, 1, 0, 0, 0, 1002, 981, 1, 0, 0, 0, 1002, 982, 1, 0, 0, 0, 1002, 983, 1, 0, 0, 0, 1002, 984, 1, 0, 0, 0, 1002, 985, 1, 0, 0, 0, 1002, 986, 1, 0, 0, 0, 1002, 987, 1, 0, 0, 0, 1002, 988, 1, 0, 0, 0, 1002, 989, 1, 0, 0, 0, 1002, 990, 1, 0, 0, 0, 1002, 991, 1, 0, 0, 0, 1002, 992, 1, 0, 0, 0, 1002, 993, 1, 0, 0, 0, 1002, 994, 1, 0, 0, 0, 1002, 995, 1, 0, 0, 0, 1002, 996, 1, 0, 0, 0, 1002, 997, 1, 0, 0, 0, 1002, 998, 1, 0, 0, 0, 1002, 999, 1, 0, 0, 0, 1002, 1000, 1, 0, 0, 0, 1002, 1001, 1, 0, 0, 0, 1003, 21, 1, 0, 0, 0, 1004, 1013, 3, 602, 301, 0, 1005, 1013, 3, 600, 300, 0, 1006, 1013, 3, 604, 302, 0, 1007, 1013, 3, 606, 303, 0, 1008, 1013, 3, 608, 304, 0, 1009, 1013, 3, 610, 305, 0, 1010, 1013, 3, 612, 306, 0, 1011, 1013, 3, 620, 310, 0, 1012, 1004, 1, 0, 0, 0, 1012, 1005, 1, 0, 0, 0, 1012, 1006, 1, 0, 0, 0, 1012, 1007, 1, 0, 0, 0, 1012, 1008, 1, 0, 0, 0, 1012, 1009, 1, 0, 0, 0, 1012, 1010, 1, 0, 0, 0, 1012, 1011, 1, 0, 0, 0, 1013, 23, 1, 0, 0, 0, 1014, 1015, 5, 34, 0, 0, 1015, 1017, 7, 0, 0, 0, 1016, 1018, 3, 760, 380, 0, 1017, 1016, 1, 0, 0, 0, 1017, 1018, 1, 0, 0, 0, 1018, 1019, 1, 0, 0, 0, 1019, 1023, 3, 626, 313, 0, 1020, 1022, 3, 56, 28, 0, 1021, 1020, 1, 0, 0, 0, 1022, 1025, 1, 0, 0, 0, 1023, 1021, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 25, 1, 0, 0, 0, 1025, 1023, 1, 0, 0, 0, 1026, 1028, 5, 34, 0, 0, 1027, 1029, 3, 62, 31, 0, 1028, 1027, 1, 0, 0, 0, 1028, 1029, 1, 0, 0, 0, 1029, 1030, 1, 0, 0, 0, 1030, 1032, 5, 385, 0, 0, 1031, 1033, 3, 760, 380, 0, 1032, 1031, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 1034, 1, 0, 0, 0, 1034, 1035, 3, 702, 351, 0, 1035, 1036, 5, 119, 0, 0, 1036, 1037, 5, 590, 0, 0, 1037, 1044, 3, 64, 32, 0, 1038, 1039, 5, 119, 0, 0, 1039, 1041, 5, 343, 0, 0, 1040, 1042, 5, 114, 0, 0, 1041, 1040, 1, 0, 0, 0, 1041, 1042, 1, 0, 0, 0, 1042, 1043, 1, 0, 0, 0, 1043, 1045, 5, 541, 0, 0, 1044, 1038, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 1047, 1, 0, 0, 0, 1046, 1048, 3, 72, 36, 0, 1047, 1046, 1, 0, 0, 0, 1047, 1048, 1, 0, 0, 0, 1048, 1051, 1, 0, 0, 0, 1049, 1050, 5, 340, 0, 0, 1050, 1052, 5, 882, 0, 0, 1051, 1049, 1, 0, 0, 0, 1051, 1052, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 1054, 5, 371, 0, 0, 1054, 1055, 3, 422, 211, 0, 1055, 27, 1, 0, 0, 0, 1056, 1058, 5, 34, 0, 0, 1057, 1059, 7, 1, 0, 0, 1058, 1057, 1, 0, 0, 0, 1058, 1059, 1, 0, 0, 0, 1059, 1061, 1, 0, 0, 0, 1060, 1062, 7, 2, 0, 0, 1061, 1060, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1064, 5, 82, 0, 0, 1064, 1066, 3, 638, 319, 0, 1065, 1067, 3, 74, 37, 0, 1066, 1065, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1069, 5, 119, 0, 0, 1069, 1070, 3, 652, 326, 0, 1070, 1074, 3, 738, 369, 0, 1071, 1073, 3, 76, 38, 0, 1072, 1071, 1, 0, 0, 0, 1073, 1076, 1, 0, 0, 0, 1074, 1072, 1, 0, 0, 0, 1074, 1075, 1, 0, 0, 0, 1075, 1089, 1, 0, 0, 0, 1076, 1074, 1, 0, 0, 0, 1077, 1079, 5, 308, 0, 0, 1078, 1080, 5, 857, 0, 0, 1079, 1078, 1, 0, 0, 0, 1079, 1080, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 1088, 7, 3, 0, 0, 1082, 1084, 5, 104, 0, 0, 1083, 1085, 5, 857, 0, 0, 1084, 1083, 1, 0, 0, 0, 1084, 1085, 1, 0, 0, 0, 1085, 1086, 1, 0, 0, 0, 1086, 1088, 7, 4, 0, 0, 1087, 1077, 1, 0, 0, 0, 1087, 1082, 1, 0, 0, 0, 1088, 1091, 1, 0, 0, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 29, 1, 0, 0, 0, 1091, 1089, 1, 0, 0, 0, 1092, 1093, 5, 34, 0, 0, 1093, 1094, 5, 451, 0, 0, 1094, 1095, 5, 74, 0, 0, 1095, 1096, 3, 706, 353, 0, 1096, 1097, 5, 6, 0, 0, 1097, 1098, 5, 671, 0, 0, 1098, 1104, 5, 882, 0, 0, 1099, 1101, 5, 428, 0, 0, 1100, 1102, 5, 857, 0, 0, 1101, 1100, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1103, 1, 0, 0, 0, 1103, 1105, 3, 714, 357, 0, 1104, 1099, 1, 0, 0, 0, 1104, 1105, 1, 0, 0, 0, 1105, 1111, 1, 0, 0, 0, 1106, 1108, 5, 672, 0, 0, 1107, 1109, 5, 857, 0, 0, 1108, 1107, 1, 0, 0, 0, 1108, 1109, 1, 0, 0, 0, 1109, 1110, 1, 0, 0, 0, 1110, 1112, 3, 714, 357, 0, 1111, 1106, 1, 0, 0, 0, 1111, 1112, 1, 0, 0, 0, 1112, 1118, 1, 0, 0, 0, 1113, 1115, 5, 553, 0, 0, 1114, 1116, 5, 857, 0, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1117, 1, 0, 0, 0, 1117, 1119, 3, 714, 357, 0, 1118, 1113, 1, 0, 0, 0, 1118, 1119, 1, 0, 0, 0, 1119, 1125, 1, 0, 0, 0, 1120, 1122, 5, 504, 0, 0, 1121, 1123, 5, 857, 0, 0, 1122, 1121, 1, 0, 0, 0, 1122, 1123, 1, 0, 0, 0, 1123, 1124, 1, 0, 0, 0, 1124, 1126, 3, 706, 353, 0, 1125, 1120, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1128, 1, 0, 0, 0, 1127, 1129, 5, 687, 0, 0, 1128, 1127, 1, 0, 0, 0, 1128, 1129, 1, 0, 0, 0, 1129, 1135, 1, 0, 0, 0, 1130, 1132, 5, 340, 0, 0, 1131, 1133, 5, 857, 0, 0, 1132, 1131, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1136, 5, 882, 0, 0, 1135, 1130, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1137, 1, 0, 0, 0, 1137, 1139, 5, 380, 0, 0, 1138, 1140, 5, 857, 0, 0, 1139, 1138, 1, 0, 0, 0, 1139, 1140, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 1142, 3, 692, 346, 0, 1142, 31, 1, 0, 0, 0, 1143, 1145, 5, 34, 0, 0, 1144, 1146, 3, 62, 31, 0, 1145, 1144, 1, 0, 0, 0, 1145, 1146, 1, 0, 0, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1149, 5, 132, 0, 0, 1148, 1150, 3, 760, 380, 0, 1149, 1148, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1151, 1, 0, 0, 0, 1151, 1152, 3, 702, 351, 0, 1152, 1154, 5, 866, 0, 0, 1153, 1155, 3, 78, 39, 0, 1154, 1153, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 1160, 1, 0, 0, 0, 1156, 1157, 5, 868, 0, 0, 1157, 1159, 3, 78, 39, 0, 1158, 1156, 1, 0, 0, 0, 1159, 1162, 1, 0, 0, 0, 1160, 1158, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1163, 1, 0, 0, 0, 1162, 1160, 1, 0, 0, 0, 1163, 1167, 5, 867, 0, 0, 1164, 1166, 3, 82, 41, 0, 1165, 1164, 1, 0, 0, 0, 1166, 1169, 1, 0, 0, 0, 1167, 1165, 1, 0, 0, 0, 1167, 1168, 1, 0, 0, 0, 1168, 1170, 1, 0, 0, 0, 1169, 1167, 1, 0, 0, 0, 1170, 1171, 3, 422, 211, 0, 1171, 33, 1, 0, 0, 0, 1172, 1174, 5, 34, 0, 0, 1173, 1175, 3, 62, 31, 0, 1174, 1173, 1, 0, 0, 0, 1174, 1175, 1, 0, 0, 0, 1175, 1177, 1, 0, 0, 0, 1176, 1178, 5, 307, 0, 0, 1177, 1176, 1, 0, 0, 0, 1177, 1178, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, 1179, 1181, 5, 409, 0, 0, 1180, 1182, 3, 760, 380, 0, 1181, 1180, 1, 0, 0, 0, 1181, 1182, 1, 0, 0, 0, 1182, 1183, 1, 0, 0, 0, 1183, 1184, 3, 630, 315, 0, 1184, 1186, 5, 866, 0, 0, 1185, 1187, 3, 80, 40, 0, 1186, 1185, 1, 0, 0, 0, 1186, 1187, 1, 0, 0, 0, 1187, 1192, 1, 0, 0, 0, 1188, 1189, 5, 868, 0, 0, 1189, 1191, 3, 80, 40, 0, 1190, 1188, 1, 0, 0, 0, 1191, 1194, 1, 0, 0, 0, 1192, 1190, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1195, 1, 0, 0, 0, 1194, 1192, 1, 0, 0, 0, 1195, 1196, 5, 867, 0, 0, 1196, 1197, 5, 580, 0, 0, 1197, 1201, 3, 726, 363, 0, 1198, 1200, 3, 82, 41, 0, 1199, 1198, 1, 0, 0, 0, 1200, 1203, 1, 0, 0, 0, 1201, 1199, 1, 0, 0, 0, 1201, 1202, 1, 0, 0, 0, 1202, 1206, 1, 0, 0, 0, 1203, 1201, 1, 0, 0, 0, 1204, 1207, 3, 422, 211, 0, 1205, 1207, 3, 438, 219, 0, 1206, 1204, 1, 0, 0, 0, 1206, 1205, 1, 0, 0, 0, 1207, 35, 1, 0, 0, 0, 1208, 1210, 5, 34, 0, 0, 1209, 1211, 5, 307, 0, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1214, 5, 409, 0, 0, 1213, 1215, 3, 760, 380, 0, 1214, 1213, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 3, 630, 315, 0, 1217, 1218, 5, 580, 0, 0, 1218, 1219, 7, 5, 0, 0, 1219, 1220, 5, 603, 0, 0, 1220, 1221, 5, 882, 0, 0, 1221, 37, 1, 0, 0, 0, 1222, 1223, 5, 34, 0, 0, 1223, 1225, 5, 582, 0, 0, 1224, 1226, 3, 760, 380, 0, 1225, 1224, 1, 0, 0, 0, 1225, 1226, 1, 0, 0, 0, 1226, 1227, 1, 0, 0, 0, 1227, 1228, 3, 654, 327, 0, 1228, 39, 1, 0, 0, 0, 1229, 1230, 5, 34, 0, 0, 1230, 1231, 5, 592, 0, 0, 1231, 1232, 3, 706, 353, 0, 1232, 1233, 5, 67, 0, 0, 1233, 1234, 5, 360, 0, 0, 1234, 1235, 5, 692, 0, 0, 1235, 1236, 7, 6, 0, 0, 1236, 1237, 5, 518, 0, 0, 1237, 1238, 5, 866, 0, 0, 1238, 1243, 3, 84, 42, 0, 1239, 1240, 5, 868, 0, 0, 1240, 1242, 3, 84, 42, 0, 1241, 1239, 1, 0, 0, 0, 1242, 1245, 1, 0, 0, 0, 1243, 1241, 1, 0, 0, 0, 1243, 1244, 1, 0, 0, 0, 1244, 1246, 1, 0, 0, 0, 1245, 1243, 1, 0, 0, 0, 1246, 1247, 5, 867, 0, 0, 1247, 41, 1, 0, 0, 0, 1248, 1250, 5, 34, 0, 0, 1249, 1251, 5, 660, 0, 0, 1250, 1249, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 1254, 5, 173, 0, 0, 1253, 1255, 3, 760, 380, 0, 1254, 1253, 1, 0, 0, 0, 1254, 1255, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1258, 3, 648, 324, 0, 1257, 1259, 3, 86, 43, 0, 1258, 1257, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1270, 1, 0, 0, 0, 1260, 1267, 3, 104, 52, 0, 1261, 1263, 5, 868, 0, 0, 1262, 1261, 1, 0, 0, 0, 1262, 1263, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 1266, 3, 104, 52, 0, 1265, 1262, 1, 0, 0, 0, 1266, 1269, 1, 0, 0, 0, 1267, 1265, 1, 0, 0, 0, 1267, 1268, 1, 0, 0, 0, 1268, 1271, 1, 0, 0, 0, 1269, 1267, 1, 0, 0, 0, 1270, 1260, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1273, 1, 0, 0, 0, 1272, 1274, 3, 110, 55, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1276, 1, 0, 0, 0, 1275, 1277, 7, 7, 0, 0, 1276, 1275, 1, 0, 0, 0, 1276, 1277, 1, 0, 0, 0, 1277, 1279, 1, 0, 0, 0, 1278, 1280, 5, 13, 0, 0, 1279, 1278, 1, 0, 0, 0, 1279, 1280, 1, 0, 0, 0, 1280, 1281, 1, 0, 0, 0, 1281, 1282, 3, 210, 105, 0, 1282, 1327, 1, 0, 0, 0, 1283, 1285, 5, 34, 0, 0, 1284, 1286, 5, 660, 0, 0, 1285, 1284, 1, 0, 0, 0, 1285, 1286, 1, 0, 0, 0, 1286, 1287, 1, 0, 0, 0, 1287, 1289, 5, 173, 0, 0, 1288, 1290, 3, 760, 380, 0, 1289, 1288, 1, 0, 0, 0, 1289, 1290, 1, 0, 0, 0, 1290, 1291, 1, 0, 0, 0, 1291, 1299, 3, 648, 324, 0, 1292, 1293, 5, 99, 0, 0, 1293, 1300, 3, 652, 326, 0, 1294, 1295, 5, 866, 0, 0, 1295, 1296, 5, 99, 0, 0, 1296, 1297, 3, 652, 326, 0, 1297, 1298, 5, 867, 0, 0, 1298, 1300, 1, 0, 0, 0, 1299, 1292, 1, 0, 0, 0, 1299, 1294, 1, 0, 0, 0, 1300, 1327, 1, 0, 0, 0, 1301, 1303, 5, 34, 0, 0, 1302, 1304, 5, 660, 0, 0, 1303, 1302, 1, 0, 0, 0, 1303, 1304, 1, 0, 0, 0, 1304, 1305, 1, 0, 0, 0, 1305, 1307, 5, 173, 0, 0, 1306, 1308, 3, 760, 380, 0, 1307, 1306, 1, 0, 0, 0, 1307, 1308, 1, 0, 0, 0, 1308, 1309, 1, 0, 0, 0, 1309, 1310, 3, 648, 324, 0, 1310, 1321, 3, 86, 43, 0, 1311, 1318, 3, 104, 52, 0, 1312, 1314, 5, 868, 0, 0, 1313, 1312, 1, 0, 0, 0, 1313, 1314, 1, 0, 0, 0, 1314, 1315, 1, 0, 0, 0, 1315, 1317, 3, 104, 52, 0, 1316, 1313, 1, 0, 0, 0, 1317, 1320, 1, 0, 0, 0, 1318, 1316, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1322, 1, 0, 0, 0, 1320, 1318, 1, 0, 0, 0, 1321, 1311, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1324, 1, 0, 0, 0, 1323, 1325, 3, 110, 55, 0, 1324, 1323, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 1327, 1, 0, 0, 0, 1326, 1248, 1, 0, 0, 0, 1326, 1283, 1, 0, 0, 0, 1326, 1301, 1, 0, 0, 0, 1327, 43, 1, 0, 0, 0, 1328, 1330, 5, 34, 0, 0, 1329, 1331, 5, 180, 0, 0, 1330, 1329, 1, 0, 0, 0, 1330, 1331, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1333, 5, 658, 0, 0, 1333, 1337, 3, 664, 332, 0, 1334, 1335, 5, 6, 0, 0, 1335, 1336, 5, 361, 0, 0, 1336, 1338, 5, 882, 0, 0, 1337, 1334, 1, 0, 0, 0, 1337, 1338, 1, 0, 0, 0, 1338, 1344, 1, 0, 0, 0, 1339, 1341, 5, 314, 0, 0, 1340, 1342, 5, 857, 0, 0, 1341, 1340, 1, 0, 0, 0, 1341, 1342, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 1345, 3, 714, 357, 0, 1344, 1339, 1, 0, 0, 0, 1344, 1345, 1, 0, 0, 0, 1345, 1349, 1, 0, 0, 0, 1346, 1347, 5, 399, 0, 0, 1347, 1348, 5, 857, 0, 0, 1348, 1350, 3, 714, 357, 0, 1349, 1346, 1, 0, 0, 0, 1349, 1350, 1, 0, 0, 0, 1350, 1356, 1, 0, 0, 0, 1351, 1353, 5, 380, 0, 0, 1352, 1354, 5, 857, 0, 0, 1353, 1352, 1, 0, 0, 0, 1353, 1354, 1, 0, 0, 0, 1354, 1355, 1, 0, 0, 0, 1355, 1357, 3, 692, 346, 0, 1356, 1351, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 1363, 1, 0, 0, 0, 1358, 1360, 5, 825, 0, 0, 1359, 1361, 5, 857, 0, 0, 1360, 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1364, 5, 882, 0, 0, 1363, 1358, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 45, 1, 0, 0, 0, 1365, 1367, 5, 34, 0, 0, 1366, 1368, 5, 180, 0, 0, 1367, 1366, 1, 0, 0, 0, 1367, 1368, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 1370, 5, 658, 0, 0, 1370, 1371, 3, 664, 332, 0, 1371, 1372, 5, 6, 0, 0, 1372, 1373, 5, 361, 0, 0, 1373, 1374, 5, 882, 0, 0, 1374, 1375, 5, 187, 0, 0, 1375, 1376, 5, 451, 0, 0, 1376, 1377, 5, 74, 0, 0, 1377, 1383, 3, 706, 353, 0, 1378, 1380, 5, 393, 0, 0, 1379, 1381, 5, 857, 0, 0, 1380, 1379, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1382, 1, 0, 0, 0, 1382, 1384, 3, 714, 357, 0, 1383, 1378, 1, 0, 0, 0, 1383, 1384, 1, 0, 0, 0, 1384, 1390, 1, 0, 0, 0, 1385, 1387, 5, 428, 0, 0, 1386, 1388, 5, 857, 0, 0, 1387, 1386, 1, 0, 0, 0, 1387, 1388, 1, 0, 0, 0, 1388, 1389, 1, 0, 0, 0, 1389, 1391, 3, 714, 357, 0, 1390, 1385, 1, 0, 0, 0, 1390, 1391, 1, 0, 0, 0, 1391, 1397, 1, 0, 0, 0, 1392, 1394, 5, 314, 0, 0, 1393, 1395, 5, 857, 0, 0, 1394, 1393, 1, 0, 0, 0, 1394, 1395, 1, 0, 0, 0, 1395, 1396, 1, 0, 0, 0, 1396, 1398, 3, 714, 357, 0, 1397, 1392, 1, 0, 0, 0, 1397, 1398, 1, 0, 0, 0, 1398, 1404, 1, 0, 0, 0, 1399, 1401, 5, 481, 0, 0, 1400, 1402, 5, 857, 0, 0, 1401, 1400, 1, 0, 0, 0, 1401, 1402, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1405, 3, 714, 357, 0, 1404, 1399, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1411, 1, 0, 0, 0, 1406, 1408, 5, 504, 0, 0, 1407, 1409, 5, 857, 0, 0, 1408, 1407, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1412, 3, 706, 353, 0, 1411, 1406, 1, 0, 0, 0, 1411, 1412, 1, 0, 0, 0, 1412, 1414, 1, 0, 0, 0, 1413, 1415, 5, 687, 0, 0, 1414, 1413, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1421, 1, 0, 0, 0, 1416, 1418, 5, 340, 0, 0, 1417, 1419, 5, 857, 0, 0, 1418, 1417, 1, 0, 0, 0, 1418, 1419, 1, 0, 0, 0, 1419, 1420, 1, 0, 0, 0, 1420, 1422, 5, 882, 0, 0, 1421, 1416, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1423, 1, 0, 0, 0, 1423, 1425, 5, 380, 0, 0, 1424, 1426, 5, 857, 0, 0, 1425, 1424, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1427, 1, 0, 0, 0, 1427, 1428, 3, 692, 346, 0, 1428, 47, 1, 0, 0, 0, 1429, 1431, 5, 34, 0, 0, 1430, 1432, 3, 62, 31, 0, 1431, 1430, 1, 0, 0, 0, 1431, 1432, 1, 0, 0, 0, 1432, 1434, 1, 0, 0, 0, 1433, 1435, 3, 760, 380, 0, 1434, 1433, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1436, 1, 0, 0, 0, 1436, 1438, 5, 178, 0, 0, 1437, 1439, 3, 760, 380, 0, 1438, 1437, 1, 0, 0, 0, 1438, 1439, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 1441, 3, 702, 351, 0, 1441, 1442, 7, 8, 0, 0, 1442, 1443, 7, 9, 0, 0, 1443, 1444, 5, 119, 0, 0, 1444, 1445, 3, 652, 326, 0, 1445, 1446, 5, 65, 0, 0, 1446, 1447, 5, 52, 0, 0, 1447, 1450, 5, 586, 0, 0, 1448, 1449, 7, 10, 0, 0, 1449, 1451, 3, 702, 351, 0, 1450, 1448, 1, 0, 0, 0, 1450, 1451, 1, 0, 0, 0, 1451, 1452, 1, 0, 0, 0, 1452, 1453, 3, 422, 211, 0, 1453, 49, 1, 0, 0, 0, 1454, 1456, 5, 194, 0, 0, 1455, 1457, 5, 552, 0, 0, 1456, 1455, 1, 0, 0, 0, 1456, 1457, 1, 0, 0, 0, 1457, 1458, 1, 0, 0, 0, 1458, 1459, 3, 52, 26, 0, 1459, 51, 1, 0, 0, 0, 1460, 1472, 3, 706, 353, 0, 1461, 1462, 5, 866, 0, 0, 1462, 1467, 3, 706, 353, 0, 1463, 1464, 5, 868, 0, 0, 1464, 1466, 3, 706, 353, 0, 1465, 1463, 1, 0, 0, 0, 1466, 1469, 1, 0, 0, 0, 1467, 1465, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1470, 1, 0, 0, 0, 1469, 1467, 1, 0, 0, 0, 1470, 1471, 5, 867, 0, 0, 1471, 1473, 1, 0, 0, 0, 1472, 1461, 1, 0, 0, 0, 1472, 1473, 1, 0, 0, 0, 1473, 1474, 1, 0, 0, 0, 1474, 1475, 5, 13, 0, 0, 1475, 1476, 5, 866, 0, 0, 1476, 1477, 3, 10, 5, 0, 1477, 1480, 5, 867, 0, 0, 1478, 1479, 5, 868, 0, 0, 1479, 1481, 3, 52, 26, 0, 1480, 1478, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 53, 1, 0, 0, 0, 1482, 1484, 5, 34, 0, 0, 1483, 1485, 3, 762, 381, 0, 1484, 1483, 1, 0, 0, 0, 1484, 1485, 1, 0, 0, 0, 1485, 1489, 1, 0, 0, 0, 1486, 1487, 5, 308, 0, 0, 1487, 1488, 5, 857, 0, 0, 1488, 1490, 7, 11, 0, 0, 1489, 1486, 1, 0, 0, 0, 1489, 1490, 1, 0, 0, 0, 1490, 1492, 1, 0, 0, 0, 1491, 1493, 3, 62, 31, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1497, 1, 0, 0, 0, 1494, 1495, 5, 162, 0, 0, 1495, 1496, 5, 591, 0, 0, 1496, 1498, 7, 12, 0, 0, 1497, 1494, 1, 0, 0, 0, 1497, 1498, 1, 0, 0, 0, 1498, 1499, 1, 0, 0, 0, 1499, 1500, 5, 684, 0, 0, 1500, 1512, 3, 634, 317, 0, 1501, 1502, 5, 866, 0, 0, 1502, 1507, 3, 658, 329, 0, 1503, 1504, 5, 868, 0, 0, 1504, 1506, 3, 658, 329, 0, 1505, 1503, 1, 0, 0, 0, 1506, 1509, 1, 0, 0, 0, 1507, 1505, 1, 0, 0, 0, 1507, 1508, 1, 0, 0, 0, 1508, 1510, 1, 0, 0, 0, 1509, 1507, 1, 0, 0, 0, 1510, 1511, 5, 867, 0, 0, 1511, 1513, 1, 0, 0, 0, 1512, 1501, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1534, 5, 13, 0, 0, 1515, 1517, 5, 866, 0, 0, 1516, 1518, 3, 50, 25, 0, 1517, 1516, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 3, 210, 105, 0, 1520, 1521, 5, 867, 0, 0, 1521, 1535, 1, 0, 0, 0, 1522, 1524, 3, 50, 25, 0, 1523, 1522, 1, 0, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1532, 3, 210, 105, 0, 1526, 1528, 5, 194, 0, 0, 1527, 1529, 7, 13, 0, 0, 1528, 1527, 1, 0, 0, 0, 1528, 1529, 1, 0, 0, 0, 1529, 1530, 1, 0, 0, 0, 1530, 1531, 5, 27, 0, 0, 1531, 1533, 5, 121, 0, 0, 1532, 1526, 1, 0, 0, 0, 1532, 1533, 1, 0, 0, 0, 1533, 1535, 1, 0, 0, 0, 1534, 1515, 1, 0, 0, 0, 1534, 1523, 1, 0, 0, 0, 1535, 55, 1, 0, 0, 0, 1536, 1538, 5, 42, 0, 0, 1537, 1536, 1, 0, 0, 0, 1537, 1538, 1, 0, 0, 0, 1538, 1539, 1, 0, 0, 0, 1539, 1541, 3, 58, 29, 0, 1540, 1542, 5, 857, 0, 0, 1541, 1540, 1, 0, 0, 0, 1541, 1542, 1, 0, 0, 0, 1542, 1545, 1, 0, 0, 0, 1543, 1546, 3, 688, 344, 0, 1544, 1546, 5, 42, 0, 0, 1545, 1543, 1, 0, 0, 0, 1545, 1544, 1, 0, 0, 0, 1546, 1570, 1, 0, 0, 0, 1547, 1549, 5, 42, 0, 0, 1548, 1547, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1552, 5, 28, 0, 0, 1551, 1553, 5, 857, 0, 0, 1552, 1551, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1570, 3, 690, 345, 0, 1555, 1557, 5, 42, 0, 0, 1556, 1555, 1, 0, 0, 0, 1556, 1557, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1560, 5, 376, 0, 0, 1559, 1561, 5, 857, 0, 0, 1560, 1559, 1, 0, 0, 0, 1560, 1561, 1, 0, 0, 0, 1561, 1562, 1, 0, 0, 0, 1562, 1570, 5, 882, 0, 0, 1563, 1564, 5, 135, 0, 0, 1564, 1566, 5, 515, 0, 0, 1565, 1567, 5, 857, 0, 0, 1566, 1565, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1570, 7, 14, 0, 0, 1569, 1537, 1, 0, 0, 0, 1569, 1548, 1, 0, 0, 0, 1569, 1556, 1, 0, 0, 0, 1569, 1563, 1, 0, 0, 0, 1570, 57, 1, 0, 0, 0, 1571, 1572, 5, 26, 0, 0, 1572, 1577, 5, 155, 0, 0, 1573, 1577, 5, 823, 0, 0, 1574, 1575, 5, 224, 0, 0, 1575, 1577, 5, 155, 0, 0, 1576, 1571, 1, 0, 0, 0, 1576, 1573, 1, 0, 0, 0, 1576, 1574, 1, 0, 0, 0, 1577, 59, 1, 0, 0, 0, 1578, 1581, 7, 15, 0, 0, 1579, 1580, 5, 866, 0, 0, 1580, 1582, 5, 867, 0, 0, 1581, 1579, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 61, 1, 0, 0, 0, 1583, 1584, 5, 364, 0, 0, 1584, 1587, 5, 857, 0, 0, 1585, 1588, 3, 684, 342, 0, 1586, 1588, 3, 60, 30, 0, 1587, 1585, 1, 0, 0, 0, 1587, 1586, 1, 0, 0, 0, 1588, 63, 1, 0, 0, 0, 1589, 1590, 5, 311, 0, 0, 1590, 1594, 3, 66, 33, 0, 1591, 1593, 3, 68, 34, 0, 1592, 1591, 1, 0, 0, 0, 1593, 1596, 1, 0, 0, 0, 1594, 1592, 1, 0, 0, 0, 1594, 1595, 1, 0, 0, 0, 1595, 1624, 1, 0, 0, 0, 1596, 1594, 1, 0, 0, 0, 1597, 1600, 5, 387, 0, 0, 1598, 1601, 3, 712, 356, 0, 1599, 1601, 3, 804, 402, 0, 1600, 1598, 1, 0, 0, 0, 1600, 1599, 1, 0, 0, 0, 1601, 1602, 1, 0, 0, 0, 1602, 1611, 3, 70, 35, 0, 1603, 1604, 5, 641, 0, 0, 1604, 1608, 3, 66, 33, 0, 1605, 1607, 3, 68, 34, 0, 1606, 1605, 1, 0, 0, 0, 1607, 1610, 1, 0, 0, 0, 1608, 1606, 1, 0, 0, 0, 1608, 1609, 1, 0, 0, 0, 1609, 1612, 1, 0, 0, 0, 1610, 1608, 1, 0, 0, 0, 1611, 1603, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1621, 1, 0, 0, 0, 1613, 1614, 5, 379, 0, 0, 1614, 1618, 3, 66, 33, 0, 1615, 1617, 3, 68, 34, 0, 1616, 1615, 1, 0, 0, 0, 1617, 1620, 1, 0, 0, 0, 1618, 1616, 1, 0, 0, 0, 1618, 1619, 1, 0, 0, 0, 1619, 1622, 1, 0, 0, 0, 1620, 1618, 1, 0, 0, 0, 1621, 1613, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1624, 1, 0, 0, 0, 1623, 1589, 1, 0, 0, 0, 1623, 1597, 1, 0, 0, 0, 1624, 65, 1, 0, 0, 0, 1625, 1630, 5, 287, 0, 0, 1626, 1630, 3, 716, 358, 0, 1627, 1630, 3, 712, 356, 0, 1628, 1630, 3, 804, 402, 0, 1629, 1625, 1, 0, 0, 0, 1629, 1626, 1, 0, 0, 0, 1629, 1627, 1, 0, 0, 0, 1629, 1628, 1, 0, 0, 0, 1630, 67, 1, 0, 0, 0, 1631, 1632, 5, 853, 0, 0, 1632, 1635, 5, 87, 0, 0, 1633, 1636, 3, 712, 356, 0, 1634, 1636, 3, 804, 402, 0, 1635, 1633, 1, 0, 0, 0, 1635, 1634, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1638, 3, 70, 35, 0, 1638, 69, 1, 0, 0, 0, 1639, 1653, 3, 830, 415, 0, 1640, 1653, 5, 223, 0, 0, 1641, 1653, 5, 242, 0, 0, 1642, 1653, 5, 243, 0, 0, 1643, 1653, 5, 244, 0, 0, 1644, 1653, 5, 245, 0, 0, 1645, 1653, 5, 246, 0, 0, 1646, 1653, 5, 247, 0, 0, 1647, 1653, 5, 248, 0, 0, 1648, 1653, 5, 249, 0, 0, 1649, 1653, 5, 250, 0, 0, 1650, 1653, 5, 251, 0, 0, 1651, 1653, 5, 252, 0, 0, 1652, 1639, 1, 0, 0, 0, 1652, 1640, 1, 0, 0, 0, 1652, 1641, 1, 0, 0, 0, 1652, 1642, 1, 0, 0, 0, 1652, 1643, 1, 0, 0, 0, 1652, 1644, 1, 0, 0, 0, 1652, 1645, 1, 0, 0, 0, 1652, 1646, 1, 0, 0, 0, 1652, 1647, 1, 0, 0, 0, 1652, 1648, 1, 0, 0, 0, 1652, 1649, 1, 0, 0, 0, 1652, 1650, 1, 0, 0, 0, 1652, 1651, 1, 0, 0, 0, 1653, 71, 1, 0, 0, 0, 1654, 1660, 5, 375, 0, 0, 1655, 1660, 5, 368, 0, 0, 1656, 1657, 5, 368, 0, 0, 1657, 1658, 5, 119, 0, 0, 1658, 1660, 5, 598, 0, 0, 1659, 1654, 1, 0, 0, 0, 1659, 1655, 1, 0, 0, 0, 1659, 1656, 1, 0, 0, 0, 1660, 73, 1, 0, 0, 0, 1661, 1662, 5, 188, 0, 0, 1662, 1663, 7, 16, 0, 0, 1663, 75, 1, 0, 0, 0, 1664, 1666, 5, 443, 0, 0, 1665, 1667, 5, 857, 0, 0, 1666, 1665, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1668, 1, 0, 0, 0, 1668, 1687, 3, 714, 357, 0, 1669, 1687, 3, 74, 37, 0, 1670, 1671, 5, 194, 0, 0, 1671, 1672, 5, 525, 0, 0, 1672, 1687, 3, 706, 353, 0, 1673, 1674, 5, 340, 0, 0, 1674, 1687, 5, 882, 0, 0, 1675, 1687, 7, 17, 0, 0, 1676, 1678, 5, 825, 0, 0, 1677, 1679, 5, 857, 0, 0, 1678, 1677, 1, 0, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1687, 5, 882, 0, 0, 1681, 1683, 5, 833, 0, 0, 1682, 1684, 5, 857, 0, 0, 1683, 1682, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1685, 1, 0, 0, 0, 1685, 1687, 5, 882, 0, 0, 1686, 1664, 1, 0, 0, 0, 1686, 1669, 1, 0, 0, 0, 1686, 1670, 1, 0, 0, 0, 1686, 1673, 1, 0, 0, 0, 1686, 1675, 1, 0, 0, 0, 1686, 1676, 1, 0, 0, 0, 1686, 1681, 1, 0, 0, 0, 1687, 77, 1, 0, 0, 0, 1688, 1690, 7, 18, 0, 0, 1689, 1688, 1, 0, 0, 0, 1689, 1690, 1, 0, 0, 0, 1690, 1691, 1, 0, 0, 0, 1691, 1692, 3, 706, 353, 0, 1692, 1693, 3, 726, 363, 0, 1693, 79, 1, 0, 0, 0, 1694, 1695, 3, 706, 353, 0, 1695, 1696, 3, 726, 363, 0, 1696, 81, 1, 0, 0, 0, 1697, 1698, 5, 340, 0, 0, 1698, 1721, 5, 882, 0, 0, 1699, 1700, 5, 444, 0, 0, 1700, 1721, 5, 162, 0, 0, 1701, 1703, 5, 114, 0, 0, 1702, 1701, 1, 0, 0, 0, 1702, 1703, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1721, 5, 47, 0, 0, 1705, 1706, 5, 354, 0, 0, 1706, 1716, 5, 162, 0, 0, 1707, 1708, 5, 502, 0, 0, 1708, 1716, 5, 162, 0, 0, 1709, 1710, 5, 136, 0, 0, 1710, 1711, 5, 162, 0, 0, 1711, 1716, 5, 360, 0, 0, 1712, 1713, 5, 112, 0, 0, 1713, 1714, 5, 162, 0, 0, 1714, 1716, 5, 360, 0, 0, 1715, 1705, 1, 0, 0, 0, 1715, 1707, 1, 0, 0, 0, 1715, 1709, 1, 0, 0, 0, 1715, 1712, 1, 0, 0, 0, 1716, 1721, 1, 0, 0, 0, 1717, 1718, 5, 162, 0, 0, 1718, 1719, 5, 591, 0, 0, 1719, 1721, 7, 12, 0, 0, 1720, 1697, 1, 0, 0, 0, 1720, 1699, 1, 0, 0, 0, 1720, 1702, 1, 0, 0, 0, 1720, 1715, 1, 0, 0, 0, 1720, 1717, 1, 0, 0, 0, 1721, 83, 1, 0, 0, 0, 1722, 1723, 5, 421, 0, 0, 1723, 1737, 5, 882, 0, 0, 1724, 1725, 5, 39, 0, 0, 1725, 1737, 5, 882, 0, 0, 1726, 1727, 5, 678, 0, 0, 1727, 1737, 5, 882, 0, 0, 1728, 1729, 5, 529, 0, 0, 1729, 1737, 5, 882, 0, 0, 1730, 1731, 5, 601, 0, 0, 1731, 1737, 5, 882, 0, 0, 1732, 1733, 5, 519, 0, 0, 1733, 1737, 5, 882, 0, 0, 1734, 1735, 5, 537, 0, 0, 1735, 1737, 3, 712, 356, 0, 1736, 1722, 1, 0, 0, 0, 1736, 1724, 1, 0, 0, 0, 1736, 1726, 1, 0, 0, 0, 1736, 1728, 1, 0, 0, 0, 1736, 1730, 1, 0, 0, 0, 1736, 1732, 1, 0, 0, 0, 1736, 1734, 1, 0, 0, 0, 1737, 85, 1, 0, 0, 0, 1738, 1739, 5, 866, 0, 0, 1739, 1744, 3, 88, 44, 0, 1740, 1741, 5, 868, 0, 0, 1741, 1743, 3, 88, 44, 0, 1742, 1740, 1, 0, 0, 0, 1743, 1746, 1, 0, 0, 0, 1744, 1742, 1, 0, 0, 0, 1744, 1745, 1, 0, 0, 0, 1745, 1747, 1, 0, 0, 0, 1746, 1744, 1, 0, 0, 0, 1747, 1748, 5, 867, 0, 0, 1748, 87, 1, 0, 0, 0, 1749, 1750, 3, 658, 329, 0, 1750, 1751, 3, 94, 47, 0, 1751, 1833, 1, 0, 0, 0, 1752, 1754, 7, 19, 0, 0, 1753, 1755, 3, 642, 321, 0, 1754, 1753, 1, 0, 0, 0, 1754, 1755, 1, 0, 0, 0, 1755, 1757, 1, 0, 0, 0, 1756, 1758, 3, 74, 37, 0, 1757, 1756, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1759, 1, 0, 0, 0, 1759, 1763, 3, 738, 369, 0, 1760, 1762, 3, 76, 38, 0, 1761, 1760, 1, 0, 0, 0, 1762, 1765, 1, 0, 0, 0, 1763, 1761, 1, 0, 0, 0, 1763, 1764, 1, 0, 0, 0, 1764, 1833, 1, 0, 0, 0, 1765, 1763, 1, 0, 0, 0, 1766, 1768, 7, 20, 0, 0, 1767, 1769, 7, 19, 0, 0, 1768, 1767, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1771, 1, 0, 0, 0, 1770, 1772, 3, 642, 321, 0, 1771, 1770, 1, 0, 0, 0, 1771, 1772, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 1777, 3, 738, 369, 0, 1774, 1776, 3, 76, 38, 0, 1775, 1774, 1, 0, 0, 0, 1776, 1779, 1, 0, 0, 0, 1777, 1775, 1, 0, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1833, 1, 0, 0, 0, 1779, 1777, 1, 0, 0, 0, 1780, 1782, 3, 92, 46, 0, 1781, 1780, 1, 0, 0, 0, 1781, 1782, 1, 0, 0, 0, 1782, 1783, 1, 0, 0, 0, 1783, 1784, 5, 131, 0, 0, 1784, 1786, 5, 92, 0, 0, 1785, 1787, 3, 74, 37, 0, 1786, 1785, 1, 0, 0, 0, 1786, 1787, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1792, 3, 738, 369, 0, 1789, 1791, 3, 76, 38, 0, 1790, 1789, 1, 0, 0, 0, 1791, 1794, 1, 0, 0, 0, 1792, 1790, 1, 0, 0, 0, 1792, 1793, 1, 0, 0, 0, 1793, 1833, 1, 0, 0, 0, 1794, 1792, 1, 0, 0, 0, 1795, 1797, 3, 92, 46, 0, 1796, 1795, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1800, 5, 182, 0, 0, 1799, 1801, 7, 19, 0, 0, 1800, 1799, 1, 0, 0, 0, 1800, 1801, 1, 0, 0, 0, 1801, 1803, 1, 0, 0, 0, 1802, 1804, 3, 642, 321, 0, 1803, 1802, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1806, 1, 0, 0, 0, 1805, 1807, 3, 74, 37, 0, 1806, 1805, 1, 0, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 1808, 1, 0, 0, 0, 1808, 1812, 3, 738, 369, 0, 1809, 1811, 3, 76, 38, 0, 1810, 1809, 1, 0, 0, 0, 1811, 1814, 1, 0, 0, 0, 1812, 1810, 1, 0, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1833, 1, 0, 0, 0, 1814, 1812, 1, 0, 0, 0, 1815, 1817, 3, 92, 46, 0, 1816, 1815, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1819, 5, 67, 0, 0, 1819, 1821, 5, 92, 0, 0, 1820, 1822, 3, 642, 321, 0, 1821, 1820, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, 0, 1822, 1823, 1, 0, 0, 0, 1823, 1824, 3, 738, 369, 0, 1824, 1825, 3, 98, 49, 0, 1825, 1833, 1, 0, 0, 0, 1826, 1827, 5, 27, 0, 0, 1827, 1828, 5, 866, 0, 0, 1828, 1829, 3, 804, 402, 0, 1829, 1830, 5, 867, 0, 0, 1830, 1833, 1, 0, 0, 0, 1831, 1833, 3, 90, 45, 0, 1832, 1749, 1, 0, 0, 0, 1832, 1752, 1, 0, 0, 0, 1832, 1766, 1, 0, 0, 0, 1832, 1781, 1, 0, 0, 0, 1832, 1796, 1, 0, 0, 0, 1832, 1816, 1, 0, 0, 0, 1832, 1826, 1, 0, 0, 0, 1832, 1831, 1, 0, 0, 0, 1833, 89, 1, 0, 0, 0, 1834, 1836, 3, 92, 46, 0, 1835, 1834, 1, 0, 0, 0, 1835, 1836, 1, 0, 0, 0, 1836, 1837, 1, 0, 0, 0, 1837, 1838, 5, 27, 0, 0, 1838, 1839, 5, 866, 0, 0, 1839, 1840, 3, 804, 402, 0, 1840, 1845, 5, 867, 0, 0, 1841, 1843, 5, 114, 0, 0, 1842, 1841, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1846, 5, 57, 0, 0, 1845, 1842, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 91, 1, 0, 0, 0, 1847, 1849, 5, 31, 0, 0, 1848, 1850, 3, 706, 353, 0, 1849, 1848, 1, 0, 0, 0, 1849, 1850, 1, 0, 0, 0, 1850, 93, 1, 0, 0, 0, 1851, 1855, 3, 726, 363, 0, 1852, 1854, 3, 96, 48, 0, 1853, 1852, 1, 0, 0, 0, 1854, 1857, 1, 0, 0, 0, 1855, 1853, 1, 0, 0, 0, 1855, 1856, 1, 0, 0, 0, 1856, 95, 1, 0, 0, 0, 1857, 1855, 1, 0, 0, 0, 1858, 1902, 3, 722, 361, 0, 1859, 1860, 5, 42, 0, 0, 1860, 1902, 3, 754, 377, 0, 1861, 1902, 5, 686, 0, 0, 1862, 1902, 5, 435, 0, 0, 1863, 1868, 5, 315, 0, 0, 1864, 1865, 5, 119, 0, 0, 1865, 1866, 5, 185, 0, 0, 1866, 1868, 3, 756, 378, 0, 1867, 1863, 1, 0, 0, 0, 1867, 1864, 1, 0, 0, 0, 1868, 1902, 1, 0, 0, 0, 1869, 1871, 5, 131, 0, 0, 1870, 1869, 1, 0, 0, 0, 1870, 1871, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1902, 5, 92, 0, 0, 1873, 1875, 5, 182, 0, 0, 1874, 1876, 5, 92, 0, 0, 1875, 1874, 1, 0, 0, 0, 1875, 1876, 1, 0, 0, 0, 1876, 1902, 1, 0, 0, 0, 1877, 1878, 5, 340, 0, 0, 1878, 1902, 5, 882, 0, 0, 1879, 1880, 5, 338, 0, 0, 1880, 1902, 7, 21, 0, 0, 1881, 1882, 5, 647, 0, 0, 1882, 1902, 7, 22, 0, 0, 1883, 1902, 3, 98, 49, 0, 1884, 1885, 5, 28, 0, 0, 1885, 1902, 3, 690, 345, 0, 1886, 1887, 5, 71, 0, 0, 1887, 1889, 5, 9, 0, 0, 1888, 1886, 1, 0, 0, 0, 1888, 1889, 1, 0, 0, 0, 1889, 1890, 1, 0, 0, 0, 1890, 1891, 5, 13, 0, 0, 1891, 1892, 5, 866, 0, 0, 1892, 1893, 3, 804, 402, 0, 1893, 1895, 5, 867, 0, 0, 1894, 1896, 7, 23, 0, 0, 1895, 1894, 1, 0, 0, 0, 1895, 1896, 1, 0, 0, 0, 1896, 1902, 1, 0, 0, 0, 1897, 1898, 5, 241, 0, 0, 1898, 1899, 5, 42, 0, 0, 1899, 1902, 5, 682, 0, 0, 1900, 1902, 3, 90, 45, 0, 1901, 1858, 1, 0, 0, 0, 1901, 1859, 1, 0, 0, 0, 1901, 1861, 1, 0, 0, 0, 1901, 1862, 1, 0, 0, 0, 1901, 1867, 1, 0, 0, 0, 1901, 1870, 1, 0, 0, 0, 1901, 1873, 1, 0, 0, 0, 1901, 1877, 1, 0, 0, 0, 1901, 1879, 1, 0, 0, 0, 1901, 1881, 1, 0, 0, 0, 1901, 1883, 1, 0, 0, 0, 1901, 1884, 1, 0, 0, 0, 1901, 1888, 1, 0, 0, 0, 1901, 1897, 1, 0, 0, 0, 1901, 1900, 1, 0, 0, 0, 1902, 97, 1, 0, 0, 0, 1903, 1904, 5, 138, 0, 0, 1904, 1906, 3, 652, 326, 0, 1905, 1907, 3, 738, 369, 0, 1906, 1905, 1, 0, 0, 0, 1906, 1907, 1, 0, 0, 0, 1907, 1910, 1, 0, 0, 0, 1908, 1909, 5, 110, 0, 0, 1909, 1911, 7, 24, 0, 0, 1910, 1908, 1, 0, 0, 0, 1910, 1911, 1, 0, 0, 0, 1911, 1913, 1, 0, 0, 0, 1912, 1914, 3, 100, 50, 0, 1913, 1912, 1, 0, 0, 0, 1913, 1914, 1, 0, 0, 0, 1914, 99, 1, 0, 0, 0, 1915, 1916, 5, 119, 0, 0, 1916, 1917, 5, 44, 0, 0, 1917, 1921, 3, 102, 51, 0, 1918, 1919, 5, 119, 0, 0, 1919, 1920, 5, 185, 0, 0, 1920, 1922, 3, 102, 51, 0, 1921, 1918, 1, 0, 0, 0, 1921, 1922, 1, 0, 0, 0, 1922, 1932, 1, 0, 0, 0, 1923, 1924, 5, 119, 0, 0, 1924, 1925, 5, 185, 0, 0, 1925, 1929, 3, 102, 51, 0, 1926, 1927, 5, 119, 0, 0, 1927, 1928, 5, 44, 0, 0, 1928, 1930, 3, 102, 51, 0, 1929, 1926, 1, 0, 0, 0, 1929, 1930, 1, 0, 0, 0, 1930, 1932, 1, 0, 0, 0, 1931, 1915, 1, 0, 0, 0, 1931, 1923, 1, 0, 0, 0, 1932, 101, 1, 0, 0, 0, 1933, 1942, 5, 146, 0, 0, 1934, 1942, 5, 22, 0, 0, 1935, 1936, 5, 155, 0, 0, 1936, 1942, 5, 116, 0, 0, 1937, 1938, 5, 502, 0, 0, 1938, 1942, 5, 305, 0, 0, 1939, 1940, 5, 155, 0, 0, 1940, 1942, 5, 42, 0, 0, 1941, 1933, 1, 0, 0, 0, 1941, 1934, 1, 0, 0, 0, 1941, 1935, 1, 0, 0, 0, 1941, 1937, 1, 0, 0, 0, 1941, 1939, 1, 0, 0, 0, 1942, 103, 1, 0, 0, 0, 1943, 1945, 5, 380, 0, 0, 1944, 1946, 5, 857, 0, 0, 1945, 1944, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1948, 1, 0, 0, 0, 1947, 1949, 3, 692, 346, 0, 1948, 1947, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 2129, 1, 0, 0, 0, 1950, 1952, 5, 825, 0, 0, 1951, 1953, 5, 857, 0, 0, 1952, 1951, 1, 0, 0, 0, 1952, 1953, 1, 0, 0, 0, 1953, 1954, 1, 0, 0, 0, 1954, 2129, 5, 882, 0, 0, 1955, 1957, 5, 314, 0, 0, 1956, 1958, 5, 857, 0, 0, 1957, 1956, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 2129, 3, 712, 356, 0, 1960, 1962, 5, 315, 0, 0, 1961, 1963, 5, 857, 0, 0, 1962, 1961, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 2129, 3, 712, 356, 0, 1965, 1967, 5, 316, 0, 0, 1966, 1968, 5, 857, 0, 0, 1967, 1966, 1, 0, 0, 0, 1967, 1968, 1, 0, 0, 0, 1968, 1969, 1, 0, 0, 0, 1969, 2129, 3, 712, 356, 0, 1970, 1972, 5, 42, 0, 0, 1971, 1970, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1975, 3, 58, 29, 0, 1974, 1976, 5, 857, 0, 0, 1975, 1974, 1, 0, 0, 0, 1975, 1976, 1, 0, 0, 0, 1976, 1979, 1, 0, 0, 0, 1977, 1980, 3, 688, 344, 0, 1978, 1980, 5, 42, 0, 0, 1979, 1977, 1, 0, 0, 0, 1979, 1978, 1, 0, 0, 0, 1980, 2129, 1, 0, 0, 0, 1981, 1983, 7, 25, 0, 0, 1982, 1984, 5, 857, 0, 0, 1983, 1982, 1, 0, 0, 0, 1983, 1984, 1, 0, 0, 0, 1984, 1985, 1, 0, 0, 0, 1985, 2129, 7, 26, 0, 0, 1986, 1988, 5, 42, 0, 0, 1987, 1986, 1, 0, 0, 0, 1987, 1988, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1991, 5, 28, 0, 0, 1990, 1992, 5, 857, 0, 0, 1991, 1990, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 2129, 3, 690, 345, 0, 1994, 1996, 5, 340, 0, 0, 1995, 1997, 5, 857, 0, 0, 1996, 1995, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 2129, 5, 882, 0, 0, 1999, 2001, 5, 346, 0, 0, 2000, 2002, 5, 857, 0, 0, 2001, 2000, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2003, 1, 0, 0, 0, 2003, 2129, 7, 27, 0, 0, 2004, 2006, 5, 349, 0, 0, 2005, 2007, 5, 857, 0, 0, 2006, 2005, 1, 0, 0, 0, 2006, 2007, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2129, 5, 882, 0, 0, 2009, 2010, 7, 28, 0, 0, 2010, 2012, 5, 367, 0, 0, 2011, 2013, 5, 857, 0, 0, 2012, 2011, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2014, 1, 0, 0, 0, 2014, 2129, 5, 882, 0, 0, 2015, 2017, 5, 365, 0, 0, 2016, 2018, 5, 857, 0, 0, 2017, 2016, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2019, 1, 0, 0, 0, 2019, 2129, 7, 26, 0, 0, 2020, 2022, 5, 376, 0, 0, 2021, 2023, 5, 857, 0, 0, 2022, 2021, 1, 0, 0, 0, 2022, 2023, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2129, 5, 882, 0, 0, 2025, 2027, 7, 29, 0, 0, 2026, 2028, 5, 857, 0, 0, 2027, 2026, 1, 0, 0, 0, 2027, 2028, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 2129, 7, 26, 0, 0, 2030, 2032, 7, 30, 0, 0, 2031, 2033, 5, 857, 0, 0, 2032, 2031, 1, 0, 0, 0, 2032, 2033, 1, 0, 0, 0, 2033, 2034, 1, 0, 0, 0, 2034, 2129, 3, 712, 356, 0, 2035, 2037, 5, 377, 0, 0, 2036, 2038, 5, 857, 0, 0, 2037, 2036, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 2129, 3, 712, 356, 0, 2040, 2041, 5, 82, 0, 0, 2041, 2043, 5, 367, 0, 0, 2042, 2044, 5, 857, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2129, 5, 882, 0, 0, 2046, 2048, 5, 431, 0, 0, 2047, 2049, 5, 857, 0, 0, 2048, 2047, 1, 0, 0, 0, 2048, 2049, 1, 0, 0, 0, 2049, 2050, 1, 0, 0, 0, 2050, 2129, 7, 31, 0, 0, 2051, 2053, 5, 443, 0, 0, 2052, 2054, 5, 857, 0, 0, 2053, 2052, 1, 0, 0, 0, 2053, 2054, 1, 0, 0, 0, 2054, 2055, 1, 0, 0, 0, 2055, 2129, 3, 714, 357, 0, 2056, 2058, 5, 480, 0, 0, 2057, 2059, 5, 857, 0, 0, 2058, 2057, 1, 0, 0, 0, 2058, 2059, 1, 0, 0, 0, 2059, 2060, 1, 0, 0, 0, 2060, 2129, 3, 712, 356, 0, 2061, 2063, 5, 490, 0, 0, 2062, 2064, 5, 857, 0, 0, 2063, 2062, 1, 0, 0, 0, 2063, 2064, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2129, 3, 712, 356, 0, 2066, 2068, 5, 520, 0, 0, 2067, 2069, 5, 857, 0, 0, 2068, 2067, 1, 0, 0, 0, 2068, 2069, 1, 0, 0, 0, 2069, 2070, 1, 0, 0, 0, 2070, 2129, 7, 14, 0, 0, 2071, 2073, 5, 529, 0, 0, 2072, 2074, 5, 857, 0, 0, 2073, 2072, 1, 0, 0, 0, 2073, 2074, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2129, 5, 882, 0, 0, 2076, 2078, 5, 588, 0, 0, 2077, 2079, 5, 857, 0, 0, 2078, 2077, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 2080, 1, 0, 0, 0, 2080, 2129, 7, 32, 0, 0, 2081, 2082, 5, 640, 0, 0, 2082, 2129, 5, 664, 0, 0, 2083, 2085, 5, 833, 0, 0, 2084, 2086, 5, 857, 0, 0, 2085, 2084, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2087, 1, 0, 0, 0, 2087, 2129, 5, 882, 0, 0, 2088, 2090, 5, 642, 0, 0, 2089, 2091, 5, 857, 0, 0, 2090, 2089, 1, 0, 0, 0, 2090, 2091, 1, 0, 0, 0, 2091, 2092, 1, 0, 0, 0, 2092, 2129, 7, 14, 0, 0, 2093, 2095, 5, 643, 0, 0, 2094, 2096, 5, 857, 0, 0, 2095, 2094, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 2097, 1, 0, 0, 0, 2097, 2129, 7, 14, 0, 0, 2098, 2100, 5, 644, 0, 0, 2099, 2101, 5, 857, 0, 0, 2100, 2099, 1, 0, 0, 0, 2100, 2101, 1, 0, 0, 0, 2101, 2104, 1, 0, 0, 0, 2102, 2105, 5, 42, 0, 0, 2103, 2105, 3, 712, 356, 0, 2104, 2102, 1, 0, 0, 0, 2104, 2103, 1, 0, 0, 0, 2105, 2129, 1, 0, 0, 0, 2106, 2107, 5, 658, 0, 0, 2107, 2109, 3, 666, 333, 0, 2108, 2110, 3, 108, 54, 0, 2109, 2108, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2129, 1, 0, 0, 0, 2111, 2112, 5, 659, 0, 0, 2112, 2113, 5, 857, 0, 0, 2113, 2129, 3, 106, 53, 0, 2114, 2129, 3, 108, 54, 0, 2115, 2117, 5, 665, 0, 0, 2116, 2118, 5, 857, 0, 0, 2117, 2116, 1, 0, 0, 0, 2117, 2118, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2129, 7, 26, 0, 0, 2120, 2122, 5, 181, 0, 0, 2121, 2123, 5, 857, 0, 0, 2122, 2121, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2124, 1, 0, 0, 0, 2124, 2125, 5, 866, 0, 0, 2125, 2126, 3, 650, 325, 0, 2126, 2127, 5, 867, 0, 0, 2127, 2129, 1, 0, 0, 0, 2128, 1943, 1, 0, 0, 0, 2128, 1950, 1, 0, 0, 0, 2128, 1955, 1, 0, 0, 0, 2128, 1960, 1, 0, 0, 0, 2128, 1965, 1, 0, 0, 0, 2128, 1971, 1, 0, 0, 0, 2128, 1981, 1, 0, 0, 0, 2128, 1987, 1, 0, 0, 0, 2128, 1994, 1, 0, 0, 0, 2128, 1999, 1, 0, 0, 0, 2128, 2004, 1, 0, 0, 0, 2128, 2009, 1, 0, 0, 0, 2128, 2015, 1, 0, 0, 0, 2128, 2020, 1, 0, 0, 0, 2128, 2025, 1, 0, 0, 0, 2128, 2030, 1, 0, 0, 0, 2128, 2035, 1, 0, 0, 0, 2128, 2040, 1, 0, 0, 0, 2128, 2046, 1, 0, 0, 0, 2128, 2051, 1, 0, 0, 0, 2128, 2056, 1, 0, 0, 0, 2128, 2061, 1, 0, 0, 0, 2128, 2066, 1, 0, 0, 0, 2128, 2071, 1, 0, 0, 0, 2128, 2076, 1, 0, 0, 0, 2128, 2081, 1, 0, 0, 0, 2128, 2083, 1, 0, 0, 0, 2128, 2088, 1, 0, 0, 0, 2128, 2093, 1, 0, 0, 0, 2128, 2098, 1, 0, 0, 0, 2128, 2106, 1, 0, 0, 0, 2128, 2111, 1, 0, 0, 0, 2128, 2114, 1, 0, 0, 0, 2128, 2115, 1, 0, 0, 0, 2128, 2120, 1, 0, 0, 0, 2129, 105, 1, 0, 0, 0, 2130, 2131, 7, 33, 0, 0, 2131, 107, 1, 0, 0, 0, 2132, 2133, 5, 647, 0, 0, 2133, 2134, 7, 22, 0, 0, 2134, 109, 1, 0, 0, 0, 2135, 2136, 5, 130, 0, 0, 2136, 2137, 5, 20, 0, 0, 2137, 2140, 3, 112, 56, 0, 2138, 2139, 5, 528, 0, 0, 2139, 2141, 3, 712, 356, 0, 2140, 2138, 1, 0, 0, 0, 2140, 2141, 1, 0, 0, 0, 2141, 2149, 1, 0, 0, 0, 2142, 2143, 5, 652, 0, 0, 2143, 2144, 5, 20, 0, 0, 2144, 2147, 3, 114, 57, 0, 2145, 2146, 5, 653, 0, 0, 2146, 2148, 3, 712, 356, 0, 2147, 2145, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2150, 1, 0, 0, 0, 2149, 2142, 1, 0, 0, 0, 2149, 2150, 1, 0, 0, 0, 2150, 2162, 1, 0, 0, 0, 2151, 2152, 5, 866, 0, 0, 2152, 2157, 3, 116, 58, 0, 2153, 2154, 5, 868, 0, 0, 2154, 2156, 3, 116, 58, 0, 2155, 2153, 1, 0, 0, 0, 2156, 2159, 1, 0, 0, 0, 2157, 2155, 1, 0, 0, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2160, 1, 0, 0, 0, 2159, 2157, 1, 0, 0, 0, 2160, 2161, 5, 867, 0, 0, 2161, 2163, 1, 0, 0, 0, 2162, 2151, 1, 0, 0, 0, 2162, 2163, 1, 0, 0, 0, 2163, 111, 1, 0, 0, 0, 2164, 2166, 5, 101, 0, 0, 2165, 2164, 1, 0, 0, 0, 2165, 2166, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2168, 5, 418, 0, 0, 2168, 2169, 5, 866, 0, 0, 2169, 2170, 3, 804, 402, 0, 2170, 2171, 5, 867, 0, 0, 2171, 2211, 1, 0, 0, 0, 2172, 2174, 5, 101, 0, 0, 2173, 2172, 1, 0, 0, 0, 2173, 2174, 1, 0, 0, 0, 2174, 2175, 1, 0, 0, 0, 2175, 2179, 5, 92, 0, 0, 2176, 2177, 5, 308, 0, 0, 2177, 2178, 5, 857, 0, 0, 2178, 2180, 7, 34, 0, 0, 2179, 2176, 1, 0, 0, 0, 2179, 2180, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2183, 5, 866, 0, 0, 2182, 2184, 3, 660, 330, 0, 2183, 2182, 1, 0, 0, 0, 2183, 2184, 1, 0, 0, 0, 2184, 2185, 1, 0, 0, 0, 2185, 2211, 5, 867, 0, 0, 2186, 2196, 5, 134, 0, 0, 2187, 2188, 5, 866, 0, 0, 2188, 2189, 3, 804, 402, 0, 2189, 2190, 5, 867, 0, 0, 2190, 2197, 1, 0, 0, 0, 2191, 2192, 5, 337, 0, 0, 2192, 2193, 5, 866, 0, 0, 2193, 2194, 3, 660, 330, 0, 2194, 2195, 5, 867, 0, 0, 2195, 2197, 1, 0, 0, 0, 2196, 2187, 1, 0, 0, 0, 2196, 2191, 1, 0, 0, 0, 2197, 2211, 1, 0, 0, 0, 2198, 2208, 5, 449, 0, 0, 2199, 2200, 5, 866, 0, 0, 2200, 2201, 3, 804, 402, 0, 2201, 2202, 5, 867, 0, 0, 2202, 2209, 1, 0, 0, 0, 2203, 2204, 5, 337, 0, 0, 2204, 2205, 5, 866, 0, 0, 2205, 2206, 3, 660, 330, 0, 2206, 2207, 5, 867, 0, 0, 2207, 2209, 1, 0, 0, 0, 2208, 2199, 1, 0, 0, 0, 2208, 2203, 1, 0, 0, 0, 2209, 2211, 1, 0, 0, 0, 2210, 2165, 1, 0, 0, 0, 2210, 2173, 1, 0, 0, 0, 2210, 2186, 1, 0, 0, 0, 2210, 2198, 1, 0, 0, 0, 2211, 113, 1, 0, 0, 0, 2212, 2214, 5, 101, 0, 0, 2213, 2212, 1, 0, 0, 0, 2213, 2214, 1, 0, 0, 0, 2214, 2215, 1, 0, 0, 0, 2215, 2216, 5, 418, 0, 0, 2216, 2217, 5, 866, 0, 0, 2217, 2218, 3, 804, 402, 0, 2218, 2219, 5, 867, 0, 0, 2219, 2234, 1, 0, 0, 0, 2220, 2222, 5, 101, 0, 0, 2221, 2220, 1, 0, 0, 0, 2221, 2222, 1, 0, 0, 0, 2222, 2223, 1, 0, 0, 0, 2223, 2227, 5, 92, 0, 0, 2224, 2225, 5, 308, 0, 0, 2225, 2226, 5, 857, 0, 0, 2226, 2228, 7, 34, 0, 0, 2227, 2224, 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2230, 5, 866, 0, 0, 2230, 2231, 3, 660, 330, 0, 2231, 2232, 5, 867, 0, 0, 2232, 2234, 1, 0, 0, 0, 2233, 2213, 1, 0, 0, 0, 2233, 2221, 1, 0, 0, 0, 2234, 115, 1, 0, 0, 0, 2235, 2236, 5, 130, 0, 0, 2236, 2237, 3, 672, 336, 0, 2237, 2238, 5, 189, 0, 0, 2238, 2239, 5, 447, 0, 0, 2239, 2240, 5, 662, 0, 0, 2240, 2241, 5, 866, 0, 0, 2241, 2246, 3, 118, 59, 0, 2242, 2243, 5, 868, 0, 0, 2243, 2245, 3, 118, 59, 0, 2244, 2242, 1, 0, 0, 0, 2245, 2248, 1, 0, 0, 0, 2246, 2244, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2249, 1, 0, 0, 0, 2248, 2246, 1, 0, 0, 0, 2249, 2253, 5, 867, 0, 0, 2250, 2252, 3, 124, 62, 0, 2251, 2250, 1, 0, 0, 0, 2252, 2255, 1, 0, 0, 0, 2253, 2251, 1, 0, 0, 0, 2253, 2254, 1, 0, 0, 0, 2254, 2267, 1, 0, 0, 0, 2255, 2253, 1, 0, 0, 0, 2256, 2257, 5, 866, 0, 0, 2257, 2262, 3, 122, 61, 0, 2258, 2259, 5, 868, 0, 0, 2259, 2261, 3, 122, 61, 0, 2260, 2258, 1, 0, 0, 0, 2261, 2264, 1, 0, 0, 0, 2262, 2260, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 2265, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2265, 2266, 5, 867, 0, 0, 2266, 2268, 1, 0, 0, 0, 2267, 2256, 1, 0, 0, 0, 2267, 2268, 1, 0, 0, 0, 2268, 2382, 1, 0, 0, 0, 2269, 2270, 5, 130, 0, 0, 2270, 2271, 3, 672, 336, 0, 2271, 2272, 5, 189, 0, 0, 2272, 2273, 5, 447, 0, 0, 2273, 2274, 5, 662, 0, 0, 2274, 2278, 3, 118, 59, 0, 2275, 2277, 3, 124, 62, 0, 2276, 2275, 1, 0, 0, 0, 2277, 2280, 1, 0, 0, 0, 2278, 2276, 1, 0, 0, 0, 2278, 2279, 1, 0, 0, 0, 2279, 2292, 1, 0, 0, 0, 2280, 2278, 1, 0, 0, 0, 2281, 2282, 5, 866, 0, 0, 2282, 2287, 3, 122, 61, 0, 2283, 2284, 5, 868, 0, 0, 2284, 2286, 3, 122, 61, 0, 2285, 2283, 1, 0, 0, 0, 2286, 2289, 1, 0, 0, 0, 2287, 2285, 1, 0, 0, 0, 2287, 2288, 1, 0, 0, 0, 2288, 2290, 1, 0, 0, 0, 2289, 2287, 1, 0, 0, 0, 2290, 2291, 5, 867, 0, 0, 2291, 2293, 1, 0, 0, 0, 2292, 2281, 1, 0, 0, 0, 2292, 2293, 1, 0, 0, 0, 2293, 2382, 1, 0, 0, 0, 2294, 2295, 5, 130, 0, 0, 2295, 2296, 3, 672, 336, 0, 2296, 2297, 5, 189, 0, 0, 2297, 2298, 5, 80, 0, 0, 2298, 2299, 5, 866, 0, 0, 2299, 2304, 3, 118, 59, 0, 2300, 2301, 5, 868, 0, 0, 2301, 2303, 3, 118, 59, 0, 2302, 2300, 1, 0, 0, 0, 2303, 2306, 1, 0, 0, 0, 2304, 2302, 1, 0, 0, 0, 2304, 2305, 1, 0, 0, 0, 2305, 2307, 1, 0, 0, 0, 2306, 2304, 1, 0, 0, 0, 2307, 2311, 5, 867, 0, 0, 2308, 2310, 3, 124, 62, 0, 2309, 2308, 1, 0, 0, 0, 2310, 2313, 1, 0, 0, 0, 2311, 2309, 1, 0, 0, 0, 2311, 2312, 1, 0, 0, 0, 2312, 2325, 1, 0, 0, 0, 2313, 2311, 1, 0, 0, 0, 2314, 2315, 5, 866, 0, 0, 2315, 2320, 3, 122, 61, 0, 2316, 2317, 5, 868, 0, 0, 2317, 2319, 3, 122, 61, 0, 2318, 2316, 1, 0, 0, 0, 2319, 2322, 1, 0, 0, 0, 2320, 2318, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2323, 1, 0, 0, 0, 2322, 2320, 1, 0, 0, 0, 2323, 2324, 5, 867, 0, 0, 2324, 2326, 1, 0, 0, 0, 2325, 2314, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2382, 1, 0, 0, 0, 2327, 2328, 5, 130, 0, 0, 2328, 2329, 3, 672, 336, 0, 2329, 2330, 5, 189, 0, 0, 2330, 2331, 5, 80, 0, 0, 2331, 2332, 5, 866, 0, 0, 2332, 2337, 3, 120, 60, 0, 2333, 2334, 5, 868, 0, 0, 2334, 2336, 3, 120, 60, 0, 2335, 2333, 1, 0, 0, 0, 2336, 2339, 1, 0, 0, 0, 2337, 2335, 1, 0, 0, 0, 2337, 2338, 1, 0, 0, 0, 2338, 2340, 1, 0, 0, 0, 2339, 2337, 1, 0, 0, 0, 2340, 2344, 5, 867, 0, 0, 2341, 2343, 3, 124, 62, 0, 2342, 2341, 1, 0, 0, 0, 2343, 2346, 1, 0, 0, 0, 2344, 2342, 1, 0, 0, 0, 2344, 2345, 1, 0, 0, 0, 2345, 2358, 1, 0, 0, 0, 2346, 2344, 1, 0, 0, 0, 2347, 2348, 5, 866, 0, 0, 2348, 2353, 3, 122, 61, 0, 2349, 2350, 5, 868, 0, 0, 2350, 2352, 3, 122, 61, 0, 2351, 2349, 1, 0, 0, 0, 2352, 2355, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2356, 1, 0, 0, 0, 2355, 2353, 1, 0, 0, 0, 2356, 2357, 5, 867, 0, 0, 2357, 2359, 1, 0, 0, 0, 2358, 2347, 1, 0, 0, 0, 2358, 2359, 1, 0, 0, 0, 2359, 2382, 1, 0, 0, 0, 2360, 2361, 5, 130, 0, 0, 2361, 2365, 3, 672, 336, 0, 2362, 2364, 3, 124, 62, 0, 2363, 2362, 1, 0, 0, 0, 2364, 2367, 1, 0, 0, 0, 2365, 2363, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2379, 1, 0, 0, 0, 2367, 2365, 1, 0, 0, 0, 2368, 2369, 5, 866, 0, 0, 2369, 2374, 3, 122, 61, 0, 2370, 2371, 5, 868, 0, 0, 2371, 2373, 3, 122, 61, 0, 2372, 2370, 1, 0, 0, 0, 2373, 2376, 1, 0, 0, 0, 2374, 2372, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2377, 1, 0, 0, 0, 2376, 2374, 1, 0, 0, 0, 2377, 2378, 5, 867, 0, 0, 2378, 2380, 1, 0, 0, 0, 2379, 2368, 1, 0, 0, 0, 2379, 2380, 1, 0, 0, 0, 2380, 2382, 1, 0, 0, 0, 2381, 2235, 1, 0, 0, 0, 2381, 2269, 1, 0, 0, 0, 2381, 2294, 1, 0, 0, 0, 2381, 2327, 1, 0, 0, 0, 2381, 2360, 1, 0, 0, 0, 2382, 117, 1, 0, 0, 0, 2383, 2387, 3, 724, 362, 0, 2384, 2387, 3, 804, 402, 0, 2385, 2387, 5, 111, 0, 0, 2386, 2383, 1, 0, 0, 0, 2386, 2384, 1, 0, 0, 0, 2386, 2385, 1, 0, 0, 0, 2387, 119, 1, 0, 0, 0, 2388, 2389, 5, 866, 0, 0, 2389, 2392, 3, 118, 59, 0, 2390, 2391, 5, 868, 0, 0, 2391, 2393, 3, 118, 59, 0, 2392, 2390, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2392, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, 2397, 5, 867, 0, 0, 2397, 121, 1, 0, 0, 0, 2398, 2399, 5, 652, 0, 0, 2399, 2403, 3, 706, 353, 0, 2400, 2402, 3, 124, 62, 0, 2401, 2400, 1, 0, 0, 0, 2402, 2405, 1, 0, 0, 0, 2403, 2401, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 123, 1, 0, 0, 0, 2405, 2403, 1, 0, 0, 0, 2406, 2408, 5, 42, 0, 0, 2407, 2406, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2410, 1, 0, 0, 0, 2409, 2411, 5, 647, 0, 0, 2410, 2409, 1, 0, 0, 0, 2410, 2411, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2414, 5, 380, 0, 0, 2413, 2415, 5, 857, 0, 0, 2414, 2413, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2416, 1, 0, 0, 0, 2416, 2455, 3, 692, 346, 0, 2417, 2419, 5, 340, 0, 0, 2418, 2420, 5, 857, 0, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2421, 1, 0, 0, 0, 2421, 2455, 5, 882, 0, 0, 2422, 2423, 5, 360, 0, 0, 2423, 2425, 5, 367, 0, 0, 2424, 2426, 5, 857, 0, 0, 2425, 2424, 1, 0, 0, 0, 2425, 2426, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2455, 5, 882, 0, 0, 2428, 2429, 5, 82, 0, 0, 2429, 2431, 5, 367, 0, 0, 2430, 2432, 5, 857, 0, 0, 2431, 2430, 1, 0, 0, 0, 2431, 2432, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2455, 5, 882, 0, 0, 2434, 2436, 5, 480, 0, 0, 2435, 2437, 5, 857, 0, 0, 2436, 2435, 1, 0, 0, 0, 2436, 2437, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2455, 3, 712, 356, 0, 2439, 2441, 5, 490, 0, 0, 2440, 2442, 5, 857, 0, 0, 2441, 2440, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2455, 3, 712, 356, 0, 2444, 2446, 5, 658, 0, 0, 2445, 2447, 5, 857, 0, 0, 2446, 2445, 1, 0, 0, 0, 2446, 2447, 1, 0, 0, 0, 2447, 2448, 1, 0, 0, 0, 2448, 2455, 3, 666, 333, 0, 2449, 2451, 5, 504, 0, 0, 2450, 2452, 5, 857, 0, 0, 2451, 2450, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2453, 1, 0, 0, 0, 2453, 2455, 3, 706, 353, 0, 2454, 2407, 1, 0, 0, 0, 2454, 2417, 1, 0, 0, 0, 2454, 2422, 1, 0, 0, 0, 2454, 2428, 1, 0, 0, 0, 2454, 2434, 1, 0, 0, 0, 2454, 2439, 1, 0, 0, 0, 2454, 2444, 1, 0, 0, 0, 2454, 2449, 1, 0, 0, 0, 2455, 125, 1, 0, 0, 0, 2456, 2457, 5, 8, 0, 0, 2457, 2459, 7, 0, 0, 0, 2458, 2460, 3, 628, 314, 0, 2459, 2458, 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 2462, 1, 0, 0, 0, 2461, 2463, 3, 56, 28, 0, 2462, 2461, 1, 0, 0, 0, 2463, 2464, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2464, 2465, 1, 0, 0, 0, 2465, 2475, 1, 0, 0, 0, 2466, 2467, 5, 8, 0, 0, 2467, 2468, 7, 0, 0, 0, 2468, 2469, 3, 628, 314, 0, 2469, 2470, 5, 677, 0, 0, 2470, 2471, 5, 360, 0, 0, 2471, 2472, 5, 367, 0, 0, 2472, 2473, 5, 496, 0, 0, 2473, 2475, 1, 0, 0, 0, 2474, 2456, 1, 0, 0, 0, 2474, 2466, 1, 0, 0, 0, 2475, 127, 1, 0, 0, 0, 2476, 2478, 5, 8, 0, 0, 2477, 2479, 3, 62, 31, 0, 2478, 2477, 1, 0, 0, 0, 2478, 2479, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2481, 5, 385, 0, 0, 2481, 2485, 3, 702, 351, 0, 2482, 2483, 5, 119, 0, 0, 2483, 2484, 5, 590, 0, 0, 2484, 2486, 3, 64, 32, 0, 2485, 2482, 1, 0, 0, 0, 2485, 2486, 1, 0, 0, 0, 2486, 2493, 1, 0, 0, 0, 2487, 2488, 5, 119, 0, 0, 2488, 2490, 5, 343, 0, 0, 2489, 2491, 5, 114, 0, 0, 2490, 2489, 1, 0, 0, 0, 2490, 2491, 1, 0, 0, 0, 2491, 2492, 1, 0, 0, 0, 2492, 2494, 5, 541, 0, 0, 2493, 2487, 1, 0, 0, 0, 2493, 2494, 1, 0, 0, 0, 2494, 2498, 1, 0, 0, 0, 2495, 2496, 5, 141, 0, 0, 2496, 2497, 5, 176, 0, 0, 2497, 2499, 3, 702, 351, 0, 2498, 2495, 1, 0, 0, 0, 2498, 2499, 1, 0, 0, 0, 2499, 2501, 1, 0, 0, 0, 2500, 2502, 3, 72, 36, 0, 2501, 2500, 1, 0, 0, 0, 2501, 2502, 1, 0, 0, 0, 2502, 2505, 1, 0, 0, 0, 2503, 2504, 5, 340, 0, 0, 2504, 2506, 5, 882, 0, 0, 2505, 2503, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2509, 1, 0, 0, 0, 2507, 2508, 5, 371, 0, 0, 2508, 2510, 3, 422, 211, 0, 2509, 2507, 1, 0, 0, 0, 2509, 2510, 1, 0, 0, 0, 2510, 129, 1, 0, 0, 0, 2511, 2512, 5, 8, 0, 0, 2512, 2513, 5, 409, 0, 0, 2513, 2517, 3, 632, 316, 0, 2514, 2516, 3, 82, 41, 0, 2515, 2514, 1, 0, 0, 0, 2516, 2519, 1, 0, 0, 0, 2517, 2515, 1, 0, 0, 0, 2517, 2518, 1, 0, 0, 0, 2518, 131, 1, 0, 0, 0, 2519, 2517, 1, 0, 0, 0, 2520, 2521, 5, 8, 0, 0, 2521, 2522, 5, 433, 0, 0, 2522, 2523, 5, 585, 0, 0, 2523, 2524, 5, 801, 0, 0, 2524, 2525, 5, 453, 0, 0, 2525, 2526, 5, 92, 0, 0, 2526, 133, 1, 0, 0, 0, 2527, 2528, 5, 8, 0, 0, 2528, 2529, 5, 451, 0, 0, 2529, 2530, 5, 74, 0, 0, 2530, 2531, 3, 706, 353, 0, 2531, 2532, 5, 6, 0, 0, 2532, 2533, 5, 671, 0, 0, 2533, 2539, 5, 882, 0, 0, 2534, 2536, 5, 428, 0, 0, 2535, 2537, 5, 857, 0, 0, 2536, 2535, 1, 0, 0, 0, 2536, 2537, 1, 0, 0, 0, 2537, 2538, 1, 0, 0, 0, 2538, 2540, 3, 714, 357, 0, 2539, 2534, 1, 0, 0, 0, 2539, 2540, 1, 0, 0, 0, 2540, 2542, 1, 0, 0, 0, 2541, 2543, 5, 687, 0, 0, 2542, 2541, 1, 0, 0, 0, 2542, 2543, 1, 0, 0, 0, 2543, 2544, 1, 0, 0, 0, 2544, 2546, 5, 380, 0, 0, 2545, 2547, 5, 857, 0, 0, 2546, 2545, 1, 0, 0, 0, 2546, 2547, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 2549, 3, 692, 346, 0, 2549, 135, 1, 0, 0, 0, 2550, 2551, 5, 8, 0, 0, 2551, 2552, 5, 132, 0, 0, 2552, 2556, 3, 702, 351, 0, 2553, 2555, 3, 82, 41, 0, 2554, 2553, 1, 0, 0, 0, 2555, 2558, 1, 0, 0, 0, 2556, 2554, 1, 0, 0, 0, 2556, 2557, 1, 0, 0, 0, 2557, 137, 1, 0, 0, 0, 2558, 2556, 1, 0, 0, 0, 2559, 2560, 5, 8, 0, 0, 2560, 2561, 5, 592, 0, 0, 2561, 2562, 3, 706, 353, 0, 2562, 2563, 5, 518, 0, 0, 2563, 2564, 5, 866, 0, 0, 2564, 2569, 3, 84, 42, 0, 2565, 2566, 5, 868, 0, 0, 2566, 2568, 3, 84, 42, 0, 2567, 2565, 1, 0, 0, 0, 2568, 2571, 1, 0, 0, 0, 2569, 2567, 1, 0, 0, 0, 2569, 2570, 1, 0, 0, 0, 2570, 2572, 1, 0, 0, 0, 2571, 2569, 1, 0, 0, 0, 2572, 2573, 5, 867, 0, 0, 2573, 139, 1, 0, 0, 0, 2574, 2575, 5, 8, 0, 0, 2575, 2576, 5, 173, 0, 0, 2576, 2585, 3, 652, 326, 0, 2577, 2582, 3, 146, 73, 0, 2578, 2579, 5, 868, 0, 0, 2579, 2581, 3, 146, 73, 0, 2580, 2578, 1, 0, 0, 0, 2581, 2584, 1, 0, 0, 0, 2582, 2580, 1, 0, 0, 0, 2582, 2583, 1, 0, 0, 0, 2583, 2586, 1, 0, 0, 0, 2584, 2582, 1, 0, 0, 0, 2585, 2577, 1, 0, 0, 0, 2585, 2586, 1, 0, 0, 0, 2586, 2594, 1, 0, 0, 0, 2587, 2591, 3, 148, 74, 0, 2588, 2590, 3, 148, 74, 0, 2589, 2588, 1, 0, 0, 0, 2590, 2593, 1, 0, 0, 0, 2591, 2589, 1, 0, 0, 0, 2591, 2592, 1, 0, 0, 0, 2592, 2595, 1, 0, 0, 0, 2593, 2591, 1, 0, 0, 0, 2594, 2587, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 141, 1, 0, 0, 0, 2596, 2598, 5, 8, 0, 0, 2597, 2599, 5, 180, 0, 0, 2598, 2597, 1, 0, 0, 0, 2598, 2599, 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 2601, 5, 658, 0, 0, 2601, 2602, 3, 666, 333, 0, 2602, 2603, 7, 35, 0, 0, 2603, 2604, 5, 361, 0, 0, 2604, 2610, 5, 882, 0, 0, 2605, 2607, 5, 428, 0, 0, 2606, 2608, 5, 857, 0, 0, 2607, 2606, 1, 0, 0, 0, 2607, 2608, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609, 2611, 3, 714, 357, 0, 2610, 2605, 1, 0, 0, 0, 2610, 2611, 1, 0, 0, 0, 2611, 2613, 1, 0, 0, 0, 2612, 2614, 5, 687, 0, 0, 2613, 2612, 1, 0, 0, 0, 2613, 2614, 1, 0, 0, 0, 2614, 2618, 1, 0, 0, 0, 2615, 2616, 5, 141, 0, 0, 2616, 2617, 5, 176, 0, 0, 2617, 2619, 3, 664, 332, 0, 2618, 2615, 1, 0, 0, 0, 2618, 2619, 1, 0, 0, 0, 2619, 2625, 1, 0, 0, 0, 2620, 2622, 5, 314, 0, 0, 2621, 2623, 5, 857, 0, 0, 2622, 2621, 1, 0, 0, 0, 2622, 2623, 1, 0, 0, 0, 2623, 2624, 1, 0, 0, 0, 2624, 2626, 3, 714, 357, 0, 2625, 2620, 1, 0, 0, 0, 2625, 2626, 1, 0, 0, 0, 2626, 2629, 1, 0, 0, 0, 2627, 2628, 5, 155, 0, 0, 2628, 2630, 7, 36, 0, 0, 2629, 2627, 1, 0, 0, 0, 2629, 2630, 1, 0, 0, 0, 2630, 2636, 1, 0, 0, 0, 2631, 2633, 5, 376, 0, 0, 2632, 2634, 5, 857, 0, 0, 2633, 2632, 1, 0, 0, 0, 2633, 2634, 1, 0, 0, 0, 2634, 2635, 1, 0, 0, 0, 2635, 2637, 5, 882, 0, 0, 2636, 2631, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2643, 1, 0, 0, 0, 2638, 2640, 5, 380, 0, 0, 2639, 2641, 5, 857, 0, 0, 2640, 2639, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2642, 1, 0, 0, 0, 2642, 2644, 3, 692, 346, 0, 2643, 2638, 1, 0, 0, 0, 2643, 2644, 1, 0, 0, 0, 2644, 2650, 1, 0, 0, 0, 2645, 2647, 5, 825, 0, 0, 2646, 2648, 5, 857, 0, 0, 2647, 2646, 1, 0, 0, 0, 2647, 2648, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 2651, 5, 882, 0, 0, 2650, 2645, 1, 0, 0, 0, 2650, 2651, 1, 0, 0, 0, 2651, 143, 1, 0, 0, 0, 2652, 2656, 5, 8, 0, 0, 2653, 2654, 5, 308, 0, 0, 2654, 2655, 5, 857, 0, 0, 2655, 2657, 7, 11, 0, 0, 2656, 2653, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 2659, 1, 0, 0, 0, 2658, 2660, 3, 62, 31, 0, 2659, 2658, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 2664, 1, 0, 0, 0, 2661, 2662, 5, 162, 0, 0, 2662, 2663, 5, 591, 0, 0, 2663, 2665, 7, 12, 0, 0, 2664, 2661, 1, 0, 0, 0, 2664, 2665, 1, 0, 0, 0, 2665, 2666, 1, 0, 0, 0, 2666, 2667, 5, 684, 0, 0, 2667, 2672, 3, 636, 318, 0, 2668, 2669, 5, 866, 0, 0, 2669, 2670, 3, 660, 330, 0, 2670, 2671, 5, 867, 0, 0, 2671, 2673, 1, 0, 0, 0, 2672, 2668, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2674, 1, 0, 0, 0, 2674, 2675, 5, 13, 0, 0, 2675, 2682, 3, 210, 105, 0, 2676, 2678, 5, 194, 0, 0, 2677, 2679, 7, 13, 0, 0, 2678, 2677, 1, 0, 0, 0, 2678, 2679, 1, 0, 0, 0, 2679, 2680, 1, 0, 0, 0, 2680, 2681, 5, 27, 0, 0, 2681, 2683, 5, 121, 0, 0, 2682, 2676, 1, 0, 0, 0, 2682, 2683, 1, 0, 0, 0, 2683, 145, 1, 0, 0, 0, 2684, 2691, 3, 104, 52, 0, 2685, 2687, 5, 868, 0, 0, 2686, 2685, 1, 0, 0, 0, 2686, 2687, 1, 0, 0, 0, 2687, 2688, 1, 0, 0, 0, 2688, 2690, 3, 104, 52, 0, 2689, 2686, 1, 0, 0, 0, 2690, 2693, 1, 0, 0, 0, 2691, 2689, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2949, 1, 0, 0, 0, 2693, 2691, 1, 0, 0, 0, 2694, 2696, 5, 6, 0, 0, 2695, 2697, 5, 29, 0, 0, 2696, 2695, 1, 0, 0, 0, 2696, 2697, 1, 0, 0, 0, 2697, 2698, 1, 0, 0, 0, 2698, 2699, 3, 662, 331, 0, 2699, 2703, 3, 94, 47, 0, 2700, 2704, 5, 402, 0, 0, 2701, 2702, 5, 306, 0, 0, 2702, 2704, 3, 662, 331, 0, 2703, 2700, 1, 0, 0, 0, 2703, 2701, 1, 0, 0, 0, 2703, 2704, 1, 0, 0, 0, 2704, 2949, 1, 0, 0, 0, 2705, 2707, 5, 6, 0, 0, 2706, 2708, 5, 29, 0, 0, 2707, 2706, 1, 0, 0, 0, 2707, 2708, 1, 0, 0, 0, 2708, 2709, 1, 0, 0, 0, 2709, 2710, 5, 866, 0, 0, 2710, 2711, 3, 662, 331, 0, 2711, 2718, 3, 94, 47, 0, 2712, 2713, 5, 868, 0, 0, 2713, 2714, 3, 662, 331, 0, 2714, 2715, 3, 94, 47, 0, 2715, 2717, 1, 0, 0, 0, 2716, 2712, 1, 0, 0, 0, 2717, 2720, 1, 0, 0, 0, 2718, 2716, 1, 0, 0, 0, 2718, 2719, 1, 0, 0, 0, 2719, 2721, 1, 0, 0, 0, 2720, 2718, 1, 0, 0, 0, 2721, 2722, 5, 867, 0, 0, 2722, 2949, 1, 0, 0, 0, 2723, 2724, 5, 6, 0, 0, 2724, 2726, 7, 19, 0, 0, 2725, 2727, 3, 642, 321, 0, 2726, 2725, 1, 0, 0, 0, 2726, 2727, 1, 0, 0, 0, 2727, 2729, 1, 0, 0, 0, 2728, 2730, 3, 74, 37, 0, 2729, 2728, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 2731, 1, 0, 0, 0, 2731, 2735, 3, 738, 369, 0, 2732, 2734, 3, 76, 38, 0, 2733, 2732, 1, 0, 0, 0, 2734, 2737, 1, 0, 0, 0, 2735, 2733, 1, 0, 0, 0, 2735, 2736, 1, 0, 0, 0, 2736, 2949, 1, 0, 0, 0, 2737, 2735, 1, 0, 0, 0, 2738, 2739, 5, 6, 0, 0, 2739, 2741, 7, 20, 0, 0, 2740, 2742, 7, 19, 0, 0, 2741, 2740, 1, 0, 0, 0, 2741, 2742, 1, 0, 0, 0, 2742, 2744, 1, 0, 0, 0, 2743, 2745, 3, 642, 321, 0, 2744, 2743, 1, 0, 0, 0, 2744, 2745, 1, 0, 0, 0, 2745, 2746, 1, 0, 0, 0, 2746, 2750, 3, 738, 369, 0, 2747, 2749, 3, 76, 38, 0, 2748, 2747, 1, 0, 0, 0, 2749, 2752, 1, 0, 0, 0, 2750, 2748, 1, 0, 0, 0, 2750, 2751, 1, 0, 0, 0, 2751, 2949, 1, 0, 0, 0, 2752, 2750, 1, 0, 0, 0, 2753, 2758, 5, 6, 0, 0, 2754, 2756, 5, 31, 0, 0, 2755, 2757, 3, 706, 353, 0, 2756, 2755, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2759, 1, 0, 0, 0, 2758, 2754, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2760, 1, 0, 0, 0, 2760, 2761, 5, 131, 0, 0, 2761, 2763, 5, 92, 0, 0, 2762, 2764, 3, 74, 37, 0, 2763, 2762, 1, 0, 0, 0, 2763, 2764, 1, 0, 0, 0, 2764, 2765, 1, 0, 0, 0, 2765, 2769, 3, 738, 369, 0, 2766, 2768, 3, 76, 38, 0, 2767, 2766, 1, 0, 0, 0, 2768, 2771, 1, 0, 0, 0, 2769, 2767, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2949, 1, 0, 0, 0, 2771, 2769, 1, 0, 0, 0, 2772, 2777, 5, 6, 0, 0, 2773, 2775, 5, 31, 0, 0, 2774, 2776, 3, 706, 353, 0, 2775, 2774, 1, 0, 0, 0, 2775, 2776, 1, 0, 0, 0, 2776, 2778, 1, 0, 0, 0, 2777, 2773, 1, 0, 0, 0, 2777, 2778, 1, 0, 0, 0, 2778, 2779, 1, 0, 0, 0, 2779, 2781, 5, 182, 0, 0, 2780, 2782, 7, 19, 0, 0, 2781, 2780, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0, 2782, 2784, 1, 0, 0, 0, 2783, 2785, 3, 642, 321, 0, 2784, 2783, 1, 0, 0, 0, 2784, 2785, 1, 0, 0, 0, 2785, 2787, 1, 0, 0, 0, 2786, 2788, 3, 74, 37, 0, 2787, 2786, 1, 0, 0, 0, 2787, 2788, 1, 0, 0, 0, 2788, 2789, 1, 0, 0, 0, 2789, 2793, 3, 738, 369, 0, 2790, 2792, 3, 76, 38, 0, 2791, 2790, 1, 0, 0, 0, 2792, 2795, 1, 0, 0, 0, 2793, 2791, 1, 0, 0, 0, 2793, 2794, 1, 0, 0, 0, 2794, 2949, 1, 0, 0, 0, 2795, 2793, 1, 0, 0, 0, 2796, 2801, 5, 6, 0, 0, 2797, 2799, 5, 31, 0, 0, 2798, 2800, 3, 706, 353, 0, 2799, 2798, 1, 0, 0, 0, 2799, 2800, 1, 0, 0, 0, 2800, 2802, 1, 0, 0, 0, 2801, 2797, 1, 0, 0, 0, 2801, 2802, 1, 0, 0, 0, 2802, 2803, 1, 0, 0, 0, 2803, 2804, 5, 67, 0, 0, 2804, 2806, 5, 92, 0, 0, 2805, 2807, 3, 642, 321, 0, 2806, 2805, 1, 0, 0, 0, 2806, 2807, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 2809, 3, 738, 369, 0, 2809, 2810, 3, 98, 49, 0, 2810, 2949, 1, 0, 0, 0, 2811, 2813, 5, 6, 0, 0, 2812, 2814, 3, 90, 45, 0, 2813, 2812, 1, 0, 0, 0, 2813, 2814, 1, 0, 0, 0, 2814, 2949, 1, 0, 0, 0, 2815, 2816, 5, 51, 0, 0, 2816, 2817, 7, 37, 0, 0, 2817, 2949, 3, 706, 353, 0, 2818, 2819, 5, 8, 0, 0, 2819, 2820, 7, 37, 0, 0, 2820, 2822, 3, 706, 353, 0, 2821, 2823, 5, 114, 0, 0, 2822, 2821, 1, 0, 0, 0, 2822, 2823, 1, 0, 0, 0, 2823, 2825, 1, 0, 0, 0, 2824, 2826, 5, 57, 0, 0, 2825, 2824, 1, 0, 0, 0, 2825, 2826, 1, 0, 0, 0, 2826, 2949, 1, 0, 0, 0, 2827, 2829, 5, 308, 0, 0, 2828, 2830, 5, 857, 0, 0, 2829, 2828, 1, 0, 0, 0, 2829, 2830, 1, 0, 0, 0, 2830, 2831, 1, 0, 0, 0, 2831, 2949, 7, 38, 0, 0, 2832, 2834, 5, 8, 0, 0, 2833, 2835, 5, 29, 0, 0, 2834, 2833, 1, 0, 0, 0, 2834, 2835, 1, 0, 0, 0, 2835, 2836, 1, 0, 0, 0, 2836, 2844, 3, 662, 331, 0, 2837, 2838, 5, 155, 0, 0, 2838, 2839, 5, 42, 0, 0, 2839, 2845, 3, 754, 377, 0, 2840, 2841, 5, 155, 0, 0, 2841, 2845, 7, 17, 0, 0, 2842, 2843, 5, 51, 0, 0, 2843, 2845, 5, 42, 0, 0, 2844, 2837, 1, 0, 0, 0, 2844, 2840, 1, 0, 0, 0, 2844, 2842, 1, 0, 0, 0, 2845, 2949, 1, 0, 0, 0, 2846, 2847, 5, 8, 0, 0, 2847, 2848, 5, 82, 0, 0, 2848, 2849, 3, 642, 321, 0, 2849, 2850, 7, 17, 0, 0, 2850, 2949, 1, 0, 0, 0, 2851, 2853, 5, 25, 0, 0, 2852, 2854, 5, 29, 0, 0, 2853, 2852, 1, 0, 0, 0, 2853, 2854, 1, 0, 0, 0, 2854, 2855, 1, 0, 0, 0, 2855, 2856, 3, 662, 331, 0, 2856, 2857, 3, 658, 329, 0, 2857, 2861, 3, 94, 47, 0, 2858, 2862, 5, 402, 0, 0, 2859, 2860, 5, 306, 0, 0, 2860, 2862, 3, 662, 331, 0, 2861, 2858, 1, 0, 0, 0, 2861, 2859, 1, 0, 0, 0, 2861, 2862, 1, 0, 0, 0, 2862, 2949, 1, 0, 0, 0, 2863, 2865, 5, 42, 0, 0, 2864, 2863, 1, 0, 0, 0, 2864, 2865, 1, 0, 0, 0, 2865, 2866, 1, 0, 0, 0, 2866, 2867, 5, 26, 0, 0, 2867, 2868, 5, 155, 0, 0, 2868, 2869, 5, 857, 0, 0, 2869, 2875, 3, 688, 344, 0, 2870, 2872, 5, 28, 0, 0, 2871, 2873, 5, 857, 0, 0, 2872, 2871, 1, 0, 0, 0, 2872, 2873, 1, 0, 0, 0, 2873, 2874, 1, 0, 0, 0, 2874, 2876, 3, 690, 345, 0, 2875, 2870, 1, 0, 0, 0, 2875, 2876, 1, 0, 0, 0, 2876, 2949, 1, 0, 0, 0, 2877, 2878, 5, 33, 0, 0, 2878, 2882, 5, 176, 0, 0, 2879, 2883, 5, 823, 0, 0, 2880, 2881, 5, 26, 0, 0, 2881, 2883, 5, 155, 0, 0, 2882, 2879, 1, 0, 0, 0, 2882, 2880, 1, 0, 0, 0, 2883, 2884, 1, 0, 0, 0, 2884, 2887, 3, 688, 344, 0, 2885, 2886, 5, 28, 0, 0, 2886, 2888, 3, 690, 345, 0, 2887, 2885, 1, 0, 0, 0, 2887, 2888, 1, 0, 0, 0, 2888, 2949, 1, 0, 0, 0, 2889, 2890, 7, 39, 0, 0, 2890, 2949, 5, 93, 0, 0, 2891, 2892, 7, 40, 0, 0, 2892, 2949, 5, 658, 0, 0, 2893, 2895, 5, 51, 0, 0, 2894, 2896, 5, 29, 0, 0, 2895, 2894, 1, 0, 0, 0, 2895, 2896, 1, 0, 0, 0, 2896, 2897, 1, 0, 0, 0, 2897, 2949, 3, 662, 331, 0, 2898, 2899, 5, 51, 0, 0, 2899, 2900, 7, 19, 0, 0, 2900, 2949, 3, 642, 321, 0, 2901, 2902, 5, 51, 0, 0, 2902, 2903, 5, 131, 0, 0, 2903, 2949, 5, 92, 0, 0, 2904, 2905, 5, 51, 0, 0, 2905, 2906, 5, 67, 0, 0, 2906, 2907, 5, 92, 0, 0, 2907, 2949, 3, 706, 353, 0, 2908, 2949, 5, 66, 0, 0, 2909, 2911, 5, 104, 0, 0, 2910, 2912, 5, 857, 0, 0, 2911, 2910, 1, 0, 0, 0, 2911, 2912, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2949, 7, 4, 0, 0, 2914, 2916, 5, 492, 0, 0, 2915, 2917, 5, 29, 0, 0, 2916, 2915, 1, 0, 0, 0, 2916, 2917, 1, 0, 0, 0, 2917, 2918, 1, 0, 0, 0, 2918, 2919, 3, 662, 331, 0, 2919, 2923, 3, 94, 47, 0, 2920, 2924, 5, 402, 0, 0, 2921, 2922, 5, 306, 0, 0, 2922, 2924, 3, 662, 331, 0, 2923, 2920, 1, 0, 0, 0, 2923, 2921, 1, 0, 0, 0, 2923, 2924, 1, 0, 0, 0, 2924, 2949, 1, 0, 0, 0, 2925, 2926, 5, 125, 0, 0, 2926, 2927, 5, 20, 0, 0, 2927, 2949, 3, 660, 330, 0, 2928, 2929, 5, 141, 0, 0, 2929, 2930, 5, 29, 0, 0, 2930, 2931, 3, 662, 331, 0, 2931, 2932, 5, 176, 0, 0, 2932, 2933, 3, 658, 329, 0, 2933, 2949, 1, 0, 0, 0, 2934, 2935, 5, 141, 0, 0, 2935, 2936, 7, 19, 0, 0, 2936, 2937, 3, 642, 321, 0, 2937, 2938, 5, 176, 0, 0, 2938, 2939, 3, 638, 319, 0, 2939, 2949, 1, 0, 0, 0, 2940, 2942, 5, 141, 0, 0, 2941, 2943, 7, 41, 0, 0, 2942, 2941, 1, 0, 0, 0, 2942, 2943, 1, 0, 0, 0, 2943, 2944, 1, 0, 0, 0, 2944, 2949, 3, 648, 324, 0, 2945, 2946, 7, 42, 0, 0, 2946, 2949, 5, 681, 0, 0, 2947, 2949, 3, 148, 74, 0, 2948, 2684, 1, 0, 0, 0, 2948, 2694, 1, 0, 0, 0, 2948, 2705, 1, 0, 0, 0, 2948, 2723, 1, 0, 0, 0, 2948, 2738, 1, 0, 0, 0, 2948, 2753, 1, 0, 0, 0, 2948, 2772, 1, 0, 0, 0, 2948, 2796, 1, 0, 0, 0, 2948, 2811, 1, 0, 0, 0, 2948, 2815, 1, 0, 0, 0, 2948, 2818, 1, 0, 0, 0, 2948, 2827, 1, 0, 0, 0, 2948, 2832, 1, 0, 0, 0, 2948, 2846, 1, 0, 0, 0, 2948, 2851, 1, 0, 0, 0, 2948, 2864, 1, 0, 0, 0, 2948, 2877, 1, 0, 0, 0, 2948, 2889, 1, 0, 0, 0, 2948, 2891, 1, 0, 0, 0, 2948, 2893, 1, 0, 0, 0, 2948, 2898, 1, 0, 0, 0, 2948, 2901, 1, 0, 0, 0, 2948, 2904, 1, 0, 0, 0, 2948, 2908, 1, 0, 0, 0, 2948, 2909, 1, 0, 0, 0, 2948, 2914, 1, 0, 0, 0, 2948, 2925, 1, 0, 0, 0, 2948, 2928, 1, 0, 0, 0, 2948, 2934, 1, 0, 0, 0, 2948, 2940, 1, 0, 0, 0, 2948, 2945, 1, 0, 0, 0, 2948, 2947, 1, 0, 0, 0, 2949, 147, 1, 0, 0, 0, 2950, 2951, 5, 6, 0, 0, 2951, 2952, 5, 130, 0, 0, 2952, 2953, 5, 866, 0, 0, 2953, 2958, 3, 116, 58, 0, 2954, 2955, 5, 868, 0, 0, 2955, 2957, 3, 116, 58, 0, 2956, 2954, 1, 0, 0, 0, 2957, 2960, 1, 0, 0, 0, 2958, 2956, 1, 0, 0, 0, 2958, 2959, 1, 0, 0, 0, 2959, 2961, 1, 0, 0, 0, 2960, 2958, 1, 0, 0, 0, 2961, 2962, 5, 867, 0, 0, 2962, 3049, 1, 0, 0, 0, 2963, 2964, 5, 51, 0, 0, 2964, 2965, 5, 130, 0, 0, 2965, 3049, 3, 670, 335, 0, 2966, 2967, 5, 369, 0, 0, 2967, 2970, 5, 130, 0, 0, 2968, 2971, 3, 670, 335, 0, 2969, 2971, 5, 7, 0, 0, 2970, 2968, 1, 0, 0, 0, 2970, 2969, 1, 0, 0, 0, 2971, 2972, 1, 0, 0, 0, 2972, 3049, 5, 658, 0, 0, 2973, 2974, 5, 425, 0, 0, 2974, 2977, 5, 130, 0, 0, 2975, 2978, 3, 670, 335, 0, 2976, 2978, 5, 7, 0, 0, 2977, 2975, 1, 0, 0, 0, 2977, 2976, 1, 0, 0, 0, 2978, 2979, 1, 0, 0, 0, 2979, 3049, 5, 658, 0, 0, 2980, 2981, 5, 668, 0, 0, 2981, 2984, 5, 130, 0, 0, 2982, 2985, 3, 670, 335, 0, 2983, 2985, 5, 7, 0, 0, 2984, 2982, 1, 0, 0, 0, 2984, 2983, 1, 0, 0, 0, 2985, 3049, 1, 0, 0, 0, 2986, 2987, 5, 335, 0, 0, 2987, 2988, 5, 130, 0, 0, 2988, 3049, 3, 712, 356, 0, 2989, 2990, 5, 561, 0, 0, 2990, 2991, 5, 130, 0, 0, 2991, 2992, 3, 670, 335, 0, 2992, 2993, 5, 88, 0, 0, 2993, 2994, 5, 866, 0, 0, 2994, 2999, 3, 116, 58, 0, 2995, 2996, 5, 868, 0, 0, 2996, 2998, 3, 116, 58, 0, 2997, 2995, 1, 0, 0, 0, 2998, 3001, 1, 0, 0, 0, 2999, 2997, 1, 0, 0, 0, 2999, 3000, 1, 0, 0, 0, 3000, 3002, 1, 0, 0, 0, 3001, 2999, 1, 0, 0, 0, 3002, 3003, 5, 867, 0, 0, 3003, 3049, 1, 0, 0, 0, 3004, 3005, 5, 388, 0, 0, 3005, 3006, 5, 130, 0, 0, 3006, 3007, 3, 672, 336, 0, 3007, 3008, 5, 194, 0, 0, 3008, 3009, 5, 173, 0, 0, 3009, 3012, 3, 652, 326, 0, 3010, 3011, 7, 42, 0, 0, 3011, 3013, 5, 681, 0, 0, 3012, 3010, 1, 0, 0, 0, 3012, 3013, 1, 0, 0, 0, 3013, 3049, 1, 0, 0, 0, 3014, 3015, 5, 10, 0, 0, 3015, 3018, 5, 130, 0, 0, 3016, 3019, 3, 670, 335, 0, 3017, 3019, 5, 7, 0, 0, 3018, 3016, 1, 0, 0, 0, 3018, 3017, 1, 0, 0, 0, 3019, 3049, 1, 0, 0, 0, 3020, 3021, 5, 27, 0, 0, 3021, 3024, 5, 130, 0, 0, 3022, 3025, 3, 670, 335, 0, 3023, 3025, 5, 7, 0, 0, 3024, 3022, 1, 0, 0, 0, 3024, 3023, 1, 0, 0, 0, 3025, 3049, 1, 0, 0, 0, 3026, 3027, 5, 120, 0, 0, 3027, 3030, 5, 130, 0, 0, 3028, 3031, 3, 670, 335, 0, 3029, 3031, 5, 7, 0, 0, 3030, 3028, 1, 0, 0, 0, 3030, 3029, 1, 0, 0, 0, 3031, 3049, 1, 0, 0, 0, 3032, 3033, 5, 550, 0, 0, 3033, 3036, 5, 130, 0, 0, 3034, 3037, 3, 670, 335, 0, 3035, 3037, 5, 7, 0, 0, 3036, 3034, 1, 0, 0, 0, 3036, 3035, 1, 0, 0, 0, 3037, 3049, 1, 0, 0, 0, 3038, 3039, 5, 562, 0, 0, 3039, 3042, 5, 130, 0, 0, 3040, 3043, 3, 670, 335, 0, 3041, 3043, 5, 7, 0, 0, 3042, 3040, 1, 0, 0, 0, 3042, 3041, 1, 0, 0, 0, 3043, 3049, 1, 0, 0, 0, 3044, 3045, 5, 560, 0, 0, 3045, 3049, 5, 527, 0, 0, 3046, 3047, 5, 677, 0, 0, 3047, 3049, 5, 527, 0, 0, 3048, 2950, 1, 0, 0, 0, 3048, 2963, 1, 0, 0, 0, 3048, 2966, 1, 0, 0, 0, 3048, 2973, 1, 0, 0, 0, 3048, 2980, 1, 0, 0, 0, 3048, 2986, 1, 0, 0, 0, 3048, 2989, 1, 0, 0, 0, 3048, 3004, 1, 0, 0, 0, 3048, 3014, 1, 0, 0, 0, 3048, 3020, 1, 0, 0, 0, 3048, 3026, 1, 0, 0, 0, 3048, 3032, 1, 0, 0, 0, 3048, 3038, 1, 0, 0, 0, 3048, 3044, 1, 0, 0, 0, 3048, 3046, 1, 0, 0, 0, 3049, 149, 1, 0, 0, 0, 3050, 3051, 5, 51, 0, 0, 3051, 3053, 7, 0, 0, 0, 3052, 3054, 3, 758, 379, 0, 3053, 3052, 1, 0, 0, 0, 3053, 3054, 1, 0, 0, 0, 3054, 3055, 1, 0, 0, 0, 3055, 3056, 3, 628, 314, 0, 3056, 151, 1, 0, 0, 0, 3057, 3058, 5, 51, 0, 0, 3058, 3060, 5, 385, 0, 0, 3059, 3061, 3, 758, 379, 0, 3060, 3059, 1, 0, 0, 0, 3060, 3061, 1, 0, 0, 0, 3061, 3062, 1, 0, 0, 0, 3062, 3063, 3, 702, 351, 0, 3063, 153, 1, 0, 0, 0, 3064, 3065, 5, 51, 0, 0, 3065, 3067, 5, 82, 0, 0, 3066, 3068, 7, 1, 0, 0, 3067, 3066, 1, 0, 0, 0, 3067, 3068, 1, 0, 0, 0, 3068, 3069, 1, 0, 0, 0, 3069, 3070, 3, 642, 321, 0, 3070, 3071, 5, 119, 0, 0, 3071, 3084, 3, 652, 326, 0, 3072, 3074, 5, 308, 0, 0, 3073, 3075, 5, 857, 0, 0, 3074, 3073, 1, 0, 0, 0, 3074, 3075, 1, 0, 0, 0, 3075, 3076, 1, 0, 0, 0, 3076, 3083, 7, 3, 0, 0, 3077, 3079, 5, 104, 0, 0, 3078, 3080, 5, 857, 0, 0, 3079, 3078, 1, 0, 0, 0, 3079, 3080, 1, 0, 0, 0, 3080, 3081, 1, 0, 0, 0, 3081, 3083, 7, 4, 0, 0, 3082, 3072, 1, 0, 0, 0, 3082, 3077, 1, 0, 0, 0, 3083, 3086, 1, 0, 0, 0, 3084, 3082, 1, 0, 0, 0, 3084, 3085, 1, 0, 0, 0, 3085, 155, 1, 0, 0, 0, 3086, 3084, 1, 0, 0, 0, 3087, 3088, 5, 51, 0, 0, 3088, 3089, 5, 451, 0, 0, 3089, 3090, 5, 74, 0, 0, 3090, 3091, 3, 706, 353, 0, 3091, 3093, 5, 380, 0, 0, 3092, 3094, 5, 857, 0, 0, 3093, 3092, 1, 0, 0, 0, 3093, 3094, 1, 0, 0, 0, 3094, 3095, 1, 0, 0, 0, 3095, 3096, 3, 692, 346, 0, 3096, 157, 1, 0, 0, 0, 3097, 3098, 5, 51, 0, 0, 3098, 3100, 5, 132, 0, 0, 3099, 3101, 3, 758, 379, 0, 3100, 3099, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3103, 3, 702, 351, 0, 3103, 159, 1, 0, 0, 0, 3104, 3105, 5, 51, 0, 0, 3105, 3107, 5, 409, 0, 0, 3106, 3108, 3, 758, 379, 0, 3107, 3106, 1, 0, 0, 0, 3107, 3108, 1, 0, 0, 0, 3108, 3109, 1, 0, 0, 0, 3109, 3110, 3, 632, 316, 0, 3110, 161, 1, 0, 0, 0, 3111, 3112, 5, 51, 0, 0, 3112, 3114, 5, 592, 0, 0, 3113, 3115, 3, 758, 379, 0, 3114, 3113, 1, 0, 0, 0, 3114, 3115, 1, 0, 0, 0, 3115, 3116, 1, 0, 0, 0, 3116, 3117, 3, 706, 353, 0, 3117, 163, 1, 0, 0, 0, 3118, 3119, 5, 51, 0, 0, 3119, 3120, 5, 161, 0, 0, 3120, 3121, 5, 137, 0, 0, 3121, 3123, 5, 835, 0, 0, 3122, 3124, 3, 758, 379, 0, 3123, 3122, 1, 0, 0, 0, 3123, 3124, 1, 0, 0, 0, 3124, 3125, 1, 0, 0, 0, 3125, 3126, 5, 883, 0, 0, 3126, 165, 1, 0, 0, 0, 3127, 3129, 5, 51, 0, 0, 3128, 3130, 5, 660, 0, 0, 3129, 3128, 1, 0, 0, 0, 3129, 3130, 1, 0, 0, 0, 3130, 3131, 1, 0, 0, 0, 3131, 3133, 5, 173, 0, 0, 3132, 3134, 3, 758, 379, 0, 3133, 3132, 1, 0, 0, 0, 3133, 3134, 1, 0, 0, 0, 3134, 3135, 1, 0, 0, 0, 3135, 3137, 3, 650, 325, 0, 3136, 3138, 7, 43, 0, 0, 3137, 3136, 1, 0, 0, 0, 3137, 3138, 1, 0, 0, 0, 3138, 167, 1, 0, 0, 0, 3139, 3141, 5, 51, 0, 0, 3140, 3142, 5, 180, 0, 0, 3141, 3140, 1, 0, 0, 0, 3141, 3142, 1, 0, 0, 0, 3142, 3143, 1, 0, 0, 0, 3143, 3144, 5, 658, 0, 0, 3144, 3150, 3, 666, 333, 0, 3145, 3147, 5, 380, 0, 0, 3146, 3148, 5, 857, 0, 0, 3147, 3146, 1, 0, 0, 0, 3147, 3148, 1, 0, 0, 0, 3148, 3149, 1, 0, 0, 0, 3149, 3151, 3, 692, 346, 0, 3150, 3145, 1, 0, 0, 0, 3150, 3151, 1, 0, 0, 0, 3151, 169, 1, 0, 0, 0, 3152, 3153, 5, 51, 0, 0, 3153, 3155, 5, 178, 0, 0, 3154, 3156, 3, 758, 379, 0, 3155, 3154, 1, 0, 0, 0, 3155, 3156, 1, 0, 0, 0, 3156, 3157, 1, 0, 0, 0, 3157, 3158, 3, 702, 351, 0, 3158, 171, 1, 0, 0, 0, 3159, 3160, 5, 51, 0, 0, 3160, 3162, 5, 684, 0, 0, 3161, 3163, 3, 758, 379, 0, 3162, 3161, 1, 0, 0, 0, 3162, 3163, 1, 0, 0, 0, 3163, 3164, 1, 0, 0, 0, 3164, 3169, 3, 636, 318, 0, 3165, 3166, 5, 868, 0, 0, 3166, 3168, 3, 636, 318, 0, 3167, 3165, 1, 0, 0, 0, 3168, 3171, 1, 0, 0, 0, 3169, 3167, 1, 0, 0, 0, 3169, 3170, 1, 0, 0, 0, 3170, 3173, 1, 0, 0, 0, 3171, 3169, 1, 0, 0, 0, 3172, 3174, 7, 43, 0, 0, 3173, 3172, 1, 0, 0, 0, 3173, 3174, 1, 0, 0, 0, 3174, 173, 1, 0, 0, 0, 3175, 3176, 5, 51, 0, 0, 3176, 3178, 5, 582, 0, 0, 3177, 3179, 3, 758, 379, 0, 3178, 3177, 1, 0, 0, 0, 3178, 3179, 1, 0, 0, 0, 3179, 3180, 1, 0, 0, 0, 3180, 3181, 3, 654, 327, 0, 3181, 175, 1, 0, 0, 0, 3182, 3183, 5, 155, 0, 0, 3183, 3184, 5, 42, 0, 0, 3184, 3188, 5, 582, 0, 0, 3185, 3189, 5, 505, 0, 0, 3186, 3189, 5, 7, 0, 0, 3187, 3189, 3, 654, 327, 0, 3188, 3185, 1, 0, 0, 0, 3188, 3186, 1, 0, 0, 0, 3188, 3187, 1, 0, 0, 0, 3189, 3190, 1, 0, 0, 0, 3190, 3191, 5, 176, 0, 0, 3191, 3196, 3, 656, 328, 0, 3192, 3193, 5, 868, 0, 0, 3193, 3195, 3, 656, 328, 0, 3194, 3192, 1, 0, 0, 0, 3195, 3198, 1, 0, 0, 0, 3196, 3194, 1, 0, 0, 0, 3196, 3197, 1, 0, 0, 0, 3197, 3203, 1, 0, 0, 0, 3198, 3196, 1, 0, 0, 0, 3199, 3200, 5, 155, 0, 0, 3200, 3201, 5, 582, 0, 0, 3201, 3203, 3, 468, 234, 0, 3202, 3182, 1, 0, 0, 0, 3202, 3199, 1, 0, 0, 0, 3203, 177, 1, 0, 0, 0, 3204, 3205, 5, 141, 0, 0, 3205, 3206, 5, 173, 0, 0, 3206, 3211, 3, 180, 90, 0, 3207, 3208, 5, 868, 0, 0, 3208, 3210, 3, 180, 90, 0, 3209, 3207, 1, 0, 0, 0, 3210, 3213, 1, 0, 0, 0, 3211, 3209, 1, 0, 0, 0, 3211, 3212, 1, 0, 0, 0, 3212, 179, 1, 0, 0, 0, 3213, 3211, 1, 0, 0, 0, 3214, 3215, 3, 652, 326, 0, 3215, 3216, 5, 176, 0, 0, 3216, 3217, 3, 648, 324, 0, 3217, 181, 1, 0, 0, 0, 3218, 3220, 5, 668, 0, 0, 3219, 3221, 5, 173, 0, 0, 3220, 3219, 1, 0, 0, 0, 3220, 3221, 1, 0, 0, 0, 3221, 3222, 1, 0, 0, 0, 3222, 3223, 3, 652, 326, 0, 3223, 183, 1, 0, 0, 0, 3224, 3225, 5, 21, 0, 0, 3225, 3232, 3, 702, 351, 0, 3226, 3229, 5, 866, 0, 0, 3227, 3230, 3, 748, 374, 0, 3228, 3230, 3, 740, 370, 0, 3229, 3227, 1, 0, 0, 0, 3229, 3228, 1, 0, 0, 0, 3229, 3230, 1, 0, 0, 0, 3230, 3231, 1, 0, 0, 0, 3231, 3233, 5, 867, 0, 0, 3232, 3226, 1, 0, 0, 0, 3232, 3233, 1, 0, 0, 0, 3233, 185, 1, 0, 0, 0, 3234, 3237, 3, 240, 120, 0, 3235, 3237, 3, 242, 121, 0, 3236, 3234, 1, 0, 0, 0, 3236, 3235, 1, 0, 0, 0, 3237, 187, 1, 0, 0, 0, 3238, 3239, 5, 371, 0, 0, 3239, 3240, 3, 740, 370, 0, 3240, 189, 1, 0, 0, 0, 3241, 3246, 3, 244, 122, 0, 3242, 3246, 3, 246, 123, 0, 3243, 3246, 3, 248, 124, 0, 3244, 3246, 3, 250, 125, 0, 3245, 3241, 1, 0, 0, 0, 3245, 3242, 1, 0, 0, 0, 3245, 3243, 1, 0, 0, 0, 3245, 3244, 1, 0, 0, 0, 3246, 191, 1, 0, 0, 0, 3247, 3249, 5, 86, 0, 0, 3248, 3250, 7, 44, 0, 0, 3249, 3248, 1, 0, 0, 0, 3249, 3250, 1, 0, 0, 0, 3250, 3252, 1, 0, 0, 0, 3251, 3253, 5, 79, 0, 0, 3252, 3251, 1, 0, 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3255, 1, 0, 0, 0, 3254, 3256, 5, 88, 0, 0, 3255, 3254, 1, 0, 0, 0, 3255, 3256, 1, 0, 0, 0, 3256, 3257, 1, 0, 0, 0, 3257, 3264, 3, 652, 326, 0, 3258, 3259, 5, 130, 0, 0, 3259, 3261, 5, 866, 0, 0, 3260, 3262, 3, 670, 335, 0, 3261, 3260, 1, 0, 0, 0, 3261, 3262, 1, 0, 0, 0, 3262, 3263, 1, 0, 0, 0, 3263, 3265, 5, 867, 0, 0, 3264, 3258, 1, 0, 0, 0, 3264, 3265, 1, 0, 0, 0, 3265, 3277, 1, 0, 0, 0, 3266, 3268, 3, 268, 134, 0, 3267, 3266, 1, 0, 0, 0, 3267, 3268, 1, 0, 0, 0, 3268, 3271, 1, 0, 0, 0, 3269, 3272, 3, 742, 371, 0, 3270, 3272, 3, 196, 98, 0, 3271, 3269, 1, 0, 0, 0, 3271, 3270, 1, 0, 0, 0, 3271, 3272, 1, 0, 0, 0, 3272, 3274, 1, 0, 0, 0, 3273, 3275, 3, 194, 97, 0, 3274, 3273, 1, 0, 0, 0, 3274, 3275, 1, 0, 0, 0, 3275, 3278, 1, 0, 0, 0, 3276, 3278, 3, 232, 116, 0, 3277, 3267, 1, 0, 0, 0, 3277, 3276, 1, 0, 0, 0, 3278, 3280, 1, 0, 0, 0, 3279, 3281, 3, 194, 97, 0, 3280, 3279, 1, 0, 0, 0, 3280, 3281, 1, 0, 0, 0, 3281, 3294, 1, 0, 0, 0, 3282, 3283, 5, 119, 0, 0, 3283, 3284, 5, 373, 0, 0, 3284, 3285, 5, 92, 0, 0, 3285, 3286, 5, 185, 0, 0, 3286, 3291, 3, 234, 117, 0, 3287, 3288, 5, 868, 0, 0, 3288, 3290, 3, 234, 117, 0, 3289, 3287, 1, 0, 0, 0, 3290, 3293, 1, 0, 0, 0, 3291, 3289, 1, 0, 0, 0, 3291, 3292, 1, 0, 0, 0, 3292, 3295, 1, 0, 0, 0, 3293, 3291, 1, 0, 0, 0, 3294, 3282, 1, 0, 0, 0, 3294, 3295, 1, 0, 0, 0, 3295, 193, 1, 0, 0, 0, 3296, 3297, 5, 13, 0, 0, 3297, 3299, 3, 706, 353, 0, 3298, 3300, 3, 268, 134, 0, 3299, 3298, 1, 0, 0, 0, 3299, 3300, 1, 0, 0, 0, 3300, 195, 1, 0, 0, 0, 3301, 3306, 3, 210, 105, 0, 3302, 3303, 5, 173, 0, 0, 3303, 3306, 3, 652, 326, 0, 3304, 3306, 3, 230, 115, 0, 3305, 3301, 1, 0, 0, 0, 3305, 3302, 1, 0, 0, 0, 3305, 3304, 1, 0, 0, 0, 3306, 197, 1, 0, 0, 0, 3307, 3313, 3, 200, 100, 0, 3308, 3310, 5, 828, 0, 0, 3309, 3311, 7, 45, 0, 0, 3310, 3309, 1, 0, 0, 0, 3310, 3311, 1, 0, 0, 0, 3311, 3312, 1, 0, 0, 0, 3312, 3314, 3, 200, 100, 0, 3313, 3308, 1, 0, 0, 0, 3314, 3315, 1, 0, 0, 0, 3315, 3313, 1, 0, 0, 0, 3315, 3316, 1, 0, 0, 0, 3316, 199, 1, 0, 0, 0, 3317, 3319, 5, 866, 0, 0, 3318, 3317, 1, 0, 0, 0, 3318, 3319, 1, 0, 0, 0, 3319, 3320, 1, 0, 0, 0, 3320, 3322, 3, 280, 140, 0, 3321, 3323, 5, 867, 0, 0, 3322, 3321, 1, 0, 0, 0, 3322, 3323, 1, 0, 0, 0, 3323, 201, 1, 0, 0, 0, 3324, 3325, 5, 103, 0, 0, 3325, 3327, 5, 360, 0, 0, 3326, 3328, 7, 46, 0, 0, 3327, 3326, 1, 0, 0, 0, 3327, 3328, 1, 0, 0, 0, 3328, 3330, 1, 0, 0, 0, 3329, 3331, 5, 450, 0, 0, 3330, 3329, 1, 0, 0, 0, 3330, 3331, 1, 0, 0, 0, 3331, 3332, 1, 0, 0, 0, 3332, 3333, 5, 83, 0, 0, 3333, 3335, 5, 882, 0, 0, 3334, 3336, 7, 7, 0, 0, 3335, 3334, 1, 0, 0, 0, 3335, 3336, 1, 0, 0, 0, 3336, 3337, 1, 0, 0, 0, 3337, 3338, 5, 88, 0, 0, 3338, 3339, 5, 173, 0, 0, 3339, 3345, 3, 652, 326, 0, 3340, 3341, 5, 130, 0, 0, 3341, 3342, 5, 866, 0, 0, 3342, 3343, 3, 670, 335, 0, 3343, 3344, 5, 867, 0, 0, 3344, 3346, 1, 0, 0, 0, 3345, 3340, 1, 0, 0, 0, 3345, 3346, 1, 0, 0, 0, 3346, 3350, 1, 0, 0, 0, 3347, 3348, 5, 26, 0, 0, 3348, 3349, 5, 155, 0, 0, 3349, 3351, 3, 688, 344, 0, 3350, 3347, 1, 0, 0, 0, 3350, 3351, 1, 0, 0, 0, 3351, 3358, 1, 0, 0, 0, 3352, 3354, 7, 47, 0, 0, 3353, 3355, 3, 304, 152, 0, 3354, 3353, 1, 0, 0, 0, 3355, 3356, 1, 0, 0, 0, 3356, 3354, 1, 0, 0, 0, 3356, 3357, 1, 0, 0, 0, 3357, 3359, 1, 0, 0, 0, 3358, 3352, 1, 0, 0, 0, 3358, 3359, 1, 0, 0, 0, 3359, 3366, 1, 0, 0, 0, 3360, 3362, 5, 102, 0, 0, 3361, 3363, 3, 306, 153, 0, 3362, 3361, 1, 0, 0, 0, 3363, 3364, 1, 0, 0, 0, 3364, 3362, 1, 0, 0, 0, 3364, 3365, 1, 0, 0, 0, 3365, 3367, 1, 0, 0, 0, 3366, 3360, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3372, 1, 0, 0, 0, 3368, 3369, 5, 79, 0, 0, 3369, 3370, 3, 712, 356, 0, 3370, 3371, 7, 48, 0, 0, 3371, 3373, 1, 0, 0, 0, 3372, 3368, 1, 0, 0, 0, 3372, 3373, 1, 0, 0, 0, 3373, 3385, 1, 0, 0, 0, 3374, 3375, 5, 866, 0, 0, 3375, 3380, 3, 236, 118, 0, 3376, 3377, 5, 868, 0, 0, 3377, 3379, 3, 236, 118, 0, 3378, 3376, 1, 0, 0, 0, 3379, 3382, 1, 0, 0, 0, 3380, 3378, 1, 0, 0, 0, 3380, 3381, 1, 0, 0, 0, 3381, 3383, 1, 0, 0, 0, 3382, 3380, 1, 0, 0, 0, 3383, 3384, 5, 867, 0, 0, 3384, 3386, 1, 0, 0, 0, 3385, 3374, 1, 0, 0, 0, 3385, 3386, 1, 0, 0, 0, 3386, 3396, 1, 0, 0, 0, 3387, 3388, 5, 155, 0, 0, 3388, 3393, 3, 234, 117, 0, 3389, 3390, 5, 868, 0, 0, 3390, 3392, 3, 234, 117, 0, 3391, 3389, 1, 0, 0, 0, 3392, 3395, 1, 0, 0, 0, 3393, 3391, 1, 0, 0, 0, 3393, 3394, 1, 0, 0, 0, 3394, 3397, 1, 0, 0, 0, 3395, 3393, 1, 0, 0, 0, 3396, 3387, 1, 0, 0, 0, 3396, 3397, 1, 0, 0, 0, 3397, 203, 1, 0, 0, 0, 3398, 3399, 5, 103, 0, 0, 3399, 3401, 5, 695, 0, 0, 3400, 3402, 7, 46, 0, 0, 3401, 3400, 1, 0, 0, 0, 3401, 3402, 1, 0, 0, 0, 3402, 3404, 1, 0, 0, 0, 3403, 3405, 5, 450, 0, 0, 3404, 3403, 1, 0, 0, 0, 3404, 3405, 1, 0, 0, 0, 3405, 3406, 1, 0, 0, 0, 3406, 3407, 5, 83, 0, 0, 3407, 3409, 5, 882, 0, 0, 3408, 3410, 7, 7, 0, 0, 3409, 3408, 1, 0, 0, 0, 3409, 3410, 1, 0, 0, 0, 3410, 3411, 1, 0, 0, 0, 3411, 3412, 5, 88, 0, 0, 3412, 3413, 5, 173, 0, 0, 3413, 3417, 3, 652, 326, 0, 3414, 3415, 5, 26, 0, 0, 3415, 3416, 5, 155, 0, 0, 3416, 3418, 3, 688, 344, 0, 3417, 3414, 1, 0, 0, 0, 3417, 3418, 1, 0, 0, 0, 3418, 3429, 1, 0, 0, 0, 3419, 3420, 5, 587, 0, 0, 3420, 3421, 5, 423, 0, 0, 3421, 3423, 5, 20, 0, 0, 3422, 3424, 5, 859, 0, 0, 3423, 3422, 1, 0, 0, 0, 3423, 3424, 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 3427, 5, 882, 0, 0, 3426, 3428, 5, 858, 0, 0, 3427, 3426, 1, 0, 0, 0, 3427, 3428, 1, 0, 0, 0, 3428, 3430, 1, 0, 0, 0, 3429, 3419, 1, 0, 0, 0, 3429, 3430, 1, 0, 0, 0, 3430, 3435, 1, 0, 0, 0, 3431, 3432, 5, 79, 0, 0, 3432, 3433, 3, 712, 356, 0, 3433, 3434, 7, 48, 0, 0, 3434, 3436, 1, 0, 0, 0, 3435, 3431, 1, 0, 0, 0, 3435, 3436, 1, 0, 0, 0, 3436, 3448, 1, 0, 0, 0, 3437, 3438, 5, 866, 0, 0, 3438, 3443, 3, 236, 118, 0, 3439, 3440, 5, 868, 0, 0, 3440, 3442, 3, 236, 118, 0, 3441, 3439, 1, 0, 0, 0, 3442, 3445, 1, 0, 0, 0, 3443, 3441, 1, 0, 0, 0, 3443, 3444, 1, 0, 0, 0, 3444, 3446, 1, 0, 0, 0, 3445, 3443, 1, 0, 0, 0, 3446, 3447, 5, 867, 0, 0, 3447, 3449, 1, 0, 0, 0, 3448, 3437, 1, 0, 0, 0, 3448, 3449, 1, 0, 0, 0, 3449, 3459, 1, 0, 0, 0, 3450, 3451, 5, 155, 0, 0, 3451, 3456, 3, 234, 117, 0, 3452, 3453, 5, 868, 0, 0, 3453, 3455, 3, 234, 117, 0, 3454, 3452, 1, 0, 0, 0, 3455, 3458, 1, 0, 0, 0, 3456, 3454, 1, 0, 0, 0, 3456, 3457, 1, 0, 0, 0, 3457, 3460, 1, 0, 0, 0, 3458, 3456, 1, 0, 0, 0, 3459, 3450, 1, 0, 0, 0, 3459, 3460, 1, 0, 0, 0, 3460, 205, 1, 0, 0, 0, 3461, 3462, 5, 866, 0, 0, 3462, 3464, 3, 224, 112, 0, 3463, 3465, 3, 258, 129, 0, 3464, 3463, 1, 0, 0, 0, 3464, 3465, 1, 0, 0, 0, 3465, 3467, 1, 0, 0, 0, 3466, 3468, 3, 318, 159, 0, 3467, 3466, 1, 0, 0, 0, 3467, 3468, 1, 0, 0, 0, 3468, 3469, 1, 0, 0, 0, 3469, 3471, 5, 867, 0, 0, 3470, 3472, 3, 258, 129, 0, 3471, 3470, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3474, 1, 0, 0, 0, 3473, 3475, 3, 318, 159, 0, 3474, 3473, 1, 0, 0, 0, 3474, 3475, 1, 0, 0, 0, 3475, 3477, 1, 0, 0, 0, 3476, 3478, 3, 302, 151, 0, 3477, 3476, 1, 0, 0, 0, 3477, 3478, 1, 0, 0, 0, 3478, 207, 1, 0, 0, 0, 3479, 3481, 5, 143, 0, 0, 3480, 3482, 7, 49, 0, 0, 3481, 3480, 1, 0, 0, 0, 3481, 3482, 1, 0, 0, 0, 3482, 3484, 1, 0, 0, 0, 3483, 3485, 5, 88, 0, 0, 3484, 3483, 1, 0, 0, 0, 3484, 3485, 1, 0, 0, 0, 3485, 3486, 1, 0, 0, 0, 3486, 3492, 3, 652, 326, 0, 3487, 3488, 5, 130, 0, 0, 3488, 3489, 5, 866, 0, 0, 3489, 3490, 3, 670, 335, 0, 3490, 3491, 5, 867, 0, 0, 3491, 3493, 1, 0, 0, 0, 3492, 3487, 1, 0, 0, 0, 3492, 3493, 1, 0, 0, 0, 3493, 3502, 1, 0, 0, 0, 3494, 3495, 5, 866, 0, 0, 3495, 3496, 3, 660, 330, 0, 3496, 3497, 5, 867, 0, 0, 3497, 3499, 1, 0, 0, 0, 3498, 3494, 1, 0, 0, 0, 3498, 3499, 1, 0, 0, 0, 3499, 3500, 1, 0, 0, 0, 3500, 3503, 3, 228, 114, 0, 3501, 3503, 3, 232, 116, 0, 3502, 3498, 1, 0, 0, 0, 3502, 3501, 1, 0, 0, 0, 3503, 209, 1, 0, 0, 0, 3504, 3508, 3, 280, 140, 0, 3505, 3507, 3, 282, 141, 0, 3506, 3505, 1, 0, 0, 0, 3507, 3510, 1, 0, 0, 0, 3508, 3506, 1, 0, 0, 0, 3508, 3509, 1, 0, 0, 0, 3509, 3519, 1, 0, 0, 0, 3510, 3508, 1, 0, 0, 0, 3511, 3513, 5, 181, 0, 0, 3512, 3514, 7, 45, 0, 0, 3513, 3512, 1, 0, 0, 0, 3513, 3514, 1, 0, 0, 0, 3514, 3517, 1, 0, 0, 0, 3515, 3518, 3, 280, 140, 0, 3516, 3518, 3, 278, 139, 0, 3517, 3515, 1, 0, 0, 0, 3517, 3516, 1, 0, 0, 0, 3518, 3520, 1, 0, 0, 0, 3519, 3511, 1, 0, 0, 0, 3519, 3520, 1, 0, 0, 0, 3520, 3525, 1, 0, 0, 0, 3521, 3522, 5, 868, 0, 0, 3522, 3524, 3, 284, 142, 0, 3523, 3521, 1, 0, 0, 0, 3524, 3527, 1, 0, 0, 0, 3525, 3523, 1, 0, 0, 0, 3525, 3526, 1, 0, 0, 0, 3526, 3529, 1, 0, 0, 0, 3527, 3525, 1, 0, 0, 0, 3528, 3530, 3, 258, 129, 0, 3529, 3528, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3532, 1, 0, 0, 0, 3531, 3533, 3, 318, 159, 0, 3532, 3531, 1, 0, 0, 0, 3532, 3533, 1, 0, 0, 0, 3533, 3535, 1, 0, 0, 0, 3534, 3536, 3, 238, 119, 0, 3535, 3534, 1, 0, 0, 0, 3535, 3536, 1, 0, 0, 0, 3536, 3538, 1, 0, 0, 0, 3537, 3539, 3, 302, 151, 0, 3538, 3537, 1, 0, 0, 0, 3538, 3539, 1, 0, 0, 0, 3539, 3564, 1, 0, 0, 0, 3540, 3544, 3, 278, 139, 0, 3541, 3543, 3, 282, 141, 0, 3542, 3541, 1, 0, 0, 0, 3543, 3546, 1, 0, 0, 0, 3544, 3542, 1, 0, 0, 0, 3544, 3545, 1, 0, 0, 0, 3545, 3552, 1, 0, 0, 0, 3546, 3544, 1, 0, 0, 0, 3547, 3549, 5, 181, 0, 0, 3548, 3550, 7, 45, 0, 0, 3549, 3548, 1, 0, 0, 0, 3549, 3550, 1, 0, 0, 0, 3550, 3551, 1, 0, 0, 0, 3551, 3553, 3, 278, 139, 0, 3552, 3547, 1, 0, 0, 0, 3552, 3553, 1, 0, 0, 0, 3553, 3555, 1, 0, 0, 0, 3554, 3556, 3, 258, 129, 0, 3555, 3554, 1, 0, 0, 0, 3555, 3556, 1, 0, 0, 0, 3556, 3558, 1, 0, 0, 0, 3557, 3559, 3, 318, 159, 0, 3558, 3557, 1, 0, 0, 0, 3558, 3559, 1, 0, 0, 0, 3559, 3561, 1, 0, 0, 0, 3560, 3562, 3, 238, 119, 0, 3561, 3560, 1, 0, 0, 0, 3561, 3562, 1, 0, 0, 0, 3562, 3564, 1, 0, 0, 0, 3563, 3504, 1, 0, 0, 0, 3563, 3540, 1, 0, 0, 0, 3564, 211, 1, 0, 0, 0, 3565, 3567, 3, 50, 25, 0, 3566, 3565, 1, 0, 0, 0, 3566, 3567, 1, 0, 0, 0, 3567, 3568, 1, 0, 0, 0, 3568, 3570, 3, 214, 107, 0, 3569, 3571, 3, 258, 129, 0, 3570, 3569, 1, 0, 0, 0, 3570, 3571, 1, 0, 0, 0, 3571, 3573, 1, 0, 0, 0, 3572, 3574, 3, 318, 159, 0, 3573, 3572, 1, 0, 0, 0, 3573, 3574, 1, 0, 0, 0, 3574, 3576, 1, 0, 0, 0, 3575, 3577, 3, 302, 151, 0, 3576, 3575, 1, 0, 0, 0, 3576, 3577, 1, 0, 0, 0, 3577, 213, 1, 0, 0, 0, 3578, 3579, 6, 107, -1, 0, 3579, 3580, 3, 216, 108, 0, 3580, 3595, 1, 0, 0, 0, 3581, 3582, 10, 2, 0, 0, 3582, 3584, 5, 181, 0, 0, 3583, 3585, 7, 45, 0, 0, 3584, 3583, 1, 0, 0, 0, 3584, 3585, 1, 0, 0, 0, 3585, 3586, 1, 0, 0, 0, 3586, 3594, 3, 216, 108, 0, 3587, 3588, 10, 1, 0, 0, 3588, 3590, 5, 59, 0, 0, 3589, 3591, 7, 45, 0, 0, 3590, 3589, 1, 0, 0, 0, 3590, 3591, 1, 0, 0, 0, 3591, 3592, 1, 0, 0, 0, 3592, 3594, 3, 216, 108, 0, 3593, 3581, 1, 0, 0, 0, 3593, 3587, 1, 0, 0, 0, 3594, 3597, 1, 0, 0, 0, 3595, 3593, 1, 0, 0, 0, 3595, 3596, 1, 0, 0, 0, 3596, 215, 1, 0, 0, 0, 3597, 3595, 1, 0, 0, 0, 3598, 3599, 6, 108, -1, 0, 3599, 3600, 3, 218, 109, 0, 3600, 3609, 1, 0, 0, 0, 3601, 3602, 10, 1, 0, 0, 3602, 3604, 5, 828, 0, 0, 3603, 3605, 7, 45, 0, 0, 3604, 3603, 1, 0, 0, 0, 3604, 3605, 1, 0, 0, 0, 3605, 3606, 1, 0, 0, 0, 3606, 3608, 3, 218, 109, 0, 3607, 3601, 1, 0, 0, 0, 3608, 3611, 1, 0, 0, 0, 3609, 3607, 1, 0, 0, 0, 3609, 3610, 1, 0, 0, 0, 3610, 217, 1, 0, 0, 0, 3611, 3609, 1, 0, 0, 0, 3612, 3627, 3, 226, 113, 0, 3613, 3614, 5, 866, 0, 0, 3614, 3616, 3, 214, 107, 0, 3615, 3617, 3, 258, 129, 0, 3616, 3615, 1, 0, 0, 0, 3616, 3617, 1, 0, 0, 0, 3617, 3619, 1, 0, 0, 0, 3618, 3620, 3, 318, 159, 0, 3619, 3618, 1, 0, 0, 0, 3619, 3620, 1, 0, 0, 0, 3620, 3622, 1, 0, 0, 0, 3621, 3623, 3, 302, 151, 0, 3622, 3621, 1, 0, 0, 0, 3622, 3623, 1, 0, 0, 0, 3623, 3624, 1, 0, 0, 0, 3624, 3625, 5, 867, 0, 0, 3625, 3627, 1, 0, 0, 0, 3626, 3612, 1, 0, 0, 0, 3626, 3613, 1, 0, 0, 0, 3627, 219, 1, 0, 0, 0, 3628, 3631, 3, 254, 127, 0, 3629, 3631, 3, 256, 128, 0, 3630, 3628, 1, 0, 0, 0, 3630, 3629, 1, 0, 0, 0, 3631, 221, 1, 0, 0, 0, 3632, 3636, 3, 230, 115, 0, 3633, 3634, 5, 125, 0, 0, 3634, 3635, 5, 20, 0, 0, 3635, 3637, 3, 674, 337, 0, 3636, 3633, 1, 0, 0, 0, 3636, 3637, 1, 0, 0, 0, 3637, 3640, 1, 0, 0, 0, 3638, 3639, 5, 100, 0, 0, 3639, 3641, 3, 320, 160, 0, 3640, 3638, 1, 0, 0, 0, 3640, 3641, 1, 0, 0, 0, 3641, 223, 1, 0, 0, 0, 3642, 3647, 3, 226, 113, 0, 3643, 3644, 7, 50, 0, 0, 3644, 3646, 3, 226, 113, 0, 3645, 3643, 1, 0, 0, 0, 3646, 3649, 1, 0, 0, 0, 3647, 3645, 1, 0, 0, 0, 3647, 3648, 1, 0, 0, 0, 3648, 3651, 1, 0, 0, 0, 3649, 3647, 1, 0, 0, 0, 3650, 3652, 3, 258, 129, 0, 3651, 3650, 1, 0, 0, 0, 3651, 3652, 1, 0, 0, 0, 3652, 3654, 1, 0, 0, 0, 3653, 3655, 3, 318, 159, 0, 3654, 3653, 1, 0, 0, 0, 3654, 3655, 1, 0, 0, 0, 3655, 3657, 1, 0, 0, 0, 3656, 3658, 3, 302, 151, 0, 3657, 3656, 1, 0, 0, 0, 3657, 3658, 1, 0, 0, 0, 3658, 225, 1, 0, 0, 0, 3659, 3663, 3, 210, 105, 0, 3660, 3663, 3, 618, 309, 0, 3661, 3663, 3, 222, 111, 0, 3662, 3659, 1, 0, 0, 0, 3662, 3660, 1, 0, 0, 0, 3662, 3661, 1, 0, 0, 0, 3663, 227, 1, 0, 0, 0, 3664, 3670, 3, 210, 105, 0, 3665, 3666, 5, 173, 0, 0, 3666, 3670, 3, 652, 326, 0, 3667, 3670, 3, 742, 371, 0, 3668, 3670, 3, 230, 115, 0, 3669, 3664, 1, 0, 0, 0, 3669, 3665, 1, 0, 0, 0, 3669, 3667, 1, 0, 0, 0, 3669, 3668, 1, 0, 0, 0, 3670, 229, 1, 0, 0, 0, 3671, 3672, 5, 189, 0, 0, 3672, 3673, 5, 586, 0, 0, 3673, 3679, 3, 744, 372, 0, 3674, 3675, 5, 868, 0, 0, 3675, 3676, 5, 586, 0, 0, 3676, 3678, 3, 744, 372, 0, 3677, 3674, 1, 0, 0, 0, 3678, 3681, 1, 0, 0, 0, 3679, 3677, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 231, 1, 0, 0, 0, 3681, 3679, 1, 0, 0, 0, 3682, 3683, 5, 155, 0, 0, 3683, 3688, 3, 234, 117, 0, 3684, 3685, 5, 868, 0, 0, 3685, 3687, 3, 234, 117, 0, 3686, 3684, 1, 0, 0, 0, 3687, 3690, 1, 0, 0, 0, 3688, 3686, 1, 0, 0, 0, 3688, 3689, 1, 0, 0, 0, 3689, 233, 1, 0, 0, 0, 3690, 3688, 1, 0, 0, 0, 3691, 3692, 3, 662, 331, 0, 3692, 3693, 5, 857, 0, 0, 3693, 3694, 3, 746, 373, 0, 3694, 235, 1, 0, 0, 0, 3695, 3698, 3, 706, 353, 0, 3696, 3698, 5, 892, 0, 0, 3697, 3695, 1, 0, 0, 0, 3697, 3696, 1, 0, 0, 0, 3698, 237, 1, 0, 0, 0, 3699, 3700, 5, 65, 0, 0, 3700, 3710, 7, 51, 0, 0, 3701, 3702, 5, 510, 0, 0, 3702, 3707, 3, 652, 326, 0, 3703, 3704, 5, 868, 0, 0, 3704, 3706, 3, 652, 326, 0, 3705, 3703, 1, 0, 0, 0, 3706, 3709, 1, 0, 0, 0, 3707, 3705, 1, 0, 0, 0, 3707, 3708, 1, 0, 0, 0, 3708, 3711, 1, 0, 0, 0, 3709, 3707, 1, 0, 0, 0, 3710, 3701, 1, 0, 0, 0, 3710, 3711, 1, 0, 0, 0, 3711, 3714, 1, 0, 0, 0, 3712, 3713, 7, 52, 0, 0, 3713, 3715, 5, 105, 0, 0, 3714, 3712, 1, 0, 0, 0, 3714, 3715, 1, 0, 0, 0, 3715, 3721, 1, 0, 0, 0, 3716, 3717, 5, 104, 0, 0, 3717, 3718, 5, 80, 0, 0, 3718, 3719, 5, 594, 0, 0, 3719, 3721, 5, 491, 0, 0, 3720, 3699, 1, 0, 0, 0, 3720, 3716, 1, 0, 0, 0, 3721, 239, 1, 0, 0, 0, 3722, 3724, 5, 44, 0, 0, 3723, 3725, 5, 107, 0, 0, 3724, 3723, 1, 0, 0, 0, 3724, 3725, 1, 0, 0, 0, 3725, 3727, 1, 0, 0, 0, 3726, 3728, 5, 549, 0, 0, 3727, 3726, 1, 0, 0, 0, 3727, 3728, 1, 0, 0, 0, 3728, 3730, 1, 0, 0, 0, 3729, 3731, 5, 79, 0, 0, 3730, 3729, 1, 0, 0, 0, 3730, 3731, 1, 0, 0, 0, 3731, 3732, 1, 0, 0, 0, 3732, 3733, 5, 68, 0, 0, 3733, 3738, 3, 652, 326, 0, 3734, 3736, 5, 13, 0, 0, 3735, 3734, 1, 0, 0, 0, 3735, 3736, 1, 0, 0, 0, 3736, 3737, 1, 0, 0, 0, 3737, 3739, 3, 706, 353, 0, 3738, 3735, 1, 0, 0, 0, 3738, 3739, 1, 0, 0, 0, 3739, 3745, 1, 0, 0, 0, 3740, 3741, 5, 130, 0, 0, 3741, 3742, 5, 866, 0, 0, 3742, 3743, 3, 670, 335, 0, 3743, 3744, 5, 867, 0, 0, 3744, 3746, 1, 0, 0, 0, 3745, 3740, 1, 0, 0, 0, 3745, 3746, 1, 0, 0, 0, 3746, 3749, 1, 0, 0, 0, 3747, 3748, 5, 192, 0, 0, 3748, 3750, 3, 804, 402, 0, 3749, 3747, 1, 0, 0, 0, 3749, 3750, 1, 0, 0, 0, 3750, 3752, 1, 0, 0, 0, 3751, 3753, 3, 258, 129, 0, 3752, 3751, 1, 0, 0, 0, 3752, 3753, 1, 0, 0, 0, 3753, 3756, 1, 0, 0, 0, 3754, 3755, 5, 100, 0, 0, 3755, 3757, 3, 320, 160, 0, 3756, 3754, 1, 0, 0, 0, 3756, 3757, 1, 0, 0, 0, 3757, 241, 1, 0, 0, 0, 3758, 3760, 5, 44, 0, 0, 3759, 3761, 5, 107, 0, 0, 3760, 3759, 1, 0, 0, 0, 3760, 3761, 1, 0, 0, 0, 3761, 3763, 1, 0, 0, 0, 3762, 3764, 5, 549, 0, 0, 3763, 3762, 1, 0, 0, 0, 3763, 3764, 1, 0, 0, 0, 3764, 3766, 1, 0, 0, 0, 3765, 3767, 5, 79, 0, 0, 3766, 3765, 1, 0, 0, 0, 3766, 3767, 1, 0, 0, 0, 3767, 3807, 1, 0, 0, 0, 3768, 3771, 3, 652, 326, 0, 3769, 3770, 5, 865, 0, 0, 3770, 3772, 5, 850, 0, 0, 3771, 3769, 1, 0, 0, 0, 3771, 3772, 1, 0, 0, 0, 3772, 3781, 1, 0, 0, 0, 3773, 3774, 5, 868, 0, 0, 3774, 3777, 3, 652, 326, 0, 3775, 3776, 5, 865, 0, 0, 3776, 3778, 5, 850, 0, 0, 3777, 3775, 1, 0, 0, 0, 3777, 3778, 1, 0, 0, 0, 3778, 3780, 1, 0, 0, 0, 3779, 3773, 1, 0, 0, 0, 3780, 3783, 1, 0, 0, 0, 3781, 3779, 1, 0, 0, 0, 3781, 3782, 1, 0, 0, 0, 3782, 3784, 1, 0, 0, 0, 3783, 3781, 1, 0, 0, 0, 3784, 3785, 5, 68, 0, 0, 3785, 3786, 3, 262, 131, 0, 3786, 3808, 1, 0, 0, 0, 3787, 3788, 5, 68, 0, 0, 3788, 3791, 3, 652, 326, 0, 3789, 3790, 5, 865, 0, 0, 3790, 3792, 5, 850, 0, 0, 3791, 3789, 1, 0, 0, 0, 3791, 3792, 1, 0, 0, 0, 3792, 3801, 1, 0, 0, 0, 3793, 3794, 5, 868, 0, 0, 3794, 3797, 3, 652, 326, 0, 3795, 3796, 5, 865, 0, 0, 3796, 3798, 5, 850, 0, 0, 3797, 3795, 1, 0, 0, 0, 3797, 3798, 1, 0, 0, 0, 3798, 3800, 1, 0, 0, 0, 3799, 3793, 1, 0, 0, 0, 3800, 3803, 1, 0, 0, 0, 3801, 3799, 1, 0, 0, 0, 3801, 3802, 1, 0, 0, 0, 3802, 3804, 1, 0, 0, 0, 3803, 3801, 1, 0, 0, 0, 3804, 3805, 5, 188, 0, 0, 3805, 3806, 3, 262, 131, 0, 3806, 3808, 1, 0, 0, 0, 3807, 3768, 1, 0, 0, 0, 3807, 3787, 1, 0, 0, 0, 3808, 3811, 1, 0, 0, 0, 3809, 3810, 5, 192, 0, 0, 3810, 3812, 3, 804, 402, 0, 3811, 3809, 1, 0, 0, 0, 3811, 3812, 1, 0, 0, 0, 3812, 243, 1, 0, 0, 0, 3813, 3814, 5, 417, 0, 0, 3814, 3815, 3, 652, 326, 0, 3815, 3820, 5, 516, 0, 0, 3816, 3818, 5, 13, 0, 0, 3817, 3816, 1, 0, 0, 0, 3817, 3818, 1, 0, 0, 0, 3818, 3819, 1, 0, 0, 0, 3819, 3821, 3, 706, 353, 0, 3820, 3817, 1, 0, 0, 0, 3820, 3821, 1, 0, 0, 0, 3821, 245, 1, 0, 0, 0, 3822, 3823, 5, 417, 0, 0, 3823, 3824, 3, 652, 326, 0, 3824, 3825, 5, 135, 0, 0, 3825, 3832, 3, 642, 321, 0, 3826, 3827, 3, 814, 407, 0, 3827, 3828, 5, 866, 0, 0, 3828, 3829, 3, 748, 374, 0, 3829, 3830, 5, 867, 0, 0, 3830, 3833, 1, 0, 0, 0, 3831, 3833, 7, 53, 0, 0, 3832, 3826, 1, 0, 0, 0, 3832, 3831, 1, 0, 0, 0, 3833, 3836, 1, 0, 0, 0, 3834, 3835, 5, 192, 0, 0, 3835, 3837, 3, 804, 402, 0, 3836, 3834, 1, 0, 0, 0, 3836, 3837, 1, 0, 0, 0, 3837, 3840, 1, 0, 0, 0, 3838, 3839, 5, 100, 0, 0, 3839, 3841, 3, 320, 160, 0, 3840, 3838, 1, 0, 0, 0, 3840, 3841, 1, 0, 0, 0, 3841, 247, 1, 0, 0, 0, 3842, 3843, 5, 417, 0, 0, 3843, 3844, 3, 652, 326, 0, 3844, 3845, 5, 135, 0, 0, 3845, 3848, 7, 54, 0, 0, 3846, 3847, 5, 192, 0, 0, 3847, 3849, 3, 804, 402, 0, 3848, 3846, 1, 0, 0, 0, 3848, 3849, 1, 0, 0, 0, 3849, 3852, 1, 0, 0, 0, 3850, 3851, 5, 100, 0, 0, 3851, 3853, 3, 320, 160, 0, 3852, 3850, 1, 0, 0, 0, 3852, 3853, 1, 0, 0, 0, 3853, 249, 1, 0, 0, 0, 3854, 3855, 5, 417, 0, 0, 3855, 3856, 3, 652, 326, 0, 3856, 3857, 5, 334, 0, 0, 3857, 251, 1, 0, 0, 0, 3858, 3859, 5, 425, 0, 0, 3859, 3860, 5, 173, 0, 0, 3860, 3861, 5, 68, 0, 0, 3861, 3866, 3, 716, 358, 0, 3862, 3863, 5, 868, 0, 0, 3863, 3865, 3, 716, 358, 0, 3864, 3862, 1, 0, 0, 0, 3865, 3868, 1, 0, 0, 0, 3866, 3864, 1, 0, 0, 0, 3866, 3867, 1, 0, 0, 0, 3867, 253, 1, 0, 0, 0, 3868, 3866, 1, 0, 0, 0, 3869, 3871, 5, 185, 0, 0, 3870, 3872, 5, 107, 0, 0, 3871, 3870, 1, 0, 0, 0, 3871, 3872, 1, 0, 0, 0, 3872, 3874, 1, 0, 0, 0, 3873, 3875, 5, 79, 0, 0, 3874, 3873, 1, 0, 0, 0, 3874, 3875, 1, 0, 0, 0, 3875, 3876, 1, 0, 0, 0, 3876, 3881, 3, 652, 326, 0, 3877, 3879, 5, 13, 0, 0, 3878, 3877, 1, 0, 0, 0, 3878, 3879, 1, 0, 0, 0, 3879, 3880, 1, 0, 0, 0, 3880, 3882, 3, 706, 353, 0, 3881, 3878, 1, 0, 0, 0, 3881, 3882, 1, 0, 0, 0, 3882, 3883, 1, 0, 0, 0, 3883, 3884, 5, 155, 0, 0, 3884, 3889, 3, 234, 117, 0, 3885, 3886, 5, 868, 0, 0, 3886, 3888, 3, 234, 117, 0, 3887, 3885, 1, 0, 0, 0, 3888, 3891, 1, 0, 0, 0, 3889, 3887, 1, 0, 0, 0, 3889, 3890, 1, 0, 0, 0, 3890, 3894, 1, 0, 0, 0, 3891, 3889, 1, 0, 0, 0, 3892, 3893, 5, 192, 0, 0, 3893, 3895, 3, 804, 402, 0, 3894, 3892, 1, 0, 0, 0, 3894, 3895, 1, 0, 0, 0, 3895, 3897, 1, 0, 0, 0, 3896, 3898, 3, 258, 129, 0, 3897, 3896, 1, 0, 0, 0, 3897, 3898, 1, 0, 0, 0, 3898, 3900, 1, 0, 0, 0, 3899, 3901, 3, 318, 159, 0, 3900, 3899, 1, 0, 0, 0, 3900, 3901, 1, 0, 0, 0, 3901, 255, 1, 0, 0, 0, 3902, 3904, 5, 185, 0, 0, 3903, 3905, 5, 107, 0, 0, 3904, 3903, 1, 0, 0, 0, 3904, 3905, 1, 0, 0, 0, 3905, 3907, 1, 0, 0, 0, 3906, 3908, 5, 79, 0, 0, 3907, 3906, 1, 0, 0, 0, 3907, 3908, 1, 0, 0, 0, 3908, 3909, 1, 0, 0, 0, 3909, 3910, 3, 262, 131, 0, 3910, 3911, 5, 155, 0, 0, 3911, 3916, 3, 234, 117, 0, 3912, 3913, 5, 868, 0, 0, 3913, 3915, 3, 234, 117, 0, 3914, 3912, 1, 0, 0, 0, 3915, 3918, 1, 0, 0, 0, 3916, 3914, 1, 0, 0, 0, 3916, 3917, 1, 0, 0, 0, 3917, 3921, 1, 0, 0, 0, 3918, 3916, 1, 0, 0, 0, 3919, 3920, 5, 192, 0, 0, 3920, 3922, 3, 804, 402, 0, 3921, 3919, 1, 0, 0, 0, 3921, 3922, 1, 0, 0, 0, 3922, 257, 1, 0, 0, 0, 3923, 3924, 5, 125, 0, 0, 3924, 3925, 5, 20, 0, 0, 3925, 3930, 3, 260, 130, 0, 3926, 3927, 5, 868, 0, 0, 3927, 3929, 3, 260, 130, 0, 3928, 3926, 1, 0, 0, 0, 3929, 3932, 1, 0, 0, 0, 3930, 3928, 1, 0, 0, 0, 3930, 3931, 1, 0, 0, 0, 3931, 259, 1, 0, 0, 0, 3932, 3930, 1, 0, 0, 0, 3933, 3935, 3, 804, 402, 0, 3934, 3936, 7, 55, 0, 0, 3935, 3934, 1, 0, 0, 0, 3935, 3936, 1, 0, 0, 0, 3936, 261, 1, 0, 0, 0, 3937, 3942, 3, 264, 132, 0, 3938, 3939, 5, 868, 0, 0, 3939, 3941, 3, 264, 132, 0, 3940, 3938, 1, 0, 0, 0, 3941, 3944, 1, 0, 0, 0, 3942, 3940, 1, 0, 0, 0, 3942, 3943, 1, 0, 0, 0, 3943, 263, 1, 0, 0, 0, 3944, 3942, 1, 0, 0, 0, 3945, 3949, 3, 266, 133, 0, 3946, 3948, 3, 274, 137, 0, 3947, 3946, 1, 0, 0, 0, 3948, 3951, 1, 0, 0, 0, 3949, 3947, 1, 0, 0, 0, 3949, 3950, 1, 0, 0, 0, 3950, 3964, 1, 0, 0, 0, 3951, 3949, 1, 0, 0, 0, 3952, 3953, 5, 866, 0, 0, 3953, 3957, 3, 266, 133, 0, 3954, 3956, 3, 274, 137, 0, 3955, 3954, 1, 0, 0, 0, 3956, 3959, 1, 0, 0, 0, 3957, 3955, 1, 0, 0, 0, 3957, 3958, 1, 0, 0, 0, 3958, 3960, 1, 0, 0, 0, 3959, 3957, 1, 0, 0, 0, 3960, 3961, 5, 867, 0, 0, 3961, 3964, 1, 0, 0, 0, 3962, 3964, 3, 286, 143, 0, 3963, 3945, 1, 0, 0, 0, 3963, 3952, 1, 0, 0, 0, 3963, 3962, 1, 0, 0, 0, 3964, 265, 1, 0, 0, 0, 3965, 3971, 3, 652, 326, 0, 3966, 3967, 5, 130, 0, 0, 3967, 3968, 5, 866, 0, 0, 3968, 3969, 3, 670, 335, 0, 3969, 3970, 5, 867, 0, 0, 3970, 3972, 1, 0, 0, 0, 3971, 3966, 1, 0, 0, 0, 3971, 3972, 1, 0, 0, 0, 3972, 3977, 1, 0, 0, 0, 3973, 3975, 5, 13, 0, 0, 3974, 3973, 1, 0, 0, 0, 3974, 3975, 1, 0, 0, 0, 3975, 3976, 1, 0, 0, 0, 3976, 3978, 3, 706, 353, 0, 3977, 3974, 1, 0, 0, 0, 3977, 3978, 1, 0, 0, 0, 3978, 3987, 1, 0, 0, 0, 3979, 3984, 3, 270, 135, 0, 3980, 3981, 5, 868, 0, 0, 3981, 3983, 3, 270, 135, 0, 3982, 3980, 1, 0, 0, 0, 3983, 3986, 1, 0, 0, 0, 3984, 3982, 1, 0, 0, 0, 3984, 3985, 1, 0, 0, 0, 3985, 3988, 1, 0, 0, 0, 3986, 3984, 1, 0, 0, 0, 3987, 3979, 1, 0, 0, 0, 3987, 3988, 1, 0, 0, 0, 3988, 4011, 1, 0, 0, 0, 3989, 3991, 5, 95, 0, 0, 3990, 3989, 1, 0, 0, 0, 3990, 3991, 1, 0, 0, 0, 3991, 3997, 1, 0, 0, 0, 3992, 3998, 3, 210, 105, 0, 3993, 3994, 5, 866, 0, 0, 3994, 3995, 3, 210, 105, 0, 3995, 3996, 5, 867, 0, 0, 3996, 3998, 1, 0, 0, 0, 3997, 3992, 1, 0, 0, 0, 3997, 3993, 1, 0, 0, 0, 3998, 4000, 1, 0, 0, 0, 3999, 4001, 5, 13, 0, 0, 4000, 3999, 1, 0, 0, 0, 4000, 4001, 1, 0, 0, 0, 4001, 4002, 1, 0, 0, 0, 4002, 4004, 3, 706, 353, 0, 4003, 4005, 3, 268, 134, 0, 4004, 4003, 1, 0, 0, 0, 4004, 4005, 1, 0, 0, 0, 4005, 4011, 1, 0, 0, 0, 4006, 4007, 5, 866, 0, 0, 4007, 4008, 3, 262, 131, 0, 4008, 4009, 5, 867, 0, 0, 4009, 4011, 1, 0, 0, 0, 4010, 3965, 1, 0, 0, 0, 4010, 3990, 1, 0, 0, 0, 4010, 4006, 1, 0, 0, 0, 4011, 267, 1, 0, 0, 0, 4012, 4013, 5, 866, 0, 0, 4013, 4014, 3, 660, 330, 0, 4014, 4015, 5, 867, 0, 0, 4015, 269, 1, 0, 0, 0, 4016, 4017, 7, 56, 0, 0, 4017, 4020, 7, 19, 0, 0, 4018, 4019, 5, 65, 0, 0, 4019, 4021, 3, 272, 136, 0, 4020, 4018, 1, 0, 0, 0, 4020, 4021, 1, 0, 0, 0, 4021, 4022, 1, 0, 0, 0, 4022, 4024, 5, 866, 0, 0, 4023, 4025, 3, 640, 320, 0, 4024, 4023, 1, 0, 0, 0, 4024, 4025, 1, 0, 0, 0, 4025, 4026, 1, 0, 0, 0, 4026, 4027, 5, 867, 0, 0, 4027, 271, 1, 0, 0, 0, 4028, 4034, 5, 91, 0, 0, 4029, 4030, 5, 125, 0, 0, 4030, 4034, 5, 20, 0, 0, 4031, 4032, 5, 74, 0, 0, 4032, 4034, 5, 20, 0, 0, 4033, 4028, 1, 0, 0, 0, 4033, 4029, 1, 0, 0, 0, 4033, 4031, 1, 0, 0, 0, 4034, 273, 1, 0, 0, 0, 4035, 4037, 7, 57, 0, 0, 4036, 4035, 1, 0, 0, 0, 4036, 4037, 1, 0, 0, 0, 4037, 4038, 1, 0, 0, 0, 4038, 4040, 5, 91, 0, 0, 4039, 4041, 5, 95, 0, 0, 4040, 4039, 1, 0, 0, 0, 4040, 4041, 1, 0, 0, 0, 4041, 4042, 1, 0, 0, 0, 4042, 4046, 3, 266, 133, 0, 4043, 4045, 3, 276, 138, 0, 4044, 4043, 1, 0, 0, 0, 4045, 4048, 1, 0, 0, 0, 4046, 4044, 1, 0, 0, 0, 4046, 4047, 1, 0, 0, 0, 4047, 4085, 1, 0, 0, 0, 4048, 4046, 1, 0, 0, 0, 4049, 4050, 5, 172, 0, 0, 4050, 4054, 3, 266, 133, 0, 4051, 4053, 3, 276, 138, 0, 4052, 4051, 1, 0, 0, 0, 4053, 4056, 1, 0, 0, 0, 4054, 4052, 1, 0, 0, 0, 4054, 4055, 1, 0, 0, 0, 4055, 4085, 1, 0, 0, 0, 4056, 4054, 1, 0, 0, 0, 4057, 4059, 7, 58, 0, 0, 4058, 4060, 5, 127, 0, 0, 4059, 4058, 1, 0, 0, 0, 4059, 4060, 1, 0, 0, 0, 4060, 4061, 1, 0, 0, 0, 4061, 4063, 5, 91, 0, 0, 4062, 4064, 5, 95, 0, 0, 4063, 4062, 1, 0, 0, 0, 4063, 4064, 1, 0, 0, 0, 4064, 4065, 1, 0, 0, 0, 4065, 4069, 3, 266, 133, 0, 4066, 4068, 3, 276, 138, 0, 4067, 4066, 1, 0, 0, 0, 4068, 4071, 1, 0, 0, 0, 4069, 4067, 1, 0, 0, 0, 4069, 4070, 1, 0, 0, 0, 4070, 4085, 1, 0, 0, 0, 4071, 4069, 1, 0, 0, 0, 4072, 4080, 5, 113, 0, 0, 4073, 4076, 5, 84, 0, 0, 4074, 4076, 7, 58, 0, 0, 4075, 4073, 1, 0, 0, 0, 4075, 4074, 1, 0, 0, 0, 4076, 4078, 1, 0, 0, 0, 4077, 4079, 5, 127, 0, 0, 4078, 4077, 1, 0, 0, 0, 4078, 4079, 1, 0, 0, 0, 4079, 4081, 1, 0, 0, 0, 4080, 4075, 1, 0, 0, 0, 4080, 4081, 1, 0, 0, 0, 4081, 4082, 1, 0, 0, 0, 4082, 4083, 5, 91, 0, 0, 4083, 4085, 3, 266, 133, 0, 4084, 4036, 1, 0, 0, 0, 4084, 4049, 1, 0, 0, 0, 4084, 4057, 1, 0, 0, 0, 4084, 4072, 1, 0, 0, 0, 4085, 275, 1, 0, 0, 0, 4086, 4087, 5, 119, 0, 0, 4087, 4094, 3, 804, 402, 0, 4088, 4089, 5, 188, 0, 0, 4089, 4090, 5, 866, 0, 0, 4090, 4091, 3, 660, 330, 0, 4091, 4092, 5, 867, 0, 0, 4092, 4094, 1, 0, 0, 0, 4093, 4086, 1, 0, 0, 0, 4093, 4088, 1, 0, 0, 0, 4094, 277, 1, 0, 0, 0, 4095, 4096, 5, 866, 0, 0, 4096, 4097, 3, 280, 140, 0, 4097, 4098, 5, 867, 0, 0, 4098, 4104, 1, 0, 0, 0, 4099, 4100, 5, 866, 0, 0, 4100, 4101, 3, 278, 139, 0, 4101, 4102, 5, 867, 0, 0, 4102, 4104, 1, 0, 0, 0, 4103, 4095, 1, 0, 0, 0, 4103, 4099, 1, 0, 0, 0, 4104, 279, 1, 0, 0, 0, 4105, 4109, 5, 154, 0, 0, 4106, 4108, 3, 296, 148, 0, 4107, 4106, 1, 0, 0, 0, 4108, 4111, 1, 0, 0, 0, 4109, 4107, 1, 0, 0, 0, 4109, 4110, 1, 0, 0, 0, 4110, 4112, 1, 0, 0, 0, 4111, 4109, 1, 0, 0, 0, 4112, 4114, 3, 298, 149, 0, 4113, 4115, 3, 302, 151, 0, 4114, 4113, 1, 0, 0, 0, 4114, 4115, 1, 0, 0, 0, 4115, 4116, 1, 0, 0, 0, 4116, 4118, 3, 308, 154, 0, 4117, 4119, 3, 310, 155, 0, 4118, 4117, 1, 0, 0, 0, 4118, 4119, 1, 0, 0, 0, 4119, 4121, 1, 0, 0, 0, 4120, 4122, 3, 312, 156, 0, 4121, 4120, 1, 0, 0, 0, 4121, 4122, 1, 0, 0, 0, 4122, 4124, 1, 0, 0, 0, 4123, 4125, 3, 314, 157, 0, 4124, 4123, 1, 0, 0, 0, 4124, 4125, 1, 0, 0, 0, 4125, 4127, 1, 0, 0, 0, 4126, 4128, 3, 258, 129, 0, 4127, 4126, 1, 0, 0, 0, 4127, 4128, 1, 0, 0, 0, 4128, 4130, 1, 0, 0, 0, 4129, 4131, 3, 318, 159, 0, 4130, 4129, 1, 0, 0, 0, 4130, 4131, 1, 0, 0, 0, 4131, 4133, 1, 0, 0, 0, 4132, 4134, 3, 302, 151, 0, 4133, 4132, 1, 0, 0, 0, 4133, 4134, 1, 0, 0, 0, 4134, 4136, 1, 0, 0, 0, 4135, 4137, 3, 282, 141, 0, 4136, 4135, 1, 0, 0, 0, 4136, 4137, 1, 0, 0, 0, 4137, 281, 1, 0, 0, 0, 4138, 4140, 5, 181, 0, 0, 4139, 4141, 7, 45, 0, 0, 4140, 4139, 1, 0, 0, 0, 4140, 4141, 1, 0, 0, 0, 4141, 4144, 1, 0, 0, 0, 4142, 4145, 3, 280, 140, 0, 4143, 4145, 3, 278, 139, 0, 4144, 4142, 1, 0, 0, 0, 4144, 4143, 1, 0, 0, 0, 4145, 283, 1, 0, 0, 0, 4146, 4161, 5, 95, 0, 0, 4147, 4162, 3, 280, 140, 0, 4148, 4162, 3, 278, 139, 0, 4149, 4152, 5, 866, 0, 0, 4150, 4153, 3, 280, 140, 0, 4151, 4153, 3, 278, 139, 0, 4152, 4150, 1, 0, 0, 0, 4152, 4151, 1, 0, 0, 0, 4153, 4154, 1, 0, 0, 0, 4154, 4159, 5, 867, 0, 0, 4155, 4157, 5, 13, 0, 0, 4156, 4155, 1, 0, 0, 0, 4156, 4157, 1, 0, 0, 0, 4157, 4158, 1, 0, 0, 0, 4158, 4160, 3, 706, 353, 0, 4159, 4156, 1, 0, 0, 0, 4159, 4160, 1, 0, 0, 0, 4160, 4162, 1, 0, 0, 0, 4161, 4147, 1, 0, 0, 0, 4161, 4148, 1, 0, 0, 0, 4161, 4149, 1, 0, 0, 0, 4162, 285, 1, 0, 0, 0, 4163, 4164, 5, 253, 0, 0, 4164, 4165, 5, 866, 0, 0, 4165, 4166, 5, 882, 0, 0, 4166, 4167, 5, 868, 0, 0, 4167, 4168, 5, 882, 0, 0, 4168, 4169, 5, 337, 0, 0, 4169, 4170, 5, 866, 0, 0, 4170, 4171, 3, 288, 144, 0, 4171, 4172, 5, 867, 0, 0, 4172, 4177, 5, 867, 0, 0, 4173, 4175, 5, 13, 0, 0, 4174, 4173, 1, 0, 0, 0, 4174, 4175, 1, 0, 0, 0, 4175, 4176, 1, 0, 0, 0, 4176, 4178, 3, 706, 353, 0, 4177, 4174, 1, 0, 0, 0, 4177, 4178, 1, 0, 0, 0, 4178, 287, 1, 0, 0, 0, 4179, 4184, 3, 290, 145, 0, 4180, 4181, 5, 868, 0, 0, 4181, 4183, 3, 290, 145, 0, 4182, 4180, 1, 0, 0, 0, 4183, 4186, 1, 0, 0, 0, 4184, 4182, 1, 0, 0, 0, 4184, 4185, 1, 0, 0, 0, 4185, 289, 1, 0, 0, 0, 4186, 4184, 1, 0, 0, 0, 4187, 4204, 3, 662, 331, 0, 4188, 4189, 5, 65, 0, 0, 4189, 4205, 5, 256, 0, 0, 4190, 4202, 3, 726, 363, 0, 4191, 4192, 5, 257, 0, 0, 4192, 4194, 5, 882, 0, 0, 4193, 4195, 3, 292, 146, 0, 4194, 4193, 1, 0, 0, 0, 4194, 4195, 1, 0, 0, 0, 4195, 4197, 1, 0, 0, 0, 4196, 4198, 3, 294, 147, 0, 4197, 4196, 1, 0, 0, 0, 4197, 4198, 1, 0, 0, 0, 4198, 4203, 1, 0, 0, 0, 4199, 4200, 5, 60, 0, 0, 4200, 4201, 5, 257, 0, 0, 4201, 4203, 5, 882, 0, 0, 4202, 4191, 1, 0, 0, 0, 4202, 4199, 1, 0, 0, 0, 4203, 4205, 1, 0, 0, 0, 4204, 4188, 1, 0, 0, 0, 4204, 4190, 1, 0, 0, 0, 4205, 4217, 1, 0, 0, 0, 4206, 4208, 5, 255, 0, 0, 4207, 4209, 5, 257, 0, 0, 4208, 4207, 1, 0, 0, 0, 4208, 4209, 1, 0, 0, 0, 4209, 4210, 1, 0, 0, 0, 4210, 4211, 5, 882, 0, 0, 4211, 4212, 5, 337, 0, 0, 4212, 4213, 5, 866, 0, 0, 4213, 4214, 3, 288, 144, 0, 4214, 4215, 5, 867, 0, 0, 4215, 4217, 1, 0, 0, 0, 4216, 4187, 1, 0, 0, 0, 4216, 4206, 1, 0, 0, 0, 4217, 291, 1, 0, 0, 0, 4218, 4223, 5, 116, 0, 0, 4219, 4223, 5, 382, 0, 0, 4220, 4221, 5, 42, 0, 0, 4221, 4223, 3, 754, 377, 0, 4222, 4218, 1, 0, 0, 0, 4222, 4219, 1, 0, 0, 0, 4222, 4220, 1, 0, 0, 0, 4223, 4224, 1, 0, 0, 0, 4224, 4225, 5, 119, 0, 0, 4225, 4226, 5, 55, 0, 0, 4226, 293, 1, 0, 0, 0, 4227, 4232, 5, 116, 0, 0, 4228, 4232, 5, 382, 0, 0, 4229, 4230, 5, 42, 0, 0, 4230, 4232, 3, 754, 377, 0, 4231, 4227, 1, 0, 0, 0, 4231, 4228, 1, 0, 0, 0, 4231, 4229, 1, 0, 0, 0, 4232, 4233, 1, 0, 0, 0, 4233, 4234, 5, 119, 0, 0, 4234, 4235, 5, 382, 0, 0, 4235, 295, 1, 0, 0, 0, 4236, 4245, 7, 59, 0, 0, 4237, 4245, 5, 76, 0, 0, 4238, 4245, 5, 172, 0, 0, 4239, 4245, 5, 168, 0, 0, 4240, 4245, 5, 166, 0, 0, 4241, 4245, 5, 636, 0, 0, 4242, 4245, 7, 60, 0, 0, 4243, 4245, 5, 167, 0, 0, 4244, 4236, 1, 0, 0, 0, 4244, 4237, 1, 0, 0, 0, 4244, 4238, 1, 0, 0, 0, 4244, 4239, 1, 0, 0, 0, 4244, 4240, 1, 0, 0, 0, 4244, 4241, 1, 0, 0, 0, 4244, 4242, 1, 0, 0, 0, 4244, 4243, 1, 0, 0, 0, 4245, 297, 1, 0, 0, 0, 4246, 4249, 5, 850, 0, 0, 4247, 4249, 3, 300, 150, 0, 4248, 4246, 1, 0, 0, 0, 4248, 4247, 1, 0, 0, 0, 4249, 4254, 1, 0, 0, 0, 4250, 4251, 5, 868, 0, 0, 4251, 4253, 3, 300, 150, 0, 4252, 4250, 1, 0, 0, 0, 4253, 4256, 1, 0, 0, 0, 4254, 4252, 1, 0, 0, 0, 4254, 4255, 1, 0, 0, 0, 4255, 299, 1, 0, 0, 0, 4256, 4254, 1, 0, 0, 0, 4257, 4258, 5, 892, 0, 0, 4258, 4260, 5, 841, 0, 0, 4259, 4257, 1, 0, 0, 0, 4259, 4260, 1, 0, 0, 0, 4260, 4261, 1, 0, 0, 0, 4261, 4266, 3, 804, 402, 0, 4262, 4264, 5, 13, 0, 0, 4263, 4262, 1, 0, 0, 0, 4263, 4264, 1, 0, 0, 0, 4264, 4265, 1, 0, 0, 0, 4265, 4267, 3, 706, 353, 0, 4266, 4263, 1, 0, 0, 0, 4266, 4267, 1, 0, 0, 0, 4267, 4287, 1, 0, 0, 0, 4268, 4273, 3, 764, 382, 0, 4269, 4271, 5, 13, 0, 0, 4270, 4269, 1, 0, 0, 0, 4270, 4271, 1, 0, 0, 0, 4271, 4272, 1, 0, 0, 0, 4272, 4274, 3, 706, 353, 0, 4273, 4270, 1, 0, 0, 0, 4273, 4274, 1, 0, 0, 0, 4274, 4287, 1, 0, 0, 0, 4275, 4276, 3, 702, 351, 0, 4276, 4277, 5, 865, 0, 0, 4277, 4278, 5, 850, 0, 0, 4278, 4287, 1, 0, 0, 0, 4279, 4284, 3, 662, 331, 0, 4280, 4282, 5, 13, 0, 0, 4281, 4280, 1, 0, 0, 0, 4281, 4282, 1, 0, 0, 0, 4282, 4283, 1, 0, 0, 0, 4283, 4285, 3, 706, 353, 0, 4284, 4281, 1, 0, 0, 0, 4284, 4285, 1, 0, 0, 0, 4285, 4287, 1, 0, 0, 0, 4286, 4259, 1, 0, 0, 0, 4286, 4268, 1, 0, 0, 0, 4286, 4275, 1, 0, 0, 0, 4286, 4279, 1, 0, 0, 0, 4287, 301, 1, 0, 0, 0, 4288, 4289, 5, 88, 0, 0, 4289, 4294, 3, 236, 118, 0, 4290, 4291, 5, 868, 0, 0, 4291, 4293, 3, 236, 118, 0, 4292, 4290, 1, 0, 0, 0, 4293, 4296, 1, 0, 0, 0, 4294, 4292, 1, 0, 0, 0, 4294, 4295, 1, 0, 0, 0, 4295, 4325, 1, 0, 0, 0, 4296, 4294, 1, 0, 0, 0, 4297, 4298, 5, 88, 0, 0, 4298, 4299, 5, 372, 0, 0, 4299, 4325, 5, 882, 0, 0, 4300, 4301, 5, 88, 0, 0, 4301, 4302, 5, 128, 0, 0, 4302, 4306, 5, 882, 0, 0, 4303, 4304, 5, 26, 0, 0, 4304, 4305, 5, 155, 0, 0, 4305, 4307, 3, 688, 344, 0, 4306, 4303, 1, 0, 0, 0, 4306, 4307, 1, 0, 0, 0, 4307, 4314, 1, 0, 0, 0, 4308, 4310, 7, 47, 0, 0, 4309, 4311, 3, 304, 152, 0, 4310, 4309, 1, 0, 0, 0, 4311, 4312, 1, 0, 0, 0, 4312, 4310, 1, 0, 0, 0, 4312, 4313, 1, 0, 0, 0, 4313, 4315, 1, 0, 0, 0, 4314, 4308, 1, 0, 0, 0, 4314, 4315, 1, 0, 0, 0, 4315, 4322, 1, 0, 0, 0, 4316, 4318, 5, 102, 0, 0, 4317, 4319, 3, 306, 153, 0, 4318, 4317, 1, 0, 0, 0, 4319, 4320, 1, 0, 0, 0, 4320, 4318, 1, 0, 0, 0, 4320, 4321, 1, 0, 0, 0, 4321, 4323, 1, 0, 0, 0, 4322, 4316, 1, 0, 0, 0, 4322, 4323, 1, 0, 0, 0, 4323, 4325, 1, 0, 0, 0, 4324, 4288, 1, 0, 0, 0, 4324, 4297, 1, 0, 0, 0, 4324, 4300, 1, 0, 0, 0, 4325, 303, 1, 0, 0, 0, 4326, 4327, 5, 174, 0, 0, 4327, 4328, 5, 20, 0, 0, 4328, 4339, 5, 882, 0, 0, 4329, 4331, 5, 123, 0, 0, 4330, 4329, 1, 0, 0, 0, 4330, 4331, 1, 0, 0, 0, 4331, 4332, 1, 0, 0, 0, 4332, 4333, 5, 56, 0, 0, 4333, 4334, 5, 20, 0, 0, 4334, 4339, 5, 882, 0, 0, 4335, 4336, 5, 58, 0, 0, 4336, 4337, 5, 20, 0, 0, 4337, 4339, 5, 882, 0, 0, 4338, 4326, 1, 0, 0, 0, 4338, 4330, 1, 0, 0, 0, 4338, 4335, 1, 0, 0, 0, 4339, 305, 1, 0, 0, 0, 4340, 4341, 5, 171, 0, 0, 4341, 4342, 5, 20, 0, 0, 4342, 4347, 5, 882, 0, 0, 4343, 4344, 5, 174, 0, 0, 4344, 4345, 5, 20, 0, 0, 4345, 4347, 5, 882, 0, 0, 4346, 4340, 1, 0, 0, 0, 4346, 4343, 1, 0, 0, 0, 4347, 307, 1, 0, 0, 0, 4348, 4349, 5, 68, 0, 0, 4349, 4351, 3, 262, 131, 0, 4350, 4348, 1, 0, 0, 0, 4350, 4351, 1, 0, 0, 0, 4351, 4354, 1, 0, 0, 0, 4352, 4353, 5, 192, 0, 0, 4353, 4355, 3, 804, 402, 0, 4354, 4352, 1, 0, 0, 0, 4354, 4355, 1, 0, 0, 0, 4355, 309, 1, 0, 0, 0, 4356, 4357, 5, 74, 0, 0, 4357, 4358, 5, 20, 0, 0, 4358, 4363, 3, 316, 158, 0, 4359, 4360, 5, 868, 0, 0, 4360, 4362, 3, 316, 158, 0, 4361, 4359, 1, 0, 0, 0, 4362, 4365, 1, 0, 0, 0, 4363, 4361, 1, 0, 0, 0, 4363, 4364, 1, 0, 0, 0, 4364, 4368, 1, 0, 0, 0, 4365, 4363, 1, 0, 0, 0, 4366, 4367, 5, 194, 0, 0, 4367, 4369, 5, 584, 0, 0, 4368, 4366, 1, 0, 0, 0, 4368, 4369, 1, 0, 0, 0, 4369, 311, 1, 0, 0, 0, 4370, 4371, 5, 75, 0, 0, 4371, 4372, 3, 804, 402, 0, 4372, 313, 1, 0, 0, 0, 4373, 4374, 5, 689, 0, 0, 4374, 4375, 3, 782, 391, 0, 4375, 4376, 5, 13, 0, 0, 4376, 4377, 5, 866, 0, 0, 4377, 4378, 3, 780, 390, 0, 4378, 4388, 5, 867, 0, 0, 4379, 4380, 5, 868, 0, 0, 4380, 4381, 3, 782, 391, 0, 4381, 4382, 5, 13, 0, 0, 4382, 4383, 5, 866, 0, 0, 4383, 4384, 3, 780, 390, 0, 4384, 4385, 5, 867, 0, 0, 4385, 4387, 1, 0, 0, 0, 4386, 4379, 1, 0, 0, 0, 4387, 4390, 1, 0, 0, 0, 4388, 4386, 1, 0, 0, 0, 4388, 4389, 1, 0, 0, 0, 4389, 315, 1, 0, 0, 0, 4390, 4388, 1, 0, 0, 0, 4391, 4393, 3, 804, 402, 0, 4392, 4394, 7, 55, 0, 0, 4393, 4392, 1, 0, 0, 0, 4393, 4394, 1, 0, 0, 0, 4394, 317, 1, 0, 0, 0, 4395, 4406, 5, 100, 0, 0, 4396, 4397, 3, 320, 160, 0, 4397, 4398, 5, 868, 0, 0, 4398, 4400, 1, 0, 0, 0, 4399, 4396, 1, 0, 0, 0, 4399, 4400, 1, 0, 0, 0, 4400, 4401, 1, 0, 0, 0, 4401, 4407, 3, 320, 160, 0, 4402, 4403, 3, 320, 160, 0, 4403, 4404, 5, 509, 0, 0, 4404, 4405, 3, 320, 160, 0, 4405, 4407, 1, 0, 0, 0, 4406, 4399, 1, 0, 0, 0, 4406, 4402, 1, 0, 0, 0, 4407, 319, 1, 0, 0, 0, 4408, 4412, 3, 712, 356, 0, 4409, 4412, 3, 686, 343, 0, 4410, 4412, 3, 708, 354, 0, 4411, 4408, 1, 0, 0, 0, 4411, 4409, 1, 0, 0, 0, 4411, 4410, 1, 0, 0, 0, 4412, 321, 1, 0, 0, 0, 4413, 4414, 5, 640, 0, 0, 4414, 4423, 5, 664, 0, 0, 4415, 4420, 3, 344, 172, 0, 4416, 4417, 5, 868, 0, 0, 4417, 4419, 3, 344, 172, 0, 4418, 4416, 1, 0, 0, 0, 4419, 4422, 1, 0, 0, 0, 4420, 4418, 1, 0, 0, 0, 4420, 4421, 1, 0, 0, 0, 4421, 4424, 1, 0, 0, 0, 4422, 4420, 1, 0, 0, 0, 4423, 4415, 1, 0, 0, 0, 4423, 4424, 1, 0, 0, 0, 4424, 323, 1, 0, 0, 0, 4425, 4427, 5, 317, 0, 0, 4426, 4428, 5, 691, 0, 0, 4427, 4426, 1, 0, 0, 0, 4427, 4428, 1, 0, 0, 0, 4428, 325, 1, 0, 0, 0, 4429, 4431, 5, 341, 0, 0, 4430, 4432, 5, 691, 0, 0, 4431, 4430, 1, 0, 0, 0, 4431, 4432, 1, 0, 0, 0, 4432, 4438, 1, 0, 0, 0, 4433, 4435, 5, 11, 0, 0, 4434, 4436, 5, 502, 0, 0, 4435, 4434, 1, 0, 0, 0, 4435, 4436, 1, 0, 0, 0, 4436, 4437, 1, 0, 0, 0, 4437, 4439, 5, 326, 0, 0, 4438, 4433, 1, 0, 0, 0, 4438, 4439, 1, 0, 0, 0, 4439, 4444, 1, 0, 0, 0, 4440, 4442, 5, 502, 0, 0, 4441, 4440, 1, 0, 0, 0, 4441, 4442, 1, 0, 0, 0, 4442, 4443, 1, 0, 0, 0, 4443, 4445, 5, 140, 0, 0, 4444, 4441, 1, 0, 0, 0, 4444, 4445, 1, 0, 0, 0, 4445, 327, 1, 0, 0, 0, 4446, 4448, 5, 583, 0, 0, 4447, 4449, 5, 691, 0, 0, 4448, 4447, 1, 0, 0, 0, 4448, 4449, 1, 0, 0, 0, 4449, 4455, 1, 0, 0, 0, 4450, 4452, 5, 11, 0, 0, 4451, 4453, 5, 502, 0, 0, 4452, 4451, 1, 0, 0, 0, 4452, 4453, 1, 0, 0, 0, 4453, 4454, 1, 0, 0, 0, 4454, 4456, 5, 326, 0, 0, 4455, 4450, 1, 0, 0, 0, 4455, 4456, 1, 0, 0, 0, 4456, 4461, 1, 0, 0, 0, 4457, 4459, 5, 502, 0, 0, 4458, 4457, 1, 0, 0, 0, 4458, 4459, 1, 0, 0, 0, 4459, 4460, 1, 0, 0, 0, 4460, 4462, 5, 140, 0, 0, 4461, 4458, 1, 0, 0, 0, 4461, 4462, 1, 0, 0, 0, 4462, 329, 1, 0, 0, 0, 4463, 4464, 5, 589, 0, 0, 4464, 4465, 3, 706, 353, 0, 4465, 331, 1, 0, 0, 0, 4466, 4468, 5, 583, 0, 0, 4467, 4469, 5, 691, 0, 0, 4468, 4467, 1, 0, 0, 0, 4468, 4469, 1, 0, 0, 0, 4469, 4470, 1, 0, 0, 0, 4470, 4472, 5, 176, 0, 0, 4471, 4473, 5, 589, 0, 0, 4472, 4471, 1, 0, 0, 0, 4472, 4473, 1, 0, 0, 0, 4473, 4474, 1, 0, 0, 0, 4474, 4475, 3, 706, 353, 0, 4475, 333, 1, 0, 0, 0, 4476, 4477, 5, 140, 0, 0, 4477, 4478, 5, 589, 0, 0, 4478, 4479, 3, 706, 353, 0, 4479, 335, 1, 0, 0, 0, 4480, 4481, 5, 104, 0, 0, 4481, 4482, 7, 61, 0, 0, 4482, 4487, 3, 346, 173, 0, 4483, 4484, 5, 868, 0, 0, 4484, 4486, 3, 346, 173, 0, 4485, 4483, 1, 0, 0, 0, 4486, 4489, 1, 0, 0, 0, 4487, 4485, 1, 0, 0, 0, 4487, 4488, 1, 0, 0, 0, 4488, 337, 1, 0, 0, 0, 4489, 4487, 1, 0, 0, 0, 4490, 4491, 5, 183, 0, 0, 4491, 4492, 5, 752, 0, 0, 4492, 339, 1, 0, 0, 0, 4493, 4494, 5, 155, 0, 0, 4494, 4495, 5, 313, 0, 0, 4495, 4496, 5, 857, 0, 0, 4496, 4497, 7, 26, 0, 0, 4497, 341, 1, 0, 0, 0, 4498, 4500, 5, 155, 0, 0, 4499, 4501, 7, 62, 0, 0, 4500, 4499, 1, 0, 0, 0, 4500, 4501, 1, 0, 0, 0, 4501, 4502, 1, 0, 0, 0, 4502, 4503, 5, 664, 0, 0, 4503, 4508, 3, 350, 175, 0, 4504, 4505, 5, 868, 0, 0, 4505, 4507, 3, 350, 175, 0, 4506, 4504, 1, 0, 0, 0, 4507, 4510, 1, 0, 0, 0, 4508, 4506, 1, 0, 0, 0, 4508, 4509, 1, 0, 0, 0, 4509, 343, 1, 0, 0, 0, 4510, 4508, 1, 0, 0, 0, 4511, 4512, 5, 194, 0, 0, 4512, 4513, 5, 350, 0, 0, 4513, 4519, 5, 600, 0, 0, 4514, 4515, 5, 135, 0, 0, 4515, 4519, 5, 195, 0, 0, 4516, 4517, 5, 135, 0, 0, 4517, 4519, 5, 515, 0, 0, 4518, 4511, 1, 0, 0, 0, 4518, 4514, 1, 0, 0, 0, 4518, 4516, 1, 0, 0, 0, 4519, 345, 1, 0, 0, 0, 4520, 4525, 3, 652, 326, 0, 4521, 4523, 5, 13, 0, 0, 4522, 4521, 1, 0, 0, 0, 4522, 4523, 1, 0, 0, 0, 4523, 4524, 1, 0, 0, 0, 4524, 4526, 3, 706, 353, 0, 4525, 4522, 1, 0, 0, 0, 4525, 4526, 1, 0, 0, 0, 4526, 4527, 1, 0, 0, 0, 4527, 4528, 3, 348, 174, 0, 4528, 347, 1, 0, 0, 0, 4529, 4531, 5, 135, 0, 0, 4530, 4532, 5, 450, 0, 0, 4531, 4530, 1, 0, 0, 0, 4531, 4532, 1, 0, 0, 0, 4532, 4538, 1, 0, 0, 0, 4533, 4535, 5, 107, 0, 0, 4534, 4533, 1, 0, 0, 0, 4534, 4535, 1, 0, 0, 0, 4535, 4536, 1, 0, 0, 0, 4536, 4538, 5, 195, 0, 0, 4537, 4529, 1, 0, 0, 0, 4537, 4534, 1, 0, 0, 0, 4538, 349, 1, 0, 0, 0, 4539, 4540, 5, 440, 0, 0, 4540, 4541, 5, 448, 0, 0, 4541, 4547, 3, 352, 176, 0, 4542, 4543, 5, 135, 0, 0, 4543, 4547, 5, 195, 0, 0, 4544, 4545, 5, 135, 0, 0, 4545, 4547, 5, 515, 0, 0, 4546, 4539, 1, 0, 0, 0, 4546, 4542, 1, 0, 0, 0, 4546, 4544, 1, 0, 0, 0, 4547, 351, 1, 0, 0, 0, 4548, 4549, 5, 809, 0, 0, 4549, 4556, 5, 135, 0, 0, 4550, 4551, 5, 135, 0, 0, 4551, 4556, 5, 810, 0, 0, 4552, 4553, 5, 135, 0, 0, 4553, 4556, 5, 811, 0, 0, 4554, 4556, 5, 812, 0, 0, 4555, 4548, 1, 0, 0, 0, 4555, 4550, 1, 0, 0, 0, 4555, 4552, 1, 0, 0, 0, 4555, 4554, 1, 0, 0, 0, 4556, 353, 1, 0, 0, 0, 4557, 4558, 5, 25, 0, 0, 4558, 4559, 5, 453, 0, 0, 4559, 4560, 5, 176, 0, 0, 4560, 4565, 3, 370, 185, 0, 4561, 4562, 5, 868, 0, 0, 4562, 4564, 3, 370, 185, 0, 4563, 4561, 1, 0, 0, 0, 4564, 4567, 1, 0, 0, 0, 4565, 4563, 1, 0, 0, 0, 4565, 4566, 1, 0, 0, 0, 4566, 4569, 1, 0, 0, 0, 4567, 4565, 1, 0, 0, 0, 4568, 4570, 3, 390, 195, 0, 4569, 4568, 1, 0, 0, 0, 4569, 4570, 1, 0, 0, 0, 4570, 355, 1, 0, 0, 0, 4571, 4572, 5, 25, 0, 0, 4572, 4573, 5, 572, 0, 0, 4573, 4574, 5, 400, 0, 0, 4574, 4579, 3, 392, 196, 0, 4575, 4576, 5, 868, 0, 0, 4576, 4578, 3, 392, 196, 0, 4577, 4575, 1, 0, 0, 0, 4578, 4581, 1, 0, 0, 0, 4579, 4577, 1, 0, 0, 0, 4579, 4580, 1, 0, 0, 0, 4580, 4583, 1, 0, 0, 0, 4581, 4579, 1, 0, 0, 0, 4582, 4584, 3, 390, 195, 0, 4583, 4582, 1, 0, 0, 0, 4583, 4584, 1, 0, 0, 0, 4584, 357, 1, 0, 0, 0, 4585, 4586, 5, 25, 0, 0, 4586, 4587, 5, 572, 0, 0, 4587, 4588, 5, 605, 0, 0, 4588, 4589, 5, 176, 0, 0, 4589, 4594, 3, 380, 190, 0, 4590, 4591, 5, 868, 0, 0, 4591, 4593, 3, 380, 190, 0, 4592, 4590, 1, 0, 0, 0, 4593, 4596, 1, 0, 0, 0, 4594, 4592, 1, 0, 0, 0, 4594, 4595, 1, 0, 0, 0, 4595, 4598, 1, 0, 0, 0, 4596, 4594, 1, 0, 0, 0, 4597, 4599, 3, 390, 195, 0, 4598, 4597, 1, 0, 0, 0, 4598, 4599, 1, 0, 0, 0, 4599, 359, 1, 0, 0, 0, 4600, 4601, 5, 133, 0, 0, 4601, 4602, 7, 63, 0, 0, 4602, 4607, 5, 452, 0, 0, 4603, 4604, 5, 176, 0, 0, 4604, 4608, 5, 882, 0, 0, 4605, 4606, 5, 16, 0, 0, 4606, 4608, 5, 882, 0, 0, 4607, 4603, 1, 0, 0, 0, 4607, 4605, 1, 0, 0, 0, 4608, 361, 1, 0, 0, 0, 4609, 4610, 5, 640, 0, 0, 4610, 4619, 7, 64, 0, 0, 4611, 4616, 3, 396, 198, 0, 4612, 4613, 5, 868, 0, 0, 4613, 4615, 3, 396, 198, 0, 4614, 4612, 1, 0, 0, 0, 4615, 4618, 1, 0, 0, 0, 4616, 4614, 1, 0, 0, 0, 4616, 4617, 1, 0, 0, 0, 4617, 4620, 1, 0, 0, 0, 4618, 4616, 1, 0, 0, 0, 4619, 4611, 1, 0, 0, 0, 4619, 4620, 1, 0, 0, 0, 4620, 4623, 1, 0, 0, 0, 4621, 4622, 5, 676, 0, 0, 4622, 4624, 3, 398, 199, 0, 4623, 4621, 1, 0, 0, 0, 4623, 4624, 1, 0, 0, 0, 4624, 4628, 1, 0, 0, 0, 4625, 4627, 3, 400, 200, 0, 4626, 4625, 1, 0, 0, 0, 4627, 4630, 1, 0, 0, 0, 4628, 4626, 1, 0, 0, 0, 4628, 4629, 1, 0, 0, 0, 4629, 4632, 1, 0, 0, 0, 4630, 4628, 1, 0, 0, 0, 4631, 4633, 3, 390, 195, 0, 4632, 4631, 1, 0, 0, 0, 4632, 4633, 1, 0, 0, 0, 4633, 363, 1, 0, 0, 0, 4634, 4635, 5, 646, 0, 0, 4635, 4644, 7, 64, 0, 0, 4636, 4641, 3, 396, 198, 0, 4637, 4638, 5, 868, 0, 0, 4638, 4640, 3, 396, 198, 0, 4639, 4637, 1, 0, 0, 0, 4640, 4643, 1, 0, 0, 0, 4641, 4639, 1, 0, 0, 0, 4641, 4642, 1, 0, 0, 0, 4642, 4645, 1, 0, 0, 0, 4643, 4641, 1, 0, 0, 0, 4644, 4636, 1, 0, 0, 0, 4644, 4645, 1, 0, 0, 0, 4645, 4647, 1, 0, 0, 0, 4646, 4648, 3, 390, 195, 0, 4647, 4646, 1, 0, 0, 0, 4647, 4648, 1, 0, 0, 0, 4648, 365, 1, 0, 0, 0, 4649, 4650, 5, 640, 0, 0, 4650, 4654, 5, 415, 0, 0, 4651, 4652, 5, 678, 0, 0, 4652, 4653, 5, 857, 0, 0, 4653, 4655, 5, 882, 0, 0, 4654, 4651, 1, 0, 0, 0, 4654, 4655, 1, 0, 0, 0, 4655, 4660, 1, 0, 0, 0, 4656, 4657, 5, 868, 0, 0, 4657, 4658, 5, 529, 0, 0, 4658, 4659, 5, 857, 0, 0, 4659, 4661, 5, 882, 0, 0, 4660, 4656, 1, 0, 0, 0, 4660, 4661, 1, 0, 0, 0, 4661, 4666, 1, 0, 0, 0, 4662, 4663, 5, 868, 0, 0, 4663, 4664, 5, 363, 0, 0, 4664, 4665, 5, 857, 0, 0, 4665, 4667, 5, 882, 0, 0, 4666, 4662, 1, 0, 0, 0, 4666, 4667, 1, 0, 0, 0, 4667, 367, 1, 0, 0, 0, 4668, 4669, 5, 646, 0, 0, 4669, 4670, 5, 415, 0, 0, 4670, 369, 1, 0, 0, 0, 4671, 4672, 3, 372, 186, 0, 4672, 4673, 5, 857, 0, 0, 4673, 4674, 5, 882, 0, 0, 4674, 4699, 1, 0, 0, 0, 4675, 4676, 3, 374, 187, 0, 4676, 4677, 5, 857, 0, 0, 4677, 4678, 3, 712, 356, 0, 4678, 4699, 1, 0, 0, 0, 4679, 4680, 3, 376, 188, 0, 4680, 4681, 5, 857, 0, 0, 4681, 4682, 7, 26, 0, 0, 4682, 4699, 1, 0, 0, 0, 4683, 4699, 3, 378, 189, 0, 4684, 4685, 5, 424, 0, 0, 4685, 4686, 5, 857, 0, 0, 4686, 4695, 5, 866, 0, 0, 4687, 4692, 3, 706, 353, 0, 4688, 4689, 5, 868, 0, 0, 4689, 4691, 3, 706, 353, 0, 4690, 4688, 1, 0, 0, 0, 4691, 4694, 1, 0, 0, 0, 4692, 4690, 1, 0, 0, 0, 4692, 4693, 1, 0, 0, 0, 4693, 4696, 1, 0, 0, 0, 4694, 4692, 1, 0, 0, 0, 4695, 4687, 1, 0, 0, 0, 4695, 4696, 1, 0, 0, 0, 4696, 4697, 1, 0, 0, 0, 4697, 4699, 5, 867, 0, 0, 4698, 4671, 1, 0, 0, 0, 4698, 4675, 1, 0, 0, 0, 4698, 4679, 1, 0, 0, 0, 4698, 4683, 1, 0, 0, 0, 4698, 4684, 1, 0, 0, 0, 4699, 371, 1, 0, 0, 0, 4700, 4701, 7, 65, 0, 0, 4701, 373, 1, 0, 0, 0, 4702, 4703, 7, 66, 0, 0, 4703, 375, 1, 0, 0, 0, 4704, 4705, 7, 67, 0, 0, 4705, 377, 1, 0, 0, 0, 4706, 4707, 5, 543, 0, 0, 4707, 4708, 5, 857, 0, 0, 4708, 4720, 7, 68, 0, 0, 4709, 4710, 5, 574, 0, 0, 4710, 4711, 5, 857, 0, 0, 4711, 4720, 7, 69, 0, 0, 4712, 4713, 5, 310, 0, 0, 4713, 4717, 5, 857, 0, 0, 4714, 4718, 5, 507, 0, 0, 4715, 4718, 5, 450, 0, 0, 4716, 4718, 3, 402, 201, 0, 4717, 4714, 1, 0, 0, 0, 4717, 4715, 1, 0, 0, 0, 4717, 4716, 1, 0, 0, 0, 4718, 4720, 1, 0, 0, 0, 4719, 4706, 1, 0, 0, 0, 4719, 4709, 1, 0, 0, 0, 4719, 4712, 1, 0, 0, 0, 4720, 379, 1, 0, 0, 0, 4721, 4722, 3, 382, 191, 0, 4722, 4723, 5, 857, 0, 0, 4723, 4724, 5, 882, 0, 0, 4724, 4749, 1, 0, 0, 0, 4725, 4726, 3, 384, 192, 0, 4726, 4727, 5, 857, 0, 0, 4727, 4728, 3, 712, 356, 0, 4728, 4749, 1, 0, 0, 0, 4729, 4730, 3, 386, 193, 0, 4730, 4731, 5, 857, 0, 0, 4731, 4732, 7, 26, 0, 0, 4732, 4749, 1, 0, 0, 0, 4733, 4749, 3, 388, 194, 0, 4734, 4735, 5, 424, 0, 0, 4735, 4736, 5, 857, 0, 0, 4736, 4745, 5, 866, 0, 0, 4737, 4742, 3, 706, 353, 0, 4738, 4739, 5, 868, 0, 0, 4739, 4741, 3, 706, 353, 0, 4740, 4738, 1, 0, 0, 0, 4741, 4744, 1, 0, 0, 0, 4742, 4740, 1, 0, 0, 0, 4742, 4743, 1, 0, 0, 0, 4743, 4746, 1, 0, 0, 0, 4744, 4742, 1, 0, 0, 0, 4745, 4737, 1, 0, 0, 0, 4745, 4746, 1, 0, 0, 0, 4746, 4747, 1, 0, 0, 0, 4747, 4749, 5, 867, 0, 0, 4748, 4721, 1, 0, 0, 0, 4748, 4725, 1, 0, 0, 0, 4748, 4729, 1, 0, 0, 0, 4748, 4733, 1, 0, 0, 0, 4748, 4734, 1, 0, 0, 0, 4749, 381, 1, 0, 0, 0, 4750, 4751, 7, 70, 0, 0, 4751, 383, 1, 0, 0, 0, 4752, 4753, 7, 71, 0, 0, 4753, 385, 1, 0, 0, 0, 4754, 4755, 7, 72, 0, 0, 4755, 387, 1, 0, 0, 0, 4756, 4757, 5, 543, 0, 0, 4757, 4758, 5, 857, 0, 0, 4758, 4770, 7, 68, 0, 0, 4759, 4760, 5, 574, 0, 0, 4760, 4761, 5, 857, 0, 0, 4761, 4770, 7, 73, 0, 0, 4762, 4763, 5, 310, 0, 0, 4763, 4767, 5, 857, 0, 0, 4764, 4768, 5, 507, 0, 0, 4765, 4768, 5, 450, 0, 0, 4766, 4768, 3, 402, 201, 0, 4767, 4764, 1, 0, 0, 0, 4767, 4765, 1, 0, 0, 0, 4767, 4766, 1, 0, 0, 0, 4768, 4770, 1, 0, 0, 0, 4769, 4756, 1, 0, 0, 0, 4769, 4759, 1, 0, 0, 0, 4769, 4762, 1, 0, 0, 0, 4770, 389, 1, 0, 0, 0, 4771, 4772, 5, 65, 0, 0, 4772, 4773, 5, 328, 0, 0, 4773, 4774, 5, 882, 0, 0, 4774, 391, 1, 0, 0, 0, 4775, 4776, 5, 565, 0, 0, 4776, 4777, 5, 857, 0, 0, 4777, 4778, 5, 866, 0, 0, 4778, 4783, 3, 628, 314, 0, 4779, 4780, 5, 868, 0, 0, 4780, 4782, 3, 628, 314, 0, 4781, 4779, 1, 0, 0, 0, 4782, 4785, 1, 0, 0, 0, 4783, 4781, 1, 0, 0, 0, 4783, 4784, 1, 0, 0, 0, 4784, 4786, 1, 0, 0, 0, 4785, 4783, 1, 0, 0, 0, 4786, 4787, 5, 867, 0, 0, 4787, 4839, 1, 0, 0, 0, 4788, 4789, 5, 567, 0, 0, 4789, 4790, 5, 857, 0, 0, 4790, 4791, 5, 866, 0, 0, 4791, 4796, 3, 628, 314, 0, 4792, 4793, 5, 868, 0, 0, 4793, 4795, 3, 628, 314, 0, 4794, 4792, 1, 0, 0, 0, 4795, 4798, 1, 0, 0, 0, 4796, 4794, 1, 0, 0, 0, 4796, 4797, 1, 0, 0, 0, 4797, 4799, 1, 0, 0, 0, 4798, 4796, 1, 0, 0, 0, 4799, 4800, 5, 867, 0, 0, 4800, 4839, 1, 0, 0, 0, 4801, 4802, 5, 566, 0, 0, 4802, 4803, 5, 857, 0, 0, 4803, 4804, 5, 866, 0, 0, 4804, 4805, 3, 650, 325, 0, 4805, 4806, 5, 867, 0, 0, 4806, 4839, 1, 0, 0, 0, 4807, 4808, 5, 568, 0, 0, 4808, 4809, 5, 857, 0, 0, 4809, 4810, 5, 866, 0, 0, 4810, 4811, 3, 650, 325, 0, 4811, 4812, 5, 867, 0, 0, 4812, 4839, 1, 0, 0, 0, 4813, 4814, 5, 570, 0, 0, 4814, 4815, 5, 857, 0, 0, 4815, 4816, 5, 866, 0, 0, 4816, 4817, 3, 750, 375, 0, 4817, 4818, 5, 867, 0, 0, 4818, 4839, 1, 0, 0, 0, 4819, 4820, 5, 571, 0, 0, 4820, 4821, 5, 857, 0, 0, 4821, 4822, 5, 866, 0, 0, 4822, 4823, 3, 750, 375, 0, 4823, 4824, 5, 867, 0, 0, 4824, 4839, 1, 0, 0, 0, 4825, 4826, 5, 569, 0, 0, 4826, 4827, 5, 857, 0, 0, 4827, 4828, 5, 866, 0, 0, 4828, 4833, 3, 394, 197, 0, 4829, 4830, 5, 868, 0, 0, 4830, 4832, 3, 394, 197, 0, 4831, 4829, 1, 0, 0, 0, 4832, 4835, 1, 0, 0, 0, 4833, 4831, 1, 0, 0, 0, 4833, 4834, 1, 0, 0, 0, 4834, 4836, 1, 0, 0, 0, 4835, 4833, 1, 0, 0, 0, 4836, 4837, 5, 867, 0, 0, 4837, 4839, 1, 0, 0, 0, 4838, 4775, 1, 0, 0, 0, 4838, 4788, 1, 0, 0, 0, 4838, 4801, 1, 0, 0, 0, 4838, 4807, 1, 0, 0, 0, 4838, 4813, 1, 0, 0, 0, 4838, 4819, 1, 0, 0, 0, 4838, 4825, 1, 0, 0, 0, 4839, 393, 1, 0, 0, 0, 4840, 4841, 5, 866, 0, 0, 4841, 4842, 3, 652, 326, 0, 4842, 4843, 5, 868, 0, 0, 4843, 4844, 3, 652, 326, 0, 4844, 4845, 5, 867, 0, 0, 4845, 395, 1, 0, 0, 0, 4846, 4847, 7, 74, 0, 0, 4847, 397, 1, 0, 0, 0, 4848, 4849, 7, 75, 0, 0, 4849, 4850, 5, 857, 0, 0, 4850, 4874, 3, 402, 201, 0, 4851, 4852, 5, 460, 0, 0, 4852, 4853, 5, 857, 0, 0, 4853, 4854, 5, 882, 0, 0, 4854, 4855, 5, 868, 0, 0, 4855, 4856, 5, 461, 0, 0, 4856, 4857, 5, 857, 0, 0, 4857, 4874, 3, 712, 356, 0, 4858, 4859, 5, 611, 0, 0, 4859, 4860, 5, 857, 0, 0, 4860, 4861, 5, 882, 0, 0, 4861, 4862, 5, 868, 0, 0, 4862, 4863, 5, 612, 0, 0, 4863, 4864, 5, 857, 0, 0, 4864, 4874, 3, 712, 356, 0, 4865, 4866, 5, 557, 0, 0, 4866, 4867, 5, 857, 0, 0, 4867, 4868, 5, 882, 0, 0, 4868, 4869, 5, 868, 0, 0, 4869, 4870, 5, 558, 0, 0, 4870, 4871, 5, 857, 0, 0, 4871, 4874, 3, 712, 356, 0, 4872, 4874, 5, 634, 0, 0, 4873, 4848, 1, 0, 0, 0, 4873, 4851, 1, 0, 0, 0, 4873, 4858, 1, 0, 0, 0, 4873, 4865, 1, 0, 0, 0, 4873, 4872, 1, 0, 0, 0, 4874, 399, 1, 0, 0, 0, 4875, 4876, 5, 678, 0, 0, 4876, 4877, 5, 857, 0, 0, 4877, 4888, 5, 882, 0, 0, 4878, 4879, 5, 529, 0, 0, 4879, 4880, 5, 857, 0, 0, 4880, 4888, 5, 882, 0, 0, 4881, 4882, 5, 363, 0, 0, 4882, 4883, 5, 857, 0, 0, 4883, 4888, 5, 882, 0, 0, 4884, 4885, 5, 535, 0, 0, 4885, 4886, 5, 857, 0, 0, 4886, 4888, 5, 882, 0, 0, 4887, 4875, 1, 0, 0, 0, 4887, 4878, 1, 0, 0, 0, 4887, 4881, 1, 0, 0, 0, 4887, 4884, 1, 0, 0, 0, 4888, 401, 1, 0, 0, 0, 4889, 4894, 3, 696, 348, 0, 4890, 4891, 5, 868, 0, 0, 4891, 4893, 3, 696, 348, 0, 4892, 4890, 1, 0, 0, 0, 4893, 4896, 1, 0, 0, 0, 4894, 4892, 1, 0, 0, 0, 4894, 4895, 1, 0, 0, 0, 4895, 4899, 1, 0, 0, 0, 4896, 4894, 1, 0, 0, 0, 4897, 4899, 5, 882, 0, 0, 4898, 4889, 1, 0, 0, 0, 4898, 4897, 1, 0, 0, 0, 4899, 403, 1, 0, 0, 0, 4900, 4901, 5, 694, 0, 0, 4901, 4902, 7, 76, 0, 0, 4902, 4904, 3, 698, 349, 0, 4903, 4905, 7, 77, 0, 0, 4904, 4903, 1, 0, 0, 0, 4904, 4905, 1, 0, 0, 0, 4905, 405, 1, 0, 0, 0, 4906, 4907, 5, 694, 0, 0, 4907, 4908, 5, 378, 0, 0, 4908, 4914, 3, 698, 349, 0, 4909, 4912, 5, 654, 0, 0, 4910, 4911, 5, 65, 0, 0, 4911, 4913, 5, 489, 0, 0, 4912, 4910, 1, 0, 0, 0, 4912, 4913, 1, 0, 0, 0, 4913, 4915, 1, 0, 0, 0, 4914, 4909, 1, 0, 0, 0, 4914, 4915, 1, 0, 0, 0, 4915, 407, 1, 0, 0, 0, 4916, 4917, 5, 694, 0, 0, 4917, 4918, 5, 540, 0, 0, 4918, 4919, 3, 698, 349, 0, 4919, 409, 1, 0, 0, 0, 4920, 4921, 5, 694, 0, 0, 4921, 4922, 5, 341, 0, 0, 4922, 4925, 3, 698, 349, 0, 4923, 4924, 5, 513, 0, 0, 4924, 4926, 5, 533, 0, 0, 4925, 4923, 1, 0, 0, 0, 4925, 4926, 1, 0, 0, 0, 4926, 411, 1, 0, 0, 0, 4927, 4928, 5, 694, 0, 0, 4928, 4929, 5, 583, 0, 0, 4929, 4930, 3, 698, 349, 0, 4930, 413, 1, 0, 0, 0, 4931, 4932, 5, 694, 0, 0, 4932, 4935, 5, 551, 0, 0, 4933, 4934, 5, 33, 0, 0, 4934, 4936, 3, 698, 349, 0, 4935, 4933, 1, 0, 0, 0, 4935, 4936, 1, 0, 0, 0, 4936, 415, 1, 0, 0, 0, 4937, 4938, 5, 540, 0, 0, 4938, 4939, 3, 706, 353, 0, 4939, 4942, 5, 68, 0, 0, 4940, 4943, 5, 882, 0, 0, 4941, 4943, 5, 892, 0, 0, 4942, 4940, 1, 0, 0, 0, 4942, 4941, 1, 0, 0, 0, 4943, 417, 1, 0, 0, 0, 4944, 4945, 5, 717, 0, 0, 4945, 4948, 3, 706, 353, 0, 4946, 4947, 5, 188, 0, 0, 4947, 4949, 3, 752, 376, 0, 4948, 4946, 1, 0, 0, 0, 4948, 4949, 1, 0, 0, 0, 4949, 419, 1, 0, 0, 0, 4950, 4951, 7, 78, 0, 0, 4951, 4952, 5, 540, 0, 0, 4952, 4953, 3, 706, 353, 0, 4953, 421, 1, 0, 0, 0, 4954, 4957, 3, 424, 212, 0, 4955, 4957, 3, 4, 2, 0, 4956, 4954, 1, 0, 0, 0, 4956, 4955, 1, 0, 0, 0, 4957, 423, 1, 0, 0, 0, 4958, 4959, 3, 706, 353, 0, 4959, 4960, 5, 878, 0, 0, 4960, 4962, 1, 0, 0, 0, 4961, 4958, 1, 0, 0, 0, 4961, 4962, 1, 0, 0, 0, 4962, 4963, 1, 0, 0, 0, 4963, 4969, 5, 317, 0, 0, 4964, 4965, 3, 444, 222, 0, 4965, 4966, 5, 869, 0, 0, 4966, 4968, 1, 0, 0, 0, 4967, 4964, 1, 0, 0, 0, 4968, 4971, 1, 0, 0, 0, 4969, 4967, 1, 0, 0, 0, 4969, 4970, 1, 0, 0, 0, 4970, 4977, 1, 0, 0, 0, 4971, 4969, 1, 0, 0, 0, 4972, 4973, 3, 446, 223, 0, 4973, 4974, 5, 869, 0, 0, 4974, 4976, 1, 0, 0, 0, 4975, 4972, 1, 0, 0, 0, 4976, 4979, 1, 0, 0, 0, 4977, 4975, 1, 0, 0, 0, 4977, 4978, 1, 0, 0, 0, 4978, 4985, 1, 0, 0, 0, 4979, 4977, 1, 0, 0, 0, 4980, 4981, 3, 448, 224, 0, 4981, 4982, 5, 869, 0, 0, 4982, 4984, 1, 0, 0, 0, 4983, 4980, 1, 0, 0, 0, 4984, 4987, 1, 0, 0, 0, 4985, 4983, 1, 0, 0, 0, 4985, 4986, 1, 0, 0, 0, 4986, 4993, 1, 0, 0, 0, 4987, 4985, 1, 0, 0, 0, 4988, 4989, 3, 450, 225, 0, 4989, 4990, 5, 869, 0, 0, 4990, 4992, 1, 0, 0, 0, 4991, 4988, 1, 0, 0, 0, 4992, 4995, 1, 0, 0, 0, 4993, 4991, 1, 0, 0, 0, 4993, 4994, 1, 0, 0, 0, 4994, 4999, 1, 0, 0, 0, 4995, 4993, 1, 0, 0, 0, 4996, 4998, 3, 454, 227, 0, 4997, 4996, 1, 0, 0, 0, 4998, 5001, 1, 0, 0, 0, 4999, 4997, 1, 0, 0, 0, 4999, 5000, 1, 0, 0, 0, 5000, 5002, 1, 0, 0, 0, 5001, 4999, 1, 0, 0, 0, 5002, 5004, 5, 378, 0, 0, 5003, 5005, 3, 706, 353, 0, 5004, 5003, 1, 0, 0, 0, 5004, 5005, 1, 0, 0, 0, 5005, 425, 1, 0, 0, 0, 5006, 5009, 5, 23, 0, 0, 5007, 5010, 3, 706, 353, 0, 5008, 5010, 3, 804, 402, 0, 5009, 5007, 1, 0, 0, 0, 5009, 5008, 1, 0, 0, 0, 5009, 5010, 1, 0, 0, 0, 5010, 5012, 1, 0, 0, 0, 5011, 5013, 3, 456, 228, 0, 5012, 5011, 1, 0, 0, 0, 5013, 5014, 1, 0, 0, 0, 5014, 5012, 1, 0, 0, 0, 5014, 5015, 1, 0, 0, 0, 5015, 5022, 1, 0, 0, 0, 5016, 5018, 5, 53, 0, 0, 5017, 5019, 3, 454, 227, 0, 5018, 5017, 1, 0, 0, 0, 5019, 5020, 1, 0, 0, 0, 5020, 5018, 1, 0, 0, 0, 5020, 5021, 1, 0, 0, 0, 5021, 5023, 1, 0, 0, 0, 5022, 5016, 1, 0, 0, 0, 5022, 5023, 1, 0, 0, 0, 5023, 5024, 1, 0, 0, 0, 5024, 5025, 5, 378, 0, 0, 5025, 5026, 5, 23, 0, 0, 5026, 427, 1, 0, 0, 0, 5027, 5028, 5, 78, 0, 0, 5028, 5029, 3, 804, 402, 0, 5029, 5031, 5, 175, 0, 0, 5030, 5032, 3, 454, 227, 0, 5031, 5030, 1, 0, 0, 0, 5032, 5033, 1, 0, 0, 0, 5033, 5031, 1, 0, 0, 0, 5033, 5034, 1, 0, 0, 0, 5034, 5038, 1, 0, 0, 0, 5035, 5037, 3, 458, 229, 0, 5036, 5035, 1, 0, 0, 0, 5037, 5040, 1, 0, 0, 0, 5038, 5036, 1, 0, 0, 0, 5038, 5039, 1, 0, 0, 0, 5039, 5047, 1, 0, 0, 0, 5040, 5038, 1, 0, 0, 0, 5041, 5043, 5, 53, 0, 0, 5042, 5044, 3, 454, 227, 0, 5043, 5042, 1, 0, 0, 0, 5044, 5045, 1, 0, 0, 0, 5045, 5043, 1, 0, 0, 0, 5045, 5046, 1, 0, 0, 0, 5046, 5048, 1, 0, 0, 0, 5047, 5041, 1, 0, 0, 0, 5047, 5048, 1, 0, 0, 0, 5048, 5049, 1, 0, 0, 0, 5049, 5050, 5, 378, 0, 0, 5050, 5051, 5, 78, 0, 0, 5051, 429, 1, 0, 0, 0, 5052, 5053, 5, 90, 0, 0, 5053, 5054, 3, 706, 353, 0, 5054, 431, 1, 0, 0, 0, 5055, 5056, 5, 97, 0, 0, 5056, 5057, 3, 706, 353, 0, 5057, 433, 1, 0, 0, 0, 5058, 5059, 3, 706, 353, 0, 5059, 5060, 5, 878, 0, 0, 5060, 5062, 1, 0, 0, 0, 5061, 5058, 1, 0, 0, 0, 5061, 5062, 1, 0, 0, 0, 5062, 5063, 1, 0, 0, 0, 5063, 5065, 5, 106, 0, 0, 5064, 5066, 3, 454, 227, 0, 5065, 5064, 1, 0, 0, 0, 5066, 5067, 1, 0, 0, 0, 5067, 5065, 1, 0, 0, 0, 5067, 5068, 1, 0, 0, 0, 5068, 5069, 1, 0, 0, 0, 5069, 5070, 5, 378, 0, 0, 5070, 5072, 5, 106, 0, 0, 5071, 5073, 3, 706, 353, 0, 5072, 5071, 1, 0, 0, 0, 5072, 5073, 1, 0, 0, 0, 5073, 435, 1, 0, 0, 0, 5074, 5075, 3, 706, 353, 0, 5075, 5076, 5, 878, 0, 0, 5076, 5078, 1, 0, 0, 0, 5077, 5074, 1, 0, 0, 0, 5077, 5078, 1, 0, 0, 0, 5078, 5079, 1, 0, 0, 0, 5079, 5081, 5, 142, 0, 0, 5080, 5082, 3, 454, 227, 0, 5081, 5080, 1, 0, 0, 0, 5082, 5083, 1, 0, 0, 0, 5083, 5081, 1, 0, 0, 0, 5083, 5084, 1, 0, 0, 0, 5084, 5085, 1, 0, 0, 0, 5085, 5086, 5, 676, 0, 0, 5086, 5087, 3, 804, 402, 0, 5087, 5088, 5, 378, 0, 0, 5088, 5090, 5, 142, 0, 0, 5089, 5091, 3, 706, 353, 0, 5090, 5089, 1, 0, 0, 0, 5090, 5091, 1, 0, 0, 0, 5091, 437, 1, 0, 0, 0, 5092, 5093, 5, 148, 0, 0, 5093, 5094, 3, 804, 402, 0, 5094, 439, 1, 0, 0, 0, 5095, 5096, 3, 706, 353, 0, 5096, 5097, 5, 878, 0, 0, 5097, 5099, 1, 0, 0, 0, 5098, 5095, 1, 0, 0, 0, 5098, 5099, 1, 0, 0, 0, 5099, 5100, 1, 0, 0, 0, 5100, 5101, 5, 193, 0, 0, 5101, 5102, 3, 804, 402, 0, 5102, 5104, 5, 371, 0, 0, 5103, 5105, 3, 454, 227, 0, 5104, 5103, 1, 0, 0, 0, 5105, 5106, 1, 0, 0, 0, 5106, 5104, 1, 0, 0, 0, 5106, 5107, 1, 0, 0, 0, 5107, 5108, 1, 0, 0, 0, 5108, 5109, 5, 378, 0, 0, 5109, 5111, 5, 193, 0, 0, 5110, 5112, 3, 706, 353, 0, 5111, 5110, 1, 0, 0, 0, 5111, 5112, 1, 0, 0, 0, 5112, 441, 1, 0, 0, 0, 5113, 5114, 5, 334, 0, 0, 5114, 5129, 3, 706, 353, 0, 5115, 5120, 5, 64, 0, 0, 5116, 5118, 5, 501, 0, 0, 5117, 5116, 1, 0, 0, 0, 5117, 5118, 1, 0, 0, 0, 5118, 5119, 1, 0, 0, 0, 5119, 5121, 5, 68, 0, 0, 5120, 5117, 1, 0, 0, 0, 5120, 5121, 1, 0, 0, 0, 5121, 5122, 1, 0, 0, 0, 5122, 5123, 3, 706, 353, 0, 5123, 5124, 5, 88, 0, 0, 5124, 5125, 3, 704, 352, 0, 5125, 5129, 1, 0, 0, 0, 5126, 5127, 5, 516, 0, 0, 5127, 5129, 3, 706, 353, 0, 5128, 5113, 1, 0, 0, 0, 5128, 5115, 1, 0, 0, 0, 5128, 5126, 1, 0, 0, 0, 5129, 443, 1, 0, 0, 0, 5130, 5131, 5, 41, 0, 0, 5131, 5132, 3, 704, 352, 0, 5132, 5135, 3, 726, 363, 0, 5133, 5134, 5, 42, 0, 0, 5134, 5136, 3, 804, 402, 0, 5135, 5133, 1, 0, 0, 0, 5135, 5136, 1, 0, 0, 0, 5136, 445, 1, 0, 0, 0, 5137, 5138, 5, 41, 0, 0, 5138, 5139, 3, 706, 353, 0, 5139, 5140, 5, 30, 0, 0, 5140, 5147, 5, 65, 0, 0, 5141, 5148, 3, 712, 356, 0, 5142, 5144, 5, 164, 0, 0, 5143, 5145, 5, 682, 0, 0, 5144, 5143, 1, 0, 0, 0, 5144, 5145, 1, 0, 0, 0, 5145, 5146, 1, 0, 0, 0, 5146, 5148, 5, 882, 0, 0, 5147, 5141, 1, 0, 0, 0, 5147, 5142, 1, 0, 0, 0, 5148, 447, 1, 0, 0, 0, 5149, 5150, 5, 41, 0, 0, 5150, 5151, 3, 706, 353, 0, 5151, 5152, 5, 38, 0, 0, 5152, 5153, 5, 65, 0, 0, 5153, 5154, 3, 210, 105, 0, 5154, 449, 1, 0, 0, 0, 5155, 5156, 5, 41, 0, 0, 5156, 5157, 7, 79, 0, 0, 5157, 5158, 5, 417, 0, 0, 5158, 5159, 5, 65, 0, 0, 5159, 5164, 3, 452, 226, 0, 5160, 5161, 5, 868, 0, 0, 5161, 5163, 3, 452, 226, 0, 5162, 5160, 1, 0, 0, 0, 5163, 5166, 1, 0, 0, 0, 5164, 5162, 1, 0, 0, 0, 5164, 5165, 1, 0, 0, 0, 5165, 5167, 1, 0, 0, 0, 5166, 5164, 1, 0, 0, 0, 5167, 5168, 3, 422, 211, 0, 5168, 451, 1, 0, 0, 0, 5169, 5181, 3, 712, 356, 0, 5170, 5172, 5, 164, 0, 0, 5171, 5173, 5, 682, 0, 0, 5172, 5171, 1, 0, 0, 0, 5172, 5173, 1, 0, 0, 0, 5173, 5174, 1, 0, 0, 0, 5174, 5181, 5, 882, 0, 0, 5175, 5181, 3, 706, 353, 0, 5176, 5181, 5, 165, 0, 0, 5177, 5178, 5, 114, 0, 0, 5178, 5181, 5, 407, 0, 0, 5179, 5181, 5, 163, 0, 0, 5180, 5169, 1, 0, 0, 0, 5180, 5170, 1, 0, 0, 0, 5180, 5175, 1, 0, 0, 0, 5180, 5176, 1, 0, 0, 0, 5180, 5177, 1, 0, 0, 0, 5180, 5179, 1, 0, 0, 0, 5181, 453, 1, 0, 0, 0, 5182, 5185, 3, 18, 9, 0, 5183, 5185, 3, 4, 2, 0, 5184, 5182, 1, 0, 0, 0, 5184, 5183, 1, 0, 0, 0, 5185, 5186, 1, 0, 0, 0, 5186, 5187, 5, 869, 0, 0, 5187, 455, 1, 0, 0, 0, 5188, 5191, 5, 191, 0, 0, 5189, 5192, 3, 724, 362, 0, 5190, 5192, 3, 804, 402, 0, 5191, 5189, 1, 0, 0, 0, 5191, 5190, 1, 0, 0, 0, 5192, 5193, 1, 0, 0, 0, 5193, 5195, 5, 175, 0, 0, 5194, 5196, 3, 454, 227, 0, 5195, 5194, 1, 0, 0, 0, 5196, 5197, 1, 0, 0, 0, 5197, 5195, 1, 0, 0, 0, 5197, 5198, 1, 0, 0, 0, 5198, 457, 1, 0, 0, 0, 5199, 5200, 5, 54, 0, 0, 5200, 5201, 3, 804, 402, 0, 5201, 5203, 5, 175, 0, 0, 5202, 5204, 3, 454, 227, 0, 5203, 5202, 1, 0, 0, 0, 5204, 5205, 1, 0, 0, 0, 5205, 5203, 1, 0, 0, 0, 5205, 5206, 1, 0, 0, 0, 5206, 459, 1, 0, 0, 0, 5207, 5208, 5, 8, 0, 0, 5208, 5210, 5, 678, 0, 0, 5209, 5211, 3, 758, 379, 0, 5210, 5209, 1, 0, 0, 0, 5210, 5211, 1, 0, 0, 0, 5211, 5268, 1, 0, 0, 0, 5212, 5217, 3, 492, 246, 0, 5213, 5214, 5, 868, 0, 0, 5214, 5216, 3, 492, 246, 0, 5215, 5213, 1, 0, 0, 0, 5216, 5219, 1, 0, 0, 0, 5217, 5215, 1, 0, 0, 0, 5217, 5218, 1, 0, 0, 0, 5218, 5269, 1, 0, 0, 0, 5219, 5217, 1, 0, 0, 0, 5220, 5225, 3, 494, 247, 0, 5221, 5222, 5, 868, 0, 0, 5222, 5224, 3, 494, 247, 0, 5223, 5221, 1, 0, 0, 0, 5224, 5227, 1, 0, 0, 0, 5225, 5223, 1, 0, 0, 0, 5225, 5226, 1, 0, 0, 0, 5226, 5242, 1, 0, 0, 0, 5227, 5225, 1, 0, 0, 0, 5228, 5240, 5, 144, 0, 0, 5229, 5241, 5, 505, 0, 0, 5230, 5237, 3, 506, 253, 0, 5231, 5233, 5, 11, 0, 0, 5232, 5231, 1, 0, 0, 0, 5232, 5233, 1, 0, 0, 0, 5233, 5234, 1, 0, 0, 0, 5234, 5236, 3, 506, 253, 0, 5235, 5232, 1, 0, 0, 0, 5236, 5239, 1, 0, 0, 0, 5237, 5235, 1, 0, 0, 0, 5237, 5238, 1, 0, 0, 0, 5238, 5241, 1, 0, 0, 0, 5239, 5237, 1, 0, 0, 0, 5240, 5229, 1, 0, 0, 0, 5240, 5230, 1, 0, 0, 0, 5241, 5243, 1, 0, 0, 0, 5242, 5228, 1, 0, 0, 0, 5242, 5243, 1, 0, 0, 0, 5243, 5250, 1, 0, 0, 0, 5244, 5246, 5, 194, 0, 0, 5245, 5247, 3, 508, 254, 0, 5246, 5245, 1, 0, 0, 0, 5247, 5248, 1, 0, 0, 0, 5248, 5246, 1, 0, 0, 0, 5248, 5249, 1, 0, 0, 0, 5249, 5251, 1, 0, 0, 0, 5250, 5244, 1, 0, 0, 0, 5250, 5251, 1, 0, 0, 0, 5251, 5256, 1, 0, 0, 0, 5252, 5255, 3, 510, 255, 0, 5253, 5255, 3, 512, 256, 0, 5254, 5252, 1, 0, 0, 0, 5254, 5253, 1, 0, 0, 0, 5255, 5258, 1, 0, 0, 0, 5256, 5254, 1, 0, 0, 0, 5256, 5257, 1, 0, 0, 0, 5257, 5261, 1, 0, 0, 0, 5258, 5256, 1, 0, 0, 0, 5259, 5260, 7, 80, 0, 0, 5260, 5262, 5, 882, 0, 0, 5261, 5259, 1, 0, 0, 0, 5261, 5262, 1, 0, 0, 0, 5262, 5269, 1, 0, 0, 0, 5263, 5264, 3, 656, 328, 0, 5264, 5265, 5, 42, 0, 0, 5265, 5266, 5, 582, 0, 0, 5266, 5267, 3, 468, 234, 0, 5267, 5269, 1, 0, 0, 0, 5268, 5212, 1, 0, 0, 0, 5268, 5220, 1, 0, 0, 0, 5268, 5263, 1, 0, 0, 0, 5269, 461, 1, 0, 0, 0, 5270, 5271, 5, 34, 0, 0, 5271, 5273, 5, 678, 0, 0, 5272, 5274, 3, 760, 380, 0, 5273, 5272, 1, 0, 0, 0, 5273, 5274, 1, 0, 0, 0, 5274, 5275, 1, 0, 0, 0, 5275, 5277, 3, 684, 342, 0, 5276, 5278, 3, 496, 248, 0, 5277, 5276, 1, 0, 0, 0, 5277, 5278, 1, 0, 0, 0, 5278, 5286, 1, 0, 0, 0, 5279, 5280, 5, 868, 0, 0, 5280, 5282, 3, 684, 342, 0, 5281, 5283, 3, 496, 248, 0, 5282, 5281, 1, 0, 0, 0, 5282, 5283, 1, 0, 0, 0, 5283, 5285, 1, 0, 0, 0, 5284, 5279, 1, 0, 0, 0, 5285, 5288, 1, 0, 0, 0, 5286, 5284, 1, 0, 0, 0, 5286, 5287, 1, 0, 0, 0, 5287, 5292, 1, 0, 0, 0, 5288, 5286, 1, 0, 0, 0, 5289, 5290, 5, 42, 0, 0, 5290, 5291, 5, 582, 0, 0, 5291, 5293, 3, 468, 234, 0, 5292, 5289, 1, 0, 0, 0, 5292, 5293, 1, 0, 0, 0, 5293, 5308, 1, 0, 0, 0, 5294, 5306, 5, 144, 0, 0, 5295, 5307, 5, 505, 0, 0, 5296, 5303, 3, 506, 253, 0, 5297, 5299, 5, 11, 0, 0, 5298, 5297, 1, 0, 0, 0, 5298, 5299, 1, 0, 0, 0, 5299, 5300, 1, 0, 0, 0, 5300, 5302, 3, 506, 253, 0, 5301, 5298, 1, 0, 0, 0, 5302, 5305, 1, 0, 0, 0, 5303, 5301, 1, 0, 0, 0, 5303, 5304, 1, 0, 0, 0, 5304, 5307, 1, 0, 0, 0, 5305, 5303, 1, 0, 0, 0, 5306, 5295, 1, 0, 0, 0, 5306, 5296, 1, 0, 0, 0, 5307, 5309, 1, 0, 0, 0, 5308, 5294, 1, 0, 0, 0, 5308, 5309, 1, 0, 0, 0, 5309, 5316, 1, 0, 0, 0, 5310, 5312, 5, 194, 0, 0, 5311, 5313, 3, 508, 254, 0, 5312, 5311, 1, 0, 0, 0, 5313, 5314, 1, 0, 0, 0, 5314, 5312, 1, 0, 0, 0, 5314, 5315, 1, 0, 0, 0, 5315, 5317, 1, 0, 0, 0, 5316, 5310, 1, 0, 0, 0, 5316, 5317, 1, 0, 0, 0, 5317, 5322, 1, 0, 0, 0, 5318, 5321, 3, 510, 255, 0, 5319, 5321, 3, 512, 256, 0, 5320, 5318, 1, 0, 0, 0, 5320, 5319, 1, 0, 0, 0, 5321, 5324, 1, 0, 0, 0, 5322, 5320, 1, 0, 0, 0, 5322, 5323, 1, 0, 0, 0, 5323, 5327, 1, 0, 0, 0, 5324, 5322, 1, 0, 0, 0, 5325, 5326, 7, 80, 0, 0, 5326, 5328, 5, 882, 0, 0, 5327, 5325, 1, 0, 0, 0, 5327, 5328, 1, 0, 0, 0, 5328, 463, 1, 0, 0, 0, 5329, 5330, 5, 51, 0, 0, 5330, 5332, 5, 678, 0, 0, 5331, 5333, 3, 758, 379, 0, 5332, 5331, 1, 0, 0, 0, 5332, 5333, 1, 0, 0, 0, 5333, 5334, 1, 0, 0, 0, 5334, 5339, 3, 684, 342, 0, 5335, 5336, 5, 868, 0, 0, 5336, 5338, 3, 684, 342, 0, 5337, 5335, 1, 0, 0, 0, 5338, 5341, 1, 0, 0, 0, 5339, 5337, 1, 0, 0, 0, 5339, 5340, 1, 0, 0, 0, 5340, 465, 1, 0, 0, 0, 5341, 5339, 1, 0, 0, 0, 5342, 5343, 5, 73, 0, 0, 5343, 5348, 3, 520, 260, 0, 5344, 5345, 5, 868, 0, 0, 5345, 5347, 3, 520, 260, 0, 5346, 5344, 1, 0, 0, 0, 5347, 5350, 1, 0, 0, 0, 5348, 5346, 1, 0, 0, 0, 5348, 5349, 1, 0, 0, 0, 5349, 5351, 1, 0, 0, 0, 5350, 5348, 1, 0, 0, 0, 5351, 5353, 5, 119, 0, 0, 5352, 5354, 3, 488, 244, 0, 5353, 5352, 1, 0, 0, 0, 5353, 5354, 1, 0, 0, 0, 5354, 5355, 1, 0, 0, 0, 5355, 5356, 3, 524, 262, 0, 5356, 5366, 5, 176, 0, 0, 5357, 5362, 3, 500, 250, 0, 5358, 5359, 5, 868, 0, 0, 5359, 5361, 3, 500, 250, 0, 5360, 5358, 1, 0, 0, 0, 5361, 5364, 1, 0, 0, 0, 5362, 5360, 1, 0, 0, 0, 5362, 5363, 1, 0, 0, 0, 5363, 5367, 1, 0, 0, 0, 5364, 5362, 1, 0, 0, 0, 5365, 5367, 3, 654, 327, 0, 5366, 5357, 1, 0, 0, 0, 5366, 5365, 1, 0, 0, 0, 5367, 5382, 1, 0, 0, 0, 5368, 5380, 5, 144, 0, 0, 5369, 5381, 5, 505, 0, 0, 5370, 5377, 3, 506, 253, 0, 5371, 5373, 5, 11, 0, 0, 5372, 5371, 1, 0, 0, 0, 5372, 5373, 1, 0, 0, 0, 5373, 5374, 1, 0, 0, 0, 5374, 5376, 3, 506, 253, 0, 5375, 5372, 1, 0, 0, 0, 5376, 5379, 1, 0, 0, 0, 5377, 5375, 1, 0, 0, 0, 5377, 5378, 1, 0, 0, 0, 5378, 5381, 1, 0, 0, 0, 5379, 5377, 1, 0, 0, 0, 5380, 5369, 1, 0, 0, 0, 5380, 5370, 1, 0, 0, 0, 5381, 5383, 1, 0, 0, 0, 5382, 5368, 1, 0, 0, 0, 5382, 5383, 1, 0, 0, 0, 5383, 5393, 1, 0, 0, 0, 5384, 5390, 5, 194, 0, 0, 5385, 5386, 5, 73, 0, 0, 5386, 5389, 5, 121, 0, 0, 5387, 5389, 3, 508, 254, 0, 5388, 5385, 1, 0, 0, 0, 5388, 5387, 1, 0, 0, 0, 5389, 5392, 1, 0, 0, 0, 5390, 5388, 1, 0, 0, 0, 5390, 5391, 1, 0, 0, 0, 5391, 5394, 1, 0, 0, 0, 5392, 5390, 1, 0, 0, 0, 5393, 5384, 1, 0, 0, 0, 5393, 5394, 1, 0, 0, 0, 5394, 5402, 1, 0, 0, 0, 5395, 5396, 5, 13, 0, 0, 5396, 5400, 3, 684, 342, 0, 5397, 5398, 5, 194, 0, 0, 5398, 5399, 5, 582, 0, 0, 5399, 5401, 3, 468, 234, 0, 5400, 5397, 1, 0, 0, 0, 5400, 5401, 1, 0, 0, 0, 5401, 5403, 1, 0, 0, 0, 5402, 5395, 1, 0, 0, 0, 5402, 5403, 1, 0, 0, 0, 5403, 5432, 1, 0, 0, 0, 5404, 5407, 5, 73, 0, 0, 5405, 5406, 5, 547, 0, 0, 5406, 5408, 5, 119, 0, 0, 5407, 5405, 1, 0, 0, 0, 5407, 5408, 1, 0, 0, 0, 5408, 5409, 1, 0, 0, 0, 5409, 5414, 3, 656, 328, 0, 5410, 5411, 5, 868, 0, 0, 5411, 5413, 3, 656, 328, 0, 5412, 5410, 1, 0, 0, 0, 5413, 5416, 1, 0, 0, 0, 5414, 5412, 1, 0, 0, 0, 5414, 5415, 1, 0, 0, 0, 5415, 5417, 1, 0, 0, 0, 5416, 5414, 1, 0, 0, 0, 5417, 5418, 5, 176, 0, 0, 5418, 5423, 3, 656, 328, 0, 5419, 5420, 5, 868, 0, 0, 5420, 5422, 3, 656, 328, 0, 5421, 5419, 1, 0, 0, 0, 5422, 5425, 1, 0, 0, 0, 5423, 5421, 1, 0, 0, 0, 5423, 5424, 1, 0, 0, 0, 5424, 5429, 1, 0, 0, 0, 5425, 5423, 1, 0, 0, 0, 5426, 5427, 5, 194, 0, 0, 5427, 5428, 5, 704, 0, 0, 5428, 5430, 5, 121, 0, 0, 5429, 5426, 1, 0, 0, 0, 5429, 5430, 1, 0, 0, 0, 5430, 5432, 1, 0, 0, 0, 5431, 5342, 1, 0, 0, 0, 5431, 5404, 1, 0, 0, 0, 5432, 467, 1, 0, 0, 0, 5433, 5442, 5, 42, 0, 0, 5434, 5442, 5, 505, 0, 0, 5435, 5438, 5, 7, 0, 0, 5436, 5437, 5, 59, 0, 0, 5437, 5439, 3, 654, 327, 0, 5438, 5436, 1, 0, 0, 0, 5438, 5439, 1, 0, 0, 0, 5439, 5442, 1, 0, 0, 0, 5440, 5442, 3, 654, 327, 0, 5441, 5433, 1, 0, 0, 0, 5441, 5434, 1, 0, 0, 0, 5441, 5435, 1, 0, 0, 0, 5441, 5440, 1, 0, 0, 0, 5442, 469, 1, 0, 0, 0, 5443, 5444, 5, 73, 0, 0, 5444, 5445, 5, 547, 0, 0, 5445, 5446, 5, 119, 0, 0, 5446, 5447, 3, 684, 342, 0, 5447, 5448, 5, 176, 0, 0, 5448, 5453, 3, 684, 342, 0, 5449, 5450, 5, 868, 0, 0, 5450, 5452, 3, 684, 342, 0, 5451, 5449, 1, 0, 0, 0, 5452, 5455, 1, 0, 0, 0, 5453, 5451, 1, 0, 0, 0, 5453, 5454, 1, 0, 0, 0, 5454, 5459, 1, 0, 0, 0, 5455, 5453, 1, 0, 0, 0, 5456, 5457, 5, 194, 0, 0, 5457, 5458, 5, 73, 0, 0, 5458, 5460, 5, 121, 0, 0, 5459, 5456, 1, 0, 0, 0, 5459, 5460, 1, 0, 0, 0, 5460, 471, 1, 0, 0, 0, 5461, 5462, 5, 8, 0, 0, 5462, 5463, 5, 739, 0, 0, 5463, 5464, 5, 74, 0, 0, 5464, 5470, 3, 646, 323, 0, 5465, 5467, 5, 190, 0, 0, 5466, 5468, 5, 857, 0, 0, 5467, 5466, 1, 0, 0, 0, 5467, 5468, 1, 0, 0, 0, 5468, 5469, 1, 0, 0, 0, 5469, 5471, 3, 480, 240, 0, 5470, 5465, 1, 0, 0, 0, 5470, 5471, 1, 0, 0, 0, 5471, 5477, 1, 0, 0, 0, 5472, 5474, 5, 837, 0, 0, 5473, 5475, 5, 857, 0, 0, 5474, 5473, 1, 0, 0, 0, 5474, 5475, 1, 0, 0, 0, 5475, 5476, 1, 0, 0, 0, 5476, 5478, 3, 712, 356, 0, 5477, 5472, 1, 0, 0, 0, 5477, 5478, 1, 0, 0, 0, 5478, 5483, 1, 0, 0, 0, 5479, 5481, 7, 39, 0, 0, 5480, 5482, 5, 66, 0, 0, 5481, 5480, 1, 0, 0, 0, 5481, 5482, 1, 0, 0, 0, 5482, 5484, 1, 0, 0, 0, 5483, 5479, 1, 0, 0, 0, 5483, 5484, 1, 0, 0, 0, 5484, 473, 1, 0, 0, 0, 5485, 5486, 5, 34, 0, 0, 5486, 5487, 5, 739, 0, 0, 5487, 5488, 5, 74, 0, 0, 5488, 5489, 3, 644, 322, 0, 5489, 5490, 5, 839, 0, 0, 5490, 5491, 5, 857, 0, 0, 5491, 5497, 7, 81, 0, 0, 5492, 5494, 5, 190, 0, 0, 5493, 5495, 5, 857, 0, 0, 5494, 5493, 1, 0, 0, 0, 5494, 5495, 1, 0, 0, 0, 5495, 5496, 1, 0, 0, 0, 5496, 5498, 3, 480, 240, 0, 5497, 5492, 1, 0, 0, 0, 5497, 5498, 1, 0, 0, 0, 5498, 5504, 1, 0, 0, 0, 5499, 5501, 5, 837, 0, 0, 5500, 5502, 5, 857, 0, 0, 5501, 5500, 1, 0, 0, 0, 5501, 5502, 1, 0, 0, 0, 5502, 5503, 1, 0, 0, 0, 5503, 5505, 3, 712, 356, 0, 5504, 5499, 1, 0, 0, 0, 5504, 5505, 1, 0, 0, 0, 5505, 5507, 1, 0, 0, 0, 5506, 5508, 7, 39, 0, 0, 5507, 5506, 1, 0, 0, 0, 5507, 5508, 1, 0, 0, 0, 5508, 475, 1, 0, 0, 0, 5509, 5510, 5, 51, 0, 0, 5510, 5511, 5, 739, 0, 0, 5511, 5512, 5, 74, 0, 0, 5512, 5514, 3, 646, 323, 0, 5513, 5515, 5, 66, 0, 0, 5514, 5513, 1, 0, 0, 0, 5514, 5515, 1, 0, 0, 0, 5515, 477, 1, 0, 0, 0, 5516, 5517, 5, 155, 0, 0, 5517, 5518, 5, 739, 0, 0, 5518, 5519, 5, 74, 0, 0, 5519, 5529, 3, 646, 323, 0, 5520, 5521, 5, 65, 0, 0, 5521, 5526, 3, 712, 356, 0, 5522, 5523, 5, 868, 0, 0, 5523, 5525, 3, 712, 356, 0, 5524, 5522, 1, 0, 0, 0, 5525, 5528, 1, 0, 0, 0, 5526, 5524, 1, 0, 0, 0, 5526, 5527, 1, 0, 0, 0, 5527, 5530, 1, 0, 0, 0, 5528, 5526, 1, 0, 0, 0, 5529, 5520, 1, 0, 0, 0, 5529, 5530, 1, 0, 0, 0, 5530, 479, 1, 0, 0, 0, 5531, 5537, 3, 712, 356, 0, 5532, 5533, 3, 712, 356, 0, 5533, 5534, 5, 854, 0, 0, 5534, 5535, 3, 712, 356, 0, 5535, 5537, 1, 0, 0, 0, 5536, 5531, 1, 0, 0, 0, 5536, 5532, 1, 0, 0, 0, 5537, 5542, 1, 0, 0, 0, 5538, 5539, 5, 868, 0, 0, 5539, 5541, 3, 480, 240, 0, 5540, 5538, 1, 0, 0, 0, 5541, 5544, 1, 0, 0, 0, 5542, 5540, 1, 0, 0, 0, 5542, 5543, 1, 0, 0, 0, 5543, 481, 1, 0, 0, 0, 5544, 5542, 1, 0, 0, 0, 5545, 5546, 5, 141, 0, 0, 5546, 5547, 5, 678, 0, 0, 5547, 5552, 3, 526, 263, 0, 5548, 5549, 5, 868, 0, 0, 5549, 5551, 3, 526, 263, 0, 5550, 5548, 1, 0, 0, 0, 5551, 5554, 1, 0, 0, 0, 5552, 5550, 1, 0, 0, 0, 5552, 5553, 1, 0, 0, 0, 5553, 483, 1, 0, 0, 0, 5554, 5552, 1, 0, 0, 0, 5555, 5557, 5, 149, 0, 0, 5556, 5558, 3, 758, 379, 0, 5557, 5556, 1, 0, 0, 0, 5557, 5558, 1, 0, 0, 0, 5558, 5559, 1, 0, 0, 0, 5559, 5564, 3, 520, 260, 0, 5560, 5561, 5, 868, 0, 0, 5561, 5563, 3, 520, 260, 0, 5562, 5560, 1, 0, 0, 0, 5563, 5566, 1, 0, 0, 0, 5564, 5562, 1, 0, 0, 0, 5564, 5565, 1, 0, 0, 0, 5565, 5567, 1, 0, 0, 0, 5566, 5564, 1, 0, 0, 0, 5567, 5569, 5, 119, 0, 0, 5568, 5570, 3, 488, 244, 0, 5569, 5568, 1, 0, 0, 0, 5569, 5570, 1, 0, 0, 0, 5570, 5571, 1, 0, 0, 0, 5571, 5572, 3, 524, 262, 0, 5572, 5573, 5, 68, 0, 0, 5573, 5575, 3, 654, 327, 0, 5574, 5576, 3, 486, 243, 0, 5575, 5574, 1, 0, 0, 0, 5575, 5576, 1, 0, 0, 0, 5576, 5608, 1, 0, 0, 0, 5577, 5579, 5, 149, 0, 0, 5578, 5580, 3, 758, 379, 0, 5579, 5578, 1, 0, 0, 0, 5579, 5580, 1, 0, 0, 0, 5580, 5581, 1, 0, 0, 0, 5581, 5583, 5, 7, 0, 0, 5582, 5584, 5, 734, 0, 0, 5583, 5582, 1, 0, 0, 0, 5583, 5584, 1, 0, 0, 0, 5584, 5585, 1, 0, 0, 0, 5585, 5586, 5, 868, 0, 0, 5586, 5587, 5, 73, 0, 0, 5587, 5588, 5, 121, 0, 0, 5588, 5589, 5, 68, 0, 0, 5589, 5591, 3, 654, 327, 0, 5590, 5592, 3, 486, 243, 0, 5591, 5590, 1, 0, 0, 0, 5591, 5592, 1, 0, 0, 0, 5592, 5608, 1, 0, 0, 0, 5593, 5595, 5, 149, 0, 0, 5594, 5596, 3, 758, 379, 0, 5595, 5594, 1, 0, 0, 0, 5595, 5596, 1, 0, 0, 0, 5596, 5599, 1, 0, 0, 0, 5597, 5598, 5, 547, 0, 0, 5598, 5600, 5, 119, 0, 0, 5599, 5597, 1, 0, 0, 0, 5599, 5600, 1, 0, 0, 0, 5600, 5601, 1, 0, 0, 0, 5601, 5602, 3, 654, 327, 0, 5602, 5603, 5, 68, 0, 0, 5603, 5605, 3, 654, 327, 0, 5604, 5606, 3, 486, 243, 0, 5605, 5604, 1, 0, 0, 0, 5605, 5606, 1, 0, 0, 0, 5606, 5608, 1, 0, 0, 0, 5607, 5555, 1, 0, 0, 0, 5607, 5577, 1, 0, 0, 0, 5607, 5593, 1, 0, 0, 0, 5608, 485, 1, 0, 0, 0, 5609, 5610, 5, 79, 0, 0, 5610, 5611, 5, 674, 0, 0, 5611, 5612, 5, 678, 0, 0, 5612, 487, 1, 0, 0, 0, 5613, 5614, 7, 82, 0, 0, 5614, 489, 1, 0, 0, 0, 5615, 5616, 5, 155, 0, 0, 5616, 5619, 5, 529, 0, 0, 5617, 5618, 5, 65, 0, 0, 5618, 5620, 3, 684, 342, 0, 5619, 5617, 1, 0, 0, 0, 5619, 5620, 1, 0, 0, 0, 5620, 5621, 1, 0, 0, 0, 5621, 5624, 5, 857, 0, 0, 5622, 5625, 3, 798, 399, 0, 5623, 5625, 5, 882, 0, 0, 5624, 5622, 1, 0, 0, 0, 5624, 5623, 1, 0, 0, 0, 5625, 5648, 1, 0, 0, 0, 5626, 5627, 5, 155, 0, 0, 5627, 5630, 5, 529, 0, 0, 5628, 5629, 5, 65, 0, 0, 5629, 5631, 3, 684, 342, 0, 5630, 5628, 1, 0, 0, 0, 5630, 5631, 1, 0, 0, 0, 5631, 5636, 1, 0, 0, 0, 5632, 5633, 5, 176, 0, 0, 5633, 5637, 5, 829, 0, 0, 5634, 5635, 5, 857, 0, 0, 5635, 5637, 5, 882, 0, 0, 5636, 5632, 1, 0, 0, 0, 5636, 5634, 1, 0, 0, 0, 5637, 5640, 1, 0, 0, 0, 5638, 5639, 5, 143, 0, 0, 5639, 5641, 5, 882, 0, 0, 5640, 5638, 1, 0, 0, 0, 5640, 5641, 1, 0, 0, 0, 5641, 5645, 1, 0, 0, 0, 5642, 5643, 5, 147, 0, 0, 5643, 5644, 5, 36, 0, 0, 5644, 5646, 5, 529, 0, 0, 5645, 5642, 1, 0, 0, 0, 5645, 5646, 1, 0, 0, 0, 5646, 5648, 1, 0, 0, 0, 5647, 5615, 1, 0, 0, 0, 5647, 5626, 1, 0, 0, 0, 5648, 491, 1, 0, 0, 0, 5649, 5650, 3, 684, 342, 0, 5650, 5651, 3, 510, 255, 0, 5651, 493, 1, 0, 0, 0, 5652, 5678, 3, 684, 342, 0, 5653, 5654, 5, 423, 0, 0, 5654, 5655, 5, 20, 0, 0, 5655, 5656, 5, 882, 0, 0, 5656, 5679, 3, 502, 251, 0, 5657, 5658, 5, 423, 0, 0, 5658, 5659, 5, 20, 0, 0, 5659, 5660, 5, 829, 0, 0, 5660, 5661, 5, 529, 0, 0, 5661, 5679, 3, 502, 251, 0, 5662, 5663, 5, 423, 0, 0, 5663, 5664, 5, 194, 0, 0, 5664, 5679, 3, 504, 252, 0, 5665, 5666, 5, 369, 0, 0, 5666, 5667, 5, 511, 0, 0, 5667, 5679, 5, 529, 0, 0, 5668, 5669, 7, 83, 0, 0, 5669, 5671, 3, 518, 259, 0, 5670, 5672, 3, 514, 257, 0, 5671, 5670, 1, 0, 0, 0, 5671, 5672, 1, 0, 0, 0, 5672, 5674, 1, 0, 0, 0, 5673, 5668, 1, 0, 0, 0, 5674, 5675, 1, 0, 0, 0, 5675, 5673, 1, 0, 0, 0, 5675, 5676, 1, 0, 0, 0, 5676, 5679, 1, 0, 0, 0, 5677, 5679, 3, 516, 258, 0, 5678, 5653, 1, 0, 0, 0, 5678, 5657, 1, 0, 0, 0, 5678, 5662, 1, 0, 0, 0, 5678, 5665, 1, 0, 0, 0, 5678, 5673, 1, 0, 0, 0, 5678, 5677, 1, 0, 0, 0, 5678, 5679, 1, 0, 0, 0, 5679, 495, 1, 0, 0, 0, 5680, 5681, 5, 423, 0, 0, 5681, 5687, 5, 20, 0, 0, 5682, 5688, 5, 882, 0, 0, 5683, 5684, 5, 829, 0, 0, 5684, 5688, 5, 529, 0, 0, 5685, 5686, 5, 529, 0, 0, 5686, 5688, 5, 882, 0, 0, 5687, 5682, 1, 0, 0, 0, 5687, 5683, 1, 0, 0, 0, 5687, 5685, 1, 0, 0, 0, 5688, 5691, 1, 0, 0, 0, 5689, 5690, 5, 11, 0, 0, 5690, 5692, 3, 496, 248, 0, 5691, 5689, 1, 0, 0, 0, 5691, 5692, 1, 0, 0, 0, 5692, 5717, 1, 0, 0, 0, 5693, 5694, 5, 423, 0, 0, 5694, 5695, 5, 194, 0, 0, 5695, 5704, 3, 706, 353, 0, 5696, 5700, 5, 20, 0, 0, 5697, 5701, 5, 882, 0, 0, 5698, 5699, 5, 829, 0, 0, 5699, 5701, 5, 529, 0, 0, 5700, 5697, 1, 0, 0, 0, 5700, 5698, 1, 0, 0, 0, 5701, 5705, 1, 0, 0, 0, 5702, 5703, 5, 13, 0, 0, 5703, 5705, 5, 882, 0, 0, 5704, 5696, 1, 0, 0, 0, 5704, 5702, 1, 0, 0, 0, 5704, 5705, 1, 0, 0, 0, 5705, 5708, 1, 0, 0, 0, 5706, 5707, 5, 11, 0, 0, 5707, 5709, 3, 496, 248, 0, 5708, 5706, 1, 0, 0, 0, 5708, 5709, 1, 0, 0, 0, 5709, 5717, 1, 0, 0, 0, 5710, 5711, 5, 423, 0, 0, 5711, 5712, 5, 194, 0, 0, 5712, 5714, 3, 706, 353, 0, 5713, 5715, 3, 498, 249, 0, 5714, 5713, 1, 0, 0, 0, 5714, 5715, 1, 0, 0, 0, 5715, 5717, 1, 0, 0, 0, 5716, 5680, 1, 0, 0, 0, 5716, 5693, 1, 0, 0, 0, 5716, 5710, 1, 0, 0, 0, 5717, 497, 1, 0, 0, 0, 5718, 5719, 5, 427, 0, 0, 5719, 5720, 5, 708, 0, 0, 5720, 5721, 5, 423, 0, 0, 5721, 5725, 5, 20, 0, 0, 5722, 5723, 5, 829, 0, 0, 5723, 5726, 5, 529, 0, 0, 5724, 5726, 5, 882, 0, 0, 5725, 5722, 1, 0, 0, 0, 5725, 5724, 1, 0, 0, 0, 5726, 5736, 1, 0, 0, 0, 5727, 5728, 5, 427, 0, 0, 5728, 5729, 5, 708, 0, 0, 5729, 5730, 5, 423, 0, 0, 5730, 5731, 5, 194, 0, 0, 5731, 5732, 3, 706, 353, 0, 5732, 5733, 5, 13, 0, 0, 5733, 5734, 5, 882, 0, 0, 5734, 5736, 1, 0, 0, 0, 5735, 5718, 1, 0, 0, 0, 5735, 5727, 1, 0, 0, 0, 5736, 499, 1, 0, 0, 0, 5737, 5738, 3, 684, 342, 0, 5738, 5739, 5, 423, 0, 0, 5739, 5740, 5, 20, 0, 0, 5740, 5741, 5, 529, 0, 0, 5741, 5742, 5, 882, 0, 0, 5742, 5763, 1, 0, 0, 0, 5743, 5744, 3, 684, 342, 0, 5744, 5745, 5, 423, 0, 0, 5745, 5746, 5, 20, 0, 0, 5746, 5747, 5, 829, 0, 0, 5747, 5748, 5, 529, 0, 0, 5748, 5749, 3, 502, 251, 0, 5749, 5763, 1, 0, 0, 0, 5750, 5751, 3, 684, 342, 0, 5751, 5752, 5, 423, 0, 0, 5752, 5753, 5, 20, 0, 0, 5753, 5754, 5, 882, 0, 0, 5754, 5755, 3, 502, 251, 0, 5755, 5763, 1, 0, 0, 0, 5756, 5757, 3, 684, 342, 0, 5757, 5758, 5, 423, 0, 0, 5758, 5759, 5, 194, 0, 0, 5759, 5760, 3, 504, 252, 0, 5760, 5763, 1, 0, 0, 0, 5761, 5763, 3, 684, 342, 0, 5762, 5737, 1, 0, 0, 0, 5762, 5743, 1, 0, 0, 0, 5762, 5750, 1, 0, 0, 0, 5762, 5756, 1, 0, 0, 0, 5762, 5761, 1, 0, 0, 0, 5763, 501, 1, 0, 0, 0, 5764, 5765, 5, 143, 0, 0, 5765, 5767, 5, 882, 0, 0, 5766, 5764, 1, 0, 0, 0, 5766, 5767, 1, 0, 0, 0, 5767, 5771, 1, 0, 0, 0, 5768, 5769, 5, 147, 0, 0, 5769, 5770, 5, 36, 0, 0, 5770, 5772, 5, 529, 0, 0, 5771, 5768, 1, 0, 0, 0, 5771, 5772, 1, 0, 0, 0, 5772, 503, 1, 0, 0, 0, 5773, 5781, 3, 706, 353, 0, 5774, 5778, 7, 84, 0, 0, 5775, 5779, 5, 882, 0, 0, 5776, 5777, 5, 829, 0, 0, 5777, 5779, 5, 529, 0, 0, 5778, 5775, 1, 0, 0, 0, 5778, 5776, 1, 0, 0, 0, 5779, 5780, 1, 0, 0, 0, 5780, 5782, 3, 502, 251, 0, 5781, 5774, 1, 0, 0, 0, 5781, 5782, 1, 0, 0, 0, 5782, 5788, 1, 0, 0, 0, 5783, 5784, 3, 706, 353, 0, 5784, 5785, 5, 188, 0, 0, 5785, 5786, 3, 798, 399, 0, 5786, 5788, 1, 0, 0, 0, 5787, 5773, 1, 0, 0, 0, 5787, 5783, 1, 0, 0, 0, 5788, 505, 1, 0, 0, 0, 5789, 5798, 5, 169, 0, 0, 5790, 5798, 5, 693, 0, 0, 5791, 5792, 5, 331, 0, 0, 5792, 5798, 5, 882, 0, 0, 5793, 5794, 5, 441, 0, 0, 5794, 5798, 5, 882, 0, 0, 5795, 5796, 5, 651, 0, 0, 5796, 5798, 5, 882, 0, 0, 5797, 5789, 1, 0, 0, 0, 5797, 5790, 1, 0, 0, 0, 5797, 5791, 1, 0, 0, 0, 5797, 5793, 1, 0, 0, 0, 5797, 5795, 1, 0, 0, 0, 5798, 507, 1, 0, 0, 0, 5799, 5800, 5, 479, 0, 0, 5800, 5808, 3, 712, 356, 0, 5801, 5802, 5, 482, 0, 0, 5802, 5808, 3, 712, 356, 0, 5803, 5804, 5, 478, 0, 0, 5804, 5808, 3, 712, 356, 0, 5805, 5806, 5, 483, 0, 0, 5806, 5808, 3, 712, 356, 0, 5807, 5799, 1, 0, 0, 0, 5807, 5801, 1, 0, 0, 0, 5807, 5803, 1, 0, 0, 0, 5807, 5805, 1, 0, 0, 0, 5808, 509, 1, 0, 0, 0, 5809, 5810, 5, 529, 0, 0, 5810, 5817, 5, 390, 0, 0, 5811, 5818, 5, 42, 0, 0, 5812, 5818, 5, 500, 0, 0, 5813, 5814, 5, 87, 0, 0, 5814, 5815, 3, 712, 356, 0, 5815, 5816, 5, 698, 0, 0, 5816, 5818, 1, 0, 0, 0, 5817, 5811, 1, 0, 0, 0, 5817, 5812, 1, 0, 0, 0, 5817, 5813, 1, 0, 0, 0, 5817, 5818, 1, 0, 0, 0, 5818, 5848, 1, 0, 0, 0, 5819, 5820, 5, 529, 0, 0, 5820, 5823, 5, 420, 0, 0, 5821, 5824, 5, 42, 0, 0, 5822, 5824, 3, 712, 356, 0, 5823, 5821, 1, 0, 0, 0, 5823, 5822, 1, 0, 0, 0, 5824, 5848, 1, 0, 0, 0, 5825, 5826, 5, 529, 0, 0, 5826, 5827, 5, 581, 0, 0, 5827, 5832, 5, 87, 0, 0, 5828, 5833, 5, 42, 0, 0, 5829, 5830, 3, 712, 356, 0, 5830, 5831, 5, 698, 0, 0, 5831, 5833, 1, 0, 0, 0, 5832, 5828, 1, 0, 0, 0, 5832, 5829, 1, 0, 0, 0, 5833, 5848, 1, 0, 0, 0, 5834, 5835, 5, 529, 0, 0, 5835, 5836, 5, 144, 0, 0, 5836, 5838, 5, 36, 0, 0, 5837, 5839, 7, 85, 0, 0, 5838, 5837, 1, 0, 0, 0, 5838, 5839, 1, 0, 0, 0, 5839, 5848, 1, 0, 0, 0, 5840, 5841, 5, 395, 0, 0, 5841, 5848, 3, 712, 356, 0, 5842, 5845, 5, 530, 0, 0, 5843, 5846, 3, 712, 356, 0, 5844, 5846, 5, 669, 0, 0, 5845, 5843, 1, 0, 0, 0, 5845, 5844, 1, 0, 0, 0, 5846, 5848, 1, 0, 0, 0, 5847, 5809, 1, 0, 0, 0, 5847, 5819, 1, 0, 0, 0, 5847, 5825, 1, 0, 0, 0, 5847, 5834, 1, 0, 0, 0, 5847, 5840, 1, 0, 0, 0, 5847, 5842, 1, 0, 0, 0, 5848, 511, 1, 0, 0, 0, 5849, 5850, 5, 304, 0, 0, 5850, 5851, 7, 86, 0, 0, 5851, 513, 1, 0, 0, 0, 5852, 5855, 5, 423, 0, 0, 5853, 5854, 5, 194, 0, 0, 5854, 5856, 3, 706, 353, 0, 5855, 5853, 1, 0, 0, 0, 5855, 5856, 1, 0, 0, 0, 5856, 5865, 1, 0, 0, 0, 5857, 5861, 5, 20, 0, 0, 5858, 5862, 5, 882, 0, 0, 5859, 5860, 5, 829, 0, 0, 5860, 5862, 5, 529, 0, 0, 5861, 5858, 1, 0, 0, 0, 5861, 5859, 1, 0, 0, 0, 5862, 5866, 1, 0, 0, 0, 5863, 5864, 5, 13, 0, 0, 5864, 5866, 5, 882, 0, 0, 5865, 5857, 1, 0, 0, 0, 5865, 5863, 1, 0, 0, 0, 5866, 515, 1, 0, 0, 0, 5867, 5868, 3, 518, 259, 0, 5868, 5869, 5, 429, 0, 0, 5869, 5870, 5, 555, 0, 0, 5870, 5883, 1, 0, 0, 0, 5871, 5872, 3, 518, 259, 0, 5872, 5873, 5, 401, 0, 0, 5873, 5874, 5, 555, 0, 0, 5874, 5875, 5, 155, 0, 0, 5875, 5876, 5, 330, 0, 0, 5876, 5877, 5, 13, 0, 0, 5877, 5878, 5, 882, 0, 0, 5878, 5883, 1, 0, 0, 0, 5879, 5880, 3, 518, 259, 0, 5880, 5881, 5, 675, 0, 0, 5881, 5883, 1, 0, 0, 0, 5882, 5867, 1, 0, 0, 0, 5882, 5871, 1, 0, 0, 0, 5882, 5879, 1, 0, 0, 0, 5883, 517, 1, 0, 0, 0, 5884, 5885, 7, 87, 0, 0, 5885, 5886, 5, 394, 0, 0, 5886, 519, 1, 0, 0, 0, 5887, 5892, 3, 522, 261, 0, 5888, 5889, 5, 866, 0, 0, 5889, 5890, 3, 660, 330, 0, 5890, 5891, 5, 867, 0, 0, 5891, 5893, 1, 0, 0, 0, 5892, 5888, 1, 0, 0, 0, 5892, 5893, 1, 0, 0, 0, 5893, 521, 1, 0, 0, 0, 5894, 5896, 5, 7, 0, 0, 5895, 5897, 5, 734, 0, 0, 5896, 5895, 1, 0, 0, 0, 5896, 5897, 1, 0, 0, 0, 5897, 5988, 1, 0, 0, 0, 5898, 5900, 5, 8, 0, 0, 5899, 5901, 5, 743, 0, 0, 5900, 5899, 1, 0, 0, 0, 5900, 5901, 1, 0, 0, 0, 5901, 5988, 1, 0, 0, 0, 5902, 5910, 5, 34, 0, 0, 5903, 5904, 5, 660, 0, 0, 5904, 5911, 5, 752, 0, 0, 5905, 5911, 5, 743, 0, 0, 5906, 5911, 5, 684, 0, 0, 5907, 5911, 5, 678, 0, 0, 5908, 5911, 5, 658, 0, 0, 5909, 5911, 5, 582, 0, 0, 5910, 5903, 1, 0, 0, 0, 5910, 5905, 1, 0, 0, 0, 5910, 5906, 1, 0, 0, 0, 5910, 5907, 1, 0, 0, 0, 5910, 5908, 1, 0, 0, 0, 5910, 5909, 1, 0, 0, 0, 5910, 5911, 1, 0, 0, 0, 5911, 5988, 1, 0, 0, 0, 5912, 5988, 5, 44, 0, 0, 5913, 5915, 5, 51, 0, 0, 5914, 5916, 5, 582, 0, 0, 5915, 5914, 1, 0, 0, 0, 5915, 5916, 1, 0, 0, 0, 5916, 5988, 1, 0, 0, 0, 5917, 5988, 5, 385, 0, 0, 5918, 5988, 5, 717, 0, 0, 5919, 5988, 5, 718, 0, 0, 5920, 5921, 5, 73, 0, 0, 5921, 5988, 5, 121, 0, 0, 5922, 5988, 5, 82, 0, 0, 5923, 5988, 5, 86, 0, 0, 5924, 5925, 5, 104, 0, 0, 5925, 5988, 5, 752, 0, 0, 5926, 5988, 5, 735, 0, 0, 5927, 5988, 5, 547, 0, 0, 5928, 5988, 5, 138, 0, 0, 5929, 5988, 5, 736, 0, 0, 5930, 5931, 5, 572, 0, 0, 5931, 5988, 7, 88, 0, 0, 5932, 5988, 5, 154, 0, 0, 5933, 5934, 5, 157, 0, 0, 5934, 5988, 7, 89, 0, 0, 5935, 5988, 5, 749, 0, 0, 5936, 5988, 5, 750, 0, 0, 5937, 5988, 5, 178, 0, 0, 5938, 5988, 5, 185, 0, 0, 5939, 5988, 5, 186, 0, 0, 5940, 5988, 5, 705, 0, 0, 5941, 5988, 5, 706, 0, 0, 5942, 5988, 5, 707, 0, 0, 5943, 5988, 5, 709, 0, 0, 5944, 5988, 5, 710, 0, 0, 5945, 5988, 5, 711, 0, 0, 5946, 5988, 5, 712, 0, 0, 5947, 5988, 5, 714, 0, 0, 5948, 5988, 5, 715, 0, 0, 5949, 5988, 5, 716, 0, 0, 5950, 5988, 5, 719, 0, 0, 5951, 5988, 5, 720, 0, 0, 5952, 5988, 5, 721, 0, 0, 5953, 5988, 5, 722, 0, 0, 5954, 5988, 5, 723, 0, 0, 5955, 5988, 5, 724, 0, 0, 5956, 5988, 5, 725, 0, 0, 5957, 5988, 5, 726, 0, 0, 5958, 5988, 5, 727, 0, 0, 5959, 5988, 5, 728, 0, 0, 5960, 5988, 5, 731, 0, 0, 5961, 5988, 5, 732, 0, 0, 5962, 5988, 5, 733, 0, 0, 5963, 5988, 5, 737, 0, 0, 5964, 5988, 5, 738, 0, 0, 5965, 5988, 5, 740, 0, 0, 5966, 5988, 5, 741, 0, 0, 5967, 5988, 5, 742, 0, 0, 5968, 5988, 5, 745, 0, 0, 5969, 5988, 5, 746, 0, 0, 5970, 5988, 5, 747, 0, 0, 5971, 5988, 5, 160, 0, 0, 5972, 5988, 5, 748, 0, 0, 5973, 5988, 5, 836, 0, 0, 5974, 5988, 5, 751, 0, 0, 5975, 5988, 5, 753, 0, 0, 5976, 5988, 5, 838, 0, 0, 5977, 5988, 5, 754, 0, 0, 5978, 5988, 5, 755, 0, 0, 5979, 5980, 5, 103, 0, 0, 5980, 5981, 5, 68, 0, 0, 5981, 5988, 5, 744, 0, 0, 5982, 5983, 5, 154, 0, 0, 5983, 5984, 5, 88, 0, 0, 5984, 5988, 5, 744, 0, 0, 5985, 5986, 5, 729, 0, 0, 5986, 5988, 5, 730, 0, 0, 5987, 5894, 1, 0, 0, 0, 5987, 5898, 1, 0, 0, 0, 5987, 5902, 1, 0, 0, 0, 5987, 5912, 1, 0, 0, 0, 5987, 5913, 1, 0, 0, 0, 5987, 5917, 1, 0, 0, 0, 5987, 5918, 1, 0, 0, 0, 5987, 5919, 1, 0, 0, 0, 5987, 5920, 1, 0, 0, 0, 5987, 5922, 1, 0, 0, 0, 5987, 5923, 1, 0, 0, 0, 5987, 5924, 1, 0, 0, 0, 5987, 5926, 1, 0, 0, 0, 5987, 5927, 1, 0, 0, 0, 5987, 5928, 1, 0, 0, 0, 5987, 5929, 1, 0, 0, 0, 5987, 5930, 1, 0, 0, 0, 5987, 5932, 1, 0, 0, 0, 5987, 5933, 1, 0, 0, 0, 5987, 5935, 1, 0, 0, 0, 5987, 5936, 1, 0, 0, 0, 5987, 5937, 1, 0, 0, 0, 5987, 5938, 1, 0, 0, 0, 5987, 5939, 1, 0, 0, 0, 5987, 5940, 1, 0, 0, 0, 5987, 5941, 1, 0, 0, 0, 5987, 5942, 1, 0, 0, 0, 5987, 5943, 1, 0, 0, 0, 5987, 5944, 1, 0, 0, 0, 5987, 5945, 1, 0, 0, 0, 5987, 5946, 1, 0, 0, 0, 5987, 5947, 1, 0, 0, 0, 5987, 5948, 1, 0, 0, 0, 5987, 5949, 1, 0, 0, 0, 5987, 5950, 1, 0, 0, 0, 5987, 5951, 1, 0, 0, 0, 5987, 5952, 1, 0, 0, 0, 5987, 5953, 1, 0, 0, 0, 5987, 5954, 1, 0, 0, 0, 5987, 5955, 1, 0, 0, 0, 5987, 5956, 1, 0, 0, 0, 5987, 5957, 1, 0, 0, 0, 5987, 5958, 1, 0, 0, 0, 5987, 5959, 1, 0, 0, 0, 5987, 5960, 1, 0, 0, 0, 5987, 5961, 1, 0, 0, 0, 5987, 5962, 1, 0, 0, 0, 5987, 5963, 1, 0, 0, 0, 5987, 5964, 1, 0, 0, 0, 5987, 5965, 1, 0, 0, 0, 5987, 5966, 1, 0, 0, 0, 5987, 5967, 1, 0, 0, 0, 5987, 5968, 1, 0, 0, 0, 5987, 5969, 1, 0, 0, 0, 5987, 5970, 1, 0, 0, 0, 5987, 5971, 1, 0, 0, 0, 5987, 5972, 1, 0, 0, 0, 5987, 5973, 1, 0, 0, 0, 5987, 5974, 1, 0, 0, 0, 5987, 5975, 1, 0, 0, 0, 5987, 5976, 1, 0, 0, 0, 5987, 5977, 1, 0, 0, 0, 5987, 5978, 1, 0, 0, 0, 5987, 5979, 1, 0, 0, 0, 5987, 5982, 1, 0, 0, 0, 5987, 5985, 1, 0, 0, 0, 5988, 523, 1, 0, 0, 0, 5989, 6006, 5, 850, 0, 0, 5990, 5991, 5, 850, 0, 0, 5991, 5992, 5, 865, 0, 0, 5992, 6006, 5, 850, 0, 0, 5993, 5994, 3, 706, 353, 0, 5994, 5995, 5, 865, 0, 0, 5995, 5996, 5, 850, 0, 0, 5996, 6006, 1, 0, 0, 0, 5997, 5998, 3, 706, 353, 0, 5998, 5999, 5, 865, 0, 0, 5999, 6000, 3, 706, 353, 0, 6000, 6006, 1, 0, 0, 0, 6001, 6002, 3, 706, 353, 0, 6002, 6003, 3, 710, 355, 0, 6003, 6006, 1, 0, 0, 0, 6004, 6006, 3, 706, 353, 0, 6005, 5989, 1, 0, 0, 0, 6005, 5990, 1, 0, 0, 0, 6005, 5993, 1, 0, 0, 0, 6005, 5997, 1, 0, 0, 0, 6005, 6001, 1, 0, 0, 0, 6005, 6004, 1, 0, 0, 0, 6006, 525, 1, 0, 0, 0, 6007, 6008, 3, 684, 342, 0, 6008, 6009, 5, 176, 0, 0, 6009, 6010, 3, 684, 342, 0, 6010, 527, 1, 0, 0, 0, 6011, 6013, 5, 10, 0, 0, 6012, 6014, 3, 538, 269, 0, 6013, 6012, 1, 0, 0, 0, 6013, 6014, 1, 0, 0, 0, 6014, 6015, 1, 0, 0, 0, 6015, 6016, 5, 173, 0, 0, 6016, 6060, 3, 650, 325, 0, 6017, 6019, 5, 10, 0, 0, 6018, 6020, 3, 538, 269, 0, 6019, 6018, 1, 0, 0, 0, 6019, 6020, 1, 0, 0, 0, 6020, 6021, 1, 0, 0, 0, 6021, 6022, 5, 173, 0, 0, 6022, 6023, 3, 652, 326, 0, 6023, 6024, 5, 185, 0, 0, 6024, 6025, 5, 77, 0, 0, 6025, 6026, 5, 119, 0, 0, 6026, 6031, 3, 660, 330, 0, 6027, 6028, 5, 194, 0, 0, 6028, 6029, 3, 712, 356, 0, 6029, 6030, 5, 19, 0, 0, 6030, 6032, 1, 0, 0, 0, 6031, 6027, 1, 0, 0, 0, 6031, 6032, 1, 0, 0, 0, 6032, 6060, 1, 0, 0, 0, 6033, 6035, 5, 10, 0, 0, 6034, 6036, 3, 538, 269, 0, 6035, 6034, 1, 0, 0, 0, 6035, 6036, 1, 0, 0, 0, 6036, 6037, 1, 0, 0, 0, 6037, 6038, 5, 173, 0, 0, 6038, 6039, 3, 652, 326, 0, 6039, 6040, 5, 185, 0, 0, 6040, 6041, 5, 77, 0, 0, 6041, 6042, 5, 119, 0, 0, 6042, 6046, 3, 662, 331, 0, 6043, 6044, 5, 188, 0, 0, 6044, 6045, 5, 360, 0, 0, 6045, 6047, 5, 882, 0, 0, 6046, 6043, 1, 0, 0, 0, 6046, 6047, 1, 0, 0, 0, 6047, 6060, 1, 0, 0, 0, 6048, 6050, 5, 10, 0, 0, 6049, 6051, 3, 538, 269, 0, 6050, 6049, 1, 0, 0, 0, 6050, 6051, 1, 0, 0, 0, 6051, 6052, 1, 0, 0, 0, 6052, 6053, 5, 173, 0, 0, 6053, 6054, 3, 652, 326, 0, 6054, 6055, 5, 51, 0, 0, 6055, 6056, 5, 77, 0, 0, 6056, 6057, 5, 119, 0, 0, 6057, 6058, 3, 660, 330, 0, 6058, 6060, 1, 0, 0, 0, 6059, 6011, 1, 0, 0, 0, 6059, 6017, 1, 0, 0, 0, 6059, 6033, 1, 0, 0, 0, 6059, 6048, 1, 0, 0, 0, 6060, 529, 1, 0, 0, 0, 6061, 6062, 5, 27, 0, 0, 6062, 6063, 5, 173, 0, 0, 6063, 6067, 3, 650, 325, 0, 6064, 6066, 3, 540, 270, 0, 6065, 6064, 1, 0, 0, 0, 6066, 6069, 1, 0, 0, 0, 6067, 6065, 1, 0, 0, 0, 6067, 6068, 1, 0, 0, 0, 6068, 531, 1, 0, 0, 0, 6069, 6067, 1, 0, 0, 0, 6070, 6071, 5, 329, 0, 0, 6071, 6072, 5, 173, 0, 0, 6072, 6074, 3, 650, 325, 0, 6073, 6075, 7, 90, 0, 0, 6074, 6073, 1, 0, 0, 0, 6074, 6075, 1, 0, 0, 0, 6075, 533, 1, 0, 0, 0, 6076, 6078, 5, 120, 0, 0, 6077, 6079, 3, 538, 269, 0, 6078, 6077, 1, 0, 0, 0, 6078, 6079, 1, 0, 0, 0, 6079, 6080, 1, 0, 0, 0, 6080, 6081, 7, 61, 0, 0, 6081, 6082, 3, 650, 325, 0, 6082, 535, 1, 0, 0, 0, 6083, 6085, 5, 562, 0, 0, 6084, 6086, 3, 538, 269, 0, 6085, 6084, 1, 0, 0, 0, 6085, 6086, 1, 0, 0, 0, 6086, 6087, 1, 0, 0, 0, 6087, 6088, 5, 173, 0, 0, 6088, 6090, 3, 650, 325, 0, 6089, 6091, 5, 549, 0, 0, 6090, 6089, 1, 0, 0, 0, 6090, 6091, 1, 0, 0, 0, 6091, 6093, 1, 0, 0, 0, 6092, 6094, 5, 392, 0, 0, 6093, 6092, 1, 0, 0, 0, 6093, 6094, 1, 0, 0, 0, 6094, 6096, 1, 0, 0, 0, 6095, 6097, 5, 679, 0, 0, 6096, 6095, 1, 0, 0, 0, 6096, 6097, 1, 0, 0, 0, 6097, 537, 1, 0, 0, 0, 6098, 6099, 7, 91, 0, 0, 6099, 539, 1, 0, 0, 0, 6100, 6101, 5, 65, 0, 0, 6101, 6108, 5, 677, 0, 0, 6102, 6108, 5, 549, 0, 0, 6103, 6108, 5, 396, 0, 0, 6104, 6108, 5, 484, 0, 0, 6105, 6108, 5, 392, 0, 0, 6106, 6108, 5, 327, 0, 0, 6107, 6100, 1, 0, 0, 0, 6107, 6102, 1, 0, 0, 0, 6107, 6103, 1, 0, 0, 0, 6107, 6104, 1, 0, 0, 0, 6107, 6105, 1, 0, 0, 0, 6107, 6106, 1, 0, 0, 0, 6108, 541, 1, 0, 0, 0, 6109, 6110, 5, 432, 0, 0, 6110, 6111, 5, 344, 0, 0, 6111, 6116, 3, 706, 353, 0, 6112, 6113, 5, 868, 0, 0, 6113, 6115, 3, 706, 353, 0, 6114, 6112, 1, 0, 0, 0, 6115, 6118, 1, 0, 0, 0, 6116, 6114, 1, 0, 0, 0, 6116, 6117, 1, 0, 0, 0, 6117, 6128, 1, 0, 0, 0, 6118, 6116, 1, 0, 0, 0, 6119, 6120, 5, 155, 0, 0, 6120, 6125, 3, 544, 272, 0, 6121, 6122, 5, 868, 0, 0, 6122, 6124, 3, 544, 272, 0, 6123, 6121, 1, 0, 0, 0, 6124, 6127, 1, 0, 0, 0, 6125, 6123, 1, 0, 0, 0, 6125, 6126, 1, 0, 0, 0, 6126, 6129, 1, 0, 0, 0, 6127, 6125, 1, 0, 0, 0, 6128, 6119, 1, 0, 0, 0, 6128, 6129, 1, 0, 0, 0, 6129, 543, 1, 0, 0, 0, 6130, 6131, 7, 92, 0, 0, 6131, 6132, 3, 702, 351, 0, 6132, 6133, 5, 857, 0, 0, 6133, 6134, 3, 804, 402, 0, 6134, 545, 1, 0, 0, 0, 6135, 6136, 5, 673, 0, 0, 6136, 6137, 5, 344, 0, 0, 6137, 6142, 3, 706, 353, 0, 6138, 6139, 5, 868, 0, 0, 6139, 6141, 3, 706, 353, 0, 6140, 6138, 1, 0, 0, 0, 6141, 6144, 1, 0, 0, 0, 6142, 6140, 1, 0, 0, 0, 6142, 6143, 1, 0, 0, 0, 6143, 547, 1, 0, 0, 0, 6144, 6142, 1, 0, 0, 0, 6145, 6146, 5, 432, 0, 0, 6146, 6147, 5, 534, 0, 0, 6147, 6148, 3, 706, 353, 0, 6148, 6149, 5, 603, 0, 0, 6149, 6150, 5, 882, 0, 0, 6150, 549, 1, 0, 0, 0, 6151, 6152, 5, 673, 0, 0, 6152, 6153, 5, 534, 0, 0, 6153, 6154, 3, 706, 353, 0, 6154, 551, 1, 0, 0, 0, 6155, 6156, 5, 713, 0, 0, 6156, 6157, 5, 450, 0, 0, 6157, 6158, 5, 360, 0, 0, 6158, 6160, 5, 367, 0, 0, 6159, 6161, 5, 857, 0, 0, 6160, 6159, 1, 0, 0, 0, 6160, 6161, 1, 0, 0, 0, 6161, 6162, 1, 0, 0, 0, 6162, 6186, 5, 882, 0, 0, 6163, 6164, 5, 713, 0, 0, 6164, 6165, 5, 433, 0, 0, 6165, 6166, 5, 68, 0, 0, 6166, 6167, 3, 676, 338, 0, 6167, 6168, 5, 423, 0, 0, 6168, 6169, 5, 20, 0, 0, 6169, 6176, 5, 882, 0, 0, 6170, 6171, 5, 360, 0, 0, 6171, 6173, 5, 367, 0, 0, 6172, 6174, 5, 857, 0, 0, 6173, 6172, 1, 0, 0, 0, 6173, 6174, 1, 0, 0, 0, 6174, 6175, 1, 0, 0, 0, 6175, 6177, 5, 882, 0, 0, 6176, 6170, 1, 0, 0, 0, 6176, 6177, 1, 0, 0, 0, 6177, 6183, 1, 0, 0, 0, 6178, 6180, 5, 144, 0, 0, 6179, 6181, 5, 502, 0, 0, 6180, 6179, 1, 0, 0, 0, 6180, 6181, 1, 0, 0, 0, 6181, 6182, 1, 0, 0, 0, 6182, 6184, 5, 169, 0, 0, 6183, 6178, 1, 0, 0, 0, 6183, 6184, 1, 0, 0, 0, 6184, 6186, 1, 0, 0, 0, 6185, 6155, 1, 0, 0, 0, 6185, 6163, 1, 0, 0, 0, 6186, 553, 1, 0, 0, 0, 6187, 6188, 5, 155, 0, 0, 6188, 6189, 3, 558, 279, 0, 6189, 6192, 7, 93, 0, 0, 6190, 6193, 3, 804, 402, 0, 6191, 6193, 5, 119, 0, 0, 6192, 6190, 1, 0, 0, 0, 6192, 6191, 1, 0, 0, 0, 6193, 6203, 1, 0, 0, 0, 6194, 6195, 5, 868, 0, 0, 6195, 6196, 3, 558, 279, 0, 6196, 6199, 7, 93, 0, 0, 6197, 6200, 3, 804, 402, 0, 6198, 6200, 5, 119, 0, 0, 6199, 6197, 1, 0, 0, 0, 6199, 6198, 1, 0, 0, 0, 6200, 6202, 1, 0, 0, 0, 6201, 6194, 1, 0, 0, 0, 6202, 6205, 1, 0, 0, 0, 6203, 6201, 1, 0, 0, 0, 6203, 6204, 1, 0, 0, 0, 6204, 6240, 1, 0, 0, 0, 6205, 6203, 1, 0, 0, 0, 6206, 6207, 5, 155, 0, 0, 6207, 6210, 3, 58, 29, 0, 6208, 6211, 3, 688, 344, 0, 6209, 6211, 5, 42, 0, 0, 6210, 6208, 1, 0, 0, 0, 6210, 6209, 1, 0, 0, 0, 6211, 6240, 1, 0, 0, 0, 6212, 6213, 5, 155, 0, 0, 6213, 6220, 5, 497, 0, 0, 6214, 6217, 3, 688, 344, 0, 6215, 6216, 5, 28, 0, 0, 6216, 6218, 3, 690, 345, 0, 6217, 6215, 1, 0, 0, 0, 6217, 6218, 1, 0, 0, 0, 6218, 6221, 1, 0, 0, 0, 6219, 6221, 5, 42, 0, 0, 6220, 6214, 1, 0, 0, 0, 6220, 6219, 1, 0, 0, 0, 6221, 6240, 1, 0, 0, 0, 6222, 6240, 3, 490, 245, 0, 6223, 6240, 3, 342, 171, 0, 6224, 6240, 3, 340, 170, 0, 6225, 6226, 5, 155, 0, 0, 6226, 6227, 3, 702, 351, 0, 6227, 6228, 7, 93, 0, 0, 6228, 6236, 3, 804, 402, 0, 6229, 6230, 5, 868, 0, 0, 6230, 6231, 3, 702, 351, 0, 6231, 6232, 7, 93, 0, 0, 6232, 6233, 3, 804, 402, 0, 6233, 6235, 1, 0, 0, 0, 6234, 6229, 1, 0, 0, 0, 6235, 6238, 1, 0, 0, 0, 6236, 6234, 1, 0, 0, 0, 6236, 6237, 1, 0, 0, 0, 6237, 6240, 1, 0, 0, 0, 6238, 6236, 1, 0, 0, 0, 6239, 6187, 1, 0, 0, 0, 6239, 6206, 1, 0, 0, 0, 6239, 6212, 1, 0, 0, 0, 6239, 6222, 1, 0, 0, 0, 6239, 6223, 1, 0, 0, 0, 6239, 6224, 1, 0, 0, 0, 6239, 6225, 1, 0, 0, 0, 6240, 555, 1, 0, 0, 0, 6241, 6242, 5, 157, 0, 0, 6242, 6243, 7, 63, 0, 0, 6243, 6426, 5, 452, 0, 0, 6244, 6245, 5, 157, 0, 0, 6245, 6246, 7, 94, 0, 0, 6246, 6249, 5, 386, 0, 0, 6247, 6248, 5, 80, 0, 0, 6248, 6250, 5, 882, 0, 0, 6249, 6247, 1, 0, 0, 0, 6249, 6250, 1, 0, 0, 0, 6250, 6253, 1, 0, 0, 0, 6251, 6252, 5, 68, 0, 0, 6252, 6254, 3, 712, 356, 0, 6253, 6251, 1, 0, 0, 0, 6253, 6254, 1, 0, 0, 0, 6254, 6262, 1, 0, 0, 0, 6255, 6259, 5, 100, 0, 0, 6256, 6257, 3, 712, 356, 0, 6257, 6258, 5, 868, 0, 0, 6258, 6260, 1, 0, 0, 0, 6259, 6256, 1, 0, 0, 0, 6259, 6260, 1, 0, 0, 0, 6260, 6261, 1, 0, 0, 0, 6261, 6263, 3, 712, 356, 0, 6262, 6255, 1, 0, 0, 0, 6262, 6263, 1, 0, 0, 0, 6263, 6265, 1, 0, 0, 0, 6264, 6266, 3, 390, 195, 0, 6265, 6264, 1, 0, 0, 0, 6265, 6266, 1, 0, 0, 0, 6266, 6426, 1, 0, 0, 0, 6267, 6268, 5, 157, 0, 0, 6268, 6270, 3, 560, 280, 0, 6269, 6271, 3, 562, 281, 0, 6270, 6269, 1, 0, 0, 0, 6270, 6271, 1, 0, 0, 0, 6271, 6426, 1, 0, 0, 0, 6272, 6274, 5, 157, 0, 0, 6273, 6275, 5, 392, 0, 0, 6274, 6273, 1, 0, 0, 0, 6274, 6275, 1, 0, 0, 0, 6275, 6277, 1, 0, 0, 0, 6276, 6278, 5, 408, 0, 0, 6277, 6276, 1, 0, 0, 0, 6277, 6278, 1, 0, 0, 0, 6278, 6279, 1, 0, 0, 0, 6279, 6280, 7, 47, 0, 0, 6280, 6281, 7, 95, 0, 0, 6281, 6284, 3, 652, 326, 0, 6282, 6283, 7, 95, 0, 0, 6283, 6285, 3, 628, 314, 0, 6284, 6282, 1, 0, 0, 0, 6284, 6285, 1, 0, 0, 0, 6285, 6287, 1, 0, 0, 0, 6286, 6288, 3, 562, 281, 0, 6287, 6286, 1, 0, 0, 0, 6287, 6288, 1, 0, 0, 0, 6288, 6426, 1, 0, 0, 0, 6289, 6290, 5, 157, 0, 0, 6290, 6291, 5, 34, 0, 0, 6291, 6293, 7, 0, 0, 0, 6292, 6294, 3, 760, 380, 0, 6293, 6292, 1, 0, 0, 0, 6293, 6294, 1, 0, 0, 0, 6294, 6295, 1, 0, 0, 0, 6295, 6426, 3, 628, 314, 0, 6296, 6297, 5, 157, 0, 0, 6297, 6298, 5, 34, 0, 0, 6298, 6299, 7, 96, 0, 0, 6299, 6426, 3, 702, 351, 0, 6300, 6301, 5, 157, 0, 0, 6301, 6302, 5, 34, 0, 0, 6302, 6303, 5, 409, 0, 0, 6303, 6426, 3, 632, 316, 0, 6304, 6305, 5, 157, 0, 0, 6305, 6306, 5, 34, 0, 0, 6306, 6307, 5, 684, 0, 0, 6307, 6426, 3, 636, 318, 0, 6308, 6309, 5, 157, 0, 0, 6309, 6310, 5, 34, 0, 0, 6310, 6311, 5, 173, 0, 0, 6311, 6426, 3, 652, 326, 0, 6312, 6313, 5, 157, 0, 0, 6313, 6314, 5, 34, 0, 0, 6314, 6315, 5, 678, 0, 0, 6315, 6426, 3, 684, 342, 0, 6316, 6317, 5, 157, 0, 0, 6317, 6318, 5, 380, 0, 0, 6318, 6319, 3, 692, 346, 0, 6319, 6320, 7, 97, 0, 0, 6320, 6426, 1, 0, 0, 0, 6321, 6322, 5, 157, 0, 0, 6322, 6426, 3, 564, 282, 0, 6323, 6324, 5, 157, 0, 0, 6324, 6332, 7, 98, 0, 0, 6325, 6329, 5, 100, 0, 0, 6326, 6327, 3, 712, 356, 0, 6327, 6328, 5, 868, 0, 0, 6328, 6330, 1, 0, 0, 0, 6329, 6326, 1, 0, 0, 0, 6329, 6330, 1, 0, 0, 0, 6330, 6331, 1, 0, 0, 0, 6331, 6333, 3, 712, 356, 0, 6332, 6325, 1, 0, 0, 0, 6332, 6333, 1, 0, 0, 0, 6333, 6426, 1, 0, 0, 0, 6334, 6335, 5, 157, 0, 0, 6335, 6336, 5, 262, 0, 0, 6336, 6337, 5, 866, 0, 0, 6337, 6338, 5, 850, 0, 0, 6338, 6339, 5, 867, 0, 0, 6339, 6426, 7, 98, 0, 0, 6340, 6341, 5, 157, 0, 0, 6341, 6344, 3, 566, 283, 0, 6342, 6343, 7, 95, 0, 0, 6343, 6345, 3, 628, 314, 0, 6344, 6342, 1, 0, 0, 0, 6344, 6345, 1, 0, 0, 0, 6345, 6347, 1, 0, 0, 0, 6346, 6348, 3, 562, 281, 0, 6347, 6346, 1, 0, 0, 0, 6347, 6348, 1, 0, 0, 0, 6348, 6426, 1, 0, 0, 0, 6349, 6350, 5, 157, 0, 0, 6350, 6351, 5, 132, 0, 0, 6351, 6352, 5, 336, 0, 0, 6352, 6426, 3, 702, 351, 0, 6353, 6354, 5, 157, 0, 0, 6354, 6355, 5, 409, 0, 0, 6355, 6356, 5, 336, 0, 0, 6356, 6426, 3, 632, 316, 0, 6357, 6358, 5, 157, 0, 0, 6358, 6365, 5, 414, 0, 0, 6359, 6360, 5, 65, 0, 0, 6360, 6363, 3, 656, 328, 0, 6361, 6362, 5, 188, 0, 0, 6362, 6364, 3, 654, 327, 0, 6363, 6361, 1, 0, 0, 0, 6363, 6364, 1, 0, 0, 0, 6364, 6366, 1, 0, 0, 0, 6365, 6359, 1, 0, 0, 0, 6365, 6366, 1, 0, 0, 0, 6366, 6426, 1, 0, 0, 0, 6367, 6369, 5, 157, 0, 0, 6368, 6370, 5, 392, 0, 0, 6369, 6368, 1, 0, 0, 0, 6369, 6370, 1, 0, 0, 0, 6370, 6371, 1, 0, 0, 0, 6371, 6372, 7, 99, 0, 0, 6372, 6373, 7, 95, 0, 0, 6373, 6376, 3, 652, 326, 0, 6374, 6375, 7, 95, 0, 0, 6375, 6377, 3, 628, 314, 0, 6376, 6374, 1, 0, 0, 0, 6376, 6377, 1, 0, 0, 0, 6377, 6380, 1, 0, 0, 0, 6378, 6379, 5, 192, 0, 0, 6379, 6381, 3, 804, 402, 0, 6380, 6378, 1, 0, 0, 0, 6380, 6381, 1, 0, 0, 0, 6381, 6426, 1, 0, 0, 0, 6382, 6383, 5, 157, 0, 0, 6383, 6384, 5, 516, 0, 0, 6384, 6387, 5, 752, 0, 0, 6385, 6386, 7, 95, 0, 0, 6386, 6388, 3, 628, 314, 0, 6387, 6385, 1, 0, 0, 0, 6387, 6388, 1, 0, 0, 0, 6388, 6390, 1, 0, 0, 0, 6389, 6391, 3, 562, 281, 0, 6390, 6389, 1, 0, 0, 0, 6390, 6391, 1, 0, 0, 0, 6391, 6426, 1, 0, 0, 0, 6392, 6393, 5, 157, 0, 0, 6393, 6402, 5, 545, 0, 0, 6394, 6399, 3, 568, 284, 0, 6395, 6396, 5, 868, 0, 0, 6396, 6398, 3, 568, 284, 0, 6397, 6395, 1, 0, 0, 0, 6398, 6401, 1, 0, 0, 0, 6399, 6397, 1, 0, 0, 0, 6399, 6400, 1, 0, 0, 0, 6400, 6403, 1, 0, 0, 0, 6401, 6399, 1, 0, 0, 0, 6402, 6394, 1, 0, 0, 0, 6402, 6403, 1, 0, 0, 0, 6403, 6407, 1, 0, 0, 0, 6404, 6405, 5, 65, 0, 0, 6405, 6406, 5, 548, 0, 0, 6406, 6408, 3, 712, 356, 0, 6407, 6404, 1, 0, 0, 0, 6407, 6408, 1, 0, 0, 0, 6408, 6415, 1, 0, 0, 0, 6409, 6410, 5, 100, 0, 0, 6410, 6413, 3, 712, 356, 0, 6411, 6412, 5, 509, 0, 0, 6412, 6414, 3, 712, 356, 0, 6413, 6411, 1, 0, 0, 0, 6413, 6414, 1, 0, 0, 0, 6414, 6416, 1, 0, 0, 0, 6415, 6409, 1, 0, 0, 0, 6415, 6416, 1, 0, 0, 0, 6416, 6426, 1, 0, 0, 0, 6417, 6418, 5, 157, 0, 0, 6418, 6419, 7, 64, 0, 0, 6419, 6421, 5, 645, 0, 0, 6420, 6422, 3, 390, 195, 0, 6421, 6420, 1, 0, 0, 0, 6421, 6422, 1, 0, 0, 0, 6422, 6426, 1, 0, 0, 0, 6423, 6424, 5, 157, 0, 0, 6424, 6426, 5, 564, 0, 0, 6425, 6241, 1, 0, 0, 0, 6425, 6244, 1, 0, 0, 0, 6425, 6267, 1, 0, 0, 0, 6425, 6272, 1, 0, 0, 0, 6425, 6289, 1, 0, 0, 0, 6425, 6296, 1, 0, 0, 0, 6425, 6300, 1, 0, 0, 0, 6425, 6304, 1, 0, 0, 0, 6425, 6308, 1, 0, 0, 0, 6425, 6312, 1, 0, 0, 0, 6425, 6316, 1, 0, 0, 0, 6425, 6321, 1, 0, 0, 0, 6425, 6323, 1, 0, 0, 0, 6425, 6334, 1, 0, 0, 0, 6425, 6340, 1, 0, 0, 0, 6425, 6349, 1, 0, 0, 0, 6425, 6353, 1, 0, 0, 0, 6425, 6357, 1, 0, 0, 0, 6425, 6367, 1, 0, 0, 0, 6425, 6382, 1, 0, 0, 0, 6425, 6392, 1, 0, 0, 0, 6425, 6417, 1, 0, 0, 0, 6425, 6423, 1, 0, 0, 0, 6426, 557, 1, 0, 0, 0, 6427, 6438, 5, 892, 0, 0, 6428, 6438, 5, 893, 0, 0, 6429, 6430, 5, 870, 0, 0, 6430, 6432, 5, 870, 0, 0, 6431, 6429, 1, 0, 0, 0, 6431, 6432, 1, 0, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 6435, 7, 100, 0, 0, 6434, 6431, 1, 0, 0, 0, 6434, 6435, 1, 0, 0, 0, 6435, 6436, 1, 0, 0, 0, 6436, 6438, 3, 706, 353, 0, 6437, 6427, 1, 0, 0, 0, 6437, 6428, 1, 0, 0, 0, 6437, 6434, 1, 0, 0, 0, 6438, 559, 1, 0, 0, 0, 6439, 6440, 5, 26, 0, 0, 6440, 6454, 5, 155, 0, 0, 6441, 6454, 5, 823, 0, 0, 6442, 6454, 5, 824, 0, 0, 6443, 6454, 5, 40, 0, 0, 6444, 6454, 5, 153, 0, 0, 6445, 6446, 5, 409, 0, 0, 6446, 6454, 5, 645, 0, 0, 6447, 6448, 5, 132, 0, 0, 6448, 6454, 5, 645, 0, 0, 6449, 6451, 7, 62, 0, 0, 6450, 6449, 1, 0, 0, 0, 6450, 6451, 1, 0, 0, 0, 6451, 6452, 1, 0, 0, 0, 6452, 6454, 7, 101, 0, 0, 6453, 6439, 1, 0, 0, 0, 6453, 6441, 1, 0, 0, 0, 6453, 6442, 1, 0, 0, 0, 6453, 6443, 1, 0, 0, 0, 6453, 6444, 1, 0, 0, 0, 6453, 6445, 1, 0, 0, 0, 6453, 6447, 1, 0, 0, 0, 6453, 6450, 1, 0, 0, 0, 6454, 561, 1, 0, 0, 0, 6455, 6456, 5, 99, 0, 0, 6456, 6460, 5, 882, 0, 0, 6457, 6458, 5, 192, 0, 0, 6458, 6460, 3, 804, 402, 0, 6459, 6455, 1, 0, 0, 0, 6459, 6457, 1, 0, 0, 0, 6460, 563, 1, 0, 0, 0, 6461, 6463, 5, 647, 0, 0, 6462, 6461, 1, 0, 0, 0, 6462, 6463, 1, 0, 0, 0, 6463, 6464, 1, 0, 0, 0, 6464, 6479, 5, 381, 0, 0, 6465, 6466, 5, 453, 0, 0, 6466, 6479, 5, 645, 0, 0, 6467, 6479, 5, 536, 0, 0, 6468, 6479, 5, 734, 0, 0, 6469, 6471, 5, 408, 0, 0, 6470, 6469, 1, 0, 0, 0, 6470, 6471, 1, 0, 0, 0, 6471, 6472, 1, 0, 0, 0, 6472, 6479, 5, 544, 0, 0, 6473, 6479, 5, 546, 0, 0, 6474, 6475, 5, 598, 0, 0, 6475, 6479, 5, 422, 0, 0, 6476, 6479, 5, 312, 0, 0, 6477, 6479, 5, 356, 0, 0, 6478, 6462, 1, 0, 0, 0, 6478, 6465, 1, 0, 0, 0, 6478, 6467, 1, 0, 0, 0, 6478, 6468, 1, 0, 0, 0, 6478, 6470, 1, 0, 0, 0, 6478, 6473, 1, 0, 0, 0, 6478, 6474, 1, 0, 0, 0, 6478, 6476, 1, 0, 0, 0, 6478, 6477, 1, 0, 0, 0, 6479, 565, 1, 0, 0, 0, 6480, 6492, 5, 386, 0, 0, 6481, 6482, 5, 173, 0, 0, 6482, 6492, 5, 645, 0, 0, 6483, 6485, 5, 392, 0, 0, 6484, 6483, 1, 0, 0, 0, 6484, 6485, 1, 0, 0, 0, 6485, 6487, 1, 0, 0, 0, 6486, 6488, 5, 408, 0, 0, 6487, 6486, 1, 0, 0, 0, 6487, 6488, 1, 0, 0, 0, 6488, 6489, 1, 0, 0, 0, 6489, 6492, 5, 752, 0, 0, 6490, 6492, 5, 667, 0, 0, 6491, 6480, 1, 0, 0, 0, 6491, 6481, 1, 0, 0, 0, 6491, 6484, 1, 0, 0, 0, 6491, 6490, 1, 0, 0, 0, 6492, 567, 1, 0, 0, 0, 6493, 6506, 5, 7, 0, 0, 6494, 6495, 5, 320, 0, 0, 6495, 6506, 5, 437, 0, 0, 6496, 6497, 5, 355, 0, 0, 6497, 6506, 5, 656, 0, 0, 6498, 6506, 5, 358, 0, 0, 6499, 6506, 5, 439, 0, 0, 6500, 6506, 5, 802, 0, 0, 6501, 6502, 5, 521, 0, 0, 6502, 6506, 5, 397, 0, 0, 6503, 6506, 5, 605, 0, 0, 6504, 6506, 5, 655, 0, 0, 6505, 6493, 1, 0, 0, 0, 6505, 6494, 1, 0, 0, 0, 6505, 6496, 1, 0, 0, 0, 6505, 6498, 1, 0, 0, 0, 6505, 6499, 1, 0, 0, 0, 6505, 6500, 1, 0, 0, 0, 6505, 6501, 1, 0, 0, 0, 6505, 6503, 1, 0, 0, 0, 6505, 6504, 1, 0, 0, 0, 6506, 569, 1, 0, 0, 0, 6507, 6508, 5, 318, 0, 0, 6508, 6509, 5, 882, 0, 0, 6509, 571, 1, 0, 0, 0, 6510, 6511, 5, 324, 0, 0, 6511, 6529, 5, 82, 0, 0, 6512, 6517, 3, 592, 296, 0, 6513, 6514, 5, 868, 0, 0, 6514, 6516, 3, 592, 296, 0, 6515, 6513, 1, 0, 0, 0, 6516, 6519, 1, 0, 0, 0, 6517, 6515, 1, 0, 0, 0, 6517, 6518, 1, 0, 0, 0, 6518, 6530, 1, 0, 0, 0, 6519, 6517, 1, 0, 0, 0, 6520, 6521, 3, 652, 326, 0, 6521, 6522, 5, 130, 0, 0, 6522, 6525, 5, 866, 0, 0, 6523, 6526, 3, 670, 335, 0, 6524, 6526, 5, 7, 0, 0, 6525, 6523, 1, 0, 0, 0, 6525, 6524, 1, 0, 0, 0, 6526, 6527, 1, 0, 0, 0, 6527, 6528, 5, 867, 0, 0, 6528, 6530, 1, 0, 0, 0, 6529, 6512, 1, 0, 0, 0, 6529, 6520, 1, 0, 0, 0, 6530, 6531, 1, 0, 0, 0, 6531, 6532, 5, 80, 0, 0, 6532, 6533, 3, 628, 314, 0, 6533, 573, 1, 0, 0, 0, 6534, 6536, 5, 404, 0, 0, 6535, 6537, 3, 538, 269, 0, 6536, 6535, 1, 0, 0, 0, 6536, 6537, 1, 0, 0, 0, 6537, 6538, 1, 0, 0, 0, 6538, 6543, 3, 594, 297, 0, 6539, 6540, 5, 868, 0, 0, 6540, 6542, 3, 594, 297, 0, 6541, 6539, 1, 0, 0, 0, 6542, 6545, 1, 0, 0, 0, 6543, 6541, 1, 0, 0, 0, 6543, 6544, 1, 0, 0, 0, 6544, 575, 1, 0, 0, 0, 6545, 6543, 1, 0, 0, 0, 6546, 6548, 5, 94, 0, 0, 6547, 6549, 7, 102, 0, 0, 6548, 6547, 1, 0, 0, 0, 6548, 6549, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 6551, 3, 804, 402, 0, 6551, 577, 1, 0, 0, 0, 6552, 6553, 5, 103, 0, 0, 6553, 6554, 5, 82, 0, 0, 6554, 6555, 5, 88, 0, 0, 6555, 6556, 5, 324, 0, 0, 6556, 6561, 3, 598, 299, 0, 6557, 6558, 5, 868, 0, 0, 6558, 6560, 3, 598, 299, 0, 6559, 6557, 1, 0, 0, 0, 6560, 6563, 1, 0, 0, 0, 6561, 6559, 1, 0, 0, 0, 6561, 6562, 1, 0, 0, 0, 6562, 579, 1, 0, 0, 0, 6563, 6561, 1, 0, 0, 0, 6564, 6565, 5, 575, 0, 0, 6565, 6570, 3, 582, 291, 0, 6566, 6567, 5, 868, 0, 0, 6567, 6569, 3, 582, 291, 0, 6568, 6566, 1, 0, 0, 0, 6569, 6572, 1, 0, 0, 0, 6570, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 581, 1, 0, 0, 0, 6572, 6570, 1, 0, 0, 0, 6573, 6579, 5, 453, 0, 0, 6574, 6579, 5, 563, 0, 0, 6575, 6576, 5, 548, 0, 0, 6576, 6579, 5, 324, 0, 0, 6577, 6579, 5, 598, 0, 0, 6578, 6573, 1, 0, 0, 0, 6578, 6574, 1, 0, 0, 0, 6578, 6575, 1, 0, 0, 0, 6578, 6577, 1, 0, 0, 0, 6579, 583, 1, 0, 0, 0, 6580, 6581, 5, 575, 0, 0, 6581, 6586, 5, 531, 0, 0, 6582, 6584, 3, 758, 379, 0, 6583, 6582, 1, 0, 0, 0, 6583, 6584, 1, 0, 0, 0, 6584, 6585, 1, 0, 0, 0, 6585, 6587, 3, 706, 353, 0, 6586, 6583, 1, 0, 0, 0, 6586, 6587, 1, 0, 0, 0, 6587, 585, 1, 0, 0, 0, 6588, 6589, 5, 575, 0, 0, 6589, 6591, 7, 64, 0, 0, 6590, 6592, 5, 7, 0, 0, 6591, 6590, 1, 0, 0, 0, 6591, 6592, 1, 0, 0, 0, 6592, 6594, 1, 0, 0, 0, 6593, 6595, 3, 390, 195, 0, 6594, 6593, 1, 0, 0, 0, 6594, 6595, 1, 0, 0, 0, 6595, 587, 1, 0, 0, 0, 6596, 6597, 5, 576, 0, 0, 6597, 589, 1, 0, 0, 0, 6598, 6599, 5, 749, 0, 0, 6599, 591, 1, 0, 0, 0, 6600, 6606, 3, 652, 326, 0, 6601, 6602, 7, 19, 0, 0, 6602, 6603, 5, 866, 0, 0, 6603, 6604, 3, 640, 320, 0, 6604, 6605, 5, 867, 0, 0, 6605, 6607, 1, 0, 0, 0, 6606, 6601, 1, 0, 0, 0, 6606, 6607, 1, 0, 0, 0, 6607, 593, 1, 0, 0, 0, 6608, 6627, 5, 366, 0, 0, 6609, 6627, 5, 422, 0, 0, 6610, 6612, 7, 103, 0, 0, 6611, 6610, 1, 0, 0, 0, 6611, 6612, 1, 0, 0, 0, 6612, 6613, 1, 0, 0, 0, 6613, 6627, 5, 452, 0, 0, 6614, 6627, 5, 517, 0, 0, 6615, 6627, 5, 734, 0, 0, 6616, 6617, 5, 548, 0, 0, 6617, 6627, 5, 324, 0, 0, 6618, 6627, 5, 645, 0, 0, 6619, 6627, 5, 680, 0, 0, 6620, 6624, 5, 752, 0, 0, 6621, 6622, 5, 194, 0, 0, 6622, 6623, 5, 135, 0, 0, 6623, 6625, 5, 104, 0, 0, 6624, 6621, 1, 0, 0, 0, 6624, 6625, 1, 0, 0, 0, 6625, 6627, 1, 0, 0, 0, 6626, 6608, 1, 0, 0, 0, 6626, 6609, 1, 0, 0, 0, 6626, 6611, 1, 0, 0, 0, 6626, 6614, 1, 0, 0, 0, 6626, 6615, 1, 0, 0, 0, 6626, 6616, 1, 0, 0, 0, 6626, 6618, 1, 0, 0, 0, 6626, 6619, 1, 0, 0, 0, 6626, 6620, 1, 0, 0, 0, 6627, 6641, 1, 0, 0, 0, 6628, 6629, 5, 556, 0, 0, 6629, 6631, 5, 452, 0, 0, 6630, 6632, 3, 390, 195, 0, 6631, 6630, 1, 0, 0, 0, 6631, 6632, 1, 0, 0, 0, 6632, 6641, 1, 0, 0, 0, 6633, 6635, 7, 61, 0, 0, 6634, 6636, 3, 650, 325, 0, 6635, 6634, 1, 0, 0, 0, 6635, 6636, 1, 0, 0, 0, 6636, 6638, 1, 0, 0, 0, 6637, 6639, 3, 596, 298, 0, 6638, 6637, 1, 0, 0, 0, 6638, 6639, 1, 0, 0, 0, 6639, 6641, 1, 0, 0, 0, 6640, 6626, 1, 0, 0, 0, 6640, 6628, 1, 0, 0, 0, 6640, 6633, 1, 0, 0, 0, 6641, 595, 1, 0, 0, 0, 6642, 6643, 5, 194, 0, 0, 6643, 6644, 5, 135, 0, 0, 6644, 6648, 5, 104, 0, 0, 6645, 6646, 5, 65, 0, 0, 6646, 6648, 5, 391, 0, 0, 6647, 6642, 1, 0, 0, 0, 6647, 6645, 1, 0, 0, 0, 6648, 597, 1, 0, 0, 0, 6649, 6657, 3, 652, 326, 0, 6650, 6651, 5, 130, 0, 0, 6651, 6654, 5, 866, 0, 0, 6652, 6655, 3, 670, 335, 0, 6653, 6655, 5, 7, 0, 0, 6654, 6652, 1, 0, 0, 0, 6654, 6653, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6658, 5, 867, 0, 0, 6657, 6650, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6666, 1, 0, 0, 0, 6659, 6661, 7, 19, 0, 0, 6660, 6659, 1, 0, 0, 0, 6660, 6661, 1, 0, 0, 0, 6661, 6662, 1, 0, 0, 0, 6662, 6663, 5, 866, 0, 0, 6663, 6664, 3, 640, 320, 0, 6664, 6665, 5, 867, 0, 0, 6665, 6667, 1, 0, 0, 0, 6666, 6660, 1, 0, 0, 0, 6666, 6667, 1, 0, 0, 0, 6667, 6670, 1, 0, 0, 0, 6668, 6669, 5, 79, 0, 0, 6669, 6671, 5, 446, 0, 0, 6670, 6668, 1, 0, 0, 0, 6670, 6671, 1, 0, 0, 0, 6671, 599, 1, 0, 0, 0, 6672, 6673, 7, 104, 0, 0, 6673, 6676, 3, 652, 326, 0, 6674, 6677, 3, 662, 331, 0, 6675, 6677, 5, 882, 0, 0, 6676, 6674, 1, 0, 0, 0, 6676, 6675, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 601, 1, 0, 0, 0, 6678, 6684, 7, 104, 0, 0, 6679, 6685, 5, 392, 0, 0, 6680, 6685, 5, 528, 0, 0, 6681, 6682, 5, 826, 0, 0, 6682, 6683, 5, 857, 0, 0, 6683, 6685, 7, 105, 0, 0, 6684, 6679, 1, 0, 0, 0, 6684, 6680, 1, 0, 0, 0, 6684, 6681, 1, 0, 0, 0, 6684, 6685, 1, 0, 0, 0, 6685, 6686, 1, 0, 0, 0, 6686, 6687, 3, 624, 312, 0, 6687, 603, 1, 0, 0, 0, 6688, 6689, 7, 104, 0, 0, 6689, 6693, 5, 10, 0, 0, 6690, 6691, 5, 826, 0, 0, 6691, 6692, 5, 857, 0, 0, 6692, 6694, 5, 666, 0, 0, 6693, 6690, 1, 0, 0, 0, 6693, 6694, 1, 0, 0, 0, 6694, 6695, 1, 0, 0, 0, 6695, 6696, 3, 210, 105, 0, 6696, 605, 1, 0, 0, 0, 6697, 6698, 5, 419, 0, 0, 6698, 6699, 5, 882, 0, 0, 6699, 607, 1, 0, 0, 0, 6700, 6701, 5, 187, 0, 0, 6701, 6702, 3, 628, 314, 0, 6702, 609, 1, 0, 0, 0, 6703, 6711, 5, 158, 0, 0, 6704, 6706, 5, 164, 0, 0, 6705, 6707, 5, 682, 0, 0, 6706, 6705, 1, 0, 0, 0, 6706, 6707, 1, 0, 0, 0, 6707, 6708, 1, 0, 0, 0, 6708, 6712, 3, 716, 358, 0, 6709, 6712, 5, 889, 0, 0, 6710, 6712, 5, 890, 0, 0, 6711, 6704, 1, 0, 0, 0, 6711, 6709, 1, 0, 0, 0, 6711, 6710, 1, 0, 0, 0, 6712, 6722, 1, 0, 0, 0, 6713, 6714, 5, 155, 0, 0, 6714, 6719, 3, 614, 307, 0, 6715, 6716, 5, 868, 0, 0, 6716, 6718, 3, 614, 307, 0, 6717, 6715, 1, 0, 0, 0, 6718, 6721, 1, 0, 0, 0, 6719, 6717, 1, 0, 0, 0, 6719, 6720, 1, 0, 0, 0, 6720, 6723, 1, 0, 0, 0, 6721, 6719, 1, 0, 0, 0, 6722, 6713, 1, 0, 0, 0, 6722, 6723, 1, 0, 0, 0, 6723, 611, 1, 0, 0, 0, 6724, 6732, 5, 145, 0, 0, 6725, 6727, 5, 164, 0, 0, 6726, 6728, 5, 682, 0, 0, 6727, 6726, 1, 0, 0, 0, 6727, 6728, 1, 0, 0, 0, 6728, 6729, 1, 0, 0, 0, 6729, 6733, 3, 716, 358, 0, 6730, 6733, 5, 889, 0, 0, 6731, 6733, 5, 890, 0, 0, 6732, 6725, 1, 0, 0, 0, 6732, 6730, 1, 0, 0, 0, 6732, 6731, 1, 0, 0, 0, 6732, 6733, 1, 0, 0, 0, 6733, 6743, 1, 0, 0, 0, 6734, 6735, 5, 155, 0, 0, 6735, 6740, 3, 614, 307, 0, 6736, 6737, 5, 868, 0, 0, 6737, 6739, 3, 614, 307, 0, 6738, 6736, 1, 0, 0, 0, 6739, 6742, 1, 0, 0, 0, 6740, 6738, 1, 0, 0, 0, 6740, 6741, 1, 0, 0, 0, 6741, 6744, 1, 0, 0, 0, 6742, 6740, 1, 0, 0, 0, 6743, 6734, 1, 0, 0, 0, 6743, 6744, 1, 0, 0, 0, 6744, 613, 1, 0, 0, 0, 6745, 6746, 7, 106, 0, 0, 6746, 6751, 5, 857, 0, 0, 6747, 6752, 3, 716, 358, 0, 6748, 6752, 5, 883, 0, 0, 6749, 6752, 3, 686, 343, 0, 6750, 6752, 3, 708, 354, 0, 6751, 6747, 1, 0, 0, 0, 6751, 6748, 1, 0, 0, 0, 6751, 6749, 1, 0, 0, 0, 6751, 6750, 1, 0, 0, 0, 6752, 615, 1, 0, 0, 0, 6753, 6755, 5, 194, 0, 0, 6754, 6756, 5, 552, 0, 0, 6755, 6754, 1, 0, 0, 0, 6755, 6756, 1, 0, 0, 0, 6756, 6757, 1, 0, 0, 0, 6757, 6762, 3, 52, 26, 0, 6758, 6759, 5, 868, 0, 0, 6759, 6761, 3, 52, 26, 0, 6760, 6758, 1, 0, 0, 0, 6761, 6764, 1, 0, 0, 0, 6762, 6760, 1, 0, 0, 0, 6762, 6763, 1, 0, 0, 0, 6763, 617, 1, 0, 0, 0, 6764, 6762, 1, 0, 0, 0, 6765, 6766, 5, 173, 0, 0, 6766, 6768, 3, 652, 326, 0, 6767, 6769, 3, 258, 129, 0, 6768, 6767, 1, 0, 0, 0, 6768, 6769, 1, 0, 0, 0, 6769, 6771, 1, 0, 0, 0, 6770, 6772, 3, 318, 159, 0, 6771, 6770, 1, 0, 0, 0, 6771, 6772, 1, 0, 0, 0, 6772, 619, 1, 0, 0, 0, 6773, 6775, 5, 72, 0, 0, 6774, 6776, 7, 107, 0, 0, 6775, 6774, 1, 0, 0, 0, 6775, 6776, 1, 0, 0, 0, 6776, 6777, 1, 0, 0, 0, 6777, 6809, 5, 48, 0, 0, 6778, 6779, 3, 558, 279, 0, 6779, 6780, 5, 857, 0, 0, 6780, 6788, 7, 108, 0, 0, 6781, 6782, 5, 868, 0, 0, 6782, 6783, 3, 558, 279, 0, 6783, 6784, 5, 857, 0, 0, 6784, 6785, 7, 108, 0, 0, 6785, 6787, 1, 0, 0, 0, 6786, 6781, 1, 0, 0, 0, 6787, 6790, 1, 0, 0, 0, 6788, 6786, 1, 0, 0, 0, 6788, 6789, 1, 0, 0, 0, 6789, 6810, 1, 0, 0, 0, 6790, 6788, 1, 0, 0, 0, 6791, 6794, 5, 30, 0, 0, 6792, 6795, 3, 712, 356, 0, 6793, 6795, 3, 558, 279, 0, 6794, 6792, 1, 0, 0, 0, 6794, 6793, 1, 0, 0, 0, 6795, 6796, 1, 0, 0, 0, 6796, 6797, 3, 558, 279, 0, 6797, 6798, 5, 857, 0, 0, 6798, 6806, 3, 622, 311, 0, 6799, 6800, 5, 868, 0, 0, 6800, 6801, 3, 558, 279, 0, 6801, 6802, 5, 857, 0, 0, 6802, 6803, 3, 622, 311, 0, 6803, 6805, 1, 0, 0, 0, 6804, 6799, 1, 0, 0, 0, 6805, 6808, 1, 0, 0, 0, 6806, 6804, 1, 0, 0, 0, 6806, 6807, 1, 0, 0, 0, 6807, 6810, 1, 0, 0, 0, 6808, 6806, 1, 0, 0, 0, 6809, 6778, 1, 0, 0, 0, 6809, 6791, 1, 0, 0, 0, 6810, 621, 1, 0, 0, 0, 6811, 6812, 7, 109, 0, 0, 6812, 623, 1, 0, 0, 0, 6813, 6819, 3, 210, 105, 0, 6814, 6819, 3, 186, 93, 0, 6815, 6819, 3, 192, 96, 0, 6816, 6819, 3, 208, 104, 0, 6817, 6819, 3, 220, 110, 0, 6818, 6813, 1, 0, 0, 0, 6818, 6814, 1, 0, 0, 0, 6818, 6815, 1, 0, 0, 0, 6818, 6816, 1, 0, 0, 0, 6818, 6817, 1, 0, 0, 0, 6819, 6824, 1, 0, 0, 0, 6820, 6821, 5, 65, 0, 0, 6821, 6822, 5, 349, 0, 0, 6822, 6824, 3, 706, 353, 0, 6823, 6818, 1, 0, 0, 0, 6823, 6820, 1, 0, 0, 0, 6824, 625, 1, 0, 0, 0, 6825, 6826, 3, 702, 351, 0, 6826, 627, 1, 0, 0, 0, 6827, 6828, 3, 702, 351, 0, 6828, 629, 1, 0, 0, 0, 6829, 6830, 3, 702, 351, 0, 6830, 631, 1, 0, 0, 0, 6831, 6832, 3, 702, 351, 0, 6832, 633, 1, 0, 0, 0, 6833, 6834, 3, 702, 351, 0, 6834, 635, 1, 0, 0, 0, 6835, 6836, 3, 702, 351, 0, 6836, 637, 1, 0, 0, 0, 6837, 6838, 3, 706, 353, 0, 6838, 639, 1, 0, 0, 0, 6839, 6844, 3, 642, 321, 0, 6840, 6841, 5, 868, 0, 0, 6841, 6843, 3, 642, 321, 0, 6842, 6840, 1, 0, 0, 0, 6843, 6846, 1, 0, 0, 0, 6844, 6842, 1, 0, 0, 0, 6844, 6845, 1, 0, 0, 0, 6845, 641, 1, 0, 0, 0, 6846, 6844, 1, 0, 0, 0, 6847, 6848, 3, 706, 353, 0, 6848, 643, 1, 0, 0, 0, 6849, 6850, 3, 706, 353, 0, 6850, 645, 1, 0, 0, 0, 6851, 6852, 3, 706, 353, 0, 6852, 647, 1, 0, 0, 0, 6853, 6854, 3, 702, 351, 0, 6854, 649, 1, 0, 0, 0, 6855, 6860, 3, 652, 326, 0, 6856, 6857, 5, 868, 0, 0, 6857, 6859, 3, 652, 326, 0, 6858, 6856, 1, 0, 0, 0, 6859, 6862, 1, 0, 0, 0, 6860, 6858, 1, 0, 0, 0, 6860, 6861, 1, 0, 0, 0, 6861, 651, 1, 0, 0, 0, 6862, 6860, 1, 0, 0, 0, 6863, 6864, 3, 702, 351, 0, 6864, 653, 1, 0, 0, 0, 6865, 6870, 3, 656, 328, 0, 6866, 6867, 5, 868, 0, 0, 6867, 6869, 3, 656, 328, 0, 6868, 6866, 1, 0, 0, 0, 6869, 6872, 1, 0, 0, 0, 6870, 6868, 1, 0, 0, 0, 6870, 6871, 1, 0, 0, 0, 6871, 655, 1, 0, 0, 0, 6872, 6870, 1, 0, 0, 0, 6873, 6876, 3, 684, 342, 0, 6874, 6876, 3, 706, 353, 0, 6875, 6873, 1, 0, 0, 0, 6875, 6874, 1, 0, 0, 0, 6876, 657, 1, 0, 0, 0, 6877, 6882, 3, 706, 353, 0, 6878, 6880, 3, 710, 355, 0, 6879, 6881, 3, 710, 355, 0, 6880, 6879, 1, 0, 0, 0, 6880, 6881, 1, 0, 0, 0, 6881, 6883, 1, 0, 0, 0, 6882, 6878, 1, 0, 0, 0, 6882, 6883, 1, 0, 0, 0, 6883, 6892, 1, 0, 0, 0, 6884, 6886, 9, 0, 0, 0, 6885, 6884, 1, 0, 0, 0, 6885, 6886, 1, 0, 0, 0, 6886, 6887, 1, 0, 0, 0, 6887, 6889, 3, 710, 355, 0, 6888, 6890, 3, 710, 355, 0, 6889, 6888, 1, 0, 0, 0, 6889, 6890, 1, 0, 0, 0, 6890, 6892, 1, 0, 0, 0, 6891, 6877, 1, 0, 0, 0, 6891, 6885, 1, 0, 0, 0, 6892, 659, 1, 0, 0, 0, 6893, 6898, 3, 662, 331, 0, 6894, 6895, 5, 868, 0, 0, 6895, 6897, 3, 662, 331, 0, 6896, 6894, 1, 0, 0, 0, 6897, 6900, 1, 0, 0, 0, 6898, 6896, 1, 0, 0, 0, 6898, 6899, 1, 0, 0, 0, 6899, 661, 1, 0, 0, 0, 6900, 6898, 1, 0, 0, 0, 6901, 6906, 3, 706, 353, 0, 6902, 6904, 3, 710, 355, 0, 6903, 6905, 3, 710, 355, 0, 6904, 6903, 1, 0, 0, 0, 6904, 6905, 1, 0, 0, 0, 6905, 6907, 1, 0, 0, 0, 6906, 6902, 1, 0, 0, 0, 6906, 6907, 1, 0, 0, 0, 6907, 6917, 1, 0, 0, 0, 6908, 6910, 9, 0, 0, 0, 6909, 6908, 1, 0, 0, 0, 6909, 6910, 1, 0, 0, 0, 6910, 6911, 1, 0, 0, 0, 6911, 6913, 3, 710, 355, 0, 6912, 6914, 3, 710, 355, 0, 6913, 6912, 1, 0, 0, 0, 6913, 6914, 1, 0, 0, 0, 6914, 6917, 1, 0, 0, 0, 6915, 6917, 4, 331, 3, 0, 6916, 6901, 1, 0, 0, 0, 6916, 6909, 1, 0, 0, 0, 6916, 6915, 1, 0, 0, 0, 6917, 663, 1, 0, 0, 0, 6918, 6919, 3, 706, 353, 0, 6919, 665, 1, 0, 0, 0, 6920, 6921, 3, 706, 353, 0, 6921, 667, 1, 0, 0, 0, 6922, 6923, 3, 706, 353, 0, 6923, 669, 1, 0, 0, 0, 6924, 6929, 3, 672, 336, 0, 6925, 6926, 5, 868, 0, 0, 6926, 6928, 3, 672, 336, 0, 6927, 6925, 1, 0, 0, 0, 6928, 6931, 1, 0, 0, 0, 6929, 6927, 1, 0, 0, 0, 6929, 6930, 1, 0, 0, 0, 6930, 671, 1, 0, 0, 0, 6931, 6929, 1, 0, 0, 0, 6932, 6933, 3, 706, 353, 0, 6933, 673, 1, 0, 0, 0, 6934, 6939, 3, 706, 353, 0, 6935, 6936, 5, 866, 0, 0, 6936, 6937, 3, 712, 356, 0, 6937, 6938, 5, 867, 0, 0, 6938, 6940, 1, 0, 0, 0, 6939, 6935, 1, 0, 0, 0, 6939, 6940, 1, 0, 0, 0, 6940, 6943, 1, 0, 0, 0, 6941, 6943, 3, 804, 402, 0, 6942, 6934, 1, 0, 0, 0, 6942, 6941, 1, 0, 0, 0, 6943, 6945, 1, 0, 0, 0, 6944, 6946, 7, 55, 0, 0, 6945, 6944, 1, 0, 0, 0, 6945, 6946, 1, 0, 0, 0, 6946, 675, 1, 0, 0, 0, 6947, 6948, 3, 678, 339, 0, 6948, 6949, 5, 878, 0, 0, 6949, 6950, 3, 712, 356, 0, 6950, 677, 1, 0, 0, 0, 6951, 6952, 3, 680, 340, 0, 6952, 6953, 5, 891, 0, 0, 6953, 679, 1, 0, 0, 0, 6954, 6959, 5, 882, 0, 0, 6955, 6959, 5, 889, 0, 0, 6956, 6959, 5, 704, 0, 0, 6957, 6959, 3, 834, 417, 0, 6958, 6954, 1, 0, 0, 0, 6958, 6955, 1, 0, 0, 0, 6958, 6956, 1, 0, 0, 0, 6958, 6957, 1, 0, 0, 0, 6959, 681, 1, 0, 0, 0, 6960, 6961, 7, 110, 0, 0, 6961, 683, 1, 0, 0, 0, 6962, 6964, 3, 680, 340, 0, 6963, 6965, 3, 682, 341, 0, 6964, 6963, 1, 0, 0, 0, 6964, 6965, 1, 0, 0, 0, 6965, 6968, 1, 0, 0, 0, 6966, 6968, 3, 60, 30, 0, 6967, 6962, 1, 0, 0, 0, 6967, 6966, 1, 0, 0, 0, 6968, 685, 1, 0, 0, 0, 6969, 6970, 7, 111, 0, 0, 6970, 687, 1, 0, 0, 0, 6971, 6976, 5, 228, 0, 0, 6972, 6976, 3, 824, 412, 0, 6973, 6976, 5, 882, 0, 0, 6974, 6976, 5, 879, 0, 0, 6975, 6971, 1, 0, 0, 0, 6975, 6972, 1, 0, 0, 0, 6975, 6973, 1, 0, 0, 0, 6975, 6974, 1, 0, 0, 0, 6976, 689, 1, 0, 0, 0, 6977, 6978, 3, 706, 353, 0, 6978, 691, 1, 0, 0, 0, 6979, 6983, 3, 694, 347, 0, 6980, 6983, 5, 889, 0, 0, 6981, 6983, 5, 882, 0, 0, 6982, 6979, 1, 0, 0, 0, 6982, 6980, 1, 0, 0, 0, 6982, 6981, 1, 0, 0, 0, 6983, 693, 1, 0, 0, 0, 6984, 6985, 7, 112, 0, 0, 6985, 695, 1, 0, 0, 0, 6986, 6987, 3, 712, 356, 0, 6987, 6988, 5, 854, 0, 0, 6988, 6989, 3, 712, 356, 0, 6989, 6990, 5, 854, 0, 0, 6990, 6991, 3, 712, 356, 0, 6991, 6992, 5, 854, 0, 0, 6992, 6993, 3, 712, 356, 0, 6993, 6994, 5, 854, 0, 0, 6994, 7000, 3, 712, 356, 0, 6995, 6996, 5, 878, 0, 0, 6996, 6997, 3, 712, 356, 0, 6997, 6998, 5, 854, 0, 0, 6998, 6999, 3, 712, 356, 0, 6999, 7001, 1, 0, 0, 0, 7000, 6995, 1, 0, 0, 0, 7001, 7002, 1, 0, 0, 0, 7002, 7000, 1, 0, 0, 0, 7002, 7003, 1, 0, 0, 0, 7003, 697, 1, 0, 0, 0, 7004, 7011, 3, 700, 350, 0, 7005, 7006, 5, 868, 0, 0, 7006, 7009, 3, 700, 350, 0, 7007, 7008, 5, 868, 0, 0, 7008, 7010, 3, 712, 356, 0, 7009, 7007, 1, 0, 0, 0, 7009, 7010, 1, 0, 0, 0, 7010, 7012, 1, 0, 0, 0, 7011, 7005, 1, 0, 0, 0, 7011, 7012, 1, 0, 0, 0, 7012, 699, 1, 0, 0, 0, 7013, 7021, 5, 882, 0, 0, 7014, 7021, 5, 887, 0, 0, 7015, 7017, 5, 884, 0, 0, 7016, 7015, 1, 0, 0, 0, 7017, 7018, 1, 0, 0, 0, 7018, 7016, 1, 0, 0, 0, 7018, 7019, 1, 0, 0, 0, 7019, 7021, 1, 0, 0, 0, 7020, 7013, 1, 0, 0, 0, 7020, 7014, 1, 0, 0, 0, 7020, 7016, 1, 0, 0, 0, 7021, 701, 1, 0, 0, 0, 7022, 7024, 3, 706, 353, 0, 7023, 7025, 3, 710, 355, 0, 7024, 7023, 1, 0, 0, 0, 7024, 7025, 1, 0, 0, 0, 7025, 703, 1, 0, 0, 0, 7026, 7031, 3, 706, 353, 0, 7027, 7028, 5, 868, 0, 0, 7028, 7030, 3, 706, 353, 0, 7029, 7027, 1, 0, 0, 0, 7030, 7033, 1, 0, 0, 0, 7031, 7029, 1, 0, 0, 0, 7031, 7032, 1, 0, 0, 0, 7032, 705, 1, 0, 0, 0, 7033, 7031, 1, 0, 0, 0, 7034, 7038, 3, 708, 354, 0, 7035, 7038, 5, 879, 0, 0, 7036, 7038, 5, 882, 0, 0, 7037, 7034, 1, 0, 0, 0, 7037, 7035, 1, 0, 0, 0, 7037, 7036, 1, 0, 0, 0, 7038, 707, 1, 0, 0, 0, 7039, 7049, 5, 889, 0, 0, 7040, 7049, 3, 824, 412, 0, 7041, 7049, 3, 826, 413, 0, 7042, 7049, 3, 694, 347, 0, 7043, 7049, 3, 828, 414, 0, 7044, 7049, 3, 830, 415, 0, 7045, 7049, 3, 832, 416, 0, 7046, 7049, 3, 834, 417, 0, 7047, 7049, 3, 796, 398, 0, 7048, 7039, 1, 0, 0, 0, 7048, 7040, 1, 0, 0, 0, 7048, 7041, 1, 0, 0, 0, 7048, 7042, 1, 0, 0, 0, 7048, 7043, 1, 0, 0, 0, 7048, 7044, 1, 0, 0, 0, 7048, 7045, 1, 0, 0, 0, 7048, 7046, 1, 0, 0, 0, 7048, 7047, 1, 0, 0, 0, 7049, 709, 1, 0, 0, 0, 7050, 7051, 5, 865, 0, 0, 7051, 7055, 5, 889, 0, 0, 7052, 7053, 5, 865, 0, 0, 7053, 7055, 3, 706, 353, 0, 7054, 7050, 1, 0, 0, 0, 7054, 7052, 1, 0, 0, 0, 7055, 711, 1, 0, 0, 0, 7056, 7057, 7, 113, 0, 0, 7057, 713, 1, 0, 0, 0, 7058, 7061, 5, 880, 0, 0, 7059, 7061, 3, 712, 356, 0, 7060, 7058, 1, 0, 0, 0, 7060, 7059, 1, 0, 0, 0, 7061, 715, 1, 0, 0, 0, 7062, 7064, 5, 888, 0, 0, 7063, 7062, 1, 0, 0, 0, 7063, 7064, 1, 0, 0, 0, 7064, 7065, 1, 0, 0, 0, 7065, 7068, 5, 882, 0, 0, 7066, 7068, 5, 881, 0, 0, 7067, 7063, 1, 0, 0, 0, 7067, 7066, 1, 0, 0, 0, 7068, 7070, 1, 0, 0, 0, 7069, 7071, 5, 882, 0, 0, 7070, 7069, 1, 0, 0, 0, 7071, 7072, 1, 0, 0, 0, 7072, 7070, 1, 0, 0, 0, 7072, 7073, 1, 0, 0, 0, 7073, 7086, 1, 0, 0, 0, 7074, 7076, 5, 888, 0, 0, 7075, 7074, 1, 0, 0, 0, 7075, 7076, 1, 0, 0, 0, 7076, 7077, 1, 0, 0, 0, 7077, 7080, 5, 882, 0, 0, 7078, 7080, 5, 881, 0, 0, 7079, 7075, 1, 0, 0, 0, 7079, 7078, 1, 0, 0, 0, 7080, 7083, 1, 0, 0, 0, 7081, 7082, 5, 28, 0, 0, 7082, 7084, 3, 690, 345, 0, 7083, 7081, 1, 0, 0, 0, 7083, 7084, 1, 0, 0, 0, 7084, 7086, 1, 0, 0, 0, 7085, 7067, 1, 0, 0, 0, 7085, 7079, 1, 0, 0, 0, 7086, 717, 1, 0, 0, 0, 7087, 7088, 7, 114, 0, 0, 7088, 719, 1, 0, 0, 0, 7089, 7091, 5, 888, 0, 0, 7090, 7089, 1, 0, 0, 0, 7090, 7091, 1, 0, 0, 0, 7091, 7092, 1, 0, 0, 0, 7092, 7093, 5, 884, 0, 0, 7093, 721, 1, 0, 0, 0, 7094, 7096, 5, 114, 0, 0, 7095, 7094, 1, 0, 0, 0, 7095, 7096, 1, 0, 0, 0, 7096, 7097, 1, 0, 0, 0, 7097, 7098, 7, 115, 0, 0, 7098, 723, 1, 0, 0, 0, 7099, 7112, 3, 716, 358, 0, 7100, 7112, 3, 712, 356, 0, 7101, 7102, 5, 854, 0, 0, 7102, 7112, 3, 712, 356, 0, 7103, 7112, 3, 720, 360, 0, 7104, 7112, 3, 718, 359, 0, 7105, 7112, 5, 885, 0, 0, 7106, 7112, 5, 887, 0, 0, 7107, 7109, 5, 114, 0, 0, 7108, 7107, 1, 0, 0, 0, 7108, 7109, 1, 0, 0, 0, 7109, 7110, 1, 0, 0, 0, 7110, 7112, 7, 115, 0, 0, 7111, 7099, 1, 0, 0, 0, 7111, 7100, 1, 0, 0, 0, 7111, 7101, 1, 0, 0, 0, 7111, 7103, 1, 0, 0, 0, 7111, 7104, 1, 0, 0, 0, 7111, 7105, 1, 0, 0, 0, 7111, 7106, 1, 0, 0, 0, 7111, 7108, 1, 0, 0, 0, 7112, 725, 1, 0, 0, 0, 7113, 7115, 7, 116, 0, 0, 7114, 7116, 5, 240, 0, 0, 7115, 7114, 1, 0, 0, 0, 7115, 7116, 1, 0, 0, 0, 7116, 7118, 1, 0, 0, 0, 7117, 7119, 3, 732, 366, 0, 7118, 7117, 1, 0, 0, 0, 7118, 7119, 1, 0, 0, 0, 7119, 7121, 1, 0, 0, 0, 7120, 7122, 5, 228, 0, 0, 7121, 7120, 1, 0, 0, 0, 7121, 7122, 1, 0, 0, 0, 7122, 7126, 1, 0, 0, 0, 7123, 7124, 3, 58, 29, 0, 7124, 7125, 3, 688, 344, 0, 7125, 7127, 1, 0, 0, 0, 7126, 7123, 1, 0, 0, 0, 7126, 7127, 1, 0, 0, 0, 7127, 7131, 1, 0, 0, 0, 7128, 7129, 5, 28, 0, 0, 7129, 7132, 3, 690, 345, 0, 7130, 7132, 5, 228, 0, 0, 7131, 7128, 1, 0, 0, 0, 7131, 7130, 1, 0, 0, 0, 7131, 7132, 1, 0, 0, 0, 7132, 7240, 1, 0, 0, 0, 7133, 7134, 5, 227, 0, 0, 7134, 7135, 7, 117, 0, 0, 7135, 7137, 5, 240, 0, 0, 7136, 7138, 3, 732, 366, 0, 7137, 7136, 1, 0, 0, 0, 7137, 7138, 1, 0, 0, 0, 7138, 7140, 1, 0, 0, 0, 7139, 7141, 5, 228, 0, 0, 7140, 7139, 1, 0, 0, 0, 7140, 7141, 1, 0, 0, 0, 7141, 7240, 1, 0, 0, 0, 7142, 7143, 5, 227, 0, 0, 7143, 7145, 7, 118, 0, 0, 7144, 7146, 3, 732, 366, 0, 7145, 7144, 1, 0, 0, 0, 7145, 7146, 1, 0, 0, 0, 7146, 7148, 1, 0, 0, 0, 7147, 7149, 5, 228, 0, 0, 7148, 7147, 1, 0, 0, 0, 7148, 7149, 1, 0, 0, 0, 7149, 7240, 1, 0, 0, 0, 7150, 7151, 5, 498, 0, 0, 7151, 7153, 5, 225, 0, 0, 7152, 7154, 3, 732, 366, 0, 7153, 7152, 1, 0, 0, 0, 7153, 7154, 1, 0, 0, 0, 7154, 7156, 1, 0, 0, 0, 7155, 7157, 5, 228, 0, 0, 7156, 7155, 1, 0, 0, 0, 7156, 7157, 1, 0, 0, 0, 7157, 7240, 1, 0, 0, 0, 7158, 7160, 7, 119, 0, 0, 7159, 7161, 3, 732, 366, 0, 7160, 7159, 1, 0, 0, 0, 7160, 7161, 1, 0, 0, 0, 7161, 7165, 1, 0, 0, 0, 7162, 7164, 7, 120, 0, 0, 7163, 7162, 1, 0, 0, 0, 7164, 7167, 1, 0, 0, 0, 7165, 7163, 1, 0, 0, 0, 7165, 7166, 1, 0, 0, 0, 7166, 7240, 1, 0, 0, 0, 7167, 7165, 1, 0, 0, 0, 7168, 7170, 5, 210, 0, 0, 7169, 7171, 3, 734, 367, 0, 7170, 7169, 1, 0, 0, 0, 7170, 7171, 1, 0, 0, 0, 7171, 7175, 1, 0, 0, 0, 7172, 7174, 7, 120, 0, 0, 7173, 7172, 1, 0, 0, 0, 7174, 7177, 1, 0, 0, 0, 7175, 7173, 1, 0, 0, 0, 7175, 7176, 1, 0, 0, 0, 7176, 7240, 1, 0, 0, 0, 7177, 7175, 1, 0, 0, 0, 7178, 7180, 5, 211, 0, 0, 7179, 7181, 5, 212, 0, 0, 7180, 7179, 1, 0, 0, 0, 7180, 7181, 1, 0, 0, 0, 7181, 7183, 1, 0, 0, 0, 7182, 7184, 3, 734, 367, 0, 7183, 7182, 1, 0, 0, 0, 7183, 7184, 1, 0, 0, 0, 7184, 7188, 1, 0, 0, 0, 7185, 7187, 7, 120, 0, 0, 7186, 7185, 1, 0, 0, 0, 7187, 7190, 1, 0, 0, 0, 7188, 7186, 1, 0, 0, 0, 7188, 7189, 1, 0, 0, 0, 7189, 7240, 1, 0, 0, 0, 7190, 7188, 1, 0, 0, 0, 7191, 7193, 7, 121, 0, 0, 7192, 7194, 3, 736, 368, 0, 7193, 7192, 1, 0, 0, 0, 7193, 7194, 1, 0, 0, 0, 7194, 7198, 1, 0, 0, 0, 7195, 7197, 7, 120, 0, 0, 7196, 7195, 1, 0, 0, 0, 7197, 7200, 1, 0, 0, 0, 7198, 7196, 1, 0, 0, 0, 7198, 7199, 1, 0, 0, 0, 7199, 7240, 1, 0, 0, 0, 7200, 7198, 1, 0, 0, 0, 7201, 7240, 7, 122, 0, 0, 7202, 7204, 7, 123, 0, 0, 7203, 7205, 3, 732, 366, 0, 7204, 7203, 1, 0, 0, 0, 7204, 7205, 1, 0, 0, 0, 7205, 7240, 1, 0, 0, 0, 7206, 7207, 7, 124, 0, 0, 7207, 7209, 3, 728, 364, 0, 7208, 7210, 5, 228, 0, 0, 7209, 7208, 1, 0, 0, 0, 7209, 7210, 1, 0, 0, 0, 7210, 7214, 1, 0, 0, 0, 7211, 7212, 3, 58, 29, 0, 7212, 7213, 3, 688, 344, 0, 7213, 7215, 1, 0, 0, 0, 7214, 7211, 1, 0, 0, 0, 7214, 7215, 1, 0, 0, 0, 7215, 7240, 1, 0, 0, 0, 7216, 7219, 7, 125, 0, 0, 7217, 7218, 5, 834, 0, 0, 7218, 7220, 3, 712, 356, 0, 7219, 7217, 1, 0, 0, 0, 7219, 7220, 1, 0, 0, 0, 7220, 7240, 1, 0, 0, 0, 7221, 7223, 5, 233, 0, 0, 7222, 7224, 5, 225, 0, 0, 7223, 7222, 1, 0, 0, 0, 7223, 7224, 1, 0, 0, 0, 7224, 7226, 1, 0, 0, 0, 7225, 7227, 5, 228, 0, 0, 7226, 7225, 1, 0, 0, 0, 7226, 7227, 1, 0, 0, 0, 7227, 7231, 1, 0, 0, 0, 7228, 7229, 3, 58, 29, 0, 7229, 7230, 3, 688, 344, 0, 7230, 7232, 1, 0, 0, 0, 7231, 7228, 1, 0, 0, 0, 7231, 7232, 1, 0, 0, 0, 7232, 7235, 1, 0, 0, 0, 7233, 7234, 5, 28, 0, 0, 7234, 7236, 3, 690, 345, 0, 7235, 7233, 1, 0, 0, 0, 7235, 7236, 1, 0, 0, 0, 7236, 7240, 1, 0, 0, 0, 7237, 7238, 5, 233, 0, 0, 7238, 7240, 5, 229, 0, 0, 7239, 7113, 1, 0, 0, 0, 7239, 7133, 1, 0, 0, 0, 7239, 7142, 1, 0, 0, 0, 7239, 7150, 1, 0, 0, 0, 7239, 7158, 1, 0, 0, 0, 7239, 7168, 1, 0, 0, 0, 7239, 7178, 1, 0, 0, 0, 7239, 7191, 1, 0, 0, 0, 7239, 7201, 1, 0, 0, 0, 7239, 7202, 1, 0, 0, 0, 7239, 7206, 1, 0, 0, 0, 7239, 7216, 1, 0, 0, 0, 7239, 7221, 1, 0, 0, 0, 7239, 7237, 1, 0, 0, 0, 7240, 727, 1, 0, 0, 0, 7241, 7242, 5, 866, 0, 0, 7242, 7247, 5, 882, 0, 0, 7243, 7244, 5, 868, 0, 0, 7244, 7246, 5, 882, 0, 0, 7245, 7243, 1, 0, 0, 0, 7246, 7249, 1, 0, 0, 0, 7247, 7245, 1, 0, 0, 0, 7247, 7248, 1, 0, 0, 0, 7248, 7250, 1, 0, 0, 0, 7249, 7247, 1, 0, 0, 0, 7250, 7251, 5, 867, 0, 0, 7251, 729, 1, 0, 0, 0, 7252, 7254, 7, 126, 0, 0, 7253, 7255, 3, 732, 366, 0, 7254, 7253, 1, 0, 0, 0, 7254, 7255, 1, 0, 0, 0, 7255, 7275, 1, 0, 0, 0, 7256, 7258, 5, 224, 0, 0, 7257, 7259, 3, 732, 366, 0, 7258, 7257, 1, 0, 0, 0, 7258, 7259, 1, 0, 0, 0, 7259, 7263, 1, 0, 0, 0, 7260, 7261, 3, 58, 29, 0, 7261, 7262, 3, 688, 344, 0, 7262, 7264, 1, 0, 0, 0, 7263, 7260, 1, 0, 0, 0, 7263, 7264, 1, 0, 0, 0, 7264, 7275, 1, 0, 0, 0, 7265, 7275, 7, 127, 0, 0, 7266, 7268, 7, 128, 0, 0, 7267, 7269, 3, 736, 368, 0, 7268, 7267, 1, 0, 0, 0, 7268, 7269, 1, 0, 0, 0, 7269, 7275, 1, 0, 0, 0, 7270, 7272, 7, 129, 0, 0, 7271, 7273, 7, 130, 0, 0, 7272, 7271, 1, 0, 0, 0, 7272, 7273, 1, 0, 0, 0, 7273, 7275, 1, 0, 0, 0, 7274, 7252, 1, 0, 0, 0, 7274, 7256, 1, 0, 0, 0, 7274, 7265, 1, 0, 0, 0, 7274, 7266, 1, 0, 0, 0, 7274, 7270, 1, 0, 0, 0, 7275, 7277, 1, 0, 0, 0, 7276, 7278, 5, 12, 0, 0, 7277, 7276, 1, 0, 0, 0, 7277, 7278, 1, 0, 0, 0, 7278, 731, 1, 0, 0, 0, 7279, 7280, 5, 866, 0, 0, 7280, 7281, 3, 712, 356, 0, 7281, 7282, 5, 867, 0, 0, 7282, 733, 1, 0, 0, 0, 7283, 7284, 5, 866, 0, 0, 7284, 7285, 3, 712, 356, 0, 7285, 7286, 5, 868, 0, 0, 7286, 7287, 3, 712, 356, 0, 7287, 7288, 5, 867, 0, 0, 7288, 735, 1, 0, 0, 0, 7289, 7290, 5, 866, 0, 0, 7290, 7293, 3, 712, 356, 0, 7291, 7292, 5, 868, 0, 0, 7292, 7294, 3, 712, 356, 0, 7293, 7291, 1, 0, 0, 0, 7293, 7294, 1, 0, 0, 0, 7294, 7295, 1, 0, 0, 0, 7295, 7296, 5, 867, 0, 0, 7296, 737, 1, 0, 0, 0, 7297, 7298, 5, 866, 0, 0, 7298, 7303, 3, 674, 337, 0, 7299, 7300, 5, 868, 0, 0, 7300, 7302, 3, 674, 337, 0, 7301, 7299, 1, 0, 0, 0, 7302, 7305, 1, 0, 0, 0, 7303, 7301, 1, 0, 0, 0, 7303, 7304, 1, 0, 0, 0, 7304, 7306, 1, 0, 0, 0, 7305, 7303, 1, 0, 0, 0, 7306, 7307, 5, 867, 0, 0, 7307, 739, 1, 0, 0, 0, 7308, 7313, 3, 804, 402, 0, 7309, 7310, 5, 868, 0, 0, 7310, 7312, 3, 804, 402, 0, 7311, 7309, 1, 0, 0, 0, 7312, 7315, 1, 0, 0, 0, 7313, 7311, 1, 0, 0, 0, 7313, 7314, 1, 0, 0, 0, 7314, 741, 1, 0, 0, 0, 7315, 7313, 1, 0, 0, 0, 7316, 7317, 7, 131, 0, 0, 7317, 7322, 3, 744, 372, 0, 7318, 7319, 5, 868, 0, 0, 7319, 7321, 3, 744, 372, 0, 7320, 7318, 1, 0, 0, 0, 7321, 7324, 1, 0, 0, 0, 7322, 7320, 1, 0, 0, 0, 7322, 7323, 1, 0, 0, 0, 7323, 743, 1, 0, 0, 0, 7324, 7322, 1, 0, 0, 0, 7325, 7326, 5, 866, 0, 0, 7326, 7331, 3, 746, 373, 0, 7327, 7328, 5, 868, 0, 0, 7328, 7330, 3, 746, 373, 0, 7329, 7327, 1, 0, 0, 0, 7330, 7333, 1, 0, 0, 0, 7331, 7329, 1, 0, 0, 0, 7331, 7332, 1, 0, 0, 0, 7332, 7334, 1, 0, 0, 0, 7333, 7331, 1, 0, 0, 0, 7334, 7335, 5, 867, 0, 0, 7335, 745, 1, 0, 0, 0, 7336, 7339, 3, 804, 402, 0, 7337, 7339, 5, 42, 0, 0, 7338, 7336, 1, 0, 0, 0, 7338, 7337, 1, 0, 0, 0, 7339, 747, 1, 0, 0, 0, 7340, 7345, 3, 724, 362, 0, 7341, 7342, 5, 868, 0, 0, 7342, 7344, 3, 724, 362, 0, 7343, 7341, 1, 0, 0, 0, 7344, 7347, 1, 0, 0, 0, 7345, 7343, 1, 0, 0, 0, 7345, 7346, 1, 0, 0, 0, 7346, 749, 1, 0, 0, 0, 7347, 7345, 1, 0, 0, 0, 7348, 7353, 5, 882, 0, 0, 7349, 7350, 5, 868, 0, 0, 7350, 7352, 5, 882, 0, 0, 7351, 7349, 1, 0, 0, 0, 7352, 7355, 1, 0, 0, 0, 7353, 7351, 1, 0, 0, 0, 7353, 7354, 1, 0, 0, 0, 7354, 751, 1, 0, 0, 0, 7355, 7353, 1, 0, 0, 0, 7356, 7361, 5, 892, 0, 0, 7357, 7358, 5, 868, 0, 0, 7358, 7360, 5, 892, 0, 0, 7359, 7357, 1, 0, 0, 0, 7360, 7363, 1, 0, 0, 0, 7361, 7359, 1, 0, 0, 0, 7361, 7362, 1, 0, 0, 0, 7362, 753, 1, 0, 0, 0, 7363, 7361, 1, 0, 0, 0, 7364, 7391, 5, 116, 0, 0, 7365, 7366, 5, 24, 0, 0, 7366, 7367, 5, 866, 0, 0, 7367, 7368, 3, 804, 402, 0, 7368, 7369, 5, 13, 0, 0, 7369, 7370, 3, 730, 365, 0, 7370, 7371, 5, 867, 0, 0, 7371, 7391, 1, 0, 0, 0, 7372, 7374, 3, 810, 405, 0, 7373, 7372, 1, 0, 0, 0, 7373, 7374, 1, 0, 0, 0, 7374, 7375, 1, 0, 0, 0, 7375, 7391, 3, 724, 362, 0, 7376, 7380, 3, 756, 378, 0, 7377, 7378, 5, 119, 0, 0, 7378, 7379, 5, 185, 0, 0, 7379, 7381, 3, 756, 378, 0, 7380, 7377, 1, 0, 0, 0, 7380, 7381, 1, 0, 0, 0, 7381, 7391, 1, 0, 0, 0, 7382, 7383, 5, 866, 0, 0, 7383, 7384, 3, 804, 402, 0, 7384, 7385, 5, 867, 0, 0, 7385, 7391, 1, 0, 0, 0, 7386, 7387, 5, 866, 0, 0, 7387, 7388, 3, 702, 351, 0, 7388, 7389, 5, 867, 0, 0, 7389, 7391, 1, 0, 0, 0, 7390, 7364, 1, 0, 0, 0, 7390, 7365, 1, 0, 0, 0, 7390, 7373, 1, 0, 0, 0, 7390, 7376, 1, 0, 0, 0, 7390, 7382, 1, 0, 0, 0, 7390, 7386, 1, 0, 0, 0, 7391, 755, 1, 0, 0, 0, 7392, 7398, 7, 132, 0, 0, 7393, 7395, 5, 866, 0, 0, 7394, 7396, 3, 712, 356, 0, 7395, 7394, 1, 0, 0, 0, 7395, 7396, 1, 0, 0, 0, 7396, 7397, 1, 0, 0, 0, 7397, 7399, 5, 867, 0, 0, 7398, 7393, 1, 0, 0, 0, 7398, 7399, 1, 0, 0, 0, 7399, 7407, 1, 0, 0, 0, 7400, 7401, 5, 295, 0, 0, 7401, 7403, 5, 866, 0, 0, 7402, 7404, 3, 712, 356, 0, 7403, 7402, 1, 0, 0, 0, 7403, 7404, 1, 0, 0, 0, 7404, 7405, 1, 0, 0, 0, 7405, 7407, 5, 867, 0, 0, 7406, 7392, 1, 0, 0, 0, 7406, 7400, 1, 0, 0, 0, 7407, 757, 1, 0, 0, 0, 7408, 7409, 5, 78, 0, 0, 7409, 7410, 5, 60, 0, 0, 7410, 759, 1, 0, 0, 0, 7411, 7412, 5, 78, 0, 0, 7412, 7413, 5, 114, 0, 0, 7413, 7414, 5, 60, 0, 0, 7414, 761, 1, 0, 0, 0, 7415, 7416, 5, 124, 0, 0, 7416, 7417, 5, 143, 0, 0, 7417, 763, 1, 0, 0, 0, 7418, 7441, 3, 766, 383, 0, 7419, 7441, 3, 774, 387, 0, 7420, 7441, 3, 776, 388, 0, 7421, 7428, 3, 796, 398, 0, 7422, 7423, 5, 866, 0, 0, 7423, 7429, 5, 867, 0, 0, 7424, 7425, 5, 866, 0, 0, 7425, 7426, 3, 800, 400, 0, 7426, 7427, 5, 867, 0, 0, 7427, 7429, 1, 0, 0, 0, 7428, 7422, 1, 0, 0, 0, 7428, 7424, 1, 0, 0, 0, 7429, 7441, 1, 0, 0, 0, 7430, 7437, 3, 632, 316, 0, 7431, 7432, 5, 866, 0, 0, 7432, 7438, 5, 867, 0, 0, 7433, 7434, 5, 866, 0, 0, 7434, 7435, 3, 800, 400, 0, 7435, 7436, 5, 867, 0, 0, 7436, 7438, 1, 0, 0, 0, 7437, 7431, 1, 0, 0, 0, 7437, 7433, 1, 0, 0, 0, 7438, 7441, 1, 0, 0, 0, 7439, 7441, 3, 798, 399, 0, 7440, 7418, 1, 0, 0, 0, 7440, 7419, 1, 0, 0, 0, 7440, 7420, 1, 0, 0, 0, 7440, 7421, 1, 0, 0, 0, 7440, 7430, 1, 0, 0, 0, 7440, 7439, 1, 0, 0, 0, 7441, 765, 1, 0, 0, 0, 7442, 7445, 7, 133, 0, 0, 7443, 7444, 5, 866, 0, 0, 7444, 7446, 5, 867, 0, 0, 7445, 7443, 1, 0, 0, 0, 7445, 7446, 1, 0, 0, 0, 7446, 7622, 1, 0, 0, 0, 7447, 7622, 3, 60, 30, 0, 7448, 7449, 5, 33, 0, 0, 7449, 7450, 5, 866, 0, 0, 7450, 7451, 3, 804, 402, 0, 7451, 7452, 5, 868, 0, 0, 7452, 7453, 3, 730, 365, 0, 7453, 7454, 5, 867, 0, 0, 7454, 7622, 1, 0, 0, 0, 7455, 7456, 5, 33, 0, 0, 7456, 7457, 5, 866, 0, 0, 7457, 7458, 3, 804, 402, 0, 7458, 7459, 5, 188, 0, 0, 7459, 7460, 3, 688, 344, 0, 7460, 7461, 5, 867, 0, 0, 7461, 7622, 1, 0, 0, 0, 7462, 7463, 5, 24, 0, 0, 7463, 7464, 5, 866, 0, 0, 7464, 7465, 3, 804, 402, 0, 7465, 7466, 5, 13, 0, 0, 7466, 7467, 3, 730, 365, 0, 7467, 7468, 5, 867, 0, 0, 7468, 7622, 1, 0, 0, 0, 7469, 7470, 5, 189, 0, 0, 7470, 7471, 5, 866, 0, 0, 7471, 7472, 3, 662, 331, 0, 7472, 7473, 5, 867, 0, 0, 7473, 7622, 1, 0, 0, 0, 7474, 7476, 5, 23, 0, 0, 7475, 7477, 3, 768, 384, 0, 7476, 7475, 1, 0, 0, 0, 7477, 7478, 1, 0, 0, 0, 7478, 7476, 1, 0, 0, 0, 7478, 7479, 1, 0, 0, 0, 7479, 7482, 1, 0, 0, 0, 7480, 7481, 5, 53, 0, 0, 7481, 7483, 3, 802, 401, 0, 7482, 7480, 1, 0, 0, 0, 7482, 7483, 1, 0, 0, 0, 7483, 7484, 1, 0, 0, 0, 7484, 7485, 5, 378, 0, 0, 7485, 7622, 1, 0, 0, 0, 7486, 7487, 5, 23, 0, 0, 7487, 7489, 3, 804, 402, 0, 7488, 7490, 3, 768, 384, 0, 7489, 7488, 1, 0, 0, 0, 7490, 7491, 1, 0, 0, 0, 7491, 7489, 1, 0, 0, 0, 7491, 7492, 1, 0, 0, 0, 7492, 7495, 1, 0, 0, 0, 7493, 7494, 5, 53, 0, 0, 7494, 7496, 3, 802, 401, 0, 7495, 7493, 1, 0, 0, 0, 7495, 7496, 1, 0, 0, 0, 7496, 7497, 1, 0, 0, 0, 7497, 7498, 5, 378, 0, 0, 7498, 7622, 1, 0, 0, 0, 7499, 7500, 5, 224, 0, 0, 7500, 7501, 5, 866, 0, 0, 7501, 7504, 3, 800, 400, 0, 7502, 7503, 5, 188, 0, 0, 7503, 7505, 3, 688, 344, 0, 7504, 7502, 1, 0, 0, 0, 7504, 7505, 1, 0, 0, 0, 7505, 7506, 1, 0, 0, 0, 7506, 7507, 5, 867, 0, 0, 7507, 7622, 1, 0, 0, 0, 7508, 7509, 5, 296, 0, 0, 7509, 7512, 5, 866, 0, 0, 7510, 7513, 3, 716, 358, 0, 7511, 7513, 3, 804, 402, 0, 7512, 7510, 1, 0, 0, 0, 7512, 7511, 1, 0, 0, 0, 7513, 7514, 1, 0, 0, 0, 7514, 7517, 5, 80, 0, 0, 7515, 7518, 3, 716, 358, 0, 7516, 7518, 3, 804, 402, 0, 7517, 7515, 1, 0, 0, 0, 7517, 7516, 1, 0, 0, 0, 7518, 7519, 1, 0, 0, 0, 7519, 7520, 5, 867, 0, 0, 7520, 7622, 1, 0, 0, 0, 7521, 7522, 7, 134, 0, 0, 7522, 7525, 5, 866, 0, 0, 7523, 7526, 3, 716, 358, 0, 7524, 7526, 3, 804, 402, 0, 7525, 7523, 1, 0, 0, 0, 7525, 7524, 1, 0, 0, 0, 7526, 7527, 1, 0, 0, 0, 7527, 7530, 5, 68, 0, 0, 7528, 7531, 3, 712, 356, 0, 7529, 7531, 3, 804, 402, 0, 7530, 7528, 1, 0, 0, 0, 7530, 7529, 1, 0, 0, 0, 7531, 7537, 1, 0, 0, 0, 7532, 7535, 5, 65, 0, 0, 7533, 7536, 3, 712, 356, 0, 7534, 7536, 3, 804, 402, 0, 7535, 7533, 1, 0, 0, 0, 7535, 7534, 1, 0, 0, 0, 7536, 7538, 1, 0, 0, 0, 7537, 7532, 1, 0, 0, 0, 7537, 7538, 1, 0, 0, 0, 7538, 7539, 1, 0, 0, 0, 7539, 7540, 5, 867, 0, 0, 7540, 7622, 1, 0, 0, 0, 7541, 7542, 5, 300, 0, 0, 7542, 7543, 5, 866, 0, 0, 7543, 7546, 7, 135, 0, 0, 7544, 7547, 3, 716, 358, 0, 7545, 7547, 3, 804, 402, 0, 7546, 7544, 1, 0, 0, 0, 7546, 7545, 1, 0, 0, 0, 7546, 7547, 1, 0, 0, 0, 7547, 7548, 1, 0, 0, 0, 7548, 7551, 5, 68, 0, 0, 7549, 7552, 3, 716, 358, 0, 7550, 7552, 3, 804, 402, 0, 7551, 7549, 1, 0, 0, 0, 7551, 7550, 1, 0, 0, 0, 7552, 7553, 1, 0, 0, 0, 7553, 7554, 5, 867, 0, 0, 7554, 7622, 1, 0, 0, 0, 7555, 7556, 5, 300, 0, 0, 7556, 7559, 5, 866, 0, 0, 7557, 7560, 3, 716, 358, 0, 7558, 7560, 3, 804, 402, 0, 7559, 7557, 1, 0, 0, 0, 7559, 7558, 1, 0, 0, 0, 7560, 7561, 1, 0, 0, 0, 7561, 7564, 5, 68, 0, 0, 7562, 7565, 3, 716, 358, 0, 7563, 7565, 3, 804, 402, 0, 7564, 7562, 1, 0, 0, 0, 7564, 7563, 1, 0, 0, 0, 7565, 7566, 1, 0, 0, 0, 7566, 7567, 5, 867, 0, 0, 7567, 7622, 1, 0, 0, 0, 7568, 7569, 5, 840, 0, 0, 7569, 7572, 5, 866, 0, 0, 7570, 7573, 3, 716, 358, 0, 7571, 7573, 3, 804, 402, 0, 7572, 7570, 1, 0, 0, 0, 7572, 7571, 1, 0, 0, 0, 7573, 7580, 1, 0, 0, 0, 7574, 7575, 5, 13, 0, 0, 7575, 7576, 7, 136, 0, 0, 7576, 7577, 5, 866, 0, 0, 7577, 7578, 3, 712, 356, 0, 7578, 7579, 5, 867, 0, 0, 7579, 7581, 1, 0, 0, 0, 7580, 7574, 1, 0, 0, 0, 7580, 7581, 1, 0, 0, 0, 7581, 7583, 1, 0, 0, 0, 7582, 7584, 3, 770, 385, 0, 7583, 7582, 1, 0, 0, 0, 7583, 7584, 1, 0, 0, 0, 7584, 7585, 1, 0, 0, 0, 7585, 7586, 5, 867, 0, 0, 7586, 7622, 1, 0, 0, 0, 7587, 7588, 5, 293, 0, 0, 7588, 7589, 5, 866, 0, 0, 7589, 7590, 3, 70, 35, 0, 7590, 7593, 5, 68, 0, 0, 7591, 7594, 3, 716, 358, 0, 7592, 7594, 3, 804, 402, 0, 7593, 7591, 1, 0, 0, 0, 7593, 7592, 1, 0, 0, 0, 7594, 7595, 1, 0, 0, 0, 7595, 7596, 5, 867, 0, 0, 7596, 7622, 1, 0, 0, 0, 7597, 7598, 5, 827, 0, 0, 7598, 7599, 5, 866, 0, 0, 7599, 7600, 7, 137, 0, 0, 7600, 7601, 5, 868, 0, 0, 7601, 7602, 3, 716, 358, 0, 7602, 7603, 5, 867, 0, 0, 7603, 7622, 1, 0, 0, 0, 7604, 7605, 5, 254, 0, 0, 7605, 7606, 5, 866, 0, 0, 7606, 7607, 3, 804, 402, 0, 7607, 7608, 5, 868, 0, 0, 7608, 7611, 3, 804, 402, 0, 7609, 7610, 5, 579, 0, 0, 7610, 7612, 3, 730, 365, 0, 7611, 7609, 1, 0, 0, 0, 7611, 7612, 1, 0, 0, 0, 7612, 7614, 1, 0, 0, 0, 7613, 7615, 3, 292, 146, 0, 7614, 7613, 1, 0, 0, 0, 7614, 7615, 1, 0, 0, 0, 7615, 7617, 1, 0, 0, 0, 7616, 7618, 3, 294, 147, 0, 7617, 7616, 1, 0, 0, 0, 7617, 7618, 1, 0, 0, 0, 7618, 7619, 1, 0, 0, 0, 7619, 7620, 5, 867, 0, 0, 7620, 7622, 1, 0, 0, 0, 7621, 7442, 1, 0, 0, 0, 7621, 7447, 1, 0, 0, 0, 7621, 7448, 1, 0, 0, 0, 7621, 7455, 1, 0, 0, 0, 7621, 7462, 1, 0, 0, 0, 7621, 7469, 1, 0, 0, 0, 7621, 7474, 1, 0, 0, 0, 7621, 7486, 1, 0, 0, 0, 7621, 7499, 1, 0, 0, 0, 7621, 7508, 1, 0, 0, 0, 7621, 7521, 1, 0, 0, 0, 7621, 7541, 1, 0, 0, 0, 7621, 7555, 1, 0, 0, 0, 7621, 7568, 1, 0, 0, 0, 7621, 7587, 1, 0, 0, 0, 7621, 7597, 1, 0, 0, 0, 7621, 7604, 1, 0, 0, 0, 7622, 767, 1, 0, 0, 0, 7623, 7624, 5, 191, 0, 0, 7624, 7625, 3, 802, 401, 0, 7625, 7626, 5, 175, 0, 0, 7626, 7627, 3, 802, 401, 0, 7627, 769, 1, 0, 0, 0, 7628, 7629, 5, 448, 0, 0, 7629, 7634, 3, 772, 386, 0, 7630, 7631, 5, 868, 0, 0, 7631, 7633, 3, 772, 386, 0, 7632, 7630, 1, 0, 0, 0, 7633, 7636, 1, 0, 0, 0, 7634, 7632, 1, 0, 0, 0, 7634, 7635, 1, 0, 0, 0, 7635, 7643, 1, 0, 0, 0, 7636, 7634, 1, 0, 0, 0, 7637, 7638, 5, 448, 0, 0, 7638, 7639, 3, 712, 356, 0, 7639, 7640, 5, 854, 0, 0, 7640, 7641, 3, 712, 356, 0, 7641, 7643, 1, 0, 0, 0, 7642, 7628, 1, 0, 0, 0, 7642, 7637, 1, 0, 0, 0, 7643, 771, 1, 0, 0, 0, 7644, 7646, 3, 712, 356, 0, 7645, 7647, 7, 138, 0, 0, 7646, 7645, 1, 0, 0, 0, 7646, 7647, 1, 0, 0, 0, 7647, 773, 1, 0, 0, 0, 7648, 7649, 7, 139, 0, 0, 7649, 7651, 5, 866, 0, 0, 7650, 7652, 7, 45, 0, 0, 7651, 7650, 1, 0, 0, 0, 7651, 7652, 1, 0, 0, 0, 7652, 7653, 1, 0, 0, 0, 7653, 7654, 3, 802, 401, 0, 7654, 7656, 5, 867, 0, 0, 7655, 7657, 3, 778, 389, 0, 7656, 7655, 1, 0, 0, 0, 7656, 7657, 1, 0, 0, 0, 7657, 7708, 1, 0, 0, 0, 7658, 7659, 5, 262, 0, 0, 7659, 7667, 5, 866, 0, 0, 7660, 7668, 5, 850, 0, 0, 7661, 7663, 5, 7, 0, 0, 7662, 7661, 1, 0, 0, 0, 7662, 7663, 1, 0, 0, 0, 7663, 7664, 1, 0, 0, 0, 7664, 7668, 3, 802, 401, 0, 7665, 7666, 5, 49, 0, 0, 7666, 7668, 3, 800, 400, 0, 7667, 7660, 1, 0, 0, 0, 7667, 7662, 1, 0, 0, 0, 7667, 7665, 1, 0, 0, 0, 7668, 7669, 1, 0, 0, 0, 7669, 7671, 5, 867, 0, 0, 7670, 7672, 3, 778, 389, 0, 7671, 7670, 1, 0, 0, 0, 7671, 7672, 1, 0, 0, 0, 7672, 7708, 1, 0, 0, 0, 7673, 7674, 7, 140, 0, 0, 7674, 7676, 5, 866, 0, 0, 7675, 7677, 5, 7, 0, 0, 7676, 7675, 1, 0, 0, 0, 7676, 7677, 1, 0, 0, 0, 7677, 7678, 1, 0, 0, 0, 7678, 7679, 3, 802, 401, 0, 7679, 7681, 5, 867, 0, 0, 7680, 7682, 3, 778, 389, 0, 7681, 7680, 1, 0, 0, 0, 7681, 7682, 1, 0, 0, 0, 7682, 7708, 1, 0, 0, 0, 7683, 7684, 5, 266, 0, 0, 7684, 7686, 5, 866, 0, 0, 7685, 7687, 5, 49, 0, 0, 7686, 7685, 1, 0, 0, 0, 7686, 7687, 1, 0, 0, 0, 7687, 7688, 1, 0, 0, 0, 7688, 7699, 3, 800, 400, 0, 7689, 7690, 5, 125, 0, 0, 7690, 7691, 5, 20, 0, 0, 7691, 7696, 3, 260, 130, 0, 7692, 7693, 5, 868, 0, 0, 7693, 7695, 3, 260, 130, 0, 7694, 7692, 1, 0, 0, 0, 7695, 7698, 1, 0, 0, 0, 7696, 7694, 1, 0, 0, 0, 7696, 7697, 1, 0, 0, 0, 7697, 7700, 1, 0, 0, 0, 7698, 7696, 1, 0, 0, 0, 7699, 7689, 1, 0, 0, 0, 7699, 7700, 1, 0, 0, 0, 7700, 7703, 1, 0, 0, 0, 7701, 7702, 5, 156, 0, 0, 7702, 7704, 5, 882, 0, 0, 7703, 7701, 1, 0, 0, 0, 7703, 7704, 1, 0, 0, 0, 7704, 7705, 1, 0, 0, 0, 7705, 7706, 5, 867, 0, 0, 7706, 7708, 1, 0, 0, 0, 7707, 7648, 1, 0, 0, 0, 7707, 7658, 1, 0, 0, 0, 7707, 7673, 1, 0, 0, 0, 7707, 7683, 1, 0, 0, 0, 7708, 775, 1, 0, 0, 0, 7709, 7710, 7, 141, 0, 0, 7710, 7711, 5, 866, 0, 0, 7711, 7714, 3, 804, 402, 0, 7712, 7713, 5, 868, 0, 0, 7713, 7715, 3, 712, 356, 0, 7714, 7712, 1, 0, 0, 0, 7714, 7715, 1, 0, 0, 0, 7715, 7718, 1, 0, 0, 0, 7716, 7717, 5, 868, 0, 0, 7717, 7719, 3, 712, 356, 0, 7718, 7716, 1, 0, 0, 0, 7718, 7719, 1, 0, 0, 0, 7719, 7720, 1, 0, 0, 0, 7720, 7721, 5, 867, 0, 0, 7721, 7722, 3, 778, 389, 0, 7722, 7748, 1, 0, 0, 0, 7723, 7724, 7, 142, 0, 0, 7724, 7725, 5, 866, 0, 0, 7725, 7726, 3, 804, 402, 0, 7726, 7727, 5, 867, 0, 0, 7727, 7728, 3, 778, 389, 0, 7728, 7748, 1, 0, 0, 0, 7729, 7730, 7, 143, 0, 0, 7730, 7731, 5, 866, 0, 0, 7731, 7732, 5, 867, 0, 0, 7732, 7748, 3, 778, 389, 0, 7733, 7734, 5, 273, 0, 0, 7734, 7735, 5, 866, 0, 0, 7735, 7736, 3, 804, 402, 0, 7736, 7737, 5, 868, 0, 0, 7737, 7738, 3, 712, 356, 0, 7738, 7739, 5, 867, 0, 0, 7739, 7740, 3, 778, 389, 0, 7740, 7748, 1, 0, 0, 0, 7741, 7742, 5, 272, 0, 0, 7742, 7743, 5, 866, 0, 0, 7743, 7744, 3, 712, 356, 0, 7744, 7745, 5, 867, 0, 0, 7745, 7746, 3, 778, 389, 0, 7746, 7748, 1, 0, 0, 0, 7747, 7709, 1, 0, 0, 0, 7747, 7723, 1, 0, 0, 0, 7747, 7729, 1, 0, 0, 0, 7747, 7733, 1, 0, 0, 0, 7747, 7741, 1, 0, 0, 0, 7748, 777, 1, 0, 0, 0, 7749, 7755, 5, 129, 0, 0, 7750, 7751, 5, 866, 0, 0, 7751, 7752, 3, 780, 390, 0, 7752, 7753, 5, 867, 0, 0, 7753, 7756, 1, 0, 0, 0, 7754, 7756, 3, 782, 391, 0, 7755, 7750, 1, 0, 0, 0, 7755, 7754, 1, 0, 0, 0, 7756, 779, 1, 0, 0, 0, 7757, 7759, 3, 782, 391, 0, 7758, 7757, 1, 0, 0, 0, 7758, 7759, 1, 0, 0, 0, 7759, 7761, 1, 0, 0, 0, 7760, 7762, 3, 794, 397, 0, 7761, 7760, 1, 0, 0, 0, 7761, 7762, 1, 0, 0, 0, 7762, 7764, 1, 0, 0, 0, 7763, 7765, 3, 258, 129, 0, 7764, 7763, 1, 0, 0, 0, 7764, 7765, 1, 0, 0, 0, 7765, 7767, 1, 0, 0, 0, 7766, 7768, 3, 784, 392, 0, 7767, 7766, 1, 0, 0, 0, 7767, 7768, 1, 0, 0, 0, 7768, 781, 1, 0, 0, 0, 7769, 7770, 3, 706, 353, 0, 7770, 783, 1, 0, 0, 0, 7771, 7772, 3, 786, 393, 0, 7772, 7773, 3, 788, 394, 0, 7773, 785, 1, 0, 0, 0, 7774, 7775, 7, 144, 0, 0, 7775, 787, 1, 0, 0, 0, 7776, 7779, 3, 792, 396, 0, 7777, 7779, 3, 790, 395, 0, 7778, 7776, 1, 0, 0, 0, 7778, 7777, 1, 0, 0, 0, 7779, 789, 1, 0, 0, 0, 7780, 7781, 5, 17, 0, 0, 7781, 7782, 3, 792, 396, 0, 7782, 7783, 5, 11, 0, 0, 7783, 7784, 3, 792, 396, 0, 7784, 791, 1, 0, 0, 0, 7785, 7786, 5, 36, 0, 0, 7786, 7793, 5, 586, 0, 0, 7787, 7788, 5, 669, 0, 0, 7788, 7793, 7, 145, 0, 0, 7789, 7790, 3, 804, 402, 0, 7790, 7791, 7, 145, 0, 0, 7791, 7793, 1, 0, 0, 0, 7792, 7785, 1, 0, 0, 0, 7792, 7787, 1, 0, 0, 0, 7792, 7789, 1, 0, 0, 0, 7793, 793, 1, 0, 0, 0, 7794, 7795, 5, 130, 0, 0, 7795, 7796, 5, 20, 0, 0, 7796, 7801, 3, 804, 402, 0, 7797, 7798, 5, 868, 0, 0, 7798, 7800, 3, 804, 402, 0, 7799, 7797, 1, 0, 0, 0, 7800, 7803, 1, 0, 0, 0, 7801, 7799, 1, 0, 0, 0, 7801, 7802, 1, 0, 0, 0, 7802, 795, 1, 0, 0, 0, 7803, 7801, 1, 0, 0, 0, 7804, 7829, 3, 836, 418, 0, 7805, 7829, 5, 757, 0, 0, 7806, 7829, 5, 289, 0, 0, 7807, 7829, 5, 285, 0, 0, 7808, 7829, 5, 286, 0, 0, 7809, 7829, 5, 287, 0, 0, 7810, 7829, 5, 290, 0, 0, 7811, 7829, 5, 291, 0, 0, 7812, 7829, 5, 292, 0, 0, 7813, 7829, 5, 78, 0, 0, 7814, 7829, 5, 86, 0, 0, 7815, 7829, 5, 288, 0, 0, 7816, 7829, 5, 294, 0, 0, 7817, 7829, 5, 488, 0, 0, 7818, 7829, 5, 295, 0, 0, 7819, 7829, 5, 142, 0, 0, 7820, 7829, 5, 143, 0, 0, 7821, 7829, 5, 297, 0, 0, 7822, 7829, 5, 298, 0, 0, 7823, 7829, 5, 299, 0, 0, 7824, 7829, 5, 300, 0, 0, 7825, 7829, 5, 301, 0, 0, 7826, 7829, 5, 302, 0, 0, 7827, 7829, 5, 303, 0, 0, 7828, 7804, 1, 0, 0, 0, 7828, 7805, 1, 0, 0, 0, 7828, 7806, 1, 0, 0, 0, 7828, 7807, 1, 0, 0, 0, 7828, 7808, 1, 0, 0, 0, 7828, 7809, 1, 0, 0, 0, 7828, 7810, 1, 0, 0, 0, 7828, 7811, 1, 0, 0, 0, 7828, 7812, 1, 0, 0, 0, 7828, 7813, 1, 0, 0, 0, 7828, 7814, 1, 0, 0, 0, 7828, 7815, 1, 0, 0, 0, 7828, 7816, 1, 0, 0, 0, 7828, 7817, 1, 0, 0, 0, 7828, 7818, 1, 0, 0, 0, 7828, 7819, 1, 0, 0, 0, 7828, 7820, 1, 0, 0, 0, 7828, 7821, 1, 0, 0, 0, 7828, 7822, 1, 0, 0, 0, 7828, 7823, 1, 0, 0, 0, 7828, 7824, 1, 0, 0, 0, 7828, 7825, 1, 0, 0, 0, 7828, 7826, 1, 0, 0, 0, 7828, 7827, 1, 0, 0, 0, 7829, 797, 1, 0, 0, 0, 7830, 7831, 7, 146, 0, 0, 7831, 7832, 5, 866, 0, 0, 7832, 7833, 3, 802, 401, 0, 7833, 7834, 5, 867, 0, 0, 7834, 799, 1, 0, 0, 0, 7835, 7840, 3, 802, 401, 0, 7836, 7837, 5, 868, 0, 0, 7837, 7839, 3, 802, 401, 0, 7838, 7836, 1, 0, 0, 0, 7839, 7842, 1, 0, 0, 0, 7840, 7838, 1, 0, 0, 0, 7840, 7841, 1, 0, 0, 0, 7841, 801, 1, 0, 0, 0, 7842, 7840, 1, 0, 0, 0, 7843, 7847, 3, 724, 362, 0, 7844, 7847, 3, 764, 382, 0, 7845, 7847, 3, 804, 402, 0, 7846, 7843, 1, 0, 0, 0, 7846, 7844, 1, 0, 0, 0, 7846, 7845, 1, 0, 0, 0, 7847, 803, 1, 0, 0, 0, 7848, 7849, 6, 402, -1, 0, 7849, 7850, 7, 147, 0, 0, 7850, 7860, 3, 804, 402, 4, 7851, 7852, 3, 806, 403, 0, 7852, 7854, 5, 89, 0, 0, 7853, 7855, 5, 114, 0, 0, 7854, 7853, 1, 0, 0, 0, 7854, 7855, 1, 0, 0, 0, 7855, 7856, 1, 0, 0, 0, 7856, 7857, 7, 148, 0, 0, 7857, 7860, 1, 0, 0, 0, 7858, 7860, 3, 806, 403, 0, 7859, 7848, 1, 0, 0, 0, 7859, 7851, 1, 0, 0, 0, 7859, 7858, 1, 0, 0, 0, 7860, 7867, 1, 0, 0, 0, 7861, 7862, 10, 3, 0, 0, 7862, 7863, 3, 816, 408, 0, 7863, 7864, 3, 804, 402, 4, 7864, 7866, 1, 0, 0, 0, 7865, 7861, 1, 0, 0, 0, 7866, 7869, 1, 0, 0, 0, 7867, 7865, 1, 0, 0, 0, 7867, 7868, 1, 0, 0, 0, 7868, 805, 1, 0, 0, 0, 7869, 7867, 1, 0, 0, 0, 7870, 7871, 6, 403, -1, 0, 7871, 7872, 3, 808, 404, 0, 7872, 7936, 1, 0, 0, 0, 7873, 7875, 10, 6, 0, 0, 7874, 7876, 5, 114, 0, 0, 7875, 7874, 1, 0, 0, 0, 7875, 7876, 1, 0, 0, 0, 7876, 7877, 1, 0, 0, 0, 7877, 7878, 5, 17, 0, 0, 7878, 7879, 3, 806, 403, 0, 7879, 7880, 5, 11, 0, 0, 7880, 7881, 3, 806, 403, 7, 7881, 7935, 1, 0, 0, 0, 7882, 7883, 10, 5, 0, 0, 7883, 7884, 5, 604, 0, 0, 7884, 7885, 5, 99, 0, 0, 7885, 7935, 3, 806, 403, 6, 7886, 7888, 10, 3, 0, 0, 7887, 7889, 5, 114, 0, 0, 7888, 7887, 1, 0, 0, 0, 7888, 7889, 1, 0, 0, 0, 7889, 7890, 1, 0, 0, 0, 7890, 7891, 7, 149, 0, 0, 7891, 7935, 3, 806, 403, 4, 7892, 7894, 10, 9, 0, 0, 7893, 7895, 5, 114, 0, 0, 7894, 7893, 1, 0, 0, 0, 7894, 7895, 1, 0, 0, 0, 7895, 7896, 1, 0, 0, 0, 7896, 7897, 5, 80, 0, 0, 7897, 7900, 5, 866, 0, 0, 7898, 7901, 3, 210, 105, 0, 7899, 7901, 3, 740, 370, 0, 7900, 7898, 1, 0, 0, 0, 7900, 7899, 1, 0, 0, 0, 7901, 7902, 1, 0, 0, 0, 7902, 7903, 5, 867, 0, 0, 7903, 7935, 1, 0, 0, 0, 7904, 7905, 10, 8, 0, 0, 7905, 7906, 5, 89, 0, 0, 7906, 7935, 3, 722, 361, 0, 7907, 7908, 10, 7, 0, 0, 7908, 7915, 3, 812, 406, 0, 7909, 7910, 7, 150, 0, 0, 7910, 7911, 5, 866, 0, 0, 7911, 7912, 3, 210, 105, 0, 7912, 7913, 5, 867, 0, 0, 7913, 7916, 1, 0, 0, 0, 7914, 7916, 3, 806, 403, 0, 7915, 7909, 1, 0, 0, 0, 7915, 7914, 1, 0, 0, 0, 7916, 7935, 1, 0, 0, 0, 7917, 7919, 10, 4, 0, 0, 7918, 7920, 5, 114, 0, 0, 7919, 7918, 1, 0, 0, 0, 7919, 7920, 1, 0, 0, 0, 7920, 7921, 1, 0, 0, 0, 7921, 7922, 5, 99, 0, 0, 7922, 7925, 3, 806, 403, 0, 7923, 7924, 5, 384, 0, 0, 7924, 7926, 5, 882, 0, 0, 7925, 7923, 1, 0, 0, 0, 7925, 7926, 1, 0, 0, 0, 7926, 7935, 1, 0, 0, 0, 7927, 7928, 10, 2, 0, 0, 7928, 7929, 5, 485, 0, 0, 7929, 7930, 5, 510, 0, 0, 7930, 7931, 5, 866, 0, 0, 7931, 7932, 3, 806, 403, 0, 7932, 7933, 5, 867, 0, 0, 7933, 7935, 1, 0, 0, 0, 7934, 7873, 1, 0, 0, 0, 7934, 7882, 1, 0, 0, 0, 7934, 7886, 1, 0, 0, 0, 7934, 7892, 1, 0, 0, 0, 7934, 7904, 1, 0, 0, 0, 7934, 7907, 1, 0, 0, 0, 7934, 7917, 1, 0, 0, 0, 7934, 7927, 1, 0, 0, 0, 7935, 7938, 1, 0, 0, 0, 7936, 7934, 1, 0, 0, 0, 7936, 7937, 1, 0, 0, 0, 7937, 807, 1, 0, 0, 0, 7938, 7936, 1, 0, 0, 0, 7939, 7940, 6, 404, -1, 0, 7940, 7988, 3, 724, 362, 0, 7941, 7988, 3, 764, 382, 0, 7942, 7988, 3, 686, 343, 0, 7943, 7944, 3, 810, 405, 0, 7944, 7945, 3, 808, 404, 12, 7945, 7988, 1, 0, 0, 0, 7946, 7947, 5, 228, 0, 0, 7947, 7988, 3, 808, 404, 11, 7948, 7949, 5, 892, 0, 0, 7949, 7950, 5, 841, 0, 0, 7950, 7988, 3, 808, 404, 10, 7951, 7952, 5, 866, 0, 0, 7952, 7957, 3, 804, 402, 0, 7953, 7954, 5, 868, 0, 0, 7954, 7956, 3, 804, 402, 0, 7955, 7953, 1, 0, 0, 0, 7956, 7959, 1, 0, 0, 0, 7957, 7955, 1, 0, 0, 0, 7957, 7958, 1, 0, 0, 0, 7958, 7960, 1, 0, 0, 0, 7959, 7957, 1, 0, 0, 0, 7960, 7961, 5, 867, 0, 0, 7961, 7988, 1, 0, 0, 0, 7962, 7963, 5, 586, 0, 0, 7963, 7964, 5, 866, 0, 0, 7964, 7967, 3, 804, 402, 0, 7965, 7966, 5, 868, 0, 0, 7966, 7968, 3, 804, 402, 0, 7967, 7965, 1, 0, 0, 0, 7968, 7969, 1, 0, 0, 0, 7969, 7967, 1, 0, 0, 0, 7969, 7970, 1, 0, 0, 0, 7970, 7971, 1, 0, 0, 0, 7971, 7972, 5, 867, 0, 0, 7972, 7988, 1, 0, 0, 0, 7973, 7974, 5, 60, 0, 0, 7974, 7975, 5, 866, 0, 0, 7975, 7976, 3, 210, 105, 0, 7976, 7977, 5, 867, 0, 0, 7977, 7988, 1, 0, 0, 0, 7978, 7979, 5, 866, 0, 0, 7979, 7980, 3, 210, 105, 0, 7980, 7981, 5, 867, 0, 0, 7981, 7988, 1, 0, 0, 0, 7982, 7983, 5, 87, 0, 0, 7983, 7984, 3, 804, 402, 0, 7984, 7985, 3, 70, 35, 0, 7985, 7988, 1, 0, 0, 0, 7986, 7988, 3, 662, 331, 0, 7987, 7939, 1, 0, 0, 0, 7987, 7941, 1, 0, 0, 0, 7987, 7942, 1, 0, 0, 0, 7987, 7943, 1, 0, 0, 0, 7987, 7946, 1, 0, 0, 0, 7987, 7948, 1, 0, 0, 0, 7987, 7951, 1, 0, 0, 0, 7987, 7962, 1, 0, 0, 0, 7987, 7973, 1, 0, 0, 0, 7987, 7978, 1, 0, 0, 0, 7987, 7982, 1, 0, 0, 0, 7987, 7986, 1, 0, 0, 0, 7988, 8006, 1, 0, 0, 0, 7989, 7990, 10, 4, 0, 0, 7990, 7991, 3, 822, 411, 0, 7991, 7992, 3, 808, 404, 5, 7992, 8005, 1, 0, 0, 0, 7993, 7994, 10, 3, 0, 0, 7994, 7995, 3, 818, 409, 0, 7995, 7996, 3, 808, 404, 4, 7996, 8005, 1, 0, 0, 0, 7997, 7998, 10, 2, 0, 0, 7998, 7999, 3, 820, 410, 0, 7999, 8000, 3, 808, 404, 3, 8000, 8005, 1, 0, 0, 0, 8001, 8002, 10, 14, 0, 0, 8002, 8003, 5, 28, 0, 0, 8003, 8005, 3, 690, 345, 0, 8004, 7989, 1, 0, 0, 0, 8004, 7993, 1, 0, 0, 0, 8004, 7997, 1, 0, 0, 0, 8004, 8001, 1, 0, 0, 0, 8005, 8008, 1, 0, 0, 0, 8006, 8004, 1, 0, 0, 0, 8006, 8007, 1, 0, 0, 0, 8007, 809, 1, 0, 0, 0, 8008, 8006, 1, 0, 0, 0, 8009, 8010, 7, 151, 0, 0, 8010, 811, 1, 0, 0, 0, 8011, 8012, 5, 859, 0, 0, 8012, 8020, 5, 858, 0, 0, 8013, 8014, 5, 860, 0, 0, 8014, 8020, 5, 857, 0, 0, 8015, 8016, 5, 859, 0, 0, 8016, 8017, 5, 857, 0, 0, 8017, 8020, 5, 858, 0, 0, 8018, 8020, 3, 814, 407, 0, 8019, 8011, 1, 0, 0, 0, 8019, 8013, 1, 0, 0, 0, 8019, 8015, 1, 0, 0, 0, 8019, 8018, 1, 0, 0, 0, 8020, 813, 1, 0, 0, 0, 8021, 8022, 5, 859, 0, 0, 8022, 8029, 5, 857, 0, 0, 8023, 8024, 5, 858, 0, 0, 8024, 8029, 5, 857, 0, 0, 8025, 8029, 5, 857, 0, 0, 8026, 8029, 5, 858, 0, 0, 8027, 8029, 5, 859, 0, 0, 8028, 8021, 1, 0, 0, 0, 8028, 8023, 1, 0, 0, 0, 8028, 8025, 1, 0, 0, 0, 8028, 8026, 1, 0, 0, 0, 8028, 8027, 1, 0, 0, 0, 8029, 815, 1, 0, 0, 0, 8030, 8038, 5, 11, 0, 0, 8031, 8032, 5, 863, 0, 0, 8032, 8038, 5, 863, 0, 0, 8033, 8038, 5, 196, 0, 0, 8034, 8038, 5, 124, 0, 0, 8035, 8036, 5, 862, 0, 0, 8036, 8038, 5, 862, 0, 0, 8037, 8030, 1, 0, 0, 0, 8037, 8031, 1, 0, 0, 0, 8037, 8033, 1, 0, 0, 0, 8037, 8034, 1, 0, 0, 0, 8037, 8035, 1, 0, 0, 0, 8038, 817, 1, 0, 0, 0, 8039, 8040, 5, 859, 0, 0, 8040, 8047, 5, 859, 0, 0, 8041, 8042, 5, 858, 0, 0, 8042, 8047, 5, 858, 0, 0, 8043, 8047, 5, 863, 0, 0, 8044, 8047, 5, 864, 0, 0, 8045, 8047, 5, 862, 0, 0, 8046, 8039, 1, 0, 0, 0, 8046, 8041, 1, 0, 0, 0, 8046, 8043, 1, 0, 0, 0, 8046, 8044, 1, 0, 0, 0, 8046, 8045, 1, 0, 0, 0, 8047, 819, 1, 0, 0, 0, 8048, 8049, 7, 152, 0, 0, 8049, 821, 1, 0, 0, 0, 8050, 8051, 5, 854, 0, 0, 8051, 8056, 5, 858, 0, 0, 8052, 8053, 5, 854, 0, 0, 8053, 8054, 5, 858, 0, 0, 8054, 8056, 5, 858, 0, 0, 8055, 8050, 1, 0, 0, 0, 8055, 8052, 1, 0, 0, 0, 8056, 823, 1, 0, 0, 0, 8057, 8058, 7, 153, 0, 0, 8058, 825, 1, 0, 0, 0, 8059, 8060, 7, 154, 0, 0, 8060, 827, 1, 0, 0, 0, 8061, 8062, 7, 155, 0, 0, 8062, 829, 1, 0, 0, 0, 8063, 8064, 7, 156, 0, 0, 8064, 831, 1, 0, 0, 0, 8065, 8066, 7, 157, 0, 0, 8066, 833, 1, 0, 0, 0, 8067, 8068, 7, 158, 0, 0, 8068, 835, 1, 0, 0, 0, 8069, 8070, 7, 159, 0, 0, 8070, 837, 1, 0, 0, 0, 1163, 841, 848, 851, 860, 904, 923, 934, 950, 955, 967, 1002, 1012, 1017, 1023, 1028, 1032, 1041, 1044, 1047, 1051, 1058, 1061, 1066, 1074, 1079, 1084, 1087, 1089, 1101, 1104, 1108, 1111, 1115, 1118, 1122, 1125, 1128, 1132, 1135, 1139, 1145, 1149, 1154, 1160, 1167, 1174, 1177, 1181, 1186, 1192, 1201, 1206, 1210, 1214, 1225, 1243, 1250, 1254, 1258, 1262, 1267, 1270, 1273, 1276, 1279, 1285, 1289, 1299, 1303, 1307, 1313, 1318, 1321, 1324, 1326, 1330, 1337, 1341, 1344, 1349, 1353, 1356, 1360, 1363, 1367, 1380, 1383, 1387, 1390, 1394, 1397, 1401, 1404, 1408, 1411, 1414, 1418, 1421, 1425, 1431, 1434, 1438, 1450, 1456, 1467, 1472, 1480, 1484, 1489, 1492, 1497, 1507, 1512, 1517, 1523, 1528, 1532, 1534, 1537, 1541, 1545, 1548, 1552, 1556, 1560, 1566, 1569, 1576, 1581, 1587, 1594, 1600, 1608, 1611, 1618, 1621, 1623, 1629, 1635, 1652, 1659, 1666, 1678, 1683, 1686, 1689, 1702, 1715, 1720, 1736, 1744, 1754, 1757, 1763, 1768, 1771, 1777, 1781, 1786, 1792, 1796, 1800, 1803, 1806, 1812, 1816, 1821, 1832, 1835, 1842, 1845, 1849, 1855, 1867, 1870, 1875, 1888, 1895, 1901, 1906, 1910, 1913, 1921, 1929, 1931, 1941, 1945, 1948, 1952, 1957, 1962, 1967, 1971, 1975, 1979, 1983, 1987, 1991, 1996, 2001, 2006, 2012, 2017, 2022, 2027, 2032, 2037, 2043, 2048, 2053, 2058, 2063, 2068, 2073, 2078, 2085, 2090, 2095, 2100, 2104, 2109, 2117, 2122, 2128, 2140, 2147, 2149, 2157, 2162, 2165, 2173, 2179, 2183, 2196, 2208, 2210, 2213, 2221, 2227, 2233, 2246, 2253, 2262, 2267, 2278, 2287, 2292, 2304, 2311, 2320, 2325, 2337, 2344, 2353, 2358, 2365, 2374, 2379, 2381, 2386, 2394, 2403, 2407, 2410, 2414, 2419, 2425, 2431, 2436, 2441, 2446, 2451, 2454, 2459, 2464, 2474, 2478, 2485, 2490, 2493, 2498, 2501, 2505, 2509, 2517, 2536, 2539, 2542, 2546, 2556, 2569, 2582, 2585, 2591, 2594, 2598, 2607, 2610, 2613, 2618, 2622, 2625, 2629, 2633, 2636, 2640, 2643, 2647, 2650, 2656, 2659, 2664, 2672, 2678, 2682, 2686, 2691, 2696, 2703, 2707, 2718, 2726, 2729, 2735, 2741, 2744, 2750, 2756, 2758, 2763, 2769, 2775, 2777, 2781, 2784, 2787, 2793, 2799, 2801, 2806, 2813, 2822, 2825, 2829, 2834, 2844, 2853, 2861, 2864, 2872, 2875, 2882, 2887, 2895, 2911, 2916, 2923, 2942, 2948, 2958, 2970, 2977, 2984, 2999, 3012, 3018, 3024, 3030, 3036, 3042, 3048, 3053, 3060, 3067, 3074, 3079, 3082, 3084, 3093, 3100, 3107, 3114, 3123, 3129, 3133, 3137, 3141, 3147, 3150, 3155, 3162, 3169, 3173, 3178, 3188, 3196, 3202, 3211, 3220, 3229, 3232, 3236, 3245, 3249, 3252, 3255, 3261, 3264, 3267, 3271, 3274, 3277, 3280, 3291, 3294, 3299, 3305, 3310, 3315, 3318, 3322, 3327, 3330, 3335, 3345, 3350, 3356, 3358, 3364, 3366, 3372, 3380, 3385, 3393, 3396, 3401, 3404, 3409, 3417, 3423, 3427, 3429, 3435, 3443, 3448, 3456, 3459, 3464, 3467, 3471, 3474, 3477, 3481, 3484, 3492, 3498, 3502, 3508, 3513, 3517, 3519, 3525, 3529, 3532, 3535, 3538, 3544, 3549, 3552, 3555, 3558, 3561, 3563, 3566, 3570, 3573, 3576, 3584, 3590, 3593, 3595, 3604, 3609, 3616, 3619, 3622, 3626, 3630, 3636, 3640, 3647, 3651, 3654, 3657, 3662, 3669, 3679, 3688, 3697, 3707, 3710, 3714, 3720, 3724, 3727, 3730, 3735, 3738, 3745, 3749, 3752, 3756, 3760, 3763, 3766, 3771, 3777, 3781, 3791, 3797, 3801, 3807, 3811, 3817, 3820, 3832, 3836, 3840, 3848, 3852, 3866, 3871, 3874, 3878, 3881, 3889, 3894, 3897, 3900, 3904, 3907, 3916, 3921, 3930, 3935, 3942, 3949, 3957, 3963, 3971, 3974, 3977, 3984, 3987, 3990, 3997, 4000, 4004, 4010, 4020, 4024, 4033, 4036, 4040, 4046, 4054, 4059, 4063, 4069, 4075, 4078, 4080, 4084, 4093, 4103, 4109, 4114, 4118, 4121, 4124, 4127, 4130, 4133, 4136, 4140, 4144, 4152, 4156, 4159, 4161, 4174, 4177, 4184, 4194, 4197, 4202, 4204, 4208, 4216, 4222, 4231, 4244, 4248, 4254, 4259, 4263, 4266, 4270, 4273, 4281, 4284, 4286, 4294, 4306, 4312, 4314, 4320, 4322, 4324, 4330, 4338, 4346, 4350, 4354, 4363, 4368, 4388, 4393, 4399, 4406, 4411, 4420, 4423, 4427, 4431, 4435, 4438, 4441, 4444, 4448, 4452, 4455, 4458, 4461, 4468, 4472, 4487, 4500, 4508, 4518, 4522, 4525, 4531, 4534, 4537, 4546, 4555, 4565, 4569, 4579, 4583, 4594, 4598, 4607, 4616, 4619, 4623, 4628, 4632, 4641, 4644, 4647, 4654, 4660, 4666, 4692, 4695, 4698, 4717, 4719, 4742, 4745, 4748, 4767, 4769, 4783, 4796, 4833, 4838, 4873, 4887, 4894, 4898, 4904, 4912, 4914, 4925, 4935, 4942, 4948, 4956, 4961, 4969, 4977, 4985, 4993, 4999, 5004, 5009, 5014, 5020, 5022, 5033, 5038, 5045, 5047, 5061, 5067, 5072, 5077, 5083, 5090, 5098, 5106, 5111, 5117, 5120, 5128, 5135, 5144, 5147, 5164, 5172, 5180, 5184, 5191, 5197, 5205, 5210, 5217, 5225, 5232, 5237, 5240, 5242, 5248, 5250, 5254, 5256, 5261, 5268, 5273, 5277, 5282, 5286, 5292, 5298, 5303, 5306, 5308, 5314, 5316, 5320, 5322, 5327, 5332, 5339, 5348, 5353, 5362, 5366, 5372, 5377, 5380, 5382, 5388, 5390, 5393, 5400, 5402, 5407, 5414, 5423, 5429, 5431, 5438, 5441, 5453, 5459, 5467, 5470, 5474, 5477, 5481, 5483, 5494, 5497, 5501, 5504, 5507, 5514, 5526, 5529, 5536, 5542, 5552, 5557, 5564, 5569, 5575, 5579, 5583, 5591, 5595, 5599, 5605, 5607, 5619, 5624, 5630, 5636, 5640, 5645, 5647, 5671, 5675, 5678, 5687, 5691, 5700, 5704, 5708, 5714, 5716, 5725, 5735, 5762, 5766, 5771, 5778, 5781, 5787, 5797, 5807, 5817, 5823, 5832, 5838, 5845, 5847, 5855, 5861, 5865, 5882, 5892, 5896, 5900, 5910, 5915, 5987, 6005, 6013, 6019, 6031, 6035, 6046, 6050, 6059, 6067, 6074, 6078, 6085, 6090, 6093, 6096, 6107, 6116, 6125, 6128, 6142, 6160, 6173, 6176, 6180, 6183, 6185, 6192, 6199, 6203, 6210, 6217, 6220, 6236, 6239, 6249, 6253, 6259, 6262, 6265, 6270, 6274, 6277, 6284, 6287, 6293, 6329, 6332, 6344, 6347, 6363, 6365, 6369, 6376, 6380, 6387, 6390, 6399, 6402, 6407, 6413, 6415, 6421, 6425, 6431, 6434, 6437, 6450, 6453, 6459, 6462, 6470, 6478, 6484, 6487, 6491, 6505, 6517, 6525, 6529, 6536, 6543, 6548, 6561, 6570, 6578, 6583, 6586, 6591, 6594, 6606, 6611, 6624, 6626, 6631, 6635, 6638, 6640, 6647, 6654, 6657, 6660, 6666, 6670, 6676, 6684, 6693, 6706, 6711, 6719, 6722, 6727, 6732, 6740, 6743, 6751, 6755, 6762, 6768, 6771, 6775, 6788, 6794, 6806, 6809, 6818, 6823, 6844, 6860, 6870, 6875, 6880, 6882, 6885, 6889, 6891, 6898, 6904, 6906, 6909, 6913, 6916, 6929, 6939, 6942, 6945, 6958, 6964, 6967, 6975, 6982, 7002, 7009, 7011, 7018, 7020, 7024, 7031, 7037, 7048, 7054, 7060, 7063, 7067, 7072, 7075, 7079, 7083, 7085, 7090, 7095, 7108, 7111, 7115, 7118, 7121, 7126, 7131, 7137, 7140, 7145, 7148, 7153, 7156, 7160, 7165, 7170, 7175, 7180, 7183, 7188, 7193, 7198, 7204, 7209, 7214, 7219, 7223, 7226, 7231, 7235, 7239, 7247, 7254, 7258, 7263, 7268, 7272, 7274, 7277, 7293, 7303, 7313, 7322, 7331, 7338, 7345, 7353, 7361, 7373, 7380, 7390, 7395, 7398, 7403, 7406, 7428, 7437, 7440, 7445, 7478, 7482, 7491, 7495, 7504, 7512, 7517, 7525, 7530, 7535, 7537, 7546, 7551, 7559, 7564, 7572, 7580, 7583, 7593, 7611, 7614, 7617, 7621, 7634, 7642, 7646, 7651, 7656, 7662, 7667, 7671, 7676, 7681, 7686, 7696, 7699, 7703, 7707, 7714, 7718, 7747, 7755, 7758, 7761, 7764, 7767, 7778, 7792, 7801, 7828, 7840, 7846, 7854, 7859, 7867, 7875, 7888, 7894, 7900, 7915, 7919, 7925, 7934, 7936, 7957, 7969, 7987, 8004, 8006, 8019, 8028, 8037, 8046, 8055] \ No newline at end of file diff --git a/src/lib/mysql/MySqlParser.ts b/src/lib/mysql/MySqlParser.ts index f9517e89..91a3913e 100644 --- a/src/lib/mysql/MySqlParser.ts +++ b/src/lib/mysql/MySqlParser.ts @@ -929,406 +929,408 @@ export class MySqlParser extends SQLParserBase { public static readonly RULE_createIndex = 14; public static readonly RULE_createLogfileGroup = 15; public static readonly RULE_createProcedure = 16; - public static readonly RULE_createRole = 17; - public static readonly RULE_createServer = 18; - public static readonly RULE_createTable = 19; - public static readonly RULE_createTablespaceInnodb = 20; - public static readonly RULE_createTablespaceNdb = 21; - public static readonly RULE_createTrigger = 22; - public static readonly RULE_withClause = 23; - public static readonly RULE_commonTableExpressions = 24; - public static readonly RULE_createView = 25; - public static readonly RULE_createDatabaseOption = 26; - public static readonly RULE_charSet = 27; - public static readonly RULE_currentUserExpression = 28; - public static readonly RULE_ownerStatement = 29; - public static readonly RULE_scheduleExpression = 30; - public static readonly RULE_timestampValue = 31; - public static readonly RULE_intervalExpr = 32; - public static readonly RULE_intervalType = 33; - public static readonly RULE_enableType = 34; - public static readonly RULE_indexType = 35; - public static readonly RULE_indexOption = 36; - public static readonly RULE_procedureParameter = 37; - public static readonly RULE_routineOption = 38; - public static readonly RULE_serverOption = 39; - public static readonly RULE_createDefinitions = 40; - public static readonly RULE_createDefinition = 41; - public static readonly RULE_checkConstraintDefinition = 42; - public static readonly RULE_constraintSymbol = 43; - public static readonly RULE_columnDefinition = 44; - public static readonly RULE_columnConstraint = 45; - public static readonly RULE_referenceDefinition = 46; - public static readonly RULE_referenceAction = 47; - public static readonly RULE_referenceControlType = 48; - public static readonly RULE_tableOption = 49; - public static readonly RULE_tableType = 50; - public static readonly RULE_tablespaceStorage = 51; - public static readonly RULE_partitionDefinitions = 52; - public static readonly RULE_partitionFunctionDefinition = 53; - public static readonly RULE_subpartitionFunctionDefinition = 54; - public static readonly RULE_partitionDefinition = 55; - public static readonly RULE_partitionDefinerAtom = 56; - public static readonly RULE_partitionDefinerVector = 57; - public static readonly RULE_subpartitionDefinition = 58; - public static readonly RULE_partitionOption = 59; - public static readonly RULE_alterDatabase = 60; - public static readonly RULE_alterEvent = 61; - public static readonly RULE_alterFunction = 62; - public static readonly RULE_alterInstance = 63; - public static readonly RULE_alterLogfileGroup = 64; - public static readonly RULE_alterProcedure = 65; - public static readonly RULE_alterServer = 66; - public static readonly RULE_alterTable = 67; - public static readonly RULE_alterTablespace = 68; - public static readonly RULE_alterView = 69; - public static readonly RULE_alterOption = 70; - public static readonly RULE_alterPartitionSpecification = 71; - public static readonly RULE_dropDatabase = 72; - public static readonly RULE_dropEvent = 73; - public static readonly RULE_dropIndex = 74; - public static readonly RULE_dropLogfileGroup = 75; - public static readonly RULE_dropProcedure = 76; - public static readonly RULE_dropFunction = 77; - public static readonly RULE_dropServer = 78; - public static readonly RULE_dropSpatial = 79; - public static readonly RULE_dropTable = 80; - public static readonly RULE_dropTablespace = 81; - public static readonly RULE_dropTrigger = 82; - public static readonly RULE_dropView = 83; - public static readonly RULE_dropRole = 84; - public static readonly RULE_setRole = 85; - public static readonly RULE_renameTable = 86; - public static readonly RULE_renameTableClause = 87; - public static readonly RULE_truncateTable = 88; - public static readonly RULE_callStatement = 89; - public static readonly RULE_deleteStatement = 90; - public static readonly RULE_doStatement = 91; - public static readonly RULE_handlerStatement = 92; - public static readonly RULE_insertStatement = 93; - public static readonly RULE_asRowAlias = 94; - public static readonly RULE_selectOrTableOrValues = 95; - public static readonly RULE_interSectStatement = 96; - public static readonly RULE_interSectQuery = 97; - public static readonly RULE_loadDataStatement = 98; - public static readonly RULE_loadXmlStatement = 99; - public static readonly RULE_parenthesizedQuery = 100; - public static readonly RULE_replaceStatement = 101; - public static readonly RULE_selectStatement = 102; - public static readonly RULE_setOperations = 103; - public static readonly RULE_queryExpressionBody = 104; - public static readonly RULE_queryItem = 105; - public static readonly RULE_queryPrimary = 106; - public static readonly RULE_updateStatement = 107; - public static readonly RULE_valuesStatement = 108; - public static readonly RULE_parenthesizedQueryExpression = 109; - public static readonly RULE_queryBlock = 110; - public static readonly RULE_replaceStatementValuesOrSelectOrTable = 111; - public static readonly RULE_rowValuesList = 112; - public static readonly RULE_setAssignmentList = 113; - public static readonly RULE_updatedElement = 114; - public static readonly RULE_assignmentField = 115; - public static readonly RULE_lockClause = 116; - public static readonly RULE_singleDeleteStatement = 117; - public static readonly RULE_multipleDeleteStatement = 118; - public static readonly RULE_handlerOpenStatement = 119; - public static readonly RULE_handlerReadIndexStatement = 120; - public static readonly RULE_handlerReadStatement = 121; - public static readonly RULE_handlerCloseStatement = 122; - public static readonly RULE_importTableStatement = 123; - public static readonly RULE_singleUpdateStatement = 124; - public static readonly RULE_multipleUpdateStatement = 125; - public static readonly RULE_orderByClause = 126; - public static readonly RULE_orderByExpression = 127; - public static readonly RULE_tableSources = 128; - public static readonly RULE_tableSource = 129; - public static readonly RULE_tableSourceItem = 130; - public static readonly RULE_fullColumnNames = 131; - public static readonly RULE_indexHint = 132; - public static readonly RULE_indexHintType = 133; - public static readonly RULE_joinPart = 134; - public static readonly RULE_joinSpec = 135; - public static readonly RULE_queryExpression = 136; - public static readonly RULE_querySpecification = 137; - public static readonly RULE_unionStatement = 138; - public static readonly RULE_lateralStatement = 139; - public static readonly RULE_jsonTable = 140; - public static readonly RULE_jsonColumnList = 141; - public static readonly RULE_jsonColumn = 142; - public static readonly RULE_jsonOnEmpty = 143; - public static readonly RULE_jsonOnError = 144; - public static readonly RULE_selectSpec = 145; - public static readonly RULE_selectElements = 146; - public static readonly RULE_selectElement = 147; - public static readonly RULE_intoClause = 148; - public static readonly RULE_selectFieldsInto = 149; - public static readonly RULE_selectLinesInto = 150; - public static readonly RULE_fromClause = 151; - public static readonly RULE_groupByClause = 152; - public static readonly RULE_havingClause = 153; - public static readonly RULE_windowClause = 154; - public static readonly RULE_groupByItem = 155; - public static readonly RULE_limitClause = 156; - public static readonly RULE_limitClauseAtom = 157; - public static readonly RULE_startTransaction = 158; - public static readonly RULE_beginWork = 159; - public static readonly RULE_commitWork = 160; - public static readonly RULE_rollbackWork = 161; - public static readonly RULE_savepointStatement = 162; - public static readonly RULE_rollbackStatement = 163; - public static readonly RULE_releaseStatement = 164; - public static readonly RULE_lockTables = 165; - public static readonly RULE_unlockTables = 166; - public static readonly RULE_setAutocommitStatement = 167; - public static readonly RULE_setTransactionStatement = 168; - public static readonly RULE_transactionMode = 169; - public static readonly RULE_lockTableElement = 170; - public static readonly RULE_lockAction = 171; - public static readonly RULE_transactionOption = 172; - public static readonly RULE_transactionLevel = 173; - public static readonly RULE_changeMaster = 174; - public static readonly RULE_changeReplicationFilter = 175; - public static readonly RULE_changeReplicationSource = 176; - public static readonly RULE_purgeBinaryLogs = 177; - public static readonly RULE_startSlaveOrReplica = 178; - public static readonly RULE_stopSlaveOrReplica = 179; - public static readonly RULE_startGroupReplication = 180; - public static readonly RULE_stopGroupReplication = 181; - public static readonly RULE_masterOption = 182; - public static readonly RULE_stringMasterOption = 183; - public static readonly RULE_decimalMasterOption = 184; - public static readonly RULE_boolMasterOption = 185; - public static readonly RULE_v8NewMasterOption = 186; - public static readonly RULE_replicationSourceOption = 187; - public static readonly RULE_stringSourceOption = 188; - public static readonly RULE_decimalSourceOption = 189; - public static readonly RULE_boolSourceOption = 190; - public static readonly RULE_otherSourceOption = 191; - public static readonly RULE_channelOption = 192; - public static readonly RULE_replicationFilter = 193; - public static readonly RULE_tablePair = 194; - public static readonly RULE_threadType = 195; - public static readonly RULE_untilOption = 196; - public static readonly RULE_connectionOptions = 197; - public static readonly RULE_gtuidSet = 198; - public static readonly RULE_xaStartTransaction = 199; - public static readonly RULE_xaEndTransaction = 200; - public static readonly RULE_xaPrepareStatement = 201; - public static readonly RULE_xaCommitWork = 202; - public static readonly RULE_xaRollbackWork = 203; - public static readonly RULE_xaRecoverWork = 204; - public static readonly RULE_prepareStatement = 205; - public static readonly RULE_executeStatement = 206; - public static readonly RULE_deallocatePrepare = 207; - public static readonly RULE_routineBody = 208; - public static readonly RULE_blockStatement = 209; - public static readonly RULE_caseStatement = 210; - public static readonly RULE_ifStatement = 211; - public static readonly RULE_iterateStatement = 212; - public static readonly RULE_leaveStatement = 213; - public static readonly RULE_loopStatement = 214; - public static readonly RULE_repeatStatement = 215; - public static readonly RULE_returnStatement = 216; - public static readonly RULE_whileStatement = 217; - public static readonly RULE_cursorStatement = 218; - public static readonly RULE_declareVariable = 219; - public static readonly RULE_declareCondition = 220; - public static readonly RULE_declareCursor = 221; - public static readonly RULE_declareHandler = 222; - public static readonly RULE_handlerConditionValue = 223; - public static readonly RULE_procedureSqlStatement = 224; - public static readonly RULE_caseAlternative = 225; - public static readonly RULE_elifAlternative = 226; - public static readonly RULE_alterUser = 227; - public static readonly RULE_createUser = 228; - public static readonly RULE_dropUser = 229; - public static readonly RULE_grantStatement = 230; - public static readonly RULE_roleOption = 231; - public static readonly RULE_grantProxy = 232; - public static readonly RULE_alterResourceGroup = 233; - public static readonly RULE_createResourceGroup = 234; - public static readonly RULE_dropResourceGroup = 235; - public static readonly RULE_setResourceGroup = 236; - public static readonly RULE_resourceGroupVcpuSpec = 237; - public static readonly RULE_renameUser = 238; - public static readonly RULE_revokeStatement = 239; - public static readonly RULE_ignoreUnknownUser = 240; - public static readonly RULE_privilegeObjectType = 241; - public static readonly RULE_setPasswordStatement = 242; - public static readonly RULE_userSpecification = 243; - public static readonly RULE_alterUserAuthOption = 244; - public static readonly RULE_createUserAuthOption = 245; - public static readonly RULE_createUserInitialAuthOption = 246; - public static readonly RULE_userAuthOption = 247; - public static readonly RULE_authOptionClause = 248; - public static readonly RULE_authenticationRule = 249; - public static readonly RULE_tlsOption = 250; - public static readonly RULE_userResourceOption = 251; - public static readonly RULE_userPasswordOption = 252; - public static readonly RULE_userLockOption = 253; - public static readonly RULE_factorAuthOption = 254; - public static readonly RULE_registrationOption = 255; - public static readonly RULE_factor = 256; - public static readonly RULE_privelegeClause = 257; - public static readonly RULE_privilege = 258; - public static readonly RULE_privilegeLevel = 259; - public static readonly RULE_renameUserClause = 260; - public static readonly RULE_analyzeTable = 261; - public static readonly RULE_checkTable = 262; - public static readonly RULE_checksumTable = 263; - public static readonly RULE_optimizeTable = 264; - public static readonly RULE_repairTable = 265; - public static readonly RULE_tableActionOption = 266; - public static readonly RULE_checkTableOption = 267; - public static readonly RULE_createFunction = 268; - public static readonly RULE_installComponent = 269; - public static readonly RULE_variableExpr = 270; - public static readonly RULE_uninstallComponent = 271; - public static readonly RULE_installPlugin = 272; - public static readonly RULE_uninstallPlugin = 273; - public static readonly RULE_cloneStatement = 274; - public static readonly RULE_setStatement = 275; - public static readonly RULE_showStatement = 276; - public static readonly RULE_variableClause = 277; - public static readonly RULE_showCommonEntity = 278; - public static readonly RULE_showFilter = 279; - public static readonly RULE_showGlobalInfoClause = 280; - public static readonly RULE_showSchemaEntity = 281; - public static readonly RULE_showProfileType = 282; - public static readonly RULE_binlogStatement = 283; - public static readonly RULE_cacheIndexStatement = 284; - public static readonly RULE_flushStatement = 285; - public static readonly RULE_killStatement = 286; - public static readonly RULE_loadIndexIntoCache = 287; - public static readonly RULE_resetStatement = 288; - public static readonly RULE_resetOption = 289; - public static readonly RULE_resetPersist = 290; - public static readonly RULE_resetAllChannel = 291; - public static readonly RULE_reStartStatement = 292; - public static readonly RULE_shutdownStatement = 293; - public static readonly RULE_tableIndex = 294; - public static readonly RULE_flushOption = 295; - public static readonly RULE_flushTableOption = 296; - public static readonly RULE_loadedTableIndexes = 297; - public static readonly RULE_simpleDescribeStatement = 298; - public static readonly RULE_fullDescribeStatement = 299; - public static readonly RULE_analyzeDescribeStatement = 300; - public static readonly RULE_helpStatement = 301; - public static readonly RULE_useStatement = 302; - public static readonly RULE_signalStatement = 303; - public static readonly RULE_resignalStatement = 304; - public static readonly RULE_signalConditionInformation = 305; - public static readonly RULE_withStatement = 306; - public static readonly RULE_tableStatement = 307; - public static readonly RULE_diagnosticsStatement = 308; - public static readonly RULE_diagnosticsConditionInformationName = 309; - public static readonly RULE_describeObjectClause = 310; - public static readonly RULE_databaseNameCreate = 311; - public static readonly RULE_databaseName = 312; - public static readonly RULE_functionNameCreate = 313; - public static readonly RULE_functionName = 314; - public static readonly RULE_viewNameCreate = 315; - public static readonly RULE_viewName = 316; - public static readonly RULE_indexNameCreate = 317; - public static readonly RULE_indexNames = 318; - public static readonly RULE_indexName = 319; - public static readonly RULE_groupNameCreate = 320; - public static readonly RULE_groupName = 321; - public static readonly RULE_tableNameCreate = 322; - public static readonly RULE_tableNames = 323; - public static readonly RULE_tableName = 324; - public static readonly RULE_userOrRoleNames = 325; - public static readonly RULE_userOrRoleName = 326; - public static readonly RULE_columnNameCreate = 327; - public static readonly RULE_columnNames = 328; - public static readonly RULE_columnName = 329; - public static readonly RULE_tablespaceNameCreate = 330; - public static readonly RULE_tablespaceName = 331; - public static readonly RULE_partitionNameCreate = 332; - public static readonly RULE_partitionNames = 333; - public static readonly RULE_partitionName = 334; - public static readonly RULE_indexColumnName = 335; - public static readonly RULE_userHostPort = 336; - public static readonly RULE_userAtHost = 337; - public static readonly RULE_simpleUserName = 338; - public static readonly RULE_hostName = 339; - public static readonly RULE_userName = 340; - public static readonly RULE_mysqlVariable = 341; - public static readonly RULE_charsetName = 342; - public static readonly RULE_collationName = 343; - public static readonly RULE_engineName = 344; - public static readonly RULE_engineNameBase = 345; - public static readonly RULE_uuidSet = 346; - public static readonly RULE_xid = 347; - public static readonly RULE_xuidStringId = 348; - public static readonly RULE_fullId = 349; - public static readonly RULE_uidList = 350; - public static readonly RULE_uid = 351; - public static readonly RULE_simpleId = 352; - public static readonly RULE_dottedId = 353; - public static readonly RULE_decimalLiteral = 354; - public static readonly RULE_fileSizeLiteral = 355; - public static readonly RULE_stringLiteral = 356; - public static readonly RULE_booleanLiteral = 357; - public static readonly RULE_hexadecimalLiteral = 358; - public static readonly RULE_nullNotnull = 359; - public static readonly RULE_constant = 360; - public static readonly RULE_dataType = 361; - public static readonly RULE_collectionOptions = 362; - public static readonly RULE_convertedDataType = 363; - public static readonly RULE_lengthOneDimension = 364; - public static readonly RULE_lengthTwoDimension = 365; - public static readonly RULE_lengthTwoOptionalDimension = 366; - public static readonly RULE_indexColumnNames = 367; - public static readonly RULE_expressions = 368; - public static readonly RULE_valuesOrValueList = 369; - public static readonly RULE_expressionsWithDefaults = 370; - public static readonly RULE_expressionOrDefault = 371; - public static readonly RULE_constants = 372; - public static readonly RULE_simpleStrings = 373; - public static readonly RULE_userVariables = 374; - public static readonly RULE_defaultValue = 375; - public static readonly RULE_currentTimestamp = 376; - public static readonly RULE_ifExists = 377; - public static readonly RULE_ifNotExists = 378; - public static readonly RULE_orReplace = 379; - public static readonly RULE_functionCall = 380; - public static readonly RULE_specificFunction = 381; - public static readonly RULE_caseFuncAlternative = 382; - public static readonly RULE_levelsInWeightString = 383; - public static readonly RULE_levelInWeightListElement = 384; - public static readonly RULE_aggregateWindowedFunction = 385; - public static readonly RULE_nonAggregateWindowedFunction = 386; - public static readonly RULE_overClause = 387; - public static readonly RULE_windowSpec = 388; - public static readonly RULE_windowName = 389; - public static readonly RULE_frameClause = 390; - public static readonly RULE_frameUnits = 391; - public static readonly RULE_frameExtent = 392; - public static readonly RULE_frameBetween = 393; - public static readonly RULE_frameRange = 394; - public static readonly RULE_partitionClause = 395; - public static readonly RULE_scalarFunctionName = 396; - public static readonly RULE_passwordFunctionClause = 397; - public static readonly RULE_functionArgs = 398; - public static readonly RULE_functionArg = 399; - public static readonly RULE_expression = 400; - public static readonly RULE_predicate = 401; - public static readonly RULE_expressionAtom = 402; - public static readonly RULE_unaryOperator = 403; - public static readonly RULE_comparisonOperator = 404; - public static readonly RULE_comparisonBase = 405; - public static readonly RULE_logicalOperator = 406; - public static readonly RULE_bitOperator = 407; - public static readonly RULE_mathOperator = 408; - public static readonly RULE_jsonOperator = 409; - public static readonly RULE_charsetNameBase = 410; - public static readonly RULE_transactionLevelBase = 411; - public static readonly RULE_privilegesBase = 412; - public static readonly RULE_intervalTypeBase = 413; - public static readonly RULE_dataTypeBase = 414; - public static readonly RULE_keywordsCanBeId = 415; - public static readonly RULE_functionNameBase = 416; + public static readonly RULE_createFunction = 17; + public static readonly RULE_createFunctionLoadable = 18; + public static readonly RULE_createRole = 19; + public static readonly RULE_createServer = 20; + public static readonly RULE_createTable = 21; + public static readonly RULE_createTablespaceInnodb = 22; + public static readonly RULE_createTablespaceNdb = 23; + public static readonly RULE_createTrigger = 24; + public static readonly RULE_withClause = 25; + public static readonly RULE_commonTableExpressions = 26; + public static readonly RULE_createView = 27; + public static readonly RULE_createDatabaseOption = 28; + public static readonly RULE_charSet = 29; + public static readonly RULE_currentUserExpression = 30; + public static readonly RULE_ownerStatement = 31; + public static readonly RULE_scheduleExpression = 32; + public static readonly RULE_timestampValue = 33; + public static readonly RULE_intervalExpr = 34; + public static readonly RULE_intervalType = 35; + public static readonly RULE_enableType = 36; + public static readonly RULE_indexType = 37; + public static readonly RULE_indexOption = 38; + public static readonly RULE_procedureParameter = 39; + public static readonly RULE_functionParameter = 40; + public static readonly RULE_routineOption = 41; + public static readonly RULE_serverOption = 42; + public static readonly RULE_createDefinitions = 43; + public static readonly RULE_createDefinition = 44; + public static readonly RULE_checkConstraintDefinition = 45; + public static readonly RULE_constraintSymbol = 46; + public static readonly RULE_columnDefinition = 47; + public static readonly RULE_columnConstraint = 48; + public static readonly RULE_referenceDefinition = 49; + public static readonly RULE_referenceAction = 50; + public static readonly RULE_referenceControlType = 51; + public static readonly RULE_tableOption = 52; + public static readonly RULE_tableType = 53; + public static readonly RULE_tablespaceStorage = 54; + public static readonly RULE_partitionDefinitions = 55; + public static readonly RULE_partitionFunctionDefinition = 56; + public static readonly RULE_subpartitionFunctionDefinition = 57; + public static readonly RULE_partitionDefinition = 58; + public static readonly RULE_partitionDefinerAtom = 59; + public static readonly RULE_partitionDefinerVector = 60; + public static readonly RULE_subpartitionDefinition = 61; + public static readonly RULE_partitionOption = 62; + public static readonly RULE_alterDatabase = 63; + public static readonly RULE_alterEvent = 64; + public static readonly RULE_alterFunction = 65; + public static readonly RULE_alterInstance = 66; + public static readonly RULE_alterLogfileGroup = 67; + public static readonly RULE_alterProcedure = 68; + public static readonly RULE_alterServer = 69; + public static readonly RULE_alterTable = 70; + public static readonly RULE_alterTablespace = 71; + public static readonly RULE_alterView = 72; + public static readonly RULE_alterOption = 73; + public static readonly RULE_alterPartitionSpecification = 74; + public static readonly RULE_dropDatabase = 75; + public static readonly RULE_dropEvent = 76; + public static readonly RULE_dropIndex = 77; + public static readonly RULE_dropLogfileGroup = 78; + public static readonly RULE_dropProcedure = 79; + public static readonly RULE_dropFunction = 80; + public static readonly RULE_dropServer = 81; + public static readonly RULE_dropSpatial = 82; + public static readonly RULE_dropTable = 83; + public static readonly RULE_dropTablespace = 84; + public static readonly RULE_dropTrigger = 85; + public static readonly RULE_dropView = 86; + public static readonly RULE_dropRole = 87; + public static readonly RULE_setRole = 88; + public static readonly RULE_renameTable = 89; + public static readonly RULE_renameTableClause = 90; + public static readonly RULE_truncateTable = 91; + public static readonly RULE_callStatement = 92; + public static readonly RULE_deleteStatement = 93; + public static readonly RULE_doStatement = 94; + public static readonly RULE_handlerStatement = 95; + public static readonly RULE_insertStatement = 96; + public static readonly RULE_asRowAlias = 97; + public static readonly RULE_selectOrTableOrValues = 98; + public static readonly RULE_interSectStatement = 99; + public static readonly RULE_interSectQuery = 100; + public static readonly RULE_loadDataStatement = 101; + public static readonly RULE_loadXmlStatement = 102; + public static readonly RULE_parenthesizedQuery = 103; + public static readonly RULE_replaceStatement = 104; + public static readonly RULE_selectStatement = 105; + public static readonly RULE_setOperations = 106; + public static readonly RULE_queryExpressionBody = 107; + public static readonly RULE_queryItem = 108; + public static readonly RULE_queryPrimary = 109; + public static readonly RULE_updateStatement = 110; + public static readonly RULE_valuesStatement = 111; + public static readonly RULE_parenthesizedQueryExpression = 112; + public static readonly RULE_queryBlock = 113; + public static readonly RULE_replaceStatementValuesOrSelectOrTable = 114; + public static readonly RULE_rowValuesList = 115; + public static readonly RULE_setAssignmentList = 116; + public static readonly RULE_updatedElement = 117; + public static readonly RULE_assignmentField = 118; + public static readonly RULE_lockClause = 119; + public static readonly RULE_singleDeleteStatement = 120; + public static readonly RULE_multipleDeleteStatement = 121; + public static readonly RULE_handlerOpenStatement = 122; + public static readonly RULE_handlerReadIndexStatement = 123; + public static readonly RULE_handlerReadStatement = 124; + public static readonly RULE_handlerCloseStatement = 125; + public static readonly RULE_importTableStatement = 126; + public static readonly RULE_singleUpdateStatement = 127; + public static readonly RULE_multipleUpdateStatement = 128; + public static readonly RULE_orderByClause = 129; + public static readonly RULE_orderByExpression = 130; + public static readonly RULE_tableSources = 131; + public static readonly RULE_tableSource = 132; + public static readonly RULE_tableSourceItem = 133; + public static readonly RULE_fullColumnNames = 134; + public static readonly RULE_indexHint = 135; + public static readonly RULE_indexHintType = 136; + public static readonly RULE_joinPart = 137; + public static readonly RULE_joinSpec = 138; + public static readonly RULE_queryExpression = 139; + public static readonly RULE_querySpecification = 140; + public static readonly RULE_unionStatement = 141; + public static readonly RULE_lateralStatement = 142; + public static readonly RULE_jsonTable = 143; + public static readonly RULE_jsonColumnList = 144; + public static readonly RULE_jsonColumn = 145; + public static readonly RULE_jsonOnEmpty = 146; + public static readonly RULE_jsonOnError = 147; + public static readonly RULE_selectSpec = 148; + public static readonly RULE_selectElements = 149; + public static readonly RULE_selectElement = 150; + public static readonly RULE_intoClause = 151; + public static readonly RULE_selectFieldsInto = 152; + public static readonly RULE_selectLinesInto = 153; + public static readonly RULE_fromClause = 154; + public static readonly RULE_groupByClause = 155; + public static readonly RULE_havingClause = 156; + public static readonly RULE_windowClause = 157; + public static readonly RULE_groupByItem = 158; + public static readonly RULE_limitClause = 159; + public static readonly RULE_limitClauseAtom = 160; + public static readonly RULE_startTransaction = 161; + public static readonly RULE_beginWork = 162; + public static readonly RULE_commitWork = 163; + public static readonly RULE_rollbackWork = 164; + public static readonly RULE_savepointStatement = 165; + public static readonly RULE_rollbackStatement = 166; + public static readonly RULE_releaseStatement = 167; + public static readonly RULE_lockTables = 168; + public static readonly RULE_unlockTables = 169; + public static readonly RULE_setAutocommitStatement = 170; + public static readonly RULE_setTransactionStatement = 171; + public static readonly RULE_transactionMode = 172; + public static readonly RULE_lockTableElement = 173; + public static readonly RULE_lockAction = 174; + public static readonly RULE_transactionOption = 175; + public static readonly RULE_transactionLevel = 176; + public static readonly RULE_changeMaster = 177; + public static readonly RULE_changeReplicationFilter = 178; + public static readonly RULE_changeReplicationSource = 179; + public static readonly RULE_purgeBinaryLogs = 180; + public static readonly RULE_startSlaveOrReplica = 181; + public static readonly RULE_stopSlaveOrReplica = 182; + public static readonly RULE_startGroupReplication = 183; + public static readonly RULE_stopGroupReplication = 184; + public static readonly RULE_masterOption = 185; + public static readonly RULE_stringMasterOption = 186; + public static readonly RULE_decimalMasterOption = 187; + public static readonly RULE_boolMasterOption = 188; + public static readonly RULE_v8NewMasterOption = 189; + public static readonly RULE_replicationSourceOption = 190; + public static readonly RULE_stringSourceOption = 191; + public static readonly RULE_decimalSourceOption = 192; + public static readonly RULE_boolSourceOption = 193; + public static readonly RULE_otherSourceOption = 194; + public static readonly RULE_channelOption = 195; + public static readonly RULE_replicationFilter = 196; + public static readonly RULE_tablePair = 197; + public static readonly RULE_threadType = 198; + public static readonly RULE_untilOption = 199; + public static readonly RULE_connectionOptions = 200; + public static readonly RULE_gtuidSet = 201; + public static readonly RULE_xaStartTransaction = 202; + public static readonly RULE_xaEndTransaction = 203; + public static readonly RULE_xaPrepareStatement = 204; + public static readonly RULE_xaCommitWork = 205; + public static readonly RULE_xaRollbackWork = 206; + public static readonly RULE_xaRecoverWork = 207; + public static readonly RULE_prepareStatement = 208; + public static readonly RULE_executeStatement = 209; + public static readonly RULE_deallocatePrepare = 210; + public static readonly RULE_routineBody = 211; + public static readonly RULE_blockStatement = 212; + public static readonly RULE_caseStatement = 213; + public static readonly RULE_ifStatement = 214; + public static readonly RULE_iterateStatement = 215; + public static readonly RULE_leaveStatement = 216; + public static readonly RULE_loopStatement = 217; + public static readonly RULE_repeatStatement = 218; + public static readonly RULE_returnStatement = 219; + public static readonly RULE_whileStatement = 220; + public static readonly RULE_cursorStatement = 221; + public static readonly RULE_declareVariable = 222; + public static readonly RULE_declareCondition = 223; + public static readonly RULE_declareCursor = 224; + public static readonly RULE_declareHandler = 225; + public static readonly RULE_handlerConditionValue = 226; + public static readonly RULE_procedureSqlStatement = 227; + public static readonly RULE_caseAlternative = 228; + public static readonly RULE_elifAlternative = 229; + public static readonly RULE_alterUser = 230; + public static readonly RULE_createUser = 231; + public static readonly RULE_dropUser = 232; + public static readonly RULE_grantStatement = 233; + public static readonly RULE_roleOption = 234; + public static readonly RULE_grantProxy = 235; + public static readonly RULE_alterResourceGroup = 236; + public static readonly RULE_createResourceGroup = 237; + public static readonly RULE_dropResourceGroup = 238; + public static readonly RULE_setResourceGroup = 239; + public static readonly RULE_resourceGroupVcpuSpec = 240; + public static readonly RULE_renameUser = 241; + public static readonly RULE_revokeStatement = 242; + public static readonly RULE_ignoreUnknownUser = 243; + public static readonly RULE_privilegeObjectType = 244; + public static readonly RULE_setPasswordStatement = 245; + public static readonly RULE_userSpecification = 246; + public static readonly RULE_alterUserAuthOption = 247; + public static readonly RULE_createUserAuthOption = 248; + public static readonly RULE_createUserInitialAuthOption = 249; + public static readonly RULE_userAuthOption = 250; + public static readonly RULE_authOptionClause = 251; + public static readonly RULE_authenticationRule = 252; + public static readonly RULE_tlsOption = 253; + public static readonly RULE_userResourceOption = 254; + public static readonly RULE_userPasswordOption = 255; + public static readonly RULE_userLockOption = 256; + public static readonly RULE_factorAuthOption = 257; + public static readonly RULE_registrationOption = 258; + public static readonly RULE_factor = 259; + public static readonly RULE_privelegeClause = 260; + public static readonly RULE_privilege = 261; + public static readonly RULE_privilegeLevel = 262; + public static readonly RULE_renameUserClause = 263; + public static readonly RULE_analyzeTable = 264; + public static readonly RULE_checkTable = 265; + public static readonly RULE_checksumTable = 266; + public static readonly RULE_optimizeTable = 267; + public static readonly RULE_repairTable = 268; + public static readonly RULE_tableActionOption = 269; + public static readonly RULE_checkTableOption = 270; + public static readonly RULE_installComponent = 271; + public static readonly RULE_variableExpr = 272; + public static readonly RULE_uninstallComponent = 273; + public static readonly RULE_installPlugin = 274; + public static readonly RULE_uninstallPlugin = 275; + public static readonly RULE_cloneStatement = 276; + public static readonly RULE_setStatement = 277; + public static readonly RULE_showStatement = 278; + public static readonly RULE_variableClause = 279; + public static readonly RULE_showCommonEntity = 280; + public static readonly RULE_showFilter = 281; + public static readonly RULE_showGlobalInfoClause = 282; + public static readonly RULE_showSchemaEntity = 283; + public static readonly RULE_showProfileType = 284; + public static readonly RULE_binlogStatement = 285; + public static readonly RULE_cacheIndexStatement = 286; + public static readonly RULE_flushStatement = 287; + public static readonly RULE_killStatement = 288; + public static readonly RULE_loadIndexIntoCache = 289; + public static readonly RULE_resetStatement = 290; + public static readonly RULE_resetOption = 291; + public static readonly RULE_resetPersist = 292; + public static readonly RULE_resetAllChannel = 293; + public static readonly RULE_reStartStatement = 294; + public static readonly RULE_shutdownStatement = 295; + public static readonly RULE_tableIndex = 296; + public static readonly RULE_flushOption = 297; + public static readonly RULE_flushTableOption = 298; + public static readonly RULE_loadedTableIndexes = 299; + public static readonly RULE_simpleDescribeStatement = 300; + public static readonly RULE_fullDescribeStatement = 301; + public static readonly RULE_analyzeDescribeStatement = 302; + public static readonly RULE_helpStatement = 303; + public static readonly RULE_useStatement = 304; + public static readonly RULE_signalStatement = 305; + public static readonly RULE_resignalStatement = 306; + public static readonly RULE_signalConditionInformation = 307; + public static readonly RULE_withStatement = 308; + public static readonly RULE_tableStatement = 309; + public static readonly RULE_diagnosticsStatement = 310; + public static readonly RULE_diagnosticsConditionInformationName = 311; + public static readonly RULE_describeObjectClause = 312; + public static readonly RULE_databaseNameCreate = 313; + public static readonly RULE_databaseName = 314; + public static readonly RULE_functionNameCreate = 315; + public static readonly RULE_functionName = 316; + public static readonly RULE_viewNameCreate = 317; + public static readonly RULE_viewName = 318; + public static readonly RULE_indexNameCreate = 319; + public static readonly RULE_indexNames = 320; + public static readonly RULE_indexName = 321; + public static readonly RULE_groupNameCreate = 322; + public static readonly RULE_groupName = 323; + public static readonly RULE_tableNameCreate = 324; + public static readonly RULE_tableNames = 325; + public static readonly RULE_tableName = 326; + public static readonly RULE_userOrRoleNames = 327; + public static readonly RULE_userOrRoleName = 328; + public static readonly RULE_columnNameCreate = 329; + public static readonly RULE_columnNames = 330; + public static readonly RULE_columnName = 331; + public static readonly RULE_tablespaceNameCreate = 332; + public static readonly RULE_tablespaceName = 333; + public static readonly RULE_partitionNameCreate = 334; + public static readonly RULE_partitionNames = 335; + public static readonly RULE_partitionName = 336; + public static readonly RULE_indexColumnName = 337; + public static readonly RULE_userHostPort = 338; + public static readonly RULE_userAtHost = 339; + public static readonly RULE_simpleUserName = 340; + public static readonly RULE_hostName = 341; + public static readonly RULE_userName = 342; + public static readonly RULE_mysqlVariable = 343; + public static readonly RULE_charsetName = 344; + public static readonly RULE_collationName = 345; + public static readonly RULE_engineName = 346; + public static readonly RULE_engineNameBase = 347; + public static readonly RULE_uuidSet = 348; + public static readonly RULE_xid = 349; + public static readonly RULE_xuidStringId = 350; + public static readonly RULE_fullId = 351; + public static readonly RULE_uidList = 352; + public static readonly RULE_uid = 353; + public static readonly RULE_simpleId = 354; + public static readonly RULE_dottedId = 355; + public static readonly RULE_decimalLiteral = 356; + public static readonly RULE_fileSizeLiteral = 357; + public static readonly RULE_stringLiteral = 358; + public static readonly RULE_booleanLiteral = 359; + public static readonly RULE_hexadecimalLiteral = 360; + public static readonly RULE_nullNotnull = 361; + public static readonly RULE_constant = 362; + public static readonly RULE_dataType = 363; + public static readonly RULE_collectionOptions = 364; + public static readonly RULE_convertedDataType = 365; + public static readonly RULE_lengthOneDimension = 366; + public static readonly RULE_lengthTwoDimension = 367; + public static readonly RULE_lengthTwoOptionalDimension = 368; + public static readonly RULE_indexColumnNames = 369; + public static readonly RULE_expressions = 370; + public static readonly RULE_valuesOrValueList = 371; + public static readonly RULE_expressionsWithDefaults = 372; + public static readonly RULE_expressionOrDefault = 373; + public static readonly RULE_constants = 374; + public static readonly RULE_simpleStrings = 375; + public static readonly RULE_userVariables = 376; + public static readonly RULE_defaultValue = 377; + public static readonly RULE_currentTimestamp = 378; + public static readonly RULE_ifExists = 379; + public static readonly RULE_ifNotExists = 380; + public static readonly RULE_orReplace = 381; + public static readonly RULE_functionCall = 382; + public static readonly RULE_specificFunction = 383; + public static readonly RULE_caseFuncAlternative = 384; + public static readonly RULE_levelsInWeightString = 385; + public static readonly RULE_levelInWeightListElement = 386; + public static readonly RULE_aggregateWindowedFunction = 387; + public static readonly RULE_nonAggregateWindowedFunction = 388; + public static readonly RULE_overClause = 389; + public static readonly RULE_windowSpec = 390; + public static readonly RULE_windowName = 391; + public static readonly RULE_frameClause = 392; + public static readonly RULE_frameUnits = 393; + public static readonly RULE_frameExtent = 394; + public static readonly RULE_frameBetween = 395; + public static readonly RULE_frameRange = 396; + public static readonly RULE_partitionClause = 397; + public static readonly RULE_scalarFunctionName = 398; + public static readonly RULE_passwordFunctionClause = 399; + public static readonly RULE_functionArgs = 400; + public static readonly RULE_functionArg = 401; + public static readonly RULE_expression = 402; + public static readonly RULE_predicate = 403; + public static readonly RULE_expressionAtom = 404; + public static readonly RULE_unaryOperator = 405; + public static readonly RULE_comparisonOperator = 406; + public static readonly RULE_comparisonBase = 407; + public static readonly RULE_logicalOperator = 408; + public static readonly RULE_bitOperator = 409; + public static readonly RULE_mathOperator = 410; + public static readonly RULE_jsonOperator = 411; + public static readonly RULE_charsetNameBase = 412; + public static readonly RULE_transactionLevelBase = 413; + public static readonly RULE_privilegesBase = 414; + public static readonly RULE_intervalTypeBase = 415; + public static readonly RULE_dataTypeBase = 416; + public static readonly RULE_keywordsCanBeId = 417; + public static readonly RULE_functionNameBase = 418; public static readonly literalNames = [ null, null, null, null, null, "'ACTIVE'", "'ADD'", "'ALL'", "'ALTER'", @@ -1713,17 +1715,17 @@ export class MySqlParser extends SQLParserBase { "ddlStatement", "dmlStatement", "transactionStatement", "replicationStatement", "preparedStatement", "compoundStatement", "administrationStatement", "utilityStatement", "createDatabase", "createEvent", "createIndex", - "createLogfileGroup", "createProcedure", "createRole", "createServer", - "createTable", "createTablespaceInnodb", "createTablespaceNdb", - "createTrigger", "withClause", "commonTableExpressions", "createView", - "createDatabaseOption", "charSet", "currentUserExpression", "ownerStatement", - "scheduleExpression", "timestampValue", "intervalExpr", "intervalType", - "enableType", "indexType", "indexOption", "procedureParameter", - "routineOption", "serverOption", "createDefinitions", "createDefinition", - "checkConstraintDefinition", "constraintSymbol", "columnDefinition", - "columnConstraint", "referenceDefinition", "referenceAction", "referenceControlType", - "tableOption", "tableType", "tablespaceStorage", "partitionDefinitions", - "partitionFunctionDefinition", "subpartitionFunctionDefinition", + "createLogfileGroup", "createProcedure", "createFunction", "createFunctionLoadable", + "createRole", "createServer", "createTable", "createTablespaceInnodb", + "createTablespaceNdb", "createTrigger", "withClause", "commonTableExpressions", + "createView", "createDatabaseOption", "charSet", "currentUserExpression", + "ownerStatement", "scheduleExpression", "timestampValue", "intervalExpr", + "intervalType", "enableType", "indexType", "indexOption", "procedureParameter", + "functionParameter", "routineOption", "serverOption", "createDefinitions", + "createDefinition", "checkConstraintDefinition", "constraintSymbol", + "columnDefinition", "columnConstraint", "referenceDefinition", "referenceAction", + "referenceControlType", "tableOption", "tableType", "tablespaceStorage", + "partitionDefinitions", "partitionFunctionDefinition", "subpartitionFunctionDefinition", "partitionDefinition", "partitionDefinerAtom", "partitionDefinerVector", "subpartitionDefinition", "partitionOption", "alterDatabase", "alterEvent", "alterFunction", "alterInstance", "alterLogfileGroup", "alterProcedure", @@ -1779,44 +1781,43 @@ export class MySqlParser extends SQLParserBase { "userLockOption", "factorAuthOption", "registrationOption", "factor", "privelegeClause", "privilege", "privilegeLevel", "renameUserClause", "analyzeTable", "checkTable", "checksumTable", "optimizeTable", - "repairTable", "tableActionOption", "checkTableOption", "createFunction", - "installComponent", "variableExpr", "uninstallComponent", "installPlugin", - "uninstallPlugin", "cloneStatement", "setStatement", "showStatement", - "variableClause", "showCommonEntity", "showFilter", "showGlobalInfoClause", - "showSchemaEntity", "showProfileType", "binlogStatement", "cacheIndexStatement", - "flushStatement", "killStatement", "loadIndexIntoCache", "resetStatement", - "resetOption", "resetPersist", "resetAllChannel", "reStartStatement", - "shutdownStatement", "tableIndex", "flushOption", "flushTableOption", - "loadedTableIndexes", "simpleDescribeStatement", "fullDescribeStatement", - "analyzeDescribeStatement", "helpStatement", "useStatement", "signalStatement", - "resignalStatement", "signalConditionInformation", "withStatement", - "tableStatement", "diagnosticsStatement", "diagnosticsConditionInformationName", - "describeObjectClause", "databaseNameCreate", "databaseName", "functionNameCreate", - "functionName", "viewNameCreate", "viewName", "indexNameCreate", - "indexNames", "indexName", "groupNameCreate", "groupName", "tableNameCreate", - "tableNames", "tableName", "userOrRoleNames", "userOrRoleName", - "columnNameCreate", "columnNames", "columnName", "tablespaceNameCreate", - "tablespaceName", "partitionNameCreate", "partitionNames", "partitionName", - "indexColumnName", "userHostPort", "userAtHost", "simpleUserName", - "hostName", "userName", "mysqlVariable", "charsetName", "collationName", - "engineName", "engineNameBase", "uuidSet", "xid", "xuidStringId", - "fullId", "uidList", "uid", "simpleId", "dottedId", "decimalLiteral", - "fileSizeLiteral", "stringLiteral", "booleanLiteral", "hexadecimalLiteral", - "nullNotnull", "constant", "dataType", "collectionOptions", "convertedDataType", - "lengthOneDimension", "lengthTwoDimension", "lengthTwoOptionalDimension", - "indexColumnNames", "expressions", "valuesOrValueList", "expressionsWithDefaults", - "expressionOrDefault", "constants", "simpleStrings", "userVariables", - "defaultValue", "currentTimestamp", "ifExists", "ifNotExists", "orReplace", - "functionCall", "specificFunction", "caseFuncAlternative", "levelsInWeightString", - "levelInWeightListElement", "aggregateWindowedFunction", "nonAggregateWindowedFunction", - "overClause", "windowSpec", "windowName", "frameClause", "frameUnits", - "frameExtent", "frameBetween", "frameRange", "partitionClause", - "scalarFunctionName", "passwordFunctionClause", "functionArgs", - "functionArg", "expression", "predicate", "expressionAtom", "unaryOperator", - "comparisonOperator", "comparisonBase", "logicalOperator", "bitOperator", - "mathOperator", "jsonOperator", "charsetNameBase", "transactionLevelBase", - "privilegesBase", "intervalTypeBase", "dataTypeBase", "keywordsCanBeId", - "functionNameBase", + "repairTable", "tableActionOption", "checkTableOption", "installComponent", + "variableExpr", "uninstallComponent", "installPlugin", "uninstallPlugin", + "cloneStatement", "setStatement", "showStatement", "variableClause", + "showCommonEntity", "showFilter", "showGlobalInfoClause", "showSchemaEntity", + "showProfileType", "binlogStatement", "cacheIndexStatement", "flushStatement", + "killStatement", "loadIndexIntoCache", "resetStatement", "resetOption", + "resetPersist", "resetAllChannel", "reStartStatement", "shutdownStatement", + "tableIndex", "flushOption", "flushTableOption", "loadedTableIndexes", + "simpleDescribeStatement", "fullDescribeStatement", "analyzeDescribeStatement", + "helpStatement", "useStatement", "signalStatement", "resignalStatement", + "signalConditionInformation", "withStatement", "tableStatement", + "diagnosticsStatement", "diagnosticsConditionInformationName", "describeObjectClause", + "databaseNameCreate", "databaseName", "functionNameCreate", "functionName", + "viewNameCreate", "viewName", "indexNameCreate", "indexNames", "indexName", + "groupNameCreate", "groupName", "tableNameCreate", "tableNames", + "tableName", "userOrRoleNames", "userOrRoleName", "columnNameCreate", + "columnNames", "columnName", "tablespaceNameCreate", "tablespaceName", + "partitionNameCreate", "partitionNames", "partitionName", "indexColumnName", + "userHostPort", "userAtHost", "simpleUserName", "hostName", "userName", + "mysqlVariable", "charsetName", "collationName", "engineName", "engineNameBase", + "uuidSet", "xid", "xuidStringId", "fullId", "uidList", "uid", "simpleId", + "dottedId", "decimalLiteral", "fileSizeLiteral", "stringLiteral", + "booleanLiteral", "hexadecimalLiteral", "nullNotnull", "constant", + "dataType", "collectionOptions", "convertedDataType", "lengthOneDimension", + "lengthTwoDimension", "lengthTwoOptionalDimension", "indexColumnNames", + "expressions", "valuesOrValueList", "expressionsWithDefaults", "expressionOrDefault", + "constants", "simpleStrings", "userVariables", "defaultValue", "currentTimestamp", + "ifExists", "ifNotExists", "orReplace", "functionCall", "specificFunction", + "caseFuncAlternative", "levelsInWeightString", "levelInWeightListElement", + "aggregateWindowedFunction", "nonAggregateWindowedFunction", "overClause", + "windowSpec", "windowName", "frameClause", "frameUnits", "frameExtent", + "frameBetween", "frameRange", "partitionClause", "scalarFunctionName", + "passwordFunctionClause", "functionArgs", "functionArg", "expression", + "predicate", "expressionAtom", "unaryOperator", "comparisonOperator", + "comparisonBase", "logicalOperator", "bitOperator", "mathOperator", + "jsonOperator", "charsetNameBase", "transactionLevelBase", "privilegesBase", + "intervalTypeBase", "dataTypeBase", "keywordsCanBeId", "functionNameBase", ]; public get grammarFileName(): string { return "MySqlParser.g4"; } @@ -1840,21 +1841,21 @@ export class MySqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 837; + this.state = 841; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 169870592) !== 0) || ((((_la - 34)) & ~0x1F) === 0 && ((1 << (_la - 34)) & 268573697) !== 0) || ((((_la - 72)) & ~0x1F) === 0 && ((1 << (_la - 72)) & 2151694339) !== 0) || ((((_la - 104)) & ~0x1F) === 0 && ((1 << (_la - 104)) & 536936449) !== 0) || ((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & 442923) !== 0) || ((((_la - 173)) & ~0x1F) === 0 && ((1 << (_la - 173)) & 2184193) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 16781443) !== 0) || _la === 362 || _la === 371 || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 270573569) !== 0) || _la === 540 || _la === 562 || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 16643) !== 0) || ((((_la - 640)) & ~0x1F) === 0 && ((1 << (_la - 640)) & 268435521) !== 0) || _la === 673 || _la === 694 || _la === 713 || _la === 717 || _la === 749 || _la === 866 || _la === 869) { { { - this.state = 834; + this.state = 838; this.singleStatement(); } } - this.state = 839; + this.state = 843; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 840; + this.state = 844; this.match(MySqlParser.EOF); } } @@ -1876,7 +1877,7 @@ export class MySqlParser extends SQLParserBase { let localContext = new SingleStatementContext(this.context, this.state); this.enterRule(localContext, 2, MySqlParser.RULE_singleStatement); try { - this.state = 847; + this.state = 851; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ALTER: @@ -1942,14 +1943,14 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.LR_BRACKET: this.enterOuterAlt(localContext, 1); { - this.state = 842; + this.state = 846; this.sqlStatement(); - this.state = 844; + this.state = 848; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1, this.context) ) { case 1: { - this.state = 843; + this.state = 847; this.match(MySqlParser.SEMI); } break; @@ -1959,7 +1960,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.SEMI: this.enterOuterAlt(localContext, 2); { - this.state = 846; + this.state = 850; this.emptyStatement_(); } break; @@ -1985,55 +1986,55 @@ export class MySqlParser extends SQLParserBase { let localContext = new SqlStatementContext(this.context, this.state); this.enterRule(localContext, 4, MySqlParser.RULE_sqlStatement); try { - this.state = 856; + this.state = 860; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 3, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 849; + this.state = 853; this.ddlStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 850; + this.state = 854; this.dmlStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 851; + this.state = 855; this.transactionStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 852; + this.state = 856; this.replicationStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 853; + this.state = 857; this.preparedStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 854; + this.state = 858; this.administrationStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 855; + this.state = 859; this.utilityStatement(); } break; @@ -2059,7 +2060,7 @@ export class MySqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 858; + this.state = 862; this.match(MySqlParser.SEMI); } } @@ -2081,279 +2082,286 @@ export class MySqlParser extends SQLParserBase { let localContext = new DdlStatementContext(this.context, this.state); this.enterRule(localContext, 8, MySqlParser.RULE_ddlStatement); try { - this.state = 899; + this.state = 904; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 860; + this.state = 864; this.createDatabase(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 861; + this.state = 865; this.createEvent(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 862; + this.state = 866; this.createIndex(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 863; + this.state = 867; this.createLogfileGroup(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 864; + this.state = 868; this.createProcedure(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 865; + this.state = 869; this.createFunction(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 866; - this.createServer(); + this.state = 870; + this.createFunctionLoadable(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 867; - this.createTable(); + this.state = 871; + this.createServer(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 868; - this.createTablespaceInnodb(); + this.state = 872; + this.createTable(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 869; - this.createTablespaceNdb(); + this.state = 873; + this.createTablespaceInnodb(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 870; - this.createTrigger(); + this.state = 874; + this.createTablespaceNdb(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 871; - this.createView(); + this.state = 875; + this.createTrigger(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 872; - this.createRole(); + this.state = 876; + this.createView(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 873; - this.alterDatabase(); + this.state = 877; + this.createRole(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 874; - this.alterEvent(); + this.state = 878; + this.alterDatabase(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 875; - this.alterFunction(); + this.state = 879; + this.alterEvent(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 876; - this.alterInstance(); + this.state = 880; + this.alterFunction(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 877; - this.alterLogfileGroup(); + this.state = 881; + this.alterInstance(); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 878; - this.alterProcedure(); + this.state = 882; + this.alterLogfileGroup(); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 879; - this.alterServer(); + this.state = 883; + this.alterProcedure(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 880; - this.alterTable(); + this.state = 884; + this.alterServer(); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 881; - this.alterTablespace(); + this.state = 885; + this.alterTable(); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 882; - this.alterView(); + this.state = 886; + this.alterTablespace(); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 883; - this.dropDatabase(); + this.state = 887; + this.alterView(); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 884; - this.dropEvent(); + this.state = 888; + this.dropDatabase(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 885; - this.dropIndex(); + this.state = 889; + this.dropEvent(); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 886; - this.dropLogfileGroup(); + this.state = 890; + this.dropIndex(); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 887; - this.dropProcedure(); + this.state = 891; + this.dropLogfileGroup(); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 888; - this.dropFunction(); + this.state = 892; + this.dropProcedure(); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 889; - this.dropServer(); + this.state = 893; + this.dropFunction(); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 890; - this.dropSpatial(); + this.state = 894; + this.dropServer(); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 891; - this.dropTable(); + this.state = 895; + this.dropSpatial(); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 892; - this.dropTablespace(); + this.state = 896; + this.dropTable(); } break; case 34: this.enterOuterAlt(localContext, 34); { - this.state = 893; - this.dropTrigger(); + this.state = 897; + this.dropTablespace(); } break; case 35: this.enterOuterAlt(localContext, 35); { - this.state = 894; - this.dropView(); + this.state = 898; + this.dropTrigger(); } break; case 36: this.enterOuterAlt(localContext, 36); { - this.state = 895; - this.dropRole(); + this.state = 899; + this.dropView(); } break; case 37: this.enterOuterAlt(localContext, 37); { - this.state = 896; - this.setRole(); + this.state = 900; + this.dropRole(); } break; case 38: this.enterOuterAlt(localContext, 38); { - this.state = 897; - this.renameTable(); + this.state = 901; + this.setRole(); } break; case 39: this.enterOuterAlt(localContext, 39); { - this.state = 898; + this.state = 902; + this.renameTable(); + } + break; + case 40: + this.enterOuterAlt(localContext, 40); + { + this.state = 903; this.truncateTable(); } break; @@ -2377,125 +2385,125 @@ export class MySqlParser extends SQLParserBase { let localContext = new DmlStatementContext(this.context, this.state); this.enterRule(localContext, 10, MySqlParser.RULE_dmlStatement); try { - this.state = 918; + this.state = 923; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 5, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 901; + this.state = 906; this.selectStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 902; + this.state = 907; this.setOperations(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 903; + this.state = 908; this.insertStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 904; + this.state = 909; this.updateStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 905; + this.state = 910; this.deleteStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 906; + this.state = 911; this.replaceStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 907; + this.state = 912; this.callStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 908; + this.state = 913; this.interSectStatement(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 909; + this.state = 914; this.loadDataStatement(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 910; + this.state = 915; this.loadXmlStatement(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 911; + this.state = 916; this.parenthesizedQuery(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 912; + this.state = 917; this.doStatement(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 913; + this.state = 918; this.handlerStatement(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 914; + this.state = 919; this.importTableStatement(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 915; + this.state = 920; this.valuesStatement(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 916; + this.state = 921; this.withStatement(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 917; + this.state = 922; this.tableStatement(); } break; @@ -2519,69 +2527,69 @@ export class MySqlParser extends SQLParserBase { let localContext = new TransactionStatementContext(this.context, this.state); this.enterRule(localContext, 12, MySqlParser.RULE_transactionStatement); try { - this.state = 929; + this.state = 934; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 6, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 920; + this.state = 925; this.startTransaction(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 921; + this.state = 926; this.beginWork(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 922; + this.state = 927; this.commitWork(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 923; + this.state = 928; this.rollbackWork(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 924; + this.state = 929; this.savepointStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 925; + this.state = 930; this.rollbackStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 926; + this.state = 931; this.releaseStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 927; + this.state = 932; this.lockTables(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 928; + this.state = 933; this.unlockTables(); } break; @@ -2605,104 +2613,104 @@ export class MySqlParser extends SQLParserBase { let localContext = new ReplicationStatementContext(this.context, this.state); this.enterRule(localContext, 14, MySqlParser.RULE_replicationStatement); try { - this.state = 945; + this.state = 950; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 931; + this.state = 936; this.changeMaster(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 932; + this.state = 937; this.changeReplicationFilter(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 933; + this.state = 938; this.changeReplicationSource(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 934; + this.state = 939; this.purgeBinaryLogs(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 935; + this.state = 940; this.startSlaveOrReplica(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 936; + this.state = 941; this.stopSlaveOrReplica(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 937; + this.state = 942; this.startGroupReplication(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 938; + this.state = 943; this.stopGroupReplication(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 939; + this.state = 944; this.xaStartTransaction(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 940; + this.state = 945; this.xaEndTransaction(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 941; + this.state = 946; this.xaPrepareStatement(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 942; + this.state = 947; this.xaCommitWork(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 943; + this.state = 948; this.xaRollbackWork(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 944; + this.state = 949; this.xaRecoverWork(); } break; @@ -2726,20 +2734,20 @@ export class MySqlParser extends SQLParserBase { let localContext = new PreparedStatementContext(this.context, this.state); this.enterRule(localContext, 16, MySqlParser.RULE_preparedStatement); try { - this.state = 950; + this.state = 955; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_PREPARE: this.enterOuterAlt(localContext, 1); { - this.state = 947; + this.state = 952; this.prepareStatement(); } break; case MySqlParser.KW_EXECUTE: this.enterOuterAlt(localContext, 2); { - this.state = 948; + this.state = 953; this.executeStatement(); } break; @@ -2747,7 +2755,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_DEALLOCATE: this.enterOuterAlt(localContext, 3); { - this.state = 949; + this.state = 954; this.deallocatePrepare(); } break; @@ -2773,76 +2781,76 @@ export class MySqlParser extends SQLParserBase { let localContext = new CompoundStatementContext(this.context, this.state); this.enterRule(localContext, 18, MySqlParser.RULE_compoundStatement); try { - this.state = 962; + this.state = 967; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 952; + this.state = 957; this.blockStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 953; + this.state = 958; this.caseStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 954; + this.state = 959; this.ifStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 955; + this.state = 960; this.leaveStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 956; + this.state = 961; this.loopStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 957; + this.state = 962; this.repeatStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 958; + this.state = 963; this.whileStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 959; + this.state = 964; this.iterateStatement(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 960; + this.state = 965; this.returnStatement(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 961; + this.state = 966; this.cursorStatement(); } break; @@ -2866,237 +2874,237 @@ export class MySqlParser extends SQLParserBase { let localContext = new AdministrationStatementContext(this.context, this.state); this.enterRule(localContext, 20, MySqlParser.RULE_administrationStatement); try { - this.state = 997; + this.state = 1002; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 10, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 964; + this.state = 969; this.alterUser(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 965; + this.state = 970; this.createUser(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 966; + this.state = 971; this.dropUser(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 967; + this.state = 972; this.grantStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 968; + this.state = 973; this.grantProxy(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 969; + this.state = 974; this.renameUser(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 970; + this.state = 975; this.revokeStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 971; + this.state = 976; this.alterResourceGroup(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 972; + this.state = 977; this.createResourceGroup(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 973; + this.state = 978; this.dropResourceGroup(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 974; + this.state = 979; this.setResourceGroup(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 975; + this.state = 980; this.analyzeTable(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 976; + this.state = 981; this.checkTable(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 977; + this.state = 982; this.checksumTable(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 978; + this.state = 983; this.optimizeTable(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 979; + this.state = 984; this.repairTable(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 980; + this.state = 985; this.installComponent(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 981; + this.state = 986; this.uninstallComponent(); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 982; + this.state = 987; this.installPlugin(); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 983; + this.state = 988; this.uninstallPlugin(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 984; + this.state = 989; this.cloneStatement(); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 985; + this.state = 990; this.setStatement(); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 986; + this.state = 991; this.showStatement(); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 987; + this.state = 992; this.binlogStatement(); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 988; + this.state = 993; this.cacheIndexStatement(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 989; + this.state = 994; this.flushStatement(); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 990; + this.state = 995; this.killStatement(); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 991; + this.state = 996; this.loadIndexIntoCache(); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 992; + this.state = 997; this.resetStatement(); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 993; + this.state = 998; this.resetPersist(); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 994; + this.state = 999; this.resetAllChannel(); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 995; + this.state = 1000; this.reStartStatement(); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 996; + this.state = 1001; this.shutdownStatement(); } break; @@ -3120,62 +3128,62 @@ export class MySqlParser extends SQLParserBase { let localContext = new UtilityStatementContext(this.context, this.state); this.enterRule(localContext, 22, MySqlParser.RULE_utilityStatement); try { - this.state = 1007; + this.state = 1012; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 11, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 999; + this.state = 1004; this.fullDescribeStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1000; + this.state = 1005; this.simpleDescribeStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1001; + this.state = 1006; this.analyzeDescribeStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1002; + this.state = 1007; this.helpStatement(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1003; + this.state = 1008; this.useStatement(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1004; + this.state = 1009; this.signalStatement(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1005; + this.state = 1010; this.resignalStatement(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1006; + this.state = 1011; this.diagnosticsStatement(); } break; @@ -3202,9 +3210,9 @@ export class MySqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1009; + this.state = 1014; this.match(MySqlParser.KW_CREATE); - this.state = 1010; + this.state = 1015; localContext._dbFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 152)) { @@ -3214,29 +3222,29 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1012; + this.state = 1017; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 12, this.context) ) { case 1: { - this.state = 1011; + this.state = 1016; this.ifNotExists(); } break; } - this.state = 1014; + this.state = 1019; this.databaseNameCreate(); - this.state = 1018; + this.state = 1023; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & 65541) !== 0) || _la === 135 || _la === 224 || _la === 376 || _la === 823) { { { - this.state = 1015; + this.state = 1020; this.createDatabaseOption(); } } - this.state = 1020; + this.state = 1025; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3263,87 +3271,87 @@ export class MySqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1021; + this.state = 1026; this.match(MySqlParser.KW_CREATE); - this.state = 1023; + this.state = 1028; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 1022; + this.state = 1027; this.ownerStatement(); } } - this.state = 1025; + this.state = 1030; this.match(MySqlParser.KW_EVENT); - this.state = 1027; + this.state = 1032; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 15, this.context) ) { case 1: { - this.state = 1026; + this.state = 1031; this.ifNotExists(); } break; } - this.state = 1029; + this.state = 1034; localContext._event_name = this.fullId(); - this.state = 1030; + this.state = 1035; this.match(MySqlParser.KW_ON); - this.state = 1031; + this.state = 1036; this.match(MySqlParser.KW_SCHEDULE); - this.state = 1032; + this.state = 1037; this.scheduleExpression(); - this.state = 1039; + this.state = 1044; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 119) { { - this.state = 1033; + this.state = 1038; this.match(MySqlParser.KW_ON); - this.state = 1034; + this.state = 1039; this.match(MySqlParser.KW_COMPLETION); - this.state = 1036; + this.state = 1041; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 1035; + this.state = 1040; this.match(MySqlParser.KW_NOT); } } - this.state = 1038; + this.state = 1043; this.match(MySqlParser.KW_PRESERVE); } } - this.state = 1042; + this.state = 1047; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 368 || _la === 375) { { - this.state = 1041; + this.state = 1046; this.enableType(); } } - this.state = 1046; + this.state = 1051; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 340) { { - this.state = 1044; + this.state = 1049; this.match(MySqlParser.KW_COMMENT); - this.state = 1045; + this.state = 1050; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 1048; + this.state = 1053; this.match(MySqlParser.KW_DO); - this.state = 1049; + this.state = 1054; this.routineBody(); } } @@ -3369,14 +3377,14 @@ export class MySqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1051; + this.state = 1056; this.match(MySqlParser.KW_CREATE); - this.state = 1053; + this.state = 1058; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 508 || _la === 514) { { - this.state = 1052; + this.state = 1057; localContext._intimeAction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 508 || _la === 514)) { @@ -3389,12 +3397,12 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1056; + this.state = 1061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 69 || _la === 161 || _la === 182) { { - this.state = 1055; + this.state = 1060; localContext._indexCategory = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 69 || _la === 161 || _la === 182)) { @@ -3407,66 +3415,66 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1058; + this.state = 1063; this.match(MySqlParser.KW_INDEX); - this.state = 1059; + this.state = 1064; this.indexNameCreate(); - this.state = 1061; + this.state = 1066; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 1060; + this.state = 1065; this.indexType(); } } - this.state = 1063; + this.state = 1068; this.match(MySqlParser.KW_ON); - this.state = 1064; + this.state = 1069; this.tableName(); - this.state = 1065; + this.state = 1070; this.indexColumnNames(); - this.state = 1069; + this.state = 1074; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 23, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1066; + this.state = 1071; this.indexOption(); } } } - this.state = 1071; + this.state = 1076; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 23, this.context); } - this.state = 1084; + this.state = 1089; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 1082; + this.state = 1087; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ALGORITHM: { - this.state = 1072; + this.state = 1077; this.match(MySqlParser.KW_ALGORITHM); - this.state = 1074; + this.state = 1079; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1073; + this.state = 1078; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1076; + this.state = 1081; localContext._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 357 || _la === 430)) { @@ -3480,19 +3488,19 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_LOCK: { - this.state = 1077; + this.state = 1082; this.match(MySqlParser.KW_LOCK); - this.state = 1079; + this.state = 1084; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1078; + this.state = 1083; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1081; + this.state = 1086; localContext._lockType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 389 || _la === 505 || _la === 595)) { @@ -3509,7 +3517,7 @@ export class MySqlParser extends SQLParserBase { } } } - this.state = 1086; + this.state = 1091; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); } @@ -3536,153 +3544,153 @@ export class MySqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1087; + this.state = 1092; this.match(MySqlParser.KW_CREATE); - this.state = 1088; + this.state = 1093; this.match(MySqlParser.KW_LOGFILE); - this.state = 1089; + this.state = 1094; this.match(MySqlParser.KW_GROUP); - this.state = 1090; + this.state = 1095; localContext._logfileGroupName = this.uid(); - this.state = 1091; + this.state = 1096; this.match(MySqlParser.KW_ADD); - this.state = 1092; + this.state = 1097; this.match(MySqlParser.KW_UNDOFILE); - this.state = 1093; + this.state = 1098; localContext._undoFile = this.match(MySqlParser.STRING_LITERAL); - this.state = 1099; + this.state = 1104; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 428) { { - this.state = 1094; + this.state = 1099; this.match(MySqlParser.KW_INITIAL_SIZE); - this.state = 1096; + this.state = 1101; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1095; + this.state = 1100; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1098; + this.state = 1103; localContext._initSize = this.fileSizeLiteral(); } } - this.state = 1106; + this.state = 1111; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 672) { { - this.state = 1101; + this.state = 1106; this.match(MySqlParser.KW_UNDO_BUFFER_SIZE); - this.state = 1103; + this.state = 1108; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1102; + this.state = 1107; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1105; + this.state = 1110; localContext._undoSize = this.fileSizeLiteral(); } } - this.state = 1113; + this.state = 1118; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 553) { { - this.state = 1108; + this.state = 1113; this.match(MySqlParser.KW_REDO_BUFFER_SIZE); - this.state = 1110; + this.state = 1115; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1109; + this.state = 1114; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1112; + this.state = 1117; localContext._redoSize = this.fileSizeLiteral(); } } - this.state = 1120; + this.state = 1125; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 504) { { - this.state = 1115; + this.state = 1120; this.match(MySqlParser.KW_NODEGROUP); - this.state = 1117; + this.state = 1122; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1116; + this.state = 1121; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1119; + this.state = 1124; localContext._nodegroup = this.uid(); } } - this.state = 1123; + this.state = 1128; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 687) { { - this.state = 1122; + this.state = 1127; this.match(MySqlParser.KW_WAIT); } } - this.state = 1130; + this.state = 1135; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 340) { { - this.state = 1125; + this.state = 1130; this.match(MySqlParser.KW_COMMENT); - this.state = 1127; + this.state = 1132; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1126; + this.state = 1131; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1129; + this.state = 1134; localContext._comment = this.match(MySqlParser.STRING_LITERAL); } } - this.state = 1132; + this.state = 1137; this.match(MySqlParser.KW_ENGINE); - this.state = 1134; + this.state = 1139; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1133; + this.state = 1138; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1136; + this.state = 1141; this.engineName(); } } @@ -3708,79 +3716,79 @@ export class MySqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1138; + this.state = 1143; this.match(MySqlParser.KW_CREATE); - this.state = 1140; + this.state = 1145; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 1139; + this.state = 1144; this.ownerStatement(); } } - this.state = 1142; + this.state = 1147; this.match(MySqlParser.KW_PROCEDURE); - this.state = 1144; + this.state = 1149; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 41, this.context) ) { case 1: { - this.state = 1143; + this.state = 1148; this.ifNotExists(); } break; } - this.state = 1146; + this.state = 1151; localContext._sp_name = this.fullId(); - this.state = 1147; + this.state = 1152; this.match(MySqlParser.LR_BRACKET); - this.state = 1149; + this.state = 1154; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18880593) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100680481) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18880593) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100680481) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 1148; + this.state = 1153; this.procedureParameter(); } } - this.state = 1155; + this.state = 1160; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 1151; + this.state = 1156; this.match(MySqlParser.COMMA); - this.state = 1152; + this.state = 1157; this.procedureParameter(); } } - this.state = 1157; + this.state = 1162; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1158; + this.state = 1163; this.match(MySqlParser.RR_BRACKET); - this.state = 1162; + this.state = 1167; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 44, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1159; + this.state = 1164; this.routineOption(); } } } - this.state = 1164; + this.state = 1169; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 44, this.context); } - this.state = 1165; + this.state = 1170; this.routineBody(); } } @@ -3798,27 +3806,803 @@ export class MySqlParser extends SQLParserBase { } return localContext; } + public createFunction(): CreateFunctionContext { + let localContext = new CreateFunctionContext(this.context, this.state); + this.enterRule(localContext, 34, MySqlParser.RULE_createFunction); + let _la: number; + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 1172; + this.match(MySqlParser.KW_CREATE); + this.state = 1174; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 364) { + { + this.state = 1173; + this.ownerStatement(); + } + } + + this.state = 1177; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 307) { + { + this.state = 1176; + this.match(MySqlParser.KW_AGGREGATE); + } + } + + this.state = 1179; + this.match(MySqlParser.KW_FUNCTION); + this.state = 1181; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { + case 1: + { + this.state = 1180; + this.ifNotExists(); + } + break; + } + this.state = 1183; + this.functionNameCreate(); + this.state = 1184; + this.match(MySqlParser.LR_BRACKET); + this.state = 1186; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + { + this.state = 1185; + this.functionParameter(); + } + } + + this.state = 1192; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 868) { + { + { + this.state = 1188; + this.match(MySqlParser.COMMA); + this.state = 1189; + this.functionParameter(); + } + } + this.state = 1194; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 1195; + this.match(MySqlParser.RR_BRACKET); + this.state = 1196; + this.match(MySqlParser.KW_RETURNS); + this.state = 1197; + this.dataType(); + this.state = 1201; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 50, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 1198; + this.routineOption(); + } + } + } + this.state = 1203; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 50, this.context); + } + this.state = 1206; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case MySqlParser.KW_ALTER: + case MySqlParser.KW_ANALYZE: + case MySqlParser.KW_ARRAY: + case MySqlParser.KW_ATTRIBUTE: + case MySqlParser.KW_BUCKETS: + case MySqlParser.KW_CALL: + case MySqlParser.KW_CHANGE: + case MySqlParser.KW_CHECK: + case MySqlParser.KW_CONDITION: + case MySqlParser.KW_CREATE: + case MySqlParser.KW_CURRENT: + case MySqlParser.KW_CURRENT_USER: + case MySqlParser.KW_DATABASE: + case MySqlParser.KW_DEFAULT: + case MySqlParser.KW_DELETE: + case MySqlParser.KW_DESC: + case MySqlParser.KW_DESCRIBE: + case MySqlParser.KW_DIAGNOSTICS: + case MySqlParser.KW_DROP: + case MySqlParser.KW_EMPTY: + case MySqlParser.KW_ENFORCED: + case MySqlParser.KW_EXCEPT: + case MySqlParser.KW_EXPLAIN: + case MySqlParser.KW_GET: + case MySqlParser.KW_GRANT: + case MySqlParser.KW_GROUP: + case MySqlParser.KW_IF: + case MySqlParser.KW_INSERT: + case MySqlParser.KW_KILL: + case MySqlParser.KW_LATERAL: + case MySqlParser.KW_LEFT: + case MySqlParser.KW_LOAD: + case MySqlParser.KW_LOCK: + case MySqlParser.KW_NUMBER: + case MySqlParser.KW_OPTIMIZE: + case MySqlParser.KW_OPTIONAL: + case MySqlParser.KW_ORDER: + case MySqlParser.KW_PRIMARY: + case MySqlParser.KW_PURGE: + case MySqlParser.KW_RELEASE: + case MySqlParser.KW_RENAME: + case MySqlParser.KW_REPEAT: + case MySqlParser.KW_REPLACE: + case MySqlParser.KW_RESIGNAL: + case MySqlParser.KW_REVOKE: + case MySqlParser.KW_RIGHT: + case MySqlParser.KW_SCHEMA: + case MySqlParser.KW_SELECT: + case MySqlParser.KW_SET: + case MySqlParser.KW_SHOW: + case MySqlParser.KW_SIGNAL: + case MySqlParser.KW_SKIP_QUERY_REWRITE: + case MySqlParser.KW_STACKED: + case MySqlParser.KW_TABLE: + case MySqlParser.KW_UNLOCK: + case MySqlParser.KW_UPDATE: + case MySqlParser.KW_USE: + case MySqlParser.KW_VALUES: + case MySqlParser.KW_WITH: + case MySqlParser.KW_DATE: + case MySqlParser.KW_TIME: + case MySqlParser.KW_TIMESTAMP: + case MySqlParser.KW_DATETIME: + case MySqlParser.KW_YEAR: + case MySqlParser.KW_BINARY: + case MySqlParser.KW_TEXT: + case MySqlParser.KW_ENUM: + case MySqlParser.KW_SERIAL: + case MySqlParser.KW_JSON_TABLE: + case MySqlParser.KW_JSON_VALUE: + case MySqlParser.KW_NESTED: + case MySqlParser.KW_ORDINALITY: + case MySqlParser.KW_PATH: + case MySqlParser.KW_AVG: + case MySqlParser.KW_BIT_AND: + case MySqlParser.KW_BIT_OR: + case MySqlParser.KW_BIT_XOR: + case MySqlParser.KW_COUNT: + case MySqlParser.KW_CUME_DIST: + case MySqlParser.KW_DENSE_RANK: + case MySqlParser.KW_FIRST_VALUE: + case MySqlParser.KW_GROUP_CONCAT: + case MySqlParser.KW_LAG: + case MySqlParser.KW_LAST_VALUE: + case MySqlParser.KW_LEAD: + case MySqlParser.KW_MAX: + case MySqlParser.KW_MIN: + case MySqlParser.KW_NTILE: + case MySqlParser.KW_NTH_VALUE: + case MySqlParser.KW_PERCENT_RANK: + case MySqlParser.KW_RANK: + case MySqlParser.KW_ROW_NUMBER: + case MySqlParser.KW_STD: + case MySqlParser.KW_STDDEV: + case MySqlParser.KW_STDDEV_POP: + case MySqlParser.KW_STDDEV_SAMP: + case MySqlParser.KW_SUM: + case MySqlParser.KW_VAR_POP: + case MySqlParser.KW_VAR_SAMP: + case MySqlParser.KW_VARIANCE: + case MySqlParser.KW_CURRENT_DATE: + case MySqlParser.KW_CURRENT_TIME: + case MySqlParser.KW_CURRENT_TIMESTAMP: + case MySqlParser.KW_LOCALTIME: + case MySqlParser.KW_CURDATE: + case MySqlParser.KW_CURTIME: + case MySqlParser.KW_DATE_ADD: + case MySqlParser.KW_DATE_SUB: + case MySqlParser.KW_LOCALTIMESTAMP: + case MySqlParser.KW_NOW: + case MySqlParser.KW_POSITION: + case MySqlParser.KW_SUBSTR: + case MySqlParser.KW_SUBSTRING: + case MySqlParser.KW_SYSDATE: + case MySqlParser.KW_TRIM: + case MySqlParser.KW_UTC_DATE: + case MySqlParser.KW_UTC_TIME: + case MySqlParser.KW_UTC_TIMESTAMP: + case MySqlParser.KW_ACCOUNT: + case MySqlParser.KW_ACTION: + case MySqlParser.KW_AFTER: + case MySqlParser.KW_AGGREGATE: + case MySqlParser.KW_ALGORITHM: + case MySqlParser.KW_ANY: + case MySqlParser.KW_AT: + case MySqlParser.KW_AUTHORS: + case MySqlParser.KW_AUTOCOMMIT: + case MySqlParser.KW_AUTOEXTEND_SIZE: + case MySqlParser.KW_AUTO_INCREMENT: + case MySqlParser.KW_AVG_ROW_LENGTH: + case MySqlParser.KW_BEGIN: + case MySqlParser.KW_BINLOG: + case MySqlParser.KW_BIT: + case MySqlParser.KW_BLOCK: + case MySqlParser.KW_BOOL: + case MySqlParser.KW_BOOLEAN: + case MySqlParser.KW_BTREE: + case MySqlParser.KW_CACHE: + case MySqlParser.KW_CASCADED: + case MySqlParser.KW_CHAIN: + case MySqlParser.KW_CHANGED: + case MySqlParser.KW_CHANNEL: + case MySqlParser.KW_CHECKSUM: + case MySqlParser.KW_CIPHER: + case MySqlParser.KW_CLASS_ORIGIN: + case MySqlParser.KW_CLIENT: + case MySqlParser.KW_CLOSE: + case MySqlParser.KW_COALESCE: + case MySqlParser.KW_CODE: + case MySqlParser.KW_COLUMNS: + case MySqlParser.KW_COLUMN_FORMAT: + case MySqlParser.KW_COLUMN_NAME: + case MySqlParser.KW_COMMENT: + case MySqlParser.KW_COMMIT: + case MySqlParser.KW_COMPACT: + case MySqlParser.KW_COMPLETION: + case MySqlParser.KW_COMPRESSED: + case MySqlParser.KW_COMPRESSION: + case MySqlParser.KW_CONCURRENT: + case MySqlParser.KW_CONNECT: + case MySqlParser.KW_CONNECTION: + case MySqlParser.KW_CONSISTENT: + case MySqlParser.KW_CONSTRAINT_CATALOG: + case MySqlParser.KW_CONSTRAINT_SCHEMA: + case MySqlParser.KW_CONSTRAINT_NAME: + case MySqlParser.KW_CONTAINS: + case MySqlParser.KW_CONTEXT: + case MySqlParser.KW_CONTRIBUTORS: + case MySqlParser.KW_COPY: + case MySqlParser.KW_CPU: + case MySqlParser.KW_CURSOR_NAME: + case MySqlParser.KW_DATA: + case MySqlParser.KW_DATAFILE: + case MySqlParser.KW_DEALLOCATE: + case MySqlParser.KW_DEFAULT_AUTH: + case MySqlParser.KW_DEFINER: + case MySqlParser.KW_DELAY_KEY_WRITE: + case MySqlParser.KW_DES_KEY_FILE: + case MySqlParser.KW_DIRECTORY: + case MySqlParser.KW_DISABLE: + case MySqlParser.KW_DISCARD: + case MySqlParser.KW_DISK: + case MySqlParser.KW_DO: + case MySqlParser.KW_DUMPFILE: + case MySqlParser.KW_DUPLICATE: + case MySqlParser.KW_DYNAMIC: + case MySqlParser.KW_ENABLE: + case MySqlParser.KW_ENCRYPTION: + case MySqlParser.KW_END: + case MySqlParser.KW_ENDS: + case MySqlParser.KW_ENGINE: + case MySqlParser.KW_ENGINES: + case MySqlParser.KW_ERROR: + case MySqlParser.KW_ERRORS: + case MySqlParser.KW_ESCAPE: + case MySqlParser.KW_EVENT: + case MySqlParser.KW_EVENTS: + case MySqlParser.KW_EVERY: + case MySqlParser.KW_EXCHANGE: + case MySqlParser.KW_EXCLUSIVE: + case MySqlParser.KW_EXPIRE: + case MySqlParser.KW_EXPORT: + case MySqlParser.KW_EXTENDED: + case MySqlParser.KW_EXTENT_SIZE: + case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS: + case MySqlParser.KW_FAST: + case MySqlParser.KW_FAULTS: + case MySqlParser.KW_FIELDS: + case MySqlParser.KW_FILE_BLOCK_SIZE: + case MySqlParser.KW_FILTER: + case MySqlParser.KW_FIRST: + case MySqlParser.KW_FIXED: + case MySqlParser.KW_FLUSH: + case MySqlParser.KW_FOLLOWS: + case MySqlParser.KW_FOUND: + case MySqlParser.KW_FULL: + case MySqlParser.KW_FUNCTION: + case MySqlParser.KW_GENERAL: + case MySqlParser.KW_GLOBAL: + case MySqlParser.KW_GRANTS: + case MySqlParser.KW_GROUP_REPLICATION: + case MySqlParser.KW_HANDLER: + case MySqlParser.KW_HASH: + case MySqlParser.KW_HELP: + case MySqlParser.KW_HISTORY: + case MySqlParser.KW_HOST: + case MySqlParser.KW_HOSTS: + case MySqlParser.KW_IDENTIFIED: + case MySqlParser.KW_IGNORE_SERVER_IDS: + case MySqlParser.KW_IMPORT: + case MySqlParser.KW_INDEXES: + case MySqlParser.KW_INITIAL_SIZE: + case MySqlParser.KW_INPLACE: + case MySqlParser.KW_INSERT_METHOD: + case MySqlParser.KW_INSTALL: + case MySqlParser.KW_INSTANCE: + case MySqlParser.KW_INSTANT: + case MySqlParser.KW_INVISIBLE: + case MySqlParser.KW_INVOKER: + case MySqlParser.KW_IO: + case MySqlParser.KW_IO_THREAD: + case MySqlParser.KW_IPC: + case MySqlParser.KW_ISOLATION: + case MySqlParser.KW_ISSUER: + case MySqlParser.KW_JSON: + case MySqlParser.KW_KEY_BLOCK_SIZE: + case MySqlParser.KW_LANGUAGE: + case MySqlParser.KW_LAST: + case MySqlParser.KW_LEAVES: + case MySqlParser.KW_LESS: + case MySqlParser.KW_LEVEL: + case MySqlParser.KW_LIST: + case MySqlParser.KW_LOCAL: + case MySqlParser.KW_LOGFILE: + case MySqlParser.KW_LOGS: + case MySqlParser.KW_MASTER: + case MySqlParser.KW_MASTER_AUTO_POSITION: + case MySqlParser.KW_MASTER_CONNECT_RETRY: + case MySqlParser.KW_MASTER_DELAY: + case MySqlParser.KW_MASTER_HEARTBEAT_PERIOD: + case MySqlParser.KW_MASTER_HOST: + case MySqlParser.KW_MASTER_LOG_FILE: + case MySqlParser.KW_MASTER_LOG_POS: + case MySqlParser.KW_MASTER_PASSWORD: + case MySqlParser.KW_MASTER_PORT: + case MySqlParser.KW_MASTER_RETRY_COUNT: + case MySqlParser.KW_MASTER_SSL: + case MySqlParser.KW_MASTER_SSL_CA: + case MySqlParser.KW_MASTER_SSL_CAPATH: + case MySqlParser.KW_MASTER_SSL_CERT: + case MySqlParser.KW_MASTER_SSL_CIPHER: + case MySqlParser.KW_MASTER_SSL_CRL: + case MySqlParser.KW_MASTER_SSL_CRLPATH: + case MySqlParser.KW_MASTER_SSL_KEY: + case MySqlParser.KW_MASTER_TLS_VERSION: + case MySqlParser.KW_MASTER_USER: + case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR: + case MySqlParser.KW_MAX_QUERIES_PER_HOUR: + case MySqlParser.KW_MAX_ROWS: + case MySqlParser.KW_MAX_SIZE: + case MySqlParser.KW_MAX_UPDATES_PER_HOUR: + case MySqlParser.KW_MAX_USER_CONNECTIONS: + case MySqlParser.KW_MEDIUM: + case MySqlParser.KW_MEMBER: + case MySqlParser.KW_MERGE: + case MySqlParser.KW_MESSAGE_TEXT: + case MySqlParser.KW_MID: + case MySqlParser.KW_MIGRATE: + case MySqlParser.KW_MIN_ROWS: + case MySqlParser.KW_MODE: + case MySqlParser.KW_MODIFY: + case MySqlParser.KW_MUTEX: + case MySqlParser.KW_MYSQL: + case MySqlParser.KW_MYSQL_ERRNO: + case MySqlParser.KW_NAME: + case MySqlParser.KW_NAMES: + case MySqlParser.KW_NCHAR: + case MySqlParser.KW_NEVER: + case MySqlParser.KW_NEXT: + case MySqlParser.KW_NO: + case MySqlParser.KW_NOWAIT: + case MySqlParser.KW_NODEGROUP: + case MySqlParser.KW_NONE: + case MySqlParser.KW_ODBC: + case MySqlParser.KW_OFFLINE: + case MySqlParser.KW_OFFSET: + case MySqlParser.KW_OF: + case MySqlParser.KW_OLD_PASSWORD: + case MySqlParser.KW_ONE: + case MySqlParser.KW_ONLINE: + case MySqlParser.KW_ONLY: + case MySqlParser.KW_OPEN: + case MySqlParser.KW_OPTIMIZER_COSTS: + case MySqlParser.KW_OPTIONS: + case MySqlParser.KW_OWNER: + case MySqlParser.KW_PACK_KEYS: + case MySqlParser.KW_PAGE: + case MySqlParser.KW_PAGE_CHECKSUM: + case MySqlParser.KW_PARSER: + case MySqlParser.KW_PARTIAL: + case MySqlParser.KW_PARTITIONING: + case MySqlParser.KW_PARTITIONS: + case MySqlParser.KW_PASSWORD: + case MySqlParser.KW_PASSWORD_LOCK_TIME: + case MySqlParser.KW_PHASE: + case MySqlParser.KW_PLUGIN: + case MySqlParser.KW_PLUGIN_DIR: + case MySqlParser.KW_PLUGINS: + case MySqlParser.KW_PORT: + case MySqlParser.KW_PRECEDES: + case MySqlParser.KW_PREPARE: + case MySqlParser.KW_PRESERVE: + case MySqlParser.KW_PREV: + case MySqlParser.KW_PROCESSLIST: + case MySqlParser.KW_PROFILE: + case MySqlParser.KW_PROFILES: + case MySqlParser.KW_PROXY: + case MySqlParser.KW_QUERY: + case MySqlParser.KW_QUICK: + case MySqlParser.KW_REBUILD: + case MySqlParser.KW_RECOVER: + case MySqlParser.KW_RECURSIVE: + case MySqlParser.KW_REDO_BUFFER_SIZE: + case MySqlParser.KW_REDUNDANT: + case MySqlParser.KW_RELAY: + case MySqlParser.KW_RELAY_LOG_FILE: + case MySqlParser.KW_RELAY_LOG_POS: + case MySqlParser.KW_RELAYLOG: + case MySqlParser.KW_REMOVE: + case MySqlParser.KW_REORGANIZE: + case MySqlParser.KW_REPAIR: + case MySqlParser.KW_REPLICATE_DO_DB: + case MySqlParser.KW_REPLICATE_DO_TABLE: + case MySqlParser.KW_REPLICATE_IGNORE_DB: + case MySqlParser.KW_REPLICATE_IGNORE_TABLE: + case MySqlParser.KW_REPLICATE_REWRITE_DB: + case MySqlParser.KW_REPLICATE_WILD_DO_TABLE: + case MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE: + case MySqlParser.KW_REPLICATION: + case MySqlParser.KW_RESET: + case MySqlParser.KW_RESTART: + case MySqlParser.KW_RESUME: + case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: + case MySqlParser.KW_RETURNS: + case MySqlParser.KW_REUSE: + case MySqlParser.KW_ROLE: + case MySqlParser.KW_ROLLBACK: + case MySqlParser.KW_ROLLUP: + case MySqlParser.KW_ROTATE: + case MySqlParser.KW_ROW: + case MySqlParser.KW_ROWS: + case MySqlParser.KW_ROW_FORMAT: + case MySqlParser.KW_SAVEPOINT: + case MySqlParser.KW_SCHEDULE: + case MySqlParser.KW_SECURITY: + case MySqlParser.KW_SERVER: + case MySqlParser.KW_SESSION: + case MySqlParser.KW_SHARE: + case MySqlParser.KW_SHARED: + case MySqlParser.KW_SIGNED: + case MySqlParser.KW_SIMPLE: + case MySqlParser.KW_SLAVE: + case MySqlParser.KW_SLOW: + case MySqlParser.KW_SNAPSHOT: + case MySqlParser.KW_SOCKET: + case MySqlParser.KW_SOME: + case MySqlParser.KW_SONAME: + case MySqlParser.KW_SOUNDS: + case MySqlParser.KW_SOURCE: + case MySqlParser.KW_SQL_AFTER_GTIDS: + case MySqlParser.KW_SQL_AFTER_MTS_GAPS: + case MySqlParser.KW_SQL_BEFORE_GTIDS: + case MySqlParser.KW_SQL_BUFFER_RESULT: + case MySqlParser.KW_SQL_CACHE: + case MySqlParser.KW_SQL_NO_CACHE: + case MySqlParser.KW_SQL_THREAD: + case MySqlParser.KW_START: + case MySqlParser.KW_STARTS: + case MySqlParser.KW_STATS_AUTO_RECALC: + case MySqlParser.KW_STATS_PERSISTENT: + case MySqlParser.KW_STATS_SAMPLE_PAGES: + case MySqlParser.KW_STATUS: + case MySqlParser.KW_STOP: + case MySqlParser.KW_STORAGE: + case MySqlParser.KW_STRING: + case MySqlParser.KW_SUBCLASS_ORIGIN: + case MySqlParser.KW_SUBJECT: + case MySqlParser.KW_SUBPARTITION: + case MySqlParser.KW_SUBPARTITIONS: + case MySqlParser.KW_SUSPEND: + case MySqlParser.KW_SWAPS: + case MySqlParser.KW_SWITCHES: + case MySqlParser.KW_TABLE_NAME: + case MySqlParser.KW_TABLESPACE: + case MySqlParser.KW_TABLE_TYPE: + case MySqlParser.KW_TEMPORARY: + case MySqlParser.KW_TEMPTABLE: + case MySqlParser.KW_THAN: + case MySqlParser.KW_TRADITIONAL: + case MySqlParser.KW_TRANSACTION: + case MySqlParser.KW_TRANSACTIONAL: + case MySqlParser.KW_TRIGGERS: + case MySqlParser.KW_TRUNCATE: + case MySqlParser.KW_UNBOUNDED: + case MySqlParser.KW_UNDEFINED: + case MySqlParser.KW_UNDOFILE: + case MySqlParser.KW_UNDO_BUFFER_SIZE: + case MySqlParser.KW_UNINSTALL: + case MySqlParser.KW_UNKNOWN: + case MySqlParser.KW_UNTIL: + case MySqlParser.KW_UPGRADE: + case MySqlParser.KW_USER: + case MySqlParser.KW_USE_FRM: + case MySqlParser.KW_USER_RESOURCES: + case MySqlParser.KW_VALIDATION: + case MySqlParser.KW_VALUE: + case MySqlParser.KW_VARIABLES: + case MySqlParser.KW_VIEW: + case MySqlParser.KW_VIRTUAL: + case MySqlParser.KW_VISIBLE: + case MySqlParser.KW_WAIT: + case MySqlParser.KW_WARNINGS: + case MySqlParser.KW_WITHOUT: + case MySqlParser.KW_WORK: + case MySqlParser.KW_WRAPPER: + case MySqlParser.KW_X509: + case MySqlParser.KW_XA: + case MySqlParser.KW_XML: + case MySqlParser.KW_QUARTER: + case MySqlParser.KW_MONTH: + case MySqlParser.KW_DAY: + case MySqlParser.KW_HOUR: + case MySqlParser.KW_MINUTE: + case MySqlParser.KW_WEEK: + case MySqlParser.KW_SECOND: + case MySqlParser.KW_MICROSECOND: + case MySqlParser.KW_ADMIN: + case MySqlParser.KW_AUDIT_ABORT_EXEMPT: + case MySqlParser.KW_AUDIT_ADMIN: + case MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN: + case MySqlParser.KW_BACKUP_ADMIN: + case MySqlParser.KW_BINLOG_ADMIN: + case MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN: + case MySqlParser.KW_CLONE: + case MySqlParser.KW_CLONE_ADMIN: + case MySqlParser.KW_CONNECTION_ADMIN: + case MySqlParser.KW_ENCRYPTION_KEY_ADMIN: + case MySqlParser.KW_EXECUTE: + case MySqlParser.KW_FILE: + case MySqlParser.KW_FIREWALL_ADMIN: + case MySqlParser.KW_FIREWALL_EXEMPT: + case MySqlParser.KW_FIREWALL_USER: + case MySqlParser.KW_GROUP_REPLICATION_ADMIN: + case MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE: + case MySqlParser.KW_INVOKE: + case MySqlParser.KW_LAMBDA: + case MySqlParser.KW_NDB_STORED_USER: + case MySqlParser.KW_PASSWORDLESS_USER_ADMIN: + case MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN: + case MySqlParser.KW_PRIVILEGES: + case MySqlParser.KW_PROCESS: + case MySqlParser.KW_RELOAD: + case MySqlParser.KW_REPLICATION_APPLIER: + case MySqlParser.KW_REPLICATION_SLAVE_ADMIN: + case MySqlParser.KW_RESOURCE_GROUP_ADMIN: + case MySqlParser.KW_RESOURCE_GROUP_USER: + case MySqlParser.KW_ROLE_ADMIN: + case MySqlParser.KW_ROUTINE: + case MySqlParser.KW_S3: + case MySqlParser.KW_SESSION_VARIABLES_ADMIN: + case MySqlParser.KW_SET_USER_ID: + case MySqlParser.KW_SHOW_ROUTINE: + case MySqlParser.KW_SHUTDOWN: + case MySqlParser.KW_SUPER: + case MySqlParser.KW_SYSTEM_VARIABLES_ADMIN: + case MySqlParser.KW_TABLES: + case MySqlParser.KW_TABLE_ENCRYPTION_ADMIN: + case MySqlParser.KW_VERSION_TOKEN_ADMIN: + case MySqlParser.KW_XA_RECOVER_ADMIN: + case MySqlParser.KW_ARMSCII8: + case MySqlParser.KW_ASCII: + case MySqlParser.KW_BIG5: + case MySqlParser.KW_CP1250: + case MySqlParser.KW_CP1251: + case MySqlParser.KW_CP1256: + case MySqlParser.KW_CP1257: + case MySqlParser.KW_CP850: + case MySqlParser.KW_CP852: + case MySqlParser.KW_CP866: + case MySqlParser.KW_CP932: + case MySqlParser.KW_DEC8: + case MySqlParser.KW_EUCJPMS: + case MySqlParser.KW_EUCKR: + case MySqlParser.KW_GB18030: + case MySqlParser.KW_GB2312: + case MySqlParser.KW_GBK: + case MySqlParser.KW_GEOSTD8: + case MySqlParser.KW_GREEK: + case MySqlParser.KW_HEBREW: + case MySqlParser.KW_HP8: + case MySqlParser.KW_KEYBCS2: + case MySqlParser.KW_KOI8R: + case MySqlParser.KW_KOI8U: + case MySqlParser.KW_LATIN1: + case MySqlParser.KW_LATIN2: + case MySqlParser.KW_LATIN5: + case MySqlParser.KW_LATIN7: + case MySqlParser.KW_MACCE: + case MySqlParser.KW_MACROMAN: + case MySqlParser.KW_SJIS: + case MySqlParser.KW_SWE7: + case MySqlParser.KW_TIS620: + case MySqlParser.KW_UCS2: + case MySqlParser.KW_UJIS: + case MySqlParser.KW_UTF16: + case MySqlParser.KW_UTF16LE: + case MySqlParser.KW_UTF32: + case MySqlParser.KW_UTF8: + case MySqlParser.KW_UTF8MB3: + case MySqlParser.KW_UTF8MB4: + case MySqlParser.KW_ARCHIVE: + case MySqlParser.KW_BLACKHOLE: + case MySqlParser.KW_CSV: + case MySqlParser.KW_FEDERATED: + case MySqlParser.KW_INNODB: + case MySqlParser.KW_MEMORY: + case MySqlParser.KW_MRG_MYISAM: + case MySqlParser.KW_MYISAM: + case MySqlParser.KW_NDB: + case MySqlParser.KW_NDBCLUSTER: + case MySqlParser.KW_PERFORMANCE_SCHEMA: + case MySqlParser.KW_TOKUDB: + case MySqlParser.KW_REPEATABLE: + case MySqlParser.KW_COMMITTED: + case MySqlParser.KW_UNCOMMITTED: + case MySqlParser.KW_SERIALIZABLE: + case MySqlParser.KW_GEOMETRYCOLLECTION: + case MySqlParser.KW_LINESTRING: + case MySqlParser.KW_MULTILINESTRING: + case MySqlParser.KW_MULTIPOINT: + case MySqlParser.KW_MULTIPOLYGON: + case MySqlParser.KW_POINT: + case MySqlParser.KW_POLYGON: + case MySqlParser.KW_CATALOG_NAME: + case MySqlParser.KW_CHARSET: + case MySqlParser.KW_COLLATION: + case MySqlParser.KW_ENGINE_ATTRIBUTE: + case MySqlParser.KW_FORMAT: + case MySqlParser.KW_GET_FORMAT: + case MySqlParser.KW_RANDOM: + case MySqlParser.KW_REVERSE: + case MySqlParser.KW_ROW_COUNT: + case MySqlParser.KW_SCHEMA_NAME: + case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE: + case MySqlParser.KW_SRID: + case MySqlParser.KW_SYSTEM_USER: + case MySqlParser.KW_TP_CONNECTION_ADMIN: + case MySqlParser.KW_WEIGHT_STRING: + case MySqlParser.MOD: + case MySqlParser.LR_BRACKET: + case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: + case MySqlParser.STRING_LITERAL: + case MySqlParser.ID: + { + this.state = 1204; + this.routineBody(); + } + break; + case MySqlParser.KW_RETURN: + { + this.state = 1205; + this.returnStatement(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public createFunctionLoadable(): CreateFunctionLoadableContext { + let localContext = new CreateFunctionLoadableContext(this.context, this.state); + this.enterRule(localContext, 36, MySqlParser.RULE_createFunctionLoadable); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1208; + this.match(MySqlParser.KW_CREATE); + this.state = 1210; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 307) { + { + this.state = 1209; + this.match(MySqlParser.KW_AGGREGATE); + } + } + + this.state = 1212; + this.match(MySqlParser.KW_FUNCTION); + this.state = 1214; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 53, this.context) ) { + case 1: + { + this.state = 1213; + this.ifNotExists(); + } + break; + } + this.state = 1216; + this.functionNameCreate(); + this.state = 1217; + this.match(MySqlParser.KW_RETURNS); + this.state = 1218; + localContext._returnType = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & 261) !== 0) || _la === 649)) { + localContext._returnType = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1219; + this.match(MySqlParser.KW_SONAME); + this.state = 1220; + this.match(MySqlParser.STRING_LITERAL); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } public createRole(): CreateRoleContext { let localContext = new CreateRoleContext(this.context, this.state); - this.enterRule(localContext, 34, MySqlParser.RULE_createRole); + this.enterRule(localContext, 38, MySqlParser.RULE_createRole); try { this.enterOuterAlt(localContext, 1); { - this.state = 1167; + this.state = 1222; this.match(MySqlParser.KW_CREATE); - this.state = 1168; + this.state = 1223; this.match(MySqlParser.KW_ROLE); - this.state = 1170; + this.state = 1225; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 45, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 54, this.context) ) { case 1: { - this.state = 1169; + this.state = 1224; this.ifNotExists(); } break; } - this.state = 1172; + this.state = 1227; this.userOrRoleNames(); } } @@ -3838,24 +4622,24 @@ export class MySqlParser extends SQLParserBase { } public createServer(): CreateServerContext { let localContext = new CreateServerContext(this.context, this.state); - this.enterRule(localContext, 36, MySqlParser.RULE_createServer); + this.enterRule(localContext, 40, MySqlParser.RULE_createServer); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1174; + this.state = 1229; this.match(MySqlParser.KW_CREATE); - this.state = 1175; + this.state = 1230; this.match(MySqlParser.KW_SERVER); - this.state = 1176; + this.state = 1231; localContext._servername = this.uid(); - this.state = 1177; + this.state = 1232; this.match(MySqlParser.KW_FOREIGN); - this.state = 1178; + this.state = 1233; this.match(MySqlParser.KW_DATA); - this.state = 1179; + this.state = 1234; this.match(MySqlParser.KW_WRAPPER); - this.state = 1180; + this.state = 1235; localContext._wrapperName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 494 || _la === 882)) { @@ -3865,29 +4649,29 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1181; + this.state = 1236; this.match(MySqlParser.KW_OPTIONS); - this.state = 1182; + this.state = 1237; this.match(MySqlParser.LR_BRACKET); - this.state = 1183; + this.state = 1238; this.serverOption(); - this.state = 1188; + this.state = 1243; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 1184; + this.state = 1239; this.match(MySqlParser.COMMA); - this.state = 1185; + this.state = 1240; this.serverOption(); } } - this.state = 1190; + this.state = 1245; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1191; + this.state = 1246; this.match(MySqlParser.RR_BRACKET); } } @@ -3907,103 +4691,103 @@ export class MySqlParser extends SQLParserBase { } public createTable(): CreateTableContext { let localContext = new CreateTableContext(this.context, this.state); - this.enterRule(localContext, 38, MySqlParser.RULE_createTable); + this.enterRule(localContext, 42, MySqlParser.RULE_createTable); let _la: number; try { let alternative: number; - this.state = 1271; + this.state = 1326; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context) ) { case 1: localContext = new QueryCreateTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1193; + this.state = 1248; this.match(MySqlParser.KW_CREATE); - this.state = 1195; + this.state = 1250; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 660) { { - this.state = 1194; + this.state = 1249; this.match(MySqlParser.KW_TEMPORARY); } } - this.state = 1197; + this.state = 1252; this.match(MySqlParser.KW_TABLE); - this.state = 1199; + this.state = 1254; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context) ) { case 1: { - this.state = 1198; + this.state = 1253; this.ifNotExists(); } break; } - this.state = 1201; + this.state = 1256; (localContext as QueryCreateTableContext)._tb = this.tableNameCreate(); - this.state = 1203; + this.state = 1258; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context) ) { case 1: { - this.state = 1202; + this.state = 1257; (localContext as QueryCreateTableContext)._col = this.createDefinitions(); } break; } - this.state = 1215; + this.state = 1270; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & 65541) !== 0) || _la === 82 || _la === 181 || _la === 224 || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & 67141639) !== 0) || ((((_la - 346)) & ~0x1F) === 0 && ((1 << (_la - 346)) & 3221766153) !== 0) || _la === 380 || _la === 431 || _la === 443 || _la === 480 || _la === 490 || ((((_la - 520)) & ~0x1F) === 0 && ((1 << (_la - 520)) & 541) !== 0) || _la === 588 || ((((_la - 640)) & ~0x1F) === 0 && ((1 << (_la - 640)) & 34341021) !== 0) || ((((_la - 823)) & ~0x1F) === 0 && ((1 << (_la - 823)) & 1029) !== 0) || _la === 882) { { - this.state = 1205; + this.state = 1260; this.tableOption(); - this.state = 1212; + this.state = 1267; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & 65541) !== 0) || _la === 82 || _la === 181 || _la === 224 || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & 67141639) !== 0) || ((((_la - 346)) & ~0x1F) === 0 && ((1 << (_la - 346)) & 3221766153) !== 0) || _la === 380 || _la === 431 || _la === 443 || _la === 480 || _la === 490 || ((((_la - 520)) & ~0x1F) === 0 && ((1 << (_la - 520)) & 541) !== 0) || _la === 588 || ((((_la - 640)) & ~0x1F) === 0 && ((1 << (_la - 640)) & 34341021) !== 0) || ((((_la - 823)) & ~0x1F) === 0 && ((1 << (_la - 823)) & 1029) !== 0) || _la === 868 || _la === 882) { { { - this.state = 1207; + this.state = 1262; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 1206; + this.state = 1261; this.match(MySqlParser.COMMA); } } - this.state = 1209; + this.state = 1264; this.tableOption(); } } - this.state = 1214; + this.state = 1269; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1218; + this.state = 1273; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 1217; + this.state = 1272; this.partitionDefinitions(); } } - this.state = 1221; + this.state = 1276; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79 || _la === 143) { { - this.state = 1220; + this.state = 1275; _la = this.tokenStream.LA(1); if(!(_la === 79 || _la === 143)) { this.errorHandler.recoverInline(this); @@ -4015,17 +4799,17 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1224; + this.state = 1279; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 1223; + this.state = 1278; this.match(MySqlParser.KW_AS); } } - this.state = 1226; + this.state = 1281; this.selectStatement(); } break; @@ -4033,52 +4817,52 @@ export class MySqlParser extends SQLParserBase { localContext = new CopyCreateTableContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1228; + this.state = 1283; this.match(MySqlParser.KW_CREATE); - this.state = 1230; + this.state = 1285; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 660) { { - this.state = 1229; + this.state = 1284; this.match(MySqlParser.KW_TEMPORARY); } } - this.state = 1232; + this.state = 1287; this.match(MySqlParser.KW_TABLE); - this.state = 1234; + this.state = 1289; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) { case 1: { - this.state = 1233; + this.state = 1288; this.ifNotExists(); } break; } - this.state = 1236; + this.state = 1291; this.tableNameCreate(); - this.state = 1244; + this.state = 1299; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_LIKE: { - this.state = 1237; + this.state = 1292; this.match(MySqlParser.KW_LIKE); - this.state = 1238; + this.state = 1293; this.tableName(); } break; case MySqlParser.LR_BRACKET: { - this.state = 1239; + this.state = 1294; this.match(MySqlParser.LR_BRACKET); - this.state = 1240; + this.state = 1295; this.match(MySqlParser.KW_LIKE); - this.state = 1241; + this.state = 1296; this.tableName(); - this.state = 1242; + this.state = 1297; this.match(MySqlParser.RR_BRACKET); } break; @@ -4091,76 +4875,76 @@ export class MySqlParser extends SQLParserBase { localContext = new ColumnCreateTableContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1246; + this.state = 1301; this.match(MySqlParser.KW_CREATE); - this.state = 1248; + this.state = 1303; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 660) { { - this.state = 1247; + this.state = 1302; this.match(MySqlParser.KW_TEMPORARY); } } - this.state = 1250; + this.state = 1305; this.match(MySqlParser.KW_TABLE); - this.state = 1252; + this.state = 1307; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 60, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context) ) { case 1: { - this.state = 1251; + this.state = 1306; this.ifNotExists(); } break; } - this.state = 1254; + this.state = 1309; this.tableNameCreate(); - this.state = 1255; + this.state = 1310; this.createDefinitions(); - this.state = 1266; + this.state = 1321; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 63, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context) ) { case 1: { - this.state = 1256; + this.state = 1311; this.tableOption(); - this.state = 1263; + this.state = 1318; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 62, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1258; + this.state = 1313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 1257; + this.state = 1312; this.match(MySqlParser.COMMA); } } - this.state = 1260; + this.state = 1315; this.tableOption(); } } } - this.state = 1265; + this.state = 1320; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 62, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 71, this.context); } } break; } - this.state = 1269; + this.state = 1324; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 1268; + this.state = 1323; this.partitionDefinitions(); } } @@ -4185,117 +4969,117 @@ export class MySqlParser extends SQLParserBase { } public createTablespaceInnodb(): CreateTablespaceInnodbContext { let localContext = new CreateTablespaceInnodbContext(this.context, this.state); - this.enterRule(localContext, 40, MySqlParser.RULE_createTablespaceInnodb); + this.enterRule(localContext, 44, MySqlParser.RULE_createTablespaceInnodb); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1273; + this.state = 1328; this.match(MySqlParser.KW_CREATE); - this.state = 1275; + this.state = 1330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 180) { { - this.state = 1274; + this.state = 1329; this.match(MySqlParser.KW_UNDO); } } - this.state = 1277; + this.state = 1332; this.match(MySqlParser.KW_TABLESPACE); - this.state = 1278; + this.state = 1333; this.tablespaceNameCreate(); - this.state = 1282; + this.state = 1337; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 1279; + this.state = 1334; this.match(MySqlParser.KW_ADD); - this.state = 1280; + this.state = 1335; this.match(MySqlParser.KW_DATAFILE); - this.state = 1281; + this.state = 1336; localContext._datafile = this.match(MySqlParser.STRING_LITERAL); } } - this.state = 1289; + this.state = 1344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 314) { { - this.state = 1284; + this.state = 1339; this.match(MySqlParser.KW_AUTOEXTEND_SIZE); - this.state = 1286; + this.state = 1341; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1285; + this.state = 1340; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1288; + this.state = 1343; localContext._autoextendSize = this.fileSizeLiteral(); } } - this.state = 1294; + this.state = 1349; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 399) { { - this.state = 1291; + this.state = 1346; this.match(MySqlParser.KW_FILE_BLOCK_SIZE); - this.state = 1292; + this.state = 1347; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 1293; + this.state = 1348; localContext._fileBlockSize = this.fileSizeLiteral(); } } - this.state = 1301; + this.state = 1356; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 380) { { - this.state = 1296; + this.state = 1351; this.match(MySqlParser.KW_ENGINE); - this.state = 1298; + this.state = 1353; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1297; + this.state = 1352; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1300; + this.state = 1355; this.engineName(); } } - this.state = 1308; + this.state = 1363; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 825) { { - this.state = 1303; + this.state = 1358; this.match(MySqlParser.KW_ENGINE_ATTRIBUTE); - this.state = 1305; + this.state = 1360; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1304; + this.state = 1359; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1307; + this.state = 1362; this.match(MySqlParser.STRING_LITERAL); } } @@ -4318,196 +5102,196 @@ export class MySqlParser extends SQLParserBase { } public createTablespaceNdb(): CreateTablespaceNdbContext { let localContext = new CreateTablespaceNdbContext(this.context, this.state); - this.enterRule(localContext, 42, MySqlParser.RULE_createTablespaceNdb); + this.enterRule(localContext, 46, MySqlParser.RULE_createTablespaceNdb); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1310; + this.state = 1365; this.match(MySqlParser.KW_CREATE); - this.state = 1312; + this.state = 1367; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 180) { { - this.state = 1311; + this.state = 1366; this.match(MySqlParser.KW_UNDO); } } - this.state = 1314; + this.state = 1369; this.match(MySqlParser.KW_TABLESPACE); - this.state = 1315; + this.state = 1370; this.tablespaceNameCreate(); - this.state = 1316; + this.state = 1371; this.match(MySqlParser.KW_ADD); - this.state = 1317; + this.state = 1372; this.match(MySqlParser.KW_DATAFILE); - this.state = 1318; + this.state = 1373; localContext._datafile = this.match(MySqlParser.STRING_LITERAL); - this.state = 1319; + this.state = 1374; this.match(MySqlParser.KW_USE); - this.state = 1320; + this.state = 1375; this.match(MySqlParser.KW_LOGFILE); - this.state = 1321; + this.state = 1376; this.match(MySqlParser.KW_GROUP); - this.state = 1322; + this.state = 1377; localContext._logfileGroupName = this.uid(); - this.state = 1328; + this.state = 1383; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 393) { { - this.state = 1323; + this.state = 1378; this.match(MySqlParser.KW_EXTENT_SIZE); - this.state = 1325; + this.state = 1380; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1324; + this.state = 1379; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1327; + this.state = 1382; localContext._extentSize = this.fileSizeLiteral(); } } - this.state = 1335; + this.state = 1390; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 428) { { - this.state = 1330; + this.state = 1385; this.match(MySqlParser.KW_INITIAL_SIZE); - this.state = 1332; + this.state = 1387; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1331; + this.state = 1386; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1334; + this.state = 1389; localContext._initialSize = this.fileSizeLiteral(); } } - this.state = 1342; + this.state = 1397; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 314) { { - this.state = 1337; + this.state = 1392; this.match(MySqlParser.KW_AUTOEXTEND_SIZE); - this.state = 1339; + this.state = 1394; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1338; + this.state = 1393; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1341; + this.state = 1396; localContext._autoextendSize = this.fileSizeLiteral(); } } - this.state = 1349; + this.state = 1404; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 481) { { - this.state = 1344; + this.state = 1399; this.match(MySqlParser.KW_MAX_SIZE); - this.state = 1346; + this.state = 1401; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1345; + this.state = 1400; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1348; + this.state = 1403; localContext._maxSize = this.fileSizeLiteral(); } } - this.state = 1356; + this.state = 1411; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 504) { { - this.state = 1351; + this.state = 1406; this.match(MySqlParser.KW_NODEGROUP); - this.state = 1353; + this.state = 1408; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1352; + this.state = 1407; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1355; + this.state = 1410; localContext._nodegroup = this.uid(); } } - this.state = 1359; + this.state = 1414; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 687) { { - this.state = 1358; + this.state = 1413; this.match(MySqlParser.KW_WAIT); } } - this.state = 1366; + this.state = 1421; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 340) { { - this.state = 1361; + this.state = 1416; this.match(MySqlParser.KW_COMMENT); - this.state = 1363; + this.state = 1418; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1362; + this.state = 1417; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1365; + this.state = 1420; localContext._comment = this.match(MySqlParser.STRING_LITERAL); } } - this.state = 1368; + this.state = 1423; this.match(MySqlParser.KW_ENGINE); - this.state = 1370; + this.state = 1425; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1369; + this.state = 1424; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1372; + this.state = 1427; this.engineName(); } } @@ -4527,38 +5311,48 @@ export class MySqlParser extends SQLParserBase { } public createTrigger(): CreateTriggerContext { let localContext = new CreateTriggerContext(this.context, this.state); - this.enterRule(localContext, 44, MySqlParser.RULE_createTrigger); + this.enterRule(localContext, 48, MySqlParser.RULE_createTrigger); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1374; + this.state = 1429; this.match(MySqlParser.KW_CREATE); - this.state = 1376; + this.state = 1431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 1375; + this.state = 1430; this.ownerStatement(); } } - this.state = 1378; + this.state = 1434; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 78) { + { + this.state = 1433; + this.ifNotExists(); + } + } + + this.state = 1436; this.match(MySqlParser.KW_TRIGGER); - this.state = 1380; + this.state = 1438; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 91, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 101, this.context) ) { case 1: { - this.state = 1379; + this.state = 1437; this.ifNotExists(); } break; } - this.state = 1382; + this.state = 1440; localContext._trigger_name = this.fullId(); - this.state = 1383; + this.state = 1441; localContext._triggerTime = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 16 || _la === 306)) { @@ -4568,7 +5362,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1384; + this.state = 1442; localContext._triggerEvent = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 44 || _la === 86 || _la === 185)) { @@ -4578,22 +5372,22 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1385; + this.state = 1443; this.match(MySqlParser.KW_ON); - this.state = 1386; + this.state = 1444; this.tableName(); - this.state = 1387; + this.state = 1445; this.match(MySqlParser.KW_FOR); - this.state = 1388; + this.state = 1446; this.match(MySqlParser.KW_EACH); - this.state = 1389; + this.state = 1447; this.match(MySqlParser.KW_ROW); - this.state = 1392; + this.state = 1450; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 92, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 102, this.context) ) { case 1: { - this.state = 1390; + this.state = 1448; localContext._triggerPlace = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 406 || _la === 538)) { @@ -4603,12 +5397,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1391; + this.state = 1449; localContext._other_trigger_name = this.fullId(); } break; } - this.state = 1394; + this.state = 1452; this.routineBody(); } } @@ -4628,23 +5422,23 @@ export class MySqlParser extends SQLParserBase { } public withClause(): WithClauseContext { let localContext = new WithClauseContext(this.context, this.state); - this.enterRule(localContext, 46, MySqlParser.RULE_withClause); + this.enterRule(localContext, 50, MySqlParser.RULE_withClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 1396; + this.state = 1454; this.match(MySqlParser.KW_WITH); - this.state = 1398; + this.state = 1456; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 93, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 103, this.context) ) { case 1: { - this.state = 1397; + this.state = 1455; this.match(MySqlParser.KW_RECURSIVE); } break; } - this.state = 1400; + this.state = 1458; this.commonTableExpressions(); } } @@ -4664,59 +5458,59 @@ export class MySqlParser extends SQLParserBase { } public commonTableExpressions(): CommonTableExpressionsContext { let localContext = new CommonTableExpressionsContext(this.context, this.state); - this.enterRule(localContext, 48, MySqlParser.RULE_commonTableExpressions); + this.enterRule(localContext, 52, MySqlParser.RULE_commonTableExpressions); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1402; + this.state = 1460; localContext._cteName = this.uid(); - this.state = 1414; + this.state = 1472; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 1403; + this.state = 1461; this.match(MySqlParser.LR_BRACKET); - this.state = 1404; + this.state = 1462; localContext._cteColumnName = this.uid(); - this.state = 1409; + this.state = 1467; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 1405; + this.state = 1463; this.match(MySqlParser.COMMA); - this.state = 1406; + this.state = 1464; localContext._cteColumnName = this.uid(); } } - this.state = 1411; + this.state = 1469; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1412; + this.state = 1470; this.match(MySqlParser.RR_BRACKET); } } - this.state = 1416; + this.state = 1474; this.match(MySqlParser.KW_AS); - this.state = 1417; + this.state = 1475; this.match(MySqlParser.LR_BRACKET); - this.state = 1418; + this.state = 1476; this.dmlStatement(); - this.state = 1419; + this.state = 1477; this.match(MySqlParser.RR_BRACKET); - this.state = 1422; + this.state = 1480; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 96, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 106, this.context) ) { case 1: { - this.state = 1420; + this.state = 1478; this.match(MySqlParser.COMMA); - this.state = 1421; + this.state = 1479; this.commonTableExpressions(); } break; @@ -4739,33 +5533,33 @@ export class MySqlParser extends SQLParserBase { } public createView(): CreateViewContext { let localContext = new CreateViewContext(this.context, this.state); - this.enterRule(localContext, 50, MySqlParser.RULE_createView); + this.enterRule(localContext, 54, MySqlParser.RULE_createView); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1424; + this.state = 1482; this.match(MySqlParser.KW_CREATE); - this.state = 1426; + this.state = 1484; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 124) { { - this.state = 1425; + this.state = 1483; this.orReplace(); } } - this.state = 1431; + this.state = 1489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 308) { { - this.state = 1428; + this.state = 1486; this.match(MySqlParser.KW_ALGORITHM); - this.state = 1429; + this.state = 1487; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 1430; + this.state = 1488; localContext._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 486 || _la === 661 || _la === 670)) { @@ -4778,26 +5572,26 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1434; + this.state = 1492; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 1433; + this.state = 1491; this.ownerStatement(); } } - this.state = 1439; + this.state = 1497; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 162) { { - this.state = 1436; + this.state = 1494; this.match(MySqlParser.KW_SQL); - this.state = 1437; + this.state = 1495; this.match(MySqlParser.KW_SECURITY); - this.state = 1438; + this.state = 1496; localContext._secContext = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 364 || _la === 436)) { @@ -4810,92 +5604,92 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1441; + this.state = 1499; this.match(MySqlParser.KW_VIEW); - this.state = 1442; + this.state = 1500; this.viewNameCreate(); - this.state = 1454; + this.state = 1512; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 1443; + this.state = 1501; this.match(MySqlParser.LR_BRACKET); - this.state = 1444; + this.state = 1502; this.columnNameCreate(); - this.state = 1449; + this.state = 1507; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 1445; + this.state = 1503; this.match(MySqlParser.COMMA); - this.state = 1446; + this.state = 1504; this.columnNameCreate(); } } - this.state = 1451; + this.state = 1509; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1452; + this.state = 1510; this.match(MySqlParser.RR_BRACKET); } } - this.state = 1456; + this.state = 1514; this.match(MySqlParser.KW_AS); - this.state = 1476; + this.state = 1534; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 107, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 117, this.context) ) { case 1: { - this.state = 1457; + this.state = 1515; this.match(MySqlParser.LR_BRACKET); - this.state = 1459; + this.state = 1517; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 194) { { - this.state = 1458; + this.state = 1516; this.withClause(); } } - this.state = 1461; + this.state = 1519; this.selectStatement(); - this.state = 1462; + this.state = 1520; this.match(MySqlParser.RR_BRACKET); } break; case 2: { - this.state = 1465; + this.state = 1523; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 194) { { - this.state = 1464; + this.state = 1522; this.withClause(); } } - this.state = 1467; + this.state = 1525; this.selectStatement(); - this.state = 1474; + this.state = 1532; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 106, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 116, this.context) ) { case 1: { - this.state = 1468; + this.state = 1526; this.match(MySqlParser.KW_WITH); - this.state = 1470; + this.state = 1528; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 325 || _la === 450) { { - this.state = 1469; + this.state = 1527; localContext._checkOption = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 325 || _la === 450)) { @@ -4908,9 +5702,9 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1472; + this.state = 1530; this.match(MySqlParser.KW_CHECK); - this.state = 1473; + this.state = 1531; this.match(MySqlParser.KW_OPTION); } break; @@ -4936,38 +5730,38 @@ export class MySqlParser extends SQLParserBase { } public createDatabaseOption(): CreateDatabaseOptionContext { let localContext = new CreateDatabaseOptionContext(this.context, this.state); - this.enterRule(localContext, 52, MySqlParser.RULE_createDatabaseOption); + this.enterRule(localContext, 56, MySqlParser.RULE_createDatabaseOption); let _la: number; try { - this.state = 1511; + this.state = 1569; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 116, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 126, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1479; + this.state = 1537; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 1478; + this.state = 1536; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 1481; + this.state = 1539; this.charSet(); - this.state = 1483; + this.state = 1541; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1482; + this.state = 1540; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1487; + this.state = 1545; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BINARY: @@ -5015,13 +5809,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: case MySqlParser.STRING_LITERAL: { - this.state = 1485; + this.state = 1543; this.charsetName(); } break; case MySqlParser.KW_DEFAULT: { - this.state = 1486; + this.state = 1544; this.match(MySqlParser.KW_DEFAULT); } break; @@ -5033,79 +5827,79 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1490; + this.state = 1548; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 1489; + this.state = 1547; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 1492; + this.state = 1550; this.match(MySqlParser.KW_COLLATE); - this.state = 1494; + this.state = 1552; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1493; + this.state = 1551; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1496; + this.state = 1554; this.collationName(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1498; + this.state = 1556; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 1497; + this.state = 1555; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 1500; + this.state = 1558; this.match(MySqlParser.KW_ENCRYPTION); - this.state = 1502; + this.state = 1560; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1501; + this.state = 1559; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1504; + this.state = 1562; this.match(MySqlParser.STRING_LITERAL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1505; + this.state = 1563; this.match(MySqlParser.KW_READ); - this.state = 1506; + this.state = 1564; this.match(MySqlParser.KW_ONLY); - this.state = 1508; + this.state = 1566; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1507; + this.state = 1565; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1510; + this.state = 1568; _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 871 || _la === 872)) { this.errorHandler.recoverInline(this); @@ -5134,33 +5928,33 @@ export class MySqlParser extends SQLParserBase { } public charSet(): CharSetContext { let localContext = new CharSetContext(this.context, this.state); - this.enterRule(localContext, 54, MySqlParser.RULE_charSet); + this.enterRule(localContext, 58, MySqlParser.RULE_charSet); try { - this.state = 1518; + this.state = 1576; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CHARACTER: this.enterOuterAlt(localContext, 1); { - this.state = 1513; + this.state = 1571; this.match(MySqlParser.KW_CHARACTER); - this.state = 1514; + this.state = 1572; this.match(MySqlParser.KW_SET); } break; case MySqlParser.KW_CHARSET: this.enterOuterAlt(localContext, 2); { - this.state = 1515; + this.state = 1573; this.match(MySqlParser.KW_CHARSET); } break; case MySqlParser.KW_CHAR: this.enterOuterAlt(localContext, 3); { - this.state = 1516; + this.state = 1574; this.match(MySqlParser.KW_CHAR); - this.state = 1517; + this.state = 1575; this.match(MySqlParser.KW_SET); } break; @@ -5184,12 +5978,12 @@ export class MySqlParser extends SQLParserBase { } public currentUserExpression(): CurrentUserExpressionContext { let localContext = new CurrentUserExpressionContext(this.context, this.state); - this.enterRule(localContext, 56, MySqlParser.RULE_currentUserExpression); + this.enterRule(localContext, 60, MySqlParser.RULE_currentUserExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1520; + this.state = 1578; _la = this.tokenStream.LA(1); if(!(_la === 37 || _la === 678)) { this.errorHandler.recoverInline(this); @@ -5198,14 +5992,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1523; + this.state = 1581; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 118, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 128, this.context) ) { case 1: { - this.state = 1521; + this.state = 1579; this.match(MySqlParser.LR_BRACKET); - this.state = 1522; + this.state = 1580; this.match(MySqlParser.RR_BRACKET); } break; @@ -5228,26 +6022,26 @@ export class MySqlParser extends SQLParserBase { } public ownerStatement(): OwnerStatementContext { let localContext = new OwnerStatementContext(this.context, this.state); - this.enterRule(localContext, 58, MySqlParser.RULE_ownerStatement); + this.enterRule(localContext, 62, MySqlParser.RULE_ownerStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 1525; + this.state = 1583; this.match(MySqlParser.KW_DEFINER); - this.state = 1526; + this.state = 1584; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 1529; + this.state = 1587; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 119, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 129, this.context) ) { case 1: { - this.state = 1527; + this.state = 1585; this.userName(); } break; case 2: { - this.state = 1528; + this.state = 1586; this.currentUserExpression(); } break; @@ -5270,31 +6064,31 @@ export class MySqlParser extends SQLParserBase { } public scheduleExpression(): ScheduleExpressionContext { let localContext = new ScheduleExpressionContext(this.context, this.state); - this.enterRule(localContext, 60, MySqlParser.RULE_scheduleExpression); + this.enterRule(localContext, 64, MySqlParser.RULE_scheduleExpression); let _la: number; try { - this.state = 1565; + this.state = 1623; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_AT: localContext = new PreciseScheduleContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1531; + this.state = 1589; this.match(MySqlParser.KW_AT); - this.state = 1532; + this.state = 1590; this.timestampValue(); - this.state = 1536; + this.state = 1594; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 853) { { { - this.state = 1533; + this.state = 1591; this.intervalExpr(); } } - this.state = 1538; + this.state = 1596; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -5304,74 +6098,74 @@ export class MySqlParser extends SQLParserBase { localContext = new IntervalScheduleContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1539; + this.state = 1597; this.match(MySqlParser.KW_EVERY); - this.state = 1542; + this.state = 1600; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 121, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 131, this.context) ) { case 1: { - this.state = 1540; + this.state = 1598; this.decimalLiteral(); } break; case 2: { - this.state = 1541; + this.state = 1599; this.expression(0); } break; } - this.state = 1544; + this.state = 1602; this.intervalType(); - this.state = 1553; + this.state = 1611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 641) { { - this.state = 1545; + this.state = 1603; this.match(MySqlParser.KW_STARTS); - this.state = 1546; + this.state = 1604; (localContext as IntervalScheduleContext)._startTimestamp = this.timestampValue(); - this.state = 1550; + this.state = 1608; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 853) { { { - this.state = 1547; + this.state = 1605; (localContext as IntervalScheduleContext)._intervalExpr = this.intervalExpr(); (localContext as IntervalScheduleContext)._startIntervals.push((localContext as IntervalScheduleContext)._intervalExpr); } } - this.state = 1552; + this.state = 1610; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1563; + this.state = 1621; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 379) { { - this.state = 1555; + this.state = 1613; this.match(MySqlParser.KW_ENDS); - this.state = 1556; + this.state = 1614; (localContext as IntervalScheduleContext)._endTimestamp = this.timestampValue(); - this.state = 1560; + this.state = 1618; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 853) { { { - this.state = 1557; + this.state = 1615; (localContext as IntervalScheduleContext)._intervalExpr = this.intervalExpr(); (localContext as IntervalScheduleContext)._endIntervals.push((localContext as IntervalScheduleContext)._intervalExpr); } } - this.state = 1562; + this.state = 1620; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -5400,36 +6194,36 @@ export class MySqlParser extends SQLParserBase { } public timestampValue(): TimestampValueContext { let localContext = new TimestampValueContext(this.context, this.state); - this.enterRule(localContext, 62, MySqlParser.RULE_timestampValue); + this.enterRule(localContext, 66, MySqlParser.RULE_timestampValue); try { - this.state = 1571; + this.state = 1629; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 127, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 137, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1567; + this.state = 1625; this.match(MySqlParser.KW_CURRENT_TIMESTAMP); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1568; + this.state = 1626; this.stringLiteral(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1569; + this.state = 1627; this.decimalLiteral(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1570; + this.state = 1628; this.expression(0); } break; @@ -5451,31 +6245,31 @@ export class MySqlParser extends SQLParserBase { } public intervalExpr(): IntervalExprContext { let localContext = new IntervalExprContext(this.context, this.state); - this.enterRule(localContext, 64, MySqlParser.RULE_intervalExpr); + this.enterRule(localContext, 68, MySqlParser.RULE_intervalExpr); try { this.enterOuterAlt(localContext, 1); { - this.state = 1573; + this.state = 1631; this.match(MySqlParser.PLUS); - this.state = 1574; + this.state = 1632; this.match(MySqlParser.KW_INTERVAL); - this.state = 1577; + this.state = 1635; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 128, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 138, this.context) ) { case 1: { - this.state = 1575; + this.state = 1633; this.decimalLiteral(); } break; case 2: { - this.state = 1576; + this.state = 1634; this.expression(0); } break; } - this.state = 1579; + this.state = 1637; this.intervalType(); } } @@ -5495,9 +6289,9 @@ export class MySqlParser extends SQLParserBase { } public intervalType(): IntervalTypeContext { let localContext = new IntervalTypeContext(this.context, this.state); - this.enterRule(localContext, 66, MySqlParser.RULE_intervalType); + this.enterRule(localContext, 70, MySqlParser.RULE_intervalType); try { - this.state = 1594; + this.state = 1652; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_QUARTER: @@ -5510,91 +6304,91 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_MICROSECOND: this.enterOuterAlt(localContext, 1); { - this.state = 1581; + this.state = 1639; this.intervalTypeBase(); } break; case MySqlParser.KW_YEAR: this.enterOuterAlt(localContext, 2); { - this.state = 1582; + this.state = 1640; this.match(MySqlParser.KW_YEAR); } break; case MySqlParser.KW_YEAR_MONTH: this.enterOuterAlt(localContext, 3); { - this.state = 1583; + this.state = 1641; this.match(MySqlParser.KW_YEAR_MONTH); } break; case MySqlParser.KW_DAY_HOUR: this.enterOuterAlt(localContext, 4); { - this.state = 1584; + this.state = 1642; this.match(MySqlParser.KW_DAY_HOUR); } break; case MySqlParser.KW_DAY_MINUTE: this.enterOuterAlt(localContext, 5); { - this.state = 1585; + this.state = 1643; this.match(MySqlParser.KW_DAY_MINUTE); } break; case MySqlParser.KW_DAY_SECOND: this.enterOuterAlt(localContext, 6); { - this.state = 1586; + this.state = 1644; this.match(MySqlParser.KW_DAY_SECOND); } break; case MySqlParser.KW_HOUR_MINUTE: this.enterOuterAlt(localContext, 7); { - this.state = 1587; + this.state = 1645; this.match(MySqlParser.KW_HOUR_MINUTE); } break; case MySqlParser.KW_HOUR_SECOND: this.enterOuterAlt(localContext, 8); { - this.state = 1588; + this.state = 1646; this.match(MySqlParser.KW_HOUR_SECOND); } break; case MySqlParser.KW_MINUTE_SECOND: this.enterOuterAlt(localContext, 9); { - this.state = 1589; + this.state = 1647; this.match(MySqlParser.KW_MINUTE_SECOND); } break; case MySqlParser.KW_SECOND_MICROSECOND: this.enterOuterAlt(localContext, 10); { - this.state = 1590; + this.state = 1648; this.match(MySqlParser.KW_SECOND_MICROSECOND); } break; case MySqlParser.KW_MINUTE_MICROSECOND: this.enterOuterAlt(localContext, 11); { - this.state = 1591; + this.state = 1649; this.match(MySqlParser.KW_MINUTE_MICROSECOND); } break; case MySqlParser.KW_HOUR_MICROSECOND: this.enterOuterAlt(localContext, 12); { - this.state = 1592; + this.state = 1650; this.match(MySqlParser.KW_HOUR_MICROSECOND); } break; case MySqlParser.KW_DAY_MICROSECOND: this.enterOuterAlt(localContext, 13); { - this.state = 1593; + this.state = 1651; this.match(MySqlParser.KW_DAY_MICROSECOND); } break; @@ -5618,33 +6412,33 @@ export class MySqlParser extends SQLParserBase { } public enableType(): EnableTypeContext { let localContext = new EnableTypeContext(this.context, this.state); - this.enterRule(localContext, 68, MySqlParser.RULE_enableType); + this.enterRule(localContext, 72, MySqlParser.RULE_enableType); try { - this.state = 1601; + this.state = 1659; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 130, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 140, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1596; + this.state = 1654; this.match(MySqlParser.KW_ENABLE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1597; + this.state = 1655; this.match(MySqlParser.KW_DISABLE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1598; + this.state = 1656; this.match(MySqlParser.KW_DISABLE); - this.state = 1599; + this.state = 1657; this.match(MySqlParser.KW_ON); - this.state = 1600; + this.state = 1658; this.match(MySqlParser.KW_SLAVE); } break; @@ -5666,14 +6460,14 @@ export class MySqlParser extends SQLParserBase { } public indexType(): IndexTypeContext { let localContext = new IndexTypeContext(this.context, this.state); - this.enterRule(localContext, 70, MySqlParser.RULE_indexType); + this.enterRule(localContext, 74, MySqlParser.RULE_indexType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1603; + this.state = 1661; this.match(MySqlParser.KW_USING); - this.state = 1604; + this.state = 1662; _la = this.tokenStream.LA(1); if(!(_la === 323 || _la === 418)) { this.errorHandler.recoverInline(this); @@ -5700,55 +6494,55 @@ export class MySqlParser extends SQLParserBase { } public indexOption(): IndexOptionContext { let localContext = new IndexOptionContext(this.context, this.state); - this.enterRule(localContext, 72, MySqlParser.RULE_indexOption); + this.enterRule(localContext, 76, MySqlParser.RULE_indexOption); let _la: number; try { - this.state = 1628; + this.state = 1686; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_KEY_BLOCK_SIZE: this.enterOuterAlt(localContext, 1); { - this.state = 1606; + this.state = 1664; this.match(MySqlParser.KW_KEY_BLOCK_SIZE); - this.state = 1608; + this.state = 1666; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1607; + this.state = 1665; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1610; + this.state = 1668; this.fileSizeLiteral(); } break; case MySqlParser.KW_USING: this.enterOuterAlt(localContext, 2); { - this.state = 1611; + this.state = 1669; this.indexType(); } break; case MySqlParser.KW_WITH: this.enterOuterAlt(localContext, 3); { - this.state = 1612; + this.state = 1670; this.match(MySqlParser.KW_WITH); - this.state = 1613; + this.state = 1671; this.match(MySqlParser.KW_PARSER); - this.state = 1614; + this.state = 1672; localContext._parserName = this.uid(); } break; case MySqlParser.KW_COMMENT: this.enterOuterAlt(localContext, 4); { - this.state = 1615; + this.state = 1673; this.match(MySqlParser.KW_COMMENT); - this.state = 1616; + this.state = 1674; this.match(MySqlParser.STRING_LITERAL); } break; @@ -5756,7 +6550,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_VISIBLE: this.enterOuterAlt(localContext, 5); { - this.state = 1617; + this.state = 1675; _la = this.tokenStream.LA(1); if(!(_la === 435 || _la === 686)) { this.errorHandler.recoverInline(this); @@ -5770,38 +6564,38 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_ENGINE_ATTRIBUTE: this.enterOuterAlt(localContext, 6); { - this.state = 1618; + this.state = 1676; this.match(MySqlParser.KW_ENGINE_ATTRIBUTE); - this.state = 1620; + this.state = 1678; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1619; + this.state = 1677; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1622; + this.state = 1680; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE: this.enterOuterAlt(localContext, 7); { - this.state = 1623; + this.state = 1681; this.match(MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE); - this.state = 1625; + this.state = 1683; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1624; + this.state = 1682; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1627; + this.state = 1685; this.match(MySqlParser.STRING_LITERAL); } break; @@ -5825,17 +6619,17 @@ export class MySqlParser extends SQLParserBase { } public procedureParameter(): ProcedureParameterContext { let localContext = new ProcedureParameterContext(this.context, this.state); - this.enterRule(localContext, 74, MySqlParser.RULE_procedureParameter); + this.enterRule(localContext, 78, MySqlParser.RULE_procedureParameter); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1631; + this.state = 1689; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80 || _la === 85 || _la === 126) { { - this.state = 1630; + this.state = 1688; localContext._direction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 80 || _la === 85 || _la === 126)) { @@ -5848,9 +6642,35 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1633; + this.state = 1691; localContext._paramName = this.uid(); - this.state = 1634; + this.state = 1692; + this.dataType(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionParameter(): FunctionParameterContext { + let localContext = new FunctionParameterContext(this.context, this.state); + this.enterRule(localContext, 80, MySqlParser.RULE_functionParameter); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1694; + localContext._paramName = this.uid(); + this.state = 1695; this.dataType(); } } @@ -5870,19 +6690,19 @@ export class MySqlParser extends SQLParserBase { } public routineOption(): RoutineOptionContext { let localContext = new RoutineOptionContext(this.context, this.state); - this.enterRule(localContext, 76, MySqlParser.RULE_routineOption); + this.enterRule(localContext, 82, MySqlParser.RULE_routineOption); let _la: number; try { - this.state = 1659; + this.state = 1720; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_COMMENT: localContext = new RoutineCommentContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1636; + this.state = 1697; this.match(MySqlParser.KW_COMMENT); - this.state = 1637; + this.state = 1698; this.match(MySqlParser.STRING_LITERAL); } break; @@ -5890,9 +6710,9 @@ export class MySqlParser extends SQLParserBase { localContext = new RoutineLanguageContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1638; + this.state = 1699; this.match(MySqlParser.KW_LANGUAGE); - this.state = 1639; + this.state = 1700; this.match(MySqlParser.KW_SQL); } break; @@ -5901,17 +6721,17 @@ export class MySqlParser extends SQLParserBase { localContext = new RoutineBehaviorContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1641; + this.state = 1702; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 1640; + this.state = 1701; this.match(MySqlParser.KW_NOT); } } - this.state = 1643; + this.state = 1704; this.match(MySqlParser.KW_DETERMINISTIC); } break; @@ -5922,42 +6742,42 @@ export class MySqlParser extends SQLParserBase { localContext = new RoutineDataContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1654; + this.state = 1715; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CONTAINS: { - this.state = 1644; + this.state = 1705; this.match(MySqlParser.KW_CONTAINS); - this.state = 1645; + this.state = 1706; this.match(MySqlParser.KW_SQL); } break; case MySqlParser.KW_NO: { - this.state = 1646; + this.state = 1707; this.match(MySqlParser.KW_NO); - this.state = 1647; + this.state = 1708; this.match(MySqlParser.KW_SQL); } break; case MySqlParser.KW_READS: { - this.state = 1648; + this.state = 1709; this.match(MySqlParser.KW_READS); - this.state = 1649; + this.state = 1710; this.match(MySqlParser.KW_SQL); - this.state = 1650; + this.state = 1711; this.match(MySqlParser.KW_DATA); } break; case MySqlParser.KW_MODIFIES: { - this.state = 1651; + this.state = 1712; this.match(MySqlParser.KW_MODIFIES); - this.state = 1652; + this.state = 1713; this.match(MySqlParser.KW_SQL); - this.state = 1653; + this.state = 1714; this.match(MySqlParser.KW_DATA); } break; @@ -5970,11 +6790,11 @@ export class MySqlParser extends SQLParserBase { localContext = new RoutineSecurityContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 1656; + this.state = 1717; this.match(MySqlParser.KW_SQL); - this.state = 1657; + this.state = 1718; this.match(MySqlParser.KW_SECURITY); - this.state = 1658; + this.state = 1719; (localContext as RoutineSecurityContext)._context = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 364 || _la === 436)) { @@ -6006,71 +6826,71 @@ export class MySqlParser extends SQLParserBase { } public serverOption(): ServerOptionContext { let localContext = new ServerOptionContext(this.context, this.state); - this.enterRule(localContext, 78, MySqlParser.RULE_serverOption); + this.enterRule(localContext, 84, MySqlParser.RULE_serverOption); try { - this.state = 1675; + this.state = 1736; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_HOST: this.enterOuterAlt(localContext, 1); { - this.state = 1661; + this.state = 1722; this.match(MySqlParser.KW_HOST); - this.state = 1662; + this.state = 1723; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_DATABASE: this.enterOuterAlt(localContext, 2); { - this.state = 1663; + this.state = 1724; this.match(MySqlParser.KW_DATABASE); - this.state = 1664; + this.state = 1725; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_USER: this.enterOuterAlt(localContext, 3); { - this.state = 1665; + this.state = 1726; this.match(MySqlParser.KW_USER); - this.state = 1666; + this.state = 1727; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_PASSWORD: this.enterOuterAlt(localContext, 4); { - this.state = 1667; + this.state = 1728; this.match(MySqlParser.KW_PASSWORD); - this.state = 1668; + this.state = 1729; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_SOCKET: this.enterOuterAlt(localContext, 5); { - this.state = 1669; + this.state = 1730; this.match(MySqlParser.KW_SOCKET); - this.state = 1670; + this.state = 1731; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_OWNER: this.enterOuterAlt(localContext, 6); { - this.state = 1671; + this.state = 1732; this.match(MySqlParser.KW_OWNER); - this.state = 1672; + this.state = 1733; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_PORT: this.enterOuterAlt(localContext, 7); { - this.state = 1673; + this.state = 1734; this.match(MySqlParser.KW_PORT); - this.state = 1674; + this.state = 1735; this.decimalLiteral(); } break; @@ -6094,32 +6914,32 @@ export class MySqlParser extends SQLParserBase { } public createDefinitions(): CreateDefinitionsContext { let localContext = new CreateDefinitionsContext(this.context, this.state); - this.enterRule(localContext, 80, MySqlParser.RULE_createDefinitions); + this.enterRule(localContext, 86, MySqlParser.RULE_createDefinitions); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1677; + this.state = 1738; this.match(MySqlParser.LR_BRACKET); - this.state = 1678; + this.state = 1739; this.createDefinition(); - this.state = 1683; + this.state = 1744; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 1679; + this.state = 1740; this.match(MySqlParser.COMMA); - this.state = 1680; + this.state = 1741; this.createDefinition(); } } - this.state = 1685; + this.state = 1746; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1686; + this.state = 1747; this.match(MySqlParser.RR_BRACKET); } } @@ -6139,25 +6959,25 @@ export class MySqlParser extends SQLParserBase { } public createDefinition(): CreateDefinitionContext { let localContext = new CreateDefinitionContext(this.context, this.state); - this.enterRule(localContext, 82, MySqlParser.RULE_createDefinition); + this.enterRule(localContext, 88, MySqlParser.RULE_createDefinition); let _la: number; try { - this.state = 1771; + this.state = 1832; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 157, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 167, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1688; + this.state = 1749; this.columnNameCreate(); - this.state = 1689; + this.state = 1750; this.columnDefinition(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1691; + this.state = 1752; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -6166,39 +6986,39 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1693; + this.state = 1754; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 1692; + this.state = 1753; this.indexName(); } } - this.state = 1696; + this.state = 1757; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 1695; + this.state = 1756; this.indexType(); } } - this.state = 1698; + this.state = 1759; this.indexColumnNames(); - this.state = 1702; + this.state = 1763; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 188 || _la === 194 || _la === 340 || _la === 435 || _la === 443 || _la === 686 || _la === 825 || _la === 833) { { { - this.state = 1699; + this.state = 1760; this.indexOption(); } } - this.state = 1704; + this.state = 1765; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6207,7 +7027,7 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1705; + this.state = 1766; _la = this.tokenStream.LA(1); if(!(_la === 69 || _la === 161)) { this.errorHandler.recoverInline(this); @@ -6216,12 +7036,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1707; + this.state = 1768; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 1706; + this.state = 1767; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -6233,29 +7053,29 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1710; + this.state = 1771; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 1709; + this.state = 1770; this.indexName(); } } - this.state = 1712; + this.state = 1773; this.indexColumnNames(); - this.state = 1716; + this.state = 1777; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 188 || _la === 194 || _la === 340 || _la === 435 || _la === 443 || _la === 686 || _la === 825 || _la === 833) { { { - this.state = 1713; + this.state = 1774; this.indexOption(); } } - this.state = 1718; + this.state = 1779; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6264,43 +7084,43 @@ export class MySqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1720; + this.state = 1781; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 1719; + this.state = 1780; this.constraintSymbol(); } } - this.state = 1722; + this.state = 1783; this.match(MySqlParser.KW_PRIMARY); - this.state = 1723; + this.state = 1784; this.match(MySqlParser.KW_KEY); - this.state = 1725; + this.state = 1786; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 1724; + this.state = 1785; this.indexType(); } } - this.state = 1727; + this.state = 1788; this.indexColumnNames(); - this.state = 1731; + this.state = 1792; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 188 || _la === 194 || _la === 340 || _la === 435 || _la === 443 || _la === 686 || _la === 825 || _la === 833) { { { - this.state = 1728; + this.state = 1789; this.indexOption(); } } - this.state = 1733; + this.state = 1794; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6309,24 +7129,24 @@ export class MySqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1735; + this.state = 1796; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 1734; + this.state = 1795; this.constraintSymbol(); } } - this.state = 1737; + this.state = 1798; this.match(MySqlParser.KW_UNIQUE); - this.state = 1739; + this.state = 1800; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 1738; + this.state = 1799; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -6338,39 +7158,39 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1742; + this.state = 1803; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 1741; + this.state = 1802; this.indexName(); } } - this.state = 1745; + this.state = 1806; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 1744; + this.state = 1805; this.indexType(); } } - this.state = 1747; + this.state = 1808; this.indexColumnNames(); - this.state = 1751; + this.state = 1812; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 188 || _la === 194 || _la === 340 || _la === 435 || _la === 443 || _la === 686 || _la === 825 || _la === 833) { { { - this.state = 1748; + this.state = 1809; this.indexOption(); } } - this.state = 1753; + this.state = 1814; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -6379,53 +7199,53 @@ export class MySqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1755; + this.state = 1816; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 1754; + this.state = 1815; this.constraintSymbol(); } } - this.state = 1757; + this.state = 1818; this.match(MySqlParser.KW_FOREIGN); - this.state = 1758; + this.state = 1819; this.match(MySqlParser.KW_KEY); - this.state = 1760; + this.state = 1821; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 1759; + this.state = 1820; this.indexName(); } } - this.state = 1762; + this.state = 1823; this.indexColumnNames(); - this.state = 1763; + this.state = 1824; this.referenceDefinition(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1765; + this.state = 1826; this.match(MySqlParser.KW_CHECK); - this.state = 1766; + this.state = 1827; this.match(MySqlParser.LR_BRACKET); - this.state = 1767; + this.state = 1828; this.expression(0); - this.state = 1768; + this.state = 1829; this.match(MySqlParser.RR_BRACKET); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1770; + this.state = 1831; this.checkConstraintDefinition(); } break; @@ -6447,45 +7267,45 @@ export class MySqlParser extends SQLParserBase { } public checkConstraintDefinition(): CheckConstraintDefinitionContext { let localContext = new CheckConstraintDefinitionContext(this.context, this.state); - this.enterRule(localContext, 84, MySqlParser.RULE_checkConstraintDefinition); + this.enterRule(localContext, 90, MySqlParser.RULE_checkConstraintDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1774; + this.state = 1835; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 1773; + this.state = 1834; this.constraintSymbol(); } } - this.state = 1776; + this.state = 1837; this.match(MySqlParser.KW_CHECK); - this.state = 1777; + this.state = 1838; this.match(MySqlParser.LR_BRACKET); - this.state = 1778; + this.state = 1839; this.expression(0); - this.state = 1779; + this.state = 1840; this.match(MySqlParser.RR_BRACKET); - this.state = 1784; + this.state = 1845; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 160, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 170, this.context) ) { case 1: { - this.state = 1781; + this.state = 1842; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 1780; + this.state = 1841; this.match(MySqlParser.KW_NOT); } } - this.state = 1783; + this.state = 1844; this.match(MySqlParser.KW_ENFORCED); } break; @@ -6508,18 +7328,18 @@ export class MySqlParser extends SQLParserBase { } public constraintSymbol(): ConstraintSymbolContext { let localContext = new ConstraintSymbolContext(this.context, this.state); - this.enterRule(localContext, 86, MySqlParser.RULE_constraintSymbol); + this.enterRule(localContext, 92, MySqlParser.RULE_constraintSymbol); try { this.enterOuterAlt(localContext, 1); { - this.state = 1786; + this.state = 1847; this.match(MySqlParser.KW_CONSTRAINT); - this.state = 1788; + this.state = 1849; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 171, this.context) ) { case 1: { - this.state = 1787; + this.state = 1848; localContext._symbol_ = this.uid(); } break; @@ -6542,28 +7362,28 @@ export class MySqlParser extends SQLParserBase { } public columnDefinition(): ColumnDefinitionContext { let localContext = new ColumnDefinitionContext(this.context, this.state); - this.enterRule(localContext, 88, MySqlParser.RULE_columnDefinition); + this.enterRule(localContext, 94, MySqlParser.RULE_columnDefinition); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1790; + this.state = 1851; this.dataType(); - this.state = 1794; + this.state = 1855; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 162, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 172, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1791; + this.state = 1852; this.columnConstraint(); } } } - this.state = 1796; + this.state = 1857; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 162, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 172, this.context); } } } @@ -6583,10 +7403,10 @@ export class MySqlParser extends SQLParserBase { } public columnConstraint(): ColumnConstraintContext { let localContext = new ColumnConstraintContext(this.context, this.state); - this.enterRule(localContext, 90, MySqlParser.RULE_columnConstraint); + this.enterRule(localContext, 96, MySqlParser.RULE_columnConstraint); let _la: number; try { - this.state = 1840; + this.state = 1901; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NOT: @@ -6595,7 +7415,7 @@ export class MySqlParser extends SQLParserBase { localContext = new NullColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1797; + this.state = 1858; this.nullNotnull(); } break; @@ -6603,9 +7423,9 @@ export class MySqlParser extends SQLParserBase { localContext = new DefaultColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1798; + this.state = 1859; this.match(MySqlParser.KW_DEFAULT); - this.state = 1799; + this.state = 1860; this.defaultValue(); } break; @@ -6613,7 +7433,7 @@ export class MySqlParser extends SQLParserBase { localContext = new VisibilityColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1800; + this.state = 1861; this.match(MySqlParser.KW_VISIBLE); } break; @@ -6621,7 +7441,7 @@ export class MySqlParser extends SQLParserBase { localContext = new InvisibilityColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1801; + this.state = 1862; this.match(MySqlParser.KW_INVISIBLE); } break; @@ -6630,22 +7450,22 @@ export class MySqlParser extends SQLParserBase { localContext = new AutoIncrementColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 1806; + this.state = 1867; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_AUTO_INCREMENT: { - this.state = 1802; + this.state = 1863; this.match(MySqlParser.KW_AUTO_INCREMENT); } break; case MySqlParser.KW_ON: { - this.state = 1803; + this.state = 1864; this.match(MySqlParser.KW_ON); - this.state = 1804; + this.state = 1865; this.match(MySqlParser.KW_UPDATE); - this.state = 1805; + this.state = 1866; this.currentTimestamp(); } break; @@ -6659,17 +7479,17 @@ export class MySqlParser extends SQLParserBase { localContext = new PrimaryKeyColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 1809; + this.state = 1870; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 131) { { - this.state = 1808; + this.state = 1869; this.match(MySqlParser.KW_PRIMARY); } } - this.state = 1811; + this.state = 1872; this.match(MySqlParser.KW_KEY); } break; @@ -6677,14 +7497,14 @@ export class MySqlParser extends SQLParserBase { localContext = new UniqueKeyColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 1812; + this.state = 1873; this.match(MySqlParser.KW_UNIQUE); - this.state = 1814; + this.state = 1875; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 165, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 175, this.context) ) { case 1: { - this.state = 1813; + this.state = 1874; this.match(MySqlParser.KW_KEY); } break; @@ -6695,9 +7515,9 @@ export class MySqlParser extends SQLParserBase { localContext = new CommentColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 1816; + this.state = 1877; this.match(MySqlParser.KW_COMMENT); - this.state = 1817; + this.state = 1878; this.match(MySqlParser.STRING_LITERAL); } break; @@ -6705,9 +7525,9 @@ export class MySqlParser extends SQLParserBase { localContext = new FormatColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 1818; + this.state = 1879; this.match(MySqlParser.KW_COLUMN_FORMAT); - this.state = 1819; + this.state = 1880; (localContext as FormatColumnConstraintContext)._colformat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 374 || _la === 403)) { @@ -6723,9 +7543,9 @@ export class MySqlParser extends SQLParserBase { localContext = new StorageColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 1820; + this.state = 1881; this.match(MySqlParser.KW_STORAGE); - this.state = 1821; + this.state = 1882; (localContext as StorageColumnConstraintContext)._storageval = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 370 || _la === 802)) { @@ -6741,7 +7561,7 @@ export class MySqlParser extends SQLParserBase { localContext = new ReferenceColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 1822; + this.state = 1883; this.referenceDefinition(); } break; @@ -6749,9 +7569,9 @@ export class MySqlParser extends SQLParserBase { localContext = new CollateColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 1823; + this.state = 1884; this.match(MySqlParser.KW_COLLATE); - this.state = 1824; + this.state = 1885; this.collationName(); } break; @@ -6760,32 +7580,32 @@ export class MySqlParser extends SQLParserBase { localContext = new GeneratedColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 1827; + this.state = 1888; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 71) { { - this.state = 1825; + this.state = 1886; this.match(MySqlParser.KW_GENERATED); - this.state = 1826; + this.state = 1887; this.match(MySqlParser.KW_ALWAYS); } } - this.state = 1829; + this.state = 1890; this.match(MySqlParser.KW_AS); - this.state = 1830; + this.state = 1891; this.match(MySqlParser.LR_BRACKET); - this.state = 1831; + this.state = 1892; this.expression(0); - this.state = 1832; + this.state = 1893; this.match(MySqlParser.RR_BRACKET); - this.state = 1834; + this.state = 1895; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 648 || _la === 685) { { - this.state = 1833; + this.state = 1894; _la = this.tokenStream.LA(1); if(!(_la === 648 || _la === 685)) { this.errorHandler.recoverInline(this); @@ -6803,11 +7623,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SerialDefaultColumnConstraintContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 1836; + this.state = 1897; this.match(MySqlParser.KW_SERIAL); - this.state = 1837; + this.state = 1898; this.match(MySqlParser.KW_DEFAULT); - this.state = 1838; + this.state = 1899; this.match(MySqlParser.KW_VALUE); } break; @@ -6816,7 +7636,7 @@ export class MySqlParser extends SQLParserBase { localContext = new CheckExprContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 1839; + this.state = 1900; this.checkConstraintDefinition(); } break; @@ -6840,33 +7660,33 @@ export class MySqlParser extends SQLParserBase { } public referenceDefinition(): ReferenceDefinitionContext { let localContext = new ReferenceDefinitionContext(this.context, this.state); - this.enterRule(localContext, 92, MySqlParser.RULE_referenceDefinition); + this.enterRule(localContext, 98, MySqlParser.RULE_referenceDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1842; + this.state = 1903; this.match(MySqlParser.KW_REFERENCES); - this.state = 1843; + this.state = 1904; this.tableName(); - this.state = 1845; + this.state = 1906; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 169, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 179, this.context) ) { case 1: { - this.state = 1844; + this.state = 1905; this.indexColumnNames(); } break; } - this.state = 1849; + this.state = 1910; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 110) { { - this.state = 1847; + this.state = 1908; this.match(MySqlParser.KW_MATCH); - this.state = 1848; + this.state = 1909; localContext._matchType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 408 || _la === 526 || _la === 597)) { @@ -6879,12 +7699,12 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 1852; + this.state = 1913; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 171, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 181, this.context) ) { case 1: { - this.state = 1851; + this.state = 1912; this.referenceAction(); } break; @@ -6907,30 +7727,30 @@ export class MySqlParser extends SQLParserBase { } public referenceAction(): ReferenceActionContext { let localContext = new ReferenceActionContext(this.context, this.state); - this.enterRule(localContext, 94, MySqlParser.RULE_referenceAction); + this.enterRule(localContext, 100, MySqlParser.RULE_referenceAction); try { - this.state = 1870; + this.state = 1931; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 174, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 184, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1854; + this.state = 1915; this.match(MySqlParser.KW_ON); - this.state = 1855; + this.state = 1916; this.match(MySqlParser.KW_DELETE); - this.state = 1856; + this.state = 1917; localContext._onDelete = this.referenceControlType(); - this.state = 1860; + this.state = 1921; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 172, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 182, this.context) ) { case 1: { - this.state = 1857; + this.state = 1918; this.match(MySqlParser.KW_ON); - this.state = 1858; + this.state = 1919; this.match(MySqlParser.KW_UPDATE); - this.state = 1859; + this.state = 1920; localContext._onUpdate = this.referenceControlType(); } break; @@ -6940,22 +7760,22 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1862; + this.state = 1923; this.match(MySqlParser.KW_ON); - this.state = 1863; + this.state = 1924; this.match(MySqlParser.KW_UPDATE); - this.state = 1864; + this.state = 1925; localContext._onUpdate = this.referenceControlType(); - this.state = 1868; + this.state = 1929; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 173, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 183, this.context) ) { case 1: { - this.state = 1865; + this.state = 1926; this.match(MySqlParser.KW_ON); - this.state = 1866; + this.state = 1927; this.match(MySqlParser.KW_DELETE); - this.state = 1867; + this.state = 1928; localContext._onDelete = this.referenceControlType(); } break; @@ -6980,49 +7800,49 @@ export class MySqlParser extends SQLParserBase { } public referenceControlType(): ReferenceControlTypeContext { let localContext = new ReferenceControlTypeContext(this.context, this.state); - this.enterRule(localContext, 96, MySqlParser.RULE_referenceControlType); + this.enterRule(localContext, 102, MySqlParser.RULE_referenceControlType); try { - this.state = 1880; + this.state = 1941; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 175, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 185, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1872; + this.state = 1933; this.match(MySqlParser.KW_RESTRICT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1873; + this.state = 1934; this.match(MySqlParser.KW_CASCADE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1874; + this.state = 1935; this.match(MySqlParser.KW_SET); - this.state = 1875; + this.state = 1936; this.match(MySqlParser.KW_NULL_LITERAL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1876; + this.state = 1937; this.match(MySqlParser.KW_NO); - this.state = 1877; + this.state = 1938; this.match(MySqlParser.KW_ACTION); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1878; + this.state = 1939; this.match(MySqlParser.KW_SET); - this.state = 1879; + this.state = 1940; this.match(MySqlParser.KW_DEFAULT); } break; @@ -7044,34 +7864,34 @@ export class MySqlParser extends SQLParserBase { } public tableOption(): TableOptionContext { let localContext = new TableOptionContext(this.context, this.state); - this.enterRule(localContext, 98, MySqlParser.RULE_tableOption); + this.enterRule(localContext, 104, MySqlParser.RULE_tableOption); let _la: number; try { - this.state = 2067; + this.state = 2128; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 213, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 223, this.context) ) { case 1: localContext = new TableOptionEngineContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1882; + this.state = 1943; this.match(MySqlParser.KW_ENGINE); - this.state = 1884; + this.state = 1945; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1883; + this.state = 1944; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1887; + this.state = 1948; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 177, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { case 1: { - this.state = 1886; + this.state = 1947; this.engineName(); } break; @@ -7082,19 +7902,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionEngineAttributeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1889; + this.state = 1950; this.match(MySqlParser.KW_ENGINE_ATTRIBUTE); - this.state = 1891; + this.state = 1952; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1890; + this.state = 1951; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1893; + this.state = 1954; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7102,19 +7922,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionAutoextendSizeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1894; + this.state = 1955; this.match(MySqlParser.KW_AUTOEXTEND_SIZE); - this.state = 1896; + this.state = 1957; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1895; + this.state = 1956; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1898; + this.state = 1959; this.decimalLiteral(); } break; @@ -7122,19 +7942,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionAutoIncrementContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1899; + this.state = 1960; this.match(MySqlParser.KW_AUTO_INCREMENT); - this.state = 1901; + this.state = 1962; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1900; + this.state = 1961; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1903; + this.state = 1964; this.decimalLiteral(); } break; @@ -7142,19 +7962,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionAverageContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 1904; + this.state = 1965; this.match(MySqlParser.KW_AVG_ROW_LENGTH); - this.state = 1906; + this.state = 1967; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1905; + this.state = 1966; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1908; + this.state = 1969; this.decimalLiteral(); } break; @@ -7162,29 +7982,29 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionCharsetContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 1910; + this.state = 1971; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 1909; + this.state = 1970; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 1912; + this.state = 1973; this.charSet(); - this.state = 1914; + this.state = 1975; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1913; + this.state = 1974; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1918; + this.state = 1979; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BINARY: @@ -7232,13 +8052,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: case MySqlParser.STRING_LITERAL: { - this.state = 1916; + this.state = 1977; this.charsetName(); } break; case MySqlParser.KW_DEFAULT: { - this.state = 1917; + this.state = 1978; this.match(MySqlParser.KW_DEFAULT); } break; @@ -7251,7 +8071,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionChecksumContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 1920; + this.state = 1981; _la = this.tokenStream.LA(1); if(!(_la === 329 || _la === 522)) { this.errorHandler.recoverInline(this); @@ -7260,17 +8080,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1922; + this.state = 1983; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1921; + this.state = 1982; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1924; + this.state = 1985; (localContext as TableOptionChecksumContext)._boolValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { @@ -7286,29 +8106,29 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionCollateContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 1926; + this.state = 1987; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 1925; + this.state = 1986; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 1928; + this.state = 1989; this.match(MySqlParser.KW_COLLATE); - this.state = 1930; + this.state = 1991; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1929; + this.state = 1990; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1932; + this.state = 1993; this.collationName(); } break; @@ -7316,19 +8136,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionCommentContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 1933; + this.state = 1994; this.match(MySqlParser.KW_COMMENT); - this.state = 1935; + this.state = 1996; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1934; + this.state = 1995; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1937; + this.state = 1998; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7336,19 +8156,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionCompressionContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 1938; + this.state = 1999; this.match(MySqlParser.KW_COMPRESSION); - this.state = 1940; + this.state = 2001; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1939; + this.state = 2000; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1942; + this.state = 2003; _la = this.tokenStream.LA(1); if(!(_la === 882 || _la === 889)) { this.errorHandler.recoverInline(this); @@ -7363,19 +8183,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionConnectionContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 1943; + this.state = 2004; this.match(MySqlParser.KW_CONNECTION); - this.state = 1945; + this.state = 2006; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1944; + this.state = 2005; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1947; + this.state = 2008; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7383,7 +8203,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionDataDirectoryContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 1948; + this.state = 2009; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -7392,19 +8212,19 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1949; + this.state = 2010; this.match(MySqlParser.KW_DIRECTORY); - this.state = 1951; + this.state = 2012; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1950; + this.state = 2011; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1953; + this.state = 2014; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7412,19 +8232,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionDelayContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 1954; + this.state = 2015; this.match(MySqlParser.KW_DELAY_KEY_WRITE); - this.state = 1956; + this.state = 2017; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1955; + this.state = 2016; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1958; + this.state = 2019; (localContext as TableOptionDelayContext)._boolValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { @@ -7440,19 +8260,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionEncryptionContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 1959; + this.state = 2020; this.match(MySqlParser.KW_ENCRYPTION); - this.state = 1961; + this.state = 2022; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1960; + this.state = 2021; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1963; + this.state = 2024; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7460,7 +8280,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionPageCompressedContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 1964; + this.state = 2025; _la = this.tokenStream.LA(1); if(!(_la === 523 || _la === 882)) { this.errorHandler.recoverInline(this); @@ -7469,17 +8289,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1966; + this.state = 2027; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1965; + this.state = 2026; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1968; + this.state = 2029; _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { this.errorHandler.recoverInline(this); @@ -7494,7 +8314,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionPageCompressionLevelContext(localContext); this.enterOuterAlt(localContext, 16); { - this.state = 1969; + this.state = 2030; _la = this.tokenStream.LA(1); if(!(_la === 524 || _la === 882)) { this.errorHandler.recoverInline(this); @@ -7503,17 +8323,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1971; + this.state = 2032; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1970; + this.state = 2031; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1973; + this.state = 2034; this.decimalLiteral(); } break; @@ -7521,19 +8341,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionEncryptionKeyIdContext(localContext); this.enterOuterAlt(localContext, 17); { - this.state = 1974; + this.state = 2035; this.match(MySqlParser.KW_ENCRYPTION_KEY_ID); - this.state = 1976; + this.state = 2037; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1975; + this.state = 2036; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1978; + this.state = 2039; this.decimalLiteral(); } break; @@ -7541,21 +8361,21 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionIndexDirectoryContext(localContext); this.enterOuterAlt(localContext, 18); { - this.state = 1979; + this.state = 2040; this.match(MySqlParser.KW_INDEX); - this.state = 1980; + this.state = 2041; this.match(MySqlParser.KW_DIRECTORY); - this.state = 1982; + this.state = 2043; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1981; + this.state = 2042; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1984; + this.state = 2045; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7563,19 +8383,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionInsertMethodContext(localContext); this.enterOuterAlt(localContext, 19); { - this.state = 1985; + this.state = 2046; this.match(MySqlParser.KW_INSERT_METHOD); - this.state = 1987; + this.state = 2048; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1986; + this.state = 2047; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1989; + this.state = 2050; (localContext as TableOptionInsertMethodContext)._insertMethod = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 402 || _la === 445 || _la === 502)) { @@ -7591,19 +8411,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionKeyBlockSizeContext(localContext); this.enterOuterAlt(localContext, 20); { - this.state = 1990; + this.state = 2051; this.match(MySqlParser.KW_KEY_BLOCK_SIZE); - this.state = 1992; + this.state = 2053; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1991; + this.state = 2052; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1994; + this.state = 2055; this.fileSizeLiteral(); } break; @@ -7611,19 +8431,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionMaxRowsContext(localContext); this.enterOuterAlt(localContext, 21); { - this.state = 1995; + this.state = 2056; this.match(MySqlParser.KW_MAX_ROWS); - this.state = 1997; + this.state = 2058; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 1996; + this.state = 2057; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 1999; + this.state = 2060; this.decimalLiteral(); } break; @@ -7631,19 +8451,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionMinRowsContext(localContext); this.enterOuterAlt(localContext, 22); { - this.state = 2000; + this.state = 2061; this.match(MySqlParser.KW_MIN_ROWS); - this.state = 2002; + this.state = 2063; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2001; + this.state = 2062; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2004; + this.state = 2065; this.decimalLiteral(); } break; @@ -7651,19 +8471,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionPackKeysContext(localContext); this.enterOuterAlt(localContext, 23); { - this.state = 2005; + this.state = 2066; this.match(MySqlParser.KW_PACK_KEYS); - this.state = 2007; + this.state = 2068; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2006; + this.state = 2067; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2009; + this.state = 2070; (localContext as TableOptionPackKeysContext)._extBoolValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 871 || _la === 872)) { @@ -7679,19 +8499,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionPasswordContext(localContext); this.enterOuterAlt(localContext, 24); { - this.state = 2010; + this.state = 2071; this.match(MySqlParser.KW_PASSWORD); - this.state = 2012; + this.state = 2073; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2011; + this.state = 2072; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2014; + this.state = 2075; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7699,19 +8519,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionRowFormatContext(localContext); this.enterOuterAlt(localContext, 25); { - this.state = 2015; + this.state = 2076; this.match(MySqlParser.KW_ROW_FORMAT); - this.state = 2017; + this.state = 2078; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2016; + this.state = 2077; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2019; + this.state = 2080; (localContext as TableOptionRowFormatContext)._rowFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 342 || _la === 345 || _la === 374 || _la === 403 || _la === 554 || _la === 889)) { @@ -7727,9 +8547,9 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionStartTransactionContext(localContext); this.enterOuterAlt(localContext, 26); { - this.state = 2020; + this.state = 2081; this.match(MySqlParser.KW_START); - this.state = 2021; + this.state = 2082; this.match(MySqlParser.KW_TRANSACTION); } break; @@ -7737,19 +8557,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionSecondaryEngineAttributeContext(localContext); this.enterOuterAlt(localContext, 27); { - this.state = 2022; + this.state = 2083; this.match(MySqlParser.KW_SECONDARY_ENGINE_ATTRIBUTE); - this.state = 2024; + this.state = 2085; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2023; + this.state = 2084; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2026; + this.state = 2087; this.match(MySqlParser.STRING_LITERAL); } break; @@ -7757,19 +8577,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionRecalculationContext(localContext); this.enterOuterAlt(localContext, 28); { - this.state = 2027; + this.state = 2088; this.match(MySqlParser.KW_STATS_AUTO_RECALC); - this.state = 2029; + this.state = 2090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2028; + this.state = 2089; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2031; + this.state = 2092; (localContext as TableOptionRecalculationContext)._extBoolValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 871 || _la === 872)) { @@ -7785,19 +8605,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionPersistentContext(localContext); this.enterOuterAlt(localContext, 29); { - this.state = 2032; + this.state = 2093; this.match(MySqlParser.KW_STATS_PERSISTENT); - this.state = 2034; + this.state = 2095; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2033; + this.state = 2094; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2036; + this.state = 2097; (localContext as TableOptionPersistentContext)._extBoolValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 871 || _la === 872)) { @@ -7813,24 +8633,24 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionSamplePageContext(localContext); this.enterOuterAlt(localContext, 30); { - this.state = 2037; + this.state = 2098; this.match(MySqlParser.KW_STATS_SAMPLE_PAGES); - this.state = 2039; + this.state = 2100; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2038; + this.state = 2099; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2043; + this.state = 2104; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DEFAULT: { - this.state = 2041; + this.state = 2102; this.match(MySqlParser.KW_DEFAULT); } break; @@ -7841,7 +8661,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 2042; + this.state = 2103; this.decimalLiteral(); } break; @@ -7854,16 +8674,16 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionTablespaceContext(localContext); this.enterOuterAlt(localContext, 31); { - this.state = 2045; + this.state = 2106; this.match(MySqlParser.KW_TABLESPACE); - this.state = 2046; + this.state = 2107; this.tablespaceName(); - this.state = 2048; + this.state = 2109; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 220, this.context) ) { case 1: { - this.state = 2047; + this.state = 2108; this.tablespaceStorage(); } break; @@ -7874,11 +8694,11 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionTableTypeContext(localContext); this.enterOuterAlt(localContext, 32); { - this.state = 2050; + this.state = 2111; this.match(MySqlParser.KW_TABLE_TYPE); - this.state = 2051; + this.state = 2112; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 2052; + this.state = 2113; this.tableType(); } break; @@ -7886,7 +8706,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionTablespaceContext(localContext); this.enterOuterAlt(localContext, 33); { - this.state = 2053; + this.state = 2114; this.tablespaceStorage(); } break; @@ -7894,19 +8714,19 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionTransactionalContext(localContext); this.enterOuterAlt(localContext, 34); { - this.state = 2054; + this.state = 2115; this.match(MySqlParser.KW_TRANSACTIONAL); - this.state = 2056; + this.state = 2117; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2055; + this.state = 2116; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2058; + this.state = 2119; _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { this.errorHandler.recoverInline(this); @@ -7921,23 +8741,23 @@ export class MySqlParser extends SQLParserBase { localContext = new TableOptionUnionContext(localContext); this.enterOuterAlt(localContext, 35); { - this.state = 2059; + this.state = 2120; this.match(MySqlParser.KW_UNION); - this.state = 2061; + this.state = 2122; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2060; + this.state = 2121; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2063; + this.state = 2124; this.match(MySqlParser.LR_BRACKET); - this.state = 2064; + this.state = 2125; this.tableNames(); - this.state = 2065; + this.state = 2126; this.match(MySqlParser.RR_BRACKET); } break; @@ -7959,12 +8779,12 @@ export class MySqlParser extends SQLParserBase { } public tableType(): TableTypeContext { let localContext = new TableTypeContext(this.context, this.state); - this.enterRule(localContext, 100, MySqlParser.RULE_tableType); + this.enterRule(localContext, 106, MySqlParser.RULE_tableType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2069; + this.state = 2130; _la = this.tokenStream.LA(1); if(!(_la === 494 || _la === 506)) { this.errorHandler.recoverInline(this); @@ -7991,14 +8811,14 @@ export class MySqlParser extends SQLParserBase { } public tablespaceStorage(): TablespaceStorageContext { let localContext = new TablespaceStorageContext(this.context, this.state); - this.enterRule(localContext, 102, MySqlParser.RULE_tablespaceStorage); + this.enterRule(localContext, 108, MySqlParser.RULE_tablespaceStorage); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2071; + this.state = 2132; this.match(MySqlParser.KW_STORAGE); - this.state = 2072; + this.state = 2133; _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 370 || _la === 802)) { this.errorHandler.recoverInline(this); @@ -8025,48 +8845,48 @@ export class MySqlParser extends SQLParserBase { } public partitionDefinitions(): PartitionDefinitionsContext { let localContext = new PartitionDefinitionsContext(this.context, this.state); - this.enterRule(localContext, 104, MySqlParser.RULE_partitionDefinitions); + this.enterRule(localContext, 110, MySqlParser.RULE_partitionDefinitions); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2074; + this.state = 2135; this.match(MySqlParser.KW_PARTITION); - this.state = 2075; + this.state = 2136; this.match(MySqlParser.KW_BY); - this.state = 2076; + this.state = 2137; this.partitionFunctionDefinition(); - this.state = 2079; + this.state = 2140; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 528) { { - this.state = 2077; + this.state = 2138; this.match(MySqlParser.KW_PARTITIONS); - this.state = 2078; + this.state = 2139; localContext._count = this.decimalLiteral(); } } - this.state = 2088; + this.state = 2149; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 652) { { - this.state = 2081; + this.state = 2142; this.match(MySqlParser.KW_SUBPARTITION); - this.state = 2082; + this.state = 2143; this.match(MySqlParser.KW_BY); - this.state = 2083; + this.state = 2144; this.subpartitionFunctionDefinition(); - this.state = 2086; + this.state = 2147; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 653) { { - this.state = 2084; + this.state = 2145; this.match(MySqlParser.KW_SUBPARTITIONS); - this.state = 2085; + this.state = 2146; localContext._subCount = this.decimalLiteral(); } } @@ -8074,32 +8894,32 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2101; + this.state = 2162; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 218, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 228, this.context) ) { case 1: { - this.state = 2090; + this.state = 2151; this.match(MySqlParser.LR_BRACKET); - this.state = 2091; + this.state = 2152; this.partitionDefinition(); - this.state = 2096; + this.state = 2157; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2092; + this.state = 2153; this.match(MySqlParser.COMMA); - this.state = 2093; + this.state = 2154; this.partitionDefinition(); } } - this.state = 2098; + this.state = 2159; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2099; + this.state = 2160; this.match(MySqlParser.RR_BRACKET); } break; @@ -8122,33 +8942,33 @@ export class MySqlParser extends SQLParserBase { } public partitionFunctionDefinition(): PartitionFunctionDefinitionContext { let localContext = new PartitionFunctionDefinitionContext(this.context, this.state); - this.enterRule(localContext, 106, MySqlParser.RULE_partitionFunctionDefinition); + this.enterRule(localContext, 112, MySqlParser.RULE_partitionFunctionDefinition); let _la: number; try { - this.state = 2149; + this.state = 2210; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 225, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 235, this.context) ) { case 1: localContext = new PartitionFunctionHashContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2104; + this.state = 2165; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 101) { { - this.state = 2103; + this.state = 2164; this.match(MySqlParser.KW_LINEAR); } } - this.state = 2106; + this.state = 2167; this.match(MySqlParser.KW_HASH); - this.state = 2107; + this.state = 2168; this.match(MySqlParser.LR_BRACKET); - this.state = 2108; + this.state = 2169; this.expression(0); - this.state = 2109; + this.state = 2170; this.match(MySqlParser.RR_BRACKET); } break; @@ -8156,28 +8976,28 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionFunctionKeyContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2112; + this.state = 2173; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 101) { { - this.state = 2111; + this.state = 2172; this.match(MySqlParser.KW_LINEAR); } } - this.state = 2114; + this.state = 2175; this.match(MySqlParser.KW_KEY); - this.state = 2118; + this.state = 2179; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 308) { { - this.state = 2115; + this.state = 2176; this.match(MySqlParser.KW_ALGORITHM); - this.state = 2116; + this.state = 2177; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 2117; + this.state = 2178; (localContext as PartitionFunctionKeyContext)._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 872 || _la === 873)) { @@ -8190,19 +9010,19 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2120; + this.state = 2181; this.match(MySqlParser.LR_BRACKET); - this.state = 2122; + this.state = 2183; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 222, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 232, this.context) ) { case 1: { - this.state = 2121; + this.state = 2182; this.columnNames(); } break; } - this.state = 2124; + this.state = 2185; this.match(MySqlParser.RR_BRACKET); } break; @@ -8210,30 +9030,30 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionFunctionRangeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2125; + this.state = 2186; this.match(MySqlParser.KW_RANGE); - this.state = 2135; + this.state = 2196; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.LR_BRACKET: { - this.state = 2126; + this.state = 2187; this.match(MySqlParser.LR_BRACKET); - this.state = 2127; + this.state = 2188; this.expression(0); - this.state = 2128; + this.state = 2189; this.match(MySqlParser.RR_BRACKET); } break; case MySqlParser.KW_COLUMNS: { - this.state = 2130; + this.state = 2191; this.match(MySqlParser.KW_COLUMNS); - this.state = 2131; + this.state = 2192; this.match(MySqlParser.LR_BRACKET); - this.state = 2132; + this.state = 2193; this.columnNames(); - this.state = 2133; + this.state = 2194; this.match(MySqlParser.RR_BRACKET); } break; @@ -8246,30 +9066,30 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionFunctionListContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2137; + this.state = 2198; this.match(MySqlParser.KW_LIST); - this.state = 2147; + this.state = 2208; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.LR_BRACKET: { - this.state = 2138; + this.state = 2199; this.match(MySqlParser.LR_BRACKET); - this.state = 2139; + this.state = 2200; this.expression(0); - this.state = 2140; + this.state = 2201; this.match(MySqlParser.RR_BRACKET); } break; case MySqlParser.KW_COLUMNS: { - this.state = 2142; + this.state = 2203; this.match(MySqlParser.KW_COLUMNS); - this.state = 2143; + this.state = 2204; this.match(MySqlParser.LR_BRACKET); - this.state = 2144; + this.state = 2205; this.columnNames(); - this.state = 2145; + this.state = 2206; this.match(MySqlParser.RR_BRACKET); } break; @@ -8296,33 +9116,33 @@ export class MySqlParser extends SQLParserBase { } public subpartitionFunctionDefinition(): SubpartitionFunctionDefinitionContext { let localContext = new SubpartitionFunctionDefinitionContext(this.context, this.state); - this.enterRule(localContext, 108, MySqlParser.RULE_subpartitionFunctionDefinition); + this.enterRule(localContext, 114, MySqlParser.RULE_subpartitionFunctionDefinition); let _la: number; try { - this.state = 2172; + this.state = 2233; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 229, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 239, this.context) ) { case 1: localContext = new SubPartitionFunctionHashContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2152; + this.state = 2213; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 101) { { - this.state = 2151; + this.state = 2212; this.match(MySqlParser.KW_LINEAR); } } - this.state = 2154; + this.state = 2215; this.match(MySqlParser.KW_HASH); - this.state = 2155; + this.state = 2216; this.match(MySqlParser.LR_BRACKET); - this.state = 2156; + this.state = 2217; this.expression(0); - this.state = 2157; + this.state = 2218; this.match(MySqlParser.RR_BRACKET); } break; @@ -8330,28 +9150,28 @@ export class MySqlParser extends SQLParserBase { localContext = new SubPartitionFunctionKeyContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2160; + this.state = 2221; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 101) { { - this.state = 2159; + this.state = 2220; this.match(MySqlParser.KW_LINEAR); } } - this.state = 2162; + this.state = 2223; this.match(MySqlParser.KW_KEY); - this.state = 2166; + this.state = 2227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 308) { { - this.state = 2163; + this.state = 2224; this.match(MySqlParser.KW_ALGORITHM); - this.state = 2164; + this.state = 2225; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 2165; + this.state = 2226; (localContext as SubPartitionFunctionKeyContext)._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 872 || _la === 873)) { @@ -8364,11 +9184,11 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2168; + this.state = 2229; this.match(MySqlParser.LR_BRACKET); - this.state = 2169; + this.state = 2230; this.columnNames(); - this.state = 2170; + this.state = 2231; this.match(MySqlParser.RR_BRACKET); } break; @@ -8390,88 +9210,88 @@ export class MySqlParser extends SQLParserBase { } public partitionDefinition(): PartitionDefinitionContext { let localContext = new PartitionDefinitionContext(this.context, this.state); - this.enterRule(localContext, 110, MySqlParser.RULE_partitionDefinition); + this.enterRule(localContext, 116, MySqlParser.RULE_partitionDefinition); let _la: number; try { - this.state = 2320; + this.state = 2381; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 248, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 258, this.context) ) { case 1: localContext = new PartitionComparisonContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2174; + this.state = 2235; this.match(MySqlParser.KW_PARTITION); - this.state = 2175; + this.state = 2236; this.partitionName(); - this.state = 2176; + this.state = 2237; this.match(MySqlParser.KW_VALUES); - this.state = 2177; + this.state = 2238; this.match(MySqlParser.KW_LESS); - this.state = 2178; + this.state = 2239; this.match(MySqlParser.KW_THAN); - this.state = 2179; + this.state = 2240; this.match(MySqlParser.LR_BRACKET); - this.state = 2180; + this.state = 2241; this.partitionDefinerAtom(); - this.state = 2185; + this.state = 2246; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2181; + this.state = 2242; this.match(MySqlParser.COMMA); - this.state = 2182; + this.state = 2243; this.partitionDefinerAtom(); } } - this.state = 2187; + this.state = 2248; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2188; + this.state = 2249; this.match(MySqlParser.RR_BRACKET); - this.state = 2192; + this.state = 2253; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2189; + this.state = 2250; this.partitionOption(); } } - this.state = 2194; + this.state = 2255; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2206; + this.state = 2267; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2195; + this.state = 2256; this.match(MySqlParser.LR_BRACKET); - this.state = 2196; + this.state = 2257; this.subpartitionDefinition(); - this.state = 2201; + this.state = 2262; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2197; + this.state = 2258; this.match(MySqlParser.COMMA); - this.state = 2198; + this.state = 2259; this.subpartitionDefinition(); } } - this.state = 2203; + this.state = 2264; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2204; + this.state = 2265; this.match(MySqlParser.RR_BRACKET); } } @@ -8482,58 +9302,58 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionComparisonContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2208; + this.state = 2269; this.match(MySqlParser.KW_PARTITION); - this.state = 2209; + this.state = 2270; this.partitionName(); - this.state = 2210; + this.state = 2271; this.match(MySqlParser.KW_VALUES); - this.state = 2211; + this.state = 2272; this.match(MySqlParser.KW_LESS); - this.state = 2212; + this.state = 2273; this.match(MySqlParser.KW_THAN); - this.state = 2213; + this.state = 2274; this.partitionDefinerAtom(); - this.state = 2217; + this.state = 2278; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2214; + this.state = 2275; this.partitionOption(); } } - this.state = 2219; + this.state = 2280; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2231; + this.state = 2292; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2220; + this.state = 2281; this.match(MySqlParser.LR_BRACKET); - this.state = 2221; + this.state = 2282; this.subpartitionDefinition(); - this.state = 2226; + this.state = 2287; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2222; + this.state = 2283; this.match(MySqlParser.COMMA); - this.state = 2223; + this.state = 2284; this.subpartitionDefinition(); } } - this.state = 2228; + this.state = 2289; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2229; + this.state = 2290; this.match(MySqlParser.RR_BRACKET); } } @@ -8544,76 +9364,76 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionListAtomContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2233; + this.state = 2294; this.match(MySqlParser.KW_PARTITION); - this.state = 2234; + this.state = 2295; this.partitionName(); - this.state = 2235; + this.state = 2296; this.match(MySqlParser.KW_VALUES); - this.state = 2236; + this.state = 2297; this.match(MySqlParser.KW_IN); - this.state = 2237; + this.state = 2298; this.match(MySqlParser.LR_BRACKET); - this.state = 2238; + this.state = 2299; this.partitionDefinerAtom(); - this.state = 2243; + this.state = 2304; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2239; + this.state = 2300; this.match(MySqlParser.COMMA); - this.state = 2240; + this.state = 2301; this.partitionDefinerAtom(); } } - this.state = 2245; + this.state = 2306; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2246; + this.state = 2307; this.match(MySqlParser.RR_BRACKET); - this.state = 2250; + this.state = 2311; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2247; + this.state = 2308; this.partitionOption(); } } - this.state = 2252; + this.state = 2313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2264; + this.state = 2325; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2253; + this.state = 2314; this.match(MySqlParser.LR_BRACKET); - this.state = 2254; + this.state = 2315; this.subpartitionDefinition(); - this.state = 2259; + this.state = 2320; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2255; + this.state = 2316; this.match(MySqlParser.COMMA); - this.state = 2256; + this.state = 2317; this.subpartitionDefinition(); } } - this.state = 2261; + this.state = 2322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2262; + this.state = 2323; this.match(MySqlParser.RR_BRACKET); } } @@ -8624,76 +9444,76 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionListVectorContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2266; + this.state = 2327; this.match(MySqlParser.KW_PARTITION); - this.state = 2267; + this.state = 2328; this.partitionName(); - this.state = 2268; + this.state = 2329; this.match(MySqlParser.KW_VALUES); - this.state = 2269; + this.state = 2330; this.match(MySqlParser.KW_IN); - this.state = 2270; + this.state = 2331; this.match(MySqlParser.LR_BRACKET); - this.state = 2271; + this.state = 2332; this.partitionDefinerVector(); - this.state = 2276; + this.state = 2337; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2272; + this.state = 2333; this.match(MySqlParser.COMMA); - this.state = 2273; + this.state = 2334; this.partitionDefinerVector(); } } - this.state = 2278; + this.state = 2339; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2279; + this.state = 2340; this.match(MySqlParser.RR_BRACKET); - this.state = 2283; + this.state = 2344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2280; + this.state = 2341; this.partitionOption(); } } - this.state = 2285; + this.state = 2346; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2297; + this.state = 2358; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2286; + this.state = 2347; this.match(MySqlParser.LR_BRACKET); - this.state = 2287; + this.state = 2348; this.subpartitionDefinition(); - this.state = 2292; + this.state = 2353; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2288; + this.state = 2349; this.match(MySqlParser.COMMA); - this.state = 2289; + this.state = 2350; this.subpartitionDefinition(); } } - this.state = 2294; + this.state = 2355; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2295; + this.state = 2356; this.match(MySqlParser.RR_BRACKET); } } @@ -8704,50 +9524,50 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionSimpleContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2299; + this.state = 2360; this.match(MySqlParser.KW_PARTITION); - this.state = 2300; + this.state = 2361; this.partitionName(); - this.state = 2304; + this.state = 2365; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2301; + this.state = 2362; this.partitionOption(); } } - this.state = 2306; + this.state = 2367; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2318; + this.state = 2379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2307; + this.state = 2368; this.match(MySqlParser.LR_BRACKET); - this.state = 2308; + this.state = 2369; this.subpartitionDefinition(); - this.state = 2313; + this.state = 2374; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2309; + this.state = 2370; this.match(MySqlParser.COMMA); - this.state = 2310; + this.state = 2371; this.subpartitionDefinition(); } } - this.state = 2315; + this.state = 2376; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2316; + this.state = 2377; this.match(MySqlParser.RR_BRACKET); } } @@ -8772,29 +9592,29 @@ export class MySqlParser extends SQLParserBase { } public partitionDefinerAtom(): PartitionDefinerAtomContext { let localContext = new PartitionDefinerAtomContext(this.context, this.state); - this.enterRule(localContext, 112, MySqlParser.RULE_partitionDefinerAtom); + this.enterRule(localContext, 118, MySqlParser.RULE_partitionDefinerAtom); try { - this.state = 2325; + this.state = 2386; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 259, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2322; + this.state = 2383; this.constant(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2323; + this.state = 2384; this.expression(0); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2324; + this.state = 2385; this.match(MySqlParser.KW_MAXVALUE); } break; @@ -8816,32 +9636,32 @@ export class MySqlParser extends SQLParserBase { } public partitionDefinerVector(): PartitionDefinerVectorContext { let localContext = new PartitionDefinerVectorContext(this.context, this.state); - this.enterRule(localContext, 114, MySqlParser.RULE_partitionDefinerVector); + this.enterRule(localContext, 120, MySqlParser.RULE_partitionDefinerVector); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2327; + this.state = 2388; this.match(MySqlParser.LR_BRACKET); - this.state = 2328; + this.state = 2389; this.partitionDefinerAtom(); - this.state = 2331; + this.state = 2392; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2329; + this.state = 2390; this.match(MySqlParser.COMMA); - this.state = 2330; + this.state = 2391; this.partitionDefinerAtom(); } } - this.state = 2333; + this.state = 2394; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 868); - this.state = 2335; + this.state = 2396; this.match(MySqlParser.RR_BRACKET); } } @@ -8861,26 +9681,26 @@ export class MySqlParser extends SQLParserBase { } public subpartitionDefinition(): SubpartitionDefinitionContext { let localContext = new SubpartitionDefinitionContext(this.context, this.state); - this.enterRule(localContext, 116, MySqlParser.RULE_subpartitionDefinition); + this.enterRule(localContext, 122, MySqlParser.RULE_subpartitionDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2337; + this.state = 2398; this.match(MySqlParser.KW_SUBPARTITION); - this.state = 2338; + this.state = 2399; localContext._logicalName = this.uid(); - this.state = 2342; + this.state = 2403; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 42 || _la === 82 || _la === 340 || _la === 360 || _la === 380 || ((((_la - 480)) & ~0x1F) === 0 && ((1 << (_la - 480)) & 16778241) !== 0) || _la === 647 || _la === 658) { { { - this.state = 2339; + this.state = 2400; this.partitionOption(); } } - this.state = 2344; + this.state = 2405; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -8902,10 +9722,10 @@ export class MySqlParser extends SQLParserBase { } public partitionOption(): PartitionOptionContext { let localContext = new PartitionOptionContext(this.context, this.state); - this.enterRule(localContext, 118, MySqlParser.RULE_partitionOption); + this.enterRule(localContext, 124, MySqlParser.RULE_partitionOption); let _la: number; try { - this.state = 2393; + this.state = 2454; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DEFAULT: @@ -8914,39 +9734,39 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionEngineContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2346; + this.state = 2407; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 2345; + this.state = 2406; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 2349; + this.state = 2410; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 647) { { - this.state = 2348; + this.state = 2409; this.match(MySqlParser.KW_STORAGE); } } - this.state = 2351; + this.state = 2412; this.match(MySqlParser.KW_ENGINE); - this.state = 2353; + this.state = 2414; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2352; + this.state = 2413; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2355; + this.state = 2416; this.engineName(); } break; @@ -8954,19 +9774,19 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionCommentContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2356; + this.state = 2417; this.match(MySqlParser.KW_COMMENT); - this.state = 2358; + this.state = 2419; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2357; + this.state = 2418; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2360; + this.state = 2421; (localContext as PartitionOptionCommentContext)._comment = this.match(MySqlParser.STRING_LITERAL); } break; @@ -8974,21 +9794,21 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionDataDirectoryContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2361; + this.state = 2422; this.match(MySqlParser.KW_DATA); - this.state = 2362; + this.state = 2423; this.match(MySqlParser.KW_DIRECTORY); - this.state = 2364; + this.state = 2425; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2363; + this.state = 2424; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2366; + this.state = 2427; (localContext as PartitionOptionDataDirectoryContext)._dataDirectory = this.match(MySqlParser.STRING_LITERAL); } break; @@ -8996,21 +9816,21 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionIndexDirectoryContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2367; + this.state = 2428; this.match(MySqlParser.KW_INDEX); - this.state = 2368; + this.state = 2429; this.match(MySqlParser.KW_DIRECTORY); - this.state = 2370; + this.state = 2431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2369; + this.state = 2430; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2372; + this.state = 2433; (localContext as PartitionOptionIndexDirectoryContext)._indexDirectory = this.match(MySqlParser.STRING_LITERAL); } break; @@ -9018,19 +9838,19 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionMaxRowsContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2373; + this.state = 2434; this.match(MySqlParser.KW_MAX_ROWS); - this.state = 2375; + this.state = 2436; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2374; + this.state = 2435; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2377; + this.state = 2438; (localContext as PartitionOptionMaxRowsContext)._maxRows = this.decimalLiteral(); } break; @@ -9038,19 +9858,19 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionMinRowsContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 2378; + this.state = 2439; this.match(MySqlParser.KW_MIN_ROWS); - this.state = 2380; + this.state = 2441; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2379; + this.state = 2440; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2382; + this.state = 2443; (localContext as PartitionOptionMinRowsContext)._minRows = this.decimalLiteral(); } break; @@ -9058,19 +9878,19 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionTablespaceContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 2383; + this.state = 2444; this.match(MySqlParser.KW_TABLESPACE); - this.state = 2385; + this.state = 2446; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2384; + this.state = 2445; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2387; + this.state = 2448; this.tablespaceName(); } break; @@ -9078,19 +9898,19 @@ export class MySqlParser extends SQLParserBase { localContext = new PartitionOptionNodeGroupContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 2388; + this.state = 2449; this.match(MySqlParser.KW_NODEGROUP); - this.state = 2390; + this.state = 2451; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2389; + this.state = 2450; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2392; + this.state = 2453; (localContext as PartitionOptionNodeGroupContext)._nodegroup = this.uid(); } break; @@ -9114,19 +9934,19 @@ export class MySqlParser extends SQLParserBase { } public alterDatabase(): AlterDatabaseContext { let localContext = new AlterDatabaseContext(this.context, this.state); - this.enterRule(localContext, 120, MySqlParser.RULE_alterDatabase); + this.enterRule(localContext, 126, MySqlParser.RULE_alterDatabase); let _la: number; try { - this.state = 2413; + this.state = 2474; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 265, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 275, this.context) ) { case 1: localContext = new AlterSimpleDatabaseContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2395; + this.state = 2456; this.match(MySqlParser.KW_ALTER); - this.state = 2396; + this.state = 2457; (localContext as AlterSimpleDatabaseContext)._dbFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 152)) { @@ -9136,27 +9956,27 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2398; + this.state = 2459; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 263, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 273, this.context) ) { case 1: { - this.state = 2397; + this.state = 2458; this.databaseName(); } break; } - this.state = 2401; + this.state = 2462; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2400; + this.state = 2461; this.createDatabaseOption(); } } - this.state = 2403; + this.state = 2464; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (((((_la - 26)) & ~0x1F) === 0 && ((1 << (_la - 26)) & 65541) !== 0) || _la === 135 || _la === 224 || _la === 376 || _la === 823); @@ -9166,9 +9986,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterUpgradeNameContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2405; + this.state = 2466; this.match(MySqlParser.KW_ALTER); - this.state = 2406; + this.state = 2467; (localContext as AlterUpgradeNameContext)._dbFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 152)) { @@ -9178,15 +9998,15 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2407; + this.state = 2468; this.databaseName(); - this.state = 2408; + this.state = 2469; this.match(MySqlParser.KW_UPGRADE); - this.state = 2409; + this.state = 2470; this.match(MySqlParser.KW_DATA); - this.state = 2410; + this.state = 2471; this.match(MySqlParser.KW_DIRECTORY); - this.state = 2411; + this.state = 2472; this.match(MySqlParser.KW_NAME); } break; @@ -9208,109 +10028,109 @@ export class MySqlParser extends SQLParserBase { } public alterEvent(): AlterEventContext { let localContext = new AlterEventContext(this.context, this.state); - this.enterRule(localContext, 122, MySqlParser.RULE_alterEvent); + this.enterRule(localContext, 128, MySqlParser.RULE_alterEvent); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2415; + this.state = 2476; this.match(MySqlParser.KW_ALTER); - this.state = 2417; + this.state = 2478; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 2416; + this.state = 2477; this.ownerStatement(); } } - this.state = 2419; + this.state = 2480; this.match(MySqlParser.KW_EVENT); - this.state = 2420; + this.state = 2481; localContext._event_name = this.fullId(); - this.state = 2424; + this.state = 2485; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 267, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 277, this.context) ) { case 1: { - this.state = 2421; + this.state = 2482; this.match(MySqlParser.KW_ON); - this.state = 2422; + this.state = 2483; this.match(MySqlParser.KW_SCHEDULE); - this.state = 2423; + this.state = 2484; this.scheduleExpression(); } break; } - this.state = 2432; + this.state = 2493; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 119) { { - this.state = 2426; + this.state = 2487; this.match(MySqlParser.KW_ON); - this.state = 2427; + this.state = 2488; this.match(MySqlParser.KW_COMPLETION); - this.state = 2429; + this.state = 2490; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 2428; + this.state = 2489; this.match(MySqlParser.KW_NOT); } } - this.state = 2431; + this.state = 2492; this.match(MySqlParser.KW_PRESERVE); } } - this.state = 2437; + this.state = 2498; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 270, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 280, this.context) ) { case 1: { - this.state = 2434; + this.state = 2495; this.match(MySqlParser.KW_RENAME); - this.state = 2435; + this.state = 2496; this.match(MySqlParser.KW_TO); - this.state = 2436; + this.state = 2497; localContext._new_event_name = this.fullId(); } break; } - this.state = 2440; + this.state = 2501; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 368 || _la === 375) { { - this.state = 2439; + this.state = 2500; this.enableType(); } } - this.state = 2444; + this.state = 2505; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 340) { { - this.state = 2442; + this.state = 2503; this.match(MySqlParser.KW_COMMENT); - this.state = 2443; + this.state = 2504; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 2448; + this.state = 2509; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 273, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 283, this.context) ) { case 1: { - this.state = 2446; + this.state = 2507; this.match(MySqlParser.KW_DO); - this.state = 2447; + this.state = 2508; this.routineBody(); } break; @@ -9333,28 +10153,28 @@ export class MySqlParser extends SQLParserBase { } public alterFunction(): AlterFunctionContext { let localContext = new AlterFunctionContext(this.context, this.state); - this.enterRule(localContext, 124, MySqlParser.RULE_alterFunction); + this.enterRule(localContext, 130, MySqlParser.RULE_alterFunction); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2450; + this.state = 2511; this.match(MySqlParser.KW_ALTER); - this.state = 2451; + this.state = 2512; this.match(MySqlParser.KW_FUNCTION); - this.state = 2452; + this.state = 2513; this.functionName(); - this.state = 2456; + this.state = 2517; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 47 || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & 16777221) !== 0) || _la === 162 || _la === 340 || _la === 354 || _la === 444 || _la === 502) { { { - this.state = 2453; + this.state = 2514; this.routineOption(); } } - this.state = 2458; + this.state = 2519; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9376,21 +10196,21 @@ export class MySqlParser extends SQLParserBase { } public alterInstance(): AlterInstanceContext { let localContext = new AlterInstanceContext(this.context, this.state); - this.enterRule(localContext, 126, MySqlParser.RULE_alterInstance); + this.enterRule(localContext, 132, MySqlParser.RULE_alterInstance); try { this.enterOuterAlt(localContext, 1); { - this.state = 2459; + this.state = 2520; this.match(MySqlParser.KW_ALTER); - this.state = 2460; + this.state = 2521; this.match(MySqlParser.KW_INSTANCE); - this.state = 2461; + this.state = 2522; this.match(MySqlParser.KW_ROTATE); - this.state = 2462; + this.state = 2523; this.match(MySqlParser.KW_INNODB); - this.state = 2463; + this.state = 2524; this.match(MySqlParser.KW_MASTER); - this.state = 2464; + this.state = 2525; this.match(MySqlParser.KW_KEY); } } @@ -9410,70 +10230,70 @@ export class MySqlParser extends SQLParserBase { } public alterLogfileGroup(): AlterLogfileGroupContext { let localContext = new AlterLogfileGroupContext(this.context, this.state); - this.enterRule(localContext, 128, MySqlParser.RULE_alterLogfileGroup); + this.enterRule(localContext, 134, MySqlParser.RULE_alterLogfileGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2466; + this.state = 2527; this.match(MySqlParser.KW_ALTER); - this.state = 2467; + this.state = 2528; this.match(MySqlParser.KW_LOGFILE); - this.state = 2468; + this.state = 2529; this.match(MySqlParser.KW_GROUP); - this.state = 2469; + this.state = 2530; localContext._logfileGroupName = this.uid(); - this.state = 2470; + this.state = 2531; this.match(MySqlParser.KW_ADD); - this.state = 2471; + this.state = 2532; this.match(MySqlParser.KW_UNDOFILE); - this.state = 2472; + this.state = 2533; this.match(MySqlParser.STRING_LITERAL); - this.state = 2478; + this.state = 2539; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 428) { { - this.state = 2473; + this.state = 2534; this.match(MySqlParser.KW_INITIAL_SIZE); - this.state = 2475; + this.state = 2536; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2474; + this.state = 2535; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2477; + this.state = 2538; this.fileSizeLiteral(); } } - this.state = 2481; + this.state = 2542; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 687) { { - this.state = 2480; + this.state = 2541; this.match(MySqlParser.KW_WAIT); } } - this.state = 2483; + this.state = 2544; this.match(MySqlParser.KW_ENGINE); - this.state = 2485; + this.state = 2546; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2484; + this.state = 2545; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2487; + this.state = 2548; this.engineName(); } } @@ -9493,28 +10313,28 @@ export class MySqlParser extends SQLParserBase { } public alterProcedure(): AlterProcedureContext { let localContext = new AlterProcedureContext(this.context, this.state); - this.enterRule(localContext, 130, MySqlParser.RULE_alterProcedure); + this.enterRule(localContext, 136, MySqlParser.RULE_alterProcedure); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2489; + this.state = 2550; this.match(MySqlParser.KW_ALTER); - this.state = 2490; + this.state = 2551; this.match(MySqlParser.KW_PROCEDURE); - this.state = 2491; + this.state = 2552; localContext._proc_name = this.fullId(); - this.state = 2495; + this.state = 2556; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 47 || ((((_la - 112)) & ~0x1F) === 0 && ((1 << (_la - 112)) & 16777221) !== 0) || _la === 162 || _la === 340 || _la === 354 || _la === 444 || _la === 502) { { { - this.state = 2492; + this.state = 2553; this.routineOption(); } } - this.state = 2497; + this.state = 2558; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9536,40 +10356,40 @@ export class MySqlParser extends SQLParserBase { } public alterServer(): AlterServerContext { let localContext = new AlterServerContext(this.context, this.state); - this.enterRule(localContext, 132, MySqlParser.RULE_alterServer); + this.enterRule(localContext, 138, MySqlParser.RULE_alterServer); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2498; + this.state = 2559; this.match(MySqlParser.KW_ALTER); - this.state = 2499; + this.state = 2560; this.match(MySqlParser.KW_SERVER); - this.state = 2500; + this.state = 2561; localContext._serverName = this.uid(); - this.state = 2501; + this.state = 2562; this.match(MySqlParser.KW_OPTIONS); - this.state = 2502; + this.state = 2563; this.match(MySqlParser.LR_BRACKET); - this.state = 2503; + this.state = 2564; this.serverOption(); - this.state = 2508; + this.state = 2569; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2504; + this.state = 2565; this.match(MySqlParser.COMMA); - this.state = 2505; + this.state = 2566; this.serverOption(); } } - this.state = 2510; + this.state = 2571; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2511; + this.state = 2572; this.match(MySqlParser.RR_BRACKET); } } @@ -9589,66 +10409,66 @@ export class MySqlParser extends SQLParserBase { } public alterTable(): AlterTableContext { let localContext = new AlterTableContext(this.context, this.state); - this.enterRule(localContext, 134, MySqlParser.RULE_alterTable); + this.enterRule(localContext, 140, MySqlParser.RULE_alterTable); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2513; + this.state = 2574; this.match(MySqlParser.KW_ALTER); - this.state = 2514; + this.state = 2575; this.match(MySqlParser.KW_TABLE); - this.state = 2515; + this.state = 2576; this.tableName(); - this.state = 2524; + this.state = 2585; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 282, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 292, this.context) ) { case 1: { - this.state = 2516; + this.state = 2577; this.alterOption(); - this.state = 2521; + this.state = 2582; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2517; + this.state = 2578; this.match(MySqlParser.COMMA); - this.state = 2518; + this.state = 2579; this.alterOption(); } } - this.state = 2523; + this.state = 2584; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - this.state = 2533; + this.state = 2594; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 284, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 294, this.context) ) { case 1: { - this.state = 2526; + this.state = 2587; this.alterPartitionSpecification(); - this.state = 2530; + this.state = 2591; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 283, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 293, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2527; + this.state = 2588; this.alterPartitionSpecification(); } } } - this.state = 2532; + this.state = 2593; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 283, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 293, this.context); } } break; @@ -9671,28 +10491,28 @@ export class MySqlParser extends SQLParserBase { } public alterTablespace(): AlterTablespaceContext { let localContext = new AlterTablespaceContext(this.context, this.state); - this.enterRule(localContext, 136, MySqlParser.RULE_alterTablespace); + this.enterRule(localContext, 142, MySqlParser.RULE_alterTablespace); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2535; + this.state = 2596; this.match(MySqlParser.KW_ALTER); - this.state = 2537; + this.state = 2598; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 180) { { - this.state = 2536; + this.state = 2597; this.match(MySqlParser.KW_UNDO); } } - this.state = 2539; + this.state = 2600; this.match(MySqlParser.KW_TABLESPACE); - this.state = 2540; + this.state = 2601; this.tablespaceName(); - this.state = 2541; + this.state = 2602; _la = this.tokenStream.LA(1); if(!(_la === 6 || _la === 51)) { this.errorHandler.recoverInline(this); @@ -9701,86 +10521,86 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2542; + this.state = 2603; this.match(MySqlParser.KW_DATAFILE); - this.state = 2543; + this.state = 2604; this.match(MySqlParser.STRING_LITERAL); - this.state = 2549; + this.state = 2610; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 428) { { - this.state = 2544; + this.state = 2605; this.match(MySqlParser.KW_INITIAL_SIZE); - this.state = 2546; + this.state = 2607; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2545; + this.state = 2606; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2548; + this.state = 2609; this.fileSizeLiteral(); } } - this.state = 2552; + this.state = 2613; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 687) { { - this.state = 2551; + this.state = 2612; this.match(MySqlParser.KW_WAIT); } } - this.state = 2557; + this.state = 2618; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 289, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 299, this.context) ) { case 1: { - this.state = 2554; + this.state = 2615; this.match(MySqlParser.KW_RENAME); - this.state = 2555; + this.state = 2616; this.match(MySqlParser.KW_TO); - this.state = 2556; + this.state = 2617; this.tablespaceNameCreate(); } break; } - this.state = 2564; + this.state = 2625; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 314) { { - this.state = 2559; + this.state = 2620; this.match(MySqlParser.KW_AUTOEXTEND_SIZE); - this.state = 2561; + this.state = 2622; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2560; + this.state = 2621; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2563; + this.state = 2624; this.fileSizeLiteral(); } } - this.state = 2568; + this.state = 2629; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 292, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 302, this.context) ) { case 1: { - this.state = 2566; + this.state = 2627; this.match(MySqlParser.KW_SET); - this.state = 2567; + this.state = 2628; _la = this.tokenStream.LA(1); if(!(_la === 5 || _la === 81)) { this.errorHandler.recoverInline(this); @@ -9792,68 +10612,68 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 2575; + this.state = 2636; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 376) { { - this.state = 2570; + this.state = 2631; this.match(MySqlParser.KW_ENCRYPTION); - this.state = 2572; + this.state = 2633; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2571; + this.state = 2632; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2574; + this.state = 2635; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 2582; + this.state = 2643; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 380) { { - this.state = 2577; + this.state = 2638; this.match(MySqlParser.KW_ENGINE); - this.state = 2579; + this.state = 2640; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2578; + this.state = 2639; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2581; + this.state = 2642; this.engineName(); } } - this.state = 2589; + this.state = 2650; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 825) { { - this.state = 2584; + this.state = 2645; this.match(MySqlParser.KW_ENGINE_ATTRIBUTE); - this.state = 2586; + this.state = 2647; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2585; + this.state = 2646; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2588; + this.state = 2649; this.match(MySqlParser.STRING_LITERAL); } } @@ -9876,23 +10696,23 @@ export class MySqlParser extends SQLParserBase { } public alterView(): AlterViewContext { let localContext = new AlterViewContext(this.context, this.state); - this.enterRule(localContext, 138, MySqlParser.RULE_alterView); + this.enterRule(localContext, 144, MySqlParser.RULE_alterView); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2591; + this.state = 2652; this.match(MySqlParser.KW_ALTER); - this.state = 2595; + this.state = 2656; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 308) { { - this.state = 2592; + this.state = 2653; this.match(MySqlParser.KW_ALGORITHM); - this.state = 2593; + this.state = 2654; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 2594; + this.state = 2655; localContext._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 486 || _la === 661 || _la === 670)) { @@ -9905,26 +10725,26 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2598; + this.state = 2659; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 364) { { - this.state = 2597; + this.state = 2658; this.ownerStatement(); } } - this.state = 2603; + this.state = 2664; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 162) { { - this.state = 2600; + this.state = 2661; this.match(MySqlParser.KW_SQL); - this.state = 2601; + this.state = 2662; this.match(MySqlParser.KW_SECURITY); - this.state = 2602; + this.state = 2663; localContext._secContext = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 364 || _la === 436)) { @@ -9937,41 +10757,41 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2605; + this.state = 2666; this.match(MySqlParser.KW_VIEW); - this.state = 2606; + this.state = 2667; this.viewName(); - this.state = 2611; + this.state = 2672; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 2607; + this.state = 2668; this.match(MySqlParser.LR_BRACKET); - this.state = 2608; + this.state = 2669; this.columnNames(); - this.state = 2609; + this.state = 2670; this.match(MySqlParser.RR_BRACKET); } } - this.state = 2613; + this.state = 2674; this.match(MySqlParser.KW_AS); - this.state = 2614; + this.state = 2675; this.selectStatement(); - this.state = 2621; + this.state = 2682; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 304, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context) ) { case 1: { - this.state = 2615; + this.state = 2676; this.match(MySqlParser.KW_WITH); - this.state = 2617; + this.state = 2678; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 325 || _la === 450) { { - this.state = 2616; + this.state = 2677; localContext._checkOpt = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 325 || _la === 450)) { @@ -9984,9 +10804,9 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2619; + this.state = 2680; this.match(MySqlParser.KW_CHECK); - this.state = 2620; + this.state = 2681; this.match(MySqlParser.KW_OPTION); } break; @@ -10009,44 +10829,44 @@ export class MySqlParser extends SQLParserBase { } public alterOption(): AlterOptionContext { let localContext = new AlterOptionContext(this.context, this.state); - this.enterRule(localContext, 140, MySqlParser.RULE_alterOption); + this.enterRule(localContext, 146, MySqlParser.RULE_alterOption); let _la: number; try { let alternative: number; - this.state = 2887; + this.state = 2948; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 348, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 358, this.context) ) { case 1: localContext = new AlterByTableOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2623; + this.state = 2684; this.tableOption(); - this.state = 2630; + this.state = 2691; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 306, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 316, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2625; + this.state = 2686; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 2624; + this.state = 2685; this.match(MySqlParser.COMMA); } } - this.state = 2627; + this.state = 2688; this.tableOption(); } } } - this.state = 2632; + this.state = 2693; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 306, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 316, this.context); } } break; @@ -10054,36 +10874,36 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddColumnContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2633; + this.state = 2694; this.match(MySqlParser.KW_ADD); - this.state = 2635; + this.state = 2696; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 307, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 317, this.context) ) { case 1: { - this.state = 2634; + this.state = 2695; this.match(MySqlParser.KW_COLUMN); } break; } - this.state = 2637; + this.state = 2698; this.columnName(); - this.state = 2638; + this.state = 2699; this.columnDefinition(); - this.state = 2642; + this.state = 2703; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FIRST: { - this.state = 2639; + this.state = 2700; this.match(MySqlParser.KW_FIRST); } break; case MySqlParser.KW_AFTER: { - this.state = 2640; + this.state = 2701; this.match(MySqlParser.KW_AFTER); - this.state = 2641; + this.state = 2702; this.columnName(); } break; @@ -10169,43 +10989,43 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddColumnsContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2644; + this.state = 2705; this.match(MySqlParser.KW_ADD); - this.state = 2646; + this.state = 2707; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 29) { { - this.state = 2645; + this.state = 2706; this.match(MySqlParser.KW_COLUMN); } } - this.state = 2648; + this.state = 2709; this.match(MySqlParser.LR_BRACKET); - this.state = 2649; + this.state = 2710; this.columnName(); - this.state = 2650; + this.state = 2711; this.columnDefinition(); - this.state = 2657; + this.state = 2718; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2651; + this.state = 2712; this.match(MySqlParser.COMMA); - this.state = 2652; + this.state = 2713; this.columnName(); - this.state = 2653; + this.state = 2714; this.columnDefinition(); } } - this.state = 2659; + this.state = 2720; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2660; + this.state = 2721; this.match(MySqlParser.RR_BRACKET); } break; @@ -10213,9 +11033,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddIndexContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2662; + this.state = 2723; this.match(MySqlParser.KW_ADD); - this.state = 2663; + this.state = 2724; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -10224,43 +11044,43 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2665; + this.state = 2726; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2664; + this.state = 2725; this.indexName(); } } - this.state = 2668; + this.state = 2729; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 2667; + this.state = 2728; this.indexType(); } } - this.state = 2670; + this.state = 2731; this.indexColumnNames(); - this.state = 2674; + this.state = 2735; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 313, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 323, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2671; + this.state = 2732; this.indexOption(); } } } - this.state = 2676; + this.state = 2737; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 313, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 323, this.context); } } break; @@ -10268,9 +11088,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddSpecialIndexContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2677; + this.state = 2738; this.match(MySqlParser.KW_ADD); - this.state = 2678; + this.state = 2739; _la = this.tokenStream.LA(1); if(!(_la === 69 || _la === 161)) { this.errorHandler.recoverInline(this); @@ -10279,12 +11099,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2680; + this.state = 2741; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 2679; + this.state = 2740; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -10296,33 +11116,33 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2683; + this.state = 2744; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2682; + this.state = 2743; this.indexName(); } } - this.state = 2685; + this.state = 2746; this.indexColumnNames(); - this.state = 2689; + this.state = 2750; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 316, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 326, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2686; + this.state = 2747; this.indexOption(); } } } - this.state = 2691; + this.state = 2752; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 316, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 326, this.context); } } break; @@ -10330,21 +11150,21 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddPrimaryKeyContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 2692; + this.state = 2753; this.match(MySqlParser.KW_ADD); - this.state = 2697; + this.state = 2758; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 2693; + this.state = 2754; this.match(MySqlParser.KW_CONSTRAINT); - this.state = 2695; + this.state = 2756; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 317, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 327, this.context) ) { case 1: { - this.state = 2694; + this.state = 2755; (localContext as AlterByAddPrimaryKeyContext)._symbol_ = this.uid(); } break; @@ -10352,37 +11172,37 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2699; + this.state = 2760; this.match(MySqlParser.KW_PRIMARY); - this.state = 2700; + this.state = 2761; this.match(MySqlParser.KW_KEY); - this.state = 2702; + this.state = 2763; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 2701; + this.state = 2762; this.indexType(); } } - this.state = 2704; + this.state = 2765; this.indexColumnNames(); - this.state = 2708; + this.state = 2769; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 320, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 330, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2705; + this.state = 2766; this.indexOption(); } } } - this.state = 2710; + this.state = 2771; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 320, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 330, this.context); } } break; @@ -10390,21 +11210,21 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddUniqueKeyContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 2711; + this.state = 2772; this.match(MySqlParser.KW_ADD); - this.state = 2716; + this.state = 2777; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 2712; + this.state = 2773; this.match(MySqlParser.KW_CONSTRAINT); - this.state = 2714; + this.state = 2775; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2713; + this.state = 2774; (localContext as AlterByAddUniqueKeyContext)._symbol_ = this.uid(); } } @@ -10412,14 +11232,14 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2718; + this.state = 2779; this.match(MySqlParser.KW_UNIQUE); - this.state = 2720; + this.state = 2781; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 2719; + this.state = 2780; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -10431,43 +11251,43 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2723; + this.state = 2784; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2722; + this.state = 2783; this.indexName(); } } - this.state = 2726; + this.state = 2787; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 2725; + this.state = 2786; this.indexType(); } } - this.state = 2728; + this.state = 2789; this.indexColumnNames(); - this.state = 2732; + this.state = 2793; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 326, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 336, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2729; + this.state = 2790; this.indexOption(); } } } - this.state = 2734; + this.state = 2795; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 326, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 336, this.context); } } break; @@ -10475,21 +11295,21 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddForeignKeyContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 2735; + this.state = 2796; this.match(MySqlParser.KW_ADD); - this.state = 2740; + this.state = 2801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31) { { - this.state = 2736; + this.state = 2797; this.match(MySqlParser.KW_CONSTRAINT); - this.state = 2738; + this.state = 2799; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2737; + this.state = 2798; (localContext as AlterByAddForeignKeyContext)._symbol_ = this.uid(); } } @@ -10497,23 +11317,23 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2742; + this.state = 2803; this.match(MySqlParser.KW_FOREIGN); - this.state = 2743; + this.state = 2804; this.match(MySqlParser.KW_KEY); - this.state = 2745; + this.state = 2806; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 2744; + this.state = 2805; this.indexName(); } } - this.state = 2747; + this.state = 2808; this.indexColumnNames(); - this.state = 2748; + this.state = 2809; this.referenceDefinition(); } break; @@ -10521,14 +11341,14 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAddCheckTableConstraintContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 2750; + this.state = 2811; this.match(MySqlParser.KW_ADD); - this.state = 2752; + this.state = 2813; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 330, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 340, this.context) ) { case 1: { - this.state = 2751; + this.state = 2812; this.checkConstraintDefinition(); } break; @@ -10539,9 +11359,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropConstraintCheckContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 2754; + this.state = 2815; this.match(MySqlParser.KW_DROP); - this.state = 2755; + this.state = 2816; _la = this.tokenStream.LA(1); if(!(_la === 27 || _la === 31)) { this.errorHandler.recoverInline(this); @@ -10550,7 +11370,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2756; + this.state = 2817; (localContext as AlterByDropConstraintCheckContext)._symbol_ = this.uid(); } break; @@ -10558,9 +11378,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAlterCheckTableConstraintContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 2757; + this.state = 2818; this.match(MySqlParser.KW_ALTER); - this.state = 2758; + this.state = 2819; _la = this.tokenStream.LA(1); if(!(_la === 27 || _la === 31)) { this.errorHandler.recoverInline(this); @@ -10569,24 +11389,24 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2759; + this.state = 2820; (localContext as AlterByAlterCheckTableConstraintContext)._symbol_ = this.uid(); - this.state = 2761; + this.state = 2822; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 2760; + this.state = 2821; this.match(MySqlParser.KW_NOT); } } - this.state = 2764; + this.state = 2825; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 57) { { - this.state = 2763; + this.state = 2824; this.match(MySqlParser.KW_ENFORCED); } } @@ -10597,19 +11417,19 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterBySetAlgorithmContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 2766; + this.state = 2827; this.match(MySqlParser.KW_ALGORITHM); - this.state = 2768; + this.state = 2829; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2767; + this.state = 2828; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2770; + this.state = 2831; _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 357 || _la === 430 || _la === 434)) { this.errorHandler.recoverInline(this); @@ -10624,38 +11444,38 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAlterColumnDefaultContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 2771; + this.state = 2832; this.match(MySqlParser.KW_ALTER); - this.state = 2773; + this.state = 2834; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 334, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 344, this.context) ) { case 1: { - this.state = 2772; + this.state = 2833; this.match(MySqlParser.KW_COLUMN); } break; } - this.state = 2775; + this.state = 2836; this.columnName(); - this.state = 2783; + this.state = 2844; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 335, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 345, this.context) ) { case 1: { - this.state = 2776; + this.state = 2837; this.match(MySqlParser.KW_SET); - this.state = 2777; + this.state = 2838; this.match(MySqlParser.KW_DEFAULT); - this.state = 2778; + this.state = 2839; this.defaultValue(); } break; case 2: { - this.state = 2779; + this.state = 2840; this.match(MySqlParser.KW_SET); - this.state = 2780; + this.state = 2841; _la = this.tokenStream.LA(1); if(!(_la === 435 || _la === 686)) { this.errorHandler.recoverInline(this); @@ -10668,9 +11488,9 @@ export class MySqlParser extends SQLParserBase { break; case 3: { - this.state = 2781; + this.state = 2842; this.match(MySqlParser.KW_DROP); - this.state = 2782; + this.state = 2843; this.match(MySqlParser.KW_DEFAULT); } break; @@ -10681,13 +11501,13 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAlterIndexVisibilityContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 2785; + this.state = 2846; this.match(MySqlParser.KW_ALTER); - this.state = 2786; + this.state = 2847; this.match(MySqlParser.KW_INDEX); - this.state = 2787; + this.state = 2848; this.indexName(); - this.state = 2788; + this.state = 2849; _la = this.tokenStream.LA(1); if(!(_la === 435 || _la === 686)) { this.errorHandler.recoverInline(this); @@ -10702,38 +11522,38 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByChangeColumnContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 2790; + this.state = 2851; this.match(MySqlParser.KW_CHANGE); - this.state = 2792; + this.state = 2853; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 336, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 346, this.context) ) { case 1: { - this.state = 2791; + this.state = 2852; this.match(MySqlParser.KW_COLUMN); } break; } - this.state = 2794; + this.state = 2855; (localContext as AlterByChangeColumnContext)._oldColumn = this.columnName(); - this.state = 2795; + this.state = 2856; (localContext as AlterByChangeColumnContext)._newColumn = this.columnNameCreate(); - this.state = 2796; + this.state = 2857; this.columnDefinition(); - this.state = 2800; + this.state = 2861; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FIRST: { - this.state = 2797; + this.state = 2858; this.match(MySqlParser.KW_FIRST); } break; case MySqlParser.KW_AFTER: { - this.state = 2798; + this.state = 2859; this.match(MySqlParser.KW_AFTER); - this.state = 2799; + this.state = 2860; this.columnName(); } break; @@ -10819,42 +11639,42 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDefaultCharsetContext(localContext); this.enterOuterAlt(localContext, 16); { - this.state = 2803; + this.state = 2864; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 2802; + this.state = 2863; this.match(MySqlParser.KW_DEFAULT); } } - this.state = 2805; + this.state = 2866; this.match(MySqlParser.KW_CHARACTER); - this.state = 2806; + this.state = 2867; this.match(MySqlParser.KW_SET); - this.state = 2807; + this.state = 2868; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 2808; + this.state = 2869; this.charsetName(); - this.state = 2814; + this.state = 2875; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 28) { { - this.state = 2809; + this.state = 2870; this.match(MySqlParser.KW_COLLATE); - this.state = 2811; + this.state = 2872; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2810; + this.state = 2871; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2813; + this.state = 2874; this.collationName(); } } @@ -10865,40 +11685,40 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByConvertCharsetContext(localContext); this.enterOuterAlt(localContext, 17); { - this.state = 2816; + this.state = 2877; this.match(MySqlParser.KW_CONVERT); - this.state = 2817; + this.state = 2878; this.match(MySqlParser.KW_TO); - this.state = 2821; + this.state = 2882; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CHARSET: { - this.state = 2818; + this.state = 2879; this.match(MySqlParser.KW_CHARSET); } break; case MySqlParser.KW_CHARACTER: { - this.state = 2819; + this.state = 2880; this.match(MySqlParser.KW_CHARACTER); - this.state = 2820; + this.state = 2881; this.match(MySqlParser.KW_SET); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2823; + this.state = 2884; this.charsetName(); - this.state = 2826; + this.state = 2887; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 28) { { - this.state = 2824; + this.state = 2885; this.match(MySqlParser.KW_COLLATE); - this.state = 2825; + this.state = 2886; this.collationName(); } } @@ -10909,7 +11729,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterKeysContext(localContext); this.enterOuterAlt(localContext, 18); { - this.state = 2828; + this.state = 2889; _la = this.tokenStream.LA(1); if(!(_la === 368 || _la === 375)) { this.errorHandler.recoverInline(this); @@ -10918,7 +11738,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2829; + this.state = 2890; this.match(MySqlParser.KW_KEYS); } break; @@ -10926,7 +11746,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterTablespaceOptionContext(localContext); this.enterOuterAlt(localContext, 19); { - this.state = 2830; + this.state = 2891; _la = this.tokenStream.LA(1); if(!(_la === 369 || _la === 425)) { this.errorHandler.recoverInline(this); @@ -10935,7 +11755,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2831; + this.state = 2892; this.match(MySqlParser.KW_TABLESPACE); } break; @@ -10943,19 +11763,19 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropColumnContext(localContext); this.enterOuterAlt(localContext, 20); { - this.state = 2832; + this.state = 2893; this.match(MySqlParser.KW_DROP); - this.state = 2834; + this.state = 2895; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 343, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 353, this.context) ) { case 1: { - this.state = 2833; + this.state = 2894; this.match(MySqlParser.KW_COLUMN); } break; } - this.state = 2836; + this.state = 2897; this.columnName(); } break; @@ -10963,9 +11783,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropIndexContext(localContext); this.enterOuterAlt(localContext, 21); { - this.state = 2837; + this.state = 2898; this.match(MySqlParser.KW_DROP); - this.state = 2838; + this.state = 2899; _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { this.errorHandler.recoverInline(this); @@ -10974,7 +11794,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2839; + this.state = 2900; this.indexName(); } break; @@ -10982,11 +11802,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropPrimaryKeyContext(localContext); this.enterOuterAlt(localContext, 22); { - this.state = 2840; + this.state = 2901; this.match(MySqlParser.KW_DROP); - this.state = 2841; + this.state = 2902; this.match(MySqlParser.KW_PRIMARY); - this.state = 2842; + this.state = 2903; this.match(MySqlParser.KW_KEY); } break; @@ -10994,13 +11814,13 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropForeignKeyContext(localContext); this.enterOuterAlt(localContext, 23); { - this.state = 2843; + this.state = 2904; this.match(MySqlParser.KW_DROP); - this.state = 2844; + this.state = 2905; this.match(MySqlParser.KW_FOREIGN); - this.state = 2845; + this.state = 2906; this.match(MySqlParser.KW_KEY); - this.state = 2846; + this.state = 2907; (localContext as AlterByDropForeignKeyContext)._fk_symbol = this.uid(); } break; @@ -11008,7 +11828,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByForceContext(localContext); this.enterOuterAlt(localContext, 24); { - this.state = 2847; + this.state = 2908; this.match(MySqlParser.KW_FORCE); } break; @@ -11016,19 +11836,19 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByLockContext(localContext); this.enterOuterAlt(localContext, 25); { - this.state = 2848; + this.state = 2909; this.match(MySqlParser.KW_LOCK); - this.state = 2850; + this.state = 2911; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 2849; + this.state = 2910; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 2852; + this.state = 2913; (localContext as AlterByLockContext)._lockType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 389 || _la === 505 || _la === 595)) { @@ -11044,36 +11864,36 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByModifyColumnContext(localContext); this.enterOuterAlt(localContext, 26); { - this.state = 2853; + this.state = 2914; this.match(MySqlParser.KW_MODIFY); - this.state = 2855; + this.state = 2916; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 345, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 355, this.context) ) { case 1: { - this.state = 2854; + this.state = 2915; this.match(MySqlParser.KW_COLUMN); } break; } - this.state = 2857; + this.state = 2918; this.columnName(); - this.state = 2858; + this.state = 2919; this.columnDefinition(); - this.state = 2862; + this.state = 2923; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FIRST: { - this.state = 2859; + this.state = 2920; this.match(MySqlParser.KW_FIRST); } break; case MySqlParser.KW_AFTER: { - this.state = 2860; + this.state = 2921; this.match(MySqlParser.KW_AFTER); - this.state = 2861; + this.state = 2922; this.columnName(); } break; @@ -11159,11 +11979,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByOrderContext(localContext); this.enterOuterAlt(localContext, 27); { - this.state = 2864; + this.state = 2925; this.match(MySqlParser.KW_ORDER); - this.state = 2865; + this.state = 2926; this.match(MySqlParser.KW_BY); - this.state = 2866; + this.state = 2927; this.columnNames(); } break; @@ -11171,15 +11991,15 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRenameColumnContext(localContext); this.enterOuterAlt(localContext, 28); { - this.state = 2867; + this.state = 2928; this.match(MySqlParser.KW_RENAME); - this.state = 2868; + this.state = 2929; this.match(MySqlParser.KW_COLUMN); - this.state = 2869; + this.state = 2930; (localContext as AlterByRenameColumnContext)._olcdColumn = this.columnName(); - this.state = 2870; + this.state = 2931; this.match(MySqlParser.KW_TO); - this.state = 2871; + this.state = 2932; (localContext as AlterByRenameColumnContext)._newColumn = this.columnNameCreate(); } break; @@ -11187,9 +12007,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRenameIndexContext(localContext); this.enterOuterAlt(localContext, 29); { - this.state = 2873; + this.state = 2934; this.match(MySqlParser.KW_RENAME); - this.state = 2874; + this.state = 2935; (localContext as AlterByRenameIndexContext)._indexFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { @@ -11199,11 +12019,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2875; + this.state = 2936; this.indexName(); - this.state = 2876; + this.state = 2937; this.match(MySqlParser.KW_TO); - this.state = 2877; + this.state = 2938; this.indexNameCreate(); } break; @@ -11211,14 +12031,14 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRenameContext(localContext); this.enterOuterAlt(localContext, 30); { - this.state = 2879; + this.state = 2940; this.match(MySqlParser.KW_RENAME); - this.state = 2881; + this.state = 2942; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13 || _la === 176) { { - this.state = 2880; + this.state = 2941; (localContext as AlterByRenameContext)._renameFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 13 || _la === 176)) { @@ -11231,7 +12051,7 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 2883; + this.state = 2944; this.tableNameCreate(); } break; @@ -11239,7 +12059,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByValidateContext(localContext); this.enterOuterAlt(localContext, 31); { - this.state = 2884; + this.state = 2945; _la = this.tokenStream.LA(1); if(!(_la === 194 || _la === 690)) { this.errorHandler.recoverInline(this); @@ -11248,7 +12068,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2885; + this.state = 2946; this.match(MySqlParser.KW_VALIDATION); } break; @@ -11256,7 +12076,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterPartitionContext(localContext); this.enterOuterAlt(localContext, 32); { - this.state = 2886; + this.state = 2947; this.alterPartitionSpecification(); } break; @@ -11278,41 +12098,41 @@ export class MySqlParser extends SQLParserBase { } public alterPartitionSpecification(): AlterPartitionSpecificationContext { let localContext = new AlterPartitionSpecificationContext(this.context, this.state); - this.enterRule(localContext, 142, MySqlParser.RULE_alterPartitionSpecification); + this.enterRule(localContext, 148, MySqlParser.RULE_alterPartitionSpecification); let _la: number; try { - this.state = 2987; + this.state = 3048; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ADD: localContext = new AlterByAddPartitionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2889; + this.state = 2950; this.match(MySqlParser.KW_ADD); - this.state = 2890; + this.state = 2951; this.match(MySqlParser.KW_PARTITION); - this.state = 2891; + this.state = 2952; this.match(MySqlParser.LR_BRACKET); - this.state = 2892; + this.state = 2953; this.partitionDefinition(); - this.state = 2897; + this.state = 2958; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2893; + this.state = 2954; this.match(MySqlParser.COMMA); - this.state = 2894; + this.state = 2955; this.partitionDefinition(); } } - this.state = 2899; + this.state = 2960; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2900; + this.state = 2961; this.match(MySqlParser.RR_BRACKET); } break; @@ -11320,11 +12140,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDropPartitionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2902; + this.state = 2963; this.match(MySqlParser.KW_DROP); - this.state = 2903; + this.state = 2964; this.match(MySqlParser.KW_PARTITION); - this.state = 2904; + this.state = 2965; this.partitionNames(); } break; @@ -11332,11 +12152,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByDiscardPartitionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2905; + this.state = 2966; this.match(MySqlParser.KW_DISCARD); - this.state = 2906; + this.state = 2967; this.match(MySqlParser.KW_PARTITION); - this.state = 2909; + this.state = 2970; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -11669,6 +12489,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -11888,20 +12709,20 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2907; + this.state = 2968; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2908; + this.state = 2969; this.match(MySqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2911; + this.state = 2972; this.match(MySqlParser.KW_TABLESPACE); } break; @@ -11909,11 +12730,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByImportPartitionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2912; + this.state = 2973; this.match(MySqlParser.KW_IMPORT); - this.state = 2913; + this.state = 2974; this.match(MySqlParser.KW_PARTITION); - this.state = 2916; + this.state = 2977; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -12246,6 +13067,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -12465,20 +13287,20 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2914; + this.state = 2975; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2915; + this.state = 2976; this.match(MySqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2918; + this.state = 2979; this.match(MySqlParser.KW_TABLESPACE); } break; @@ -12486,11 +13308,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByTruncatePartitionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 2919; + this.state = 2980; this.match(MySqlParser.KW_TRUNCATE); - this.state = 2920; + this.state = 2981; this.match(MySqlParser.KW_PARTITION); - this.state = 2923; + this.state = 2984; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -12823,6 +13645,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -13042,13 +13865,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2921; + this.state = 2982; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2922; + this.state = 2983; this.match(MySqlParser.KW_ALL); } break; @@ -13061,11 +13884,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByCoalescePartitionContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 2925; + this.state = 2986; this.match(MySqlParser.KW_COALESCE); - this.state = 2926; + this.state = 2987; this.match(MySqlParser.KW_PARTITION); - this.state = 2927; + this.state = 2988; this.decimalLiteral(); } break; @@ -13073,35 +13896,35 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByReorganizePartitionContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 2928; + this.state = 2989; this.match(MySqlParser.KW_REORGANIZE); - this.state = 2929; + this.state = 2990; this.match(MySqlParser.KW_PARTITION); - this.state = 2930; + this.state = 2991; this.partitionNames(); - this.state = 2931; + this.state = 2992; this.match(MySqlParser.KW_INTO); - this.state = 2932; + this.state = 2993; this.match(MySqlParser.LR_BRACKET); - this.state = 2933; + this.state = 2994; this.partitionDefinition(); - this.state = 2938; + this.state = 2999; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 2934; + this.state = 2995; this.match(MySqlParser.COMMA); - this.state = 2935; + this.state = 2996; this.partitionDefinition(); } } - this.state = 2940; + this.state = 3001; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2941; + this.state = 3002; this.match(MySqlParser.RR_BRACKET); } break; @@ -13109,24 +13932,24 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByExchangePartitionContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 2943; + this.state = 3004; this.match(MySqlParser.KW_EXCHANGE); - this.state = 2944; + this.state = 3005; this.match(MySqlParser.KW_PARTITION); - this.state = 2945; + this.state = 3006; this.partitionName(); - this.state = 2946; + this.state = 3007; this.match(MySqlParser.KW_WITH); - this.state = 2947; + this.state = 3008; this.match(MySqlParser.KW_TABLE); - this.state = 2948; + this.state = 3009; this.tableName(); - this.state = 2951; + this.state = 3012; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 354, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 364, this.context) ) { case 1: { - this.state = 2949; + this.state = 3010; (localContext as AlterByExchangePartitionContext)._validationFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 194 || _la === 690)) { @@ -13136,7 +13959,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2950; + this.state = 3011; this.match(MySqlParser.KW_VALIDATION); } break; @@ -13147,11 +13970,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByAnalyzePartitionContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 2953; + this.state = 3014; this.match(MySqlParser.KW_ANALYZE); - this.state = 2954; + this.state = 3015; this.match(MySqlParser.KW_PARTITION); - this.state = 2957; + this.state = 3018; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -13484,6 +14307,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -13703,13 +14527,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2955; + this.state = 3016; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2956; + this.state = 3017; this.match(MySqlParser.KW_ALL); } break; @@ -13722,11 +14546,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByCheckPartitionContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 2959; + this.state = 3020; this.match(MySqlParser.KW_CHECK); - this.state = 2960; + this.state = 3021; this.match(MySqlParser.KW_PARTITION); - this.state = 2963; + this.state = 3024; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -14059,6 +14883,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -14278,13 +15103,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2961; + this.state = 3022; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2962; + this.state = 3023; this.match(MySqlParser.KW_ALL); } break; @@ -14297,11 +15122,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByOptimizePartitionContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 2965; + this.state = 3026; this.match(MySqlParser.KW_OPTIMIZE); - this.state = 2966; + this.state = 3027; this.match(MySqlParser.KW_PARTITION); - this.state = 2969; + this.state = 3030; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -14634,6 +15459,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -14853,13 +15679,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2967; + this.state = 3028; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2968; + this.state = 3029; this.match(MySqlParser.KW_ALL); } break; @@ -14872,11 +15698,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRebuildPartitionContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 2971; + this.state = 3032; this.match(MySqlParser.KW_REBUILD); - this.state = 2972; + this.state = 3033; this.match(MySqlParser.KW_PARTITION); - this.state = 2975; + this.state = 3036; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -15209,6 +16035,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -15428,13 +16255,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2973; + this.state = 3034; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2974; + this.state = 3035; this.match(MySqlParser.KW_ALL); } break; @@ -15447,11 +16274,11 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRepairPartitionContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 2977; + this.state = 3038; this.match(MySqlParser.KW_REPAIR); - this.state = 2978; + this.state = 3039; this.match(MySqlParser.KW_PARTITION); - this.state = 2981; + this.state = 3042; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -15784,6 +16611,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -16003,13 +16831,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 2979; + this.state = 3040; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 2980; + this.state = 3041; this.match(MySqlParser.KW_ALL); } break; @@ -16022,9 +16850,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByRemovePartitioningContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 2983; + this.state = 3044; this.match(MySqlParser.KW_REMOVE); - this.state = 2984; + this.state = 3045; this.match(MySqlParser.KW_PARTITIONING); } break; @@ -16032,9 +16860,9 @@ export class MySqlParser extends SQLParserBase { localContext = new AlterByUpgradePartitioningContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 2985; + this.state = 3046; this.match(MySqlParser.KW_UPGRADE); - this.state = 2986; + this.state = 3047; this.match(MySqlParser.KW_PARTITIONING); } break; @@ -16058,14 +16886,14 @@ export class MySqlParser extends SQLParserBase { } public dropDatabase(): DropDatabaseContext { let localContext = new DropDatabaseContext(this.context, this.state); - this.enterRule(localContext, 144, MySqlParser.RULE_dropDatabase); + this.enterRule(localContext, 150, MySqlParser.RULE_dropDatabase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2989; + this.state = 3050; this.match(MySqlParser.KW_DROP); - this.state = 2990; + this.state = 3051; localContext._dbFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 152)) { @@ -16075,17 +16903,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2992; + this.state = 3053; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 361, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 371, this.context) ) { case 1: { - this.state = 2991; + this.state = 3052; this.ifExists(); } break; } - this.state = 2994; + this.state = 3055; this.databaseName(); } } @@ -16105,25 +16933,25 @@ export class MySqlParser extends SQLParserBase { } public dropEvent(): DropEventContext { let localContext = new DropEventContext(this.context, this.state); - this.enterRule(localContext, 146, MySqlParser.RULE_dropEvent); + this.enterRule(localContext, 152, MySqlParser.RULE_dropEvent); try { this.enterOuterAlt(localContext, 1); { - this.state = 2996; + this.state = 3057; this.match(MySqlParser.KW_DROP); - this.state = 2997; + this.state = 3058; this.match(MySqlParser.KW_EVENT); - this.state = 2999; + this.state = 3060; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 362, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 372, this.context) ) { case 1: { - this.state = 2998; + this.state = 3059; this.ifExists(); } break; } - this.state = 3001; + this.state = 3062; localContext._event_name = this.fullId(); } } @@ -16143,22 +16971,22 @@ export class MySqlParser extends SQLParserBase { } public dropIndex(): DropIndexContext { let localContext = new DropIndexContext(this.context, this.state); - this.enterRule(localContext, 148, MySqlParser.RULE_dropIndex); + this.enterRule(localContext, 154, MySqlParser.RULE_dropIndex); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3003; + this.state = 3064; this.match(MySqlParser.KW_DROP); - this.state = 3004; + this.state = 3065; this.match(MySqlParser.KW_INDEX); - this.state = 3006; + this.state = 3067; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 363, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 373, this.context) ) { case 1: { - this.state = 3005; + this.state = 3066; localContext._intimeAction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 508 || _la === 514)) { @@ -16171,36 +16999,36 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 3008; + this.state = 3069; this.indexName(); - this.state = 3009; + this.state = 3070; this.match(MySqlParser.KW_ON); - this.state = 3010; + this.state = 3071; this.tableName(); - this.state = 3023; + this.state = 3084; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 367, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 377, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 3021; + this.state = 3082; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ALGORITHM: { - this.state = 3011; + this.state = 3072; this.match(MySqlParser.KW_ALGORITHM); - this.state = 3013; + this.state = 3074; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 3012; + this.state = 3073; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 3015; + this.state = 3076; localContext._algType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 357 || _la === 430)) { @@ -16214,19 +17042,19 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_LOCK: { - this.state = 3016; + this.state = 3077; this.match(MySqlParser.KW_LOCK); - this.state = 3018; + this.state = 3079; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 3017; + this.state = 3078; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 3020; + this.state = 3081; localContext._lockType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 389 || _la === 505 || _la === 595)) { @@ -16243,9 +17071,9 @@ export class MySqlParser extends SQLParserBase { } } } - this.state = 3025; + this.state = 3086; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 367, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 377, this.context); } } } @@ -16265,32 +17093,32 @@ export class MySqlParser extends SQLParserBase { } public dropLogfileGroup(): DropLogfileGroupContext { let localContext = new DropLogfileGroupContext(this.context, this.state); - this.enterRule(localContext, 150, MySqlParser.RULE_dropLogfileGroup); + this.enterRule(localContext, 156, MySqlParser.RULE_dropLogfileGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3026; + this.state = 3087; this.match(MySqlParser.KW_DROP); - this.state = 3027; + this.state = 3088; this.match(MySqlParser.KW_LOGFILE); - this.state = 3028; + this.state = 3089; this.match(MySqlParser.KW_GROUP); - this.state = 3029; + this.state = 3090; localContext._logfileGroupName = this.uid(); - this.state = 3030; + this.state = 3091; this.match(MySqlParser.KW_ENGINE); - this.state = 3032; + this.state = 3093; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 3031; + this.state = 3092; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 3034; + this.state = 3095; this.engineName(); } } @@ -16310,25 +17138,25 @@ export class MySqlParser extends SQLParserBase { } public dropProcedure(): DropProcedureContext { let localContext = new DropProcedureContext(this.context, this.state); - this.enterRule(localContext, 152, MySqlParser.RULE_dropProcedure); + this.enterRule(localContext, 158, MySqlParser.RULE_dropProcedure); try { this.enterOuterAlt(localContext, 1); { - this.state = 3036; + this.state = 3097; this.match(MySqlParser.KW_DROP); - this.state = 3037; + this.state = 3098; this.match(MySqlParser.KW_PROCEDURE); - this.state = 3039; + this.state = 3100; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 369, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 379, this.context) ) { case 1: { - this.state = 3038; + this.state = 3099; this.ifExists(); } break; } - this.state = 3041; + this.state = 3102; localContext._sp_name = this.fullId(); } } @@ -16348,25 +17176,25 @@ export class MySqlParser extends SQLParserBase { } public dropFunction(): DropFunctionContext { let localContext = new DropFunctionContext(this.context, this.state); - this.enterRule(localContext, 154, MySqlParser.RULE_dropFunction); + this.enterRule(localContext, 160, MySqlParser.RULE_dropFunction); try { this.enterOuterAlt(localContext, 1); { - this.state = 3043; + this.state = 3104; this.match(MySqlParser.KW_DROP); - this.state = 3044; + this.state = 3105; this.match(MySqlParser.KW_FUNCTION); - this.state = 3046; + this.state = 3107; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 370, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 380, this.context) ) { case 1: { - this.state = 3045; + this.state = 3106; this.ifExists(); } break; } - this.state = 3048; + this.state = 3109; this.functionName(); } } @@ -16386,25 +17214,25 @@ export class MySqlParser extends SQLParserBase { } public dropServer(): DropServerContext { let localContext = new DropServerContext(this.context, this.state); - this.enterRule(localContext, 156, MySqlParser.RULE_dropServer); + this.enterRule(localContext, 162, MySqlParser.RULE_dropServer); try { this.enterOuterAlt(localContext, 1); { - this.state = 3050; + this.state = 3111; this.match(MySqlParser.KW_DROP); - this.state = 3051; + this.state = 3112; this.match(MySqlParser.KW_SERVER); - this.state = 3053; + this.state = 3114; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 371, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 381, this.context) ) { case 1: { - this.state = 3052; + this.state = 3113; this.ifExists(); } break; } - this.state = 3055; + this.state = 3116; localContext._serverName = this.uid(); } } @@ -16424,30 +17252,30 @@ export class MySqlParser extends SQLParserBase { } public dropSpatial(): DropSpatialContext { let localContext = new DropSpatialContext(this.context, this.state); - this.enterRule(localContext, 158, MySqlParser.RULE_dropSpatial); + this.enterRule(localContext, 164, MySqlParser.RULE_dropSpatial); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3057; + this.state = 3118; this.match(MySqlParser.KW_DROP); - this.state = 3058; + this.state = 3119; this.match(MySqlParser.KW_SPATIAL); - this.state = 3059; + this.state = 3120; this.match(MySqlParser.KW_REFERENCE); - this.state = 3060; + this.state = 3121; this.match(MySqlParser.KW_SYSTEM); - this.state = 3062; + this.state = 3123; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 3061; + this.state = 3122; this.ifExists(); } } - this.state = 3064; + this.state = 3125; this.match(MySqlParser.DECIMAL_LITERAL); } } @@ -16467,43 +17295,43 @@ export class MySqlParser extends SQLParserBase { } public dropTable(): DropTableContext { let localContext = new DropTableContext(this.context, this.state); - this.enterRule(localContext, 160, MySqlParser.RULE_dropTable); + this.enterRule(localContext, 166, MySqlParser.RULE_dropTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3066; + this.state = 3127; this.match(MySqlParser.KW_DROP); - this.state = 3068; + this.state = 3129; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 660) { { - this.state = 3067; + this.state = 3128; this.match(MySqlParser.KW_TEMPORARY); } } - this.state = 3070; + this.state = 3131; this.match(MySqlParser.KW_TABLE); - this.state = 3072; + this.state = 3133; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 374, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 384, this.context) ) { case 1: { - this.state = 3071; + this.state = 3132; this.ifExists(); } break; } - this.state = 3074; + this.state = 3135; this.tableNames(); - this.state = 3076; + this.state = 3137; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 22 || _la === 146) { { - this.state = 3075; + this.state = 3136; localContext._dropType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 22 || _la === 146)) { @@ -16534,45 +17362,45 @@ export class MySqlParser extends SQLParserBase { } public dropTablespace(): DropTablespaceContext { let localContext = new DropTablespaceContext(this.context, this.state); - this.enterRule(localContext, 162, MySqlParser.RULE_dropTablespace); + this.enterRule(localContext, 168, MySqlParser.RULE_dropTablespace); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3078; + this.state = 3139; this.match(MySqlParser.KW_DROP); - this.state = 3080; + this.state = 3141; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 180) { { - this.state = 3079; + this.state = 3140; this.match(MySqlParser.KW_UNDO); } } - this.state = 3082; + this.state = 3143; this.match(MySqlParser.KW_TABLESPACE); - this.state = 3083; + this.state = 3144; this.tablespaceName(); - this.state = 3089; + this.state = 3150; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 380) { { - this.state = 3084; + this.state = 3145; this.match(MySqlParser.KW_ENGINE); - this.state = 3086; + this.state = 3147; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 3085; + this.state = 3146; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 3088; + this.state = 3149; this.engineName(); } } @@ -16595,25 +17423,25 @@ export class MySqlParser extends SQLParserBase { } public dropTrigger(): DropTriggerContext { let localContext = new DropTriggerContext(this.context, this.state); - this.enterRule(localContext, 164, MySqlParser.RULE_dropTrigger); + this.enterRule(localContext, 170, MySqlParser.RULE_dropTrigger); try { this.enterOuterAlt(localContext, 1); { - this.state = 3091; + this.state = 3152; this.match(MySqlParser.KW_DROP); - this.state = 3092; + this.state = 3153; this.match(MySqlParser.KW_TRIGGER); - this.state = 3094; + this.state = 3155; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 379, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 389, this.context) ) { case 1: { - this.state = 3093; + this.state = 3154; this.ifExists(); } break; } - this.state = 3096; + this.state = 3157; localContext._trigger_name = this.fullId(); } } @@ -16633,49 +17461,49 @@ export class MySqlParser extends SQLParserBase { } public dropView(): DropViewContext { let localContext = new DropViewContext(this.context, this.state); - this.enterRule(localContext, 166, MySqlParser.RULE_dropView); + this.enterRule(localContext, 172, MySqlParser.RULE_dropView); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3098; + this.state = 3159; this.match(MySqlParser.KW_DROP); - this.state = 3099; + this.state = 3160; this.match(MySqlParser.KW_VIEW); - this.state = 3101; + this.state = 3162; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 380, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 390, this.context) ) { case 1: { - this.state = 3100; + this.state = 3161; this.ifExists(); } break; } - this.state = 3103; + this.state = 3164; this.viewName(); - this.state = 3108; + this.state = 3169; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3104; + this.state = 3165; this.match(MySqlParser.COMMA); - this.state = 3105; + this.state = 3166; this.viewName(); } } - this.state = 3110; + this.state = 3171; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3112; + this.state = 3173; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 22 || _la === 146) { { - this.state = 3111; + this.state = 3172; localContext._dropType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 22 || _la === 146)) { @@ -16706,25 +17534,25 @@ export class MySqlParser extends SQLParserBase { } public dropRole(): DropRoleContext { let localContext = new DropRoleContext(this.context, this.state); - this.enterRule(localContext, 168, MySqlParser.RULE_dropRole); + this.enterRule(localContext, 174, MySqlParser.RULE_dropRole); try { this.enterOuterAlt(localContext, 1); { - this.state = 3114; + this.state = 3175; this.match(MySqlParser.KW_DROP); - this.state = 3115; + this.state = 3176; this.match(MySqlParser.KW_ROLE); - this.state = 3117; + this.state = 3178; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 383, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 393, this.context) ) { case 1: { - this.state = 3116; + this.state = 3177; this.ifExists(); } break; } - this.state = 3119; + this.state = 3180; this.userOrRoleNames(); } } @@ -16744,64 +17572,64 @@ export class MySqlParser extends SQLParserBase { } public setRole(): SetRoleContext { let localContext = new SetRoleContext(this.context, this.state); - this.enterRule(localContext, 170, MySqlParser.RULE_setRole); + this.enterRule(localContext, 176, MySqlParser.RULE_setRole); let _la: number; try { - this.state = 3141; + this.state = 3202; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 386, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 396, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3121; + this.state = 3182; this.match(MySqlParser.KW_SET); - this.state = 3122; + this.state = 3183; this.match(MySqlParser.KW_DEFAULT); - this.state = 3123; + this.state = 3184; this.match(MySqlParser.KW_ROLE); - this.state = 3127; + this.state = 3188; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 384, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 394, this.context) ) { case 1: { - this.state = 3124; + this.state = 3185; this.match(MySqlParser.KW_NONE); } break; case 2: { - this.state = 3125; + this.state = 3186; this.match(MySqlParser.KW_ALL); } break; case 3: { - this.state = 3126; + this.state = 3187; this.userOrRoleNames(); } break; } - this.state = 3129; + this.state = 3190; this.match(MySqlParser.KW_TO); { - this.state = 3130; + this.state = 3191; this.userOrRoleName(); } - this.state = 3135; + this.state = 3196; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3131; + this.state = 3192; this.match(MySqlParser.COMMA); { - this.state = 3132; + this.state = 3193; this.userOrRoleName(); } } } - this.state = 3137; + this.state = 3198; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -16810,11 +17638,11 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3138; + this.state = 3199; this.match(MySqlParser.KW_SET); - this.state = 3139; + this.state = 3200; this.match(MySqlParser.KW_ROLE); - this.state = 3140; + this.state = 3201; this.roleOption(); } break; @@ -16836,30 +17664,30 @@ export class MySqlParser extends SQLParserBase { } public renameTable(): RenameTableContext { let localContext = new RenameTableContext(this.context, this.state); - this.enterRule(localContext, 172, MySqlParser.RULE_renameTable); + this.enterRule(localContext, 178, MySqlParser.RULE_renameTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3143; + this.state = 3204; this.match(MySqlParser.KW_RENAME); - this.state = 3144; + this.state = 3205; this.match(MySqlParser.KW_TABLE); - this.state = 3145; + this.state = 3206; this.renameTableClause(); - this.state = 3150; + this.state = 3211; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3146; + this.state = 3207; this.match(MySqlParser.COMMA); - this.state = 3147; + this.state = 3208; this.renameTableClause(); } } - this.state = 3152; + this.state = 3213; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -16881,15 +17709,15 @@ export class MySqlParser extends SQLParserBase { } public renameTableClause(): RenameTableClauseContext { let localContext = new RenameTableClauseContext(this.context, this.state); - this.enterRule(localContext, 174, MySqlParser.RULE_renameTableClause); + this.enterRule(localContext, 180, MySqlParser.RULE_renameTableClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 3153; + this.state = 3214; this.tableName(); - this.state = 3154; + this.state = 3215; this.match(MySqlParser.KW_TO); - this.state = 3155; + this.state = 3216; this.tableNameCreate(); } } @@ -16909,24 +17737,24 @@ export class MySqlParser extends SQLParserBase { } public truncateTable(): TruncateTableContext { let localContext = new TruncateTableContext(this.context, this.state); - this.enterRule(localContext, 176, MySqlParser.RULE_truncateTable); + this.enterRule(localContext, 182, MySqlParser.RULE_truncateTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3157; + this.state = 3218; this.match(MySqlParser.KW_TRUNCATE); - this.state = 3159; + this.state = 3220; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 173) { { - this.state = 3158; + this.state = 3219; this.match(MySqlParser.KW_TABLE); } } - this.state = 3161; + this.state = 3222; this.tableName(); } } @@ -16946,38 +17774,38 @@ export class MySqlParser extends SQLParserBase { } public callStatement(): CallStatementContext { let localContext = new CallStatementContext(this.context, this.state); - this.enterRule(localContext, 178, MySqlParser.RULE_callStatement); + this.enterRule(localContext, 184, MySqlParser.RULE_callStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 3163; + this.state = 3224; this.match(MySqlParser.KW_CALL); - this.state = 3164; + this.state = 3225; localContext._sp_name = this.fullId(); - this.state = 3171; + this.state = 3232; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 390, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 400, this.context) ) { case 1: { - this.state = 3165; + this.state = 3226; this.match(MySqlParser.LR_BRACKET); - this.state = 3168; + this.state = 3229; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 389, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 399, this.context) ) { case 1: { - this.state = 3166; + this.state = 3227; this.constants(); } break; case 2: { - this.state = 3167; + this.state = 3228; this.expressions(); } break; } - this.state = 3170; + this.state = 3231; this.match(MySqlParser.RR_BRACKET); } break; @@ -17000,22 +17828,22 @@ export class MySqlParser extends SQLParserBase { } public deleteStatement(): DeleteStatementContext { let localContext = new DeleteStatementContext(this.context, this.state); - this.enterRule(localContext, 180, MySqlParser.RULE_deleteStatement); + this.enterRule(localContext, 186, MySqlParser.RULE_deleteStatement); try { - this.state = 3175; + this.state = 3236; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 391, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 401, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3173; + this.state = 3234; this.singleDeleteStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3174; + this.state = 3235; this.multipleDeleteStatement(); } break; @@ -17037,13 +17865,13 @@ export class MySqlParser extends SQLParserBase { } public doStatement(): DoStatementContext { let localContext = new DoStatementContext(this.context, this.state); - this.enterRule(localContext, 182, MySqlParser.RULE_doStatement); + this.enterRule(localContext, 188, MySqlParser.RULE_doStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 3177; + this.state = 3238; this.match(MySqlParser.KW_DO); - this.state = 3178; + this.state = 3239; this.expressions(); } } @@ -17063,36 +17891,36 @@ export class MySqlParser extends SQLParserBase { } public handlerStatement(): HandlerStatementContext { let localContext = new HandlerStatementContext(this.context, this.state); - this.enterRule(localContext, 184, MySqlParser.RULE_handlerStatement); + this.enterRule(localContext, 190, MySqlParser.RULE_handlerStatement); try { - this.state = 3184; + this.state = 3245; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 392, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 402, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3180; + this.state = 3241; this.handlerOpenStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3181; + this.state = 3242; this.handlerReadIndexStatement(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3182; + this.state = 3243; this.handlerReadStatement(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3183; + this.state = 3244; this.handlerCloseStatement(); } break; @@ -17114,19 +17942,19 @@ export class MySqlParser extends SQLParserBase { } public insertStatement(): InsertStatementContext { let localContext = new InsertStatementContext(this.context, this.state); - this.enterRule(localContext, 186, MySqlParser.RULE_insertStatement); + this.enterRule(localContext, 192, MySqlParser.RULE_insertStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3186; + this.state = 3247; this.match(MySqlParser.KW_INSERT); - this.state = 3188; + this.state = 3249; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 43 || _la === 76 || _la === 107) { { - this.state = 3187; + this.state = 3248; localContext._priority = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 43 || _la === 76 || _la === 107)) { @@ -17139,89 +17967,89 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3191; + this.state = 3252; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3190; + this.state = 3251; this.match(MySqlParser.KW_IGNORE); } } - this.state = 3194; + this.state = 3255; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3193; + this.state = 3254; this.match(MySqlParser.KW_INTO); } } - this.state = 3196; + this.state = 3257; this.tableName(); - this.state = 3203; + this.state = 3264; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 3197; + this.state = 3258; this.match(MySqlParser.KW_PARTITION); - this.state = 3198; + this.state = 3259; this.match(MySqlParser.LR_BRACKET); - this.state = 3200; + this.state = 3261; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 3199; + this.state = 3260; this.partitionNames(); } } - this.state = 3202; + this.state = 3263; this.match(MySqlParser.RR_BRACKET); } } - this.state = 3216; + this.state = 3277; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 401, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 411, this.context) ) { case 1: { - this.state = 3206; + this.state = 3267; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 398, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 408, this.context) ) { case 1: { - this.state = 3205; + this.state = 3266; this.fullColumnNames(); } break; } - this.state = 3210; + this.state = 3271; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 399, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 409, this.context) ) { case 1: { - this.state = 3208; + this.state = 3269; this.valuesOrValueList(); } break; case 2: { - this.state = 3209; + this.state = 3270; this.selectOrTableOrValues(); } break; } - this.state = 3213; + this.state = 3274; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 400, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 410, this.context) ) { case 1: { - this.state = 3212; + this.state = 3273; this.asRowAlias(); } break; @@ -17230,50 +18058,50 @@ export class MySqlParser extends SQLParserBase { break; case 2: { - this.state = 3215; + this.state = 3276; this.setAssignmentList(); } break; } - this.state = 3219; + this.state = 3280; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3218; + this.state = 3279; this.asRowAlias(); } } - this.state = 3233; + this.state = 3294; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 119) { { - this.state = 3221; + this.state = 3282; this.match(MySqlParser.KW_ON); - this.state = 3222; + this.state = 3283; this.match(MySqlParser.KW_DUPLICATE); - this.state = 3223; + this.state = 3284; this.match(MySqlParser.KW_KEY); - this.state = 3224; + this.state = 3285; this.match(MySqlParser.KW_UPDATE); - this.state = 3225; + this.state = 3286; localContext._duplicatedFirst = this.updatedElement(); - this.state = 3230; + this.state = 3291; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3226; + this.state = 3287; this.match(MySqlParser.COMMA); - this.state = 3227; + this.state = 3288; localContext._updatedElement = this.updatedElement(); localContext._duplicatedElements.push(localContext._updatedElement); } } - this.state = 3232; + this.state = 3293; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -17298,20 +18126,20 @@ export class MySqlParser extends SQLParserBase { } public asRowAlias(): AsRowAliasContext { let localContext = new AsRowAliasContext(this.context, this.state); - this.enterRule(localContext, 188, MySqlParser.RULE_asRowAlias); + this.enterRule(localContext, 194, MySqlParser.RULE_asRowAlias); try { this.enterOuterAlt(localContext, 1); { - this.state = 3235; + this.state = 3296; this.match(MySqlParser.KW_AS); - this.state = 3236; + this.state = 3297; localContext._rowAlias = this.uid(); - this.state = 3238; + this.state = 3299; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 405, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 415, this.context) ) { case 1: { - this.state = 3237; + this.state = 3298; this.fullColumnNames(); } break; @@ -17334,32 +18162,32 @@ export class MySqlParser extends SQLParserBase { } public selectOrTableOrValues(): SelectOrTableOrValuesContext { let localContext = new SelectOrTableOrValuesContext(this.context, this.state); - this.enterRule(localContext, 190, MySqlParser.RULE_selectOrTableOrValues); + this.enterRule(localContext, 196, MySqlParser.RULE_selectOrTableOrValues); try { - this.state = 3244; + this.state = 3305; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: case MySqlParser.LR_BRACKET: this.enterOuterAlt(localContext, 1); { - this.state = 3240; + this.state = 3301; this.selectStatement(); } break; case MySqlParser.KW_TABLE: this.enterOuterAlt(localContext, 2); { - this.state = 3241; + this.state = 3302; this.match(MySqlParser.KW_TABLE); - this.state = 3242; + this.state = 3303; this.tableName(); } break; case MySqlParser.KW_VALUES: this.enterOuterAlt(localContext, 3); { - this.state = 3243; + this.state = 3304; this.rowValuesList(); } break; @@ -17383,27 +18211,27 @@ export class MySqlParser extends SQLParserBase { } public interSectStatement(): InterSectStatementContext { let localContext = new InterSectStatementContext(this.context, this.state); - this.enterRule(localContext, 192, MySqlParser.RULE_interSectStatement); + this.enterRule(localContext, 198, MySqlParser.RULE_interSectStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3246; + this.state = 3307; this.interSectQuery(); - this.state = 3252; + this.state = 3313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3247; + this.state = 3308; this.match(MySqlParser.KW_INTERSECT); - this.state = 3249; + this.state = 3310; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3248; + this.state = 3309; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { this.errorHandler.recoverInline(this); @@ -17415,11 +18243,11 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3251; + this.state = 3312; this.interSectQuery(); } } - this.state = 3254; + this.state = 3315; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 828); @@ -17441,29 +18269,29 @@ export class MySqlParser extends SQLParserBase { } public interSectQuery(): InterSectQueryContext { let localContext = new InterSectQueryContext(this.context, this.state); - this.enterRule(localContext, 194, MySqlParser.RULE_interSectQuery); + this.enterRule(localContext, 200, MySqlParser.RULE_interSectQuery); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3257; + this.state = 3318; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 3256; + this.state = 3317; this.match(MySqlParser.LR_BRACKET); } } - this.state = 3259; + this.state = 3320; this.querySpecification(); - this.state = 3261; + this.state = 3322; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 410, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 420, this.context) ) { case 1: { - this.state = 3260; + this.state = 3321; this.match(MySqlParser.RR_BRACKET); } break; @@ -17486,21 +18314,21 @@ export class MySqlParser extends SQLParserBase { } public loadDataStatement(): LoadDataStatementContext { let localContext = new LoadDataStatementContext(this.context, this.state); - this.enterRule(localContext, 196, MySqlParser.RULE_loadDataStatement); + this.enterRule(localContext, 202, MySqlParser.RULE_loadDataStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3263; + this.state = 3324; this.match(MySqlParser.KW_LOAD); - this.state = 3264; + this.state = 3325; this.match(MySqlParser.KW_DATA); - this.state = 3266; + this.state = 3327; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107 || _la === 347) { { - this.state = 3265; + this.state = 3326; localContext._priority = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 107 || _la === 347)) { @@ -17513,26 +18341,26 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3269; + this.state = 3330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 450) { { - this.state = 3268; + this.state = 3329; this.match(MySqlParser.KW_LOCAL); } } - this.state = 3271; + this.state = 3332; this.match(MySqlParser.KW_INFILE); - this.state = 3272; + this.state = 3333; localContext._filename = this.match(MySqlParser.STRING_LITERAL); - this.state = 3274; + this.state = 3335; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79 || _la === 143) { { - this.state = 3273; + this.state = 3334; localContext._violation = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 79 || _la === 143)) { @@ -17545,48 +18373,48 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3276; + this.state = 3337; this.match(MySqlParser.KW_INTO); - this.state = 3277; + this.state = 3338; this.match(MySqlParser.KW_TABLE); - this.state = 3278; + this.state = 3339; this.tableName(); - this.state = 3284; + this.state = 3345; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 3279; + this.state = 3340; this.match(MySqlParser.KW_PARTITION); - this.state = 3280; + this.state = 3341; this.match(MySqlParser.LR_BRACKET); - this.state = 3281; + this.state = 3342; this.partitionNames(); - this.state = 3282; + this.state = 3343; this.match(MySqlParser.RR_BRACKET); } } - this.state = 3289; + this.state = 3350; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 26) { { - this.state = 3286; + this.state = 3347; this.match(MySqlParser.KW_CHARACTER); - this.state = 3287; + this.state = 3348; this.match(MySqlParser.KW_SET); - this.state = 3288; + this.state = 3349; localContext._charset = this.charsetName(); } } - this.state = 3297; + this.state = 3358; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 337 || _la === 398) { { - this.state = 3291; + this.state = 3352; localContext._fieldsFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 337 || _la === 398)) { @@ -17596,57 +18424,57 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3293; + this.state = 3354; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3292; + this.state = 3353; this.selectFieldsInto(); } } - this.state = 3295; + this.state = 3356; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 56 || _la === 58 || _la === 123 || _la === 174); } } - this.state = 3305; + this.state = 3366; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 102) { { - this.state = 3299; + this.state = 3360; this.match(MySqlParser.KW_LINES); - this.state = 3301; + this.state = 3362; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3300; + this.state = 3361; this.selectLinesInto(); } } - this.state = 3303; + this.state = 3364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 171 || _la === 174); } } - this.state = 3311; + this.state = 3372; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3307; + this.state = 3368; this.match(MySqlParser.KW_IGNORE); - this.state = 3308; + this.state = 3369; this.decimalLiteral(); - this.state = 3309; + this.state = 3370; localContext._linesFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 102 || _la === 587)) { @@ -17659,58 +18487,58 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3324; + this.state = 3385; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 422, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 432, this.context) ) { case 1: { - this.state = 3313; + this.state = 3374; this.match(MySqlParser.LR_BRACKET); - this.state = 3314; + this.state = 3375; this.assignmentField(); - this.state = 3319; + this.state = 3380; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3315; + this.state = 3376; this.match(MySqlParser.COMMA); - this.state = 3316; + this.state = 3377; this.assignmentField(); } } - this.state = 3321; + this.state = 3382; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3322; + this.state = 3383; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 3335; + this.state = 3396; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 424, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 434, this.context) ) { case 1: { - this.state = 3326; + this.state = 3387; this.match(MySqlParser.KW_SET); - this.state = 3327; + this.state = 3388; this.updatedElement(); - this.state = 3332; + this.state = 3393; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3328; + this.state = 3389; this.match(MySqlParser.COMMA); - this.state = 3329; + this.state = 3390; this.updatedElement(); } } - this.state = 3334; + this.state = 3395; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -17735,21 +18563,21 @@ export class MySqlParser extends SQLParserBase { } public loadXmlStatement(): LoadXmlStatementContext { let localContext = new LoadXmlStatementContext(this.context, this.state); - this.enterRule(localContext, 198, MySqlParser.RULE_loadXmlStatement); + this.enterRule(localContext, 204, MySqlParser.RULE_loadXmlStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3337; + this.state = 3398; this.match(MySqlParser.KW_LOAD); - this.state = 3338; + this.state = 3399; this.match(MySqlParser.KW_XML); - this.state = 3340; + this.state = 3401; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107 || _la === 347) { { - this.state = 3339; + this.state = 3400; localContext._priority = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 107 || _la === 347)) { @@ -17762,26 +18590,26 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3343; + this.state = 3404; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 450) { { - this.state = 3342; + this.state = 3403; this.match(MySqlParser.KW_LOCAL); } } - this.state = 3345; + this.state = 3406; this.match(MySqlParser.KW_INFILE); - this.state = 3346; + this.state = 3407; localContext._filename = this.match(MySqlParser.STRING_LITERAL); - this.state = 3348; + this.state = 3409; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79 || _la === 143) { { - this.state = 3347; + this.state = 3408; localContext._violation = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 79 || _la === 143)) { @@ -17794,55 +18622,55 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3350; + this.state = 3411; this.match(MySqlParser.KW_INTO); - this.state = 3351; + this.state = 3412; this.match(MySqlParser.KW_TABLE); - this.state = 3352; + this.state = 3413; this.tableName(); - this.state = 3356; + this.state = 3417; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 26) { { - this.state = 3353; + this.state = 3414; this.match(MySqlParser.KW_CHARACTER); - this.state = 3354; + this.state = 3415; this.match(MySqlParser.KW_SET); - this.state = 3355; + this.state = 3416; localContext._charset = this.charsetName(); } } - this.state = 3368; + this.state = 3429; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 587) { { - this.state = 3358; + this.state = 3419; this.match(MySqlParser.KW_ROWS); - this.state = 3359; + this.state = 3420; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 3360; + this.state = 3421; this.match(MySqlParser.KW_BY); - this.state = 3362; + this.state = 3423; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 859) { { - this.state = 3361; + this.state = 3422; this.match(MySqlParser.LESS_SYMBOL); } } - this.state = 3364; + this.state = 3425; localContext._tag = this.match(MySqlParser.STRING_LITERAL); - this.state = 3366; + this.state = 3427; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 858) { { - this.state = 3365; + this.state = 3426; this.match(MySqlParser.GREATER_SYMBOL); } } @@ -17850,16 +18678,16 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3374; + this.state = 3435; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3370; + this.state = 3431; this.match(MySqlParser.KW_IGNORE); - this.state = 3371; + this.state = 3432; this.decimalLiteral(); - this.state = 3372; + this.state = 3433; localContext._linesFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 102 || _la === 587)) { @@ -17872,58 +18700,58 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3387; + this.state = 3448; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 434, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 444, this.context) ) { case 1: { - this.state = 3376; + this.state = 3437; this.match(MySqlParser.LR_BRACKET); - this.state = 3377; + this.state = 3438; this.assignmentField(); - this.state = 3382; + this.state = 3443; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3378; + this.state = 3439; this.match(MySqlParser.COMMA); - this.state = 3379; + this.state = 3440; this.assignmentField(); } } - this.state = 3384; + this.state = 3445; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3385; + this.state = 3446; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 3398; + this.state = 3459; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 436, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 446, this.context) ) { case 1: { - this.state = 3389; + this.state = 3450; this.match(MySqlParser.KW_SET); - this.state = 3390; + this.state = 3451; this.updatedElement(); - this.state = 3395; + this.state = 3456; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3391; + this.state = 3452; this.match(MySqlParser.COMMA); - this.state = 3392; + this.state = 3453; this.updatedElement(); } } - this.state = 3397; + this.state = 3458; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -17948,63 +18776,63 @@ export class MySqlParser extends SQLParserBase { } public parenthesizedQuery(): ParenthesizedQueryContext { let localContext = new ParenthesizedQueryContext(this.context, this.state); - this.enterRule(localContext, 200, MySqlParser.RULE_parenthesizedQuery); + this.enterRule(localContext, 206, MySqlParser.RULE_parenthesizedQuery); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3400; + this.state = 3461; this.match(MySqlParser.LR_BRACKET); - this.state = 3401; + this.state = 3462; this.parenthesizedQueryExpression(); - this.state = 3403; + this.state = 3464; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3402; + this.state = 3463; this.orderByClause(); } } - this.state = 3406; + this.state = 3467; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3405; + this.state = 3466; this.limitClause(); } } - this.state = 3408; + this.state = 3469; this.match(MySqlParser.RR_BRACKET); - this.state = 3410; + this.state = 3471; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3409; + this.state = 3470; this.orderByClause(); } } - this.state = 3413; + this.state = 3474; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3412; + this.state = 3473; this.limitClause(); } } - this.state = 3416; + this.state = 3477; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3415; + this.state = 3476; this.intoClause(); } } @@ -18027,19 +18855,19 @@ export class MySqlParser extends SQLParserBase { } public replaceStatement(): ReplaceStatementContext { let localContext = new ReplaceStatementContext(this.context, this.state); - this.enterRule(localContext, 202, MySqlParser.RULE_replaceStatement); + this.enterRule(localContext, 208, MySqlParser.RULE_replaceStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3418; + this.state = 3479; this.match(MySqlParser.KW_REPLACE); - this.state = 3420; + this.state = 3481; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 43 || _la === 107) { { - this.state = 3419; + this.state = 3480; localContext._priority = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 43 || _la === 107)) { @@ -18052,35 +18880,35 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3423; + this.state = 3484; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3422; + this.state = 3483; this.match(MySqlParser.KW_INTO); } } - this.state = 3425; + this.state = 3486; this.tableName(); - this.state = 3431; + this.state = 3492; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 3426; + this.state = 3487; this.match(MySqlParser.KW_PARTITION); - this.state = 3427; + this.state = 3488; this.match(MySqlParser.LR_BRACKET); - this.state = 3428; + this.state = 3489; this.partitionNames(); - this.state = 3429; + this.state = 3490; this.match(MySqlParser.RR_BRACKET); } } - this.state = 3441; + this.state = 3502; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: @@ -18089,27 +18917,27 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_VALUE: case MySqlParser.LR_BRACKET: { - this.state = 3437; + this.state = 3498; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 445, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 455, this.context) ) { case 1: { - this.state = 3433; + this.state = 3494; this.match(MySqlParser.LR_BRACKET); - this.state = 3434; + this.state = 3495; this.columnNames(); - this.state = 3435; + this.state = 3496; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 3439; + this.state = 3500; this.replaceStatementValuesOrSelectOrTable(); } break; case MySqlParser.KW_SET: { - this.state = 3440; + this.state = 3501; this.setAssignmentList(); } break; @@ -18134,48 +18962,48 @@ export class MySqlParser extends SQLParserBase { } public selectStatement(): SelectStatementContext { let localContext = new SelectStatementContext(this.context, this.state); - this.enterRule(localContext, 204, MySqlParser.RULE_selectStatement); + this.enterRule(localContext, 210, MySqlParser.RULE_selectStatement); let _la: number; try { let alternative: number; - this.state = 3502; + this.state = 3563; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: localContext = new UnionAndLateralSelectContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3443; + this.state = 3504; this.querySpecification(); - this.state = 3447; + this.state = 3508; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 447, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 457, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3444; + this.state = 3505; this.unionStatement(); } } } - this.state = 3449; + this.state = 3510; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 447, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 457, this.context); } - this.state = 3458; + this.state = 3519; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 450, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { case 1: { - this.state = 3450; + this.state = 3511; this.match(MySqlParser.KW_UNION); - this.state = 3452; + this.state = 3513; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3451; + this.state = 3512; (localContext as UnionAndLateralSelectContext)._unionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { @@ -18188,18 +19016,18 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3456; + this.state = 3517; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: { - this.state = 3454; + this.state = 3515; this.querySpecification(); } break; case MySqlParser.LR_BRACKET: { - this.state = 3455; + this.state = 3516; this.queryExpression(); } break; @@ -18209,60 +19037,60 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 3464; + this.state = 3525; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 461, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3460; + this.state = 3521; this.match(MySqlParser.COMMA); - this.state = 3461; + this.state = 3522; this.lateralStatement(); } } } - this.state = 3466; + this.state = 3527; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 451, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 461, this.context); } - this.state = 3468; + this.state = 3529; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 452, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 462, this.context) ) { case 1: { - this.state = 3467; + this.state = 3528; this.orderByClause(); } break; } - this.state = 3471; + this.state = 3532; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 453, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 463, this.context) ) { case 1: { - this.state = 3470; + this.state = 3531; this.limitClause(); } break; } - this.state = 3474; + this.state = 3535; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 454, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { case 1: { - this.state = 3473; + this.state = 3534; this.lockClause(); } break; } - this.state = 3477; + this.state = 3538; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 455, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context) ) { case 1: { - this.state = 3476; + this.state = 3537; this.intoClause(); } break; @@ -18273,37 +19101,37 @@ export class MySqlParser extends SQLParserBase { localContext = new SelectExpressionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3479; + this.state = 3540; this.queryExpression(); - this.state = 3483; + this.state = 3544; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 456, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 466, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3480; + this.state = 3541; this.unionStatement(); } } } - this.state = 3485; + this.state = 3546; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 456, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 466, this.context); } - this.state = 3491; + this.state = 3552; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 468, this.context) ) { case 1: { - this.state = 3486; + this.state = 3547; this.match(MySqlParser.KW_UNION); - this.state = 3488; + this.state = 3549; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3487; + this.state = 3548; (localContext as SelectExpressionContext)._unionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { @@ -18316,37 +19144,37 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3490; + this.state = 3551; this.queryExpression(); } break; } - this.state = 3494; + this.state = 3555; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 459, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 469, this.context) ) { case 1: { - this.state = 3493; + this.state = 3554; this.orderByClause(); } break; } - this.state = 3497; + this.state = 3558; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 470, this.context) ) { case 1: { - this.state = 3496; + this.state = 3557; this.limitClause(); } break; } - this.state = 3500; + this.state = 3561; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 461, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 471, this.context) ) { case 1: { - this.state = 3499; + this.state = 3560; this.lockClause(); } break; @@ -18373,49 +19201,49 @@ export class MySqlParser extends SQLParserBase { } public setOperations(): SetOperationsContext { let localContext = new SetOperationsContext(this.context, this.state); - this.enterRule(localContext, 206, MySqlParser.RULE_setOperations); + this.enterRule(localContext, 212, MySqlParser.RULE_setOperations); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3505; + this.state = 3566; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 194) { { - this.state = 3504; + this.state = 3565; this.withClause(); } } - this.state = 3507; + this.state = 3568; this.queryExpressionBody(0); - this.state = 3509; + this.state = 3570; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3508; + this.state = 3569; this.orderByClause(); } } - this.state = 3512; + this.state = 3573; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3511; + this.state = 3572; this.limitClause(); } } - this.state = 3515; + this.state = 3576; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3514; + this.state = 3575; this.intoClause(); } } @@ -18448,21 +19276,21 @@ export class MySqlParser extends SQLParserBase { let parentState = this.state; let localContext = new QueryExpressionBodyContext(this.context, parentState); let previousContext = localContext; - let _startState = 208; - this.enterRecursionRule(localContext, 208, MySqlParser.RULE_queryExpressionBody, _p); + let _startState = 214; + this.enterRecursionRule(localContext, 214, MySqlParser.RULE_queryExpressionBody, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { { - this.state = 3518; + this.state = 3579; this.queryItem(0); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 3534; + this.state = 3595; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 470, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 480, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -18470,25 +19298,25 @@ export class MySqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 3532; + this.state = 3593; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 469, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 479, this.context) ) { case 1: { localContext = new QueryExpressionBodyContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_queryExpressionBody); - this.state = 3520; + this.state = 3581; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 3521; + this.state = 3582; this.match(MySqlParser.KW_UNION); - this.state = 3523; + this.state = 3584; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3522; + this.state = 3583; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { this.errorHandler.recoverInline(this); @@ -18500,7 +19328,7 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3525; + this.state = 3586; this.queryItem(0); } break; @@ -18508,18 +19336,18 @@ export class MySqlParser extends SQLParserBase { { localContext = new QueryExpressionBodyContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_queryExpressionBody); - this.state = 3526; + this.state = 3587; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 3527; + this.state = 3588; this.match(MySqlParser.KW_EXCEPT); - this.state = 3529; + this.state = 3590; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3528; + this.state = 3589; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { this.errorHandler.recoverInline(this); @@ -18531,16 +19359,16 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3531; + this.state = 3592; this.queryItem(0); } break; } } } - this.state = 3536; + this.state = 3597; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 470, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 480, this.context); } } } @@ -18570,21 +19398,21 @@ export class MySqlParser extends SQLParserBase { let parentState = this.state; let localContext = new QueryItemContext(this.context, parentState); let previousContext = localContext; - let _startState = 210; - this.enterRecursionRule(localContext, 210, MySqlParser.RULE_queryItem, _p); + let _startState = 216; + this.enterRecursionRule(localContext, 216, MySqlParser.RULE_queryItem, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { { - this.state = 3538; + this.state = 3599; this.queryPrimary(); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 3548; + this.state = 3609; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 472, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 482, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -18595,18 +19423,18 @@ export class MySqlParser extends SQLParserBase { { localContext = new QueryItemContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_queryItem); - this.state = 3540; + this.state = 3601; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 3541; + this.state = 3602; this.match(MySqlParser.KW_INTERSECT); - this.state = 3543; + this.state = 3604; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 3542; + this.state = 3603; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { this.errorHandler.recoverInline(this); @@ -18618,14 +19446,14 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3545; + this.state = 3606; this.queryPrimary(); } } } - this.state = 3550; + this.state = 3611; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 472, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 482, this.context); } } } @@ -18645,57 +19473,57 @@ export class MySqlParser extends SQLParserBase { } public queryPrimary(): QueryPrimaryContext { let localContext = new QueryPrimaryContext(this.context, this.state); - this.enterRule(localContext, 212, MySqlParser.RULE_queryPrimary); + this.enterRule(localContext, 218, MySqlParser.RULE_queryPrimary); let _la: number; try { - this.state = 3565; + this.state = 3626; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 476, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 486, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3551; + this.state = 3612; this.queryBlock(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3552; + this.state = 3613; this.match(MySqlParser.LR_BRACKET); - this.state = 3553; + this.state = 3614; this.queryExpressionBody(0); - this.state = 3555; + this.state = 3616; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3554; + this.state = 3615; this.orderByClause(); } } - this.state = 3558; + this.state = 3619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3557; + this.state = 3618; this.limitClause(); } } - this.state = 3561; + this.state = 3622; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3560; + this.state = 3621; this.intoClause(); } } - this.state = 3563; + this.state = 3624; this.match(MySqlParser.RR_BRACKET); } break; @@ -18717,22 +19545,22 @@ export class MySqlParser extends SQLParserBase { } public updateStatement(): UpdateStatementContext { let localContext = new UpdateStatementContext(this.context, this.state); - this.enterRule(localContext, 214, MySqlParser.RULE_updateStatement); + this.enterRule(localContext, 220, MySqlParser.RULE_updateStatement); try { - this.state = 3569; + this.state = 3630; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 477, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 487, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3567; + this.state = 3628; this.singleUpdateStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3568; + this.state = 3629; this.multipleUpdateStatement(); } break; @@ -18754,34 +19582,34 @@ export class MySqlParser extends SQLParserBase { } public valuesStatement(): ValuesStatementContext { let localContext = new ValuesStatementContext(this.context, this.state); - this.enterRule(localContext, 216, MySqlParser.RULE_valuesStatement); + this.enterRule(localContext, 222, MySqlParser.RULE_valuesStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 3571; + this.state = 3632; this.rowValuesList(); - this.state = 3575; + this.state = 3636; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 478, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 488, this.context) ) { case 1: { - this.state = 3572; + this.state = 3633; this.match(MySqlParser.KW_ORDER); - this.state = 3573; + this.state = 3634; this.match(MySqlParser.KW_BY); - this.state = 3574; + this.state = 3635; this.indexColumnName(); } break; } - this.state = 3579; + this.state = 3640; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 479, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 489, this.context) ) { case 1: { - this.state = 3577; + this.state = 3638; this.match(MySqlParser.KW_LIMIT); - this.state = 3578; + this.state = 3639; this.limitClauseAtom(); } break; @@ -18804,20 +19632,20 @@ export class MySqlParser extends SQLParserBase { } public parenthesizedQueryExpression(): ParenthesizedQueryExpressionContext { let localContext = new ParenthesizedQueryExpressionContext(this.context, this.state); - this.enterRule(localContext, 218, MySqlParser.RULE_parenthesizedQueryExpression); + this.enterRule(localContext, 224, MySqlParser.RULE_parenthesizedQueryExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3581; + this.state = 3642; this.queryBlock(); - this.state = 3586; + this.state = 3647; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 59 || _la === 181 || _la === 828) { { { - this.state = 3582; + this.state = 3643; _la = this.tokenStream.LA(1); if(!(_la === 59 || _la === 181 || _la === 828)) { this.errorHandler.recoverInline(this); @@ -18826,40 +19654,40 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3583; + this.state = 3644; this.queryBlock(); } } - this.state = 3588; + this.state = 3649; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3590; + this.state = 3651; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 481, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 491, this.context) ) { case 1: { - this.state = 3589; + this.state = 3650; this.orderByClause(); } break; } - this.state = 3593; + this.state = 3654; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 482, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 492, this.context) ) { case 1: { - this.state = 3592; + this.state = 3653; this.limitClause(); } break; } - this.state = 3596; + this.state = 3657; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 88) { { - this.state = 3595; + this.state = 3656; this.intoClause(); } } @@ -18882,30 +19710,30 @@ export class MySqlParser extends SQLParserBase { } public queryBlock(): QueryBlockContext { let localContext = new QueryBlockContext(this.context, this.state); - this.enterRule(localContext, 220, MySqlParser.RULE_queryBlock); + this.enterRule(localContext, 226, MySqlParser.RULE_queryBlock); try { - this.state = 3601; + this.state = 3662; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: case MySqlParser.LR_BRACKET: this.enterOuterAlt(localContext, 1); { - this.state = 3598; + this.state = 3659; this.selectStatement(); } break; case MySqlParser.KW_TABLE: this.enterOuterAlt(localContext, 2); { - this.state = 3599; + this.state = 3660; this.tableStatement(); } break; case MySqlParser.KW_VALUES: this.enterOuterAlt(localContext, 3); { - this.state = 3600; + this.state = 3661; this.valuesStatement(); } break; @@ -18929,38 +19757,38 @@ export class MySqlParser extends SQLParserBase { } public replaceStatementValuesOrSelectOrTable(): ReplaceStatementValuesOrSelectOrTableContext { let localContext = new ReplaceStatementValuesOrSelectOrTableContext(this.context, this.state); - this.enterRule(localContext, 222, MySqlParser.RULE_replaceStatementValuesOrSelectOrTable); + this.enterRule(localContext, 228, MySqlParser.RULE_replaceStatementValuesOrSelectOrTable); try { - this.state = 3608; + this.state = 3669; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 485, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 495, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3603; + this.state = 3664; this.selectStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3604; + this.state = 3665; this.match(MySqlParser.KW_TABLE); - this.state = 3605; + this.state = 3666; this.tableName(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3606; + this.state = 3667; this.valuesOrValueList(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3607; + this.state = 3668; this.rowValuesList(); } break; @@ -18982,36 +19810,36 @@ export class MySqlParser extends SQLParserBase { } public rowValuesList(): RowValuesListContext { let localContext = new RowValuesListContext(this.context, this.state); - this.enterRule(localContext, 224, MySqlParser.RULE_rowValuesList); + this.enterRule(localContext, 230, MySqlParser.RULE_rowValuesList); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3610; + this.state = 3671; this.match(MySqlParser.KW_VALUES); - this.state = 3611; + this.state = 3672; this.match(MySqlParser.KW_ROW); - this.state = 3612; + this.state = 3673; this.expressionsWithDefaults(); - this.state = 3618; + this.state = 3679; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 486, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 496, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3613; + this.state = 3674; this.match(MySqlParser.COMMA); - this.state = 3614; + this.state = 3675; this.match(MySqlParser.KW_ROW); - this.state = 3615; + this.state = 3676; this.expressionsWithDefaults(); } } } - this.state = 3620; + this.state = 3681; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 486, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 496, this.context); } } } @@ -19031,29 +19859,29 @@ export class MySqlParser extends SQLParserBase { } public setAssignmentList(): SetAssignmentListContext { let localContext = new SetAssignmentListContext(this.context, this.state); - this.enterRule(localContext, 226, MySqlParser.RULE_setAssignmentList); + this.enterRule(localContext, 232, MySqlParser.RULE_setAssignmentList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3621; + this.state = 3682; this.match(MySqlParser.KW_SET); - this.state = 3622; + this.state = 3683; localContext._setFirst = this.updatedElement(); - this.state = 3627; + this.state = 3688; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3623; + this.state = 3684; this.match(MySqlParser.COMMA); - this.state = 3624; + this.state = 3685; localContext._updatedElement = this.updatedElement(); localContext._setElements.push(localContext._updatedElement); } } - this.state = 3629; + this.state = 3690; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -19075,15 +19903,15 @@ export class MySqlParser extends SQLParserBase { } public updatedElement(): UpdatedElementContext { let localContext = new UpdatedElementContext(this.context, this.state); - this.enterRule(localContext, 228, MySqlParser.RULE_updatedElement); + this.enterRule(localContext, 234, MySqlParser.RULE_updatedElement); try { this.enterOuterAlt(localContext, 1); { - this.state = 3630; + this.state = 3691; this.columnName(); - this.state = 3631; + this.state = 3692; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 3632; + this.state = 3693; this.expressionOrDefault(); } } @@ -19103,9 +19931,9 @@ export class MySqlParser extends SQLParserBase { } public assignmentField(): AssignmentFieldContext { let localContext = new AssignmentFieldContext(this.context, this.state); - this.enterRule(localContext, 230, MySqlParser.RULE_assignmentField); + this.enterRule(localContext, 236, MySqlParser.RULE_assignmentField); try { - this.state = 3636; + this.state = 3697; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -19438,6 +20266,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -19658,14 +20487,14 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.ID: this.enterOuterAlt(localContext, 1); { - this.state = 3634; + this.state = 3695; localContext._var_name = this.uid(); } break; case MySqlParser.LOCAL_ID: this.enterOuterAlt(localContext, 2); { - this.state = 3635; + this.state = 3696; this.match(MySqlParser.LOCAL_ID); } break; @@ -19689,19 +20518,19 @@ export class MySqlParser extends SQLParserBase { } public lockClause(): LockClauseContext { let localContext = new LockClauseContext(this.context, this.state); - this.enterRule(localContext, 232, MySqlParser.RULE_lockClause); + this.enterRule(localContext, 238, MySqlParser.RULE_lockClause); let _la: number; try { let alternative: number; - this.state = 3659; + this.state = 3720; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FOR: this.enterOuterAlt(localContext, 1); { - this.state = 3638; + this.state = 3699; this.match(MySqlParser.KW_FOR); - this.state = 3639; + this.state = 3700; _la = this.tokenStream.LA(1); if(!(_la === 185 || _la === 594)) { this.errorHandler.recoverInline(this); @@ -19710,42 +20539,42 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3649; + this.state = 3710; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 490, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 500, this.context) ) { case 1: { - this.state = 3640; + this.state = 3701; this.match(MySqlParser.KW_OF); - this.state = 3641; + this.state = 3702; this.tableName(); - this.state = 3646; + this.state = 3707; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 489, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 499, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3642; + this.state = 3703; this.match(MySqlParser.COMMA); - this.state = 3643; + this.state = 3704; this.tableName(); } } } - this.state = 3648; + this.state = 3709; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 489, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 499, this.context); } } break; } - this.state = 3653; + this.state = 3714; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 491, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 501, this.context) ) { case 1: { - this.state = 3651; + this.state = 3712; _la = this.tokenStream.LA(1); if(!(_la === 159 || _la === 503)) { this.errorHandler.recoverInline(this); @@ -19754,7 +20583,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3652; + this.state = 3713; this.match(MySqlParser.KW_LOCKED); } break; @@ -19764,13 +20593,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_LOCK: this.enterOuterAlt(localContext, 2); { - this.state = 3655; + this.state = 3716; this.match(MySqlParser.KW_LOCK); - this.state = 3656; + this.state = 3717; this.match(MySqlParser.KW_IN); - this.state = 3657; + this.state = 3718; this.match(MySqlParser.KW_SHARE); - this.state = 3658; + this.state = 3719; this.match(MySqlParser.KW_MODE); } break; @@ -19794,113 +20623,113 @@ export class MySqlParser extends SQLParserBase { } public singleDeleteStatement(): SingleDeleteStatementContext { let localContext = new SingleDeleteStatementContext(this.context, this.state); - this.enterRule(localContext, 234, MySqlParser.RULE_singleDeleteStatement); + this.enterRule(localContext, 240, MySqlParser.RULE_singleDeleteStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3661; + this.state = 3722; this.match(MySqlParser.KW_DELETE); - this.state = 3663; + this.state = 3724; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 3662; + this.state = 3723; localContext._priority = this.match(MySqlParser.KW_LOW_PRIORITY); } } - this.state = 3666; + this.state = 3727; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 549) { { - this.state = 3665; + this.state = 3726; this.match(MySqlParser.KW_QUICK); } } - this.state = 3669; + this.state = 3730; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3668; + this.state = 3729; this.match(MySqlParser.KW_IGNORE); } } - this.state = 3671; + this.state = 3732; this.match(MySqlParser.KW_FROM); - this.state = 3672; + this.state = 3733; this.tableName(); - this.state = 3677; + this.state = 3738; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 497, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 507, this.context) ) { case 1: { - this.state = 3674; + this.state = 3735; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3673; + this.state = 3734; this.match(MySqlParser.KW_AS); } } - this.state = 3676; + this.state = 3737; localContext._table_alias = this.uid(); } break; } - this.state = 3684; + this.state = 3745; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 3679; + this.state = 3740; this.match(MySqlParser.KW_PARTITION); - this.state = 3680; + this.state = 3741; this.match(MySqlParser.LR_BRACKET); - this.state = 3681; + this.state = 3742; this.partitionNames(); - this.state = 3682; + this.state = 3743; this.match(MySqlParser.RR_BRACKET); } } - this.state = 3688; + this.state = 3749; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3686; + this.state = 3747; this.match(MySqlParser.KW_WHERE); - this.state = 3687; + this.state = 3748; this.expression(0); } } - this.state = 3691; + this.state = 3752; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3690; + this.state = 3751; this.orderByClause(); } } - this.state = 3695; + this.state = 3756; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3693; + this.state = 3754; this.match(MySqlParser.KW_LIMIT); - this.state = 3694; + this.state = 3755; this.limitClauseAtom(); } } @@ -19923,44 +20752,44 @@ export class MySqlParser extends SQLParserBase { } public multipleDeleteStatement(): MultipleDeleteStatementContext { let localContext = new MultipleDeleteStatementContext(this.context, this.state); - this.enterRule(localContext, 236, MySqlParser.RULE_multipleDeleteStatement); + this.enterRule(localContext, 242, MySqlParser.RULE_multipleDeleteStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3697; + this.state = 3758; this.match(MySqlParser.KW_DELETE); - this.state = 3699; + this.state = 3760; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 3698; + this.state = 3759; localContext._priority = this.match(MySqlParser.KW_LOW_PRIORITY); } } - this.state = 3702; + this.state = 3763; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 503, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 513, this.context) ) { case 1: { - this.state = 3701; + this.state = 3762; this.match(MySqlParser.KW_QUICK); } break; } - this.state = 3705; + this.state = 3766; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3704; + this.state = 3765; this.match(MySqlParser.KW_IGNORE); } } - this.state = 3746; + this.state = 3807; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -20293,6 +21122,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -20512,117 +21342,117 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 3707; + this.state = 3768; this.tableName(); - this.state = 3710; + this.state = 3771; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 3708; + this.state = 3769; this.match(MySqlParser.DOT); - this.state = 3709; + this.state = 3770; this.match(MySqlParser.STAR); } } - this.state = 3720; + this.state = 3781; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3712; + this.state = 3773; this.match(MySqlParser.COMMA); - this.state = 3713; + this.state = 3774; this.tableName(); - this.state = 3716; + this.state = 3777; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 3714; + this.state = 3775; this.match(MySqlParser.DOT); - this.state = 3715; + this.state = 3776; this.match(MySqlParser.STAR); } } } } - this.state = 3722; + this.state = 3783; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3723; + this.state = 3784; this.match(MySqlParser.KW_FROM); - this.state = 3724; + this.state = 3785; this.tableSources(); } break; case MySqlParser.KW_FROM: { - this.state = 3726; + this.state = 3787; this.match(MySqlParser.KW_FROM); - this.state = 3727; + this.state = 3788; this.tableName(); - this.state = 3730; + this.state = 3791; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 3728; + this.state = 3789; this.match(MySqlParser.DOT); - this.state = 3729; + this.state = 3790; this.match(MySqlParser.STAR); } } - this.state = 3740; + this.state = 3801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3732; + this.state = 3793; this.match(MySqlParser.COMMA); - this.state = 3733; + this.state = 3794; this.tableName(); - this.state = 3736; + this.state = 3797; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 3734; + this.state = 3795; this.match(MySqlParser.DOT); - this.state = 3735; + this.state = 3796; this.match(MySqlParser.STAR); } } } } - this.state = 3742; + this.state = 3803; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3743; + this.state = 3804; this.match(MySqlParser.KW_USING); - this.state = 3744; + this.state = 3805; this.tableSources(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3750; + this.state = 3811; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3748; + this.state = 3809; this.match(MySqlParser.KW_WHERE); - this.state = 3749; + this.state = 3810; this.expression(0); } } @@ -20645,33 +21475,33 @@ export class MySqlParser extends SQLParserBase { } public handlerOpenStatement(): HandlerOpenStatementContext { let localContext = new HandlerOpenStatementContext(this.context, this.state); - this.enterRule(localContext, 238, MySqlParser.RULE_handlerOpenStatement); + this.enterRule(localContext, 244, MySqlParser.RULE_handlerOpenStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3752; + this.state = 3813; this.match(MySqlParser.KW_HANDLER); - this.state = 3753; + this.state = 3814; this.tableName(); - this.state = 3754; + this.state = 3815; this.match(MySqlParser.KW_OPEN); - this.state = 3759; + this.state = 3820; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 514, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 524, this.context) ) { case 1: { - this.state = 3756; + this.state = 3817; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3755; + this.state = 3816; this.match(MySqlParser.KW_AS); } } - this.state = 3758; + this.state = 3819; localContext._table_alias = this.uid(); } break; @@ -20694,33 +21524,33 @@ export class MySqlParser extends SQLParserBase { } public handlerReadIndexStatement(): HandlerReadIndexStatementContext { let localContext = new HandlerReadIndexStatementContext(this.context, this.state); - this.enterRule(localContext, 240, MySqlParser.RULE_handlerReadIndexStatement); + this.enterRule(localContext, 246, MySqlParser.RULE_handlerReadIndexStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3761; + this.state = 3822; this.match(MySqlParser.KW_HANDLER); - this.state = 3762; + this.state = 3823; this.tableName(); - this.state = 3763; + this.state = 3824; this.match(MySqlParser.KW_READ); - this.state = 3764; + this.state = 3825; this.indexName(); - this.state = 3771; + this.state = 3832; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.EQUAL_SYMBOL: case MySqlParser.GREATER_SYMBOL: case MySqlParser.LESS_SYMBOL: { - this.state = 3765; + this.state = 3826; this.comparisonBase(); - this.state = 3766; + this.state = 3827; this.match(MySqlParser.LR_BRACKET); - this.state = 3767; + this.state = 3828; this.constants(); - this.state = 3768; + this.state = 3829; this.match(MySqlParser.RR_BRACKET); } break; @@ -20729,7 +21559,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_NEXT: case MySqlParser.KW_PREV: { - this.state = 3770; + this.state = 3831; localContext._moveOrder = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 402 || _la === 445 || _la === 501 || _la === 542)) { @@ -20744,26 +21574,26 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 3775; + this.state = 3836; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3773; + this.state = 3834; this.match(MySqlParser.KW_WHERE); - this.state = 3774; + this.state = 3835; this.expression(0); } } - this.state = 3779; + this.state = 3840; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3777; + this.state = 3838; this.match(MySqlParser.KW_LIMIT); - this.state = 3778; + this.state = 3839; this.limitClauseAtom(); } } @@ -20786,18 +21616,18 @@ export class MySqlParser extends SQLParserBase { } public handlerReadStatement(): HandlerReadStatementContext { let localContext = new HandlerReadStatementContext(this.context, this.state); - this.enterRule(localContext, 242, MySqlParser.RULE_handlerReadStatement); + this.enterRule(localContext, 248, MySqlParser.RULE_handlerReadStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3781; + this.state = 3842; this.match(MySqlParser.KW_HANDLER); - this.state = 3782; + this.state = 3843; this.tableName(); - this.state = 3783; + this.state = 3844; this.match(MySqlParser.KW_READ); - this.state = 3784; + this.state = 3845; localContext._moveOrder = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 402 || _la === 501)) { @@ -20807,26 +21637,26 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3787; + this.state = 3848; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3785; + this.state = 3846; this.match(MySqlParser.KW_WHERE); - this.state = 3786; + this.state = 3847; this.expression(0); } } - this.state = 3791; + this.state = 3852; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3789; + this.state = 3850; this.match(MySqlParser.KW_LIMIT); - this.state = 3790; + this.state = 3851; this.limitClauseAtom(); } } @@ -20849,15 +21679,15 @@ export class MySqlParser extends SQLParserBase { } public handlerCloseStatement(): HandlerCloseStatementContext { let localContext = new HandlerCloseStatementContext(this.context, this.state); - this.enterRule(localContext, 244, MySqlParser.RULE_handlerCloseStatement); + this.enterRule(localContext, 250, MySqlParser.RULE_handlerCloseStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 3793; + this.state = 3854; this.match(MySqlParser.KW_HANDLER); - this.state = 3794; + this.state = 3855; this.tableName(); - this.state = 3795; + this.state = 3856; this.match(MySqlParser.KW_CLOSE); } } @@ -20877,32 +21707,32 @@ export class MySqlParser extends SQLParserBase { } public importTableStatement(): ImportTableStatementContext { let localContext = new ImportTableStatementContext(this.context, this.state); - this.enterRule(localContext, 246, MySqlParser.RULE_importTableStatement); + this.enterRule(localContext, 252, MySqlParser.RULE_importTableStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3797; + this.state = 3858; this.match(MySqlParser.KW_IMPORT); - this.state = 3798; + this.state = 3859; this.match(MySqlParser.KW_TABLE); - this.state = 3799; + this.state = 3860; this.match(MySqlParser.KW_FROM); - this.state = 3800; + this.state = 3861; this.stringLiteral(); - this.state = 3805; + this.state = 3866; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3801; + this.state = 3862; this.match(MySqlParser.COMMA); - this.state = 3802; + this.state = 3863; this.stringLiteral(); } } - this.state = 3807; + this.state = 3868; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -20924,103 +21754,103 @@ export class MySqlParser extends SQLParserBase { } public singleUpdateStatement(): SingleUpdateStatementContext { let localContext = new SingleUpdateStatementContext(this.context, this.state); - this.enterRule(localContext, 248, MySqlParser.RULE_singleUpdateStatement); + this.enterRule(localContext, 254, MySqlParser.RULE_singleUpdateStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3808; + this.state = 3869; this.match(MySqlParser.KW_UPDATE); - this.state = 3810; + this.state = 3871; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 3809; + this.state = 3870; localContext._priority = this.match(MySqlParser.KW_LOW_PRIORITY); } } - this.state = 3813; + this.state = 3874; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3812; + this.state = 3873; this.match(MySqlParser.KW_IGNORE); } } - this.state = 3815; + this.state = 3876; this.tableName(); - this.state = 3820; + this.state = 3881; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074311168) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074311168) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 3817; + this.state = 3878; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3816; + this.state = 3877; this.match(MySqlParser.KW_AS); } } - this.state = 3819; + this.state = 3880; localContext._table_alias = this.uid(); } } - this.state = 3822; + this.state = 3883; this.match(MySqlParser.KW_SET); - this.state = 3823; + this.state = 3884; this.updatedElement(); - this.state = 3828; + this.state = 3889; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3824; + this.state = 3885; this.match(MySqlParser.COMMA); - this.state = 3825; + this.state = 3886; this.updatedElement(); } } - this.state = 3830; + this.state = 3891; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3833; + this.state = 3894; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3831; + this.state = 3892; this.match(MySqlParser.KW_WHERE); - this.state = 3832; + this.state = 3893; this.expression(0); } } - this.state = 3836; + this.state = 3897; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 3835; + this.state = 3896; this.orderByClause(); } } - this.state = 3839; + this.state = 3900; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3838; + this.state = 3899; this.limitClause(); } } @@ -21043,63 +21873,63 @@ export class MySqlParser extends SQLParserBase { } public multipleUpdateStatement(): MultipleUpdateStatementContext { let localContext = new MultipleUpdateStatementContext(this.context, this.state); - this.enterRule(localContext, 250, MySqlParser.RULE_multipleUpdateStatement); + this.enterRule(localContext, 256, MySqlParser.RULE_multipleUpdateStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3841; + this.state = 3902; this.match(MySqlParser.KW_UPDATE); - this.state = 3843; + this.state = 3904; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 3842; + this.state = 3903; localContext._priority = this.match(MySqlParser.KW_LOW_PRIORITY); } } - this.state = 3846; + this.state = 3907; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 3845; + this.state = 3906; this.match(MySqlParser.KW_IGNORE); } } - this.state = 3848; + this.state = 3909; this.tableSources(); - this.state = 3849; + this.state = 3910; this.match(MySqlParser.KW_SET); - this.state = 3850; + this.state = 3911; this.updatedElement(); - this.state = 3855; + this.state = 3916; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 3851; + this.state = 3912; this.match(MySqlParser.COMMA); - this.state = 3852; + this.state = 3913; this.updatedElement(); } } - this.state = 3857; + this.state = 3918; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3860; + this.state = 3921; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3858; + this.state = 3919; this.match(MySqlParser.KW_WHERE); - this.state = 3859; + this.state = 3920; this.expression(0); } } @@ -21122,34 +21952,34 @@ export class MySqlParser extends SQLParserBase { } public orderByClause(): OrderByClauseContext { let localContext = new OrderByClauseContext(this.context, this.state); - this.enterRule(localContext, 252, MySqlParser.RULE_orderByClause); + this.enterRule(localContext, 258, MySqlParser.RULE_orderByClause); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3862; + this.state = 3923; this.match(MySqlParser.KW_ORDER); - this.state = 3863; + this.state = 3924; this.match(MySqlParser.KW_BY); - this.state = 3864; + this.state = 3925; this.orderByExpression(); - this.state = 3869; + this.state = 3930; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 533, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 543, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3865; + this.state = 3926; this.match(MySqlParser.COMMA); - this.state = 3866; + this.state = 3927; this.orderByExpression(); } } } - this.state = 3871; + this.state = 3932; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 533, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 543, this.context); } } } @@ -21169,19 +21999,19 @@ export class MySqlParser extends SQLParserBase { } public orderByExpression(): OrderByExpressionContext { let localContext = new OrderByExpressionContext(this.context, this.state); - this.enterRule(localContext, 254, MySqlParser.RULE_orderByExpression); + this.enterRule(localContext, 260, MySqlParser.RULE_orderByExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3872; + this.state = 3933; this.expression(0); - this.state = 3874; + this.state = 3935; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 534, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 544, this.context) ) { case 1: { - this.state = 3873; + this.state = 3934; localContext._order = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 14 || _la === 45)) { @@ -21212,30 +22042,30 @@ export class MySqlParser extends SQLParserBase { } public tableSources(): TableSourcesContext { let localContext = new TableSourcesContext(this.context, this.state); - this.enterRule(localContext, 256, MySqlParser.RULE_tableSources); + this.enterRule(localContext, 262, MySqlParser.RULE_tableSources); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3876; + this.state = 3937; this.tableSource(); - this.state = 3881; + this.state = 3942; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 535, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 545, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3877; + this.state = 3938; this.match(MySqlParser.COMMA); - this.state = 3878; + this.state = 3939; this.tableSource(); } } } - this.state = 3883; + this.state = 3944; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 535, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 545, this.context); } } } @@ -21255,34 +22085,34 @@ export class MySqlParser extends SQLParserBase { } public tableSource(): TableSourceContext { let localContext = new TableSourceContext(this.context, this.state); - this.enterRule(localContext, 258, MySqlParser.RULE_tableSource); + this.enterRule(localContext, 264, MySqlParser.RULE_tableSource); let _la: number; try { let alternative: number; - this.state = 3902; + this.state = 3963; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 538, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 548, this.context) ) { case 1: localContext = new TableSourceBaseContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3884; + this.state = 3945; this.tableSourceItem(); - this.state = 3888; + this.state = 3949; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 536, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 546, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3885; + this.state = 3946; this.joinPart(); } } } - this.state = 3890; + this.state = 3951; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 536, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 546, this.context); } } break; @@ -21290,25 +22120,25 @@ export class MySqlParser extends SQLParserBase { localContext = new TableSourceNestedContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3891; + this.state = 3952; this.match(MySqlParser.LR_BRACKET); - this.state = 3892; + this.state = 3953; this.tableSourceItem(); - this.state = 3896; + this.state = 3957; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 35 || ((((_la - 84)) & ~0x1F) === 0 && ((1 << (_la - 84)) & 536887425) !== 0) || _la === 150 || _la === 172) { { { - this.state = 3893; + this.state = 3954; this.joinPart(); } } - this.state = 3898; + this.state = 3959; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3899; + this.state = 3960; this.match(MySqlParser.RR_BRACKET); } break; @@ -21316,7 +22146,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableJsonContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3901; + this.state = 3962; this.jsonTable(); } break; @@ -21338,79 +22168,79 @@ export class MySqlParser extends SQLParserBase { } public tableSourceItem(): TableSourceItemContext { let localContext = new TableSourceItemContext(this.context, this.state); - this.enterRule(localContext, 260, MySqlParser.RULE_tableSourceItem); + this.enterRule(localContext, 266, MySqlParser.RULE_tableSourceItem); let _la: number; try { let alternative: number; - this.state = 3949; + this.state = 4010; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 548, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 558, this.context) ) { case 1: localContext = new AtomTableItemContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3904; + this.state = 3965; this.tableName(); - this.state = 3910; + this.state = 3971; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 539, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 549, this.context) ) { case 1: { - this.state = 3905; + this.state = 3966; this.match(MySqlParser.KW_PARTITION); - this.state = 3906; + this.state = 3967; this.match(MySqlParser.LR_BRACKET); - this.state = 3907; + this.state = 3968; this.partitionNames(); - this.state = 3908; + this.state = 3969; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 3916; + this.state = 3977; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 541, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 551, this.context) ) { case 1: { - this.state = 3913; + this.state = 3974; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3912; + this.state = 3973; this.match(MySqlParser.KW_AS); } } - this.state = 3915; + this.state = 3976; (localContext as AtomTableItemContext)._alias = this.uid(); } break; } - this.state = 3926; + this.state = 3987; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 543, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 553, this.context) ) { case 1: { - this.state = 3918; + this.state = 3979; this.indexHint(); - this.state = 3923; + this.state = 3984; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 542, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 552, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3919; + this.state = 3980; this.match(MySqlParser.COMMA); - this.state = 3920; + this.state = 3981; this.indexHint(); } } } - this.state = 3925; + this.state = 3986; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 542, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 552, this.context); } } break; @@ -21421,54 +22251,54 @@ export class MySqlParser extends SQLParserBase { localContext = new SubqueryTableItemContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3929; + this.state = 3990; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 95) { { - this.state = 3928; + this.state = 3989; this.match(MySqlParser.KW_LATERAL); } } - this.state = 3936; + this.state = 3997; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 545, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 555, this.context) ) { case 1: { - this.state = 3931; + this.state = 3992; this.selectStatement(); } break; case 2: { - this.state = 3932; + this.state = 3993; this.match(MySqlParser.LR_BRACKET); - this.state = 3933; + this.state = 3994; (localContext as SubqueryTableItemContext)._parenthesisSubquery = this.selectStatement(); - this.state = 3934; + this.state = 3995; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 3939; + this.state = 4000; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 3938; + this.state = 3999; this.match(MySqlParser.KW_AS); } } - this.state = 3941; + this.state = 4002; (localContext as SubqueryTableItemContext)._alias = this.uid(); - this.state = 3943; + this.state = 4004; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 547, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 557, this.context) ) { case 1: { - this.state = 3942; + this.state = 4003; this.fullColumnNames(); } break; @@ -21479,11 +22309,11 @@ export class MySqlParser extends SQLParserBase { localContext = new TableSourcesItemContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3945; + this.state = 4006; this.match(MySqlParser.LR_BRACKET); - this.state = 3946; + this.state = 4007; this.tableSources(); - this.state = 3947; + this.state = 4008; this.match(MySqlParser.RR_BRACKET); } break; @@ -21505,15 +22335,15 @@ export class MySqlParser extends SQLParserBase { } public fullColumnNames(): FullColumnNamesContext { let localContext = new FullColumnNamesContext(this.context, this.state); - this.enterRule(localContext, 262, MySqlParser.RULE_fullColumnNames); + this.enterRule(localContext, 268, MySqlParser.RULE_fullColumnNames); try { this.enterOuterAlt(localContext, 1); { - this.state = 3951; + this.state = 4012; this.match(MySqlParser.LR_BRACKET); - this.state = 3952; + this.state = 4013; this.columnNames(); - this.state = 3953; + this.state = 4014; this.match(MySqlParser.RR_BRACKET); } } @@ -21533,12 +22363,12 @@ export class MySqlParser extends SQLParserBase { } public indexHint(): IndexHintContext { let localContext = new IndexHintContext(this.context, this.state); - this.enterRule(localContext, 264, MySqlParser.RULE_indexHint); + this.enterRule(localContext, 270, MySqlParser.RULE_indexHint); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 3955; + this.state = 4016; localContext._indexHintAction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 79 || _la === 187)) { @@ -21548,7 +22378,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3956; + this.state = 4017; localContext._keyFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { @@ -21558,31 +22388,31 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3959; + this.state = 4020; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 3957; + this.state = 4018; this.match(MySqlParser.KW_FOR); - this.state = 3958; + this.state = 4019; this.indexHintType(); } } - this.state = 3961; + this.state = 4022; this.match(MySqlParser.LR_BRACKET); - this.state = 3963; + this.state = 4024; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 3962; + this.state = 4023; this.indexNames(); } } - this.state = 3965; + this.state = 4026; this.match(MySqlParser.RR_BRACKET); } } @@ -21602,33 +22432,33 @@ export class MySqlParser extends SQLParserBase { } public indexHintType(): IndexHintTypeContext { let localContext = new IndexHintTypeContext(this.context, this.state); - this.enterRule(localContext, 266, MySqlParser.RULE_indexHintType); + this.enterRule(localContext, 272, MySqlParser.RULE_indexHintType); try { - this.state = 3972; + this.state = 4033; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_JOIN: this.enterOuterAlt(localContext, 1); { - this.state = 3967; + this.state = 4028; this.match(MySqlParser.KW_JOIN); } break; case MySqlParser.KW_ORDER: this.enterOuterAlt(localContext, 2); { - this.state = 3968; + this.state = 4029; this.match(MySqlParser.KW_ORDER); - this.state = 3969; + this.state = 4030; this.match(MySqlParser.KW_BY); } break; case MySqlParser.KW_GROUP: this.enterOuterAlt(localContext, 3); { - this.state = 3970; + this.state = 4031; this.match(MySqlParser.KW_GROUP); - this.state = 3971; + this.state = 4032; this.match(MySqlParser.KW_BY); } break; @@ -21652,11 +22482,11 @@ export class MySqlParser extends SQLParserBase { } public joinPart(): JoinPartContext { let localContext = new JoinPartContext(this.context, this.state); - this.enterRule(localContext, 268, MySqlParser.RULE_joinPart); + this.enterRule(localContext, 274, MySqlParser.RULE_joinPart); let _la: number; try { let alternative: number; - this.state = 4023; + this.state = 4084; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CROSS: @@ -21665,12 +22495,12 @@ export class MySqlParser extends SQLParserBase { localContext = new InnerJoinContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 3975; + this.state = 4036; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 35 || _la === 84) { { - this.state = 3974; + this.state = 4035; _la = this.tokenStream.LA(1); if(!(_la === 35 || _la === 84)) { this.errorHandler.recoverInline(this); @@ -21682,35 +22512,35 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 3977; + this.state = 4038; this.match(MySqlParser.KW_JOIN); - this.state = 3979; + this.state = 4040; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 553, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 563, this.context) ) { case 1: { - this.state = 3978; + this.state = 4039; this.match(MySqlParser.KW_LATERAL); } break; } - this.state = 3981; + this.state = 4042; this.tableSourceItem(); - this.state = 3985; + this.state = 4046; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 554, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 564, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3982; + this.state = 4043; this.joinSpec(); } } } - this.state = 3987; + this.state = 4048; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 554, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 564, this.context); } } break; @@ -21718,25 +22548,25 @@ export class MySqlParser extends SQLParserBase { localContext = new StraightJoinContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3988; + this.state = 4049; this.match(MySqlParser.KW_STRAIGHT_JOIN); - this.state = 3989; + this.state = 4050; this.tableSourceItem(); - this.state = 3993; + this.state = 4054; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 555, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 565, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3990; + this.state = 4051; this.joinSpec(); } } } - this.state = 3995; + this.state = 4056; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 555, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 565, this.context); } } break; @@ -21745,7 +22575,7 @@ export class MySqlParser extends SQLParserBase { localContext = new OuterJoinContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 3996; + this.state = 4057; _la = this.tokenStream.LA(1); if(!(_la === 98 || _la === 150)) { this.errorHandler.recoverInline(this); @@ -21754,45 +22584,45 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3998; + this.state = 4059; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 127) { { - this.state = 3997; + this.state = 4058; this.match(MySqlParser.KW_OUTER); } } - this.state = 4000; + this.state = 4061; this.match(MySqlParser.KW_JOIN); - this.state = 4002; + this.state = 4063; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 557, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 567, this.context) ) { case 1: { - this.state = 4001; + this.state = 4062; this.match(MySqlParser.KW_LATERAL); } break; } - this.state = 4004; + this.state = 4065; this.tableSourceItem(); - this.state = 4008; + this.state = 4069; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 558, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 568, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4005; + this.state = 4066; this.joinSpec(); } } } - this.state = 4010; + this.state = 4071; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 558, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 568, this.context); } } break; @@ -21800,26 +22630,26 @@ export class MySqlParser extends SQLParserBase { localContext = new NaturalJoinContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4011; + this.state = 4072; this.match(MySqlParser.KW_NATURAL); - this.state = 4019; + this.state = 4080; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 84 || _la === 98 || _la === 150) { { - this.state = 4014; + this.state = 4075; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_INNER: { - this.state = 4012; + this.state = 4073; this.match(MySqlParser.KW_INNER); } break; case MySqlParser.KW_LEFT: case MySqlParser.KW_RIGHT: { - this.state = 4013; + this.state = 4074; _la = this.tokenStream.LA(1); if(!(_la === 98 || _la === 150)) { this.errorHandler.recoverInline(this); @@ -21833,12 +22663,12 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4017; + this.state = 4078; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 127) { { - this.state = 4016; + this.state = 4077; this.match(MySqlParser.KW_OUTER); } } @@ -21846,9 +22676,9 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 4021; + this.state = 4082; this.match(MySqlParser.KW_JOIN); - this.state = 4022; + this.state = 4083; this.tableSourceItem(); } break; @@ -21872,18 +22702,18 @@ export class MySqlParser extends SQLParserBase { } public joinSpec(): JoinSpecContext { let localContext = new JoinSpecContext(this.context, this.state); - this.enterRule(localContext, 270, MySqlParser.RULE_joinSpec); + this.enterRule(localContext, 276, MySqlParser.RULE_joinSpec); try { - this.state = 4032; + this.state = 4093; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ON: this.enterOuterAlt(localContext, 1); { { - this.state = 4025; + this.state = 4086; this.match(MySqlParser.KW_ON); - this.state = 4026; + this.state = 4087; this.expression(0); } } @@ -21891,13 +22721,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_USING: this.enterOuterAlt(localContext, 2); { - this.state = 4027; + this.state = 4088; this.match(MySqlParser.KW_USING); - this.state = 4028; + this.state = 4089; this.match(MySqlParser.LR_BRACKET); - this.state = 4029; + this.state = 4090; this.columnNames(); - this.state = 4030; + this.state = 4091; this.match(MySqlParser.RR_BRACKET); } break; @@ -21921,30 +22751,30 @@ export class MySqlParser extends SQLParserBase { } public queryExpression(): QueryExpressionContext { let localContext = new QueryExpressionContext(this.context, this.state); - this.enterRule(localContext, 272, MySqlParser.RULE_queryExpression); + this.enterRule(localContext, 278, MySqlParser.RULE_queryExpression); try { - this.state = 4042; + this.state = 4103; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 564, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 574, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4034; + this.state = 4095; this.match(MySqlParser.LR_BRACKET); - this.state = 4035; + this.state = 4096; this.querySpecification(); - this.state = 4036; + this.state = 4097; this.match(MySqlParser.RR_BRACKET); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4038; + this.state = 4099; this.match(MySqlParser.LR_BRACKET); - this.state = 4039; + this.state = 4100; this.queryExpression(); - this.state = 4040; + this.state = 4101; this.match(MySqlParser.RR_BRACKET); } break; @@ -21966,103 +22796,113 @@ export class MySqlParser extends SQLParserBase { } public querySpecification(): QuerySpecificationContext { let localContext = new QuerySpecificationContext(this.context, this.state); - this.enterRule(localContext, 274, MySqlParser.RULE_querySpecification); + this.enterRule(localContext, 280, MySqlParser.RULE_querySpecification); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4044; + this.state = 4105; this.match(MySqlParser.KW_SELECT); - this.state = 4048; + this.state = 4109; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 565, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 575, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4045; + this.state = 4106; this.selectSpec(); } } } - this.state = 4050; + this.state = 4111; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 565, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 575, this.context); } - this.state = 4051; + this.state = 4112; this.selectElements(); - this.state = 4053; + this.state = 4114; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 566, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 576, this.context) ) { case 1: { - this.state = 4052; + this.state = 4113; this.intoClause(); } break; } - this.state = 4055; + this.state = 4116; this.fromClause(); - this.state = 4057; + this.state = 4118; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 567, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 577, this.context) ) { case 1: { - this.state = 4056; + this.state = 4117; this.groupByClause(); } break; } - this.state = 4060; + this.state = 4121; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 568, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 578, this.context) ) { case 1: { - this.state = 4059; + this.state = 4120; this.havingClause(); } break; } - this.state = 4063; + this.state = 4124; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 569, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 579, this.context) ) { case 1: { - this.state = 4062; + this.state = 4123; this.windowClause(); } break; } - this.state = 4066; + this.state = 4127; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 570, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 580, this.context) ) { case 1: { - this.state = 4065; + this.state = 4126; this.orderByClause(); } break; } - this.state = 4069; + this.state = 4130; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 571, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 581, this.context) ) { case 1: { - this.state = 4068; + this.state = 4129; this.limitClause(); } break; } - this.state = 4072; + this.state = 4133; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 572, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 582, this.context) ) { case 1: { - this.state = 4071; + this.state = 4132; this.intoClause(); } break; } + this.state = 4136; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 583, this.context) ) { + case 1: + { + this.state = 4135; + this.unionStatement(); + } + break; + } } } catch (re) { @@ -22081,19 +22921,19 @@ export class MySqlParser extends SQLParserBase { } public unionStatement(): UnionStatementContext { let localContext = new UnionStatementContext(this.context, this.state); - this.enterRule(localContext, 276, MySqlParser.RULE_unionStatement); + this.enterRule(localContext, 282, MySqlParser.RULE_unionStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4074; + this.state = 4138; this.match(MySqlParser.KW_UNION); - this.state = 4076; + this.state = 4140; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 49) { { - this.state = 4075; + this.state = 4139; localContext._unionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { @@ -22106,18 +22946,18 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 4080; + this.state = 4144; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: { - this.state = 4078; + this.state = 4142; this.querySpecification(); } break; case MySqlParser.LR_BRACKET: { - this.state = 4079; + this.state = 4143; this.queryExpression(); } break; @@ -22142,69 +22982,69 @@ export class MySqlParser extends SQLParserBase { } public lateralStatement(): LateralStatementContext { let localContext = new LateralStatementContext(this.context, this.state); - this.enterRule(localContext, 278, MySqlParser.RULE_lateralStatement); + this.enterRule(localContext, 284, MySqlParser.RULE_lateralStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4082; + this.state = 4146; this.match(MySqlParser.KW_LATERAL); - this.state = 4097; + this.state = 4161; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 578, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 589, this.context) ) { case 1: { - this.state = 4083; + this.state = 4147; this.querySpecification(); } break; case 2: { - this.state = 4084; + this.state = 4148; this.queryExpression(); } break; case 3: { { - this.state = 4085; + this.state = 4149; this.match(MySqlParser.LR_BRACKET); - this.state = 4088; + this.state = 4152; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: { - this.state = 4086; + this.state = 4150; this.querySpecification(); } break; case MySqlParser.LR_BRACKET: { - this.state = 4087; + this.state = 4151; this.queryExpression(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4090; + this.state = 4154; this.match(MySqlParser.RR_BRACKET); - this.state = 4095; + this.state = 4159; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 577, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 588, this.context) ) { case 1: { - this.state = 4092; + this.state = 4156; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4091; + this.state = 4155; this.match(MySqlParser.KW_AS); } } - this.state = 4094; + this.state = 4158; localContext._alias = this.uid(); } break; @@ -22231,47 +23071,47 @@ export class MySqlParser extends SQLParserBase { } public jsonTable(): JsonTableContext { let localContext = new JsonTableContext(this.context, this.state); - this.enterRule(localContext, 280, MySqlParser.RULE_jsonTable); + this.enterRule(localContext, 286, MySqlParser.RULE_jsonTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4099; + this.state = 4163; this.match(MySqlParser.KW_JSON_TABLE); - this.state = 4100; + this.state = 4164; this.match(MySqlParser.LR_BRACKET); - this.state = 4101; + this.state = 4165; this.match(MySqlParser.STRING_LITERAL); - this.state = 4102; + this.state = 4166; this.match(MySqlParser.COMMA); - this.state = 4103; + this.state = 4167; this.match(MySqlParser.STRING_LITERAL); - this.state = 4104; + this.state = 4168; this.match(MySqlParser.KW_COLUMNS); - this.state = 4105; + this.state = 4169; this.match(MySqlParser.LR_BRACKET); - this.state = 4106; + this.state = 4170; this.jsonColumnList(); - this.state = 4107; + this.state = 4171; this.match(MySqlParser.RR_BRACKET); - this.state = 4108; + this.state = 4172; this.match(MySqlParser.RR_BRACKET); - this.state = 4113; + this.state = 4177; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 580, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 591, this.context) ) { case 1: { - this.state = 4110; + this.state = 4174; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4109; + this.state = 4173; this.match(MySqlParser.KW_AS); } } - this.state = 4112; + this.state = 4176; localContext._alias = this.uid(); } break; @@ -22294,26 +23134,26 @@ export class MySqlParser extends SQLParserBase { } public jsonColumnList(): JsonColumnListContext { let localContext = new JsonColumnListContext(this.context, this.state); - this.enterRule(localContext, 282, MySqlParser.RULE_jsonColumnList); + this.enterRule(localContext, 288, MySqlParser.RULE_jsonColumnList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4115; + this.state = 4179; this.jsonColumn(); - this.state = 4120; + this.state = 4184; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4116; + this.state = 4180; this.match(MySqlParser.COMMA); - this.state = 4117; + this.state = 4181; this.jsonColumn(); } } - this.state = 4122; + this.state = 4186; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -22335,25 +23175,25 @@ export class MySqlParser extends SQLParserBase { } public jsonColumn(): JsonColumnContext { let localContext = new JsonColumnContext(this.context, this.state); - this.enterRule(localContext, 284, MySqlParser.RULE_jsonColumn); + this.enterRule(localContext, 290, MySqlParser.RULE_jsonColumn); let _la: number; try { - this.state = 4152; + this.state = 4216; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 587, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 598, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4123; + this.state = 4187; this.columnName(); - this.state = 4140; + this.state = 4204; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FOR: { - this.state = 4124; + this.state = 4188; this.match(MySqlParser.KW_FOR); - this.state = 4125; + this.state = 4189; this.match(MySqlParser.KW_ORDINALITY); } break; @@ -22417,33 +23257,33 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_POINT: case MySqlParser.KW_POLYGON: { - this.state = 4126; + this.state = 4190; this.dataType(); - this.state = 4138; + this.state = 4202; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_PATH: { - this.state = 4127; + this.state = 4191; this.match(MySqlParser.KW_PATH); - this.state = 4128; + this.state = 4192; this.match(MySqlParser.STRING_LITERAL); - this.state = 4130; + this.state = 4194; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 582, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 593, this.context) ) { case 1: { - this.state = 4129; + this.state = 4193; this.jsonOnEmpty(); } break; } - this.state = 4133; + this.state = 4197; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42 || _la === 116 || _la === 382) { { - this.state = 4132; + this.state = 4196; this.jsonOnError(); } } @@ -22452,11 +23292,11 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_EXISTS: { - this.state = 4135; + this.state = 4199; this.match(MySqlParser.KW_EXISTS); - this.state = 4136; + this.state = 4200; this.match(MySqlParser.KW_PATH); - this.state = 4137; + this.state = 4201; this.match(MySqlParser.STRING_LITERAL); } break; @@ -22473,27 +23313,27 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4142; + this.state = 4206; this.match(MySqlParser.KW_NESTED); - this.state = 4144; + this.state = 4208; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 257) { { - this.state = 4143; + this.state = 4207; this.match(MySqlParser.KW_PATH); } } - this.state = 4146; + this.state = 4210; this.match(MySqlParser.STRING_LITERAL); - this.state = 4147; + this.state = 4211; this.match(MySqlParser.KW_COLUMNS); - this.state = 4148; + this.state = 4212; this.match(MySqlParser.LR_BRACKET); - this.state = 4149; + this.state = 4213; this.jsonColumnList(); - this.state = 4150; + this.state = 4214; this.match(MySqlParser.RR_BRACKET); } break; @@ -22515,39 +23355,39 @@ export class MySqlParser extends SQLParserBase { } public jsonOnEmpty(): JsonOnEmptyContext { let localContext = new JsonOnEmptyContext(this.context, this.state); - this.enterRule(localContext, 286, MySqlParser.RULE_jsonOnEmpty); + this.enterRule(localContext, 292, MySqlParser.RULE_jsonOnEmpty); try { this.enterOuterAlt(localContext, 1); { - this.state = 4158; + this.state = 4222; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NULL_LITERAL: { - this.state = 4154; + this.state = 4218; this.match(MySqlParser.KW_NULL_LITERAL); } break; case MySqlParser.KW_ERROR: { - this.state = 4155; + this.state = 4219; this.match(MySqlParser.KW_ERROR); } break; case MySqlParser.KW_DEFAULT: { - this.state = 4156; + this.state = 4220; this.match(MySqlParser.KW_DEFAULT); - this.state = 4157; + this.state = 4221; this.defaultValue(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4160; + this.state = 4224; this.match(MySqlParser.KW_ON); - this.state = 4161; + this.state = 4225; this.match(MySqlParser.KW_EMPTY); } } @@ -22567,39 +23407,39 @@ export class MySqlParser extends SQLParserBase { } public jsonOnError(): JsonOnErrorContext { let localContext = new JsonOnErrorContext(this.context, this.state); - this.enterRule(localContext, 288, MySqlParser.RULE_jsonOnError); + this.enterRule(localContext, 294, MySqlParser.RULE_jsonOnError); try { this.enterOuterAlt(localContext, 1); { - this.state = 4167; + this.state = 4231; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NULL_LITERAL: { - this.state = 4163; + this.state = 4227; this.match(MySqlParser.KW_NULL_LITERAL); } break; case MySqlParser.KW_ERROR: { - this.state = 4164; + this.state = 4228; this.match(MySqlParser.KW_ERROR); } break; case MySqlParser.KW_DEFAULT: { - this.state = 4165; + this.state = 4229; this.match(MySqlParser.KW_DEFAULT); - this.state = 4166; + this.state = 4230; this.defaultValue(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4169; + this.state = 4233; this.match(MySqlParser.KW_ON); - this.state = 4170; + this.state = 4234; this.match(MySqlParser.KW_ERROR); } } @@ -22619,10 +23459,10 @@ export class MySqlParser extends SQLParserBase { } public selectSpec(): SelectSpecContext { let localContext = new SelectSpecContext(this.context, this.state); - this.enterRule(localContext, 290, MySqlParser.RULE_selectSpec); + this.enterRule(localContext, 296, MySqlParser.RULE_selectSpec); let _la: number; try { - this.state = 4180; + this.state = 4244; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ALL: @@ -22630,7 +23470,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_DISTINCTROW: this.enterOuterAlt(localContext, 1); { - this.state = 4172; + this.state = 4236; _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49 || _la === 50)) { this.errorHandler.recoverInline(this); @@ -22644,35 +23484,35 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_HIGH_PRIORITY: this.enterOuterAlt(localContext, 2); { - this.state = 4173; + this.state = 4237; this.match(MySqlParser.KW_HIGH_PRIORITY); } break; case MySqlParser.KW_STRAIGHT_JOIN: this.enterOuterAlt(localContext, 3); { - this.state = 4174; + this.state = 4238; this.match(MySqlParser.KW_STRAIGHT_JOIN); } break; case MySqlParser.KW_SQL_SMALL_RESULT: this.enterOuterAlt(localContext, 4); { - this.state = 4175; + this.state = 4239; this.match(MySqlParser.KW_SQL_SMALL_RESULT); } break; case MySqlParser.KW_SQL_BIG_RESULT: this.enterOuterAlt(localContext, 5); { - this.state = 4176; + this.state = 4240; this.match(MySqlParser.KW_SQL_BIG_RESULT); } break; case MySqlParser.KW_SQL_BUFFER_RESULT: this.enterOuterAlt(localContext, 6); { - this.state = 4177; + this.state = 4241; this.match(MySqlParser.KW_SQL_BUFFER_RESULT); } break; @@ -22680,7 +23520,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SQL_NO_CACHE: this.enterOuterAlt(localContext, 7); { - this.state = 4178; + this.state = 4242; _la = this.tokenStream.LA(1); if(!(_la === 637 || _la === 638)) { this.errorHandler.recoverInline(this); @@ -22694,7 +23534,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SQL_CALC_FOUND_ROWS: this.enterOuterAlt(localContext, 8); { - this.state = 4179; + this.state = 4243; this.match(MySqlParser.KW_SQL_CALC_FOUND_ROWS); } break; @@ -22718,44 +23558,44 @@ export class MySqlParser extends SQLParserBase { } public selectElements(): SelectElementsContext { let localContext = new SelectElementsContext(this.context, this.state); - this.enterRule(localContext, 292, MySqlParser.RULE_selectElements); + this.enterRule(localContext, 298, MySqlParser.RULE_selectElements); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4184; + this.state = 4248; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 591, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 602, this.context) ) { case 1: { - this.state = 4182; + this.state = 4246; localContext._star = this.match(MySqlParser.STAR); } break; case 2: { - this.state = 4183; + this.state = 4247; this.selectElement(); } break; } - this.state = 4190; + this.state = 4254; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 592, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 603, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4186; + this.state = 4250; this.match(MySqlParser.COMMA); - this.state = 4187; + this.state = 4251; this.selectElement(); } } } - this.state = 4192; + this.state = 4256; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 592, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 603, this.context); } } } @@ -22775,46 +23615,46 @@ export class MySqlParser extends SQLParserBase { } public selectElement(): SelectElementContext { let localContext = new SelectElementContext(this.context, this.state); - this.enterRule(localContext, 294, MySqlParser.RULE_selectElement); + this.enterRule(localContext, 300, MySqlParser.RULE_selectElement); let _la: number; try { - this.state = 4222; + this.state = 4286; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 600, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 611, this.context) ) { case 1: localContext = new SelectExpressionElementContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4195; + this.state = 4259; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 593, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 604, this.context) ) { case 1: { - this.state = 4193; + this.state = 4257; this.match(MySqlParser.LOCAL_ID); - this.state = 4194; + this.state = 4258; this.match(MySqlParser.VAR_ASSIGN); } break; } - this.state = 4197; + this.state = 4261; this.expression(0); - this.state = 4202; + this.state = 4266; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 595, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 606, this.context) ) { case 1: { - this.state = 4199; + this.state = 4263; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4198; + this.state = 4262; this.match(MySqlParser.KW_AS); } } - this.state = 4201; + this.state = 4265; (localContext as SelectExpressionElementContext)._alias = this.uid(); } break; @@ -22825,24 +23665,24 @@ export class MySqlParser extends SQLParserBase { localContext = new SelectFunctionElementContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4204; + this.state = 4268; this.functionCall(); - this.state = 4209; + this.state = 4273; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 597, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 608, this.context) ) { case 1: { - this.state = 4206; + this.state = 4270; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4205; + this.state = 4269; this.match(MySqlParser.KW_AS); } } - this.state = 4208; + this.state = 4272; (localContext as SelectFunctionElementContext)._alias = this.uid(); } break; @@ -22853,11 +23693,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SelectStarElementContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4211; + this.state = 4275; (localContext as SelectStarElementContext)._select_element = this.fullId(); - this.state = 4212; + this.state = 4276; this.match(MySqlParser.DOT); - this.state = 4213; + this.state = 4277; this.match(MySqlParser.STAR); } break; @@ -22865,24 +23705,24 @@ export class MySqlParser extends SQLParserBase { localContext = new SelectColumnElementContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4215; + this.state = 4279; this.columnName(); - this.state = 4220; + this.state = 4284; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 599, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 610, this.context) ) { case 1: { - this.state = 4217; + this.state = 4281; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4216; + this.state = 4280; this.match(MySqlParser.KW_AS); } } - this.state = 4219; + this.state = 4283; (localContext as SelectColumnElementContext)._alias = this.uid(); } break; @@ -22907,38 +23747,38 @@ export class MySqlParser extends SQLParserBase { } public intoClause(): IntoClauseContext { let localContext = new IntoClauseContext(this.context, this.state); - this.enterRule(localContext, 296, MySqlParser.RULE_intoClause); + this.enterRule(localContext, 302, MySqlParser.RULE_intoClause); let _la: number; try { let alternative: number; - this.state = 4260; + this.state = 4324; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 607, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 618, this.context) ) { case 1: localContext = new SelectIntoVariablesContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4224; + this.state = 4288; this.match(MySqlParser.KW_INTO); - this.state = 4225; + this.state = 4289; this.assignmentField(); - this.state = 4230; + this.state = 4294; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 601, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 612, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4226; + this.state = 4290; this.match(MySqlParser.COMMA); - this.state = 4227; + this.state = 4291; this.assignmentField(); } } } - this.state = 4232; + this.state = 4296; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 601, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 612, this.context); } } break; @@ -22946,11 +23786,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SelectIntoDumpFileContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4233; + this.state = 4297; this.match(MySqlParser.KW_INTO); - this.state = 4234; + this.state = 4298; this.match(MySqlParser.KW_DUMPFILE); - this.state = 4235; + this.state = 4299; this.match(MySqlParser.STRING_LITERAL); } break; @@ -22959,32 +23799,32 @@ export class MySqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 3); { { - this.state = 4236; + this.state = 4300; this.match(MySqlParser.KW_INTO); - this.state = 4237; + this.state = 4301; this.match(MySqlParser.KW_OUTFILE); - this.state = 4238; + this.state = 4302; (localContext as SelectIntoTextFileContext)._filename = this.match(MySqlParser.STRING_LITERAL); - this.state = 4242; + this.state = 4306; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 602, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 613, this.context) ) { case 1: { - this.state = 4239; + this.state = 4303; this.match(MySqlParser.KW_CHARACTER); - this.state = 4240; + this.state = 4304; this.match(MySqlParser.KW_SET); - this.state = 4241; + this.state = 4305; (localContext as SelectIntoTextFileContext)._charset = this.charsetName(); } break; } - this.state = 4250; + this.state = 4314; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 604, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 615, this.context) ) { case 1: { - this.state = 4244; + this.state = 4308; (localContext as SelectIntoTextFileContext)._fieldsFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 337 || _la === 398)) { @@ -22994,7 +23834,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4246; + this.state = 4310; this.errorHandler.sync(this); alternative = 1; do { @@ -23002,7 +23842,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 4245; + this.state = 4309; this.selectFieldsInto(); } } @@ -23010,21 +23850,21 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4248; + this.state = 4312; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 603, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 614, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; } - this.state = 4258; + this.state = 4322; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 606, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 617, this.context) ) { case 1: { - this.state = 4252; + this.state = 4316; this.match(MySqlParser.KW_LINES); - this.state = 4254; + this.state = 4318; this.errorHandler.sync(this); alternative = 1; do { @@ -23032,7 +23872,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 4253; + this.state = 4317; this.selectLinesInto(); } } @@ -23040,9 +23880,9 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4256; + this.state = 4320; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 605, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 616, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; @@ -23068,20 +23908,20 @@ export class MySqlParser extends SQLParserBase { } public selectFieldsInto(): SelectFieldsIntoContext { let localContext = new SelectFieldsIntoContext(this.context, this.state); - this.enterRule(localContext, 298, MySqlParser.RULE_selectFieldsInto); + this.enterRule(localContext, 304, MySqlParser.RULE_selectFieldsInto); let _la: number; try { - this.state = 4274; + this.state = 4338; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_TERMINATED: this.enterOuterAlt(localContext, 1); { - this.state = 4262; + this.state = 4326; this.match(MySqlParser.KW_TERMINATED); - this.state = 4263; + this.state = 4327; this.match(MySqlParser.KW_BY); - this.state = 4264; + this.state = 4328; localContext._terminationField = this.match(MySqlParser.STRING_LITERAL); } break; @@ -23089,32 +23929,32 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_OPTIONALLY: this.enterOuterAlt(localContext, 2); { - this.state = 4266; + this.state = 4330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 123) { { - this.state = 4265; + this.state = 4329; this.match(MySqlParser.KW_OPTIONALLY); } } - this.state = 4268; + this.state = 4332; this.match(MySqlParser.KW_ENCLOSED); - this.state = 4269; + this.state = 4333; this.match(MySqlParser.KW_BY); - this.state = 4270; + this.state = 4334; localContext._enclosion = this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_ESCAPED: this.enterOuterAlt(localContext, 3); { - this.state = 4271; + this.state = 4335; this.match(MySqlParser.KW_ESCAPED); - this.state = 4272; + this.state = 4336; this.match(MySqlParser.KW_BY); - this.state = 4273; + this.state = 4337; localContext._escaping = this.match(MySqlParser.STRING_LITERAL); } break; @@ -23138,30 +23978,30 @@ export class MySqlParser extends SQLParserBase { } public selectLinesInto(): SelectLinesIntoContext { let localContext = new SelectLinesIntoContext(this.context, this.state); - this.enterRule(localContext, 300, MySqlParser.RULE_selectLinesInto); + this.enterRule(localContext, 306, MySqlParser.RULE_selectLinesInto); try { - this.state = 4282; + this.state = 4346; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_STARTING: this.enterOuterAlt(localContext, 1); { - this.state = 4276; + this.state = 4340; this.match(MySqlParser.KW_STARTING); - this.state = 4277; + this.state = 4341; this.match(MySqlParser.KW_BY); - this.state = 4278; + this.state = 4342; localContext._starting = this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_TERMINATED: this.enterOuterAlt(localContext, 2); { - this.state = 4279; + this.state = 4343; this.match(MySqlParser.KW_TERMINATED); - this.state = 4280; + this.state = 4344; this.match(MySqlParser.KW_BY); - this.state = 4281; + this.state = 4345; localContext._terminationLine = this.match(MySqlParser.STRING_LITERAL); } break; @@ -23185,30 +24025,30 @@ export class MySqlParser extends SQLParserBase { } public fromClause(): FromClauseContext { let localContext = new FromClauseContext(this.context, this.state); - this.enterRule(localContext, 302, MySqlParser.RULE_fromClause); + this.enterRule(localContext, 308, MySqlParser.RULE_fromClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4286; + this.state = 4350; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 611, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 622, this.context) ) { case 1: { - this.state = 4284; + this.state = 4348; this.match(MySqlParser.KW_FROM); - this.state = 4285; + this.state = 4349; this.tableSources(); } break; } - this.state = 4290; + this.state = 4354; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 612, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 623, this.context) ) { case 1: { - this.state = 4288; + this.state = 4352; this.match(MySqlParser.KW_WHERE); - this.state = 4289; + this.state = 4353; localContext._whereExpr = this.expression(0); } break; @@ -23231,43 +24071,43 @@ export class MySqlParser extends SQLParserBase { } public groupByClause(): GroupByClauseContext { let localContext = new GroupByClauseContext(this.context, this.state); - this.enterRule(localContext, 304, MySqlParser.RULE_groupByClause); + this.enterRule(localContext, 310, MySqlParser.RULE_groupByClause); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4292; + this.state = 4356; this.match(MySqlParser.KW_GROUP); - this.state = 4293; + this.state = 4357; this.match(MySqlParser.KW_BY); - this.state = 4294; + this.state = 4358; this.groupByItem(); - this.state = 4299; + this.state = 4363; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 613, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 624, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4295; + this.state = 4359; this.match(MySqlParser.COMMA); - this.state = 4296; + this.state = 4360; this.groupByItem(); } } } - this.state = 4301; + this.state = 4365; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 613, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 624, this.context); } - this.state = 4304; + this.state = 4368; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 614, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 625, this.context) ) { case 1: { - this.state = 4302; + this.state = 4366; this.match(MySqlParser.KW_WITH); - this.state = 4303; + this.state = 4367; this.match(MySqlParser.KW_ROLLUP); } break; @@ -23290,13 +24130,13 @@ export class MySqlParser extends SQLParserBase { } public havingClause(): HavingClauseContext { let localContext = new HavingClauseContext(this.context, this.state); - this.enterRule(localContext, 306, MySqlParser.RULE_havingClause); + this.enterRule(localContext, 312, MySqlParser.RULE_havingClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4306; + this.state = 4370; this.match(MySqlParser.KW_HAVING); - this.state = 4307; + this.state = 4371; localContext._havingExpr = this.expression(0); } } @@ -23316,48 +24156,48 @@ export class MySqlParser extends SQLParserBase { } public windowClause(): WindowClauseContext { let localContext = new WindowClauseContext(this.context, this.state); - this.enterRule(localContext, 308, MySqlParser.RULE_windowClause); + this.enterRule(localContext, 314, MySqlParser.RULE_windowClause); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4309; + this.state = 4373; this.match(MySqlParser.KW_WINDOW); - this.state = 4310; + this.state = 4374; this.windowName(); - this.state = 4311; + this.state = 4375; this.match(MySqlParser.KW_AS); - this.state = 4312; + this.state = 4376; this.match(MySqlParser.LR_BRACKET); - this.state = 4313; + this.state = 4377; this.windowSpec(); - this.state = 4314; + this.state = 4378; this.match(MySqlParser.RR_BRACKET); - this.state = 4324; + this.state = 4388; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 615, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 626, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4315; + this.state = 4379; this.match(MySqlParser.COMMA); - this.state = 4316; + this.state = 4380; this.windowName(); - this.state = 4317; + this.state = 4381; this.match(MySqlParser.KW_AS); - this.state = 4318; + this.state = 4382; this.match(MySqlParser.LR_BRACKET); - this.state = 4319; + this.state = 4383; this.windowSpec(); - this.state = 4320; + this.state = 4384; this.match(MySqlParser.RR_BRACKET); } } } - this.state = 4326; + this.state = 4390; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 615, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 626, this.context); } } } @@ -23377,19 +24217,19 @@ export class MySqlParser extends SQLParserBase { } public groupByItem(): GroupByItemContext { let localContext = new GroupByItemContext(this.context, this.state); - this.enterRule(localContext, 310, MySqlParser.RULE_groupByItem); + this.enterRule(localContext, 316, MySqlParser.RULE_groupByItem); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4327; + this.state = 4391; this.expression(0); - this.state = 4329; + this.state = 4393; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 616, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 627, this.context) ) { case 1: { - this.state = 4328; + this.state = 4392; localContext._order = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 14 || _la === 45)) { @@ -23420,40 +24260,40 @@ export class MySqlParser extends SQLParserBase { } public limitClause(): LimitClauseContext { let localContext = new LimitClauseContext(this.context, this.state); - this.enterRule(localContext, 312, MySqlParser.RULE_limitClause); + this.enterRule(localContext, 318, MySqlParser.RULE_limitClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 4331; + this.state = 4395; this.match(MySqlParser.KW_LIMIT); - this.state = 4342; + this.state = 4406; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 618, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 629, this.context) ) { case 1: { - this.state = 4335; + this.state = 4399; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 617, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 628, this.context) ) { case 1: { - this.state = 4332; + this.state = 4396; localContext._offset = this.limitClauseAtom(); - this.state = 4333; + this.state = 4397; this.match(MySqlParser.COMMA); } break; } - this.state = 4337; + this.state = 4401; localContext._limit = this.limitClauseAtom(); } break; case 2: { - this.state = 4338; + this.state = 4402; localContext._limit = this.limitClauseAtom(); - this.state = 4339; + this.state = 4403; this.match(MySqlParser.KW_OFFSET); - this.state = 4340; + this.state = 4404; localContext._offset = this.limitClauseAtom(); } break; @@ -23476,9 +24316,9 @@ export class MySqlParser extends SQLParserBase { } public limitClauseAtom(): LimitClauseAtomContext { let localContext = new LimitClauseAtomContext(this.context, this.state); - this.enterRule(localContext, 314, MySqlParser.RULE_limitClauseAtom); + this.enterRule(localContext, 320, MySqlParser.RULE_limitClauseAtom); try { - this.state = 4347; + this.state = 4411; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -23489,7 +24329,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.REAL_LITERAL: this.enterOuterAlt(localContext, 1); { - this.state = 4344; + this.state = 4408; this.decimalLiteral(); } break; @@ -23497,7 +24337,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.GLOBAL_ID: this.enterOuterAlt(localContext, 2); { - this.state = 4345; + this.state = 4409; this.mysqlVariable(); } break; @@ -23831,6 +24671,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -24049,7 +24890,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.ID: this.enterOuterAlt(localContext, 3); { - this.state = 4346; + this.state = 4410; this.simpleId(); } break; @@ -24073,35 +24914,35 @@ export class MySqlParser extends SQLParserBase { } public startTransaction(): StartTransactionContext { let localContext = new StartTransactionContext(this.context, this.state); - this.enterRule(localContext, 316, MySqlParser.RULE_startTransaction); + this.enterRule(localContext, 322, MySqlParser.RULE_startTransaction); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4349; + this.state = 4413; this.match(MySqlParser.KW_START); - this.state = 4350; + this.state = 4414; this.match(MySqlParser.KW_TRANSACTION); - this.state = 4359; + this.state = 4423; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 621, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 632, this.context) ) { case 1: { - this.state = 4351; + this.state = 4415; this.transactionMode(); - this.state = 4356; + this.state = 4420; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4352; + this.state = 4416; this.match(MySqlParser.COMMA); - this.state = 4353; + this.state = 4417; this.transactionMode(); } } - this.state = 4358; + this.state = 4422; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24126,19 +24967,19 @@ export class MySqlParser extends SQLParserBase { } public beginWork(): BeginWorkContext { let localContext = new BeginWorkContext(this.context, this.state); - this.enterRule(localContext, 318, MySqlParser.RULE_beginWork); + this.enterRule(localContext, 324, MySqlParser.RULE_beginWork); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4361; + this.state = 4425; this.match(MySqlParser.KW_BEGIN); - this.state = 4363; + this.state = 4427; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 691) { { - this.state = 4362; + this.state = 4426; this.match(MySqlParser.KW_WORK); } } @@ -24161,61 +25002,61 @@ export class MySqlParser extends SQLParserBase { } public commitWork(): CommitWorkContext { let localContext = new CommitWorkContext(this.context, this.state); - this.enterRule(localContext, 320, MySqlParser.RULE_commitWork); + this.enterRule(localContext, 326, MySqlParser.RULE_commitWork); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4365; + this.state = 4429; this.match(MySqlParser.KW_COMMIT); - this.state = 4367; + this.state = 4431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 691) { { - this.state = 4366; + this.state = 4430; this.match(MySqlParser.KW_WORK); } } - this.state = 4374; + this.state = 4438; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 4369; + this.state = 4433; this.match(MySqlParser.KW_AND); - this.state = 4371; + this.state = 4435; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 502) { { - this.state = 4370; + this.state = 4434; localContext._nochain = this.match(MySqlParser.KW_NO); } } - this.state = 4373; + this.state = 4437; this.match(MySqlParser.KW_CHAIN); } } - this.state = 4380; + this.state = 4444; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 627, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 638, this.context) ) { case 1: { - this.state = 4377; + this.state = 4441; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 502) { { - this.state = 4376; + this.state = 4440; localContext._norelease = this.match(MySqlParser.KW_NO); } } - this.state = 4379; + this.state = 4443; this.match(MySqlParser.KW_RELEASE); } break; @@ -24238,61 +25079,61 @@ export class MySqlParser extends SQLParserBase { } public rollbackWork(): RollbackWorkContext { let localContext = new RollbackWorkContext(this.context, this.state); - this.enterRule(localContext, 322, MySqlParser.RULE_rollbackWork); + this.enterRule(localContext, 328, MySqlParser.RULE_rollbackWork); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4382; + this.state = 4446; this.match(MySqlParser.KW_ROLLBACK); - this.state = 4384; + this.state = 4448; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 691) { { - this.state = 4383; + this.state = 4447; this.match(MySqlParser.KW_WORK); } } - this.state = 4391; + this.state = 4455; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 4386; + this.state = 4450; this.match(MySqlParser.KW_AND); - this.state = 4388; + this.state = 4452; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 502) { { - this.state = 4387; + this.state = 4451; localContext._nochain = this.match(MySqlParser.KW_NO); } } - this.state = 4390; + this.state = 4454; this.match(MySqlParser.KW_CHAIN); } } - this.state = 4397; + this.state = 4461; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 632, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 643, this.context) ) { case 1: { - this.state = 4394; + this.state = 4458; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 502) { { - this.state = 4393; + this.state = 4457; localContext._norelease = this.match(MySqlParser.KW_NO); } } - this.state = 4396; + this.state = 4460; this.match(MySqlParser.KW_RELEASE); } break; @@ -24315,13 +25156,13 @@ export class MySqlParser extends SQLParserBase { } public savepointStatement(): SavepointStatementContext { let localContext = new SavepointStatementContext(this.context, this.state); - this.enterRule(localContext, 324, MySqlParser.RULE_savepointStatement); + this.enterRule(localContext, 330, MySqlParser.RULE_savepointStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4399; + this.state = 4463; this.match(MySqlParser.KW_SAVEPOINT); - this.state = 4400; + this.state = 4464; localContext._identifier = this.uid(); } } @@ -24341,36 +25182,36 @@ export class MySqlParser extends SQLParserBase { } public rollbackStatement(): RollbackStatementContext { let localContext = new RollbackStatementContext(this.context, this.state); - this.enterRule(localContext, 326, MySqlParser.RULE_rollbackStatement); + this.enterRule(localContext, 332, MySqlParser.RULE_rollbackStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4402; + this.state = 4466; this.match(MySqlParser.KW_ROLLBACK); - this.state = 4404; + this.state = 4468; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 691) { { - this.state = 4403; + this.state = 4467; this.match(MySqlParser.KW_WORK); } } - this.state = 4406; + this.state = 4470; this.match(MySqlParser.KW_TO); - this.state = 4408; + this.state = 4472; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 634, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 645, this.context) ) { case 1: { - this.state = 4407; + this.state = 4471; this.match(MySqlParser.KW_SAVEPOINT); } break; } - this.state = 4410; + this.state = 4474; localContext._identifier = this.uid(); } } @@ -24390,15 +25231,15 @@ export class MySqlParser extends SQLParserBase { } public releaseStatement(): ReleaseStatementContext { let localContext = new ReleaseStatementContext(this.context, this.state); - this.enterRule(localContext, 328, MySqlParser.RULE_releaseStatement); + this.enterRule(localContext, 334, MySqlParser.RULE_releaseStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4412; + this.state = 4476; this.match(MySqlParser.KW_RELEASE); - this.state = 4413; + this.state = 4477; this.match(MySqlParser.KW_SAVEPOINT); - this.state = 4414; + this.state = 4478; localContext._identifier = this.uid(); } } @@ -24418,14 +25259,14 @@ export class MySqlParser extends SQLParserBase { } public lockTables(): LockTablesContext { let localContext = new LockTablesContext(this.context, this.state); - this.enterRule(localContext, 330, MySqlParser.RULE_lockTables); + this.enterRule(localContext, 336, MySqlParser.RULE_lockTables); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4416; + this.state = 4480; this.match(MySqlParser.KW_LOCK); - this.state = 4417; + this.state = 4481; _la = this.tokenStream.LA(1); if(!(_la === 173 || _la === 752)) { this.errorHandler.recoverInline(this); @@ -24434,21 +25275,21 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4418; + this.state = 4482; this.lockTableElement(); - this.state = 4423; + this.state = 4487; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4419; + this.state = 4483; this.match(MySqlParser.COMMA); - this.state = 4420; + this.state = 4484; this.lockTableElement(); } } - this.state = 4425; + this.state = 4489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24470,13 +25311,13 @@ export class MySqlParser extends SQLParserBase { } public unlockTables(): UnlockTablesContext { let localContext = new UnlockTablesContext(this.context, this.state); - this.enterRule(localContext, 332, MySqlParser.RULE_unlockTables); + this.enterRule(localContext, 338, MySqlParser.RULE_unlockTables); try { this.enterOuterAlt(localContext, 1); { - this.state = 4426; + this.state = 4490; this.match(MySqlParser.KW_UNLOCK); - this.state = 4427; + this.state = 4491; this.match(MySqlParser.KW_TABLES); } } @@ -24496,18 +25337,18 @@ export class MySqlParser extends SQLParserBase { } public setAutocommitStatement(): SetAutocommitStatementContext { let localContext = new SetAutocommitStatementContext(this.context, this.state); - this.enterRule(localContext, 334, MySqlParser.RULE_setAutocommitStatement); + this.enterRule(localContext, 340, MySqlParser.RULE_setAutocommitStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4429; + this.state = 4493; this.match(MySqlParser.KW_SET); - this.state = 4430; + this.state = 4494; this.match(MySqlParser.KW_AUTOCOMMIT); - this.state = 4431; + this.state = 4495; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4432; + this.state = 4496; localContext._autocommitValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { @@ -24535,19 +25376,19 @@ export class MySqlParser extends SQLParserBase { } public setTransactionStatement(): SetTransactionStatementContext { let localContext = new SetTransactionStatementContext(this.context, this.state); - this.enterRule(localContext, 336, MySqlParser.RULE_setTransactionStatement); + this.enterRule(localContext, 342, MySqlParser.RULE_setTransactionStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4434; + this.state = 4498; this.match(MySqlParser.KW_SET); - this.state = 4436; + this.state = 4500; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 413 || _la === 593) { { - this.state = 4435; + this.state = 4499; localContext._transactionContext = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 413 || _la === 593)) { @@ -24560,23 +25401,23 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 4438; + this.state = 4502; this.match(MySqlParser.KW_TRANSACTION); - this.state = 4439; + this.state = 4503; this.transactionOption(); - this.state = 4444; + this.state = 4508; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4440; + this.state = 4504; this.match(MySqlParser.COMMA); - this.state = 4441; + this.state = 4505; this.transactionOption(); } } - this.state = 4446; + this.state = 4510; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24598,37 +25439,37 @@ export class MySqlParser extends SQLParserBase { } public transactionMode(): TransactionModeContext { let localContext = new TransactionModeContext(this.context, this.state); - this.enterRule(localContext, 338, MySqlParser.RULE_transactionMode); + this.enterRule(localContext, 344, MySqlParser.RULE_transactionMode); try { - this.state = 4454; + this.state = 4518; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 638, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 649, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4447; + this.state = 4511; this.match(MySqlParser.KW_WITH); - this.state = 4448; + this.state = 4512; this.match(MySqlParser.KW_CONSISTENT); - this.state = 4449; + this.state = 4513; this.match(MySqlParser.KW_SNAPSHOT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4450; + this.state = 4514; this.match(MySqlParser.KW_READ); - this.state = 4451; + this.state = 4515; this.match(MySqlParser.KW_WRITE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4452; + this.state = 4516; this.match(MySqlParser.KW_READ); - this.state = 4453; + this.state = 4517; this.match(MySqlParser.KW_ONLY); } break; @@ -24650,34 +25491,34 @@ export class MySqlParser extends SQLParserBase { } public lockTableElement(): LockTableElementContext { let localContext = new LockTableElementContext(this.context, this.state); - this.enterRule(localContext, 340, MySqlParser.RULE_lockTableElement); + this.enterRule(localContext, 346, MySqlParser.RULE_lockTableElement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4456; + this.state = 4520; this.tableName(); - this.state = 4461; + this.state = 4525; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074311168) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074311168) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 4458; + this.state = 4522; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 4457; + this.state = 4521; this.match(MySqlParser.KW_AS); } } - this.state = 4460; + this.state = 4524; localContext._alias = this.uid(); } } - this.state = 4463; + this.state = 4527; this.lockAction(); } } @@ -24697,23 +25538,23 @@ export class MySqlParser extends SQLParserBase { } public lockAction(): LockActionContext { let localContext = new LockActionContext(this.context, this.state); - this.enterRule(localContext, 342, MySqlParser.RULE_lockAction); + this.enterRule(localContext, 348, MySqlParser.RULE_lockAction); let _la: number; try { - this.state = 4473; + this.state = 4537; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_READ: this.enterOuterAlt(localContext, 1); { - this.state = 4465; + this.state = 4529; this.match(MySqlParser.KW_READ); - this.state = 4467; + this.state = 4531; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 450) { { - this.state = 4466; + this.state = 4530; this.match(MySqlParser.KW_LOCAL); } } @@ -24724,17 +25565,17 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_WRITE: this.enterOuterAlt(localContext, 2); { - this.state = 4470; + this.state = 4534; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 4469; + this.state = 4533; this.match(MySqlParser.KW_LOW_PRIORITY); } } - this.state = 4472; + this.state = 4536; this.match(MySqlParser.KW_WRITE); } break; @@ -24758,37 +25599,37 @@ export class MySqlParser extends SQLParserBase { } public transactionOption(): TransactionOptionContext { let localContext = new TransactionOptionContext(this.context, this.state); - this.enterRule(localContext, 344, MySqlParser.RULE_transactionOption); + this.enterRule(localContext, 350, MySqlParser.RULE_transactionOption); try { - this.state = 4482; + this.state = 4546; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 644, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 655, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4475; + this.state = 4539; this.match(MySqlParser.KW_ISOLATION); - this.state = 4476; + this.state = 4540; this.match(MySqlParser.KW_LEVEL); - this.state = 4477; + this.state = 4541; this.transactionLevel(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4478; + this.state = 4542; this.match(MySqlParser.KW_READ); - this.state = 4479; + this.state = 4543; this.match(MySqlParser.KW_WRITE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4480; + this.state = 4544; this.match(MySqlParser.KW_READ); - this.state = 4481; + this.state = 4545; this.match(MySqlParser.KW_ONLY); } break; @@ -24810,42 +25651,42 @@ export class MySqlParser extends SQLParserBase { } public transactionLevel(): TransactionLevelContext { let localContext = new TransactionLevelContext(this.context, this.state); - this.enterRule(localContext, 346, MySqlParser.RULE_transactionLevel); + this.enterRule(localContext, 352, MySqlParser.RULE_transactionLevel); try { - this.state = 4491; + this.state = 4555; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 645, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 656, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4484; + this.state = 4548; this.match(MySqlParser.KW_REPEATABLE); - this.state = 4485; + this.state = 4549; this.match(MySqlParser.KW_READ); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4486; + this.state = 4550; this.match(MySqlParser.KW_READ); - this.state = 4487; + this.state = 4551; this.match(MySqlParser.KW_COMMITTED); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4488; + this.state = 4552; this.match(MySqlParser.KW_READ); - this.state = 4489; + this.state = 4553; this.match(MySqlParser.KW_UNCOMMITTED); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4490; + this.state = 4554; this.match(MySqlParser.KW_SERIALIZABLE); } break; @@ -24867,41 +25708,41 @@ export class MySqlParser extends SQLParserBase { } public changeMaster(): ChangeMasterContext { let localContext = new ChangeMasterContext(this.context, this.state); - this.enterRule(localContext, 348, MySqlParser.RULE_changeMaster); + this.enterRule(localContext, 354, MySqlParser.RULE_changeMaster); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4493; + this.state = 4557; this.match(MySqlParser.KW_CHANGE); - this.state = 4494; + this.state = 4558; this.match(MySqlParser.KW_MASTER); - this.state = 4495; + this.state = 4559; this.match(MySqlParser.KW_TO); - this.state = 4496; + this.state = 4560; this.masterOption(); - this.state = 4501; + this.state = 4565; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4497; + this.state = 4561; this.match(MySqlParser.COMMA); - this.state = 4498; + this.state = 4562; this.masterOption(); } } - this.state = 4503; + this.state = 4567; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4505; + this.state = 4569; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4504; + this.state = 4568; this.channelOption(); } } @@ -24924,41 +25765,41 @@ export class MySqlParser extends SQLParserBase { } public changeReplicationFilter(): ChangeReplicationFilterContext { let localContext = new ChangeReplicationFilterContext(this.context, this.state); - this.enterRule(localContext, 350, MySqlParser.RULE_changeReplicationFilter); + this.enterRule(localContext, 356, MySqlParser.RULE_changeReplicationFilter); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4507; + this.state = 4571; this.match(MySqlParser.KW_CHANGE); - this.state = 4508; + this.state = 4572; this.match(MySqlParser.KW_REPLICATION); - this.state = 4509; + this.state = 4573; this.match(MySqlParser.KW_FILTER); - this.state = 4510; + this.state = 4574; this.replicationFilter(); - this.state = 4515; + this.state = 4579; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4511; + this.state = 4575; this.match(MySqlParser.COMMA); - this.state = 4512; + this.state = 4576; this.replicationFilter(); } } - this.state = 4517; + this.state = 4581; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4519; + this.state = 4583; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4518; + this.state = 4582; this.channelOption(); } } @@ -24981,43 +25822,43 @@ export class MySqlParser extends SQLParserBase { } public changeReplicationSource(): ChangeReplicationSourceContext { let localContext = new ChangeReplicationSourceContext(this.context, this.state); - this.enterRule(localContext, 352, MySqlParser.RULE_changeReplicationSource); + this.enterRule(localContext, 358, MySqlParser.RULE_changeReplicationSource); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4521; + this.state = 4585; this.match(MySqlParser.KW_CHANGE); - this.state = 4522; + this.state = 4586; this.match(MySqlParser.KW_REPLICATION); - this.state = 4523; + this.state = 4587; this.match(MySqlParser.KW_SOURCE); - this.state = 4524; + this.state = 4588; this.match(MySqlParser.KW_TO); - this.state = 4525; + this.state = 4589; this.replicationSourceOption(); - this.state = 4530; + this.state = 4594; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4526; + this.state = 4590; this.match(MySqlParser.COMMA); - this.state = 4527; + this.state = 4591; this.replicationSourceOption(); } } - this.state = 4532; + this.state = 4596; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4534; + this.state = 4598; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4533; + this.state = 4597; this.channelOption(); } } @@ -25040,14 +25881,14 @@ export class MySqlParser extends SQLParserBase { } public purgeBinaryLogs(): PurgeBinaryLogsContext { let localContext = new PurgeBinaryLogsContext(this.context, this.state); - this.enterRule(localContext, 354, MySqlParser.RULE_purgeBinaryLogs); + this.enterRule(localContext, 360, MySqlParser.RULE_purgeBinaryLogs); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4536; + this.state = 4600; this.match(MySqlParser.KW_PURGE); - this.state = 4537; + this.state = 4601; localContext._purgeFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 228 || _la === 453)) { @@ -25057,24 +25898,24 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4538; + this.state = 4602; this.match(MySqlParser.KW_LOGS); - this.state = 4543; + this.state = 4607; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_TO: { - this.state = 4539; + this.state = 4603; this.match(MySqlParser.KW_TO); - this.state = 4540; + this.state = 4604; localContext._fileName = this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_BEFORE: { - this.state = 4541; + this.state = 4605; this.match(MySqlParser.KW_BEFORE); - this.state = 4542; + this.state = 4606; localContext._timeValue = this.match(MySqlParser.STRING_LITERAL); } break; @@ -25099,14 +25940,14 @@ export class MySqlParser extends SQLParserBase { } public startSlaveOrReplica(): StartSlaveOrReplicaContext { let localContext = new StartSlaveOrReplicaContext(this.context, this.state); - this.enterRule(localContext, 356, MySqlParser.RULE_startSlaveOrReplica); + this.enterRule(localContext, 362, MySqlParser.RULE_startSlaveOrReplica); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4545; + this.state = 4609; this.match(MySqlParser.KW_START); - this.state = 4546; + this.state = 4610; _la = this.tokenStream.LA(1); if(!(_la === 563 || _la === 598)) { this.errorHandler.recoverInline(this); @@ -25115,64 +25956,64 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4555; + this.state = 4619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 438 || _la === 639) { { - this.state = 4547; + this.state = 4611; this.threadType(); - this.state = 4552; + this.state = 4616; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4548; + this.state = 4612; this.match(MySqlParser.COMMA); - this.state = 4549; + this.state = 4613; this.threadType(); } } - this.state = 4554; + this.state = 4618; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4559; + this.state = 4623; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 676) { { - this.state = 4557; + this.state = 4621; this.match(MySqlParser.KW_UNTIL); - this.state = 4558; + this.state = 4622; this.untilOption(); } } - this.state = 4564; + this.state = 4628; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 363 || _la === 529 || _la === 535 || _la === 678) { { { - this.state = 4561; + this.state = 4625; this.connectionOptions(); } } - this.state = 4566; + this.state = 4630; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4568; + this.state = 4632; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4567; + this.state = 4631; this.channelOption(); } } @@ -25195,14 +26036,14 @@ export class MySqlParser extends SQLParserBase { } public stopSlaveOrReplica(): StopSlaveOrReplicaContext { let localContext = new StopSlaveOrReplicaContext(this.context, this.state); - this.enterRule(localContext, 358, MySqlParser.RULE_stopSlaveOrReplica); + this.enterRule(localContext, 364, MySqlParser.RULE_stopSlaveOrReplica); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4570; + this.state = 4634; this.match(MySqlParser.KW_STOP); - this.state = 4571; + this.state = 4635; _la = this.tokenStream.LA(1); if(!(_la === 563 || _la === 598)) { this.errorHandler.recoverInline(this); @@ -25211,38 +26052,38 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4580; + this.state = 4644; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 438 || _la === 639) { { - this.state = 4572; + this.state = 4636; this.threadType(); - this.state = 4577; + this.state = 4641; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4573; + this.state = 4637; this.match(MySqlParser.COMMA); - this.state = 4574; + this.state = 4638; this.threadType(); } } - this.state = 4579; + this.state = 4643; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4583; + this.state = 4647; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4582; + this.state = 4646; this.channelOption(); } } @@ -25265,57 +26106,57 @@ export class MySqlParser extends SQLParserBase { } public startGroupReplication(): StartGroupReplicationContext { let localContext = new StartGroupReplicationContext(this.context, this.state); - this.enterRule(localContext, 360, MySqlParser.RULE_startGroupReplication); + this.enterRule(localContext, 366, MySqlParser.RULE_startGroupReplication); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4585; + this.state = 4649; this.match(MySqlParser.KW_START); - this.state = 4586; + this.state = 4650; this.match(MySqlParser.KW_GROUP_REPLICATION); - this.state = 4590; + this.state = 4654; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 678) { { - this.state = 4587; + this.state = 4651; this.match(MySqlParser.KW_USER); - this.state = 4588; + this.state = 4652; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4589; + this.state = 4653; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 4596; + this.state = 4660; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 662, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 673, this.context) ) { case 1: { - this.state = 4592; + this.state = 4656; this.match(MySqlParser.COMMA); - this.state = 4593; + this.state = 4657; this.match(MySqlParser.KW_PASSWORD); - this.state = 4594; + this.state = 4658; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4595; + this.state = 4659; this.match(MySqlParser.STRING_LITERAL); } break; } - this.state = 4602; + this.state = 4666; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 4598; + this.state = 4662; this.match(MySqlParser.COMMA); - this.state = 4599; + this.state = 4663; this.match(MySqlParser.KW_DEFAULT_AUTH); - this.state = 4600; + this.state = 4664; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4601; + this.state = 4665; this.match(MySqlParser.STRING_LITERAL); } } @@ -25338,13 +26179,13 @@ export class MySqlParser extends SQLParserBase { } public stopGroupReplication(): StopGroupReplicationContext { let localContext = new StopGroupReplicationContext(this.context, this.state); - this.enterRule(localContext, 362, MySqlParser.RULE_stopGroupReplication); + this.enterRule(localContext, 368, MySqlParser.RULE_stopGroupReplication); try { this.enterOuterAlt(localContext, 1); { - this.state = 4604; + this.state = 4668; this.match(MySqlParser.KW_STOP); - this.state = 4605; + this.state = 4669; this.match(MySqlParser.KW_GROUP_REPLICATION); } } @@ -25364,10 +26205,10 @@ export class MySqlParser extends SQLParserBase { } public masterOption(): MasterOptionContext { let localContext = new MasterOptionContext(this.context, this.state); - this.enterRule(localContext, 364, MySqlParser.RULE_masterOption); + this.enterRule(localContext, 370, MySqlParser.RULE_masterOption); let _la: number; try { - this.state = 4634; + this.state = 4698; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_MASTER_BIND: @@ -25391,11 +26232,11 @@ export class MySqlParser extends SQLParserBase { localContext = new MasterStringOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4607; + this.state = 4671; this.stringMasterOption(); - this.state = 4608; + this.state = 4672; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4609; + this.state = 4673; this.match(MySqlParser.STRING_LITERAL); } break; @@ -25410,11 +26251,11 @@ export class MySqlParser extends SQLParserBase { localContext = new MasterDecimalOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4611; + this.state = 4675; this.decimalMasterOption(); - this.state = 4612; + this.state = 4676; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4613; + this.state = 4677; this.decimalLiteral(); } break; @@ -25428,11 +26269,11 @@ export class MySqlParser extends SQLParserBase { localContext = new MasterBoolOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4615; + this.state = 4679; this.boolMasterOption(); - this.state = 4616; + this.state = 4680; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4617; + this.state = 4681; (localContext as MasterBoolOptionContext)._boolVal = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { @@ -25450,7 +26291,7 @@ export class MySqlParser extends SQLParserBase { localContext = new V8AddMasterOptionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4619; + this.state = 4683; this.v8NewMasterOption(); } break; @@ -25458,39 +26299,39 @@ export class MySqlParser extends SQLParserBase { localContext = new MasterUidListOptionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 4620; + this.state = 4684; this.match(MySqlParser.KW_IGNORE_SERVER_IDS); - this.state = 4621; + this.state = 4685; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4622; + this.state = 4686; this.match(MySqlParser.LR_BRACKET); - this.state = 4631; + this.state = 4695; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 4623; + this.state = 4687; (localContext as MasterUidListOptionContext)._server_id = this.uid(); - this.state = 4628; + this.state = 4692; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4624; + this.state = 4688; this.match(MySqlParser.COMMA); - this.state = 4625; + this.state = 4689; (localContext as MasterUidListOptionContext)._server_id = this.uid(); } } - this.state = 4630; + this.state = 4694; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4633; + this.state = 4697; this.match(MySqlParser.RR_BRACKET); } break; @@ -25514,12 +26355,12 @@ export class MySqlParser extends SQLParserBase { } public stringMasterOption(): StringMasterOptionContext { let localContext = new StringMasterOptionContext(this.context, this.state); - this.enterRule(localContext, 366, MySqlParser.RULE_stringMasterOption); + this.enterRule(localContext, 372, MySqlParser.RULE_stringMasterOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4636; + this.state = 4700; _la = this.tokenStream.LA(1); if(!(_la === 108 || ((((_la - 455)) & ~0x1F) === 0 && ((1 << (_la - 455)) & 4190897) !== 0) || _la === 499 || _la === 557)) { this.errorHandler.recoverInline(this); @@ -25546,12 +26387,12 @@ export class MySqlParser extends SQLParserBase { } public decimalMasterOption(): DecimalMasterOptionContext { let localContext = new DecimalMasterOptionContext(this.context, this.state); - this.enterRule(localContext, 368, MySqlParser.RULE_decimalMasterOption); + this.enterRule(localContext, 374, MySqlParser.RULE_decimalMasterOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4638; + this.state = 4702; _la = this.tokenStream.LA(1); if(!(((((_la - 456)) & ~0x1F) === 0 && ((1 << (_la - 456)) & 2097831) !== 0) || _la === 558)) { this.errorHandler.recoverInline(this); @@ -25578,12 +26419,12 @@ export class MySqlParser extends SQLParserBase { } public boolMasterOption(): BoolMasterOptionContext { let localContext = new BoolMasterOptionContext(this.context, this.state); - this.enterRule(localContext, 370, MySqlParser.RULE_boolMasterOption); + this.enterRule(localContext, 376, MySqlParser.RULE_boolMasterOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4640; + this.state = 4704; _la = this.tokenStream.LA(1); if(!(_la === 109 || _la === 411 || _la === 416 || _la === 454 || _la === 466 || _la === 573 || _la === 617)) { this.errorHandler.recoverInline(this); @@ -25610,20 +26451,20 @@ export class MySqlParser extends SQLParserBase { } public v8NewMasterOption(): V8NewMasterOptionContext { let localContext = new V8NewMasterOptionContext(this.context, this.state); - this.enterRule(localContext, 372, MySqlParser.RULE_v8NewMasterOption); + this.enterRule(localContext, 378, MySqlParser.RULE_v8NewMasterOption); let _la: number; try { - this.state = 4655; + this.state = 4719; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_PRIVILEGE_CHECKS_USER: this.enterOuterAlt(localContext, 1); { - this.state = 4642; + this.state = 4706; this.match(MySqlParser.KW_PRIVILEGE_CHECKS_USER); - this.state = 4643; + this.state = 4707; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4644; + this.state = 4708; _la = this.tokenStream.LA(1); if(!(_la === 116 || _la === 882)) { this.errorHandler.recoverInline(this); @@ -25637,11 +26478,11 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK: this.enterOuterAlt(localContext, 2); { - this.state = 4645; + this.state = 4709; this.match(MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK); - this.state = 4646; + this.state = 4710; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4647; + this.state = 4711; _la = this.tokenStream.LA(1); if(!(_la === 118 || _la === 119 || _la === 507)) { this.errorHandler.recoverInline(this); @@ -25655,22 +26496,22 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS: this.enterOuterAlt(localContext, 3); { - this.state = 4648; + this.state = 4712; this.match(MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS); - this.state = 4649; + this.state = 4713; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4653; + this.state = 4717; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_OFF: { - this.state = 4650; + this.state = 4714; this.match(MySqlParser.KW_OFF); } break; case MySqlParser.KW_LOCAL: { - this.state = 4651; + this.state = 4715; this.match(MySqlParser.KW_LOCAL); } break; @@ -25682,7 +26523,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 4652; + this.state = 4716; this.gtuidSet(); } break; @@ -25711,10 +26552,10 @@ export class MySqlParser extends SQLParserBase { } public replicationSourceOption(): ReplicationSourceOptionContext { let localContext = new ReplicationSourceOptionContext(this.context, this.state); - this.enterRule(localContext, 374, MySqlParser.RULE_replicationSourceOption); + this.enterRule(localContext, 380, MySqlParser.RULE_replicationSourceOption); let _la: number; try { - this.state = 4684; + this.state = 4748; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NETWORK_NAMESPACE: @@ -25738,11 +26579,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceStringOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4657; + this.state = 4721; this.stringSourceOption(); - this.state = 4658; + this.state = 4722; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4659; + this.state = 4723; this.match(MySqlParser.STRING_LITERAL); } break; @@ -25757,11 +26598,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceDecimalOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4661; + this.state = 4725; this.decimalSourceOption(); - this.state = 4662; + this.state = 4726; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4663; + this.state = 4727; this.decimalLiteral(); } break; @@ -25775,11 +26616,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceBoolOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4665; + this.state = 4729; this.boolSourceOption(); - this.state = 4666; + this.state = 4730; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4667; + this.state = 4731; (localContext as SourceBoolOptionContext)._boolVal = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 871 || _la === 872)) { @@ -25797,7 +26638,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceOtherOptionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4669; + this.state = 4733; this.otherSourceOption(); } break; @@ -25805,39 +26646,39 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceUidListOptionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 4670; + this.state = 4734; this.match(MySqlParser.KW_IGNORE_SERVER_IDS); - this.state = 4671; + this.state = 4735; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4672; + this.state = 4736; this.match(MySqlParser.LR_BRACKET); - this.state = 4681; + this.state = 4745; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 4673; + this.state = 4737; (localContext as SourceUidListOptionContext)._server_id = this.uid(); - this.state = 4678; + this.state = 4742; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4674; + this.state = 4738; this.match(MySqlParser.COMMA); - this.state = 4675; + this.state = 4739; (localContext as SourceUidListOptionContext)._server_id = this.uid(); } } - this.state = 4680; + this.state = 4744; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4683; + this.state = 4747; this.match(MySqlParser.RR_BRACKET); } break; @@ -25861,12 +26702,12 @@ export class MySqlParser extends SQLParserBase { } public stringSourceOption(): StringSourceOptionContext { let localContext = new StringSourceOptionContext(this.context, this.state); - this.enterRule(localContext, 376, MySqlParser.RULE_stringSourceOption); + this.enterRule(localContext, 382, MySqlParser.RULE_stringSourceOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4686; + this.state = 4750; _la = this.tokenStream.LA(1); if(!(_la === 499 || _la === 557 || ((((_la - 606)) & ~0x1F) === 0 && ((1 << (_la - 606)) & 125771823) !== 0))) { this.errorHandler.recoverInline(this); @@ -25893,12 +26734,12 @@ export class MySqlParser extends SQLParserBase { } public decimalSourceOption(): DecimalSourceOptionContext { let localContext = new DecimalSourceOptionContext(this.context, this.state); - this.enterRule(localContext, 378, MySqlParser.RULE_decimalSourceOption); + this.enterRule(localContext, 384, MySqlParser.RULE_decimalSourceOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4688; + this.state = 4752; _la = this.tokenStream.LA(1); if(!(_la === 558 || ((((_la - 610)) & ~0x1F) === 0 && ((1 << (_la - 610)) & 1397) !== 0))) { this.errorHandler.recoverInline(this); @@ -25925,12 +26766,12 @@ export class MySqlParser extends SQLParserBase { } public boolSourceOption(): BoolSourceOptionContext { let localContext = new BoolSourceOptionContext(this.context, this.state); - this.enterRule(localContext, 380, MySqlParser.RULE_boolSourceOption); + this.enterRule(localContext, 386, MySqlParser.RULE_boolSourceOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4690; + this.state = 4754; _la = this.tokenStream.LA(1); if(!(_la === 412 || _la === 416 || _la === 573 || ((((_la - 613)) & ~0x1F) === 0 && ((1 << (_la - 613)) & 65809) !== 0))) { this.errorHandler.recoverInline(this); @@ -25957,20 +26798,20 @@ export class MySqlParser extends SQLParserBase { } public otherSourceOption(): OtherSourceOptionContext { let localContext = new OtherSourceOptionContext(this.context, this.state); - this.enterRule(localContext, 382, MySqlParser.RULE_otherSourceOption); + this.enterRule(localContext, 388, MySqlParser.RULE_otherSourceOption); let _la: number; try { - this.state = 4705; + this.state = 4769; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_PRIVILEGE_CHECKS_USER: this.enterOuterAlt(localContext, 1); { - this.state = 4692; + this.state = 4756; this.match(MySqlParser.KW_PRIVILEGE_CHECKS_USER); - this.state = 4693; + this.state = 4757; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4694; + this.state = 4758; _la = this.tokenStream.LA(1); if(!(_la === 116 || _la === 882)) { this.errorHandler.recoverInline(this); @@ -25984,11 +26825,11 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK: this.enterOuterAlt(localContext, 2); { - this.state = 4695; + this.state = 4759; this.match(MySqlParser.KW_REQUIRE_TABLE_PRIMARY_KEY_CHECK); - this.state = 4696; + this.state = 4760; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4697; + this.state = 4761; _la = this.tokenStream.LA(1); if(!(_la === 70 || _la === 118 || _la === 119 || _la === 507)) { this.errorHandler.recoverInline(this); @@ -26002,22 +26843,22 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS: this.enterOuterAlt(localContext, 3); { - this.state = 4698; + this.state = 4762; this.match(MySqlParser.KW_ASSIGN_GTIDS_TO_ANONYMOUS_TRANSACTIONS); - this.state = 4699; + this.state = 4763; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4703; + this.state = 4767; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_OFF: { - this.state = 4700; + this.state = 4764; this.match(MySqlParser.KW_OFF); } break; case MySqlParser.KW_LOCAL: { - this.state = 4701; + this.state = 4765; this.match(MySqlParser.KW_LOCAL); } break; @@ -26029,7 +26870,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 4702; + this.state = 4766; this.gtuidSet(); } break; @@ -26058,15 +26899,15 @@ export class MySqlParser extends SQLParserBase { } public channelOption(): ChannelOptionContext { let localContext = new ChannelOptionContext(this.context, this.state); - this.enterRule(localContext, 384, MySqlParser.RULE_channelOption); + this.enterRule(localContext, 390, MySqlParser.RULE_channelOption); try { this.enterOuterAlt(localContext, 1); { - this.state = 4707; + this.state = 4771; this.match(MySqlParser.KW_FOR); - this.state = 4708; + this.state = 4772; this.match(MySqlParser.KW_CHANNEL); - this.state = 4709; + this.state = 4773; this.match(MySqlParser.STRING_LITERAL); } } @@ -26086,41 +26927,41 @@ export class MySqlParser extends SQLParserBase { } public replicationFilter(): ReplicationFilterContext { let localContext = new ReplicationFilterContext(this.context, this.state); - this.enterRule(localContext, 386, MySqlParser.RULE_replicationFilter); + this.enterRule(localContext, 392, MySqlParser.RULE_replicationFilter); let _la: number; try { - this.state = 4774; + this.state = 4838; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_REPLICATE_DO_DB: localContext = new DoDbReplicationContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4711; + this.state = 4775; this.match(MySqlParser.KW_REPLICATE_DO_DB); - this.state = 4712; + this.state = 4776; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4713; + this.state = 4777; this.match(MySqlParser.LR_BRACKET); - this.state = 4714; + this.state = 4778; this.databaseName(); - this.state = 4719; + this.state = 4783; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4715; + this.state = 4779; this.match(MySqlParser.COMMA); - this.state = 4716; + this.state = 4780; this.databaseName(); } } - this.state = 4721; + this.state = 4785; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4722; + this.state = 4786; this.match(MySqlParser.RR_BRACKET); } break; @@ -26128,31 +26969,31 @@ export class MySqlParser extends SQLParserBase { localContext = new IgnoreDbReplicationContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4724; + this.state = 4788; this.match(MySqlParser.KW_REPLICATE_IGNORE_DB); - this.state = 4725; + this.state = 4789; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4726; + this.state = 4790; this.match(MySqlParser.LR_BRACKET); - this.state = 4727; + this.state = 4791; this.databaseName(); - this.state = 4732; + this.state = 4796; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4728; + this.state = 4792; this.match(MySqlParser.COMMA); - this.state = 4729; + this.state = 4793; this.databaseName(); } } - this.state = 4734; + this.state = 4798; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4735; + this.state = 4799; this.match(MySqlParser.RR_BRACKET); } break; @@ -26160,15 +27001,15 @@ export class MySqlParser extends SQLParserBase { localContext = new DoTableReplicationContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4737; + this.state = 4801; this.match(MySqlParser.KW_REPLICATE_DO_TABLE); - this.state = 4738; + this.state = 4802; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4739; + this.state = 4803; this.match(MySqlParser.LR_BRACKET); - this.state = 4740; + this.state = 4804; this.tableNames(); - this.state = 4741; + this.state = 4805; this.match(MySqlParser.RR_BRACKET); } break; @@ -26176,15 +27017,15 @@ export class MySqlParser extends SQLParserBase { localContext = new IgnoreTableReplicationContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4743; + this.state = 4807; this.match(MySqlParser.KW_REPLICATE_IGNORE_TABLE); - this.state = 4744; + this.state = 4808; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4745; + this.state = 4809; this.match(MySqlParser.LR_BRACKET); - this.state = 4746; + this.state = 4810; this.tableNames(); - this.state = 4747; + this.state = 4811; this.match(MySqlParser.RR_BRACKET); } break; @@ -26192,15 +27033,15 @@ export class MySqlParser extends SQLParserBase { localContext = new WildDoTableReplicationContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 4749; + this.state = 4813; this.match(MySqlParser.KW_REPLICATE_WILD_DO_TABLE); - this.state = 4750; + this.state = 4814; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4751; + this.state = 4815; this.match(MySqlParser.LR_BRACKET); - this.state = 4752; + this.state = 4816; this.simpleStrings(); - this.state = 4753; + this.state = 4817; this.match(MySqlParser.RR_BRACKET); } break; @@ -26208,15 +27049,15 @@ export class MySqlParser extends SQLParserBase { localContext = new WildIgnoreTableReplicationContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 4755; + this.state = 4819; this.match(MySqlParser.KW_REPLICATE_WILD_IGNORE_TABLE); - this.state = 4756; + this.state = 4820; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4757; + this.state = 4821; this.match(MySqlParser.LR_BRACKET); - this.state = 4758; + this.state = 4822; this.simpleStrings(); - this.state = 4759; + this.state = 4823; this.match(MySqlParser.RR_BRACKET); } break; @@ -26224,31 +27065,31 @@ export class MySqlParser extends SQLParserBase { localContext = new RewriteDbReplicationContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 4761; + this.state = 4825; this.match(MySqlParser.KW_REPLICATE_REWRITE_DB); - this.state = 4762; + this.state = 4826; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4763; + this.state = 4827; this.match(MySqlParser.LR_BRACKET); - this.state = 4764; + this.state = 4828; this.tablePair(); - this.state = 4769; + this.state = 4833; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 4765; + this.state = 4829; this.match(MySqlParser.COMMA); - this.state = 4766; + this.state = 4830; this.tablePair(); } } - this.state = 4771; + this.state = 4835; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4772; + this.state = 4836; this.match(MySqlParser.RR_BRACKET); } break; @@ -26272,19 +27113,19 @@ export class MySqlParser extends SQLParserBase { } public tablePair(): TablePairContext { let localContext = new TablePairContext(this.context, this.state); - this.enterRule(localContext, 388, MySqlParser.RULE_tablePair); + this.enterRule(localContext, 394, MySqlParser.RULE_tablePair); try { this.enterOuterAlt(localContext, 1); { - this.state = 4776; + this.state = 4840; this.match(MySqlParser.LR_BRACKET); - this.state = 4777; + this.state = 4841; localContext._firstTable = this.tableName(); - this.state = 4778; + this.state = 4842; this.match(MySqlParser.COMMA); - this.state = 4779; + this.state = 4843; localContext._secondTable = this.tableName(); - this.state = 4780; + this.state = 4844; this.match(MySqlParser.RR_BRACKET); } } @@ -26304,12 +27145,12 @@ export class MySqlParser extends SQLParserBase { } public threadType(): ThreadTypeContext { let localContext = new ThreadTypeContext(this.context, this.state); - this.enterRule(localContext, 390, MySqlParser.RULE_threadType); + this.enterRule(localContext, 396, MySqlParser.RULE_threadType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4782; + this.state = 4846; _la = this.tokenStream.LA(1); if(!(_la === 438 || _la === 639)) { this.errorHandler.recoverInline(this); @@ -26336,10 +27177,10 @@ export class MySqlParser extends SQLParserBase { } public untilOption(): UntilOptionContext { let localContext = new UntilOptionContext(this.context, this.state); - this.enterRule(localContext, 392, MySqlParser.RULE_untilOption); + this.enterRule(localContext, 398, MySqlParser.RULE_untilOption); let _la: number; try { - this.state = 4809; + this.state = 4873; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SQL_AFTER_GTIDS: @@ -26347,7 +27188,7 @@ export class MySqlParser extends SQLParserBase { localContext = new GtidsUntilOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4784; + this.state = 4848; (localContext as GtidsUntilOptionContext)._gtids = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 633 || _la === 635)) { @@ -26357,9 +27198,9 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4785; + this.state = 4849; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4786; + this.state = 4850; this.gtuidSet(); } break; @@ -26367,19 +27208,19 @@ export class MySqlParser extends SQLParserBase { localContext = new MasterLogUntilOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4787; + this.state = 4851; this.match(MySqlParser.KW_MASTER_LOG_FILE); - this.state = 4788; + this.state = 4852; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4789; + this.state = 4853; this.match(MySqlParser.STRING_LITERAL); - this.state = 4790; + this.state = 4854; this.match(MySqlParser.COMMA); - this.state = 4791; + this.state = 4855; this.match(MySqlParser.KW_MASTER_LOG_POS); - this.state = 4792; + this.state = 4856; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4793; + this.state = 4857; this.decimalLiteral(); } break; @@ -26387,19 +27228,19 @@ export class MySqlParser extends SQLParserBase { localContext = new SourceLogUntilOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4794; + this.state = 4858; this.match(MySqlParser.KW_SOURCE_LOG_FILE); - this.state = 4795; + this.state = 4859; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4796; + this.state = 4860; this.match(MySqlParser.STRING_LITERAL); - this.state = 4797; + this.state = 4861; this.match(MySqlParser.COMMA); - this.state = 4798; + this.state = 4862; this.match(MySqlParser.KW_SOURCE_LOG_POS); - this.state = 4799; + this.state = 4863; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4800; + this.state = 4864; this.decimalLiteral(); } break; @@ -26407,19 +27248,19 @@ export class MySqlParser extends SQLParserBase { localContext = new RelayLogUntilOptionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4801; + this.state = 4865; this.match(MySqlParser.KW_RELAY_LOG_FILE); - this.state = 4802; + this.state = 4866; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4803; + this.state = 4867; this.match(MySqlParser.STRING_LITERAL); - this.state = 4804; + this.state = 4868; this.match(MySqlParser.COMMA); - this.state = 4805; + this.state = 4869; this.match(MySqlParser.KW_RELAY_LOG_POS); - this.state = 4806; + this.state = 4870; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4807; + this.state = 4871; this.decimalLiteral(); } break; @@ -26427,7 +27268,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SqlGapsUntilOptionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 4808; + this.state = 4872; this.match(MySqlParser.KW_SQL_AFTER_MTS_GAPS); } break; @@ -26451,20 +27292,20 @@ export class MySqlParser extends SQLParserBase { } public connectionOptions(): ConnectionOptionsContext { let localContext = new ConnectionOptionsContext(this.context, this.state); - this.enterRule(localContext, 394, MySqlParser.RULE_connectionOptions); + this.enterRule(localContext, 400, MySqlParser.RULE_connectionOptions); try { - this.state = 4823; + this.state = 4887; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_USER: localContext = new UserConnectionOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 4811; + this.state = 4875; this.match(MySqlParser.KW_USER); - this.state = 4812; + this.state = 4876; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4813; + this.state = 4877; (localContext as UserConnectionOptionContext)._conOptUser = this.match(MySqlParser.STRING_LITERAL); } break; @@ -26472,11 +27313,11 @@ export class MySqlParser extends SQLParserBase { localContext = new PasswordConnectionOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 4814; + this.state = 4878; this.match(MySqlParser.KW_PASSWORD); - this.state = 4815; + this.state = 4879; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4816; + this.state = 4880; (localContext as PasswordConnectionOptionContext)._conOptPassword = this.match(MySqlParser.STRING_LITERAL); } break; @@ -26484,11 +27325,11 @@ export class MySqlParser extends SQLParserBase { localContext = new DefaultAuthConnectionOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 4817; + this.state = 4881; this.match(MySqlParser.KW_DEFAULT_AUTH); - this.state = 4818; + this.state = 4882; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4819; + this.state = 4883; (localContext as DefaultAuthConnectionOptionContext)._conOptDefAuth = this.match(MySqlParser.STRING_LITERAL); } break; @@ -26496,11 +27337,11 @@ export class MySqlParser extends SQLParserBase { localContext = new PluginDirConnectionOptionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 4820; + this.state = 4884; this.match(MySqlParser.KW_PLUGIN_DIR); - this.state = 4821; + this.state = 4885; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 4822; + this.state = 4886; (localContext as PluginDirConnectionOptionContext)._conOptPluginDir = this.match(MySqlParser.STRING_LITERAL); } break; @@ -26524,10 +27365,10 @@ export class MySqlParser extends SQLParserBase { } public gtuidSet(): GtuidSetContext { let localContext = new GtuidSetContext(this.context, this.state); - this.enterRule(localContext, 396, MySqlParser.RULE_gtuidSet); + this.enterRule(localContext, 402, MySqlParser.RULE_gtuidSet); try { let alternative: number; - this.state = 4834; + this.state = 4898; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -26538,32 +27379,32 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.REAL_LITERAL: this.enterOuterAlt(localContext, 1); { - this.state = 4825; + this.state = 4889; this.uuidSet(); - this.state = 4830; + this.state = 4894; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 680, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 691, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4826; + this.state = 4890; this.match(MySqlParser.COMMA); - this.state = 4827; + this.state = 4891; this.uuidSet(); } } } - this.state = 4832; + this.state = 4896; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 680, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 691, this.context); } } break; case MySqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 2); { - this.state = 4833; + this.state = 4897; this.match(MySqlParser.STRING_LITERAL); } break; @@ -26587,14 +27428,14 @@ export class MySqlParser extends SQLParserBase { } public xaStartTransaction(): XaStartTransactionContext { let localContext = new XaStartTransactionContext(this.context, this.state); - this.enterRule(localContext, 398, MySqlParser.RULE_xaStartTransaction); + this.enterRule(localContext, 404, MySqlParser.RULE_xaStartTransaction); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4836; + this.state = 4900; this.match(MySqlParser.KW_XA); - this.state = 4837; + this.state = 4901; localContext._xaStart = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 317 || _la === 640)) { @@ -26604,14 +27445,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4838; + this.state = 4902; this.xid(); - this.state = 4840; + this.state = 4904; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 91 || _la === 577) { { - this.state = 4839; + this.state = 4903; localContext._xaAction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 91 || _la === 577)) { @@ -26642,32 +27483,32 @@ export class MySqlParser extends SQLParserBase { } public xaEndTransaction(): XaEndTransactionContext { let localContext = new XaEndTransactionContext(this.context, this.state); - this.enterRule(localContext, 400, MySqlParser.RULE_xaEndTransaction); + this.enterRule(localContext, 406, MySqlParser.RULE_xaEndTransaction); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4842; + this.state = 4906; this.match(MySqlParser.KW_XA); - this.state = 4843; + this.state = 4907; this.match(MySqlParser.KW_END); - this.state = 4844; + this.state = 4908; this.xid(); - this.state = 4850; + this.state = 4914; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 654) { { - this.state = 4845; + this.state = 4909; this.match(MySqlParser.KW_SUSPEND); - this.state = 4848; + this.state = 4912; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4846; + this.state = 4910; this.match(MySqlParser.KW_FOR); - this.state = 4847; + this.state = 4911; this.match(MySqlParser.KW_MIGRATE); } } @@ -26693,15 +27534,15 @@ export class MySqlParser extends SQLParserBase { } public xaPrepareStatement(): XaPrepareStatementContext { let localContext = new XaPrepareStatementContext(this.context, this.state); - this.enterRule(localContext, 402, MySqlParser.RULE_xaPrepareStatement); + this.enterRule(localContext, 408, MySqlParser.RULE_xaPrepareStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4852; + this.state = 4916; this.match(MySqlParser.KW_XA); - this.state = 4853; + this.state = 4917; this.match(MySqlParser.KW_PREPARE); - this.state = 4854; + this.state = 4918; this.xid(); } } @@ -26721,25 +27562,25 @@ export class MySqlParser extends SQLParserBase { } public xaCommitWork(): XaCommitWorkContext { let localContext = new XaCommitWorkContext(this.context, this.state); - this.enterRule(localContext, 404, MySqlParser.RULE_xaCommitWork); + this.enterRule(localContext, 410, MySqlParser.RULE_xaCommitWork); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4856; + this.state = 4920; this.match(MySqlParser.KW_XA); - this.state = 4857; + this.state = 4921; this.match(MySqlParser.KW_COMMIT); - this.state = 4858; + this.state = 4922; this.xid(); - this.state = 4861; + this.state = 4925; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 513) { { - this.state = 4859; + this.state = 4923; this.match(MySqlParser.KW_ONE); - this.state = 4860; + this.state = 4924; this.match(MySqlParser.KW_PHASE); } } @@ -26762,15 +27603,15 @@ export class MySqlParser extends SQLParserBase { } public xaRollbackWork(): XaRollbackWorkContext { let localContext = new XaRollbackWorkContext(this.context, this.state); - this.enterRule(localContext, 406, MySqlParser.RULE_xaRollbackWork); + this.enterRule(localContext, 412, MySqlParser.RULE_xaRollbackWork); try { this.enterOuterAlt(localContext, 1); { - this.state = 4863; + this.state = 4927; this.match(MySqlParser.KW_XA); - this.state = 4864; + this.state = 4928; this.match(MySqlParser.KW_ROLLBACK); - this.state = 4865; + this.state = 4929; this.xid(); } } @@ -26790,23 +27631,23 @@ export class MySqlParser extends SQLParserBase { } public xaRecoverWork(): XaRecoverWorkContext { let localContext = new XaRecoverWorkContext(this.context, this.state); - this.enterRule(localContext, 408, MySqlParser.RULE_xaRecoverWork); + this.enterRule(localContext, 414, MySqlParser.RULE_xaRecoverWork); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4867; + this.state = 4931; this.match(MySqlParser.KW_XA); - this.state = 4868; + this.state = 4932; this.match(MySqlParser.KW_RECOVER); - this.state = 4871; + this.state = 4935; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 33) { { - this.state = 4869; + this.state = 4933; this.match(MySqlParser.KW_CONVERT); - this.state = 4870; + this.state = 4934; this.xid(); } } @@ -26829,28 +27670,28 @@ export class MySqlParser extends SQLParserBase { } public prepareStatement(): PrepareStatementContext { let localContext = new PrepareStatementContext(this.context, this.state); - this.enterRule(localContext, 410, MySqlParser.RULE_prepareStatement); + this.enterRule(localContext, 416, MySqlParser.RULE_prepareStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4873; + this.state = 4937; this.match(MySqlParser.KW_PREPARE); - this.state = 4874; + this.state = 4938; localContext._stmt_name = this.uid(); - this.state = 4875; + this.state = 4939; this.match(MySqlParser.KW_FROM); - this.state = 4878; + this.state = 4942; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: { - this.state = 4876; + this.state = 4940; localContext._query = this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.LOCAL_ID: { - this.state = 4877; + this.state = 4941; localContext._variable = this.match(MySqlParser.LOCAL_ID); } break; @@ -26875,23 +27716,23 @@ export class MySqlParser extends SQLParserBase { } public executeStatement(): ExecuteStatementContext { let localContext = new ExecuteStatementContext(this.context, this.state); - this.enterRule(localContext, 412, MySqlParser.RULE_executeStatement); + this.enterRule(localContext, 418, MySqlParser.RULE_executeStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4880; + this.state = 4944; this.match(MySqlParser.KW_EXECUTE); - this.state = 4881; + this.state = 4945; localContext._stmt_name = this.uid(); - this.state = 4884; + this.state = 4948; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 4882; + this.state = 4946; this.match(MySqlParser.KW_USING); - this.state = 4883; + this.state = 4947; this.userVariables(); } } @@ -26914,12 +27755,12 @@ export class MySqlParser extends SQLParserBase { } public deallocatePrepare(): DeallocatePrepareContext { let localContext = new DeallocatePrepareContext(this.context, this.state); - this.enterRule(localContext, 414, MySqlParser.RULE_deallocatePrepare); + this.enterRule(localContext, 420, MySqlParser.RULE_deallocatePrepare); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 4886; + this.state = 4950; localContext._dropFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 51 || _la === 362)) { @@ -26929,9 +27770,9 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4887; + this.state = 4951; this.match(MySqlParser.KW_PREPARE); - this.state = 4888; + this.state = 4952; localContext._stmt_name = this.uid(); } } @@ -26951,22 +27792,22 @@ export class MySqlParser extends SQLParserBase { } public routineBody(): RoutineBodyContext { let localContext = new RoutineBodyContext(this.context, this.state); - this.enterRule(localContext, 416, MySqlParser.RULE_routineBody); + this.enterRule(localContext, 422, MySqlParser.RULE_routineBody); try { - this.state = 4892; + this.state = 4956; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 689, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 700, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4890; + this.state = 4954; this.blockStatement(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4891; + this.state = 4955; this.sqlStatement(); } break; @@ -26988,120 +27829,120 @@ export class MySqlParser extends SQLParserBase { } public blockStatement(): BlockStatementContext { let localContext = new BlockStatementContext(this.context, this.state); - this.enterRule(localContext, 418, MySqlParser.RULE_blockStatement); + this.enterRule(localContext, 424, MySqlParser.RULE_blockStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4897; + this.state = 4961; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 690, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 701, this.context) ) { case 1: { - this.state = 4894; + this.state = 4958; localContext._begin = this.uid(); - this.state = 4895; + this.state = 4959; this.match(MySqlParser.COLON_SYMB); } break; } - this.state = 4899; + this.state = 4963; this.match(MySqlParser.KW_BEGIN); - this.state = 4905; + this.state = 4969; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 691, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 702, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4900; + this.state = 4964; this.declareVariable(); - this.state = 4901; + this.state = 4965; this.match(MySqlParser.SEMI); } } } - this.state = 4907; + this.state = 4971; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 691, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 702, this.context); } - this.state = 4913; + this.state = 4977; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 692, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 703, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4908; + this.state = 4972; this.declareCondition(); - this.state = 4909; + this.state = 4973; this.match(MySqlParser.SEMI); } } } - this.state = 4915; + this.state = 4979; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 692, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 703, this.context); } - this.state = 4921; + this.state = 4985; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 693, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 704, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4916; + this.state = 4980; this.declareCursor(); - this.state = 4917; + this.state = 4981; this.match(MySqlParser.SEMI); } } } - this.state = 4923; + this.state = 4987; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 693, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 704, this.context); } - this.state = 4929; + this.state = 4993; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 41) { { { - this.state = 4924; + this.state = 4988; this.declareHandler(); - this.state = 4925; + this.state = 4989; this.match(MySqlParser.SEMI); } } - this.state = 4931; + this.state = 4995; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4935; + this.state = 4999; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 695, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 706, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 4932; + this.state = 4996; this.procedureSqlStatement(); } } } - this.state = 4937; + this.state = 5001; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 695, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 706, this.context); } - this.state = 4938; + this.state = 5002; this.match(MySqlParser.KW_END); - this.state = 4940; + this.state = 5004; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 696, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 707, this.context) ) { case 1: { - this.state = 4939; + this.state = 5003; localContext._end = this.uid(); } break; @@ -27124,52 +27965,52 @@ export class MySqlParser extends SQLParserBase { } public caseStatement(): CaseStatementContext { let localContext = new CaseStatementContext(this.context, this.state); - this.enterRule(localContext, 420, MySqlParser.RULE_caseStatement); + this.enterRule(localContext, 426, MySqlParser.RULE_caseStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4942; + this.state = 5006; this.match(MySqlParser.KW_CASE); - this.state = 4945; + this.state = 5009; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 697, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 708, this.context) ) { case 1: { - this.state = 4943; + this.state = 5007; localContext._case_value = this.uid(); } break; case 2: { - this.state = 4944; + this.state = 5008; this.expression(0); } break; } - this.state = 4948; + this.state = 5012; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 4947; + this.state = 5011; this.caseAlternative(); } } - this.state = 4950; + this.state = 5014; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 191); - this.state = 4958; + this.state = 5022; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 4952; + this.state = 5016; this.match(MySqlParser.KW_ELSE); - this.state = 4954; + this.state = 5018; this.errorHandler.sync(this); alternative = 1; do { @@ -27177,7 +28018,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 4953; + this.state = 5017; this.procedureSqlStatement(); } } @@ -27185,16 +28026,16 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4956; + this.state = 5020; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 699, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 710, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } - this.state = 4960; + this.state = 5024; this.match(MySqlParser.KW_END); - this.state = 4961; + this.state = 5025; this.match(MySqlParser.KW_CASE); } } @@ -27214,19 +28055,19 @@ export class MySqlParser extends SQLParserBase { } public ifStatement(): IfStatementContext { let localContext = new IfStatementContext(this.context, this.state); - this.enterRule(localContext, 422, MySqlParser.RULE_ifStatement); + this.enterRule(localContext, 428, MySqlParser.RULE_ifStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4963; + this.state = 5027; this.match(MySqlParser.KW_IF); - this.state = 4964; + this.state = 5028; this.expression(0); - this.state = 4965; + this.state = 5029; this.match(MySqlParser.KW_THEN); - this.state = 4967; + this.state = 5031; this.errorHandler.sync(this); alternative = 1; do { @@ -27234,7 +28075,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 4966; + this.state = 5030; localContext._procedureSqlStatement = this.procedureSqlStatement(); localContext._thenStatements.push(localContext._procedureSqlStatement); } @@ -27243,32 +28084,32 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4969; + this.state = 5033; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 701, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 712, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 4974; + this.state = 5038; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 54) { { { - this.state = 4971; + this.state = 5035; this.elifAlternative(); } } - this.state = 4976; + this.state = 5040; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4983; + this.state = 5047; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 4977; + this.state = 5041; this.match(MySqlParser.KW_ELSE); - this.state = 4979; + this.state = 5043; this.errorHandler.sync(this); alternative = 1; do { @@ -27276,7 +28117,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 4978; + this.state = 5042; localContext._procedureSqlStatement = this.procedureSqlStatement(); localContext._elseStatements.push(localContext._procedureSqlStatement); } @@ -27285,16 +28126,16 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4981; + this.state = 5045; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 703, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 714, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } - this.state = 4985; + this.state = 5049; this.match(MySqlParser.KW_END); - this.state = 4986; + this.state = 5050; this.match(MySqlParser.KW_IF); } } @@ -27314,13 +28155,13 @@ export class MySqlParser extends SQLParserBase { } public iterateStatement(): IterateStatementContext { let localContext = new IterateStatementContext(this.context, this.state); - this.enterRule(localContext, 424, MySqlParser.RULE_iterateStatement); + this.enterRule(localContext, 430, MySqlParser.RULE_iterateStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4988; + this.state = 5052; this.match(MySqlParser.KW_ITERATE); - this.state = 4989; + this.state = 5053; localContext._label = this.uid(); } } @@ -27340,13 +28181,13 @@ export class MySqlParser extends SQLParserBase { } public leaveStatement(): LeaveStatementContext { let localContext = new LeaveStatementContext(this.context, this.state); - this.enterRule(localContext, 426, MySqlParser.RULE_leaveStatement); + this.enterRule(localContext, 432, MySqlParser.RULE_leaveStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 4991; + this.state = 5055; this.match(MySqlParser.KW_LEAVE); - this.state = 4992; + this.state = 5056; localContext._label = this.uid(); } } @@ -27366,27 +28207,27 @@ export class MySqlParser extends SQLParserBase { } public loopStatement(): LoopStatementContext { let localContext = new LoopStatementContext(this.context, this.state); - this.enterRule(localContext, 428, MySqlParser.RULE_loopStatement); + this.enterRule(localContext, 434, MySqlParser.RULE_loopStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4997; + this.state = 5061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 4994; + this.state = 5058; localContext._begin_label = this.uid(); - this.state = 4995; + this.state = 5059; this.match(MySqlParser.COLON_SYMB); } } - this.state = 4999; + this.state = 5063; this.match(MySqlParser.KW_LOOP); - this.state = 5001; + this.state = 5065; this.errorHandler.sync(this); alternative = 1; do { @@ -27394,7 +28235,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5000; + this.state = 5064; this.procedureSqlStatement(); } } @@ -27402,20 +28243,20 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5003; + this.state = 5067; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 706, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 717, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 5005; + this.state = 5069; this.match(MySqlParser.KW_END); - this.state = 5006; + this.state = 5070; this.match(MySqlParser.KW_LOOP); - this.state = 5008; + this.state = 5072; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 5007; + this.state = 5071; localContext._end_label = this.uid(); } } @@ -27438,27 +28279,27 @@ export class MySqlParser extends SQLParserBase { } public repeatStatement(): RepeatStatementContext { let localContext = new RepeatStatementContext(this.context, this.state); - this.enterRule(localContext, 430, MySqlParser.RULE_repeatStatement); + this.enterRule(localContext, 436, MySqlParser.RULE_repeatStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5013; + this.state = 5077; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 708, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 719, this.context) ) { case 1: { - this.state = 5010; + this.state = 5074; localContext._begin_label = this.uid(); - this.state = 5011; + this.state = 5075; this.match(MySqlParser.COLON_SYMB); } break; } - this.state = 5015; + this.state = 5079; this.match(MySqlParser.KW_REPEAT); - this.state = 5017; + this.state = 5081; this.errorHandler.sync(this); alternative = 1; do { @@ -27466,7 +28307,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5016; + this.state = 5080; this.procedureSqlStatement(); } } @@ -27474,24 +28315,24 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5019; + this.state = 5083; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 709, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 720, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 5021; + this.state = 5085; this.match(MySqlParser.KW_UNTIL); - this.state = 5022; + this.state = 5086; this.expression(0); - this.state = 5023; + this.state = 5087; this.match(MySqlParser.KW_END); - this.state = 5024; + this.state = 5088; this.match(MySqlParser.KW_REPEAT); - this.state = 5026; + this.state = 5090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 5025; + this.state = 5089; localContext._end_label = this.uid(); } } @@ -27514,13 +28355,13 @@ export class MySqlParser extends SQLParserBase { } public returnStatement(): ReturnStatementContext { let localContext = new ReturnStatementContext(this.context, this.state); - this.enterRule(localContext, 432, MySqlParser.RULE_returnStatement); + this.enterRule(localContext, 438, MySqlParser.RULE_returnStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 5028; + this.state = 5092; this.match(MySqlParser.KW_RETURN); - this.state = 5029; + this.state = 5093; this.expression(0); } } @@ -27540,31 +28381,31 @@ export class MySqlParser extends SQLParserBase { } public whileStatement(): WhileStatementContext { let localContext = new WhileStatementContext(this.context, this.state); - this.enterRule(localContext, 434, MySqlParser.RULE_whileStatement); + this.enterRule(localContext, 440, MySqlParser.RULE_whileStatement); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5034; + this.state = 5098; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 5031; + this.state = 5095; localContext._begin_label = this.uid(); - this.state = 5032; + this.state = 5096; this.match(MySqlParser.COLON_SYMB); } } - this.state = 5036; + this.state = 5100; this.match(MySqlParser.KW_WHILE); - this.state = 5037; + this.state = 5101; this.expression(0); - this.state = 5038; + this.state = 5102; this.match(MySqlParser.KW_DO); - this.state = 5040; + this.state = 5104; this.errorHandler.sync(this); alternative = 1; do { @@ -27572,7 +28413,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5039; + this.state = 5103; this.procedureSqlStatement(); } } @@ -27580,20 +28421,20 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5042; + this.state = 5106; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 712, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 723, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 5044; + this.state = 5108; this.match(MySqlParser.KW_END); - this.state = 5045; + this.state = 5109; this.match(MySqlParser.KW_WHILE); - this.state = 5047; + this.state = 5111; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483629) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014219) !== 0) || ((((_la - 74)) & ~0x1F) === 0 && ((1 << (_la - 74)) & 18878481) !== 0) || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 100679969) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 1049605) !== 0) || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 5374495) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 4294967295) !== 0) || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 4261412607) !== 0) || ((((_la - 317)) & ~0x1F) === 0 && ((1 << (_la - 317)) & 4160741375) !== 0) || ((((_la - 349)) & ~0x1F) === 0 && ((1 << (_la - 349)) & 4026531839) !== 0) || ((((_la - 381)) & ~0x1F) === 0 && ((1 << (_la - 381)) & 1055907839) !== 0) || ((((_la - 413)) & ~0x1F) === 0 && ((1 << (_la - 413)) & 4294885367) !== 0) || ((((_la - 445)) & ~0x1F) === 0 && ((1 << (_la - 445)) & 3757571071) !== 0) || ((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 3755999231) !== 0) || ((((_la - 510)) & ~0x1F) === 0 && ((1 << (_la - 510)) & 3751780349) !== 0) || ((((_la - 542)) & ~0x1F) === 0 && ((1 << (_la - 542)) & 2141183997) !== 0) || ((((_la - 575)) & ~0x1F) === 0 && ((1 << (_la - 575)) & 2147483645) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 4278189053) !== 0) || ((((_la - 697)) & ~0x1F) === 0 && ((1 << (_la - 697)) & 1644099327) !== 0) || ((((_la - 729)) & ~0x1F) === 0 && ((1 << (_la - 729)) & 4294900735) !== 0) || ((((_la - 761)) & ~0x1F) === 0 && ((1 << (_la - 761)) & 4294967295) !== 0) || ((((_la - 793)) & ~0x1F) === 0 && ((1 << (_la - 793)) & 4288675839) !== 0) || ((((_la - 825)) & ~0x1F) === 0 && ((1 << (_la - 825)) & 2147527671) !== 0) || ((((_la - 879)) & ~0x1F) === 0 && ((1 << (_la - 879)) & 1033) !== 0)) { { - this.state = 5046; + this.state = 5110; localContext._end_label = this.uid(); } } @@ -27616,19 +28457,19 @@ export class MySqlParser extends SQLParserBase { } public cursorStatement(): CursorStatementContext { let localContext = new CursorStatementContext(this.context, this.state); - this.enterRule(localContext, 436, MySqlParser.RULE_cursorStatement); + this.enterRule(localContext, 442, MySqlParser.RULE_cursorStatement); let _la: number; try { - this.state = 5064; + this.state = 5128; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CLOSE: localContext = new CloseCursorContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5049; + this.state = 5113; this.match(MySqlParser.KW_CLOSE); - this.state = 5050; + this.state = 5114; (localContext as CloseCursorContext)._cursor_name = this.uid(); } break; @@ -27636,33 +28477,33 @@ export class MySqlParser extends SQLParserBase { localContext = new FetchCursorContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5051; + this.state = 5115; this.match(MySqlParser.KW_FETCH); - this.state = 5056; + this.state = 5120; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 715, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 726, this.context) ) { case 1: { - this.state = 5053; + this.state = 5117; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 501) { { - this.state = 5052; + this.state = 5116; this.match(MySqlParser.KW_NEXT); } } - this.state = 5055; + this.state = 5119; this.match(MySqlParser.KW_FROM); } break; } - this.state = 5058; + this.state = 5122; (localContext as FetchCursorContext)._cursor_name = this.uid(); - this.state = 5059; + this.state = 5123; this.match(MySqlParser.KW_INTO); - this.state = 5060; + this.state = 5124; (localContext as FetchCursorContext)._var_names = this.uidList(); } break; @@ -27670,9 +28511,9 @@ export class MySqlParser extends SQLParserBase { localContext = new OpenCursorContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 5062; + this.state = 5126; this.match(MySqlParser.KW_OPEN); - this.state = 5063; + this.state = 5127; (localContext as OpenCursorContext)._cursor_name = this.uid(); } break; @@ -27696,25 +28537,25 @@ export class MySqlParser extends SQLParserBase { } public declareVariable(): DeclareVariableContext { let localContext = new DeclareVariableContext(this.context, this.state); - this.enterRule(localContext, 438, MySqlParser.RULE_declareVariable); + this.enterRule(localContext, 444, MySqlParser.RULE_declareVariable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5066; + this.state = 5130; this.match(MySqlParser.KW_DECLARE); - this.state = 5067; + this.state = 5131; localContext._var_names = this.uidList(); - this.state = 5068; + this.state = 5132; this.dataType(); - this.state = 5071; + this.state = 5135; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 5069; + this.state = 5133; this.match(MySqlParser.KW_DEFAULT); - this.state = 5070; + this.state = 5134; this.expression(0); } } @@ -27737,20 +28578,20 @@ export class MySqlParser extends SQLParserBase { } public declareCondition(): DeclareConditionContext { let localContext = new DeclareConditionContext(this.context, this.state); - this.enterRule(localContext, 440, MySqlParser.RULE_declareCondition); + this.enterRule(localContext, 446, MySqlParser.RULE_declareCondition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5073; + this.state = 5137; this.match(MySqlParser.KW_DECLARE); - this.state = 5074; + this.state = 5138; localContext._condition_name = this.uid(); - this.state = 5075; + this.state = 5139; this.match(MySqlParser.KW_CONDITION); - this.state = 5076; + this.state = 5140; this.match(MySqlParser.KW_FOR); - this.state = 5083; + this.state = 5147; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -27760,25 +28601,25 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 5077; + this.state = 5141; this.decimalLiteral(); } break; case MySqlParser.KW_SQLSTATE: { - this.state = 5078; + this.state = 5142; this.match(MySqlParser.KW_SQLSTATE); - this.state = 5080; + this.state = 5144; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 682) { { - this.state = 5079; + this.state = 5143; this.match(MySqlParser.KW_VALUE); } } - this.state = 5082; + this.state = 5146; this.match(MySqlParser.STRING_LITERAL); } break; @@ -27803,19 +28644,19 @@ export class MySqlParser extends SQLParserBase { } public declareCursor(): DeclareCursorContext { let localContext = new DeclareCursorContext(this.context, this.state); - this.enterRule(localContext, 442, MySqlParser.RULE_declareCursor); + this.enterRule(localContext, 448, MySqlParser.RULE_declareCursor); try { this.enterOuterAlt(localContext, 1); { - this.state = 5085; + this.state = 5149; this.match(MySqlParser.KW_DECLARE); - this.state = 5086; + this.state = 5150; localContext._condition_name = this.uid(); - this.state = 5087; + this.state = 5151; this.match(MySqlParser.KW_CURSOR); - this.state = 5088; + this.state = 5152; this.match(MySqlParser.KW_FOR); - this.state = 5089; + this.state = 5153; this.selectStatement(); } } @@ -27835,14 +28676,14 @@ export class MySqlParser extends SQLParserBase { } public declareHandler(): DeclareHandlerContext { let localContext = new DeclareHandlerContext(this.context, this.state); - this.enterRule(localContext, 444, MySqlParser.RULE_declareHandler); + this.enterRule(localContext, 450, MySqlParser.RULE_declareHandler); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5091; + this.state = 5155; this.match(MySqlParser.KW_DECLARE); - this.state = 5092; + this.state = 5156; localContext._handlerAction = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 32 || _la === 61 || _la === 180)) { @@ -27852,29 +28693,29 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5093; + this.state = 5157; this.match(MySqlParser.KW_HANDLER); - this.state = 5094; + this.state = 5158; this.match(MySqlParser.KW_FOR); - this.state = 5095; + this.state = 5159; this.handlerConditionValue(); - this.state = 5100; + this.state = 5164; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5096; + this.state = 5160; this.match(MySqlParser.COMMA); - this.state = 5097; + this.state = 5161; this.handlerConditionValue(); } } - this.state = 5102; + this.state = 5166; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5103; + this.state = 5167; this.routineBody(); } } @@ -27894,10 +28735,10 @@ export class MySqlParser extends SQLParserBase { } public handlerConditionValue(): HandlerConditionValueContext { let localContext = new HandlerConditionValueContext(this.context, this.state); - this.enterRule(localContext, 446, MySqlParser.RULE_handlerConditionValue); + this.enterRule(localContext, 452, MySqlParser.RULE_handlerConditionValue); let _la: number; try { - this.state = 5116; + this.state = 5180; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -27909,7 +28750,7 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionCodeContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5105; + this.state = 5169; this.decimalLiteral(); } break; @@ -27917,19 +28758,19 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionStateContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5106; + this.state = 5170; this.match(MySqlParser.KW_SQLSTATE); - this.state = 5108; + this.state = 5172; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 682) { { - this.state = 5107; + this.state = 5171; this.match(MySqlParser.KW_VALUE); } } - this.state = 5110; + this.state = 5174; this.match(MySqlParser.STRING_LITERAL); } break; @@ -28263,6 +29104,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -28484,7 +29326,7 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionNameContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 5111; + this.state = 5175; (localContext as HandlerConditionNameContext)._condition_name = this.uid(); } break; @@ -28492,7 +29334,7 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionWarningContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 5112; + this.state = 5176; this.match(MySqlParser.KW_SQLWARNING); } break; @@ -28500,9 +29342,9 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionNotfoundContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 5113; + this.state = 5177; this.match(MySqlParser.KW_NOT); - this.state = 5114; + this.state = 5178; this.match(MySqlParser.KW_FOUND); } break; @@ -28510,7 +29352,7 @@ export class MySqlParser extends SQLParserBase { localContext = new HandlerConditionExceptionContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 5115; + this.state = 5179; this.match(MySqlParser.KW_SQLEXCEPTION); } break; @@ -28534,27 +29376,27 @@ export class MySqlParser extends SQLParserBase { } public procedureSqlStatement(): ProcedureSqlStatementContext { let localContext = new ProcedureSqlStatementContext(this.context, this.state); - this.enterRule(localContext, 448, MySqlParser.RULE_procedureSqlStatement); + this.enterRule(localContext, 454, MySqlParser.RULE_procedureSqlStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 5120; + this.state = 5184; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 723, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 734, this.context) ) { case 1: { - this.state = 5118; + this.state = 5182; this.compoundStatement(); } break; case 2: { - this.state = 5119; + this.state = 5183; this.sqlStatement(); } break; } - this.state = 5122; + this.state = 5186; this.match(MySqlParser.SEMI); } } @@ -28574,32 +29416,32 @@ export class MySqlParser extends SQLParserBase { } public caseAlternative(): CaseAlternativeContext { let localContext = new CaseAlternativeContext(this.context, this.state); - this.enterRule(localContext, 450, MySqlParser.RULE_caseAlternative); + this.enterRule(localContext, 456, MySqlParser.RULE_caseAlternative); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5124; + this.state = 5188; this.match(MySqlParser.KW_WHEN); - this.state = 5127; + this.state = 5191; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 724, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 735, this.context) ) { case 1: { - this.state = 5125; + this.state = 5189; this.constant(); } break; case 2: { - this.state = 5126; + this.state = 5190; this.expression(0); } break; } - this.state = 5129; + this.state = 5193; this.match(MySqlParser.KW_THEN); - this.state = 5131; + this.state = 5195; this.errorHandler.sync(this); alternative = 1; do { @@ -28607,7 +29449,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5130; + this.state = 5194; this.procedureSqlStatement(); } } @@ -28615,9 +29457,9 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5133; + this.state = 5197; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 725, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 736, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -28637,18 +29479,18 @@ export class MySqlParser extends SQLParserBase { } public elifAlternative(): ElifAlternativeContext { let localContext = new ElifAlternativeContext(this.context, this.state); - this.enterRule(localContext, 452, MySqlParser.RULE_elifAlternative); + this.enterRule(localContext, 458, MySqlParser.RULE_elifAlternative); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5135; + this.state = 5199; this.match(MySqlParser.KW_ELSEIF); - this.state = 5136; + this.state = 5200; this.expression(0); - this.state = 5137; + this.state = 5201; this.match(MySqlParser.KW_THEN); - this.state = 5139; + this.state = 5203; this.errorHandler.sync(this); alternative = 1; do { @@ -28656,7 +29498,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5138; + this.state = 5202; this.procedureSqlStatement(); } } @@ -28664,9 +29506,9 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5141; + this.state = 5205; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 726, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 737, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } } @@ -28686,46 +29528,46 @@ export class MySqlParser extends SQLParserBase { } public alterUser(): AlterUserContext { let localContext = new AlterUserContext(this.context, this.state); - this.enterRule(localContext, 454, MySqlParser.RULE_alterUser); + this.enterRule(localContext, 460, MySqlParser.RULE_alterUser); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5143; + this.state = 5207; this.match(MySqlParser.KW_ALTER); - this.state = 5144; + this.state = 5208; this.match(MySqlParser.KW_USER); - this.state = 5146; + this.state = 5210; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 727, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 738, this.context) ) { case 1: { - this.state = 5145; + this.state = 5209; this.ifExists(); } break; } - this.state = 5204; + this.state = 5268; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 739, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 750, this.context) ) { case 1: { { - this.state = 5148; + this.state = 5212; this.userSpecification(); - this.state = 5153; + this.state = 5217; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5149; + this.state = 5213; this.match(MySqlParser.COMMA); - this.state = 5150; + this.state = 5214; this.userSpecification(); } } - this.state = 5155; + this.state = 5219; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -28735,37 +29577,37 @@ export class MySqlParser extends SQLParserBase { case 2: { { - this.state = 5156; + this.state = 5220; this.alterUserAuthOption(); - this.state = 5161; + this.state = 5225; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5157; + this.state = 5221; this.match(MySqlParser.COMMA); - this.state = 5158; + this.state = 5222; this.alterUserAuthOption(); } } - this.state = 5163; + this.state = 5227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5178; + this.state = 5242; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 5164; + this.state = 5228; this.match(MySqlParser.KW_REQUIRE); - this.state = 5176; + this.state = 5240; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NONE: { - this.state = 5165; + this.state = 5229; this.match(MySqlParser.KW_NONE); } break; @@ -28775,29 +29617,29 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SUBJECT: case MySqlParser.KW_X509: { - this.state = 5166; + this.state = 5230; this.tlsOption(); - this.state = 5173; + this.state = 5237; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 11 || _la === 169 || _la === 331 || _la === 441 || _la === 651 || _la === 693) { { { - this.state = 5168; + this.state = 5232; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 5167; + this.state = 5231; this.match(MySqlParser.KW_AND); } } - this.state = 5170; + this.state = 5234; this.tlsOption(); } } - this.state = 5175; + this.state = 5239; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -28809,49 +29651,49 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 5186; + this.state = 5250; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 735, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 746, this.context) ) { case 1: { - this.state = 5180; + this.state = 5244; this.match(MySqlParser.KW_WITH); - this.state = 5182; + this.state = 5246; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 5181; + this.state = 5245; this.userResourceOption(); } } - this.state = 5184; + this.state = 5248; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 51) !== 0)); } break; } - this.state = 5192; + this.state = 5256; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 304 || _la === 395 || _la === 529 || _la === 530) { { - this.state = 5190; + this.state = 5254; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS: case MySqlParser.KW_PASSWORD: case MySqlParser.KW_PASSWORD_LOCK_TIME: { - this.state = 5188; + this.state = 5252; this.userPasswordOption(); } break; case MySqlParser.KW_ACCOUNT: { - this.state = 5189; + this.state = 5253; this.userLockOption(); } break; @@ -28859,16 +29701,16 @@ export class MySqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 5194; + this.state = 5258; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5197; + this.state = 5261; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 15 || _la === 340) { { - this.state = 5195; + this.state = 5259; _la = this.tokenStream.LA(1); if(!(_la === 15 || _la === 340)) { this.errorHandler.recoverInline(this); @@ -28877,7 +29719,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5196; + this.state = 5260; this.match(MySqlParser.STRING_LITERAL); } } @@ -28889,14 +29731,14 @@ export class MySqlParser extends SQLParserBase { { { { - this.state = 5199; + this.state = 5263; this.userOrRoleName(); } - this.state = 5200; + this.state = 5264; this.match(MySqlParser.KW_DEFAULT); - this.state = 5201; + this.state = 5265; this.match(MySqlParser.KW_ROLE); - this.state = 5202; + this.state = 5266; this.roleOption(); } } @@ -28920,90 +29762,90 @@ export class MySqlParser extends SQLParserBase { } public createUser(): CreateUserContext { let localContext = new CreateUserContext(this.context, this.state); - this.enterRule(localContext, 456, MySqlParser.RULE_createUser); + this.enterRule(localContext, 462, MySqlParser.RULE_createUser); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5206; + this.state = 5270; this.match(MySqlParser.KW_CREATE); - this.state = 5207; + this.state = 5271; this.match(MySqlParser.KW_USER); - this.state = 5209; + this.state = 5273; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 5208; + this.state = 5272; this.ifNotExists(); } } - this.state = 5211; + this.state = 5275; this.userName(); - this.state = 5213; + this.state = 5277; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 423) { { - this.state = 5212; + this.state = 5276; this.createUserAuthOption(); } } - this.state = 5222; + this.state = 5286; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5215; + this.state = 5279; this.match(MySqlParser.COMMA); - this.state = 5216; + this.state = 5280; this.userName(); - this.state = 5218; + this.state = 5282; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 423) { { - this.state = 5217; + this.state = 5281; this.createUserAuthOption(); } } } } - this.state = 5224; + this.state = 5288; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5228; + this.state = 5292; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42) { { - this.state = 5225; + this.state = 5289; this.match(MySqlParser.KW_DEFAULT); - this.state = 5226; + this.state = 5290; this.match(MySqlParser.KW_ROLE); - this.state = 5227; + this.state = 5291; this.roleOption(); } } - this.state = 5244; + this.state = 5308; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 5230; + this.state = 5294; this.match(MySqlParser.KW_REQUIRE); - this.state = 5242; + this.state = 5306; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NONE: { - this.state = 5231; + this.state = 5295; this.match(MySqlParser.KW_NONE); } break; @@ -29013,29 +29855,29 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SUBJECT: case MySqlParser.KW_X509: { - this.state = 5232; + this.state = 5296; this.tlsOption(); - this.state = 5239; + this.state = 5303; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 11 || _la === 169 || _la === 331 || _la === 441 || _la === 651 || _la === 693) { { { - this.state = 5234; + this.state = 5298; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 5233; + this.state = 5297; this.match(MySqlParser.KW_AND); } } - this.state = 5236; + this.state = 5300; this.tlsOption(); } } - this.state = 5241; + this.state = 5305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29047,49 +29889,49 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 5252; + this.state = 5316; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 750, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 761, this.context) ) { case 1: { - this.state = 5246; + this.state = 5310; this.match(MySqlParser.KW_WITH); - this.state = 5248; + this.state = 5312; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 5247; + this.state = 5311; this.userResourceOption(); } } - this.state = 5250; + this.state = 5314; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (((((_la - 478)) & ~0x1F) === 0 && ((1 << (_la - 478)) & 51) !== 0)); } break; } - this.state = 5258; + this.state = 5322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 304 || _la === 395 || _la === 529 || _la === 530) { { - this.state = 5256; + this.state = 5320; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FAILED_LOGIN_ATTEMPTS: case MySqlParser.KW_PASSWORD: case MySqlParser.KW_PASSWORD_LOCK_TIME: { - this.state = 5254; + this.state = 5318; this.userPasswordOption(); } break; case MySqlParser.KW_ACCOUNT: { - this.state = 5255; + this.state = 5319; this.userLockOption(); } break; @@ -29097,16 +29939,16 @@ export class MySqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 5260; + this.state = 5324; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5263; + this.state = 5327; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 15 || _la === 340) { { - this.state = 5261; + this.state = 5325; _la = this.tokenStream.LA(1); if(!(_la === 15 || _la === 340)) { this.errorHandler.recoverInline(this); @@ -29115,7 +29957,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5262; + this.state = 5326; this.match(MySqlParser.STRING_LITERAL); } } @@ -29138,40 +29980,40 @@ export class MySqlParser extends SQLParserBase { } public dropUser(): DropUserContext { let localContext = new DropUserContext(this.context, this.state); - this.enterRule(localContext, 458, MySqlParser.RULE_dropUser); + this.enterRule(localContext, 464, MySqlParser.RULE_dropUser); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5265; + this.state = 5329; this.match(MySqlParser.KW_DROP); - this.state = 5266; + this.state = 5330; this.match(MySqlParser.KW_USER); - this.state = 5268; + this.state = 5332; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 5267; + this.state = 5331; this.ifExists(); } } - this.state = 5270; + this.state = 5334; this.userName(); - this.state = 5275; + this.state = 5339; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5271; + this.state = 5335; this.match(MySqlParser.COMMA); - this.state = 5272; + this.state = 5336; this.userName(); } } - this.state = 5277; + this.state = 5341; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29193,73 +30035,73 @@ export class MySqlParser extends SQLParserBase { } public grantStatement(): GrantStatementContext { let localContext = new GrantStatementContext(this.context, this.state); - this.enterRule(localContext, 460, MySqlParser.RULE_grantStatement); + this.enterRule(localContext, 466, MySqlParser.RULE_grantStatement); let _la: number; try { let alternative: number; - this.state = 5367; + this.state = 5431; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 773, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 784, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5278; + this.state = 5342; this.match(MySqlParser.KW_GRANT); - this.state = 5279; + this.state = 5343; this.privelegeClause(); - this.state = 5284; + this.state = 5348; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5280; + this.state = 5344; this.match(MySqlParser.COMMA); - this.state = 5281; + this.state = 5345; this.privelegeClause(); } } - this.state = 5286; + this.state = 5350; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5287; + this.state = 5351; this.match(MySqlParser.KW_ON); - this.state = 5289; + this.state = 5353; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 757, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 768, this.context) ) { case 1: { - this.state = 5288; + this.state = 5352; this.privilegeObjectType(); } break; } - this.state = 5291; + this.state = 5355; this.privilegeLevel(); - this.state = 5292; + this.state = 5356; this.match(MySqlParser.KW_TO); - this.state = 5302; + this.state = 5366; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 759, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 770, this.context) ) { case 1: { { - this.state = 5293; + this.state = 5357; this.userAuthOption(); - this.state = 5298; + this.state = 5362; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5294; + this.state = 5358; this.match(MySqlParser.COMMA); - this.state = 5295; + this.state = 5359; this.userAuthOption(); } } - this.state = 5300; + this.state = 5364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29268,24 +30110,24 @@ export class MySqlParser extends SQLParserBase { break; case 2: { - this.state = 5301; + this.state = 5365; this.userOrRoleNames(); } break; } - this.state = 5318; + this.state = 5382; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 5304; + this.state = 5368; this.match(MySqlParser.KW_REQUIRE); - this.state = 5316; + this.state = 5380; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_NONE: { - this.state = 5305; + this.state = 5369; localContext._tlsNone = this.match(MySqlParser.KW_NONE); } break; @@ -29295,29 +30137,29 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SUBJECT: case MySqlParser.KW_X509: { - this.state = 5306; + this.state = 5370; this.tlsOption(); - this.state = 5313; + this.state = 5377; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 11 || _la === 169 || _la === 331 || _la === 441 || _la === 651 || _la === 693) { { { - this.state = 5308; + this.state = 5372; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 5307; + this.state = 5371; this.match(MySqlParser.KW_AND); } } - this.state = 5310; + this.state = 5374; this.tlsOption(); } } - this.state = 5315; + this.state = 5379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29329,27 +30171,27 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 5329; + this.state = 5393; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 766, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 777, this.context) ) { case 1: { - this.state = 5320; + this.state = 5384; this.match(MySqlParser.KW_WITH); - this.state = 5326; + this.state = 5390; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 765, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 776, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 5324; + this.state = 5388; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_GRANT: { - this.state = 5321; + this.state = 5385; this.match(MySqlParser.KW_GRANT); - this.state = 5322; + this.state = 5386; this.match(MySqlParser.KW_OPTION); } break; @@ -29358,7 +30200,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_MAX_UPDATES_PER_HOUR: case MySqlParser.KW_MAX_USER_CONNECTIONS: { - this.state = 5323; + this.state = 5387; this.userResourceOption(); } break; @@ -29367,32 +30209,32 @@ export class MySqlParser extends SQLParserBase { } } } - this.state = 5328; + this.state = 5392; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 765, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 776, this.context); } } break; } - this.state = 5338; + this.state = 5402; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 5331; + this.state = 5395; this.match(MySqlParser.KW_AS); - this.state = 5332; + this.state = 5396; this.userName(); - this.state = 5336; + this.state = 5400; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 767, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 778, this.context) ) { case 1: { - this.state = 5333; + this.state = 5397; this.match(MySqlParser.KW_WITH); - this.state = 5334; + this.state = 5398; this.match(MySqlParser.KW_ROLE); - this.state = 5335; + this.state = 5399; this.roleOption(); } break; @@ -29405,76 +30247,76 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5340; + this.state = 5404; this.match(MySqlParser.KW_GRANT); - this.state = 5343; + this.state = 5407; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 769, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 780, this.context) ) { case 1: { - this.state = 5341; + this.state = 5405; this.match(MySqlParser.KW_PROXY); - this.state = 5342; + this.state = 5406; this.match(MySqlParser.KW_ON); } break; } { - this.state = 5345; + this.state = 5409; this.userOrRoleName(); } - this.state = 5350; + this.state = 5414; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5346; + this.state = 5410; this.match(MySqlParser.COMMA); { - this.state = 5347; + this.state = 5411; this.userOrRoleName(); } } } - this.state = 5352; + this.state = 5416; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5353; + this.state = 5417; this.match(MySqlParser.KW_TO); { - this.state = 5354; + this.state = 5418; this.userOrRoleName(); } - this.state = 5359; + this.state = 5423; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5355; + this.state = 5419; this.match(MySqlParser.COMMA); { - this.state = 5356; + this.state = 5420; this.userOrRoleName(); } } } - this.state = 5361; + this.state = 5425; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5365; + this.state = 5429; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 772, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 783, this.context) ) { case 1: { - this.state = 5362; + this.state = 5426; this.match(MySqlParser.KW_WITH); - this.state = 5363; + this.state = 5427; this.match(MySqlParser.KW_ADMIN); - this.state = 5364; + this.state = 5428; this.match(MySqlParser.KW_OPTION); } break; @@ -29499,39 +30341,39 @@ export class MySqlParser extends SQLParserBase { } public roleOption(): RoleOptionContext { let localContext = new RoleOptionContext(this.context, this.state); - this.enterRule(localContext, 462, MySqlParser.RULE_roleOption); + this.enterRule(localContext, 468, MySqlParser.RULE_roleOption); let _la: number; try { - this.state = 5377; + this.state = 5441; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 775, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 786, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5369; + this.state = 5433; this.match(MySqlParser.KW_DEFAULT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5370; + this.state = 5434; this.match(MySqlParser.KW_NONE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5371; + this.state = 5435; this.match(MySqlParser.KW_ALL); - this.state = 5374; + this.state = 5438; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59) { { - this.state = 5372; + this.state = 5436; this.match(MySqlParser.KW_EXCEPT); - this.state = 5373; + this.state = 5437; this.userOrRoleNames(); } } @@ -29541,7 +30383,7 @@ export class MySqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5376; + this.state = 5440; this.userOrRoleNames(); } break; @@ -29563,50 +30405,50 @@ export class MySqlParser extends SQLParserBase { } public grantProxy(): GrantProxyContext { let localContext = new GrantProxyContext(this.context, this.state); - this.enterRule(localContext, 464, MySqlParser.RULE_grantProxy); + this.enterRule(localContext, 470, MySqlParser.RULE_grantProxy); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5379; + this.state = 5443; this.match(MySqlParser.KW_GRANT); - this.state = 5380; + this.state = 5444; this.match(MySqlParser.KW_PROXY); - this.state = 5381; + this.state = 5445; this.match(MySqlParser.KW_ON); - this.state = 5382; + this.state = 5446; localContext._fromFirst = this.userName(); - this.state = 5383; + this.state = 5447; this.match(MySqlParser.KW_TO); - this.state = 5384; + this.state = 5448; localContext._toFirst = this.userName(); - this.state = 5389; + this.state = 5453; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5385; + this.state = 5449; this.match(MySqlParser.COMMA); - this.state = 5386; + this.state = 5450; localContext._userName = this.userName(); localContext._toOther.push(localContext._userName); } } - this.state = 5391; + this.state = 5455; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5395; + this.state = 5459; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 777, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 788, this.context) ) { case 1: { - this.state = 5392; + this.state = 5456; this.match(MySqlParser.KW_WITH); - this.state = 5393; + this.state = 5457; this.match(MySqlParser.KW_GRANT); - this.state = 5394; + this.state = 5458; this.match(MySqlParser.KW_OPTION); } break; @@ -29629,69 +30471,69 @@ export class MySqlParser extends SQLParserBase { } public alterResourceGroup(): AlterResourceGroupContext { let localContext = new AlterResourceGroupContext(this.context, this.state); - this.enterRule(localContext, 466, MySqlParser.RULE_alterResourceGroup); + this.enterRule(localContext, 472, MySqlParser.RULE_alterResourceGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5397; + this.state = 5461; this.match(MySqlParser.KW_ALTER); - this.state = 5398; + this.state = 5462; this.match(MySqlParser.KW_RESOURCE); - this.state = 5399; + this.state = 5463; this.match(MySqlParser.KW_GROUP); - this.state = 5400; + this.state = 5464; this.groupName(); - this.state = 5406; + this.state = 5470; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 190) { { - this.state = 5401; + this.state = 5465; this.match(MySqlParser.KW_VCPU); - this.state = 5403; + this.state = 5467; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 5402; + this.state = 5466; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 5405; + this.state = 5469; this.resourceGroupVcpuSpec(); } } - this.state = 5413; + this.state = 5477; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 837) { { - this.state = 5408; + this.state = 5472; this.match(MySqlParser.KW_THREAD_PRIORITY); - this.state = 5410; + this.state = 5474; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 5409; + this.state = 5473; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 5412; + this.state = 5476; this.decimalLiteral(); } } - this.state = 5419; + this.state = 5483; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 368 || _la === 375) { { - this.state = 5415; + this.state = 5479; _la = this.tokenStream.LA(1); if(!(_la === 368 || _la === 375)) { this.errorHandler.recoverInline(this); @@ -29700,12 +30542,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5417; + this.state = 5481; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 66) { { - this.state = 5416; + this.state = 5480; this.match(MySqlParser.KW_FORCE); } } @@ -29731,24 +30573,24 @@ export class MySqlParser extends SQLParserBase { } public createResourceGroup(): CreateResourceGroupContext { let localContext = new CreateResourceGroupContext(this.context, this.state); - this.enterRule(localContext, 468, MySqlParser.RULE_createResourceGroup); + this.enterRule(localContext, 474, MySqlParser.RULE_createResourceGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5421; + this.state = 5485; this.match(MySqlParser.KW_CREATE); - this.state = 5422; + this.state = 5486; this.match(MySqlParser.KW_RESOURCE); - this.state = 5423; + this.state = 5487; this.match(MySqlParser.KW_GROUP); - this.state = 5424; + this.state = 5488; this.groupNameCreate(); - this.state = 5425; + this.state = 5489; this.match(MySqlParser.KW_TYPE); - this.state = 5426; + this.state = 5490; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 5427; + this.state = 5491; _la = this.tokenStream.LA(1); if(!(_la === 678 || _la === 835)) { this.errorHandler.recoverInline(this); @@ -29757,56 +30599,56 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5433; + this.state = 5497; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 190) { { - this.state = 5428; + this.state = 5492; this.match(MySqlParser.KW_VCPU); - this.state = 5430; + this.state = 5494; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 5429; + this.state = 5493; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 5432; + this.state = 5496; this.resourceGroupVcpuSpec(); } } - this.state = 5440; + this.state = 5504; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 837) { { - this.state = 5435; + this.state = 5499; this.match(MySqlParser.KW_THREAD_PRIORITY); - this.state = 5437; + this.state = 5501; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 5436; + this.state = 5500; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 5439; + this.state = 5503; this.decimalLiteral(); } } - this.state = 5443; + this.state = 5507; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 368 || _la === 375) { { - this.state = 5442; + this.state = 5506; _la = this.tokenStream.LA(1); if(!(_la === 368 || _la === 375)) { this.errorHandler.recoverInline(this); @@ -29836,25 +30678,25 @@ export class MySqlParser extends SQLParserBase { } public dropResourceGroup(): DropResourceGroupContext { let localContext = new DropResourceGroupContext(this.context, this.state); - this.enterRule(localContext, 470, MySqlParser.RULE_dropResourceGroup); + this.enterRule(localContext, 476, MySqlParser.RULE_dropResourceGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5445; + this.state = 5509; this.match(MySqlParser.KW_DROP); - this.state = 5446; + this.state = 5510; this.match(MySqlParser.KW_RESOURCE); - this.state = 5447; + this.state = 5511; this.match(MySqlParser.KW_GROUP); - this.state = 5448; + this.state = 5512; this.groupName(); - this.state = 5450; + this.state = 5514; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 66) { { - this.state = 5449; + this.state = 5513; this.match(MySqlParser.KW_FORCE); } } @@ -29877,41 +30719,41 @@ export class MySqlParser extends SQLParserBase { } public setResourceGroup(): SetResourceGroupContext { let localContext = new SetResourceGroupContext(this.context, this.state); - this.enterRule(localContext, 472, MySqlParser.RULE_setResourceGroup); + this.enterRule(localContext, 478, MySqlParser.RULE_setResourceGroup); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5452; + this.state = 5516; this.match(MySqlParser.KW_SET); - this.state = 5453; + this.state = 5517; this.match(MySqlParser.KW_RESOURCE); - this.state = 5454; + this.state = 5518; this.match(MySqlParser.KW_GROUP); - this.state = 5455; + this.state = 5519; this.groupName(); - this.state = 5465; + this.state = 5529; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 5456; + this.state = 5520; this.match(MySqlParser.KW_FOR); - this.state = 5457; + this.state = 5521; this.decimalLiteral(); - this.state = 5462; + this.state = 5526; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5458; + this.state = 5522; this.match(MySqlParser.COMMA); - this.state = 5459; + this.state = 5523; this.decimalLiteral(); } } - this.state = 5464; + this.state = 5528; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -29936,48 +30778,48 @@ export class MySqlParser extends SQLParserBase { } public resourceGroupVcpuSpec(): ResourceGroupVcpuSpecContext { let localContext = new ResourceGroupVcpuSpecContext(this.context, this.state); - this.enterRule(localContext, 474, MySqlParser.RULE_resourceGroupVcpuSpec); + this.enterRule(localContext, 480, MySqlParser.RULE_resourceGroupVcpuSpec); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5472; + this.state = 5536; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 792, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 803, this.context) ) { case 1: { - this.state = 5467; + this.state = 5531; this.decimalLiteral(); } break; case 2: { - this.state = 5468; + this.state = 5532; this.decimalLiteral(); - this.state = 5469; + this.state = 5533; this.match(MySqlParser.MINUS); - this.state = 5470; + this.state = 5534; this.decimalLiteral(); } break; } - this.state = 5478; + this.state = 5542; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 793, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 804, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 5474; + this.state = 5538; this.match(MySqlParser.COMMA); - this.state = 5475; + this.state = 5539; this.resourceGroupVcpuSpec(); } } } - this.state = 5480; + this.state = 5544; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 793, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 804, this.context); } } } @@ -29997,30 +30839,30 @@ export class MySqlParser extends SQLParserBase { } public renameUser(): RenameUserContext { let localContext = new RenameUserContext(this.context, this.state); - this.enterRule(localContext, 476, MySqlParser.RULE_renameUser); + this.enterRule(localContext, 482, MySqlParser.RULE_renameUser); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5481; + this.state = 5545; this.match(MySqlParser.KW_RENAME); - this.state = 5482; + this.state = 5546; this.match(MySqlParser.KW_USER); - this.state = 5483; + this.state = 5547; this.renameUserClause(); - this.state = 5488; + this.state = 5552; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5484; + this.state = 5548; this.match(MySqlParser.COMMA); - this.state = 5485; + this.state = 5549; this.renameUserClause(); } } - this.state = 5490; + this.state = 5554; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -30042,70 +30884,70 @@ export class MySqlParser extends SQLParserBase { } public revokeStatement(): RevokeStatementContext { let localContext = new RevokeStatementContext(this.context, this.state); - this.enterRule(localContext, 478, MySqlParser.RULE_revokeStatement); + this.enterRule(localContext, 484, MySqlParser.RULE_revokeStatement); let _la: number; try { - this.state = 5543; + this.state = 5607; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 805, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 816, this.context) ) { case 1: localContext = new DetailRevokeContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5491; + this.state = 5555; this.match(MySqlParser.KW_REVOKE); - this.state = 5493; + this.state = 5557; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 5492; + this.state = 5556; this.ifExists(); } } - this.state = 5495; + this.state = 5559; this.privelegeClause(); - this.state = 5500; + this.state = 5564; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 5496; + this.state = 5560; this.match(MySqlParser.COMMA); - this.state = 5497; + this.state = 5561; this.privelegeClause(); } } - this.state = 5502; + this.state = 5566; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5503; + this.state = 5567; this.match(MySqlParser.KW_ON); - this.state = 5505; + this.state = 5569; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 797, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 808, this.context) ) { case 1: { - this.state = 5504; + this.state = 5568; this.privilegeObjectType(); } break; } - this.state = 5507; + this.state = 5571; this.privilegeLevel(); - this.state = 5508; + this.state = 5572; this.match(MySqlParser.KW_FROM); - this.state = 5509; + this.state = 5573; this.userOrRoleNames(); - this.state = 5511; + this.state = 5575; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 5510; + this.state = 5574; this.ignoreUnknownUser(); } } @@ -30116,46 +30958,46 @@ export class MySqlParser extends SQLParserBase { localContext = new ShortRevokeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5513; + this.state = 5577; this.match(MySqlParser.KW_REVOKE); - this.state = 5515; + this.state = 5579; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 78) { { - this.state = 5514; + this.state = 5578; this.ifExists(); } } - this.state = 5517; + this.state = 5581; this.match(MySqlParser.KW_ALL); - this.state = 5519; + this.state = 5583; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 734) { { - this.state = 5518; + this.state = 5582; this.match(MySqlParser.KW_PRIVILEGES); } } - this.state = 5521; + this.state = 5585; this.match(MySqlParser.COMMA); - this.state = 5522; + this.state = 5586; this.match(MySqlParser.KW_GRANT); - this.state = 5523; + this.state = 5587; this.match(MySqlParser.KW_OPTION); - this.state = 5524; + this.state = 5588; this.match(MySqlParser.KW_FROM); - this.state = 5525; + this.state = 5589; this.userOrRoleNames(); - this.state = 5527; + this.state = 5591; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 5526; + this.state = 5590; this.ignoreUnknownUser(); } } @@ -30166,42 +31008,42 @@ export class MySqlParser extends SQLParserBase { localContext = new ProxyAndRoleRevokeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 5529; + this.state = 5593; this.match(MySqlParser.KW_REVOKE); - this.state = 5531; + this.state = 5595; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 802, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 813, this.context) ) { case 1: { - this.state = 5530; + this.state = 5594; this.ifExists(); } break; } - this.state = 5535; + this.state = 5599; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 803, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 814, this.context) ) { case 1: { - this.state = 5533; + this.state = 5597; this.match(MySqlParser.KW_PROXY); - this.state = 5534; + this.state = 5598; this.match(MySqlParser.KW_ON); } break; } - this.state = 5537; + this.state = 5601; this.userOrRoleNames(); - this.state = 5538; + this.state = 5602; this.match(MySqlParser.KW_FROM); - this.state = 5539; + this.state = 5603; this.userOrRoleNames(); - this.state = 5541; + this.state = 5605; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 5540; + this.state = 5604; this.ignoreUnknownUser(); } } @@ -30226,15 +31068,15 @@ export class MySqlParser extends SQLParserBase { } public ignoreUnknownUser(): IgnoreUnknownUserContext { let localContext = new IgnoreUnknownUserContext(this.context, this.state); - this.enterRule(localContext, 480, MySqlParser.RULE_ignoreUnknownUser); + this.enterRule(localContext, 486, MySqlParser.RULE_ignoreUnknownUser); try { this.enterOuterAlt(localContext, 1); { - this.state = 5545; + this.state = 5609; this.match(MySqlParser.KW_IGNORE); - this.state = 5546; + this.state = 5610; this.match(MySqlParser.KW_UNKNOWN); - this.state = 5547; + this.state = 5611; this.match(MySqlParser.KW_USER); } } @@ -30254,12 +31096,12 @@ export class MySqlParser extends SQLParserBase { } public privilegeObjectType(): PrivilegeObjectTypeContext { let localContext = new PrivilegeObjectTypeContext(this.context, this.state); - this.enterRule(localContext, 482, MySqlParser.RULE_privilegeObjectType); + this.enterRule(localContext, 488, MySqlParser.RULE_privilegeObjectType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5549; + this.state = 5613; _la = this.tokenStream.LA(1); if(!(_la === 132 || _la === 173 || _la === 409)) { this.errorHandler.recoverInline(this); @@ -30286,47 +31128,47 @@ export class MySqlParser extends SQLParserBase { } public setPasswordStatement(): SetPasswordStatementContext { let localContext = new SetPasswordStatementContext(this.context, this.state); - this.enterRule(localContext, 484, MySqlParser.RULE_setPasswordStatement); + this.enterRule(localContext, 490, MySqlParser.RULE_setPasswordStatement); let _la: number; try { - this.state = 5583; + this.state = 5647; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 812, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 823, this.context) ) { case 1: localContext = new V57Context(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5551; + this.state = 5615; this.match(MySqlParser.KW_SET); - this.state = 5552; + this.state = 5616; this.match(MySqlParser.KW_PASSWORD); - this.state = 5555; + this.state = 5619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 5553; + this.state = 5617; this.match(MySqlParser.KW_FOR); - this.state = 5554; + this.state = 5618; this.userName(); } } - this.state = 5557; + this.state = 5621; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 5560; + this.state = 5624; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_OLD_PASSWORD: case MySqlParser.KW_PASSWORD: { - this.state = 5558; + this.state = 5622; this.passwordFunctionClause(); } break; case MySqlParser.STRING_LITERAL: { - this.state = 5559; + this.state = 5623; this.match(MySqlParser.STRING_LITERAL); } break; @@ -30339,66 +31181,66 @@ export class MySqlParser extends SQLParserBase { localContext = new V80Context(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5562; + this.state = 5626; this.match(MySqlParser.KW_SET); - this.state = 5563; + this.state = 5627; this.match(MySqlParser.KW_PASSWORD); - this.state = 5566; + this.state = 5630; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 5564; + this.state = 5628; this.match(MySqlParser.KW_FOR); - this.state = 5565; + this.state = 5629; this.userName(); } } - this.state = 5572; + this.state = 5636; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_TO: { - this.state = 5568; + this.state = 5632; this.match(MySqlParser.KW_TO); - this.state = 5569; + this.state = 5633; this.match(MySqlParser.KW_RANDOM); } break; case MySqlParser.EQUAL_SYMBOL: { - this.state = 5570; + this.state = 5634; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 5571; + this.state = 5635; this.match(MySqlParser.STRING_LITERAL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5576; + this.state = 5640; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 810, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 821, this.context) ) { case 1: { - this.state = 5574; + this.state = 5638; this.match(MySqlParser.KW_REPLACE); - this.state = 5575; + this.state = 5639; this.match(MySqlParser.STRING_LITERAL); } break; } - this.state = 5581; + this.state = 5645; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 5578; + this.state = 5642; this.match(MySqlParser.KW_RETAIN); - this.state = 5579; + this.state = 5643; this.match(MySqlParser.KW_CURRENT); - this.state = 5580; + this.state = 5644; this.match(MySqlParser.KW_PASSWORD); } } @@ -30423,13 +31265,13 @@ export class MySqlParser extends SQLParserBase { } public userSpecification(): UserSpecificationContext { let localContext = new UserSpecificationContext(this.context, this.state); - this.enterRule(localContext, 486, MySqlParser.RULE_userSpecification); + this.enterRule(localContext, 492, MySqlParser.RULE_userSpecification); try { this.enterOuterAlt(localContext, 1); { - this.state = 5585; + this.state = 5649; this.userName(); - this.state = 5586; + this.state = 5650; this.userPasswordOption(); } } @@ -30449,66 +31291,66 @@ export class MySqlParser extends SQLParserBase { } public alterUserAuthOption(): AlterUserAuthOptionContext { let localContext = new AlterUserAuthOptionContext(this.context, this.state); - this.enterRule(localContext, 488, MySqlParser.RULE_alterUserAuthOption); + this.enterRule(localContext, 494, MySqlParser.RULE_alterUserAuthOption); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5588; + this.state = 5652; this.userName(); - this.state = 5614; + this.state = 5678; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 815, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 826, this.context) ) { case 1: { - this.state = 5589; + this.state = 5653; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5590; + this.state = 5654; this.match(MySqlParser.KW_BY); - this.state = 5591; + this.state = 5655; this.match(MySqlParser.STRING_LITERAL); - this.state = 5592; + this.state = 5656; this.authOptionClause(); } break; case 2: { - this.state = 5593; + this.state = 5657; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5594; + this.state = 5658; this.match(MySqlParser.KW_BY); - this.state = 5595; + this.state = 5659; this.match(MySqlParser.KW_RANDOM); - this.state = 5596; + this.state = 5660; this.match(MySqlParser.KW_PASSWORD); - this.state = 5597; + this.state = 5661; this.authOptionClause(); } break; case 3: { - this.state = 5598; + this.state = 5662; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5599; + this.state = 5663; this.match(MySqlParser.KW_WITH); - this.state = 5600; + this.state = 5664; this.authenticationRule(); } break; case 4: { - this.state = 5601; + this.state = 5665; this.match(MySqlParser.KW_DISCARD); - this.state = 5602; + this.state = 5666; this.match(MySqlParser.KW_OLD); - this.state = 5603; + this.state = 5667; this.match(MySqlParser.KW_PASSWORD); } break; case 5: { - this.state = 5609; + this.state = 5673; this.errorHandler.sync(this); alternative = 1; do { @@ -30516,7 +31358,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 5604; + this.state = 5668; _la = this.tokenStream.LA(1); if(!(_la === 6 || _la === 51 || _la === 492)) { this.errorHandler.recoverInline(this); @@ -30525,14 +31367,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5605; + this.state = 5669; this.factor(); - this.state = 5607; + this.state = 5671; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 423) { { - this.state = 5606; + this.state = 5670; this.factorAuthOption(); } } @@ -30543,15 +31385,15 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5611; + this.state = 5675; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 814, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 825, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; case 6: { - this.state = 5613; + this.state = 5677; this.registrationOption(); } break; @@ -30574,34 +31416,34 @@ export class MySqlParser extends SQLParserBase { } public createUserAuthOption(): CreateUserAuthOptionContext { let localContext = new CreateUserAuthOptionContext(this.context, this.state); - this.enterRule(localContext, 490, MySqlParser.RULE_createUserAuthOption); + this.enterRule(localContext, 496, MySqlParser.RULE_createUserAuthOption); let _la: number; try { - this.state = 5652; + this.state = 5716; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 822, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 833, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5616; + this.state = 5680; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5617; + this.state = 5681; this.match(MySqlParser.KW_BY); - this.state = 5623; + this.state = 5687; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: { - this.state = 5618; + this.state = 5682; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_RANDOM: { { - this.state = 5619; + this.state = 5683; this.match(MySqlParser.KW_RANDOM); - this.state = 5620; + this.state = 5684; this.match(MySqlParser.KW_PASSWORD); } } @@ -30609,9 +31451,9 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_PASSWORD: { { - this.state = 5621; + this.state = 5685; this.match(MySqlParser.KW_PASSWORD); - this.state = 5622; + this.state = 5686; this.match(MySqlParser.STRING_LITERAL); } } @@ -30619,14 +31461,14 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5627; + this.state = 5691; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 5625; + this.state = 5689; this.match(MySqlParser.KW_AND); - this.state = 5626; + this.state = 5690; this.createUserAuthOption(); } } @@ -30636,35 +31478,35 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5629; + this.state = 5693; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5630; + this.state = 5694; this.match(MySqlParser.KW_WITH); - this.state = 5631; + this.state = 5695; localContext._authPlugin = this.uid(); - this.state = 5640; + this.state = 5704; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BY: { { - this.state = 5632; + this.state = 5696; this.match(MySqlParser.KW_BY); - this.state = 5636; + this.state = 5700; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: { - this.state = 5633; + this.state = 5697; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_RANDOM: { { - this.state = 5634; + this.state = 5698; this.match(MySqlParser.KW_RANDOM); - this.state = 5635; + this.state = 5699; this.match(MySqlParser.KW_PASSWORD); } } @@ -30677,9 +31519,9 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_AS: { - this.state = 5638; + this.state = 5702; this.match(MySqlParser.KW_AS); - this.state = 5639; + this.state = 5703; this.match(MySqlParser.STRING_LITERAL); } break; @@ -30760,14 +31602,14 @@ export class MySqlParser extends SQLParserBase { default: break; } - this.state = 5644; + this.state = 5708; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 11) { { - this.state = 5642; + this.state = 5706; this.match(MySqlParser.KW_AND); - this.state = 5643; + this.state = 5707; this.createUserAuthOption(); } } @@ -30777,18 +31619,18 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5646; + this.state = 5710; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5647; + this.state = 5711; this.match(MySqlParser.KW_WITH); - this.state = 5648; + this.state = 5712; localContext._authPlugin = this.uid(); - this.state = 5650; + this.state = 5714; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 427) { { - this.state = 5649; + this.state = 5713; this.createUserInitialAuthOption(); } } @@ -30813,38 +31655,38 @@ export class MySqlParser extends SQLParserBase { } public createUserInitialAuthOption(): CreateUserInitialAuthOptionContext { let localContext = new CreateUserInitialAuthOptionContext(this.context, this.state); - this.enterRule(localContext, 492, MySqlParser.RULE_createUserInitialAuthOption); + this.enterRule(localContext, 498, MySqlParser.RULE_createUserInitialAuthOption); try { - this.state = 5671; + this.state = 5735; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 824, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 835, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5654; + this.state = 5718; this.match(MySqlParser.KW_INITIAL); - this.state = 5655; + this.state = 5719; this.match(MySqlParser.KW_AUTHENTICATION); - this.state = 5656; + this.state = 5720; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5657; + this.state = 5721; this.match(MySqlParser.KW_BY); - this.state = 5661; + this.state = 5725; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_RANDOM: { { - this.state = 5658; + this.state = 5722; this.match(MySqlParser.KW_RANDOM); - this.state = 5659; + this.state = 5723; this.match(MySqlParser.KW_PASSWORD); } } break; case MySqlParser.STRING_LITERAL: { - this.state = 5660; + this.state = 5724; this.match(MySqlParser.STRING_LITERAL); } break; @@ -30856,19 +31698,19 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5663; + this.state = 5727; this.match(MySqlParser.KW_INITIAL); - this.state = 5664; + this.state = 5728; this.match(MySqlParser.KW_AUTHENTICATION); - this.state = 5665; + this.state = 5729; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5666; + this.state = 5730; this.match(MySqlParser.KW_WITH); - this.state = 5667; + this.state = 5731; localContext._authPlugin = this.uid(); - this.state = 5668; + this.state = 5732; this.match(MySqlParser.KW_AS); - this.state = 5669; + this.state = 5733; this.match(MySqlParser.STRING_LITERAL); } break; @@ -30890,24 +31732,24 @@ export class MySqlParser extends SQLParserBase { } public userAuthOption(): UserAuthOptionContext { let localContext = new UserAuthOptionContext(this.context, this.state); - this.enterRule(localContext, 494, MySqlParser.RULE_userAuthOption); + this.enterRule(localContext, 500, MySqlParser.RULE_userAuthOption); try { - this.state = 5698; + this.state = 5762; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 825, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 836, this.context) ) { case 1: localContext = new HashAuthOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5673; + this.state = 5737; this.userName(); - this.state = 5674; + this.state = 5738; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5675; + this.state = 5739; this.match(MySqlParser.KW_BY); - this.state = 5676; + this.state = 5740; this.match(MySqlParser.KW_PASSWORD); - this.state = 5677; + this.state = 5741; (localContext as HashAuthOptionContext)._hashed = this.match(MySqlParser.STRING_LITERAL); } break; @@ -30915,17 +31757,17 @@ export class MySqlParser extends SQLParserBase { localContext = new RandomAuthOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5679; + this.state = 5743; this.userName(); - this.state = 5680; + this.state = 5744; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5681; + this.state = 5745; this.match(MySqlParser.KW_BY); - this.state = 5682; + this.state = 5746; this.match(MySqlParser.KW_RANDOM); - this.state = 5683; + this.state = 5747; this.match(MySqlParser.KW_PASSWORD); - this.state = 5684; + this.state = 5748; this.authOptionClause(); } break; @@ -30933,15 +31775,15 @@ export class MySqlParser extends SQLParserBase { localContext = new StringAuthOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 5686; + this.state = 5750; this.userName(); - this.state = 5687; + this.state = 5751; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5688; + this.state = 5752; this.match(MySqlParser.KW_BY); - this.state = 5689; + this.state = 5753; this.match(MySqlParser.STRING_LITERAL); - this.state = 5690; + this.state = 5754; this.authOptionClause(); } break; @@ -30949,13 +31791,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ModuleAuthOptionContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 5692; + this.state = 5756; this.userName(); - this.state = 5693; + this.state = 5757; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5694; + this.state = 5758; this.match(MySqlParser.KW_WITH); - this.state = 5695; + this.state = 5759; this.authenticationRule(); } break; @@ -30963,7 +31805,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SimpleAuthOptionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 5697; + this.state = 5761; this.userName(); } break; @@ -30985,33 +31827,33 @@ export class MySqlParser extends SQLParserBase { } public authOptionClause(): AuthOptionClauseContext { let localContext = new AuthOptionClauseContext(this.context, this.state); - this.enterRule(localContext, 496, MySqlParser.RULE_authOptionClause); + this.enterRule(localContext, 502, MySqlParser.RULE_authOptionClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5702; + this.state = 5766; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 826, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 837, this.context) ) { case 1: { - this.state = 5700; + this.state = 5764; this.match(MySqlParser.KW_REPLACE); - this.state = 5701; + this.state = 5765; this.match(MySqlParser.STRING_LITERAL); } break; } - this.state = 5707; + this.state = 5771; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 5704; + this.state = 5768; this.match(MySqlParser.KW_RETAIN); - this.state = 5705; + this.state = 5769; this.match(MySqlParser.KW_CURRENT); - this.state = 5706; + this.state = 5770; this.match(MySqlParser.KW_PASSWORD); } } @@ -31034,24 +31876,24 @@ export class MySqlParser extends SQLParserBase { } public authenticationRule(): AuthenticationRuleContext { let localContext = new AuthenticationRuleContext(this.context, this.state); - this.enterRule(localContext, 498, MySqlParser.RULE_authenticationRule); + this.enterRule(localContext, 504, MySqlParser.RULE_authenticationRule); let _la: number; try { - this.state = 5723; + this.state = 5787; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 830, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 841, this.context) ) { case 1: localContext = new ModuleContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5709; + this.state = 5773; (localContext as ModuleContext)._authPlugin = this.uid(); - this.state = 5717; + this.state = 5781; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 829, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 840, this.context) ) { case 1: { - this.state = 5710; + this.state = 5774; _la = this.tokenStream.LA(1); if(!(_la === 13 || _la === 20 || _la === 188)) { this.errorHandler.recoverInline(this); @@ -31060,27 +31902,27 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5714; + this.state = 5778; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: { - this.state = 5711; + this.state = 5775; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_RANDOM: { - this.state = 5712; + this.state = 5776; this.match(MySqlParser.KW_RANDOM); - this.state = 5713; + this.state = 5777; this.match(MySqlParser.KW_PASSWORD); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5716; + this.state = 5780; this.authOptionClause(); } break; @@ -31091,11 +31933,11 @@ export class MySqlParser extends SQLParserBase { localContext = new PasswordModuleOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5719; + this.state = 5783; (localContext as PasswordModuleOptionContext)._authPlugin = this.uid(); - this.state = 5720; + this.state = 5784; this.match(MySqlParser.KW_USING); - this.state = 5721; + this.state = 5785; this.passwordFunctionClause(); } break; @@ -31117,49 +31959,49 @@ export class MySqlParser extends SQLParserBase { } public tlsOption(): TlsOptionContext { let localContext = new TlsOptionContext(this.context, this.state); - this.enterRule(localContext, 500, MySqlParser.RULE_tlsOption); + this.enterRule(localContext, 506, MySqlParser.RULE_tlsOption); try { - this.state = 5733; + this.state = 5797; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SSL: this.enterOuterAlt(localContext, 1); { - this.state = 5725; + this.state = 5789; this.match(MySqlParser.KW_SSL); } break; case MySqlParser.KW_X509: this.enterOuterAlt(localContext, 2); { - this.state = 5726; + this.state = 5790; this.match(MySqlParser.KW_X509); } break; case MySqlParser.KW_CIPHER: this.enterOuterAlt(localContext, 3); { - this.state = 5727; + this.state = 5791; this.match(MySqlParser.KW_CIPHER); - this.state = 5728; + this.state = 5792; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_ISSUER: this.enterOuterAlt(localContext, 4); { - this.state = 5729; + this.state = 5793; this.match(MySqlParser.KW_ISSUER); - this.state = 5730; + this.state = 5794; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_SUBJECT: this.enterOuterAlt(localContext, 5); { - this.state = 5731; + this.state = 5795; this.match(MySqlParser.KW_SUBJECT); - this.state = 5732; + this.state = 5796; this.match(MySqlParser.STRING_LITERAL); } break; @@ -31183,44 +32025,44 @@ export class MySqlParser extends SQLParserBase { } public userResourceOption(): UserResourceOptionContext { let localContext = new UserResourceOptionContext(this.context, this.state); - this.enterRule(localContext, 502, MySqlParser.RULE_userResourceOption); + this.enterRule(localContext, 508, MySqlParser.RULE_userResourceOption); try { - this.state = 5743; + this.state = 5807; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_MAX_QUERIES_PER_HOUR: this.enterOuterAlt(localContext, 1); { - this.state = 5735; + this.state = 5799; this.match(MySqlParser.KW_MAX_QUERIES_PER_HOUR); - this.state = 5736; + this.state = 5800; this.decimalLiteral(); } break; case MySqlParser.KW_MAX_UPDATES_PER_HOUR: this.enterOuterAlt(localContext, 2); { - this.state = 5737; + this.state = 5801; this.match(MySqlParser.KW_MAX_UPDATES_PER_HOUR); - this.state = 5738; + this.state = 5802; this.decimalLiteral(); } break; case MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR: this.enterOuterAlt(localContext, 3); { - this.state = 5739; + this.state = 5803; this.match(MySqlParser.KW_MAX_CONNECTIONS_PER_HOUR); - this.state = 5740; + this.state = 5804; this.decimalLiteral(); } break; case MySqlParser.KW_MAX_USER_CONNECTIONS: this.enterOuterAlt(localContext, 4); { - this.state = 5741; + this.state = 5805; this.match(MySqlParser.KW_MAX_USER_CONNECTIONS); - this.state = 5742; + this.state = 5806; this.decimalLiteral(); } break; @@ -31244,41 +32086,41 @@ export class MySqlParser extends SQLParserBase { } public userPasswordOption(): UserPasswordOptionContext { let localContext = new UserPasswordOptionContext(this.context, this.state); - this.enterRule(localContext, 504, MySqlParser.RULE_userPasswordOption); + this.enterRule(localContext, 510, MySqlParser.RULE_userPasswordOption); let _la: number; try { - this.state = 5783; + this.state = 5847; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 838, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 849, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5745; + this.state = 5809; this.match(MySqlParser.KW_PASSWORD); - this.state = 5746; + this.state = 5810; this.match(MySqlParser.KW_EXPIRE); - this.state = 5753; + this.state = 5817; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DEFAULT: { - this.state = 5747; + this.state = 5811; localContext._expireType = this.match(MySqlParser.KW_DEFAULT); } break; case MySqlParser.KW_NEVER: { - this.state = 5748; + this.state = 5812; localContext._expireType = this.match(MySqlParser.KW_NEVER); } break; case MySqlParser.KW_INTERVAL: { - this.state = 5749; + this.state = 5813; localContext._expireType = this.match(MySqlParser.KW_INTERVAL); - this.state = 5750; + this.state = 5814; this.decimalLiteral(); - this.state = 5751; + this.state = 5815; this.match(MySqlParser.KW_DAY); } break; @@ -31361,16 +32203,16 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5755; + this.state = 5819; this.match(MySqlParser.KW_PASSWORD); - this.state = 5756; + this.state = 5820; this.match(MySqlParser.KW_HISTORY); - this.state = 5759; + this.state = 5823; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DEFAULT: { - this.state = 5757; + this.state = 5821; this.match(MySqlParser.KW_DEFAULT); } break; @@ -31381,7 +32223,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 5758; + this.state = 5822; this.decimalLiteral(); } break; @@ -31393,18 +32235,18 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5761; + this.state = 5825; this.match(MySqlParser.KW_PASSWORD); - this.state = 5762; + this.state = 5826; this.match(MySqlParser.KW_REUSE); - this.state = 5763; + this.state = 5827; this.match(MySqlParser.KW_INTERVAL); - this.state = 5768; + this.state = 5832; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DEFAULT: { - this.state = 5764; + this.state = 5828; this.match(MySqlParser.KW_DEFAULT); } break; @@ -31415,9 +32257,9 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 5765; + this.state = 5829; this.decimalLiteral(); - this.state = 5766; + this.state = 5830; this.match(MySqlParser.KW_DAY); } break; @@ -31429,18 +32271,18 @@ export class MySqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5770; + this.state = 5834; this.match(MySqlParser.KW_PASSWORD); - this.state = 5771; + this.state = 5835; this.match(MySqlParser.KW_REQUIRE); - this.state = 5772; + this.state = 5836; this.match(MySqlParser.KW_CURRENT); - this.state = 5774; + this.state = 5838; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42 || _la === 122) { { - this.state = 5773; + this.state = 5837; _la = this.tokenStream.LA(1); if(!(_la === 42 || _la === 122)) { this.errorHandler.recoverInline(this); @@ -31457,18 +32299,18 @@ export class MySqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5776; + this.state = 5840; this.match(MySqlParser.KW_FAILED_LOGIN_ATTEMPTS); - this.state = 5777; + this.state = 5841; this.decimalLiteral(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5778; + this.state = 5842; this.match(MySqlParser.KW_PASSWORD_LOCK_TIME); - this.state = 5781; + this.state = 5845; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -31478,13 +32320,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 5779; + this.state = 5843; this.decimalLiteral(); } break; case MySqlParser.KW_UNBOUNDED: { - this.state = 5780; + this.state = 5844; this.match(MySqlParser.KW_UNBOUNDED); } break; @@ -31511,14 +32353,14 @@ export class MySqlParser extends SQLParserBase { } public userLockOption(): UserLockOptionContext { let localContext = new UserLockOptionContext(this.context, this.state); - this.enterRule(localContext, 506, MySqlParser.RULE_userLockOption); + this.enterRule(localContext, 512, MySqlParser.RULE_userLockOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5785; + this.state = 5849; this.match(MySqlParser.KW_ACCOUNT); - this.state = 5786; + this.state = 5850; localContext._lockType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 104 || _la === 183)) { @@ -31546,48 +32388,48 @@ export class MySqlParser extends SQLParserBase { } public factorAuthOption(): FactorAuthOptionContext { let localContext = new FactorAuthOptionContext(this.context, this.state); - this.enterRule(localContext, 508, MySqlParser.RULE_factorAuthOption); + this.enterRule(localContext, 514, MySqlParser.RULE_factorAuthOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5788; + this.state = 5852; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 5791; + this.state = 5855; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 194) { { - this.state = 5789; + this.state = 5853; this.match(MySqlParser.KW_WITH); - this.state = 5790; + this.state = 5854; localContext._authPlugin = this.uid(); } } - this.state = 5801; + this.state = 5865; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BY: { { - this.state = 5793; + this.state = 5857; this.match(MySqlParser.KW_BY); - this.state = 5797; + this.state = 5861; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: { - this.state = 5794; + this.state = 5858; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_RANDOM: { { - this.state = 5795; + this.state = 5859; this.match(MySqlParser.KW_RANDOM); - this.state = 5796; + this.state = 5860; this.match(MySqlParser.KW_PASSWORD); } } @@ -31600,9 +32442,9 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_AS: { - this.state = 5799; + this.state = 5863; this.match(MySqlParser.KW_AS); - this.state = 5800; + this.state = 5864; this.match(MySqlParser.STRING_LITERAL); } break; @@ -31627,47 +32469,47 @@ export class MySqlParser extends SQLParserBase { } public registrationOption(): RegistrationOptionContext { let localContext = new RegistrationOptionContext(this.context, this.state); - this.enterRule(localContext, 510, MySqlParser.RULE_registrationOption); + this.enterRule(localContext, 516, MySqlParser.RULE_registrationOption); try { - this.state = 5818; + this.state = 5882; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 842, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 853, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5803; + this.state = 5867; this.factor(); - this.state = 5804; + this.state = 5868; this.match(MySqlParser.KW_INITIATE); - this.state = 5805; + this.state = 5869; this.match(MySqlParser.KW_REGISTRATION); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5807; + this.state = 5871; this.factor(); - this.state = 5808; + this.state = 5872; this.match(MySqlParser.KW_FINISH); - this.state = 5809; + this.state = 5873; this.match(MySqlParser.KW_REGISTRATION); - this.state = 5810; + this.state = 5874; this.match(MySqlParser.KW_SET); - this.state = 5811; + this.state = 5875; this.match(MySqlParser.KW_CHALLENGE_RESPONSE); - this.state = 5812; + this.state = 5876; this.match(MySqlParser.KW_AS); - this.state = 5813; + this.state = 5877; this.match(MySqlParser.STRING_LITERAL); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5815; + this.state = 5879; this.factor(); - this.state = 5816; + this.state = 5880; this.match(MySqlParser.KW_UNREGISTER); } break; @@ -31689,12 +32531,12 @@ export class MySqlParser extends SQLParserBase { } public factor(): FactorContext { let localContext = new FactorContext(this.context, this.state); - this.enterRule(localContext, 512, MySqlParser.RULE_factor); + this.enterRule(localContext, 518, MySqlParser.RULE_factor); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5820; + this.state = 5884; _la = this.tokenStream.LA(1); if(!(_la === 873 || _la === 874)) { this.errorHandler.recoverInline(this); @@ -31703,7 +32545,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5821; + this.state = 5885; this.match(MySqlParser.KW_FACTOR); } } @@ -31723,23 +32565,23 @@ export class MySqlParser extends SQLParserBase { } public privelegeClause(): PrivelegeClauseContext { let localContext = new PrivelegeClauseContext(this.context, this.state); - this.enterRule(localContext, 514, MySqlParser.RULE_privelegeClause); + this.enterRule(localContext, 520, MySqlParser.RULE_privelegeClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5823; + this.state = 5887; this.privilege(); - this.state = 5828; + this.state = 5892; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 5824; + this.state = 5888; this.match(MySqlParser.LR_BRACKET); - this.state = 5825; + this.state = 5889; this.columnNames(); - this.state = 5826; + this.state = 5890; this.match(MySqlParser.RR_BRACKET); } } @@ -31762,23 +32604,23 @@ export class MySqlParser extends SQLParserBase { } public privilege(): PrivilegeContext { let localContext = new PrivilegeContext(this.context, this.state); - this.enterRule(localContext, 516, MySqlParser.RULE_privilege); + this.enterRule(localContext, 522, MySqlParser.RULE_privilege); let _la: number; try { - this.state = 5923; + this.state = 5987; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 848, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 859, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5830; + this.state = 5894; this.match(MySqlParser.KW_ALL); - this.state = 5832; + this.state = 5896; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 734) { { - this.state = 5831; + this.state = 5895; this.match(MySqlParser.KW_PRIVILEGES); } } @@ -31788,14 +32630,14 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5834; + this.state = 5898; this.match(MySqlParser.KW_ALTER); - this.state = 5836; + this.state = 5900; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 743) { { - this.state = 5835; + this.state = 5899; this.match(MySqlParser.KW_ROUTINE); } } @@ -31805,46 +32647,46 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5838; + this.state = 5902; this.match(MySqlParser.KW_CREATE); - this.state = 5846; + this.state = 5910; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_TEMPORARY: { - this.state = 5839; + this.state = 5903; this.match(MySqlParser.KW_TEMPORARY); - this.state = 5840; + this.state = 5904; this.match(MySqlParser.KW_TABLES); } break; case MySqlParser.KW_ROUTINE: { - this.state = 5841; + this.state = 5905; this.match(MySqlParser.KW_ROUTINE); } break; case MySqlParser.KW_VIEW: { - this.state = 5842; + this.state = 5906; this.match(MySqlParser.KW_VIEW); } break; case MySqlParser.KW_USER: { - this.state = 5843; + this.state = 5907; this.match(MySqlParser.KW_USER); } break; case MySqlParser.KW_TABLESPACE: { - this.state = 5844; + this.state = 5908; this.match(MySqlParser.KW_TABLESPACE); } break; case MySqlParser.KW_ROLE: { - this.state = 5845; + this.state = 5909; this.match(MySqlParser.KW_ROLE); } break; @@ -31860,21 +32702,21 @@ export class MySqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5848; + this.state = 5912; this.match(MySqlParser.KW_DELETE); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5849; + this.state = 5913; this.match(MySqlParser.KW_DROP); - this.state = 5851; + this.state = 5915; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 582) { { - this.state = 5850; + this.state = 5914; this.match(MySqlParser.KW_ROLE); } } @@ -31884,90 +32726,90 @@ export class MySqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5853; + this.state = 5917; this.match(MySqlParser.KW_EVENT); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 5854; + this.state = 5918; this.match(MySqlParser.KW_EXECUTE); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 5855; + this.state = 5919; this.match(MySqlParser.KW_FILE); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 5856; + this.state = 5920; this.match(MySqlParser.KW_GRANT); - this.state = 5857; + this.state = 5921; this.match(MySqlParser.KW_OPTION); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 5858; + this.state = 5922; this.match(MySqlParser.KW_INDEX); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 5859; + this.state = 5923; this.match(MySqlParser.KW_INSERT); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 5860; + this.state = 5924; this.match(MySqlParser.KW_LOCK); - this.state = 5861; + this.state = 5925; this.match(MySqlParser.KW_TABLES); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 5862; + this.state = 5926; this.match(MySqlParser.KW_PROCESS); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 5863; + this.state = 5927; this.match(MySqlParser.KW_PROXY); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 5864; + this.state = 5928; this.match(MySqlParser.KW_REFERENCES); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 5865; + this.state = 5929; this.match(MySqlParser.KW_RELOAD); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 5866; + this.state = 5930; this.match(MySqlParser.KW_REPLICATION); - this.state = 5867; + this.state = 5931; _la = this.tokenStream.LA(1); if(!(_la === 333 || _la === 598)) { this.errorHandler.recoverInline(this); @@ -31981,16 +32823,16 @@ export class MySqlParser extends SQLParserBase { case 18: this.enterOuterAlt(localContext, 18); { - this.state = 5868; + this.state = 5932; this.match(MySqlParser.KW_SELECT); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 5869; + this.state = 5933; this.match(MySqlParser.KW_SHOW); - this.state = 5870; + this.state = 5934; _la = this.tokenStream.LA(1); if(!(_la === 40 || _la === 684)) { this.errorHandler.recoverInline(this); @@ -32004,339 +32846,339 @@ export class MySqlParser extends SQLParserBase { case 20: this.enterOuterAlt(localContext, 20); { - this.state = 5871; + this.state = 5935; this.match(MySqlParser.KW_SHUTDOWN); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 5872; + this.state = 5936; this.match(MySqlParser.KW_SUPER); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 5873; + this.state = 5937; this.match(MySqlParser.KW_TRIGGER); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 5874; + this.state = 5938; this.match(MySqlParser.KW_UPDATE); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 5875; + this.state = 5939; this.match(MySqlParser.KW_USAGE); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 5876; + this.state = 5940; this.match(MySqlParser.KW_APPLICATION_PASSWORD_ADMIN); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 5877; + this.state = 5941; this.match(MySqlParser.KW_AUDIT_ABORT_EXEMPT); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 5878; + this.state = 5942; this.match(MySqlParser.KW_AUDIT_ADMIN); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 5879; + this.state = 5943; this.match(MySqlParser.KW_AUTHENTICATION_POLICY_ADMIN); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 5880; + this.state = 5944; this.match(MySqlParser.KW_BACKUP_ADMIN); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 5881; + this.state = 5945; this.match(MySqlParser.KW_BINLOG_ADMIN); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 5882; + this.state = 5946; this.match(MySqlParser.KW_BINLOG_ENCRYPTION_ADMIN); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 5883; + this.state = 5947; this.match(MySqlParser.KW_CLONE_ADMIN); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 5884; + this.state = 5948; this.match(MySqlParser.KW_CONNECTION_ADMIN); } break; case 34: this.enterOuterAlt(localContext, 34); { - this.state = 5885; + this.state = 5949; this.match(MySqlParser.KW_ENCRYPTION_KEY_ADMIN); } break; case 35: this.enterOuterAlt(localContext, 35); { - this.state = 5886; + this.state = 5950; this.match(MySqlParser.KW_FIREWALL_ADMIN); } break; case 36: this.enterOuterAlt(localContext, 36); { - this.state = 5887; + this.state = 5951; this.match(MySqlParser.KW_FIREWALL_EXEMPT); } break; case 37: this.enterOuterAlt(localContext, 37); { - this.state = 5888; + this.state = 5952; this.match(MySqlParser.KW_FIREWALL_USER); } break; case 38: this.enterOuterAlt(localContext, 38); { - this.state = 5889; + this.state = 5953; this.match(MySqlParser.KW_FLUSH_OPTIMIZER_COSTS); } break; case 39: this.enterOuterAlt(localContext, 39); { - this.state = 5890; + this.state = 5954; this.match(MySqlParser.KW_FLUSH_STATUS); } break; case 40: this.enterOuterAlt(localContext, 40); { - this.state = 5891; + this.state = 5955; this.match(MySqlParser.KW_FLUSH_TABLES); } break; case 41: this.enterOuterAlt(localContext, 41); { - this.state = 5892; + this.state = 5956; this.match(MySqlParser.KW_FLUSH_USER_RESOURCES); } break; case 42: this.enterOuterAlt(localContext, 42); { - this.state = 5893; + this.state = 5957; this.match(MySqlParser.KW_GROUP_REPLICATION_ADMIN); } break; case 43: this.enterOuterAlt(localContext, 43); { - this.state = 5894; + this.state = 5958; this.match(MySqlParser.KW_INNODB_REDO_LOG_ARCHIVE); } break; case 44: this.enterOuterAlt(localContext, 44); { - this.state = 5895; + this.state = 5959; this.match(MySqlParser.KW_INNODB_REDO_LOG_ENABLE); } break; case 45: this.enterOuterAlt(localContext, 45); { - this.state = 5896; + this.state = 5960; this.match(MySqlParser.KW_NDB_STORED_USER); } break; case 46: this.enterOuterAlt(localContext, 46); { - this.state = 5897; + this.state = 5961; this.match(MySqlParser.KW_PASSWORDLESS_USER_ADMIN); } break; case 47: this.enterOuterAlt(localContext, 47); { - this.state = 5898; + this.state = 5962; this.match(MySqlParser.KW_PERSIST_RO_VARIABLES_ADMIN); } break; case 48: this.enterOuterAlt(localContext, 48); { - this.state = 5899; + this.state = 5963; this.match(MySqlParser.KW_REPLICATION_APPLIER); } break; case 49: this.enterOuterAlt(localContext, 49); { - this.state = 5900; + this.state = 5964; this.match(MySqlParser.KW_REPLICATION_SLAVE_ADMIN); } break; case 50: this.enterOuterAlt(localContext, 50); { - this.state = 5901; + this.state = 5965; this.match(MySqlParser.KW_RESOURCE_GROUP_ADMIN); } break; case 51: this.enterOuterAlt(localContext, 51); { - this.state = 5902; + this.state = 5966; this.match(MySqlParser.KW_RESOURCE_GROUP_USER); } break; case 52: this.enterOuterAlt(localContext, 52); { - this.state = 5903; + this.state = 5967; this.match(MySqlParser.KW_ROLE_ADMIN); } break; case 53: this.enterOuterAlt(localContext, 53); { - this.state = 5904; + this.state = 5968; this.match(MySqlParser.KW_SERVICE_CONNECTION_ADMIN); } break; case 54: this.enterOuterAlt(localContext, 54); { - this.state = 5905; + this.state = 5969; this.match(MySqlParser.KW_SESSION_VARIABLES_ADMIN); } break; case 55: this.enterOuterAlt(localContext, 55); { - this.state = 5906; + this.state = 5970; this.match(MySqlParser.KW_SET_USER_ID); } break; case 56: this.enterOuterAlt(localContext, 56); { - this.state = 5907; + this.state = 5971; this.match(MySqlParser.KW_SKIP_QUERY_REWRITE); } break; case 57: this.enterOuterAlt(localContext, 57); { - this.state = 5908; + this.state = 5972; this.match(MySqlParser.KW_SHOW_ROUTINE); } break; case 58: this.enterOuterAlt(localContext, 58); { - this.state = 5909; + this.state = 5973; this.match(MySqlParser.KW_SYSTEM_USER); } break; case 59: this.enterOuterAlt(localContext, 59); { - this.state = 5910; + this.state = 5974; this.match(MySqlParser.KW_SYSTEM_VARIABLES_ADMIN); } break; case 60: this.enterOuterAlt(localContext, 60); { - this.state = 5911; + this.state = 5975; this.match(MySqlParser.KW_TABLE_ENCRYPTION_ADMIN); } break; case 61: this.enterOuterAlt(localContext, 61); { - this.state = 5912; + this.state = 5976; this.match(MySqlParser.KW_TP_CONNECTION_ADMIN); } break; case 62: this.enterOuterAlt(localContext, 62); { - this.state = 5913; + this.state = 5977; this.match(MySqlParser.KW_VERSION_TOKEN_ADMIN); } break; case 63: this.enterOuterAlt(localContext, 63); { - this.state = 5914; + this.state = 5978; this.match(MySqlParser.KW_XA_RECOVER_ADMIN); } break; case 64: this.enterOuterAlt(localContext, 64); { - this.state = 5915; + this.state = 5979; this.match(MySqlParser.KW_LOAD); - this.state = 5916; + this.state = 5980; this.match(MySqlParser.KW_FROM); - this.state = 5917; + this.state = 5981; this.match(MySqlParser.KW_S3); } break; case 65: this.enterOuterAlt(localContext, 65); { - this.state = 5918; + this.state = 5982; this.match(MySqlParser.KW_SELECT); - this.state = 5919; + this.state = 5983; this.match(MySqlParser.KW_INTO); - this.state = 5920; + this.state = 5984; this.match(MySqlParser.KW_S3); } break; case 66: this.enterOuterAlt(localContext, 66); { - this.state = 5921; + this.state = 5985; this.match(MySqlParser.KW_INVOKE); - this.state = 5922; + this.state = 5986; this.match(MySqlParser.KW_LAMBDA); } break; @@ -32358,16 +33200,16 @@ export class MySqlParser extends SQLParserBase { } public privilegeLevel(): PrivilegeLevelContext { let localContext = new PrivilegeLevelContext(this.context, this.state); - this.enterRule(localContext, 518, MySqlParser.RULE_privilegeLevel); + this.enterRule(localContext, 524, MySqlParser.RULE_privilegeLevel); try { - this.state = 5941; + this.state = 6005; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 849, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 860, this.context) ) { case 1: localContext = new CurrentSchemaPriviLevelContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5925; + this.state = 5989; this.match(MySqlParser.STAR); } break; @@ -32375,11 +33217,11 @@ export class MySqlParser extends SQLParserBase { localContext = new GlobalPrivLevelContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 5926; + this.state = 5990; this.match(MySqlParser.STAR); - this.state = 5927; + this.state = 5991; this.match(MySqlParser.DOT); - this.state = 5928; + this.state = 5992; this.match(MySqlParser.STAR); } break; @@ -32387,11 +33229,11 @@ export class MySqlParser extends SQLParserBase { localContext = new DefiniteSchemaPrivLevelContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 5929; + this.state = 5993; this.uid(); - this.state = 5930; + this.state = 5994; this.match(MySqlParser.DOT); - this.state = 5931; + this.state = 5995; this.match(MySqlParser.STAR); } break; @@ -32399,11 +33241,11 @@ export class MySqlParser extends SQLParserBase { localContext = new DefiniteFullTablePrivLevelContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 5933; + this.state = 5997; this.uid(); - this.state = 5934; + this.state = 5998; this.match(MySqlParser.DOT); - this.state = 5935; + this.state = 5999; this.uid(); } break; @@ -32411,9 +33253,9 @@ export class MySqlParser extends SQLParserBase { localContext = new DefiniteFullTablePrivLevel2Context(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 5937; + this.state = 6001; this.uid(); - this.state = 5938; + this.state = 6002; this.dottedId(); } break; @@ -32421,7 +33263,7 @@ export class MySqlParser extends SQLParserBase { localContext = new DefiniteTablePrivLevelContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 5940; + this.state = 6004; this.uid(); } break; @@ -32443,15 +33285,15 @@ export class MySqlParser extends SQLParserBase { } public renameUserClause(): RenameUserClauseContext { let localContext = new RenameUserClauseContext(this.context, this.state); - this.enterRule(localContext, 520, MySqlParser.RULE_renameUserClause); + this.enterRule(localContext, 526, MySqlParser.RULE_renameUserClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 5943; + this.state = 6007; localContext._fromFirst = this.userName(); - this.state = 5944; + this.state = 6008; this.match(MySqlParser.KW_TO); - this.state = 5945; + this.state = 6009; localContext._toFirst = this.userName(); } } @@ -32471,70 +33313,70 @@ export class MySqlParser extends SQLParserBase { } public analyzeTable(): AnalyzeTableContext { let localContext = new AnalyzeTableContext(this.context, this.state); - this.enterRule(localContext, 522, MySqlParser.RULE_analyzeTable); + this.enterRule(localContext, 528, MySqlParser.RULE_analyzeTable); let _la: number; try { - this.state = 5995; + this.state = 6059; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 856, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 867, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5947; + this.state = 6011; this.match(MySqlParser.KW_ANALYZE); - this.state = 5949; + this.state = 6013; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 5948; + this.state = 6012; this.tableActionOption(); } } - this.state = 5951; + this.state = 6015; this.match(MySqlParser.KW_TABLE); - this.state = 5952; + this.state = 6016; this.tableNames(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5953; + this.state = 6017; this.match(MySqlParser.KW_ANALYZE); - this.state = 5955; + this.state = 6019; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 5954; + this.state = 6018; this.tableActionOption(); } } - this.state = 5957; + this.state = 6021; this.match(MySqlParser.KW_TABLE); - this.state = 5958; + this.state = 6022; this.tableName(); - this.state = 5959; + this.state = 6023; this.match(MySqlParser.KW_UPDATE); - this.state = 5960; + this.state = 6024; this.match(MySqlParser.KW_HISTOGRAM); - this.state = 5961; + this.state = 6025; this.match(MySqlParser.KW_ON); - this.state = 5962; + this.state = 6026; this.columnNames(); - this.state = 5967; + this.state = 6031; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 852, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 863, this.context) ) { case 1: { - this.state = 5963; + this.state = 6027; this.match(MySqlParser.KW_WITH); - this.state = 5964; + this.state = 6028; this.decimalLiteral(); - this.state = 5965; + this.state = 6029; this.match(MySqlParser.KW_BUCKETS); } break; @@ -32544,40 +33386,40 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5969; + this.state = 6033; this.match(MySqlParser.KW_ANALYZE); - this.state = 5971; + this.state = 6035; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 5970; + this.state = 6034; this.tableActionOption(); } } - this.state = 5973; + this.state = 6037; this.match(MySqlParser.KW_TABLE); - this.state = 5974; + this.state = 6038; this.tableName(); - this.state = 5975; + this.state = 6039; this.match(MySqlParser.KW_UPDATE); - this.state = 5976; + this.state = 6040; this.match(MySqlParser.KW_HISTOGRAM); - this.state = 5977; + this.state = 6041; this.match(MySqlParser.KW_ON); - this.state = 5978; + this.state = 6042; this.columnName(); - this.state = 5982; + this.state = 6046; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 5979; + this.state = 6043; this.match(MySqlParser.KW_USING); - this.state = 5980; + this.state = 6044; this.match(MySqlParser.KW_DATA); - this.state = 5981; + this.state = 6045; this.match(MySqlParser.STRING_LITERAL); } } @@ -32587,29 +33429,29 @@ export class MySqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5984; + this.state = 6048; this.match(MySqlParser.KW_ANALYZE); - this.state = 5986; + this.state = 6050; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 5985; + this.state = 6049; this.tableActionOption(); } } - this.state = 5988; + this.state = 6052; this.match(MySqlParser.KW_TABLE); - this.state = 5989; + this.state = 6053; this.tableName(); - this.state = 5990; + this.state = 6054; this.match(MySqlParser.KW_DROP); - this.state = 5991; + this.state = 6055; this.match(MySqlParser.KW_HISTOGRAM); - this.state = 5992; + this.state = 6056; this.match(MySqlParser.KW_ON); - this.state = 5993; + this.state = 6057; this.columnNames(); } break; @@ -32631,28 +33473,28 @@ export class MySqlParser extends SQLParserBase { } public checkTable(): CheckTableContext { let localContext = new CheckTableContext(this.context, this.state); - this.enterRule(localContext, 524, MySqlParser.RULE_checkTable); + this.enterRule(localContext, 530, MySqlParser.RULE_checkTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 5997; + this.state = 6061; this.match(MySqlParser.KW_CHECK); - this.state = 5998; + this.state = 6062; this.match(MySqlParser.KW_TABLE); - this.state = 5999; + this.state = 6063; this.tableNames(); - this.state = 6003; + this.state = 6067; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 65 || _la === 327 || _la === 392 || _la === 396 || _la === 484 || _la === 549) { { { - this.state = 6000; + this.state = 6064; this.checkTableOption(); } } - this.state = 6005; + this.state = 6069; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -32674,23 +33516,23 @@ export class MySqlParser extends SQLParserBase { } public checksumTable(): ChecksumTableContext { let localContext = new ChecksumTableContext(this.context, this.state); - this.enterRule(localContext, 526, MySqlParser.RULE_checksumTable); + this.enterRule(localContext, 532, MySqlParser.RULE_checksumTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6006; + this.state = 6070; this.match(MySqlParser.KW_CHECKSUM); - this.state = 6007; + this.state = 6071; this.match(MySqlParser.KW_TABLE); - this.state = 6008; + this.state = 6072; this.tableNames(); - this.state = 6010; + this.state = 6074; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 392 || _la === 549) { { - this.state = 6009; + this.state = 6073; localContext._actionOption = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 392 || _la === 549)) { @@ -32721,24 +33563,24 @@ export class MySqlParser extends SQLParserBase { } public optimizeTable(): OptimizeTableContext { let localContext = new OptimizeTableContext(this.context, this.state); - this.enterRule(localContext, 528, MySqlParser.RULE_optimizeTable); + this.enterRule(localContext, 534, MySqlParser.RULE_optimizeTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6012; + this.state = 6076; this.match(MySqlParser.KW_OPTIMIZE); - this.state = 6014; + this.state = 6078; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 6013; + this.state = 6077; this.tableActionOption(); } } - this.state = 6016; + this.state = 6080; _la = this.tokenStream.LA(1); if(!(_la === 173 || _la === 752)) { this.errorHandler.recoverInline(this); @@ -32747,7 +33589,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6017; + this.state = 6081; this.tableNames(); } } @@ -32767,53 +33609,53 @@ export class MySqlParser extends SQLParserBase { } public repairTable(): RepairTableContext { let localContext = new RepairTableContext(this.context, this.state); - this.enterRule(localContext, 530, MySqlParser.RULE_repairTable); + this.enterRule(localContext, 536, MySqlParser.RULE_repairTable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6019; + this.state = 6083; this.match(MySqlParser.KW_REPAIR); - this.state = 6021; + this.state = 6085; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 6020; + this.state = 6084; this.tableActionOption(); } } - this.state = 6023; + this.state = 6087; this.match(MySqlParser.KW_TABLE); - this.state = 6024; + this.state = 6088; this.tableNames(); - this.state = 6026; + this.state = 6090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 549) { { - this.state = 6025; + this.state = 6089; this.match(MySqlParser.KW_QUICK); } } - this.state = 6029; + this.state = 6093; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 392) { { - this.state = 6028; + this.state = 6092; this.match(MySqlParser.KW_EXTENDED); } } - this.state = 6032; + this.state = 6096; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 679) { { - this.state = 6031; + this.state = 6095; this.match(MySqlParser.KW_USE_FRM); } } @@ -32836,12 +33678,12 @@ export class MySqlParser extends SQLParserBase { } public tableActionOption(): TableActionOptionContext { let localContext = new TableActionOptionContext(this.context, this.state); - this.enterRule(localContext, 532, MySqlParser.RULE_tableActionOption); + this.enterRule(localContext, 538, MySqlParser.RULE_tableActionOption); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6034; + this.state = 6098; _la = this.tokenStream.LA(1); if(!(_la === 115 || _la === 450)) { this.errorHandler.recoverInline(this); @@ -32868,52 +33710,52 @@ export class MySqlParser extends SQLParserBase { } public checkTableOption(): CheckTableOptionContext { let localContext = new CheckTableOptionContext(this.context, this.state); - this.enterRule(localContext, 534, MySqlParser.RULE_checkTableOption); + this.enterRule(localContext, 540, MySqlParser.RULE_checkTableOption); try { - this.state = 6043; + this.state = 6107; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_FOR: this.enterOuterAlt(localContext, 1); { - this.state = 6036; + this.state = 6100; this.match(MySqlParser.KW_FOR); - this.state = 6037; + this.state = 6101; this.match(MySqlParser.KW_UPGRADE); } break; case MySqlParser.KW_QUICK: this.enterOuterAlt(localContext, 2); { - this.state = 6038; + this.state = 6102; this.match(MySqlParser.KW_QUICK); } break; case MySqlParser.KW_FAST: this.enterOuterAlt(localContext, 3); { - this.state = 6039; + this.state = 6103; this.match(MySqlParser.KW_FAST); } break; case MySqlParser.KW_MEDIUM: this.enterOuterAlt(localContext, 4); { - this.state = 6040; + this.state = 6104; this.match(MySqlParser.KW_MEDIUM); } break; case MySqlParser.KW_EXTENDED: this.enterOuterAlt(localContext, 5); { - this.state = 6041; + this.state = 6105; this.match(MySqlParser.KW_EXTENDED); } break; case MySqlParser.KW_CHANGED: this.enterOuterAlt(localContext, 6); { - this.state = 6042; + this.state = 6106; this.match(MySqlParser.KW_CHANGED); } break; @@ -32935,122 +33777,57 @@ export class MySqlParser extends SQLParserBase { } return localContext; } - public createFunction(): CreateFunctionContext { - let localContext = new CreateFunctionContext(this.context, this.state); - this.enterRule(localContext, 536, MySqlParser.RULE_createFunction); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 6045; - this.match(MySqlParser.KW_CREATE); - this.state = 6047; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 307) { - { - this.state = 6046; - this.match(MySqlParser.KW_AGGREGATE); - } - } - - this.state = 6049; - this.match(MySqlParser.KW_FUNCTION); - this.state = 6051; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 866, this.context) ) { - case 1: - { - this.state = 6050; - this.ifNotExists(); - } - break; - } - this.state = 6053; - this.functionNameCreate(); - this.state = 6054; - this.match(MySqlParser.KW_RETURNS); - this.state = 6055; - localContext._returnType = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(((((_la - 208)) & ~0x1F) === 0 && ((1 << (_la - 208)) & 261) !== 0) || _la === 649)) { - localContext._returnType = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 6056; - this.match(MySqlParser.KW_SONAME); - this.state = 6057; - this.match(MySqlParser.STRING_LITERAL); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public installComponent(): InstallComponentContext { let localContext = new InstallComponentContext(this.context, this.state); - this.enterRule(localContext, 538, MySqlParser.RULE_installComponent); + this.enterRule(localContext, 542, MySqlParser.RULE_installComponent); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6059; + this.state = 6109; this.match(MySqlParser.KW_INSTALL); - this.state = 6060; + this.state = 6110; this.match(MySqlParser.KW_COMPONENT); - this.state = 6061; + this.state = 6111; localContext._component_name = this.uid(); - this.state = 6066; + this.state = 6116; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6062; + this.state = 6112; this.match(MySqlParser.COMMA); - this.state = 6063; + this.state = 6113; localContext._component_name = this.uid(); } } - this.state = 6068; + this.state = 6118; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 6078; + this.state = 6128; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 869, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 878, this.context) ) { case 1: { - this.state = 6069; + this.state = 6119; this.match(MySqlParser.KW_SET); - this.state = 6070; + this.state = 6120; this.variableExpr(); - this.state = 6075; + this.state = 6125; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6071; + this.state = 6121; this.match(MySqlParser.COMMA); - this.state = 6072; + this.state = 6122; this.variableExpr(); } } - this.state = 6077; + this.state = 6127; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -33075,12 +33852,12 @@ export class MySqlParser extends SQLParserBase { } public variableExpr(): VariableExprContext { let localContext = new VariableExprContext(this.context, this.state); - this.enterRule(localContext, 540, MySqlParser.RULE_variableExpr); + this.enterRule(localContext, 544, MySqlParser.RULE_variableExpr); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6080; + this.state = 6130; _la = this.tokenStream.LA(1); if(!(_la === 413 || _la === 531 || _la === 893 || _la === 894)) { this.errorHandler.recoverInline(this); @@ -33089,11 +33866,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6081; + this.state = 6131; localContext._system_var_name = this.fullId(); - this.state = 6082; + this.state = 6132; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6083; + this.state = 6133; this.expression(0); } } @@ -33113,30 +33890,30 @@ export class MySqlParser extends SQLParserBase { } public uninstallComponent(): UninstallComponentContext { let localContext = new UninstallComponentContext(this.context, this.state); - this.enterRule(localContext, 542, MySqlParser.RULE_uninstallComponent); + this.enterRule(localContext, 546, MySqlParser.RULE_uninstallComponent); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6085; + this.state = 6135; this.match(MySqlParser.KW_UNINSTALL); - this.state = 6086; + this.state = 6136; this.match(MySqlParser.KW_COMPONENT); - this.state = 6087; + this.state = 6137; localContext._component_name = this.uid(); - this.state = 6092; + this.state = 6142; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6088; + this.state = 6138; this.match(MySqlParser.COMMA); - this.state = 6089; + this.state = 6139; localContext._component_name = this.uid(); } } - this.state = 6094; + this.state = 6144; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -33158,19 +33935,19 @@ export class MySqlParser extends SQLParserBase { } public installPlugin(): InstallPluginContext { let localContext = new InstallPluginContext(this.context, this.state); - this.enterRule(localContext, 544, MySqlParser.RULE_installPlugin); + this.enterRule(localContext, 548, MySqlParser.RULE_installPlugin); try { this.enterOuterAlt(localContext, 1); { - this.state = 6095; + this.state = 6145; this.match(MySqlParser.KW_INSTALL); - this.state = 6096; + this.state = 6146; this.match(MySqlParser.KW_PLUGIN); - this.state = 6097; + this.state = 6147; localContext._pluginName = this.uid(); - this.state = 6098; + this.state = 6148; this.match(MySqlParser.KW_SONAME); - this.state = 6099; + this.state = 6149; this.match(MySqlParser.STRING_LITERAL); } } @@ -33190,15 +33967,15 @@ export class MySqlParser extends SQLParserBase { } public uninstallPlugin(): UninstallPluginContext { let localContext = new UninstallPluginContext(this.context, this.state); - this.enterRule(localContext, 546, MySqlParser.RULE_uninstallPlugin); + this.enterRule(localContext, 550, MySqlParser.RULE_uninstallPlugin); try { this.enterOuterAlt(localContext, 1); { - this.state = 6101; + this.state = 6151; this.match(MySqlParser.KW_UNINSTALL); - this.state = 6102; + this.state = 6152; this.match(MySqlParser.KW_PLUGIN); - this.state = 6103; + this.state = 6153; localContext._pluginName = this.uid(); } } @@ -33218,96 +33995,96 @@ export class MySqlParser extends SQLParserBase { } public cloneStatement(): CloneStatementContext { let localContext = new CloneStatementContext(this.context, this.state); - this.enterRule(localContext, 548, MySqlParser.RULE_cloneStatement); + this.enterRule(localContext, 552, MySqlParser.RULE_cloneStatement); let _la: number; try { - this.state = 6135; + this.state = 6185; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 876, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 885, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6105; + this.state = 6155; this.match(MySqlParser.KW_CLONE); - this.state = 6106; + this.state = 6156; this.match(MySqlParser.KW_LOCAL); - this.state = 6107; + this.state = 6157; this.match(MySqlParser.KW_DATA); - this.state = 6108; + this.state = 6158; this.match(MySqlParser.KW_DIRECTORY); - this.state = 6110; + this.state = 6160; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 6109; + this.state = 6159; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 6112; + this.state = 6162; this.match(MySqlParser.STRING_LITERAL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6113; + this.state = 6163; this.match(MySqlParser.KW_CLONE); - this.state = 6114; + this.state = 6164; this.match(MySqlParser.KW_INSTANCE); - this.state = 6115; + this.state = 6165; this.match(MySqlParser.KW_FROM); - this.state = 6116; + this.state = 6166; this.userHostPort(); - this.state = 6117; + this.state = 6167; this.match(MySqlParser.KW_IDENTIFIED); - this.state = 6118; + this.state = 6168; this.match(MySqlParser.KW_BY); - this.state = 6119; + this.state = 6169; this.match(MySqlParser.STRING_LITERAL); - this.state = 6126; + this.state = 6176; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 360) { { - this.state = 6120; + this.state = 6170; this.match(MySqlParser.KW_DATA); - this.state = 6121; + this.state = 6171; this.match(MySqlParser.KW_DIRECTORY); - this.state = 6123; + this.state = 6173; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 857) { { - this.state = 6122; + this.state = 6172; this.match(MySqlParser.EQUAL_SYMBOL); } } - this.state = 6125; + this.state = 6175; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 6133; + this.state = 6183; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 144) { { - this.state = 6128; + this.state = 6178; this.match(MySqlParser.KW_REQUIRE); - this.state = 6130; + this.state = 6180; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 502) { { - this.state = 6129; + this.state = 6179; this.match(MySqlParser.KW_NO); } } - this.state = 6132; + this.state = 6182; this.match(MySqlParser.KW_SSL); } } @@ -33332,21 +34109,21 @@ export class MySqlParser extends SQLParserBase { } public setStatement(): SetStatementContext { let localContext = new SetStatementContext(this.context, this.state); - this.enterRule(localContext, 550, MySqlParser.RULE_setStatement); + this.enterRule(localContext, 554, MySqlParser.RULE_setStatement); let _la: number; try { - this.state = 6189; + this.state = 6239; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 884, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 893, this.context) ) { case 1: localContext = new SetVariableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6137; + this.state = 6187; this.match(MySqlParser.KW_SET); - this.state = 6138; + this.state = 6188; this.variableClause(); - this.state = 6139; + this.state = 6189; _la = this.tokenStream.LA(1); if(!(_la === 841 || _la === 857)) { this.errorHandler.recoverInline(this); @@ -33355,33 +34132,33 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6142; + this.state = 6192; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 877, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 886, this.context) ) { case 1: { - this.state = 6140; + this.state = 6190; this.expression(0); } break; case 2: { - this.state = 6141; + this.state = 6191; this.match(MySqlParser.KW_ON); } break; } - this.state = 6153; + this.state = 6203; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6144; + this.state = 6194; this.match(MySqlParser.COMMA); - this.state = 6145; + this.state = 6195; this.variableClause(); - this.state = 6146; + this.state = 6196; _la = this.tokenStream.LA(1); if(!(_la === 841 || _la === 857)) { this.errorHandler.recoverInline(this); @@ -33390,25 +34167,25 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6149; + this.state = 6199; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 878, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 887, this.context) ) { case 1: { - this.state = 6147; + this.state = 6197; this.expression(0); } break; case 2: { - this.state = 6148; + this.state = 6198; this.match(MySqlParser.KW_ON); } break; } } } - this.state = 6155; + this.state = 6205; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -33418,11 +34195,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SetCharsetContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6156; + this.state = 6206; this.match(MySqlParser.KW_SET); - this.state = 6157; + this.state = 6207; this.charSet(); - this.state = 6160; + this.state = 6210; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BINARY: @@ -33470,13 +34247,13 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: case MySqlParser.STRING_LITERAL: { - this.state = 6158; + this.state = 6208; this.charsetName(); } break; case MySqlParser.KW_DEFAULT: { - this.state = 6159; + this.state = 6209; this.match(MySqlParser.KW_DEFAULT); } break; @@ -33489,11 +34266,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SetNamesContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 6162; + this.state = 6212; this.match(MySqlParser.KW_SET); - this.state = 6163; + this.state = 6213; this.match(MySqlParser.KW_NAMES); - this.state = 6170; + this.state = 6220; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BINARY: @@ -33541,16 +34318,16 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: case MySqlParser.STRING_LITERAL: { - this.state = 6164; + this.state = 6214; this.charsetName(); - this.state = 6167; + this.state = 6217; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 28) { { - this.state = 6165; + this.state = 6215; this.match(MySqlParser.KW_COLLATE); - this.state = 6166; + this.state = 6216; this.collationName(); } } @@ -33559,7 +34336,7 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_DEFAULT: { - this.state = 6169; + this.state = 6219; this.match(MySqlParser.KW_DEFAULT); } break; @@ -33572,7 +34349,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SetPasswordContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 6172; + this.state = 6222; this.setPasswordStatement(); } break; @@ -33580,7 +34357,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SetTransactionContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 6173; + this.state = 6223; this.setTransactionStatement(); } break; @@ -33588,7 +34365,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SetAutocommitContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 6174; + this.state = 6224; this.setAutocommitStatement(); } break; @@ -33596,11 +34373,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SetNewValueInsideTriggerContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 6175; + this.state = 6225; this.match(MySqlParser.KW_SET); - this.state = 6176; + this.state = 6226; (localContext as SetNewValueInsideTriggerContext)._system_var_name = this.fullId(); - this.state = 6177; + this.state = 6227; _la = this.tokenStream.LA(1); if(!(_la === 841 || _la === 857)) { this.errorHandler.recoverInline(this); @@ -33609,19 +34386,19 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6178; + this.state = 6228; this.expression(0); - this.state = 6186; + this.state = 6236; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6179; + this.state = 6229; this.match(MySqlParser.COMMA); - this.state = 6180; + this.state = 6230; (localContext as SetNewValueInsideTriggerContext)._system_var_name = this.fullId(); - this.state = 6181; + this.state = 6231; _la = this.tokenStream.LA(1); if(!(_la === 841 || _la === 857)) { this.errorHandler.recoverInline(this); @@ -33630,11 +34407,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6182; + this.state = 6232; this.expression(0); } } - this.state = 6188; + this.state = 6238; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -33658,19 +34435,19 @@ export class MySqlParser extends SQLParserBase { } public showStatement(): ShowStatementContext { let localContext = new ShowStatementContext(this.context, this.state); - this.enterRule(localContext, 552, MySqlParser.RULE_showStatement); + this.enterRule(localContext, 556, MySqlParser.RULE_showStatement); let _la: number; try { - this.state = 6375; + this.state = 6425; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 913, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 922, this.context) ) { case 1: localContext = new ShowMasterLogsContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6191; + this.state = 6241; this.match(MySqlParser.KW_SHOW); - this.state = 6192; + this.state = 6242; (localContext as ShowMasterLogsContext)._logFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 228 || _la === 453)) { @@ -33680,7 +34457,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6193; + this.state = 6243; this.match(MySqlParser.KW_LOGS); } break; @@ -33688,9 +34465,9 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowLogEventsContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6194; + this.state = 6244; this.match(MySqlParser.KW_SHOW); - this.state = 6195; + this.state = 6245; (localContext as ShowLogEventsContext)._logFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 318 || _la === 559)) { @@ -33700,62 +34477,62 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6196; + this.state = 6246; this.match(MySqlParser.KW_EVENTS); - this.state = 6199; + this.state = 6249; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 6197; + this.state = 6247; this.match(MySqlParser.KW_IN); - this.state = 6198; + this.state = 6248; (localContext as ShowLogEventsContext)._filename = this.match(MySqlParser.STRING_LITERAL); } } - this.state = 6203; + this.state = 6253; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68) { { - this.state = 6201; + this.state = 6251; this.match(MySqlParser.KW_FROM); - this.state = 6202; + this.state = 6252; (localContext as ShowLogEventsContext)._fromPosition = this.decimalLiteral(); } } - this.state = 6212; + this.state = 6262; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 6205; + this.state = 6255; this.match(MySqlParser.KW_LIMIT); - this.state = 6209; + this.state = 6259; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 887, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 896, this.context) ) { case 1: { - this.state = 6206; + this.state = 6256; (localContext as ShowLogEventsContext)._offset = this.decimalLiteral(); - this.state = 6207; + this.state = 6257; this.match(MySqlParser.COMMA); } break; } - this.state = 6211; + this.state = 6261; (localContext as ShowLogEventsContext)._rowCount = this.decimalLiteral(); } } - this.state = 6215; + this.state = 6265; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6214; + this.state = 6264; this.channelOption(); } } @@ -33766,16 +34543,16 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowObjectFilterContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 6217; + this.state = 6267; this.match(MySqlParser.KW_SHOW); - this.state = 6218; + this.state = 6268; this.showCommonEntity(); - this.state = 6220; + this.state = 6270; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 99 || _la === 192) { { - this.state = 6219; + this.state = 6269; this.showFilter(); } } @@ -33786,29 +34563,29 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowColumnsContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 6222; + this.state = 6272; this.match(MySqlParser.KW_SHOW); - this.state = 6224; + this.state = 6274; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 392) { { - this.state = 6223; + this.state = 6273; this.match(MySqlParser.KW_EXTENDED); } } - this.state = 6227; + this.state = 6277; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 408) { { - this.state = 6226; + this.state = 6276; this.match(MySqlParser.KW_FULL); } } - this.state = 6229; + this.state = 6279; (localContext as ShowColumnsContext)._columnsFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 337 || _la === 398)) { @@ -33818,7 +34595,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6230; + this.state = 6280; (localContext as ShowColumnsContext)._tableFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { @@ -33828,14 +34605,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6231; + this.state = 6281; this.tableName(); - this.state = 6234; + this.state = 6284; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68 || _la === 80) { { - this.state = 6232; + this.state = 6282; (localContext as ShowColumnsContext)._schemaFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { @@ -33845,17 +34622,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6233; + this.state = 6283; this.databaseName(); } } - this.state = 6237; + this.state = 6287; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 99 || _la === 192) { { - this.state = 6236; + this.state = 6286; this.showFilter(); } } @@ -33866,11 +34643,11 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateDbContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 6239; + this.state = 6289; this.match(MySqlParser.KW_SHOW); - this.state = 6240; + this.state = 6290; this.match(MySqlParser.KW_CREATE); - this.state = 6241; + this.state = 6291; _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 152)) { this.errorHandler.recoverInline(this); @@ -33879,17 +34656,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6243; + this.state = 6293; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 895, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 904, this.context) ) { case 1: { - this.state = 6242; + this.state = 6292; this.ifNotExists(); } break; } - this.state = 6245; + this.state = 6295; this.databaseName(); } break; @@ -33897,11 +34674,11 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateFullIdObjectContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 6246; + this.state = 6296; this.match(MySqlParser.KW_SHOW); - this.state = 6247; + this.state = 6297; this.match(MySqlParser.KW_CREATE); - this.state = 6248; + this.state = 6298; _la = this.tokenStream.LA(1); if(!(_la === 132 || _la === 178 || _la === 385)) { this.errorHandler.recoverInline(this); @@ -33910,7 +34687,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6249; + this.state = 6299; this.fullId(); } break; @@ -33918,13 +34695,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateFunctionContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 6250; + this.state = 6300; this.match(MySqlParser.KW_SHOW); - this.state = 6251; + this.state = 6301; this.match(MySqlParser.KW_CREATE); - this.state = 6252; + this.state = 6302; this.match(MySqlParser.KW_FUNCTION); - this.state = 6253; + this.state = 6303; this.functionName(); } break; @@ -33932,13 +34709,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateViewContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 6254; + this.state = 6304; this.match(MySqlParser.KW_SHOW); - this.state = 6255; + this.state = 6305; this.match(MySqlParser.KW_CREATE); - this.state = 6256; + this.state = 6306; this.match(MySqlParser.KW_VIEW); - this.state = 6257; + this.state = 6307; this.viewName(); } break; @@ -33946,13 +34723,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateTableContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 6258; + this.state = 6308; this.match(MySqlParser.KW_SHOW); - this.state = 6259; + this.state = 6309; this.match(MySqlParser.KW_CREATE); - this.state = 6260; + this.state = 6310; this.match(MySqlParser.KW_TABLE); - this.state = 6261; + this.state = 6311; this.tableName(); } break; @@ -33960,13 +34737,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCreateUserContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 6262; + this.state = 6312; this.match(MySqlParser.KW_SHOW); - this.state = 6263; + this.state = 6313; this.match(MySqlParser.KW_CREATE); - this.state = 6264; + this.state = 6314; this.match(MySqlParser.KW_USER); - this.state = 6265; + this.state = 6315; this.userName(); } break; @@ -33974,13 +34751,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowEngineContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 6266; + this.state = 6316; this.match(MySqlParser.KW_SHOW); - this.state = 6267; + this.state = 6317; this.match(MySqlParser.KW_ENGINE); - this.state = 6268; + this.state = 6318; this.engineName(); - this.state = 6269; + this.state = 6319; (localContext as ShowEngineContext)._engineOption = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 493 || _la === 645)) { @@ -33996,9 +34773,9 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowGlobalInfoContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 6271; + this.state = 6321; this.match(MySqlParser.KW_SHOW); - this.state = 6272; + this.state = 6322; this.showGlobalInfoClause(); } break; @@ -34006,9 +34783,9 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowErrorsContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 6273; + this.state = 6323; this.match(MySqlParser.KW_SHOW); - this.state = 6274; + this.state = 6324; (localContext as ShowErrorsContext)._errorFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 383 || _la === 688)) { @@ -34018,26 +34795,26 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6282; + this.state = 6332; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 6275; + this.state = 6325; this.match(MySqlParser.KW_LIMIT); - this.state = 6279; + this.state = 6329; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 896, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 905, this.context) ) { case 1: { - this.state = 6276; + this.state = 6326; (localContext as ShowErrorsContext)._offset = this.decimalLiteral(); - this.state = 6277; + this.state = 6327; this.match(MySqlParser.COMMA); } break; } - this.state = 6281; + this.state = 6331; (localContext as ShowErrorsContext)._rowCount = this.decimalLiteral(); } } @@ -34048,17 +34825,17 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowCountErrorsContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 6284; + this.state = 6334; this.match(MySqlParser.KW_SHOW); - this.state = 6285; + this.state = 6335; this.match(MySqlParser.KW_COUNT); - this.state = 6286; + this.state = 6336; this.match(MySqlParser.LR_BRACKET); - this.state = 6287; + this.state = 6337; this.match(MySqlParser.STAR); - this.state = 6288; + this.state = 6338; this.match(MySqlParser.RR_BRACKET); - this.state = 6289; + this.state = 6339; (localContext as ShowCountErrorsContext)._errorFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 383 || _la === 688)) { @@ -34074,16 +34851,16 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowSchemaFilterContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 6290; + this.state = 6340; this.match(MySqlParser.KW_SHOW); - this.state = 6291; + this.state = 6341; this.showSchemaEntity(); - this.state = 6294; + this.state = 6344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68 || _la === 80) { { - this.state = 6292; + this.state = 6342; (localContext as ShowSchemaFilterContext)._schemaFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { @@ -34093,17 +34870,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6293; + this.state = 6343; this.databaseName(); } } - this.state = 6297; + this.state = 6347; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 99 || _la === 192) { { - this.state = 6296; + this.state = 6346; this.showFilter(); } } @@ -34114,13 +34891,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowPercedureCodeContext(localContext); this.enterOuterAlt(localContext, 16); { - this.state = 6299; + this.state = 6349; this.match(MySqlParser.KW_SHOW); - this.state = 6300; + this.state = 6350; this.match(MySqlParser.KW_PROCEDURE); - this.state = 6301; + this.state = 6351; this.match(MySqlParser.KW_CODE); - this.state = 6302; + this.state = 6352; (localContext as ShowPercedureCodeContext)._proc_name = this.fullId(); } break; @@ -34128,13 +34905,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowFunctionCodeContext(localContext); this.enterOuterAlt(localContext, 17); { - this.state = 6303; + this.state = 6353; this.match(MySqlParser.KW_SHOW); - this.state = 6304; + this.state = 6354; this.match(MySqlParser.KW_FUNCTION); - this.state = 6305; + this.state = 6355; this.match(MySqlParser.KW_CODE); - this.state = 6306; + this.state = 6356; this.functionName(); } break; @@ -34142,27 +34919,27 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowGrantsContext(localContext); this.enterOuterAlt(localContext, 18); { - this.state = 6307; + this.state = 6357; this.match(MySqlParser.KW_SHOW); - this.state = 6308; + this.state = 6358; this.match(MySqlParser.KW_GRANTS); - this.state = 6315; + this.state = 6365; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6309; + this.state = 6359; this.match(MySqlParser.KW_FOR); - this.state = 6310; + this.state = 6360; this.userOrRoleName(); - this.state = 6313; + this.state = 6363; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 6311; + this.state = 6361; this.match(MySqlParser.KW_USING); - this.state = 6312; + this.state = 6362; this.userOrRoleNames(); } } @@ -34176,19 +34953,19 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowIndexesContext(localContext); this.enterOuterAlt(localContext, 19); { - this.state = 6317; + this.state = 6367; this.match(MySqlParser.KW_SHOW); - this.state = 6319; + this.state = 6369; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 392) { { - this.state = 6318; + this.state = 6368; this.match(MySqlParser.KW_EXTENDED); } } - this.state = 6321; + this.state = 6371; (localContext as ShowIndexesContext)._indexFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 93 || _la === 426)) { @@ -34198,7 +34975,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6322; + this.state = 6372; (localContext as ShowIndexesContext)._tableFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { @@ -34208,14 +34985,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6323; + this.state = 6373; this.tableName(); - this.state = 6326; + this.state = 6376; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68 || _la === 80) { { - this.state = 6324; + this.state = 6374; (localContext as ShowIndexesContext)._schemaFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { @@ -34225,19 +35002,19 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6325; + this.state = 6375; this.databaseName(); } } - this.state = 6330; + this.state = 6380; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 6328; + this.state = 6378; this.match(MySqlParser.KW_WHERE); - this.state = 6329; + this.state = 6379; this.expression(0); } } @@ -34248,18 +35025,18 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowOpenTablesContext(localContext); this.enterOuterAlt(localContext, 20); { - this.state = 6332; + this.state = 6382; this.match(MySqlParser.KW_SHOW); - this.state = 6333; + this.state = 6383; this.match(MySqlParser.KW_OPEN); - this.state = 6334; + this.state = 6384; this.match(MySqlParser.KW_TABLES); - this.state = 6337; + this.state = 6387; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68 || _la === 80) { { - this.state = 6335; + this.state = 6385; _la = this.tokenStream.LA(1); if(!(_la === 68 || _la === 80)) { this.errorHandler.recoverInline(this); @@ -34268,17 +35045,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6336; + this.state = 6386; this.databaseName(); } } - this.state = 6340; + this.state = 6390; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 99 || _la === 192) { { - this.state = 6339; + this.state = 6389; this.showFilter(); } } @@ -34289,67 +35066,67 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowProfileContext(localContext); this.enterOuterAlt(localContext, 21); { - this.state = 6342; + this.state = 6392; this.match(MySqlParser.KW_SHOW); - this.state = 6343; + this.state = 6393; this.match(MySqlParser.KW_PROFILE); - this.state = 6352; + this.state = 6402; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7 || _la === 320 || _la === 355 || _la === 358 || _la === 439 || _la === 521 || _la === 605 || _la === 655 || _la === 802) { { - this.state = 6344; + this.state = 6394; this.showProfileType(); - this.state = 6349; + this.state = 6399; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6345; + this.state = 6395; this.match(MySqlParser.COMMA); - this.state = 6346; + this.state = 6396; this.showProfileType(); } } - this.state = 6351; + this.state = 6401; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 6357; + this.state = 6407; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6354; + this.state = 6404; this.match(MySqlParser.KW_FOR); - this.state = 6355; + this.state = 6405; this.match(MySqlParser.KW_QUERY); - this.state = 6356; + this.state = 6406; (localContext as ShowProfileContext)._queryCount = this.decimalLiteral(); } } - this.state = 6365; + this.state = 6415; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 6359; + this.state = 6409; this.match(MySqlParser.KW_LIMIT); - this.state = 6360; + this.state = 6410; (localContext as ShowProfileContext)._rowCount = this.decimalLiteral(); - this.state = 6363; + this.state = 6413; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 509) { { - this.state = 6361; + this.state = 6411; this.match(MySqlParser.KW_OFFSET); - this.state = 6362; + this.state = 6412; (localContext as ShowProfileContext)._offset = this.decimalLiteral(); } } @@ -34363,9 +35140,9 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowSlaveStatusContext(localContext); this.enterOuterAlt(localContext, 22); { - this.state = 6367; + this.state = 6417; this.match(MySqlParser.KW_SHOW); - this.state = 6368; + this.state = 6418; _la = this.tokenStream.LA(1); if(!(_la === 563 || _la === 598)) { this.errorHandler.recoverInline(this); @@ -34374,14 +35151,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6369; + this.state = 6419; this.match(MySqlParser.KW_STATUS); - this.state = 6371; + this.state = 6421; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6370; + this.state = 6420; this.channelOption(); } } @@ -34392,9 +35169,9 @@ export class MySqlParser extends SQLParserBase { localContext = new ShowReplicasContext(localContext); this.enterOuterAlt(localContext, 23); { - this.state = 6373; + this.state = 6423; this.match(MySqlParser.KW_SHOW); - this.state = 6374; + this.state = 6424; this.match(MySqlParser.KW_REPLICAS); } break; @@ -34416,23 +35193,23 @@ export class MySqlParser extends SQLParserBase { } public variableClause(): VariableClauseContext { let localContext = new VariableClauseContext(this.context, this.state); - this.enterRule(localContext, 554, MySqlParser.RULE_variableClause); + this.enterRule(localContext, 558, MySqlParser.RULE_variableClause); let _la: number; try { - this.state = 6387; + this.state = 6437; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.LOCAL_ID: this.enterOuterAlt(localContext, 1); { - this.state = 6377; + this.state = 6427; this.match(MySqlParser.LOCAL_ID); } break; case MySqlParser.GLOBAL_ID: this.enterOuterAlt(localContext, 2); { - this.state = 6378; + this.state = 6428; this.match(MySqlParser.GLOBAL_ID); } break; @@ -34768,6 +35545,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -34989,24 +35767,24 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.ID: this.enterOuterAlt(localContext, 3); { - this.state = 6384; + this.state = 6434; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 915, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 924, this.context) ) { case 1: { - this.state = 6381; + this.state = 6431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 870) { { - this.state = 6379; + this.state = 6429; this.match(MySqlParser.AT_SIGN); - this.state = 6380; + this.state = 6430; this.match(MySqlParser.AT_SIGN); } } - this.state = 6383; + this.state = 6433; _la = this.tokenStream.LA(1); if(!(_la === 413 || _la === 450 || _la === 531 || _la === 532 || _la === 593)) { this.errorHandler.recoverInline(this); @@ -35018,7 +35796,7 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 6386; + this.state = 6436; localContext._target = this.uid(); } break; @@ -35042,64 +35820,64 @@ export class MySqlParser extends SQLParserBase { } public showCommonEntity(): ShowCommonEntityContext { let localContext = new ShowCommonEntityContext(this.context, this.state); - this.enterRule(localContext, 556, MySqlParser.RULE_showCommonEntity); + this.enterRule(localContext, 560, MySqlParser.RULE_showCommonEntity); let _la: number; try { - this.state = 6403; + this.state = 6453; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CHARACTER: this.enterOuterAlt(localContext, 1); { - this.state = 6389; + this.state = 6439; this.match(MySqlParser.KW_CHARACTER); - this.state = 6390; + this.state = 6440; this.match(MySqlParser.KW_SET); } break; case MySqlParser.KW_CHARSET: this.enterOuterAlt(localContext, 2); { - this.state = 6391; + this.state = 6441; this.match(MySqlParser.KW_CHARSET); } break; case MySqlParser.KW_COLLATION: this.enterOuterAlt(localContext, 3); { - this.state = 6392; + this.state = 6442; this.match(MySqlParser.KW_COLLATION); } break; case MySqlParser.KW_DATABASES: this.enterOuterAlt(localContext, 4); { - this.state = 6393; + this.state = 6443; this.match(MySqlParser.KW_DATABASES); } break; case MySqlParser.KW_SCHEMAS: this.enterOuterAlt(localContext, 5); { - this.state = 6394; + this.state = 6444; this.match(MySqlParser.KW_SCHEMAS); } break; case MySqlParser.KW_FUNCTION: this.enterOuterAlt(localContext, 6); { - this.state = 6395; + this.state = 6445; this.match(MySqlParser.KW_FUNCTION); - this.state = 6396; + this.state = 6446; this.match(MySqlParser.KW_STATUS); } break; case MySqlParser.KW_PROCEDURE: this.enterOuterAlt(localContext, 7); { - this.state = 6397; + this.state = 6447; this.match(MySqlParser.KW_PROCEDURE); - this.state = 6398; + this.state = 6448; this.match(MySqlParser.KW_STATUS); } break; @@ -35109,12 +35887,12 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_VARIABLES: this.enterOuterAlt(localContext, 8); { - this.state = 6400; + this.state = 6450; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 413 || _la === 593) { { - this.state = 6399; + this.state = 6449; _la = this.tokenStream.LA(1); if(!(_la === 413 || _la === 593)) { this.errorHandler.recoverInline(this); @@ -35126,7 +35904,7 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 6402; + this.state = 6452; _la = this.tokenStream.LA(1); if(!(_la === 645 || _la === 683)) { this.errorHandler.recoverInline(this); @@ -35157,26 +35935,26 @@ export class MySqlParser extends SQLParserBase { } public showFilter(): ShowFilterContext { let localContext = new ShowFilterContext(this.context, this.state); - this.enterRule(localContext, 558, MySqlParser.RULE_showFilter); + this.enterRule(localContext, 562, MySqlParser.RULE_showFilter); try { - this.state = 6409; + this.state = 6459; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_LIKE: this.enterOuterAlt(localContext, 1); { - this.state = 6405; + this.state = 6455; this.match(MySqlParser.KW_LIKE); - this.state = 6406; + this.state = 6456; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.KW_WHERE: this.enterOuterAlt(localContext, 2); { - this.state = 6407; + this.state = 6457; this.match(MySqlParser.KW_WHERE); - this.state = 6408; + this.state = 6458; this.expression(0); } break; @@ -35200,50 +35978,50 @@ export class MySqlParser extends SQLParserBase { } public showGlobalInfoClause(): ShowGlobalInfoClauseContext { let localContext = new ShowGlobalInfoClauseContext(this.context, this.state); - this.enterRule(localContext, 560, MySqlParser.RULE_showGlobalInfoClause); + this.enterRule(localContext, 564, MySqlParser.RULE_showGlobalInfoClause); let _la: number; try { - this.state = 6428; + this.state = 6478; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ENGINES: case MySqlParser.KW_STORAGE: this.enterOuterAlt(localContext, 1); { - this.state = 6412; + this.state = 6462; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 647) { { - this.state = 6411; + this.state = 6461; this.match(MySqlParser.KW_STORAGE); } } - this.state = 6414; + this.state = 6464; this.match(MySqlParser.KW_ENGINES); } break; case MySqlParser.KW_MASTER: this.enterOuterAlt(localContext, 2); { - this.state = 6415; + this.state = 6465; this.match(MySqlParser.KW_MASTER); - this.state = 6416; + this.state = 6466; this.match(MySqlParser.KW_STATUS); } break; case MySqlParser.KW_PLUGINS: this.enterOuterAlt(localContext, 3); { - this.state = 6417; + this.state = 6467; this.match(MySqlParser.KW_PLUGINS); } break; case MySqlParser.KW_PRIVILEGES: this.enterOuterAlt(localContext, 4); { - this.state = 6418; + this.state = 6468; this.match(MySqlParser.KW_PRIVILEGES); } break; @@ -35251,47 +36029,47 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_PROCESSLIST: this.enterOuterAlt(localContext, 5); { - this.state = 6420; + this.state = 6470; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 408) { { - this.state = 6419; + this.state = 6469; this.match(MySqlParser.KW_FULL); } } - this.state = 6422; + this.state = 6472; this.match(MySqlParser.KW_PROCESSLIST); } break; case MySqlParser.KW_PROFILES: this.enterOuterAlt(localContext, 6); { - this.state = 6423; + this.state = 6473; this.match(MySqlParser.KW_PROFILES); } break; case MySqlParser.KW_SLAVE: this.enterOuterAlt(localContext, 7); { - this.state = 6424; + this.state = 6474; this.match(MySqlParser.KW_SLAVE); - this.state = 6425; + this.state = 6475; this.match(MySqlParser.KW_HOSTS); } break; case MySqlParser.KW_AUTHORS: this.enterOuterAlt(localContext, 8); { - this.state = 6426; + this.state = 6476; this.match(MySqlParser.KW_AUTHORS); } break; case MySqlParser.KW_CONTRIBUTORS: this.enterOuterAlt(localContext, 9); { - this.state = 6427; + this.state = 6477; this.match(MySqlParser.KW_CONTRIBUTORS); } break; @@ -35315,25 +36093,25 @@ export class MySqlParser extends SQLParserBase { } public showSchemaEntity(): ShowSchemaEntityContext { let localContext = new ShowSchemaEntityContext(this.context, this.state); - this.enterRule(localContext, 562, MySqlParser.RULE_showSchemaEntity); + this.enterRule(localContext, 566, MySqlParser.RULE_showSchemaEntity); let _la: number; try { - this.state = 6441; + this.state = 6491; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_EVENTS: this.enterOuterAlt(localContext, 1); { - this.state = 6430; + this.state = 6480; this.match(MySqlParser.KW_EVENTS); } break; case MySqlParser.KW_TABLE: this.enterOuterAlt(localContext, 2); { - this.state = 6431; + this.state = 6481; this.match(MySqlParser.KW_TABLE); - this.state = 6432; + this.state = 6482; this.match(MySqlParser.KW_STATUS); } break; @@ -35342,34 +36120,34 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_TABLES: this.enterOuterAlt(localContext, 3); { - this.state = 6434; + this.state = 6484; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 392) { { - this.state = 6433; + this.state = 6483; this.match(MySqlParser.KW_EXTENDED); } } - this.state = 6437; + this.state = 6487; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 408) { { - this.state = 6436; + this.state = 6486; this.match(MySqlParser.KW_FULL); } } - this.state = 6439; + this.state = 6489; this.match(MySqlParser.KW_TABLES); } break; case MySqlParser.KW_TRIGGERS: this.enterOuterAlt(localContext, 4); { - this.state = 6440; + this.state = 6490; this.match(MySqlParser.KW_TRIGGERS); } break; @@ -35393,77 +36171,77 @@ export class MySqlParser extends SQLParserBase { } public showProfileType(): ShowProfileTypeContext { let localContext = new ShowProfileTypeContext(this.context, this.state); - this.enterRule(localContext, 564, MySqlParser.RULE_showProfileType); + this.enterRule(localContext, 568, MySqlParser.RULE_showProfileType); try { - this.state = 6455; + this.state = 6505; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ALL: this.enterOuterAlt(localContext, 1); { - this.state = 6443; + this.state = 6493; this.match(MySqlParser.KW_ALL); } break; case MySqlParser.KW_BLOCK: this.enterOuterAlt(localContext, 2); { - this.state = 6444; + this.state = 6494; this.match(MySqlParser.KW_BLOCK); - this.state = 6445; + this.state = 6495; this.match(MySqlParser.KW_IO); } break; case MySqlParser.KW_CONTEXT: this.enterOuterAlt(localContext, 3); { - this.state = 6446; + this.state = 6496; this.match(MySqlParser.KW_CONTEXT); - this.state = 6447; + this.state = 6497; this.match(MySqlParser.KW_SWITCHES); } break; case MySqlParser.KW_CPU: this.enterOuterAlt(localContext, 4); { - this.state = 6448; + this.state = 6498; this.match(MySqlParser.KW_CPU); } break; case MySqlParser.KW_IPC: this.enterOuterAlt(localContext, 5); { - this.state = 6449; + this.state = 6499; this.match(MySqlParser.KW_IPC); } break; case MySqlParser.KW_MEMORY: this.enterOuterAlt(localContext, 6); { - this.state = 6450; + this.state = 6500; this.match(MySqlParser.KW_MEMORY); } break; case MySqlParser.KW_PAGE: this.enterOuterAlt(localContext, 7); { - this.state = 6451; + this.state = 6501; this.match(MySqlParser.KW_PAGE); - this.state = 6452; + this.state = 6502; this.match(MySqlParser.KW_FAULTS); } break; case MySqlParser.KW_SOURCE: this.enterOuterAlt(localContext, 8); { - this.state = 6453; + this.state = 6503; this.match(MySqlParser.KW_SOURCE); } break; case MySqlParser.KW_SWAPS: this.enterOuterAlt(localContext, 9); { - this.state = 6454; + this.state = 6504; this.match(MySqlParser.KW_SWAPS); } break; @@ -35487,13 +36265,13 @@ export class MySqlParser extends SQLParserBase { } public binlogStatement(): BinlogStatementContext { let localContext = new BinlogStatementContext(this.context, this.state); - this.enterRule(localContext, 566, MySqlParser.RULE_binlogStatement); + this.enterRule(localContext, 570, MySqlParser.RULE_binlogStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6457; + this.state = 6507; this.match(MySqlParser.KW_BINLOG); - this.state = 6458; + this.state = 6508; this.match(MySqlParser.STRING_LITERAL); } } @@ -35513,35 +36291,35 @@ export class MySqlParser extends SQLParserBase { } public cacheIndexStatement(): CacheIndexStatementContext { let localContext = new CacheIndexStatementContext(this.context, this.state); - this.enterRule(localContext, 568, MySqlParser.RULE_cacheIndexStatement); + this.enterRule(localContext, 572, MySqlParser.RULE_cacheIndexStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6460; + this.state = 6510; this.match(MySqlParser.KW_CACHE); - this.state = 6461; + this.state = 6511; this.match(MySqlParser.KW_INDEX); - this.state = 6479; + this.state = 6529; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 929, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 938, this.context) ) { case 1: { - this.state = 6462; + this.state = 6512; this.tableIndex(); - this.state = 6467; + this.state = 6517; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6463; + this.state = 6513; this.match(MySqlParser.COMMA); - this.state = 6464; + this.state = 6514; this.tableIndex(); } } - this.state = 6469; + this.state = 6519; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -35549,13 +36327,13 @@ export class MySqlParser extends SQLParserBase { break; case 2: { - this.state = 6470; + this.state = 6520; this.tableName(); - this.state = 6471; + this.state = 6521; this.match(MySqlParser.KW_PARTITION); - this.state = 6472; + this.state = 6522; this.match(MySqlParser.LR_BRACKET); - this.state = 6475; + this.state = 6525; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -35888,6 +36666,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -36107,27 +36886,27 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 6473; + this.state = 6523; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 6474; + this.state = 6524; this.match(MySqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6477; + this.state = 6527; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 6481; + this.state = 6531; this.match(MySqlParser.KW_IN); - this.state = 6482; + this.state = 6532; this.databaseName(); } } @@ -36147,38 +36926,38 @@ export class MySqlParser extends SQLParserBase { } public flushStatement(): FlushStatementContext { let localContext = new FlushStatementContext(this.context, this.state); - this.enterRule(localContext, 570, MySqlParser.RULE_flushStatement); + this.enterRule(localContext, 574, MySqlParser.RULE_flushStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6484; + this.state = 6534; this.match(MySqlParser.KW_FLUSH); - this.state = 6486; + this.state = 6536; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 115 || _la === 450) { { - this.state = 6485; + this.state = 6535; this.tableActionOption(); } } - this.state = 6488; + this.state = 6538; this.flushOption(); - this.state = 6493; + this.state = 6543; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6489; + this.state = 6539; this.match(MySqlParser.COMMA); - this.state = 6490; + this.state = 6540; this.flushOption(); } } - this.state = 6495; + this.state = 6545; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -36200,19 +36979,19 @@ export class MySqlParser extends SQLParserBase { } public killStatement(): KillStatementContext { let localContext = new KillStatementContext(this.context, this.state); - this.enterRule(localContext, 572, MySqlParser.RULE_killStatement); + this.enterRule(localContext, 576, MySqlParser.RULE_killStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6496; + this.state = 6546; this.match(MySqlParser.KW_KILL); - this.state = 6498; + this.state = 6548; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 932, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 941, this.context) ) { case 1: { - this.state = 6497; + this.state = 6547; localContext._connectionFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 349 || _la === 548)) { @@ -36225,7 +37004,7 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 6500; + this.state = 6550; this.expression(0); } } @@ -36245,34 +37024,34 @@ export class MySqlParser extends SQLParserBase { } public loadIndexIntoCache(): LoadIndexIntoCacheContext { let localContext = new LoadIndexIntoCacheContext(this.context, this.state); - this.enterRule(localContext, 574, MySqlParser.RULE_loadIndexIntoCache); + this.enterRule(localContext, 578, MySqlParser.RULE_loadIndexIntoCache); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6502; + this.state = 6552; this.match(MySqlParser.KW_LOAD); - this.state = 6503; + this.state = 6553; this.match(MySqlParser.KW_INDEX); - this.state = 6504; + this.state = 6554; this.match(MySqlParser.KW_INTO); - this.state = 6505; + this.state = 6555; this.match(MySqlParser.KW_CACHE); - this.state = 6506; + this.state = 6556; this.loadedTableIndexes(); - this.state = 6511; + this.state = 6561; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6507; + this.state = 6557; this.match(MySqlParser.COMMA); - this.state = 6508; + this.state = 6558; this.loadedTableIndexes(); } } - this.state = 6513; + this.state = 6563; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -36294,28 +37073,28 @@ export class MySqlParser extends SQLParserBase { } public resetStatement(): ResetStatementContext { let localContext = new ResetStatementContext(this.context, this.state); - this.enterRule(localContext, 576, MySqlParser.RULE_resetStatement); + this.enterRule(localContext, 580, MySqlParser.RULE_resetStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6514; + this.state = 6564; this.match(MySqlParser.KW_RESET); - this.state = 6515; + this.state = 6565; this.resetOption(); - this.state = 6520; + this.state = 6570; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6516; + this.state = 6566; this.match(MySqlParser.COMMA); - this.state = 6517; + this.state = 6567; this.resetOption(); } } - this.state = 6522; + this.state = 6572; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -36337,38 +37116,38 @@ export class MySqlParser extends SQLParserBase { } public resetOption(): ResetOptionContext { let localContext = new ResetOptionContext(this.context, this.state); - this.enterRule(localContext, 578, MySqlParser.RULE_resetOption); + this.enterRule(localContext, 582, MySqlParser.RULE_resetOption); try { - this.state = 6528; + this.state = 6578; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_MASTER: this.enterOuterAlt(localContext, 1); { - this.state = 6523; + this.state = 6573; this.match(MySqlParser.KW_MASTER); } break; case MySqlParser.KW_REPLICA: this.enterOuterAlt(localContext, 2); { - this.state = 6524; + this.state = 6574; this.match(MySqlParser.KW_REPLICA); } break; case MySqlParser.KW_QUERY: this.enterOuterAlt(localContext, 3); { - this.state = 6525; + this.state = 6575; this.match(MySqlParser.KW_QUERY); - this.state = 6526; + this.state = 6576; this.match(MySqlParser.KW_CACHE); } break; case MySqlParser.KW_SLAVE: this.enterOuterAlt(localContext, 4); { - this.state = 6527; + this.state = 6577; this.match(MySqlParser.KW_SLAVE); } break; @@ -36392,30 +37171,30 @@ export class MySqlParser extends SQLParserBase { } public resetPersist(): ResetPersistContext { let localContext = new ResetPersistContext(this.context, this.state); - this.enterRule(localContext, 580, MySqlParser.RULE_resetPersist); + this.enterRule(localContext, 584, MySqlParser.RULE_resetPersist); try { this.enterOuterAlt(localContext, 1); { - this.state = 6530; + this.state = 6580; this.match(MySqlParser.KW_RESET); - this.state = 6531; + this.state = 6581; this.match(MySqlParser.KW_PERSIST); - this.state = 6536; + this.state = 6586; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 937, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 946, this.context) ) { case 1: { - this.state = 6533; + this.state = 6583; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 936, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 945, this.context) ) { case 1: { - this.state = 6532; + this.state = 6582; this.ifExists(); } break; } - this.state = 6535; + this.state = 6585; localContext._system_var_name = this.uid(); } break; @@ -36438,14 +37217,14 @@ export class MySqlParser extends SQLParserBase { } public resetAllChannel(): ResetAllChannelContext { let localContext = new ResetAllChannelContext(this.context, this.state); - this.enterRule(localContext, 582, MySqlParser.RULE_resetAllChannel); + this.enterRule(localContext, 586, MySqlParser.RULE_resetAllChannel); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6538; + this.state = 6588; this.match(MySqlParser.KW_RESET); - this.state = 6539; + this.state = 6589; _la = this.tokenStream.LA(1); if(!(_la === 563 || _la === 598)) { this.errorHandler.recoverInline(this); @@ -36454,22 +37233,22 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6541; + this.state = 6591; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7) { { - this.state = 6540; + this.state = 6590; this.match(MySqlParser.KW_ALL); } } - this.state = 6544; + this.state = 6594; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6543; + this.state = 6593; this.channelOption(); } } @@ -36492,11 +37271,11 @@ export class MySqlParser extends SQLParserBase { } public reStartStatement(): ReStartStatementContext { let localContext = new ReStartStatementContext(this.context, this.state); - this.enterRule(localContext, 584, MySqlParser.RULE_reStartStatement); + this.enterRule(localContext, 588, MySqlParser.RULE_reStartStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6546; + this.state = 6596; this.match(MySqlParser.KW_RESTART); } } @@ -36516,11 +37295,11 @@ export class MySqlParser extends SQLParserBase { } public shutdownStatement(): ShutdownStatementContext { let localContext = new ShutdownStatementContext(this.context, this.state); - this.enterRule(localContext, 586, MySqlParser.RULE_shutdownStatement); + this.enterRule(localContext, 590, MySqlParser.RULE_shutdownStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6548; + this.state = 6598; this.match(MySqlParser.KW_SHUTDOWN); } } @@ -36540,19 +37319,19 @@ export class MySqlParser extends SQLParserBase { } public tableIndex(): TableIndexContext { let localContext = new TableIndexContext(this.context, this.state); - this.enterRule(localContext, 588, MySqlParser.RULE_tableIndex); + this.enterRule(localContext, 592, MySqlParser.RULE_tableIndex); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6550; + this.state = 6600; this.tableName(); - this.state = 6556; + this.state = 6606; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 6551; + this.state = 6601; localContext._indexFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { @@ -36562,11 +37341,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6552; + this.state = 6602; this.match(MySqlParser.LR_BRACKET); - this.state = 6553; + this.state = 6603; this.indexNames(); - this.state = 6554; + this.state = 6604; this.match(MySqlParser.RR_BRACKET); } } @@ -36589,28 +37368,28 @@ export class MySqlParser extends SQLParserBase { } public flushOption(): FlushOptionContext { let localContext = new FlushOptionContext(this.context, this.state); - this.enterRule(localContext, 590, MySqlParser.RULE_flushOption); + this.enterRule(localContext, 594, MySqlParser.RULE_flushOption); let _la: number; try { - this.state = 6590; + this.state = 6640; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 947, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 956, this.context) ) { case 1: localContext = new SimpleFlushOptionContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6576; + this.state = 6626; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DES_KEY_FILE: { - this.state = 6558; + this.state = 6608; this.match(MySqlParser.KW_DES_KEY_FILE); } break; case MySqlParser.KW_HOSTS: { - this.state = 6559; + this.state = 6609; this.match(MySqlParser.KW_HOSTS); } break; @@ -36622,12 +37401,12 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RELAY: case MySqlParser.KW_SLOW: { - this.state = 6561; + this.state = 6611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 228 || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & 1073741829) !== 0) || _la === 556 || _la === 599) { { - this.state = 6560; + this.state = 6610; _la = this.tokenStream.LA(1); if(!(_la === 228 || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & 1073741829) !== 0) || _la === 556 || _la === 599)) { this.errorHandler.recoverInline(this); @@ -36639,56 +37418,56 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 6563; + this.state = 6613; this.match(MySqlParser.KW_LOGS); } break; case MySqlParser.KW_OPTIMIZER_COSTS: { - this.state = 6564; + this.state = 6614; this.match(MySqlParser.KW_OPTIMIZER_COSTS); } break; case MySqlParser.KW_PRIVILEGES: { - this.state = 6565; + this.state = 6615; this.match(MySqlParser.KW_PRIVILEGES); } break; case MySqlParser.KW_QUERY: { - this.state = 6566; + this.state = 6616; this.match(MySqlParser.KW_QUERY); - this.state = 6567; + this.state = 6617; this.match(MySqlParser.KW_CACHE); } break; case MySqlParser.KW_STATUS: { - this.state = 6568; + this.state = 6618; this.match(MySqlParser.KW_STATUS); } break; case MySqlParser.KW_USER_RESOURCES: { - this.state = 6569; + this.state = 6619; this.match(MySqlParser.KW_USER_RESOURCES); } break; case MySqlParser.KW_TABLES: { - this.state = 6570; + this.state = 6620; this.match(MySqlParser.KW_TABLES); - this.state = 6574; + this.state = 6624; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 942, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 951, this.context) ) { case 1: { - this.state = 6571; + this.state = 6621; this.match(MySqlParser.KW_WITH); - this.state = 6572; + this.state = 6622; this.match(MySqlParser.KW_READ); - this.state = 6573; + this.state = 6623; this.match(MySqlParser.KW_LOCK); } break; @@ -36704,16 +37483,16 @@ export class MySqlParser extends SQLParserBase { localContext = new ChannelFlushOptionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6578; + this.state = 6628; this.match(MySqlParser.KW_RELAY); - this.state = 6579; + this.state = 6629; this.match(MySqlParser.KW_LOGS); - this.state = 6581; + this.state = 6631; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 6580; + this.state = 6630; this.channelOption(); } } @@ -36724,7 +37503,7 @@ export class MySqlParser extends SQLParserBase { localContext = new TableFlushOptionContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 6583; + this.state = 6633; _la = this.tokenStream.LA(1); if(!(_la === 173 || _la === 752)) { this.errorHandler.recoverInline(this); @@ -36733,22 +37512,22 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6585; + this.state = 6635; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 945, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 954, this.context) ) { case 1: { - this.state = 6584; + this.state = 6634; this.tableNames(); } break; } - this.state = 6588; + this.state = 6638; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 946, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 955, this.context) ) { case 1: { - this.state = 6587; + this.state = 6637; this.flushTableOption(); } break; @@ -36773,28 +37552,28 @@ export class MySqlParser extends SQLParserBase { } public flushTableOption(): FlushTableOptionContext { let localContext = new FlushTableOptionContext(this.context, this.state); - this.enterRule(localContext, 592, MySqlParser.RULE_flushTableOption); + this.enterRule(localContext, 596, MySqlParser.RULE_flushTableOption); try { - this.state = 6597; + this.state = 6647; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_WITH: this.enterOuterAlt(localContext, 1); { - this.state = 6592; + this.state = 6642; this.match(MySqlParser.KW_WITH); - this.state = 6593; + this.state = 6643; this.match(MySqlParser.KW_READ); - this.state = 6594; + this.state = 6644; this.match(MySqlParser.KW_LOCK); } break; case MySqlParser.KW_FOR: this.enterOuterAlt(localContext, 2); { - this.state = 6595; + this.state = 6645; this.match(MySqlParser.KW_FOR); - this.state = 6596; + this.state = 6646; this.match(MySqlParser.KW_EXPORT); } break; @@ -36818,23 +37597,23 @@ export class MySqlParser extends SQLParserBase { } public loadedTableIndexes(): LoadedTableIndexesContext { let localContext = new LoadedTableIndexesContext(this.context, this.state); - this.enterRule(localContext, 594, MySqlParser.RULE_loadedTableIndexes); + this.enterRule(localContext, 598, MySqlParser.RULE_loadedTableIndexes); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6599; + this.state = 6649; this.tableName(); - this.state = 6607; + this.state = 6657; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 6600; + this.state = 6650; this.match(MySqlParser.KW_PARTITION); - this.state = 6601; + this.state = 6651; this.match(MySqlParser.LR_BRACKET); - this.state = 6604; + this.state = 6654; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -37167,6 +37946,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -37386,35 +38166,35 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 6602; + this.state = 6652; this.partitionNames(); } break; case MySqlParser.KW_ALL: { - this.state = 6603; + this.state = 6653; this.match(MySqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6606; + this.state = 6656; this.match(MySqlParser.RR_BRACKET); } } - this.state = 6616; + this.state = 6666; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 952, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 961, this.context) ) { case 1: { - this.state = 6610; + this.state = 6660; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82 || _la === 92) { { - this.state = 6609; + this.state = 6659; localContext._indexFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 82 || _la === 92)) { @@ -37427,23 +38207,23 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 6612; + this.state = 6662; this.match(MySqlParser.LR_BRACKET); - this.state = 6613; + this.state = 6663; this.indexNames(); - this.state = 6614; + this.state = 6664; this.match(MySqlParser.RR_BRACKET); } break; } - this.state = 6620; + this.state = 6670; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 6618; + this.state = 6668; this.match(MySqlParser.KW_IGNORE); - this.state = 6619; + this.state = 6669; this.match(MySqlParser.KW_LEAVES); } } @@ -37466,12 +38246,12 @@ export class MySqlParser extends SQLParserBase { } public simpleDescribeStatement(): SimpleDescribeStatementContext { let localContext = new SimpleDescribeStatementContext(this.context, this.state); - this.enterRule(localContext, 596, MySqlParser.RULE_simpleDescribeStatement); + this.enterRule(localContext, 600, MySqlParser.RULE_simpleDescribeStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6622; + this.state = 6672; localContext._command = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 131075) !== 0))) { @@ -37481,20 +38261,20 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6623; + this.state = 6673; this.tableName(); - this.state = 6626; + this.state = 6676; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 954, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 963, this.context) ) { case 1: { - this.state = 6624; + this.state = 6674; localContext._column = this.columnName(); } break; case 2: { - this.state = 6625; + this.state = 6675; localContext._pattern = this.match(MySqlParser.STRING_LITERAL); } break; @@ -37517,12 +38297,12 @@ export class MySqlParser extends SQLParserBase { } public fullDescribeStatement(): FullDescribeStatementContext { let localContext = new FullDescribeStatementContext(this.context, this.state); - this.enterRule(localContext, 598, MySqlParser.RULE_fullDescribeStatement); + this.enterRule(localContext, 602, MySqlParser.RULE_fullDescribeStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6628; + this.state = 6678; localContext._command = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 131075) !== 0))) { @@ -37532,28 +38312,28 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6634; + this.state = 6684; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_EXTENDED: { - this.state = 6629; + this.state = 6679; this.match(MySqlParser.KW_EXTENDED); } break; case MySqlParser.KW_PARTITIONS: { - this.state = 6630; + this.state = 6680; this.match(MySqlParser.KW_PARTITIONS); } break; case MySqlParser.KW_FORMAT: { - this.state = 6631; + this.state = 6681; this.match(MySqlParser.KW_FORMAT); - this.state = 6632; + this.state = 6682; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6633; + this.state = 6683; _la = this.tokenStream.LA(1); if(!(_la === 442 || _la === 663 || _la === 666)) { this.errorHandler.recoverInline(this); @@ -37575,7 +38355,7 @@ export class MySqlParser extends SQLParserBase { default: break; } - this.state = 6636; + this.state = 6686; this.describeObjectClause(); } } @@ -37595,12 +38375,12 @@ export class MySqlParser extends SQLParserBase { } public analyzeDescribeStatement(): AnalyzeDescribeStatementContext { let localContext = new AnalyzeDescribeStatementContext(this.context, this.state); - this.enterRule(localContext, 600, MySqlParser.RULE_analyzeDescribeStatement); + this.enterRule(localContext, 604, MySqlParser.RULE_analyzeDescribeStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6638; + this.state = 6688; localContext._command = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 45)) & ~0x1F) === 0 && ((1 << (_la - 45)) & 131075) !== 0))) { @@ -37610,23 +38390,23 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6639; + this.state = 6689; this.match(MySqlParser.KW_ANALYZE); - this.state = 6643; + this.state = 6693; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 826) { { - this.state = 6640; + this.state = 6690; this.match(MySqlParser.KW_FORMAT); - this.state = 6641; + this.state = 6691; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6642; + this.state = 6692; this.match(MySqlParser.KW_TREE); } } - this.state = 6645; + this.state = 6695; this.selectStatement(); } } @@ -37646,13 +38426,13 @@ export class MySqlParser extends SQLParserBase { } public helpStatement(): HelpStatementContext { let localContext = new HelpStatementContext(this.context, this.state); - this.enterRule(localContext, 602, MySqlParser.RULE_helpStatement); + this.enterRule(localContext, 606, MySqlParser.RULE_helpStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6647; + this.state = 6697; this.match(MySqlParser.KW_HELP); - this.state = 6648; + this.state = 6698; this.match(MySqlParser.STRING_LITERAL); } } @@ -37672,13 +38452,13 @@ export class MySqlParser extends SQLParserBase { } public useStatement(): UseStatementContext { let localContext = new UseStatementContext(this.context, this.state); - this.enterRule(localContext, 604, MySqlParser.RULE_useStatement); + this.enterRule(localContext, 608, MySqlParser.RULE_useStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6650; + this.state = 6700; this.match(MySqlParser.KW_USE); - this.state = 6651; + this.state = 6701; this.databaseName(); } } @@ -37698,73 +38478,73 @@ export class MySqlParser extends SQLParserBase { } public signalStatement(): SignalStatementContext { let localContext = new SignalStatementContext(this.context, this.state); - this.enterRule(localContext, 606, MySqlParser.RULE_signalStatement); + this.enterRule(localContext, 610, MySqlParser.RULE_signalStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6653; + this.state = 6703; this.match(MySqlParser.KW_SIGNAL); - this.state = 6661; + this.state = 6711; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SQLSTATE: { { - this.state = 6654; + this.state = 6704; this.match(MySqlParser.KW_SQLSTATE); - this.state = 6656; + this.state = 6706; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 682) { { - this.state = 6655; + this.state = 6705; this.match(MySqlParser.KW_VALUE); } } - this.state = 6658; + this.state = 6708; this.stringLiteral(); } } break; case MySqlParser.ID: { - this.state = 6659; + this.state = 6709; this.match(MySqlParser.ID); } break; case MySqlParser.REVERSE_QUOTE_ID: { - this.state = 6660; + this.state = 6710; this.match(MySqlParser.REVERSE_QUOTE_ID); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6672; + this.state = 6722; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 960, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 969, this.context) ) { case 1: { - this.state = 6663; + this.state = 6713; this.match(MySqlParser.KW_SET); - this.state = 6664; + this.state = 6714; this.signalConditionInformation(); - this.state = 6669; + this.state = 6719; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6665; + this.state = 6715; this.match(MySqlParser.COMMA); - this.state = 6666; + this.state = 6716; this.signalConditionInformation(); } } - this.state = 6671; + this.state = 6721; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -37789,45 +38569,45 @@ export class MySqlParser extends SQLParserBase { } public resignalStatement(): ResignalStatementContext { let localContext = new ResignalStatementContext(this.context, this.state); - this.enterRule(localContext, 608, MySqlParser.RULE_resignalStatement); + this.enterRule(localContext, 612, MySqlParser.RULE_resignalStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6674; + this.state = 6724; this.match(MySqlParser.KW_RESIGNAL); - this.state = 6682; + this.state = 6732; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SQLSTATE: { { - this.state = 6675; + this.state = 6725; this.match(MySqlParser.KW_SQLSTATE); - this.state = 6677; + this.state = 6727; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 682) { { - this.state = 6676; + this.state = 6726; this.match(MySqlParser.KW_VALUE); } } - this.state = 6679; + this.state = 6729; this.stringLiteral(); } } break; case MySqlParser.ID: { - this.state = 6680; + this.state = 6730; this.match(MySqlParser.ID); } break; case MySqlParser.REVERSE_QUOTE_ID: { - this.state = 6681; + this.state = 6731; this.match(MySqlParser.REVERSE_QUOTE_ID); } break; @@ -37898,28 +38678,28 @@ export class MySqlParser extends SQLParserBase { default: break; } - this.state = 6693; + this.state = 6743; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 964, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 973, this.context) ) { case 1: { - this.state = 6684; + this.state = 6734; this.match(MySqlParser.KW_SET); - this.state = 6685; + this.state = 6735; this.signalConditionInformation(); - this.state = 6690; + this.state = 6740; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6686; + this.state = 6736; this.match(MySqlParser.COMMA); - this.state = 6687; + this.state = 6737; this.signalConditionInformation(); } } - this.state = 6692; + this.state = 6742; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -37944,12 +38724,12 @@ export class MySqlParser extends SQLParserBase { } public signalConditionInformation(): SignalConditionInformationContext { let localContext = new SignalConditionInformationContext(this.context, this.state); - this.enterRule(localContext, 610, MySqlParser.RULE_signalConditionInformation); + this.enterRule(localContext, 614, MySqlParser.RULE_signalConditionInformation); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6695; + this.state = 6745; _la = this.tokenStream.LA(1); if(!(((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 137887873) !== 0) || _la === 487 || _la === 495 || _la === 650 || _la === 657 || _la === 822 || _la === 832)) { this.errorHandler.recoverInline(this); @@ -37958,29 +38738,29 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6696; + this.state = 6746; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6701; + this.state = 6751; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.START_NATIONAL_STRING_LITERAL: case MySqlParser.STRING_LITERAL: case MySqlParser.STRING_CHARSET_NAME: { - this.state = 6697; + this.state = 6747; this.stringLiteral(); } break; case MySqlParser.DECIMAL_LITERAL: { - this.state = 6698; + this.state = 6748; this.match(MySqlParser.DECIMAL_LITERAL); } break; case MySqlParser.LOCAL_ID: case MySqlParser.GLOBAL_ID: { - this.state = 6699; + this.state = 6749; this.mysqlVariable(); } break; @@ -38314,6 +39094,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -38531,7 +39312,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.MOD: case MySqlParser.ID: { - this.state = 6700; + this.state = 6750; this.simpleId(); } break; @@ -38556,38 +39337,38 @@ export class MySqlParser extends SQLParserBase { } public withStatement(): WithStatementContext { let localContext = new WithStatementContext(this.context, this.state); - this.enterRule(localContext, 612, MySqlParser.RULE_withStatement); + this.enterRule(localContext, 616, MySqlParser.RULE_withStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6703; + this.state = 6753; this.match(MySqlParser.KW_WITH); - this.state = 6705; + this.state = 6755; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 966, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 975, this.context) ) { case 1: { - this.state = 6704; + this.state = 6754; this.match(MySqlParser.KW_RECURSIVE); } break; } - this.state = 6707; + this.state = 6757; this.commonTableExpressions(); - this.state = 6712; + this.state = 6762; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6708; + this.state = 6758; this.match(MySqlParser.COMMA); - this.state = 6709; + this.state = 6759; this.commonTableExpressions(); } } - this.state = 6714; + this.state = 6764; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -38609,30 +39390,30 @@ export class MySqlParser extends SQLParserBase { } public tableStatement(): TableStatementContext { let localContext = new TableStatementContext(this.context, this.state); - this.enterRule(localContext, 614, MySqlParser.RULE_tableStatement); + this.enterRule(localContext, 618, MySqlParser.RULE_tableStatement); try { this.enterOuterAlt(localContext, 1); { - this.state = 6715; + this.state = 6765; this.match(MySqlParser.KW_TABLE); - this.state = 6716; + this.state = 6766; this.tableName(); - this.state = 6718; + this.state = 6768; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 968, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 977, this.context) ) { case 1: { - this.state = 6717; + this.state = 6767; this.orderByClause(); } break; } - this.state = 6721; + this.state = 6771; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 969, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 978, this.context) ) { case 1: { - this.state = 6720; + this.state = 6770; this.limitClause(); } break; @@ -38655,19 +39436,19 @@ export class MySqlParser extends SQLParserBase { } public diagnosticsStatement(): DiagnosticsStatementContext { let localContext = new DiagnosticsStatementContext(this.context, this.state); - this.enterRule(localContext, 616, MySqlParser.RULE_diagnosticsStatement); + this.enterRule(localContext, 620, MySqlParser.RULE_diagnosticsStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6723; + this.state = 6773; this.match(MySqlParser.KW_GET); - this.state = 6725; + this.state = 6775; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36 || _la === 170) { { - this.state = 6724; + this.state = 6774; _la = this.tokenStream.LA(1); if(!(_la === 36 || _la === 170)) { this.errorHandler.recoverInline(this); @@ -38679,19 +39460,19 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 6727; + this.state = 6777; this.match(MySqlParser.KW_DIAGNOSTICS); - this.state = 6759; + this.state = 6809; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 974, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 983, this.context) ) { case 1: { { - this.state = 6728; + this.state = 6778; this.variableClause(); - this.state = 6729; + this.state = 6779; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6730; + this.state = 6780; _la = this.tokenStream.LA(1); if(!(_la === 117 || _la === 831)) { this.errorHandler.recoverInline(this); @@ -38700,19 +39481,19 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6738; + this.state = 6788; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6731; + this.state = 6781; this.match(MySqlParser.COMMA); - this.state = 6732; + this.state = 6782; this.variableClause(); - this.state = 6733; + this.state = 6783; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6734; + this.state = 6784; _la = this.tokenStream.LA(1); if(!(_la === 117 || _la === 831)) { this.errorHandler.recoverInline(this); @@ -38723,7 +39504,7 @@ export class MySqlParser extends SQLParserBase { } } } - this.state = 6740; + this.state = 6790; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -38733,9 +39514,9 @@ export class MySqlParser extends SQLParserBase { case 2: { { - this.state = 6741; + this.state = 6791; this.match(MySqlParser.KW_CONDITION); - this.state = 6744; + this.state = 6794; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.ZERO_DECIMAL: @@ -38745,7 +39526,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.DECIMAL_LITERAL: case MySqlParser.REAL_LITERAL: { - this.state = 6742; + this.state = 6792; this.decimalLiteral(); } break; @@ -39081,6 +39862,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -39303,36 +40085,36 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.LOCAL_ID: case MySqlParser.GLOBAL_ID: { - this.state = 6743; + this.state = 6793; this.variableClause(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6746; + this.state = 6796; this.variableClause(); - this.state = 6747; + this.state = 6797; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6748; + this.state = 6798; this.diagnosticsConditionInformationName(); - this.state = 6756; + this.state = 6806; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6749; + this.state = 6799; this.match(MySqlParser.COMMA); - this.state = 6750; + this.state = 6800; this.variableClause(); - this.state = 6751; + this.state = 6801; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 6752; + this.state = 6802; this.diagnosticsConditionInformationName(); } } - this.state = 6758; + this.state = 6808; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -39358,12 +40140,12 @@ export class MySqlParser extends SQLParserBase { } public diagnosticsConditionInformationName(): DiagnosticsConditionInformationNameContext { let localContext = new DiagnosticsConditionInformationNameContext(this.context, this.state); - this.enterRule(localContext, 618, MySqlParser.RULE_diagnosticsConditionInformationName); + this.enterRule(localContext, 622, MySqlParser.RULE_diagnosticsConditionInformationName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6761; + this.state = 6811; _la = this.tokenStream.LA(1); if(!(((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 137887873) !== 0) || _la === 487 || _la === 495 || _la === 578 || _la === 650 || _la === 657 || _la === 822 || _la === 832)) { this.errorHandler.recoverInline(this); @@ -39390,9 +40172,9 @@ export class MySqlParser extends SQLParserBase { } public describeObjectClause(): DescribeObjectClauseContext { let localContext = new DescribeObjectClauseContext(this.context, this.state); - this.enterRule(localContext, 620, MySqlParser.RULE_describeObjectClause); + this.enterRule(localContext, 624, MySqlParser.RULE_describeObjectClause); try { - this.state = 6773; + this.state = 6823; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DELETE: @@ -39404,37 +40186,37 @@ export class MySqlParser extends SQLParserBase { localContext = new DescribeStatementsContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6768; + this.state = 6818; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_SELECT: case MySqlParser.LR_BRACKET: { - this.state = 6763; + this.state = 6813; this.selectStatement(); } break; case MySqlParser.KW_DELETE: { - this.state = 6764; + this.state = 6814; this.deleteStatement(); } break; case MySqlParser.KW_INSERT: { - this.state = 6765; + this.state = 6815; this.insertStatement(); } break; case MySqlParser.KW_REPLACE: { - this.state = 6766; + this.state = 6816; this.replaceStatement(); } break; case MySqlParser.KW_UPDATE: { - this.state = 6767; + this.state = 6817; this.updateStatement(); } break; @@ -39447,11 +40229,11 @@ export class MySqlParser extends SQLParserBase { localContext = new DescribeConnectionContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6770; + this.state = 6820; this.match(MySqlParser.KW_FOR); - this.state = 6771; + this.state = 6821; this.match(MySqlParser.KW_CONNECTION); - this.state = 6772; + this.state = 6822; (localContext as DescribeConnectionContext)._connection_id = this.uid(); } break; @@ -39475,11 +40257,11 @@ export class MySqlParser extends SQLParserBase { } public databaseNameCreate(): DatabaseNameCreateContext { let localContext = new DatabaseNameCreateContext(this.context, this.state); - this.enterRule(localContext, 622, MySqlParser.RULE_databaseNameCreate); + this.enterRule(localContext, 626, MySqlParser.RULE_databaseNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6775; + this.state = 6825; this.fullId(); } } @@ -39499,11 +40281,11 @@ export class MySqlParser extends SQLParserBase { } public databaseName(): DatabaseNameContext { let localContext = new DatabaseNameContext(this.context, this.state); - this.enterRule(localContext, 624, MySqlParser.RULE_databaseName); + this.enterRule(localContext, 628, MySqlParser.RULE_databaseName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6777; + this.state = 6827; this.fullId(); } } @@ -39523,11 +40305,11 @@ export class MySqlParser extends SQLParserBase { } public functionNameCreate(): FunctionNameCreateContext { let localContext = new FunctionNameCreateContext(this.context, this.state); - this.enterRule(localContext, 626, MySqlParser.RULE_functionNameCreate); + this.enterRule(localContext, 630, MySqlParser.RULE_functionNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6779; + this.state = 6829; this.fullId(); } } @@ -39547,11 +40329,11 @@ export class MySqlParser extends SQLParserBase { } public functionName(): FunctionNameContext { let localContext = new FunctionNameContext(this.context, this.state); - this.enterRule(localContext, 628, MySqlParser.RULE_functionName); + this.enterRule(localContext, 632, MySqlParser.RULE_functionName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6781; + this.state = 6831; this.fullId(); } } @@ -39571,11 +40353,11 @@ export class MySqlParser extends SQLParserBase { } public viewNameCreate(): ViewNameCreateContext { let localContext = new ViewNameCreateContext(this.context, this.state); - this.enterRule(localContext, 630, MySqlParser.RULE_viewNameCreate); + this.enterRule(localContext, 634, MySqlParser.RULE_viewNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6783; + this.state = 6833; this.fullId(); } } @@ -39595,11 +40377,11 @@ export class MySqlParser extends SQLParserBase { } public viewName(): ViewNameContext { let localContext = new ViewNameContext(this.context, this.state); - this.enterRule(localContext, 632, MySqlParser.RULE_viewName); + this.enterRule(localContext, 636, MySqlParser.RULE_viewName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6785; + this.state = 6835; this.fullId(); } } @@ -39619,11 +40401,11 @@ export class MySqlParser extends SQLParserBase { } public indexNameCreate(): IndexNameCreateContext { let localContext = new IndexNameCreateContext(this.context, this.state); - this.enterRule(localContext, 634, MySqlParser.RULE_indexNameCreate); + this.enterRule(localContext, 638, MySqlParser.RULE_indexNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6787; + this.state = 6837; this.uid(); } } @@ -39643,26 +40425,26 @@ export class MySqlParser extends SQLParserBase { } public indexNames(): IndexNamesContext { let localContext = new IndexNamesContext(this.context, this.state); - this.enterRule(localContext, 636, MySqlParser.RULE_indexNames); + this.enterRule(localContext, 640, MySqlParser.RULE_indexNames); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6789; + this.state = 6839; this.indexName(); - this.state = 6794; + this.state = 6844; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6790; + this.state = 6840; this.match(MySqlParser.COMMA); - this.state = 6791; + this.state = 6841; this.indexName(); } } - this.state = 6796; + this.state = 6846; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -39684,11 +40466,11 @@ export class MySqlParser extends SQLParserBase { } public indexName(): IndexNameContext { let localContext = new IndexNameContext(this.context, this.state); - this.enterRule(localContext, 638, MySqlParser.RULE_indexName); + this.enterRule(localContext, 642, MySqlParser.RULE_indexName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6797; + this.state = 6847; this.uid(); } } @@ -39708,11 +40490,11 @@ export class MySqlParser extends SQLParserBase { } public groupNameCreate(): GroupNameCreateContext { let localContext = new GroupNameCreateContext(this.context, this.state); - this.enterRule(localContext, 640, MySqlParser.RULE_groupNameCreate); + this.enterRule(localContext, 644, MySqlParser.RULE_groupNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6799; + this.state = 6849; this.uid(); } } @@ -39732,11 +40514,11 @@ export class MySqlParser extends SQLParserBase { } public groupName(): GroupNameContext { let localContext = new GroupNameContext(this.context, this.state); - this.enterRule(localContext, 642, MySqlParser.RULE_groupName); + this.enterRule(localContext, 646, MySqlParser.RULE_groupName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6801; + this.state = 6851; this.uid(); } } @@ -39756,11 +40538,11 @@ export class MySqlParser extends SQLParserBase { } public tableNameCreate(): TableNameCreateContext { let localContext = new TableNameCreateContext(this.context, this.state); - this.enterRule(localContext, 644, MySqlParser.RULE_tableNameCreate); + this.enterRule(localContext, 648, MySqlParser.RULE_tableNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6803; + this.state = 6853; this.fullId(); } } @@ -39780,30 +40562,30 @@ export class MySqlParser extends SQLParserBase { } public tableNames(): TableNamesContext { let localContext = new TableNamesContext(this.context, this.state); - this.enterRule(localContext, 646, MySqlParser.RULE_tableNames); + this.enterRule(localContext, 650, MySqlParser.RULE_tableNames); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6805; + this.state = 6855; this.tableName(); - this.state = 6810; + this.state = 6860; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 978, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 987, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6806; + this.state = 6856; this.match(MySqlParser.COMMA); - this.state = 6807; + this.state = 6857; this.tableName(); } } } - this.state = 6812; + this.state = 6862; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 978, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 987, this.context); } } } @@ -39823,11 +40605,11 @@ export class MySqlParser extends SQLParserBase { } public tableName(): TableNameContext { let localContext = new TableNameContext(this.context, this.state); - this.enterRule(localContext, 648, MySqlParser.RULE_tableName); + this.enterRule(localContext, 652, MySqlParser.RULE_tableName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6813; + this.state = 6863; this.fullId(); } } @@ -39847,26 +40629,26 @@ export class MySqlParser extends SQLParserBase { } public userOrRoleNames(): UserOrRoleNamesContext { let localContext = new UserOrRoleNamesContext(this.context, this.state); - this.enterRule(localContext, 650, MySqlParser.RULE_userOrRoleNames); + this.enterRule(localContext, 654, MySqlParser.RULE_userOrRoleNames); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6815; + this.state = 6865; this.userOrRoleName(); - this.state = 6820; + this.state = 6870; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6816; + this.state = 6866; this.match(MySqlParser.COMMA); - this.state = 6817; + this.state = 6867; this.userOrRoleName(); } } - this.state = 6822; + this.state = 6872; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -39888,22 +40670,22 @@ export class MySqlParser extends SQLParserBase { } public userOrRoleName(): UserOrRoleNameContext { let localContext = new UserOrRoleNameContext(this.context, this.state); - this.enterRule(localContext, 652, MySqlParser.RULE_userOrRoleName); + this.enterRule(localContext, 656, MySqlParser.RULE_userOrRoleName); try { - this.state = 6825; + this.state = 6875; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 980, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 989, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6823; + this.state = 6873; this.userName(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6824; + this.state = 6874; this.uid(); } break; @@ -39925,30 +40707,30 @@ export class MySqlParser extends SQLParserBase { } public columnNameCreate(): ColumnNameCreateContext { let localContext = new ColumnNameCreateContext(this.context, this.state); - this.enterRule(localContext, 654, MySqlParser.RULE_columnNameCreate); + this.enterRule(localContext, 658, MySqlParser.RULE_columnNameCreate); let _la: number; try { - this.state = 6841; + this.state = 6891; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 985, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 994, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6827; + this.state = 6877; this.uid(); - this.state = 6832; + this.state = 6882; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 6828; + this.state = 6878; this.dottedId(); - this.state = 6830; + this.state = 6880; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 6829; + this.state = 6879; this.dottedId(); } } @@ -39961,24 +40743,24 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6835; + this.state = 6885; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 983, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 992, this.context) ) { case 1: { - this.state = 6834; + this.state = 6884; this.matchWildcard(); } break; } - this.state = 6837; + this.state = 6887; this.dottedId(); - this.state = 6839; + this.state = 6889; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 865) { { - this.state = 6838; + this.state = 6888; this.dottedId(); } } @@ -40003,30 +40785,30 @@ export class MySqlParser extends SQLParserBase { } public columnNames(): ColumnNamesContext { let localContext = new ColumnNamesContext(this.context, this.state); - this.enterRule(localContext, 656, MySqlParser.RULE_columnNames); + this.enterRule(localContext, 660, MySqlParser.RULE_columnNames); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6843; + this.state = 6893; this.columnName(); - this.state = 6848; + this.state = 6898; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 986, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 995, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6844; + this.state = 6894; this.match(MySqlParser.COMMA); - this.state = 6845; + this.state = 6895; this.columnName(); } } } - this.state = 6850; + this.state = 6900; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 986, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 995, this.context); } } } @@ -40046,29 +40828,29 @@ export class MySqlParser extends SQLParserBase { } public columnName(): ColumnNameContext { let localContext = new ColumnNameContext(this.context, this.state); - this.enterRule(localContext, 658, MySqlParser.RULE_columnName); + this.enterRule(localContext, 662, MySqlParser.RULE_columnName); try { - this.state = 6866; + this.state = 6916; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 991, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1000, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6851; + this.state = 6901; this.uid(); - this.state = 6856; + this.state = 6906; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 988, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 997, this.context) ) { case 1: { - this.state = 6852; + this.state = 6902; this.dottedId(); - this.state = 6854; + this.state = 6904; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 987, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 996, this.context) ) { case 1: { - this.state = 6853; + this.state = 6903; this.dottedId(); } break; @@ -40081,24 +40863,24 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6859; + this.state = 6909; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 989, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 998, this.context) ) { case 1: { - this.state = 6858; + this.state = 6908; this.matchWildcard(); } break; } - this.state = 6861; + this.state = 6911; this.dottedId(); - this.state = 6863; + this.state = 6913; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 990, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 999, this.context) ) { case 1: { - this.state = 6862; + this.state = 6912; this.dottedId(); } break; @@ -40108,7 +40890,7 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6865; + this.state = 6915; if (!(this.shouldMatchEmpty())) { throw this.createFailedPredicateException("this.shouldMatchEmpty()"); } @@ -40132,11 +40914,11 @@ export class MySqlParser extends SQLParserBase { } public tablespaceNameCreate(): TablespaceNameCreateContext { let localContext = new TablespaceNameCreateContext(this.context, this.state); - this.enterRule(localContext, 660, MySqlParser.RULE_tablespaceNameCreate); + this.enterRule(localContext, 664, MySqlParser.RULE_tablespaceNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6868; + this.state = 6918; this.uid(); } } @@ -40156,11 +40938,11 @@ export class MySqlParser extends SQLParserBase { } public tablespaceName(): TablespaceNameContext { let localContext = new TablespaceNameContext(this.context, this.state); - this.enterRule(localContext, 662, MySqlParser.RULE_tablespaceName); + this.enterRule(localContext, 666, MySqlParser.RULE_tablespaceName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6870; + this.state = 6920; this.uid(); } } @@ -40180,11 +40962,11 @@ export class MySqlParser extends SQLParserBase { } public partitionNameCreate(): PartitionNameCreateContext { let localContext = new PartitionNameCreateContext(this.context, this.state); - this.enterRule(localContext, 664, MySqlParser.RULE_partitionNameCreate); + this.enterRule(localContext, 668, MySqlParser.RULE_partitionNameCreate); try { this.enterOuterAlt(localContext, 1); { - this.state = 6872; + this.state = 6922; this.uid(); } } @@ -40204,30 +40986,30 @@ export class MySqlParser extends SQLParserBase { } public partitionNames(): PartitionNamesContext { let localContext = new PartitionNamesContext(this.context, this.state); - this.enterRule(localContext, 666, MySqlParser.RULE_partitionNames); + this.enterRule(localContext, 670, MySqlParser.RULE_partitionNames); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6874; + this.state = 6924; this.partitionName(); - this.state = 6879; + this.state = 6929; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 992, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1001, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6875; + this.state = 6925; this.match(MySqlParser.COMMA); - this.state = 6876; + this.state = 6926; this.partitionName(); } } } - this.state = 6881; + this.state = 6931; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 992, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1001, this.context); } } } @@ -40247,11 +41029,11 @@ export class MySqlParser extends SQLParserBase { } public partitionName(): PartitionNameContext { let localContext = new PartitionNameContext(this.context, this.state); - this.enterRule(localContext, 668, MySqlParser.RULE_partitionName); + this.enterRule(localContext, 672, MySqlParser.RULE_partitionName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6882; + this.state = 6932; this.uid(); } } @@ -40271,28 +41053,28 @@ export class MySqlParser extends SQLParserBase { } public indexColumnName(): IndexColumnNameContext { let localContext = new IndexColumnNameContext(this.context, this.state); - this.enterRule(localContext, 670, MySqlParser.RULE_indexColumnName); + this.enterRule(localContext, 674, MySqlParser.RULE_indexColumnName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6892; + this.state = 6942; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 994, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1003, this.context) ) { case 1: { - this.state = 6884; + this.state = 6934; this.uid(); - this.state = 6889; + this.state = 6939; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 993, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1002, this.context) ) { case 1: { - this.state = 6885; + this.state = 6935; this.match(MySqlParser.LR_BRACKET); - this.state = 6886; + this.state = 6936; this.decimalLiteral(); - this.state = 6887; + this.state = 6937; this.match(MySqlParser.RR_BRACKET); } break; @@ -40301,17 +41083,17 @@ export class MySqlParser extends SQLParserBase { break; case 2: { - this.state = 6891; + this.state = 6941; this.expression(0); } break; } - this.state = 6895; + this.state = 6945; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 995, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1004, this.context) ) { case 1: { - this.state = 6894; + this.state = 6944; localContext._sortType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 14 || _la === 45)) { @@ -40342,15 +41124,15 @@ export class MySqlParser extends SQLParserBase { } public userHostPort(): UserHostPortContext { let localContext = new UserHostPortContext(this.context, this.state); - this.enterRule(localContext, 672, MySqlParser.RULE_userHostPort); + this.enterRule(localContext, 676, MySqlParser.RULE_userHostPort); try { this.enterOuterAlt(localContext, 1); { - this.state = 6897; + this.state = 6947; this.userAtHost(); - this.state = 6898; + this.state = 6948; this.match(MySqlParser.COLON_SYMB); - this.state = 6899; + this.state = 6949; this.decimalLiteral(); } } @@ -40370,13 +41152,13 @@ export class MySqlParser extends SQLParserBase { } public userAtHost(): UserAtHostContext { let localContext = new UserAtHostContext(this.context, this.state); - this.enterRule(localContext, 674, MySqlParser.RULE_userAtHost); + this.enterRule(localContext, 678, MySqlParser.RULE_userAtHost); try { this.enterOuterAlt(localContext, 1); { - this.state = 6901; + this.state = 6951; this.simpleUserName(); - this.state = 6902; + this.state = 6952; this.match(MySqlParser.HOST_IP_ADDRESS); } } @@ -40396,36 +41178,36 @@ export class MySqlParser extends SQLParserBase { } public simpleUserName(): SimpleUserNameContext { let localContext = new SimpleUserNameContext(this.context, this.state); - this.enterRule(localContext, 676, MySqlParser.RULE_simpleUserName); + this.enterRule(localContext, 680, MySqlParser.RULE_simpleUserName); try { - this.state = 6908; + this.state = 6958; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 996, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1005, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6904; + this.state = 6954; this.match(MySqlParser.STRING_LITERAL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6905; + this.state = 6955; this.match(MySqlParser.ID); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6906; + this.state = 6956; this.match(MySqlParser.KW_ADMIN); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 6907; + this.state = 6957; this.keywordsCanBeId(); } break; @@ -40447,12 +41229,12 @@ export class MySqlParser extends SQLParserBase { } public hostName(): HostNameContext { let localContext = new HostNameContext(this.context, this.state); - this.enterRule(localContext, 678, MySqlParser.RULE_hostName); + this.enterRule(localContext, 682, MySqlParser.RULE_hostName); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6910; + this.state = 6960; _la = this.tokenStream.LA(1); if(!(((((_la - 870)) & ~0x1F) === 0 && ((1 << (_la - 870)) & 6291457) !== 0))) { this.errorHandler.recoverInline(this); @@ -40479,23 +41261,23 @@ export class MySqlParser extends SQLParserBase { } public userName(): UserNameContext { let localContext = new UserNameContext(this.context, this.state); - this.enterRule(localContext, 680, MySqlParser.RULE_userName); + this.enterRule(localContext, 684, MySqlParser.RULE_userName); let _la: number; try { - this.state = 6917; + this.state = 6967; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 998, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1007, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6912; + this.state = 6962; this.simpleUserName(); - this.state = 6914; + this.state = 6964; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 870)) & ~0x1F) === 0 && ((1 << (_la - 870)) & 6291457) !== 0)) { { - this.state = 6913; + this.state = 6963; this.hostName(); } } @@ -40505,7 +41287,7 @@ export class MySqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6916; + this.state = 6966; this.currentUserExpression(); } break; @@ -40527,12 +41309,12 @@ export class MySqlParser extends SQLParserBase { } public mysqlVariable(): MysqlVariableContext { let localContext = new MysqlVariableContext(this.context, this.state); - this.enterRule(localContext, 682, MySqlParser.RULE_mysqlVariable); + this.enterRule(localContext, 686, MySqlParser.RULE_mysqlVariable); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6919; + this.state = 6969; _la = this.tokenStream.LA(1); if(!(_la === 892 || _la === 893)) { this.errorHandler.recoverInline(this); @@ -40559,36 +41341,36 @@ export class MySqlParser extends SQLParserBase { } public charsetName(): CharsetNameContext { let localContext = new CharsetNameContext(this.context, this.state); - this.enterRule(localContext, 684, MySqlParser.RULE_charsetName); + this.enterRule(localContext, 688, MySqlParser.RULE_charsetName); try { - this.state = 6925; + this.state = 6975; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 999, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1008, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6921; + this.state = 6971; this.match(MySqlParser.KW_BINARY); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6922; + this.state = 6972; this.charsetNameBase(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6923; + this.state = 6973; this.match(MySqlParser.STRING_LITERAL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 6924; + this.state = 6974; this.match(MySqlParser.CHARSET_REVERSE_QOUTE_STRING); } break; @@ -40610,11 +41392,11 @@ export class MySqlParser extends SQLParserBase { } public collationName(): CollationNameContext { let localContext = new CollationNameContext(this.context, this.state); - this.enterRule(localContext, 686, MySqlParser.RULE_collationName); + this.enterRule(localContext, 690, MySqlParser.RULE_collationName); try { this.enterOuterAlt(localContext, 1); { - this.state = 6927; + this.state = 6977; this.uid(); } } @@ -40634,9 +41416,9 @@ export class MySqlParser extends SQLParserBase { } public engineName(): EngineNameContext { let localContext = new EngineNameContext(this.context, this.state); - this.enterRule(localContext, 688, MySqlParser.RULE_engineName); + this.enterRule(localContext, 692, MySqlParser.RULE_engineName); try { - this.state = 6932; + this.state = 6982; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CONNECT: @@ -40654,21 +41436,21 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_TOKUDB: this.enterOuterAlt(localContext, 1); { - this.state = 6929; + this.state = 6979; this.engineNameBase(); } break; case MySqlParser.ID: this.enterOuterAlt(localContext, 2); { - this.state = 6930; + this.state = 6980; this.match(MySqlParser.ID); } break; case MySqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 3); { - this.state = 6931; + this.state = 6981; this.match(MySqlParser.STRING_LITERAL); } break; @@ -40692,12 +41474,12 @@ export class MySqlParser extends SQLParserBase { } public engineNameBase(): EngineNameBaseContext { let localContext = new EngineNameBaseContext(this.context, this.state); - this.enterRule(localContext, 690, MySqlParser.RULE_engineNameBase); + this.enterRule(localContext, 694, MySqlParser.RULE_engineNameBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6934; + this.state = 6984; _la = this.tokenStream.LA(1); if(!(_la === 348 || ((((_la - 797)) & ~0x1F) === 0 && ((1 << (_la - 797)) & 4095) !== 0))) { this.errorHandler.recoverInline(this); @@ -40724,46 +41506,46 @@ export class MySqlParser extends SQLParserBase { } public uuidSet(): UuidSetContext { let localContext = new UuidSetContext(this.context, this.state); - this.enterRule(localContext, 692, MySqlParser.RULE_uuidSet); + this.enterRule(localContext, 696, MySqlParser.RULE_uuidSet); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6936; + this.state = 6986; this.decimalLiteral(); - this.state = 6937; + this.state = 6987; this.match(MySqlParser.MINUS); - this.state = 6938; + this.state = 6988; this.decimalLiteral(); - this.state = 6939; + this.state = 6989; this.match(MySqlParser.MINUS); - this.state = 6940; + this.state = 6990; this.decimalLiteral(); - this.state = 6941; + this.state = 6991; this.match(MySqlParser.MINUS); - this.state = 6942; + this.state = 6992; this.decimalLiteral(); - this.state = 6943; + this.state = 6993; this.match(MySqlParser.MINUS); - this.state = 6944; + this.state = 6994; this.decimalLiteral(); - this.state = 6950; + this.state = 7000; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 6945; + this.state = 6995; this.match(MySqlParser.COLON_SYMB); - this.state = 6946; + this.state = 6996; this.decimalLiteral(); - this.state = 6947; + this.state = 6997; this.match(MySqlParser.MINUS); - this.state = 6948; + this.state = 6998; this.decimalLiteral(); } } - this.state = 6952; + this.state = 7002; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 878); @@ -40785,30 +41567,30 @@ export class MySqlParser extends SQLParserBase { } public xid(): XidContext { let localContext = new XidContext(this.context, this.state); - this.enterRule(localContext, 694, MySqlParser.RULE_xid); + this.enterRule(localContext, 698, MySqlParser.RULE_xid); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6954; + this.state = 7004; localContext._globalTableUid = this.xuidStringId(); - this.state = 6961; + this.state = 7011; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 6955; + this.state = 7005; this.match(MySqlParser.COMMA); - this.state = 6956; + this.state = 7006; localContext._qualifier = this.xuidStringId(); - this.state = 6959; + this.state = 7009; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 6957; + this.state = 7007; this.match(MySqlParser.COMMA); - this.state = 6958; + this.state = 7008; localContext._idFormat = this.decimalLiteral(); } } @@ -40834,40 +41616,40 @@ export class MySqlParser extends SQLParserBase { } public xuidStringId(): XuidStringIdContext { let localContext = new XuidStringIdContext(this.context, this.state); - this.enterRule(localContext, 696, MySqlParser.RULE_xuidStringId); + this.enterRule(localContext, 700, MySqlParser.RULE_xuidStringId); let _la: number; try { - this.state = 6970; + this.state = 7020; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 1); { - this.state = 6963; + this.state = 7013; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.BIT_STRING: this.enterOuterAlt(localContext, 2); { - this.state = 6964; + this.state = 7014; this.match(MySqlParser.BIT_STRING); } break; case MySqlParser.HEXADECIMAL_LITERAL: this.enterOuterAlt(localContext, 3); { - this.state = 6966; + this.state = 7016; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 6965; + this.state = 7015; this.match(MySqlParser.HEXADECIMAL_LITERAL); } } - this.state = 6968; + this.state = 7018; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 884); @@ -40893,18 +41675,18 @@ export class MySqlParser extends SQLParserBase { } public fullId(): FullIdContext { let localContext = new FullIdContext(this.context, this.state); - this.enterRule(localContext, 698, MySqlParser.RULE_fullId); + this.enterRule(localContext, 702, MySqlParser.RULE_fullId); try { this.enterOuterAlt(localContext, 1); { - this.state = 6972; + this.state = 7022; this.uid(); - this.state = 6974; + this.state = 7024; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1006, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1015, this.context) ) { case 1: { - this.state = 6973; + this.state = 7023; this.dottedId(); } break; @@ -40927,26 +41709,26 @@ export class MySqlParser extends SQLParserBase { } public uidList(): UidListContext { let localContext = new UidListContext(this.context, this.state); - this.enterRule(localContext, 700, MySqlParser.RULE_uidList); + this.enterRule(localContext, 704, MySqlParser.RULE_uidList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6976; + this.state = 7026; this.uid(); - this.state = 6981; + this.state = 7031; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 6977; + this.state = 7027; this.match(MySqlParser.COMMA); - this.state = 6978; + this.state = 7028; this.uid(); } } - this.state = 6983; + this.state = 7033; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -40968,9 +41750,9 @@ export class MySqlParser extends SQLParserBase { } public uid(): UidContext { let localContext = new UidContext(this.context, this.state); - this.enterRule(localContext, 702, MySqlParser.RULE_uid); + this.enterRule(localContext, 706, MySqlParser.RULE_uid); try { - this.state = 6987; + this.state = 7037; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_ARRAY: @@ -41303,6 +42085,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -41521,21 +42304,21 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.ID: this.enterOuterAlt(localContext, 1); { - this.state = 6984; + this.state = 7034; this.simpleId(); } break; case MySqlParser.CHARSET_REVERSE_QOUTE_STRING: this.enterOuterAlt(localContext, 2); { - this.state = 6985; + this.state = 7035; this.match(MySqlParser.CHARSET_REVERSE_QOUTE_STRING); } break; case MySqlParser.STRING_LITERAL: this.enterOuterAlt(localContext, 3); { - this.state = 6986; + this.state = 7036; this.match(MySqlParser.STRING_LITERAL); } break; @@ -41559,71 +42342,71 @@ export class MySqlParser extends SQLParserBase { } public simpleId(): SimpleIdContext { let localContext = new SimpleIdContext(this.context, this.state); - this.enterRule(localContext, 704, MySqlParser.RULE_simpleId); + this.enterRule(localContext, 708, MySqlParser.RULE_simpleId); try { - this.state = 6998; + this.state = 7048; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1009, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6989; + this.state = 7039; this.match(MySqlParser.ID); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6990; + this.state = 7040; this.charsetNameBase(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6991; + this.state = 7041; this.transactionLevelBase(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 6992; + this.state = 7042; this.engineNameBase(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 6993; + this.state = 7043; this.privilegesBase(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 6994; + this.state = 7044; this.intervalTypeBase(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 6995; + this.state = 7045; this.dataTypeBase(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 6996; + this.state = 7046; this.keywordsCanBeId(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 6997; + this.state = 7047; this.scalarFunctionName(); } break; @@ -41645,26 +42428,26 @@ export class MySqlParser extends SQLParserBase { } public dottedId(): DottedIdContext { let localContext = new DottedIdContext(this.context, this.state); - this.enterRule(localContext, 706, MySqlParser.RULE_dottedId); + this.enterRule(localContext, 710, MySqlParser.RULE_dottedId); try { - this.state = 7004; + this.state = 7054; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1010, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1019, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7000; + this.state = 7050; this.match(MySqlParser.DOT); - this.state = 7001; + this.state = 7051; this.match(MySqlParser.ID); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7002; + this.state = 7052; this.match(MySqlParser.DOT); - this.state = 7003; + this.state = 7053; this.uid(); } break; @@ -41686,12 +42469,12 @@ export class MySqlParser extends SQLParserBase { } public decimalLiteral(): DecimalLiteralContext { let localContext = new DecimalLiteralContext(this.context, this.state); - this.enterRule(localContext, 708, MySqlParser.RULE_decimalLiteral); + this.enterRule(localContext, 712, MySqlParser.RULE_decimalLiteral); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7006; + this.state = 7056; _la = this.tokenStream.LA(1); if(!(((((_la - 871)) & ~0x1F) === 0 && ((1 << (_la - 871)) & 20495) !== 0))) { this.errorHandler.recoverInline(this); @@ -41718,15 +42501,15 @@ export class MySqlParser extends SQLParserBase { } public fileSizeLiteral(): FileSizeLiteralContext { let localContext = new FileSizeLiteralContext(this.context, this.state); - this.enterRule(localContext, 710, MySqlParser.RULE_fileSizeLiteral); + this.enterRule(localContext, 714, MySqlParser.RULE_fileSizeLiteral); try { - this.state = 7010; + this.state = 7060; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.FILESIZE_LITERAL: this.enterOuterAlt(localContext, 1); { - this.state = 7008; + this.state = 7058; this.match(MySqlParser.FILESIZE_LITERAL); } break; @@ -41738,7 +42521,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.REAL_LITERAL: this.enterOuterAlt(localContext, 2); { - this.state = 7009; + this.state = 7059; this.decimalLiteral(); } break; @@ -41762,46 +42545,46 @@ export class MySqlParser extends SQLParserBase { } public stringLiteral(): StringLiteralContext { let localContext = new StringLiteralContext(this.context, this.state); - this.enterRule(localContext, 712, MySqlParser.RULE_stringLiteral); + this.enterRule(localContext, 716, MySqlParser.RULE_stringLiteral); let _la: number; try { let alternative: number; - this.state = 7035; + this.state = 7085; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1027, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7017; + this.state = 7067; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: case MySqlParser.STRING_CHARSET_NAME: { - this.state = 7013; + this.state = 7063; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 888) { { - this.state = 7012; + this.state = 7062; this.match(MySqlParser.STRING_CHARSET_NAME); } } - this.state = 7015; + this.state = 7065; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.START_NATIONAL_STRING_LITERAL: { - this.state = 7016; + this.state = 7066; this.match(MySqlParser.START_NATIONAL_STRING_LITERAL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 7020; + this.state = 7070; this.errorHandler.sync(this); alternative = 1; do { @@ -41809,7 +42592,7 @@ export class MySqlParser extends SQLParserBase { case 1: { { - this.state = 7019; + this.state = 7069; this.match(MySqlParser.STRING_LITERAL); } } @@ -41817,52 +42600,52 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 7022; + this.state = 7072; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1014, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1023, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7029; + this.state = 7079; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.STRING_LITERAL: case MySqlParser.STRING_CHARSET_NAME: { - this.state = 7025; + this.state = 7075; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 888) { { - this.state = 7024; + this.state = 7074; this.match(MySqlParser.STRING_CHARSET_NAME); } } - this.state = 7027; + this.state = 7077; this.match(MySqlParser.STRING_LITERAL); } break; case MySqlParser.START_NATIONAL_STRING_LITERAL: { - this.state = 7028; + this.state = 7078; this.match(MySqlParser.START_NATIONAL_STRING_LITERAL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 7033; + this.state = 7083; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1017, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1026, this.context) ) { case 1: { - this.state = 7031; + this.state = 7081; this.match(MySqlParser.KW_COLLATE); - this.state = 7032; + this.state = 7082; this.collationName(); } break; @@ -41887,12 +42670,12 @@ export class MySqlParser extends SQLParserBase { } public booleanLiteral(): BooleanLiteralContext { let localContext = new BooleanLiteralContext(this.context, this.state); - this.enterRule(localContext, 714, MySqlParser.RULE_booleanLiteral); + this.enterRule(localContext, 718, MySqlParser.RULE_booleanLiteral); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7037; + this.state = 7087; _la = this.tokenStream.LA(1); if(!(_la === 63 || _la === 179)) { this.errorHandler.recoverInline(this); @@ -41919,22 +42702,22 @@ export class MySqlParser extends SQLParserBase { } public hexadecimalLiteral(): HexadecimalLiteralContext { let localContext = new HexadecimalLiteralContext(this.context, this.state); - this.enterRule(localContext, 716, MySqlParser.RULE_hexadecimalLiteral); + this.enterRule(localContext, 720, MySqlParser.RULE_hexadecimalLiteral); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7040; + this.state = 7090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 888) { { - this.state = 7039; + this.state = 7089; this.match(MySqlParser.STRING_CHARSET_NAME); } } - this.state = 7042; + this.state = 7092; this.match(MySqlParser.HEXADECIMAL_LITERAL); } } @@ -41954,22 +42737,22 @@ export class MySqlParser extends SQLParserBase { } public nullNotnull(): NullNotnullContext { let localContext = new NullNotnullContext(this.context, this.state); - this.enterRule(localContext, 718, MySqlParser.RULE_nullNotnull); + this.enterRule(localContext, 722, MySqlParser.RULE_nullNotnull); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7045; + this.state = 7095; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7044; + this.state = 7094; this.match(MySqlParser.KW_NOT); } } - this.state = 7047; + this.state = 7097; _la = this.tokenStream.LA(1); if(!(_la === 116 || _la === 886)) { this.errorHandler.recoverInline(this); @@ -41996,77 +42779,77 @@ export class MySqlParser extends SQLParserBase { } public constant(): ConstantContext { let localContext = new ConstantContext(this.context, this.state); - this.enterRule(localContext, 720, MySqlParser.RULE_constant); + this.enterRule(localContext, 724, MySqlParser.RULE_constant); let _la: number; try { - this.state = 7061; + this.state = 7111; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1022, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1031, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7049; + this.state = 7099; this.stringLiteral(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7050; + this.state = 7100; this.decimalLiteral(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7051; + this.state = 7101; this.match(MySqlParser.MINUS); - this.state = 7052; + this.state = 7102; this.decimalLiteral(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7053; + this.state = 7103; this.hexadecimalLiteral(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7054; + this.state = 7104; this.booleanLiteral(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7055; + this.state = 7105; this.match(MySqlParser.REAL_LITERAL); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 7056; + this.state = 7106; this.match(MySqlParser.BIT_STRING); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 7058; + this.state = 7108; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7057; + this.state = 7107; this.match(MySqlParser.KW_NOT); } } - this.state = 7060; + this.state = 7110; localContext._nullLiteral = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 116 || _la === 886)) { @@ -42096,17 +42879,18 @@ export class MySqlParser extends SQLParserBase { } public dataType(): DataTypeContext { let localContext = new DataTypeContext(this.context, this.state); - this.enterRule(localContext, 722, MySqlParser.RULE_dataType); + this.enterRule(localContext, 726, MySqlParser.RULE_dataType); let _la: number; try { - this.state = 7189; + let alternative: number; + this.state = 7239; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1051, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1060, this.context) ) { case 1: localContext = new StringDataTypeContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7063; + this.state = 7113; (localContext as StringDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 26 || ((((_la - 224)) & ~0x1F) === 0 && ((1 << (_la - 224)) & 31239) !== 0) || _la === 498)) { @@ -42116,62 +42900,62 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7065; + this.state = 7115; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 240) { { - this.state = 7064; + this.state = 7114; this.match(MySqlParser.KW_VARYING); } } - this.state = 7068; + this.state = 7118; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1024, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1033, this.context) ) { case 1: { - this.state = 7067; + this.state = 7117; this.lengthOneDimension(); } break; } - this.state = 7071; + this.state = 7121; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1025, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1034, this.context) ) { case 1: { - this.state = 7070; + this.state = 7120; this.match(MySqlParser.KW_BINARY); } break; } - this.state = 7076; + this.state = 7126; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 26 || _la === 224 || _la === 823) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1035, this.context) ) { + case 1: { - this.state = 7073; + this.state = 7123; this.charSet(); - this.state = 7074; + this.state = 7124; this.charsetName(); } + break; } - - this.state = 7081; + this.state = 7131; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1027, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1036, this.context) ) { case 1: { - this.state = 7078; + this.state = 7128; this.match(MySqlParser.KW_COLLATE); - this.state = 7079; + this.state = 7129; this.collationName(); } break; case 2: { - this.state = 7080; + this.state = 7130; this.match(MySqlParser.KW_BINARY); } break; @@ -42182,9 +42966,9 @@ export class MySqlParser extends SQLParserBase { localContext = new NationalVaryingStringDataTypeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7083; + this.state = 7133; this.match(MySqlParser.KW_NATIONAL); - this.state = 7084; + this.state = 7134; (localContext as NationalVaryingStringDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 26 || _la === 224)) { @@ -42194,37 +42978,37 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7085; + this.state = 7135; this.match(MySqlParser.KW_VARYING); - this.state = 7087; + this.state = 7137; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1028, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1037, this.context) ) { case 1: { - this.state = 7086; + this.state = 7136; this.lengthOneDimension(); } break; } - this.state = 7090; + this.state = 7140; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 228) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1038, this.context) ) { + case 1: { - this.state = 7089; + this.state = 7139; this.match(MySqlParser.KW_BINARY); } + break; } - } break; case 3: localContext = new NationalStringDataTypeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 7092; + this.state = 7142; this.match(MySqlParser.KW_NATIONAL); - this.state = 7093; + this.state = 7143; (localContext as NationalStringDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 26 || _la === 224 || _la === 225)) { @@ -42234,63 +43018,63 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7095; + this.state = 7145; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1030, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1039, this.context) ) { case 1: { - this.state = 7094; + this.state = 7144; this.lengthOneDimension(); } break; } - this.state = 7098; + this.state = 7148; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 228) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1040, this.context) ) { + case 1: { - this.state = 7097; + this.state = 7147; this.match(MySqlParser.KW_BINARY); } + break; } - } break; case 4: localContext = new NationalStringDataTypeContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 7100; + this.state = 7150; this.match(MySqlParser.KW_NCHAR); - this.state = 7101; + this.state = 7151; (localContext as NationalStringDataTypeContext)._typeName = this.match(MySqlParser.KW_VARCHAR); - this.state = 7103; + this.state = 7153; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1032, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1041, this.context) ) { case 1: { - this.state = 7102; + this.state = 7152; this.lengthOneDimension(); } break; } - this.state = 7106; + this.state = 7156; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 228) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1042, this.context) ) { + case 1: { - this.state = 7105; + this.state = 7155; this.match(MySqlParser.KW_BINARY); } + break; } - } break; case 5: localContext = new DimensionDataTypeContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 7108; + this.state = 7158; (localContext as DimensionDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 198)) & ~0x1F) === 0 && ((1 << (_la - 198)) & 4095) !== 0))) { @@ -42300,36 +43084,38 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7110; + this.state = 7160; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1034, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1043, this.context) ) { case 1: { - this.state = 7109; + this.state = 7159; this.lengthOneDimension(); } break; } - this.state = 7115; + this.state = 7165; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 184 || _la === 197 || _la === 596) { - { - { - this.state = 7112; - _la = this.tokenStream.LA(1); - if(!(_la === 184 || _la === 197 || _la === 596)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1044, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7162; + _la = this.tokenStream.LA(1); + if(!(_la === 184 || _la === 197 || _la === 596)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } } - this.state = 7117; + this.state = 7167; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1044, this.context); } } break; @@ -42337,38 +43123,40 @@ export class MySqlParser extends SQLParserBase { localContext = new DimensionDataTypeContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 7118; + this.state = 7168; (localContext as DimensionDataTypeContext)._typeName = this.match(MySqlParser.KW_REAL); - this.state = 7120; + this.state = 7170; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1036, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1045, this.context) ) { case 1: { - this.state = 7119; + this.state = 7169; this.lengthTwoDimension(); } break; } - this.state = 7125; + this.state = 7175; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 184 || _la === 197 || _la === 596) { - { - { - this.state = 7122; - _la = this.tokenStream.LA(1); - if(!(_la === 184 || _la === 197 || _la === 596)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1046, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7172; + _la = this.tokenStream.LA(1); + if(!(_la === 184 || _la === 197 || _la === 596)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } } - this.state = 7127; + this.state = 7177; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1046, this.context); } } break; @@ -42376,48 +43164,50 @@ export class MySqlParser extends SQLParserBase { localContext = new DimensionDataTypeContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 7128; + this.state = 7178; (localContext as DimensionDataTypeContext)._typeName = this.match(MySqlParser.KW_DOUBLE); - this.state = 7130; + this.state = 7180; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 212) { { - this.state = 7129; + this.state = 7179; this.match(MySqlParser.KW_PRECISION); } } - this.state = 7133; + this.state = 7183; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1039, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1048, this.context) ) { case 1: { - this.state = 7132; + this.state = 7182; this.lengthTwoDimension(); } break; } - this.state = 7138; + this.state = 7188; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 184 || _la === 197 || _la === 596) { - { - { - this.state = 7135; - _la = this.tokenStream.LA(1); - if(!(_la === 184 || _la === 197 || _la === 596)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1049, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7185; + _la = this.tokenStream.LA(1); + if(!(_la === 184 || _la === 197 || _la === 596)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } } - this.state = 7140; + this.state = 7190; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1049, this.context); } } break; @@ -42425,7 +43215,7 @@ export class MySqlParser extends SQLParserBase { localContext = new DimensionDataTypeContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 7141; + this.state = 7191; (localContext as DimensionDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 213)) & ~0x1F) === 0 && ((1 << (_la - 213)) & 63) !== 0) || _la === 403)) { @@ -42435,36 +43225,38 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7143; + this.state = 7193; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1041, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1050, this.context) ) { case 1: { - this.state = 7142; + this.state = 7192; this.lengthTwoOptionalDimension(); } break; } - this.state = 7148; + this.state = 7198; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 184 || _la === 197 || _la === 596) { - { - { - this.state = 7145; - _la = this.tokenStream.LA(1); - if(!(_la === 184 || _la === 197 || _la === 596)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1051, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 7195; + _la = this.tokenStream.LA(1); + if(!(_la === 184 || _la === 197 || _la === 596)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } } - this.state = 7150; + this.state = 7200; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1051, this.context); } } break; @@ -42472,7 +43264,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SimpleDataTypeContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 7151; + this.state = 7201; (localContext as SimpleDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 4237313) !== 0) || _la === 321 || _la === 322)) { @@ -42488,7 +43280,7 @@ export class MySqlParser extends SQLParserBase { localContext = new DimensionDataTypeContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 7152; + this.state = 7202; (localContext as DimensionDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 2831) !== 0) || _la === 319)) { @@ -42498,12 +43290,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7154; + this.state = 7204; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1043, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1052, this.context) ) { case 1: { - this.state = 7153; + this.state = 7203; this.lengthOneDimension(); } break; @@ -42514,7 +43306,7 @@ export class MySqlParser extends SQLParserBase { localContext = new CollectionDataTypeContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 7156; + this.state = 7206; (localContext as CollectionDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 155 || _la === 239)) { @@ -42524,37 +43316,37 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7157; + this.state = 7207; this.collectionOptions(); - this.state = 7159; + this.state = 7209; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 228) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1053, this.context) ) { + case 1: { - this.state = 7158; + this.state = 7208; this.match(MySqlParser.KW_BINARY); } + break; } - - this.state = 7164; + this.state = 7214; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 26 || _la === 224 || _la === 823) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1054, this.context) ) { + case 1: { - this.state = 7161; + this.state = 7211; this.charSet(); - this.state = 7162; + this.state = 7212; this.charsetName(); } + break; } - } break; case 12: localContext = new SpatialDataTypeContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 7166; + this.state = 7216; (localContext as SpatialDataTypeContext)._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 442 || ((((_la - 813)) & ~0x1F) === 0 && ((1 << (_la - 813)) & 511) !== 0))) { @@ -42564,66 +43356,66 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7169; + this.state = 7219; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 834) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1055, this.context) ) { + case 1: { - this.state = 7167; + this.state = 7217; this.match(MySqlParser.KW_SRID); - this.state = 7168; + this.state = 7218; this.decimalLiteral(); } + break; } - } break; case 13: localContext = new LongVarcharDataTypeContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 7171; + this.state = 7221; (localContext as LongVarcharDataTypeContext)._typeName = this.match(MySqlParser.KW_LONG); - this.state = 7173; + this.state = 7223; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 225) { { - this.state = 7172; + this.state = 7222; this.match(MySqlParser.KW_VARCHAR); } } - this.state = 7176; + this.state = 7226; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 228) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1057, this.context) ) { + case 1: { - this.state = 7175; + this.state = 7225; this.match(MySqlParser.KW_BINARY); } + break; } - - this.state = 7181; + this.state = 7231; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 26 || _la === 224 || _la === 823) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1058, this.context) ) { + case 1: { - this.state = 7178; + this.state = 7228; this.charSet(); - this.state = 7179; + this.state = 7229; this.charsetName(); } + break; } - - this.state = 7185; + this.state = 7235; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1050, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1059, this.context) ) { case 1: { - this.state = 7183; + this.state = 7233; this.match(MySqlParser.KW_COLLATE); - this.state = 7184; + this.state = 7234; this.collationName(); } break; @@ -42634,9 +43426,9 @@ export class MySqlParser extends SQLParserBase { localContext = new LongVarbinaryDataTypeContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 7187; + this.state = 7237; this.match(MySqlParser.KW_LONG); - this.state = 7188; + this.state = 7238; this.match(MySqlParser.KW_VARBINARY); } break; @@ -42658,32 +43450,32 @@ export class MySqlParser extends SQLParserBase { } public collectionOptions(): CollectionOptionsContext { let localContext = new CollectionOptionsContext(this.context, this.state); - this.enterRule(localContext, 724, MySqlParser.RULE_collectionOptions); + this.enterRule(localContext, 728, MySqlParser.RULE_collectionOptions); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7191; + this.state = 7241; this.match(MySqlParser.LR_BRACKET); - this.state = 7192; + this.state = 7242; this.match(MySqlParser.STRING_LITERAL); - this.state = 7197; + this.state = 7247; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7193; + this.state = 7243; this.match(MySqlParser.COMMA); - this.state = 7194; + this.state = 7244; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 7199; + this.state = 7249; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7200; + this.state = 7250; this.match(MySqlParser.RR_BRACKET); } } @@ -42703,18 +43495,18 @@ export class MySqlParser extends SQLParserBase { } public convertedDataType(): ConvertedDataTypeContext { let localContext = new ConvertedDataTypeContext(this.context, this.state); - this.enterRule(localContext, 726, MySqlParser.RULE_convertedDataType); + this.enterRule(localContext, 730, MySqlParser.RULE_convertedDataType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7224; + this.state = 7274; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_BINARY: case MySqlParser.KW_NCHAR: { - this.state = 7202; + this.state = 7252; localContext._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 228 || _la === 498)) { @@ -42724,12 +43516,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7204; + this.state = 7254; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 7203; + this.state = 7253; this.lengthOneDimension(); } } @@ -42738,26 +43530,26 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_CHAR: { - this.state = 7206; + this.state = 7256; localContext._typeName = this.match(MySqlParser.KW_CHAR); - this.state = 7208; + this.state = 7258; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 7207; + this.state = 7257; this.lengthOneDimension(); } } - this.state = 7213; + this.state = 7263; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 26 || _la === 224 || _la === 823) { { - this.state = 7210; + this.state = 7260; this.charSet(); - this.state = 7211; + this.state = 7261; this.charsetName(); } } @@ -42771,7 +43563,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_DATETIME: case MySqlParser.KW_JSON: { - this.state = 7215; + this.state = 7265; localContext._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 202)) & ~0x1F) === 0 && ((1 << (_la - 202)) & 1441857) !== 0) || _la === 442)) { @@ -42786,7 +43578,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_DECIMAL: case MySqlParser.KW_DEC: { - this.state = 7216; + this.state = 7266; localContext._typeName = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 216 || _la === 217)) { @@ -42796,12 +43588,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7218; + this.state = 7268; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 866) { { - this.state = 7217; + this.state = 7267; this.lengthTwoOptionalDimension(); } } @@ -42811,7 +43603,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_UNSIGNED: case MySqlParser.KW_SIGNED: { - this.state = 7220; + this.state = 7270; _la = this.tokenStream.LA(1); if(!(_la === 184 || _la === 596)) { this.errorHandler.recoverInline(this); @@ -42820,12 +43612,12 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7222; + this.state = 7272; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 202 || _la === 208) { { - this.state = 7221; + this.state = 7271; _la = this.tokenStream.LA(1); if(!(_la === 202 || _la === 208)) { this.errorHandler.recoverInline(this); @@ -42842,12 +43634,12 @@ export class MySqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 7227; + this.state = 7277; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12) { { - this.state = 7226; + this.state = 7276; this.match(MySqlParser.KW_ARRAY); } } @@ -42870,15 +43662,15 @@ export class MySqlParser extends SQLParserBase { } public lengthOneDimension(): LengthOneDimensionContext { let localContext = new LengthOneDimensionContext(this.context, this.state); - this.enterRule(localContext, 728, MySqlParser.RULE_lengthOneDimension); + this.enterRule(localContext, 732, MySqlParser.RULE_lengthOneDimension); try { this.enterOuterAlt(localContext, 1); { - this.state = 7229; + this.state = 7279; this.match(MySqlParser.LR_BRACKET); - this.state = 7230; + this.state = 7280; this.decimalLiteral(); - this.state = 7231; + this.state = 7281; this.match(MySqlParser.RR_BRACKET); } } @@ -42898,19 +43690,19 @@ export class MySqlParser extends SQLParserBase { } public lengthTwoDimension(): LengthTwoDimensionContext { let localContext = new LengthTwoDimensionContext(this.context, this.state); - this.enterRule(localContext, 730, MySqlParser.RULE_lengthTwoDimension); + this.enterRule(localContext, 734, MySqlParser.RULE_lengthTwoDimension); try { this.enterOuterAlt(localContext, 1); { - this.state = 7233; + this.state = 7283; this.match(MySqlParser.LR_BRACKET); - this.state = 7234; + this.state = 7284; this.decimalLiteral(); - this.state = 7235; + this.state = 7285; this.match(MySqlParser.COMMA); - this.state = 7236; + this.state = 7286; this.decimalLiteral(); - this.state = 7237; + this.state = 7287; this.match(MySqlParser.RR_BRACKET); } } @@ -42930,28 +43722,28 @@ export class MySqlParser extends SQLParserBase { } public lengthTwoOptionalDimension(): LengthTwoOptionalDimensionContext { let localContext = new LengthTwoOptionalDimensionContext(this.context, this.state); - this.enterRule(localContext, 732, MySqlParser.RULE_lengthTwoOptionalDimension); + this.enterRule(localContext, 736, MySqlParser.RULE_lengthTwoOptionalDimension); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7239; + this.state = 7289; this.match(MySqlParser.LR_BRACKET); - this.state = 7240; + this.state = 7290; this.decimalLiteral(); - this.state = 7243; + this.state = 7293; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 7241; + this.state = 7291; this.match(MySqlParser.COMMA); - this.state = 7242; + this.state = 7292; this.decimalLiteral(); } } - this.state = 7245; + this.state = 7295; this.match(MySqlParser.RR_BRACKET); } } @@ -42971,32 +43763,32 @@ export class MySqlParser extends SQLParserBase { } public indexColumnNames(): IndexColumnNamesContext { let localContext = new IndexColumnNamesContext(this.context, this.state); - this.enterRule(localContext, 734, MySqlParser.RULE_indexColumnNames); + this.enterRule(localContext, 738, MySqlParser.RULE_indexColumnNames); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7247; + this.state = 7297; this.match(MySqlParser.LR_BRACKET); - this.state = 7248; + this.state = 7298; this.indexColumnName(); - this.state = 7253; + this.state = 7303; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7249; + this.state = 7299; this.match(MySqlParser.COMMA); - this.state = 7250; + this.state = 7300; this.indexColumnName(); } } - this.state = 7255; + this.state = 7305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7256; + this.state = 7306; this.match(MySqlParser.RR_BRACKET); } } @@ -43016,26 +43808,26 @@ export class MySqlParser extends SQLParserBase { } public expressions(): ExpressionsContext { let localContext = new ExpressionsContext(this.context, this.state); - this.enterRule(localContext, 736, MySqlParser.RULE_expressions); + this.enterRule(localContext, 740, MySqlParser.RULE_expressions); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7258; + this.state = 7308; this.expression(0); - this.state = 7263; + this.state = 7313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7259; + this.state = 7309; this.match(MySqlParser.COMMA); - this.state = 7260; + this.state = 7310; this.expression(0); } } - this.state = 7265; + this.state = 7315; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -43057,12 +43849,12 @@ export class MySqlParser extends SQLParserBase { } public valuesOrValueList(): ValuesOrValueListContext { let localContext = new ValuesOrValueListContext(this.context, this.state); - this.enterRule(localContext, 738, MySqlParser.RULE_valuesOrValueList); + this.enterRule(localContext, 742, MySqlParser.RULE_valuesOrValueList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7266; + this.state = 7316; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 682)) { this.errorHandler.recoverInline(this); @@ -43071,21 +43863,21 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7267; + this.state = 7317; this.expressionsWithDefaults(); - this.state = 7272; + this.state = 7322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7268; + this.state = 7318; this.match(MySqlParser.COMMA); - this.state = 7269; + this.state = 7319; this.expressionsWithDefaults(); } } - this.state = 7274; + this.state = 7324; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -43107,32 +43899,32 @@ export class MySqlParser extends SQLParserBase { } public expressionsWithDefaults(): ExpressionsWithDefaultsContext { let localContext = new ExpressionsWithDefaultsContext(this.context, this.state); - this.enterRule(localContext, 740, MySqlParser.RULE_expressionsWithDefaults); + this.enterRule(localContext, 744, MySqlParser.RULE_expressionsWithDefaults); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7275; + this.state = 7325; this.match(MySqlParser.LR_BRACKET); - this.state = 7276; + this.state = 7326; this.expressionOrDefault(); - this.state = 7281; + this.state = 7331; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7277; + this.state = 7327; this.match(MySqlParser.COMMA); - this.state = 7278; + this.state = 7328; this.expressionOrDefault(); } } - this.state = 7283; + this.state = 7333; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7284; + this.state = 7334; this.match(MySqlParser.RR_BRACKET); } } @@ -43152,22 +43944,22 @@ export class MySqlParser extends SQLParserBase { } public expressionOrDefault(): ExpressionOrDefaultContext { let localContext = new ExpressionOrDefaultContext(this.context, this.state); - this.enterRule(localContext, 742, MySqlParser.RULE_expressionOrDefault); + this.enterRule(localContext, 746, MySqlParser.RULE_expressionOrDefault); try { - this.state = 7288; + this.state = 7338; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1065, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1074, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7286; + this.state = 7336; this.expression(0); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7287; + this.state = 7337; this.match(MySqlParser.KW_DEFAULT); } break; @@ -43189,26 +43981,26 @@ export class MySqlParser extends SQLParserBase { } public constants(): ConstantsContext { let localContext = new ConstantsContext(this.context, this.state); - this.enterRule(localContext, 744, MySqlParser.RULE_constants); + this.enterRule(localContext, 748, MySqlParser.RULE_constants); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7290; + this.state = 7340; this.constant(); - this.state = 7295; + this.state = 7345; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7291; + this.state = 7341; this.match(MySqlParser.COMMA); - this.state = 7292; + this.state = 7342; this.constant(); } } - this.state = 7297; + this.state = 7347; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -43230,26 +44022,26 @@ export class MySqlParser extends SQLParserBase { } public simpleStrings(): SimpleStringsContext { let localContext = new SimpleStringsContext(this.context, this.state); - this.enterRule(localContext, 746, MySqlParser.RULE_simpleStrings); + this.enterRule(localContext, 750, MySqlParser.RULE_simpleStrings); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7298; + this.state = 7348; this.match(MySqlParser.STRING_LITERAL); - this.state = 7303; + this.state = 7353; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7299; + this.state = 7349; this.match(MySqlParser.COMMA); - this.state = 7300; + this.state = 7350; this.match(MySqlParser.STRING_LITERAL); } } - this.state = 7305; + this.state = 7355; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -43271,26 +44063,26 @@ export class MySqlParser extends SQLParserBase { } public userVariables(): UserVariablesContext { let localContext = new UserVariablesContext(this.context, this.state); - this.enterRule(localContext, 748, MySqlParser.RULE_userVariables); + this.enterRule(localContext, 752, MySqlParser.RULE_userVariables); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7306; + this.state = 7356; this.match(MySqlParser.LOCAL_ID); - this.state = 7311; + this.state = 7361; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7307; + this.state = 7357; this.match(MySqlParser.COMMA); - this.state = 7308; + this.state = 7358; this.match(MySqlParser.LOCAL_ID); } } - this.state = 7313; + this.state = 7363; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -43312,67 +44104,67 @@ export class MySqlParser extends SQLParserBase { } public defaultValue(): DefaultValueContext { let localContext = new DefaultValueContext(this.context, this.state); - this.enterRule(localContext, 750, MySqlParser.RULE_defaultValue); + this.enterRule(localContext, 754, MySqlParser.RULE_defaultValue); try { - this.state = 7340; + this.state = 7390; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1071, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1080, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7314; + this.state = 7364; this.match(MySqlParser.KW_NULL_LITERAL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7315; + this.state = 7365; this.match(MySqlParser.KW_CAST); - this.state = 7316; + this.state = 7366; this.match(MySqlParser.LR_BRACKET); - this.state = 7317; + this.state = 7367; this.expression(0); - this.state = 7318; + this.state = 7368; this.match(MySqlParser.KW_AS); - this.state = 7319; + this.state = 7369; this.convertedDataType(); - this.state = 7320; + this.state = 7370; this.match(MySqlParser.RR_BRACKET); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7323; + this.state = 7373; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1069, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1078, this.context) ) { case 1: { - this.state = 7322; + this.state = 7372; this.unaryOperator(); } break; } - this.state = 7325; + this.state = 7375; this.constant(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7326; + this.state = 7376; this.currentTimestamp(); - this.state = 7330; + this.state = 7380; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1070, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1079, this.context) ) { case 1: { - this.state = 7327; + this.state = 7377; this.match(MySqlParser.KW_ON); - this.state = 7328; + this.state = 7378; this.match(MySqlParser.KW_UPDATE); - this.state = 7329; + this.state = 7379; this.currentTimestamp(); } break; @@ -43382,22 +44174,22 @@ export class MySqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7332; + this.state = 7382; this.match(MySqlParser.LR_BRACKET); - this.state = 7333; + this.state = 7383; this.expression(0); - this.state = 7334; + this.state = 7384; this.match(MySqlParser.RR_BRACKET); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7336; + this.state = 7386; this.match(MySqlParser.LR_BRACKET); - this.state = 7337; + this.state = 7387; this.fullId(); - this.state = 7338; + this.state = 7388; this.match(MySqlParser.RR_BRACKET); } break; @@ -43419,19 +44211,19 @@ export class MySqlParser extends SQLParserBase { } public currentTimestamp(): CurrentTimestampContext { let localContext = new CurrentTimestampContext(this.context, this.state); - this.enterRule(localContext, 752, MySqlParser.RULE_currentTimestamp); + this.enterRule(localContext, 756, MySqlParser.RULE_currentTimestamp); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7356; + this.state = 7406; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_CURRENT_TIMESTAMP: case MySqlParser.KW_LOCALTIME: case MySqlParser.KW_LOCALTIMESTAMP: { - this.state = 7342; + this.state = 7392; _la = this.tokenStream.LA(1); if(!(((((_la - 287)) & ~0x1F) === 0 && ((1 << (_la - 287)) & 131) !== 0))) { this.errorHandler.recoverInline(this); @@ -43440,24 +44232,24 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7348; + this.state = 7398; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1073, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1082, this.context) ) { case 1: { - this.state = 7343; + this.state = 7393; this.match(MySqlParser.LR_BRACKET); - this.state = 7345; + this.state = 7395; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 871)) & ~0x1F) === 0 && ((1 << (_la - 871)) & 20495) !== 0)) { { - this.state = 7344; + this.state = 7394; this.decimalLiteral(); } } - this.state = 7347; + this.state = 7397; this.match(MySqlParser.RR_BRACKET); } break; @@ -43466,21 +44258,21 @@ export class MySqlParser extends SQLParserBase { break; case MySqlParser.KW_NOW: { - this.state = 7350; + this.state = 7400; this.match(MySqlParser.KW_NOW); - this.state = 7351; + this.state = 7401; this.match(MySqlParser.LR_BRACKET); - this.state = 7353; + this.state = 7403; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 871)) & ~0x1F) === 0 && ((1 << (_la - 871)) & 20495) !== 0)) { { - this.state = 7352; + this.state = 7402; this.decimalLiteral(); } } - this.state = 7355; + this.state = 7405; this.match(MySqlParser.RR_BRACKET); } break; @@ -43505,13 +44297,13 @@ export class MySqlParser extends SQLParserBase { } public ifExists(): IfExistsContext { let localContext = new IfExistsContext(this.context, this.state); - this.enterRule(localContext, 754, MySqlParser.RULE_ifExists); + this.enterRule(localContext, 758, MySqlParser.RULE_ifExists); try { this.enterOuterAlt(localContext, 1); { - this.state = 7358; + this.state = 7408; this.match(MySqlParser.KW_IF); - this.state = 7359; + this.state = 7409; this.match(MySqlParser.KW_EXISTS); } } @@ -43531,15 +44323,15 @@ export class MySqlParser extends SQLParserBase { } public ifNotExists(): IfNotExistsContext { let localContext = new IfNotExistsContext(this.context, this.state); - this.enterRule(localContext, 756, MySqlParser.RULE_ifNotExists); + this.enterRule(localContext, 760, MySqlParser.RULE_ifNotExists); try { this.enterOuterAlt(localContext, 1); { - this.state = 7361; + this.state = 7411; this.match(MySqlParser.KW_IF); - this.state = 7362; + this.state = 7412; this.match(MySqlParser.KW_NOT); - this.state = 7363; + this.state = 7413; this.match(MySqlParser.KW_EXISTS); } } @@ -43559,13 +44351,13 @@ export class MySqlParser extends SQLParserBase { } public orReplace(): OrReplaceContext { let localContext = new OrReplaceContext(this.context, this.state); - this.enterRule(localContext, 758, MySqlParser.RULE_orReplace); + this.enterRule(localContext, 762, MySqlParser.RULE_orReplace); try { this.enterOuterAlt(localContext, 1); { - this.state = 7365; + this.state = 7415; this.match(MySqlParser.KW_OR); - this.state = 7366; + this.state = 7416; this.match(MySqlParser.KW_REPLACE); } } @@ -43585,16 +44377,16 @@ export class MySqlParser extends SQLParserBase { } public functionCall(): FunctionCallContext { let localContext = new FunctionCallContext(this.context, this.state); - this.enterRule(localContext, 760, MySqlParser.RULE_functionCall); + this.enterRule(localContext, 764, MySqlParser.RULE_functionCall); try { - this.state = 7390; + this.state = 7440; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1078, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1087, this.context) ) { case 1: localContext = new SpecificFunctionCallContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7368; + this.state = 7418; this.specificFunction(); } break; @@ -43602,7 +44394,7 @@ export class MySqlParser extends SQLParserBase { localContext = new AggregateFunctionCallContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7369; + this.state = 7419; this.aggregateWindowedFunction(); } break; @@ -43610,7 +44402,7 @@ export class MySqlParser extends SQLParserBase { localContext = new NonAggregateFunctionCallContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 7370; + this.state = 7420; this.nonAggregateWindowedFunction(); } break; @@ -43618,26 +44410,26 @@ export class MySqlParser extends SQLParserBase { localContext = new ScalarFunctionCallContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 7371; + this.state = 7421; this.scalarFunctionName(); - this.state = 7378; + this.state = 7428; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1076, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1085, this.context) ) { case 1: { - this.state = 7372; + this.state = 7422; this.match(MySqlParser.LR_BRACKET); - this.state = 7373; + this.state = 7423; this.match(MySqlParser.RR_BRACKET); } break; case 2: { - this.state = 7374; + this.state = 7424; this.match(MySqlParser.LR_BRACKET); - this.state = 7375; + this.state = 7425; this.functionArgs(); - this.state = 7376; + this.state = 7426; this.match(MySqlParser.RR_BRACKET); } break; @@ -43648,26 +44440,26 @@ export class MySqlParser extends SQLParserBase { localContext = new UdfFunctionCallContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 7380; + this.state = 7430; this.functionName(); - this.state = 7387; + this.state = 7437; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1077, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1086, this.context) ) { case 1: { - this.state = 7381; + this.state = 7431; this.match(MySqlParser.LR_BRACKET); - this.state = 7382; + this.state = 7432; this.match(MySqlParser.RR_BRACKET); } break; case 2: { - this.state = 7383; + this.state = 7433; this.match(MySqlParser.LR_BRACKET); - this.state = 7384; + this.state = 7434; this.functionArgs(); - this.state = 7385; + this.state = 7435; this.match(MySqlParser.RR_BRACKET); } break; @@ -43678,7 +44470,7 @@ export class MySqlParser extends SQLParserBase { localContext = new PasswordFunctionCallContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 7389; + this.state = 7439; this.passwordFunctionClause(); } break; @@ -43700,17 +44492,17 @@ export class MySqlParser extends SQLParserBase { } public specificFunction(): SpecificFunctionContext { let localContext = new SpecificFunctionContext(this.context, this.state); - this.enterRule(localContext, 762, MySqlParser.RULE_specificFunction); + this.enterRule(localContext, 766, MySqlParser.RULE_specificFunction); let _la: number; try { - this.state = 7571; + this.state = 7621; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1102, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1111, this.context) ) { case 1: localContext = new SimpleFunctionCallContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7392; + this.state = 7442; _la = this.tokenStream.LA(1); if(!(_la === 152 || ((((_la - 285)) & ~0x1F) === 0 && ((1 << (_la - 285)) & 262159) !== 0))) { this.errorHandler.recoverInline(this); @@ -43719,14 +44511,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7395; + this.state = 7445; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1079, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1088, this.context) ) { case 1: { - this.state = 7393; + this.state = 7443; this.match(MySqlParser.LR_BRACKET); - this.state = 7394; + this.state = 7444; this.match(MySqlParser.RR_BRACKET); } break; @@ -43737,7 +44529,7 @@ export class MySqlParser extends SQLParserBase { localContext = new CurrentUserContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7397; + this.state = 7447; this.currentUserExpression(); } break; @@ -43745,17 +44537,17 @@ export class MySqlParser extends SQLParserBase { localContext = new DataTypeFunctionCallContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 7398; + this.state = 7448; this.match(MySqlParser.KW_CONVERT); - this.state = 7399; + this.state = 7449; this.match(MySqlParser.LR_BRACKET); - this.state = 7400; + this.state = 7450; this.expression(0); - this.state = 7401; + this.state = 7451; (localContext as DataTypeFunctionCallContext)._separator = this.match(MySqlParser.COMMA); - this.state = 7402; + this.state = 7452; this.convertedDataType(); - this.state = 7403; + this.state = 7453; this.match(MySqlParser.RR_BRACKET); } break; @@ -43763,17 +44555,17 @@ export class MySqlParser extends SQLParserBase { localContext = new DataTypeFunctionCallContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 7405; + this.state = 7455; this.match(MySqlParser.KW_CONVERT); - this.state = 7406; + this.state = 7456; this.match(MySqlParser.LR_BRACKET); - this.state = 7407; + this.state = 7457; this.expression(0); - this.state = 7408; + this.state = 7458; this.match(MySqlParser.KW_USING); - this.state = 7409; + this.state = 7459; this.charsetName(); - this.state = 7410; + this.state = 7460; this.match(MySqlParser.RR_BRACKET); } break; @@ -43781,17 +44573,17 @@ export class MySqlParser extends SQLParserBase { localContext = new DataTypeFunctionCallContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 7412; + this.state = 7462; this.match(MySqlParser.KW_CAST); - this.state = 7413; + this.state = 7463; this.match(MySqlParser.LR_BRACKET); - this.state = 7414; + this.state = 7464; this.expression(0); - this.state = 7415; + this.state = 7465; this.match(MySqlParser.KW_AS); - this.state = 7416; + this.state = 7466; this.convertedDataType(); - this.state = 7417; + this.state = 7467; this.match(MySqlParser.RR_BRACKET); } break; @@ -43799,13 +44591,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ValuesFunctionCallContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 7419; + this.state = 7469; this.match(MySqlParser.KW_VALUES); - this.state = 7420; + this.state = 7470; this.match(MySqlParser.LR_BRACKET); - this.state = 7421; + this.state = 7471; this.columnName(); - this.state = 7422; + this.state = 7472; this.match(MySqlParser.RR_BRACKET); } break; @@ -43813,35 +44605,35 @@ export class MySqlParser extends SQLParserBase { localContext = new CaseFunctionCallContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 7424; + this.state = 7474; this.match(MySqlParser.KW_CASE); - this.state = 7426; + this.state = 7476; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 7425; + this.state = 7475; this.caseFuncAlternative(); } } - this.state = 7428; + this.state = 7478; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 191); - this.state = 7432; + this.state = 7482; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 7430; + this.state = 7480; this.match(MySqlParser.KW_ELSE); - this.state = 7431; + this.state = 7481; (localContext as CaseFunctionCallContext)._elseArg = this.functionArg(); } } - this.state = 7434; + this.state = 7484; this.match(MySqlParser.KW_END); } break; @@ -43849,37 +44641,37 @@ export class MySqlParser extends SQLParserBase { localContext = new CaseExpressionFunctionCallContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 7436; + this.state = 7486; this.match(MySqlParser.KW_CASE); - this.state = 7437; + this.state = 7487; this.expression(0); - this.state = 7439; + this.state = 7489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 7438; + this.state = 7488; this.caseFuncAlternative(); } } - this.state = 7441; + this.state = 7491; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 191); - this.state = 7445; + this.state = 7495; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 7443; + this.state = 7493; this.match(MySqlParser.KW_ELSE); - this.state = 7444; + this.state = 7494; (localContext as CaseExpressionFunctionCallContext)._elseArg = this.functionArg(); } } - this.state = 7447; + this.state = 7497; this.match(MySqlParser.KW_END); } break; @@ -43887,25 +44679,25 @@ export class MySqlParser extends SQLParserBase { localContext = new CharFunctionCallContext(localContext); this.enterOuterAlt(localContext, 9); { - this.state = 7449; + this.state = 7499; this.match(MySqlParser.KW_CHAR); - this.state = 7450; + this.state = 7500; this.match(MySqlParser.LR_BRACKET); - this.state = 7451; + this.state = 7501; this.functionArgs(); - this.state = 7454; + this.state = 7504; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 188) { { - this.state = 7452; + this.state = 7502; this.match(MySqlParser.KW_USING); - this.state = 7453; + this.state = 7503; this.charsetName(); } } - this.state = 7456; + this.state = 7506; this.match(MySqlParser.RR_BRACKET); } break; @@ -43913,45 +44705,45 @@ export class MySqlParser extends SQLParserBase { localContext = new PositionFunctionCallContext(localContext); this.enterOuterAlt(localContext, 10); { - this.state = 7458; + this.state = 7508; this.match(MySqlParser.KW_POSITION); - this.state = 7459; + this.state = 7509; this.match(MySqlParser.LR_BRACKET); - this.state = 7462; + this.state = 7512; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1085, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1094, this.context) ) { case 1: { - this.state = 7460; + this.state = 7510; (localContext as PositionFunctionCallContext)._positionString = this.stringLiteral(); } break; case 2: { - this.state = 7461; + this.state = 7511; (localContext as PositionFunctionCallContext)._positionExpression = this.expression(0); } break; } - this.state = 7464; + this.state = 7514; this.match(MySqlParser.KW_IN); - this.state = 7467; + this.state = 7517; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1086, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1095, this.context) ) { case 1: { - this.state = 7465; + this.state = 7515; (localContext as PositionFunctionCallContext)._inString = this.stringLiteral(); } break; case 2: { - this.state = 7466; + this.state = 7516; (localContext as PositionFunctionCallContext)._inExpression = this.expression(0); } break; } - this.state = 7469; + this.state = 7519; this.match(MySqlParser.RR_BRACKET); } break; @@ -43959,7 +44751,7 @@ export class MySqlParser extends SQLParserBase { localContext = new SubstrFunctionCallContext(localContext); this.enterOuterAlt(localContext, 11); { - this.state = 7471; + this.state = 7521; _la = this.tokenStream.LA(1); if(!(_la === 297 || _la === 298)) { this.errorHandler.recoverInline(this); @@ -43968,61 +44760,61 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7472; + this.state = 7522; this.match(MySqlParser.LR_BRACKET); - this.state = 7475; + this.state = 7525; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1087, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1096, this.context) ) { case 1: { - this.state = 7473; + this.state = 7523; (localContext as SubstrFunctionCallContext)._sourceString = this.stringLiteral(); } break; case 2: { - this.state = 7474; + this.state = 7524; (localContext as SubstrFunctionCallContext)._sourceExpression = this.expression(0); } break; } - this.state = 7477; + this.state = 7527; this.match(MySqlParser.KW_FROM); - this.state = 7480; + this.state = 7530; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1088, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1097, this.context) ) { case 1: { - this.state = 7478; + this.state = 7528; (localContext as SubstrFunctionCallContext)._fromDecimal = this.decimalLiteral(); } break; case 2: { - this.state = 7479; + this.state = 7529; (localContext as SubstrFunctionCallContext)._fromExpression = this.expression(0); } break; } - this.state = 7487; + this.state = 7537; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 7482; + this.state = 7532; this.match(MySqlParser.KW_FOR); - this.state = 7485; + this.state = 7535; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1089, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1098, this.context) ) { case 1: { - this.state = 7483; + this.state = 7533; (localContext as SubstrFunctionCallContext)._forDecimal = this.decimalLiteral(); } break; case 2: { - this.state = 7484; + this.state = 7534; (localContext as SubstrFunctionCallContext)._forExpression = this.expression(0); } break; @@ -44030,7 +44822,7 @@ export class MySqlParser extends SQLParserBase { } } - this.state = 7489; + this.state = 7539; this.match(MySqlParser.RR_BRACKET); } break; @@ -44038,11 +44830,11 @@ export class MySqlParser extends SQLParserBase { localContext = new TrimFunctionCallContext(localContext); this.enterOuterAlt(localContext, 12); { - this.state = 7491; + this.state = 7541; this.match(MySqlParser.KW_TRIM); - this.state = 7492; + this.state = 7542; this.match(MySqlParser.LR_BRACKET); - this.state = 7493; + this.state = 7543; (localContext as TrimFunctionCallContext)._positioinForm = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 18 || _la === 96 || _la === 177)) { @@ -44052,41 +44844,41 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7496; + this.state = 7546; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1091, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1100, this.context) ) { case 1: { - this.state = 7494; + this.state = 7544; (localContext as TrimFunctionCallContext)._sourceString = this.stringLiteral(); } break; case 2: { - this.state = 7495; + this.state = 7545; (localContext as TrimFunctionCallContext)._sourceExpression = this.expression(0); } break; } - this.state = 7498; + this.state = 7548; this.match(MySqlParser.KW_FROM); - this.state = 7501; + this.state = 7551; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1092, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1101, this.context) ) { case 1: { - this.state = 7499; + this.state = 7549; (localContext as TrimFunctionCallContext)._fromString = this.stringLiteral(); } break; case 2: { - this.state = 7500; + this.state = 7550; (localContext as TrimFunctionCallContext)._fromExpression = this.expression(0); } break; } - this.state = 7503; + this.state = 7553; this.match(MySqlParser.RR_BRACKET); } break; @@ -44094,45 +44886,45 @@ export class MySqlParser extends SQLParserBase { localContext = new TrimFunctionCallContext(localContext); this.enterOuterAlt(localContext, 13); { - this.state = 7505; + this.state = 7555; this.match(MySqlParser.KW_TRIM); - this.state = 7506; + this.state = 7556; this.match(MySqlParser.LR_BRACKET); - this.state = 7509; + this.state = 7559; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1093, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1102, this.context) ) { case 1: { - this.state = 7507; + this.state = 7557; (localContext as TrimFunctionCallContext)._sourceString = this.stringLiteral(); } break; case 2: { - this.state = 7508; + this.state = 7558; (localContext as TrimFunctionCallContext)._sourceExpression = this.expression(0); } break; } - this.state = 7511; + this.state = 7561; this.match(MySqlParser.KW_FROM); - this.state = 7514; + this.state = 7564; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1094, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1103, this.context) ) { case 1: { - this.state = 7512; + this.state = 7562; (localContext as TrimFunctionCallContext)._fromString = this.stringLiteral(); } break; case 2: { - this.state = 7513; + this.state = 7563; (localContext as TrimFunctionCallContext)._fromExpression = this.expression(0); } break; } - this.state = 7516; + this.state = 7566; this.match(MySqlParser.RR_BRACKET); } break; @@ -44140,34 +44932,34 @@ export class MySqlParser extends SQLParserBase { localContext = new WeightFunctionCallContext(localContext); this.enterOuterAlt(localContext, 14); { - this.state = 7518; + this.state = 7568; this.match(MySqlParser.KW_WEIGHT_STRING); - this.state = 7519; + this.state = 7569; this.match(MySqlParser.LR_BRACKET); - this.state = 7522; + this.state = 7572; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1095, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1104, this.context) ) { case 1: { - this.state = 7520; + this.state = 7570; this.stringLiteral(); } break; case 2: { - this.state = 7521; + this.state = 7571; this.expression(0); } break; } - this.state = 7530; + this.state = 7580; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 13) { { - this.state = 7524; + this.state = 7574; this.match(MySqlParser.KW_AS); - this.state = 7525; + this.state = 7575; (localContext as WeightFunctionCallContext)._stringFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 224 || _la === 228)) { @@ -44177,26 +44969,26 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7526; + this.state = 7576; this.match(MySqlParser.LR_BRACKET); - this.state = 7527; + this.state = 7577; this.decimalLiteral(); - this.state = 7528; + this.state = 7578; this.match(MySqlParser.RR_BRACKET); } } - this.state = 7533; + this.state = 7583; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 448) { { - this.state = 7532; + this.state = 7582; this.levelsInWeightString(); } } - this.state = 7535; + this.state = 7585; this.match(MySqlParser.RR_BRACKET); } break; @@ -44204,31 +44996,31 @@ export class MySqlParser extends SQLParserBase { localContext = new ExtractFunctionCallContext(localContext); this.enterOuterAlt(localContext, 15); { - this.state = 7537; + this.state = 7587; this.match(MySqlParser.KW_EXTRACT); - this.state = 7538; + this.state = 7588; this.match(MySqlParser.LR_BRACKET); - this.state = 7539; + this.state = 7589; this.intervalType(); - this.state = 7540; + this.state = 7590; this.match(MySqlParser.KW_FROM); - this.state = 7543; + this.state = 7593; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1098, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1107, this.context) ) { case 1: { - this.state = 7541; + this.state = 7591; (localContext as ExtractFunctionCallContext)._sourceString = this.stringLiteral(); } break; case 2: { - this.state = 7542; + this.state = 7592; (localContext as ExtractFunctionCallContext)._sourceExpression = this.expression(0); } break; } - this.state = 7545; + this.state = 7595; this.match(MySqlParser.RR_BRACKET); } break; @@ -44236,11 +45028,11 @@ export class MySqlParser extends SQLParserBase { localContext = new GetFormatFunctionCallContext(localContext); this.enterOuterAlt(localContext, 16); { - this.state = 7547; + this.state = 7597; this.match(MySqlParser.KW_GET_FORMAT); - this.state = 7548; + this.state = 7598; this.match(MySqlParser.LR_BRACKET); - this.state = 7549; + this.state = 7599; (localContext as GetFormatFunctionCallContext)._datetimeFormat = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 11) !== 0))) { @@ -44250,11 +45042,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7550; + this.state = 7600; this.match(MySqlParser.COMMA); - this.state = 7551; + this.state = 7601; this.stringLiteral(); - this.state = 7552; + this.state = 7602; this.match(MySqlParser.RR_BRACKET); } break; @@ -44262,49 +45054,49 @@ export class MySqlParser extends SQLParserBase { localContext = new JsonValueFunctionCallContext(localContext); this.enterOuterAlt(localContext, 17); { - this.state = 7554; + this.state = 7604; this.match(MySqlParser.KW_JSON_VALUE); - this.state = 7555; + this.state = 7605; this.match(MySqlParser.LR_BRACKET); - this.state = 7556; + this.state = 7606; this.expression(0); - this.state = 7557; + this.state = 7607; this.match(MySqlParser.COMMA); - this.state = 7558; + this.state = 7608; this.expression(0); - this.state = 7561; + this.state = 7611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 579) { { - this.state = 7559; + this.state = 7609; this.match(MySqlParser.KW_RETURNING); - this.state = 7560; + this.state = 7610; this.convertedDataType(); } } - this.state = 7564; + this.state = 7614; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1100, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1109, this.context) ) { case 1: { - this.state = 7563; + this.state = 7613; this.jsonOnEmpty(); } break; } - this.state = 7567; + this.state = 7617; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 42 || _la === 116 || _la === 382) { { - this.state = 7566; + this.state = 7616; this.jsonOnError(); } } - this.state = 7569; + this.state = 7619; this.match(MySqlParser.RR_BRACKET); } break; @@ -44326,17 +45118,17 @@ export class MySqlParser extends SQLParserBase { } public caseFuncAlternative(): CaseFuncAlternativeContext { let localContext = new CaseFuncAlternativeContext(this.context, this.state); - this.enterRule(localContext, 764, MySqlParser.RULE_caseFuncAlternative); + this.enterRule(localContext, 768, MySqlParser.RULE_caseFuncAlternative); try { this.enterOuterAlt(localContext, 1); { - this.state = 7573; + this.state = 7623; this.match(MySqlParser.KW_WHEN); - this.state = 7574; + this.state = 7624; localContext._condition = this.functionArg(); - this.state = 7575; + this.state = 7625; this.match(MySqlParser.KW_THEN); - this.state = 7576; + this.state = 7626; localContext._consequent = this.functionArg(); } } @@ -44356,33 +45148,33 @@ export class MySqlParser extends SQLParserBase { } public levelsInWeightString(): LevelsInWeightStringContext { let localContext = new LevelsInWeightStringContext(this.context, this.state); - this.enterRule(localContext, 766, MySqlParser.RULE_levelsInWeightString); + this.enterRule(localContext, 770, MySqlParser.RULE_levelsInWeightString); let _la: number; try { - this.state = 7592; + this.state = 7642; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1104, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1113, this.context) ) { case 1: localContext = new LevelWeightListContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7578; + this.state = 7628; this.match(MySqlParser.KW_LEVEL); - this.state = 7579; + this.state = 7629; this.levelInWeightListElement(); - this.state = 7584; + this.state = 7634; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7580; + this.state = 7630; this.match(MySqlParser.COMMA); - this.state = 7581; + this.state = 7631; this.levelInWeightListElement(); } } - this.state = 7586; + this.state = 7636; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -44392,13 +45184,13 @@ export class MySqlParser extends SQLParserBase { localContext = new LevelWeightRangeContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7587; + this.state = 7637; this.match(MySqlParser.KW_LEVEL); - this.state = 7588; + this.state = 7638; (localContext as LevelWeightRangeContext)._firstLevel = this.decimalLiteral(); - this.state = 7589; + this.state = 7639; this.match(MySqlParser.MINUS); - this.state = 7590; + this.state = 7640; (localContext as LevelWeightRangeContext)._lastLevel = this.decimalLiteral(); } break; @@ -44420,19 +45212,19 @@ export class MySqlParser extends SQLParserBase { } public levelInWeightListElement(): LevelInWeightListElementContext { let localContext = new LevelInWeightListElementContext(this.context, this.state); - this.enterRule(localContext, 768, MySqlParser.RULE_levelInWeightListElement); + this.enterRule(localContext, 772, MySqlParser.RULE_levelInWeightListElement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7594; + this.state = 7644; this.decimalLiteral(); - this.state = 7596; + this.state = 7646; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 14 || _la === 45 || _la === 830) { { - this.state = 7595; + this.state = 7645; localContext._orderType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 14 || _la === 45 || _la === 830)) { @@ -44463,10 +45255,10 @@ export class MySqlParser extends SQLParserBase { } public aggregateWindowedFunction(): AggregateWindowedFunctionContext { let localContext = new AggregateWindowedFunctionContext(this.context, this.state); - this.enterRule(localContext, 770, MySqlParser.RULE_aggregateWindowedFunction); + this.enterRule(localContext, 774, MySqlParser.RULE_aggregateWindowedFunction); let _la: number; try { - this.state = 7657; + this.state = 7707; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_AVG: @@ -44475,7 +45267,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_SUM: this.enterOuterAlt(localContext, 1); { - this.state = 7598; + this.state = 7648; _la = this.tokenStream.LA(1); if(!(((((_la - 258)) & ~0x1F) === 0 && ((1 << (_la - 258)) & 8400897) !== 0))) { this.errorHandler.recoverInline(this); @@ -44484,14 +45276,14 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7599; + this.state = 7649; this.match(MySqlParser.LR_BRACKET); - this.state = 7601; + this.state = 7651; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1106, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1115, this.context) ) { case 1: { - this.state = 7600; + this.state = 7650; localContext._aggregator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 49)) { @@ -44504,16 +45296,16 @@ export class MySqlParser extends SQLParserBase { } break; } - this.state = 7603; + this.state = 7653; this.functionArg(); - this.state = 7604; + this.state = 7654; this.match(MySqlParser.RR_BRACKET); - this.state = 7606; + this.state = 7656; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1107, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1116, this.context) ) { case 1: { - this.state = 7605; + this.state = 7655; this.overClause(); } break; @@ -44523,52 +45315,52 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_COUNT: this.enterOuterAlt(localContext, 2); { - this.state = 7608; + this.state = 7658; this.match(MySqlParser.KW_COUNT); - this.state = 7609; + this.state = 7659; this.match(MySqlParser.LR_BRACKET); - this.state = 7617; + this.state = 7667; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1109, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1118, this.context) ) { case 1: { - this.state = 7610; + this.state = 7660; localContext._starArg = this.match(MySqlParser.STAR); } break; case 2: { - this.state = 7612; + this.state = 7662; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1108, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1117, this.context) ) { case 1: { - this.state = 7611; + this.state = 7661; localContext._aggregator = this.match(MySqlParser.KW_ALL); } break; } - this.state = 7614; + this.state = 7664; this.functionArg(); } break; case 3: { - this.state = 7615; + this.state = 7665; localContext._aggregator = this.match(MySqlParser.KW_DISTINCT); - this.state = 7616; + this.state = 7666; this.functionArgs(); } break; } - this.state = 7619; + this.state = 7669; this.match(MySqlParser.RR_BRACKET); - this.state = 7621; + this.state = 7671; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1110, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1119, this.context) ) { case 1: { - this.state = 7620; + this.state = 7670; this.overClause(); } break; @@ -44587,7 +45379,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_VARIANCE: this.enterOuterAlt(localContext, 3); { - this.state = 7623; + this.state = 7673; _la = this.tokenStream.LA(1); if(!(((((_la - 259)) & ~0x1F) === 0 && ((1 << (_la - 259)) & 62652423) !== 0))) { this.errorHandler.recoverInline(this); @@ -44596,28 +45388,28 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7624; + this.state = 7674; this.match(MySqlParser.LR_BRACKET); - this.state = 7626; + this.state = 7676; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1111, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1120, this.context) ) { case 1: { - this.state = 7625; + this.state = 7675; localContext._aggregator = this.match(MySqlParser.KW_ALL); } break; } - this.state = 7628; + this.state = 7678; this.functionArg(); - this.state = 7629; + this.state = 7679; this.match(MySqlParser.RR_BRACKET); - this.state = 7631; + this.state = 7681; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1112, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1121, this.context) ) { case 1: { - this.state = 7630; + this.state = 7680; this.overClause(); } break; @@ -44627,65 +45419,65 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_GROUP_CONCAT: this.enterOuterAlt(localContext, 4); { - this.state = 7633; + this.state = 7683; this.match(MySqlParser.KW_GROUP_CONCAT); - this.state = 7634; + this.state = 7684; this.match(MySqlParser.LR_BRACKET); - this.state = 7636; + this.state = 7686; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1113, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1122, this.context) ) { case 1: { - this.state = 7635; + this.state = 7685; localContext._aggregator = this.match(MySqlParser.KW_DISTINCT); } break; } - this.state = 7638; + this.state = 7688; this.functionArgs(); - this.state = 7649; + this.state = 7699; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 7639; + this.state = 7689; this.match(MySqlParser.KW_ORDER); - this.state = 7640; + this.state = 7690; this.match(MySqlParser.KW_BY); - this.state = 7641; + this.state = 7691; this.orderByExpression(); - this.state = 7646; + this.state = 7696; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7642; + this.state = 7692; this.match(MySqlParser.COMMA); - this.state = 7643; + this.state = 7693; this.orderByExpression(); } } - this.state = 7648; + this.state = 7698; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 7653; + this.state = 7703; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 156) { { - this.state = 7651; + this.state = 7701; this.match(MySqlParser.KW_SEPARATOR); - this.state = 7652; + this.state = 7702; localContext._separator = this.match(MySqlParser.STRING_LITERAL); } } - this.state = 7655; + this.state = 7705; this.match(MySqlParser.RR_BRACKET); } break; @@ -44709,17 +45501,17 @@ export class MySqlParser extends SQLParserBase { } public nonAggregateWindowedFunction(): NonAggregateWindowedFunctionContext { let localContext = new NonAggregateWindowedFunctionContext(this.context, this.state); - this.enterRule(localContext, 772, MySqlParser.RULE_nonAggregateWindowedFunction); + this.enterRule(localContext, 776, MySqlParser.RULE_nonAggregateWindowedFunction); let _la: number; try { - this.state = 7697; + this.state = 7747; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_LAG: case MySqlParser.KW_LEAD: this.enterOuterAlt(localContext, 1); { - this.state = 7659; + this.state = 7709; _la = this.tokenStream.LA(1); if(!(_la === 267 || _la === 269)) { this.errorHandler.recoverInline(this); @@ -44728,37 +45520,37 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7660; + this.state = 7710; this.match(MySqlParser.LR_BRACKET); - this.state = 7661; + this.state = 7711; this.expression(0); - this.state = 7664; + this.state = 7714; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1118, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1127, this.context) ) { case 1: { - this.state = 7662; + this.state = 7712; this.match(MySqlParser.COMMA); - this.state = 7663; + this.state = 7713; this.decimalLiteral(); } break; } - this.state = 7668; + this.state = 7718; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 868) { { - this.state = 7666; + this.state = 7716; this.match(MySqlParser.COMMA); - this.state = 7667; + this.state = 7717; this.decimalLiteral(); } } - this.state = 7670; + this.state = 7720; this.match(MySqlParser.RR_BRACKET); - this.state = 7671; + this.state = 7721; this.overClause(); } break; @@ -44766,7 +45558,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_LAST_VALUE: this.enterOuterAlt(localContext, 2); { - this.state = 7673; + this.state = 7723; _la = this.tokenStream.LA(1); if(!(_la === 265 || _la === 268)) { this.errorHandler.recoverInline(this); @@ -44775,13 +45567,13 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7674; + this.state = 7724; this.match(MySqlParser.LR_BRACKET); - this.state = 7675; + this.state = 7725; this.expression(0); - this.state = 7676; + this.state = 7726; this.match(MySqlParser.RR_BRACKET); - this.state = 7677; + this.state = 7727; this.overClause(); } break; @@ -44792,7 +45584,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_ROW_NUMBER: this.enterOuterAlt(localContext, 3); { - this.state = 7679; + this.state = 7729; _la = this.tokenStream.LA(1); if(!(((((_la - 263)) & ~0x1F) === 0 && ((1 << (_la - 263)) & 14339) !== 0))) { this.errorHandler.recoverInline(this); @@ -44801,45 +45593,45 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7680; + this.state = 7730; this.match(MySqlParser.LR_BRACKET); - this.state = 7681; + this.state = 7731; this.match(MySqlParser.RR_BRACKET); - this.state = 7682; + this.state = 7732; this.overClause(); } break; case MySqlParser.KW_NTH_VALUE: this.enterOuterAlt(localContext, 4); { - this.state = 7683; + this.state = 7733; this.match(MySqlParser.KW_NTH_VALUE); - this.state = 7684; + this.state = 7734; this.match(MySqlParser.LR_BRACKET); - this.state = 7685; + this.state = 7735; this.expression(0); - this.state = 7686; + this.state = 7736; this.match(MySqlParser.COMMA); - this.state = 7687; + this.state = 7737; this.decimalLiteral(); - this.state = 7688; + this.state = 7738; this.match(MySqlParser.RR_BRACKET); - this.state = 7689; + this.state = 7739; this.overClause(); } break; case MySqlParser.KW_NTILE: this.enterOuterAlt(localContext, 5); { - this.state = 7691; + this.state = 7741; this.match(MySqlParser.KW_NTILE); - this.state = 7692; + this.state = 7742; this.match(MySqlParser.LR_BRACKET); - this.state = 7693; + this.state = 7743; this.decimalLiteral(); - this.state = 7694; + this.state = 7744; this.match(MySqlParser.RR_BRACKET); - this.state = 7695; + this.state = 7745; this.overClause(); } break; @@ -44863,22 +45655,22 @@ export class MySqlParser extends SQLParserBase { } public overClause(): OverClauseContext { let localContext = new OverClauseContext(this.context, this.state); - this.enterRule(localContext, 774, MySqlParser.RULE_overClause); + this.enterRule(localContext, 778, MySqlParser.RULE_overClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 7699; + this.state = 7749; this.match(MySqlParser.KW_OVER); - this.state = 7705; + this.state = 7755; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.LR_BRACKET: { - this.state = 7700; + this.state = 7750; this.match(MySqlParser.LR_BRACKET); - this.state = 7701; + this.state = 7751; this.windowSpec(); - this.state = 7702; + this.state = 7752; this.match(MySqlParser.RR_BRACKET); } break; @@ -45212,6 +46004,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.KW_RESET: case MySqlParser.KW_RESUME: case MySqlParser.KW_RETURNED_SQLSTATE: + case MySqlParser.KW_RETURNING: case MySqlParser.KW_RETURNS: case MySqlParser.KW_REUSE: case MySqlParser.KW_ROLE: @@ -45431,7 +46224,7 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.STRING_LITERAL: case MySqlParser.ID: { - this.state = 7704; + this.state = 7754; this.windowName(); } break; @@ -45456,47 +46249,47 @@ export class MySqlParser extends SQLParserBase { } public windowSpec(): WindowSpecContext { let localContext = new WindowSpecContext(this.context, this.state); - this.enterRule(localContext, 776, MySqlParser.RULE_windowSpec); + this.enterRule(localContext, 780, MySqlParser.RULE_windowSpec); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7708; + this.state = 7758; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1122, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1131, this.context) ) { case 1: { - this.state = 7707; + this.state = 7757; this.windowName(); } break; } - this.state = 7711; + this.state = 7761; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130) { { - this.state = 7710; + this.state = 7760; this.partitionClause(); } } - this.state = 7714; + this.state = 7764; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 125) { { - this.state = 7713; + this.state = 7763; this.orderByClause(); } } - this.state = 7717; + this.state = 7767; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 134 || _la === 587) { { - this.state = 7716; + this.state = 7766; this.frameClause(); } } @@ -45519,11 +46312,11 @@ export class MySqlParser extends SQLParserBase { } public windowName(): WindowNameContext { let localContext = new WindowNameContext(this.context, this.state); - this.enterRule(localContext, 778, MySqlParser.RULE_windowName); + this.enterRule(localContext, 782, MySqlParser.RULE_windowName); try { this.enterOuterAlt(localContext, 1); { - this.state = 7719; + this.state = 7769; this.uid(); } } @@ -45543,13 +46336,13 @@ export class MySqlParser extends SQLParserBase { } public frameClause(): FrameClauseContext { let localContext = new FrameClauseContext(this.context, this.state); - this.enterRule(localContext, 780, MySqlParser.RULE_frameClause); + this.enterRule(localContext, 784, MySqlParser.RULE_frameClause); try { this.enterOuterAlt(localContext, 1); { - this.state = 7721; + this.state = 7771; this.frameUnits(); - this.state = 7722; + this.state = 7772; this.frameExtent(); } } @@ -45569,12 +46362,12 @@ export class MySqlParser extends SQLParserBase { } public frameUnits(): FrameUnitsContext { let localContext = new FrameUnitsContext(this.context, this.state); - this.enterRule(localContext, 782, MySqlParser.RULE_frameUnits); + this.enterRule(localContext, 786, MySqlParser.RULE_frameUnits); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7724; + this.state = 7774; _la = this.tokenStream.LA(1); if(!(_la === 134 || _la === 587)) { this.errorHandler.recoverInline(this); @@ -45601,22 +46394,22 @@ export class MySqlParser extends SQLParserBase { } public frameExtent(): FrameExtentContext { let localContext = new FrameExtentContext(this.context, this.state); - this.enterRule(localContext, 784, MySqlParser.RULE_frameExtent); + this.enterRule(localContext, 788, MySqlParser.RULE_frameExtent); try { - this.state = 7728; + this.state = 7778; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1126, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1135, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7726; + this.state = 7776; this.frameRange(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7727; + this.state = 7777; this.frameBetween(); } break; @@ -45638,17 +46431,17 @@ export class MySqlParser extends SQLParserBase { } public frameBetween(): FrameBetweenContext { let localContext = new FrameBetweenContext(this.context, this.state); - this.enterRule(localContext, 786, MySqlParser.RULE_frameBetween); + this.enterRule(localContext, 790, MySqlParser.RULE_frameBetween); try { this.enterOuterAlt(localContext, 1); { - this.state = 7730; + this.state = 7780; this.match(MySqlParser.KW_BETWEEN); - this.state = 7731; + this.state = 7781; this.frameRange(); - this.state = 7732; + this.state = 7782; this.match(MySqlParser.KW_AND); - this.state = 7733; + this.state = 7783; this.frameRange(); } } @@ -45668,27 +46461,27 @@ export class MySqlParser extends SQLParserBase { } public frameRange(): FrameRangeContext { let localContext = new FrameRangeContext(this.context, this.state); - this.enterRule(localContext, 788, MySqlParser.RULE_frameRange); + this.enterRule(localContext, 792, MySqlParser.RULE_frameRange); let _la: number; try { - this.state = 7742; + this.state = 7792; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1127, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1136, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7735; + this.state = 7785; this.match(MySqlParser.KW_CURRENT); - this.state = 7736; + this.state = 7786; this.match(MySqlParser.KW_ROW); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7737; + this.state = 7787; this.match(MySqlParser.KW_UNBOUNDED); - this.state = 7738; + this.state = 7788; _la = this.tokenStream.LA(1); if(!(_la === 405 || _la === 539)) { this.errorHandler.recoverInline(this); @@ -45702,9 +46495,9 @@ export class MySqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7739; + this.state = 7789; this.expression(0); - this.state = 7740; + this.state = 7790; _la = this.tokenStream.LA(1); if(!(_la === 405 || _la === 539)) { this.errorHandler.recoverInline(this); @@ -45733,30 +46526,30 @@ export class MySqlParser extends SQLParserBase { } public partitionClause(): PartitionClauseContext { let localContext = new PartitionClauseContext(this.context, this.state); - this.enterRule(localContext, 790, MySqlParser.RULE_partitionClause); + this.enterRule(localContext, 794, MySqlParser.RULE_partitionClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7744; + this.state = 7794; this.match(MySqlParser.KW_PARTITION); - this.state = 7745; + this.state = 7795; this.match(MySqlParser.KW_BY); - this.state = 7746; + this.state = 7796; this.expression(0); - this.state = 7751; + this.state = 7801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7747; + this.state = 7797; this.match(MySqlParser.COMMA); - this.state = 7748; + this.state = 7798; this.expression(0); } } - this.state = 7753; + this.state = 7803; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -45778,9 +46571,9 @@ export class MySqlParser extends SQLParserBase { } public scalarFunctionName(): ScalarFunctionNameContext { let localContext = new ScalarFunctionNameContext(this.context, this.state); - this.enterRule(localContext, 792, MySqlParser.RULE_scalarFunctionName); + this.enterRule(localContext, 796, MySqlParser.RULE_scalarFunctionName); try { - this.state = 7778; + this.state = 7828; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_DATABASE: @@ -45837,168 +46630,168 @@ export class MySqlParser extends SQLParserBase { case MySqlParser.MOD: this.enterOuterAlt(localContext, 1); { - this.state = 7754; + this.state = 7804; this.functionNameBase(); } break; case MySqlParser.KW_ASCII: this.enterOuterAlt(localContext, 2); { - this.state = 7755; + this.state = 7805; this.match(MySqlParser.KW_ASCII); } break; case MySqlParser.KW_CURDATE: this.enterOuterAlt(localContext, 3); { - this.state = 7756; + this.state = 7806; this.match(MySqlParser.KW_CURDATE); } break; case MySqlParser.KW_CURRENT_DATE: this.enterOuterAlt(localContext, 4); { - this.state = 7757; + this.state = 7807; this.match(MySqlParser.KW_CURRENT_DATE); } break; case MySqlParser.KW_CURRENT_TIME: this.enterOuterAlt(localContext, 5); { - this.state = 7758; + this.state = 7808; this.match(MySqlParser.KW_CURRENT_TIME); } break; case MySqlParser.KW_CURRENT_TIMESTAMP: this.enterOuterAlt(localContext, 6); { - this.state = 7759; + this.state = 7809; this.match(MySqlParser.KW_CURRENT_TIMESTAMP); } break; case MySqlParser.KW_CURTIME: this.enterOuterAlt(localContext, 7); { - this.state = 7760; + this.state = 7810; this.match(MySqlParser.KW_CURTIME); } break; case MySqlParser.KW_DATE_ADD: this.enterOuterAlt(localContext, 8); { - this.state = 7761; + this.state = 7811; this.match(MySqlParser.KW_DATE_ADD); } break; case MySqlParser.KW_DATE_SUB: this.enterOuterAlt(localContext, 9); { - this.state = 7762; + this.state = 7812; this.match(MySqlParser.KW_DATE_SUB); } break; case MySqlParser.KW_IF: this.enterOuterAlt(localContext, 10); { - this.state = 7763; + this.state = 7813; this.match(MySqlParser.KW_IF); } break; case MySqlParser.KW_INSERT: this.enterOuterAlt(localContext, 11); { - this.state = 7764; + this.state = 7814; this.match(MySqlParser.KW_INSERT); } break; case MySqlParser.KW_LOCALTIME: this.enterOuterAlt(localContext, 12); { - this.state = 7765; + this.state = 7815; this.match(MySqlParser.KW_LOCALTIME); } break; case MySqlParser.KW_LOCALTIMESTAMP: this.enterOuterAlt(localContext, 13); { - this.state = 7766; + this.state = 7816; this.match(MySqlParser.KW_LOCALTIMESTAMP); } break; case MySqlParser.KW_MID: this.enterOuterAlt(localContext, 14); { - this.state = 7767; + this.state = 7817; this.match(MySqlParser.KW_MID); } break; case MySqlParser.KW_NOW: this.enterOuterAlt(localContext, 15); { - this.state = 7768; + this.state = 7818; this.match(MySqlParser.KW_NOW); } break; case MySqlParser.KW_REPEAT: this.enterOuterAlt(localContext, 16); { - this.state = 7769; + this.state = 7819; this.match(MySqlParser.KW_REPEAT); } break; case MySqlParser.KW_REPLACE: this.enterOuterAlt(localContext, 17); { - this.state = 7770; + this.state = 7820; this.match(MySqlParser.KW_REPLACE); } break; case MySqlParser.KW_SUBSTR: this.enterOuterAlt(localContext, 18); { - this.state = 7771; + this.state = 7821; this.match(MySqlParser.KW_SUBSTR); } break; case MySqlParser.KW_SUBSTRING: this.enterOuterAlt(localContext, 19); { - this.state = 7772; + this.state = 7822; this.match(MySqlParser.KW_SUBSTRING); } break; case MySqlParser.KW_SYSDATE: this.enterOuterAlt(localContext, 20); { - this.state = 7773; + this.state = 7823; this.match(MySqlParser.KW_SYSDATE); } break; case MySqlParser.KW_TRIM: this.enterOuterAlt(localContext, 21); { - this.state = 7774; + this.state = 7824; this.match(MySqlParser.KW_TRIM); } break; case MySqlParser.KW_UTC_DATE: this.enterOuterAlt(localContext, 22); { - this.state = 7775; + this.state = 7825; this.match(MySqlParser.KW_UTC_DATE); } break; case MySqlParser.KW_UTC_TIME: this.enterOuterAlt(localContext, 23); { - this.state = 7776; + this.state = 7826; this.match(MySqlParser.KW_UTC_TIME); } break; case MySqlParser.KW_UTC_TIMESTAMP: this.enterOuterAlt(localContext, 24); { - this.state = 7777; + this.state = 7827; this.match(MySqlParser.KW_UTC_TIMESTAMP); } break; @@ -46022,12 +46815,12 @@ export class MySqlParser extends SQLParserBase { } public passwordFunctionClause(): PasswordFunctionClauseContext { let localContext = new PasswordFunctionClauseContext(this.context, this.state); - this.enterRule(localContext, 794, MySqlParser.RULE_passwordFunctionClause); + this.enterRule(localContext, 798, MySqlParser.RULE_passwordFunctionClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7780; + this.state = 7830; _la = this.tokenStream.LA(1); if(!(_la === 512 || _la === 529)) { this.errorHandler.recoverInline(this); @@ -46036,11 +46829,11 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7781; + this.state = 7831; this.match(MySqlParser.LR_BRACKET); - this.state = 7782; + this.state = 7832; this.functionArg(); - this.state = 7783; + this.state = 7833; this.match(MySqlParser.RR_BRACKET); } } @@ -46060,26 +46853,26 @@ export class MySqlParser extends SQLParserBase { } public functionArgs(): FunctionArgsContext { let localContext = new FunctionArgsContext(this.context, this.state); - this.enterRule(localContext, 796, MySqlParser.RULE_functionArgs); + this.enterRule(localContext, 800, MySqlParser.RULE_functionArgs); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7785; + this.state = 7835; this.functionArg(); - this.state = 7790; + this.state = 7840; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7786; + this.state = 7836; this.match(MySqlParser.COMMA); - this.state = 7787; + this.state = 7837; this.functionArg(); } } - this.state = 7792; + this.state = 7842; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -46101,29 +46894,29 @@ export class MySqlParser extends SQLParserBase { } public functionArg(): FunctionArgContext { let localContext = new FunctionArgContext(this.context, this.state); - this.enterRule(localContext, 798, MySqlParser.RULE_functionArg); + this.enterRule(localContext, 802, MySqlParser.RULE_functionArg); try { - this.state = 7796; + this.state = 7846; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1131, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1140, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7793; + this.state = 7843; this.constant(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7794; + this.state = 7844; this.functionCall(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7795; + this.state = 7845; this.expression(0); } break; @@ -46155,23 +46948,23 @@ export class MySqlParser extends SQLParserBase { let parentState = this.state; let localContext = new ExpressionContext(this.context, parentState); let previousContext = localContext; - let _startState = 800; - this.enterRecursionRule(localContext, 800, MySqlParser.RULE_expression, _p); + let _startState = 804; + this.enterRecursionRule(localContext, 804, MySqlParser.RULE_expression, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7809; + this.state = 7859; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1133, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1142, this.context) ) { case 1: { localContext = new NotExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7799; + this.state = 7849; (localContext as NotExpressionContext)._notOperator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 114 || _la === 860)) { @@ -46181,7 +46974,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7800; + this.state = 7850; this.expression(4); } break; @@ -46190,21 +46983,21 @@ export class MySqlParser extends SQLParserBase { localContext = new IsExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7801; + this.state = 7851; this.predicate(0); - this.state = 7802; + this.state = 7852; this.match(MySqlParser.KW_IS); - this.state = 7804; + this.state = 7854; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7803; + this.state = 7853; this.match(MySqlParser.KW_NOT); } } - this.state = 7806; + this.state = 7856; (localContext as IsExpressionContext)._testValue = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 63 || _la === 179 || _la === 674)) { @@ -46221,15 +47014,15 @@ export class MySqlParser extends SQLParserBase { localContext = new PredicateExpressionContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7808; + this.state = 7858; this.predicate(0); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 7817; + this.state = 7867; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1134, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -46240,20 +47033,20 @@ export class MySqlParser extends SQLParserBase { { localContext = new LogicalExpressionContext(new ExpressionContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_expression); - this.state = 7811; + this.state = 7861; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 7812; + this.state = 7862; this.logicalOperator(); - this.state = 7813; + this.state = 7863; this.expression(4); } } } - this.state = 7819; + this.state = 7869; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1134, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context); } } } @@ -46283,8 +47076,8 @@ export class MySqlParser extends SQLParserBase { let parentState = this.state; let localContext = new PredicateContext(this.context, parentState); let previousContext = localContext; - let _startState = 802; - this.enterRecursionRule(localContext, 802, MySqlParser.RULE_predicate, _p); + let _startState = 806; + this.enterRecursionRule(localContext, 806, MySqlParser.RULE_predicate, _p); let _la: number; try { let alternative: number; @@ -46295,13 +47088,13 @@ export class MySqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 7821; + this.state = 7871; this.expressionAtom(0); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 7886; + this.state = 7936; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1152, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -46309,34 +47102,34 @@ export class MySqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 7884; + this.state = 7934; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1142, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1151, this.context) ) { case 1: { localContext = new BetweenPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7823; + this.state = 7873; if (!(this.precpred(this.context, 6))) { throw this.createFailedPredicateException("this.precpred(this.context, 6)"); } - this.state = 7825; + this.state = 7875; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7824; + this.state = 7874; this.match(MySqlParser.KW_NOT); } } - this.state = 7827; + this.state = 7877; this.match(MySqlParser.KW_BETWEEN); - this.state = 7828; + this.state = 7878; this.predicate(0); - this.state = 7829; + this.state = 7879; this.match(MySqlParser.KW_AND); - this.state = 7830; + this.state = 7880; this.predicate(7); } break; @@ -46344,15 +47137,15 @@ export class MySqlParser extends SQLParserBase { { localContext = new SoundsLikePredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7832; + this.state = 7882; if (!(this.precpred(this.context, 5))) { throw this.createFailedPredicateException("this.precpred(this.context, 5)"); } - this.state = 7833; + this.state = 7883; this.match(MySqlParser.KW_SOUNDS); - this.state = 7834; + this.state = 7884; this.match(MySqlParser.KW_LIKE); - this.state = 7835; + this.state = 7885; this.predicate(6); } break; @@ -46360,21 +47153,21 @@ export class MySqlParser extends SQLParserBase { { localContext = new RegexpPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7836; + this.state = 7886; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 7838; + this.state = 7888; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7837; + this.state = 7887; this.match(MySqlParser.KW_NOT); } } - this.state = 7840; + this.state = 7890; (localContext as RegexpPredicateContext)._regex = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 151)) { @@ -46384,7 +47177,7 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7841; + this.state = 7891; this.predicate(4); } break; @@ -46392,41 +47185,41 @@ export class MySqlParser extends SQLParserBase { { localContext = new InPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7842; + this.state = 7892; if (!(this.precpred(this.context, 9))) { throw this.createFailedPredicateException("this.precpred(this.context, 9)"); } - this.state = 7844; + this.state = 7894; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7843; + this.state = 7893; this.match(MySqlParser.KW_NOT); } } - this.state = 7846; + this.state = 7896; this.match(MySqlParser.KW_IN); - this.state = 7847; + this.state = 7897; this.match(MySqlParser.LR_BRACKET); - this.state = 7850; + this.state = 7900; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1138, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1147, this.context) ) { case 1: { - this.state = 7848; + this.state = 7898; this.selectStatement(); } break; case 2: { - this.state = 7849; + this.state = 7899; this.expressions(); } break; } - this.state = 7852; + this.state = 7902; this.match(MySqlParser.RR_BRACKET); } break; @@ -46434,13 +47227,13 @@ export class MySqlParser extends SQLParserBase { { localContext = new IsNullPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7854; + this.state = 7904; if (!(this.precpred(this.context, 8))) { throw this.createFailedPredicateException("this.precpred(this.context, 8)"); } - this.state = 7855; + this.state = 7905; this.match(MySqlParser.KW_IS); - this.state = 7856; + this.state = 7906; this.nullNotnull(); } break; @@ -46448,18 +47241,18 @@ export class MySqlParser extends SQLParserBase { { localContext = new BinaryComparisonPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7857; + this.state = 7907; if (!(this.precpred(this.context, 7))) { throw this.createFailedPredicateException("this.precpred(this.context, 7)"); } - this.state = 7858; + this.state = 7908; this.comparisonOperator(); - this.state = 7865; + this.state = 7915; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1139, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1148, this.context) ) { case 1: { - this.state = 7859; + this.state = 7909; (localContext as BinaryComparisonPredicateContext)._quantifier = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 7 || _la === 309 || _la === 602)) { @@ -46469,17 +47262,17 @@ export class MySqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7860; + this.state = 7910; this.match(MySqlParser.LR_BRACKET); - this.state = 7861; + this.state = 7911; (localContext as BinaryComparisonPredicateContext)._subQuery = this.selectStatement(); - this.state = 7862; + this.state = 7912; this.match(MySqlParser.RR_BRACKET); } break; case 2: { - this.state = 7864; + this.state = 7914; (localContext as BinaryComparisonPredicateContext)._right = this.predicate(0); } break; @@ -46490,32 +47283,32 @@ export class MySqlParser extends SQLParserBase { { localContext = new LikePredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7867; + this.state = 7917; if (!(this.precpred(this.context, 4))) { throw this.createFailedPredicateException("this.precpred(this.context, 4)"); } - this.state = 7869; + this.state = 7919; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 114) { { - this.state = 7868; + this.state = 7918; this.match(MySqlParser.KW_NOT); } } - this.state = 7871; + this.state = 7921; this.match(MySqlParser.KW_LIKE); - this.state = 7872; + this.state = 7922; this.predicate(0); - this.state = 7875; + this.state = 7925; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1141, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1150, this.context) ) { case 1: { - this.state = 7873; + this.state = 7923; this.match(MySqlParser.KW_ESCAPE); - this.state = 7874; + this.state = 7924; this.match(MySqlParser.STRING_LITERAL); } break; @@ -46526,28 +47319,28 @@ export class MySqlParser extends SQLParserBase { { localContext = new JsonMemberOfPredicateContext(new PredicateContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_predicate); - this.state = 7877; + this.state = 7927; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 7878; + this.state = 7928; this.match(MySqlParser.KW_MEMBER); - this.state = 7879; + this.state = 7929; this.match(MySqlParser.KW_OF); - this.state = 7880; + this.state = 7930; this.match(MySqlParser.LR_BRACKET); - this.state = 7881; + this.state = 7931; this.predicate(0); - this.state = 7882; + this.state = 7932; this.match(MySqlParser.RR_BRACKET); } break; } } } - this.state = 7888; + this.state = 7938; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1152, this.context); } } } @@ -46577,23 +47370,23 @@ export class MySqlParser extends SQLParserBase { let parentState = this.state; let localContext = new ExpressionAtomContext(this.context, parentState); let previousContext = localContext; - let _startState = 804; - this.enterRecursionRule(localContext, 804, MySqlParser.RULE_expressionAtom, _p); + let _startState = 808; + this.enterRecursionRule(localContext, 808, MySqlParser.RULE_expressionAtom, _p); let _la: number; try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7937; + this.state = 7987; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1146, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1155, this.context) ) { case 1: { localContext = new ConstantExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7890; + this.state = 7940; this.constant(); } break; @@ -46602,7 +47395,7 @@ export class MySqlParser extends SQLParserBase { localContext = new FunctionCallExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7891; + this.state = 7941; this.functionCall(); } break; @@ -46611,7 +47404,7 @@ export class MySqlParser extends SQLParserBase { localContext = new MysqlVariableExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7892; + this.state = 7942; this.mysqlVariable(); } break; @@ -46620,9 +47413,9 @@ export class MySqlParser extends SQLParserBase { localContext = new UnaryExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7893; + this.state = 7943; this.unaryOperator(); - this.state = 7894; + this.state = 7944; this.expressionAtom(12); } break; @@ -46631,9 +47424,9 @@ export class MySqlParser extends SQLParserBase { localContext = new BinaryExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7896; + this.state = 7946; this.match(MySqlParser.KW_BINARY); - this.state = 7897; + this.state = 7947; this.expressionAtom(11); } break; @@ -46642,11 +47435,11 @@ export class MySqlParser extends SQLParserBase { localContext = new VariableAssignExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7898; + this.state = 7948; this.match(MySqlParser.LOCAL_ID); - this.state = 7899; + this.state = 7949; this.match(MySqlParser.VAR_ASSIGN); - this.state = 7900; + this.state = 7950; this.expressionAtom(10); } break; @@ -46655,27 +47448,27 @@ export class MySqlParser extends SQLParserBase { localContext = new NestedExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7901; + this.state = 7951; this.match(MySqlParser.LR_BRACKET); - this.state = 7902; + this.state = 7952; this.expression(0); - this.state = 7907; + this.state = 7957; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 868) { { { - this.state = 7903; + this.state = 7953; this.match(MySqlParser.COMMA); - this.state = 7904; + this.state = 7954; this.expression(0); } } - this.state = 7909; + this.state = 7959; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7910; + this.state = 7960; this.match(MySqlParser.RR_BRACKET); } break; @@ -46684,29 +47477,29 @@ export class MySqlParser extends SQLParserBase { localContext = new NestedRowExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7912; + this.state = 7962; this.match(MySqlParser.KW_ROW); - this.state = 7913; + this.state = 7963; this.match(MySqlParser.LR_BRACKET); - this.state = 7914; + this.state = 7964; this.expression(0); - this.state = 7917; + this.state = 7967; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 7915; + this.state = 7965; this.match(MySqlParser.COMMA); - this.state = 7916; + this.state = 7966; this.expression(0); } } - this.state = 7919; + this.state = 7969; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 868); - this.state = 7921; + this.state = 7971; this.match(MySqlParser.RR_BRACKET); } break; @@ -46715,13 +47508,13 @@ export class MySqlParser extends SQLParserBase { localContext = new ExistsExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7923; + this.state = 7973; this.match(MySqlParser.KW_EXISTS); - this.state = 7924; + this.state = 7974; this.match(MySqlParser.LR_BRACKET); - this.state = 7925; + this.state = 7975; this.selectStatement(); - this.state = 7926; + this.state = 7976; this.match(MySqlParser.RR_BRACKET); } break; @@ -46730,11 +47523,11 @@ export class MySqlParser extends SQLParserBase { localContext = new SubqueryExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7928; + this.state = 7978; this.match(MySqlParser.LR_BRACKET); - this.state = 7929; + this.state = 7979; this.selectStatement(); - this.state = 7930; + this.state = 7980; this.match(MySqlParser.RR_BRACKET); } break; @@ -46743,11 +47536,11 @@ export class MySqlParser extends SQLParserBase { localContext = new IntervalExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7932; + this.state = 7982; this.match(MySqlParser.KW_INTERVAL); - this.state = 7933; + this.state = 7983; this.expression(0); - this.state = 7934; + this.state = 7984; this.intervalType(); } break; @@ -46756,15 +47549,15 @@ export class MySqlParser extends SQLParserBase { localContext = new ColumnNameExpressionAtomContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 7936; + this.state = 7986; this.columnName(); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 7956; + this.state = 8006; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1148, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1157, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -46772,21 +47565,21 @@ export class MySqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 7954; + this.state = 8004; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1147, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1156, this.context) ) { case 1: { localContext = new JsonExpressionAtomContext(new ExpressionAtomContext(parentContext, parentState)); (localContext as JsonExpressionAtomContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_expressionAtom); - this.state = 7939; + this.state = 7989; if (!(this.precpred(this.context, 4))) { throw this.createFailedPredicateException("this.precpred(this.context, 4)"); } - this.state = 7940; + this.state = 7990; this.jsonOperator(); - this.state = 7941; + this.state = 7991; (localContext as JsonExpressionAtomContext)._right = this.expressionAtom(5); } break; @@ -46795,13 +47588,13 @@ export class MySqlParser extends SQLParserBase { localContext = new BitExpressionAtomContext(new ExpressionAtomContext(parentContext, parentState)); (localContext as BitExpressionAtomContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_expressionAtom); - this.state = 7943; + this.state = 7993; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 7944; + this.state = 7994; this.bitOperator(); - this.state = 7945; + this.state = 7995; (localContext as BitExpressionAtomContext)._right = this.expressionAtom(4); } break; @@ -46810,13 +47603,13 @@ export class MySqlParser extends SQLParserBase { localContext = new MathExpressionAtomContext(new ExpressionAtomContext(parentContext, parentState)); (localContext as MathExpressionAtomContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_expressionAtom); - this.state = 7947; + this.state = 7997; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 7948; + this.state = 7998; this.mathOperator(); - this.state = 7949; + this.state = 7999; (localContext as MathExpressionAtomContext)._right = this.expressionAtom(3); } break; @@ -46824,22 +47617,22 @@ export class MySqlParser extends SQLParserBase { { localContext = new CollateExpressionAtomContext(new ExpressionAtomContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, MySqlParser.RULE_expressionAtom); - this.state = 7951; + this.state = 8001; if (!(this.precpred(this.context, 14))) { throw this.createFailedPredicateException("this.precpred(this.context, 14)"); } - this.state = 7952; + this.state = 8002; this.match(MySqlParser.KW_COLLATE); - this.state = 7953; + this.state = 8003; this.collationName(); } break; } } } - this.state = 7958; + this.state = 8008; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 1148, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 1157, this.context); } } } @@ -46859,12 +47652,12 @@ export class MySqlParser extends SQLParserBase { } public unaryOperator(): UnaryOperatorContext { let localContext = new UnaryOperatorContext(this.context, this.state); - this.enterRule(localContext, 806, MySqlParser.RULE_unaryOperator); + this.enterRule(localContext, 810, MySqlParser.RULE_unaryOperator); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7959; + this.state = 8009; _la = this.tokenStream.LA(1); if(!(_la === 114 || ((((_la - 853)) & ~0x1F) === 0 && ((1 << (_la - 853)) & 387) !== 0))) { this.errorHandler.recoverInline(this); @@ -46891,44 +47684,44 @@ export class MySqlParser extends SQLParserBase { } public comparisonOperator(): ComparisonOperatorContext { let localContext = new ComparisonOperatorContext(this.context, this.state); - this.enterRule(localContext, 808, MySqlParser.RULE_comparisonOperator); + this.enterRule(localContext, 812, MySqlParser.RULE_comparisonOperator); try { - this.state = 7969; + this.state = 8019; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1149, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1158, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7961; + this.state = 8011; this.match(MySqlParser.LESS_SYMBOL); - this.state = 7962; + this.state = 8012; this.match(MySqlParser.GREATER_SYMBOL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7963; + this.state = 8013; this.match(MySqlParser.EXCLAMATION_SYMBOL); - this.state = 7964; + this.state = 8014; this.match(MySqlParser.EQUAL_SYMBOL); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7965; + this.state = 8015; this.match(MySqlParser.LESS_SYMBOL); - this.state = 7966; + this.state = 8016; this.match(MySqlParser.EQUAL_SYMBOL); - this.state = 7967; + this.state = 8017; this.match(MySqlParser.GREATER_SYMBOL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7968; + this.state = 8018; this.comparisonBase(); } break; @@ -46950,47 +47743,47 @@ export class MySqlParser extends SQLParserBase { } public comparisonBase(): ComparisonBaseContext { let localContext = new ComparisonBaseContext(this.context, this.state); - this.enterRule(localContext, 810, MySqlParser.RULE_comparisonBase); + this.enterRule(localContext, 814, MySqlParser.RULE_comparisonBase); try { - this.state = 7978; + this.state = 8028; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1150, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1159, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7971; + this.state = 8021; this.match(MySqlParser.LESS_SYMBOL); - this.state = 7972; + this.state = 8022; this.match(MySqlParser.EQUAL_SYMBOL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7973; + this.state = 8023; this.match(MySqlParser.GREATER_SYMBOL); - this.state = 7974; + this.state = 8024; this.match(MySqlParser.EQUAL_SYMBOL); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7975; + this.state = 8025; this.match(MySqlParser.EQUAL_SYMBOL); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7976; + this.state = 8026; this.match(MySqlParser.GREATER_SYMBOL); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7977; + this.state = 8027; this.match(MySqlParser.LESS_SYMBOL); } break; @@ -47012,47 +47805,47 @@ export class MySqlParser extends SQLParserBase { } public logicalOperator(): LogicalOperatorContext { let localContext = new LogicalOperatorContext(this.context, this.state); - this.enterRule(localContext, 812, MySqlParser.RULE_logicalOperator); + this.enterRule(localContext, 816, MySqlParser.RULE_logicalOperator); try { - this.state = 7987; + this.state = 8037; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.KW_AND: this.enterOuterAlt(localContext, 1); { - this.state = 7980; + this.state = 8030; this.match(MySqlParser.KW_AND); } break; case MySqlParser.BIT_AND_OP: this.enterOuterAlt(localContext, 2); { - this.state = 7981; + this.state = 8031; this.match(MySqlParser.BIT_AND_OP); - this.state = 7982; + this.state = 8032; this.match(MySqlParser.BIT_AND_OP); } break; case MySqlParser.KW_XOR: this.enterOuterAlt(localContext, 3); { - this.state = 7983; + this.state = 8033; this.match(MySqlParser.KW_XOR); } break; case MySqlParser.KW_OR: this.enterOuterAlt(localContext, 4); { - this.state = 7984; + this.state = 8034; this.match(MySqlParser.KW_OR); } break; case MySqlParser.BIT_OR_OP: this.enterOuterAlt(localContext, 5); { - this.state = 7985; + this.state = 8035; this.match(MySqlParser.BIT_OR_OP); - this.state = 7986; + this.state = 8036; this.match(MySqlParser.BIT_OR_OP); } break; @@ -47076,47 +47869,47 @@ export class MySqlParser extends SQLParserBase { } public bitOperator(): BitOperatorContext { let localContext = new BitOperatorContext(this.context, this.state); - this.enterRule(localContext, 814, MySqlParser.RULE_bitOperator); + this.enterRule(localContext, 818, MySqlParser.RULE_bitOperator); try { - this.state = 7996; + this.state = 8046; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case MySqlParser.LESS_SYMBOL: this.enterOuterAlt(localContext, 1); { - this.state = 7989; + this.state = 8039; this.match(MySqlParser.LESS_SYMBOL); - this.state = 7990; + this.state = 8040; this.match(MySqlParser.LESS_SYMBOL); } break; case MySqlParser.GREATER_SYMBOL: this.enterOuterAlt(localContext, 2); { - this.state = 7991; + this.state = 8041; this.match(MySqlParser.GREATER_SYMBOL); - this.state = 7992; + this.state = 8042; this.match(MySqlParser.GREATER_SYMBOL); } break; case MySqlParser.BIT_AND_OP: this.enterOuterAlt(localContext, 3); { - this.state = 7993; + this.state = 8043; this.match(MySqlParser.BIT_AND_OP); } break; case MySqlParser.BIT_XOR_OP: this.enterOuterAlt(localContext, 4); { - this.state = 7994; + this.state = 8044; this.match(MySqlParser.BIT_XOR_OP); } break; case MySqlParser.BIT_OR_OP: this.enterOuterAlt(localContext, 5); { - this.state = 7995; + this.state = 8045; this.match(MySqlParser.BIT_OR_OP); } break; @@ -47140,12 +47933,12 @@ export class MySqlParser extends SQLParserBase { } public mathOperator(): MathOperatorContext { let localContext = new MathOperatorContext(this.context, this.state); - this.enterRule(localContext, 816, MySqlParser.RULE_mathOperator); + this.enterRule(localContext, 820, MySqlParser.RULE_mathOperator); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 7998; + this.state = 8048; _la = this.tokenStream.LA(1); if(!(((((_la - 850)) & ~0x1F) === 0 && ((1 << (_la - 850)) & 127) !== 0))) { this.errorHandler.recoverInline(this); @@ -47172,28 +47965,28 @@ export class MySqlParser extends SQLParserBase { } public jsonOperator(): JsonOperatorContext { let localContext = new JsonOperatorContext(this.context, this.state); - this.enterRule(localContext, 818, MySqlParser.RULE_jsonOperator); + this.enterRule(localContext, 822, MySqlParser.RULE_jsonOperator); try { - this.state = 8005; + this.state = 8055; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1153, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 1162, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8000; + this.state = 8050; this.match(MySqlParser.MINUS); - this.state = 8001; + this.state = 8051; this.match(MySqlParser.GREATER_SYMBOL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8002; + this.state = 8052; this.match(MySqlParser.MINUS); - this.state = 8003; + this.state = 8053; this.match(MySqlParser.GREATER_SYMBOL); - this.state = 8004; + this.state = 8054; this.match(MySqlParser.GREATER_SYMBOL); } break; @@ -47215,12 +48008,12 @@ export class MySqlParser extends SQLParserBase { } public charsetNameBase(): CharsetNameBaseContext { let localContext = new CharsetNameBaseContext(this.context, this.state); - this.enterRule(localContext, 820, MySqlParser.RULE_charsetNameBase); + this.enterRule(localContext, 824, MySqlParser.RULE_charsetNameBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8007; + this.state = 8057; _la = this.tokenStream.LA(1); if(!(_la === 228 || ((((_la - 756)) & ~0x1F) === 0 && ((1 << (_la - 756)) & 4294967295) !== 0) || ((((_la - 788)) & ~0x1F) === 0 && ((1 << (_la - 788)) & 511) !== 0))) { this.errorHandler.recoverInline(this); @@ -47247,12 +48040,12 @@ export class MySqlParser extends SQLParserBase { } public transactionLevelBase(): TransactionLevelBaseContext { let localContext = new TransactionLevelBaseContext(this.context, this.state); - this.enterRule(localContext, 822, MySqlParser.RULE_transactionLevelBase); + this.enterRule(localContext, 826, MySqlParser.RULE_transactionLevelBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8009; + this.state = 8059; _la = this.tokenStream.LA(1); if(!(((((_la - 809)) & ~0x1F) === 0 && ((1 << (_la - 809)) & 15) !== 0))) { this.errorHandler.recoverInline(this); @@ -47279,12 +48072,12 @@ export class MySqlParser extends SQLParserBase { } public privilegesBase(): PrivilegesBaseContext { let localContext = new PrivilegesBaseContext(this.context, this.state); - this.enterRule(localContext, 824, MySqlParser.RULE_privilegesBase); + this.enterRule(localContext, 828, MySqlParser.RULE_privilegesBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8011; + this.state = 8061; _la = this.tokenStream.LA(1); if(!(((((_la - 717)) & ~0x1F) === 0 && ((1 << (_la - 717)) & 68026371) !== 0) || ((((_la - 749)) & ~0x1F) === 0 && ((1 << (_la - 749)) & 11) !== 0))) { this.errorHandler.recoverInline(this); @@ -47311,12 +48104,12 @@ export class MySqlParser extends SQLParserBase { } public intervalTypeBase(): IntervalTypeBaseContext { let localContext = new IntervalTypeBaseContext(this.context, this.state); - this.enterRule(localContext, 826, MySqlParser.RULE_intervalTypeBase); + this.enterRule(localContext, 830, MySqlParser.RULE_intervalTypeBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8013; + this.state = 8063; _la = this.tokenStream.LA(1); if(!(((((_la - 696)) & ~0x1F) === 0 && ((1 << (_la - 696)) & 255) !== 0))) { this.errorHandler.recoverInline(this); @@ -47343,12 +48136,12 @@ export class MySqlParser extends SQLParserBase { } public dataTypeBase(): DataTypeBaseContext { let localContext = new DataTypeBaseContext(this.context, this.state); - this.enterRule(localContext, 828, MySqlParser.RULE_dataTypeBase); + this.enterRule(localContext, 832, MySqlParser.RULE_dataTypeBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8015; + this.state = 8065; _la = this.tokenStream.LA(1); if(!(((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 1179679) !== 0))) { this.errorHandler.recoverInline(this); @@ -47375,14 +48168,14 @@ export class MySqlParser extends SQLParserBase { } public keywordsCanBeId(): KeywordsCanBeIdContext { let localContext = new KeywordsCanBeIdContext(this.context, this.state); - this.enterRule(localContext, 830, MySqlParser.RULE_keywordsCanBeId); + this.enterRule(localContext, 834, MySqlParser.RULE_keywordsCanBeId); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8017; + this.state = 8067; _la = this.tokenStream.LA(1); - if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014211) !== 0) || _la === 74 || _la === 95 || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 16673) !== 0) || _la === 160 || _la === 170 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 1648345089) !== 0) || ((((_la - 277)) & ~0x1F) === 0 && ((1 << (_la - 277)) & 4160749823) !== 0) || ((((_la - 309)) & ~0x1F) === 0 && ((1 << (_la - 309)) & 4292870141) !== 0) || ((((_la - 341)) & ~0x1F) === 0 && ((1 << (_la - 341)) & 4294967287) !== 0) || ((((_la - 373)) & ~0x1F) === 0 && ((1 << (_la - 373)) & 4024434671) !== 0) || ((((_la - 406)) & ~0x1F) === 0 && ((1 << (_la - 406)) & 3747609503) !== 0) || ((((_la - 438)) & ~0x1F) === 0 && ((1 << (_la - 438)) & 4227727359) !== 0) || ((((_la - 470)) & ~0x1F) === 0 && ((1 << (_la - 470)) & 3758096239) !== 0) || ((((_la - 502)) & ~0x1F) === 0 && ((1 << (_la - 502)) & 2678062559) !== 0) || ((((_la - 534)) & ~0x1F) === 0 && ((1 << (_la - 534)) & 2682256863) !== 0) || ((((_la - 566)) & ~0x1F) === 0 && ((1 << (_la - 566)) & 4294957695) !== 0) || ((((_la - 598)) & ~0x1F) === 0 && ((1 << (_la - 598)) & 255) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 2128608253) !== 0) || ((((_la - 704)) & ~0x1F) === 0 && ((1 << (_la - 704)) & 1053007341) !== 0) || ((((_la - 737)) & ~0x1F) === 0 && ((1 << (_la - 737)) & 478907) !== 0) || ((((_la - 802)) & ~0x1F) === 0 && ((1 << (_la - 802)) & 3230662657) !== 0) || _la === 838)) { + if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 1074302976) !== 0) || ((((_la - 36)) & ~0x1F) === 0 && ((1 << (_la - 36)) & 11014211) !== 0) || _la === 74 || _la === 95 || ((((_la - 117)) & ~0x1F) === 0 && ((1 << (_la - 117)) & 16673) !== 0) || _la === 160 || _la === 170 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 1648345089) !== 0) || ((((_la - 277)) & ~0x1F) === 0 && ((1 << (_la - 277)) & 4160749823) !== 0) || ((((_la - 309)) & ~0x1F) === 0 && ((1 << (_la - 309)) & 4292870141) !== 0) || ((((_la - 341)) & ~0x1F) === 0 && ((1 << (_la - 341)) & 4294967287) !== 0) || ((((_la - 373)) & ~0x1F) === 0 && ((1 << (_la - 373)) & 4024434671) !== 0) || ((((_la - 406)) & ~0x1F) === 0 && ((1 << (_la - 406)) & 3747609503) !== 0) || ((((_la - 438)) & ~0x1F) === 0 && ((1 << (_la - 438)) & 4227727359) !== 0) || ((((_la - 470)) & ~0x1F) === 0 && ((1 << (_la - 470)) & 3758096239) !== 0) || ((((_la - 502)) & ~0x1F) === 0 && ((1 << (_la - 502)) & 2678062559) !== 0) || ((((_la - 534)) & ~0x1F) === 0 && ((1 << (_la - 534)) & 2682256863) !== 0) || ((((_la - 566)) & ~0x1F) === 0 && ((1 << (_la - 566)) & 4294965887) !== 0) || ((((_la - 598)) & ~0x1F) === 0 && ((1 << (_la - 598)) & 255) !== 0) || ((((_la - 633)) & ~0x1F) === 0 && ((1 << (_la - 633)) & 4294934527) !== 0) || ((((_la - 665)) & ~0x1F) === 0 && ((1 << (_la - 665)) & 2128608253) !== 0) || ((((_la - 704)) & ~0x1F) === 0 && ((1 << (_la - 704)) & 1053007341) !== 0) || ((((_la - 737)) & ~0x1F) === 0 && ((1 << (_la - 737)) & 478907) !== 0) || ((((_la - 802)) & ~0x1F) === 0 && ((1 << (_la - 802)) & 3230662657) !== 0) || _la === 838)) { this.errorHandler.recoverInline(this); } else { @@ -47407,12 +48200,12 @@ export class MySqlParser extends SQLParserBase { } public functionNameBase(): FunctionNameBaseContext { let localContext = new FunctionNameBaseContext(this.context, this.state); - this.enterRule(localContext, 832, MySqlParser.RULE_functionNameBase); + this.enterRule(localContext, 836, MySqlParser.RULE_functionNameBase); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8019; + this.state = 8069; _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 98 || _la === 150 || _la === 152 || ((((_la - 219)) & ~0x1F) === 0 && ((1 << (_la - 219)) & 23) !== 0) || ((((_la - 253)) & ~0x1F) === 0 && ((1 << (_la - 253)) & 16375299) !== 0) || _la === 296 || _la === 435 || ((((_la - 686)) & ~0x1F) === 0 && ((1 << (_la - 686)) & 261121) !== 0) || _la === 746 || ((((_la - 813)) & ~0x1F) === 0 && ((1 << (_la - 813)) & 145190393) !== 0) || _la === 856)) { this.errorHandler.recoverInline(this); @@ -47440,17 +48233,17 @@ export class MySqlParser extends SQLParserBase { public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean { switch (ruleIndex) { - case 104: + case 107: return this.queryExpressionBody_sempred(localContext as QueryExpressionBodyContext, predIndex); - case 105: + case 108: return this.queryItem_sempred(localContext as QueryItemContext, predIndex); - case 329: + case 331: return this.columnName_sempred(localContext as ColumnNameContext, predIndex); - case 400: + case 402: return this.expression_sempred(localContext as ExpressionContext, predIndex); - case 401: + case 403: return this.predicate_sempred(localContext as PredicateContext, predIndex); - case 402: + case 404: return this.expressionAtom_sempred(localContext as ExpressionAtomContext, predIndex); } return true; @@ -47521,7 +48314,7 @@ export class MySqlParser extends SQLParserBase { } public static readonly _serializedATN: number[] = [ - 4,1,895,8022,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, + 4,1,895,8072,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, @@ -47593,738 +48386,745 @@ export class MySqlParser extends SQLParserBase { 7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400, 2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405,2,406, 7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411,7,411, - 2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,1,0, - 5,0,836,8,0,10,0,12,0,839,9,0,1,0,1,0,1,1,1,1,3,1,845,8,1,1,1,3, - 1,848,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2,857,8,2,1,3,1,3,1,4,1, - 4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1, - 4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1, - 4,1,4,1,4,1,4,1,4,1,4,3,4,900,8,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1, - 5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,3,5,919,8,5,1,6,1,6,1,6,1, - 6,1,6,1,6,1,6,1,6,1,6,3,6,930,8,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1, - 7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,946,8,7,1,8,1,8,1,8,3,8,951,8,8,1, - 9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,3,9,963,8,9,1,10,1,10,1,10, - 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, - 1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10, - 1,10,1,10,1,10,1,10,3,10,998,8,10,1,11,1,11,1,11,1,11,1,11,1,11, - 1,11,1,11,3,11,1008,8,11,1,12,1,12,1,12,3,12,1013,8,12,1,12,1,12, - 5,12,1017,8,12,10,12,12,12,1020,9,12,1,13,1,13,3,13,1024,8,13,1, - 13,1,13,3,13,1028,8,13,1,13,1,13,1,13,1,13,1,13,1,13,1,13,3,13,1037, - 8,13,1,13,3,13,1040,8,13,1,13,3,13,1043,8,13,1,13,1,13,3,13,1047, - 8,13,1,13,1,13,1,13,1,14,1,14,3,14,1054,8,14,1,14,3,14,1057,8,14, - 1,14,1,14,1,14,3,14,1062,8,14,1,14,1,14,1,14,1,14,5,14,1068,8,14, - 10,14,12,14,1071,9,14,1,14,1,14,3,14,1075,8,14,1,14,1,14,1,14,3, - 14,1080,8,14,1,14,5,14,1083,8,14,10,14,12,14,1086,9,14,1,15,1,15, - 1,15,1,15,1,15,1,15,1,15,1,15,1,15,3,15,1097,8,15,1,15,3,15,1100, - 8,15,1,15,1,15,3,15,1104,8,15,1,15,3,15,1107,8,15,1,15,1,15,3,15, - 1111,8,15,1,15,3,15,1114,8,15,1,15,1,15,3,15,1118,8,15,1,15,3,15, - 1121,8,15,1,15,3,15,1124,8,15,1,15,1,15,3,15,1128,8,15,1,15,3,15, - 1131,8,15,1,15,1,15,3,15,1135,8,15,1,15,1,15,1,16,1,16,3,16,1141, - 8,16,1,16,1,16,3,16,1145,8,16,1,16,1,16,1,16,3,16,1150,8,16,1,16, - 1,16,5,16,1154,8,16,10,16,12,16,1157,9,16,1,16,1,16,5,16,1161,8, - 16,10,16,12,16,1164,9,16,1,16,1,16,1,17,1,17,1,17,3,17,1171,8,17, - 1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18, - 1,18,5,18,1187,8,18,10,18,12,18,1190,9,18,1,18,1,18,1,19,1,19,3, - 19,1196,8,19,1,19,1,19,3,19,1200,8,19,1,19,1,19,3,19,1204,8,19,1, - 19,1,19,3,19,1208,8,19,1,19,5,19,1211,8,19,10,19,12,19,1214,9,19, - 3,19,1216,8,19,1,19,3,19,1219,8,19,1,19,3,19,1222,8,19,1,19,3,19, - 1225,8,19,1,19,1,19,1,19,1,19,3,19,1231,8,19,1,19,1,19,3,19,1235, - 8,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,1245,8,19,1,19, - 1,19,3,19,1249,8,19,1,19,1,19,3,19,1253,8,19,1,19,1,19,1,19,1,19, - 3,19,1259,8,19,1,19,5,19,1262,8,19,10,19,12,19,1265,9,19,3,19,1267, - 8,19,1,19,3,19,1270,8,19,3,19,1272,8,19,1,20,1,20,3,20,1276,8,20, - 1,20,1,20,1,20,1,20,1,20,3,20,1283,8,20,1,20,1,20,3,20,1287,8,20, - 1,20,3,20,1290,8,20,1,20,1,20,1,20,3,20,1295,8,20,1,20,1,20,3,20, - 1299,8,20,1,20,3,20,1302,8,20,1,20,1,20,3,20,1306,8,20,1,20,3,20, - 1309,8,20,1,21,1,21,3,21,1313,8,21,1,21,1,21,1,21,1,21,1,21,1,21, - 1,21,1,21,1,21,1,21,1,21,3,21,1326,8,21,1,21,3,21,1329,8,21,1,21, - 1,21,3,21,1333,8,21,1,21,3,21,1336,8,21,1,21,1,21,3,21,1340,8,21, - 1,21,3,21,1343,8,21,1,21,1,21,3,21,1347,8,21,1,21,3,21,1350,8,21, - 1,21,1,21,3,21,1354,8,21,1,21,3,21,1357,8,21,1,21,3,21,1360,8,21, - 1,21,1,21,3,21,1364,8,21,1,21,3,21,1367,8,21,1,21,1,21,3,21,1371, - 8,21,1,21,1,21,1,22,1,22,3,22,1377,8,22,1,22,1,22,3,22,1381,8,22, - 1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,1,22,3,22,1393,8,22, - 1,22,1,22,1,23,1,23,3,23,1399,8,23,1,23,1,23,1,24,1,24,1,24,1,24, - 1,24,5,24,1408,8,24,10,24,12,24,1411,9,24,1,24,1,24,3,24,1415,8, - 24,1,24,1,24,1,24,1,24,1,24,1,24,3,24,1423,8,24,1,25,1,25,3,25,1427, - 8,25,1,25,1,25,1,25,3,25,1432,8,25,1,25,3,25,1435,8,25,1,25,1,25, - 1,25,3,25,1440,8,25,1,25,1,25,1,25,1,25,1,25,1,25,5,25,1448,8,25, - 10,25,12,25,1451,9,25,1,25,1,25,3,25,1455,8,25,1,25,1,25,1,25,3, - 25,1460,8,25,1,25,1,25,1,25,1,25,3,25,1466,8,25,1,25,1,25,1,25,3, - 25,1471,8,25,1,25,1,25,3,25,1475,8,25,3,25,1477,8,25,1,26,3,26,1480, - 8,26,1,26,1,26,3,26,1484,8,26,1,26,1,26,3,26,1488,8,26,1,26,3,26, - 1491,8,26,1,26,1,26,3,26,1495,8,26,1,26,1,26,3,26,1499,8,26,1,26, - 1,26,3,26,1503,8,26,1,26,1,26,1,26,1,26,3,26,1509,8,26,1,26,3,26, - 1512,8,26,1,27,1,27,1,27,1,27,1,27,3,27,1519,8,27,1,28,1,28,1,28, - 3,28,1524,8,28,1,29,1,29,1,29,1,29,3,29,1530,8,29,1,30,1,30,1,30, - 5,30,1535,8,30,10,30,12,30,1538,9,30,1,30,1,30,1,30,3,30,1543,8, - 30,1,30,1,30,1,30,1,30,5,30,1549,8,30,10,30,12,30,1552,9,30,3,30, - 1554,8,30,1,30,1,30,1,30,5,30,1559,8,30,10,30,12,30,1562,9,30,3, - 30,1564,8,30,3,30,1566,8,30,1,31,1,31,1,31,1,31,3,31,1572,8,31,1, - 32,1,32,1,32,1,32,3,32,1578,8,32,1,32,1,32,1,33,1,33,1,33,1,33,1, - 33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,3,33,1595,8,33,1,34,1, - 34,1,34,1,34,1,34,3,34,1602,8,34,1,35,1,35,1,35,1,36,1,36,3,36,1609, - 8,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,3,36,1621, - 8,36,1,36,1,36,1,36,3,36,1626,8,36,1,36,3,36,1629,8,36,1,37,3,37, - 1632,8,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,3,38,1642,8,38, - 1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,1655, - 8,38,1,38,1,38,1,38,3,38,1660,8,38,1,39,1,39,1,39,1,39,1,39,1,39, - 1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,3,39,1676,8,39,1,40,1,40, - 1,40,1,40,5,40,1682,8,40,10,40,12,40,1685,9,40,1,40,1,40,1,41,1, - 41,1,41,1,41,1,41,3,41,1694,8,41,1,41,3,41,1697,8,41,1,41,1,41,5, - 41,1701,8,41,10,41,12,41,1704,9,41,1,41,1,41,3,41,1708,8,41,1,41, - 3,41,1711,8,41,1,41,1,41,5,41,1715,8,41,10,41,12,41,1718,9,41,1, - 41,3,41,1721,8,41,1,41,1,41,1,41,3,41,1726,8,41,1,41,1,41,5,41,1730, - 8,41,10,41,12,41,1733,9,41,1,41,3,41,1736,8,41,1,41,1,41,3,41,1740, - 8,41,1,41,3,41,1743,8,41,1,41,3,41,1746,8,41,1,41,1,41,5,41,1750, - 8,41,10,41,12,41,1753,9,41,1,41,3,41,1756,8,41,1,41,1,41,1,41,3, - 41,1761,8,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,1772, - 8,41,1,42,3,42,1775,8,42,1,42,1,42,1,42,1,42,1,42,3,42,1782,8,42, - 1,42,3,42,1785,8,42,1,43,1,43,3,43,1789,8,43,1,44,1,44,5,44,1793, - 8,44,10,44,12,44,1796,9,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1, - 45,1,45,3,45,1807,8,45,1,45,3,45,1810,8,45,1,45,1,45,1,45,3,45,1815, - 8,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,3,45, - 1828,8,45,1,45,1,45,1,45,1,45,1,45,3,45,1835,8,45,1,45,1,45,1,45, - 1,45,3,45,1841,8,45,1,46,1,46,1,46,3,46,1846,8,46,1,46,1,46,3,46, - 1850,8,46,1,46,3,46,1853,8,46,1,47,1,47,1,47,1,47,1,47,1,47,3,47, - 1861,8,47,1,47,1,47,1,47,1,47,1,47,1,47,3,47,1869,8,47,3,47,1871, - 8,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,1881,8,48,1,49, - 1,49,3,49,1885,8,49,1,49,3,49,1888,8,49,1,49,1,49,3,49,1892,8,49, - 1,49,1,49,1,49,3,49,1897,8,49,1,49,1,49,1,49,3,49,1902,8,49,1,49, - 1,49,1,49,3,49,1907,8,49,1,49,1,49,3,49,1911,8,49,1,49,1,49,3,49, - 1915,8,49,1,49,1,49,3,49,1919,8,49,1,49,1,49,3,49,1923,8,49,1,49, - 1,49,3,49,1927,8,49,1,49,1,49,3,49,1931,8,49,1,49,1,49,1,49,3,49, - 1936,8,49,1,49,1,49,1,49,3,49,1941,8,49,1,49,1,49,1,49,3,49,1946, - 8,49,1,49,1,49,1,49,1,49,3,49,1952,8,49,1,49,1,49,1,49,3,49,1957, - 8,49,1,49,1,49,1,49,3,49,1962,8,49,1,49,1,49,1,49,3,49,1967,8,49, - 1,49,1,49,1,49,3,49,1972,8,49,1,49,1,49,1,49,3,49,1977,8,49,1,49, - 1,49,1,49,1,49,3,49,1983,8,49,1,49,1,49,1,49,3,49,1988,8,49,1,49, - 1,49,1,49,3,49,1993,8,49,1,49,1,49,1,49,3,49,1998,8,49,1,49,1,49, - 1,49,3,49,2003,8,49,1,49,1,49,1,49,3,49,2008,8,49,1,49,1,49,1,49, - 3,49,2013,8,49,1,49,1,49,1,49,3,49,2018,8,49,1,49,1,49,1,49,1,49, - 1,49,3,49,2025,8,49,1,49,1,49,1,49,3,49,2030,8,49,1,49,1,49,1,49, - 3,49,2035,8,49,1,49,1,49,1,49,3,49,2040,8,49,1,49,1,49,3,49,2044, - 8,49,1,49,1,49,1,49,3,49,2049,8,49,1,49,1,49,1,49,1,49,1,49,1,49, - 3,49,2057,8,49,1,49,1,49,1,49,3,49,2062,8,49,1,49,1,49,1,49,1,49, - 3,49,2068,8,49,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52, - 3,52,2080,8,52,1,52,1,52,1,52,1,52,1,52,3,52,2087,8,52,3,52,2089, - 8,52,1,52,1,52,1,52,1,52,5,52,2095,8,52,10,52,12,52,2098,9,52,1, - 52,1,52,3,52,2102,8,52,1,53,3,53,2105,8,53,1,53,1,53,1,53,1,53,1, - 53,1,53,3,53,2113,8,53,1,53,1,53,1,53,1,53,3,53,2119,8,53,1,53,1, - 53,3,53,2123,8,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,3,53,2136,8,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,3,53,2148,8,53,3,53,2150,8,53,1,54,3,54,2153,8,54,1,54,1, - 54,1,54,1,54,1,54,1,54,3,54,2161,8,54,1,54,1,54,1,54,1,54,3,54,2167, - 8,54,1,54,1,54,1,54,1,54,3,54,2173,8,54,1,55,1,55,1,55,1,55,1,55, - 1,55,1,55,1,55,1,55,5,55,2184,8,55,10,55,12,55,2187,9,55,1,55,1, - 55,5,55,2191,8,55,10,55,12,55,2194,9,55,1,55,1,55,1,55,1,55,5,55, - 2200,8,55,10,55,12,55,2203,9,55,1,55,1,55,3,55,2207,8,55,1,55,1, - 55,1,55,1,55,1,55,1,55,1,55,5,55,2216,8,55,10,55,12,55,2219,9,55, - 1,55,1,55,1,55,1,55,5,55,2225,8,55,10,55,12,55,2228,9,55,1,55,1, - 55,3,55,2232,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,2242, - 8,55,10,55,12,55,2245,9,55,1,55,1,55,5,55,2249,8,55,10,55,12,55, - 2252,9,55,1,55,1,55,1,55,1,55,5,55,2258,8,55,10,55,12,55,2261,9, - 55,1,55,1,55,3,55,2265,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1, - 55,5,55,2275,8,55,10,55,12,55,2278,9,55,1,55,1,55,5,55,2282,8,55, - 10,55,12,55,2285,9,55,1,55,1,55,1,55,1,55,5,55,2291,8,55,10,55,12, - 55,2294,9,55,1,55,1,55,3,55,2298,8,55,1,55,1,55,1,55,5,55,2303,8, - 55,10,55,12,55,2306,9,55,1,55,1,55,1,55,1,55,5,55,2312,8,55,10,55, - 12,55,2315,9,55,1,55,1,55,3,55,2319,8,55,3,55,2321,8,55,1,56,1,56, - 1,56,3,56,2326,8,56,1,57,1,57,1,57,1,57,4,57,2332,8,57,11,57,12, - 57,2333,1,57,1,57,1,58,1,58,1,58,5,58,2341,8,58,10,58,12,58,2344, - 9,58,1,59,3,59,2347,8,59,1,59,3,59,2350,8,59,1,59,1,59,3,59,2354, - 8,59,1,59,1,59,1,59,3,59,2359,8,59,1,59,1,59,1,59,1,59,3,59,2365, - 8,59,1,59,1,59,1,59,1,59,3,59,2371,8,59,1,59,1,59,1,59,3,59,2376, - 8,59,1,59,1,59,1,59,3,59,2381,8,59,1,59,1,59,1,59,3,59,2386,8,59, - 1,59,1,59,1,59,3,59,2391,8,59,1,59,3,59,2394,8,59,1,60,1,60,1,60, - 3,60,2399,8,60,1,60,4,60,2402,8,60,11,60,12,60,2403,1,60,1,60,1, - 60,1,60,1,60,1,60,1,60,1,60,3,60,2414,8,60,1,61,1,61,3,61,2418,8, - 61,1,61,1,61,1,61,1,61,1,61,3,61,2425,8,61,1,61,1,61,1,61,3,61,2430, - 8,61,1,61,3,61,2433,8,61,1,61,1,61,1,61,3,61,2438,8,61,1,61,3,61, - 2441,8,61,1,61,1,61,3,61,2445,8,61,1,61,1,61,3,61,2449,8,61,1,62, - 1,62,1,62,1,62,5,62,2455,8,62,10,62,12,62,2458,9,62,1,63,1,63,1, - 63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1, - 64,3,64,2476,8,64,1,64,3,64,2479,8,64,1,64,3,64,2482,8,64,1,64,1, - 64,3,64,2486,8,64,1,64,1,64,1,65,1,65,1,65,1,65,5,65,2494,8,65,10, - 65,12,65,2497,9,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,5,66, - 2507,8,66,10,66,12,66,2510,9,66,1,66,1,66,1,67,1,67,1,67,1,67,1, - 67,1,67,5,67,2520,8,67,10,67,12,67,2523,9,67,3,67,2525,8,67,1,67, - 1,67,5,67,2529,8,67,10,67,12,67,2532,9,67,3,67,2534,8,67,1,68,1, - 68,3,68,2538,8,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,2547,8, - 68,1,68,3,68,2550,8,68,1,68,3,68,2553,8,68,1,68,1,68,1,68,3,68,2558, - 8,68,1,68,1,68,3,68,2562,8,68,1,68,3,68,2565,8,68,1,68,1,68,3,68, - 2569,8,68,1,68,1,68,3,68,2573,8,68,1,68,3,68,2576,8,68,1,68,1,68, - 3,68,2580,8,68,1,68,3,68,2583,8,68,1,68,1,68,3,68,2587,8,68,1,68, - 3,68,2590,8,68,1,69,1,69,1,69,1,69,3,69,2596,8,69,1,69,3,69,2599, - 8,69,1,69,1,69,1,69,3,69,2604,8,69,1,69,1,69,1,69,1,69,1,69,1,69, - 3,69,2612,8,69,1,69,1,69,1,69,1,69,3,69,2618,8,69,1,69,1,69,3,69, - 2622,8,69,1,70,1,70,3,70,2626,8,70,1,70,5,70,2629,8,70,10,70,12, - 70,2632,9,70,1,70,1,70,3,70,2636,8,70,1,70,1,70,1,70,1,70,1,70,3, - 70,2643,8,70,1,70,1,70,3,70,2647,8,70,1,70,1,70,1,70,1,70,1,70,1, - 70,1,70,5,70,2656,8,70,10,70,12,70,2659,9,70,1,70,1,70,1,70,1,70, - 1,70,3,70,2666,8,70,1,70,3,70,2669,8,70,1,70,1,70,5,70,2673,8,70, - 10,70,12,70,2676,9,70,1,70,1,70,1,70,3,70,2681,8,70,1,70,3,70,2684, - 8,70,1,70,1,70,5,70,2688,8,70,10,70,12,70,2691,9,70,1,70,1,70,1, - 70,3,70,2696,8,70,3,70,2698,8,70,1,70,1,70,1,70,3,70,2703,8,70,1, - 70,1,70,5,70,2707,8,70,10,70,12,70,2710,9,70,1,70,1,70,1,70,3,70, - 2715,8,70,3,70,2717,8,70,1,70,1,70,3,70,2721,8,70,1,70,3,70,2724, - 8,70,1,70,3,70,2727,8,70,1,70,1,70,5,70,2731,8,70,10,70,12,70,2734, - 9,70,1,70,1,70,1,70,3,70,2739,8,70,3,70,2741,8,70,1,70,1,70,1,70, - 3,70,2746,8,70,1,70,1,70,1,70,1,70,1,70,3,70,2753,8,70,1,70,1,70, - 1,70,1,70,1,70,1,70,1,70,3,70,2762,8,70,1,70,3,70,2765,8,70,1,70, - 1,70,3,70,2769,8,70,1,70,1,70,1,70,3,70,2774,8,70,1,70,1,70,1,70, - 1,70,1,70,1,70,1,70,1,70,3,70,2784,8,70,1,70,1,70,1,70,1,70,1,70, - 1,70,1,70,3,70,2793,8,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,2801, - 8,70,1,70,3,70,2804,8,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,2812, - 8,70,1,70,3,70,2815,8,70,1,70,1,70,1,70,1,70,1,70,3,70,2822,8,70, - 1,70,1,70,1,70,3,70,2827,8,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70, - 2835,8,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70, - 1,70,1,70,1,70,3,70,2851,8,70,1,70,1,70,1,70,3,70,2856,8,70,1,70, - 1,70,1,70,1,70,1,70,3,70,2863,8,70,1,70,1,70,1,70,1,70,1,70,1,70, - 1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,70,3,70,2882, - 8,70,1,70,1,70,1,70,1,70,3,70,2888,8,70,1,71,1,71,1,71,1,71,1,71, - 1,71,5,71,2896,8,71,10,71,12,71,2899,9,71,1,71,1,71,1,71,1,71,1, - 71,1,71,1,71,1,71,1,71,3,71,2910,8,71,1,71,1,71,1,71,1,71,1,71,3, - 71,2917,8,71,1,71,1,71,1,71,1,71,1,71,3,71,2924,8,71,1,71,1,71,1, - 71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,5,71,2937,8,71,10,71, - 12,71,2940,9,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71, - 3,71,2952,8,71,1,71,1,71,1,71,1,71,3,71,2958,8,71,1,71,1,71,1,71, - 1,71,3,71,2964,8,71,1,71,1,71,1,71,1,71,3,71,2970,8,71,1,71,1,71, - 1,71,1,71,3,71,2976,8,71,1,71,1,71,1,71,1,71,3,71,2982,8,71,1,71, - 1,71,1,71,1,71,3,71,2988,8,71,1,72,1,72,1,72,3,72,2993,8,72,1,72, - 1,72,1,73,1,73,1,73,3,73,3000,8,73,1,73,1,73,1,74,1,74,1,74,3,74, - 3007,8,74,1,74,1,74,1,74,1,74,1,74,3,74,3014,8,74,1,74,1,74,1,74, - 3,74,3019,8,74,1,74,5,74,3022,8,74,10,74,12,74,3025,9,74,1,75,1, - 75,1,75,1,75,1,75,1,75,3,75,3033,8,75,1,75,1,75,1,76,1,76,1,76,3, - 76,3040,8,76,1,76,1,76,1,77,1,77,1,77,3,77,3047,8,77,1,77,1,77,1, - 78,1,78,1,78,3,78,3054,8,78,1,78,1,78,1,79,1,79,1,79,1,79,1,79,3, - 79,3063,8,79,1,79,1,79,1,80,1,80,3,80,3069,8,80,1,80,1,80,3,80,3073, - 8,80,1,80,1,80,3,80,3077,8,80,1,81,1,81,3,81,3081,8,81,1,81,1,81, - 1,81,1,81,3,81,3087,8,81,1,81,3,81,3090,8,81,1,82,1,82,1,82,3,82, - 3095,8,82,1,82,1,82,1,83,1,83,1,83,3,83,3102,8,83,1,83,1,83,1,83, - 5,83,3107,8,83,10,83,12,83,3110,9,83,1,83,3,83,3113,8,83,1,84,1, - 84,1,84,3,84,3118,8,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,3, - 85,3128,8,85,1,85,1,85,1,85,1,85,5,85,3134,8,85,10,85,12,85,3137, - 9,85,1,85,1,85,1,85,3,85,3142,8,85,1,86,1,86,1,86,1,86,1,86,5,86, - 3149,8,86,10,86,12,86,3152,9,86,1,87,1,87,1,87,1,87,1,88,1,88,3, - 88,3160,8,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,3,89,3169,8,89,1, - 89,3,89,3172,8,89,1,90,1,90,3,90,3176,8,90,1,91,1,91,1,91,1,92,1, - 92,1,92,1,92,3,92,3185,8,92,1,93,1,93,3,93,3189,8,93,1,93,3,93,3192, - 8,93,1,93,3,93,3195,8,93,1,93,1,93,1,93,1,93,3,93,3201,8,93,1,93, - 3,93,3204,8,93,1,93,3,93,3207,8,93,1,93,1,93,3,93,3211,8,93,1,93, - 3,93,3214,8,93,1,93,3,93,3217,8,93,1,93,3,93,3220,8,93,1,93,1,93, - 1,93,1,93,1,93,1,93,1,93,5,93,3229,8,93,10,93,12,93,3232,9,93,3, - 93,3234,8,93,1,94,1,94,1,94,3,94,3239,8,94,1,95,1,95,1,95,1,95,3, - 95,3245,8,95,1,96,1,96,1,96,3,96,3250,8,96,1,96,4,96,3253,8,96,11, - 96,12,96,3254,1,97,3,97,3258,8,97,1,97,1,97,3,97,3262,8,97,1,98, - 1,98,1,98,3,98,3267,8,98,1,98,3,98,3270,8,98,1,98,1,98,1,98,3,98, - 3275,8,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,3,98,3285,8,98, - 1,98,1,98,1,98,3,98,3290,8,98,1,98,1,98,4,98,3294,8,98,11,98,12, - 98,3295,3,98,3298,8,98,1,98,1,98,4,98,3302,8,98,11,98,12,98,3303, - 3,98,3306,8,98,1,98,1,98,1,98,1,98,3,98,3312,8,98,1,98,1,98,1,98, - 1,98,5,98,3318,8,98,10,98,12,98,3321,9,98,1,98,1,98,3,98,3325,8, - 98,1,98,1,98,1,98,1,98,5,98,3331,8,98,10,98,12,98,3334,9,98,3,98, - 3336,8,98,1,99,1,99,1,99,3,99,3341,8,99,1,99,3,99,3344,8,99,1,99, - 1,99,1,99,3,99,3349,8,99,1,99,1,99,1,99,1,99,1,99,1,99,3,99,3357, - 8,99,1,99,1,99,1,99,1,99,3,99,3363,8,99,1,99,1,99,3,99,3367,8,99, - 3,99,3369,8,99,1,99,1,99,1,99,1,99,3,99,3375,8,99,1,99,1,99,1,99, - 1,99,5,99,3381,8,99,10,99,12,99,3384,9,99,1,99,1,99,3,99,3388,8, - 99,1,99,1,99,1,99,1,99,5,99,3394,8,99,10,99,12,99,3397,9,99,3,99, - 3399,8,99,1,100,1,100,1,100,3,100,3404,8,100,1,100,3,100,3407,8, - 100,1,100,1,100,3,100,3411,8,100,1,100,3,100,3414,8,100,1,100,3, - 100,3417,8,100,1,101,1,101,3,101,3421,8,101,1,101,3,101,3424,8,101, - 1,101,1,101,1,101,1,101,1,101,1,101,3,101,3432,8,101,1,101,1,101, - 1,101,1,101,3,101,3438,8,101,1,101,1,101,3,101,3442,8,101,1,102, - 1,102,5,102,3446,8,102,10,102,12,102,3449,9,102,1,102,1,102,3,102, - 3453,8,102,1,102,1,102,3,102,3457,8,102,3,102,3459,8,102,1,102,1, - 102,5,102,3463,8,102,10,102,12,102,3466,9,102,1,102,3,102,3469,8, - 102,1,102,3,102,3472,8,102,1,102,3,102,3475,8,102,1,102,3,102,3478, - 8,102,1,102,1,102,5,102,3482,8,102,10,102,12,102,3485,9,102,1,102, - 1,102,3,102,3489,8,102,1,102,3,102,3492,8,102,1,102,3,102,3495,8, - 102,1,102,3,102,3498,8,102,1,102,3,102,3501,8,102,3,102,3503,8,102, - 1,103,3,103,3506,8,103,1,103,1,103,3,103,3510,8,103,1,103,3,103, - 3513,8,103,1,103,3,103,3516,8,103,1,104,1,104,1,104,1,104,1,104, - 1,104,3,104,3524,8,104,1,104,1,104,1,104,1,104,3,104,3530,8,104, - 1,104,5,104,3533,8,104,10,104,12,104,3536,9,104,1,105,1,105,1,105, - 1,105,1,105,1,105,3,105,3544,8,105,1,105,5,105,3547,8,105,10,105, - 12,105,3550,9,105,1,106,1,106,1,106,1,106,3,106,3556,8,106,1,106, - 3,106,3559,8,106,1,106,3,106,3562,8,106,1,106,1,106,3,106,3566,8, - 106,1,107,1,107,3,107,3570,8,107,1,108,1,108,1,108,1,108,3,108,3576, - 8,108,1,108,1,108,3,108,3580,8,108,1,109,1,109,1,109,5,109,3585, - 8,109,10,109,12,109,3588,9,109,1,109,3,109,3591,8,109,1,109,3,109, - 3594,8,109,1,109,3,109,3597,8,109,1,110,1,110,1,110,3,110,3602,8, - 110,1,111,1,111,1,111,1,111,1,111,3,111,3609,8,111,1,112,1,112,1, - 112,1,112,1,112,1,112,5,112,3617,8,112,10,112,12,112,3620,9,112, - 1,113,1,113,1,113,1,113,5,113,3626,8,113,10,113,12,113,3629,9,113, - 1,114,1,114,1,114,1,114,1,115,1,115,3,115,3637,8,115,1,116,1,116, - 1,116,1,116,1,116,1,116,5,116,3645,8,116,10,116,12,116,3648,9,116, - 3,116,3650,8,116,1,116,1,116,3,116,3654,8,116,1,116,1,116,1,116, - 1,116,3,116,3660,8,116,1,117,1,117,3,117,3664,8,117,1,117,3,117, - 3667,8,117,1,117,3,117,3670,8,117,1,117,1,117,1,117,3,117,3675,8, - 117,1,117,3,117,3678,8,117,1,117,1,117,1,117,1,117,1,117,3,117,3685, - 8,117,1,117,1,117,3,117,3689,8,117,1,117,3,117,3692,8,117,1,117, - 1,117,3,117,3696,8,117,1,118,1,118,3,118,3700,8,118,1,118,3,118, - 3703,8,118,1,118,3,118,3706,8,118,1,118,1,118,1,118,3,118,3711,8, - 118,1,118,1,118,1,118,1,118,3,118,3717,8,118,5,118,3719,8,118,10, - 118,12,118,3722,9,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, - 3,118,3731,8,118,1,118,1,118,1,118,1,118,3,118,3737,8,118,5,118, - 3739,8,118,10,118,12,118,3742,9,118,1,118,1,118,1,118,3,118,3747, - 8,118,1,118,1,118,3,118,3751,8,118,1,119,1,119,1,119,1,119,3,119, - 3757,8,119,1,119,3,119,3760,8,119,1,120,1,120,1,120,1,120,1,120, - 1,120,1,120,1,120,1,120,1,120,3,120,3772,8,120,1,120,1,120,3,120, - 3776,8,120,1,120,1,120,3,120,3780,8,120,1,121,1,121,1,121,1,121, - 1,121,1,121,3,121,3788,8,121,1,121,1,121,3,121,3792,8,121,1,122, - 1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,5,123,3804, - 8,123,10,123,12,123,3807,9,123,1,124,1,124,3,124,3811,8,124,1,124, - 3,124,3814,8,124,1,124,1,124,3,124,3818,8,124,1,124,3,124,3821,8, - 124,1,124,1,124,1,124,1,124,5,124,3827,8,124,10,124,12,124,3830, - 9,124,1,124,1,124,3,124,3834,8,124,1,124,3,124,3837,8,124,1,124, - 3,124,3840,8,124,1,125,1,125,3,125,3844,8,125,1,125,3,125,3847,8, - 125,1,125,1,125,1,125,1,125,1,125,5,125,3854,8,125,10,125,12,125, - 3857,9,125,1,125,1,125,3,125,3861,8,125,1,126,1,126,1,126,1,126, - 1,126,5,126,3868,8,126,10,126,12,126,3871,9,126,1,127,1,127,3,127, - 3875,8,127,1,128,1,128,1,128,5,128,3880,8,128,10,128,12,128,3883, - 9,128,1,129,1,129,5,129,3887,8,129,10,129,12,129,3890,9,129,1,129, - 1,129,1,129,5,129,3895,8,129,10,129,12,129,3898,9,129,1,129,1,129, - 1,129,3,129,3903,8,129,1,130,1,130,1,130,1,130,1,130,1,130,3,130, - 3911,8,130,1,130,3,130,3914,8,130,1,130,3,130,3917,8,130,1,130,1, - 130,1,130,5,130,3922,8,130,10,130,12,130,3925,9,130,3,130,3927,8, - 130,1,130,3,130,3930,8,130,1,130,1,130,1,130,1,130,1,130,3,130,3937, - 8,130,1,130,3,130,3940,8,130,1,130,1,130,3,130,3944,8,130,1,130, - 1,130,1,130,1,130,3,130,3950,8,130,1,131,1,131,1,131,1,131,1,132, - 1,132,1,132,1,132,3,132,3960,8,132,1,132,1,132,3,132,3964,8,132, - 1,132,1,132,1,133,1,133,1,133,1,133,1,133,3,133,3973,8,133,1,134, - 3,134,3976,8,134,1,134,1,134,3,134,3980,8,134,1,134,1,134,5,134, - 3984,8,134,10,134,12,134,3987,9,134,1,134,1,134,1,134,5,134,3992, - 8,134,10,134,12,134,3995,9,134,1,134,1,134,3,134,3999,8,134,1,134, - 1,134,3,134,4003,8,134,1,134,1,134,5,134,4007,8,134,10,134,12,134, - 4010,9,134,1,134,1,134,1,134,3,134,4015,8,134,1,134,3,134,4018,8, - 134,3,134,4020,8,134,1,134,1,134,3,134,4024,8,134,1,135,1,135,1, - 135,1,135,1,135,1,135,1,135,3,135,4033,8,135,1,136,1,136,1,136,1, - 136,1,136,1,136,1,136,1,136,3,136,4043,8,136,1,137,1,137,5,137,4047, - 8,137,10,137,12,137,4050,9,137,1,137,1,137,3,137,4054,8,137,1,137, - 1,137,3,137,4058,8,137,1,137,3,137,4061,8,137,1,137,3,137,4064,8, - 137,1,137,3,137,4067,8,137,1,137,3,137,4070,8,137,1,137,3,137,4073, - 8,137,1,138,1,138,3,138,4077,8,138,1,138,1,138,3,138,4081,8,138, - 1,139,1,139,1,139,1,139,1,139,1,139,3,139,4089,8,139,1,139,1,139, - 3,139,4093,8,139,1,139,3,139,4096,8,139,3,139,4098,8,139,1,140,1, - 140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,3,140, - 4111,8,140,1,140,3,140,4114,8,140,1,141,1,141,1,141,5,141,4119,8, - 141,10,141,12,141,4122,9,141,1,142,1,142,1,142,1,142,1,142,1,142, - 1,142,3,142,4131,8,142,1,142,3,142,4134,8,142,1,142,1,142,1,142, - 3,142,4139,8,142,3,142,4141,8,142,1,142,1,142,3,142,4145,8,142,1, - 142,1,142,1,142,1,142,1,142,1,142,3,142,4153,8,142,1,143,1,143,1, - 143,1,143,3,143,4159,8,143,1,143,1,143,1,143,1,144,1,144,1,144,1, - 144,3,144,4168,8,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1, - 145,1,145,1,145,1,145,3,145,4181,8,145,1,146,1,146,3,146,4185,8, - 146,1,146,1,146,5,146,4189,8,146,10,146,12,146,4192,9,146,1,147, - 1,147,3,147,4196,8,147,1,147,1,147,3,147,4200,8,147,1,147,3,147, - 4203,8,147,1,147,1,147,3,147,4207,8,147,1,147,3,147,4210,8,147,1, - 147,1,147,1,147,1,147,1,147,1,147,3,147,4218,8,147,1,147,3,147,4221, - 8,147,3,147,4223,8,147,1,148,1,148,1,148,1,148,5,148,4229,8,148, - 10,148,12,148,4232,9,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148, - 1,148,1,148,3,148,4243,8,148,1,148,1,148,4,148,4247,8,148,11,148, - 12,148,4248,3,148,4251,8,148,1,148,1,148,4,148,4255,8,148,11,148, - 12,148,4256,3,148,4259,8,148,3,148,4261,8,148,1,149,1,149,1,149, - 1,149,3,149,4267,8,149,1,149,1,149,1,149,1,149,1,149,1,149,3,149, - 4275,8,149,1,150,1,150,1,150,1,150,1,150,1,150,3,150,4283,8,150, - 1,151,1,151,3,151,4287,8,151,1,151,1,151,3,151,4291,8,151,1,152, - 1,152,1,152,1,152,1,152,5,152,4298,8,152,10,152,12,152,4301,9,152, - 1,152,1,152,3,152,4305,8,152,1,153,1,153,1,153,1,154,1,154,1,154, - 1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,5,154, - 4323,8,154,10,154,12,154,4326,9,154,1,155,1,155,3,155,4330,8,155, - 1,156,1,156,1,156,1,156,3,156,4336,8,156,1,156,1,156,1,156,1,156, - 1,156,3,156,4343,8,156,1,157,1,157,1,157,3,157,4348,8,157,1,158, - 1,158,1,158,1,158,1,158,5,158,4355,8,158,10,158,12,158,4358,9,158, - 3,158,4360,8,158,1,159,1,159,3,159,4364,8,159,1,160,1,160,3,160, - 4368,8,160,1,160,1,160,3,160,4372,8,160,1,160,3,160,4375,8,160,1, - 160,3,160,4378,8,160,1,160,3,160,4381,8,160,1,161,1,161,3,161,4385, - 8,161,1,161,1,161,3,161,4389,8,161,1,161,3,161,4392,8,161,1,161, - 3,161,4395,8,161,1,161,3,161,4398,8,161,1,162,1,162,1,162,1,163, - 1,163,3,163,4405,8,163,1,163,1,163,3,163,4409,8,163,1,163,1,163, - 1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165,5,165,4422, - 8,165,10,165,12,165,4425,9,165,1,166,1,166,1,166,1,167,1,167,1,167, - 1,167,1,167,1,168,1,168,3,168,4437,8,168,1,168,1,168,1,168,1,168, - 5,168,4443,8,168,10,168,12,168,4446,9,168,1,169,1,169,1,169,1,169, - 1,169,1,169,1,169,3,169,4455,8,169,1,170,1,170,3,170,4459,8,170, - 1,170,3,170,4462,8,170,1,170,1,170,1,171,1,171,3,171,4468,8,171, - 1,171,3,171,4471,8,171,1,171,3,171,4474,8,171,1,172,1,172,1,172, - 1,172,1,172,1,172,1,172,3,172,4483,8,172,1,173,1,173,1,173,1,173, - 1,173,1,173,1,173,3,173,4492,8,173,1,174,1,174,1,174,1,174,1,174, - 1,174,5,174,4500,8,174,10,174,12,174,4503,9,174,1,174,3,174,4506, - 8,174,1,175,1,175,1,175,1,175,1,175,1,175,5,175,4514,8,175,10,175, - 12,175,4517,9,175,1,175,3,175,4520,8,175,1,176,1,176,1,176,1,176, - 1,176,1,176,1,176,5,176,4529,8,176,10,176,12,176,4532,9,176,1,176, - 3,176,4535,8,176,1,177,1,177,1,177,1,177,1,177,1,177,1,177,3,177, - 4544,8,177,1,178,1,178,1,178,1,178,1,178,5,178,4551,8,178,10,178, - 12,178,4554,9,178,3,178,4556,8,178,1,178,1,178,3,178,4560,8,178, - 1,178,5,178,4563,8,178,10,178,12,178,4566,9,178,1,178,3,178,4569, - 8,178,1,179,1,179,1,179,1,179,1,179,5,179,4576,8,179,10,179,12,179, - 4579,9,179,3,179,4581,8,179,1,179,3,179,4584,8,179,1,180,1,180,1, - 180,1,180,1,180,3,180,4591,8,180,1,180,1,180,1,180,1,180,3,180,4597, - 8,180,1,180,1,180,1,180,1,180,3,180,4603,8,180,1,181,1,181,1,181, - 1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182, - 1,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182,5,182,4627,8,182, - 10,182,12,182,4630,9,182,3,182,4632,8,182,1,182,3,182,4635,8,182, - 1,183,1,183,1,184,1,184,1,185,1,185,1,186,1,186,1,186,1,186,1,186, - 1,186,1,186,1,186,1,186,1,186,1,186,3,186,4654,8,186,3,186,4656, - 8,186,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187, - 1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,187,5,187,4677, - 8,187,10,187,12,187,4680,9,187,3,187,4682,8,187,1,187,3,187,4685, - 8,187,1,188,1,188,1,189,1,189,1,190,1,190,1,191,1,191,1,191,1,191, - 1,191,1,191,1,191,1,191,1,191,1,191,1,191,3,191,4704,8,191,3,191, - 4706,8,191,1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,193, - 1,193,5,193,4718,8,193,10,193,12,193,4721,9,193,1,193,1,193,1,193, - 1,193,1,193,1,193,1,193,1,193,5,193,4731,8,193,10,193,12,193,4734, - 9,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193, - 1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193, - 1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193,1,193, - 5,193,4768,8,193,10,193,12,193,4771,9,193,1,193,1,193,3,193,4775, - 8,193,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,196,1,196, + 2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,2,417, + 7,417,2,418,7,418,1,0,5,0,840,8,0,10,0,12,0,843,9,0,1,0,1,0,1,1, + 1,1,3,1,849,8,1,1,1,3,1,852,8,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,2, + 861,8,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4, + 1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,1,4,3,4,905,8,4,1,5, + 1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, + 3,5,924,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,935,8,6,1,7, + 1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,951,8,7, + 1,8,1,8,1,8,3,8,956,8,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9, + 3,9,968,8,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1, + 10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1, + 10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,3,10,1003,8,10,1, + 11,1,11,1,11,1,11,1,11,1,11,1,11,1,11,3,11,1013,8,11,1,12,1,12,1, + 12,3,12,1018,8,12,1,12,1,12,5,12,1022,8,12,10,12,12,12,1025,9,12, + 1,13,1,13,3,13,1029,8,13,1,13,1,13,3,13,1033,8,13,1,13,1,13,1,13, + 1,13,1,13,1,13,1,13,3,13,1042,8,13,1,13,3,13,1045,8,13,1,13,3,13, + 1048,8,13,1,13,1,13,3,13,1052,8,13,1,13,1,13,1,13,1,14,1,14,3,14, + 1059,8,14,1,14,3,14,1062,8,14,1,14,1,14,1,14,3,14,1067,8,14,1,14, + 1,14,1,14,1,14,5,14,1073,8,14,10,14,12,14,1076,9,14,1,14,1,14,3, + 14,1080,8,14,1,14,1,14,1,14,3,14,1085,8,14,1,14,5,14,1088,8,14,10, + 14,12,14,1091,9,14,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15,1,15, + 3,15,1102,8,15,1,15,3,15,1105,8,15,1,15,1,15,3,15,1109,8,15,1,15, + 3,15,1112,8,15,1,15,1,15,3,15,1116,8,15,1,15,3,15,1119,8,15,1,15, + 1,15,3,15,1123,8,15,1,15,3,15,1126,8,15,1,15,3,15,1129,8,15,1,15, + 1,15,3,15,1133,8,15,1,15,3,15,1136,8,15,1,15,1,15,3,15,1140,8,15, + 1,15,1,15,1,16,1,16,3,16,1146,8,16,1,16,1,16,3,16,1150,8,16,1,16, + 1,16,1,16,3,16,1155,8,16,1,16,1,16,5,16,1159,8,16,10,16,12,16,1162, + 9,16,1,16,1,16,5,16,1166,8,16,10,16,12,16,1169,9,16,1,16,1,16,1, + 17,1,17,3,17,1175,8,17,1,17,3,17,1178,8,17,1,17,1,17,3,17,1182,8, + 17,1,17,1,17,1,17,3,17,1187,8,17,1,17,1,17,5,17,1191,8,17,10,17, + 12,17,1194,9,17,1,17,1,17,1,17,1,17,5,17,1200,8,17,10,17,12,17,1203, + 9,17,1,17,1,17,3,17,1207,8,17,1,18,1,18,3,18,1211,8,18,1,18,1,18, + 3,18,1215,8,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,3,19, + 1226,8,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20,1,20, + 1,20,1,20,1,20,5,20,1242,8,20,10,20,12,20,1245,9,20,1,20,1,20,1, + 21,1,21,3,21,1251,8,21,1,21,1,21,3,21,1255,8,21,1,21,1,21,3,21,1259, + 8,21,1,21,1,21,3,21,1263,8,21,1,21,5,21,1266,8,21,10,21,12,21,1269, + 9,21,3,21,1271,8,21,1,21,3,21,1274,8,21,1,21,3,21,1277,8,21,1,21, + 3,21,1280,8,21,1,21,1,21,1,21,1,21,3,21,1286,8,21,1,21,1,21,3,21, + 1290,8,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1300,8,21, + 1,21,1,21,3,21,1304,8,21,1,21,1,21,3,21,1308,8,21,1,21,1,21,1,21, + 1,21,3,21,1314,8,21,1,21,5,21,1317,8,21,10,21,12,21,1320,9,21,3, + 21,1322,8,21,1,21,3,21,1325,8,21,3,21,1327,8,21,1,22,1,22,3,22,1331, + 8,22,1,22,1,22,1,22,1,22,1,22,3,22,1338,8,22,1,22,1,22,3,22,1342, + 8,22,1,22,3,22,1345,8,22,1,22,1,22,1,22,3,22,1350,8,22,1,22,1,22, + 3,22,1354,8,22,1,22,3,22,1357,8,22,1,22,1,22,3,22,1361,8,22,1,22, + 3,22,1364,8,22,1,23,1,23,3,23,1368,8,23,1,23,1,23,1,23,1,23,1,23, + 1,23,1,23,1,23,1,23,1,23,1,23,3,23,1381,8,23,1,23,3,23,1384,8,23, + 1,23,1,23,3,23,1388,8,23,1,23,3,23,1391,8,23,1,23,1,23,3,23,1395, + 8,23,1,23,3,23,1398,8,23,1,23,1,23,3,23,1402,8,23,1,23,3,23,1405, + 8,23,1,23,1,23,3,23,1409,8,23,1,23,3,23,1412,8,23,1,23,3,23,1415, + 8,23,1,23,1,23,3,23,1419,8,23,1,23,3,23,1422,8,23,1,23,1,23,3,23, + 1426,8,23,1,23,1,23,1,24,1,24,3,24,1432,8,24,1,24,3,24,1435,8,24, + 1,24,1,24,3,24,1439,8,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24,1,24, + 1,24,1,24,3,24,1451,8,24,1,24,1,24,1,25,1,25,3,25,1457,8,25,1,25, + 1,25,1,26,1,26,1,26,1,26,1,26,5,26,1466,8,26,10,26,12,26,1469,9, + 26,1,26,1,26,3,26,1473,8,26,1,26,1,26,1,26,1,26,1,26,1,26,3,26,1481, + 8,26,1,27,1,27,3,27,1485,8,27,1,27,1,27,1,27,3,27,1490,8,27,1,27, + 3,27,1493,8,27,1,27,1,27,1,27,3,27,1498,8,27,1,27,1,27,1,27,1,27, + 1,27,1,27,5,27,1506,8,27,10,27,12,27,1509,9,27,1,27,1,27,3,27,1513, + 8,27,1,27,1,27,1,27,3,27,1518,8,27,1,27,1,27,1,27,1,27,3,27,1524, + 8,27,1,27,1,27,1,27,3,27,1529,8,27,1,27,1,27,3,27,1533,8,27,3,27, + 1535,8,27,1,28,3,28,1538,8,28,1,28,1,28,3,28,1542,8,28,1,28,1,28, + 3,28,1546,8,28,1,28,3,28,1549,8,28,1,28,1,28,3,28,1553,8,28,1,28, + 1,28,3,28,1557,8,28,1,28,1,28,3,28,1561,8,28,1,28,1,28,1,28,1,28, + 3,28,1567,8,28,1,28,3,28,1570,8,28,1,29,1,29,1,29,1,29,1,29,3,29, + 1577,8,29,1,30,1,30,1,30,3,30,1582,8,30,1,31,1,31,1,31,1,31,3,31, + 1588,8,31,1,32,1,32,1,32,5,32,1593,8,32,10,32,12,32,1596,9,32,1, + 32,1,32,1,32,3,32,1601,8,32,1,32,1,32,1,32,1,32,5,32,1607,8,32,10, + 32,12,32,1610,9,32,3,32,1612,8,32,1,32,1,32,1,32,5,32,1617,8,32, + 10,32,12,32,1620,9,32,3,32,1622,8,32,3,32,1624,8,32,1,33,1,33,1, + 33,1,33,3,33,1630,8,33,1,34,1,34,1,34,1,34,3,34,1636,8,34,1,34,1, + 34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1, + 35,3,35,1653,8,35,1,36,1,36,1,36,1,36,1,36,3,36,1660,8,36,1,37,1, + 37,1,37,1,38,1,38,3,38,1667,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1, + 38,1,38,1,38,1,38,3,38,1679,8,38,1,38,1,38,1,38,3,38,1684,8,38,1, + 38,3,38,1687,8,38,1,39,3,39,1690,8,39,1,39,1,39,1,39,1,40,1,40,1, + 40,1,41,1,41,1,41,1,41,1,41,3,41,1703,8,41,1,41,1,41,1,41,1,41,1, + 41,1,41,1,41,1,41,1,41,1,41,1,41,3,41,1716,8,41,1,41,1,41,1,41,3, + 41,1721,8,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, + 42,1,42,1,42,1,42,3,42,1737,8,42,1,43,1,43,1,43,1,43,5,43,1743,8, + 43,10,43,12,43,1746,9,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,3,44, + 1755,8,44,1,44,3,44,1758,8,44,1,44,1,44,5,44,1762,8,44,10,44,12, + 44,1765,9,44,1,44,1,44,3,44,1769,8,44,1,44,3,44,1772,8,44,1,44,1, + 44,5,44,1776,8,44,10,44,12,44,1779,9,44,1,44,3,44,1782,8,44,1,44, + 1,44,1,44,3,44,1787,8,44,1,44,1,44,5,44,1791,8,44,10,44,12,44,1794, + 9,44,1,44,3,44,1797,8,44,1,44,1,44,3,44,1801,8,44,1,44,3,44,1804, + 8,44,1,44,3,44,1807,8,44,1,44,1,44,5,44,1811,8,44,10,44,12,44,1814, + 9,44,1,44,3,44,1817,8,44,1,44,1,44,1,44,3,44,1822,8,44,1,44,1,44, + 1,44,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1833,8,44,1,45,3,45,1836, + 8,45,1,45,1,45,1,45,1,45,1,45,3,45,1843,8,45,1,45,3,45,1846,8,45, + 1,46,1,46,3,46,1850,8,46,1,47,1,47,5,47,1854,8,47,10,47,12,47,1857, + 9,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,1868,8,48, + 1,48,3,48,1871,8,48,1,48,1,48,1,48,3,48,1876,8,48,1,48,1,48,1,48, + 1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48,1889,8,48,1,48,1,48, + 1,48,1,48,1,48,3,48,1896,8,48,1,48,1,48,1,48,1,48,3,48,1902,8,48, + 1,49,1,49,1,49,3,49,1907,8,49,1,49,1,49,3,49,1911,8,49,1,49,3,49, + 1914,8,49,1,50,1,50,1,50,1,50,1,50,1,50,3,50,1922,8,50,1,50,1,50, + 1,50,1,50,1,50,1,50,3,50,1930,8,50,3,50,1932,8,50,1,51,1,51,1,51, + 1,51,1,51,1,51,1,51,1,51,3,51,1942,8,51,1,52,1,52,3,52,1946,8,52, + 1,52,3,52,1949,8,52,1,52,1,52,3,52,1953,8,52,1,52,1,52,1,52,3,52, + 1958,8,52,1,52,1,52,1,52,3,52,1963,8,52,1,52,1,52,1,52,3,52,1968, + 8,52,1,52,1,52,3,52,1972,8,52,1,52,1,52,3,52,1976,8,52,1,52,1,52, + 3,52,1980,8,52,1,52,1,52,3,52,1984,8,52,1,52,1,52,3,52,1988,8,52, + 1,52,1,52,3,52,1992,8,52,1,52,1,52,1,52,3,52,1997,8,52,1,52,1,52, + 1,52,3,52,2002,8,52,1,52,1,52,1,52,3,52,2007,8,52,1,52,1,52,1,52, + 1,52,3,52,2013,8,52,1,52,1,52,1,52,3,52,2018,8,52,1,52,1,52,1,52, + 3,52,2023,8,52,1,52,1,52,1,52,3,52,2028,8,52,1,52,1,52,1,52,3,52, + 2033,8,52,1,52,1,52,1,52,3,52,2038,8,52,1,52,1,52,1,52,1,52,3,52, + 2044,8,52,1,52,1,52,1,52,3,52,2049,8,52,1,52,1,52,1,52,3,52,2054, + 8,52,1,52,1,52,1,52,3,52,2059,8,52,1,52,1,52,1,52,3,52,2064,8,52, + 1,52,1,52,1,52,3,52,2069,8,52,1,52,1,52,1,52,3,52,2074,8,52,1,52, + 1,52,1,52,3,52,2079,8,52,1,52,1,52,1,52,1,52,1,52,3,52,2086,8,52, + 1,52,1,52,1,52,3,52,2091,8,52,1,52,1,52,1,52,3,52,2096,8,52,1,52, + 1,52,1,52,3,52,2101,8,52,1,52,1,52,3,52,2105,8,52,1,52,1,52,1,52, + 3,52,2110,8,52,1,52,1,52,1,52,1,52,1,52,1,52,3,52,2118,8,52,1,52, + 1,52,1,52,3,52,2123,8,52,1,52,1,52,1,52,1,52,3,52,2129,8,52,1,53, + 1,53,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,55,3,55,2141,8,55,1,55, + 1,55,1,55,1,55,1,55,3,55,2148,8,55,3,55,2150,8,55,1,55,1,55,1,55, + 1,55,5,55,2156,8,55,10,55,12,55,2159,9,55,1,55,1,55,3,55,2163,8, + 55,1,56,3,56,2166,8,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2174,8, + 56,1,56,1,56,1,56,1,56,3,56,2180,8,56,1,56,1,56,3,56,2184,8,56,1, + 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2197,8, + 56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,2209,8, + 56,3,56,2211,8,56,1,57,3,57,2214,8,57,1,57,1,57,1,57,1,57,1,57,1, + 57,3,57,2222,8,57,1,57,1,57,1,57,1,57,3,57,2228,8,57,1,57,1,57,1, + 57,1,57,3,57,2234,8,57,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1, + 58,5,58,2245,8,58,10,58,12,58,2248,9,58,1,58,1,58,5,58,2252,8,58, + 10,58,12,58,2255,9,58,1,58,1,58,1,58,1,58,5,58,2261,8,58,10,58,12, + 58,2264,9,58,1,58,1,58,3,58,2268,8,58,1,58,1,58,1,58,1,58,1,58,1, + 58,1,58,5,58,2277,8,58,10,58,12,58,2280,9,58,1,58,1,58,1,58,1,58, + 5,58,2286,8,58,10,58,12,58,2289,9,58,1,58,1,58,3,58,2293,8,58,1, + 58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5,58,2303,8,58,10,58,12,58, + 2306,9,58,1,58,1,58,5,58,2310,8,58,10,58,12,58,2313,9,58,1,58,1, + 58,1,58,1,58,5,58,2319,8,58,10,58,12,58,2322,9,58,1,58,1,58,3,58, + 2326,8,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,5,58,2336,8,58, + 10,58,12,58,2339,9,58,1,58,1,58,5,58,2343,8,58,10,58,12,58,2346, + 9,58,1,58,1,58,1,58,1,58,5,58,2352,8,58,10,58,12,58,2355,9,58,1, + 58,1,58,3,58,2359,8,58,1,58,1,58,1,58,5,58,2364,8,58,10,58,12,58, + 2367,9,58,1,58,1,58,1,58,1,58,5,58,2373,8,58,10,58,12,58,2376,9, + 58,1,58,1,58,3,58,2380,8,58,3,58,2382,8,58,1,59,1,59,1,59,3,59,2387, + 8,59,1,60,1,60,1,60,1,60,4,60,2393,8,60,11,60,12,60,2394,1,60,1, + 60,1,61,1,61,1,61,5,61,2402,8,61,10,61,12,61,2405,9,61,1,62,3,62, + 2408,8,62,1,62,3,62,2411,8,62,1,62,1,62,3,62,2415,8,62,1,62,1,62, + 1,62,3,62,2420,8,62,1,62,1,62,1,62,1,62,3,62,2426,8,62,1,62,1,62, + 1,62,1,62,3,62,2432,8,62,1,62,1,62,1,62,3,62,2437,8,62,1,62,1,62, + 1,62,3,62,2442,8,62,1,62,1,62,1,62,3,62,2447,8,62,1,62,1,62,1,62, + 3,62,2452,8,62,1,62,3,62,2455,8,62,1,63,1,63,1,63,3,63,2460,8,63, + 1,63,4,63,2463,8,63,11,63,12,63,2464,1,63,1,63,1,63,1,63,1,63,1, + 63,1,63,1,63,3,63,2475,8,63,1,64,1,64,3,64,2479,8,64,1,64,1,64,1, + 64,1,64,1,64,3,64,2486,8,64,1,64,1,64,1,64,3,64,2491,8,64,1,64,3, + 64,2494,8,64,1,64,1,64,1,64,3,64,2499,8,64,1,64,3,64,2502,8,64,1, + 64,1,64,3,64,2506,8,64,1,64,1,64,3,64,2510,8,64,1,65,1,65,1,65,1, + 65,5,65,2516,8,65,10,65,12,65,2519,9,65,1,66,1,66,1,66,1,66,1,66, + 1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,3,67,2537, + 8,67,1,67,3,67,2540,8,67,1,67,3,67,2543,8,67,1,67,1,67,3,67,2547, + 8,67,1,67,1,67,1,68,1,68,1,68,1,68,5,68,2555,8,68,10,68,12,68,2558, + 9,68,1,69,1,69,1,69,1,69,1,69,1,69,1,69,1,69,5,69,2568,8,69,10,69, + 12,69,2571,9,69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,5,70,2581, + 8,70,10,70,12,70,2584,9,70,3,70,2586,8,70,1,70,1,70,5,70,2590,8, + 70,10,70,12,70,2593,9,70,3,70,2595,8,70,1,71,1,71,3,71,2599,8,71, + 1,71,1,71,1,71,1,71,1,71,1,71,1,71,3,71,2608,8,71,1,71,3,71,2611, + 8,71,1,71,3,71,2614,8,71,1,71,1,71,1,71,3,71,2619,8,71,1,71,1,71, + 3,71,2623,8,71,1,71,3,71,2626,8,71,1,71,1,71,3,71,2630,8,71,1,71, + 1,71,3,71,2634,8,71,1,71,3,71,2637,8,71,1,71,1,71,3,71,2641,8,71, + 1,71,3,71,2644,8,71,1,71,1,71,3,71,2648,8,71,1,71,3,71,2651,8,71, + 1,72,1,72,1,72,1,72,3,72,2657,8,72,1,72,3,72,2660,8,72,1,72,1,72, + 1,72,3,72,2665,8,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2673,8,72, + 1,72,1,72,1,72,1,72,3,72,2679,8,72,1,72,1,72,3,72,2683,8,72,1,73, + 1,73,3,73,2687,8,73,1,73,5,73,2690,8,73,10,73,12,73,2693,9,73,1, + 73,1,73,3,73,2697,8,73,1,73,1,73,1,73,1,73,1,73,3,73,2704,8,73,1, + 73,1,73,3,73,2708,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,5,73,2717, + 8,73,10,73,12,73,2720,9,73,1,73,1,73,1,73,1,73,1,73,3,73,2727,8, + 73,1,73,3,73,2730,8,73,1,73,1,73,5,73,2734,8,73,10,73,12,73,2737, + 9,73,1,73,1,73,1,73,3,73,2742,8,73,1,73,3,73,2745,8,73,1,73,1,73, + 5,73,2749,8,73,10,73,12,73,2752,9,73,1,73,1,73,1,73,3,73,2757,8, + 73,3,73,2759,8,73,1,73,1,73,1,73,3,73,2764,8,73,1,73,1,73,5,73,2768, + 8,73,10,73,12,73,2771,9,73,1,73,1,73,1,73,3,73,2776,8,73,3,73,2778, + 8,73,1,73,1,73,3,73,2782,8,73,1,73,3,73,2785,8,73,1,73,3,73,2788, + 8,73,1,73,1,73,5,73,2792,8,73,10,73,12,73,2795,9,73,1,73,1,73,1, + 73,3,73,2800,8,73,3,73,2802,8,73,1,73,1,73,1,73,3,73,2807,8,73,1, + 73,1,73,1,73,1,73,1,73,3,73,2814,8,73,1,73,1,73,1,73,1,73,1,73,1, + 73,1,73,3,73,2823,8,73,1,73,3,73,2826,8,73,1,73,1,73,3,73,2830,8, + 73,1,73,1,73,1,73,3,73,2835,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1, + 73,1,73,3,73,2845,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2854, + 8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2862,8,73,1,73,3,73,2865, + 8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2873,8,73,1,73,3,73,2876, + 8,73,1,73,1,73,1,73,1,73,1,73,3,73,2883,8,73,1,73,1,73,1,73,3,73, + 2888,8,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2896,8,73,1,73,1,73, + 1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73, + 2912,8,73,1,73,1,73,1,73,3,73,2917,8,73,1,73,1,73,1,73,1,73,1,73, + 3,73,2924,8,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1,73, + 1,73,1,73,1,73,1,73,1,73,1,73,1,73,3,73,2943,8,73,1,73,1,73,1,73, + 1,73,3,73,2949,8,73,1,74,1,74,1,74,1,74,1,74,1,74,5,74,2957,8,74, + 10,74,12,74,2960,9,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1, + 74,3,74,2971,8,74,1,74,1,74,1,74,1,74,1,74,3,74,2978,8,74,1,74,1, + 74,1,74,1,74,1,74,3,74,2985,8,74,1,74,1,74,1,74,1,74,1,74,1,74,1, + 74,1,74,1,74,1,74,1,74,5,74,2998,8,74,10,74,12,74,3001,9,74,1,74, + 1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,3,74,3013,8,74,1,74, + 1,74,1,74,1,74,3,74,3019,8,74,1,74,1,74,1,74,1,74,3,74,3025,8,74, + 1,74,1,74,1,74,1,74,3,74,3031,8,74,1,74,1,74,1,74,1,74,3,74,3037, + 8,74,1,74,1,74,1,74,1,74,3,74,3043,8,74,1,74,1,74,1,74,1,74,3,74, + 3049,8,74,1,75,1,75,1,75,3,75,3054,8,75,1,75,1,75,1,76,1,76,1,76, + 3,76,3061,8,76,1,76,1,76,1,77,1,77,1,77,3,77,3068,8,77,1,77,1,77, + 1,77,1,77,1,77,3,77,3075,8,77,1,77,1,77,1,77,3,77,3080,8,77,1,77, + 5,77,3083,8,77,10,77,12,77,3086,9,77,1,78,1,78,1,78,1,78,1,78,1, + 78,3,78,3094,8,78,1,78,1,78,1,79,1,79,1,79,3,79,3101,8,79,1,79,1, + 79,1,80,1,80,1,80,3,80,3108,8,80,1,80,1,80,1,81,1,81,1,81,3,81,3115, + 8,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,3,82,3124,8,82,1,82,1,82, + 1,83,1,83,3,83,3130,8,83,1,83,1,83,3,83,3134,8,83,1,83,1,83,3,83, + 3138,8,83,1,84,1,84,3,84,3142,8,84,1,84,1,84,1,84,1,84,3,84,3148, + 8,84,1,84,3,84,3151,8,84,1,85,1,85,1,85,3,85,3156,8,85,1,85,1,85, + 1,86,1,86,1,86,3,86,3163,8,86,1,86,1,86,1,86,5,86,3168,8,86,10,86, + 12,86,3171,9,86,1,86,3,86,3174,8,86,1,87,1,87,1,87,3,87,3179,8,87, + 1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,3,88,3189,8,88,1,88,1,88, + 1,88,1,88,5,88,3195,8,88,10,88,12,88,3198,9,88,1,88,1,88,1,88,3, + 88,3203,8,88,1,89,1,89,1,89,1,89,1,89,5,89,3210,8,89,10,89,12,89, + 3213,9,89,1,90,1,90,1,90,1,90,1,91,1,91,3,91,3221,8,91,1,91,1,91, + 1,92,1,92,1,92,1,92,1,92,3,92,3230,8,92,1,92,3,92,3233,8,92,1,93, + 1,93,3,93,3237,8,93,1,94,1,94,1,94,1,95,1,95,1,95,1,95,3,95,3246, + 8,95,1,96,1,96,3,96,3250,8,96,1,96,3,96,3253,8,96,1,96,3,96,3256, + 8,96,1,96,1,96,1,96,1,96,3,96,3262,8,96,1,96,3,96,3265,8,96,1,96, + 3,96,3268,8,96,1,96,1,96,3,96,3272,8,96,1,96,3,96,3275,8,96,1,96, + 3,96,3278,8,96,1,96,3,96,3281,8,96,1,96,1,96,1,96,1,96,1,96,1,96, + 1,96,5,96,3290,8,96,10,96,12,96,3293,9,96,3,96,3295,8,96,1,97,1, + 97,1,97,3,97,3300,8,97,1,98,1,98,1,98,1,98,3,98,3306,8,98,1,99,1, + 99,1,99,3,99,3311,8,99,1,99,4,99,3314,8,99,11,99,12,99,3315,1,100, + 3,100,3319,8,100,1,100,1,100,3,100,3323,8,100,1,101,1,101,1,101, + 3,101,3328,8,101,1,101,3,101,3331,8,101,1,101,1,101,1,101,3,101, + 3336,8,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,3,101, + 3346,8,101,1,101,1,101,1,101,3,101,3351,8,101,1,101,1,101,4,101, + 3355,8,101,11,101,12,101,3356,3,101,3359,8,101,1,101,1,101,4,101, + 3363,8,101,11,101,12,101,3364,3,101,3367,8,101,1,101,1,101,1,101, + 1,101,3,101,3373,8,101,1,101,1,101,1,101,1,101,5,101,3379,8,101, + 10,101,12,101,3382,9,101,1,101,1,101,3,101,3386,8,101,1,101,1,101, + 1,101,1,101,5,101,3392,8,101,10,101,12,101,3395,9,101,3,101,3397, + 8,101,1,102,1,102,1,102,3,102,3402,8,102,1,102,3,102,3405,8,102, + 1,102,1,102,1,102,3,102,3410,8,102,1,102,1,102,1,102,1,102,1,102, + 1,102,3,102,3418,8,102,1,102,1,102,1,102,1,102,3,102,3424,8,102, + 1,102,1,102,3,102,3428,8,102,3,102,3430,8,102,1,102,1,102,1,102, + 1,102,3,102,3436,8,102,1,102,1,102,1,102,1,102,5,102,3442,8,102, + 10,102,12,102,3445,9,102,1,102,1,102,3,102,3449,8,102,1,102,1,102, + 1,102,1,102,5,102,3455,8,102,10,102,12,102,3458,9,102,3,102,3460, + 8,102,1,103,1,103,1,103,3,103,3465,8,103,1,103,3,103,3468,8,103, + 1,103,1,103,3,103,3472,8,103,1,103,3,103,3475,8,103,1,103,3,103, + 3478,8,103,1,104,1,104,3,104,3482,8,104,1,104,3,104,3485,8,104,1, + 104,1,104,1,104,1,104,1,104,1,104,3,104,3493,8,104,1,104,1,104,1, + 104,1,104,3,104,3499,8,104,1,104,1,104,3,104,3503,8,104,1,105,1, + 105,5,105,3507,8,105,10,105,12,105,3510,9,105,1,105,1,105,3,105, + 3514,8,105,1,105,1,105,3,105,3518,8,105,3,105,3520,8,105,1,105,1, + 105,5,105,3524,8,105,10,105,12,105,3527,9,105,1,105,3,105,3530,8, + 105,1,105,3,105,3533,8,105,1,105,3,105,3536,8,105,1,105,3,105,3539, + 8,105,1,105,1,105,5,105,3543,8,105,10,105,12,105,3546,9,105,1,105, + 1,105,3,105,3550,8,105,1,105,3,105,3553,8,105,1,105,3,105,3556,8, + 105,1,105,3,105,3559,8,105,1,105,3,105,3562,8,105,3,105,3564,8,105, + 1,106,3,106,3567,8,106,1,106,1,106,3,106,3571,8,106,1,106,3,106, + 3574,8,106,1,106,3,106,3577,8,106,1,107,1,107,1,107,1,107,1,107, + 1,107,3,107,3585,8,107,1,107,1,107,1,107,1,107,3,107,3591,8,107, + 1,107,5,107,3594,8,107,10,107,12,107,3597,9,107,1,108,1,108,1,108, + 1,108,1,108,1,108,3,108,3605,8,108,1,108,5,108,3608,8,108,10,108, + 12,108,3611,9,108,1,109,1,109,1,109,1,109,3,109,3617,8,109,1,109, + 3,109,3620,8,109,1,109,3,109,3623,8,109,1,109,1,109,3,109,3627,8, + 109,1,110,1,110,3,110,3631,8,110,1,111,1,111,1,111,1,111,3,111,3637, + 8,111,1,111,1,111,3,111,3641,8,111,1,112,1,112,1,112,5,112,3646, + 8,112,10,112,12,112,3649,9,112,1,112,3,112,3652,8,112,1,112,3,112, + 3655,8,112,1,112,3,112,3658,8,112,1,113,1,113,1,113,3,113,3663,8, + 113,1,114,1,114,1,114,1,114,1,114,3,114,3670,8,114,1,115,1,115,1, + 115,1,115,1,115,1,115,5,115,3678,8,115,10,115,12,115,3681,9,115, + 1,116,1,116,1,116,1,116,5,116,3687,8,116,10,116,12,116,3690,9,116, + 1,117,1,117,1,117,1,117,1,118,1,118,3,118,3698,8,118,1,119,1,119, + 1,119,1,119,1,119,1,119,5,119,3706,8,119,10,119,12,119,3709,9,119, + 3,119,3711,8,119,1,119,1,119,3,119,3715,8,119,1,119,1,119,1,119, + 1,119,3,119,3721,8,119,1,120,1,120,3,120,3725,8,120,1,120,3,120, + 3728,8,120,1,120,3,120,3731,8,120,1,120,1,120,1,120,3,120,3736,8, + 120,1,120,3,120,3739,8,120,1,120,1,120,1,120,1,120,1,120,3,120,3746, + 8,120,1,120,1,120,3,120,3750,8,120,1,120,3,120,3753,8,120,1,120, + 1,120,3,120,3757,8,120,1,121,1,121,3,121,3761,8,121,1,121,3,121, + 3764,8,121,1,121,3,121,3767,8,121,1,121,1,121,1,121,3,121,3772,8, + 121,1,121,1,121,1,121,1,121,3,121,3778,8,121,5,121,3780,8,121,10, + 121,12,121,3783,9,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121, + 3,121,3792,8,121,1,121,1,121,1,121,1,121,3,121,3798,8,121,5,121, + 3800,8,121,10,121,12,121,3803,9,121,1,121,1,121,1,121,3,121,3808, + 8,121,1,121,1,121,3,121,3812,8,121,1,122,1,122,1,122,1,122,3,122, + 3818,8,122,1,122,3,122,3821,8,122,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,1,123,1,123,1,123,3,123,3833,8,123,1,123,1,123,3,123, + 3837,8,123,1,123,1,123,3,123,3841,8,123,1,124,1,124,1,124,1,124, + 1,124,1,124,3,124,3849,8,124,1,124,1,124,3,124,3853,8,124,1,125, + 1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,5,126,3865, + 8,126,10,126,12,126,3868,9,126,1,127,1,127,3,127,3872,8,127,1,127, + 3,127,3875,8,127,1,127,1,127,3,127,3879,8,127,1,127,3,127,3882,8, + 127,1,127,1,127,1,127,1,127,5,127,3888,8,127,10,127,12,127,3891, + 9,127,1,127,1,127,3,127,3895,8,127,1,127,3,127,3898,8,127,1,127, + 3,127,3901,8,127,1,128,1,128,3,128,3905,8,128,1,128,3,128,3908,8, + 128,1,128,1,128,1,128,1,128,1,128,5,128,3915,8,128,10,128,12,128, + 3918,9,128,1,128,1,128,3,128,3922,8,128,1,129,1,129,1,129,1,129, + 1,129,5,129,3929,8,129,10,129,12,129,3932,9,129,1,130,1,130,3,130, + 3936,8,130,1,131,1,131,1,131,5,131,3941,8,131,10,131,12,131,3944, + 9,131,1,132,1,132,5,132,3948,8,132,10,132,12,132,3951,9,132,1,132, + 1,132,1,132,5,132,3956,8,132,10,132,12,132,3959,9,132,1,132,1,132, + 1,132,3,132,3964,8,132,1,133,1,133,1,133,1,133,1,133,1,133,3,133, + 3972,8,133,1,133,3,133,3975,8,133,1,133,3,133,3978,8,133,1,133,1, + 133,1,133,5,133,3983,8,133,10,133,12,133,3986,9,133,3,133,3988,8, + 133,1,133,3,133,3991,8,133,1,133,1,133,1,133,1,133,1,133,3,133,3998, + 8,133,1,133,3,133,4001,8,133,1,133,1,133,3,133,4005,8,133,1,133, + 1,133,1,133,1,133,3,133,4011,8,133,1,134,1,134,1,134,1,134,1,135, + 1,135,1,135,1,135,3,135,4021,8,135,1,135,1,135,3,135,4025,8,135, + 1,135,1,135,1,136,1,136,1,136,1,136,1,136,3,136,4034,8,136,1,137, + 3,137,4037,8,137,1,137,1,137,3,137,4041,8,137,1,137,1,137,5,137, + 4045,8,137,10,137,12,137,4048,9,137,1,137,1,137,1,137,5,137,4053, + 8,137,10,137,12,137,4056,9,137,1,137,1,137,3,137,4060,8,137,1,137, + 1,137,3,137,4064,8,137,1,137,1,137,5,137,4068,8,137,10,137,12,137, + 4071,9,137,1,137,1,137,1,137,3,137,4076,8,137,1,137,3,137,4079,8, + 137,3,137,4081,8,137,1,137,1,137,3,137,4085,8,137,1,138,1,138,1, + 138,1,138,1,138,1,138,1,138,3,138,4094,8,138,1,139,1,139,1,139,1, + 139,1,139,1,139,1,139,1,139,3,139,4104,8,139,1,140,1,140,5,140,4108, + 8,140,10,140,12,140,4111,9,140,1,140,1,140,3,140,4115,8,140,1,140, + 1,140,3,140,4119,8,140,1,140,3,140,4122,8,140,1,140,3,140,4125,8, + 140,1,140,3,140,4128,8,140,1,140,3,140,4131,8,140,1,140,3,140,4134, + 8,140,1,140,3,140,4137,8,140,1,141,1,141,3,141,4141,8,141,1,141, + 1,141,3,141,4145,8,141,1,142,1,142,1,142,1,142,1,142,1,142,3,142, + 4153,8,142,1,142,1,142,3,142,4157,8,142,1,142,3,142,4160,8,142,3, + 142,4162,8,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1, + 143,1,143,1,143,3,143,4175,8,143,1,143,3,143,4178,8,143,1,144,1, + 144,1,144,5,144,4183,8,144,10,144,12,144,4186,9,144,1,145,1,145, + 1,145,1,145,1,145,1,145,1,145,3,145,4195,8,145,1,145,3,145,4198, + 8,145,1,145,1,145,1,145,3,145,4203,8,145,3,145,4205,8,145,1,145, + 1,145,3,145,4209,8,145,1,145,1,145,1,145,1,145,1,145,1,145,3,145, + 4217,8,145,1,146,1,146,1,146,1,146,3,146,4223,8,146,1,146,1,146, + 1,146,1,147,1,147,1,147,1,147,3,147,4232,8,147,1,147,1,147,1,147, + 1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,3,148,4245,8,148, + 1,149,1,149,3,149,4249,8,149,1,149,1,149,5,149,4253,8,149,10,149, + 12,149,4256,9,149,1,150,1,150,3,150,4260,8,150,1,150,1,150,3,150, + 4264,8,150,1,150,3,150,4267,8,150,1,150,1,150,3,150,4271,8,150,1, + 150,3,150,4274,8,150,1,150,1,150,1,150,1,150,1,150,1,150,3,150,4282, + 8,150,1,150,3,150,4285,8,150,3,150,4287,8,150,1,151,1,151,1,151, + 1,151,5,151,4293,8,151,10,151,12,151,4296,9,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,1,151,1,151,3,151,4307,8,151,1,151,1,151, + 4,151,4311,8,151,11,151,12,151,4312,3,151,4315,8,151,1,151,1,151, + 4,151,4319,8,151,11,151,12,151,4320,3,151,4323,8,151,3,151,4325, + 8,151,1,152,1,152,1,152,1,152,3,152,4331,8,152,1,152,1,152,1,152, + 1,152,1,152,1,152,3,152,4339,8,152,1,153,1,153,1,153,1,153,1,153, + 1,153,3,153,4347,8,153,1,154,1,154,3,154,4351,8,154,1,154,1,154, + 3,154,4355,8,154,1,155,1,155,1,155,1,155,1,155,5,155,4362,8,155, + 10,155,12,155,4365,9,155,1,155,1,155,3,155,4369,8,155,1,156,1,156, + 1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157, + 1,157,1,157,1,157,5,157,4387,8,157,10,157,12,157,4390,9,157,1,158, + 1,158,3,158,4394,8,158,1,159,1,159,1,159,1,159,3,159,4400,8,159, + 1,159,1,159,1,159,1,159,1,159,3,159,4407,8,159,1,160,1,160,1,160, + 3,160,4412,8,160,1,161,1,161,1,161,1,161,1,161,5,161,4419,8,161, + 10,161,12,161,4422,9,161,3,161,4424,8,161,1,162,1,162,3,162,4428, + 8,162,1,163,1,163,3,163,4432,8,163,1,163,1,163,3,163,4436,8,163, + 1,163,3,163,4439,8,163,1,163,3,163,4442,8,163,1,163,3,163,4445,8, + 163,1,164,1,164,3,164,4449,8,164,1,164,1,164,3,164,4453,8,164,1, + 164,3,164,4456,8,164,1,164,3,164,4459,8,164,1,164,3,164,4462,8,164, + 1,165,1,165,1,165,1,166,1,166,3,166,4469,8,166,1,166,1,166,3,166, + 4473,8,166,1,166,1,166,1,167,1,167,1,167,1,167,1,168,1,168,1,168, + 1,168,1,168,5,168,4486,8,168,10,168,12,168,4489,9,168,1,169,1,169, + 1,169,1,170,1,170,1,170,1,170,1,170,1,171,1,171,3,171,4501,8,171, + 1,171,1,171,1,171,1,171,5,171,4507,8,171,10,171,12,171,4510,9,171, + 1,172,1,172,1,172,1,172,1,172,1,172,1,172,3,172,4519,8,172,1,173, + 1,173,3,173,4523,8,173,1,173,3,173,4526,8,173,1,173,1,173,1,174, + 1,174,3,174,4532,8,174,1,174,3,174,4535,8,174,1,174,3,174,4538,8, + 174,1,175,1,175,1,175,1,175,1,175,1,175,1,175,3,175,4547,8,175,1, + 176,1,176,1,176,1,176,1,176,1,176,1,176,3,176,4556,8,176,1,177,1, + 177,1,177,1,177,1,177,1,177,5,177,4564,8,177,10,177,12,177,4567, + 9,177,1,177,3,177,4570,8,177,1,178,1,178,1,178,1,178,1,178,1,178, + 5,178,4578,8,178,10,178,12,178,4581,9,178,1,178,3,178,4584,8,178, + 1,179,1,179,1,179,1,179,1,179,1,179,1,179,5,179,4593,8,179,10,179, + 12,179,4596,9,179,1,179,3,179,4599,8,179,1,180,1,180,1,180,1,180, + 1,180,1,180,1,180,3,180,4608,8,180,1,181,1,181,1,181,1,181,1,181, + 5,181,4615,8,181,10,181,12,181,4618,9,181,3,181,4620,8,181,1,181, + 1,181,3,181,4624,8,181,1,181,5,181,4627,8,181,10,181,12,181,4630, + 9,181,1,181,3,181,4633,8,181,1,182,1,182,1,182,1,182,1,182,5,182, + 4640,8,182,10,182,12,182,4643,9,182,3,182,4645,8,182,1,182,3,182, + 4648,8,182,1,183,1,183,1,183,1,183,1,183,3,183,4655,8,183,1,183, + 1,183,1,183,1,183,3,183,4661,8,183,1,183,1,183,1,183,1,183,3,183, + 4667,8,183,1,184,1,184,1,184,1,185,1,185,1,185,1,185,1,185,1,185, + 1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,185, + 1,185,1,185,5,185,4691,8,185,10,185,12,185,4694,9,185,3,185,4696, + 8,185,1,185,3,185,4699,8,185,1,186,1,186,1,187,1,187,1,188,1,188, + 1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189, + 3,189,4718,8,189,3,189,4720,8,189,1,190,1,190,1,190,1,190,1,190, + 1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190,1,190, + 1,190,1,190,1,190,5,190,4741,8,190,10,190,12,190,4744,9,190,3,190, + 4746,8,190,1,190,3,190,4749,8,190,1,191,1,191,1,192,1,192,1,193, + 1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,194, + 1,194,3,194,4768,8,194,3,194,4770,8,194,1,195,1,195,1,195,1,195, + 1,196,1,196,1,196,1,196,1,196,1,196,5,196,4782,8,196,10,196,12,196, + 4785,9,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,5,196, + 4795,8,196,10,196,12,196,4798,9,196,1,196,1,196,1,196,1,196,1,196, 1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196, 1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196,1,196, - 1,196,3,196,4810,8,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197, - 1,197,1,197,1,197,1,197,1,197,3,197,4824,8,197,1,198,1,198,1,198, - 5,198,4829,8,198,10,198,12,198,4832,9,198,1,198,3,198,4835,8,198, - 1,199,1,199,1,199,1,199,3,199,4841,8,199,1,200,1,200,1,200,1,200, - 1,200,1,200,3,200,4849,8,200,3,200,4851,8,200,1,201,1,201,1,201, - 1,201,1,202,1,202,1,202,1,202,1,202,3,202,4862,8,202,1,203,1,203, - 1,203,1,203,1,204,1,204,1,204,1,204,3,204,4872,8,204,1,205,1,205, - 1,205,1,205,1,205,3,205,4879,8,205,1,206,1,206,1,206,1,206,3,206, - 4885,8,206,1,207,1,207,1,207,1,207,1,208,1,208,3,208,4893,8,208, - 1,209,1,209,1,209,3,209,4898,8,209,1,209,1,209,1,209,1,209,5,209, - 4904,8,209,10,209,12,209,4907,9,209,1,209,1,209,1,209,5,209,4912, - 8,209,10,209,12,209,4915,9,209,1,209,1,209,1,209,5,209,4920,8,209, - 10,209,12,209,4923,9,209,1,209,1,209,1,209,5,209,4928,8,209,10,209, - 12,209,4931,9,209,1,209,5,209,4934,8,209,10,209,12,209,4937,9,209, - 1,209,1,209,3,209,4941,8,209,1,210,1,210,1,210,3,210,4946,8,210, - 1,210,4,210,4949,8,210,11,210,12,210,4950,1,210,1,210,4,210,4955, - 8,210,11,210,12,210,4956,3,210,4959,8,210,1,210,1,210,1,210,1,211, - 1,211,1,211,1,211,4,211,4968,8,211,11,211,12,211,4969,1,211,5,211, - 4973,8,211,10,211,12,211,4976,9,211,1,211,1,211,4,211,4980,8,211, - 11,211,12,211,4981,3,211,4984,8,211,1,211,1,211,1,211,1,212,1,212, - 1,212,1,213,1,213,1,213,1,214,1,214,1,214,3,214,4998,8,214,1,214, - 1,214,4,214,5002,8,214,11,214,12,214,5003,1,214,1,214,1,214,3,214, - 5009,8,214,1,215,1,215,1,215,3,215,5014,8,215,1,215,1,215,4,215, - 5018,8,215,11,215,12,215,5019,1,215,1,215,1,215,1,215,1,215,3,215, - 5027,8,215,1,216,1,216,1,216,1,217,1,217,1,217,3,217,5035,8,217, - 1,217,1,217,1,217,1,217,4,217,5041,8,217,11,217,12,217,5042,1,217, - 1,217,1,217,3,217,5048,8,217,1,218,1,218,1,218,1,218,3,218,5054, - 8,218,1,218,3,218,5057,8,218,1,218,1,218,1,218,1,218,1,218,1,218, - 3,218,5065,8,218,1,219,1,219,1,219,1,219,1,219,3,219,5072,8,219, - 1,220,1,220,1,220,1,220,1,220,1,220,1,220,3,220,5081,8,220,1,220, - 3,220,5084,8,220,1,221,1,221,1,221,1,221,1,221,1,221,1,222,1,222, - 1,222,1,222,1,222,1,222,1,222,5,222,5099,8,222,10,222,12,222,5102, - 9,222,1,222,1,222,1,223,1,223,1,223,3,223,5109,8,223,1,223,1,223, - 1,223,1,223,1,223,1,223,3,223,5117,8,223,1,224,1,224,3,224,5121, - 8,224,1,224,1,224,1,225,1,225,1,225,3,225,5128,8,225,1,225,1,225, - 4,225,5132,8,225,11,225,12,225,5133,1,226,1,226,1,226,1,226,4,226, - 5140,8,226,11,226,12,226,5141,1,227,1,227,1,227,3,227,5147,8,227, - 1,227,1,227,1,227,5,227,5152,8,227,10,227,12,227,5155,9,227,1,227, - 1,227,1,227,5,227,5160,8,227,10,227,12,227,5163,9,227,1,227,1,227, - 1,227,1,227,3,227,5169,8,227,1,227,5,227,5172,8,227,10,227,12,227, - 5175,9,227,3,227,5177,8,227,3,227,5179,8,227,1,227,1,227,4,227,5183, - 8,227,11,227,12,227,5184,3,227,5187,8,227,1,227,1,227,5,227,5191, - 8,227,10,227,12,227,5194,9,227,1,227,1,227,3,227,5198,8,227,1,227, - 1,227,1,227,1,227,1,227,3,227,5205,8,227,1,228,1,228,1,228,3,228, - 5210,8,228,1,228,1,228,3,228,5214,8,228,1,228,1,228,1,228,3,228, - 5219,8,228,5,228,5221,8,228,10,228,12,228,5224,9,228,1,228,1,228, - 1,228,3,228,5229,8,228,1,228,1,228,1,228,1,228,3,228,5235,8,228, - 1,228,5,228,5238,8,228,10,228,12,228,5241,9,228,3,228,5243,8,228, - 3,228,5245,8,228,1,228,1,228,4,228,5249,8,228,11,228,12,228,5250, - 3,228,5253,8,228,1,228,1,228,5,228,5257,8,228,10,228,12,228,5260, - 9,228,1,228,1,228,3,228,5264,8,228,1,229,1,229,1,229,3,229,5269, - 8,229,1,229,1,229,1,229,5,229,5274,8,229,10,229,12,229,5277,9,229, - 1,230,1,230,1,230,1,230,5,230,5283,8,230,10,230,12,230,5286,9,230, - 1,230,1,230,3,230,5290,8,230,1,230,1,230,1,230,1,230,1,230,5,230, - 5297,8,230,10,230,12,230,5300,9,230,1,230,3,230,5303,8,230,1,230, - 1,230,1,230,1,230,3,230,5309,8,230,1,230,5,230,5312,8,230,10,230, - 12,230,5315,9,230,3,230,5317,8,230,3,230,5319,8,230,1,230,1,230, - 1,230,1,230,5,230,5325,8,230,10,230,12,230,5328,9,230,3,230,5330, - 8,230,1,230,1,230,1,230,1,230,1,230,3,230,5337,8,230,3,230,5339, - 8,230,1,230,1,230,1,230,3,230,5344,8,230,1,230,1,230,1,230,5,230, - 5349,8,230,10,230,12,230,5352,9,230,1,230,1,230,1,230,1,230,5,230, - 5358,8,230,10,230,12,230,5361,9,230,1,230,1,230,1,230,3,230,5366, - 8,230,3,230,5368,8,230,1,231,1,231,1,231,1,231,1,231,3,231,5375, - 8,231,1,231,3,231,5378,8,231,1,232,1,232,1,232,1,232,1,232,1,232, - 1,232,1,232,5,232,5388,8,232,10,232,12,232,5391,9,232,1,232,1,232, - 1,232,3,232,5396,8,232,1,233,1,233,1,233,1,233,1,233,1,233,3,233, - 5404,8,233,1,233,3,233,5407,8,233,1,233,1,233,3,233,5411,8,233,1, - 233,3,233,5414,8,233,1,233,1,233,3,233,5418,8,233,3,233,5420,8,233, - 1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,3,234,5431, - 8,234,1,234,3,234,5434,8,234,1,234,1,234,3,234,5438,8,234,1,234, - 3,234,5441,8,234,1,234,3,234,5444,8,234,1,235,1,235,1,235,1,235, - 1,235,3,235,5451,8,235,1,236,1,236,1,236,1,236,1,236,1,236,1,236, - 1,236,5,236,5461,8,236,10,236,12,236,5464,9,236,3,236,5466,8,236, - 1,237,1,237,1,237,1,237,1,237,3,237,5473,8,237,1,237,1,237,5,237, - 5477,8,237,10,237,12,237,5480,9,237,1,238,1,238,1,238,1,238,1,238, - 5,238,5487,8,238,10,238,12,238,5490,9,238,1,239,1,239,3,239,5494, - 8,239,1,239,1,239,1,239,5,239,5499,8,239,10,239,12,239,5502,9,239, - 1,239,1,239,3,239,5506,8,239,1,239,1,239,1,239,1,239,3,239,5512, - 8,239,1,239,1,239,3,239,5516,8,239,1,239,1,239,3,239,5520,8,239, - 1,239,1,239,1,239,1,239,1,239,1,239,3,239,5528,8,239,1,239,1,239, - 3,239,5532,8,239,1,239,1,239,3,239,5536,8,239,1,239,1,239,1,239, - 1,239,3,239,5542,8,239,3,239,5544,8,239,1,240,1,240,1,240,1,240, - 1,241,1,241,1,242,1,242,1,242,1,242,3,242,5556,8,242,1,242,1,242, - 1,242,3,242,5561,8,242,1,242,1,242,1,242,1,242,3,242,5567,8,242, - 1,242,1,242,1,242,1,242,3,242,5573,8,242,1,242,1,242,3,242,5577, - 8,242,1,242,1,242,1,242,3,242,5582,8,242,3,242,5584,8,242,1,243, - 1,243,1,243,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244, - 1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,244,3,244, - 5608,8,244,4,244,5610,8,244,11,244,12,244,5611,1,244,3,244,5615, - 8,244,1,245,1,245,1,245,1,245,1,245,1,245,1,245,3,245,5624,8,245, - 1,245,1,245,3,245,5628,8,245,1,245,1,245,1,245,1,245,1,245,1,245, - 1,245,3,245,5637,8,245,1,245,1,245,3,245,5641,8,245,1,245,1,245, - 3,245,5645,8,245,1,245,1,245,1,245,1,245,3,245,5651,8,245,3,245, - 5653,8,245,1,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,5662, - 8,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,1,246,3,246,5672, - 8,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, + 1,196,1,196,1,196,1,196,1,196,5,196,4832,8,196,10,196,12,196,4835, + 9,196,1,196,1,196,3,196,4839,8,196,1,197,1,197,1,197,1,197,1,197, + 1,197,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199, + 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199, + 1,199,1,199,1,199,1,199,1,199,1,199,3,199,4874,8,199,1,200,1,200, + 1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,3,200, + 4888,8,200,1,201,1,201,1,201,5,201,4893,8,201,10,201,12,201,4896, + 9,201,1,201,3,201,4899,8,201,1,202,1,202,1,202,1,202,3,202,4905, + 8,202,1,203,1,203,1,203,1,203,1,203,1,203,3,203,4913,8,203,3,203, + 4915,8,203,1,204,1,204,1,204,1,204,1,205,1,205,1,205,1,205,1,205, + 3,205,4926,8,205,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207, + 3,207,4936,8,207,1,208,1,208,1,208,1,208,1,208,3,208,4943,8,208, + 1,209,1,209,1,209,1,209,3,209,4949,8,209,1,210,1,210,1,210,1,210, + 1,211,1,211,3,211,4957,8,211,1,212,1,212,1,212,3,212,4962,8,212, + 1,212,1,212,1,212,1,212,5,212,4968,8,212,10,212,12,212,4971,9,212, + 1,212,1,212,1,212,5,212,4976,8,212,10,212,12,212,4979,9,212,1,212, + 1,212,1,212,5,212,4984,8,212,10,212,12,212,4987,9,212,1,212,1,212, + 1,212,5,212,4992,8,212,10,212,12,212,4995,9,212,1,212,5,212,4998, + 8,212,10,212,12,212,5001,9,212,1,212,1,212,3,212,5005,8,212,1,213, + 1,213,1,213,3,213,5010,8,213,1,213,4,213,5013,8,213,11,213,12,213, + 5014,1,213,1,213,4,213,5019,8,213,11,213,12,213,5020,3,213,5023, + 8,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214,4,214,5032,8,214, + 11,214,12,214,5033,1,214,5,214,5037,8,214,10,214,12,214,5040,9,214, + 1,214,1,214,4,214,5044,8,214,11,214,12,214,5045,3,214,5048,8,214, + 1,214,1,214,1,214,1,215,1,215,1,215,1,216,1,216,1,216,1,217,1,217, + 1,217,3,217,5062,8,217,1,217,1,217,4,217,5066,8,217,11,217,12,217, + 5067,1,217,1,217,1,217,3,217,5073,8,217,1,218,1,218,1,218,3,218, + 5078,8,218,1,218,1,218,4,218,5082,8,218,11,218,12,218,5083,1,218, + 1,218,1,218,1,218,1,218,3,218,5091,8,218,1,219,1,219,1,219,1,220, + 1,220,1,220,3,220,5099,8,220,1,220,1,220,1,220,1,220,4,220,5105, + 8,220,11,220,12,220,5106,1,220,1,220,1,220,3,220,5112,8,220,1,221, + 1,221,1,221,1,221,3,221,5118,8,221,1,221,3,221,5121,8,221,1,221, + 1,221,1,221,1,221,1,221,1,221,3,221,5129,8,221,1,222,1,222,1,222, + 1,222,1,222,3,222,5136,8,222,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,3,223,5145,8,223,1,223,3,223,5148,8,223,1,224,1,224,1,224, + 1,224,1,224,1,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,5,225, + 5163,8,225,10,225,12,225,5166,9,225,1,225,1,225,1,226,1,226,1,226, + 3,226,5173,8,226,1,226,1,226,1,226,1,226,1,226,1,226,3,226,5181, + 8,226,1,227,1,227,3,227,5185,8,227,1,227,1,227,1,228,1,228,1,228, + 3,228,5192,8,228,1,228,1,228,4,228,5196,8,228,11,228,12,228,5197, + 1,229,1,229,1,229,1,229,4,229,5204,8,229,11,229,12,229,5205,1,230, + 1,230,1,230,3,230,5211,8,230,1,230,1,230,1,230,5,230,5216,8,230, + 10,230,12,230,5219,9,230,1,230,1,230,1,230,5,230,5224,8,230,10,230, + 12,230,5227,9,230,1,230,1,230,1,230,1,230,3,230,5233,8,230,1,230, + 5,230,5236,8,230,10,230,12,230,5239,9,230,3,230,5241,8,230,3,230, + 5243,8,230,1,230,1,230,4,230,5247,8,230,11,230,12,230,5248,3,230, + 5251,8,230,1,230,1,230,5,230,5255,8,230,10,230,12,230,5258,9,230, + 1,230,1,230,3,230,5262,8,230,1,230,1,230,1,230,1,230,1,230,3,230, + 5269,8,230,1,231,1,231,1,231,3,231,5274,8,231,1,231,1,231,3,231, + 5278,8,231,1,231,1,231,1,231,3,231,5283,8,231,5,231,5285,8,231,10, + 231,12,231,5288,9,231,1,231,1,231,1,231,3,231,5293,8,231,1,231,1, + 231,1,231,1,231,3,231,5299,8,231,1,231,5,231,5302,8,231,10,231,12, + 231,5305,9,231,3,231,5307,8,231,3,231,5309,8,231,1,231,1,231,4,231, + 5313,8,231,11,231,12,231,5314,3,231,5317,8,231,1,231,1,231,5,231, + 5321,8,231,10,231,12,231,5324,9,231,1,231,1,231,3,231,5328,8,231, + 1,232,1,232,1,232,3,232,5333,8,232,1,232,1,232,1,232,5,232,5338, + 8,232,10,232,12,232,5341,9,232,1,233,1,233,1,233,1,233,5,233,5347, + 8,233,10,233,12,233,5350,9,233,1,233,1,233,3,233,5354,8,233,1,233, + 1,233,1,233,1,233,1,233,5,233,5361,8,233,10,233,12,233,5364,9,233, + 1,233,3,233,5367,8,233,1,233,1,233,1,233,1,233,3,233,5373,8,233, + 1,233,5,233,5376,8,233,10,233,12,233,5379,9,233,3,233,5381,8,233, + 3,233,5383,8,233,1,233,1,233,1,233,1,233,5,233,5389,8,233,10,233, + 12,233,5392,9,233,3,233,5394,8,233,1,233,1,233,1,233,1,233,1,233, + 3,233,5401,8,233,3,233,5403,8,233,1,233,1,233,1,233,3,233,5408,8, + 233,1,233,1,233,1,233,5,233,5413,8,233,10,233,12,233,5416,9,233, + 1,233,1,233,1,233,1,233,5,233,5422,8,233,10,233,12,233,5425,9,233, + 1,233,1,233,1,233,3,233,5430,8,233,3,233,5432,8,233,1,234,1,234, + 1,234,1,234,1,234,3,234,5439,8,234,1,234,3,234,5442,8,234,1,235, + 1,235,1,235,1,235,1,235,1,235,1,235,1,235,5,235,5452,8,235,10,235, + 12,235,5455,9,235,1,235,1,235,1,235,3,235,5460,8,235,1,236,1,236, + 1,236,1,236,1,236,1,236,3,236,5468,8,236,1,236,3,236,5471,8,236, + 1,236,1,236,3,236,5475,8,236,1,236,3,236,5478,8,236,1,236,1,236, + 3,236,5482,8,236,3,236,5484,8,236,1,237,1,237,1,237,1,237,1,237, + 1,237,1,237,1,237,1,237,3,237,5495,8,237,1,237,3,237,5498,8,237, + 1,237,1,237,3,237,5502,8,237,1,237,3,237,5505,8,237,1,237,3,237, + 5508,8,237,1,238,1,238,1,238,1,238,1,238,3,238,5515,8,238,1,239, + 1,239,1,239,1,239,1,239,1,239,1,239,1,239,5,239,5525,8,239,10,239, + 12,239,5528,9,239,3,239,5530,8,239,1,240,1,240,1,240,1,240,1,240, + 3,240,5537,8,240,1,240,1,240,5,240,5541,8,240,10,240,12,240,5544, + 9,240,1,241,1,241,1,241,1,241,1,241,5,241,5551,8,241,10,241,12,241, + 5554,9,241,1,242,1,242,3,242,5558,8,242,1,242,1,242,1,242,5,242, + 5563,8,242,10,242,12,242,5566,9,242,1,242,1,242,3,242,5570,8,242, + 1,242,1,242,1,242,1,242,3,242,5576,8,242,1,242,1,242,3,242,5580, + 8,242,1,242,1,242,3,242,5584,8,242,1,242,1,242,1,242,1,242,1,242, + 1,242,3,242,5592,8,242,1,242,1,242,3,242,5596,8,242,1,242,1,242, + 3,242,5600,8,242,1,242,1,242,1,242,1,242,3,242,5606,8,242,3,242, + 5608,8,242,1,243,1,243,1,243,1,243,1,244,1,244,1,245,1,245,1,245, + 1,245,3,245,5620,8,245,1,245,1,245,1,245,3,245,5625,8,245,1,245, + 1,245,1,245,1,245,3,245,5631,8,245,1,245,1,245,1,245,1,245,3,245, + 5637,8,245,1,245,1,245,3,245,5641,8,245,1,245,1,245,1,245,3,245, + 5646,8,245,3,245,5648,8,245,1,246,1,246,1,246,1,247,1,247,1,247, 1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, - 1,247,1,247,1,247,1,247,3,247,5699,8,247,1,248,1,248,3,248,5703, - 8,248,1,248,1,248,1,248,3,248,5708,8,248,1,249,1,249,1,249,1,249, - 1,249,3,249,5715,8,249,1,249,3,249,5718,8,249,1,249,1,249,1,249, - 1,249,3,249,5724,8,249,1,250,1,250,1,250,1,250,1,250,1,250,1,250, - 1,250,3,250,5734,8,250,1,251,1,251,1,251,1,251,1,251,1,251,1,251, - 1,251,3,251,5744,8,251,1,252,1,252,1,252,1,252,1,252,1,252,1,252, - 1,252,3,252,5754,8,252,1,252,1,252,1,252,1,252,3,252,5760,8,252, - 1,252,1,252,1,252,1,252,1,252,1,252,1,252,3,252,5769,8,252,1,252, - 1,252,1,252,1,252,3,252,5775,8,252,1,252,1,252,1,252,1,252,1,252, - 3,252,5782,8,252,3,252,5784,8,252,1,253,1,253,1,253,1,254,1,254, - 1,254,3,254,5792,8,254,1,254,1,254,1,254,1,254,3,254,5798,8,254, - 1,254,1,254,3,254,5802,8,254,1,255,1,255,1,255,1,255,1,255,1,255, - 1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,3,255,5819, - 8,255,1,256,1,256,1,256,1,257,1,257,1,257,1,257,1,257,3,257,5829, - 8,257,1,258,1,258,3,258,5833,8,258,1,258,1,258,3,258,5837,8,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,3,258,5847,8,258, - 1,258,1,258,1,258,3,258,5852,8,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, + 1,247,1,247,1,247,1,247,1,247,3,247,5672,8,247,4,247,5674,8,247, + 11,247,12,247,5675,1,247,3,247,5679,8,247,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,3,248,5688,8,248,1,248,1,248,3,248,5692,8,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,3,248,5701,8,248,1,248, + 1,248,3,248,5705,8,248,1,248,1,248,3,248,5709,8,248,1,248,1,248, + 1,248,1,248,3,248,5715,8,248,3,248,5717,8,248,1,249,1,249,1,249, + 1,249,1,249,1,249,1,249,3,249,5726,8,249,1,249,1,249,1,249,1,249, + 1,249,1,249,1,249,1,249,3,249,5736,8,249,1,250,1,250,1,250,1,250, + 1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250, + 1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,3,250, + 5763,8,250,1,251,1,251,3,251,5767,8,251,1,251,1,251,1,251,3,251, + 5772,8,251,1,252,1,252,1,252,1,252,1,252,3,252,5779,8,252,1,252, + 3,252,5782,8,252,1,252,1,252,1,252,1,252,3,252,5788,8,252,1,253, + 1,253,1,253,1,253,1,253,1,253,1,253,1,253,3,253,5798,8,253,1,254, + 1,254,1,254,1,254,1,254,1,254,1,254,1,254,3,254,5808,8,254,1,255, + 1,255,1,255,1,255,1,255,1,255,1,255,1,255,3,255,5818,8,255,1,255, + 1,255,1,255,1,255,3,255,5824,8,255,1,255,1,255,1,255,1,255,1,255, + 1,255,1,255,3,255,5833,8,255,1,255,1,255,1,255,1,255,3,255,5839, + 8,255,1,255,1,255,1,255,1,255,1,255,3,255,5846,8,255,3,255,5848, + 8,255,1,256,1,256,1,256,1,257,1,257,1,257,3,257,5856,8,257,1,257, + 1,257,1,257,1,257,3,257,5862,8,257,1,257,1,257,3,257,5866,8,257, 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258, - 1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,3,258, - 5924,8,258,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259, - 1,259,1,259,1,259,1,259,1,259,1,259,1,259,3,259,5942,8,259,1,260, - 1,260,1,260,1,260,1,261,1,261,3,261,5950,8,261,1,261,1,261,1,261, - 1,261,3,261,5956,8,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, - 1,261,1,261,1,261,3,261,5968,8,261,1,261,1,261,3,261,5972,8,261, - 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,3,261,5983, - 8,261,1,261,1,261,3,261,5987,8,261,1,261,1,261,1,261,1,261,1,261, - 1,261,1,261,3,261,5996,8,261,1,262,1,262,1,262,1,262,5,262,6002, - 8,262,10,262,12,262,6005,9,262,1,263,1,263,1,263,1,263,3,263,6011, - 8,263,1,264,1,264,3,264,6015,8,264,1,264,1,264,1,264,1,265,1,265, - 3,265,6022,8,265,1,265,1,265,1,265,3,265,6027,8,265,1,265,3,265, - 6030,8,265,1,265,3,265,6033,8,265,1,266,1,266,1,267,1,267,1,267, - 1,267,1,267,1,267,1,267,3,267,6044,8,267,1,268,1,268,3,268,6048, - 8,268,1,268,1,268,3,268,6052,8,268,1,268,1,268,1,268,1,268,1,268, - 1,268,1,269,1,269,1,269,1,269,1,269,5,269,6065,8,269,10,269,12,269, - 6068,9,269,1,269,1,269,1,269,1,269,5,269,6074,8,269,10,269,12,269, - 6077,9,269,3,269,6079,8,269,1,270,1,270,1,270,1,270,1,270,1,271, - 1,271,1,271,1,271,1,271,5,271,6091,8,271,10,271,12,271,6094,9,271, - 1,272,1,272,1,272,1,272,1,272,1,272,1,273,1,273,1,273,1,273,1,274, - 1,274,1,274,1,274,1,274,3,274,6111,8,274,1,274,1,274,1,274,1,274, - 1,274,1,274,1,274,1,274,1,274,1,274,1,274,3,274,6124,8,274,1,274, - 3,274,6127,8,274,1,274,1,274,3,274,6131,8,274,1,274,3,274,6134,8, - 274,3,274,6136,8,274,1,275,1,275,1,275,1,275,1,275,3,275,6143,8, - 275,1,275,1,275,1,275,1,275,1,275,3,275,6150,8,275,5,275,6152,8, - 275,10,275,12,275,6155,9,275,1,275,1,275,1,275,1,275,3,275,6161, - 8,275,1,275,1,275,1,275,1,275,1,275,3,275,6168,8,275,1,275,3,275, - 6171,8,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275, - 1,275,1,275,1,275,5,275,6185,8,275,10,275,12,275,6188,9,275,3,275, - 6190,8,275,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,3,276, - 6200,8,276,1,276,1,276,3,276,6204,8,276,1,276,1,276,1,276,1,276, - 3,276,6210,8,276,1,276,3,276,6213,8,276,1,276,3,276,6216,8,276,1, - 276,1,276,1,276,3,276,6221,8,276,1,276,1,276,3,276,6225,8,276,1, - 276,3,276,6228,8,276,1,276,1,276,1,276,1,276,1,276,3,276,6235,8, - 276,1,276,3,276,6238,8,276,1,276,1,276,1,276,1,276,3,276,6244,8, - 276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276, - 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276, - 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276, - 1,276,1,276,3,276,6280,8,276,1,276,3,276,6283,8,276,1,276,1,276, - 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,3,276,6295,8,276, - 1,276,3,276,6298,8,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276, - 1,276,1,276,1,276,1,276,1,276,1,276,1,276,3,276,6314,8,276,3,276, - 6316,8,276,1,276,1,276,3,276,6320,8,276,1,276,1,276,1,276,1,276, - 1,276,3,276,6327,8,276,1,276,1,276,3,276,6331,8,276,1,276,1,276, - 1,276,1,276,1,276,3,276,6338,8,276,1,276,3,276,6341,8,276,1,276, - 1,276,1,276,1,276,1,276,5,276,6348,8,276,10,276,12,276,6351,9,276, - 3,276,6353,8,276,1,276,1,276,1,276,3,276,6358,8,276,1,276,1,276, - 1,276,1,276,3,276,6364,8,276,3,276,6366,8,276,1,276,1,276,1,276, - 1,276,3,276,6372,8,276,1,276,1,276,3,276,6376,8,276,1,277,1,277, - 1,277,1,277,3,277,6382,8,277,1,277,3,277,6385,8,277,1,277,3,277, - 6388,8,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, - 1,278,1,278,3,278,6401,8,278,1,278,3,278,6404,8,278,1,279,1,279, - 1,279,1,279,3,279,6410,8,279,1,280,3,280,6413,8,280,1,280,1,280, - 1,280,1,280,1,280,1,280,3,280,6421,8,280,1,280,1,280,1,280,1,280, - 1,280,1,280,3,280,6429,8,280,1,281,1,281,1,281,1,281,3,281,6435, - 8,281,1,281,3,281,6438,8,281,1,281,1,281,3,281,6442,8,281,1,282, - 1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282,1,282, - 3,282,6456,8,282,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284, - 5,284,6466,8,284,10,284,12,284,6469,9,284,1,284,1,284,1,284,1,284, - 1,284,3,284,6476,8,284,1,284,1,284,3,284,6480,8,284,1,284,1,284, - 1,284,1,285,1,285,3,285,6487,8,285,1,285,1,285,1,285,5,285,6492, - 8,285,10,285,12,285,6495,9,285,1,286,1,286,3,286,6499,8,286,1,286, - 1,286,1,287,1,287,1,287,1,287,1,287,1,287,1,287,5,287,6510,8,287, - 10,287,12,287,6513,9,287,1,288,1,288,1,288,1,288,5,288,6519,8,288, - 10,288,12,288,6522,9,288,1,289,1,289,1,289,1,289,1,289,3,289,6529, - 8,289,1,290,1,290,1,290,3,290,6534,8,290,1,290,3,290,6537,8,290, - 1,291,1,291,1,291,3,291,6542,8,291,1,291,3,291,6545,8,291,1,292, - 1,292,1,293,1,293,1,294,1,294,1,294,1,294,1,294,1,294,3,294,6557, - 8,294,1,295,1,295,1,295,3,295,6562,8,295,1,295,1,295,1,295,1,295, - 1,295,1,295,1,295,1,295,1,295,1,295,1,295,3,295,6575,8,295,3,295, - 6577,8,295,1,295,1,295,1,295,3,295,6582,8,295,1,295,1,295,3,295, - 6586,8,295,1,295,3,295,6589,8,295,3,295,6591,8,295,1,296,1,296,1, - 296,1,296,1,296,3,296,6598,8,296,1,297,1,297,1,297,1,297,1,297,3, - 297,6605,8,297,1,297,3,297,6608,8,297,1,297,3,297,6611,8,297,1,297, - 1,297,1,297,1,297,3,297,6617,8,297,1,297,1,297,3,297,6621,8,297, - 1,298,1,298,1,298,1,298,3,298,6627,8,298,1,299,1,299,1,299,1,299, - 1,299,1,299,3,299,6635,8,299,1,299,1,299,1,300,1,300,1,300,1,300, - 1,300,3,300,6644,8,300,1,300,1,300,1,301,1,301,1,301,1,302,1,302, - 1,302,1,303,1,303,1,303,3,303,6657,8,303,1,303,1,303,1,303,3,303, - 6662,8,303,1,303,1,303,1,303,1,303,5,303,6668,8,303,10,303,12,303, - 6671,9,303,3,303,6673,8,303,1,304,1,304,1,304,3,304,6678,8,304,1, - 304,1,304,1,304,3,304,6683,8,304,1,304,1,304,1,304,1,304,5,304,6689, - 8,304,10,304,12,304,6692,9,304,3,304,6694,8,304,1,305,1,305,1,305, - 1,305,1,305,1,305,3,305,6702,8,305,1,306,1,306,3,306,6706,8,306, - 1,306,1,306,1,306,5,306,6711,8,306,10,306,12,306,6714,9,306,1,307, - 1,307,1,307,3,307,6719,8,307,1,307,3,307,6722,8,307,1,308,1,308, - 3,308,6726,8,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308, - 1,308,5,308,6737,8,308,10,308,12,308,6740,9,308,1,308,1,308,1,308, - 3,308,6745,8,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308,1,308, - 5,308,6755,8,308,10,308,12,308,6758,9,308,3,308,6760,8,308,1,309, - 1,309,1,310,1,310,1,310,1,310,1,310,3,310,6769,8,310,1,310,1,310, - 1,310,3,310,6774,8,310,1,311,1,311,1,312,1,312,1,313,1,313,1,314, - 1,314,1,315,1,315,1,316,1,316,1,317,1,317,1,318,1,318,1,318,5,318, - 6793,8,318,10,318,12,318,6796,9,318,1,319,1,319,1,320,1,320,1,321, - 1,321,1,322,1,322,1,323,1,323,1,323,5,323,6809,8,323,10,323,12,323, - 6812,9,323,1,324,1,324,1,325,1,325,1,325,5,325,6819,8,325,10,325, - 12,325,6822,9,325,1,326,1,326,3,326,6826,8,326,1,327,1,327,1,327, - 3,327,6831,8,327,3,327,6833,8,327,1,327,3,327,6836,8,327,1,327,1, - 327,3,327,6840,8,327,3,327,6842,8,327,1,328,1,328,1,328,5,328,6847, - 8,328,10,328,12,328,6850,9,328,1,329,1,329,1,329,3,329,6855,8,329, - 3,329,6857,8,329,1,329,3,329,6860,8,329,1,329,1,329,3,329,6864,8, - 329,1,329,3,329,6867,8,329,1,330,1,330,1,331,1,331,1,332,1,332,1, - 333,1,333,1,333,5,333,6878,8,333,10,333,12,333,6881,9,333,1,334, - 1,334,1,335,1,335,1,335,1,335,1,335,3,335,6890,8,335,1,335,3,335, - 6893,8,335,1,335,3,335,6896,8,335,1,336,1,336,1,336,1,336,1,337, - 1,337,1,337,1,338,1,338,1,338,1,338,3,338,6909,8,338,1,339,1,339, - 1,340,1,340,3,340,6915,8,340,1,340,3,340,6918,8,340,1,341,1,341, - 1,342,1,342,1,342,1,342,3,342,6926,8,342,1,343,1,343,1,344,1,344, - 1,344,3,344,6933,8,344,1,345,1,345,1,346,1,346,1,346,1,346,1,346, - 1,346,1,346,1,346,1,346,1,346,1,346,1,346,1,346,1,346,4,346,6951, - 8,346,11,346,12,346,6952,1,347,1,347,1,347,1,347,1,347,3,347,6960, - 8,347,3,347,6962,8,347,1,348,1,348,1,348,4,348,6967,8,348,11,348, - 12,348,6968,3,348,6971,8,348,1,349,1,349,3,349,6975,8,349,1,350, - 1,350,1,350,5,350,6980,8,350,10,350,12,350,6983,9,350,1,351,1,351, - 1,351,3,351,6988,8,351,1,352,1,352,1,352,1,352,1,352,1,352,1,352, - 1,352,1,352,3,352,6999,8,352,1,353,1,353,1,353,1,353,3,353,7005, - 8,353,1,354,1,354,1,355,1,355,3,355,7011,8,355,1,356,3,356,7014, - 8,356,1,356,1,356,3,356,7018,8,356,1,356,4,356,7021,8,356,11,356, - 12,356,7022,1,356,3,356,7026,8,356,1,356,1,356,3,356,7030,8,356, - 1,356,1,356,3,356,7034,8,356,3,356,7036,8,356,1,357,1,357,1,358, - 3,358,7041,8,358,1,358,1,358,1,359,3,359,7046,8,359,1,359,1,359, - 1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,1,360,3,360,7059, - 8,360,1,360,3,360,7062,8,360,1,361,1,361,3,361,7066,8,361,1,361, - 3,361,7069,8,361,1,361,3,361,7072,8,361,1,361,1,361,1,361,3,361, - 7077,8,361,1,361,1,361,1,361,3,361,7082,8,361,1,361,1,361,1,361, - 1,361,3,361,7088,8,361,1,361,3,361,7091,8,361,1,361,1,361,1,361, - 3,361,7096,8,361,1,361,3,361,7099,8,361,1,361,1,361,1,361,3,361, - 7104,8,361,1,361,3,361,7107,8,361,1,361,1,361,3,361,7111,8,361,1, - 361,5,361,7114,8,361,10,361,12,361,7117,9,361,1,361,1,361,3,361, - 7121,8,361,1,361,5,361,7124,8,361,10,361,12,361,7127,9,361,1,361, - 1,361,3,361,7131,8,361,1,361,3,361,7134,8,361,1,361,5,361,7137,8, - 361,10,361,12,361,7140,9,361,1,361,1,361,3,361,7144,8,361,1,361, - 5,361,7147,8,361,10,361,12,361,7150,9,361,1,361,1,361,1,361,3,361, - 7155,8,361,1,361,1,361,1,361,3,361,7160,8,361,1,361,1,361,1,361, - 3,361,7165,8,361,1,361,1,361,1,361,3,361,7170,8,361,1,361,1,361, - 3,361,7174,8,361,1,361,3,361,7177,8,361,1,361,1,361,1,361,3,361, - 7182,8,361,1,361,1,361,3,361,7186,8,361,1,361,1,361,3,361,7190,8, - 361,1,362,1,362,1,362,1,362,5,362,7196,8,362,10,362,12,362,7199, - 9,362,1,362,1,362,1,363,1,363,3,363,7205,8,363,1,363,1,363,3,363, - 7209,8,363,1,363,1,363,1,363,3,363,7214,8,363,1,363,1,363,1,363, - 3,363,7219,8,363,1,363,1,363,3,363,7223,8,363,3,363,7225,8,363,1, - 363,3,363,7228,8,363,1,364,1,364,1,364,1,364,1,365,1,365,1,365,1, - 365,1,365,1,365,1,366,1,366,1,366,1,366,3,366,7244,8,366,1,366,1, - 366,1,367,1,367,1,367,1,367,5,367,7252,8,367,10,367,12,367,7255, - 9,367,1,367,1,367,1,368,1,368,1,368,5,368,7262,8,368,10,368,12,368, - 7265,9,368,1,369,1,369,1,369,1,369,5,369,7271,8,369,10,369,12,369, - 7274,9,369,1,370,1,370,1,370,1,370,5,370,7280,8,370,10,370,12,370, - 7283,9,370,1,370,1,370,1,371,1,371,3,371,7289,8,371,1,372,1,372, - 1,372,5,372,7294,8,372,10,372,12,372,7297,9,372,1,373,1,373,1,373, - 5,373,7302,8,373,10,373,12,373,7305,9,373,1,374,1,374,1,374,5,374, - 7310,8,374,10,374,12,374,7313,9,374,1,375,1,375,1,375,1,375,1,375, - 1,375,1,375,1,375,1,375,3,375,7324,8,375,1,375,1,375,1,375,1,375, - 1,375,3,375,7331,8,375,1,375,1,375,1,375,1,375,1,375,1,375,1,375, - 1,375,3,375,7341,8,375,1,376,1,376,1,376,3,376,7346,8,376,1,376, - 3,376,7349,8,376,1,376,1,376,1,376,3,376,7354,8,376,1,376,3,376, - 7357,8,376,1,377,1,377,1,377,1,378,1,378,1,378,1,378,1,379,1,379, - 1,379,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380, - 3,380,7379,8,380,1,380,1,380,1,380,1,380,1,380,1,380,1,380,3,380, - 7388,8,380,1,380,3,380,7391,8,380,1,381,1,381,1,381,3,381,7396,8, - 381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381, - 1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381, - 1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,4,381,7427,8,381, - 11,381,12,381,7428,1,381,1,381,3,381,7433,8,381,1,381,1,381,1,381, - 1,381,1,381,4,381,7440,8,381,11,381,12,381,7441,1,381,1,381,3,381, - 7446,8,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381,7455, - 8,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381,7463,8,381,1,381, - 1,381,1,381,3,381,7468,8,381,1,381,1,381,1,381,1,381,1,381,1,381, - 3,381,7476,8,381,1,381,1,381,1,381,3,381,7481,8,381,1,381,1,381, - 1,381,3,381,7486,8,381,3,381,7488,8,381,1,381,1,381,1,381,1,381, - 1,381,1,381,1,381,3,381,7497,8,381,1,381,1,381,1,381,3,381,7502, - 8,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381,7510,8,381,1,381, - 1,381,1,381,3,381,7515,8,381,1,381,1,381,1,381,1,381,1,381,1,381, - 3,381,7523,8,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381,7531, - 8,381,1,381,3,381,7534,8,381,1,381,1,381,1,381,1,381,1,381,1,381, - 1,381,1,381,3,381,7544,8,381,1,381,1,381,1,381,1,381,1,381,1,381, - 1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,1,381,3,381, - 7562,8,381,1,381,3,381,7565,8,381,1,381,3,381,7568,8,381,1,381,1, - 381,3,381,7572,8,381,1,382,1,382,1,382,1,382,1,382,1,383,1,383,1, - 383,1,383,5,383,7583,8,383,10,383,12,383,7586,9,383,1,383,1,383, - 1,383,1,383,1,383,3,383,7593,8,383,1,384,1,384,3,384,7597,8,384, - 1,385,1,385,1,385,3,385,7602,8,385,1,385,1,385,1,385,3,385,7607, - 8,385,1,385,1,385,1,385,1,385,3,385,7613,8,385,1,385,1,385,1,385, - 3,385,7618,8,385,1,385,1,385,3,385,7622,8,385,1,385,1,385,1,385, - 3,385,7627,8,385,1,385,1,385,1,385,3,385,7632,8,385,1,385,1,385, - 1,385,3,385,7637,8,385,1,385,1,385,1,385,1,385,1,385,1,385,5,385, - 7645,8,385,10,385,12,385,7648,9,385,3,385,7650,8,385,1,385,1,385, - 3,385,7654,8,385,1,385,1,385,3,385,7658,8,385,1,386,1,386,1,386, - 1,386,1,386,3,386,7665,8,386,1,386,1,386,3,386,7669,8,386,1,386, - 1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386, - 1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386,1,386, - 1,386,1,386,1,386,1,386,3,386,7698,8,386,1,387,1,387,1,387,1,387, - 1,387,1,387,3,387,7706,8,387,1,388,3,388,7709,8,388,1,388,3,388, - 7712,8,388,1,388,3,388,7715,8,388,1,388,3,388,7718,8,388,1,389,1, - 389,1,390,1,390,1,390,1,391,1,391,1,392,1,392,3,392,7729,8,392,1, - 393,1,393,1,393,1,393,1,393,1,394,1,394,1,394,1,394,1,394,1,394, - 1,394,3,394,7743,8,394,1,395,1,395,1,395,1,395,1,395,5,395,7750, - 8,395,10,395,12,395,7753,9,395,1,396,1,396,1,396,1,396,1,396,1,396, - 1,396,1,396,1,396,1,396,1,396,1,396,1,396,1,396,1,396,1,396,1,396, - 1,396,1,396,1,396,1,396,1,396,1,396,1,396,3,396,7779,8,396,1,397, - 1,397,1,397,1,397,1,397,1,398,1,398,1,398,5,398,7789,8,398,10,398, - 12,398,7792,9,398,1,399,1,399,1,399,3,399,7797,8,399,1,400,1,400, - 1,400,1,400,1,400,1,400,3,400,7805,8,400,1,400,1,400,1,400,3,400, - 7810,8,400,1,400,1,400,1,400,1,400,5,400,7816,8,400,10,400,12,400, - 7819,9,400,1,401,1,401,1,401,1,401,1,401,3,401,7826,8,401,1,401, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,1,401,3,401, - 7839,8,401,1,401,1,401,1,401,1,401,3,401,7845,8,401,1,401,1,401, - 1,401,1,401,3,401,7851,8,401,1,401,1,401,1,401,1,401,1,401,1,401, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,3,401,7866,8,401,1,401, - 1,401,3,401,7870,8,401,1,401,1,401,1,401,1,401,3,401,7876,8,401, - 1,401,1,401,1,401,1,401,1,401,1,401,1,401,5,401,7885,8,401,10,401, - 12,401,7888,9,401,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402, - 1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,5,402,7906,8,402, - 10,402,12,402,7909,9,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402, - 4,402,7918,8,402,11,402,12,402,7919,1,402,1,402,1,402,1,402,1,402, - 1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402, - 3,402,7938,8,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402,1,402, - 1,402,1,402,1,402,1,402,1,402,1,402,1,402,5,402,7955,8,402,10,402, - 12,402,7958,9,402,1,403,1,403,1,404,1,404,1,404,1,404,1,404,1,404, - 1,404,1,404,3,404,7970,8,404,1,405,1,405,1,405,1,405,1,405,1,405, - 1,405,3,405,7979,8,405,1,406,1,406,1,406,1,406,1,406,1,406,1,406, - 3,406,7988,8,406,1,407,1,407,1,407,1,407,1,407,1,407,1,407,3,407, - 7997,8,407,1,408,1,408,1,409,1,409,1,409,1,409,1,409,3,409,8006, - 8,409,1,410,1,410,1,411,1,411,1,412,1,412,1,413,1,413,1,414,1,414, - 1,415,1,415,1,416,1,416,1,416,0,5,208,210,800,802,804,417,0,2,4, + 1,258,1,258,1,258,1,258,3,258,5883,8,258,1,259,1,259,1,259,1,260, + 1,260,1,260,1,260,1,260,3,260,5893,8,260,1,261,1,261,3,261,5897, + 8,261,1,261,1,261,3,261,5901,8,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,3,261,5911,8,261,1,261,1,261,1,261,3,261,5916, + 8,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,261,1,261,1,261,1,261,1,261,3,261,5988,8,261,1,262,1,262,1,262, + 1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262,1,262, + 1,262,1,262,3,262,6006,8,262,1,263,1,263,1,263,1,263,1,264,1,264, + 3,264,6014,8,264,1,264,1,264,1,264,1,264,3,264,6020,8,264,1,264, + 1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,3,264,6032, + 8,264,1,264,1,264,3,264,6036,8,264,1,264,1,264,1,264,1,264,1,264, + 1,264,1,264,1,264,1,264,3,264,6047,8,264,1,264,1,264,3,264,6051, + 8,264,1,264,1,264,1,264,1,264,1,264,1,264,1,264,3,264,6060,8,264, + 1,265,1,265,1,265,1,265,5,265,6066,8,265,10,265,12,265,6069,9,265, + 1,266,1,266,1,266,1,266,3,266,6075,8,266,1,267,1,267,3,267,6079, + 8,267,1,267,1,267,1,267,1,268,1,268,3,268,6086,8,268,1,268,1,268, + 1,268,3,268,6091,8,268,1,268,3,268,6094,8,268,1,268,3,268,6097,8, + 268,1,269,1,269,1,270,1,270,1,270,1,270,1,270,1,270,1,270,3,270, + 6108,8,270,1,271,1,271,1,271,1,271,1,271,5,271,6115,8,271,10,271, + 12,271,6118,9,271,1,271,1,271,1,271,1,271,5,271,6124,8,271,10,271, + 12,271,6127,9,271,3,271,6129,8,271,1,272,1,272,1,272,1,272,1,272, + 1,273,1,273,1,273,1,273,1,273,5,273,6141,8,273,10,273,12,273,6144, + 9,273,1,274,1,274,1,274,1,274,1,274,1,274,1,275,1,275,1,275,1,275, + 1,276,1,276,1,276,1,276,1,276,3,276,6161,8,276,1,276,1,276,1,276, + 1,276,1,276,1,276,1,276,1,276,1,276,1,276,1,276,3,276,6174,8,276, + 1,276,3,276,6177,8,276,1,276,1,276,3,276,6181,8,276,1,276,3,276, + 6184,8,276,3,276,6186,8,276,1,277,1,277,1,277,1,277,1,277,3,277, + 6193,8,277,1,277,1,277,1,277,1,277,1,277,3,277,6200,8,277,5,277, + 6202,8,277,10,277,12,277,6205,9,277,1,277,1,277,1,277,1,277,3,277, + 6211,8,277,1,277,1,277,1,277,1,277,1,277,3,277,6218,8,277,1,277, + 3,277,6221,8,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,277,1,277,5,277,6235,8,277,10,277,12,277,6238,9,277, + 3,277,6240,8,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 3,278,6250,8,278,1,278,1,278,3,278,6254,8,278,1,278,1,278,1,278, + 1,278,3,278,6260,8,278,1,278,3,278,6263,8,278,1,278,3,278,6266,8, + 278,1,278,1,278,1,278,3,278,6271,8,278,1,278,1,278,3,278,6275,8, + 278,1,278,3,278,6278,8,278,1,278,1,278,1,278,1,278,1,278,3,278,6285, + 8,278,1,278,3,278,6288,8,278,1,278,1,278,1,278,1,278,3,278,6294, + 8,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,3,278,6330,8,278,1,278,3,278,6333,8,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,3,278,6345,8,278, + 1,278,3,278,6348,8,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,1,278,1,278,3,278,6364,8,278,3,278, + 6366,8,278,1,278,1,278,3,278,6370,8,278,1,278,1,278,1,278,1,278, + 1,278,3,278,6377,8,278,1,278,1,278,3,278,6381,8,278,1,278,1,278, + 1,278,1,278,1,278,3,278,6388,8,278,1,278,3,278,6391,8,278,1,278, + 1,278,1,278,1,278,1,278,5,278,6398,8,278,10,278,12,278,6401,9,278, + 3,278,6403,8,278,1,278,1,278,1,278,3,278,6408,8,278,1,278,1,278, + 1,278,1,278,3,278,6414,8,278,3,278,6416,8,278,1,278,1,278,1,278, + 1,278,3,278,6422,8,278,1,278,1,278,3,278,6426,8,278,1,279,1,279, + 1,279,1,279,3,279,6432,8,279,1,279,3,279,6435,8,279,1,279,3,279, + 6438,8,279,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280,1,280, + 1,280,1,280,3,280,6451,8,280,1,280,3,280,6454,8,280,1,281,1,281, + 1,281,1,281,3,281,6460,8,281,1,282,3,282,6463,8,282,1,282,1,282, + 1,282,1,282,1,282,1,282,3,282,6471,8,282,1,282,1,282,1,282,1,282, + 1,282,1,282,3,282,6479,8,282,1,283,1,283,1,283,1,283,3,283,6485, + 8,283,1,283,3,283,6488,8,283,1,283,1,283,3,283,6492,8,283,1,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 3,284,6506,8,284,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286, + 5,286,6516,8,286,10,286,12,286,6519,9,286,1,286,1,286,1,286,1,286, + 1,286,3,286,6526,8,286,1,286,1,286,3,286,6530,8,286,1,286,1,286, + 1,286,1,287,1,287,3,287,6537,8,287,1,287,1,287,1,287,5,287,6542, + 8,287,10,287,12,287,6545,9,287,1,288,1,288,3,288,6549,8,288,1,288, + 1,288,1,289,1,289,1,289,1,289,1,289,1,289,1,289,5,289,6560,8,289, + 10,289,12,289,6563,9,289,1,290,1,290,1,290,1,290,5,290,6569,8,290, + 10,290,12,290,6572,9,290,1,291,1,291,1,291,1,291,1,291,3,291,6579, + 8,291,1,292,1,292,1,292,3,292,6584,8,292,1,292,3,292,6587,8,292, + 1,293,1,293,1,293,3,293,6592,8,293,1,293,3,293,6595,8,293,1,294, + 1,294,1,295,1,295,1,296,1,296,1,296,1,296,1,296,1,296,3,296,6607, + 8,296,1,297,1,297,1,297,3,297,6612,8,297,1,297,1,297,1,297,1,297, + 1,297,1,297,1,297,1,297,1,297,1,297,1,297,3,297,6625,8,297,3,297, + 6627,8,297,1,297,1,297,1,297,3,297,6632,8,297,1,297,1,297,3,297, + 6636,8,297,1,297,3,297,6639,8,297,3,297,6641,8,297,1,298,1,298,1, + 298,1,298,1,298,3,298,6648,8,298,1,299,1,299,1,299,1,299,1,299,3, + 299,6655,8,299,1,299,3,299,6658,8,299,1,299,3,299,6661,8,299,1,299, + 1,299,1,299,1,299,3,299,6667,8,299,1,299,1,299,3,299,6671,8,299, + 1,300,1,300,1,300,1,300,3,300,6677,8,300,1,301,1,301,1,301,1,301, + 1,301,1,301,3,301,6685,8,301,1,301,1,301,1,302,1,302,1,302,1,302, + 1,302,3,302,6694,8,302,1,302,1,302,1,303,1,303,1,303,1,304,1,304, + 1,304,1,305,1,305,1,305,3,305,6707,8,305,1,305,1,305,1,305,3,305, + 6712,8,305,1,305,1,305,1,305,1,305,5,305,6718,8,305,10,305,12,305, + 6721,9,305,3,305,6723,8,305,1,306,1,306,1,306,3,306,6728,8,306,1, + 306,1,306,1,306,3,306,6733,8,306,1,306,1,306,1,306,1,306,5,306,6739, + 8,306,10,306,12,306,6742,9,306,3,306,6744,8,306,1,307,1,307,1,307, + 1,307,1,307,1,307,3,307,6752,8,307,1,308,1,308,3,308,6756,8,308, + 1,308,1,308,1,308,5,308,6761,8,308,10,308,12,308,6764,9,308,1,309, + 1,309,1,309,3,309,6769,8,309,1,309,3,309,6772,8,309,1,310,1,310, + 3,310,6776,8,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310, + 1,310,5,310,6787,8,310,10,310,12,310,6790,9,310,1,310,1,310,1,310, + 3,310,6795,8,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310,1,310, + 5,310,6805,8,310,10,310,12,310,6808,9,310,3,310,6810,8,310,1,311, + 1,311,1,312,1,312,1,312,1,312,1,312,3,312,6819,8,312,1,312,1,312, + 1,312,3,312,6824,8,312,1,313,1,313,1,314,1,314,1,315,1,315,1,316, + 1,316,1,317,1,317,1,318,1,318,1,319,1,319,1,320,1,320,1,320,5,320, + 6843,8,320,10,320,12,320,6846,9,320,1,321,1,321,1,322,1,322,1,323, + 1,323,1,324,1,324,1,325,1,325,1,325,5,325,6859,8,325,10,325,12,325, + 6862,9,325,1,326,1,326,1,327,1,327,1,327,5,327,6869,8,327,10,327, + 12,327,6872,9,327,1,328,1,328,3,328,6876,8,328,1,329,1,329,1,329, + 3,329,6881,8,329,3,329,6883,8,329,1,329,3,329,6886,8,329,1,329,1, + 329,3,329,6890,8,329,3,329,6892,8,329,1,330,1,330,1,330,5,330,6897, + 8,330,10,330,12,330,6900,9,330,1,331,1,331,1,331,3,331,6905,8,331, + 3,331,6907,8,331,1,331,3,331,6910,8,331,1,331,1,331,3,331,6914,8, + 331,1,331,3,331,6917,8,331,1,332,1,332,1,333,1,333,1,334,1,334,1, + 335,1,335,1,335,5,335,6928,8,335,10,335,12,335,6931,9,335,1,336, + 1,336,1,337,1,337,1,337,1,337,1,337,3,337,6940,8,337,1,337,3,337, + 6943,8,337,1,337,3,337,6946,8,337,1,338,1,338,1,338,1,338,1,339, + 1,339,1,339,1,340,1,340,1,340,1,340,3,340,6959,8,340,1,341,1,341, + 1,342,1,342,3,342,6965,8,342,1,342,3,342,6968,8,342,1,343,1,343, + 1,344,1,344,1,344,1,344,3,344,6976,8,344,1,345,1,345,1,346,1,346, + 1,346,3,346,6983,8,346,1,347,1,347,1,348,1,348,1,348,1,348,1,348, + 1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,1,348,4,348,7001, + 8,348,11,348,12,348,7002,1,349,1,349,1,349,1,349,1,349,3,349,7010, + 8,349,3,349,7012,8,349,1,350,1,350,1,350,4,350,7017,8,350,11,350, + 12,350,7018,3,350,7021,8,350,1,351,1,351,3,351,7025,8,351,1,352, + 1,352,1,352,5,352,7030,8,352,10,352,12,352,7033,9,352,1,353,1,353, + 1,353,3,353,7038,8,353,1,354,1,354,1,354,1,354,1,354,1,354,1,354, + 1,354,1,354,3,354,7049,8,354,1,355,1,355,1,355,1,355,3,355,7055, + 8,355,1,356,1,356,1,357,1,357,3,357,7061,8,357,1,358,3,358,7064, + 8,358,1,358,1,358,3,358,7068,8,358,1,358,4,358,7071,8,358,11,358, + 12,358,7072,1,358,3,358,7076,8,358,1,358,1,358,3,358,7080,8,358, + 1,358,1,358,3,358,7084,8,358,3,358,7086,8,358,1,359,1,359,1,360, + 3,360,7091,8,360,1,360,1,360,1,361,3,361,7096,8,361,1,361,1,361, + 1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,1,362,3,362,7109, + 8,362,1,362,3,362,7112,8,362,1,363,1,363,3,363,7116,8,363,1,363, + 3,363,7119,8,363,1,363,3,363,7122,8,363,1,363,1,363,1,363,3,363, + 7127,8,363,1,363,1,363,1,363,3,363,7132,8,363,1,363,1,363,1,363, + 1,363,3,363,7138,8,363,1,363,3,363,7141,8,363,1,363,1,363,1,363, + 3,363,7146,8,363,1,363,3,363,7149,8,363,1,363,1,363,1,363,3,363, + 7154,8,363,1,363,3,363,7157,8,363,1,363,1,363,3,363,7161,8,363,1, + 363,5,363,7164,8,363,10,363,12,363,7167,9,363,1,363,1,363,3,363, + 7171,8,363,1,363,5,363,7174,8,363,10,363,12,363,7177,9,363,1,363, + 1,363,3,363,7181,8,363,1,363,3,363,7184,8,363,1,363,5,363,7187,8, + 363,10,363,12,363,7190,9,363,1,363,1,363,3,363,7194,8,363,1,363, + 5,363,7197,8,363,10,363,12,363,7200,9,363,1,363,1,363,1,363,3,363, + 7205,8,363,1,363,1,363,1,363,3,363,7210,8,363,1,363,1,363,1,363, + 3,363,7215,8,363,1,363,1,363,1,363,3,363,7220,8,363,1,363,1,363, + 3,363,7224,8,363,1,363,3,363,7227,8,363,1,363,1,363,1,363,3,363, + 7232,8,363,1,363,1,363,3,363,7236,8,363,1,363,1,363,3,363,7240,8, + 363,1,364,1,364,1,364,1,364,5,364,7246,8,364,10,364,12,364,7249, + 9,364,1,364,1,364,1,365,1,365,3,365,7255,8,365,1,365,1,365,3,365, + 7259,8,365,1,365,1,365,1,365,3,365,7264,8,365,1,365,1,365,1,365, + 3,365,7269,8,365,1,365,1,365,3,365,7273,8,365,3,365,7275,8,365,1, + 365,3,365,7278,8,365,1,366,1,366,1,366,1,366,1,367,1,367,1,367,1, + 367,1,367,1,367,1,368,1,368,1,368,1,368,3,368,7294,8,368,1,368,1, + 368,1,369,1,369,1,369,1,369,5,369,7302,8,369,10,369,12,369,7305, + 9,369,1,369,1,369,1,370,1,370,1,370,5,370,7312,8,370,10,370,12,370, + 7315,9,370,1,371,1,371,1,371,1,371,5,371,7321,8,371,10,371,12,371, + 7324,9,371,1,372,1,372,1,372,1,372,5,372,7330,8,372,10,372,12,372, + 7333,9,372,1,372,1,372,1,373,1,373,3,373,7339,8,373,1,374,1,374, + 1,374,5,374,7344,8,374,10,374,12,374,7347,9,374,1,375,1,375,1,375, + 5,375,7352,8,375,10,375,12,375,7355,9,375,1,376,1,376,1,376,5,376, + 7360,8,376,10,376,12,376,7363,9,376,1,377,1,377,1,377,1,377,1,377, + 1,377,1,377,1,377,1,377,3,377,7374,8,377,1,377,1,377,1,377,1,377, + 1,377,3,377,7381,8,377,1,377,1,377,1,377,1,377,1,377,1,377,1,377, + 1,377,3,377,7391,8,377,1,378,1,378,1,378,3,378,7396,8,378,1,378, + 3,378,7399,8,378,1,378,1,378,1,378,3,378,7404,8,378,1,378,3,378, + 7407,8,378,1,379,1,379,1,379,1,380,1,380,1,380,1,380,1,381,1,381, + 1,381,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382, + 3,382,7429,8,382,1,382,1,382,1,382,1,382,1,382,1,382,1,382,3,382, + 7438,8,382,1,382,3,382,7441,8,382,1,383,1,383,1,383,3,383,7446,8, + 383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, + 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383, + 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,4,383,7477,8,383, + 11,383,12,383,7478,1,383,1,383,3,383,7483,8,383,1,383,1,383,1,383, + 1,383,1,383,4,383,7490,8,383,11,383,12,383,7491,1,383,1,383,3,383, + 7496,8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,7505, + 8,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,7513,8,383,1,383, + 1,383,1,383,3,383,7518,8,383,1,383,1,383,1,383,1,383,1,383,1,383, + 3,383,7526,8,383,1,383,1,383,1,383,3,383,7531,8,383,1,383,1,383, + 1,383,3,383,7536,8,383,3,383,7538,8,383,1,383,1,383,1,383,1,383, + 1,383,1,383,1,383,3,383,7547,8,383,1,383,1,383,1,383,3,383,7552, + 8,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,7560,8,383,1,383, + 1,383,1,383,3,383,7565,8,383,1,383,1,383,1,383,1,383,1,383,1,383, + 3,383,7573,8,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383,7581, + 8,383,1,383,3,383,7584,8,383,1,383,1,383,1,383,1,383,1,383,1,383, + 1,383,1,383,3,383,7594,8,383,1,383,1,383,1,383,1,383,1,383,1,383, + 1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,3,383, + 7612,8,383,1,383,3,383,7615,8,383,1,383,3,383,7618,8,383,1,383,1, + 383,3,383,7622,8,383,1,384,1,384,1,384,1,384,1,384,1,385,1,385,1, + 385,1,385,5,385,7633,8,385,10,385,12,385,7636,9,385,1,385,1,385, + 1,385,1,385,1,385,3,385,7643,8,385,1,386,1,386,3,386,7647,8,386, + 1,387,1,387,1,387,3,387,7652,8,387,1,387,1,387,1,387,3,387,7657, + 8,387,1,387,1,387,1,387,1,387,3,387,7663,8,387,1,387,1,387,1,387, + 3,387,7668,8,387,1,387,1,387,3,387,7672,8,387,1,387,1,387,1,387, + 3,387,7677,8,387,1,387,1,387,1,387,3,387,7682,8,387,1,387,1,387, + 1,387,3,387,7687,8,387,1,387,1,387,1,387,1,387,1,387,1,387,5,387, + 7695,8,387,10,387,12,387,7698,9,387,3,387,7700,8,387,1,387,1,387, + 3,387,7704,8,387,1,387,1,387,3,387,7708,8,387,1,388,1,388,1,388, + 1,388,1,388,3,388,7715,8,388,1,388,1,388,3,388,7719,8,388,1,388, + 1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388, + 1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388,1,388, + 1,388,1,388,1,388,1,388,3,388,7748,8,388,1,389,1,389,1,389,1,389, + 1,389,1,389,3,389,7756,8,389,1,390,3,390,7759,8,390,1,390,3,390, + 7762,8,390,1,390,3,390,7765,8,390,1,390,3,390,7768,8,390,1,391,1, + 391,1,392,1,392,1,392,1,393,1,393,1,394,1,394,3,394,7779,8,394,1, + 395,1,395,1,395,1,395,1,395,1,396,1,396,1,396,1,396,1,396,1,396, + 1,396,3,396,7793,8,396,1,397,1,397,1,397,1,397,1,397,5,397,7800, + 8,397,10,397,12,397,7803,9,397,1,398,1,398,1,398,1,398,1,398,1,398, + 1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398,1,398, + 1,398,1,398,1,398,1,398,1,398,1,398,1,398,3,398,7829,8,398,1,399, + 1,399,1,399,1,399,1,399,1,400,1,400,1,400,5,400,7839,8,400,10,400, + 12,400,7842,9,400,1,401,1,401,1,401,3,401,7847,8,401,1,402,1,402, + 1,402,1,402,1,402,1,402,3,402,7855,8,402,1,402,1,402,1,402,3,402, + 7860,8,402,1,402,1,402,1,402,1,402,5,402,7866,8,402,10,402,12,402, + 7869,9,402,1,403,1,403,1,403,1,403,1,403,3,403,7876,8,403,1,403, + 1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403,1,403,3,403, + 7889,8,403,1,403,1,403,1,403,1,403,3,403,7895,8,403,1,403,1,403, + 1,403,1,403,3,403,7901,8,403,1,403,1,403,1,403,1,403,1,403,1,403, + 1,403,1,403,1,403,1,403,1,403,1,403,1,403,3,403,7916,8,403,1,403, + 1,403,3,403,7920,8,403,1,403,1,403,1,403,1,403,3,403,7926,8,403, + 1,403,1,403,1,403,1,403,1,403,1,403,1,403,5,403,7935,8,403,10,403, + 12,403,7938,9,403,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404, + 1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,5,404,7956,8,404, + 10,404,12,404,7959,9,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404, + 4,404,7968,8,404,11,404,12,404,7969,1,404,1,404,1,404,1,404,1,404, + 1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404, + 3,404,7988,8,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404,1,404, + 1,404,1,404,1,404,1,404,1,404,1,404,1,404,5,404,8005,8,404,10,404, + 12,404,8008,9,404,1,405,1,405,1,406,1,406,1,406,1,406,1,406,1,406, + 1,406,1,406,3,406,8020,8,406,1,407,1,407,1,407,1,407,1,407,1,407, + 1,407,3,407,8029,8,407,1,408,1,408,1,408,1,408,1,408,1,408,1,408, + 3,408,8038,8,408,1,409,1,409,1,409,1,409,1,409,1,409,1,409,3,409, + 8047,8,409,1,410,1,410,1,411,1,411,1,411,1,411,1,411,3,411,8056, + 8,411,1,412,1,412,1,413,1,413,1,414,1,414,1,415,1,415,1,416,1,416, + 1,417,1,417,1,418,1,418,1,418,0,5,214,216,804,806,808,419,0,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, @@ -48350,2874 +49150,2893 @@ export class MySqlParser extends SQLParserBase { 736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766, 768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798, 800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830, - 832,0,160,2,0,39,39,152,152,2,0,508,508,514,514,3,0,69,69,161,161, - 182,182,3,0,42,42,357,357,430,430,4,0,42,42,389,389,505,505,595, - 595,2,0,494,494,882,882,2,0,79,79,143,143,2,0,16,16,306,306,3,0, - 44,44,86,86,185,185,2,0,406,406,538,538,3,0,486,486,661,661,670, - 670,2,0,364,364,436,436,2,0,325,325,450,450,2,0,42,42,871,872,2, - 0,37,37,678,678,2,0,323,323,418,418,2,0,435,435,686,686,3,0,80,80, - 85,85,126,126,2,0,82,82,92,92,2,0,69,69,161,161,3,0,42,42,374,374, - 403,403,3,0,42,42,370,370,802,802,2,0,648,648,685,685,3,0,408,408, - 526,526,597,597,2,0,329,329,522,522,1,0,871,872,2,0,882,882,889, - 889,2,0,82,82,360,360,2,0,523,523,882,882,2,0,524,524,882,882,3, - 0,402,402,445,445,502,502,7,0,42,42,342,342,345,345,374,374,403, - 403,554,554,889,889,2,0,494,494,506,506,1,0,872,873,2,0,6,6,51,51, - 2,0,5,5,81,81,2,0,27,27,31,31,4,0,42,42,357,357,430,430,434,434, - 2,0,368,368,375,375,2,0,369,369,425,425,2,0,13,13,176,176,2,0,194, - 194,690,690,2,0,22,22,146,146,3,0,43,43,76,76,107,107,2,0,7,7,49, - 49,2,0,107,107,347,347,2,0,337,337,398,398,2,0,102,102,587,587,2, - 0,43,43,107,107,3,0,59,59,181,181,828,828,2,0,185,185,594,594,2, - 0,159,159,503,503,4,0,402,402,445,445,501,501,542,542,2,0,402,402, - 501,501,2,0,14,14,45,45,3,0,66,66,79,79,187,187,2,0,35,35,84,84, - 2,0,98,98,150,150,2,0,7,7,49,50,1,0,637,638,2,0,173,173,752,752, - 2,0,413,413,593,593,2,0,228,228,453,453,2,0,563,563,598,598,8,0, - 108,108,455,455,459,460,462,462,464,464,467,476,499,499,557,557, - 6,0,456,458,461,461,463,463,465,465,477,477,558,558,7,0,109,109, - 411,411,416,416,454,454,466,466,573,573,617,617,2,0,116,116,882, - 882,2,0,118,119,507,507,7,0,499,499,557,557,606,609,611,611,619, - 619,622,628,630,632,6,0,558,558,610,610,612,612,614,616,618,618, - 620,620,7,0,412,412,416,416,573,573,613,613,617,617,621,621,629, - 629,3,0,70,70,118,119,507,507,2,0,438,438,639,639,2,0,633,633,635, - 635,2,0,317,317,640,640,2,0,91,91,577,577,2,0,51,51,362,362,3,0, - 32,32,61,61,180,180,2,0,15,15,340,340,2,0,678,678,835,835,3,0,132, - 132,173,173,409,409,3,0,6,6,51,51,492,492,3,0,13,13,20,20,188,188, - 2,0,42,42,122,122,2,0,104,104,183,183,1,0,873,874,2,0,333,333,598, - 598,2,0,40,40,684,684,2,0,392,392,549,549,2,0,115,115,450,450,4, - 0,208,208,210,210,216,216,649,649,3,0,413,413,531,531,893,894,2, - 0,841,841,857,857,2,0,318,318,559,559,2,0,68,68,80,80,3,0,132,132, - 178,178,385,385,2,0,493,493,645,645,2,0,383,383,688,688,3,0,82,82, - 93,93,426,426,4,0,413,413,450,450,531,532,593,593,2,0,645,645,683, - 683,2,0,349,349,548,548,6,0,228,228,380,380,382,382,410,410,556, - 556,599,599,2,0,45,46,62,62,3,0,442,442,663,663,666,666,10,0,332, - 332,339,339,351,353,359,359,487,487,495,495,650,650,657,657,822, - 822,832,832,2,0,36,36,170,170,2,0,117,117,831,831,11,0,332,332,339, - 339,351,353,359,359,487,487,495,495,578,578,650,650,657,657,822, - 822,832,832,2,0,870,870,891,892,1,0,892,893,2,0,348,348,797,808, - 3,0,871,874,883,883,885,885,2,0,63,63,179,179,2,0,116,116,886,886, - 5,0,26,26,224,226,233,233,235,238,498,498,2,0,26,26,224,224,2,0, - 26,26,224,225,1,0,198,209,3,0,184,184,197,197,596,596,2,0,213,218, - 403,403,6,0,219,219,230,230,232,232,234,234,241,241,321,322,4,0, - 220,223,228,229,231,231,319,319,2,0,155,155,239,239,2,0,442,442, - 813,821,2,0,228,228,498,498,5,0,202,202,208,208,219,220,222,222, - 442,442,1,0,216,217,2,0,184,184,596,596,2,0,202,202,208,208,2,0, - 189,189,682,682,2,0,287,288,294,294,3,0,152,152,285,288,303,303, - 1,0,297,298,3,0,18,18,96,96,177,177,2,0,224,224,228,228,2,0,219, - 220,222,222,3,0,14,14,45,45,830,830,3,0,258,258,270,271,281,281, - 3,0,259,261,277,280,282,284,2,0,267,267,269,269,2,0,265,265,268, - 268,2,0,263,264,274,276,2,0,134,134,587,587,2,0,405,405,539,539, - 2,0,512,512,529,529,2,0,114,114,860,860,3,0,63,63,179,179,674,674, - 2,0,139,139,151,151,3,0,7,7,309,309,602,602,3,0,114,114,853,854, - 860,861,1,0,850,856,2,0,228,228,756,796,1,0,809,812,5,0,717,718, - 734,736,743,743,749,750,752,752,1,0,696,703,3,0,219,223,236,236, - 239,239,76,0,12,12,15,15,19,19,30,30,36,37,42,42,48,48,55,55,57, - 57,59,59,74,74,95,95,117,117,122,122,125,125,131,131,160,160,170, - 170,241,241,255,262,266,266,270,271,277,284,304,309,311,329,331, - 343,345,376,378,393,395,400,402,404,406,410,413,415,417,426,428, - 428,430,434,436,454,456,463,465,473,475,476,478,498,500,506,508, - 510,512,522,525,530,533,538,540,542,544,554,556,562,565,572,575, - 575,577,578,580,605,633,647,649,665,667,674,676,685,687,688,690, - 695,704,704,706,707,709,712,714,716,719,721,726,727,729,733,737, - 738,740,742,744,744,746,748,751,751,753,755,802,802,822,822,825, - 825,832,833,838,838,24,0,39,39,98,98,150,150,152,152,219,221,223, - 223,253,254,262,265,267,269,272,276,296,296,435,435,686,686,696, - 703,746,746,813,813,816,821,823,824,826,827,829,831,834,834,836, - 836,840,840,856,856,9382,0,837,1,0,0,0,2,847,1,0,0,0,4,856,1,0,0, - 0,6,858,1,0,0,0,8,899,1,0,0,0,10,918,1,0,0,0,12,929,1,0,0,0,14,945, - 1,0,0,0,16,950,1,0,0,0,18,962,1,0,0,0,20,997,1,0,0,0,22,1007,1,0, - 0,0,24,1009,1,0,0,0,26,1021,1,0,0,0,28,1051,1,0,0,0,30,1087,1,0, - 0,0,32,1138,1,0,0,0,34,1167,1,0,0,0,36,1174,1,0,0,0,38,1271,1,0, - 0,0,40,1273,1,0,0,0,42,1310,1,0,0,0,44,1374,1,0,0,0,46,1396,1,0, - 0,0,48,1402,1,0,0,0,50,1424,1,0,0,0,52,1511,1,0,0,0,54,1518,1,0, - 0,0,56,1520,1,0,0,0,58,1525,1,0,0,0,60,1565,1,0,0,0,62,1571,1,0, - 0,0,64,1573,1,0,0,0,66,1594,1,0,0,0,68,1601,1,0,0,0,70,1603,1,0, - 0,0,72,1628,1,0,0,0,74,1631,1,0,0,0,76,1659,1,0,0,0,78,1675,1,0, - 0,0,80,1677,1,0,0,0,82,1771,1,0,0,0,84,1774,1,0,0,0,86,1786,1,0, - 0,0,88,1790,1,0,0,0,90,1840,1,0,0,0,92,1842,1,0,0,0,94,1870,1,0, - 0,0,96,1880,1,0,0,0,98,2067,1,0,0,0,100,2069,1,0,0,0,102,2071,1, - 0,0,0,104,2074,1,0,0,0,106,2149,1,0,0,0,108,2172,1,0,0,0,110,2320, - 1,0,0,0,112,2325,1,0,0,0,114,2327,1,0,0,0,116,2337,1,0,0,0,118,2393, - 1,0,0,0,120,2413,1,0,0,0,122,2415,1,0,0,0,124,2450,1,0,0,0,126,2459, - 1,0,0,0,128,2466,1,0,0,0,130,2489,1,0,0,0,132,2498,1,0,0,0,134,2513, - 1,0,0,0,136,2535,1,0,0,0,138,2591,1,0,0,0,140,2887,1,0,0,0,142,2987, - 1,0,0,0,144,2989,1,0,0,0,146,2996,1,0,0,0,148,3003,1,0,0,0,150,3026, - 1,0,0,0,152,3036,1,0,0,0,154,3043,1,0,0,0,156,3050,1,0,0,0,158,3057, - 1,0,0,0,160,3066,1,0,0,0,162,3078,1,0,0,0,164,3091,1,0,0,0,166,3098, - 1,0,0,0,168,3114,1,0,0,0,170,3141,1,0,0,0,172,3143,1,0,0,0,174,3153, - 1,0,0,0,176,3157,1,0,0,0,178,3163,1,0,0,0,180,3175,1,0,0,0,182,3177, - 1,0,0,0,184,3184,1,0,0,0,186,3186,1,0,0,0,188,3235,1,0,0,0,190,3244, - 1,0,0,0,192,3246,1,0,0,0,194,3257,1,0,0,0,196,3263,1,0,0,0,198,3337, - 1,0,0,0,200,3400,1,0,0,0,202,3418,1,0,0,0,204,3502,1,0,0,0,206,3505, - 1,0,0,0,208,3517,1,0,0,0,210,3537,1,0,0,0,212,3565,1,0,0,0,214,3569, - 1,0,0,0,216,3571,1,0,0,0,218,3581,1,0,0,0,220,3601,1,0,0,0,222,3608, - 1,0,0,0,224,3610,1,0,0,0,226,3621,1,0,0,0,228,3630,1,0,0,0,230,3636, - 1,0,0,0,232,3659,1,0,0,0,234,3661,1,0,0,0,236,3697,1,0,0,0,238,3752, - 1,0,0,0,240,3761,1,0,0,0,242,3781,1,0,0,0,244,3793,1,0,0,0,246,3797, - 1,0,0,0,248,3808,1,0,0,0,250,3841,1,0,0,0,252,3862,1,0,0,0,254,3872, - 1,0,0,0,256,3876,1,0,0,0,258,3902,1,0,0,0,260,3949,1,0,0,0,262,3951, - 1,0,0,0,264,3955,1,0,0,0,266,3972,1,0,0,0,268,4023,1,0,0,0,270,4032, - 1,0,0,0,272,4042,1,0,0,0,274,4044,1,0,0,0,276,4074,1,0,0,0,278,4082, - 1,0,0,0,280,4099,1,0,0,0,282,4115,1,0,0,0,284,4152,1,0,0,0,286,4158, - 1,0,0,0,288,4167,1,0,0,0,290,4180,1,0,0,0,292,4184,1,0,0,0,294,4222, - 1,0,0,0,296,4260,1,0,0,0,298,4274,1,0,0,0,300,4282,1,0,0,0,302,4286, - 1,0,0,0,304,4292,1,0,0,0,306,4306,1,0,0,0,308,4309,1,0,0,0,310,4327, - 1,0,0,0,312,4331,1,0,0,0,314,4347,1,0,0,0,316,4349,1,0,0,0,318,4361, - 1,0,0,0,320,4365,1,0,0,0,322,4382,1,0,0,0,324,4399,1,0,0,0,326,4402, - 1,0,0,0,328,4412,1,0,0,0,330,4416,1,0,0,0,332,4426,1,0,0,0,334,4429, - 1,0,0,0,336,4434,1,0,0,0,338,4454,1,0,0,0,340,4456,1,0,0,0,342,4473, - 1,0,0,0,344,4482,1,0,0,0,346,4491,1,0,0,0,348,4493,1,0,0,0,350,4507, - 1,0,0,0,352,4521,1,0,0,0,354,4536,1,0,0,0,356,4545,1,0,0,0,358,4570, - 1,0,0,0,360,4585,1,0,0,0,362,4604,1,0,0,0,364,4634,1,0,0,0,366,4636, - 1,0,0,0,368,4638,1,0,0,0,370,4640,1,0,0,0,372,4655,1,0,0,0,374,4684, - 1,0,0,0,376,4686,1,0,0,0,378,4688,1,0,0,0,380,4690,1,0,0,0,382,4705, - 1,0,0,0,384,4707,1,0,0,0,386,4774,1,0,0,0,388,4776,1,0,0,0,390,4782, - 1,0,0,0,392,4809,1,0,0,0,394,4823,1,0,0,0,396,4834,1,0,0,0,398,4836, - 1,0,0,0,400,4842,1,0,0,0,402,4852,1,0,0,0,404,4856,1,0,0,0,406,4863, - 1,0,0,0,408,4867,1,0,0,0,410,4873,1,0,0,0,412,4880,1,0,0,0,414,4886, - 1,0,0,0,416,4892,1,0,0,0,418,4897,1,0,0,0,420,4942,1,0,0,0,422,4963, - 1,0,0,0,424,4988,1,0,0,0,426,4991,1,0,0,0,428,4997,1,0,0,0,430,5013, - 1,0,0,0,432,5028,1,0,0,0,434,5034,1,0,0,0,436,5064,1,0,0,0,438,5066, - 1,0,0,0,440,5073,1,0,0,0,442,5085,1,0,0,0,444,5091,1,0,0,0,446,5116, - 1,0,0,0,448,5120,1,0,0,0,450,5124,1,0,0,0,452,5135,1,0,0,0,454,5143, - 1,0,0,0,456,5206,1,0,0,0,458,5265,1,0,0,0,460,5367,1,0,0,0,462,5377, - 1,0,0,0,464,5379,1,0,0,0,466,5397,1,0,0,0,468,5421,1,0,0,0,470,5445, - 1,0,0,0,472,5452,1,0,0,0,474,5472,1,0,0,0,476,5481,1,0,0,0,478,5543, - 1,0,0,0,480,5545,1,0,0,0,482,5549,1,0,0,0,484,5583,1,0,0,0,486,5585, - 1,0,0,0,488,5588,1,0,0,0,490,5652,1,0,0,0,492,5671,1,0,0,0,494,5698, - 1,0,0,0,496,5702,1,0,0,0,498,5723,1,0,0,0,500,5733,1,0,0,0,502,5743, - 1,0,0,0,504,5783,1,0,0,0,506,5785,1,0,0,0,508,5788,1,0,0,0,510,5818, - 1,0,0,0,512,5820,1,0,0,0,514,5823,1,0,0,0,516,5923,1,0,0,0,518,5941, - 1,0,0,0,520,5943,1,0,0,0,522,5995,1,0,0,0,524,5997,1,0,0,0,526,6006, - 1,0,0,0,528,6012,1,0,0,0,530,6019,1,0,0,0,532,6034,1,0,0,0,534,6043, - 1,0,0,0,536,6045,1,0,0,0,538,6059,1,0,0,0,540,6080,1,0,0,0,542,6085, - 1,0,0,0,544,6095,1,0,0,0,546,6101,1,0,0,0,548,6135,1,0,0,0,550,6189, - 1,0,0,0,552,6375,1,0,0,0,554,6387,1,0,0,0,556,6403,1,0,0,0,558,6409, - 1,0,0,0,560,6428,1,0,0,0,562,6441,1,0,0,0,564,6455,1,0,0,0,566,6457, - 1,0,0,0,568,6460,1,0,0,0,570,6484,1,0,0,0,572,6496,1,0,0,0,574,6502, - 1,0,0,0,576,6514,1,0,0,0,578,6528,1,0,0,0,580,6530,1,0,0,0,582,6538, - 1,0,0,0,584,6546,1,0,0,0,586,6548,1,0,0,0,588,6550,1,0,0,0,590,6590, - 1,0,0,0,592,6597,1,0,0,0,594,6599,1,0,0,0,596,6622,1,0,0,0,598,6628, - 1,0,0,0,600,6638,1,0,0,0,602,6647,1,0,0,0,604,6650,1,0,0,0,606,6653, - 1,0,0,0,608,6674,1,0,0,0,610,6695,1,0,0,0,612,6703,1,0,0,0,614,6715, - 1,0,0,0,616,6723,1,0,0,0,618,6761,1,0,0,0,620,6773,1,0,0,0,622,6775, - 1,0,0,0,624,6777,1,0,0,0,626,6779,1,0,0,0,628,6781,1,0,0,0,630,6783, - 1,0,0,0,632,6785,1,0,0,0,634,6787,1,0,0,0,636,6789,1,0,0,0,638,6797, - 1,0,0,0,640,6799,1,0,0,0,642,6801,1,0,0,0,644,6803,1,0,0,0,646,6805, - 1,0,0,0,648,6813,1,0,0,0,650,6815,1,0,0,0,652,6825,1,0,0,0,654,6841, - 1,0,0,0,656,6843,1,0,0,0,658,6866,1,0,0,0,660,6868,1,0,0,0,662,6870, - 1,0,0,0,664,6872,1,0,0,0,666,6874,1,0,0,0,668,6882,1,0,0,0,670,6892, - 1,0,0,0,672,6897,1,0,0,0,674,6901,1,0,0,0,676,6908,1,0,0,0,678,6910, - 1,0,0,0,680,6917,1,0,0,0,682,6919,1,0,0,0,684,6925,1,0,0,0,686,6927, - 1,0,0,0,688,6932,1,0,0,0,690,6934,1,0,0,0,692,6936,1,0,0,0,694,6954, - 1,0,0,0,696,6970,1,0,0,0,698,6972,1,0,0,0,700,6976,1,0,0,0,702,6987, - 1,0,0,0,704,6998,1,0,0,0,706,7004,1,0,0,0,708,7006,1,0,0,0,710,7010, - 1,0,0,0,712,7035,1,0,0,0,714,7037,1,0,0,0,716,7040,1,0,0,0,718,7045, - 1,0,0,0,720,7061,1,0,0,0,722,7189,1,0,0,0,724,7191,1,0,0,0,726,7224, - 1,0,0,0,728,7229,1,0,0,0,730,7233,1,0,0,0,732,7239,1,0,0,0,734,7247, - 1,0,0,0,736,7258,1,0,0,0,738,7266,1,0,0,0,740,7275,1,0,0,0,742,7288, - 1,0,0,0,744,7290,1,0,0,0,746,7298,1,0,0,0,748,7306,1,0,0,0,750,7340, - 1,0,0,0,752,7356,1,0,0,0,754,7358,1,0,0,0,756,7361,1,0,0,0,758,7365, - 1,0,0,0,760,7390,1,0,0,0,762,7571,1,0,0,0,764,7573,1,0,0,0,766,7592, - 1,0,0,0,768,7594,1,0,0,0,770,7657,1,0,0,0,772,7697,1,0,0,0,774,7699, - 1,0,0,0,776,7708,1,0,0,0,778,7719,1,0,0,0,780,7721,1,0,0,0,782,7724, - 1,0,0,0,784,7728,1,0,0,0,786,7730,1,0,0,0,788,7742,1,0,0,0,790,7744, - 1,0,0,0,792,7778,1,0,0,0,794,7780,1,0,0,0,796,7785,1,0,0,0,798,7796, - 1,0,0,0,800,7809,1,0,0,0,802,7820,1,0,0,0,804,7937,1,0,0,0,806,7959, - 1,0,0,0,808,7969,1,0,0,0,810,7978,1,0,0,0,812,7987,1,0,0,0,814,7996, - 1,0,0,0,816,7998,1,0,0,0,818,8005,1,0,0,0,820,8007,1,0,0,0,822,8009, - 1,0,0,0,824,8011,1,0,0,0,826,8013,1,0,0,0,828,8015,1,0,0,0,830,8017, - 1,0,0,0,832,8019,1,0,0,0,834,836,3,2,1,0,835,834,1,0,0,0,836,839, - 1,0,0,0,837,835,1,0,0,0,837,838,1,0,0,0,838,840,1,0,0,0,839,837, - 1,0,0,0,840,841,5,0,0,1,841,1,1,0,0,0,842,844,3,4,2,0,843,845,5, - 869,0,0,844,843,1,0,0,0,844,845,1,0,0,0,845,848,1,0,0,0,846,848, - 3,6,3,0,847,842,1,0,0,0,847,846,1,0,0,0,848,3,1,0,0,0,849,857,3, - 8,4,0,850,857,3,10,5,0,851,857,3,12,6,0,852,857,3,14,7,0,853,857, - 3,16,8,0,854,857,3,20,10,0,855,857,3,22,11,0,856,849,1,0,0,0,856, - 850,1,0,0,0,856,851,1,0,0,0,856,852,1,0,0,0,856,853,1,0,0,0,856, - 854,1,0,0,0,856,855,1,0,0,0,857,5,1,0,0,0,858,859,5,869,0,0,859, - 7,1,0,0,0,860,900,3,24,12,0,861,900,3,26,13,0,862,900,3,28,14,0, - 863,900,3,30,15,0,864,900,3,32,16,0,865,900,3,536,268,0,866,900, - 3,36,18,0,867,900,3,38,19,0,868,900,3,40,20,0,869,900,3,42,21,0, - 870,900,3,44,22,0,871,900,3,50,25,0,872,900,3,34,17,0,873,900,3, - 120,60,0,874,900,3,122,61,0,875,900,3,124,62,0,876,900,3,126,63, - 0,877,900,3,128,64,0,878,900,3,130,65,0,879,900,3,132,66,0,880,900, - 3,134,67,0,881,900,3,136,68,0,882,900,3,138,69,0,883,900,3,144,72, - 0,884,900,3,146,73,0,885,900,3,148,74,0,886,900,3,150,75,0,887,900, - 3,152,76,0,888,900,3,154,77,0,889,900,3,156,78,0,890,900,3,158,79, - 0,891,900,3,160,80,0,892,900,3,162,81,0,893,900,3,164,82,0,894,900, - 3,166,83,0,895,900,3,168,84,0,896,900,3,170,85,0,897,900,3,172,86, - 0,898,900,3,176,88,0,899,860,1,0,0,0,899,861,1,0,0,0,899,862,1,0, - 0,0,899,863,1,0,0,0,899,864,1,0,0,0,899,865,1,0,0,0,899,866,1,0, - 0,0,899,867,1,0,0,0,899,868,1,0,0,0,899,869,1,0,0,0,899,870,1,0, - 0,0,899,871,1,0,0,0,899,872,1,0,0,0,899,873,1,0,0,0,899,874,1,0, - 0,0,899,875,1,0,0,0,899,876,1,0,0,0,899,877,1,0,0,0,899,878,1,0, - 0,0,899,879,1,0,0,0,899,880,1,0,0,0,899,881,1,0,0,0,899,882,1,0, - 0,0,899,883,1,0,0,0,899,884,1,0,0,0,899,885,1,0,0,0,899,886,1,0, - 0,0,899,887,1,0,0,0,899,888,1,0,0,0,899,889,1,0,0,0,899,890,1,0, - 0,0,899,891,1,0,0,0,899,892,1,0,0,0,899,893,1,0,0,0,899,894,1,0, - 0,0,899,895,1,0,0,0,899,896,1,0,0,0,899,897,1,0,0,0,899,898,1,0, - 0,0,900,9,1,0,0,0,901,919,3,204,102,0,902,919,3,206,103,0,903,919, - 3,186,93,0,904,919,3,214,107,0,905,919,3,180,90,0,906,919,3,202, - 101,0,907,919,3,178,89,0,908,919,3,192,96,0,909,919,3,196,98,0,910, - 919,3,198,99,0,911,919,3,200,100,0,912,919,3,182,91,0,913,919,3, - 184,92,0,914,919,3,246,123,0,915,919,3,216,108,0,916,919,3,612,306, - 0,917,919,3,614,307,0,918,901,1,0,0,0,918,902,1,0,0,0,918,903,1, - 0,0,0,918,904,1,0,0,0,918,905,1,0,0,0,918,906,1,0,0,0,918,907,1, - 0,0,0,918,908,1,0,0,0,918,909,1,0,0,0,918,910,1,0,0,0,918,911,1, - 0,0,0,918,912,1,0,0,0,918,913,1,0,0,0,918,914,1,0,0,0,918,915,1, - 0,0,0,918,916,1,0,0,0,918,917,1,0,0,0,919,11,1,0,0,0,920,930,3,316, - 158,0,921,930,3,318,159,0,922,930,3,320,160,0,923,930,3,322,161, - 0,924,930,3,324,162,0,925,930,3,326,163,0,926,930,3,328,164,0,927, - 930,3,330,165,0,928,930,3,332,166,0,929,920,1,0,0,0,929,921,1,0, - 0,0,929,922,1,0,0,0,929,923,1,0,0,0,929,924,1,0,0,0,929,925,1,0, - 0,0,929,926,1,0,0,0,929,927,1,0,0,0,929,928,1,0,0,0,930,13,1,0,0, - 0,931,946,3,348,174,0,932,946,3,350,175,0,933,946,3,352,176,0,934, - 946,3,354,177,0,935,946,3,356,178,0,936,946,3,358,179,0,937,946, - 3,360,180,0,938,946,3,362,181,0,939,946,3,398,199,0,940,946,3,400, - 200,0,941,946,3,402,201,0,942,946,3,404,202,0,943,946,3,406,203, - 0,944,946,3,408,204,0,945,931,1,0,0,0,945,932,1,0,0,0,945,933,1, - 0,0,0,945,934,1,0,0,0,945,935,1,0,0,0,945,936,1,0,0,0,945,937,1, - 0,0,0,945,938,1,0,0,0,945,939,1,0,0,0,945,940,1,0,0,0,945,941,1, - 0,0,0,945,942,1,0,0,0,945,943,1,0,0,0,945,944,1,0,0,0,946,15,1,0, - 0,0,947,951,3,410,205,0,948,951,3,412,206,0,949,951,3,414,207,0, - 950,947,1,0,0,0,950,948,1,0,0,0,950,949,1,0,0,0,951,17,1,0,0,0,952, - 963,3,418,209,0,953,963,3,420,210,0,954,963,3,422,211,0,955,963, - 3,426,213,0,956,963,3,428,214,0,957,963,3,430,215,0,958,963,3,434, - 217,0,959,963,3,424,212,0,960,963,3,432,216,0,961,963,3,436,218, - 0,962,952,1,0,0,0,962,953,1,0,0,0,962,954,1,0,0,0,962,955,1,0,0, - 0,962,956,1,0,0,0,962,957,1,0,0,0,962,958,1,0,0,0,962,959,1,0,0, - 0,962,960,1,0,0,0,962,961,1,0,0,0,963,19,1,0,0,0,964,998,3,454,227, - 0,965,998,3,456,228,0,966,998,3,458,229,0,967,998,3,460,230,0,968, - 998,3,464,232,0,969,998,3,476,238,0,970,998,3,478,239,0,971,998, - 3,466,233,0,972,998,3,468,234,0,973,998,3,470,235,0,974,998,3,472, - 236,0,975,998,3,522,261,0,976,998,3,524,262,0,977,998,3,526,263, - 0,978,998,3,528,264,0,979,998,3,530,265,0,980,998,3,538,269,0,981, - 998,3,542,271,0,982,998,3,544,272,0,983,998,3,546,273,0,984,998, - 3,548,274,0,985,998,3,550,275,0,986,998,3,552,276,0,987,998,3,566, - 283,0,988,998,3,568,284,0,989,998,3,570,285,0,990,998,3,572,286, - 0,991,998,3,574,287,0,992,998,3,576,288,0,993,998,3,580,290,0,994, - 998,3,582,291,0,995,998,3,584,292,0,996,998,3,586,293,0,997,964, - 1,0,0,0,997,965,1,0,0,0,997,966,1,0,0,0,997,967,1,0,0,0,997,968, - 1,0,0,0,997,969,1,0,0,0,997,970,1,0,0,0,997,971,1,0,0,0,997,972, - 1,0,0,0,997,973,1,0,0,0,997,974,1,0,0,0,997,975,1,0,0,0,997,976, - 1,0,0,0,997,977,1,0,0,0,997,978,1,0,0,0,997,979,1,0,0,0,997,980, - 1,0,0,0,997,981,1,0,0,0,997,982,1,0,0,0,997,983,1,0,0,0,997,984, - 1,0,0,0,997,985,1,0,0,0,997,986,1,0,0,0,997,987,1,0,0,0,997,988, - 1,0,0,0,997,989,1,0,0,0,997,990,1,0,0,0,997,991,1,0,0,0,997,992, - 1,0,0,0,997,993,1,0,0,0,997,994,1,0,0,0,997,995,1,0,0,0,997,996, - 1,0,0,0,998,21,1,0,0,0,999,1008,3,598,299,0,1000,1008,3,596,298, - 0,1001,1008,3,600,300,0,1002,1008,3,602,301,0,1003,1008,3,604,302, - 0,1004,1008,3,606,303,0,1005,1008,3,608,304,0,1006,1008,3,616,308, - 0,1007,999,1,0,0,0,1007,1000,1,0,0,0,1007,1001,1,0,0,0,1007,1002, - 1,0,0,0,1007,1003,1,0,0,0,1007,1004,1,0,0,0,1007,1005,1,0,0,0,1007, - 1006,1,0,0,0,1008,23,1,0,0,0,1009,1010,5,34,0,0,1010,1012,7,0,0, - 0,1011,1013,3,756,378,0,1012,1011,1,0,0,0,1012,1013,1,0,0,0,1013, - 1014,1,0,0,0,1014,1018,3,622,311,0,1015,1017,3,52,26,0,1016,1015, - 1,0,0,0,1017,1020,1,0,0,0,1018,1016,1,0,0,0,1018,1019,1,0,0,0,1019, - 25,1,0,0,0,1020,1018,1,0,0,0,1021,1023,5,34,0,0,1022,1024,3,58,29, - 0,1023,1022,1,0,0,0,1023,1024,1,0,0,0,1024,1025,1,0,0,0,1025,1027, - 5,385,0,0,1026,1028,3,756,378,0,1027,1026,1,0,0,0,1027,1028,1,0, - 0,0,1028,1029,1,0,0,0,1029,1030,3,698,349,0,1030,1031,5,119,0,0, - 1031,1032,5,590,0,0,1032,1039,3,60,30,0,1033,1034,5,119,0,0,1034, - 1036,5,343,0,0,1035,1037,5,114,0,0,1036,1035,1,0,0,0,1036,1037,1, - 0,0,0,1037,1038,1,0,0,0,1038,1040,5,541,0,0,1039,1033,1,0,0,0,1039, - 1040,1,0,0,0,1040,1042,1,0,0,0,1041,1043,3,68,34,0,1042,1041,1,0, - 0,0,1042,1043,1,0,0,0,1043,1046,1,0,0,0,1044,1045,5,340,0,0,1045, - 1047,5,882,0,0,1046,1044,1,0,0,0,1046,1047,1,0,0,0,1047,1048,1,0, - 0,0,1048,1049,5,371,0,0,1049,1050,3,416,208,0,1050,27,1,0,0,0,1051, - 1053,5,34,0,0,1052,1054,7,1,0,0,1053,1052,1,0,0,0,1053,1054,1,0, - 0,0,1054,1056,1,0,0,0,1055,1057,7,2,0,0,1056,1055,1,0,0,0,1056,1057, - 1,0,0,0,1057,1058,1,0,0,0,1058,1059,5,82,0,0,1059,1061,3,634,317, - 0,1060,1062,3,70,35,0,1061,1060,1,0,0,0,1061,1062,1,0,0,0,1062,1063, - 1,0,0,0,1063,1064,5,119,0,0,1064,1065,3,648,324,0,1065,1069,3,734, - 367,0,1066,1068,3,72,36,0,1067,1066,1,0,0,0,1068,1071,1,0,0,0,1069, - 1067,1,0,0,0,1069,1070,1,0,0,0,1070,1084,1,0,0,0,1071,1069,1,0,0, - 0,1072,1074,5,308,0,0,1073,1075,5,857,0,0,1074,1073,1,0,0,0,1074, - 1075,1,0,0,0,1075,1076,1,0,0,0,1076,1083,7,3,0,0,1077,1079,5,104, - 0,0,1078,1080,5,857,0,0,1079,1078,1,0,0,0,1079,1080,1,0,0,0,1080, - 1081,1,0,0,0,1081,1083,7,4,0,0,1082,1072,1,0,0,0,1082,1077,1,0,0, - 0,1083,1086,1,0,0,0,1084,1082,1,0,0,0,1084,1085,1,0,0,0,1085,29, - 1,0,0,0,1086,1084,1,0,0,0,1087,1088,5,34,0,0,1088,1089,5,451,0,0, - 1089,1090,5,74,0,0,1090,1091,3,702,351,0,1091,1092,5,6,0,0,1092, - 1093,5,671,0,0,1093,1099,5,882,0,0,1094,1096,5,428,0,0,1095,1097, - 5,857,0,0,1096,1095,1,0,0,0,1096,1097,1,0,0,0,1097,1098,1,0,0,0, - 1098,1100,3,710,355,0,1099,1094,1,0,0,0,1099,1100,1,0,0,0,1100,1106, - 1,0,0,0,1101,1103,5,672,0,0,1102,1104,5,857,0,0,1103,1102,1,0,0, - 0,1103,1104,1,0,0,0,1104,1105,1,0,0,0,1105,1107,3,710,355,0,1106, - 1101,1,0,0,0,1106,1107,1,0,0,0,1107,1113,1,0,0,0,1108,1110,5,553, - 0,0,1109,1111,5,857,0,0,1110,1109,1,0,0,0,1110,1111,1,0,0,0,1111, - 1112,1,0,0,0,1112,1114,3,710,355,0,1113,1108,1,0,0,0,1113,1114,1, - 0,0,0,1114,1120,1,0,0,0,1115,1117,5,504,0,0,1116,1118,5,857,0,0, - 1117,1116,1,0,0,0,1117,1118,1,0,0,0,1118,1119,1,0,0,0,1119,1121, - 3,702,351,0,1120,1115,1,0,0,0,1120,1121,1,0,0,0,1121,1123,1,0,0, - 0,1122,1124,5,687,0,0,1123,1122,1,0,0,0,1123,1124,1,0,0,0,1124,1130, - 1,0,0,0,1125,1127,5,340,0,0,1126,1128,5,857,0,0,1127,1126,1,0,0, - 0,1127,1128,1,0,0,0,1128,1129,1,0,0,0,1129,1131,5,882,0,0,1130,1125, - 1,0,0,0,1130,1131,1,0,0,0,1131,1132,1,0,0,0,1132,1134,5,380,0,0, - 1133,1135,5,857,0,0,1134,1133,1,0,0,0,1134,1135,1,0,0,0,1135,1136, - 1,0,0,0,1136,1137,3,688,344,0,1137,31,1,0,0,0,1138,1140,5,34,0,0, - 1139,1141,3,58,29,0,1140,1139,1,0,0,0,1140,1141,1,0,0,0,1141,1142, - 1,0,0,0,1142,1144,5,132,0,0,1143,1145,3,756,378,0,1144,1143,1,0, - 0,0,1144,1145,1,0,0,0,1145,1146,1,0,0,0,1146,1147,3,698,349,0,1147, - 1149,5,866,0,0,1148,1150,3,74,37,0,1149,1148,1,0,0,0,1149,1150,1, - 0,0,0,1150,1155,1,0,0,0,1151,1152,5,868,0,0,1152,1154,3,74,37,0, - 1153,1151,1,0,0,0,1154,1157,1,0,0,0,1155,1153,1,0,0,0,1155,1156, - 1,0,0,0,1156,1158,1,0,0,0,1157,1155,1,0,0,0,1158,1162,5,867,0,0, - 1159,1161,3,76,38,0,1160,1159,1,0,0,0,1161,1164,1,0,0,0,1162,1160, - 1,0,0,0,1162,1163,1,0,0,0,1163,1165,1,0,0,0,1164,1162,1,0,0,0,1165, - 1166,3,416,208,0,1166,33,1,0,0,0,1167,1168,5,34,0,0,1168,1170,5, - 582,0,0,1169,1171,3,756,378,0,1170,1169,1,0,0,0,1170,1171,1,0,0, - 0,1171,1172,1,0,0,0,1172,1173,3,650,325,0,1173,35,1,0,0,0,1174,1175, - 5,34,0,0,1175,1176,5,592,0,0,1176,1177,3,702,351,0,1177,1178,5,67, - 0,0,1178,1179,5,360,0,0,1179,1180,5,692,0,0,1180,1181,7,5,0,0,1181, - 1182,5,518,0,0,1182,1183,5,866,0,0,1183,1188,3,78,39,0,1184,1185, - 5,868,0,0,1185,1187,3,78,39,0,1186,1184,1,0,0,0,1187,1190,1,0,0, - 0,1188,1186,1,0,0,0,1188,1189,1,0,0,0,1189,1191,1,0,0,0,1190,1188, - 1,0,0,0,1191,1192,5,867,0,0,1192,37,1,0,0,0,1193,1195,5,34,0,0,1194, - 1196,5,660,0,0,1195,1194,1,0,0,0,1195,1196,1,0,0,0,1196,1197,1,0, - 0,0,1197,1199,5,173,0,0,1198,1200,3,756,378,0,1199,1198,1,0,0,0, - 1199,1200,1,0,0,0,1200,1201,1,0,0,0,1201,1203,3,644,322,0,1202,1204, - 3,80,40,0,1203,1202,1,0,0,0,1203,1204,1,0,0,0,1204,1215,1,0,0,0, - 1205,1212,3,98,49,0,1206,1208,5,868,0,0,1207,1206,1,0,0,0,1207,1208, - 1,0,0,0,1208,1209,1,0,0,0,1209,1211,3,98,49,0,1210,1207,1,0,0,0, - 1211,1214,1,0,0,0,1212,1210,1,0,0,0,1212,1213,1,0,0,0,1213,1216, - 1,0,0,0,1214,1212,1,0,0,0,1215,1205,1,0,0,0,1215,1216,1,0,0,0,1216, - 1218,1,0,0,0,1217,1219,3,104,52,0,1218,1217,1,0,0,0,1218,1219,1, - 0,0,0,1219,1221,1,0,0,0,1220,1222,7,6,0,0,1221,1220,1,0,0,0,1221, - 1222,1,0,0,0,1222,1224,1,0,0,0,1223,1225,5,13,0,0,1224,1223,1,0, - 0,0,1224,1225,1,0,0,0,1225,1226,1,0,0,0,1226,1227,3,204,102,0,1227, - 1272,1,0,0,0,1228,1230,5,34,0,0,1229,1231,5,660,0,0,1230,1229,1, - 0,0,0,1230,1231,1,0,0,0,1231,1232,1,0,0,0,1232,1234,5,173,0,0,1233, - 1235,3,756,378,0,1234,1233,1,0,0,0,1234,1235,1,0,0,0,1235,1236,1, - 0,0,0,1236,1244,3,644,322,0,1237,1238,5,99,0,0,1238,1245,3,648,324, - 0,1239,1240,5,866,0,0,1240,1241,5,99,0,0,1241,1242,3,648,324,0,1242, - 1243,5,867,0,0,1243,1245,1,0,0,0,1244,1237,1,0,0,0,1244,1239,1,0, - 0,0,1245,1272,1,0,0,0,1246,1248,5,34,0,0,1247,1249,5,660,0,0,1248, - 1247,1,0,0,0,1248,1249,1,0,0,0,1249,1250,1,0,0,0,1250,1252,5,173, - 0,0,1251,1253,3,756,378,0,1252,1251,1,0,0,0,1252,1253,1,0,0,0,1253, - 1254,1,0,0,0,1254,1255,3,644,322,0,1255,1266,3,80,40,0,1256,1263, - 3,98,49,0,1257,1259,5,868,0,0,1258,1257,1,0,0,0,1258,1259,1,0,0, - 0,1259,1260,1,0,0,0,1260,1262,3,98,49,0,1261,1258,1,0,0,0,1262,1265, - 1,0,0,0,1263,1261,1,0,0,0,1263,1264,1,0,0,0,1264,1267,1,0,0,0,1265, - 1263,1,0,0,0,1266,1256,1,0,0,0,1266,1267,1,0,0,0,1267,1269,1,0,0, - 0,1268,1270,3,104,52,0,1269,1268,1,0,0,0,1269,1270,1,0,0,0,1270, - 1272,1,0,0,0,1271,1193,1,0,0,0,1271,1228,1,0,0,0,1271,1246,1,0,0, - 0,1272,39,1,0,0,0,1273,1275,5,34,0,0,1274,1276,5,180,0,0,1275,1274, - 1,0,0,0,1275,1276,1,0,0,0,1276,1277,1,0,0,0,1277,1278,5,658,0,0, - 1278,1282,3,660,330,0,1279,1280,5,6,0,0,1280,1281,5,361,0,0,1281, - 1283,5,882,0,0,1282,1279,1,0,0,0,1282,1283,1,0,0,0,1283,1289,1,0, - 0,0,1284,1286,5,314,0,0,1285,1287,5,857,0,0,1286,1285,1,0,0,0,1286, - 1287,1,0,0,0,1287,1288,1,0,0,0,1288,1290,3,710,355,0,1289,1284,1, - 0,0,0,1289,1290,1,0,0,0,1290,1294,1,0,0,0,1291,1292,5,399,0,0,1292, - 1293,5,857,0,0,1293,1295,3,710,355,0,1294,1291,1,0,0,0,1294,1295, - 1,0,0,0,1295,1301,1,0,0,0,1296,1298,5,380,0,0,1297,1299,5,857,0, - 0,1298,1297,1,0,0,0,1298,1299,1,0,0,0,1299,1300,1,0,0,0,1300,1302, - 3,688,344,0,1301,1296,1,0,0,0,1301,1302,1,0,0,0,1302,1308,1,0,0, - 0,1303,1305,5,825,0,0,1304,1306,5,857,0,0,1305,1304,1,0,0,0,1305, - 1306,1,0,0,0,1306,1307,1,0,0,0,1307,1309,5,882,0,0,1308,1303,1,0, - 0,0,1308,1309,1,0,0,0,1309,41,1,0,0,0,1310,1312,5,34,0,0,1311,1313, - 5,180,0,0,1312,1311,1,0,0,0,1312,1313,1,0,0,0,1313,1314,1,0,0,0, - 1314,1315,5,658,0,0,1315,1316,3,660,330,0,1316,1317,5,6,0,0,1317, - 1318,5,361,0,0,1318,1319,5,882,0,0,1319,1320,5,187,0,0,1320,1321, - 5,451,0,0,1321,1322,5,74,0,0,1322,1328,3,702,351,0,1323,1325,5,393, - 0,0,1324,1326,5,857,0,0,1325,1324,1,0,0,0,1325,1326,1,0,0,0,1326, - 1327,1,0,0,0,1327,1329,3,710,355,0,1328,1323,1,0,0,0,1328,1329,1, - 0,0,0,1329,1335,1,0,0,0,1330,1332,5,428,0,0,1331,1333,5,857,0,0, - 1332,1331,1,0,0,0,1332,1333,1,0,0,0,1333,1334,1,0,0,0,1334,1336, - 3,710,355,0,1335,1330,1,0,0,0,1335,1336,1,0,0,0,1336,1342,1,0,0, - 0,1337,1339,5,314,0,0,1338,1340,5,857,0,0,1339,1338,1,0,0,0,1339, - 1340,1,0,0,0,1340,1341,1,0,0,0,1341,1343,3,710,355,0,1342,1337,1, - 0,0,0,1342,1343,1,0,0,0,1343,1349,1,0,0,0,1344,1346,5,481,0,0,1345, - 1347,5,857,0,0,1346,1345,1,0,0,0,1346,1347,1,0,0,0,1347,1348,1,0, - 0,0,1348,1350,3,710,355,0,1349,1344,1,0,0,0,1349,1350,1,0,0,0,1350, - 1356,1,0,0,0,1351,1353,5,504,0,0,1352,1354,5,857,0,0,1353,1352,1, - 0,0,0,1353,1354,1,0,0,0,1354,1355,1,0,0,0,1355,1357,3,702,351,0, - 1356,1351,1,0,0,0,1356,1357,1,0,0,0,1357,1359,1,0,0,0,1358,1360, - 5,687,0,0,1359,1358,1,0,0,0,1359,1360,1,0,0,0,1360,1366,1,0,0,0, - 1361,1363,5,340,0,0,1362,1364,5,857,0,0,1363,1362,1,0,0,0,1363,1364, - 1,0,0,0,1364,1365,1,0,0,0,1365,1367,5,882,0,0,1366,1361,1,0,0,0, - 1366,1367,1,0,0,0,1367,1368,1,0,0,0,1368,1370,5,380,0,0,1369,1371, - 5,857,0,0,1370,1369,1,0,0,0,1370,1371,1,0,0,0,1371,1372,1,0,0,0, - 1372,1373,3,688,344,0,1373,43,1,0,0,0,1374,1376,5,34,0,0,1375,1377, - 3,58,29,0,1376,1375,1,0,0,0,1376,1377,1,0,0,0,1377,1378,1,0,0,0, - 1378,1380,5,178,0,0,1379,1381,3,756,378,0,1380,1379,1,0,0,0,1380, - 1381,1,0,0,0,1381,1382,1,0,0,0,1382,1383,3,698,349,0,1383,1384,7, - 7,0,0,1384,1385,7,8,0,0,1385,1386,5,119,0,0,1386,1387,3,648,324, - 0,1387,1388,5,65,0,0,1388,1389,5,52,0,0,1389,1392,5,586,0,0,1390, - 1391,7,9,0,0,1391,1393,3,698,349,0,1392,1390,1,0,0,0,1392,1393,1, - 0,0,0,1393,1394,1,0,0,0,1394,1395,3,416,208,0,1395,45,1,0,0,0,1396, - 1398,5,194,0,0,1397,1399,5,552,0,0,1398,1397,1,0,0,0,1398,1399,1, - 0,0,0,1399,1400,1,0,0,0,1400,1401,3,48,24,0,1401,47,1,0,0,0,1402, - 1414,3,702,351,0,1403,1404,5,866,0,0,1404,1409,3,702,351,0,1405, - 1406,5,868,0,0,1406,1408,3,702,351,0,1407,1405,1,0,0,0,1408,1411, - 1,0,0,0,1409,1407,1,0,0,0,1409,1410,1,0,0,0,1410,1412,1,0,0,0,1411, - 1409,1,0,0,0,1412,1413,5,867,0,0,1413,1415,1,0,0,0,1414,1403,1,0, - 0,0,1414,1415,1,0,0,0,1415,1416,1,0,0,0,1416,1417,5,13,0,0,1417, - 1418,5,866,0,0,1418,1419,3,10,5,0,1419,1422,5,867,0,0,1420,1421, - 5,868,0,0,1421,1423,3,48,24,0,1422,1420,1,0,0,0,1422,1423,1,0,0, - 0,1423,49,1,0,0,0,1424,1426,5,34,0,0,1425,1427,3,758,379,0,1426, - 1425,1,0,0,0,1426,1427,1,0,0,0,1427,1431,1,0,0,0,1428,1429,5,308, - 0,0,1429,1430,5,857,0,0,1430,1432,7,10,0,0,1431,1428,1,0,0,0,1431, - 1432,1,0,0,0,1432,1434,1,0,0,0,1433,1435,3,58,29,0,1434,1433,1,0, - 0,0,1434,1435,1,0,0,0,1435,1439,1,0,0,0,1436,1437,5,162,0,0,1437, - 1438,5,591,0,0,1438,1440,7,11,0,0,1439,1436,1,0,0,0,1439,1440,1, - 0,0,0,1440,1441,1,0,0,0,1441,1442,5,684,0,0,1442,1454,3,630,315, - 0,1443,1444,5,866,0,0,1444,1449,3,654,327,0,1445,1446,5,868,0,0, - 1446,1448,3,654,327,0,1447,1445,1,0,0,0,1448,1451,1,0,0,0,1449,1447, - 1,0,0,0,1449,1450,1,0,0,0,1450,1452,1,0,0,0,1451,1449,1,0,0,0,1452, - 1453,5,867,0,0,1453,1455,1,0,0,0,1454,1443,1,0,0,0,1454,1455,1,0, - 0,0,1455,1456,1,0,0,0,1456,1476,5,13,0,0,1457,1459,5,866,0,0,1458, - 1460,3,46,23,0,1459,1458,1,0,0,0,1459,1460,1,0,0,0,1460,1461,1,0, - 0,0,1461,1462,3,204,102,0,1462,1463,5,867,0,0,1463,1477,1,0,0,0, - 1464,1466,3,46,23,0,1465,1464,1,0,0,0,1465,1466,1,0,0,0,1466,1467, - 1,0,0,0,1467,1474,3,204,102,0,1468,1470,5,194,0,0,1469,1471,7,12, - 0,0,1470,1469,1,0,0,0,1470,1471,1,0,0,0,1471,1472,1,0,0,0,1472,1473, - 5,27,0,0,1473,1475,5,121,0,0,1474,1468,1,0,0,0,1474,1475,1,0,0,0, - 1475,1477,1,0,0,0,1476,1457,1,0,0,0,1476,1465,1,0,0,0,1477,51,1, - 0,0,0,1478,1480,5,42,0,0,1479,1478,1,0,0,0,1479,1480,1,0,0,0,1480, - 1481,1,0,0,0,1481,1483,3,54,27,0,1482,1484,5,857,0,0,1483,1482,1, - 0,0,0,1483,1484,1,0,0,0,1484,1487,1,0,0,0,1485,1488,3,684,342,0, - 1486,1488,5,42,0,0,1487,1485,1,0,0,0,1487,1486,1,0,0,0,1488,1512, - 1,0,0,0,1489,1491,5,42,0,0,1490,1489,1,0,0,0,1490,1491,1,0,0,0,1491, - 1492,1,0,0,0,1492,1494,5,28,0,0,1493,1495,5,857,0,0,1494,1493,1, - 0,0,0,1494,1495,1,0,0,0,1495,1496,1,0,0,0,1496,1512,3,686,343,0, - 1497,1499,5,42,0,0,1498,1497,1,0,0,0,1498,1499,1,0,0,0,1499,1500, - 1,0,0,0,1500,1502,5,376,0,0,1501,1503,5,857,0,0,1502,1501,1,0,0, - 0,1502,1503,1,0,0,0,1503,1504,1,0,0,0,1504,1512,5,882,0,0,1505,1506, - 5,135,0,0,1506,1508,5,515,0,0,1507,1509,5,857,0,0,1508,1507,1,0, - 0,0,1508,1509,1,0,0,0,1509,1510,1,0,0,0,1510,1512,7,13,0,0,1511, - 1479,1,0,0,0,1511,1490,1,0,0,0,1511,1498,1,0,0,0,1511,1505,1,0,0, - 0,1512,53,1,0,0,0,1513,1514,5,26,0,0,1514,1519,5,155,0,0,1515,1519, - 5,823,0,0,1516,1517,5,224,0,0,1517,1519,5,155,0,0,1518,1513,1,0, - 0,0,1518,1515,1,0,0,0,1518,1516,1,0,0,0,1519,55,1,0,0,0,1520,1523, - 7,14,0,0,1521,1522,5,866,0,0,1522,1524,5,867,0,0,1523,1521,1,0,0, - 0,1523,1524,1,0,0,0,1524,57,1,0,0,0,1525,1526,5,364,0,0,1526,1529, - 5,857,0,0,1527,1530,3,680,340,0,1528,1530,3,56,28,0,1529,1527,1, - 0,0,0,1529,1528,1,0,0,0,1530,59,1,0,0,0,1531,1532,5,311,0,0,1532, - 1536,3,62,31,0,1533,1535,3,64,32,0,1534,1533,1,0,0,0,1535,1538,1, - 0,0,0,1536,1534,1,0,0,0,1536,1537,1,0,0,0,1537,1566,1,0,0,0,1538, - 1536,1,0,0,0,1539,1542,5,387,0,0,1540,1543,3,708,354,0,1541,1543, - 3,800,400,0,1542,1540,1,0,0,0,1542,1541,1,0,0,0,1543,1544,1,0,0, - 0,1544,1553,3,66,33,0,1545,1546,5,641,0,0,1546,1550,3,62,31,0,1547, - 1549,3,64,32,0,1548,1547,1,0,0,0,1549,1552,1,0,0,0,1550,1548,1,0, - 0,0,1550,1551,1,0,0,0,1551,1554,1,0,0,0,1552,1550,1,0,0,0,1553,1545, - 1,0,0,0,1553,1554,1,0,0,0,1554,1563,1,0,0,0,1555,1556,5,379,0,0, - 1556,1560,3,62,31,0,1557,1559,3,64,32,0,1558,1557,1,0,0,0,1559,1562, - 1,0,0,0,1560,1558,1,0,0,0,1560,1561,1,0,0,0,1561,1564,1,0,0,0,1562, - 1560,1,0,0,0,1563,1555,1,0,0,0,1563,1564,1,0,0,0,1564,1566,1,0,0, - 0,1565,1531,1,0,0,0,1565,1539,1,0,0,0,1566,61,1,0,0,0,1567,1572, - 5,287,0,0,1568,1572,3,712,356,0,1569,1572,3,708,354,0,1570,1572, - 3,800,400,0,1571,1567,1,0,0,0,1571,1568,1,0,0,0,1571,1569,1,0,0, - 0,1571,1570,1,0,0,0,1572,63,1,0,0,0,1573,1574,5,853,0,0,1574,1577, - 5,87,0,0,1575,1578,3,708,354,0,1576,1578,3,800,400,0,1577,1575,1, - 0,0,0,1577,1576,1,0,0,0,1578,1579,1,0,0,0,1579,1580,3,66,33,0,1580, - 65,1,0,0,0,1581,1595,3,826,413,0,1582,1595,5,223,0,0,1583,1595,5, - 242,0,0,1584,1595,5,243,0,0,1585,1595,5,244,0,0,1586,1595,5,245, - 0,0,1587,1595,5,246,0,0,1588,1595,5,247,0,0,1589,1595,5,248,0,0, - 1590,1595,5,249,0,0,1591,1595,5,250,0,0,1592,1595,5,251,0,0,1593, - 1595,5,252,0,0,1594,1581,1,0,0,0,1594,1582,1,0,0,0,1594,1583,1,0, - 0,0,1594,1584,1,0,0,0,1594,1585,1,0,0,0,1594,1586,1,0,0,0,1594,1587, - 1,0,0,0,1594,1588,1,0,0,0,1594,1589,1,0,0,0,1594,1590,1,0,0,0,1594, - 1591,1,0,0,0,1594,1592,1,0,0,0,1594,1593,1,0,0,0,1595,67,1,0,0,0, - 1596,1602,5,375,0,0,1597,1602,5,368,0,0,1598,1599,5,368,0,0,1599, - 1600,5,119,0,0,1600,1602,5,598,0,0,1601,1596,1,0,0,0,1601,1597,1, - 0,0,0,1601,1598,1,0,0,0,1602,69,1,0,0,0,1603,1604,5,188,0,0,1604, - 1605,7,15,0,0,1605,71,1,0,0,0,1606,1608,5,443,0,0,1607,1609,5,857, - 0,0,1608,1607,1,0,0,0,1608,1609,1,0,0,0,1609,1610,1,0,0,0,1610,1629, - 3,710,355,0,1611,1629,3,70,35,0,1612,1613,5,194,0,0,1613,1614,5, - 525,0,0,1614,1629,3,702,351,0,1615,1616,5,340,0,0,1616,1629,5,882, - 0,0,1617,1629,7,16,0,0,1618,1620,5,825,0,0,1619,1621,5,857,0,0,1620, - 1619,1,0,0,0,1620,1621,1,0,0,0,1621,1622,1,0,0,0,1622,1629,5,882, - 0,0,1623,1625,5,833,0,0,1624,1626,5,857,0,0,1625,1624,1,0,0,0,1625, - 1626,1,0,0,0,1626,1627,1,0,0,0,1627,1629,5,882,0,0,1628,1606,1,0, - 0,0,1628,1611,1,0,0,0,1628,1612,1,0,0,0,1628,1615,1,0,0,0,1628,1617, - 1,0,0,0,1628,1618,1,0,0,0,1628,1623,1,0,0,0,1629,73,1,0,0,0,1630, - 1632,7,17,0,0,1631,1630,1,0,0,0,1631,1632,1,0,0,0,1632,1633,1,0, - 0,0,1633,1634,3,702,351,0,1634,1635,3,722,361,0,1635,75,1,0,0,0, - 1636,1637,5,340,0,0,1637,1660,5,882,0,0,1638,1639,5,444,0,0,1639, - 1660,5,162,0,0,1640,1642,5,114,0,0,1641,1640,1,0,0,0,1641,1642,1, - 0,0,0,1642,1643,1,0,0,0,1643,1660,5,47,0,0,1644,1645,5,354,0,0,1645, - 1655,5,162,0,0,1646,1647,5,502,0,0,1647,1655,5,162,0,0,1648,1649, - 5,136,0,0,1649,1650,5,162,0,0,1650,1655,5,360,0,0,1651,1652,5,112, - 0,0,1652,1653,5,162,0,0,1653,1655,5,360,0,0,1654,1644,1,0,0,0,1654, - 1646,1,0,0,0,1654,1648,1,0,0,0,1654,1651,1,0,0,0,1655,1660,1,0,0, - 0,1656,1657,5,162,0,0,1657,1658,5,591,0,0,1658,1660,7,11,0,0,1659, - 1636,1,0,0,0,1659,1638,1,0,0,0,1659,1641,1,0,0,0,1659,1654,1,0,0, - 0,1659,1656,1,0,0,0,1660,77,1,0,0,0,1661,1662,5,421,0,0,1662,1676, - 5,882,0,0,1663,1664,5,39,0,0,1664,1676,5,882,0,0,1665,1666,5,678, - 0,0,1666,1676,5,882,0,0,1667,1668,5,529,0,0,1668,1676,5,882,0,0, - 1669,1670,5,601,0,0,1670,1676,5,882,0,0,1671,1672,5,519,0,0,1672, - 1676,5,882,0,0,1673,1674,5,537,0,0,1674,1676,3,708,354,0,1675,1661, - 1,0,0,0,1675,1663,1,0,0,0,1675,1665,1,0,0,0,1675,1667,1,0,0,0,1675, - 1669,1,0,0,0,1675,1671,1,0,0,0,1675,1673,1,0,0,0,1676,79,1,0,0,0, - 1677,1678,5,866,0,0,1678,1683,3,82,41,0,1679,1680,5,868,0,0,1680, - 1682,3,82,41,0,1681,1679,1,0,0,0,1682,1685,1,0,0,0,1683,1681,1,0, - 0,0,1683,1684,1,0,0,0,1684,1686,1,0,0,0,1685,1683,1,0,0,0,1686,1687, - 5,867,0,0,1687,81,1,0,0,0,1688,1689,3,654,327,0,1689,1690,3,88,44, - 0,1690,1772,1,0,0,0,1691,1693,7,18,0,0,1692,1694,3,638,319,0,1693, - 1692,1,0,0,0,1693,1694,1,0,0,0,1694,1696,1,0,0,0,1695,1697,3,70, - 35,0,1696,1695,1,0,0,0,1696,1697,1,0,0,0,1697,1698,1,0,0,0,1698, - 1702,3,734,367,0,1699,1701,3,72,36,0,1700,1699,1,0,0,0,1701,1704, - 1,0,0,0,1702,1700,1,0,0,0,1702,1703,1,0,0,0,1703,1772,1,0,0,0,1704, - 1702,1,0,0,0,1705,1707,7,19,0,0,1706,1708,7,18,0,0,1707,1706,1,0, - 0,0,1707,1708,1,0,0,0,1708,1710,1,0,0,0,1709,1711,3,638,319,0,1710, - 1709,1,0,0,0,1710,1711,1,0,0,0,1711,1712,1,0,0,0,1712,1716,3,734, - 367,0,1713,1715,3,72,36,0,1714,1713,1,0,0,0,1715,1718,1,0,0,0,1716, - 1714,1,0,0,0,1716,1717,1,0,0,0,1717,1772,1,0,0,0,1718,1716,1,0,0, - 0,1719,1721,3,86,43,0,1720,1719,1,0,0,0,1720,1721,1,0,0,0,1721,1722, - 1,0,0,0,1722,1723,5,131,0,0,1723,1725,5,92,0,0,1724,1726,3,70,35, - 0,1725,1724,1,0,0,0,1725,1726,1,0,0,0,1726,1727,1,0,0,0,1727,1731, - 3,734,367,0,1728,1730,3,72,36,0,1729,1728,1,0,0,0,1730,1733,1,0, - 0,0,1731,1729,1,0,0,0,1731,1732,1,0,0,0,1732,1772,1,0,0,0,1733,1731, - 1,0,0,0,1734,1736,3,86,43,0,1735,1734,1,0,0,0,1735,1736,1,0,0,0, - 1736,1737,1,0,0,0,1737,1739,5,182,0,0,1738,1740,7,18,0,0,1739,1738, - 1,0,0,0,1739,1740,1,0,0,0,1740,1742,1,0,0,0,1741,1743,3,638,319, - 0,1742,1741,1,0,0,0,1742,1743,1,0,0,0,1743,1745,1,0,0,0,1744,1746, - 3,70,35,0,1745,1744,1,0,0,0,1745,1746,1,0,0,0,1746,1747,1,0,0,0, - 1747,1751,3,734,367,0,1748,1750,3,72,36,0,1749,1748,1,0,0,0,1750, - 1753,1,0,0,0,1751,1749,1,0,0,0,1751,1752,1,0,0,0,1752,1772,1,0,0, - 0,1753,1751,1,0,0,0,1754,1756,3,86,43,0,1755,1754,1,0,0,0,1755,1756, - 1,0,0,0,1756,1757,1,0,0,0,1757,1758,5,67,0,0,1758,1760,5,92,0,0, - 1759,1761,3,638,319,0,1760,1759,1,0,0,0,1760,1761,1,0,0,0,1761,1762, - 1,0,0,0,1762,1763,3,734,367,0,1763,1764,3,92,46,0,1764,1772,1,0, - 0,0,1765,1766,5,27,0,0,1766,1767,5,866,0,0,1767,1768,3,800,400,0, - 1768,1769,5,867,0,0,1769,1772,1,0,0,0,1770,1772,3,84,42,0,1771,1688, - 1,0,0,0,1771,1691,1,0,0,0,1771,1705,1,0,0,0,1771,1720,1,0,0,0,1771, - 1735,1,0,0,0,1771,1755,1,0,0,0,1771,1765,1,0,0,0,1771,1770,1,0,0, - 0,1772,83,1,0,0,0,1773,1775,3,86,43,0,1774,1773,1,0,0,0,1774,1775, - 1,0,0,0,1775,1776,1,0,0,0,1776,1777,5,27,0,0,1777,1778,5,866,0,0, - 1778,1779,3,800,400,0,1779,1784,5,867,0,0,1780,1782,5,114,0,0,1781, - 1780,1,0,0,0,1781,1782,1,0,0,0,1782,1783,1,0,0,0,1783,1785,5,57, - 0,0,1784,1781,1,0,0,0,1784,1785,1,0,0,0,1785,85,1,0,0,0,1786,1788, - 5,31,0,0,1787,1789,3,702,351,0,1788,1787,1,0,0,0,1788,1789,1,0,0, - 0,1789,87,1,0,0,0,1790,1794,3,722,361,0,1791,1793,3,90,45,0,1792, - 1791,1,0,0,0,1793,1796,1,0,0,0,1794,1792,1,0,0,0,1794,1795,1,0,0, - 0,1795,89,1,0,0,0,1796,1794,1,0,0,0,1797,1841,3,718,359,0,1798,1799, - 5,42,0,0,1799,1841,3,750,375,0,1800,1841,5,686,0,0,1801,1841,5,435, - 0,0,1802,1807,5,315,0,0,1803,1804,5,119,0,0,1804,1805,5,185,0,0, - 1805,1807,3,752,376,0,1806,1802,1,0,0,0,1806,1803,1,0,0,0,1807,1841, - 1,0,0,0,1808,1810,5,131,0,0,1809,1808,1,0,0,0,1809,1810,1,0,0,0, - 1810,1811,1,0,0,0,1811,1841,5,92,0,0,1812,1814,5,182,0,0,1813,1815, - 5,92,0,0,1814,1813,1,0,0,0,1814,1815,1,0,0,0,1815,1841,1,0,0,0,1816, - 1817,5,340,0,0,1817,1841,5,882,0,0,1818,1819,5,338,0,0,1819,1841, - 7,20,0,0,1820,1821,5,647,0,0,1821,1841,7,21,0,0,1822,1841,3,92,46, - 0,1823,1824,5,28,0,0,1824,1841,3,686,343,0,1825,1826,5,71,0,0,1826, - 1828,5,9,0,0,1827,1825,1,0,0,0,1827,1828,1,0,0,0,1828,1829,1,0,0, - 0,1829,1830,5,13,0,0,1830,1831,5,866,0,0,1831,1832,3,800,400,0,1832, - 1834,5,867,0,0,1833,1835,7,22,0,0,1834,1833,1,0,0,0,1834,1835,1, - 0,0,0,1835,1841,1,0,0,0,1836,1837,5,241,0,0,1837,1838,5,42,0,0,1838, - 1841,5,682,0,0,1839,1841,3,84,42,0,1840,1797,1,0,0,0,1840,1798,1, - 0,0,0,1840,1800,1,0,0,0,1840,1801,1,0,0,0,1840,1806,1,0,0,0,1840, - 1809,1,0,0,0,1840,1812,1,0,0,0,1840,1816,1,0,0,0,1840,1818,1,0,0, - 0,1840,1820,1,0,0,0,1840,1822,1,0,0,0,1840,1823,1,0,0,0,1840,1827, - 1,0,0,0,1840,1836,1,0,0,0,1840,1839,1,0,0,0,1841,91,1,0,0,0,1842, - 1843,5,138,0,0,1843,1845,3,648,324,0,1844,1846,3,734,367,0,1845, - 1844,1,0,0,0,1845,1846,1,0,0,0,1846,1849,1,0,0,0,1847,1848,5,110, - 0,0,1848,1850,7,23,0,0,1849,1847,1,0,0,0,1849,1850,1,0,0,0,1850, - 1852,1,0,0,0,1851,1853,3,94,47,0,1852,1851,1,0,0,0,1852,1853,1,0, - 0,0,1853,93,1,0,0,0,1854,1855,5,119,0,0,1855,1856,5,44,0,0,1856, - 1860,3,96,48,0,1857,1858,5,119,0,0,1858,1859,5,185,0,0,1859,1861, - 3,96,48,0,1860,1857,1,0,0,0,1860,1861,1,0,0,0,1861,1871,1,0,0,0, - 1862,1863,5,119,0,0,1863,1864,5,185,0,0,1864,1868,3,96,48,0,1865, - 1866,5,119,0,0,1866,1867,5,44,0,0,1867,1869,3,96,48,0,1868,1865, - 1,0,0,0,1868,1869,1,0,0,0,1869,1871,1,0,0,0,1870,1854,1,0,0,0,1870, - 1862,1,0,0,0,1871,95,1,0,0,0,1872,1881,5,146,0,0,1873,1881,5,22, - 0,0,1874,1875,5,155,0,0,1875,1881,5,116,0,0,1876,1877,5,502,0,0, - 1877,1881,5,305,0,0,1878,1879,5,155,0,0,1879,1881,5,42,0,0,1880, - 1872,1,0,0,0,1880,1873,1,0,0,0,1880,1874,1,0,0,0,1880,1876,1,0,0, - 0,1880,1878,1,0,0,0,1881,97,1,0,0,0,1882,1884,5,380,0,0,1883,1885, - 5,857,0,0,1884,1883,1,0,0,0,1884,1885,1,0,0,0,1885,1887,1,0,0,0, - 1886,1888,3,688,344,0,1887,1886,1,0,0,0,1887,1888,1,0,0,0,1888,2068, - 1,0,0,0,1889,1891,5,825,0,0,1890,1892,5,857,0,0,1891,1890,1,0,0, - 0,1891,1892,1,0,0,0,1892,1893,1,0,0,0,1893,2068,5,882,0,0,1894,1896, - 5,314,0,0,1895,1897,5,857,0,0,1896,1895,1,0,0,0,1896,1897,1,0,0, - 0,1897,1898,1,0,0,0,1898,2068,3,708,354,0,1899,1901,5,315,0,0,1900, - 1902,5,857,0,0,1901,1900,1,0,0,0,1901,1902,1,0,0,0,1902,1903,1,0, - 0,0,1903,2068,3,708,354,0,1904,1906,5,316,0,0,1905,1907,5,857,0, - 0,1906,1905,1,0,0,0,1906,1907,1,0,0,0,1907,1908,1,0,0,0,1908,2068, - 3,708,354,0,1909,1911,5,42,0,0,1910,1909,1,0,0,0,1910,1911,1,0,0, - 0,1911,1912,1,0,0,0,1912,1914,3,54,27,0,1913,1915,5,857,0,0,1914, - 1913,1,0,0,0,1914,1915,1,0,0,0,1915,1918,1,0,0,0,1916,1919,3,684, - 342,0,1917,1919,5,42,0,0,1918,1916,1,0,0,0,1918,1917,1,0,0,0,1919, - 2068,1,0,0,0,1920,1922,7,24,0,0,1921,1923,5,857,0,0,1922,1921,1, - 0,0,0,1922,1923,1,0,0,0,1923,1924,1,0,0,0,1924,2068,7,25,0,0,1925, - 1927,5,42,0,0,1926,1925,1,0,0,0,1926,1927,1,0,0,0,1927,1928,1,0, - 0,0,1928,1930,5,28,0,0,1929,1931,5,857,0,0,1930,1929,1,0,0,0,1930, - 1931,1,0,0,0,1931,1932,1,0,0,0,1932,2068,3,686,343,0,1933,1935,5, - 340,0,0,1934,1936,5,857,0,0,1935,1934,1,0,0,0,1935,1936,1,0,0,0, - 1936,1937,1,0,0,0,1937,2068,5,882,0,0,1938,1940,5,346,0,0,1939,1941, - 5,857,0,0,1940,1939,1,0,0,0,1940,1941,1,0,0,0,1941,1942,1,0,0,0, - 1942,2068,7,26,0,0,1943,1945,5,349,0,0,1944,1946,5,857,0,0,1945, - 1944,1,0,0,0,1945,1946,1,0,0,0,1946,1947,1,0,0,0,1947,2068,5,882, - 0,0,1948,1949,7,27,0,0,1949,1951,5,367,0,0,1950,1952,5,857,0,0,1951, - 1950,1,0,0,0,1951,1952,1,0,0,0,1952,1953,1,0,0,0,1953,2068,5,882, - 0,0,1954,1956,5,365,0,0,1955,1957,5,857,0,0,1956,1955,1,0,0,0,1956, - 1957,1,0,0,0,1957,1958,1,0,0,0,1958,2068,7,25,0,0,1959,1961,5,376, - 0,0,1960,1962,5,857,0,0,1961,1960,1,0,0,0,1961,1962,1,0,0,0,1962, - 1963,1,0,0,0,1963,2068,5,882,0,0,1964,1966,7,28,0,0,1965,1967,5, - 857,0,0,1966,1965,1,0,0,0,1966,1967,1,0,0,0,1967,1968,1,0,0,0,1968, - 2068,7,25,0,0,1969,1971,7,29,0,0,1970,1972,5,857,0,0,1971,1970,1, - 0,0,0,1971,1972,1,0,0,0,1972,1973,1,0,0,0,1973,2068,3,708,354,0, - 1974,1976,5,377,0,0,1975,1977,5,857,0,0,1976,1975,1,0,0,0,1976,1977, - 1,0,0,0,1977,1978,1,0,0,0,1978,2068,3,708,354,0,1979,1980,5,82,0, - 0,1980,1982,5,367,0,0,1981,1983,5,857,0,0,1982,1981,1,0,0,0,1982, - 1983,1,0,0,0,1983,1984,1,0,0,0,1984,2068,5,882,0,0,1985,1987,5,431, - 0,0,1986,1988,5,857,0,0,1987,1986,1,0,0,0,1987,1988,1,0,0,0,1988, - 1989,1,0,0,0,1989,2068,7,30,0,0,1990,1992,5,443,0,0,1991,1993,5, - 857,0,0,1992,1991,1,0,0,0,1992,1993,1,0,0,0,1993,1994,1,0,0,0,1994, - 2068,3,710,355,0,1995,1997,5,480,0,0,1996,1998,5,857,0,0,1997,1996, - 1,0,0,0,1997,1998,1,0,0,0,1998,1999,1,0,0,0,1999,2068,3,708,354, - 0,2000,2002,5,490,0,0,2001,2003,5,857,0,0,2002,2001,1,0,0,0,2002, - 2003,1,0,0,0,2003,2004,1,0,0,0,2004,2068,3,708,354,0,2005,2007,5, - 520,0,0,2006,2008,5,857,0,0,2007,2006,1,0,0,0,2007,2008,1,0,0,0, - 2008,2009,1,0,0,0,2009,2068,7,13,0,0,2010,2012,5,529,0,0,2011,2013, - 5,857,0,0,2012,2011,1,0,0,0,2012,2013,1,0,0,0,2013,2014,1,0,0,0, - 2014,2068,5,882,0,0,2015,2017,5,588,0,0,2016,2018,5,857,0,0,2017, - 2016,1,0,0,0,2017,2018,1,0,0,0,2018,2019,1,0,0,0,2019,2068,7,31, - 0,0,2020,2021,5,640,0,0,2021,2068,5,664,0,0,2022,2024,5,833,0,0, - 2023,2025,5,857,0,0,2024,2023,1,0,0,0,2024,2025,1,0,0,0,2025,2026, - 1,0,0,0,2026,2068,5,882,0,0,2027,2029,5,642,0,0,2028,2030,5,857, - 0,0,2029,2028,1,0,0,0,2029,2030,1,0,0,0,2030,2031,1,0,0,0,2031,2068, - 7,13,0,0,2032,2034,5,643,0,0,2033,2035,5,857,0,0,2034,2033,1,0,0, - 0,2034,2035,1,0,0,0,2035,2036,1,0,0,0,2036,2068,7,13,0,0,2037,2039, - 5,644,0,0,2038,2040,5,857,0,0,2039,2038,1,0,0,0,2039,2040,1,0,0, - 0,2040,2043,1,0,0,0,2041,2044,5,42,0,0,2042,2044,3,708,354,0,2043, - 2041,1,0,0,0,2043,2042,1,0,0,0,2044,2068,1,0,0,0,2045,2046,5,658, - 0,0,2046,2048,3,662,331,0,2047,2049,3,102,51,0,2048,2047,1,0,0,0, - 2048,2049,1,0,0,0,2049,2068,1,0,0,0,2050,2051,5,659,0,0,2051,2052, - 5,857,0,0,2052,2068,3,100,50,0,2053,2068,3,102,51,0,2054,2056,5, - 665,0,0,2055,2057,5,857,0,0,2056,2055,1,0,0,0,2056,2057,1,0,0,0, - 2057,2058,1,0,0,0,2058,2068,7,25,0,0,2059,2061,5,181,0,0,2060,2062, - 5,857,0,0,2061,2060,1,0,0,0,2061,2062,1,0,0,0,2062,2063,1,0,0,0, - 2063,2064,5,866,0,0,2064,2065,3,646,323,0,2065,2066,5,867,0,0,2066, - 2068,1,0,0,0,2067,1882,1,0,0,0,2067,1889,1,0,0,0,2067,1894,1,0,0, - 0,2067,1899,1,0,0,0,2067,1904,1,0,0,0,2067,1910,1,0,0,0,2067,1920, - 1,0,0,0,2067,1926,1,0,0,0,2067,1933,1,0,0,0,2067,1938,1,0,0,0,2067, - 1943,1,0,0,0,2067,1948,1,0,0,0,2067,1954,1,0,0,0,2067,1959,1,0,0, - 0,2067,1964,1,0,0,0,2067,1969,1,0,0,0,2067,1974,1,0,0,0,2067,1979, - 1,0,0,0,2067,1985,1,0,0,0,2067,1990,1,0,0,0,2067,1995,1,0,0,0,2067, - 2000,1,0,0,0,2067,2005,1,0,0,0,2067,2010,1,0,0,0,2067,2015,1,0,0, - 0,2067,2020,1,0,0,0,2067,2022,1,0,0,0,2067,2027,1,0,0,0,2067,2032, - 1,0,0,0,2067,2037,1,0,0,0,2067,2045,1,0,0,0,2067,2050,1,0,0,0,2067, - 2053,1,0,0,0,2067,2054,1,0,0,0,2067,2059,1,0,0,0,2068,99,1,0,0,0, - 2069,2070,7,32,0,0,2070,101,1,0,0,0,2071,2072,5,647,0,0,2072,2073, - 7,21,0,0,2073,103,1,0,0,0,2074,2075,5,130,0,0,2075,2076,5,20,0,0, - 2076,2079,3,106,53,0,2077,2078,5,528,0,0,2078,2080,3,708,354,0,2079, - 2077,1,0,0,0,2079,2080,1,0,0,0,2080,2088,1,0,0,0,2081,2082,5,652, - 0,0,2082,2083,5,20,0,0,2083,2086,3,108,54,0,2084,2085,5,653,0,0, - 2085,2087,3,708,354,0,2086,2084,1,0,0,0,2086,2087,1,0,0,0,2087,2089, - 1,0,0,0,2088,2081,1,0,0,0,2088,2089,1,0,0,0,2089,2101,1,0,0,0,2090, - 2091,5,866,0,0,2091,2096,3,110,55,0,2092,2093,5,868,0,0,2093,2095, - 3,110,55,0,2094,2092,1,0,0,0,2095,2098,1,0,0,0,2096,2094,1,0,0,0, - 2096,2097,1,0,0,0,2097,2099,1,0,0,0,2098,2096,1,0,0,0,2099,2100, - 5,867,0,0,2100,2102,1,0,0,0,2101,2090,1,0,0,0,2101,2102,1,0,0,0, - 2102,105,1,0,0,0,2103,2105,5,101,0,0,2104,2103,1,0,0,0,2104,2105, - 1,0,0,0,2105,2106,1,0,0,0,2106,2107,5,418,0,0,2107,2108,5,866,0, - 0,2108,2109,3,800,400,0,2109,2110,5,867,0,0,2110,2150,1,0,0,0,2111, - 2113,5,101,0,0,2112,2111,1,0,0,0,2112,2113,1,0,0,0,2113,2114,1,0, - 0,0,2114,2118,5,92,0,0,2115,2116,5,308,0,0,2116,2117,5,857,0,0,2117, - 2119,7,33,0,0,2118,2115,1,0,0,0,2118,2119,1,0,0,0,2119,2120,1,0, - 0,0,2120,2122,5,866,0,0,2121,2123,3,656,328,0,2122,2121,1,0,0,0, - 2122,2123,1,0,0,0,2123,2124,1,0,0,0,2124,2150,5,867,0,0,2125,2135, - 5,134,0,0,2126,2127,5,866,0,0,2127,2128,3,800,400,0,2128,2129,5, - 867,0,0,2129,2136,1,0,0,0,2130,2131,5,337,0,0,2131,2132,5,866,0, - 0,2132,2133,3,656,328,0,2133,2134,5,867,0,0,2134,2136,1,0,0,0,2135, - 2126,1,0,0,0,2135,2130,1,0,0,0,2136,2150,1,0,0,0,2137,2147,5,449, - 0,0,2138,2139,5,866,0,0,2139,2140,3,800,400,0,2140,2141,5,867,0, - 0,2141,2148,1,0,0,0,2142,2143,5,337,0,0,2143,2144,5,866,0,0,2144, - 2145,3,656,328,0,2145,2146,5,867,0,0,2146,2148,1,0,0,0,2147,2138, - 1,0,0,0,2147,2142,1,0,0,0,2148,2150,1,0,0,0,2149,2104,1,0,0,0,2149, - 2112,1,0,0,0,2149,2125,1,0,0,0,2149,2137,1,0,0,0,2150,107,1,0,0, - 0,2151,2153,5,101,0,0,2152,2151,1,0,0,0,2152,2153,1,0,0,0,2153,2154, - 1,0,0,0,2154,2155,5,418,0,0,2155,2156,5,866,0,0,2156,2157,3,800, - 400,0,2157,2158,5,867,0,0,2158,2173,1,0,0,0,2159,2161,5,101,0,0, - 2160,2159,1,0,0,0,2160,2161,1,0,0,0,2161,2162,1,0,0,0,2162,2166, - 5,92,0,0,2163,2164,5,308,0,0,2164,2165,5,857,0,0,2165,2167,7,33, - 0,0,2166,2163,1,0,0,0,2166,2167,1,0,0,0,2167,2168,1,0,0,0,2168,2169, - 5,866,0,0,2169,2170,3,656,328,0,2170,2171,5,867,0,0,2171,2173,1, - 0,0,0,2172,2152,1,0,0,0,2172,2160,1,0,0,0,2173,109,1,0,0,0,2174, - 2175,5,130,0,0,2175,2176,3,668,334,0,2176,2177,5,189,0,0,2177,2178, - 5,447,0,0,2178,2179,5,662,0,0,2179,2180,5,866,0,0,2180,2185,3,112, - 56,0,2181,2182,5,868,0,0,2182,2184,3,112,56,0,2183,2181,1,0,0,0, - 2184,2187,1,0,0,0,2185,2183,1,0,0,0,2185,2186,1,0,0,0,2186,2188, - 1,0,0,0,2187,2185,1,0,0,0,2188,2192,5,867,0,0,2189,2191,3,118,59, - 0,2190,2189,1,0,0,0,2191,2194,1,0,0,0,2192,2190,1,0,0,0,2192,2193, - 1,0,0,0,2193,2206,1,0,0,0,2194,2192,1,0,0,0,2195,2196,5,866,0,0, - 2196,2201,3,116,58,0,2197,2198,5,868,0,0,2198,2200,3,116,58,0,2199, - 2197,1,0,0,0,2200,2203,1,0,0,0,2201,2199,1,0,0,0,2201,2202,1,0,0, - 0,2202,2204,1,0,0,0,2203,2201,1,0,0,0,2204,2205,5,867,0,0,2205,2207, - 1,0,0,0,2206,2195,1,0,0,0,2206,2207,1,0,0,0,2207,2321,1,0,0,0,2208, - 2209,5,130,0,0,2209,2210,3,668,334,0,2210,2211,5,189,0,0,2211,2212, - 5,447,0,0,2212,2213,5,662,0,0,2213,2217,3,112,56,0,2214,2216,3,118, - 59,0,2215,2214,1,0,0,0,2216,2219,1,0,0,0,2217,2215,1,0,0,0,2217, - 2218,1,0,0,0,2218,2231,1,0,0,0,2219,2217,1,0,0,0,2220,2221,5,866, - 0,0,2221,2226,3,116,58,0,2222,2223,5,868,0,0,2223,2225,3,116,58, - 0,2224,2222,1,0,0,0,2225,2228,1,0,0,0,2226,2224,1,0,0,0,2226,2227, - 1,0,0,0,2227,2229,1,0,0,0,2228,2226,1,0,0,0,2229,2230,5,867,0,0, - 2230,2232,1,0,0,0,2231,2220,1,0,0,0,2231,2232,1,0,0,0,2232,2321, - 1,0,0,0,2233,2234,5,130,0,0,2234,2235,3,668,334,0,2235,2236,5,189, - 0,0,2236,2237,5,80,0,0,2237,2238,5,866,0,0,2238,2243,3,112,56,0, - 2239,2240,5,868,0,0,2240,2242,3,112,56,0,2241,2239,1,0,0,0,2242, - 2245,1,0,0,0,2243,2241,1,0,0,0,2243,2244,1,0,0,0,2244,2246,1,0,0, - 0,2245,2243,1,0,0,0,2246,2250,5,867,0,0,2247,2249,3,118,59,0,2248, - 2247,1,0,0,0,2249,2252,1,0,0,0,2250,2248,1,0,0,0,2250,2251,1,0,0, - 0,2251,2264,1,0,0,0,2252,2250,1,0,0,0,2253,2254,5,866,0,0,2254,2259, - 3,116,58,0,2255,2256,5,868,0,0,2256,2258,3,116,58,0,2257,2255,1, - 0,0,0,2258,2261,1,0,0,0,2259,2257,1,0,0,0,2259,2260,1,0,0,0,2260, - 2262,1,0,0,0,2261,2259,1,0,0,0,2262,2263,5,867,0,0,2263,2265,1,0, - 0,0,2264,2253,1,0,0,0,2264,2265,1,0,0,0,2265,2321,1,0,0,0,2266,2267, - 5,130,0,0,2267,2268,3,668,334,0,2268,2269,5,189,0,0,2269,2270,5, - 80,0,0,2270,2271,5,866,0,0,2271,2276,3,114,57,0,2272,2273,5,868, - 0,0,2273,2275,3,114,57,0,2274,2272,1,0,0,0,2275,2278,1,0,0,0,2276, - 2274,1,0,0,0,2276,2277,1,0,0,0,2277,2279,1,0,0,0,2278,2276,1,0,0, - 0,2279,2283,5,867,0,0,2280,2282,3,118,59,0,2281,2280,1,0,0,0,2282, - 2285,1,0,0,0,2283,2281,1,0,0,0,2283,2284,1,0,0,0,2284,2297,1,0,0, - 0,2285,2283,1,0,0,0,2286,2287,5,866,0,0,2287,2292,3,116,58,0,2288, - 2289,5,868,0,0,2289,2291,3,116,58,0,2290,2288,1,0,0,0,2291,2294, - 1,0,0,0,2292,2290,1,0,0,0,2292,2293,1,0,0,0,2293,2295,1,0,0,0,2294, - 2292,1,0,0,0,2295,2296,5,867,0,0,2296,2298,1,0,0,0,2297,2286,1,0, - 0,0,2297,2298,1,0,0,0,2298,2321,1,0,0,0,2299,2300,5,130,0,0,2300, - 2304,3,668,334,0,2301,2303,3,118,59,0,2302,2301,1,0,0,0,2303,2306, - 1,0,0,0,2304,2302,1,0,0,0,2304,2305,1,0,0,0,2305,2318,1,0,0,0,2306, - 2304,1,0,0,0,2307,2308,5,866,0,0,2308,2313,3,116,58,0,2309,2310, - 5,868,0,0,2310,2312,3,116,58,0,2311,2309,1,0,0,0,2312,2315,1,0,0, - 0,2313,2311,1,0,0,0,2313,2314,1,0,0,0,2314,2316,1,0,0,0,2315,2313, - 1,0,0,0,2316,2317,5,867,0,0,2317,2319,1,0,0,0,2318,2307,1,0,0,0, - 2318,2319,1,0,0,0,2319,2321,1,0,0,0,2320,2174,1,0,0,0,2320,2208, - 1,0,0,0,2320,2233,1,0,0,0,2320,2266,1,0,0,0,2320,2299,1,0,0,0,2321, - 111,1,0,0,0,2322,2326,3,720,360,0,2323,2326,3,800,400,0,2324,2326, - 5,111,0,0,2325,2322,1,0,0,0,2325,2323,1,0,0,0,2325,2324,1,0,0,0, - 2326,113,1,0,0,0,2327,2328,5,866,0,0,2328,2331,3,112,56,0,2329,2330, - 5,868,0,0,2330,2332,3,112,56,0,2331,2329,1,0,0,0,2332,2333,1,0,0, - 0,2333,2331,1,0,0,0,2333,2334,1,0,0,0,2334,2335,1,0,0,0,2335,2336, - 5,867,0,0,2336,115,1,0,0,0,2337,2338,5,652,0,0,2338,2342,3,702,351, - 0,2339,2341,3,118,59,0,2340,2339,1,0,0,0,2341,2344,1,0,0,0,2342, - 2340,1,0,0,0,2342,2343,1,0,0,0,2343,117,1,0,0,0,2344,2342,1,0,0, - 0,2345,2347,5,42,0,0,2346,2345,1,0,0,0,2346,2347,1,0,0,0,2347,2349, - 1,0,0,0,2348,2350,5,647,0,0,2349,2348,1,0,0,0,2349,2350,1,0,0,0, - 2350,2351,1,0,0,0,2351,2353,5,380,0,0,2352,2354,5,857,0,0,2353,2352, - 1,0,0,0,2353,2354,1,0,0,0,2354,2355,1,0,0,0,2355,2394,3,688,344, - 0,2356,2358,5,340,0,0,2357,2359,5,857,0,0,2358,2357,1,0,0,0,2358, - 2359,1,0,0,0,2359,2360,1,0,0,0,2360,2394,5,882,0,0,2361,2362,5,360, - 0,0,2362,2364,5,367,0,0,2363,2365,5,857,0,0,2364,2363,1,0,0,0,2364, - 2365,1,0,0,0,2365,2366,1,0,0,0,2366,2394,5,882,0,0,2367,2368,5,82, - 0,0,2368,2370,5,367,0,0,2369,2371,5,857,0,0,2370,2369,1,0,0,0,2370, - 2371,1,0,0,0,2371,2372,1,0,0,0,2372,2394,5,882,0,0,2373,2375,5,480, - 0,0,2374,2376,5,857,0,0,2375,2374,1,0,0,0,2375,2376,1,0,0,0,2376, - 2377,1,0,0,0,2377,2394,3,708,354,0,2378,2380,5,490,0,0,2379,2381, - 5,857,0,0,2380,2379,1,0,0,0,2380,2381,1,0,0,0,2381,2382,1,0,0,0, - 2382,2394,3,708,354,0,2383,2385,5,658,0,0,2384,2386,5,857,0,0,2385, - 2384,1,0,0,0,2385,2386,1,0,0,0,2386,2387,1,0,0,0,2387,2394,3,662, - 331,0,2388,2390,5,504,0,0,2389,2391,5,857,0,0,2390,2389,1,0,0,0, - 2390,2391,1,0,0,0,2391,2392,1,0,0,0,2392,2394,3,702,351,0,2393,2346, - 1,0,0,0,2393,2356,1,0,0,0,2393,2361,1,0,0,0,2393,2367,1,0,0,0,2393, - 2373,1,0,0,0,2393,2378,1,0,0,0,2393,2383,1,0,0,0,2393,2388,1,0,0, - 0,2394,119,1,0,0,0,2395,2396,5,8,0,0,2396,2398,7,0,0,0,2397,2399, - 3,624,312,0,2398,2397,1,0,0,0,2398,2399,1,0,0,0,2399,2401,1,0,0, - 0,2400,2402,3,52,26,0,2401,2400,1,0,0,0,2402,2403,1,0,0,0,2403,2401, - 1,0,0,0,2403,2404,1,0,0,0,2404,2414,1,0,0,0,2405,2406,5,8,0,0,2406, - 2407,7,0,0,0,2407,2408,3,624,312,0,2408,2409,5,677,0,0,2409,2410, - 5,360,0,0,2410,2411,5,367,0,0,2411,2412,5,496,0,0,2412,2414,1,0, - 0,0,2413,2395,1,0,0,0,2413,2405,1,0,0,0,2414,121,1,0,0,0,2415,2417, - 5,8,0,0,2416,2418,3,58,29,0,2417,2416,1,0,0,0,2417,2418,1,0,0,0, - 2418,2419,1,0,0,0,2419,2420,5,385,0,0,2420,2424,3,698,349,0,2421, - 2422,5,119,0,0,2422,2423,5,590,0,0,2423,2425,3,60,30,0,2424,2421, - 1,0,0,0,2424,2425,1,0,0,0,2425,2432,1,0,0,0,2426,2427,5,119,0,0, - 2427,2429,5,343,0,0,2428,2430,5,114,0,0,2429,2428,1,0,0,0,2429,2430, - 1,0,0,0,2430,2431,1,0,0,0,2431,2433,5,541,0,0,2432,2426,1,0,0,0, - 2432,2433,1,0,0,0,2433,2437,1,0,0,0,2434,2435,5,141,0,0,2435,2436, - 5,176,0,0,2436,2438,3,698,349,0,2437,2434,1,0,0,0,2437,2438,1,0, - 0,0,2438,2440,1,0,0,0,2439,2441,3,68,34,0,2440,2439,1,0,0,0,2440, - 2441,1,0,0,0,2441,2444,1,0,0,0,2442,2443,5,340,0,0,2443,2445,5,882, - 0,0,2444,2442,1,0,0,0,2444,2445,1,0,0,0,2445,2448,1,0,0,0,2446,2447, - 5,371,0,0,2447,2449,3,416,208,0,2448,2446,1,0,0,0,2448,2449,1,0, - 0,0,2449,123,1,0,0,0,2450,2451,5,8,0,0,2451,2452,5,409,0,0,2452, - 2456,3,628,314,0,2453,2455,3,76,38,0,2454,2453,1,0,0,0,2455,2458, - 1,0,0,0,2456,2454,1,0,0,0,2456,2457,1,0,0,0,2457,125,1,0,0,0,2458, - 2456,1,0,0,0,2459,2460,5,8,0,0,2460,2461,5,433,0,0,2461,2462,5,585, - 0,0,2462,2463,5,801,0,0,2463,2464,5,453,0,0,2464,2465,5,92,0,0,2465, - 127,1,0,0,0,2466,2467,5,8,0,0,2467,2468,5,451,0,0,2468,2469,5,74, - 0,0,2469,2470,3,702,351,0,2470,2471,5,6,0,0,2471,2472,5,671,0,0, - 2472,2478,5,882,0,0,2473,2475,5,428,0,0,2474,2476,5,857,0,0,2475, - 2474,1,0,0,0,2475,2476,1,0,0,0,2476,2477,1,0,0,0,2477,2479,3,710, - 355,0,2478,2473,1,0,0,0,2478,2479,1,0,0,0,2479,2481,1,0,0,0,2480, - 2482,5,687,0,0,2481,2480,1,0,0,0,2481,2482,1,0,0,0,2482,2483,1,0, - 0,0,2483,2485,5,380,0,0,2484,2486,5,857,0,0,2485,2484,1,0,0,0,2485, - 2486,1,0,0,0,2486,2487,1,0,0,0,2487,2488,3,688,344,0,2488,129,1, - 0,0,0,2489,2490,5,8,0,0,2490,2491,5,132,0,0,2491,2495,3,698,349, - 0,2492,2494,3,76,38,0,2493,2492,1,0,0,0,2494,2497,1,0,0,0,2495,2493, - 1,0,0,0,2495,2496,1,0,0,0,2496,131,1,0,0,0,2497,2495,1,0,0,0,2498, - 2499,5,8,0,0,2499,2500,5,592,0,0,2500,2501,3,702,351,0,2501,2502, - 5,518,0,0,2502,2503,5,866,0,0,2503,2508,3,78,39,0,2504,2505,5,868, - 0,0,2505,2507,3,78,39,0,2506,2504,1,0,0,0,2507,2510,1,0,0,0,2508, - 2506,1,0,0,0,2508,2509,1,0,0,0,2509,2511,1,0,0,0,2510,2508,1,0,0, - 0,2511,2512,5,867,0,0,2512,133,1,0,0,0,2513,2514,5,8,0,0,2514,2515, - 5,173,0,0,2515,2524,3,648,324,0,2516,2521,3,140,70,0,2517,2518,5, - 868,0,0,2518,2520,3,140,70,0,2519,2517,1,0,0,0,2520,2523,1,0,0,0, - 2521,2519,1,0,0,0,2521,2522,1,0,0,0,2522,2525,1,0,0,0,2523,2521, - 1,0,0,0,2524,2516,1,0,0,0,2524,2525,1,0,0,0,2525,2533,1,0,0,0,2526, - 2530,3,142,71,0,2527,2529,3,142,71,0,2528,2527,1,0,0,0,2529,2532, - 1,0,0,0,2530,2528,1,0,0,0,2530,2531,1,0,0,0,2531,2534,1,0,0,0,2532, - 2530,1,0,0,0,2533,2526,1,0,0,0,2533,2534,1,0,0,0,2534,135,1,0,0, - 0,2535,2537,5,8,0,0,2536,2538,5,180,0,0,2537,2536,1,0,0,0,2537,2538, - 1,0,0,0,2538,2539,1,0,0,0,2539,2540,5,658,0,0,2540,2541,3,662,331, - 0,2541,2542,7,34,0,0,2542,2543,5,361,0,0,2543,2549,5,882,0,0,2544, - 2546,5,428,0,0,2545,2547,5,857,0,0,2546,2545,1,0,0,0,2546,2547,1, - 0,0,0,2547,2548,1,0,0,0,2548,2550,3,710,355,0,2549,2544,1,0,0,0, - 2549,2550,1,0,0,0,2550,2552,1,0,0,0,2551,2553,5,687,0,0,2552,2551, - 1,0,0,0,2552,2553,1,0,0,0,2553,2557,1,0,0,0,2554,2555,5,141,0,0, - 2555,2556,5,176,0,0,2556,2558,3,660,330,0,2557,2554,1,0,0,0,2557, - 2558,1,0,0,0,2558,2564,1,0,0,0,2559,2561,5,314,0,0,2560,2562,5,857, - 0,0,2561,2560,1,0,0,0,2561,2562,1,0,0,0,2562,2563,1,0,0,0,2563,2565, - 3,710,355,0,2564,2559,1,0,0,0,2564,2565,1,0,0,0,2565,2568,1,0,0, - 0,2566,2567,5,155,0,0,2567,2569,7,35,0,0,2568,2566,1,0,0,0,2568, - 2569,1,0,0,0,2569,2575,1,0,0,0,2570,2572,5,376,0,0,2571,2573,5,857, - 0,0,2572,2571,1,0,0,0,2572,2573,1,0,0,0,2573,2574,1,0,0,0,2574,2576, - 5,882,0,0,2575,2570,1,0,0,0,2575,2576,1,0,0,0,2576,2582,1,0,0,0, - 2577,2579,5,380,0,0,2578,2580,5,857,0,0,2579,2578,1,0,0,0,2579,2580, - 1,0,0,0,2580,2581,1,0,0,0,2581,2583,3,688,344,0,2582,2577,1,0,0, - 0,2582,2583,1,0,0,0,2583,2589,1,0,0,0,2584,2586,5,825,0,0,2585,2587, - 5,857,0,0,2586,2585,1,0,0,0,2586,2587,1,0,0,0,2587,2588,1,0,0,0, - 2588,2590,5,882,0,0,2589,2584,1,0,0,0,2589,2590,1,0,0,0,2590,137, - 1,0,0,0,2591,2595,5,8,0,0,2592,2593,5,308,0,0,2593,2594,5,857,0, - 0,2594,2596,7,10,0,0,2595,2592,1,0,0,0,2595,2596,1,0,0,0,2596,2598, - 1,0,0,0,2597,2599,3,58,29,0,2598,2597,1,0,0,0,2598,2599,1,0,0,0, - 2599,2603,1,0,0,0,2600,2601,5,162,0,0,2601,2602,5,591,0,0,2602,2604, - 7,11,0,0,2603,2600,1,0,0,0,2603,2604,1,0,0,0,2604,2605,1,0,0,0,2605, - 2606,5,684,0,0,2606,2611,3,632,316,0,2607,2608,5,866,0,0,2608,2609, - 3,656,328,0,2609,2610,5,867,0,0,2610,2612,1,0,0,0,2611,2607,1,0, - 0,0,2611,2612,1,0,0,0,2612,2613,1,0,0,0,2613,2614,5,13,0,0,2614, - 2621,3,204,102,0,2615,2617,5,194,0,0,2616,2618,7,12,0,0,2617,2616, - 1,0,0,0,2617,2618,1,0,0,0,2618,2619,1,0,0,0,2619,2620,5,27,0,0,2620, - 2622,5,121,0,0,2621,2615,1,0,0,0,2621,2622,1,0,0,0,2622,139,1,0, - 0,0,2623,2630,3,98,49,0,2624,2626,5,868,0,0,2625,2624,1,0,0,0,2625, - 2626,1,0,0,0,2626,2627,1,0,0,0,2627,2629,3,98,49,0,2628,2625,1,0, - 0,0,2629,2632,1,0,0,0,2630,2628,1,0,0,0,2630,2631,1,0,0,0,2631,2888, - 1,0,0,0,2632,2630,1,0,0,0,2633,2635,5,6,0,0,2634,2636,5,29,0,0,2635, - 2634,1,0,0,0,2635,2636,1,0,0,0,2636,2637,1,0,0,0,2637,2638,3,658, - 329,0,2638,2642,3,88,44,0,2639,2643,5,402,0,0,2640,2641,5,306,0, - 0,2641,2643,3,658,329,0,2642,2639,1,0,0,0,2642,2640,1,0,0,0,2642, - 2643,1,0,0,0,2643,2888,1,0,0,0,2644,2646,5,6,0,0,2645,2647,5,29, - 0,0,2646,2645,1,0,0,0,2646,2647,1,0,0,0,2647,2648,1,0,0,0,2648,2649, - 5,866,0,0,2649,2650,3,658,329,0,2650,2657,3,88,44,0,2651,2652,5, - 868,0,0,2652,2653,3,658,329,0,2653,2654,3,88,44,0,2654,2656,1,0, - 0,0,2655,2651,1,0,0,0,2656,2659,1,0,0,0,2657,2655,1,0,0,0,2657,2658, - 1,0,0,0,2658,2660,1,0,0,0,2659,2657,1,0,0,0,2660,2661,5,867,0,0, - 2661,2888,1,0,0,0,2662,2663,5,6,0,0,2663,2665,7,18,0,0,2664,2666, - 3,638,319,0,2665,2664,1,0,0,0,2665,2666,1,0,0,0,2666,2668,1,0,0, - 0,2667,2669,3,70,35,0,2668,2667,1,0,0,0,2668,2669,1,0,0,0,2669,2670, - 1,0,0,0,2670,2674,3,734,367,0,2671,2673,3,72,36,0,2672,2671,1,0, - 0,0,2673,2676,1,0,0,0,2674,2672,1,0,0,0,2674,2675,1,0,0,0,2675,2888, - 1,0,0,0,2676,2674,1,0,0,0,2677,2678,5,6,0,0,2678,2680,7,19,0,0,2679, - 2681,7,18,0,0,2680,2679,1,0,0,0,2680,2681,1,0,0,0,2681,2683,1,0, - 0,0,2682,2684,3,638,319,0,2683,2682,1,0,0,0,2683,2684,1,0,0,0,2684, - 2685,1,0,0,0,2685,2689,3,734,367,0,2686,2688,3,72,36,0,2687,2686, - 1,0,0,0,2688,2691,1,0,0,0,2689,2687,1,0,0,0,2689,2690,1,0,0,0,2690, - 2888,1,0,0,0,2691,2689,1,0,0,0,2692,2697,5,6,0,0,2693,2695,5,31, - 0,0,2694,2696,3,702,351,0,2695,2694,1,0,0,0,2695,2696,1,0,0,0,2696, - 2698,1,0,0,0,2697,2693,1,0,0,0,2697,2698,1,0,0,0,2698,2699,1,0,0, - 0,2699,2700,5,131,0,0,2700,2702,5,92,0,0,2701,2703,3,70,35,0,2702, - 2701,1,0,0,0,2702,2703,1,0,0,0,2703,2704,1,0,0,0,2704,2708,3,734, - 367,0,2705,2707,3,72,36,0,2706,2705,1,0,0,0,2707,2710,1,0,0,0,2708, - 2706,1,0,0,0,2708,2709,1,0,0,0,2709,2888,1,0,0,0,2710,2708,1,0,0, - 0,2711,2716,5,6,0,0,2712,2714,5,31,0,0,2713,2715,3,702,351,0,2714, - 2713,1,0,0,0,2714,2715,1,0,0,0,2715,2717,1,0,0,0,2716,2712,1,0,0, - 0,2716,2717,1,0,0,0,2717,2718,1,0,0,0,2718,2720,5,182,0,0,2719,2721, - 7,18,0,0,2720,2719,1,0,0,0,2720,2721,1,0,0,0,2721,2723,1,0,0,0,2722, - 2724,3,638,319,0,2723,2722,1,0,0,0,2723,2724,1,0,0,0,2724,2726,1, - 0,0,0,2725,2727,3,70,35,0,2726,2725,1,0,0,0,2726,2727,1,0,0,0,2727, - 2728,1,0,0,0,2728,2732,3,734,367,0,2729,2731,3,72,36,0,2730,2729, - 1,0,0,0,2731,2734,1,0,0,0,2732,2730,1,0,0,0,2732,2733,1,0,0,0,2733, - 2888,1,0,0,0,2734,2732,1,0,0,0,2735,2740,5,6,0,0,2736,2738,5,31, - 0,0,2737,2739,3,702,351,0,2738,2737,1,0,0,0,2738,2739,1,0,0,0,2739, - 2741,1,0,0,0,2740,2736,1,0,0,0,2740,2741,1,0,0,0,2741,2742,1,0,0, - 0,2742,2743,5,67,0,0,2743,2745,5,92,0,0,2744,2746,3,638,319,0,2745, - 2744,1,0,0,0,2745,2746,1,0,0,0,2746,2747,1,0,0,0,2747,2748,3,734, - 367,0,2748,2749,3,92,46,0,2749,2888,1,0,0,0,2750,2752,5,6,0,0,2751, - 2753,3,84,42,0,2752,2751,1,0,0,0,2752,2753,1,0,0,0,2753,2888,1,0, - 0,0,2754,2755,5,51,0,0,2755,2756,7,36,0,0,2756,2888,3,702,351,0, - 2757,2758,5,8,0,0,2758,2759,7,36,0,0,2759,2761,3,702,351,0,2760, - 2762,5,114,0,0,2761,2760,1,0,0,0,2761,2762,1,0,0,0,2762,2764,1,0, - 0,0,2763,2765,5,57,0,0,2764,2763,1,0,0,0,2764,2765,1,0,0,0,2765, - 2888,1,0,0,0,2766,2768,5,308,0,0,2767,2769,5,857,0,0,2768,2767,1, - 0,0,0,2768,2769,1,0,0,0,2769,2770,1,0,0,0,2770,2888,7,37,0,0,2771, - 2773,5,8,0,0,2772,2774,5,29,0,0,2773,2772,1,0,0,0,2773,2774,1,0, - 0,0,2774,2775,1,0,0,0,2775,2783,3,658,329,0,2776,2777,5,155,0,0, - 2777,2778,5,42,0,0,2778,2784,3,750,375,0,2779,2780,5,155,0,0,2780, - 2784,7,16,0,0,2781,2782,5,51,0,0,2782,2784,5,42,0,0,2783,2776,1, - 0,0,0,2783,2779,1,0,0,0,2783,2781,1,0,0,0,2784,2888,1,0,0,0,2785, - 2786,5,8,0,0,2786,2787,5,82,0,0,2787,2788,3,638,319,0,2788,2789, - 7,16,0,0,2789,2888,1,0,0,0,2790,2792,5,25,0,0,2791,2793,5,29,0,0, - 2792,2791,1,0,0,0,2792,2793,1,0,0,0,2793,2794,1,0,0,0,2794,2795, - 3,658,329,0,2795,2796,3,654,327,0,2796,2800,3,88,44,0,2797,2801, - 5,402,0,0,2798,2799,5,306,0,0,2799,2801,3,658,329,0,2800,2797,1, - 0,0,0,2800,2798,1,0,0,0,2800,2801,1,0,0,0,2801,2888,1,0,0,0,2802, - 2804,5,42,0,0,2803,2802,1,0,0,0,2803,2804,1,0,0,0,2804,2805,1,0, - 0,0,2805,2806,5,26,0,0,2806,2807,5,155,0,0,2807,2808,5,857,0,0,2808, - 2814,3,684,342,0,2809,2811,5,28,0,0,2810,2812,5,857,0,0,2811,2810, - 1,0,0,0,2811,2812,1,0,0,0,2812,2813,1,0,0,0,2813,2815,3,686,343, - 0,2814,2809,1,0,0,0,2814,2815,1,0,0,0,2815,2888,1,0,0,0,2816,2817, - 5,33,0,0,2817,2821,5,176,0,0,2818,2822,5,823,0,0,2819,2820,5,26, - 0,0,2820,2822,5,155,0,0,2821,2818,1,0,0,0,2821,2819,1,0,0,0,2822, - 2823,1,0,0,0,2823,2826,3,684,342,0,2824,2825,5,28,0,0,2825,2827, - 3,686,343,0,2826,2824,1,0,0,0,2826,2827,1,0,0,0,2827,2888,1,0,0, - 0,2828,2829,7,38,0,0,2829,2888,5,93,0,0,2830,2831,7,39,0,0,2831, - 2888,5,658,0,0,2832,2834,5,51,0,0,2833,2835,5,29,0,0,2834,2833,1, - 0,0,0,2834,2835,1,0,0,0,2835,2836,1,0,0,0,2836,2888,3,658,329,0, - 2837,2838,5,51,0,0,2838,2839,7,18,0,0,2839,2888,3,638,319,0,2840, - 2841,5,51,0,0,2841,2842,5,131,0,0,2842,2888,5,92,0,0,2843,2844,5, - 51,0,0,2844,2845,5,67,0,0,2845,2846,5,92,0,0,2846,2888,3,702,351, - 0,2847,2888,5,66,0,0,2848,2850,5,104,0,0,2849,2851,5,857,0,0,2850, - 2849,1,0,0,0,2850,2851,1,0,0,0,2851,2852,1,0,0,0,2852,2888,7,4,0, - 0,2853,2855,5,492,0,0,2854,2856,5,29,0,0,2855,2854,1,0,0,0,2855, - 2856,1,0,0,0,2856,2857,1,0,0,0,2857,2858,3,658,329,0,2858,2862,3, - 88,44,0,2859,2863,5,402,0,0,2860,2861,5,306,0,0,2861,2863,3,658, - 329,0,2862,2859,1,0,0,0,2862,2860,1,0,0,0,2862,2863,1,0,0,0,2863, - 2888,1,0,0,0,2864,2865,5,125,0,0,2865,2866,5,20,0,0,2866,2888,3, - 656,328,0,2867,2868,5,141,0,0,2868,2869,5,29,0,0,2869,2870,3,658, - 329,0,2870,2871,5,176,0,0,2871,2872,3,654,327,0,2872,2888,1,0,0, - 0,2873,2874,5,141,0,0,2874,2875,7,18,0,0,2875,2876,3,638,319,0,2876, - 2877,5,176,0,0,2877,2878,3,634,317,0,2878,2888,1,0,0,0,2879,2881, - 5,141,0,0,2880,2882,7,40,0,0,2881,2880,1,0,0,0,2881,2882,1,0,0,0, - 2882,2883,1,0,0,0,2883,2888,3,644,322,0,2884,2885,7,41,0,0,2885, - 2888,5,681,0,0,2886,2888,3,142,71,0,2887,2623,1,0,0,0,2887,2633, - 1,0,0,0,2887,2644,1,0,0,0,2887,2662,1,0,0,0,2887,2677,1,0,0,0,2887, - 2692,1,0,0,0,2887,2711,1,0,0,0,2887,2735,1,0,0,0,2887,2750,1,0,0, - 0,2887,2754,1,0,0,0,2887,2757,1,0,0,0,2887,2766,1,0,0,0,2887,2771, - 1,0,0,0,2887,2785,1,0,0,0,2887,2790,1,0,0,0,2887,2803,1,0,0,0,2887, - 2816,1,0,0,0,2887,2828,1,0,0,0,2887,2830,1,0,0,0,2887,2832,1,0,0, - 0,2887,2837,1,0,0,0,2887,2840,1,0,0,0,2887,2843,1,0,0,0,2887,2847, - 1,0,0,0,2887,2848,1,0,0,0,2887,2853,1,0,0,0,2887,2864,1,0,0,0,2887, - 2867,1,0,0,0,2887,2873,1,0,0,0,2887,2879,1,0,0,0,2887,2884,1,0,0, - 0,2887,2886,1,0,0,0,2888,141,1,0,0,0,2889,2890,5,6,0,0,2890,2891, - 5,130,0,0,2891,2892,5,866,0,0,2892,2897,3,110,55,0,2893,2894,5,868, - 0,0,2894,2896,3,110,55,0,2895,2893,1,0,0,0,2896,2899,1,0,0,0,2897, - 2895,1,0,0,0,2897,2898,1,0,0,0,2898,2900,1,0,0,0,2899,2897,1,0,0, - 0,2900,2901,5,867,0,0,2901,2988,1,0,0,0,2902,2903,5,51,0,0,2903, - 2904,5,130,0,0,2904,2988,3,666,333,0,2905,2906,5,369,0,0,2906,2909, - 5,130,0,0,2907,2910,3,666,333,0,2908,2910,5,7,0,0,2909,2907,1,0, - 0,0,2909,2908,1,0,0,0,2910,2911,1,0,0,0,2911,2988,5,658,0,0,2912, - 2913,5,425,0,0,2913,2916,5,130,0,0,2914,2917,3,666,333,0,2915,2917, - 5,7,0,0,2916,2914,1,0,0,0,2916,2915,1,0,0,0,2917,2918,1,0,0,0,2918, - 2988,5,658,0,0,2919,2920,5,668,0,0,2920,2923,5,130,0,0,2921,2924, - 3,666,333,0,2922,2924,5,7,0,0,2923,2921,1,0,0,0,2923,2922,1,0,0, - 0,2924,2988,1,0,0,0,2925,2926,5,335,0,0,2926,2927,5,130,0,0,2927, - 2988,3,708,354,0,2928,2929,5,561,0,0,2929,2930,5,130,0,0,2930,2931, - 3,666,333,0,2931,2932,5,88,0,0,2932,2933,5,866,0,0,2933,2938,3,110, - 55,0,2934,2935,5,868,0,0,2935,2937,3,110,55,0,2936,2934,1,0,0,0, - 2937,2940,1,0,0,0,2938,2936,1,0,0,0,2938,2939,1,0,0,0,2939,2941, - 1,0,0,0,2940,2938,1,0,0,0,2941,2942,5,867,0,0,2942,2988,1,0,0,0, - 2943,2944,5,388,0,0,2944,2945,5,130,0,0,2945,2946,3,668,334,0,2946, - 2947,5,194,0,0,2947,2948,5,173,0,0,2948,2951,3,648,324,0,2949,2950, - 7,41,0,0,2950,2952,5,681,0,0,2951,2949,1,0,0,0,2951,2952,1,0,0,0, - 2952,2988,1,0,0,0,2953,2954,5,10,0,0,2954,2957,5,130,0,0,2955,2958, - 3,666,333,0,2956,2958,5,7,0,0,2957,2955,1,0,0,0,2957,2956,1,0,0, - 0,2958,2988,1,0,0,0,2959,2960,5,27,0,0,2960,2963,5,130,0,0,2961, - 2964,3,666,333,0,2962,2964,5,7,0,0,2963,2961,1,0,0,0,2963,2962,1, - 0,0,0,2964,2988,1,0,0,0,2965,2966,5,120,0,0,2966,2969,5,130,0,0, - 2967,2970,3,666,333,0,2968,2970,5,7,0,0,2969,2967,1,0,0,0,2969,2968, - 1,0,0,0,2970,2988,1,0,0,0,2971,2972,5,550,0,0,2972,2975,5,130,0, - 0,2973,2976,3,666,333,0,2974,2976,5,7,0,0,2975,2973,1,0,0,0,2975, - 2974,1,0,0,0,2976,2988,1,0,0,0,2977,2978,5,562,0,0,2978,2981,5,130, - 0,0,2979,2982,3,666,333,0,2980,2982,5,7,0,0,2981,2979,1,0,0,0,2981, - 2980,1,0,0,0,2982,2988,1,0,0,0,2983,2984,5,560,0,0,2984,2988,5,527, - 0,0,2985,2986,5,677,0,0,2986,2988,5,527,0,0,2987,2889,1,0,0,0,2987, - 2902,1,0,0,0,2987,2905,1,0,0,0,2987,2912,1,0,0,0,2987,2919,1,0,0, - 0,2987,2925,1,0,0,0,2987,2928,1,0,0,0,2987,2943,1,0,0,0,2987,2953, - 1,0,0,0,2987,2959,1,0,0,0,2987,2965,1,0,0,0,2987,2971,1,0,0,0,2987, - 2977,1,0,0,0,2987,2983,1,0,0,0,2987,2985,1,0,0,0,2988,143,1,0,0, - 0,2989,2990,5,51,0,0,2990,2992,7,0,0,0,2991,2993,3,754,377,0,2992, - 2991,1,0,0,0,2992,2993,1,0,0,0,2993,2994,1,0,0,0,2994,2995,3,624, - 312,0,2995,145,1,0,0,0,2996,2997,5,51,0,0,2997,2999,5,385,0,0,2998, - 3000,3,754,377,0,2999,2998,1,0,0,0,2999,3000,1,0,0,0,3000,3001,1, - 0,0,0,3001,3002,3,698,349,0,3002,147,1,0,0,0,3003,3004,5,51,0,0, - 3004,3006,5,82,0,0,3005,3007,7,1,0,0,3006,3005,1,0,0,0,3006,3007, - 1,0,0,0,3007,3008,1,0,0,0,3008,3009,3,638,319,0,3009,3010,5,119, - 0,0,3010,3023,3,648,324,0,3011,3013,5,308,0,0,3012,3014,5,857,0, - 0,3013,3012,1,0,0,0,3013,3014,1,0,0,0,3014,3015,1,0,0,0,3015,3022, - 7,3,0,0,3016,3018,5,104,0,0,3017,3019,5,857,0,0,3018,3017,1,0,0, - 0,3018,3019,1,0,0,0,3019,3020,1,0,0,0,3020,3022,7,4,0,0,3021,3011, - 1,0,0,0,3021,3016,1,0,0,0,3022,3025,1,0,0,0,3023,3021,1,0,0,0,3023, - 3024,1,0,0,0,3024,149,1,0,0,0,3025,3023,1,0,0,0,3026,3027,5,51,0, - 0,3027,3028,5,451,0,0,3028,3029,5,74,0,0,3029,3030,3,702,351,0,3030, - 3032,5,380,0,0,3031,3033,5,857,0,0,3032,3031,1,0,0,0,3032,3033,1, - 0,0,0,3033,3034,1,0,0,0,3034,3035,3,688,344,0,3035,151,1,0,0,0,3036, - 3037,5,51,0,0,3037,3039,5,132,0,0,3038,3040,3,754,377,0,3039,3038, - 1,0,0,0,3039,3040,1,0,0,0,3040,3041,1,0,0,0,3041,3042,3,698,349, - 0,3042,153,1,0,0,0,3043,3044,5,51,0,0,3044,3046,5,409,0,0,3045,3047, - 3,754,377,0,3046,3045,1,0,0,0,3046,3047,1,0,0,0,3047,3048,1,0,0, - 0,3048,3049,3,628,314,0,3049,155,1,0,0,0,3050,3051,5,51,0,0,3051, - 3053,5,592,0,0,3052,3054,3,754,377,0,3053,3052,1,0,0,0,3053,3054, - 1,0,0,0,3054,3055,1,0,0,0,3055,3056,3,702,351,0,3056,157,1,0,0,0, - 3057,3058,5,51,0,0,3058,3059,5,161,0,0,3059,3060,5,137,0,0,3060, - 3062,5,835,0,0,3061,3063,3,754,377,0,3062,3061,1,0,0,0,3062,3063, - 1,0,0,0,3063,3064,1,0,0,0,3064,3065,5,883,0,0,3065,159,1,0,0,0,3066, - 3068,5,51,0,0,3067,3069,5,660,0,0,3068,3067,1,0,0,0,3068,3069,1, - 0,0,0,3069,3070,1,0,0,0,3070,3072,5,173,0,0,3071,3073,3,754,377, - 0,3072,3071,1,0,0,0,3072,3073,1,0,0,0,3073,3074,1,0,0,0,3074,3076, - 3,646,323,0,3075,3077,7,42,0,0,3076,3075,1,0,0,0,3076,3077,1,0,0, - 0,3077,161,1,0,0,0,3078,3080,5,51,0,0,3079,3081,5,180,0,0,3080,3079, - 1,0,0,0,3080,3081,1,0,0,0,3081,3082,1,0,0,0,3082,3083,5,658,0,0, - 3083,3089,3,662,331,0,3084,3086,5,380,0,0,3085,3087,5,857,0,0,3086, - 3085,1,0,0,0,3086,3087,1,0,0,0,3087,3088,1,0,0,0,3088,3090,3,688, - 344,0,3089,3084,1,0,0,0,3089,3090,1,0,0,0,3090,163,1,0,0,0,3091, - 3092,5,51,0,0,3092,3094,5,178,0,0,3093,3095,3,754,377,0,3094,3093, - 1,0,0,0,3094,3095,1,0,0,0,3095,3096,1,0,0,0,3096,3097,3,698,349, - 0,3097,165,1,0,0,0,3098,3099,5,51,0,0,3099,3101,5,684,0,0,3100,3102, - 3,754,377,0,3101,3100,1,0,0,0,3101,3102,1,0,0,0,3102,3103,1,0,0, - 0,3103,3108,3,632,316,0,3104,3105,5,868,0,0,3105,3107,3,632,316, - 0,3106,3104,1,0,0,0,3107,3110,1,0,0,0,3108,3106,1,0,0,0,3108,3109, - 1,0,0,0,3109,3112,1,0,0,0,3110,3108,1,0,0,0,3111,3113,7,42,0,0,3112, - 3111,1,0,0,0,3112,3113,1,0,0,0,3113,167,1,0,0,0,3114,3115,5,51,0, - 0,3115,3117,5,582,0,0,3116,3118,3,754,377,0,3117,3116,1,0,0,0,3117, - 3118,1,0,0,0,3118,3119,1,0,0,0,3119,3120,3,650,325,0,3120,169,1, - 0,0,0,3121,3122,5,155,0,0,3122,3123,5,42,0,0,3123,3127,5,582,0,0, - 3124,3128,5,505,0,0,3125,3128,5,7,0,0,3126,3128,3,650,325,0,3127, - 3124,1,0,0,0,3127,3125,1,0,0,0,3127,3126,1,0,0,0,3128,3129,1,0,0, - 0,3129,3130,5,176,0,0,3130,3135,3,652,326,0,3131,3132,5,868,0,0, - 3132,3134,3,652,326,0,3133,3131,1,0,0,0,3134,3137,1,0,0,0,3135,3133, - 1,0,0,0,3135,3136,1,0,0,0,3136,3142,1,0,0,0,3137,3135,1,0,0,0,3138, - 3139,5,155,0,0,3139,3140,5,582,0,0,3140,3142,3,462,231,0,3141,3121, - 1,0,0,0,3141,3138,1,0,0,0,3142,171,1,0,0,0,3143,3144,5,141,0,0,3144, - 3145,5,173,0,0,3145,3150,3,174,87,0,3146,3147,5,868,0,0,3147,3149, - 3,174,87,0,3148,3146,1,0,0,0,3149,3152,1,0,0,0,3150,3148,1,0,0,0, - 3150,3151,1,0,0,0,3151,173,1,0,0,0,3152,3150,1,0,0,0,3153,3154,3, - 648,324,0,3154,3155,5,176,0,0,3155,3156,3,644,322,0,3156,175,1,0, - 0,0,3157,3159,5,668,0,0,3158,3160,5,173,0,0,3159,3158,1,0,0,0,3159, - 3160,1,0,0,0,3160,3161,1,0,0,0,3161,3162,3,648,324,0,3162,177,1, - 0,0,0,3163,3164,5,21,0,0,3164,3171,3,698,349,0,3165,3168,5,866,0, - 0,3166,3169,3,744,372,0,3167,3169,3,736,368,0,3168,3166,1,0,0,0, - 3168,3167,1,0,0,0,3168,3169,1,0,0,0,3169,3170,1,0,0,0,3170,3172, - 5,867,0,0,3171,3165,1,0,0,0,3171,3172,1,0,0,0,3172,179,1,0,0,0,3173, - 3176,3,234,117,0,3174,3176,3,236,118,0,3175,3173,1,0,0,0,3175,3174, - 1,0,0,0,3176,181,1,0,0,0,3177,3178,5,371,0,0,3178,3179,3,736,368, - 0,3179,183,1,0,0,0,3180,3185,3,238,119,0,3181,3185,3,240,120,0,3182, - 3185,3,242,121,0,3183,3185,3,244,122,0,3184,3180,1,0,0,0,3184,3181, - 1,0,0,0,3184,3182,1,0,0,0,3184,3183,1,0,0,0,3185,185,1,0,0,0,3186, - 3188,5,86,0,0,3187,3189,7,43,0,0,3188,3187,1,0,0,0,3188,3189,1,0, - 0,0,3189,3191,1,0,0,0,3190,3192,5,79,0,0,3191,3190,1,0,0,0,3191, - 3192,1,0,0,0,3192,3194,1,0,0,0,3193,3195,5,88,0,0,3194,3193,1,0, - 0,0,3194,3195,1,0,0,0,3195,3196,1,0,0,0,3196,3203,3,648,324,0,3197, - 3198,5,130,0,0,3198,3200,5,866,0,0,3199,3201,3,666,333,0,3200,3199, - 1,0,0,0,3200,3201,1,0,0,0,3201,3202,1,0,0,0,3202,3204,5,867,0,0, - 3203,3197,1,0,0,0,3203,3204,1,0,0,0,3204,3216,1,0,0,0,3205,3207, - 3,262,131,0,3206,3205,1,0,0,0,3206,3207,1,0,0,0,3207,3210,1,0,0, - 0,3208,3211,3,738,369,0,3209,3211,3,190,95,0,3210,3208,1,0,0,0,3210, - 3209,1,0,0,0,3210,3211,1,0,0,0,3211,3213,1,0,0,0,3212,3214,3,188, - 94,0,3213,3212,1,0,0,0,3213,3214,1,0,0,0,3214,3217,1,0,0,0,3215, - 3217,3,226,113,0,3216,3206,1,0,0,0,3216,3215,1,0,0,0,3217,3219,1, - 0,0,0,3218,3220,3,188,94,0,3219,3218,1,0,0,0,3219,3220,1,0,0,0,3220, - 3233,1,0,0,0,3221,3222,5,119,0,0,3222,3223,5,373,0,0,3223,3224,5, - 92,0,0,3224,3225,5,185,0,0,3225,3230,3,228,114,0,3226,3227,5,868, - 0,0,3227,3229,3,228,114,0,3228,3226,1,0,0,0,3229,3232,1,0,0,0,3230, - 3228,1,0,0,0,3230,3231,1,0,0,0,3231,3234,1,0,0,0,3232,3230,1,0,0, - 0,3233,3221,1,0,0,0,3233,3234,1,0,0,0,3234,187,1,0,0,0,3235,3236, - 5,13,0,0,3236,3238,3,702,351,0,3237,3239,3,262,131,0,3238,3237,1, - 0,0,0,3238,3239,1,0,0,0,3239,189,1,0,0,0,3240,3245,3,204,102,0,3241, - 3242,5,173,0,0,3242,3245,3,648,324,0,3243,3245,3,224,112,0,3244, - 3240,1,0,0,0,3244,3241,1,0,0,0,3244,3243,1,0,0,0,3245,191,1,0,0, - 0,3246,3252,3,194,97,0,3247,3249,5,828,0,0,3248,3250,7,44,0,0,3249, - 3248,1,0,0,0,3249,3250,1,0,0,0,3250,3251,1,0,0,0,3251,3253,3,194, - 97,0,3252,3247,1,0,0,0,3253,3254,1,0,0,0,3254,3252,1,0,0,0,3254, - 3255,1,0,0,0,3255,193,1,0,0,0,3256,3258,5,866,0,0,3257,3256,1,0, - 0,0,3257,3258,1,0,0,0,3258,3259,1,0,0,0,3259,3261,3,274,137,0,3260, - 3262,5,867,0,0,3261,3260,1,0,0,0,3261,3262,1,0,0,0,3262,195,1,0, - 0,0,3263,3264,5,103,0,0,3264,3266,5,360,0,0,3265,3267,7,45,0,0,3266, - 3265,1,0,0,0,3266,3267,1,0,0,0,3267,3269,1,0,0,0,3268,3270,5,450, - 0,0,3269,3268,1,0,0,0,3269,3270,1,0,0,0,3270,3271,1,0,0,0,3271,3272, - 5,83,0,0,3272,3274,5,882,0,0,3273,3275,7,6,0,0,3274,3273,1,0,0,0, - 3274,3275,1,0,0,0,3275,3276,1,0,0,0,3276,3277,5,88,0,0,3277,3278, - 5,173,0,0,3278,3284,3,648,324,0,3279,3280,5,130,0,0,3280,3281,5, - 866,0,0,3281,3282,3,666,333,0,3282,3283,5,867,0,0,3283,3285,1,0, - 0,0,3284,3279,1,0,0,0,3284,3285,1,0,0,0,3285,3289,1,0,0,0,3286,3287, - 5,26,0,0,3287,3288,5,155,0,0,3288,3290,3,684,342,0,3289,3286,1,0, - 0,0,3289,3290,1,0,0,0,3290,3297,1,0,0,0,3291,3293,7,46,0,0,3292, - 3294,3,298,149,0,3293,3292,1,0,0,0,3294,3295,1,0,0,0,3295,3293,1, - 0,0,0,3295,3296,1,0,0,0,3296,3298,1,0,0,0,3297,3291,1,0,0,0,3297, - 3298,1,0,0,0,3298,3305,1,0,0,0,3299,3301,5,102,0,0,3300,3302,3,300, - 150,0,3301,3300,1,0,0,0,3302,3303,1,0,0,0,3303,3301,1,0,0,0,3303, - 3304,1,0,0,0,3304,3306,1,0,0,0,3305,3299,1,0,0,0,3305,3306,1,0,0, - 0,3306,3311,1,0,0,0,3307,3308,5,79,0,0,3308,3309,3,708,354,0,3309, - 3310,7,47,0,0,3310,3312,1,0,0,0,3311,3307,1,0,0,0,3311,3312,1,0, - 0,0,3312,3324,1,0,0,0,3313,3314,5,866,0,0,3314,3319,3,230,115,0, - 3315,3316,5,868,0,0,3316,3318,3,230,115,0,3317,3315,1,0,0,0,3318, - 3321,1,0,0,0,3319,3317,1,0,0,0,3319,3320,1,0,0,0,3320,3322,1,0,0, - 0,3321,3319,1,0,0,0,3322,3323,5,867,0,0,3323,3325,1,0,0,0,3324,3313, - 1,0,0,0,3324,3325,1,0,0,0,3325,3335,1,0,0,0,3326,3327,5,155,0,0, - 3327,3332,3,228,114,0,3328,3329,5,868,0,0,3329,3331,3,228,114,0, - 3330,3328,1,0,0,0,3331,3334,1,0,0,0,3332,3330,1,0,0,0,3332,3333, - 1,0,0,0,3333,3336,1,0,0,0,3334,3332,1,0,0,0,3335,3326,1,0,0,0,3335, - 3336,1,0,0,0,3336,197,1,0,0,0,3337,3338,5,103,0,0,3338,3340,5,695, - 0,0,3339,3341,7,45,0,0,3340,3339,1,0,0,0,3340,3341,1,0,0,0,3341, - 3343,1,0,0,0,3342,3344,5,450,0,0,3343,3342,1,0,0,0,3343,3344,1,0, - 0,0,3344,3345,1,0,0,0,3345,3346,5,83,0,0,3346,3348,5,882,0,0,3347, - 3349,7,6,0,0,3348,3347,1,0,0,0,3348,3349,1,0,0,0,3349,3350,1,0,0, - 0,3350,3351,5,88,0,0,3351,3352,5,173,0,0,3352,3356,3,648,324,0,3353, - 3354,5,26,0,0,3354,3355,5,155,0,0,3355,3357,3,684,342,0,3356,3353, - 1,0,0,0,3356,3357,1,0,0,0,3357,3368,1,0,0,0,3358,3359,5,587,0,0, - 3359,3360,5,423,0,0,3360,3362,5,20,0,0,3361,3363,5,859,0,0,3362, - 3361,1,0,0,0,3362,3363,1,0,0,0,3363,3364,1,0,0,0,3364,3366,5,882, - 0,0,3365,3367,5,858,0,0,3366,3365,1,0,0,0,3366,3367,1,0,0,0,3367, - 3369,1,0,0,0,3368,3358,1,0,0,0,3368,3369,1,0,0,0,3369,3374,1,0,0, - 0,3370,3371,5,79,0,0,3371,3372,3,708,354,0,3372,3373,7,47,0,0,3373, - 3375,1,0,0,0,3374,3370,1,0,0,0,3374,3375,1,0,0,0,3375,3387,1,0,0, - 0,3376,3377,5,866,0,0,3377,3382,3,230,115,0,3378,3379,5,868,0,0, - 3379,3381,3,230,115,0,3380,3378,1,0,0,0,3381,3384,1,0,0,0,3382,3380, - 1,0,0,0,3382,3383,1,0,0,0,3383,3385,1,0,0,0,3384,3382,1,0,0,0,3385, - 3386,5,867,0,0,3386,3388,1,0,0,0,3387,3376,1,0,0,0,3387,3388,1,0, - 0,0,3388,3398,1,0,0,0,3389,3390,5,155,0,0,3390,3395,3,228,114,0, - 3391,3392,5,868,0,0,3392,3394,3,228,114,0,3393,3391,1,0,0,0,3394, - 3397,1,0,0,0,3395,3393,1,0,0,0,3395,3396,1,0,0,0,3396,3399,1,0,0, - 0,3397,3395,1,0,0,0,3398,3389,1,0,0,0,3398,3399,1,0,0,0,3399,199, - 1,0,0,0,3400,3401,5,866,0,0,3401,3403,3,218,109,0,3402,3404,3,252, - 126,0,3403,3402,1,0,0,0,3403,3404,1,0,0,0,3404,3406,1,0,0,0,3405, - 3407,3,312,156,0,3406,3405,1,0,0,0,3406,3407,1,0,0,0,3407,3408,1, - 0,0,0,3408,3410,5,867,0,0,3409,3411,3,252,126,0,3410,3409,1,0,0, - 0,3410,3411,1,0,0,0,3411,3413,1,0,0,0,3412,3414,3,312,156,0,3413, - 3412,1,0,0,0,3413,3414,1,0,0,0,3414,3416,1,0,0,0,3415,3417,3,296, - 148,0,3416,3415,1,0,0,0,3416,3417,1,0,0,0,3417,201,1,0,0,0,3418, - 3420,5,143,0,0,3419,3421,7,48,0,0,3420,3419,1,0,0,0,3420,3421,1, - 0,0,0,3421,3423,1,0,0,0,3422,3424,5,88,0,0,3423,3422,1,0,0,0,3423, - 3424,1,0,0,0,3424,3425,1,0,0,0,3425,3431,3,648,324,0,3426,3427,5, - 130,0,0,3427,3428,5,866,0,0,3428,3429,3,666,333,0,3429,3430,5,867, - 0,0,3430,3432,1,0,0,0,3431,3426,1,0,0,0,3431,3432,1,0,0,0,3432,3441, - 1,0,0,0,3433,3434,5,866,0,0,3434,3435,3,656,328,0,3435,3436,5,867, - 0,0,3436,3438,1,0,0,0,3437,3433,1,0,0,0,3437,3438,1,0,0,0,3438,3439, - 1,0,0,0,3439,3442,3,222,111,0,3440,3442,3,226,113,0,3441,3437,1, - 0,0,0,3441,3440,1,0,0,0,3442,203,1,0,0,0,3443,3447,3,274,137,0,3444, - 3446,3,276,138,0,3445,3444,1,0,0,0,3446,3449,1,0,0,0,3447,3445,1, - 0,0,0,3447,3448,1,0,0,0,3448,3458,1,0,0,0,3449,3447,1,0,0,0,3450, - 3452,5,181,0,0,3451,3453,7,44,0,0,3452,3451,1,0,0,0,3452,3453,1, - 0,0,0,3453,3456,1,0,0,0,3454,3457,3,274,137,0,3455,3457,3,272,136, - 0,3456,3454,1,0,0,0,3456,3455,1,0,0,0,3457,3459,1,0,0,0,3458,3450, - 1,0,0,0,3458,3459,1,0,0,0,3459,3464,1,0,0,0,3460,3461,5,868,0,0, - 3461,3463,3,278,139,0,3462,3460,1,0,0,0,3463,3466,1,0,0,0,3464,3462, - 1,0,0,0,3464,3465,1,0,0,0,3465,3468,1,0,0,0,3466,3464,1,0,0,0,3467, - 3469,3,252,126,0,3468,3467,1,0,0,0,3468,3469,1,0,0,0,3469,3471,1, - 0,0,0,3470,3472,3,312,156,0,3471,3470,1,0,0,0,3471,3472,1,0,0,0, - 3472,3474,1,0,0,0,3473,3475,3,232,116,0,3474,3473,1,0,0,0,3474,3475, - 1,0,0,0,3475,3477,1,0,0,0,3476,3478,3,296,148,0,3477,3476,1,0,0, - 0,3477,3478,1,0,0,0,3478,3503,1,0,0,0,3479,3483,3,272,136,0,3480, - 3482,3,276,138,0,3481,3480,1,0,0,0,3482,3485,1,0,0,0,3483,3481,1, - 0,0,0,3483,3484,1,0,0,0,3484,3491,1,0,0,0,3485,3483,1,0,0,0,3486, - 3488,5,181,0,0,3487,3489,7,44,0,0,3488,3487,1,0,0,0,3488,3489,1, - 0,0,0,3489,3490,1,0,0,0,3490,3492,3,272,136,0,3491,3486,1,0,0,0, - 3491,3492,1,0,0,0,3492,3494,1,0,0,0,3493,3495,3,252,126,0,3494,3493, - 1,0,0,0,3494,3495,1,0,0,0,3495,3497,1,0,0,0,3496,3498,3,312,156, - 0,3497,3496,1,0,0,0,3497,3498,1,0,0,0,3498,3500,1,0,0,0,3499,3501, - 3,232,116,0,3500,3499,1,0,0,0,3500,3501,1,0,0,0,3501,3503,1,0,0, - 0,3502,3443,1,0,0,0,3502,3479,1,0,0,0,3503,205,1,0,0,0,3504,3506, - 3,46,23,0,3505,3504,1,0,0,0,3505,3506,1,0,0,0,3506,3507,1,0,0,0, - 3507,3509,3,208,104,0,3508,3510,3,252,126,0,3509,3508,1,0,0,0,3509, - 3510,1,0,0,0,3510,3512,1,0,0,0,3511,3513,3,312,156,0,3512,3511,1, - 0,0,0,3512,3513,1,0,0,0,3513,3515,1,0,0,0,3514,3516,3,296,148,0, - 3515,3514,1,0,0,0,3515,3516,1,0,0,0,3516,207,1,0,0,0,3517,3518,6, - 104,-1,0,3518,3519,3,210,105,0,3519,3534,1,0,0,0,3520,3521,10,2, - 0,0,3521,3523,5,181,0,0,3522,3524,7,44,0,0,3523,3522,1,0,0,0,3523, - 3524,1,0,0,0,3524,3525,1,0,0,0,3525,3533,3,210,105,0,3526,3527,10, - 1,0,0,3527,3529,5,59,0,0,3528,3530,7,44,0,0,3529,3528,1,0,0,0,3529, - 3530,1,0,0,0,3530,3531,1,0,0,0,3531,3533,3,210,105,0,3532,3520,1, - 0,0,0,3532,3526,1,0,0,0,3533,3536,1,0,0,0,3534,3532,1,0,0,0,3534, - 3535,1,0,0,0,3535,209,1,0,0,0,3536,3534,1,0,0,0,3537,3538,6,105, - -1,0,3538,3539,3,212,106,0,3539,3548,1,0,0,0,3540,3541,10,1,0,0, - 3541,3543,5,828,0,0,3542,3544,7,44,0,0,3543,3542,1,0,0,0,3543,3544, - 1,0,0,0,3544,3545,1,0,0,0,3545,3547,3,212,106,0,3546,3540,1,0,0, - 0,3547,3550,1,0,0,0,3548,3546,1,0,0,0,3548,3549,1,0,0,0,3549,211, - 1,0,0,0,3550,3548,1,0,0,0,3551,3566,3,220,110,0,3552,3553,5,866, - 0,0,3553,3555,3,208,104,0,3554,3556,3,252,126,0,3555,3554,1,0,0, - 0,3555,3556,1,0,0,0,3556,3558,1,0,0,0,3557,3559,3,312,156,0,3558, - 3557,1,0,0,0,3558,3559,1,0,0,0,3559,3561,1,0,0,0,3560,3562,3,296, - 148,0,3561,3560,1,0,0,0,3561,3562,1,0,0,0,3562,3563,1,0,0,0,3563, - 3564,5,867,0,0,3564,3566,1,0,0,0,3565,3551,1,0,0,0,3565,3552,1,0, - 0,0,3566,213,1,0,0,0,3567,3570,3,248,124,0,3568,3570,3,250,125,0, - 3569,3567,1,0,0,0,3569,3568,1,0,0,0,3570,215,1,0,0,0,3571,3575,3, - 224,112,0,3572,3573,5,125,0,0,3573,3574,5,20,0,0,3574,3576,3,670, - 335,0,3575,3572,1,0,0,0,3575,3576,1,0,0,0,3576,3579,1,0,0,0,3577, - 3578,5,100,0,0,3578,3580,3,314,157,0,3579,3577,1,0,0,0,3579,3580, - 1,0,0,0,3580,217,1,0,0,0,3581,3586,3,220,110,0,3582,3583,7,49,0, - 0,3583,3585,3,220,110,0,3584,3582,1,0,0,0,3585,3588,1,0,0,0,3586, - 3584,1,0,0,0,3586,3587,1,0,0,0,3587,3590,1,0,0,0,3588,3586,1,0,0, - 0,3589,3591,3,252,126,0,3590,3589,1,0,0,0,3590,3591,1,0,0,0,3591, - 3593,1,0,0,0,3592,3594,3,312,156,0,3593,3592,1,0,0,0,3593,3594,1, - 0,0,0,3594,3596,1,0,0,0,3595,3597,3,296,148,0,3596,3595,1,0,0,0, - 3596,3597,1,0,0,0,3597,219,1,0,0,0,3598,3602,3,204,102,0,3599,3602, - 3,614,307,0,3600,3602,3,216,108,0,3601,3598,1,0,0,0,3601,3599,1, - 0,0,0,3601,3600,1,0,0,0,3602,221,1,0,0,0,3603,3609,3,204,102,0,3604, - 3605,5,173,0,0,3605,3609,3,648,324,0,3606,3609,3,738,369,0,3607, - 3609,3,224,112,0,3608,3603,1,0,0,0,3608,3604,1,0,0,0,3608,3606,1, - 0,0,0,3608,3607,1,0,0,0,3609,223,1,0,0,0,3610,3611,5,189,0,0,3611, - 3612,5,586,0,0,3612,3618,3,740,370,0,3613,3614,5,868,0,0,3614,3615, - 5,586,0,0,3615,3617,3,740,370,0,3616,3613,1,0,0,0,3617,3620,1,0, - 0,0,3618,3616,1,0,0,0,3618,3619,1,0,0,0,3619,225,1,0,0,0,3620,3618, - 1,0,0,0,3621,3622,5,155,0,0,3622,3627,3,228,114,0,3623,3624,5,868, - 0,0,3624,3626,3,228,114,0,3625,3623,1,0,0,0,3626,3629,1,0,0,0,3627, - 3625,1,0,0,0,3627,3628,1,0,0,0,3628,227,1,0,0,0,3629,3627,1,0,0, - 0,3630,3631,3,658,329,0,3631,3632,5,857,0,0,3632,3633,3,742,371, - 0,3633,229,1,0,0,0,3634,3637,3,702,351,0,3635,3637,5,892,0,0,3636, - 3634,1,0,0,0,3636,3635,1,0,0,0,3637,231,1,0,0,0,3638,3639,5,65,0, - 0,3639,3649,7,50,0,0,3640,3641,5,510,0,0,3641,3646,3,648,324,0,3642, - 3643,5,868,0,0,3643,3645,3,648,324,0,3644,3642,1,0,0,0,3645,3648, - 1,0,0,0,3646,3644,1,0,0,0,3646,3647,1,0,0,0,3647,3650,1,0,0,0,3648, - 3646,1,0,0,0,3649,3640,1,0,0,0,3649,3650,1,0,0,0,3650,3653,1,0,0, - 0,3651,3652,7,51,0,0,3652,3654,5,105,0,0,3653,3651,1,0,0,0,3653, - 3654,1,0,0,0,3654,3660,1,0,0,0,3655,3656,5,104,0,0,3656,3657,5,80, - 0,0,3657,3658,5,594,0,0,3658,3660,5,491,0,0,3659,3638,1,0,0,0,3659, - 3655,1,0,0,0,3660,233,1,0,0,0,3661,3663,5,44,0,0,3662,3664,5,107, - 0,0,3663,3662,1,0,0,0,3663,3664,1,0,0,0,3664,3666,1,0,0,0,3665,3667, - 5,549,0,0,3666,3665,1,0,0,0,3666,3667,1,0,0,0,3667,3669,1,0,0,0, - 3668,3670,5,79,0,0,3669,3668,1,0,0,0,3669,3670,1,0,0,0,3670,3671, - 1,0,0,0,3671,3672,5,68,0,0,3672,3677,3,648,324,0,3673,3675,5,13, - 0,0,3674,3673,1,0,0,0,3674,3675,1,0,0,0,3675,3676,1,0,0,0,3676,3678, - 3,702,351,0,3677,3674,1,0,0,0,3677,3678,1,0,0,0,3678,3684,1,0,0, - 0,3679,3680,5,130,0,0,3680,3681,5,866,0,0,3681,3682,3,666,333,0, - 3682,3683,5,867,0,0,3683,3685,1,0,0,0,3684,3679,1,0,0,0,3684,3685, - 1,0,0,0,3685,3688,1,0,0,0,3686,3687,5,192,0,0,3687,3689,3,800,400, - 0,3688,3686,1,0,0,0,3688,3689,1,0,0,0,3689,3691,1,0,0,0,3690,3692, - 3,252,126,0,3691,3690,1,0,0,0,3691,3692,1,0,0,0,3692,3695,1,0,0, - 0,3693,3694,5,100,0,0,3694,3696,3,314,157,0,3695,3693,1,0,0,0,3695, - 3696,1,0,0,0,3696,235,1,0,0,0,3697,3699,5,44,0,0,3698,3700,5,107, - 0,0,3699,3698,1,0,0,0,3699,3700,1,0,0,0,3700,3702,1,0,0,0,3701,3703, - 5,549,0,0,3702,3701,1,0,0,0,3702,3703,1,0,0,0,3703,3705,1,0,0,0, - 3704,3706,5,79,0,0,3705,3704,1,0,0,0,3705,3706,1,0,0,0,3706,3746, - 1,0,0,0,3707,3710,3,648,324,0,3708,3709,5,865,0,0,3709,3711,5,850, - 0,0,3710,3708,1,0,0,0,3710,3711,1,0,0,0,3711,3720,1,0,0,0,3712,3713, - 5,868,0,0,3713,3716,3,648,324,0,3714,3715,5,865,0,0,3715,3717,5, - 850,0,0,3716,3714,1,0,0,0,3716,3717,1,0,0,0,3717,3719,1,0,0,0,3718, - 3712,1,0,0,0,3719,3722,1,0,0,0,3720,3718,1,0,0,0,3720,3721,1,0,0, - 0,3721,3723,1,0,0,0,3722,3720,1,0,0,0,3723,3724,5,68,0,0,3724,3725, - 3,256,128,0,3725,3747,1,0,0,0,3726,3727,5,68,0,0,3727,3730,3,648, - 324,0,3728,3729,5,865,0,0,3729,3731,5,850,0,0,3730,3728,1,0,0,0, - 3730,3731,1,0,0,0,3731,3740,1,0,0,0,3732,3733,5,868,0,0,3733,3736, - 3,648,324,0,3734,3735,5,865,0,0,3735,3737,5,850,0,0,3736,3734,1, - 0,0,0,3736,3737,1,0,0,0,3737,3739,1,0,0,0,3738,3732,1,0,0,0,3739, - 3742,1,0,0,0,3740,3738,1,0,0,0,3740,3741,1,0,0,0,3741,3743,1,0,0, - 0,3742,3740,1,0,0,0,3743,3744,5,188,0,0,3744,3745,3,256,128,0,3745, - 3747,1,0,0,0,3746,3707,1,0,0,0,3746,3726,1,0,0,0,3747,3750,1,0,0, - 0,3748,3749,5,192,0,0,3749,3751,3,800,400,0,3750,3748,1,0,0,0,3750, - 3751,1,0,0,0,3751,237,1,0,0,0,3752,3753,5,417,0,0,3753,3754,3,648, - 324,0,3754,3759,5,516,0,0,3755,3757,5,13,0,0,3756,3755,1,0,0,0,3756, - 3757,1,0,0,0,3757,3758,1,0,0,0,3758,3760,3,702,351,0,3759,3756,1, - 0,0,0,3759,3760,1,0,0,0,3760,239,1,0,0,0,3761,3762,5,417,0,0,3762, - 3763,3,648,324,0,3763,3764,5,135,0,0,3764,3771,3,638,319,0,3765, - 3766,3,810,405,0,3766,3767,5,866,0,0,3767,3768,3,744,372,0,3768, - 3769,5,867,0,0,3769,3772,1,0,0,0,3770,3772,7,52,0,0,3771,3765,1, - 0,0,0,3771,3770,1,0,0,0,3772,3775,1,0,0,0,3773,3774,5,192,0,0,3774, - 3776,3,800,400,0,3775,3773,1,0,0,0,3775,3776,1,0,0,0,3776,3779,1, - 0,0,0,3777,3778,5,100,0,0,3778,3780,3,314,157,0,3779,3777,1,0,0, - 0,3779,3780,1,0,0,0,3780,241,1,0,0,0,3781,3782,5,417,0,0,3782,3783, - 3,648,324,0,3783,3784,5,135,0,0,3784,3787,7,53,0,0,3785,3786,5,192, - 0,0,3786,3788,3,800,400,0,3787,3785,1,0,0,0,3787,3788,1,0,0,0,3788, - 3791,1,0,0,0,3789,3790,5,100,0,0,3790,3792,3,314,157,0,3791,3789, - 1,0,0,0,3791,3792,1,0,0,0,3792,243,1,0,0,0,3793,3794,5,417,0,0,3794, - 3795,3,648,324,0,3795,3796,5,334,0,0,3796,245,1,0,0,0,3797,3798, - 5,425,0,0,3798,3799,5,173,0,0,3799,3800,5,68,0,0,3800,3805,3,712, - 356,0,3801,3802,5,868,0,0,3802,3804,3,712,356,0,3803,3801,1,0,0, - 0,3804,3807,1,0,0,0,3805,3803,1,0,0,0,3805,3806,1,0,0,0,3806,247, - 1,0,0,0,3807,3805,1,0,0,0,3808,3810,5,185,0,0,3809,3811,5,107,0, - 0,3810,3809,1,0,0,0,3810,3811,1,0,0,0,3811,3813,1,0,0,0,3812,3814, - 5,79,0,0,3813,3812,1,0,0,0,3813,3814,1,0,0,0,3814,3815,1,0,0,0,3815, - 3820,3,648,324,0,3816,3818,5,13,0,0,3817,3816,1,0,0,0,3817,3818, - 1,0,0,0,3818,3819,1,0,0,0,3819,3821,3,702,351,0,3820,3817,1,0,0, - 0,3820,3821,1,0,0,0,3821,3822,1,0,0,0,3822,3823,5,155,0,0,3823,3828, - 3,228,114,0,3824,3825,5,868,0,0,3825,3827,3,228,114,0,3826,3824, - 1,0,0,0,3827,3830,1,0,0,0,3828,3826,1,0,0,0,3828,3829,1,0,0,0,3829, - 3833,1,0,0,0,3830,3828,1,0,0,0,3831,3832,5,192,0,0,3832,3834,3,800, - 400,0,3833,3831,1,0,0,0,3833,3834,1,0,0,0,3834,3836,1,0,0,0,3835, - 3837,3,252,126,0,3836,3835,1,0,0,0,3836,3837,1,0,0,0,3837,3839,1, - 0,0,0,3838,3840,3,312,156,0,3839,3838,1,0,0,0,3839,3840,1,0,0,0, - 3840,249,1,0,0,0,3841,3843,5,185,0,0,3842,3844,5,107,0,0,3843,3842, - 1,0,0,0,3843,3844,1,0,0,0,3844,3846,1,0,0,0,3845,3847,5,79,0,0,3846, - 3845,1,0,0,0,3846,3847,1,0,0,0,3847,3848,1,0,0,0,3848,3849,3,256, - 128,0,3849,3850,5,155,0,0,3850,3855,3,228,114,0,3851,3852,5,868, - 0,0,3852,3854,3,228,114,0,3853,3851,1,0,0,0,3854,3857,1,0,0,0,3855, - 3853,1,0,0,0,3855,3856,1,0,0,0,3856,3860,1,0,0,0,3857,3855,1,0,0, - 0,3858,3859,5,192,0,0,3859,3861,3,800,400,0,3860,3858,1,0,0,0,3860, - 3861,1,0,0,0,3861,251,1,0,0,0,3862,3863,5,125,0,0,3863,3864,5,20, - 0,0,3864,3869,3,254,127,0,3865,3866,5,868,0,0,3866,3868,3,254,127, - 0,3867,3865,1,0,0,0,3868,3871,1,0,0,0,3869,3867,1,0,0,0,3869,3870, - 1,0,0,0,3870,253,1,0,0,0,3871,3869,1,0,0,0,3872,3874,3,800,400,0, - 3873,3875,7,54,0,0,3874,3873,1,0,0,0,3874,3875,1,0,0,0,3875,255, - 1,0,0,0,3876,3881,3,258,129,0,3877,3878,5,868,0,0,3878,3880,3,258, - 129,0,3879,3877,1,0,0,0,3880,3883,1,0,0,0,3881,3879,1,0,0,0,3881, - 3882,1,0,0,0,3882,257,1,0,0,0,3883,3881,1,0,0,0,3884,3888,3,260, - 130,0,3885,3887,3,268,134,0,3886,3885,1,0,0,0,3887,3890,1,0,0,0, - 3888,3886,1,0,0,0,3888,3889,1,0,0,0,3889,3903,1,0,0,0,3890,3888, - 1,0,0,0,3891,3892,5,866,0,0,3892,3896,3,260,130,0,3893,3895,3,268, - 134,0,3894,3893,1,0,0,0,3895,3898,1,0,0,0,3896,3894,1,0,0,0,3896, - 3897,1,0,0,0,3897,3899,1,0,0,0,3898,3896,1,0,0,0,3899,3900,5,867, - 0,0,3900,3903,1,0,0,0,3901,3903,3,280,140,0,3902,3884,1,0,0,0,3902, - 3891,1,0,0,0,3902,3901,1,0,0,0,3903,259,1,0,0,0,3904,3910,3,648, - 324,0,3905,3906,5,130,0,0,3906,3907,5,866,0,0,3907,3908,3,666,333, - 0,3908,3909,5,867,0,0,3909,3911,1,0,0,0,3910,3905,1,0,0,0,3910,3911, - 1,0,0,0,3911,3916,1,0,0,0,3912,3914,5,13,0,0,3913,3912,1,0,0,0,3913, - 3914,1,0,0,0,3914,3915,1,0,0,0,3915,3917,3,702,351,0,3916,3913,1, - 0,0,0,3916,3917,1,0,0,0,3917,3926,1,0,0,0,3918,3923,3,264,132,0, - 3919,3920,5,868,0,0,3920,3922,3,264,132,0,3921,3919,1,0,0,0,3922, - 3925,1,0,0,0,3923,3921,1,0,0,0,3923,3924,1,0,0,0,3924,3927,1,0,0, - 0,3925,3923,1,0,0,0,3926,3918,1,0,0,0,3926,3927,1,0,0,0,3927,3950, - 1,0,0,0,3928,3930,5,95,0,0,3929,3928,1,0,0,0,3929,3930,1,0,0,0,3930, - 3936,1,0,0,0,3931,3937,3,204,102,0,3932,3933,5,866,0,0,3933,3934, - 3,204,102,0,3934,3935,5,867,0,0,3935,3937,1,0,0,0,3936,3931,1,0, - 0,0,3936,3932,1,0,0,0,3937,3939,1,0,0,0,3938,3940,5,13,0,0,3939, - 3938,1,0,0,0,3939,3940,1,0,0,0,3940,3941,1,0,0,0,3941,3943,3,702, - 351,0,3942,3944,3,262,131,0,3943,3942,1,0,0,0,3943,3944,1,0,0,0, - 3944,3950,1,0,0,0,3945,3946,5,866,0,0,3946,3947,3,256,128,0,3947, - 3948,5,867,0,0,3948,3950,1,0,0,0,3949,3904,1,0,0,0,3949,3929,1,0, - 0,0,3949,3945,1,0,0,0,3950,261,1,0,0,0,3951,3952,5,866,0,0,3952, - 3953,3,656,328,0,3953,3954,5,867,0,0,3954,263,1,0,0,0,3955,3956, - 7,55,0,0,3956,3959,7,18,0,0,3957,3958,5,65,0,0,3958,3960,3,266,133, - 0,3959,3957,1,0,0,0,3959,3960,1,0,0,0,3960,3961,1,0,0,0,3961,3963, - 5,866,0,0,3962,3964,3,636,318,0,3963,3962,1,0,0,0,3963,3964,1,0, - 0,0,3964,3965,1,0,0,0,3965,3966,5,867,0,0,3966,265,1,0,0,0,3967, - 3973,5,91,0,0,3968,3969,5,125,0,0,3969,3973,5,20,0,0,3970,3971,5, - 74,0,0,3971,3973,5,20,0,0,3972,3967,1,0,0,0,3972,3968,1,0,0,0,3972, - 3970,1,0,0,0,3973,267,1,0,0,0,3974,3976,7,56,0,0,3975,3974,1,0,0, - 0,3975,3976,1,0,0,0,3976,3977,1,0,0,0,3977,3979,5,91,0,0,3978,3980, - 5,95,0,0,3979,3978,1,0,0,0,3979,3980,1,0,0,0,3980,3981,1,0,0,0,3981, - 3985,3,260,130,0,3982,3984,3,270,135,0,3983,3982,1,0,0,0,3984,3987, - 1,0,0,0,3985,3983,1,0,0,0,3985,3986,1,0,0,0,3986,4024,1,0,0,0,3987, - 3985,1,0,0,0,3988,3989,5,172,0,0,3989,3993,3,260,130,0,3990,3992, - 3,270,135,0,3991,3990,1,0,0,0,3992,3995,1,0,0,0,3993,3991,1,0,0, - 0,3993,3994,1,0,0,0,3994,4024,1,0,0,0,3995,3993,1,0,0,0,3996,3998, - 7,57,0,0,3997,3999,5,127,0,0,3998,3997,1,0,0,0,3998,3999,1,0,0,0, - 3999,4000,1,0,0,0,4000,4002,5,91,0,0,4001,4003,5,95,0,0,4002,4001, - 1,0,0,0,4002,4003,1,0,0,0,4003,4004,1,0,0,0,4004,4008,3,260,130, - 0,4005,4007,3,270,135,0,4006,4005,1,0,0,0,4007,4010,1,0,0,0,4008, - 4006,1,0,0,0,4008,4009,1,0,0,0,4009,4024,1,0,0,0,4010,4008,1,0,0, - 0,4011,4019,5,113,0,0,4012,4015,5,84,0,0,4013,4015,7,57,0,0,4014, - 4012,1,0,0,0,4014,4013,1,0,0,0,4015,4017,1,0,0,0,4016,4018,5,127, - 0,0,4017,4016,1,0,0,0,4017,4018,1,0,0,0,4018,4020,1,0,0,0,4019,4014, - 1,0,0,0,4019,4020,1,0,0,0,4020,4021,1,0,0,0,4021,4022,5,91,0,0,4022, - 4024,3,260,130,0,4023,3975,1,0,0,0,4023,3988,1,0,0,0,4023,3996,1, - 0,0,0,4023,4011,1,0,0,0,4024,269,1,0,0,0,4025,4026,5,119,0,0,4026, - 4033,3,800,400,0,4027,4028,5,188,0,0,4028,4029,5,866,0,0,4029,4030, - 3,656,328,0,4030,4031,5,867,0,0,4031,4033,1,0,0,0,4032,4025,1,0, - 0,0,4032,4027,1,0,0,0,4033,271,1,0,0,0,4034,4035,5,866,0,0,4035, - 4036,3,274,137,0,4036,4037,5,867,0,0,4037,4043,1,0,0,0,4038,4039, - 5,866,0,0,4039,4040,3,272,136,0,4040,4041,5,867,0,0,4041,4043,1, - 0,0,0,4042,4034,1,0,0,0,4042,4038,1,0,0,0,4043,273,1,0,0,0,4044, - 4048,5,154,0,0,4045,4047,3,290,145,0,4046,4045,1,0,0,0,4047,4050, - 1,0,0,0,4048,4046,1,0,0,0,4048,4049,1,0,0,0,4049,4051,1,0,0,0,4050, - 4048,1,0,0,0,4051,4053,3,292,146,0,4052,4054,3,296,148,0,4053,4052, - 1,0,0,0,4053,4054,1,0,0,0,4054,4055,1,0,0,0,4055,4057,3,302,151, - 0,4056,4058,3,304,152,0,4057,4056,1,0,0,0,4057,4058,1,0,0,0,4058, - 4060,1,0,0,0,4059,4061,3,306,153,0,4060,4059,1,0,0,0,4060,4061,1, - 0,0,0,4061,4063,1,0,0,0,4062,4064,3,308,154,0,4063,4062,1,0,0,0, - 4063,4064,1,0,0,0,4064,4066,1,0,0,0,4065,4067,3,252,126,0,4066,4065, - 1,0,0,0,4066,4067,1,0,0,0,4067,4069,1,0,0,0,4068,4070,3,312,156, - 0,4069,4068,1,0,0,0,4069,4070,1,0,0,0,4070,4072,1,0,0,0,4071,4073, - 3,296,148,0,4072,4071,1,0,0,0,4072,4073,1,0,0,0,4073,275,1,0,0,0, - 4074,4076,5,181,0,0,4075,4077,7,44,0,0,4076,4075,1,0,0,0,4076,4077, - 1,0,0,0,4077,4080,1,0,0,0,4078,4081,3,274,137,0,4079,4081,3,272, - 136,0,4080,4078,1,0,0,0,4080,4079,1,0,0,0,4081,277,1,0,0,0,4082, - 4097,5,95,0,0,4083,4098,3,274,137,0,4084,4098,3,272,136,0,4085,4088, - 5,866,0,0,4086,4089,3,274,137,0,4087,4089,3,272,136,0,4088,4086, - 1,0,0,0,4088,4087,1,0,0,0,4089,4090,1,0,0,0,4090,4095,5,867,0,0, - 4091,4093,5,13,0,0,4092,4091,1,0,0,0,4092,4093,1,0,0,0,4093,4094, - 1,0,0,0,4094,4096,3,702,351,0,4095,4092,1,0,0,0,4095,4096,1,0,0, - 0,4096,4098,1,0,0,0,4097,4083,1,0,0,0,4097,4084,1,0,0,0,4097,4085, - 1,0,0,0,4098,279,1,0,0,0,4099,4100,5,253,0,0,4100,4101,5,866,0,0, - 4101,4102,5,882,0,0,4102,4103,5,868,0,0,4103,4104,5,882,0,0,4104, - 4105,5,337,0,0,4105,4106,5,866,0,0,4106,4107,3,282,141,0,4107,4108, - 5,867,0,0,4108,4113,5,867,0,0,4109,4111,5,13,0,0,4110,4109,1,0,0, - 0,4110,4111,1,0,0,0,4111,4112,1,0,0,0,4112,4114,3,702,351,0,4113, - 4110,1,0,0,0,4113,4114,1,0,0,0,4114,281,1,0,0,0,4115,4120,3,284, - 142,0,4116,4117,5,868,0,0,4117,4119,3,284,142,0,4118,4116,1,0,0, - 0,4119,4122,1,0,0,0,4120,4118,1,0,0,0,4120,4121,1,0,0,0,4121,283, - 1,0,0,0,4122,4120,1,0,0,0,4123,4140,3,658,329,0,4124,4125,5,65,0, - 0,4125,4141,5,256,0,0,4126,4138,3,722,361,0,4127,4128,5,257,0,0, - 4128,4130,5,882,0,0,4129,4131,3,286,143,0,4130,4129,1,0,0,0,4130, - 4131,1,0,0,0,4131,4133,1,0,0,0,4132,4134,3,288,144,0,4133,4132,1, - 0,0,0,4133,4134,1,0,0,0,4134,4139,1,0,0,0,4135,4136,5,60,0,0,4136, - 4137,5,257,0,0,4137,4139,5,882,0,0,4138,4127,1,0,0,0,4138,4135,1, - 0,0,0,4139,4141,1,0,0,0,4140,4124,1,0,0,0,4140,4126,1,0,0,0,4141, - 4153,1,0,0,0,4142,4144,5,255,0,0,4143,4145,5,257,0,0,4144,4143,1, - 0,0,0,4144,4145,1,0,0,0,4145,4146,1,0,0,0,4146,4147,5,882,0,0,4147, - 4148,5,337,0,0,4148,4149,5,866,0,0,4149,4150,3,282,141,0,4150,4151, - 5,867,0,0,4151,4153,1,0,0,0,4152,4123,1,0,0,0,4152,4142,1,0,0,0, - 4153,285,1,0,0,0,4154,4159,5,116,0,0,4155,4159,5,382,0,0,4156,4157, - 5,42,0,0,4157,4159,3,750,375,0,4158,4154,1,0,0,0,4158,4155,1,0,0, - 0,4158,4156,1,0,0,0,4159,4160,1,0,0,0,4160,4161,5,119,0,0,4161,4162, - 5,55,0,0,4162,287,1,0,0,0,4163,4168,5,116,0,0,4164,4168,5,382,0, - 0,4165,4166,5,42,0,0,4166,4168,3,750,375,0,4167,4163,1,0,0,0,4167, - 4164,1,0,0,0,4167,4165,1,0,0,0,4168,4169,1,0,0,0,4169,4170,5,119, - 0,0,4170,4171,5,382,0,0,4171,289,1,0,0,0,4172,4181,7,58,0,0,4173, - 4181,5,76,0,0,4174,4181,5,172,0,0,4175,4181,5,168,0,0,4176,4181, - 5,166,0,0,4177,4181,5,636,0,0,4178,4181,7,59,0,0,4179,4181,5,167, - 0,0,4180,4172,1,0,0,0,4180,4173,1,0,0,0,4180,4174,1,0,0,0,4180,4175, - 1,0,0,0,4180,4176,1,0,0,0,4180,4177,1,0,0,0,4180,4178,1,0,0,0,4180, - 4179,1,0,0,0,4181,291,1,0,0,0,4182,4185,5,850,0,0,4183,4185,3,294, - 147,0,4184,4182,1,0,0,0,4184,4183,1,0,0,0,4185,4190,1,0,0,0,4186, - 4187,5,868,0,0,4187,4189,3,294,147,0,4188,4186,1,0,0,0,4189,4192, - 1,0,0,0,4190,4188,1,0,0,0,4190,4191,1,0,0,0,4191,293,1,0,0,0,4192, - 4190,1,0,0,0,4193,4194,5,892,0,0,4194,4196,5,841,0,0,4195,4193,1, - 0,0,0,4195,4196,1,0,0,0,4196,4197,1,0,0,0,4197,4202,3,800,400,0, - 4198,4200,5,13,0,0,4199,4198,1,0,0,0,4199,4200,1,0,0,0,4200,4201, - 1,0,0,0,4201,4203,3,702,351,0,4202,4199,1,0,0,0,4202,4203,1,0,0, - 0,4203,4223,1,0,0,0,4204,4209,3,760,380,0,4205,4207,5,13,0,0,4206, - 4205,1,0,0,0,4206,4207,1,0,0,0,4207,4208,1,0,0,0,4208,4210,3,702, - 351,0,4209,4206,1,0,0,0,4209,4210,1,0,0,0,4210,4223,1,0,0,0,4211, - 4212,3,698,349,0,4212,4213,5,865,0,0,4213,4214,5,850,0,0,4214,4223, - 1,0,0,0,4215,4220,3,658,329,0,4216,4218,5,13,0,0,4217,4216,1,0,0, - 0,4217,4218,1,0,0,0,4218,4219,1,0,0,0,4219,4221,3,702,351,0,4220, - 4217,1,0,0,0,4220,4221,1,0,0,0,4221,4223,1,0,0,0,4222,4195,1,0,0, - 0,4222,4204,1,0,0,0,4222,4211,1,0,0,0,4222,4215,1,0,0,0,4223,295, - 1,0,0,0,4224,4225,5,88,0,0,4225,4230,3,230,115,0,4226,4227,5,868, - 0,0,4227,4229,3,230,115,0,4228,4226,1,0,0,0,4229,4232,1,0,0,0,4230, - 4228,1,0,0,0,4230,4231,1,0,0,0,4231,4261,1,0,0,0,4232,4230,1,0,0, - 0,4233,4234,5,88,0,0,4234,4235,5,372,0,0,4235,4261,5,882,0,0,4236, - 4237,5,88,0,0,4237,4238,5,128,0,0,4238,4242,5,882,0,0,4239,4240, - 5,26,0,0,4240,4241,5,155,0,0,4241,4243,3,684,342,0,4242,4239,1,0, - 0,0,4242,4243,1,0,0,0,4243,4250,1,0,0,0,4244,4246,7,46,0,0,4245, - 4247,3,298,149,0,4246,4245,1,0,0,0,4247,4248,1,0,0,0,4248,4246,1, - 0,0,0,4248,4249,1,0,0,0,4249,4251,1,0,0,0,4250,4244,1,0,0,0,4250, - 4251,1,0,0,0,4251,4258,1,0,0,0,4252,4254,5,102,0,0,4253,4255,3,300, - 150,0,4254,4253,1,0,0,0,4255,4256,1,0,0,0,4256,4254,1,0,0,0,4256, - 4257,1,0,0,0,4257,4259,1,0,0,0,4258,4252,1,0,0,0,4258,4259,1,0,0, - 0,4259,4261,1,0,0,0,4260,4224,1,0,0,0,4260,4233,1,0,0,0,4260,4236, - 1,0,0,0,4261,297,1,0,0,0,4262,4263,5,174,0,0,4263,4264,5,20,0,0, - 4264,4275,5,882,0,0,4265,4267,5,123,0,0,4266,4265,1,0,0,0,4266,4267, - 1,0,0,0,4267,4268,1,0,0,0,4268,4269,5,56,0,0,4269,4270,5,20,0,0, - 4270,4275,5,882,0,0,4271,4272,5,58,0,0,4272,4273,5,20,0,0,4273,4275, - 5,882,0,0,4274,4262,1,0,0,0,4274,4266,1,0,0,0,4274,4271,1,0,0,0, - 4275,299,1,0,0,0,4276,4277,5,171,0,0,4277,4278,5,20,0,0,4278,4283, - 5,882,0,0,4279,4280,5,174,0,0,4280,4281,5,20,0,0,4281,4283,5,882, - 0,0,4282,4276,1,0,0,0,4282,4279,1,0,0,0,4283,301,1,0,0,0,4284,4285, - 5,68,0,0,4285,4287,3,256,128,0,4286,4284,1,0,0,0,4286,4287,1,0,0, - 0,4287,4290,1,0,0,0,4288,4289,5,192,0,0,4289,4291,3,800,400,0,4290, - 4288,1,0,0,0,4290,4291,1,0,0,0,4291,303,1,0,0,0,4292,4293,5,74,0, - 0,4293,4294,5,20,0,0,4294,4299,3,310,155,0,4295,4296,5,868,0,0,4296, - 4298,3,310,155,0,4297,4295,1,0,0,0,4298,4301,1,0,0,0,4299,4297,1, - 0,0,0,4299,4300,1,0,0,0,4300,4304,1,0,0,0,4301,4299,1,0,0,0,4302, - 4303,5,194,0,0,4303,4305,5,584,0,0,4304,4302,1,0,0,0,4304,4305,1, - 0,0,0,4305,305,1,0,0,0,4306,4307,5,75,0,0,4307,4308,3,800,400,0, - 4308,307,1,0,0,0,4309,4310,5,689,0,0,4310,4311,3,778,389,0,4311, - 4312,5,13,0,0,4312,4313,5,866,0,0,4313,4314,3,776,388,0,4314,4324, - 5,867,0,0,4315,4316,5,868,0,0,4316,4317,3,778,389,0,4317,4318,5, - 13,0,0,4318,4319,5,866,0,0,4319,4320,3,776,388,0,4320,4321,5,867, - 0,0,4321,4323,1,0,0,0,4322,4315,1,0,0,0,4323,4326,1,0,0,0,4324,4322, - 1,0,0,0,4324,4325,1,0,0,0,4325,309,1,0,0,0,4326,4324,1,0,0,0,4327, - 4329,3,800,400,0,4328,4330,7,54,0,0,4329,4328,1,0,0,0,4329,4330, - 1,0,0,0,4330,311,1,0,0,0,4331,4342,5,100,0,0,4332,4333,3,314,157, - 0,4333,4334,5,868,0,0,4334,4336,1,0,0,0,4335,4332,1,0,0,0,4335,4336, - 1,0,0,0,4336,4337,1,0,0,0,4337,4343,3,314,157,0,4338,4339,3,314, - 157,0,4339,4340,5,509,0,0,4340,4341,3,314,157,0,4341,4343,1,0,0, - 0,4342,4335,1,0,0,0,4342,4338,1,0,0,0,4343,313,1,0,0,0,4344,4348, - 3,708,354,0,4345,4348,3,682,341,0,4346,4348,3,704,352,0,4347,4344, - 1,0,0,0,4347,4345,1,0,0,0,4347,4346,1,0,0,0,4348,315,1,0,0,0,4349, - 4350,5,640,0,0,4350,4359,5,664,0,0,4351,4356,3,338,169,0,4352,4353, - 5,868,0,0,4353,4355,3,338,169,0,4354,4352,1,0,0,0,4355,4358,1,0, - 0,0,4356,4354,1,0,0,0,4356,4357,1,0,0,0,4357,4360,1,0,0,0,4358,4356, - 1,0,0,0,4359,4351,1,0,0,0,4359,4360,1,0,0,0,4360,317,1,0,0,0,4361, - 4363,5,317,0,0,4362,4364,5,691,0,0,4363,4362,1,0,0,0,4363,4364,1, - 0,0,0,4364,319,1,0,0,0,4365,4367,5,341,0,0,4366,4368,5,691,0,0,4367, - 4366,1,0,0,0,4367,4368,1,0,0,0,4368,4374,1,0,0,0,4369,4371,5,11, - 0,0,4370,4372,5,502,0,0,4371,4370,1,0,0,0,4371,4372,1,0,0,0,4372, - 4373,1,0,0,0,4373,4375,5,326,0,0,4374,4369,1,0,0,0,4374,4375,1,0, - 0,0,4375,4380,1,0,0,0,4376,4378,5,502,0,0,4377,4376,1,0,0,0,4377, - 4378,1,0,0,0,4378,4379,1,0,0,0,4379,4381,5,140,0,0,4380,4377,1,0, - 0,0,4380,4381,1,0,0,0,4381,321,1,0,0,0,4382,4384,5,583,0,0,4383, - 4385,5,691,0,0,4384,4383,1,0,0,0,4384,4385,1,0,0,0,4385,4391,1,0, - 0,0,4386,4388,5,11,0,0,4387,4389,5,502,0,0,4388,4387,1,0,0,0,4388, - 4389,1,0,0,0,4389,4390,1,0,0,0,4390,4392,5,326,0,0,4391,4386,1,0, - 0,0,4391,4392,1,0,0,0,4392,4397,1,0,0,0,4393,4395,5,502,0,0,4394, - 4393,1,0,0,0,4394,4395,1,0,0,0,4395,4396,1,0,0,0,4396,4398,5,140, - 0,0,4397,4394,1,0,0,0,4397,4398,1,0,0,0,4398,323,1,0,0,0,4399,4400, - 5,589,0,0,4400,4401,3,702,351,0,4401,325,1,0,0,0,4402,4404,5,583, - 0,0,4403,4405,5,691,0,0,4404,4403,1,0,0,0,4404,4405,1,0,0,0,4405, - 4406,1,0,0,0,4406,4408,5,176,0,0,4407,4409,5,589,0,0,4408,4407,1, - 0,0,0,4408,4409,1,0,0,0,4409,4410,1,0,0,0,4410,4411,3,702,351,0, - 4411,327,1,0,0,0,4412,4413,5,140,0,0,4413,4414,5,589,0,0,4414,4415, - 3,702,351,0,4415,329,1,0,0,0,4416,4417,5,104,0,0,4417,4418,7,60, - 0,0,4418,4423,3,340,170,0,4419,4420,5,868,0,0,4420,4422,3,340,170, - 0,4421,4419,1,0,0,0,4422,4425,1,0,0,0,4423,4421,1,0,0,0,4423,4424, - 1,0,0,0,4424,331,1,0,0,0,4425,4423,1,0,0,0,4426,4427,5,183,0,0,4427, - 4428,5,752,0,0,4428,333,1,0,0,0,4429,4430,5,155,0,0,4430,4431,5, - 313,0,0,4431,4432,5,857,0,0,4432,4433,7,25,0,0,4433,335,1,0,0,0, - 4434,4436,5,155,0,0,4435,4437,7,61,0,0,4436,4435,1,0,0,0,4436,4437, - 1,0,0,0,4437,4438,1,0,0,0,4438,4439,5,664,0,0,4439,4444,3,344,172, - 0,4440,4441,5,868,0,0,4441,4443,3,344,172,0,4442,4440,1,0,0,0,4443, - 4446,1,0,0,0,4444,4442,1,0,0,0,4444,4445,1,0,0,0,4445,337,1,0,0, - 0,4446,4444,1,0,0,0,4447,4448,5,194,0,0,4448,4449,5,350,0,0,4449, - 4455,5,600,0,0,4450,4451,5,135,0,0,4451,4455,5,195,0,0,4452,4453, - 5,135,0,0,4453,4455,5,515,0,0,4454,4447,1,0,0,0,4454,4450,1,0,0, - 0,4454,4452,1,0,0,0,4455,339,1,0,0,0,4456,4461,3,648,324,0,4457, - 4459,5,13,0,0,4458,4457,1,0,0,0,4458,4459,1,0,0,0,4459,4460,1,0, - 0,0,4460,4462,3,702,351,0,4461,4458,1,0,0,0,4461,4462,1,0,0,0,4462, - 4463,1,0,0,0,4463,4464,3,342,171,0,4464,341,1,0,0,0,4465,4467,5, - 135,0,0,4466,4468,5,450,0,0,4467,4466,1,0,0,0,4467,4468,1,0,0,0, - 4468,4474,1,0,0,0,4469,4471,5,107,0,0,4470,4469,1,0,0,0,4470,4471, - 1,0,0,0,4471,4472,1,0,0,0,4472,4474,5,195,0,0,4473,4465,1,0,0,0, - 4473,4470,1,0,0,0,4474,343,1,0,0,0,4475,4476,5,440,0,0,4476,4477, - 5,448,0,0,4477,4483,3,346,173,0,4478,4479,5,135,0,0,4479,4483,5, - 195,0,0,4480,4481,5,135,0,0,4481,4483,5,515,0,0,4482,4475,1,0,0, - 0,4482,4478,1,0,0,0,4482,4480,1,0,0,0,4483,345,1,0,0,0,4484,4485, - 5,809,0,0,4485,4492,5,135,0,0,4486,4487,5,135,0,0,4487,4492,5,810, - 0,0,4488,4489,5,135,0,0,4489,4492,5,811,0,0,4490,4492,5,812,0,0, - 4491,4484,1,0,0,0,4491,4486,1,0,0,0,4491,4488,1,0,0,0,4491,4490, - 1,0,0,0,4492,347,1,0,0,0,4493,4494,5,25,0,0,4494,4495,5,453,0,0, - 4495,4496,5,176,0,0,4496,4501,3,364,182,0,4497,4498,5,868,0,0,4498, - 4500,3,364,182,0,4499,4497,1,0,0,0,4500,4503,1,0,0,0,4501,4499,1, - 0,0,0,4501,4502,1,0,0,0,4502,4505,1,0,0,0,4503,4501,1,0,0,0,4504, - 4506,3,384,192,0,4505,4504,1,0,0,0,4505,4506,1,0,0,0,4506,349,1, - 0,0,0,4507,4508,5,25,0,0,4508,4509,5,572,0,0,4509,4510,5,400,0,0, - 4510,4515,3,386,193,0,4511,4512,5,868,0,0,4512,4514,3,386,193,0, - 4513,4511,1,0,0,0,4514,4517,1,0,0,0,4515,4513,1,0,0,0,4515,4516, - 1,0,0,0,4516,4519,1,0,0,0,4517,4515,1,0,0,0,4518,4520,3,384,192, - 0,4519,4518,1,0,0,0,4519,4520,1,0,0,0,4520,351,1,0,0,0,4521,4522, - 5,25,0,0,4522,4523,5,572,0,0,4523,4524,5,605,0,0,4524,4525,5,176, - 0,0,4525,4530,3,374,187,0,4526,4527,5,868,0,0,4527,4529,3,374,187, - 0,4528,4526,1,0,0,0,4529,4532,1,0,0,0,4530,4528,1,0,0,0,4530,4531, - 1,0,0,0,4531,4534,1,0,0,0,4532,4530,1,0,0,0,4533,4535,3,384,192, - 0,4534,4533,1,0,0,0,4534,4535,1,0,0,0,4535,353,1,0,0,0,4536,4537, - 5,133,0,0,4537,4538,7,62,0,0,4538,4543,5,452,0,0,4539,4540,5,176, - 0,0,4540,4544,5,882,0,0,4541,4542,5,16,0,0,4542,4544,5,882,0,0,4543, - 4539,1,0,0,0,4543,4541,1,0,0,0,4544,355,1,0,0,0,4545,4546,5,640, - 0,0,4546,4555,7,63,0,0,4547,4552,3,390,195,0,4548,4549,5,868,0,0, - 4549,4551,3,390,195,0,4550,4548,1,0,0,0,4551,4554,1,0,0,0,4552,4550, - 1,0,0,0,4552,4553,1,0,0,0,4553,4556,1,0,0,0,4554,4552,1,0,0,0,4555, - 4547,1,0,0,0,4555,4556,1,0,0,0,4556,4559,1,0,0,0,4557,4558,5,676, - 0,0,4558,4560,3,392,196,0,4559,4557,1,0,0,0,4559,4560,1,0,0,0,4560, - 4564,1,0,0,0,4561,4563,3,394,197,0,4562,4561,1,0,0,0,4563,4566,1, - 0,0,0,4564,4562,1,0,0,0,4564,4565,1,0,0,0,4565,4568,1,0,0,0,4566, - 4564,1,0,0,0,4567,4569,3,384,192,0,4568,4567,1,0,0,0,4568,4569,1, - 0,0,0,4569,357,1,0,0,0,4570,4571,5,646,0,0,4571,4580,7,63,0,0,4572, - 4577,3,390,195,0,4573,4574,5,868,0,0,4574,4576,3,390,195,0,4575, - 4573,1,0,0,0,4576,4579,1,0,0,0,4577,4575,1,0,0,0,4577,4578,1,0,0, - 0,4578,4581,1,0,0,0,4579,4577,1,0,0,0,4580,4572,1,0,0,0,4580,4581, - 1,0,0,0,4581,4583,1,0,0,0,4582,4584,3,384,192,0,4583,4582,1,0,0, - 0,4583,4584,1,0,0,0,4584,359,1,0,0,0,4585,4586,5,640,0,0,4586,4590, - 5,415,0,0,4587,4588,5,678,0,0,4588,4589,5,857,0,0,4589,4591,5,882, - 0,0,4590,4587,1,0,0,0,4590,4591,1,0,0,0,4591,4596,1,0,0,0,4592,4593, - 5,868,0,0,4593,4594,5,529,0,0,4594,4595,5,857,0,0,4595,4597,5,882, - 0,0,4596,4592,1,0,0,0,4596,4597,1,0,0,0,4597,4602,1,0,0,0,4598,4599, - 5,868,0,0,4599,4600,5,363,0,0,4600,4601,5,857,0,0,4601,4603,5,882, - 0,0,4602,4598,1,0,0,0,4602,4603,1,0,0,0,4603,361,1,0,0,0,4604,4605, - 5,646,0,0,4605,4606,5,415,0,0,4606,363,1,0,0,0,4607,4608,3,366,183, - 0,4608,4609,5,857,0,0,4609,4610,5,882,0,0,4610,4635,1,0,0,0,4611, - 4612,3,368,184,0,4612,4613,5,857,0,0,4613,4614,3,708,354,0,4614, - 4635,1,0,0,0,4615,4616,3,370,185,0,4616,4617,5,857,0,0,4617,4618, - 7,25,0,0,4618,4635,1,0,0,0,4619,4635,3,372,186,0,4620,4621,5,424, - 0,0,4621,4622,5,857,0,0,4622,4631,5,866,0,0,4623,4628,3,702,351, - 0,4624,4625,5,868,0,0,4625,4627,3,702,351,0,4626,4624,1,0,0,0,4627, - 4630,1,0,0,0,4628,4626,1,0,0,0,4628,4629,1,0,0,0,4629,4632,1,0,0, - 0,4630,4628,1,0,0,0,4631,4623,1,0,0,0,4631,4632,1,0,0,0,4632,4633, - 1,0,0,0,4633,4635,5,867,0,0,4634,4607,1,0,0,0,4634,4611,1,0,0,0, - 4634,4615,1,0,0,0,4634,4619,1,0,0,0,4634,4620,1,0,0,0,4635,365,1, - 0,0,0,4636,4637,7,64,0,0,4637,367,1,0,0,0,4638,4639,7,65,0,0,4639, - 369,1,0,0,0,4640,4641,7,66,0,0,4641,371,1,0,0,0,4642,4643,5,543, - 0,0,4643,4644,5,857,0,0,4644,4656,7,67,0,0,4645,4646,5,574,0,0,4646, - 4647,5,857,0,0,4647,4656,7,68,0,0,4648,4649,5,310,0,0,4649,4653, - 5,857,0,0,4650,4654,5,507,0,0,4651,4654,5,450,0,0,4652,4654,3,396, - 198,0,4653,4650,1,0,0,0,4653,4651,1,0,0,0,4653,4652,1,0,0,0,4654, - 4656,1,0,0,0,4655,4642,1,0,0,0,4655,4645,1,0,0,0,4655,4648,1,0,0, - 0,4656,373,1,0,0,0,4657,4658,3,376,188,0,4658,4659,5,857,0,0,4659, - 4660,5,882,0,0,4660,4685,1,0,0,0,4661,4662,3,378,189,0,4662,4663, - 5,857,0,0,4663,4664,3,708,354,0,4664,4685,1,0,0,0,4665,4666,3,380, - 190,0,4666,4667,5,857,0,0,4667,4668,7,25,0,0,4668,4685,1,0,0,0,4669, - 4685,3,382,191,0,4670,4671,5,424,0,0,4671,4672,5,857,0,0,4672,4681, - 5,866,0,0,4673,4678,3,702,351,0,4674,4675,5,868,0,0,4675,4677,3, - 702,351,0,4676,4674,1,0,0,0,4677,4680,1,0,0,0,4678,4676,1,0,0,0, - 4678,4679,1,0,0,0,4679,4682,1,0,0,0,4680,4678,1,0,0,0,4681,4673, - 1,0,0,0,4681,4682,1,0,0,0,4682,4683,1,0,0,0,4683,4685,5,867,0,0, - 4684,4657,1,0,0,0,4684,4661,1,0,0,0,4684,4665,1,0,0,0,4684,4669, - 1,0,0,0,4684,4670,1,0,0,0,4685,375,1,0,0,0,4686,4687,7,69,0,0,4687, - 377,1,0,0,0,4688,4689,7,70,0,0,4689,379,1,0,0,0,4690,4691,7,71,0, - 0,4691,381,1,0,0,0,4692,4693,5,543,0,0,4693,4694,5,857,0,0,4694, - 4706,7,67,0,0,4695,4696,5,574,0,0,4696,4697,5,857,0,0,4697,4706, - 7,72,0,0,4698,4699,5,310,0,0,4699,4703,5,857,0,0,4700,4704,5,507, - 0,0,4701,4704,5,450,0,0,4702,4704,3,396,198,0,4703,4700,1,0,0,0, - 4703,4701,1,0,0,0,4703,4702,1,0,0,0,4704,4706,1,0,0,0,4705,4692, - 1,0,0,0,4705,4695,1,0,0,0,4705,4698,1,0,0,0,4706,383,1,0,0,0,4707, - 4708,5,65,0,0,4708,4709,5,328,0,0,4709,4710,5,882,0,0,4710,385,1, - 0,0,0,4711,4712,5,565,0,0,4712,4713,5,857,0,0,4713,4714,5,866,0, - 0,4714,4719,3,624,312,0,4715,4716,5,868,0,0,4716,4718,3,624,312, - 0,4717,4715,1,0,0,0,4718,4721,1,0,0,0,4719,4717,1,0,0,0,4719,4720, - 1,0,0,0,4720,4722,1,0,0,0,4721,4719,1,0,0,0,4722,4723,5,867,0,0, - 4723,4775,1,0,0,0,4724,4725,5,567,0,0,4725,4726,5,857,0,0,4726,4727, - 5,866,0,0,4727,4732,3,624,312,0,4728,4729,5,868,0,0,4729,4731,3, - 624,312,0,4730,4728,1,0,0,0,4731,4734,1,0,0,0,4732,4730,1,0,0,0, - 4732,4733,1,0,0,0,4733,4735,1,0,0,0,4734,4732,1,0,0,0,4735,4736, - 5,867,0,0,4736,4775,1,0,0,0,4737,4738,5,566,0,0,4738,4739,5,857, - 0,0,4739,4740,5,866,0,0,4740,4741,3,646,323,0,4741,4742,5,867,0, - 0,4742,4775,1,0,0,0,4743,4744,5,568,0,0,4744,4745,5,857,0,0,4745, - 4746,5,866,0,0,4746,4747,3,646,323,0,4747,4748,5,867,0,0,4748,4775, - 1,0,0,0,4749,4750,5,570,0,0,4750,4751,5,857,0,0,4751,4752,5,866, - 0,0,4752,4753,3,746,373,0,4753,4754,5,867,0,0,4754,4775,1,0,0,0, - 4755,4756,5,571,0,0,4756,4757,5,857,0,0,4757,4758,5,866,0,0,4758, - 4759,3,746,373,0,4759,4760,5,867,0,0,4760,4775,1,0,0,0,4761,4762, - 5,569,0,0,4762,4763,5,857,0,0,4763,4764,5,866,0,0,4764,4769,3,388, - 194,0,4765,4766,5,868,0,0,4766,4768,3,388,194,0,4767,4765,1,0,0, - 0,4768,4771,1,0,0,0,4769,4767,1,0,0,0,4769,4770,1,0,0,0,4770,4772, - 1,0,0,0,4771,4769,1,0,0,0,4772,4773,5,867,0,0,4773,4775,1,0,0,0, - 4774,4711,1,0,0,0,4774,4724,1,0,0,0,4774,4737,1,0,0,0,4774,4743, - 1,0,0,0,4774,4749,1,0,0,0,4774,4755,1,0,0,0,4774,4761,1,0,0,0,4775, - 387,1,0,0,0,4776,4777,5,866,0,0,4777,4778,3,648,324,0,4778,4779, - 5,868,0,0,4779,4780,3,648,324,0,4780,4781,5,867,0,0,4781,389,1,0, - 0,0,4782,4783,7,73,0,0,4783,391,1,0,0,0,4784,4785,7,74,0,0,4785, - 4786,5,857,0,0,4786,4810,3,396,198,0,4787,4788,5,460,0,0,4788,4789, - 5,857,0,0,4789,4790,5,882,0,0,4790,4791,5,868,0,0,4791,4792,5,461, - 0,0,4792,4793,5,857,0,0,4793,4810,3,708,354,0,4794,4795,5,611,0, - 0,4795,4796,5,857,0,0,4796,4797,5,882,0,0,4797,4798,5,868,0,0,4798, - 4799,5,612,0,0,4799,4800,5,857,0,0,4800,4810,3,708,354,0,4801,4802, - 5,557,0,0,4802,4803,5,857,0,0,4803,4804,5,882,0,0,4804,4805,5,868, - 0,0,4805,4806,5,558,0,0,4806,4807,5,857,0,0,4807,4810,3,708,354, - 0,4808,4810,5,634,0,0,4809,4784,1,0,0,0,4809,4787,1,0,0,0,4809,4794, - 1,0,0,0,4809,4801,1,0,0,0,4809,4808,1,0,0,0,4810,393,1,0,0,0,4811, - 4812,5,678,0,0,4812,4813,5,857,0,0,4813,4824,5,882,0,0,4814,4815, - 5,529,0,0,4815,4816,5,857,0,0,4816,4824,5,882,0,0,4817,4818,5,363, - 0,0,4818,4819,5,857,0,0,4819,4824,5,882,0,0,4820,4821,5,535,0,0, - 4821,4822,5,857,0,0,4822,4824,5,882,0,0,4823,4811,1,0,0,0,4823,4814, - 1,0,0,0,4823,4817,1,0,0,0,4823,4820,1,0,0,0,4824,395,1,0,0,0,4825, - 4830,3,692,346,0,4826,4827,5,868,0,0,4827,4829,3,692,346,0,4828, - 4826,1,0,0,0,4829,4832,1,0,0,0,4830,4828,1,0,0,0,4830,4831,1,0,0, - 0,4831,4835,1,0,0,0,4832,4830,1,0,0,0,4833,4835,5,882,0,0,4834,4825, - 1,0,0,0,4834,4833,1,0,0,0,4835,397,1,0,0,0,4836,4837,5,694,0,0,4837, - 4838,7,75,0,0,4838,4840,3,694,347,0,4839,4841,7,76,0,0,4840,4839, - 1,0,0,0,4840,4841,1,0,0,0,4841,399,1,0,0,0,4842,4843,5,694,0,0,4843, - 4844,5,378,0,0,4844,4850,3,694,347,0,4845,4848,5,654,0,0,4846,4847, - 5,65,0,0,4847,4849,5,489,0,0,4848,4846,1,0,0,0,4848,4849,1,0,0,0, - 4849,4851,1,0,0,0,4850,4845,1,0,0,0,4850,4851,1,0,0,0,4851,401,1, - 0,0,0,4852,4853,5,694,0,0,4853,4854,5,540,0,0,4854,4855,3,694,347, - 0,4855,403,1,0,0,0,4856,4857,5,694,0,0,4857,4858,5,341,0,0,4858, - 4861,3,694,347,0,4859,4860,5,513,0,0,4860,4862,5,533,0,0,4861,4859, - 1,0,0,0,4861,4862,1,0,0,0,4862,405,1,0,0,0,4863,4864,5,694,0,0,4864, - 4865,5,583,0,0,4865,4866,3,694,347,0,4866,407,1,0,0,0,4867,4868, - 5,694,0,0,4868,4871,5,551,0,0,4869,4870,5,33,0,0,4870,4872,3,694, - 347,0,4871,4869,1,0,0,0,4871,4872,1,0,0,0,4872,409,1,0,0,0,4873, - 4874,5,540,0,0,4874,4875,3,702,351,0,4875,4878,5,68,0,0,4876,4879, - 5,882,0,0,4877,4879,5,892,0,0,4878,4876,1,0,0,0,4878,4877,1,0,0, - 0,4879,411,1,0,0,0,4880,4881,5,717,0,0,4881,4884,3,702,351,0,4882, - 4883,5,188,0,0,4883,4885,3,748,374,0,4884,4882,1,0,0,0,4884,4885, - 1,0,0,0,4885,413,1,0,0,0,4886,4887,7,77,0,0,4887,4888,5,540,0,0, - 4888,4889,3,702,351,0,4889,415,1,0,0,0,4890,4893,3,418,209,0,4891, - 4893,3,4,2,0,4892,4890,1,0,0,0,4892,4891,1,0,0,0,4893,417,1,0,0, - 0,4894,4895,3,702,351,0,4895,4896,5,878,0,0,4896,4898,1,0,0,0,4897, - 4894,1,0,0,0,4897,4898,1,0,0,0,4898,4899,1,0,0,0,4899,4905,5,317, - 0,0,4900,4901,3,438,219,0,4901,4902,5,869,0,0,4902,4904,1,0,0,0, - 4903,4900,1,0,0,0,4904,4907,1,0,0,0,4905,4903,1,0,0,0,4905,4906, - 1,0,0,0,4906,4913,1,0,0,0,4907,4905,1,0,0,0,4908,4909,3,440,220, - 0,4909,4910,5,869,0,0,4910,4912,1,0,0,0,4911,4908,1,0,0,0,4912,4915, - 1,0,0,0,4913,4911,1,0,0,0,4913,4914,1,0,0,0,4914,4921,1,0,0,0,4915, - 4913,1,0,0,0,4916,4917,3,442,221,0,4917,4918,5,869,0,0,4918,4920, - 1,0,0,0,4919,4916,1,0,0,0,4920,4923,1,0,0,0,4921,4919,1,0,0,0,4921, - 4922,1,0,0,0,4922,4929,1,0,0,0,4923,4921,1,0,0,0,4924,4925,3,444, - 222,0,4925,4926,5,869,0,0,4926,4928,1,0,0,0,4927,4924,1,0,0,0,4928, - 4931,1,0,0,0,4929,4927,1,0,0,0,4929,4930,1,0,0,0,4930,4935,1,0,0, - 0,4931,4929,1,0,0,0,4932,4934,3,448,224,0,4933,4932,1,0,0,0,4934, - 4937,1,0,0,0,4935,4933,1,0,0,0,4935,4936,1,0,0,0,4936,4938,1,0,0, - 0,4937,4935,1,0,0,0,4938,4940,5,378,0,0,4939,4941,3,702,351,0,4940, - 4939,1,0,0,0,4940,4941,1,0,0,0,4941,419,1,0,0,0,4942,4945,5,23,0, - 0,4943,4946,3,702,351,0,4944,4946,3,800,400,0,4945,4943,1,0,0,0, - 4945,4944,1,0,0,0,4945,4946,1,0,0,0,4946,4948,1,0,0,0,4947,4949, - 3,450,225,0,4948,4947,1,0,0,0,4949,4950,1,0,0,0,4950,4948,1,0,0, - 0,4950,4951,1,0,0,0,4951,4958,1,0,0,0,4952,4954,5,53,0,0,4953,4955, - 3,448,224,0,4954,4953,1,0,0,0,4955,4956,1,0,0,0,4956,4954,1,0,0, - 0,4956,4957,1,0,0,0,4957,4959,1,0,0,0,4958,4952,1,0,0,0,4958,4959, - 1,0,0,0,4959,4960,1,0,0,0,4960,4961,5,378,0,0,4961,4962,5,23,0,0, - 4962,421,1,0,0,0,4963,4964,5,78,0,0,4964,4965,3,800,400,0,4965,4967, - 5,175,0,0,4966,4968,3,448,224,0,4967,4966,1,0,0,0,4968,4969,1,0, - 0,0,4969,4967,1,0,0,0,4969,4970,1,0,0,0,4970,4974,1,0,0,0,4971,4973, - 3,452,226,0,4972,4971,1,0,0,0,4973,4976,1,0,0,0,4974,4972,1,0,0, - 0,4974,4975,1,0,0,0,4975,4983,1,0,0,0,4976,4974,1,0,0,0,4977,4979, - 5,53,0,0,4978,4980,3,448,224,0,4979,4978,1,0,0,0,4980,4981,1,0,0, - 0,4981,4979,1,0,0,0,4981,4982,1,0,0,0,4982,4984,1,0,0,0,4983,4977, - 1,0,0,0,4983,4984,1,0,0,0,4984,4985,1,0,0,0,4985,4986,5,378,0,0, - 4986,4987,5,78,0,0,4987,423,1,0,0,0,4988,4989,5,90,0,0,4989,4990, - 3,702,351,0,4990,425,1,0,0,0,4991,4992,5,97,0,0,4992,4993,3,702, - 351,0,4993,427,1,0,0,0,4994,4995,3,702,351,0,4995,4996,5,878,0,0, - 4996,4998,1,0,0,0,4997,4994,1,0,0,0,4997,4998,1,0,0,0,4998,4999, - 1,0,0,0,4999,5001,5,106,0,0,5000,5002,3,448,224,0,5001,5000,1,0, - 0,0,5002,5003,1,0,0,0,5003,5001,1,0,0,0,5003,5004,1,0,0,0,5004,5005, - 1,0,0,0,5005,5006,5,378,0,0,5006,5008,5,106,0,0,5007,5009,3,702, - 351,0,5008,5007,1,0,0,0,5008,5009,1,0,0,0,5009,429,1,0,0,0,5010, - 5011,3,702,351,0,5011,5012,5,878,0,0,5012,5014,1,0,0,0,5013,5010, - 1,0,0,0,5013,5014,1,0,0,0,5014,5015,1,0,0,0,5015,5017,5,142,0,0, - 5016,5018,3,448,224,0,5017,5016,1,0,0,0,5018,5019,1,0,0,0,5019,5017, - 1,0,0,0,5019,5020,1,0,0,0,5020,5021,1,0,0,0,5021,5022,5,676,0,0, - 5022,5023,3,800,400,0,5023,5024,5,378,0,0,5024,5026,5,142,0,0,5025, - 5027,3,702,351,0,5026,5025,1,0,0,0,5026,5027,1,0,0,0,5027,431,1, - 0,0,0,5028,5029,5,148,0,0,5029,5030,3,800,400,0,5030,433,1,0,0,0, - 5031,5032,3,702,351,0,5032,5033,5,878,0,0,5033,5035,1,0,0,0,5034, - 5031,1,0,0,0,5034,5035,1,0,0,0,5035,5036,1,0,0,0,5036,5037,5,193, - 0,0,5037,5038,3,800,400,0,5038,5040,5,371,0,0,5039,5041,3,448,224, - 0,5040,5039,1,0,0,0,5041,5042,1,0,0,0,5042,5040,1,0,0,0,5042,5043, - 1,0,0,0,5043,5044,1,0,0,0,5044,5045,5,378,0,0,5045,5047,5,193,0, - 0,5046,5048,3,702,351,0,5047,5046,1,0,0,0,5047,5048,1,0,0,0,5048, - 435,1,0,0,0,5049,5050,5,334,0,0,5050,5065,3,702,351,0,5051,5056, - 5,64,0,0,5052,5054,5,501,0,0,5053,5052,1,0,0,0,5053,5054,1,0,0,0, - 5054,5055,1,0,0,0,5055,5057,5,68,0,0,5056,5053,1,0,0,0,5056,5057, - 1,0,0,0,5057,5058,1,0,0,0,5058,5059,3,702,351,0,5059,5060,5,88,0, - 0,5060,5061,3,700,350,0,5061,5065,1,0,0,0,5062,5063,5,516,0,0,5063, - 5065,3,702,351,0,5064,5049,1,0,0,0,5064,5051,1,0,0,0,5064,5062,1, - 0,0,0,5065,437,1,0,0,0,5066,5067,5,41,0,0,5067,5068,3,700,350,0, - 5068,5071,3,722,361,0,5069,5070,5,42,0,0,5070,5072,3,800,400,0,5071, - 5069,1,0,0,0,5071,5072,1,0,0,0,5072,439,1,0,0,0,5073,5074,5,41,0, - 0,5074,5075,3,702,351,0,5075,5076,5,30,0,0,5076,5083,5,65,0,0,5077, - 5084,3,708,354,0,5078,5080,5,164,0,0,5079,5081,5,682,0,0,5080,5079, - 1,0,0,0,5080,5081,1,0,0,0,5081,5082,1,0,0,0,5082,5084,5,882,0,0, - 5083,5077,1,0,0,0,5083,5078,1,0,0,0,5084,441,1,0,0,0,5085,5086,5, - 41,0,0,5086,5087,3,702,351,0,5087,5088,5,38,0,0,5088,5089,5,65,0, - 0,5089,5090,3,204,102,0,5090,443,1,0,0,0,5091,5092,5,41,0,0,5092, - 5093,7,78,0,0,5093,5094,5,417,0,0,5094,5095,5,65,0,0,5095,5100,3, - 446,223,0,5096,5097,5,868,0,0,5097,5099,3,446,223,0,5098,5096,1, - 0,0,0,5099,5102,1,0,0,0,5100,5098,1,0,0,0,5100,5101,1,0,0,0,5101, - 5103,1,0,0,0,5102,5100,1,0,0,0,5103,5104,3,416,208,0,5104,445,1, - 0,0,0,5105,5117,3,708,354,0,5106,5108,5,164,0,0,5107,5109,5,682, - 0,0,5108,5107,1,0,0,0,5108,5109,1,0,0,0,5109,5110,1,0,0,0,5110,5117, - 5,882,0,0,5111,5117,3,702,351,0,5112,5117,5,165,0,0,5113,5114,5, - 114,0,0,5114,5117,5,407,0,0,5115,5117,5,163,0,0,5116,5105,1,0,0, - 0,5116,5106,1,0,0,0,5116,5111,1,0,0,0,5116,5112,1,0,0,0,5116,5113, - 1,0,0,0,5116,5115,1,0,0,0,5117,447,1,0,0,0,5118,5121,3,18,9,0,5119, - 5121,3,4,2,0,5120,5118,1,0,0,0,5120,5119,1,0,0,0,5121,5122,1,0,0, - 0,5122,5123,5,869,0,0,5123,449,1,0,0,0,5124,5127,5,191,0,0,5125, - 5128,3,720,360,0,5126,5128,3,800,400,0,5127,5125,1,0,0,0,5127,5126, - 1,0,0,0,5128,5129,1,0,0,0,5129,5131,5,175,0,0,5130,5132,3,448,224, - 0,5131,5130,1,0,0,0,5132,5133,1,0,0,0,5133,5131,1,0,0,0,5133,5134, - 1,0,0,0,5134,451,1,0,0,0,5135,5136,5,54,0,0,5136,5137,3,800,400, - 0,5137,5139,5,175,0,0,5138,5140,3,448,224,0,5139,5138,1,0,0,0,5140, - 5141,1,0,0,0,5141,5139,1,0,0,0,5141,5142,1,0,0,0,5142,453,1,0,0, - 0,5143,5144,5,8,0,0,5144,5146,5,678,0,0,5145,5147,3,754,377,0,5146, - 5145,1,0,0,0,5146,5147,1,0,0,0,5147,5204,1,0,0,0,5148,5153,3,486, - 243,0,5149,5150,5,868,0,0,5150,5152,3,486,243,0,5151,5149,1,0,0, - 0,5152,5155,1,0,0,0,5153,5151,1,0,0,0,5153,5154,1,0,0,0,5154,5205, - 1,0,0,0,5155,5153,1,0,0,0,5156,5161,3,488,244,0,5157,5158,5,868, - 0,0,5158,5160,3,488,244,0,5159,5157,1,0,0,0,5160,5163,1,0,0,0,5161, - 5159,1,0,0,0,5161,5162,1,0,0,0,5162,5178,1,0,0,0,5163,5161,1,0,0, - 0,5164,5176,5,144,0,0,5165,5177,5,505,0,0,5166,5173,3,500,250,0, - 5167,5169,5,11,0,0,5168,5167,1,0,0,0,5168,5169,1,0,0,0,5169,5170, - 1,0,0,0,5170,5172,3,500,250,0,5171,5168,1,0,0,0,5172,5175,1,0,0, - 0,5173,5171,1,0,0,0,5173,5174,1,0,0,0,5174,5177,1,0,0,0,5175,5173, - 1,0,0,0,5176,5165,1,0,0,0,5176,5166,1,0,0,0,5177,5179,1,0,0,0,5178, - 5164,1,0,0,0,5178,5179,1,0,0,0,5179,5186,1,0,0,0,5180,5182,5,194, - 0,0,5181,5183,3,502,251,0,5182,5181,1,0,0,0,5183,5184,1,0,0,0,5184, - 5182,1,0,0,0,5184,5185,1,0,0,0,5185,5187,1,0,0,0,5186,5180,1,0,0, - 0,5186,5187,1,0,0,0,5187,5192,1,0,0,0,5188,5191,3,504,252,0,5189, - 5191,3,506,253,0,5190,5188,1,0,0,0,5190,5189,1,0,0,0,5191,5194,1, - 0,0,0,5192,5190,1,0,0,0,5192,5193,1,0,0,0,5193,5197,1,0,0,0,5194, - 5192,1,0,0,0,5195,5196,7,79,0,0,5196,5198,5,882,0,0,5197,5195,1, - 0,0,0,5197,5198,1,0,0,0,5198,5205,1,0,0,0,5199,5200,3,652,326,0, - 5200,5201,5,42,0,0,5201,5202,5,582,0,0,5202,5203,3,462,231,0,5203, - 5205,1,0,0,0,5204,5148,1,0,0,0,5204,5156,1,0,0,0,5204,5199,1,0,0, - 0,5205,455,1,0,0,0,5206,5207,5,34,0,0,5207,5209,5,678,0,0,5208,5210, - 3,756,378,0,5209,5208,1,0,0,0,5209,5210,1,0,0,0,5210,5211,1,0,0, - 0,5211,5213,3,680,340,0,5212,5214,3,490,245,0,5213,5212,1,0,0,0, - 5213,5214,1,0,0,0,5214,5222,1,0,0,0,5215,5216,5,868,0,0,5216,5218, - 3,680,340,0,5217,5219,3,490,245,0,5218,5217,1,0,0,0,5218,5219,1, - 0,0,0,5219,5221,1,0,0,0,5220,5215,1,0,0,0,5221,5224,1,0,0,0,5222, - 5220,1,0,0,0,5222,5223,1,0,0,0,5223,5228,1,0,0,0,5224,5222,1,0,0, - 0,5225,5226,5,42,0,0,5226,5227,5,582,0,0,5227,5229,3,462,231,0,5228, - 5225,1,0,0,0,5228,5229,1,0,0,0,5229,5244,1,0,0,0,5230,5242,5,144, - 0,0,5231,5243,5,505,0,0,5232,5239,3,500,250,0,5233,5235,5,11,0,0, - 5234,5233,1,0,0,0,5234,5235,1,0,0,0,5235,5236,1,0,0,0,5236,5238, - 3,500,250,0,5237,5234,1,0,0,0,5238,5241,1,0,0,0,5239,5237,1,0,0, - 0,5239,5240,1,0,0,0,5240,5243,1,0,0,0,5241,5239,1,0,0,0,5242,5231, - 1,0,0,0,5242,5232,1,0,0,0,5243,5245,1,0,0,0,5244,5230,1,0,0,0,5244, - 5245,1,0,0,0,5245,5252,1,0,0,0,5246,5248,5,194,0,0,5247,5249,3,502, - 251,0,5248,5247,1,0,0,0,5249,5250,1,0,0,0,5250,5248,1,0,0,0,5250, - 5251,1,0,0,0,5251,5253,1,0,0,0,5252,5246,1,0,0,0,5252,5253,1,0,0, - 0,5253,5258,1,0,0,0,5254,5257,3,504,252,0,5255,5257,3,506,253,0, - 5256,5254,1,0,0,0,5256,5255,1,0,0,0,5257,5260,1,0,0,0,5258,5256, - 1,0,0,0,5258,5259,1,0,0,0,5259,5263,1,0,0,0,5260,5258,1,0,0,0,5261, - 5262,7,79,0,0,5262,5264,5,882,0,0,5263,5261,1,0,0,0,5263,5264,1, - 0,0,0,5264,457,1,0,0,0,5265,5266,5,51,0,0,5266,5268,5,678,0,0,5267, - 5269,3,754,377,0,5268,5267,1,0,0,0,5268,5269,1,0,0,0,5269,5270,1, - 0,0,0,5270,5275,3,680,340,0,5271,5272,5,868,0,0,5272,5274,3,680, - 340,0,5273,5271,1,0,0,0,5274,5277,1,0,0,0,5275,5273,1,0,0,0,5275, - 5276,1,0,0,0,5276,459,1,0,0,0,5277,5275,1,0,0,0,5278,5279,5,73,0, - 0,5279,5284,3,514,257,0,5280,5281,5,868,0,0,5281,5283,3,514,257, - 0,5282,5280,1,0,0,0,5283,5286,1,0,0,0,5284,5282,1,0,0,0,5284,5285, - 1,0,0,0,5285,5287,1,0,0,0,5286,5284,1,0,0,0,5287,5289,5,119,0,0, - 5288,5290,3,482,241,0,5289,5288,1,0,0,0,5289,5290,1,0,0,0,5290,5291, - 1,0,0,0,5291,5292,3,518,259,0,5292,5302,5,176,0,0,5293,5298,3,494, - 247,0,5294,5295,5,868,0,0,5295,5297,3,494,247,0,5296,5294,1,0,0, - 0,5297,5300,1,0,0,0,5298,5296,1,0,0,0,5298,5299,1,0,0,0,5299,5303, - 1,0,0,0,5300,5298,1,0,0,0,5301,5303,3,650,325,0,5302,5293,1,0,0, - 0,5302,5301,1,0,0,0,5303,5318,1,0,0,0,5304,5316,5,144,0,0,5305,5317, - 5,505,0,0,5306,5313,3,500,250,0,5307,5309,5,11,0,0,5308,5307,1,0, - 0,0,5308,5309,1,0,0,0,5309,5310,1,0,0,0,5310,5312,3,500,250,0,5311, - 5308,1,0,0,0,5312,5315,1,0,0,0,5313,5311,1,0,0,0,5313,5314,1,0,0, - 0,5314,5317,1,0,0,0,5315,5313,1,0,0,0,5316,5305,1,0,0,0,5316,5306, - 1,0,0,0,5317,5319,1,0,0,0,5318,5304,1,0,0,0,5318,5319,1,0,0,0,5319, - 5329,1,0,0,0,5320,5326,5,194,0,0,5321,5322,5,73,0,0,5322,5325,5, - 121,0,0,5323,5325,3,502,251,0,5324,5321,1,0,0,0,5324,5323,1,0,0, - 0,5325,5328,1,0,0,0,5326,5324,1,0,0,0,5326,5327,1,0,0,0,5327,5330, - 1,0,0,0,5328,5326,1,0,0,0,5329,5320,1,0,0,0,5329,5330,1,0,0,0,5330, - 5338,1,0,0,0,5331,5332,5,13,0,0,5332,5336,3,680,340,0,5333,5334, - 5,194,0,0,5334,5335,5,582,0,0,5335,5337,3,462,231,0,5336,5333,1, - 0,0,0,5336,5337,1,0,0,0,5337,5339,1,0,0,0,5338,5331,1,0,0,0,5338, - 5339,1,0,0,0,5339,5368,1,0,0,0,5340,5343,5,73,0,0,5341,5342,5,547, - 0,0,5342,5344,5,119,0,0,5343,5341,1,0,0,0,5343,5344,1,0,0,0,5344, - 5345,1,0,0,0,5345,5350,3,652,326,0,5346,5347,5,868,0,0,5347,5349, - 3,652,326,0,5348,5346,1,0,0,0,5349,5352,1,0,0,0,5350,5348,1,0,0, - 0,5350,5351,1,0,0,0,5351,5353,1,0,0,0,5352,5350,1,0,0,0,5353,5354, - 5,176,0,0,5354,5359,3,652,326,0,5355,5356,5,868,0,0,5356,5358,3, - 652,326,0,5357,5355,1,0,0,0,5358,5361,1,0,0,0,5359,5357,1,0,0,0, - 5359,5360,1,0,0,0,5360,5365,1,0,0,0,5361,5359,1,0,0,0,5362,5363, - 5,194,0,0,5363,5364,5,704,0,0,5364,5366,5,121,0,0,5365,5362,1,0, - 0,0,5365,5366,1,0,0,0,5366,5368,1,0,0,0,5367,5278,1,0,0,0,5367,5340, - 1,0,0,0,5368,461,1,0,0,0,5369,5378,5,42,0,0,5370,5378,5,505,0,0, - 5371,5374,5,7,0,0,5372,5373,5,59,0,0,5373,5375,3,650,325,0,5374, - 5372,1,0,0,0,5374,5375,1,0,0,0,5375,5378,1,0,0,0,5376,5378,3,650, - 325,0,5377,5369,1,0,0,0,5377,5370,1,0,0,0,5377,5371,1,0,0,0,5377, - 5376,1,0,0,0,5378,463,1,0,0,0,5379,5380,5,73,0,0,5380,5381,5,547, - 0,0,5381,5382,5,119,0,0,5382,5383,3,680,340,0,5383,5384,5,176,0, - 0,5384,5389,3,680,340,0,5385,5386,5,868,0,0,5386,5388,3,680,340, - 0,5387,5385,1,0,0,0,5388,5391,1,0,0,0,5389,5387,1,0,0,0,5389,5390, - 1,0,0,0,5390,5395,1,0,0,0,5391,5389,1,0,0,0,5392,5393,5,194,0,0, - 5393,5394,5,73,0,0,5394,5396,5,121,0,0,5395,5392,1,0,0,0,5395,5396, - 1,0,0,0,5396,465,1,0,0,0,5397,5398,5,8,0,0,5398,5399,5,739,0,0,5399, - 5400,5,74,0,0,5400,5406,3,642,321,0,5401,5403,5,190,0,0,5402,5404, - 5,857,0,0,5403,5402,1,0,0,0,5403,5404,1,0,0,0,5404,5405,1,0,0,0, - 5405,5407,3,474,237,0,5406,5401,1,0,0,0,5406,5407,1,0,0,0,5407,5413, - 1,0,0,0,5408,5410,5,837,0,0,5409,5411,5,857,0,0,5410,5409,1,0,0, - 0,5410,5411,1,0,0,0,5411,5412,1,0,0,0,5412,5414,3,708,354,0,5413, - 5408,1,0,0,0,5413,5414,1,0,0,0,5414,5419,1,0,0,0,5415,5417,7,38, - 0,0,5416,5418,5,66,0,0,5417,5416,1,0,0,0,5417,5418,1,0,0,0,5418, - 5420,1,0,0,0,5419,5415,1,0,0,0,5419,5420,1,0,0,0,5420,467,1,0,0, - 0,5421,5422,5,34,0,0,5422,5423,5,739,0,0,5423,5424,5,74,0,0,5424, - 5425,3,640,320,0,5425,5426,5,839,0,0,5426,5427,5,857,0,0,5427,5433, - 7,80,0,0,5428,5430,5,190,0,0,5429,5431,5,857,0,0,5430,5429,1,0,0, - 0,5430,5431,1,0,0,0,5431,5432,1,0,0,0,5432,5434,3,474,237,0,5433, - 5428,1,0,0,0,5433,5434,1,0,0,0,5434,5440,1,0,0,0,5435,5437,5,837, - 0,0,5436,5438,5,857,0,0,5437,5436,1,0,0,0,5437,5438,1,0,0,0,5438, - 5439,1,0,0,0,5439,5441,3,708,354,0,5440,5435,1,0,0,0,5440,5441,1, - 0,0,0,5441,5443,1,0,0,0,5442,5444,7,38,0,0,5443,5442,1,0,0,0,5443, - 5444,1,0,0,0,5444,469,1,0,0,0,5445,5446,5,51,0,0,5446,5447,5,739, - 0,0,5447,5448,5,74,0,0,5448,5450,3,642,321,0,5449,5451,5,66,0,0, - 5450,5449,1,0,0,0,5450,5451,1,0,0,0,5451,471,1,0,0,0,5452,5453,5, - 155,0,0,5453,5454,5,739,0,0,5454,5455,5,74,0,0,5455,5465,3,642,321, - 0,5456,5457,5,65,0,0,5457,5462,3,708,354,0,5458,5459,5,868,0,0,5459, - 5461,3,708,354,0,5460,5458,1,0,0,0,5461,5464,1,0,0,0,5462,5460,1, - 0,0,0,5462,5463,1,0,0,0,5463,5466,1,0,0,0,5464,5462,1,0,0,0,5465, - 5456,1,0,0,0,5465,5466,1,0,0,0,5466,473,1,0,0,0,5467,5473,3,708, - 354,0,5468,5469,3,708,354,0,5469,5470,5,854,0,0,5470,5471,3,708, - 354,0,5471,5473,1,0,0,0,5472,5467,1,0,0,0,5472,5468,1,0,0,0,5473, - 5478,1,0,0,0,5474,5475,5,868,0,0,5475,5477,3,474,237,0,5476,5474, - 1,0,0,0,5477,5480,1,0,0,0,5478,5476,1,0,0,0,5478,5479,1,0,0,0,5479, - 475,1,0,0,0,5480,5478,1,0,0,0,5481,5482,5,141,0,0,5482,5483,5,678, - 0,0,5483,5488,3,520,260,0,5484,5485,5,868,0,0,5485,5487,3,520,260, - 0,5486,5484,1,0,0,0,5487,5490,1,0,0,0,5488,5486,1,0,0,0,5488,5489, - 1,0,0,0,5489,477,1,0,0,0,5490,5488,1,0,0,0,5491,5493,5,149,0,0,5492, - 5494,3,754,377,0,5493,5492,1,0,0,0,5493,5494,1,0,0,0,5494,5495,1, - 0,0,0,5495,5500,3,514,257,0,5496,5497,5,868,0,0,5497,5499,3,514, - 257,0,5498,5496,1,0,0,0,5499,5502,1,0,0,0,5500,5498,1,0,0,0,5500, - 5501,1,0,0,0,5501,5503,1,0,0,0,5502,5500,1,0,0,0,5503,5505,5,119, - 0,0,5504,5506,3,482,241,0,5505,5504,1,0,0,0,5505,5506,1,0,0,0,5506, - 5507,1,0,0,0,5507,5508,3,518,259,0,5508,5509,5,68,0,0,5509,5511, - 3,650,325,0,5510,5512,3,480,240,0,5511,5510,1,0,0,0,5511,5512,1, - 0,0,0,5512,5544,1,0,0,0,5513,5515,5,149,0,0,5514,5516,3,754,377, - 0,5515,5514,1,0,0,0,5515,5516,1,0,0,0,5516,5517,1,0,0,0,5517,5519, - 5,7,0,0,5518,5520,5,734,0,0,5519,5518,1,0,0,0,5519,5520,1,0,0,0, - 5520,5521,1,0,0,0,5521,5522,5,868,0,0,5522,5523,5,73,0,0,5523,5524, - 5,121,0,0,5524,5525,5,68,0,0,5525,5527,3,650,325,0,5526,5528,3,480, - 240,0,5527,5526,1,0,0,0,5527,5528,1,0,0,0,5528,5544,1,0,0,0,5529, - 5531,5,149,0,0,5530,5532,3,754,377,0,5531,5530,1,0,0,0,5531,5532, - 1,0,0,0,5532,5535,1,0,0,0,5533,5534,5,547,0,0,5534,5536,5,119,0, - 0,5535,5533,1,0,0,0,5535,5536,1,0,0,0,5536,5537,1,0,0,0,5537,5538, - 3,650,325,0,5538,5539,5,68,0,0,5539,5541,3,650,325,0,5540,5542,3, - 480,240,0,5541,5540,1,0,0,0,5541,5542,1,0,0,0,5542,5544,1,0,0,0, - 5543,5491,1,0,0,0,5543,5513,1,0,0,0,5543,5529,1,0,0,0,5544,479,1, - 0,0,0,5545,5546,5,79,0,0,5546,5547,5,674,0,0,5547,5548,5,678,0,0, - 5548,481,1,0,0,0,5549,5550,7,81,0,0,5550,483,1,0,0,0,5551,5552,5, - 155,0,0,5552,5555,5,529,0,0,5553,5554,5,65,0,0,5554,5556,3,680,340, - 0,5555,5553,1,0,0,0,5555,5556,1,0,0,0,5556,5557,1,0,0,0,5557,5560, - 5,857,0,0,5558,5561,3,794,397,0,5559,5561,5,882,0,0,5560,5558,1, - 0,0,0,5560,5559,1,0,0,0,5561,5584,1,0,0,0,5562,5563,5,155,0,0,5563, - 5566,5,529,0,0,5564,5565,5,65,0,0,5565,5567,3,680,340,0,5566,5564, - 1,0,0,0,5566,5567,1,0,0,0,5567,5572,1,0,0,0,5568,5569,5,176,0,0, - 5569,5573,5,829,0,0,5570,5571,5,857,0,0,5571,5573,5,882,0,0,5572, - 5568,1,0,0,0,5572,5570,1,0,0,0,5573,5576,1,0,0,0,5574,5575,5,143, - 0,0,5575,5577,5,882,0,0,5576,5574,1,0,0,0,5576,5577,1,0,0,0,5577, - 5581,1,0,0,0,5578,5579,5,147,0,0,5579,5580,5,36,0,0,5580,5582,5, - 529,0,0,5581,5578,1,0,0,0,5581,5582,1,0,0,0,5582,5584,1,0,0,0,5583, - 5551,1,0,0,0,5583,5562,1,0,0,0,5584,485,1,0,0,0,5585,5586,3,680, - 340,0,5586,5587,3,504,252,0,5587,487,1,0,0,0,5588,5614,3,680,340, - 0,5589,5590,5,423,0,0,5590,5591,5,20,0,0,5591,5592,5,882,0,0,5592, - 5615,3,496,248,0,5593,5594,5,423,0,0,5594,5595,5,20,0,0,5595,5596, - 5,829,0,0,5596,5597,5,529,0,0,5597,5615,3,496,248,0,5598,5599,5, - 423,0,0,5599,5600,5,194,0,0,5600,5615,3,498,249,0,5601,5602,5,369, - 0,0,5602,5603,5,511,0,0,5603,5615,5,529,0,0,5604,5605,7,82,0,0,5605, - 5607,3,512,256,0,5606,5608,3,508,254,0,5607,5606,1,0,0,0,5607,5608, - 1,0,0,0,5608,5610,1,0,0,0,5609,5604,1,0,0,0,5610,5611,1,0,0,0,5611, - 5609,1,0,0,0,5611,5612,1,0,0,0,5612,5615,1,0,0,0,5613,5615,3,510, - 255,0,5614,5589,1,0,0,0,5614,5593,1,0,0,0,5614,5598,1,0,0,0,5614, - 5601,1,0,0,0,5614,5609,1,0,0,0,5614,5613,1,0,0,0,5614,5615,1,0,0, - 0,5615,489,1,0,0,0,5616,5617,5,423,0,0,5617,5623,5,20,0,0,5618,5624, - 5,882,0,0,5619,5620,5,829,0,0,5620,5624,5,529,0,0,5621,5622,5,529, - 0,0,5622,5624,5,882,0,0,5623,5618,1,0,0,0,5623,5619,1,0,0,0,5623, - 5621,1,0,0,0,5624,5627,1,0,0,0,5625,5626,5,11,0,0,5626,5628,3,490, - 245,0,5627,5625,1,0,0,0,5627,5628,1,0,0,0,5628,5653,1,0,0,0,5629, - 5630,5,423,0,0,5630,5631,5,194,0,0,5631,5640,3,702,351,0,5632,5636, - 5,20,0,0,5633,5637,5,882,0,0,5634,5635,5,829,0,0,5635,5637,5,529, - 0,0,5636,5633,1,0,0,0,5636,5634,1,0,0,0,5637,5641,1,0,0,0,5638,5639, - 5,13,0,0,5639,5641,5,882,0,0,5640,5632,1,0,0,0,5640,5638,1,0,0,0, - 5640,5641,1,0,0,0,5641,5644,1,0,0,0,5642,5643,5,11,0,0,5643,5645, - 3,490,245,0,5644,5642,1,0,0,0,5644,5645,1,0,0,0,5645,5653,1,0,0, - 0,5646,5647,5,423,0,0,5647,5648,5,194,0,0,5648,5650,3,702,351,0, - 5649,5651,3,492,246,0,5650,5649,1,0,0,0,5650,5651,1,0,0,0,5651,5653, - 1,0,0,0,5652,5616,1,0,0,0,5652,5629,1,0,0,0,5652,5646,1,0,0,0,5653, - 491,1,0,0,0,5654,5655,5,427,0,0,5655,5656,5,708,0,0,5656,5657,5, - 423,0,0,5657,5661,5,20,0,0,5658,5659,5,829,0,0,5659,5662,5,529,0, - 0,5660,5662,5,882,0,0,5661,5658,1,0,0,0,5661,5660,1,0,0,0,5662,5672, - 1,0,0,0,5663,5664,5,427,0,0,5664,5665,5,708,0,0,5665,5666,5,423, - 0,0,5666,5667,5,194,0,0,5667,5668,3,702,351,0,5668,5669,5,13,0,0, - 5669,5670,5,882,0,0,5670,5672,1,0,0,0,5671,5654,1,0,0,0,5671,5663, - 1,0,0,0,5672,493,1,0,0,0,5673,5674,3,680,340,0,5674,5675,5,423,0, - 0,5675,5676,5,20,0,0,5676,5677,5,529,0,0,5677,5678,5,882,0,0,5678, - 5699,1,0,0,0,5679,5680,3,680,340,0,5680,5681,5,423,0,0,5681,5682, - 5,20,0,0,5682,5683,5,829,0,0,5683,5684,5,529,0,0,5684,5685,3,496, - 248,0,5685,5699,1,0,0,0,5686,5687,3,680,340,0,5687,5688,5,423,0, - 0,5688,5689,5,20,0,0,5689,5690,5,882,0,0,5690,5691,3,496,248,0,5691, - 5699,1,0,0,0,5692,5693,3,680,340,0,5693,5694,5,423,0,0,5694,5695, - 5,194,0,0,5695,5696,3,498,249,0,5696,5699,1,0,0,0,5697,5699,3,680, - 340,0,5698,5673,1,0,0,0,5698,5679,1,0,0,0,5698,5686,1,0,0,0,5698, - 5692,1,0,0,0,5698,5697,1,0,0,0,5699,495,1,0,0,0,5700,5701,5,143, - 0,0,5701,5703,5,882,0,0,5702,5700,1,0,0,0,5702,5703,1,0,0,0,5703, - 5707,1,0,0,0,5704,5705,5,147,0,0,5705,5706,5,36,0,0,5706,5708,5, - 529,0,0,5707,5704,1,0,0,0,5707,5708,1,0,0,0,5708,497,1,0,0,0,5709, - 5717,3,702,351,0,5710,5714,7,83,0,0,5711,5715,5,882,0,0,5712,5713, - 5,829,0,0,5713,5715,5,529,0,0,5714,5711,1,0,0,0,5714,5712,1,0,0, - 0,5715,5716,1,0,0,0,5716,5718,3,496,248,0,5717,5710,1,0,0,0,5717, - 5718,1,0,0,0,5718,5724,1,0,0,0,5719,5720,3,702,351,0,5720,5721,5, - 188,0,0,5721,5722,3,794,397,0,5722,5724,1,0,0,0,5723,5709,1,0,0, - 0,5723,5719,1,0,0,0,5724,499,1,0,0,0,5725,5734,5,169,0,0,5726,5734, - 5,693,0,0,5727,5728,5,331,0,0,5728,5734,5,882,0,0,5729,5730,5,441, - 0,0,5730,5734,5,882,0,0,5731,5732,5,651,0,0,5732,5734,5,882,0,0, - 5733,5725,1,0,0,0,5733,5726,1,0,0,0,5733,5727,1,0,0,0,5733,5729, - 1,0,0,0,5733,5731,1,0,0,0,5734,501,1,0,0,0,5735,5736,5,479,0,0,5736, - 5744,3,708,354,0,5737,5738,5,482,0,0,5738,5744,3,708,354,0,5739, - 5740,5,478,0,0,5740,5744,3,708,354,0,5741,5742,5,483,0,0,5742,5744, - 3,708,354,0,5743,5735,1,0,0,0,5743,5737,1,0,0,0,5743,5739,1,0,0, - 0,5743,5741,1,0,0,0,5744,503,1,0,0,0,5745,5746,5,529,0,0,5746,5753, - 5,390,0,0,5747,5754,5,42,0,0,5748,5754,5,500,0,0,5749,5750,5,87, - 0,0,5750,5751,3,708,354,0,5751,5752,5,698,0,0,5752,5754,1,0,0,0, - 5753,5747,1,0,0,0,5753,5748,1,0,0,0,5753,5749,1,0,0,0,5753,5754, - 1,0,0,0,5754,5784,1,0,0,0,5755,5756,5,529,0,0,5756,5759,5,420,0, - 0,5757,5760,5,42,0,0,5758,5760,3,708,354,0,5759,5757,1,0,0,0,5759, - 5758,1,0,0,0,5760,5784,1,0,0,0,5761,5762,5,529,0,0,5762,5763,5,581, - 0,0,5763,5768,5,87,0,0,5764,5769,5,42,0,0,5765,5766,3,708,354,0, - 5766,5767,5,698,0,0,5767,5769,1,0,0,0,5768,5764,1,0,0,0,5768,5765, - 1,0,0,0,5769,5784,1,0,0,0,5770,5771,5,529,0,0,5771,5772,5,144,0, - 0,5772,5774,5,36,0,0,5773,5775,7,84,0,0,5774,5773,1,0,0,0,5774,5775, - 1,0,0,0,5775,5784,1,0,0,0,5776,5777,5,395,0,0,5777,5784,3,708,354, - 0,5778,5781,5,530,0,0,5779,5782,3,708,354,0,5780,5782,5,669,0,0, - 5781,5779,1,0,0,0,5781,5780,1,0,0,0,5782,5784,1,0,0,0,5783,5745, - 1,0,0,0,5783,5755,1,0,0,0,5783,5761,1,0,0,0,5783,5770,1,0,0,0,5783, - 5776,1,0,0,0,5783,5778,1,0,0,0,5784,505,1,0,0,0,5785,5786,5,304, - 0,0,5786,5787,7,85,0,0,5787,507,1,0,0,0,5788,5791,5,423,0,0,5789, - 5790,5,194,0,0,5790,5792,3,702,351,0,5791,5789,1,0,0,0,5791,5792, - 1,0,0,0,5792,5801,1,0,0,0,5793,5797,5,20,0,0,5794,5798,5,882,0,0, - 5795,5796,5,829,0,0,5796,5798,5,529,0,0,5797,5794,1,0,0,0,5797,5795, - 1,0,0,0,5798,5802,1,0,0,0,5799,5800,5,13,0,0,5800,5802,5,882,0,0, - 5801,5793,1,0,0,0,5801,5799,1,0,0,0,5802,509,1,0,0,0,5803,5804,3, - 512,256,0,5804,5805,5,429,0,0,5805,5806,5,555,0,0,5806,5819,1,0, - 0,0,5807,5808,3,512,256,0,5808,5809,5,401,0,0,5809,5810,5,555,0, - 0,5810,5811,5,155,0,0,5811,5812,5,330,0,0,5812,5813,5,13,0,0,5813, - 5814,5,882,0,0,5814,5819,1,0,0,0,5815,5816,3,512,256,0,5816,5817, - 5,675,0,0,5817,5819,1,0,0,0,5818,5803,1,0,0,0,5818,5807,1,0,0,0, - 5818,5815,1,0,0,0,5819,511,1,0,0,0,5820,5821,7,86,0,0,5821,5822, - 5,394,0,0,5822,513,1,0,0,0,5823,5828,3,516,258,0,5824,5825,5,866, - 0,0,5825,5826,3,656,328,0,5826,5827,5,867,0,0,5827,5829,1,0,0,0, - 5828,5824,1,0,0,0,5828,5829,1,0,0,0,5829,515,1,0,0,0,5830,5832,5, - 7,0,0,5831,5833,5,734,0,0,5832,5831,1,0,0,0,5832,5833,1,0,0,0,5833, - 5924,1,0,0,0,5834,5836,5,8,0,0,5835,5837,5,743,0,0,5836,5835,1,0, - 0,0,5836,5837,1,0,0,0,5837,5924,1,0,0,0,5838,5846,5,34,0,0,5839, - 5840,5,660,0,0,5840,5847,5,752,0,0,5841,5847,5,743,0,0,5842,5847, - 5,684,0,0,5843,5847,5,678,0,0,5844,5847,5,658,0,0,5845,5847,5,582, - 0,0,5846,5839,1,0,0,0,5846,5841,1,0,0,0,5846,5842,1,0,0,0,5846,5843, - 1,0,0,0,5846,5844,1,0,0,0,5846,5845,1,0,0,0,5846,5847,1,0,0,0,5847, - 5924,1,0,0,0,5848,5924,5,44,0,0,5849,5851,5,51,0,0,5850,5852,5,582, - 0,0,5851,5850,1,0,0,0,5851,5852,1,0,0,0,5852,5924,1,0,0,0,5853,5924, - 5,385,0,0,5854,5924,5,717,0,0,5855,5924,5,718,0,0,5856,5857,5,73, - 0,0,5857,5924,5,121,0,0,5858,5924,5,82,0,0,5859,5924,5,86,0,0,5860, - 5861,5,104,0,0,5861,5924,5,752,0,0,5862,5924,5,735,0,0,5863,5924, - 5,547,0,0,5864,5924,5,138,0,0,5865,5924,5,736,0,0,5866,5867,5,572, - 0,0,5867,5924,7,87,0,0,5868,5924,5,154,0,0,5869,5870,5,157,0,0,5870, - 5924,7,88,0,0,5871,5924,5,749,0,0,5872,5924,5,750,0,0,5873,5924, - 5,178,0,0,5874,5924,5,185,0,0,5875,5924,5,186,0,0,5876,5924,5,705, - 0,0,5877,5924,5,706,0,0,5878,5924,5,707,0,0,5879,5924,5,709,0,0, - 5880,5924,5,710,0,0,5881,5924,5,711,0,0,5882,5924,5,712,0,0,5883, - 5924,5,714,0,0,5884,5924,5,715,0,0,5885,5924,5,716,0,0,5886,5924, - 5,719,0,0,5887,5924,5,720,0,0,5888,5924,5,721,0,0,5889,5924,5,722, - 0,0,5890,5924,5,723,0,0,5891,5924,5,724,0,0,5892,5924,5,725,0,0, - 5893,5924,5,726,0,0,5894,5924,5,727,0,0,5895,5924,5,728,0,0,5896, - 5924,5,731,0,0,5897,5924,5,732,0,0,5898,5924,5,733,0,0,5899,5924, - 5,737,0,0,5900,5924,5,738,0,0,5901,5924,5,740,0,0,5902,5924,5,741, - 0,0,5903,5924,5,742,0,0,5904,5924,5,745,0,0,5905,5924,5,746,0,0, - 5906,5924,5,747,0,0,5907,5924,5,160,0,0,5908,5924,5,748,0,0,5909, - 5924,5,836,0,0,5910,5924,5,751,0,0,5911,5924,5,753,0,0,5912,5924, - 5,838,0,0,5913,5924,5,754,0,0,5914,5924,5,755,0,0,5915,5916,5,103, - 0,0,5916,5917,5,68,0,0,5917,5924,5,744,0,0,5918,5919,5,154,0,0,5919, - 5920,5,88,0,0,5920,5924,5,744,0,0,5921,5922,5,729,0,0,5922,5924, - 5,730,0,0,5923,5830,1,0,0,0,5923,5834,1,0,0,0,5923,5838,1,0,0,0, - 5923,5848,1,0,0,0,5923,5849,1,0,0,0,5923,5853,1,0,0,0,5923,5854, - 1,0,0,0,5923,5855,1,0,0,0,5923,5856,1,0,0,0,5923,5858,1,0,0,0,5923, - 5859,1,0,0,0,5923,5860,1,0,0,0,5923,5862,1,0,0,0,5923,5863,1,0,0, - 0,5923,5864,1,0,0,0,5923,5865,1,0,0,0,5923,5866,1,0,0,0,5923,5868, - 1,0,0,0,5923,5869,1,0,0,0,5923,5871,1,0,0,0,5923,5872,1,0,0,0,5923, - 5873,1,0,0,0,5923,5874,1,0,0,0,5923,5875,1,0,0,0,5923,5876,1,0,0, - 0,5923,5877,1,0,0,0,5923,5878,1,0,0,0,5923,5879,1,0,0,0,5923,5880, - 1,0,0,0,5923,5881,1,0,0,0,5923,5882,1,0,0,0,5923,5883,1,0,0,0,5923, - 5884,1,0,0,0,5923,5885,1,0,0,0,5923,5886,1,0,0,0,5923,5887,1,0,0, - 0,5923,5888,1,0,0,0,5923,5889,1,0,0,0,5923,5890,1,0,0,0,5923,5891, - 1,0,0,0,5923,5892,1,0,0,0,5923,5893,1,0,0,0,5923,5894,1,0,0,0,5923, - 5895,1,0,0,0,5923,5896,1,0,0,0,5923,5897,1,0,0,0,5923,5898,1,0,0, - 0,5923,5899,1,0,0,0,5923,5900,1,0,0,0,5923,5901,1,0,0,0,5923,5902, - 1,0,0,0,5923,5903,1,0,0,0,5923,5904,1,0,0,0,5923,5905,1,0,0,0,5923, - 5906,1,0,0,0,5923,5907,1,0,0,0,5923,5908,1,0,0,0,5923,5909,1,0,0, - 0,5923,5910,1,0,0,0,5923,5911,1,0,0,0,5923,5912,1,0,0,0,5923,5913, - 1,0,0,0,5923,5914,1,0,0,0,5923,5915,1,0,0,0,5923,5918,1,0,0,0,5923, - 5921,1,0,0,0,5924,517,1,0,0,0,5925,5942,5,850,0,0,5926,5927,5,850, - 0,0,5927,5928,5,865,0,0,5928,5942,5,850,0,0,5929,5930,3,702,351, - 0,5930,5931,5,865,0,0,5931,5932,5,850,0,0,5932,5942,1,0,0,0,5933, - 5934,3,702,351,0,5934,5935,5,865,0,0,5935,5936,3,702,351,0,5936, - 5942,1,0,0,0,5937,5938,3,702,351,0,5938,5939,3,706,353,0,5939,5942, - 1,0,0,0,5940,5942,3,702,351,0,5941,5925,1,0,0,0,5941,5926,1,0,0, - 0,5941,5929,1,0,0,0,5941,5933,1,0,0,0,5941,5937,1,0,0,0,5941,5940, - 1,0,0,0,5942,519,1,0,0,0,5943,5944,3,680,340,0,5944,5945,5,176,0, - 0,5945,5946,3,680,340,0,5946,521,1,0,0,0,5947,5949,5,10,0,0,5948, - 5950,3,532,266,0,5949,5948,1,0,0,0,5949,5950,1,0,0,0,5950,5951,1, - 0,0,0,5951,5952,5,173,0,0,5952,5996,3,646,323,0,5953,5955,5,10,0, - 0,5954,5956,3,532,266,0,5955,5954,1,0,0,0,5955,5956,1,0,0,0,5956, - 5957,1,0,0,0,5957,5958,5,173,0,0,5958,5959,3,648,324,0,5959,5960, - 5,185,0,0,5960,5961,5,77,0,0,5961,5962,5,119,0,0,5962,5967,3,656, - 328,0,5963,5964,5,194,0,0,5964,5965,3,708,354,0,5965,5966,5,19,0, - 0,5966,5968,1,0,0,0,5967,5963,1,0,0,0,5967,5968,1,0,0,0,5968,5996, - 1,0,0,0,5969,5971,5,10,0,0,5970,5972,3,532,266,0,5971,5970,1,0,0, - 0,5971,5972,1,0,0,0,5972,5973,1,0,0,0,5973,5974,5,173,0,0,5974,5975, - 3,648,324,0,5975,5976,5,185,0,0,5976,5977,5,77,0,0,5977,5978,5,119, - 0,0,5978,5982,3,658,329,0,5979,5980,5,188,0,0,5980,5981,5,360,0, - 0,5981,5983,5,882,0,0,5982,5979,1,0,0,0,5982,5983,1,0,0,0,5983,5996, - 1,0,0,0,5984,5986,5,10,0,0,5985,5987,3,532,266,0,5986,5985,1,0,0, - 0,5986,5987,1,0,0,0,5987,5988,1,0,0,0,5988,5989,5,173,0,0,5989,5990, - 3,648,324,0,5990,5991,5,51,0,0,5991,5992,5,77,0,0,5992,5993,5,119, - 0,0,5993,5994,3,656,328,0,5994,5996,1,0,0,0,5995,5947,1,0,0,0,5995, - 5953,1,0,0,0,5995,5969,1,0,0,0,5995,5984,1,0,0,0,5996,523,1,0,0, - 0,5997,5998,5,27,0,0,5998,5999,5,173,0,0,5999,6003,3,646,323,0,6000, - 6002,3,534,267,0,6001,6000,1,0,0,0,6002,6005,1,0,0,0,6003,6001,1, - 0,0,0,6003,6004,1,0,0,0,6004,525,1,0,0,0,6005,6003,1,0,0,0,6006, - 6007,5,329,0,0,6007,6008,5,173,0,0,6008,6010,3,646,323,0,6009,6011, - 7,89,0,0,6010,6009,1,0,0,0,6010,6011,1,0,0,0,6011,527,1,0,0,0,6012, - 6014,5,120,0,0,6013,6015,3,532,266,0,6014,6013,1,0,0,0,6014,6015, - 1,0,0,0,6015,6016,1,0,0,0,6016,6017,7,60,0,0,6017,6018,3,646,323, - 0,6018,529,1,0,0,0,6019,6021,5,562,0,0,6020,6022,3,532,266,0,6021, - 6020,1,0,0,0,6021,6022,1,0,0,0,6022,6023,1,0,0,0,6023,6024,5,173, - 0,0,6024,6026,3,646,323,0,6025,6027,5,549,0,0,6026,6025,1,0,0,0, - 6026,6027,1,0,0,0,6027,6029,1,0,0,0,6028,6030,5,392,0,0,6029,6028, - 1,0,0,0,6029,6030,1,0,0,0,6030,6032,1,0,0,0,6031,6033,5,679,0,0, - 6032,6031,1,0,0,0,6032,6033,1,0,0,0,6033,531,1,0,0,0,6034,6035,7, - 90,0,0,6035,533,1,0,0,0,6036,6037,5,65,0,0,6037,6044,5,677,0,0,6038, - 6044,5,549,0,0,6039,6044,5,396,0,0,6040,6044,5,484,0,0,6041,6044, - 5,392,0,0,6042,6044,5,327,0,0,6043,6036,1,0,0,0,6043,6038,1,0,0, - 0,6043,6039,1,0,0,0,6043,6040,1,0,0,0,6043,6041,1,0,0,0,6043,6042, - 1,0,0,0,6044,535,1,0,0,0,6045,6047,5,34,0,0,6046,6048,5,307,0,0, - 6047,6046,1,0,0,0,6047,6048,1,0,0,0,6048,6049,1,0,0,0,6049,6051, - 5,409,0,0,6050,6052,3,756,378,0,6051,6050,1,0,0,0,6051,6052,1,0, - 0,0,6052,6053,1,0,0,0,6053,6054,3,626,313,0,6054,6055,5,580,0,0, - 6055,6056,7,91,0,0,6056,6057,5,603,0,0,6057,6058,5,882,0,0,6058, - 537,1,0,0,0,6059,6060,5,432,0,0,6060,6061,5,344,0,0,6061,6066,3, - 702,351,0,6062,6063,5,868,0,0,6063,6065,3,702,351,0,6064,6062,1, - 0,0,0,6065,6068,1,0,0,0,6066,6064,1,0,0,0,6066,6067,1,0,0,0,6067, - 6078,1,0,0,0,6068,6066,1,0,0,0,6069,6070,5,155,0,0,6070,6075,3,540, - 270,0,6071,6072,5,868,0,0,6072,6074,3,540,270,0,6073,6071,1,0,0, - 0,6074,6077,1,0,0,0,6075,6073,1,0,0,0,6075,6076,1,0,0,0,6076,6079, - 1,0,0,0,6077,6075,1,0,0,0,6078,6069,1,0,0,0,6078,6079,1,0,0,0,6079, - 539,1,0,0,0,6080,6081,7,92,0,0,6081,6082,3,698,349,0,6082,6083,5, - 857,0,0,6083,6084,3,800,400,0,6084,541,1,0,0,0,6085,6086,5,673,0, - 0,6086,6087,5,344,0,0,6087,6092,3,702,351,0,6088,6089,5,868,0,0, - 6089,6091,3,702,351,0,6090,6088,1,0,0,0,6091,6094,1,0,0,0,6092,6090, - 1,0,0,0,6092,6093,1,0,0,0,6093,543,1,0,0,0,6094,6092,1,0,0,0,6095, - 6096,5,432,0,0,6096,6097,5,534,0,0,6097,6098,3,702,351,0,6098,6099, - 5,603,0,0,6099,6100,5,882,0,0,6100,545,1,0,0,0,6101,6102,5,673,0, - 0,6102,6103,5,534,0,0,6103,6104,3,702,351,0,6104,547,1,0,0,0,6105, - 6106,5,713,0,0,6106,6107,5,450,0,0,6107,6108,5,360,0,0,6108,6110, - 5,367,0,0,6109,6111,5,857,0,0,6110,6109,1,0,0,0,6110,6111,1,0,0, - 0,6111,6112,1,0,0,0,6112,6136,5,882,0,0,6113,6114,5,713,0,0,6114, - 6115,5,433,0,0,6115,6116,5,68,0,0,6116,6117,3,672,336,0,6117,6118, - 5,423,0,0,6118,6119,5,20,0,0,6119,6126,5,882,0,0,6120,6121,5,360, - 0,0,6121,6123,5,367,0,0,6122,6124,5,857,0,0,6123,6122,1,0,0,0,6123, - 6124,1,0,0,0,6124,6125,1,0,0,0,6125,6127,5,882,0,0,6126,6120,1,0, - 0,0,6126,6127,1,0,0,0,6127,6133,1,0,0,0,6128,6130,5,144,0,0,6129, - 6131,5,502,0,0,6130,6129,1,0,0,0,6130,6131,1,0,0,0,6131,6132,1,0, - 0,0,6132,6134,5,169,0,0,6133,6128,1,0,0,0,6133,6134,1,0,0,0,6134, - 6136,1,0,0,0,6135,6105,1,0,0,0,6135,6113,1,0,0,0,6136,549,1,0,0, - 0,6137,6138,5,155,0,0,6138,6139,3,554,277,0,6139,6142,7,93,0,0,6140, - 6143,3,800,400,0,6141,6143,5,119,0,0,6142,6140,1,0,0,0,6142,6141, - 1,0,0,0,6143,6153,1,0,0,0,6144,6145,5,868,0,0,6145,6146,3,554,277, - 0,6146,6149,7,93,0,0,6147,6150,3,800,400,0,6148,6150,5,119,0,0,6149, - 6147,1,0,0,0,6149,6148,1,0,0,0,6150,6152,1,0,0,0,6151,6144,1,0,0, - 0,6152,6155,1,0,0,0,6153,6151,1,0,0,0,6153,6154,1,0,0,0,6154,6190, - 1,0,0,0,6155,6153,1,0,0,0,6156,6157,5,155,0,0,6157,6160,3,54,27, - 0,6158,6161,3,684,342,0,6159,6161,5,42,0,0,6160,6158,1,0,0,0,6160, - 6159,1,0,0,0,6161,6190,1,0,0,0,6162,6163,5,155,0,0,6163,6170,5,497, - 0,0,6164,6167,3,684,342,0,6165,6166,5,28,0,0,6166,6168,3,686,343, - 0,6167,6165,1,0,0,0,6167,6168,1,0,0,0,6168,6171,1,0,0,0,6169,6171, - 5,42,0,0,6170,6164,1,0,0,0,6170,6169,1,0,0,0,6171,6190,1,0,0,0,6172, - 6190,3,484,242,0,6173,6190,3,336,168,0,6174,6190,3,334,167,0,6175, - 6176,5,155,0,0,6176,6177,3,698,349,0,6177,6178,7,93,0,0,6178,6186, - 3,800,400,0,6179,6180,5,868,0,0,6180,6181,3,698,349,0,6181,6182, - 7,93,0,0,6182,6183,3,800,400,0,6183,6185,1,0,0,0,6184,6179,1,0,0, - 0,6185,6188,1,0,0,0,6186,6184,1,0,0,0,6186,6187,1,0,0,0,6187,6190, - 1,0,0,0,6188,6186,1,0,0,0,6189,6137,1,0,0,0,6189,6156,1,0,0,0,6189, - 6162,1,0,0,0,6189,6172,1,0,0,0,6189,6173,1,0,0,0,6189,6174,1,0,0, - 0,6189,6175,1,0,0,0,6190,551,1,0,0,0,6191,6192,5,157,0,0,6192,6193, - 7,62,0,0,6193,6376,5,452,0,0,6194,6195,5,157,0,0,6195,6196,7,94, - 0,0,6196,6199,5,386,0,0,6197,6198,5,80,0,0,6198,6200,5,882,0,0,6199, - 6197,1,0,0,0,6199,6200,1,0,0,0,6200,6203,1,0,0,0,6201,6202,5,68, - 0,0,6202,6204,3,708,354,0,6203,6201,1,0,0,0,6203,6204,1,0,0,0,6204, - 6212,1,0,0,0,6205,6209,5,100,0,0,6206,6207,3,708,354,0,6207,6208, - 5,868,0,0,6208,6210,1,0,0,0,6209,6206,1,0,0,0,6209,6210,1,0,0,0, - 6210,6211,1,0,0,0,6211,6213,3,708,354,0,6212,6205,1,0,0,0,6212,6213, - 1,0,0,0,6213,6215,1,0,0,0,6214,6216,3,384,192,0,6215,6214,1,0,0, - 0,6215,6216,1,0,0,0,6216,6376,1,0,0,0,6217,6218,5,157,0,0,6218,6220, - 3,556,278,0,6219,6221,3,558,279,0,6220,6219,1,0,0,0,6220,6221,1, - 0,0,0,6221,6376,1,0,0,0,6222,6224,5,157,0,0,6223,6225,5,392,0,0, - 6224,6223,1,0,0,0,6224,6225,1,0,0,0,6225,6227,1,0,0,0,6226,6228, - 5,408,0,0,6227,6226,1,0,0,0,6227,6228,1,0,0,0,6228,6229,1,0,0,0, - 6229,6230,7,46,0,0,6230,6231,7,95,0,0,6231,6234,3,648,324,0,6232, - 6233,7,95,0,0,6233,6235,3,624,312,0,6234,6232,1,0,0,0,6234,6235, - 1,0,0,0,6235,6237,1,0,0,0,6236,6238,3,558,279,0,6237,6236,1,0,0, - 0,6237,6238,1,0,0,0,6238,6376,1,0,0,0,6239,6240,5,157,0,0,6240,6241, - 5,34,0,0,6241,6243,7,0,0,0,6242,6244,3,756,378,0,6243,6242,1,0,0, - 0,6243,6244,1,0,0,0,6244,6245,1,0,0,0,6245,6376,3,624,312,0,6246, - 6247,5,157,0,0,6247,6248,5,34,0,0,6248,6249,7,96,0,0,6249,6376,3, - 698,349,0,6250,6251,5,157,0,0,6251,6252,5,34,0,0,6252,6253,5,409, - 0,0,6253,6376,3,628,314,0,6254,6255,5,157,0,0,6255,6256,5,34,0,0, - 6256,6257,5,684,0,0,6257,6376,3,632,316,0,6258,6259,5,157,0,0,6259, - 6260,5,34,0,0,6260,6261,5,173,0,0,6261,6376,3,648,324,0,6262,6263, - 5,157,0,0,6263,6264,5,34,0,0,6264,6265,5,678,0,0,6265,6376,3,680, - 340,0,6266,6267,5,157,0,0,6267,6268,5,380,0,0,6268,6269,3,688,344, - 0,6269,6270,7,97,0,0,6270,6376,1,0,0,0,6271,6272,5,157,0,0,6272, - 6376,3,560,280,0,6273,6274,5,157,0,0,6274,6282,7,98,0,0,6275,6279, - 5,100,0,0,6276,6277,3,708,354,0,6277,6278,5,868,0,0,6278,6280,1, - 0,0,0,6279,6276,1,0,0,0,6279,6280,1,0,0,0,6280,6281,1,0,0,0,6281, - 6283,3,708,354,0,6282,6275,1,0,0,0,6282,6283,1,0,0,0,6283,6376,1, - 0,0,0,6284,6285,5,157,0,0,6285,6286,5,262,0,0,6286,6287,5,866,0, - 0,6287,6288,5,850,0,0,6288,6289,5,867,0,0,6289,6376,7,98,0,0,6290, - 6291,5,157,0,0,6291,6294,3,562,281,0,6292,6293,7,95,0,0,6293,6295, - 3,624,312,0,6294,6292,1,0,0,0,6294,6295,1,0,0,0,6295,6297,1,0,0, - 0,6296,6298,3,558,279,0,6297,6296,1,0,0,0,6297,6298,1,0,0,0,6298, - 6376,1,0,0,0,6299,6300,5,157,0,0,6300,6301,5,132,0,0,6301,6302,5, - 336,0,0,6302,6376,3,698,349,0,6303,6304,5,157,0,0,6304,6305,5,409, - 0,0,6305,6306,5,336,0,0,6306,6376,3,628,314,0,6307,6308,5,157,0, - 0,6308,6315,5,414,0,0,6309,6310,5,65,0,0,6310,6313,3,652,326,0,6311, - 6312,5,188,0,0,6312,6314,3,650,325,0,6313,6311,1,0,0,0,6313,6314, - 1,0,0,0,6314,6316,1,0,0,0,6315,6309,1,0,0,0,6315,6316,1,0,0,0,6316, - 6376,1,0,0,0,6317,6319,5,157,0,0,6318,6320,5,392,0,0,6319,6318,1, - 0,0,0,6319,6320,1,0,0,0,6320,6321,1,0,0,0,6321,6322,7,99,0,0,6322, - 6323,7,95,0,0,6323,6326,3,648,324,0,6324,6325,7,95,0,0,6325,6327, - 3,624,312,0,6326,6324,1,0,0,0,6326,6327,1,0,0,0,6327,6330,1,0,0, - 0,6328,6329,5,192,0,0,6329,6331,3,800,400,0,6330,6328,1,0,0,0,6330, - 6331,1,0,0,0,6331,6376,1,0,0,0,6332,6333,5,157,0,0,6333,6334,5,516, - 0,0,6334,6337,5,752,0,0,6335,6336,7,95,0,0,6336,6338,3,624,312,0, - 6337,6335,1,0,0,0,6337,6338,1,0,0,0,6338,6340,1,0,0,0,6339,6341, - 3,558,279,0,6340,6339,1,0,0,0,6340,6341,1,0,0,0,6341,6376,1,0,0, - 0,6342,6343,5,157,0,0,6343,6352,5,545,0,0,6344,6349,3,564,282,0, - 6345,6346,5,868,0,0,6346,6348,3,564,282,0,6347,6345,1,0,0,0,6348, - 6351,1,0,0,0,6349,6347,1,0,0,0,6349,6350,1,0,0,0,6350,6353,1,0,0, - 0,6351,6349,1,0,0,0,6352,6344,1,0,0,0,6352,6353,1,0,0,0,6353,6357, - 1,0,0,0,6354,6355,5,65,0,0,6355,6356,5,548,0,0,6356,6358,3,708,354, - 0,6357,6354,1,0,0,0,6357,6358,1,0,0,0,6358,6365,1,0,0,0,6359,6360, - 5,100,0,0,6360,6363,3,708,354,0,6361,6362,5,509,0,0,6362,6364,3, - 708,354,0,6363,6361,1,0,0,0,6363,6364,1,0,0,0,6364,6366,1,0,0,0, - 6365,6359,1,0,0,0,6365,6366,1,0,0,0,6366,6376,1,0,0,0,6367,6368, - 5,157,0,0,6368,6369,7,63,0,0,6369,6371,5,645,0,0,6370,6372,3,384, - 192,0,6371,6370,1,0,0,0,6371,6372,1,0,0,0,6372,6376,1,0,0,0,6373, - 6374,5,157,0,0,6374,6376,5,564,0,0,6375,6191,1,0,0,0,6375,6194,1, - 0,0,0,6375,6217,1,0,0,0,6375,6222,1,0,0,0,6375,6239,1,0,0,0,6375, - 6246,1,0,0,0,6375,6250,1,0,0,0,6375,6254,1,0,0,0,6375,6258,1,0,0, - 0,6375,6262,1,0,0,0,6375,6266,1,0,0,0,6375,6271,1,0,0,0,6375,6273, - 1,0,0,0,6375,6284,1,0,0,0,6375,6290,1,0,0,0,6375,6299,1,0,0,0,6375, - 6303,1,0,0,0,6375,6307,1,0,0,0,6375,6317,1,0,0,0,6375,6332,1,0,0, - 0,6375,6342,1,0,0,0,6375,6367,1,0,0,0,6375,6373,1,0,0,0,6376,553, - 1,0,0,0,6377,6388,5,892,0,0,6378,6388,5,893,0,0,6379,6380,5,870, - 0,0,6380,6382,5,870,0,0,6381,6379,1,0,0,0,6381,6382,1,0,0,0,6382, - 6383,1,0,0,0,6383,6385,7,100,0,0,6384,6381,1,0,0,0,6384,6385,1,0, - 0,0,6385,6386,1,0,0,0,6386,6388,3,702,351,0,6387,6377,1,0,0,0,6387, - 6378,1,0,0,0,6387,6384,1,0,0,0,6388,555,1,0,0,0,6389,6390,5,26,0, - 0,6390,6404,5,155,0,0,6391,6404,5,823,0,0,6392,6404,5,824,0,0,6393, - 6404,5,40,0,0,6394,6404,5,153,0,0,6395,6396,5,409,0,0,6396,6404, - 5,645,0,0,6397,6398,5,132,0,0,6398,6404,5,645,0,0,6399,6401,7,61, - 0,0,6400,6399,1,0,0,0,6400,6401,1,0,0,0,6401,6402,1,0,0,0,6402,6404, - 7,101,0,0,6403,6389,1,0,0,0,6403,6391,1,0,0,0,6403,6392,1,0,0,0, - 6403,6393,1,0,0,0,6403,6394,1,0,0,0,6403,6395,1,0,0,0,6403,6397, - 1,0,0,0,6403,6400,1,0,0,0,6404,557,1,0,0,0,6405,6406,5,99,0,0,6406, - 6410,5,882,0,0,6407,6408,5,192,0,0,6408,6410,3,800,400,0,6409,6405, - 1,0,0,0,6409,6407,1,0,0,0,6410,559,1,0,0,0,6411,6413,5,647,0,0,6412, - 6411,1,0,0,0,6412,6413,1,0,0,0,6413,6414,1,0,0,0,6414,6429,5,381, - 0,0,6415,6416,5,453,0,0,6416,6429,5,645,0,0,6417,6429,5,536,0,0, - 6418,6429,5,734,0,0,6419,6421,5,408,0,0,6420,6419,1,0,0,0,6420,6421, - 1,0,0,0,6421,6422,1,0,0,0,6422,6429,5,544,0,0,6423,6429,5,546,0, - 0,6424,6425,5,598,0,0,6425,6429,5,422,0,0,6426,6429,5,312,0,0,6427, - 6429,5,356,0,0,6428,6412,1,0,0,0,6428,6415,1,0,0,0,6428,6417,1,0, - 0,0,6428,6418,1,0,0,0,6428,6420,1,0,0,0,6428,6423,1,0,0,0,6428,6424, - 1,0,0,0,6428,6426,1,0,0,0,6428,6427,1,0,0,0,6429,561,1,0,0,0,6430, - 6442,5,386,0,0,6431,6432,5,173,0,0,6432,6442,5,645,0,0,6433,6435, - 5,392,0,0,6434,6433,1,0,0,0,6434,6435,1,0,0,0,6435,6437,1,0,0,0, - 6436,6438,5,408,0,0,6437,6436,1,0,0,0,6437,6438,1,0,0,0,6438,6439, - 1,0,0,0,6439,6442,5,752,0,0,6440,6442,5,667,0,0,6441,6430,1,0,0, - 0,6441,6431,1,0,0,0,6441,6434,1,0,0,0,6441,6440,1,0,0,0,6442,563, - 1,0,0,0,6443,6456,5,7,0,0,6444,6445,5,320,0,0,6445,6456,5,437,0, - 0,6446,6447,5,355,0,0,6447,6456,5,656,0,0,6448,6456,5,358,0,0,6449, - 6456,5,439,0,0,6450,6456,5,802,0,0,6451,6452,5,521,0,0,6452,6456, - 5,397,0,0,6453,6456,5,605,0,0,6454,6456,5,655,0,0,6455,6443,1,0, - 0,0,6455,6444,1,0,0,0,6455,6446,1,0,0,0,6455,6448,1,0,0,0,6455,6449, - 1,0,0,0,6455,6450,1,0,0,0,6455,6451,1,0,0,0,6455,6453,1,0,0,0,6455, - 6454,1,0,0,0,6456,565,1,0,0,0,6457,6458,5,318,0,0,6458,6459,5,882, - 0,0,6459,567,1,0,0,0,6460,6461,5,324,0,0,6461,6479,5,82,0,0,6462, - 6467,3,588,294,0,6463,6464,5,868,0,0,6464,6466,3,588,294,0,6465, - 6463,1,0,0,0,6466,6469,1,0,0,0,6467,6465,1,0,0,0,6467,6468,1,0,0, - 0,6468,6480,1,0,0,0,6469,6467,1,0,0,0,6470,6471,3,648,324,0,6471, - 6472,5,130,0,0,6472,6475,5,866,0,0,6473,6476,3,666,333,0,6474,6476, - 5,7,0,0,6475,6473,1,0,0,0,6475,6474,1,0,0,0,6476,6477,1,0,0,0,6477, - 6478,5,867,0,0,6478,6480,1,0,0,0,6479,6462,1,0,0,0,6479,6470,1,0, - 0,0,6480,6481,1,0,0,0,6481,6482,5,80,0,0,6482,6483,3,624,312,0,6483, - 569,1,0,0,0,6484,6486,5,404,0,0,6485,6487,3,532,266,0,6486,6485, - 1,0,0,0,6486,6487,1,0,0,0,6487,6488,1,0,0,0,6488,6493,3,590,295, - 0,6489,6490,5,868,0,0,6490,6492,3,590,295,0,6491,6489,1,0,0,0,6492, - 6495,1,0,0,0,6493,6491,1,0,0,0,6493,6494,1,0,0,0,6494,571,1,0,0, - 0,6495,6493,1,0,0,0,6496,6498,5,94,0,0,6497,6499,7,102,0,0,6498, - 6497,1,0,0,0,6498,6499,1,0,0,0,6499,6500,1,0,0,0,6500,6501,3,800, - 400,0,6501,573,1,0,0,0,6502,6503,5,103,0,0,6503,6504,5,82,0,0,6504, - 6505,5,88,0,0,6505,6506,5,324,0,0,6506,6511,3,594,297,0,6507,6508, - 5,868,0,0,6508,6510,3,594,297,0,6509,6507,1,0,0,0,6510,6513,1,0, - 0,0,6511,6509,1,0,0,0,6511,6512,1,0,0,0,6512,575,1,0,0,0,6513,6511, - 1,0,0,0,6514,6515,5,575,0,0,6515,6520,3,578,289,0,6516,6517,5,868, - 0,0,6517,6519,3,578,289,0,6518,6516,1,0,0,0,6519,6522,1,0,0,0,6520, - 6518,1,0,0,0,6520,6521,1,0,0,0,6521,577,1,0,0,0,6522,6520,1,0,0, - 0,6523,6529,5,453,0,0,6524,6529,5,563,0,0,6525,6526,5,548,0,0,6526, - 6529,5,324,0,0,6527,6529,5,598,0,0,6528,6523,1,0,0,0,6528,6524,1, - 0,0,0,6528,6525,1,0,0,0,6528,6527,1,0,0,0,6529,579,1,0,0,0,6530, - 6531,5,575,0,0,6531,6536,5,531,0,0,6532,6534,3,754,377,0,6533,6532, - 1,0,0,0,6533,6534,1,0,0,0,6534,6535,1,0,0,0,6535,6537,3,702,351, - 0,6536,6533,1,0,0,0,6536,6537,1,0,0,0,6537,581,1,0,0,0,6538,6539, - 5,575,0,0,6539,6541,7,63,0,0,6540,6542,5,7,0,0,6541,6540,1,0,0,0, - 6541,6542,1,0,0,0,6542,6544,1,0,0,0,6543,6545,3,384,192,0,6544,6543, - 1,0,0,0,6544,6545,1,0,0,0,6545,583,1,0,0,0,6546,6547,5,576,0,0,6547, - 585,1,0,0,0,6548,6549,5,749,0,0,6549,587,1,0,0,0,6550,6556,3,648, - 324,0,6551,6552,7,18,0,0,6552,6553,5,866,0,0,6553,6554,3,636,318, - 0,6554,6555,5,867,0,0,6555,6557,1,0,0,0,6556,6551,1,0,0,0,6556,6557, - 1,0,0,0,6557,589,1,0,0,0,6558,6577,5,366,0,0,6559,6577,5,422,0,0, - 6560,6562,7,103,0,0,6561,6560,1,0,0,0,6561,6562,1,0,0,0,6562,6563, - 1,0,0,0,6563,6577,5,452,0,0,6564,6577,5,517,0,0,6565,6577,5,734, - 0,0,6566,6567,5,548,0,0,6567,6577,5,324,0,0,6568,6577,5,645,0,0, - 6569,6577,5,680,0,0,6570,6574,5,752,0,0,6571,6572,5,194,0,0,6572, - 6573,5,135,0,0,6573,6575,5,104,0,0,6574,6571,1,0,0,0,6574,6575,1, - 0,0,0,6575,6577,1,0,0,0,6576,6558,1,0,0,0,6576,6559,1,0,0,0,6576, - 6561,1,0,0,0,6576,6564,1,0,0,0,6576,6565,1,0,0,0,6576,6566,1,0,0, - 0,6576,6568,1,0,0,0,6576,6569,1,0,0,0,6576,6570,1,0,0,0,6577,6591, - 1,0,0,0,6578,6579,5,556,0,0,6579,6581,5,452,0,0,6580,6582,3,384, - 192,0,6581,6580,1,0,0,0,6581,6582,1,0,0,0,6582,6591,1,0,0,0,6583, - 6585,7,60,0,0,6584,6586,3,646,323,0,6585,6584,1,0,0,0,6585,6586, - 1,0,0,0,6586,6588,1,0,0,0,6587,6589,3,592,296,0,6588,6587,1,0,0, - 0,6588,6589,1,0,0,0,6589,6591,1,0,0,0,6590,6576,1,0,0,0,6590,6578, - 1,0,0,0,6590,6583,1,0,0,0,6591,591,1,0,0,0,6592,6593,5,194,0,0,6593, - 6594,5,135,0,0,6594,6598,5,104,0,0,6595,6596,5,65,0,0,6596,6598, - 5,391,0,0,6597,6592,1,0,0,0,6597,6595,1,0,0,0,6598,593,1,0,0,0,6599, - 6607,3,648,324,0,6600,6601,5,130,0,0,6601,6604,5,866,0,0,6602,6605, - 3,666,333,0,6603,6605,5,7,0,0,6604,6602,1,0,0,0,6604,6603,1,0,0, - 0,6605,6606,1,0,0,0,6606,6608,5,867,0,0,6607,6600,1,0,0,0,6607,6608, - 1,0,0,0,6608,6616,1,0,0,0,6609,6611,7,18,0,0,6610,6609,1,0,0,0,6610, - 6611,1,0,0,0,6611,6612,1,0,0,0,6612,6613,5,866,0,0,6613,6614,3,636, - 318,0,6614,6615,5,867,0,0,6615,6617,1,0,0,0,6616,6610,1,0,0,0,6616, - 6617,1,0,0,0,6617,6620,1,0,0,0,6618,6619,5,79,0,0,6619,6621,5,446, - 0,0,6620,6618,1,0,0,0,6620,6621,1,0,0,0,6621,595,1,0,0,0,6622,6623, - 7,104,0,0,6623,6626,3,648,324,0,6624,6627,3,658,329,0,6625,6627, - 5,882,0,0,6626,6624,1,0,0,0,6626,6625,1,0,0,0,6626,6627,1,0,0,0, - 6627,597,1,0,0,0,6628,6634,7,104,0,0,6629,6635,5,392,0,0,6630,6635, - 5,528,0,0,6631,6632,5,826,0,0,6632,6633,5,857,0,0,6633,6635,7,105, - 0,0,6634,6629,1,0,0,0,6634,6630,1,0,0,0,6634,6631,1,0,0,0,6634,6635, - 1,0,0,0,6635,6636,1,0,0,0,6636,6637,3,620,310,0,6637,599,1,0,0,0, - 6638,6639,7,104,0,0,6639,6643,5,10,0,0,6640,6641,5,826,0,0,6641, - 6642,5,857,0,0,6642,6644,5,666,0,0,6643,6640,1,0,0,0,6643,6644,1, - 0,0,0,6644,6645,1,0,0,0,6645,6646,3,204,102,0,6646,601,1,0,0,0,6647, - 6648,5,419,0,0,6648,6649,5,882,0,0,6649,603,1,0,0,0,6650,6651,5, - 187,0,0,6651,6652,3,624,312,0,6652,605,1,0,0,0,6653,6661,5,158,0, - 0,6654,6656,5,164,0,0,6655,6657,5,682,0,0,6656,6655,1,0,0,0,6656, - 6657,1,0,0,0,6657,6658,1,0,0,0,6658,6662,3,712,356,0,6659,6662,5, - 889,0,0,6660,6662,5,890,0,0,6661,6654,1,0,0,0,6661,6659,1,0,0,0, - 6661,6660,1,0,0,0,6662,6672,1,0,0,0,6663,6664,5,155,0,0,6664,6669, - 3,610,305,0,6665,6666,5,868,0,0,6666,6668,3,610,305,0,6667,6665, - 1,0,0,0,6668,6671,1,0,0,0,6669,6667,1,0,0,0,6669,6670,1,0,0,0,6670, - 6673,1,0,0,0,6671,6669,1,0,0,0,6672,6663,1,0,0,0,6672,6673,1,0,0, - 0,6673,607,1,0,0,0,6674,6682,5,145,0,0,6675,6677,5,164,0,0,6676, - 6678,5,682,0,0,6677,6676,1,0,0,0,6677,6678,1,0,0,0,6678,6679,1,0, - 0,0,6679,6683,3,712,356,0,6680,6683,5,889,0,0,6681,6683,5,890,0, - 0,6682,6675,1,0,0,0,6682,6680,1,0,0,0,6682,6681,1,0,0,0,6682,6683, - 1,0,0,0,6683,6693,1,0,0,0,6684,6685,5,155,0,0,6685,6690,3,610,305, - 0,6686,6687,5,868,0,0,6687,6689,3,610,305,0,6688,6686,1,0,0,0,6689, - 6692,1,0,0,0,6690,6688,1,0,0,0,6690,6691,1,0,0,0,6691,6694,1,0,0, - 0,6692,6690,1,0,0,0,6693,6684,1,0,0,0,6693,6694,1,0,0,0,6694,609, - 1,0,0,0,6695,6696,7,106,0,0,6696,6701,5,857,0,0,6697,6702,3,712, - 356,0,6698,6702,5,883,0,0,6699,6702,3,682,341,0,6700,6702,3,704, - 352,0,6701,6697,1,0,0,0,6701,6698,1,0,0,0,6701,6699,1,0,0,0,6701, - 6700,1,0,0,0,6702,611,1,0,0,0,6703,6705,5,194,0,0,6704,6706,5,552, - 0,0,6705,6704,1,0,0,0,6705,6706,1,0,0,0,6706,6707,1,0,0,0,6707,6712, - 3,48,24,0,6708,6709,5,868,0,0,6709,6711,3,48,24,0,6710,6708,1,0, - 0,0,6711,6714,1,0,0,0,6712,6710,1,0,0,0,6712,6713,1,0,0,0,6713,613, - 1,0,0,0,6714,6712,1,0,0,0,6715,6716,5,173,0,0,6716,6718,3,648,324, - 0,6717,6719,3,252,126,0,6718,6717,1,0,0,0,6718,6719,1,0,0,0,6719, - 6721,1,0,0,0,6720,6722,3,312,156,0,6721,6720,1,0,0,0,6721,6722,1, - 0,0,0,6722,615,1,0,0,0,6723,6725,5,72,0,0,6724,6726,7,107,0,0,6725, - 6724,1,0,0,0,6725,6726,1,0,0,0,6726,6727,1,0,0,0,6727,6759,5,48, - 0,0,6728,6729,3,554,277,0,6729,6730,5,857,0,0,6730,6738,7,108,0, - 0,6731,6732,5,868,0,0,6732,6733,3,554,277,0,6733,6734,5,857,0,0, - 6734,6735,7,108,0,0,6735,6737,1,0,0,0,6736,6731,1,0,0,0,6737,6740, - 1,0,0,0,6738,6736,1,0,0,0,6738,6739,1,0,0,0,6739,6760,1,0,0,0,6740, - 6738,1,0,0,0,6741,6744,5,30,0,0,6742,6745,3,708,354,0,6743,6745, - 3,554,277,0,6744,6742,1,0,0,0,6744,6743,1,0,0,0,6745,6746,1,0,0, - 0,6746,6747,3,554,277,0,6747,6748,5,857,0,0,6748,6756,3,618,309, - 0,6749,6750,5,868,0,0,6750,6751,3,554,277,0,6751,6752,5,857,0,0, - 6752,6753,3,618,309,0,6753,6755,1,0,0,0,6754,6749,1,0,0,0,6755,6758, - 1,0,0,0,6756,6754,1,0,0,0,6756,6757,1,0,0,0,6757,6760,1,0,0,0,6758, - 6756,1,0,0,0,6759,6728,1,0,0,0,6759,6741,1,0,0,0,6760,617,1,0,0, - 0,6761,6762,7,109,0,0,6762,619,1,0,0,0,6763,6769,3,204,102,0,6764, - 6769,3,180,90,0,6765,6769,3,186,93,0,6766,6769,3,202,101,0,6767, - 6769,3,214,107,0,6768,6763,1,0,0,0,6768,6764,1,0,0,0,6768,6765,1, - 0,0,0,6768,6766,1,0,0,0,6768,6767,1,0,0,0,6769,6774,1,0,0,0,6770, - 6771,5,65,0,0,6771,6772,5,349,0,0,6772,6774,3,702,351,0,6773,6768, - 1,0,0,0,6773,6770,1,0,0,0,6774,621,1,0,0,0,6775,6776,3,698,349,0, - 6776,623,1,0,0,0,6777,6778,3,698,349,0,6778,625,1,0,0,0,6779,6780, - 3,698,349,0,6780,627,1,0,0,0,6781,6782,3,698,349,0,6782,629,1,0, - 0,0,6783,6784,3,698,349,0,6784,631,1,0,0,0,6785,6786,3,698,349,0, - 6786,633,1,0,0,0,6787,6788,3,702,351,0,6788,635,1,0,0,0,6789,6794, - 3,638,319,0,6790,6791,5,868,0,0,6791,6793,3,638,319,0,6792,6790, - 1,0,0,0,6793,6796,1,0,0,0,6794,6792,1,0,0,0,6794,6795,1,0,0,0,6795, - 637,1,0,0,0,6796,6794,1,0,0,0,6797,6798,3,702,351,0,6798,639,1,0, - 0,0,6799,6800,3,702,351,0,6800,641,1,0,0,0,6801,6802,3,702,351,0, - 6802,643,1,0,0,0,6803,6804,3,698,349,0,6804,645,1,0,0,0,6805,6810, - 3,648,324,0,6806,6807,5,868,0,0,6807,6809,3,648,324,0,6808,6806, - 1,0,0,0,6809,6812,1,0,0,0,6810,6808,1,0,0,0,6810,6811,1,0,0,0,6811, - 647,1,0,0,0,6812,6810,1,0,0,0,6813,6814,3,698,349,0,6814,649,1,0, - 0,0,6815,6820,3,652,326,0,6816,6817,5,868,0,0,6817,6819,3,652,326, - 0,6818,6816,1,0,0,0,6819,6822,1,0,0,0,6820,6818,1,0,0,0,6820,6821, - 1,0,0,0,6821,651,1,0,0,0,6822,6820,1,0,0,0,6823,6826,3,680,340,0, - 6824,6826,3,702,351,0,6825,6823,1,0,0,0,6825,6824,1,0,0,0,6826,653, - 1,0,0,0,6827,6832,3,702,351,0,6828,6830,3,706,353,0,6829,6831,3, - 706,353,0,6830,6829,1,0,0,0,6830,6831,1,0,0,0,6831,6833,1,0,0,0, - 6832,6828,1,0,0,0,6832,6833,1,0,0,0,6833,6842,1,0,0,0,6834,6836, - 9,0,0,0,6835,6834,1,0,0,0,6835,6836,1,0,0,0,6836,6837,1,0,0,0,6837, - 6839,3,706,353,0,6838,6840,3,706,353,0,6839,6838,1,0,0,0,6839,6840, - 1,0,0,0,6840,6842,1,0,0,0,6841,6827,1,0,0,0,6841,6835,1,0,0,0,6842, - 655,1,0,0,0,6843,6848,3,658,329,0,6844,6845,5,868,0,0,6845,6847, - 3,658,329,0,6846,6844,1,0,0,0,6847,6850,1,0,0,0,6848,6846,1,0,0, - 0,6848,6849,1,0,0,0,6849,657,1,0,0,0,6850,6848,1,0,0,0,6851,6856, - 3,702,351,0,6852,6854,3,706,353,0,6853,6855,3,706,353,0,6854,6853, - 1,0,0,0,6854,6855,1,0,0,0,6855,6857,1,0,0,0,6856,6852,1,0,0,0,6856, - 6857,1,0,0,0,6857,6867,1,0,0,0,6858,6860,9,0,0,0,6859,6858,1,0,0, - 0,6859,6860,1,0,0,0,6860,6861,1,0,0,0,6861,6863,3,706,353,0,6862, - 6864,3,706,353,0,6863,6862,1,0,0,0,6863,6864,1,0,0,0,6864,6867,1, - 0,0,0,6865,6867,4,329,3,0,6866,6851,1,0,0,0,6866,6859,1,0,0,0,6866, - 6865,1,0,0,0,6867,659,1,0,0,0,6868,6869,3,702,351,0,6869,661,1,0, - 0,0,6870,6871,3,702,351,0,6871,663,1,0,0,0,6872,6873,3,702,351,0, - 6873,665,1,0,0,0,6874,6879,3,668,334,0,6875,6876,5,868,0,0,6876, - 6878,3,668,334,0,6877,6875,1,0,0,0,6878,6881,1,0,0,0,6879,6877,1, - 0,0,0,6879,6880,1,0,0,0,6880,667,1,0,0,0,6881,6879,1,0,0,0,6882, - 6883,3,702,351,0,6883,669,1,0,0,0,6884,6889,3,702,351,0,6885,6886, - 5,866,0,0,6886,6887,3,708,354,0,6887,6888,5,867,0,0,6888,6890,1, - 0,0,0,6889,6885,1,0,0,0,6889,6890,1,0,0,0,6890,6893,1,0,0,0,6891, - 6893,3,800,400,0,6892,6884,1,0,0,0,6892,6891,1,0,0,0,6893,6895,1, - 0,0,0,6894,6896,7,54,0,0,6895,6894,1,0,0,0,6895,6896,1,0,0,0,6896, - 671,1,0,0,0,6897,6898,3,674,337,0,6898,6899,5,878,0,0,6899,6900, - 3,708,354,0,6900,673,1,0,0,0,6901,6902,3,676,338,0,6902,6903,5,891, - 0,0,6903,675,1,0,0,0,6904,6909,5,882,0,0,6905,6909,5,889,0,0,6906, - 6909,5,704,0,0,6907,6909,3,830,415,0,6908,6904,1,0,0,0,6908,6905, - 1,0,0,0,6908,6906,1,0,0,0,6908,6907,1,0,0,0,6909,677,1,0,0,0,6910, - 6911,7,110,0,0,6911,679,1,0,0,0,6912,6914,3,676,338,0,6913,6915, - 3,678,339,0,6914,6913,1,0,0,0,6914,6915,1,0,0,0,6915,6918,1,0,0, - 0,6916,6918,3,56,28,0,6917,6912,1,0,0,0,6917,6916,1,0,0,0,6918,681, - 1,0,0,0,6919,6920,7,111,0,0,6920,683,1,0,0,0,6921,6926,5,228,0,0, - 6922,6926,3,820,410,0,6923,6926,5,882,0,0,6924,6926,5,879,0,0,6925, - 6921,1,0,0,0,6925,6922,1,0,0,0,6925,6923,1,0,0,0,6925,6924,1,0,0, - 0,6926,685,1,0,0,0,6927,6928,3,702,351,0,6928,687,1,0,0,0,6929,6933, - 3,690,345,0,6930,6933,5,889,0,0,6931,6933,5,882,0,0,6932,6929,1, - 0,0,0,6932,6930,1,0,0,0,6932,6931,1,0,0,0,6933,689,1,0,0,0,6934, - 6935,7,112,0,0,6935,691,1,0,0,0,6936,6937,3,708,354,0,6937,6938, - 5,854,0,0,6938,6939,3,708,354,0,6939,6940,5,854,0,0,6940,6941,3, - 708,354,0,6941,6942,5,854,0,0,6942,6943,3,708,354,0,6943,6944,5, - 854,0,0,6944,6950,3,708,354,0,6945,6946,5,878,0,0,6946,6947,3,708, - 354,0,6947,6948,5,854,0,0,6948,6949,3,708,354,0,6949,6951,1,0,0, - 0,6950,6945,1,0,0,0,6951,6952,1,0,0,0,6952,6950,1,0,0,0,6952,6953, - 1,0,0,0,6953,693,1,0,0,0,6954,6961,3,696,348,0,6955,6956,5,868,0, - 0,6956,6959,3,696,348,0,6957,6958,5,868,0,0,6958,6960,3,708,354, - 0,6959,6957,1,0,0,0,6959,6960,1,0,0,0,6960,6962,1,0,0,0,6961,6955, - 1,0,0,0,6961,6962,1,0,0,0,6962,695,1,0,0,0,6963,6971,5,882,0,0,6964, - 6971,5,887,0,0,6965,6967,5,884,0,0,6966,6965,1,0,0,0,6967,6968,1, - 0,0,0,6968,6966,1,0,0,0,6968,6969,1,0,0,0,6969,6971,1,0,0,0,6970, - 6963,1,0,0,0,6970,6964,1,0,0,0,6970,6966,1,0,0,0,6971,697,1,0,0, - 0,6972,6974,3,702,351,0,6973,6975,3,706,353,0,6974,6973,1,0,0,0, - 6974,6975,1,0,0,0,6975,699,1,0,0,0,6976,6981,3,702,351,0,6977,6978, - 5,868,0,0,6978,6980,3,702,351,0,6979,6977,1,0,0,0,6980,6983,1,0, - 0,0,6981,6979,1,0,0,0,6981,6982,1,0,0,0,6982,701,1,0,0,0,6983,6981, - 1,0,0,0,6984,6988,3,704,352,0,6985,6988,5,879,0,0,6986,6988,5,882, - 0,0,6987,6984,1,0,0,0,6987,6985,1,0,0,0,6987,6986,1,0,0,0,6988,703, - 1,0,0,0,6989,6999,5,889,0,0,6990,6999,3,820,410,0,6991,6999,3,822, - 411,0,6992,6999,3,690,345,0,6993,6999,3,824,412,0,6994,6999,3,826, - 413,0,6995,6999,3,828,414,0,6996,6999,3,830,415,0,6997,6999,3,792, - 396,0,6998,6989,1,0,0,0,6998,6990,1,0,0,0,6998,6991,1,0,0,0,6998, - 6992,1,0,0,0,6998,6993,1,0,0,0,6998,6994,1,0,0,0,6998,6995,1,0,0, - 0,6998,6996,1,0,0,0,6998,6997,1,0,0,0,6999,705,1,0,0,0,7000,7001, - 5,865,0,0,7001,7005,5,889,0,0,7002,7003,5,865,0,0,7003,7005,3,702, - 351,0,7004,7000,1,0,0,0,7004,7002,1,0,0,0,7005,707,1,0,0,0,7006, - 7007,7,113,0,0,7007,709,1,0,0,0,7008,7011,5,880,0,0,7009,7011,3, - 708,354,0,7010,7008,1,0,0,0,7010,7009,1,0,0,0,7011,711,1,0,0,0,7012, - 7014,5,888,0,0,7013,7012,1,0,0,0,7013,7014,1,0,0,0,7014,7015,1,0, - 0,0,7015,7018,5,882,0,0,7016,7018,5,881,0,0,7017,7013,1,0,0,0,7017, - 7016,1,0,0,0,7018,7020,1,0,0,0,7019,7021,5,882,0,0,7020,7019,1,0, - 0,0,7021,7022,1,0,0,0,7022,7020,1,0,0,0,7022,7023,1,0,0,0,7023,7036, - 1,0,0,0,7024,7026,5,888,0,0,7025,7024,1,0,0,0,7025,7026,1,0,0,0, - 7026,7027,1,0,0,0,7027,7030,5,882,0,0,7028,7030,5,881,0,0,7029,7025, - 1,0,0,0,7029,7028,1,0,0,0,7030,7033,1,0,0,0,7031,7032,5,28,0,0,7032, - 7034,3,686,343,0,7033,7031,1,0,0,0,7033,7034,1,0,0,0,7034,7036,1, - 0,0,0,7035,7017,1,0,0,0,7035,7029,1,0,0,0,7036,713,1,0,0,0,7037, - 7038,7,114,0,0,7038,715,1,0,0,0,7039,7041,5,888,0,0,7040,7039,1, - 0,0,0,7040,7041,1,0,0,0,7041,7042,1,0,0,0,7042,7043,5,884,0,0,7043, - 717,1,0,0,0,7044,7046,5,114,0,0,7045,7044,1,0,0,0,7045,7046,1,0, - 0,0,7046,7047,1,0,0,0,7047,7048,7,115,0,0,7048,719,1,0,0,0,7049, - 7062,3,712,356,0,7050,7062,3,708,354,0,7051,7052,5,854,0,0,7052, - 7062,3,708,354,0,7053,7062,3,716,358,0,7054,7062,3,714,357,0,7055, - 7062,5,885,0,0,7056,7062,5,887,0,0,7057,7059,5,114,0,0,7058,7057, - 1,0,0,0,7058,7059,1,0,0,0,7059,7060,1,0,0,0,7060,7062,7,115,0,0, - 7061,7049,1,0,0,0,7061,7050,1,0,0,0,7061,7051,1,0,0,0,7061,7053, - 1,0,0,0,7061,7054,1,0,0,0,7061,7055,1,0,0,0,7061,7056,1,0,0,0,7061, - 7058,1,0,0,0,7062,721,1,0,0,0,7063,7065,7,116,0,0,7064,7066,5,240, - 0,0,7065,7064,1,0,0,0,7065,7066,1,0,0,0,7066,7068,1,0,0,0,7067,7069, - 3,728,364,0,7068,7067,1,0,0,0,7068,7069,1,0,0,0,7069,7071,1,0,0, - 0,7070,7072,5,228,0,0,7071,7070,1,0,0,0,7071,7072,1,0,0,0,7072,7076, - 1,0,0,0,7073,7074,3,54,27,0,7074,7075,3,684,342,0,7075,7077,1,0, - 0,0,7076,7073,1,0,0,0,7076,7077,1,0,0,0,7077,7081,1,0,0,0,7078,7079, - 5,28,0,0,7079,7082,3,686,343,0,7080,7082,5,228,0,0,7081,7078,1,0, - 0,0,7081,7080,1,0,0,0,7081,7082,1,0,0,0,7082,7190,1,0,0,0,7083,7084, - 5,227,0,0,7084,7085,7,117,0,0,7085,7087,5,240,0,0,7086,7088,3,728, - 364,0,7087,7086,1,0,0,0,7087,7088,1,0,0,0,7088,7090,1,0,0,0,7089, - 7091,5,228,0,0,7090,7089,1,0,0,0,7090,7091,1,0,0,0,7091,7190,1,0, - 0,0,7092,7093,5,227,0,0,7093,7095,7,118,0,0,7094,7096,3,728,364, - 0,7095,7094,1,0,0,0,7095,7096,1,0,0,0,7096,7098,1,0,0,0,7097,7099, - 5,228,0,0,7098,7097,1,0,0,0,7098,7099,1,0,0,0,7099,7190,1,0,0,0, - 7100,7101,5,498,0,0,7101,7103,5,225,0,0,7102,7104,3,728,364,0,7103, - 7102,1,0,0,0,7103,7104,1,0,0,0,7104,7106,1,0,0,0,7105,7107,5,228, - 0,0,7106,7105,1,0,0,0,7106,7107,1,0,0,0,7107,7190,1,0,0,0,7108,7110, - 7,119,0,0,7109,7111,3,728,364,0,7110,7109,1,0,0,0,7110,7111,1,0, - 0,0,7111,7115,1,0,0,0,7112,7114,7,120,0,0,7113,7112,1,0,0,0,7114, - 7117,1,0,0,0,7115,7113,1,0,0,0,7115,7116,1,0,0,0,7116,7190,1,0,0, - 0,7117,7115,1,0,0,0,7118,7120,5,210,0,0,7119,7121,3,730,365,0,7120, - 7119,1,0,0,0,7120,7121,1,0,0,0,7121,7125,1,0,0,0,7122,7124,7,120, - 0,0,7123,7122,1,0,0,0,7124,7127,1,0,0,0,7125,7123,1,0,0,0,7125,7126, - 1,0,0,0,7126,7190,1,0,0,0,7127,7125,1,0,0,0,7128,7130,5,211,0,0, - 7129,7131,5,212,0,0,7130,7129,1,0,0,0,7130,7131,1,0,0,0,7131,7133, - 1,0,0,0,7132,7134,3,730,365,0,7133,7132,1,0,0,0,7133,7134,1,0,0, - 0,7134,7138,1,0,0,0,7135,7137,7,120,0,0,7136,7135,1,0,0,0,7137,7140, - 1,0,0,0,7138,7136,1,0,0,0,7138,7139,1,0,0,0,7139,7190,1,0,0,0,7140, - 7138,1,0,0,0,7141,7143,7,121,0,0,7142,7144,3,732,366,0,7143,7142, - 1,0,0,0,7143,7144,1,0,0,0,7144,7148,1,0,0,0,7145,7147,7,120,0,0, - 7146,7145,1,0,0,0,7147,7150,1,0,0,0,7148,7146,1,0,0,0,7148,7149, - 1,0,0,0,7149,7190,1,0,0,0,7150,7148,1,0,0,0,7151,7190,7,122,0,0, - 7152,7154,7,123,0,0,7153,7155,3,728,364,0,7154,7153,1,0,0,0,7154, - 7155,1,0,0,0,7155,7190,1,0,0,0,7156,7157,7,124,0,0,7157,7159,3,724, - 362,0,7158,7160,5,228,0,0,7159,7158,1,0,0,0,7159,7160,1,0,0,0,7160, - 7164,1,0,0,0,7161,7162,3,54,27,0,7162,7163,3,684,342,0,7163,7165, - 1,0,0,0,7164,7161,1,0,0,0,7164,7165,1,0,0,0,7165,7190,1,0,0,0,7166, - 7169,7,125,0,0,7167,7168,5,834,0,0,7168,7170,3,708,354,0,7169,7167, - 1,0,0,0,7169,7170,1,0,0,0,7170,7190,1,0,0,0,7171,7173,5,233,0,0, - 7172,7174,5,225,0,0,7173,7172,1,0,0,0,7173,7174,1,0,0,0,7174,7176, - 1,0,0,0,7175,7177,5,228,0,0,7176,7175,1,0,0,0,7176,7177,1,0,0,0, - 7177,7181,1,0,0,0,7178,7179,3,54,27,0,7179,7180,3,684,342,0,7180, - 7182,1,0,0,0,7181,7178,1,0,0,0,7181,7182,1,0,0,0,7182,7185,1,0,0, - 0,7183,7184,5,28,0,0,7184,7186,3,686,343,0,7185,7183,1,0,0,0,7185, - 7186,1,0,0,0,7186,7190,1,0,0,0,7187,7188,5,233,0,0,7188,7190,5,229, - 0,0,7189,7063,1,0,0,0,7189,7083,1,0,0,0,7189,7092,1,0,0,0,7189,7100, - 1,0,0,0,7189,7108,1,0,0,0,7189,7118,1,0,0,0,7189,7128,1,0,0,0,7189, - 7141,1,0,0,0,7189,7151,1,0,0,0,7189,7152,1,0,0,0,7189,7156,1,0,0, - 0,7189,7166,1,0,0,0,7189,7171,1,0,0,0,7189,7187,1,0,0,0,7190,723, - 1,0,0,0,7191,7192,5,866,0,0,7192,7197,5,882,0,0,7193,7194,5,868, - 0,0,7194,7196,5,882,0,0,7195,7193,1,0,0,0,7196,7199,1,0,0,0,7197, - 7195,1,0,0,0,7197,7198,1,0,0,0,7198,7200,1,0,0,0,7199,7197,1,0,0, - 0,7200,7201,5,867,0,0,7201,725,1,0,0,0,7202,7204,7,126,0,0,7203, - 7205,3,728,364,0,7204,7203,1,0,0,0,7204,7205,1,0,0,0,7205,7225,1, - 0,0,0,7206,7208,5,224,0,0,7207,7209,3,728,364,0,7208,7207,1,0,0, - 0,7208,7209,1,0,0,0,7209,7213,1,0,0,0,7210,7211,3,54,27,0,7211,7212, - 3,684,342,0,7212,7214,1,0,0,0,7213,7210,1,0,0,0,7213,7214,1,0,0, - 0,7214,7225,1,0,0,0,7215,7225,7,127,0,0,7216,7218,7,128,0,0,7217, - 7219,3,732,366,0,7218,7217,1,0,0,0,7218,7219,1,0,0,0,7219,7225,1, - 0,0,0,7220,7222,7,129,0,0,7221,7223,7,130,0,0,7222,7221,1,0,0,0, - 7222,7223,1,0,0,0,7223,7225,1,0,0,0,7224,7202,1,0,0,0,7224,7206, - 1,0,0,0,7224,7215,1,0,0,0,7224,7216,1,0,0,0,7224,7220,1,0,0,0,7225, - 7227,1,0,0,0,7226,7228,5,12,0,0,7227,7226,1,0,0,0,7227,7228,1,0, - 0,0,7228,727,1,0,0,0,7229,7230,5,866,0,0,7230,7231,3,708,354,0,7231, - 7232,5,867,0,0,7232,729,1,0,0,0,7233,7234,5,866,0,0,7234,7235,3, - 708,354,0,7235,7236,5,868,0,0,7236,7237,3,708,354,0,7237,7238,5, - 867,0,0,7238,731,1,0,0,0,7239,7240,5,866,0,0,7240,7243,3,708,354, - 0,7241,7242,5,868,0,0,7242,7244,3,708,354,0,7243,7241,1,0,0,0,7243, - 7244,1,0,0,0,7244,7245,1,0,0,0,7245,7246,5,867,0,0,7246,733,1,0, - 0,0,7247,7248,5,866,0,0,7248,7253,3,670,335,0,7249,7250,5,868,0, - 0,7250,7252,3,670,335,0,7251,7249,1,0,0,0,7252,7255,1,0,0,0,7253, - 7251,1,0,0,0,7253,7254,1,0,0,0,7254,7256,1,0,0,0,7255,7253,1,0,0, - 0,7256,7257,5,867,0,0,7257,735,1,0,0,0,7258,7263,3,800,400,0,7259, - 7260,5,868,0,0,7260,7262,3,800,400,0,7261,7259,1,0,0,0,7262,7265, - 1,0,0,0,7263,7261,1,0,0,0,7263,7264,1,0,0,0,7264,737,1,0,0,0,7265, - 7263,1,0,0,0,7266,7267,7,131,0,0,7267,7272,3,740,370,0,7268,7269, - 5,868,0,0,7269,7271,3,740,370,0,7270,7268,1,0,0,0,7271,7274,1,0, - 0,0,7272,7270,1,0,0,0,7272,7273,1,0,0,0,7273,739,1,0,0,0,7274,7272, - 1,0,0,0,7275,7276,5,866,0,0,7276,7281,3,742,371,0,7277,7278,5,868, - 0,0,7278,7280,3,742,371,0,7279,7277,1,0,0,0,7280,7283,1,0,0,0,7281, - 7279,1,0,0,0,7281,7282,1,0,0,0,7282,7284,1,0,0,0,7283,7281,1,0,0, - 0,7284,7285,5,867,0,0,7285,741,1,0,0,0,7286,7289,3,800,400,0,7287, - 7289,5,42,0,0,7288,7286,1,0,0,0,7288,7287,1,0,0,0,7289,743,1,0,0, - 0,7290,7295,3,720,360,0,7291,7292,5,868,0,0,7292,7294,3,720,360, - 0,7293,7291,1,0,0,0,7294,7297,1,0,0,0,7295,7293,1,0,0,0,7295,7296, - 1,0,0,0,7296,745,1,0,0,0,7297,7295,1,0,0,0,7298,7303,5,882,0,0,7299, - 7300,5,868,0,0,7300,7302,5,882,0,0,7301,7299,1,0,0,0,7302,7305,1, - 0,0,0,7303,7301,1,0,0,0,7303,7304,1,0,0,0,7304,747,1,0,0,0,7305, - 7303,1,0,0,0,7306,7311,5,892,0,0,7307,7308,5,868,0,0,7308,7310,5, - 892,0,0,7309,7307,1,0,0,0,7310,7313,1,0,0,0,7311,7309,1,0,0,0,7311, - 7312,1,0,0,0,7312,749,1,0,0,0,7313,7311,1,0,0,0,7314,7341,5,116, - 0,0,7315,7316,5,24,0,0,7316,7317,5,866,0,0,7317,7318,3,800,400,0, - 7318,7319,5,13,0,0,7319,7320,3,726,363,0,7320,7321,5,867,0,0,7321, - 7341,1,0,0,0,7322,7324,3,806,403,0,7323,7322,1,0,0,0,7323,7324,1, - 0,0,0,7324,7325,1,0,0,0,7325,7341,3,720,360,0,7326,7330,3,752,376, - 0,7327,7328,5,119,0,0,7328,7329,5,185,0,0,7329,7331,3,752,376,0, - 7330,7327,1,0,0,0,7330,7331,1,0,0,0,7331,7341,1,0,0,0,7332,7333, - 5,866,0,0,7333,7334,3,800,400,0,7334,7335,5,867,0,0,7335,7341,1, - 0,0,0,7336,7337,5,866,0,0,7337,7338,3,698,349,0,7338,7339,5,867, - 0,0,7339,7341,1,0,0,0,7340,7314,1,0,0,0,7340,7315,1,0,0,0,7340,7323, - 1,0,0,0,7340,7326,1,0,0,0,7340,7332,1,0,0,0,7340,7336,1,0,0,0,7341, - 751,1,0,0,0,7342,7348,7,132,0,0,7343,7345,5,866,0,0,7344,7346,3, - 708,354,0,7345,7344,1,0,0,0,7345,7346,1,0,0,0,7346,7347,1,0,0,0, - 7347,7349,5,867,0,0,7348,7343,1,0,0,0,7348,7349,1,0,0,0,7349,7357, - 1,0,0,0,7350,7351,5,295,0,0,7351,7353,5,866,0,0,7352,7354,3,708, - 354,0,7353,7352,1,0,0,0,7353,7354,1,0,0,0,7354,7355,1,0,0,0,7355, - 7357,5,867,0,0,7356,7342,1,0,0,0,7356,7350,1,0,0,0,7357,753,1,0, - 0,0,7358,7359,5,78,0,0,7359,7360,5,60,0,0,7360,755,1,0,0,0,7361, - 7362,5,78,0,0,7362,7363,5,114,0,0,7363,7364,5,60,0,0,7364,757,1, - 0,0,0,7365,7366,5,124,0,0,7366,7367,5,143,0,0,7367,759,1,0,0,0,7368, - 7391,3,762,381,0,7369,7391,3,770,385,0,7370,7391,3,772,386,0,7371, - 7378,3,792,396,0,7372,7373,5,866,0,0,7373,7379,5,867,0,0,7374,7375, - 5,866,0,0,7375,7376,3,796,398,0,7376,7377,5,867,0,0,7377,7379,1, - 0,0,0,7378,7372,1,0,0,0,7378,7374,1,0,0,0,7379,7391,1,0,0,0,7380, - 7387,3,628,314,0,7381,7382,5,866,0,0,7382,7388,5,867,0,0,7383,7384, - 5,866,0,0,7384,7385,3,796,398,0,7385,7386,5,867,0,0,7386,7388,1, - 0,0,0,7387,7381,1,0,0,0,7387,7383,1,0,0,0,7388,7391,1,0,0,0,7389, - 7391,3,794,397,0,7390,7368,1,0,0,0,7390,7369,1,0,0,0,7390,7370,1, - 0,0,0,7390,7371,1,0,0,0,7390,7380,1,0,0,0,7390,7389,1,0,0,0,7391, - 761,1,0,0,0,7392,7395,7,133,0,0,7393,7394,5,866,0,0,7394,7396,5, - 867,0,0,7395,7393,1,0,0,0,7395,7396,1,0,0,0,7396,7572,1,0,0,0,7397, - 7572,3,56,28,0,7398,7399,5,33,0,0,7399,7400,5,866,0,0,7400,7401, - 3,800,400,0,7401,7402,5,868,0,0,7402,7403,3,726,363,0,7403,7404, - 5,867,0,0,7404,7572,1,0,0,0,7405,7406,5,33,0,0,7406,7407,5,866,0, - 0,7407,7408,3,800,400,0,7408,7409,5,188,0,0,7409,7410,3,684,342, - 0,7410,7411,5,867,0,0,7411,7572,1,0,0,0,7412,7413,5,24,0,0,7413, - 7414,5,866,0,0,7414,7415,3,800,400,0,7415,7416,5,13,0,0,7416,7417, - 3,726,363,0,7417,7418,5,867,0,0,7418,7572,1,0,0,0,7419,7420,5,189, - 0,0,7420,7421,5,866,0,0,7421,7422,3,658,329,0,7422,7423,5,867,0, - 0,7423,7572,1,0,0,0,7424,7426,5,23,0,0,7425,7427,3,764,382,0,7426, - 7425,1,0,0,0,7427,7428,1,0,0,0,7428,7426,1,0,0,0,7428,7429,1,0,0, - 0,7429,7432,1,0,0,0,7430,7431,5,53,0,0,7431,7433,3,798,399,0,7432, - 7430,1,0,0,0,7432,7433,1,0,0,0,7433,7434,1,0,0,0,7434,7435,5,378, - 0,0,7435,7572,1,0,0,0,7436,7437,5,23,0,0,7437,7439,3,800,400,0,7438, - 7440,3,764,382,0,7439,7438,1,0,0,0,7440,7441,1,0,0,0,7441,7439,1, - 0,0,0,7441,7442,1,0,0,0,7442,7445,1,0,0,0,7443,7444,5,53,0,0,7444, - 7446,3,798,399,0,7445,7443,1,0,0,0,7445,7446,1,0,0,0,7446,7447,1, - 0,0,0,7447,7448,5,378,0,0,7448,7572,1,0,0,0,7449,7450,5,224,0,0, - 7450,7451,5,866,0,0,7451,7454,3,796,398,0,7452,7453,5,188,0,0,7453, - 7455,3,684,342,0,7454,7452,1,0,0,0,7454,7455,1,0,0,0,7455,7456,1, - 0,0,0,7456,7457,5,867,0,0,7457,7572,1,0,0,0,7458,7459,5,296,0,0, - 7459,7462,5,866,0,0,7460,7463,3,712,356,0,7461,7463,3,800,400,0, - 7462,7460,1,0,0,0,7462,7461,1,0,0,0,7463,7464,1,0,0,0,7464,7467, - 5,80,0,0,7465,7468,3,712,356,0,7466,7468,3,800,400,0,7467,7465,1, - 0,0,0,7467,7466,1,0,0,0,7468,7469,1,0,0,0,7469,7470,5,867,0,0,7470, - 7572,1,0,0,0,7471,7472,7,134,0,0,7472,7475,5,866,0,0,7473,7476,3, - 712,356,0,7474,7476,3,800,400,0,7475,7473,1,0,0,0,7475,7474,1,0, - 0,0,7476,7477,1,0,0,0,7477,7480,5,68,0,0,7478,7481,3,708,354,0,7479, - 7481,3,800,400,0,7480,7478,1,0,0,0,7480,7479,1,0,0,0,7481,7487,1, - 0,0,0,7482,7485,5,65,0,0,7483,7486,3,708,354,0,7484,7486,3,800,400, - 0,7485,7483,1,0,0,0,7485,7484,1,0,0,0,7486,7488,1,0,0,0,7487,7482, - 1,0,0,0,7487,7488,1,0,0,0,7488,7489,1,0,0,0,7489,7490,5,867,0,0, - 7490,7572,1,0,0,0,7491,7492,5,300,0,0,7492,7493,5,866,0,0,7493,7496, - 7,135,0,0,7494,7497,3,712,356,0,7495,7497,3,800,400,0,7496,7494, - 1,0,0,0,7496,7495,1,0,0,0,7496,7497,1,0,0,0,7497,7498,1,0,0,0,7498, - 7501,5,68,0,0,7499,7502,3,712,356,0,7500,7502,3,800,400,0,7501,7499, - 1,0,0,0,7501,7500,1,0,0,0,7502,7503,1,0,0,0,7503,7504,5,867,0,0, - 7504,7572,1,0,0,0,7505,7506,5,300,0,0,7506,7509,5,866,0,0,7507,7510, - 3,712,356,0,7508,7510,3,800,400,0,7509,7507,1,0,0,0,7509,7508,1, - 0,0,0,7510,7511,1,0,0,0,7511,7514,5,68,0,0,7512,7515,3,712,356,0, - 7513,7515,3,800,400,0,7514,7512,1,0,0,0,7514,7513,1,0,0,0,7515,7516, - 1,0,0,0,7516,7517,5,867,0,0,7517,7572,1,0,0,0,7518,7519,5,840,0, - 0,7519,7522,5,866,0,0,7520,7523,3,712,356,0,7521,7523,3,800,400, - 0,7522,7520,1,0,0,0,7522,7521,1,0,0,0,7523,7530,1,0,0,0,7524,7525, - 5,13,0,0,7525,7526,7,136,0,0,7526,7527,5,866,0,0,7527,7528,3,708, - 354,0,7528,7529,5,867,0,0,7529,7531,1,0,0,0,7530,7524,1,0,0,0,7530, - 7531,1,0,0,0,7531,7533,1,0,0,0,7532,7534,3,766,383,0,7533,7532,1, - 0,0,0,7533,7534,1,0,0,0,7534,7535,1,0,0,0,7535,7536,5,867,0,0,7536, - 7572,1,0,0,0,7537,7538,5,293,0,0,7538,7539,5,866,0,0,7539,7540,3, - 66,33,0,7540,7543,5,68,0,0,7541,7544,3,712,356,0,7542,7544,3,800, - 400,0,7543,7541,1,0,0,0,7543,7542,1,0,0,0,7544,7545,1,0,0,0,7545, - 7546,5,867,0,0,7546,7572,1,0,0,0,7547,7548,5,827,0,0,7548,7549,5, - 866,0,0,7549,7550,7,137,0,0,7550,7551,5,868,0,0,7551,7552,3,712, - 356,0,7552,7553,5,867,0,0,7553,7572,1,0,0,0,7554,7555,5,254,0,0, - 7555,7556,5,866,0,0,7556,7557,3,800,400,0,7557,7558,5,868,0,0,7558, - 7561,3,800,400,0,7559,7560,5,579,0,0,7560,7562,3,726,363,0,7561, - 7559,1,0,0,0,7561,7562,1,0,0,0,7562,7564,1,0,0,0,7563,7565,3,286, - 143,0,7564,7563,1,0,0,0,7564,7565,1,0,0,0,7565,7567,1,0,0,0,7566, - 7568,3,288,144,0,7567,7566,1,0,0,0,7567,7568,1,0,0,0,7568,7569,1, - 0,0,0,7569,7570,5,867,0,0,7570,7572,1,0,0,0,7571,7392,1,0,0,0,7571, - 7397,1,0,0,0,7571,7398,1,0,0,0,7571,7405,1,0,0,0,7571,7412,1,0,0, - 0,7571,7419,1,0,0,0,7571,7424,1,0,0,0,7571,7436,1,0,0,0,7571,7449, - 1,0,0,0,7571,7458,1,0,0,0,7571,7471,1,0,0,0,7571,7491,1,0,0,0,7571, - 7505,1,0,0,0,7571,7518,1,0,0,0,7571,7537,1,0,0,0,7571,7547,1,0,0, - 0,7571,7554,1,0,0,0,7572,763,1,0,0,0,7573,7574,5,191,0,0,7574,7575, - 3,798,399,0,7575,7576,5,175,0,0,7576,7577,3,798,399,0,7577,765,1, - 0,0,0,7578,7579,5,448,0,0,7579,7584,3,768,384,0,7580,7581,5,868, - 0,0,7581,7583,3,768,384,0,7582,7580,1,0,0,0,7583,7586,1,0,0,0,7584, - 7582,1,0,0,0,7584,7585,1,0,0,0,7585,7593,1,0,0,0,7586,7584,1,0,0, - 0,7587,7588,5,448,0,0,7588,7589,3,708,354,0,7589,7590,5,854,0,0, - 7590,7591,3,708,354,0,7591,7593,1,0,0,0,7592,7578,1,0,0,0,7592,7587, - 1,0,0,0,7593,767,1,0,0,0,7594,7596,3,708,354,0,7595,7597,7,138,0, - 0,7596,7595,1,0,0,0,7596,7597,1,0,0,0,7597,769,1,0,0,0,7598,7599, - 7,139,0,0,7599,7601,5,866,0,0,7600,7602,7,44,0,0,7601,7600,1,0,0, - 0,7601,7602,1,0,0,0,7602,7603,1,0,0,0,7603,7604,3,798,399,0,7604, - 7606,5,867,0,0,7605,7607,3,774,387,0,7606,7605,1,0,0,0,7606,7607, - 1,0,0,0,7607,7658,1,0,0,0,7608,7609,5,262,0,0,7609,7617,5,866,0, - 0,7610,7618,5,850,0,0,7611,7613,5,7,0,0,7612,7611,1,0,0,0,7612,7613, - 1,0,0,0,7613,7614,1,0,0,0,7614,7618,3,798,399,0,7615,7616,5,49,0, - 0,7616,7618,3,796,398,0,7617,7610,1,0,0,0,7617,7612,1,0,0,0,7617, - 7615,1,0,0,0,7618,7619,1,0,0,0,7619,7621,5,867,0,0,7620,7622,3,774, - 387,0,7621,7620,1,0,0,0,7621,7622,1,0,0,0,7622,7658,1,0,0,0,7623, - 7624,7,140,0,0,7624,7626,5,866,0,0,7625,7627,5,7,0,0,7626,7625,1, - 0,0,0,7626,7627,1,0,0,0,7627,7628,1,0,0,0,7628,7629,3,798,399,0, - 7629,7631,5,867,0,0,7630,7632,3,774,387,0,7631,7630,1,0,0,0,7631, - 7632,1,0,0,0,7632,7658,1,0,0,0,7633,7634,5,266,0,0,7634,7636,5,866, - 0,0,7635,7637,5,49,0,0,7636,7635,1,0,0,0,7636,7637,1,0,0,0,7637, - 7638,1,0,0,0,7638,7649,3,796,398,0,7639,7640,5,125,0,0,7640,7641, - 5,20,0,0,7641,7646,3,254,127,0,7642,7643,5,868,0,0,7643,7645,3,254, - 127,0,7644,7642,1,0,0,0,7645,7648,1,0,0,0,7646,7644,1,0,0,0,7646, - 7647,1,0,0,0,7647,7650,1,0,0,0,7648,7646,1,0,0,0,7649,7639,1,0,0, - 0,7649,7650,1,0,0,0,7650,7653,1,0,0,0,7651,7652,5,156,0,0,7652,7654, - 5,882,0,0,7653,7651,1,0,0,0,7653,7654,1,0,0,0,7654,7655,1,0,0,0, - 7655,7656,5,867,0,0,7656,7658,1,0,0,0,7657,7598,1,0,0,0,7657,7608, - 1,0,0,0,7657,7623,1,0,0,0,7657,7633,1,0,0,0,7658,771,1,0,0,0,7659, - 7660,7,141,0,0,7660,7661,5,866,0,0,7661,7664,3,800,400,0,7662,7663, - 5,868,0,0,7663,7665,3,708,354,0,7664,7662,1,0,0,0,7664,7665,1,0, - 0,0,7665,7668,1,0,0,0,7666,7667,5,868,0,0,7667,7669,3,708,354,0, - 7668,7666,1,0,0,0,7668,7669,1,0,0,0,7669,7670,1,0,0,0,7670,7671, - 5,867,0,0,7671,7672,3,774,387,0,7672,7698,1,0,0,0,7673,7674,7,142, - 0,0,7674,7675,5,866,0,0,7675,7676,3,800,400,0,7676,7677,5,867,0, - 0,7677,7678,3,774,387,0,7678,7698,1,0,0,0,7679,7680,7,143,0,0,7680, - 7681,5,866,0,0,7681,7682,5,867,0,0,7682,7698,3,774,387,0,7683,7684, - 5,273,0,0,7684,7685,5,866,0,0,7685,7686,3,800,400,0,7686,7687,5, - 868,0,0,7687,7688,3,708,354,0,7688,7689,5,867,0,0,7689,7690,3,774, - 387,0,7690,7698,1,0,0,0,7691,7692,5,272,0,0,7692,7693,5,866,0,0, - 7693,7694,3,708,354,0,7694,7695,5,867,0,0,7695,7696,3,774,387,0, - 7696,7698,1,0,0,0,7697,7659,1,0,0,0,7697,7673,1,0,0,0,7697,7679, - 1,0,0,0,7697,7683,1,0,0,0,7697,7691,1,0,0,0,7698,773,1,0,0,0,7699, - 7705,5,129,0,0,7700,7701,5,866,0,0,7701,7702,3,776,388,0,7702,7703, - 5,867,0,0,7703,7706,1,0,0,0,7704,7706,3,778,389,0,7705,7700,1,0, - 0,0,7705,7704,1,0,0,0,7706,775,1,0,0,0,7707,7709,3,778,389,0,7708, - 7707,1,0,0,0,7708,7709,1,0,0,0,7709,7711,1,0,0,0,7710,7712,3,790, - 395,0,7711,7710,1,0,0,0,7711,7712,1,0,0,0,7712,7714,1,0,0,0,7713, - 7715,3,252,126,0,7714,7713,1,0,0,0,7714,7715,1,0,0,0,7715,7717,1, - 0,0,0,7716,7718,3,780,390,0,7717,7716,1,0,0,0,7717,7718,1,0,0,0, - 7718,777,1,0,0,0,7719,7720,3,702,351,0,7720,779,1,0,0,0,7721,7722, - 3,782,391,0,7722,7723,3,784,392,0,7723,781,1,0,0,0,7724,7725,7,144, - 0,0,7725,783,1,0,0,0,7726,7729,3,788,394,0,7727,7729,3,786,393,0, - 7728,7726,1,0,0,0,7728,7727,1,0,0,0,7729,785,1,0,0,0,7730,7731,5, - 17,0,0,7731,7732,3,788,394,0,7732,7733,5,11,0,0,7733,7734,3,788, - 394,0,7734,787,1,0,0,0,7735,7736,5,36,0,0,7736,7743,5,586,0,0,7737, - 7738,5,669,0,0,7738,7743,7,145,0,0,7739,7740,3,800,400,0,7740,7741, - 7,145,0,0,7741,7743,1,0,0,0,7742,7735,1,0,0,0,7742,7737,1,0,0,0, - 7742,7739,1,0,0,0,7743,789,1,0,0,0,7744,7745,5,130,0,0,7745,7746, - 5,20,0,0,7746,7751,3,800,400,0,7747,7748,5,868,0,0,7748,7750,3,800, - 400,0,7749,7747,1,0,0,0,7750,7753,1,0,0,0,7751,7749,1,0,0,0,7751, - 7752,1,0,0,0,7752,791,1,0,0,0,7753,7751,1,0,0,0,7754,7779,3,832, - 416,0,7755,7779,5,757,0,0,7756,7779,5,289,0,0,7757,7779,5,285,0, - 0,7758,7779,5,286,0,0,7759,7779,5,287,0,0,7760,7779,5,290,0,0,7761, - 7779,5,291,0,0,7762,7779,5,292,0,0,7763,7779,5,78,0,0,7764,7779, - 5,86,0,0,7765,7779,5,288,0,0,7766,7779,5,294,0,0,7767,7779,5,488, - 0,0,7768,7779,5,295,0,0,7769,7779,5,142,0,0,7770,7779,5,143,0,0, - 7771,7779,5,297,0,0,7772,7779,5,298,0,0,7773,7779,5,299,0,0,7774, - 7779,5,300,0,0,7775,7779,5,301,0,0,7776,7779,5,302,0,0,7777,7779, - 5,303,0,0,7778,7754,1,0,0,0,7778,7755,1,0,0,0,7778,7756,1,0,0,0, - 7778,7757,1,0,0,0,7778,7758,1,0,0,0,7778,7759,1,0,0,0,7778,7760, - 1,0,0,0,7778,7761,1,0,0,0,7778,7762,1,0,0,0,7778,7763,1,0,0,0,7778, - 7764,1,0,0,0,7778,7765,1,0,0,0,7778,7766,1,0,0,0,7778,7767,1,0,0, - 0,7778,7768,1,0,0,0,7778,7769,1,0,0,0,7778,7770,1,0,0,0,7778,7771, - 1,0,0,0,7778,7772,1,0,0,0,7778,7773,1,0,0,0,7778,7774,1,0,0,0,7778, - 7775,1,0,0,0,7778,7776,1,0,0,0,7778,7777,1,0,0,0,7779,793,1,0,0, - 0,7780,7781,7,146,0,0,7781,7782,5,866,0,0,7782,7783,3,798,399,0, - 7783,7784,5,867,0,0,7784,795,1,0,0,0,7785,7790,3,798,399,0,7786, - 7787,5,868,0,0,7787,7789,3,798,399,0,7788,7786,1,0,0,0,7789,7792, - 1,0,0,0,7790,7788,1,0,0,0,7790,7791,1,0,0,0,7791,797,1,0,0,0,7792, - 7790,1,0,0,0,7793,7797,3,720,360,0,7794,7797,3,760,380,0,7795,7797, - 3,800,400,0,7796,7793,1,0,0,0,7796,7794,1,0,0,0,7796,7795,1,0,0, - 0,7797,799,1,0,0,0,7798,7799,6,400,-1,0,7799,7800,7,147,0,0,7800, - 7810,3,800,400,4,7801,7802,3,802,401,0,7802,7804,5,89,0,0,7803,7805, - 5,114,0,0,7804,7803,1,0,0,0,7804,7805,1,0,0,0,7805,7806,1,0,0,0, - 7806,7807,7,148,0,0,7807,7810,1,0,0,0,7808,7810,3,802,401,0,7809, - 7798,1,0,0,0,7809,7801,1,0,0,0,7809,7808,1,0,0,0,7810,7817,1,0,0, - 0,7811,7812,10,3,0,0,7812,7813,3,812,406,0,7813,7814,3,800,400,4, - 7814,7816,1,0,0,0,7815,7811,1,0,0,0,7816,7819,1,0,0,0,7817,7815, - 1,0,0,0,7817,7818,1,0,0,0,7818,801,1,0,0,0,7819,7817,1,0,0,0,7820, - 7821,6,401,-1,0,7821,7822,3,804,402,0,7822,7886,1,0,0,0,7823,7825, - 10,6,0,0,7824,7826,5,114,0,0,7825,7824,1,0,0,0,7825,7826,1,0,0,0, - 7826,7827,1,0,0,0,7827,7828,5,17,0,0,7828,7829,3,802,401,0,7829, - 7830,5,11,0,0,7830,7831,3,802,401,7,7831,7885,1,0,0,0,7832,7833, - 10,5,0,0,7833,7834,5,604,0,0,7834,7835,5,99,0,0,7835,7885,3,802, - 401,6,7836,7838,10,3,0,0,7837,7839,5,114,0,0,7838,7837,1,0,0,0,7838, - 7839,1,0,0,0,7839,7840,1,0,0,0,7840,7841,7,149,0,0,7841,7885,3,802, - 401,4,7842,7844,10,9,0,0,7843,7845,5,114,0,0,7844,7843,1,0,0,0,7844, - 7845,1,0,0,0,7845,7846,1,0,0,0,7846,7847,5,80,0,0,7847,7850,5,866, - 0,0,7848,7851,3,204,102,0,7849,7851,3,736,368,0,7850,7848,1,0,0, - 0,7850,7849,1,0,0,0,7851,7852,1,0,0,0,7852,7853,5,867,0,0,7853,7885, - 1,0,0,0,7854,7855,10,8,0,0,7855,7856,5,89,0,0,7856,7885,3,718,359, - 0,7857,7858,10,7,0,0,7858,7865,3,808,404,0,7859,7860,7,150,0,0,7860, - 7861,5,866,0,0,7861,7862,3,204,102,0,7862,7863,5,867,0,0,7863,7866, - 1,0,0,0,7864,7866,3,802,401,0,7865,7859,1,0,0,0,7865,7864,1,0,0, - 0,7866,7885,1,0,0,0,7867,7869,10,4,0,0,7868,7870,5,114,0,0,7869, - 7868,1,0,0,0,7869,7870,1,0,0,0,7870,7871,1,0,0,0,7871,7872,5,99, - 0,0,7872,7875,3,802,401,0,7873,7874,5,384,0,0,7874,7876,5,882,0, - 0,7875,7873,1,0,0,0,7875,7876,1,0,0,0,7876,7885,1,0,0,0,7877,7878, - 10,2,0,0,7878,7879,5,485,0,0,7879,7880,5,510,0,0,7880,7881,5,866, - 0,0,7881,7882,3,802,401,0,7882,7883,5,867,0,0,7883,7885,1,0,0,0, - 7884,7823,1,0,0,0,7884,7832,1,0,0,0,7884,7836,1,0,0,0,7884,7842, - 1,0,0,0,7884,7854,1,0,0,0,7884,7857,1,0,0,0,7884,7867,1,0,0,0,7884, - 7877,1,0,0,0,7885,7888,1,0,0,0,7886,7884,1,0,0,0,7886,7887,1,0,0, - 0,7887,803,1,0,0,0,7888,7886,1,0,0,0,7889,7890,6,402,-1,0,7890,7938, - 3,720,360,0,7891,7938,3,760,380,0,7892,7938,3,682,341,0,7893,7894, - 3,806,403,0,7894,7895,3,804,402,12,7895,7938,1,0,0,0,7896,7897,5, - 228,0,0,7897,7938,3,804,402,11,7898,7899,5,892,0,0,7899,7900,5,841, - 0,0,7900,7938,3,804,402,10,7901,7902,5,866,0,0,7902,7907,3,800,400, - 0,7903,7904,5,868,0,0,7904,7906,3,800,400,0,7905,7903,1,0,0,0,7906, - 7909,1,0,0,0,7907,7905,1,0,0,0,7907,7908,1,0,0,0,7908,7910,1,0,0, - 0,7909,7907,1,0,0,0,7910,7911,5,867,0,0,7911,7938,1,0,0,0,7912,7913, - 5,586,0,0,7913,7914,5,866,0,0,7914,7917,3,800,400,0,7915,7916,5, - 868,0,0,7916,7918,3,800,400,0,7917,7915,1,0,0,0,7918,7919,1,0,0, - 0,7919,7917,1,0,0,0,7919,7920,1,0,0,0,7920,7921,1,0,0,0,7921,7922, - 5,867,0,0,7922,7938,1,0,0,0,7923,7924,5,60,0,0,7924,7925,5,866,0, - 0,7925,7926,3,204,102,0,7926,7927,5,867,0,0,7927,7938,1,0,0,0,7928, - 7929,5,866,0,0,7929,7930,3,204,102,0,7930,7931,5,867,0,0,7931,7938, - 1,0,0,0,7932,7933,5,87,0,0,7933,7934,3,800,400,0,7934,7935,3,66, - 33,0,7935,7938,1,0,0,0,7936,7938,3,658,329,0,7937,7889,1,0,0,0,7937, - 7891,1,0,0,0,7937,7892,1,0,0,0,7937,7893,1,0,0,0,7937,7896,1,0,0, - 0,7937,7898,1,0,0,0,7937,7901,1,0,0,0,7937,7912,1,0,0,0,7937,7923, - 1,0,0,0,7937,7928,1,0,0,0,7937,7932,1,0,0,0,7937,7936,1,0,0,0,7938, - 7956,1,0,0,0,7939,7940,10,4,0,0,7940,7941,3,818,409,0,7941,7942, - 3,804,402,5,7942,7955,1,0,0,0,7943,7944,10,3,0,0,7944,7945,3,814, - 407,0,7945,7946,3,804,402,4,7946,7955,1,0,0,0,7947,7948,10,2,0,0, - 7948,7949,3,816,408,0,7949,7950,3,804,402,3,7950,7955,1,0,0,0,7951, - 7952,10,14,0,0,7952,7953,5,28,0,0,7953,7955,3,686,343,0,7954,7939, - 1,0,0,0,7954,7943,1,0,0,0,7954,7947,1,0,0,0,7954,7951,1,0,0,0,7955, - 7958,1,0,0,0,7956,7954,1,0,0,0,7956,7957,1,0,0,0,7957,805,1,0,0, - 0,7958,7956,1,0,0,0,7959,7960,7,151,0,0,7960,807,1,0,0,0,7961,7962, - 5,859,0,0,7962,7970,5,858,0,0,7963,7964,5,860,0,0,7964,7970,5,857, - 0,0,7965,7966,5,859,0,0,7966,7967,5,857,0,0,7967,7970,5,858,0,0, - 7968,7970,3,810,405,0,7969,7961,1,0,0,0,7969,7963,1,0,0,0,7969,7965, - 1,0,0,0,7969,7968,1,0,0,0,7970,809,1,0,0,0,7971,7972,5,859,0,0,7972, - 7979,5,857,0,0,7973,7974,5,858,0,0,7974,7979,5,857,0,0,7975,7979, - 5,857,0,0,7976,7979,5,858,0,0,7977,7979,5,859,0,0,7978,7971,1,0, - 0,0,7978,7973,1,0,0,0,7978,7975,1,0,0,0,7978,7976,1,0,0,0,7978,7977, - 1,0,0,0,7979,811,1,0,0,0,7980,7988,5,11,0,0,7981,7982,5,863,0,0, - 7982,7988,5,863,0,0,7983,7988,5,196,0,0,7984,7988,5,124,0,0,7985, - 7986,5,862,0,0,7986,7988,5,862,0,0,7987,7980,1,0,0,0,7987,7981,1, - 0,0,0,7987,7983,1,0,0,0,7987,7984,1,0,0,0,7987,7985,1,0,0,0,7988, - 813,1,0,0,0,7989,7990,5,859,0,0,7990,7997,5,859,0,0,7991,7992,5, - 858,0,0,7992,7997,5,858,0,0,7993,7997,5,863,0,0,7994,7997,5,864, - 0,0,7995,7997,5,862,0,0,7996,7989,1,0,0,0,7996,7991,1,0,0,0,7996, - 7993,1,0,0,0,7996,7994,1,0,0,0,7996,7995,1,0,0,0,7997,815,1,0,0, - 0,7998,7999,7,152,0,0,7999,817,1,0,0,0,8000,8001,5,854,0,0,8001, - 8006,5,858,0,0,8002,8003,5,854,0,0,8003,8004,5,858,0,0,8004,8006, - 5,858,0,0,8005,8000,1,0,0,0,8005,8002,1,0,0,0,8006,819,1,0,0,0,8007, - 8008,7,153,0,0,8008,821,1,0,0,0,8009,8010,7,154,0,0,8010,823,1,0, - 0,0,8011,8012,7,155,0,0,8012,825,1,0,0,0,8013,8014,7,156,0,0,8014, - 827,1,0,0,0,8015,8016,7,157,0,0,8016,829,1,0,0,0,8017,8018,7,158, - 0,0,8018,831,1,0,0,0,8019,8020,7,159,0,0,8020,833,1,0,0,0,1154,837, - 844,847,856,899,918,929,945,950,962,997,1007,1012,1018,1023,1027, - 1036,1039,1042,1046,1053,1056,1061,1069,1074,1079,1082,1084,1096, - 1099,1103,1106,1110,1113,1117,1120,1123,1127,1130,1134,1140,1144, - 1149,1155,1162,1170,1188,1195,1199,1203,1207,1212,1215,1218,1221, - 1224,1230,1234,1244,1248,1252,1258,1263,1266,1269,1271,1275,1282, - 1286,1289,1294,1298,1301,1305,1308,1312,1325,1328,1332,1335,1339, - 1342,1346,1349,1353,1356,1359,1363,1366,1370,1376,1380,1392,1398, - 1409,1414,1422,1426,1431,1434,1439,1449,1454,1459,1465,1470,1474, - 1476,1479,1483,1487,1490,1494,1498,1502,1508,1511,1518,1523,1529, - 1536,1542,1550,1553,1560,1563,1565,1571,1577,1594,1601,1608,1620, - 1625,1628,1631,1641,1654,1659,1675,1683,1693,1696,1702,1707,1710, - 1716,1720,1725,1731,1735,1739,1742,1745,1751,1755,1760,1771,1774, - 1781,1784,1788,1794,1806,1809,1814,1827,1834,1840,1845,1849,1852, - 1860,1868,1870,1880,1884,1887,1891,1896,1901,1906,1910,1914,1918, - 1922,1926,1930,1935,1940,1945,1951,1956,1961,1966,1971,1976,1982, - 1987,1992,1997,2002,2007,2012,2017,2024,2029,2034,2039,2043,2048, - 2056,2061,2067,2079,2086,2088,2096,2101,2104,2112,2118,2122,2135, - 2147,2149,2152,2160,2166,2172,2185,2192,2201,2206,2217,2226,2231, - 2243,2250,2259,2264,2276,2283,2292,2297,2304,2313,2318,2320,2325, - 2333,2342,2346,2349,2353,2358,2364,2370,2375,2380,2385,2390,2393, - 2398,2403,2413,2417,2424,2429,2432,2437,2440,2444,2448,2456,2475, - 2478,2481,2485,2495,2508,2521,2524,2530,2533,2537,2546,2549,2552, - 2557,2561,2564,2568,2572,2575,2579,2582,2586,2589,2595,2598,2603, - 2611,2617,2621,2625,2630,2635,2642,2646,2657,2665,2668,2674,2680, - 2683,2689,2695,2697,2702,2708,2714,2716,2720,2723,2726,2732,2738, - 2740,2745,2752,2761,2764,2768,2773,2783,2792,2800,2803,2811,2814, - 2821,2826,2834,2850,2855,2862,2881,2887,2897,2909,2916,2923,2938, - 2951,2957,2963,2969,2975,2981,2987,2992,2999,3006,3013,3018,3021, - 3023,3032,3039,3046,3053,3062,3068,3072,3076,3080,3086,3089,3094, - 3101,3108,3112,3117,3127,3135,3141,3150,3159,3168,3171,3175,3184, - 3188,3191,3194,3200,3203,3206,3210,3213,3216,3219,3230,3233,3238, - 3244,3249,3254,3257,3261,3266,3269,3274,3284,3289,3295,3297,3303, - 3305,3311,3319,3324,3332,3335,3340,3343,3348,3356,3362,3366,3368, - 3374,3382,3387,3395,3398,3403,3406,3410,3413,3416,3420,3423,3431, - 3437,3441,3447,3452,3456,3458,3464,3468,3471,3474,3477,3483,3488, - 3491,3494,3497,3500,3502,3505,3509,3512,3515,3523,3529,3532,3534, - 3543,3548,3555,3558,3561,3565,3569,3575,3579,3586,3590,3593,3596, - 3601,3608,3618,3627,3636,3646,3649,3653,3659,3663,3666,3669,3674, - 3677,3684,3688,3691,3695,3699,3702,3705,3710,3716,3720,3730,3736, - 3740,3746,3750,3756,3759,3771,3775,3779,3787,3791,3805,3810,3813, - 3817,3820,3828,3833,3836,3839,3843,3846,3855,3860,3869,3874,3881, - 3888,3896,3902,3910,3913,3916,3923,3926,3929,3936,3939,3943,3949, - 3959,3963,3972,3975,3979,3985,3993,3998,4002,4008,4014,4017,4019, - 4023,4032,4042,4048,4053,4057,4060,4063,4066,4069,4072,4076,4080, - 4088,4092,4095,4097,4110,4113,4120,4130,4133,4138,4140,4144,4152, - 4158,4167,4180,4184,4190,4195,4199,4202,4206,4209,4217,4220,4222, - 4230,4242,4248,4250,4256,4258,4260,4266,4274,4282,4286,4290,4299, - 4304,4324,4329,4335,4342,4347,4356,4359,4363,4367,4371,4374,4377, - 4380,4384,4388,4391,4394,4397,4404,4408,4423,4436,4444,4454,4458, - 4461,4467,4470,4473,4482,4491,4501,4505,4515,4519,4530,4534,4543, - 4552,4555,4559,4564,4568,4577,4580,4583,4590,4596,4602,4628,4631, - 4634,4653,4655,4678,4681,4684,4703,4705,4719,4732,4769,4774,4809, - 4823,4830,4834,4840,4848,4850,4861,4871,4878,4884,4892,4897,4905, - 4913,4921,4929,4935,4940,4945,4950,4956,4958,4969,4974,4981,4983, - 4997,5003,5008,5013,5019,5026,5034,5042,5047,5053,5056,5064,5071, - 5080,5083,5100,5108,5116,5120,5127,5133,5141,5146,5153,5161,5168, - 5173,5176,5178,5184,5186,5190,5192,5197,5204,5209,5213,5218,5222, - 5228,5234,5239,5242,5244,5250,5252,5256,5258,5263,5268,5275,5284, - 5289,5298,5302,5308,5313,5316,5318,5324,5326,5329,5336,5338,5343, - 5350,5359,5365,5367,5374,5377,5389,5395,5403,5406,5410,5413,5417, - 5419,5430,5433,5437,5440,5443,5450,5462,5465,5472,5478,5488,5493, - 5500,5505,5511,5515,5519,5527,5531,5535,5541,5543,5555,5560,5566, - 5572,5576,5581,5583,5607,5611,5614,5623,5627,5636,5640,5644,5650, - 5652,5661,5671,5698,5702,5707,5714,5717,5723,5733,5743,5753,5759, - 5768,5774,5781,5783,5791,5797,5801,5818,5828,5832,5836,5846,5851, - 5923,5941,5949,5955,5967,5971,5982,5986,5995,6003,6010,6014,6021, - 6026,6029,6032,6043,6047,6051,6066,6075,6078,6092,6110,6123,6126, - 6130,6133,6135,6142,6149,6153,6160,6167,6170,6186,6189,6199,6203, - 6209,6212,6215,6220,6224,6227,6234,6237,6243,6279,6282,6294,6297, - 6313,6315,6319,6326,6330,6337,6340,6349,6352,6357,6363,6365,6371, - 6375,6381,6384,6387,6400,6403,6409,6412,6420,6428,6434,6437,6441, - 6455,6467,6475,6479,6486,6493,6498,6511,6520,6528,6533,6536,6541, - 6544,6556,6561,6574,6576,6581,6585,6588,6590,6597,6604,6607,6610, - 6616,6620,6626,6634,6643,6656,6661,6669,6672,6677,6682,6690,6693, - 6701,6705,6712,6718,6721,6725,6738,6744,6756,6759,6768,6773,6794, - 6810,6820,6825,6830,6832,6835,6839,6841,6848,6854,6856,6859,6863, - 6866,6879,6889,6892,6895,6908,6914,6917,6925,6932,6952,6959,6961, - 6968,6970,6974,6981,6987,6998,7004,7010,7013,7017,7022,7025,7029, - 7033,7035,7040,7045,7058,7061,7065,7068,7071,7076,7081,7087,7090, - 7095,7098,7103,7106,7110,7115,7120,7125,7130,7133,7138,7143,7148, - 7154,7159,7164,7169,7173,7176,7181,7185,7189,7197,7204,7208,7213, - 7218,7222,7224,7227,7243,7253,7263,7272,7281,7288,7295,7303,7311, - 7323,7330,7340,7345,7348,7353,7356,7378,7387,7390,7395,7428,7432, - 7441,7445,7454,7462,7467,7475,7480,7485,7487,7496,7501,7509,7514, - 7522,7530,7533,7543,7561,7564,7567,7571,7584,7592,7596,7601,7606, - 7612,7617,7621,7626,7631,7636,7646,7649,7653,7657,7664,7668,7697, - 7705,7708,7711,7714,7717,7728,7742,7751,7778,7790,7796,7804,7809, - 7817,7825,7838,7844,7850,7865,7869,7875,7884,7886,7907,7919,7937, - 7954,7956,7969,7978,7987,7996,8005 + 832,834,836,0,160,2,0,39,39,152,152,2,0,508,508,514,514,3,0,69,69, + 161,161,182,182,3,0,42,42,357,357,430,430,4,0,42,42,389,389,505, + 505,595,595,4,0,208,208,210,210,216,216,649,649,2,0,494,494,882, + 882,2,0,79,79,143,143,2,0,16,16,306,306,3,0,44,44,86,86,185,185, + 2,0,406,406,538,538,3,0,486,486,661,661,670,670,2,0,364,364,436, + 436,2,0,325,325,450,450,2,0,42,42,871,872,2,0,37,37,678,678,2,0, + 323,323,418,418,2,0,435,435,686,686,3,0,80,80,85,85,126,126,2,0, + 82,82,92,92,2,0,69,69,161,161,3,0,42,42,374,374,403,403,3,0,42,42, + 370,370,802,802,2,0,648,648,685,685,3,0,408,408,526,526,597,597, + 2,0,329,329,522,522,1,0,871,872,2,0,882,882,889,889,2,0,82,82,360, + 360,2,0,523,523,882,882,2,0,524,524,882,882,3,0,402,402,445,445, + 502,502,7,0,42,42,342,342,345,345,374,374,403,403,554,554,889,889, + 2,0,494,494,506,506,1,0,872,873,2,0,6,6,51,51,2,0,5,5,81,81,2,0, + 27,27,31,31,4,0,42,42,357,357,430,430,434,434,2,0,368,368,375,375, + 2,0,369,369,425,425,2,0,13,13,176,176,2,0,194,194,690,690,2,0,22, + 22,146,146,3,0,43,43,76,76,107,107,2,0,7,7,49,49,2,0,107,107,347, + 347,2,0,337,337,398,398,2,0,102,102,587,587,2,0,43,43,107,107,3, + 0,59,59,181,181,828,828,2,0,185,185,594,594,2,0,159,159,503,503, + 4,0,402,402,445,445,501,501,542,542,2,0,402,402,501,501,2,0,14,14, + 45,45,3,0,66,66,79,79,187,187,2,0,35,35,84,84,2,0,98,98,150,150, + 2,0,7,7,49,50,1,0,637,638,2,0,173,173,752,752,2,0,413,413,593,593, + 2,0,228,228,453,453,2,0,563,563,598,598,8,0,108,108,455,455,459, + 460,462,462,464,464,467,476,499,499,557,557,6,0,456,458,461,461, + 463,463,465,465,477,477,558,558,7,0,109,109,411,411,416,416,454, + 454,466,466,573,573,617,617,2,0,116,116,882,882,2,0,118,119,507, + 507,7,0,499,499,557,557,606,609,611,611,619,619,622,628,630,632, + 6,0,558,558,610,610,612,612,614,616,618,618,620,620,7,0,412,412, + 416,416,573,573,613,613,617,617,621,621,629,629,3,0,70,70,118,119, + 507,507,2,0,438,438,639,639,2,0,633,633,635,635,2,0,317,317,640, + 640,2,0,91,91,577,577,2,0,51,51,362,362,3,0,32,32,61,61,180,180, + 2,0,15,15,340,340,2,0,678,678,835,835,3,0,132,132,173,173,409,409, + 3,0,6,6,51,51,492,492,3,0,13,13,20,20,188,188,2,0,42,42,122,122, + 2,0,104,104,183,183,1,0,873,874,2,0,333,333,598,598,2,0,40,40,684, + 684,2,0,392,392,549,549,2,0,115,115,450,450,3,0,413,413,531,531, + 893,894,2,0,841,841,857,857,2,0,318,318,559,559,2,0,68,68,80,80, + 3,0,132,132,178,178,385,385,2,0,493,493,645,645,2,0,383,383,688, + 688,3,0,82,82,93,93,426,426,4,0,413,413,450,450,531,532,593,593, + 2,0,645,645,683,683,2,0,349,349,548,548,6,0,228,228,380,380,382, + 382,410,410,556,556,599,599,2,0,45,46,62,62,3,0,442,442,663,663, + 666,666,10,0,332,332,339,339,351,353,359,359,487,487,495,495,650, + 650,657,657,822,822,832,832,2,0,36,36,170,170,2,0,117,117,831,831, + 11,0,332,332,339,339,351,353,359,359,487,487,495,495,578,578,650, + 650,657,657,822,822,832,832,2,0,870,870,891,892,1,0,892,893,2,0, + 348,348,797,808,3,0,871,874,883,883,885,885,2,0,63,63,179,179,2, + 0,116,116,886,886,5,0,26,26,224,226,233,233,235,238,498,498,2,0, + 26,26,224,224,2,0,26,26,224,225,1,0,198,209,3,0,184,184,197,197, + 596,596,2,0,213,218,403,403,6,0,219,219,230,230,232,232,234,234, + 241,241,321,322,4,0,220,223,228,229,231,231,319,319,2,0,155,155, + 239,239,2,0,442,442,813,821,2,0,228,228,498,498,5,0,202,202,208, + 208,219,220,222,222,442,442,1,0,216,217,2,0,184,184,596,596,2,0, + 202,202,208,208,2,0,189,189,682,682,2,0,287,288,294,294,3,0,152, + 152,285,288,303,303,1,0,297,298,3,0,18,18,96,96,177,177,2,0,224, + 224,228,228,2,0,219,220,222,222,3,0,14,14,45,45,830,830,3,0,258, + 258,270,271,281,281,3,0,259,261,277,280,282,284,2,0,267,267,269, + 269,2,0,265,265,268,268,2,0,263,264,274,276,2,0,134,134,587,587, + 2,0,405,405,539,539,2,0,512,512,529,529,2,0,114,114,860,860,3,0, + 63,63,179,179,674,674,2,0,139,139,151,151,3,0,7,7,309,309,602,602, + 3,0,114,114,853,854,860,861,1,0,850,856,2,0,228,228,756,796,1,0, + 809,812,5,0,717,718,734,736,743,743,749,750,752,752,1,0,696,703, + 3,0,219,223,236,236,239,239,75,0,12,12,15,15,19,19,30,30,36,37,42, + 42,48,48,55,55,57,57,59,59,74,74,95,95,117,117,122,122,125,125,131, + 131,160,160,170,170,241,241,255,262,266,266,270,271,277,284,304, + 309,311,329,331,343,345,376,378,393,395,400,402,404,406,410,413, + 415,417,426,428,428,430,434,436,454,456,463,465,473,475,476,478, + 498,500,506,508,510,512,522,525,530,533,538,540,542,544,554,556, + 562,565,572,575,575,577,605,633,647,649,665,667,674,676,685,687, + 688,690,695,704,704,706,707,709,712,714,716,719,721,726,727,729, + 733,737,738,740,742,744,744,746,748,751,751,753,755,802,802,822, + 822,825,825,832,833,838,838,24,0,39,39,98,98,150,150,152,152,219, + 221,223,223,253,254,262,265,267,269,272,276,296,296,435,435,686, + 686,696,703,746,746,813,813,816,821,823,824,826,827,829,831,834, + 834,836,836,840,840,856,856,9440,0,841,1,0,0,0,2,851,1,0,0,0,4,860, + 1,0,0,0,6,862,1,0,0,0,8,904,1,0,0,0,10,923,1,0,0,0,12,934,1,0,0, + 0,14,950,1,0,0,0,16,955,1,0,0,0,18,967,1,0,0,0,20,1002,1,0,0,0,22, + 1012,1,0,0,0,24,1014,1,0,0,0,26,1026,1,0,0,0,28,1056,1,0,0,0,30, + 1092,1,0,0,0,32,1143,1,0,0,0,34,1172,1,0,0,0,36,1208,1,0,0,0,38, + 1222,1,0,0,0,40,1229,1,0,0,0,42,1326,1,0,0,0,44,1328,1,0,0,0,46, + 1365,1,0,0,0,48,1429,1,0,0,0,50,1454,1,0,0,0,52,1460,1,0,0,0,54, + 1482,1,0,0,0,56,1569,1,0,0,0,58,1576,1,0,0,0,60,1578,1,0,0,0,62, + 1583,1,0,0,0,64,1623,1,0,0,0,66,1629,1,0,0,0,68,1631,1,0,0,0,70, + 1652,1,0,0,0,72,1659,1,0,0,0,74,1661,1,0,0,0,76,1686,1,0,0,0,78, + 1689,1,0,0,0,80,1694,1,0,0,0,82,1720,1,0,0,0,84,1736,1,0,0,0,86, + 1738,1,0,0,0,88,1832,1,0,0,0,90,1835,1,0,0,0,92,1847,1,0,0,0,94, + 1851,1,0,0,0,96,1901,1,0,0,0,98,1903,1,0,0,0,100,1931,1,0,0,0,102, + 1941,1,0,0,0,104,2128,1,0,0,0,106,2130,1,0,0,0,108,2132,1,0,0,0, + 110,2135,1,0,0,0,112,2210,1,0,0,0,114,2233,1,0,0,0,116,2381,1,0, + 0,0,118,2386,1,0,0,0,120,2388,1,0,0,0,122,2398,1,0,0,0,124,2454, + 1,0,0,0,126,2474,1,0,0,0,128,2476,1,0,0,0,130,2511,1,0,0,0,132,2520, + 1,0,0,0,134,2527,1,0,0,0,136,2550,1,0,0,0,138,2559,1,0,0,0,140,2574, + 1,0,0,0,142,2596,1,0,0,0,144,2652,1,0,0,0,146,2948,1,0,0,0,148,3048, + 1,0,0,0,150,3050,1,0,0,0,152,3057,1,0,0,0,154,3064,1,0,0,0,156,3087, + 1,0,0,0,158,3097,1,0,0,0,160,3104,1,0,0,0,162,3111,1,0,0,0,164,3118, + 1,0,0,0,166,3127,1,0,0,0,168,3139,1,0,0,0,170,3152,1,0,0,0,172,3159, + 1,0,0,0,174,3175,1,0,0,0,176,3202,1,0,0,0,178,3204,1,0,0,0,180,3214, + 1,0,0,0,182,3218,1,0,0,0,184,3224,1,0,0,0,186,3236,1,0,0,0,188,3238, + 1,0,0,0,190,3245,1,0,0,0,192,3247,1,0,0,0,194,3296,1,0,0,0,196,3305, + 1,0,0,0,198,3307,1,0,0,0,200,3318,1,0,0,0,202,3324,1,0,0,0,204,3398, + 1,0,0,0,206,3461,1,0,0,0,208,3479,1,0,0,0,210,3563,1,0,0,0,212,3566, + 1,0,0,0,214,3578,1,0,0,0,216,3598,1,0,0,0,218,3626,1,0,0,0,220,3630, + 1,0,0,0,222,3632,1,0,0,0,224,3642,1,0,0,0,226,3662,1,0,0,0,228,3669, + 1,0,0,0,230,3671,1,0,0,0,232,3682,1,0,0,0,234,3691,1,0,0,0,236,3697, + 1,0,0,0,238,3720,1,0,0,0,240,3722,1,0,0,0,242,3758,1,0,0,0,244,3813, + 1,0,0,0,246,3822,1,0,0,0,248,3842,1,0,0,0,250,3854,1,0,0,0,252,3858, + 1,0,0,0,254,3869,1,0,0,0,256,3902,1,0,0,0,258,3923,1,0,0,0,260,3933, + 1,0,0,0,262,3937,1,0,0,0,264,3963,1,0,0,0,266,4010,1,0,0,0,268,4012, + 1,0,0,0,270,4016,1,0,0,0,272,4033,1,0,0,0,274,4084,1,0,0,0,276,4093, + 1,0,0,0,278,4103,1,0,0,0,280,4105,1,0,0,0,282,4138,1,0,0,0,284,4146, + 1,0,0,0,286,4163,1,0,0,0,288,4179,1,0,0,0,290,4216,1,0,0,0,292,4222, + 1,0,0,0,294,4231,1,0,0,0,296,4244,1,0,0,0,298,4248,1,0,0,0,300,4286, + 1,0,0,0,302,4324,1,0,0,0,304,4338,1,0,0,0,306,4346,1,0,0,0,308,4350, + 1,0,0,0,310,4356,1,0,0,0,312,4370,1,0,0,0,314,4373,1,0,0,0,316,4391, + 1,0,0,0,318,4395,1,0,0,0,320,4411,1,0,0,0,322,4413,1,0,0,0,324,4425, + 1,0,0,0,326,4429,1,0,0,0,328,4446,1,0,0,0,330,4463,1,0,0,0,332,4466, + 1,0,0,0,334,4476,1,0,0,0,336,4480,1,0,0,0,338,4490,1,0,0,0,340,4493, + 1,0,0,0,342,4498,1,0,0,0,344,4518,1,0,0,0,346,4520,1,0,0,0,348,4537, + 1,0,0,0,350,4546,1,0,0,0,352,4555,1,0,0,0,354,4557,1,0,0,0,356,4571, + 1,0,0,0,358,4585,1,0,0,0,360,4600,1,0,0,0,362,4609,1,0,0,0,364,4634, + 1,0,0,0,366,4649,1,0,0,0,368,4668,1,0,0,0,370,4698,1,0,0,0,372,4700, + 1,0,0,0,374,4702,1,0,0,0,376,4704,1,0,0,0,378,4719,1,0,0,0,380,4748, + 1,0,0,0,382,4750,1,0,0,0,384,4752,1,0,0,0,386,4754,1,0,0,0,388,4769, + 1,0,0,0,390,4771,1,0,0,0,392,4838,1,0,0,0,394,4840,1,0,0,0,396,4846, + 1,0,0,0,398,4873,1,0,0,0,400,4887,1,0,0,0,402,4898,1,0,0,0,404,4900, + 1,0,0,0,406,4906,1,0,0,0,408,4916,1,0,0,0,410,4920,1,0,0,0,412,4927, + 1,0,0,0,414,4931,1,0,0,0,416,4937,1,0,0,0,418,4944,1,0,0,0,420,4950, + 1,0,0,0,422,4956,1,0,0,0,424,4961,1,0,0,0,426,5006,1,0,0,0,428,5027, + 1,0,0,0,430,5052,1,0,0,0,432,5055,1,0,0,0,434,5061,1,0,0,0,436,5077, + 1,0,0,0,438,5092,1,0,0,0,440,5098,1,0,0,0,442,5128,1,0,0,0,444,5130, + 1,0,0,0,446,5137,1,0,0,0,448,5149,1,0,0,0,450,5155,1,0,0,0,452,5180, + 1,0,0,0,454,5184,1,0,0,0,456,5188,1,0,0,0,458,5199,1,0,0,0,460,5207, + 1,0,0,0,462,5270,1,0,0,0,464,5329,1,0,0,0,466,5431,1,0,0,0,468,5441, + 1,0,0,0,470,5443,1,0,0,0,472,5461,1,0,0,0,474,5485,1,0,0,0,476,5509, + 1,0,0,0,478,5516,1,0,0,0,480,5536,1,0,0,0,482,5545,1,0,0,0,484,5607, + 1,0,0,0,486,5609,1,0,0,0,488,5613,1,0,0,0,490,5647,1,0,0,0,492,5649, + 1,0,0,0,494,5652,1,0,0,0,496,5716,1,0,0,0,498,5735,1,0,0,0,500,5762, + 1,0,0,0,502,5766,1,0,0,0,504,5787,1,0,0,0,506,5797,1,0,0,0,508,5807, + 1,0,0,0,510,5847,1,0,0,0,512,5849,1,0,0,0,514,5852,1,0,0,0,516,5882, + 1,0,0,0,518,5884,1,0,0,0,520,5887,1,0,0,0,522,5987,1,0,0,0,524,6005, + 1,0,0,0,526,6007,1,0,0,0,528,6059,1,0,0,0,530,6061,1,0,0,0,532,6070, + 1,0,0,0,534,6076,1,0,0,0,536,6083,1,0,0,0,538,6098,1,0,0,0,540,6107, + 1,0,0,0,542,6109,1,0,0,0,544,6130,1,0,0,0,546,6135,1,0,0,0,548,6145, + 1,0,0,0,550,6151,1,0,0,0,552,6185,1,0,0,0,554,6239,1,0,0,0,556,6425, + 1,0,0,0,558,6437,1,0,0,0,560,6453,1,0,0,0,562,6459,1,0,0,0,564,6478, + 1,0,0,0,566,6491,1,0,0,0,568,6505,1,0,0,0,570,6507,1,0,0,0,572,6510, + 1,0,0,0,574,6534,1,0,0,0,576,6546,1,0,0,0,578,6552,1,0,0,0,580,6564, + 1,0,0,0,582,6578,1,0,0,0,584,6580,1,0,0,0,586,6588,1,0,0,0,588,6596, + 1,0,0,0,590,6598,1,0,0,0,592,6600,1,0,0,0,594,6640,1,0,0,0,596,6647, + 1,0,0,0,598,6649,1,0,0,0,600,6672,1,0,0,0,602,6678,1,0,0,0,604,6688, + 1,0,0,0,606,6697,1,0,0,0,608,6700,1,0,0,0,610,6703,1,0,0,0,612,6724, + 1,0,0,0,614,6745,1,0,0,0,616,6753,1,0,0,0,618,6765,1,0,0,0,620,6773, + 1,0,0,0,622,6811,1,0,0,0,624,6823,1,0,0,0,626,6825,1,0,0,0,628,6827, + 1,0,0,0,630,6829,1,0,0,0,632,6831,1,0,0,0,634,6833,1,0,0,0,636,6835, + 1,0,0,0,638,6837,1,0,0,0,640,6839,1,0,0,0,642,6847,1,0,0,0,644,6849, + 1,0,0,0,646,6851,1,0,0,0,648,6853,1,0,0,0,650,6855,1,0,0,0,652,6863, + 1,0,0,0,654,6865,1,0,0,0,656,6875,1,0,0,0,658,6891,1,0,0,0,660,6893, + 1,0,0,0,662,6916,1,0,0,0,664,6918,1,0,0,0,666,6920,1,0,0,0,668,6922, + 1,0,0,0,670,6924,1,0,0,0,672,6932,1,0,0,0,674,6942,1,0,0,0,676,6947, + 1,0,0,0,678,6951,1,0,0,0,680,6958,1,0,0,0,682,6960,1,0,0,0,684,6967, + 1,0,0,0,686,6969,1,0,0,0,688,6975,1,0,0,0,690,6977,1,0,0,0,692,6982, + 1,0,0,0,694,6984,1,0,0,0,696,6986,1,0,0,0,698,7004,1,0,0,0,700,7020, + 1,0,0,0,702,7022,1,0,0,0,704,7026,1,0,0,0,706,7037,1,0,0,0,708,7048, + 1,0,0,0,710,7054,1,0,0,0,712,7056,1,0,0,0,714,7060,1,0,0,0,716,7085, + 1,0,0,0,718,7087,1,0,0,0,720,7090,1,0,0,0,722,7095,1,0,0,0,724,7111, + 1,0,0,0,726,7239,1,0,0,0,728,7241,1,0,0,0,730,7274,1,0,0,0,732,7279, + 1,0,0,0,734,7283,1,0,0,0,736,7289,1,0,0,0,738,7297,1,0,0,0,740,7308, + 1,0,0,0,742,7316,1,0,0,0,744,7325,1,0,0,0,746,7338,1,0,0,0,748,7340, + 1,0,0,0,750,7348,1,0,0,0,752,7356,1,0,0,0,754,7390,1,0,0,0,756,7406, + 1,0,0,0,758,7408,1,0,0,0,760,7411,1,0,0,0,762,7415,1,0,0,0,764,7440, + 1,0,0,0,766,7621,1,0,0,0,768,7623,1,0,0,0,770,7642,1,0,0,0,772,7644, + 1,0,0,0,774,7707,1,0,0,0,776,7747,1,0,0,0,778,7749,1,0,0,0,780,7758, + 1,0,0,0,782,7769,1,0,0,0,784,7771,1,0,0,0,786,7774,1,0,0,0,788,7778, + 1,0,0,0,790,7780,1,0,0,0,792,7792,1,0,0,0,794,7794,1,0,0,0,796,7828, + 1,0,0,0,798,7830,1,0,0,0,800,7835,1,0,0,0,802,7846,1,0,0,0,804,7859, + 1,0,0,0,806,7870,1,0,0,0,808,7987,1,0,0,0,810,8009,1,0,0,0,812,8019, + 1,0,0,0,814,8028,1,0,0,0,816,8037,1,0,0,0,818,8046,1,0,0,0,820,8048, + 1,0,0,0,822,8055,1,0,0,0,824,8057,1,0,0,0,826,8059,1,0,0,0,828,8061, + 1,0,0,0,830,8063,1,0,0,0,832,8065,1,0,0,0,834,8067,1,0,0,0,836,8069, + 1,0,0,0,838,840,3,2,1,0,839,838,1,0,0,0,840,843,1,0,0,0,841,839, + 1,0,0,0,841,842,1,0,0,0,842,844,1,0,0,0,843,841,1,0,0,0,844,845, + 5,0,0,1,845,1,1,0,0,0,846,848,3,4,2,0,847,849,5,869,0,0,848,847, + 1,0,0,0,848,849,1,0,0,0,849,852,1,0,0,0,850,852,3,6,3,0,851,846, + 1,0,0,0,851,850,1,0,0,0,852,3,1,0,0,0,853,861,3,8,4,0,854,861,3, + 10,5,0,855,861,3,12,6,0,856,861,3,14,7,0,857,861,3,16,8,0,858,861, + 3,20,10,0,859,861,3,22,11,0,860,853,1,0,0,0,860,854,1,0,0,0,860, + 855,1,0,0,0,860,856,1,0,0,0,860,857,1,0,0,0,860,858,1,0,0,0,860, + 859,1,0,0,0,861,5,1,0,0,0,862,863,5,869,0,0,863,7,1,0,0,0,864,905, + 3,24,12,0,865,905,3,26,13,0,866,905,3,28,14,0,867,905,3,30,15,0, + 868,905,3,32,16,0,869,905,3,34,17,0,870,905,3,36,18,0,871,905,3, + 40,20,0,872,905,3,42,21,0,873,905,3,44,22,0,874,905,3,46,23,0,875, + 905,3,48,24,0,876,905,3,54,27,0,877,905,3,38,19,0,878,905,3,126, + 63,0,879,905,3,128,64,0,880,905,3,130,65,0,881,905,3,132,66,0,882, + 905,3,134,67,0,883,905,3,136,68,0,884,905,3,138,69,0,885,905,3,140, + 70,0,886,905,3,142,71,0,887,905,3,144,72,0,888,905,3,150,75,0,889, + 905,3,152,76,0,890,905,3,154,77,0,891,905,3,156,78,0,892,905,3,158, + 79,0,893,905,3,160,80,0,894,905,3,162,81,0,895,905,3,164,82,0,896, + 905,3,166,83,0,897,905,3,168,84,0,898,905,3,170,85,0,899,905,3,172, + 86,0,900,905,3,174,87,0,901,905,3,176,88,0,902,905,3,178,89,0,903, + 905,3,182,91,0,904,864,1,0,0,0,904,865,1,0,0,0,904,866,1,0,0,0,904, + 867,1,0,0,0,904,868,1,0,0,0,904,869,1,0,0,0,904,870,1,0,0,0,904, + 871,1,0,0,0,904,872,1,0,0,0,904,873,1,0,0,0,904,874,1,0,0,0,904, + 875,1,0,0,0,904,876,1,0,0,0,904,877,1,0,0,0,904,878,1,0,0,0,904, + 879,1,0,0,0,904,880,1,0,0,0,904,881,1,0,0,0,904,882,1,0,0,0,904, + 883,1,0,0,0,904,884,1,0,0,0,904,885,1,0,0,0,904,886,1,0,0,0,904, + 887,1,0,0,0,904,888,1,0,0,0,904,889,1,0,0,0,904,890,1,0,0,0,904, + 891,1,0,0,0,904,892,1,0,0,0,904,893,1,0,0,0,904,894,1,0,0,0,904, + 895,1,0,0,0,904,896,1,0,0,0,904,897,1,0,0,0,904,898,1,0,0,0,904, + 899,1,0,0,0,904,900,1,0,0,0,904,901,1,0,0,0,904,902,1,0,0,0,904, + 903,1,0,0,0,905,9,1,0,0,0,906,924,3,210,105,0,907,924,3,212,106, + 0,908,924,3,192,96,0,909,924,3,220,110,0,910,924,3,186,93,0,911, + 924,3,208,104,0,912,924,3,184,92,0,913,924,3,198,99,0,914,924,3, + 202,101,0,915,924,3,204,102,0,916,924,3,206,103,0,917,924,3,188, + 94,0,918,924,3,190,95,0,919,924,3,252,126,0,920,924,3,222,111,0, + 921,924,3,616,308,0,922,924,3,618,309,0,923,906,1,0,0,0,923,907, + 1,0,0,0,923,908,1,0,0,0,923,909,1,0,0,0,923,910,1,0,0,0,923,911, + 1,0,0,0,923,912,1,0,0,0,923,913,1,0,0,0,923,914,1,0,0,0,923,915, + 1,0,0,0,923,916,1,0,0,0,923,917,1,0,0,0,923,918,1,0,0,0,923,919, + 1,0,0,0,923,920,1,0,0,0,923,921,1,0,0,0,923,922,1,0,0,0,924,11,1, + 0,0,0,925,935,3,322,161,0,926,935,3,324,162,0,927,935,3,326,163, + 0,928,935,3,328,164,0,929,935,3,330,165,0,930,935,3,332,166,0,931, + 935,3,334,167,0,932,935,3,336,168,0,933,935,3,338,169,0,934,925, + 1,0,0,0,934,926,1,0,0,0,934,927,1,0,0,0,934,928,1,0,0,0,934,929, + 1,0,0,0,934,930,1,0,0,0,934,931,1,0,0,0,934,932,1,0,0,0,934,933, + 1,0,0,0,935,13,1,0,0,0,936,951,3,354,177,0,937,951,3,356,178,0,938, + 951,3,358,179,0,939,951,3,360,180,0,940,951,3,362,181,0,941,951, + 3,364,182,0,942,951,3,366,183,0,943,951,3,368,184,0,944,951,3,404, + 202,0,945,951,3,406,203,0,946,951,3,408,204,0,947,951,3,410,205, + 0,948,951,3,412,206,0,949,951,3,414,207,0,950,936,1,0,0,0,950,937, + 1,0,0,0,950,938,1,0,0,0,950,939,1,0,0,0,950,940,1,0,0,0,950,941, + 1,0,0,0,950,942,1,0,0,0,950,943,1,0,0,0,950,944,1,0,0,0,950,945, + 1,0,0,0,950,946,1,0,0,0,950,947,1,0,0,0,950,948,1,0,0,0,950,949, + 1,0,0,0,951,15,1,0,0,0,952,956,3,416,208,0,953,956,3,418,209,0,954, + 956,3,420,210,0,955,952,1,0,0,0,955,953,1,0,0,0,955,954,1,0,0,0, + 956,17,1,0,0,0,957,968,3,424,212,0,958,968,3,426,213,0,959,968,3, + 428,214,0,960,968,3,432,216,0,961,968,3,434,217,0,962,968,3,436, + 218,0,963,968,3,440,220,0,964,968,3,430,215,0,965,968,3,438,219, + 0,966,968,3,442,221,0,967,957,1,0,0,0,967,958,1,0,0,0,967,959,1, + 0,0,0,967,960,1,0,0,0,967,961,1,0,0,0,967,962,1,0,0,0,967,963,1, + 0,0,0,967,964,1,0,0,0,967,965,1,0,0,0,967,966,1,0,0,0,968,19,1,0, + 0,0,969,1003,3,460,230,0,970,1003,3,462,231,0,971,1003,3,464,232, + 0,972,1003,3,466,233,0,973,1003,3,470,235,0,974,1003,3,482,241,0, + 975,1003,3,484,242,0,976,1003,3,472,236,0,977,1003,3,474,237,0,978, + 1003,3,476,238,0,979,1003,3,478,239,0,980,1003,3,528,264,0,981,1003, + 3,530,265,0,982,1003,3,532,266,0,983,1003,3,534,267,0,984,1003,3, + 536,268,0,985,1003,3,542,271,0,986,1003,3,546,273,0,987,1003,3,548, + 274,0,988,1003,3,550,275,0,989,1003,3,552,276,0,990,1003,3,554,277, + 0,991,1003,3,556,278,0,992,1003,3,570,285,0,993,1003,3,572,286,0, + 994,1003,3,574,287,0,995,1003,3,576,288,0,996,1003,3,578,289,0,997, + 1003,3,580,290,0,998,1003,3,584,292,0,999,1003,3,586,293,0,1000, + 1003,3,588,294,0,1001,1003,3,590,295,0,1002,969,1,0,0,0,1002,970, + 1,0,0,0,1002,971,1,0,0,0,1002,972,1,0,0,0,1002,973,1,0,0,0,1002, + 974,1,0,0,0,1002,975,1,0,0,0,1002,976,1,0,0,0,1002,977,1,0,0,0,1002, + 978,1,0,0,0,1002,979,1,0,0,0,1002,980,1,0,0,0,1002,981,1,0,0,0,1002, + 982,1,0,0,0,1002,983,1,0,0,0,1002,984,1,0,0,0,1002,985,1,0,0,0,1002, + 986,1,0,0,0,1002,987,1,0,0,0,1002,988,1,0,0,0,1002,989,1,0,0,0,1002, + 990,1,0,0,0,1002,991,1,0,0,0,1002,992,1,0,0,0,1002,993,1,0,0,0,1002, + 994,1,0,0,0,1002,995,1,0,0,0,1002,996,1,0,0,0,1002,997,1,0,0,0,1002, + 998,1,0,0,0,1002,999,1,0,0,0,1002,1000,1,0,0,0,1002,1001,1,0,0,0, + 1003,21,1,0,0,0,1004,1013,3,602,301,0,1005,1013,3,600,300,0,1006, + 1013,3,604,302,0,1007,1013,3,606,303,0,1008,1013,3,608,304,0,1009, + 1013,3,610,305,0,1010,1013,3,612,306,0,1011,1013,3,620,310,0,1012, + 1004,1,0,0,0,1012,1005,1,0,0,0,1012,1006,1,0,0,0,1012,1007,1,0,0, + 0,1012,1008,1,0,0,0,1012,1009,1,0,0,0,1012,1010,1,0,0,0,1012,1011, + 1,0,0,0,1013,23,1,0,0,0,1014,1015,5,34,0,0,1015,1017,7,0,0,0,1016, + 1018,3,760,380,0,1017,1016,1,0,0,0,1017,1018,1,0,0,0,1018,1019,1, + 0,0,0,1019,1023,3,626,313,0,1020,1022,3,56,28,0,1021,1020,1,0,0, + 0,1022,1025,1,0,0,0,1023,1021,1,0,0,0,1023,1024,1,0,0,0,1024,25, + 1,0,0,0,1025,1023,1,0,0,0,1026,1028,5,34,0,0,1027,1029,3,62,31,0, + 1028,1027,1,0,0,0,1028,1029,1,0,0,0,1029,1030,1,0,0,0,1030,1032, + 5,385,0,0,1031,1033,3,760,380,0,1032,1031,1,0,0,0,1032,1033,1,0, + 0,0,1033,1034,1,0,0,0,1034,1035,3,702,351,0,1035,1036,5,119,0,0, + 1036,1037,5,590,0,0,1037,1044,3,64,32,0,1038,1039,5,119,0,0,1039, + 1041,5,343,0,0,1040,1042,5,114,0,0,1041,1040,1,0,0,0,1041,1042,1, + 0,0,0,1042,1043,1,0,0,0,1043,1045,5,541,0,0,1044,1038,1,0,0,0,1044, + 1045,1,0,0,0,1045,1047,1,0,0,0,1046,1048,3,72,36,0,1047,1046,1,0, + 0,0,1047,1048,1,0,0,0,1048,1051,1,0,0,0,1049,1050,5,340,0,0,1050, + 1052,5,882,0,0,1051,1049,1,0,0,0,1051,1052,1,0,0,0,1052,1053,1,0, + 0,0,1053,1054,5,371,0,0,1054,1055,3,422,211,0,1055,27,1,0,0,0,1056, + 1058,5,34,0,0,1057,1059,7,1,0,0,1058,1057,1,0,0,0,1058,1059,1,0, + 0,0,1059,1061,1,0,0,0,1060,1062,7,2,0,0,1061,1060,1,0,0,0,1061,1062, + 1,0,0,0,1062,1063,1,0,0,0,1063,1064,5,82,0,0,1064,1066,3,638,319, + 0,1065,1067,3,74,37,0,1066,1065,1,0,0,0,1066,1067,1,0,0,0,1067,1068, + 1,0,0,0,1068,1069,5,119,0,0,1069,1070,3,652,326,0,1070,1074,3,738, + 369,0,1071,1073,3,76,38,0,1072,1071,1,0,0,0,1073,1076,1,0,0,0,1074, + 1072,1,0,0,0,1074,1075,1,0,0,0,1075,1089,1,0,0,0,1076,1074,1,0,0, + 0,1077,1079,5,308,0,0,1078,1080,5,857,0,0,1079,1078,1,0,0,0,1079, + 1080,1,0,0,0,1080,1081,1,0,0,0,1081,1088,7,3,0,0,1082,1084,5,104, + 0,0,1083,1085,5,857,0,0,1084,1083,1,0,0,0,1084,1085,1,0,0,0,1085, + 1086,1,0,0,0,1086,1088,7,4,0,0,1087,1077,1,0,0,0,1087,1082,1,0,0, + 0,1088,1091,1,0,0,0,1089,1087,1,0,0,0,1089,1090,1,0,0,0,1090,29, + 1,0,0,0,1091,1089,1,0,0,0,1092,1093,5,34,0,0,1093,1094,5,451,0,0, + 1094,1095,5,74,0,0,1095,1096,3,706,353,0,1096,1097,5,6,0,0,1097, + 1098,5,671,0,0,1098,1104,5,882,0,0,1099,1101,5,428,0,0,1100,1102, + 5,857,0,0,1101,1100,1,0,0,0,1101,1102,1,0,0,0,1102,1103,1,0,0,0, + 1103,1105,3,714,357,0,1104,1099,1,0,0,0,1104,1105,1,0,0,0,1105,1111, + 1,0,0,0,1106,1108,5,672,0,0,1107,1109,5,857,0,0,1108,1107,1,0,0, + 0,1108,1109,1,0,0,0,1109,1110,1,0,0,0,1110,1112,3,714,357,0,1111, + 1106,1,0,0,0,1111,1112,1,0,0,0,1112,1118,1,0,0,0,1113,1115,5,553, + 0,0,1114,1116,5,857,0,0,1115,1114,1,0,0,0,1115,1116,1,0,0,0,1116, + 1117,1,0,0,0,1117,1119,3,714,357,0,1118,1113,1,0,0,0,1118,1119,1, + 0,0,0,1119,1125,1,0,0,0,1120,1122,5,504,0,0,1121,1123,5,857,0,0, + 1122,1121,1,0,0,0,1122,1123,1,0,0,0,1123,1124,1,0,0,0,1124,1126, + 3,706,353,0,1125,1120,1,0,0,0,1125,1126,1,0,0,0,1126,1128,1,0,0, + 0,1127,1129,5,687,0,0,1128,1127,1,0,0,0,1128,1129,1,0,0,0,1129,1135, + 1,0,0,0,1130,1132,5,340,0,0,1131,1133,5,857,0,0,1132,1131,1,0,0, + 0,1132,1133,1,0,0,0,1133,1134,1,0,0,0,1134,1136,5,882,0,0,1135,1130, + 1,0,0,0,1135,1136,1,0,0,0,1136,1137,1,0,0,0,1137,1139,5,380,0,0, + 1138,1140,5,857,0,0,1139,1138,1,0,0,0,1139,1140,1,0,0,0,1140,1141, + 1,0,0,0,1141,1142,3,692,346,0,1142,31,1,0,0,0,1143,1145,5,34,0,0, + 1144,1146,3,62,31,0,1145,1144,1,0,0,0,1145,1146,1,0,0,0,1146,1147, + 1,0,0,0,1147,1149,5,132,0,0,1148,1150,3,760,380,0,1149,1148,1,0, + 0,0,1149,1150,1,0,0,0,1150,1151,1,0,0,0,1151,1152,3,702,351,0,1152, + 1154,5,866,0,0,1153,1155,3,78,39,0,1154,1153,1,0,0,0,1154,1155,1, + 0,0,0,1155,1160,1,0,0,0,1156,1157,5,868,0,0,1157,1159,3,78,39,0, + 1158,1156,1,0,0,0,1159,1162,1,0,0,0,1160,1158,1,0,0,0,1160,1161, + 1,0,0,0,1161,1163,1,0,0,0,1162,1160,1,0,0,0,1163,1167,5,867,0,0, + 1164,1166,3,82,41,0,1165,1164,1,0,0,0,1166,1169,1,0,0,0,1167,1165, + 1,0,0,0,1167,1168,1,0,0,0,1168,1170,1,0,0,0,1169,1167,1,0,0,0,1170, + 1171,3,422,211,0,1171,33,1,0,0,0,1172,1174,5,34,0,0,1173,1175,3, + 62,31,0,1174,1173,1,0,0,0,1174,1175,1,0,0,0,1175,1177,1,0,0,0,1176, + 1178,5,307,0,0,1177,1176,1,0,0,0,1177,1178,1,0,0,0,1178,1179,1,0, + 0,0,1179,1181,5,409,0,0,1180,1182,3,760,380,0,1181,1180,1,0,0,0, + 1181,1182,1,0,0,0,1182,1183,1,0,0,0,1183,1184,3,630,315,0,1184,1186, + 5,866,0,0,1185,1187,3,80,40,0,1186,1185,1,0,0,0,1186,1187,1,0,0, + 0,1187,1192,1,0,0,0,1188,1189,5,868,0,0,1189,1191,3,80,40,0,1190, + 1188,1,0,0,0,1191,1194,1,0,0,0,1192,1190,1,0,0,0,1192,1193,1,0,0, + 0,1193,1195,1,0,0,0,1194,1192,1,0,0,0,1195,1196,5,867,0,0,1196,1197, + 5,580,0,0,1197,1201,3,726,363,0,1198,1200,3,82,41,0,1199,1198,1, + 0,0,0,1200,1203,1,0,0,0,1201,1199,1,0,0,0,1201,1202,1,0,0,0,1202, + 1206,1,0,0,0,1203,1201,1,0,0,0,1204,1207,3,422,211,0,1205,1207,3, + 438,219,0,1206,1204,1,0,0,0,1206,1205,1,0,0,0,1207,35,1,0,0,0,1208, + 1210,5,34,0,0,1209,1211,5,307,0,0,1210,1209,1,0,0,0,1210,1211,1, + 0,0,0,1211,1212,1,0,0,0,1212,1214,5,409,0,0,1213,1215,3,760,380, + 0,1214,1213,1,0,0,0,1214,1215,1,0,0,0,1215,1216,1,0,0,0,1216,1217, + 3,630,315,0,1217,1218,5,580,0,0,1218,1219,7,5,0,0,1219,1220,5,603, + 0,0,1220,1221,5,882,0,0,1221,37,1,0,0,0,1222,1223,5,34,0,0,1223, + 1225,5,582,0,0,1224,1226,3,760,380,0,1225,1224,1,0,0,0,1225,1226, + 1,0,0,0,1226,1227,1,0,0,0,1227,1228,3,654,327,0,1228,39,1,0,0,0, + 1229,1230,5,34,0,0,1230,1231,5,592,0,0,1231,1232,3,706,353,0,1232, + 1233,5,67,0,0,1233,1234,5,360,0,0,1234,1235,5,692,0,0,1235,1236, + 7,6,0,0,1236,1237,5,518,0,0,1237,1238,5,866,0,0,1238,1243,3,84,42, + 0,1239,1240,5,868,0,0,1240,1242,3,84,42,0,1241,1239,1,0,0,0,1242, + 1245,1,0,0,0,1243,1241,1,0,0,0,1243,1244,1,0,0,0,1244,1246,1,0,0, + 0,1245,1243,1,0,0,0,1246,1247,5,867,0,0,1247,41,1,0,0,0,1248,1250, + 5,34,0,0,1249,1251,5,660,0,0,1250,1249,1,0,0,0,1250,1251,1,0,0,0, + 1251,1252,1,0,0,0,1252,1254,5,173,0,0,1253,1255,3,760,380,0,1254, + 1253,1,0,0,0,1254,1255,1,0,0,0,1255,1256,1,0,0,0,1256,1258,3,648, + 324,0,1257,1259,3,86,43,0,1258,1257,1,0,0,0,1258,1259,1,0,0,0,1259, + 1270,1,0,0,0,1260,1267,3,104,52,0,1261,1263,5,868,0,0,1262,1261, + 1,0,0,0,1262,1263,1,0,0,0,1263,1264,1,0,0,0,1264,1266,3,104,52,0, + 1265,1262,1,0,0,0,1266,1269,1,0,0,0,1267,1265,1,0,0,0,1267,1268, + 1,0,0,0,1268,1271,1,0,0,0,1269,1267,1,0,0,0,1270,1260,1,0,0,0,1270, + 1271,1,0,0,0,1271,1273,1,0,0,0,1272,1274,3,110,55,0,1273,1272,1, + 0,0,0,1273,1274,1,0,0,0,1274,1276,1,0,0,0,1275,1277,7,7,0,0,1276, + 1275,1,0,0,0,1276,1277,1,0,0,0,1277,1279,1,0,0,0,1278,1280,5,13, + 0,0,1279,1278,1,0,0,0,1279,1280,1,0,0,0,1280,1281,1,0,0,0,1281,1282, + 3,210,105,0,1282,1327,1,0,0,0,1283,1285,5,34,0,0,1284,1286,5,660, + 0,0,1285,1284,1,0,0,0,1285,1286,1,0,0,0,1286,1287,1,0,0,0,1287,1289, + 5,173,0,0,1288,1290,3,760,380,0,1289,1288,1,0,0,0,1289,1290,1,0, + 0,0,1290,1291,1,0,0,0,1291,1299,3,648,324,0,1292,1293,5,99,0,0,1293, + 1300,3,652,326,0,1294,1295,5,866,0,0,1295,1296,5,99,0,0,1296,1297, + 3,652,326,0,1297,1298,5,867,0,0,1298,1300,1,0,0,0,1299,1292,1,0, + 0,0,1299,1294,1,0,0,0,1300,1327,1,0,0,0,1301,1303,5,34,0,0,1302, + 1304,5,660,0,0,1303,1302,1,0,0,0,1303,1304,1,0,0,0,1304,1305,1,0, + 0,0,1305,1307,5,173,0,0,1306,1308,3,760,380,0,1307,1306,1,0,0,0, + 1307,1308,1,0,0,0,1308,1309,1,0,0,0,1309,1310,3,648,324,0,1310,1321, + 3,86,43,0,1311,1318,3,104,52,0,1312,1314,5,868,0,0,1313,1312,1,0, + 0,0,1313,1314,1,0,0,0,1314,1315,1,0,0,0,1315,1317,3,104,52,0,1316, + 1313,1,0,0,0,1317,1320,1,0,0,0,1318,1316,1,0,0,0,1318,1319,1,0,0, + 0,1319,1322,1,0,0,0,1320,1318,1,0,0,0,1321,1311,1,0,0,0,1321,1322, + 1,0,0,0,1322,1324,1,0,0,0,1323,1325,3,110,55,0,1324,1323,1,0,0,0, + 1324,1325,1,0,0,0,1325,1327,1,0,0,0,1326,1248,1,0,0,0,1326,1283, + 1,0,0,0,1326,1301,1,0,0,0,1327,43,1,0,0,0,1328,1330,5,34,0,0,1329, + 1331,5,180,0,0,1330,1329,1,0,0,0,1330,1331,1,0,0,0,1331,1332,1,0, + 0,0,1332,1333,5,658,0,0,1333,1337,3,664,332,0,1334,1335,5,6,0,0, + 1335,1336,5,361,0,0,1336,1338,5,882,0,0,1337,1334,1,0,0,0,1337,1338, + 1,0,0,0,1338,1344,1,0,0,0,1339,1341,5,314,0,0,1340,1342,5,857,0, + 0,1341,1340,1,0,0,0,1341,1342,1,0,0,0,1342,1343,1,0,0,0,1343,1345, + 3,714,357,0,1344,1339,1,0,0,0,1344,1345,1,0,0,0,1345,1349,1,0,0, + 0,1346,1347,5,399,0,0,1347,1348,5,857,0,0,1348,1350,3,714,357,0, + 1349,1346,1,0,0,0,1349,1350,1,0,0,0,1350,1356,1,0,0,0,1351,1353, + 5,380,0,0,1352,1354,5,857,0,0,1353,1352,1,0,0,0,1353,1354,1,0,0, + 0,1354,1355,1,0,0,0,1355,1357,3,692,346,0,1356,1351,1,0,0,0,1356, + 1357,1,0,0,0,1357,1363,1,0,0,0,1358,1360,5,825,0,0,1359,1361,5,857, + 0,0,1360,1359,1,0,0,0,1360,1361,1,0,0,0,1361,1362,1,0,0,0,1362,1364, + 5,882,0,0,1363,1358,1,0,0,0,1363,1364,1,0,0,0,1364,45,1,0,0,0,1365, + 1367,5,34,0,0,1366,1368,5,180,0,0,1367,1366,1,0,0,0,1367,1368,1, + 0,0,0,1368,1369,1,0,0,0,1369,1370,5,658,0,0,1370,1371,3,664,332, + 0,1371,1372,5,6,0,0,1372,1373,5,361,0,0,1373,1374,5,882,0,0,1374, + 1375,5,187,0,0,1375,1376,5,451,0,0,1376,1377,5,74,0,0,1377,1383, + 3,706,353,0,1378,1380,5,393,0,0,1379,1381,5,857,0,0,1380,1379,1, + 0,0,0,1380,1381,1,0,0,0,1381,1382,1,0,0,0,1382,1384,3,714,357,0, + 1383,1378,1,0,0,0,1383,1384,1,0,0,0,1384,1390,1,0,0,0,1385,1387, + 5,428,0,0,1386,1388,5,857,0,0,1387,1386,1,0,0,0,1387,1388,1,0,0, + 0,1388,1389,1,0,0,0,1389,1391,3,714,357,0,1390,1385,1,0,0,0,1390, + 1391,1,0,0,0,1391,1397,1,0,0,0,1392,1394,5,314,0,0,1393,1395,5,857, + 0,0,1394,1393,1,0,0,0,1394,1395,1,0,0,0,1395,1396,1,0,0,0,1396,1398, + 3,714,357,0,1397,1392,1,0,0,0,1397,1398,1,0,0,0,1398,1404,1,0,0, + 0,1399,1401,5,481,0,0,1400,1402,5,857,0,0,1401,1400,1,0,0,0,1401, + 1402,1,0,0,0,1402,1403,1,0,0,0,1403,1405,3,714,357,0,1404,1399,1, + 0,0,0,1404,1405,1,0,0,0,1405,1411,1,0,0,0,1406,1408,5,504,0,0,1407, + 1409,5,857,0,0,1408,1407,1,0,0,0,1408,1409,1,0,0,0,1409,1410,1,0, + 0,0,1410,1412,3,706,353,0,1411,1406,1,0,0,0,1411,1412,1,0,0,0,1412, + 1414,1,0,0,0,1413,1415,5,687,0,0,1414,1413,1,0,0,0,1414,1415,1,0, + 0,0,1415,1421,1,0,0,0,1416,1418,5,340,0,0,1417,1419,5,857,0,0,1418, + 1417,1,0,0,0,1418,1419,1,0,0,0,1419,1420,1,0,0,0,1420,1422,5,882, + 0,0,1421,1416,1,0,0,0,1421,1422,1,0,0,0,1422,1423,1,0,0,0,1423,1425, + 5,380,0,0,1424,1426,5,857,0,0,1425,1424,1,0,0,0,1425,1426,1,0,0, + 0,1426,1427,1,0,0,0,1427,1428,3,692,346,0,1428,47,1,0,0,0,1429,1431, + 5,34,0,0,1430,1432,3,62,31,0,1431,1430,1,0,0,0,1431,1432,1,0,0,0, + 1432,1434,1,0,0,0,1433,1435,3,760,380,0,1434,1433,1,0,0,0,1434,1435, + 1,0,0,0,1435,1436,1,0,0,0,1436,1438,5,178,0,0,1437,1439,3,760,380, + 0,1438,1437,1,0,0,0,1438,1439,1,0,0,0,1439,1440,1,0,0,0,1440,1441, + 3,702,351,0,1441,1442,7,8,0,0,1442,1443,7,9,0,0,1443,1444,5,119, + 0,0,1444,1445,3,652,326,0,1445,1446,5,65,0,0,1446,1447,5,52,0,0, + 1447,1450,5,586,0,0,1448,1449,7,10,0,0,1449,1451,3,702,351,0,1450, + 1448,1,0,0,0,1450,1451,1,0,0,0,1451,1452,1,0,0,0,1452,1453,3,422, + 211,0,1453,49,1,0,0,0,1454,1456,5,194,0,0,1455,1457,5,552,0,0,1456, + 1455,1,0,0,0,1456,1457,1,0,0,0,1457,1458,1,0,0,0,1458,1459,3,52, + 26,0,1459,51,1,0,0,0,1460,1472,3,706,353,0,1461,1462,5,866,0,0,1462, + 1467,3,706,353,0,1463,1464,5,868,0,0,1464,1466,3,706,353,0,1465, + 1463,1,0,0,0,1466,1469,1,0,0,0,1467,1465,1,0,0,0,1467,1468,1,0,0, + 0,1468,1470,1,0,0,0,1469,1467,1,0,0,0,1470,1471,5,867,0,0,1471,1473, + 1,0,0,0,1472,1461,1,0,0,0,1472,1473,1,0,0,0,1473,1474,1,0,0,0,1474, + 1475,5,13,0,0,1475,1476,5,866,0,0,1476,1477,3,10,5,0,1477,1480,5, + 867,0,0,1478,1479,5,868,0,0,1479,1481,3,52,26,0,1480,1478,1,0,0, + 0,1480,1481,1,0,0,0,1481,53,1,0,0,0,1482,1484,5,34,0,0,1483,1485, + 3,762,381,0,1484,1483,1,0,0,0,1484,1485,1,0,0,0,1485,1489,1,0,0, + 0,1486,1487,5,308,0,0,1487,1488,5,857,0,0,1488,1490,7,11,0,0,1489, + 1486,1,0,0,0,1489,1490,1,0,0,0,1490,1492,1,0,0,0,1491,1493,3,62, + 31,0,1492,1491,1,0,0,0,1492,1493,1,0,0,0,1493,1497,1,0,0,0,1494, + 1495,5,162,0,0,1495,1496,5,591,0,0,1496,1498,7,12,0,0,1497,1494, + 1,0,0,0,1497,1498,1,0,0,0,1498,1499,1,0,0,0,1499,1500,5,684,0,0, + 1500,1512,3,634,317,0,1501,1502,5,866,0,0,1502,1507,3,658,329,0, + 1503,1504,5,868,0,0,1504,1506,3,658,329,0,1505,1503,1,0,0,0,1506, + 1509,1,0,0,0,1507,1505,1,0,0,0,1507,1508,1,0,0,0,1508,1510,1,0,0, + 0,1509,1507,1,0,0,0,1510,1511,5,867,0,0,1511,1513,1,0,0,0,1512,1501, + 1,0,0,0,1512,1513,1,0,0,0,1513,1514,1,0,0,0,1514,1534,5,13,0,0,1515, + 1517,5,866,0,0,1516,1518,3,50,25,0,1517,1516,1,0,0,0,1517,1518,1, + 0,0,0,1518,1519,1,0,0,0,1519,1520,3,210,105,0,1520,1521,5,867,0, + 0,1521,1535,1,0,0,0,1522,1524,3,50,25,0,1523,1522,1,0,0,0,1523,1524, + 1,0,0,0,1524,1525,1,0,0,0,1525,1532,3,210,105,0,1526,1528,5,194, + 0,0,1527,1529,7,13,0,0,1528,1527,1,0,0,0,1528,1529,1,0,0,0,1529, + 1530,1,0,0,0,1530,1531,5,27,0,0,1531,1533,5,121,0,0,1532,1526,1, + 0,0,0,1532,1533,1,0,0,0,1533,1535,1,0,0,0,1534,1515,1,0,0,0,1534, + 1523,1,0,0,0,1535,55,1,0,0,0,1536,1538,5,42,0,0,1537,1536,1,0,0, + 0,1537,1538,1,0,0,0,1538,1539,1,0,0,0,1539,1541,3,58,29,0,1540,1542, + 5,857,0,0,1541,1540,1,0,0,0,1541,1542,1,0,0,0,1542,1545,1,0,0,0, + 1543,1546,3,688,344,0,1544,1546,5,42,0,0,1545,1543,1,0,0,0,1545, + 1544,1,0,0,0,1546,1570,1,0,0,0,1547,1549,5,42,0,0,1548,1547,1,0, + 0,0,1548,1549,1,0,0,0,1549,1550,1,0,0,0,1550,1552,5,28,0,0,1551, + 1553,5,857,0,0,1552,1551,1,0,0,0,1552,1553,1,0,0,0,1553,1554,1,0, + 0,0,1554,1570,3,690,345,0,1555,1557,5,42,0,0,1556,1555,1,0,0,0,1556, + 1557,1,0,0,0,1557,1558,1,0,0,0,1558,1560,5,376,0,0,1559,1561,5,857, + 0,0,1560,1559,1,0,0,0,1560,1561,1,0,0,0,1561,1562,1,0,0,0,1562,1570, + 5,882,0,0,1563,1564,5,135,0,0,1564,1566,5,515,0,0,1565,1567,5,857, + 0,0,1566,1565,1,0,0,0,1566,1567,1,0,0,0,1567,1568,1,0,0,0,1568,1570, + 7,14,0,0,1569,1537,1,0,0,0,1569,1548,1,0,0,0,1569,1556,1,0,0,0,1569, + 1563,1,0,0,0,1570,57,1,0,0,0,1571,1572,5,26,0,0,1572,1577,5,155, + 0,0,1573,1577,5,823,0,0,1574,1575,5,224,0,0,1575,1577,5,155,0,0, + 1576,1571,1,0,0,0,1576,1573,1,0,0,0,1576,1574,1,0,0,0,1577,59,1, + 0,0,0,1578,1581,7,15,0,0,1579,1580,5,866,0,0,1580,1582,5,867,0,0, + 1581,1579,1,0,0,0,1581,1582,1,0,0,0,1582,61,1,0,0,0,1583,1584,5, + 364,0,0,1584,1587,5,857,0,0,1585,1588,3,684,342,0,1586,1588,3,60, + 30,0,1587,1585,1,0,0,0,1587,1586,1,0,0,0,1588,63,1,0,0,0,1589,1590, + 5,311,0,0,1590,1594,3,66,33,0,1591,1593,3,68,34,0,1592,1591,1,0, + 0,0,1593,1596,1,0,0,0,1594,1592,1,0,0,0,1594,1595,1,0,0,0,1595,1624, + 1,0,0,0,1596,1594,1,0,0,0,1597,1600,5,387,0,0,1598,1601,3,712,356, + 0,1599,1601,3,804,402,0,1600,1598,1,0,0,0,1600,1599,1,0,0,0,1601, + 1602,1,0,0,0,1602,1611,3,70,35,0,1603,1604,5,641,0,0,1604,1608,3, + 66,33,0,1605,1607,3,68,34,0,1606,1605,1,0,0,0,1607,1610,1,0,0,0, + 1608,1606,1,0,0,0,1608,1609,1,0,0,0,1609,1612,1,0,0,0,1610,1608, + 1,0,0,0,1611,1603,1,0,0,0,1611,1612,1,0,0,0,1612,1621,1,0,0,0,1613, + 1614,5,379,0,0,1614,1618,3,66,33,0,1615,1617,3,68,34,0,1616,1615, + 1,0,0,0,1617,1620,1,0,0,0,1618,1616,1,0,0,0,1618,1619,1,0,0,0,1619, + 1622,1,0,0,0,1620,1618,1,0,0,0,1621,1613,1,0,0,0,1621,1622,1,0,0, + 0,1622,1624,1,0,0,0,1623,1589,1,0,0,0,1623,1597,1,0,0,0,1624,65, + 1,0,0,0,1625,1630,5,287,0,0,1626,1630,3,716,358,0,1627,1630,3,712, + 356,0,1628,1630,3,804,402,0,1629,1625,1,0,0,0,1629,1626,1,0,0,0, + 1629,1627,1,0,0,0,1629,1628,1,0,0,0,1630,67,1,0,0,0,1631,1632,5, + 853,0,0,1632,1635,5,87,0,0,1633,1636,3,712,356,0,1634,1636,3,804, + 402,0,1635,1633,1,0,0,0,1635,1634,1,0,0,0,1636,1637,1,0,0,0,1637, + 1638,3,70,35,0,1638,69,1,0,0,0,1639,1653,3,830,415,0,1640,1653,5, + 223,0,0,1641,1653,5,242,0,0,1642,1653,5,243,0,0,1643,1653,5,244, + 0,0,1644,1653,5,245,0,0,1645,1653,5,246,0,0,1646,1653,5,247,0,0, + 1647,1653,5,248,0,0,1648,1653,5,249,0,0,1649,1653,5,250,0,0,1650, + 1653,5,251,0,0,1651,1653,5,252,0,0,1652,1639,1,0,0,0,1652,1640,1, + 0,0,0,1652,1641,1,0,0,0,1652,1642,1,0,0,0,1652,1643,1,0,0,0,1652, + 1644,1,0,0,0,1652,1645,1,0,0,0,1652,1646,1,0,0,0,1652,1647,1,0,0, + 0,1652,1648,1,0,0,0,1652,1649,1,0,0,0,1652,1650,1,0,0,0,1652,1651, + 1,0,0,0,1653,71,1,0,0,0,1654,1660,5,375,0,0,1655,1660,5,368,0,0, + 1656,1657,5,368,0,0,1657,1658,5,119,0,0,1658,1660,5,598,0,0,1659, + 1654,1,0,0,0,1659,1655,1,0,0,0,1659,1656,1,0,0,0,1660,73,1,0,0,0, + 1661,1662,5,188,0,0,1662,1663,7,16,0,0,1663,75,1,0,0,0,1664,1666, + 5,443,0,0,1665,1667,5,857,0,0,1666,1665,1,0,0,0,1666,1667,1,0,0, + 0,1667,1668,1,0,0,0,1668,1687,3,714,357,0,1669,1687,3,74,37,0,1670, + 1671,5,194,0,0,1671,1672,5,525,0,0,1672,1687,3,706,353,0,1673,1674, + 5,340,0,0,1674,1687,5,882,0,0,1675,1687,7,17,0,0,1676,1678,5,825, + 0,0,1677,1679,5,857,0,0,1678,1677,1,0,0,0,1678,1679,1,0,0,0,1679, + 1680,1,0,0,0,1680,1687,5,882,0,0,1681,1683,5,833,0,0,1682,1684,5, + 857,0,0,1683,1682,1,0,0,0,1683,1684,1,0,0,0,1684,1685,1,0,0,0,1685, + 1687,5,882,0,0,1686,1664,1,0,0,0,1686,1669,1,0,0,0,1686,1670,1,0, + 0,0,1686,1673,1,0,0,0,1686,1675,1,0,0,0,1686,1676,1,0,0,0,1686,1681, + 1,0,0,0,1687,77,1,0,0,0,1688,1690,7,18,0,0,1689,1688,1,0,0,0,1689, + 1690,1,0,0,0,1690,1691,1,0,0,0,1691,1692,3,706,353,0,1692,1693,3, + 726,363,0,1693,79,1,0,0,0,1694,1695,3,706,353,0,1695,1696,3,726, + 363,0,1696,81,1,0,0,0,1697,1698,5,340,0,0,1698,1721,5,882,0,0,1699, + 1700,5,444,0,0,1700,1721,5,162,0,0,1701,1703,5,114,0,0,1702,1701, + 1,0,0,0,1702,1703,1,0,0,0,1703,1704,1,0,0,0,1704,1721,5,47,0,0,1705, + 1706,5,354,0,0,1706,1716,5,162,0,0,1707,1708,5,502,0,0,1708,1716, + 5,162,0,0,1709,1710,5,136,0,0,1710,1711,5,162,0,0,1711,1716,5,360, + 0,0,1712,1713,5,112,0,0,1713,1714,5,162,0,0,1714,1716,5,360,0,0, + 1715,1705,1,0,0,0,1715,1707,1,0,0,0,1715,1709,1,0,0,0,1715,1712, + 1,0,0,0,1716,1721,1,0,0,0,1717,1718,5,162,0,0,1718,1719,5,591,0, + 0,1719,1721,7,12,0,0,1720,1697,1,0,0,0,1720,1699,1,0,0,0,1720,1702, + 1,0,0,0,1720,1715,1,0,0,0,1720,1717,1,0,0,0,1721,83,1,0,0,0,1722, + 1723,5,421,0,0,1723,1737,5,882,0,0,1724,1725,5,39,0,0,1725,1737, + 5,882,0,0,1726,1727,5,678,0,0,1727,1737,5,882,0,0,1728,1729,5,529, + 0,0,1729,1737,5,882,0,0,1730,1731,5,601,0,0,1731,1737,5,882,0,0, + 1732,1733,5,519,0,0,1733,1737,5,882,0,0,1734,1735,5,537,0,0,1735, + 1737,3,712,356,0,1736,1722,1,0,0,0,1736,1724,1,0,0,0,1736,1726,1, + 0,0,0,1736,1728,1,0,0,0,1736,1730,1,0,0,0,1736,1732,1,0,0,0,1736, + 1734,1,0,0,0,1737,85,1,0,0,0,1738,1739,5,866,0,0,1739,1744,3,88, + 44,0,1740,1741,5,868,0,0,1741,1743,3,88,44,0,1742,1740,1,0,0,0,1743, + 1746,1,0,0,0,1744,1742,1,0,0,0,1744,1745,1,0,0,0,1745,1747,1,0,0, + 0,1746,1744,1,0,0,0,1747,1748,5,867,0,0,1748,87,1,0,0,0,1749,1750, + 3,658,329,0,1750,1751,3,94,47,0,1751,1833,1,0,0,0,1752,1754,7,19, + 0,0,1753,1755,3,642,321,0,1754,1753,1,0,0,0,1754,1755,1,0,0,0,1755, + 1757,1,0,0,0,1756,1758,3,74,37,0,1757,1756,1,0,0,0,1757,1758,1,0, + 0,0,1758,1759,1,0,0,0,1759,1763,3,738,369,0,1760,1762,3,76,38,0, + 1761,1760,1,0,0,0,1762,1765,1,0,0,0,1763,1761,1,0,0,0,1763,1764, + 1,0,0,0,1764,1833,1,0,0,0,1765,1763,1,0,0,0,1766,1768,7,20,0,0,1767, + 1769,7,19,0,0,1768,1767,1,0,0,0,1768,1769,1,0,0,0,1769,1771,1,0, + 0,0,1770,1772,3,642,321,0,1771,1770,1,0,0,0,1771,1772,1,0,0,0,1772, + 1773,1,0,0,0,1773,1777,3,738,369,0,1774,1776,3,76,38,0,1775,1774, + 1,0,0,0,1776,1779,1,0,0,0,1777,1775,1,0,0,0,1777,1778,1,0,0,0,1778, + 1833,1,0,0,0,1779,1777,1,0,0,0,1780,1782,3,92,46,0,1781,1780,1,0, + 0,0,1781,1782,1,0,0,0,1782,1783,1,0,0,0,1783,1784,5,131,0,0,1784, + 1786,5,92,0,0,1785,1787,3,74,37,0,1786,1785,1,0,0,0,1786,1787,1, + 0,0,0,1787,1788,1,0,0,0,1788,1792,3,738,369,0,1789,1791,3,76,38, + 0,1790,1789,1,0,0,0,1791,1794,1,0,0,0,1792,1790,1,0,0,0,1792,1793, + 1,0,0,0,1793,1833,1,0,0,0,1794,1792,1,0,0,0,1795,1797,3,92,46,0, + 1796,1795,1,0,0,0,1796,1797,1,0,0,0,1797,1798,1,0,0,0,1798,1800, + 5,182,0,0,1799,1801,7,19,0,0,1800,1799,1,0,0,0,1800,1801,1,0,0,0, + 1801,1803,1,0,0,0,1802,1804,3,642,321,0,1803,1802,1,0,0,0,1803,1804, + 1,0,0,0,1804,1806,1,0,0,0,1805,1807,3,74,37,0,1806,1805,1,0,0,0, + 1806,1807,1,0,0,0,1807,1808,1,0,0,0,1808,1812,3,738,369,0,1809,1811, + 3,76,38,0,1810,1809,1,0,0,0,1811,1814,1,0,0,0,1812,1810,1,0,0,0, + 1812,1813,1,0,0,0,1813,1833,1,0,0,0,1814,1812,1,0,0,0,1815,1817, + 3,92,46,0,1816,1815,1,0,0,0,1816,1817,1,0,0,0,1817,1818,1,0,0,0, + 1818,1819,5,67,0,0,1819,1821,5,92,0,0,1820,1822,3,642,321,0,1821, + 1820,1,0,0,0,1821,1822,1,0,0,0,1822,1823,1,0,0,0,1823,1824,3,738, + 369,0,1824,1825,3,98,49,0,1825,1833,1,0,0,0,1826,1827,5,27,0,0,1827, + 1828,5,866,0,0,1828,1829,3,804,402,0,1829,1830,5,867,0,0,1830,1833, + 1,0,0,0,1831,1833,3,90,45,0,1832,1749,1,0,0,0,1832,1752,1,0,0,0, + 1832,1766,1,0,0,0,1832,1781,1,0,0,0,1832,1796,1,0,0,0,1832,1816, + 1,0,0,0,1832,1826,1,0,0,0,1832,1831,1,0,0,0,1833,89,1,0,0,0,1834, + 1836,3,92,46,0,1835,1834,1,0,0,0,1835,1836,1,0,0,0,1836,1837,1,0, + 0,0,1837,1838,5,27,0,0,1838,1839,5,866,0,0,1839,1840,3,804,402,0, + 1840,1845,5,867,0,0,1841,1843,5,114,0,0,1842,1841,1,0,0,0,1842,1843, + 1,0,0,0,1843,1844,1,0,0,0,1844,1846,5,57,0,0,1845,1842,1,0,0,0,1845, + 1846,1,0,0,0,1846,91,1,0,0,0,1847,1849,5,31,0,0,1848,1850,3,706, + 353,0,1849,1848,1,0,0,0,1849,1850,1,0,0,0,1850,93,1,0,0,0,1851,1855, + 3,726,363,0,1852,1854,3,96,48,0,1853,1852,1,0,0,0,1854,1857,1,0, + 0,0,1855,1853,1,0,0,0,1855,1856,1,0,0,0,1856,95,1,0,0,0,1857,1855, + 1,0,0,0,1858,1902,3,722,361,0,1859,1860,5,42,0,0,1860,1902,3,754, + 377,0,1861,1902,5,686,0,0,1862,1902,5,435,0,0,1863,1868,5,315,0, + 0,1864,1865,5,119,0,0,1865,1866,5,185,0,0,1866,1868,3,756,378,0, + 1867,1863,1,0,0,0,1867,1864,1,0,0,0,1868,1902,1,0,0,0,1869,1871, + 5,131,0,0,1870,1869,1,0,0,0,1870,1871,1,0,0,0,1871,1872,1,0,0,0, + 1872,1902,5,92,0,0,1873,1875,5,182,0,0,1874,1876,5,92,0,0,1875,1874, + 1,0,0,0,1875,1876,1,0,0,0,1876,1902,1,0,0,0,1877,1878,5,340,0,0, + 1878,1902,5,882,0,0,1879,1880,5,338,0,0,1880,1902,7,21,0,0,1881, + 1882,5,647,0,0,1882,1902,7,22,0,0,1883,1902,3,98,49,0,1884,1885, + 5,28,0,0,1885,1902,3,690,345,0,1886,1887,5,71,0,0,1887,1889,5,9, + 0,0,1888,1886,1,0,0,0,1888,1889,1,0,0,0,1889,1890,1,0,0,0,1890,1891, + 5,13,0,0,1891,1892,5,866,0,0,1892,1893,3,804,402,0,1893,1895,5,867, + 0,0,1894,1896,7,23,0,0,1895,1894,1,0,0,0,1895,1896,1,0,0,0,1896, + 1902,1,0,0,0,1897,1898,5,241,0,0,1898,1899,5,42,0,0,1899,1902,5, + 682,0,0,1900,1902,3,90,45,0,1901,1858,1,0,0,0,1901,1859,1,0,0,0, + 1901,1861,1,0,0,0,1901,1862,1,0,0,0,1901,1867,1,0,0,0,1901,1870, + 1,0,0,0,1901,1873,1,0,0,0,1901,1877,1,0,0,0,1901,1879,1,0,0,0,1901, + 1881,1,0,0,0,1901,1883,1,0,0,0,1901,1884,1,0,0,0,1901,1888,1,0,0, + 0,1901,1897,1,0,0,0,1901,1900,1,0,0,0,1902,97,1,0,0,0,1903,1904, + 5,138,0,0,1904,1906,3,652,326,0,1905,1907,3,738,369,0,1906,1905, + 1,0,0,0,1906,1907,1,0,0,0,1907,1910,1,0,0,0,1908,1909,5,110,0,0, + 1909,1911,7,24,0,0,1910,1908,1,0,0,0,1910,1911,1,0,0,0,1911,1913, + 1,0,0,0,1912,1914,3,100,50,0,1913,1912,1,0,0,0,1913,1914,1,0,0,0, + 1914,99,1,0,0,0,1915,1916,5,119,0,0,1916,1917,5,44,0,0,1917,1921, + 3,102,51,0,1918,1919,5,119,0,0,1919,1920,5,185,0,0,1920,1922,3,102, + 51,0,1921,1918,1,0,0,0,1921,1922,1,0,0,0,1922,1932,1,0,0,0,1923, + 1924,5,119,0,0,1924,1925,5,185,0,0,1925,1929,3,102,51,0,1926,1927, + 5,119,0,0,1927,1928,5,44,0,0,1928,1930,3,102,51,0,1929,1926,1,0, + 0,0,1929,1930,1,0,0,0,1930,1932,1,0,0,0,1931,1915,1,0,0,0,1931,1923, + 1,0,0,0,1932,101,1,0,0,0,1933,1942,5,146,0,0,1934,1942,5,22,0,0, + 1935,1936,5,155,0,0,1936,1942,5,116,0,0,1937,1938,5,502,0,0,1938, + 1942,5,305,0,0,1939,1940,5,155,0,0,1940,1942,5,42,0,0,1941,1933, + 1,0,0,0,1941,1934,1,0,0,0,1941,1935,1,0,0,0,1941,1937,1,0,0,0,1941, + 1939,1,0,0,0,1942,103,1,0,0,0,1943,1945,5,380,0,0,1944,1946,5,857, + 0,0,1945,1944,1,0,0,0,1945,1946,1,0,0,0,1946,1948,1,0,0,0,1947,1949, + 3,692,346,0,1948,1947,1,0,0,0,1948,1949,1,0,0,0,1949,2129,1,0,0, + 0,1950,1952,5,825,0,0,1951,1953,5,857,0,0,1952,1951,1,0,0,0,1952, + 1953,1,0,0,0,1953,1954,1,0,0,0,1954,2129,5,882,0,0,1955,1957,5,314, + 0,0,1956,1958,5,857,0,0,1957,1956,1,0,0,0,1957,1958,1,0,0,0,1958, + 1959,1,0,0,0,1959,2129,3,712,356,0,1960,1962,5,315,0,0,1961,1963, + 5,857,0,0,1962,1961,1,0,0,0,1962,1963,1,0,0,0,1963,1964,1,0,0,0, + 1964,2129,3,712,356,0,1965,1967,5,316,0,0,1966,1968,5,857,0,0,1967, + 1966,1,0,0,0,1967,1968,1,0,0,0,1968,1969,1,0,0,0,1969,2129,3,712, + 356,0,1970,1972,5,42,0,0,1971,1970,1,0,0,0,1971,1972,1,0,0,0,1972, + 1973,1,0,0,0,1973,1975,3,58,29,0,1974,1976,5,857,0,0,1975,1974,1, + 0,0,0,1975,1976,1,0,0,0,1976,1979,1,0,0,0,1977,1980,3,688,344,0, + 1978,1980,5,42,0,0,1979,1977,1,0,0,0,1979,1978,1,0,0,0,1980,2129, + 1,0,0,0,1981,1983,7,25,0,0,1982,1984,5,857,0,0,1983,1982,1,0,0,0, + 1983,1984,1,0,0,0,1984,1985,1,0,0,0,1985,2129,7,26,0,0,1986,1988, + 5,42,0,0,1987,1986,1,0,0,0,1987,1988,1,0,0,0,1988,1989,1,0,0,0,1989, + 1991,5,28,0,0,1990,1992,5,857,0,0,1991,1990,1,0,0,0,1991,1992,1, + 0,0,0,1992,1993,1,0,0,0,1993,2129,3,690,345,0,1994,1996,5,340,0, + 0,1995,1997,5,857,0,0,1996,1995,1,0,0,0,1996,1997,1,0,0,0,1997,1998, + 1,0,0,0,1998,2129,5,882,0,0,1999,2001,5,346,0,0,2000,2002,5,857, + 0,0,2001,2000,1,0,0,0,2001,2002,1,0,0,0,2002,2003,1,0,0,0,2003,2129, + 7,27,0,0,2004,2006,5,349,0,0,2005,2007,5,857,0,0,2006,2005,1,0,0, + 0,2006,2007,1,0,0,0,2007,2008,1,0,0,0,2008,2129,5,882,0,0,2009,2010, + 7,28,0,0,2010,2012,5,367,0,0,2011,2013,5,857,0,0,2012,2011,1,0,0, + 0,2012,2013,1,0,0,0,2013,2014,1,0,0,0,2014,2129,5,882,0,0,2015,2017, + 5,365,0,0,2016,2018,5,857,0,0,2017,2016,1,0,0,0,2017,2018,1,0,0, + 0,2018,2019,1,0,0,0,2019,2129,7,26,0,0,2020,2022,5,376,0,0,2021, + 2023,5,857,0,0,2022,2021,1,0,0,0,2022,2023,1,0,0,0,2023,2024,1,0, + 0,0,2024,2129,5,882,0,0,2025,2027,7,29,0,0,2026,2028,5,857,0,0,2027, + 2026,1,0,0,0,2027,2028,1,0,0,0,2028,2029,1,0,0,0,2029,2129,7,26, + 0,0,2030,2032,7,30,0,0,2031,2033,5,857,0,0,2032,2031,1,0,0,0,2032, + 2033,1,0,0,0,2033,2034,1,0,0,0,2034,2129,3,712,356,0,2035,2037,5, + 377,0,0,2036,2038,5,857,0,0,2037,2036,1,0,0,0,2037,2038,1,0,0,0, + 2038,2039,1,0,0,0,2039,2129,3,712,356,0,2040,2041,5,82,0,0,2041, + 2043,5,367,0,0,2042,2044,5,857,0,0,2043,2042,1,0,0,0,2043,2044,1, + 0,0,0,2044,2045,1,0,0,0,2045,2129,5,882,0,0,2046,2048,5,431,0,0, + 2047,2049,5,857,0,0,2048,2047,1,0,0,0,2048,2049,1,0,0,0,2049,2050, + 1,0,0,0,2050,2129,7,31,0,0,2051,2053,5,443,0,0,2052,2054,5,857,0, + 0,2053,2052,1,0,0,0,2053,2054,1,0,0,0,2054,2055,1,0,0,0,2055,2129, + 3,714,357,0,2056,2058,5,480,0,0,2057,2059,5,857,0,0,2058,2057,1, + 0,0,0,2058,2059,1,0,0,0,2059,2060,1,0,0,0,2060,2129,3,712,356,0, + 2061,2063,5,490,0,0,2062,2064,5,857,0,0,2063,2062,1,0,0,0,2063,2064, + 1,0,0,0,2064,2065,1,0,0,0,2065,2129,3,712,356,0,2066,2068,5,520, + 0,0,2067,2069,5,857,0,0,2068,2067,1,0,0,0,2068,2069,1,0,0,0,2069, + 2070,1,0,0,0,2070,2129,7,14,0,0,2071,2073,5,529,0,0,2072,2074,5, + 857,0,0,2073,2072,1,0,0,0,2073,2074,1,0,0,0,2074,2075,1,0,0,0,2075, + 2129,5,882,0,0,2076,2078,5,588,0,0,2077,2079,5,857,0,0,2078,2077, + 1,0,0,0,2078,2079,1,0,0,0,2079,2080,1,0,0,0,2080,2129,7,32,0,0,2081, + 2082,5,640,0,0,2082,2129,5,664,0,0,2083,2085,5,833,0,0,2084,2086, + 5,857,0,0,2085,2084,1,0,0,0,2085,2086,1,0,0,0,2086,2087,1,0,0,0, + 2087,2129,5,882,0,0,2088,2090,5,642,0,0,2089,2091,5,857,0,0,2090, + 2089,1,0,0,0,2090,2091,1,0,0,0,2091,2092,1,0,0,0,2092,2129,7,14, + 0,0,2093,2095,5,643,0,0,2094,2096,5,857,0,0,2095,2094,1,0,0,0,2095, + 2096,1,0,0,0,2096,2097,1,0,0,0,2097,2129,7,14,0,0,2098,2100,5,644, + 0,0,2099,2101,5,857,0,0,2100,2099,1,0,0,0,2100,2101,1,0,0,0,2101, + 2104,1,0,0,0,2102,2105,5,42,0,0,2103,2105,3,712,356,0,2104,2102, + 1,0,0,0,2104,2103,1,0,0,0,2105,2129,1,0,0,0,2106,2107,5,658,0,0, + 2107,2109,3,666,333,0,2108,2110,3,108,54,0,2109,2108,1,0,0,0,2109, + 2110,1,0,0,0,2110,2129,1,0,0,0,2111,2112,5,659,0,0,2112,2113,5,857, + 0,0,2113,2129,3,106,53,0,2114,2129,3,108,54,0,2115,2117,5,665,0, + 0,2116,2118,5,857,0,0,2117,2116,1,0,0,0,2117,2118,1,0,0,0,2118,2119, + 1,0,0,0,2119,2129,7,26,0,0,2120,2122,5,181,0,0,2121,2123,5,857,0, + 0,2122,2121,1,0,0,0,2122,2123,1,0,0,0,2123,2124,1,0,0,0,2124,2125, + 5,866,0,0,2125,2126,3,650,325,0,2126,2127,5,867,0,0,2127,2129,1, + 0,0,0,2128,1943,1,0,0,0,2128,1950,1,0,0,0,2128,1955,1,0,0,0,2128, + 1960,1,0,0,0,2128,1965,1,0,0,0,2128,1971,1,0,0,0,2128,1981,1,0,0, + 0,2128,1987,1,0,0,0,2128,1994,1,0,0,0,2128,1999,1,0,0,0,2128,2004, + 1,0,0,0,2128,2009,1,0,0,0,2128,2015,1,0,0,0,2128,2020,1,0,0,0,2128, + 2025,1,0,0,0,2128,2030,1,0,0,0,2128,2035,1,0,0,0,2128,2040,1,0,0, + 0,2128,2046,1,0,0,0,2128,2051,1,0,0,0,2128,2056,1,0,0,0,2128,2061, + 1,0,0,0,2128,2066,1,0,0,0,2128,2071,1,0,0,0,2128,2076,1,0,0,0,2128, + 2081,1,0,0,0,2128,2083,1,0,0,0,2128,2088,1,0,0,0,2128,2093,1,0,0, + 0,2128,2098,1,0,0,0,2128,2106,1,0,0,0,2128,2111,1,0,0,0,2128,2114, + 1,0,0,0,2128,2115,1,0,0,0,2128,2120,1,0,0,0,2129,105,1,0,0,0,2130, + 2131,7,33,0,0,2131,107,1,0,0,0,2132,2133,5,647,0,0,2133,2134,7,22, + 0,0,2134,109,1,0,0,0,2135,2136,5,130,0,0,2136,2137,5,20,0,0,2137, + 2140,3,112,56,0,2138,2139,5,528,0,0,2139,2141,3,712,356,0,2140,2138, + 1,0,0,0,2140,2141,1,0,0,0,2141,2149,1,0,0,0,2142,2143,5,652,0,0, + 2143,2144,5,20,0,0,2144,2147,3,114,57,0,2145,2146,5,653,0,0,2146, + 2148,3,712,356,0,2147,2145,1,0,0,0,2147,2148,1,0,0,0,2148,2150,1, + 0,0,0,2149,2142,1,0,0,0,2149,2150,1,0,0,0,2150,2162,1,0,0,0,2151, + 2152,5,866,0,0,2152,2157,3,116,58,0,2153,2154,5,868,0,0,2154,2156, + 3,116,58,0,2155,2153,1,0,0,0,2156,2159,1,0,0,0,2157,2155,1,0,0,0, + 2157,2158,1,0,0,0,2158,2160,1,0,0,0,2159,2157,1,0,0,0,2160,2161, + 5,867,0,0,2161,2163,1,0,0,0,2162,2151,1,0,0,0,2162,2163,1,0,0,0, + 2163,111,1,0,0,0,2164,2166,5,101,0,0,2165,2164,1,0,0,0,2165,2166, + 1,0,0,0,2166,2167,1,0,0,0,2167,2168,5,418,0,0,2168,2169,5,866,0, + 0,2169,2170,3,804,402,0,2170,2171,5,867,0,0,2171,2211,1,0,0,0,2172, + 2174,5,101,0,0,2173,2172,1,0,0,0,2173,2174,1,0,0,0,2174,2175,1,0, + 0,0,2175,2179,5,92,0,0,2176,2177,5,308,0,0,2177,2178,5,857,0,0,2178, + 2180,7,34,0,0,2179,2176,1,0,0,0,2179,2180,1,0,0,0,2180,2181,1,0, + 0,0,2181,2183,5,866,0,0,2182,2184,3,660,330,0,2183,2182,1,0,0,0, + 2183,2184,1,0,0,0,2184,2185,1,0,0,0,2185,2211,5,867,0,0,2186,2196, + 5,134,0,0,2187,2188,5,866,0,0,2188,2189,3,804,402,0,2189,2190,5, + 867,0,0,2190,2197,1,0,0,0,2191,2192,5,337,0,0,2192,2193,5,866,0, + 0,2193,2194,3,660,330,0,2194,2195,5,867,0,0,2195,2197,1,0,0,0,2196, + 2187,1,0,0,0,2196,2191,1,0,0,0,2197,2211,1,0,0,0,2198,2208,5,449, + 0,0,2199,2200,5,866,0,0,2200,2201,3,804,402,0,2201,2202,5,867,0, + 0,2202,2209,1,0,0,0,2203,2204,5,337,0,0,2204,2205,5,866,0,0,2205, + 2206,3,660,330,0,2206,2207,5,867,0,0,2207,2209,1,0,0,0,2208,2199, + 1,0,0,0,2208,2203,1,0,0,0,2209,2211,1,0,0,0,2210,2165,1,0,0,0,2210, + 2173,1,0,0,0,2210,2186,1,0,0,0,2210,2198,1,0,0,0,2211,113,1,0,0, + 0,2212,2214,5,101,0,0,2213,2212,1,0,0,0,2213,2214,1,0,0,0,2214,2215, + 1,0,0,0,2215,2216,5,418,0,0,2216,2217,5,866,0,0,2217,2218,3,804, + 402,0,2218,2219,5,867,0,0,2219,2234,1,0,0,0,2220,2222,5,101,0,0, + 2221,2220,1,0,0,0,2221,2222,1,0,0,0,2222,2223,1,0,0,0,2223,2227, + 5,92,0,0,2224,2225,5,308,0,0,2225,2226,5,857,0,0,2226,2228,7,34, + 0,0,2227,2224,1,0,0,0,2227,2228,1,0,0,0,2228,2229,1,0,0,0,2229,2230, + 5,866,0,0,2230,2231,3,660,330,0,2231,2232,5,867,0,0,2232,2234,1, + 0,0,0,2233,2213,1,0,0,0,2233,2221,1,0,0,0,2234,115,1,0,0,0,2235, + 2236,5,130,0,0,2236,2237,3,672,336,0,2237,2238,5,189,0,0,2238,2239, + 5,447,0,0,2239,2240,5,662,0,0,2240,2241,5,866,0,0,2241,2246,3,118, + 59,0,2242,2243,5,868,0,0,2243,2245,3,118,59,0,2244,2242,1,0,0,0, + 2245,2248,1,0,0,0,2246,2244,1,0,0,0,2246,2247,1,0,0,0,2247,2249, + 1,0,0,0,2248,2246,1,0,0,0,2249,2253,5,867,0,0,2250,2252,3,124,62, + 0,2251,2250,1,0,0,0,2252,2255,1,0,0,0,2253,2251,1,0,0,0,2253,2254, + 1,0,0,0,2254,2267,1,0,0,0,2255,2253,1,0,0,0,2256,2257,5,866,0,0, + 2257,2262,3,122,61,0,2258,2259,5,868,0,0,2259,2261,3,122,61,0,2260, + 2258,1,0,0,0,2261,2264,1,0,0,0,2262,2260,1,0,0,0,2262,2263,1,0,0, + 0,2263,2265,1,0,0,0,2264,2262,1,0,0,0,2265,2266,5,867,0,0,2266,2268, + 1,0,0,0,2267,2256,1,0,0,0,2267,2268,1,0,0,0,2268,2382,1,0,0,0,2269, + 2270,5,130,0,0,2270,2271,3,672,336,0,2271,2272,5,189,0,0,2272,2273, + 5,447,0,0,2273,2274,5,662,0,0,2274,2278,3,118,59,0,2275,2277,3,124, + 62,0,2276,2275,1,0,0,0,2277,2280,1,0,0,0,2278,2276,1,0,0,0,2278, + 2279,1,0,0,0,2279,2292,1,0,0,0,2280,2278,1,0,0,0,2281,2282,5,866, + 0,0,2282,2287,3,122,61,0,2283,2284,5,868,0,0,2284,2286,3,122,61, + 0,2285,2283,1,0,0,0,2286,2289,1,0,0,0,2287,2285,1,0,0,0,2287,2288, + 1,0,0,0,2288,2290,1,0,0,0,2289,2287,1,0,0,0,2290,2291,5,867,0,0, + 2291,2293,1,0,0,0,2292,2281,1,0,0,0,2292,2293,1,0,0,0,2293,2382, + 1,0,0,0,2294,2295,5,130,0,0,2295,2296,3,672,336,0,2296,2297,5,189, + 0,0,2297,2298,5,80,0,0,2298,2299,5,866,0,0,2299,2304,3,118,59,0, + 2300,2301,5,868,0,0,2301,2303,3,118,59,0,2302,2300,1,0,0,0,2303, + 2306,1,0,0,0,2304,2302,1,0,0,0,2304,2305,1,0,0,0,2305,2307,1,0,0, + 0,2306,2304,1,0,0,0,2307,2311,5,867,0,0,2308,2310,3,124,62,0,2309, + 2308,1,0,0,0,2310,2313,1,0,0,0,2311,2309,1,0,0,0,2311,2312,1,0,0, + 0,2312,2325,1,0,0,0,2313,2311,1,0,0,0,2314,2315,5,866,0,0,2315,2320, + 3,122,61,0,2316,2317,5,868,0,0,2317,2319,3,122,61,0,2318,2316,1, + 0,0,0,2319,2322,1,0,0,0,2320,2318,1,0,0,0,2320,2321,1,0,0,0,2321, + 2323,1,0,0,0,2322,2320,1,0,0,0,2323,2324,5,867,0,0,2324,2326,1,0, + 0,0,2325,2314,1,0,0,0,2325,2326,1,0,0,0,2326,2382,1,0,0,0,2327,2328, + 5,130,0,0,2328,2329,3,672,336,0,2329,2330,5,189,0,0,2330,2331,5, + 80,0,0,2331,2332,5,866,0,0,2332,2337,3,120,60,0,2333,2334,5,868, + 0,0,2334,2336,3,120,60,0,2335,2333,1,0,0,0,2336,2339,1,0,0,0,2337, + 2335,1,0,0,0,2337,2338,1,0,0,0,2338,2340,1,0,0,0,2339,2337,1,0,0, + 0,2340,2344,5,867,0,0,2341,2343,3,124,62,0,2342,2341,1,0,0,0,2343, + 2346,1,0,0,0,2344,2342,1,0,0,0,2344,2345,1,0,0,0,2345,2358,1,0,0, + 0,2346,2344,1,0,0,0,2347,2348,5,866,0,0,2348,2353,3,122,61,0,2349, + 2350,5,868,0,0,2350,2352,3,122,61,0,2351,2349,1,0,0,0,2352,2355, + 1,0,0,0,2353,2351,1,0,0,0,2353,2354,1,0,0,0,2354,2356,1,0,0,0,2355, + 2353,1,0,0,0,2356,2357,5,867,0,0,2357,2359,1,0,0,0,2358,2347,1,0, + 0,0,2358,2359,1,0,0,0,2359,2382,1,0,0,0,2360,2361,5,130,0,0,2361, + 2365,3,672,336,0,2362,2364,3,124,62,0,2363,2362,1,0,0,0,2364,2367, + 1,0,0,0,2365,2363,1,0,0,0,2365,2366,1,0,0,0,2366,2379,1,0,0,0,2367, + 2365,1,0,0,0,2368,2369,5,866,0,0,2369,2374,3,122,61,0,2370,2371, + 5,868,0,0,2371,2373,3,122,61,0,2372,2370,1,0,0,0,2373,2376,1,0,0, + 0,2374,2372,1,0,0,0,2374,2375,1,0,0,0,2375,2377,1,0,0,0,2376,2374, + 1,0,0,0,2377,2378,5,867,0,0,2378,2380,1,0,0,0,2379,2368,1,0,0,0, + 2379,2380,1,0,0,0,2380,2382,1,0,0,0,2381,2235,1,0,0,0,2381,2269, + 1,0,0,0,2381,2294,1,0,0,0,2381,2327,1,0,0,0,2381,2360,1,0,0,0,2382, + 117,1,0,0,0,2383,2387,3,724,362,0,2384,2387,3,804,402,0,2385,2387, + 5,111,0,0,2386,2383,1,0,0,0,2386,2384,1,0,0,0,2386,2385,1,0,0,0, + 2387,119,1,0,0,0,2388,2389,5,866,0,0,2389,2392,3,118,59,0,2390,2391, + 5,868,0,0,2391,2393,3,118,59,0,2392,2390,1,0,0,0,2393,2394,1,0,0, + 0,2394,2392,1,0,0,0,2394,2395,1,0,0,0,2395,2396,1,0,0,0,2396,2397, + 5,867,0,0,2397,121,1,0,0,0,2398,2399,5,652,0,0,2399,2403,3,706,353, + 0,2400,2402,3,124,62,0,2401,2400,1,0,0,0,2402,2405,1,0,0,0,2403, + 2401,1,0,0,0,2403,2404,1,0,0,0,2404,123,1,0,0,0,2405,2403,1,0,0, + 0,2406,2408,5,42,0,0,2407,2406,1,0,0,0,2407,2408,1,0,0,0,2408,2410, + 1,0,0,0,2409,2411,5,647,0,0,2410,2409,1,0,0,0,2410,2411,1,0,0,0, + 2411,2412,1,0,0,0,2412,2414,5,380,0,0,2413,2415,5,857,0,0,2414,2413, + 1,0,0,0,2414,2415,1,0,0,0,2415,2416,1,0,0,0,2416,2455,3,692,346, + 0,2417,2419,5,340,0,0,2418,2420,5,857,0,0,2419,2418,1,0,0,0,2419, + 2420,1,0,0,0,2420,2421,1,0,0,0,2421,2455,5,882,0,0,2422,2423,5,360, + 0,0,2423,2425,5,367,0,0,2424,2426,5,857,0,0,2425,2424,1,0,0,0,2425, + 2426,1,0,0,0,2426,2427,1,0,0,0,2427,2455,5,882,0,0,2428,2429,5,82, + 0,0,2429,2431,5,367,0,0,2430,2432,5,857,0,0,2431,2430,1,0,0,0,2431, + 2432,1,0,0,0,2432,2433,1,0,0,0,2433,2455,5,882,0,0,2434,2436,5,480, + 0,0,2435,2437,5,857,0,0,2436,2435,1,0,0,0,2436,2437,1,0,0,0,2437, + 2438,1,0,0,0,2438,2455,3,712,356,0,2439,2441,5,490,0,0,2440,2442, + 5,857,0,0,2441,2440,1,0,0,0,2441,2442,1,0,0,0,2442,2443,1,0,0,0, + 2443,2455,3,712,356,0,2444,2446,5,658,0,0,2445,2447,5,857,0,0,2446, + 2445,1,0,0,0,2446,2447,1,0,0,0,2447,2448,1,0,0,0,2448,2455,3,666, + 333,0,2449,2451,5,504,0,0,2450,2452,5,857,0,0,2451,2450,1,0,0,0, + 2451,2452,1,0,0,0,2452,2453,1,0,0,0,2453,2455,3,706,353,0,2454,2407, + 1,0,0,0,2454,2417,1,0,0,0,2454,2422,1,0,0,0,2454,2428,1,0,0,0,2454, + 2434,1,0,0,0,2454,2439,1,0,0,0,2454,2444,1,0,0,0,2454,2449,1,0,0, + 0,2455,125,1,0,0,0,2456,2457,5,8,0,0,2457,2459,7,0,0,0,2458,2460, + 3,628,314,0,2459,2458,1,0,0,0,2459,2460,1,0,0,0,2460,2462,1,0,0, + 0,2461,2463,3,56,28,0,2462,2461,1,0,0,0,2463,2464,1,0,0,0,2464,2462, + 1,0,0,0,2464,2465,1,0,0,0,2465,2475,1,0,0,0,2466,2467,5,8,0,0,2467, + 2468,7,0,0,0,2468,2469,3,628,314,0,2469,2470,5,677,0,0,2470,2471, + 5,360,0,0,2471,2472,5,367,0,0,2472,2473,5,496,0,0,2473,2475,1,0, + 0,0,2474,2456,1,0,0,0,2474,2466,1,0,0,0,2475,127,1,0,0,0,2476,2478, + 5,8,0,0,2477,2479,3,62,31,0,2478,2477,1,0,0,0,2478,2479,1,0,0,0, + 2479,2480,1,0,0,0,2480,2481,5,385,0,0,2481,2485,3,702,351,0,2482, + 2483,5,119,0,0,2483,2484,5,590,0,0,2484,2486,3,64,32,0,2485,2482, + 1,0,0,0,2485,2486,1,0,0,0,2486,2493,1,0,0,0,2487,2488,5,119,0,0, + 2488,2490,5,343,0,0,2489,2491,5,114,0,0,2490,2489,1,0,0,0,2490,2491, + 1,0,0,0,2491,2492,1,0,0,0,2492,2494,5,541,0,0,2493,2487,1,0,0,0, + 2493,2494,1,0,0,0,2494,2498,1,0,0,0,2495,2496,5,141,0,0,2496,2497, + 5,176,0,0,2497,2499,3,702,351,0,2498,2495,1,0,0,0,2498,2499,1,0, + 0,0,2499,2501,1,0,0,0,2500,2502,3,72,36,0,2501,2500,1,0,0,0,2501, + 2502,1,0,0,0,2502,2505,1,0,0,0,2503,2504,5,340,0,0,2504,2506,5,882, + 0,0,2505,2503,1,0,0,0,2505,2506,1,0,0,0,2506,2509,1,0,0,0,2507,2508, + 5,371,0,0,2508,2510,3,422,211,0,2509,2507,1,0,0,0,2509,2510,1,0, + 0,0,2510,129,1,0,0,0,2511,2512,5,8,0,0,2512,2513,5,409,0,0,2513, + 2517,3,632,316,0,2514,2516,3,82,41,0,2515,2514,1,0,0,0,2516,2519, + 1,0,0,0,2517,2515,1,0,0,0,2517,2518,1,0,0,0,2518,131,1,0,0,0,2519, + 2517,1,0,0,0,2520,2521,5,8,0,0,2521,2522,5,433,0,0,2522,2523,5,585, + 0,0,2523,2524,5,801,0,0,2524,2525,5,453,0,0,2525,2526,5,92,0,0,2526, + 133,1,0,0,0,2527,2528,5,8,0,0,2528,2529,5,451,0,0,2529,2530,5,74, + 0,0,2530,2531,3,706,353,0,2531,2532,5,6,0,0,2532,2533,5,671,0,0, + 2533,2539,5,882,0,0,2534,2536,5,428,0,0,2535,2537,5,857,0,0,2536, + 2535,1,0,0,0,2536,2537,1,0,0,0,2537,2538,1,0,0,0,2538,2540,3,714, + 357,0,2539,2534,1,0,0,0,2539,2540,1,0,0,0,2540,2542,1,0,0,0,2541, + 2543,5,687,0,0,2542,2541,1,0,0,0,2542,2543,1,0,0,0,2543,2544,1,0, + 0,0,2544,2546,5,380,0,0,2545,2547,5,857,0,0,2546,2545,1,0,0,0,2546, + 2547,1,0,0,0,2547,2548,1,0,0,0,2548,2549,3,692,346,0,2549,135,1, + 0,0,0,2550,2551,5,8,0,0,2551,2552,5,132,0,0,2552,2556,3,702,351, + 0,2553,2555,3,82,41,0,2554,2553,1,0,0,0,2555,2558,1,0,0,0,2556,2554, + 1,0,0,0,2556,2557,1,0,0,0,2557,137,1,0,0,0,2558,2556,1,0,0,0,2559, + 2560,5,8,0,0,2560,2561,5,592,0,0,2561,2562,3,706,353,0,2562,2563, + 5,518,0,0,2563,2564,5,866,0,0,2564,2569,3,84,42,0,2565,2566,5,868, + 0,0,2566,2568,3,84,42,0,2567,2565,1,0,0,0,2568,2571,1,0,0,0,2569, + 2567,1,0,0,0,2569,2570,1,0,0,0,2570,2572,1,0,0,0,2571,2569,1,0,0, + 0,2572,2573,5,867,0,0,2573,139,1,0,0,0,2574,2575,5,8,0,0,2575,2576, + 5,173,0,0,2576,2585,3,652,326,0,2577,2582,3,146,73,0,2578,2579,5, + 868,0,0,2579,2581,3,146,73,0,2580,2578,1,0,0,0,2581,2584,1,0,0,0, + 2582,2580,1,0,0,0,2582,2583,1,0,0,0,2583,2586,1,0,0,0,2584,2582, + 1,0,0,0,2585,2577,1,0,0,0,2585,2586,1,0,0,0,2586,2594,1,0,0,0,2587, + 2591,3,148,74,0,2588,2590,3,148,74,0,2589,2588,1,0,0,0,2590,2593, + 1,0,0,0,2591,2589,1,0,0,0,2591,2592,1,0,0,0,2592,2595,1,0,0,0,2593, + 2591,1,0,0,0,2594,2587,1,0,0,0,2594,2595,1,0,0,0,2595,141,1,0,0, + 0,2596,2598,5,8,0,0,2597,2599,5,180,0,0,2598,2597,1,0,0,0,2598,2599, + 1,0,0,0,2599,2600,1,0,0,0,2600,2601,5,658,0,0,2601,2602,3,666,333, + 0,2602,2603,7,35,0,0,2603,2604,5,361,0,0,2604,2610,5,882,0,0,2605, + 2607,5,428,0,0,2606,2608,5,857,0,0,2607,2606,1,0,0,0,2607,2608,1, + 0,0,0,2608,2609,1,0,0,0,2609,2611,3,714,357,0,2610,2605,1,0,0,0, + 2610,2611,1,0,0,0,2611,2613,1,0,0,0,2612,2614,5,687,0,0,2613,2612, + 1,0,0,0,2613,2614,1,0,0,0,2614,2618,1,0,0,0,2615,2616,5,141,0,0, + 2616,2617,5,176,0,0,2617,2619,3,664,332,0,2618,2615,1,0,0,0,2618, + 2619,1,0,0,0,2619,2625,1,0,0,0,2620,2622,5,314,0,0,2621,2623,5,857, + 0,0,2622,2621,1,0,0,0,2622,2623,1,0,0,0,2623,2624,1,0,0,0,2624,2626, + 3,714,357,0,2625,2620,1,0,0,0,2625,2626,1,0,0,0,2626,2629,1,0,0, + 0,2627,2628,5,155,0,0,2628,2630,7,36,0,0,2629,2627,1,0,0,0,2629, + 2630,1,0,0,0,2630,2636,1,0,0,0,2631,2633,5,376,0,0,2632,2634,5,857, + 0,0,2633,2632,1,0,0,0,2633,2634,1,0,0,0,2634,2635,1,0,0,0,2635,2637, + 5,882,0,0,2636,2631,1,0,0,0,2636,2637,1,0,0,0,2637,2643,1,0,0,0, + 2638,2640,5,380,0,0,2639,2641,5,857,0,0,2640,2639,1,0,0,0,2640,2641, + 1,0,0,0,2641,2642,1,0,0,0,2642,2644,3,692,346,0,2643,2638,1,0,0, + 0,2643,2644,1,0,0,0,2644,2650,1,0,0,0,2645,2647,5,825,0,0,2646,2648, + 5,857,0,0,2647,2646,1,0,0,0,2647,2648,1,0,0,0,2648,2649,1,0,0,0, + 2649,2651,5,882,0,0,2650,2645,1,0,0,0,2650,2651,1,0,0,0,2651,143, + 1,0,0,0,2652,2656,5,8,0,0,2653,2654,5,308,0,0,2654,2655,5,857,0, + 0,2655,2657,7,11,0,0,2656,2653,1,0,0,0,2656,2657,1,0,0,0,2657,2659, + 1,0,0,0,2658,2660,3,62,31,0,2659,2658,1,0,0,0,2659,2660,1,0,0,0, + 2660,2664,1,0,0,0,2661,2662,5,162,0,0,2662,2663,5,591,0,0,2663,2665, + 7,12,0,0,2664,2661,1,0,0,0,2664,2665,1,0,0,0,2665,2666,1,0,0,0,2666, + 2667,5,684,0,0,2667,2672,3,636,318,0,2668,2669,5,866,0,0,2669,2670, + 3,660,330,0,2670,2671,5,867,0,0,2671,2673,1,0,0,0,2672,2668,1,0, + 0,0,2672,2673,1,0,0,0,2673,2674,1,0,0,0,2674,2675,5,13,0,0,2675, + 2682,3,210,105,0,2676,2678,5,194,0,0,2677,2679,7,13,0,0,2678,2677, + 1,0,0,0,2678,2679,1,0,0,0,2679,2680,1,0,0,0,2680,2681,5,27,0,0,2681, + 2683,5,121,0,0,2682,2676,1,0,0,0,2682,2683,1,0,0,0,2683,145,1,0, + 0,0,2684,2691,3,104,52,0,2685,2687,5,868,0,0,2686,2685,1,0,0,0,2686, + 2687,1,0,0,0,2687,2688,1,0,0,0,2688,2690,3,104,52,0,2689,2686,1, + 0,0,0,2690,2693,1,0,0,0,2691,2689,1,0,0,0,2691,2692,1,0,0,0,2692, + 2949,1,0,0,0,2693,2691,1,0,0,0,2694,2696,5,6,0,0,2695,2697,5,29, + 0,0,2696,2695,1,0,0,0,2696,2697,1,0,0,0,2697,2698,1,0,0,0,2698,2699, + 3,662,331,0,2699,2703,3,94,47,0,2700,2704,5,402,0,0,2701,2702,5, + 306,0,0,2702,2704,3,662,331,0,2703,2700,1,0,0,0,2703,2701,1,0,0, + 0,2703,2704,1,0,0,0,2704,2949,1,0,0,0,2705,2707,5,6,0,0,2706,2708, + 5,29,0,0,2707,2706,1,0,0,0,2707,2708,1,0,0,0,2708,2709,1,0,0,0,2709, + 2710,5,866,0,0,2710,2711,3,662,331,0,2711,2718,3,94,47,0,2712,2713, + 5,868,0,0,2713,2714,3,662,331,0,2714,2715,3,94,47,0,2715,2717,1, + 0,0,0,2716,2712,1,0,0,0,2717,2720,1,0,0,0,2718,2716,1,0,0,0,2718, + 2719,1,0,0,0,2719,2721,1,0,0,0,2720,2718,1,0,0,0,2721,2722,5,867, + 0,0,2722,2949,1,0,0,0,2723,2724,5,6,0,0,2724,2726,7,19,0,0,2725, + 2727,3,642,321,0,2726,2725,1,0,0,0,2726,2727,1,0,0,0,2727,2729,1, + 0,0,0,2728,2730,3,74,37,0,2729,2728,1,0,0,0,2729,2730,1,0,0,0,2730, + 2731,1,0,0,0,2731,2735,3,738,369,0,2732,2734,3,76,38,0,2733,2732, + 1,0,0,0,2734,2737,1,0,0,0,2735,2733,1,0,0,0,2735,2736,1,0,0,0,2736, + 2949,1,0,0,0,2737,2735,1,0,0,0,2738,2739,5,6,0,0,2739,2741,7,20, + 0,0,2740,2742,7,19,0,0,2741,2740,1,0,0,0,2741,2742,1,0,0,0,2742, + 2744,1,0,0,0,2743,2745,3,642,321,0,2744,2743,1,0,0,0,2744,2745,1, + 0,0,0,2745,2746,1,0,0,0,2746,2750,3,738,369,0,2747,2749,3,76,38, + 0,2748,2747,1,0,0,0,2749,2752,1,0,0,0,2750,2748,1,0,0,0,2750,2751, + 1,0,0,0,2751,2949,1,0,0,0,2752,2750,1,0,0,0,2753,2758,5,6,0,0,2754, + 2756,5,31,0,0,2755,2757,3,706,353,0,2756,2755,1,0,0,0,2756,2757, + 1,0,0,0,2757,2759,1,0,0,0,2758,2754,1,0,0,0,2758,2759,1,0,0,0,2759, + 2760,1,0,0,0,2760,2761,5,131,0,0,2761,2763,5,92,0,0,2762,2764,3, + 74,37,0,2763,2762,1,0,0,0,2763,2764,1,0,0,0,2764,2765,1,0,0,0,2765, + 2769,3,738,369,0,2766,2768,3,76,38,0,2767,2766,1,0,0,0,2768,2771, + 1,0,0,0,2769,2767,1,0,0,0,2769,2770,1,0,0,0,2770,2949,1,0,0,0,2771, + 2769,1,0,0,0,2772,2777,5,6,0,0,2773,2775,5,31,0,0,2774,2776,3,706, + 353,0,2775,2774,1,0,0,0,2775,2776,1,0,0,0,2776,2778,1,0,0,0,2777, + 2773,1,0,0,0,2777,2778,1,0,0,0,2778,2779,1,0,0,0,2779,2781,5,182, + 0,0,2780,2782,7,19,0,0,2781,2780,1,0,0,0,2781,2782,1,0,0,0,2782, + 2784,1,0,0,0,2783,2785,3,642,321,0,2784,2783,1,0,0,0,2784,2785,1, + 0,0,0,2785,2787,1,0,0,0,2786,2788,3,74,37,0,2787,2786,1,0,0,0,2787, + 2788,1,0,0,0,2788,2789,1,0,0,0,2789,2793,3,738,369,0,2790,2792,3, + 76,38,0,2791,2790,1,0,0,0,2792,2795,1,0,0,0,2793,2791,1,0,0,0,2793, + 2794,1,0,0,0,2794,2949,1,0,0,0,2795,2793,1,0,0,0,2796,2801,5,6,0, + 0,2797,2799,5,31,0,0,2798,2800,3,706,353,0,2799,2798,1,0,0,0,2799, + 2800,1,0,0,0,2800,2802,1,0,0,0,2801,2797,1,0,0,0,2801,2802,1,0,0, + 0,2802,2803,1,0,0,0,2803,2804,5,67,0,0,2804,2806,5,92,0,0,2805,2807, + 3,642,321,0,2806,2805,1,0,0,0,2806,2807,1,0,0,0,2807,2808,1,0,0, + 0,2808,2809,3,738,369,0,2809,2810,3,98,49,0,2810,2949,1,0,0,0,2811, + 2813,5,6,0,0,2812,2814,3,90,45,0,2813,2812,1,0,0,0,2813,2814,1,0, + 0,0,2814,2949,1,0,0,0,2815,2816,5,51,0,0,2816,2817,7,37,0,0,2817, + 2949,3,706,353,0,2818,2819,5,8,0,0,2819,2820,7,37,0,0,2820,2822, + 3,706,353,0,2821,2823,5,114,0,0,2822,2821,1,0,0,0,2822,2823,1,0, + 0,0,2823,2825,1,0,0,0,2824,2826,5,57,0,0,2825,2824,1,0,0,0,2825, + 2826,1,0,0,0,2826,2949,1,0,0,0,2827,2829,5,308,0,0,2828,2830,5,857, + 0,0,2829,2828,1,0,0,0,2829,2830,1,0,0,0,2830,2831,1,0,0,0,2831,2949, + 7,38,0,0,2832,2834,5,8,0,0,2833,2835,5,29,0,0,2834,2833,1,0,0,0, + 2834,2835,1,0,0,0,2835,2836,1,0,0,0,2836,2844,3,662,331,0,2837,2838, + 5,155,0,0,2838,2839,5,42,0,0,2839,2845,3,754,377,0,2840,2841,5,155, + 0,0,2841,2845,7,17,0,0,2842,2843,5,51,0,0,2843,2845,5,42,0,0,2844, + 2837,1,0,0,0,2844,2840,1,0,0,0,2844,2842,1,0,0,0,2845,2949,1,0,0, + 0,2846,2847,5,8,0,0,2847,2848,5,82,0,0,2848,2849,3,642,321,0,2849, + 2850,7,17,0,0,2850,2949,1,0,0,0,2851,2853,5,25,0,0,2852,2854,5,29, + 0,0,2853,2852,1,0,0,0,2853,2854,1,0,0,0,2854,2855,1,0,0,0,2855,2856, + 3,662,331,0,2856,2857,3,658,329,0,2857,2861,3,94,47,0,2858,2862, + 5,402,0,0,2859,2860,5,306,0,0,2860,2862,3,662,331,0,2861,2858,1, + 0,0,0,2861,2859,1,0,0,0,2861,2862,1,0,0,0,2862,2949,1,0,0,0,2863, + 2865,5,42,0,0,2864,2863,1,0,0,0,2864,2865,1,0,0,0,2865,2866,1,0, + 0,0,2866,2867,5,26,0,0,2867,2868,5,155,0,0,2868,2869,5,857,0,0,2869, + 2875,3,688,344,0,2870,2872,5,28,0,0,2871,2873,5,857,0,0,2872,2871, + 1,0,0,0,2872,2873,1,0,0,0,2873,2874,1,0,0,0,2874,2876,3,690,345, + 0,2875,2870,1,0,0,0,2875,2876,1,0,0,0,2876,2949,1,0,0,0,2877,2878, + 5,33,0,0,2878,2882,5,176,0,0,2879,2883,5,823,0,0,2880,2881,5,26, + 0,0,2881,2883,5,155,0,0,2882,2879,1,0,0,0,2882,2880,1,0,0,0,2883, + 2884,1,0,0,0,2884,2887,3,688,344,0,2885,2886,5,28,0,0,2886,2888, + 3,690,345,0,2887,2885,1,0,0,0,2887,2888,1,0,0,0,2888,2949,1,0,0, + 0,2889,2890,7,39,0,0,2890,2949,5,93,0,0,2891,2892,7,40,0,0,2892, + 2949,5,658,0,0,2893,2895,5,51,0,0,2894,2896,5,29,0,0,2895,2894,1, + 0,0,0,2895,2896,1,0,0,0,2896,2897,1,0,0,0,2897,2949,3,662,331,0, + 2898,2899,5,51,0,0,2899,2900,7,19,0,0,2900,2949,3,642,321,0,2901, + 2902,5,51,0,0,2902,2903,5,131,0,0,2903,2949,5,92,0,0,2904,2905,5, + 51,0,0,2905,2906,5,67,0,0,2906,2907,5,92,0,0,2907,2949,3,706,353, + 0,2908,2949,5,66,0,0,2909,2911,5,104,0,0,2910,2912,5,857,0,0,2911, + 2910,1,0,0,0,2911,2912,1,0,0,0,2912,2913,1,0,0,0,2913,2949,7,4,0, + 0,2914,2916,5,492,0,0,2915,2917,5,29,0,0,2916,2915,1,0,0,0,2916, + 2917,1,0,0,0,2917,2918,1,0,0,0,2918,2919,3,662,331,0,2919,2923,3, + 94,47,0,2920,2924,5,402,0,0,2921,2922,5,306,0,0,2922,2924,3,662, + 331,0,2923,2920,1,0,0,0,2923,2921,1,0,0,0,2923,2924,1,0,0,0,2924, + 2949,1,0,0,0,2925,2926,5,125,0,0,2926,2927,5,20,0,0,2927,2949,3, + 660,330,0,2928,2929,5,141,0,0,2929,2930,5,29,0,0,2930,2931,3,662, + 331,0,2931,2932,5,176,0,0,2932,2933,3,658,329,0,2933,2949,1,0,0, + 0,2934,2935,5,141,0,0,2935,2936,7,19,0,0,2936,2937,3,642,321,0,2937, + 2938,5,176,0,0,2938,2939,3,638,319,0,2939,2949,1,0,0,0,2940,2942, + 5,141,0,0,2941,2943,7,41,0,0,2942,2941,1,0,0,0,2942,2943,1,0,0,0, + 2943,2944,1,0,0,0,2944,2949,3,648,324,0,2945,2946,7,42,0,0,2946, + 2949,5,681,0,0,2947,2949,3,148,74,0,2948,2684,1,0,0,0,2948,2694, + 1,0,0,0,2948,2705,1,0,0,0,2948,2723,1,0,0,0,2948,2738,1,0,0,0,2948, + 2753,1,0,0,0,2948,2772,1,0,0,0,2948,2796,1,0,0,0,2948,2811,1,0,0, + 0,2948,2815,1,0,0,0,2948,2818,1,0,0,0,2948,2827,1,0,0,0,2948,2832, + 1,0,0,0,2948,2846,1,0,0,0,2948,2851,1,0,0,0,2948,2864,1,0,0,0,2948, + 2877,1,0,0,0,2948,2889,1,0,0,0,2948,2891,1,0,0,0,2948,2893,1,0,0, + 0,2948,2898,1,0,0,0,2948,2901,1,0,0,0,2948,2904,1,0,0,0,2948,2908, + 1,0,0,0,2948,2909,1,0,0,0,2948,2914,1,0,0,0,2948,2925,1,0,0,0,2948, + 2928,1,0,0,0,2948,2934,1,0,0,0,2948,2940,1,0,0,0,2948,2945,1,0,0, + 0,2948,2947,1,0,0,0,2949,147,1,0,0,0,2950,2951,5,6,0,0,2951,2952, + 5,130,0,0,2952,2953,5,866,0,0,2953,2958,3,116,58,0,2954,2955,5,868, + 0,0,2955,2957,3,116,58,0,2956,2954,1,0,0,0,2957,2960,1,0,0,0,2958, + 2956,1,0,0,0,2958,2959,1,0,0,0,2959,2961,1,0,0,0,2960,2958,1,0,0, + 0,2961,2962,5,867,0,0,2962,3049,1,0,0,0,2963,2964,5,51,0,0,2964, + 2965,5,130,0,0,2965,3049,3,670,335,0,2966,2967,5,369,0,0,2967,2970, + 5,130,0,0,2968,2971,3,670,335,0,2969,2971,5,7,0,0,2970,2968,1,0, + 0,0,2970,2969,1,0,0,0,2971,2972,1,0,0,0,2972,3049,5,658,0,0,2973, + 2974,5,425,0,0,2974,2977,5,130,0,0,2975,2978,3,670,335,0,2976,2978, + 5,7,0,0,2977,2975,1,0,0,0,2977,2976,1,0,0,0,2978,2979,1,0,0,0,2979, + 3049,5,658,0,0,2980,2981,5,668,0,0,2981,2984,5,130,0,0,2982,2985, + 3,670,335,0,2983,2985,5,7,0,0,2984,2982,1,0,0,0,2984,2983,1,0,0, + 0,2985,3049,1,0,0,0,2986,2987,5,335,0,0,2987,2988,5,130,0,0,2988, + 3049,3,712,356,0,2989,2990,5,561,0,0,2990,2991,5,130,0,0,2991,2992, + 3,670,335,0,2992,2993,5,88,0,0,2993,2994,5,866,0,0,2994,2999,3,116, + 58,0,2995,2996,5,868,0,0,2996,2998,3,116,58,0,2997,2995,1,0,0,0, + 2998,3001,1,0,0,0,2999,2997,1,0,0,0,2999,3000,1,0,0,0,3000,3002, + 1,0,0,0,3001,2999,1,0,0,0,3002,3003,5,867,0,0,3003,3049,1,0,0,0, + 3004,3005,5,388,0,0,3005,3006,5,130,0,0,3006,3007,3,672,336,0,3007, + 3008,5,194,0,0,3008,3009,5,173,0,0,3009,3012,3,652,326,0,3010,3011, + 7,42,0,0,3011,3013,5,681,0,0,3012,3010,1,0,0,0,3012,3013,1,0,0,0, + 3013,3049,1,0,0,0,3014,3015,5,10,0,0,3015,3018,5,130,0,0,3016,3019, + 3,670,335,0,3017,3019,5,7,0,0,3018,3016,1,0,0,0,3018,3017,1,0,0, + 0,3019,3049,1,0,0,0,3020,3021,5,27,0,0,3021,3024,5,130,0,0,3022, + 3025,3,670,335,0,3023,3025,5,7,0,0,3024,3022,1,0,0,0,3024,3023,1, + 0,0,0,3025,3049,1,0,0,0,3026,3027,5,120,0,0,3027,3030,5,130,0,0, + 3028,3031,3,670,335,0,3029,3031,5,7,0,0,3030,3028,1,0,0,0,3030,3029, + 1,0,0,0,3031,3049,1,0,0,0,3032,3033,5,550,0,0,3033,3036,5,130,0, + 0,3034,3037,3,670,335,0,3035,3037,5,7,0,0,3036,3034,1,0,0,0,3036, + 3035,1,0,0,0,3037,3049,1,0,0,0,3038,3039,5,562,0,0,3039,3042,5,130, + 0,0,3040,3043,3,670,335,0,3041,3043,5,7,0,0,3042,3040,1,0,0,0,3042, + 3041,1,0,0,0,3043,3049,1,0,0,0,3044,3045,5,560,0,0,3045,3049,5,527, + 0,0,3046,3047,5,677,0,0,3047,3049,5,527,0,0,3048,2950,1,0,0,0,3048, + 2963,1,0,0,0,3048,2966,1,0,0,0,3048,2973,1,0,0,0,3048,2980,1,0,0, + 0,3048,2986,1,0,0,0,3048,2989,1,0,0,0,3048,3004,1,0,0,0,3048,3014, + 1,0,0,0,3048,3020,1,0,0,0,3048,3026,1,0,0,0,3048,3032,1,0,0,0,3048, + 3038,1,0,0,0,3048,3044,1,0,0,0,3048,3046,1,0,0,0,3049,149,1,0,0, + 0,3050,3051,5,51,0,0,3051,3053,7,0,0,0,3052,3054,3,758,379,0,3053, + 3052,1,0,0,0,3053,3054,1,0,0,0,3054,3055,1,0,0,0,3055,3056,3,628, + 314,0,3056,151,1,0,0,0,3057,3058,5,51,0,0,3058,3060,5,385,0,0,3059, + 3061,3,758,379,0,3060,3059,1,0,0,0,3060,3061,1,0,0,0,3061,3062,1, + 0,0,0,3062,3063,3,702,351,0,3063,153,1,0,0,0,3064,3065,5,51,0,0, + 3065,3067,5,82,0,0,3066,3068,7,1,0,0,3067,3066,1,0,0,0,3067,3068, + 1,0,0,0,3068,3069,1,0,0,0,3069,3070,3,642,321,0,3070,3071,5,119, + 0,0,3071,3084,3,652,326,0,3072,3074,5,308,0,0,3073,3075,5,857,0, + 0,3074,3073,1,0,0,0,3074,3075,1,0,0,0,3075,3076,1,0,0,0,3076,3083, + 7,3,0,0,3077,3079,5,104,0,0,3078,3080,5,857,0,0,3079,3078,1,0,0, + 0,3079,3080,1,0,0,0,3080,3081,1,0,0,0,3081,3083,7,4,0,0,3082,3072, + 1,0,0,0,3082,3077,1,0,0,0,3083,3086,1,0,0,0,3084,3082,1,0,0,0,3084, + 3085,1,0,0,0,3085,155,1,0,0,0,3086,3084,1,0,0,0,3087,3088,5,51,0, + 0,3088,3089,5,451,0,0,3089,3090,5,74,0,0,3090,3091,3,706,353,0,3091, + 3093,5,380,0,0,3092,3094,5,857,0,0,3093,3092,1,0,0,0,3093,3094,1, + 0,0,0,3094,3095,1,0,0,0,3095,3096,3,692,346,0,3096,157,1,0,0,0,3097, + 3098,5,51,0,0,3098,3100,5,132,0,0,3099,3101,3,758,379,0,3100,3099, + 1,0,0,0,3100,3101,1,0,0,0,3101,3102,1,0,0,0,3102,3103,3,702,351, + 0,3103,159,1,0,0,0,3104,3105,5,51,0,0,3105,3107,5,409,0,0,3106,3108, + 3,758,379,0,3107,3106,1,0,0,0,3107,3108,1,0,0,0,3108,3109,1,0,0, + 0,3109,3110,3,632,316,0,3110,161,1,0,0,0,3111,3112,5,51,0,0,3112, + 3114,5,592,0,0,3113,3115,3,758,379,0,3114,3113,1,0,0,0,3114,3115, + 1,0,0,0,3115,3116,1,0,0,0,3116,3117,3,706,353,0,3117,163,1,0,0,0, + 3118,3119,5,51,0,0,3119,3120,5,161,0,0,3120,3121,5,137,0,0,3121, + 3123,5,835,0,0,3122,3124,3,758,379,0,3123,3122,1,0,0,0,3123,3124, + 1,0,0,0,3124,3125,1,0,0,0,3125,3126,5,883,0,0,3126,165,1,0,0,0,3127, + 3129,5,51,0,0,3128,3130,5,660,0,0,3129,3128,1,0,0,0,3129,3130,1, + 0,0,0,3130,3131,1,0,0,0,3131,3133,5,173,0,0,3132,3134,3,758,379, + 0,3133,3132,1,0,0,0,3133,3134,1,0,0,0,3134,3135,1,0,0,0,3135,3137, + 3,650,325,0,3136,3138,7,43,0,0,3137,3136,1,0,0,0,3137,3138,1,0,0, + 0,3138,167,1,0,0,0,3139,3141,5,51,0,0,3140,3142,5,180,0,0,3141,3140, + 1,0,0,0,3141,3142,1,0,0,0,3142,3143,1,0,0,0,3143,3144,5,658,0,0, + 3144,3150,3,666,333,0,3145,3147,5,380,0,0,3146,3148,5,857,0,0,3147, + 3146,1,0,0,0,3147,3148,1,0,0,0,3148,3149,1,0,0,0,3149,3151,3,692, + 346,0,3150,3145,1,0,0,0,3150,3151,1,0,0,0,3151,169,1,0,0,0,3152, + 3153,5,51,0,0,3153,3155,5,178,0,0,3154,3156,3,758,379,0,3155,3154, + 1,0,0,0,3155,3156,1,0,0,0,3156,3157,1,0,0,0,3157,3158,3,702,351, + 0,3158,171,1,0,0,0,3159,3160,5,51,0,0,3160,3162,5,684,0,0,3161,3163, + 3,758,379,0,3162,3161,1,0,0,0,3162,3163,1,0,0,0,3163,3164,1,0,0, + 0,3164,3169,3,636,318,0,3165,3166,5,868,0,0,3166,3168,3,636,318, + 0,3167,3165,1,0,0,0,3168,3171,1,0,0,0,3169,3167,1,0,0,0,3169,3170, + 1,0,0,0,3170,3173,1,0,0,0,3171,3169,1,0,0,0,3172,3174,7,43,0,0,3173, + 3172,1,0,0,0,3173,3174,1,0,0,0,3174,173,1,0,0,0,3175,3176,5,51,0, + 0,3176,3178,5,582,0,0,3177,3179,3,758,379,0,3178,3177,1,0,0,0,3178, + 3179,1,0,0,0,3179,3180,1,0,0,0,3180,3181,3,654,327,0,3181,175,1, + 0,0,0,3182,3183,5,155,0,0,3183,3184,5,42,0,0,3184,3188,5,582,0,0, + 3185,3189,5,505,0,0,3186,3189,5,7,0,0,3187,3189,3,654,327,0,3188, + 3185,1,0,0,0,3188,3186,1,0,0,0,3188,3187,1,0,0,0,3189,3190,1,0,0, + 0,3190,3191,5,176,0,0,3191,3196,3,656,328,0,3192,3193,5,868,0,0, + 3193,3195,3,656,328,0,3194,3192,1,0,0,0,3195,3198,1,0,0,0,3196,3194, + 1,0,0,0,3196,3197,1,0,0,0,3197,3203,1,0,0,0,3198,3196,1,0,0,0,3199, + 3200,5,155,0,0,3200,3201,5,582,0,0,3201,3203,3,468,234,0,3202,3182, + 1,0,0,0,3202,3199,1,0,0,0,3203,177,1,0,0,0,3204,3205,5,141,0,0,3205, + 3206,5,173,0,0,3206,3211,3,180,90,0,3207,3208,5,868,0,0,3208,3210, + 3,180,90,0,3209,3207,1,0,0,0,3210,3213,1,0,0,0,3211,3209,1,0,0,0, + 3211,3212,1,0,0,0,3212,179,1,0,0,0,3213,3211,1,0,0,0,3214,3215,3, + 652,326,0,3215,3216,5,176,0,0,3216,3217,3,648,324,0,3217,181,1,0, + 0,0,3218,3220,5,668,0,0,3219,3221,5,173,0,0,3220,3219,1,0,0,0,3220, + 3221,1,0,0,0,3221,3222,1,0,0,0,3222,3223,3,652,326,0,3223,183,1, + 0,0,0,3224,3225,5,21,0,0,3225,3232,3,702,351,0,3226,3229,5,866,0, + 0,3227,3230,3,748,374,0,3228,3230,3,740,370,0,3229,3227,1,0,0,0, + 3229,3228,1,0,0,0,3229,3230,1,0,0,0,3230,3231,1,0,0,0,3231,3233, + 5,867,0,0,3232,3226,1,0,0,0,3232,3233,1,0,0,0,3233,185,1,0,0,0,3234, + 3237,3,240,120,0,3235,3237,3,242,121,0,3236,3234,1,0,0,0,3236,3235, + 1,0,0,0,3237,187,1,0,0,0,3238,3239,5,371,0,0,3239,3240,3,740,370, + 0,3240,189,1,0,0,0,3241,3246,3,244,122,0,3242,3246,3,246,123,0,3243, + 3246,3,248,124,0,3244,3246,3,250,125,0,3245,3241,1,0,0,0,3245,3242, + 1,0,0,0,3245,3243,1,0,0,0,3245,3244,1,0,0,0,3246,191,1,0,0,0,3247, + 3249,5,86,0,0,3248,3250,7,44,0,0,3249,3248,1,0,0,0,3249,3250,1,0, + 0,0,3250,3252,1,0,0,0,3251,3253,5,79,0,0,3252,3251,1,0,0,0,3252, + 3253,1,0,0,0,3253,3255,1,0,0,0,3254,3256,5,88,0,0,3255,3254,1,0, + 0,0,3255,3256,1,0,0,0,3256,3257,1,0,0,0,3257,3264,3,652,326,0,3258, + 3259,5,130,0,0,3259,3261,5,866,0,0,3260,3262,3,670,335,0,3261,3260, + 1,0,0,0,3261,3262,1,0,0,0,3262,3263,1,0,0,0,3263,3265,5,867,0,0, + 3264,3258,1,0,0,0,3264,3265,1,0,0,0,3265,3277,1,0,0,0,3266,3268, + 3,268,134,0,3267,3266,1,0,0,0,3267,3268,1,0,0,0,3268,3271,1,0,0, + 0,3269,3272,3,742,371,0,3270,3272,3,196,98,0,3271,3269,1,0,0,0,3271, + 3270,1,0,0,0,3271,3272,1,0,0,0,3272,3274,1,0,0,0,3273,3275,3,194, + 97,0,3274,3273,1,0,0,0,3274,3275,1,0,0,0,3275,3278,1,0,0,0,3276, + 3278,3,232,116,0,3277,3267,1,0,0,0,3277,3276,1,0,0,0,3278,3280,1, + 0,0,0,3279,3281,3,194,97,0,3280,3279,1,0,0,0,3280,3281,1,0,0,0,3281, + 3294,1,0,0,0,3282,3283,5,119,0,0,3283,3284,5,373,0,0,3284,3285,5, + 92,0,0,3285,3286,5,185,0,0,3286,3291,3,234,117,0,3287,3288,5,868, + 0,0,3288,3290,3,234,117,0,3289,3287,1,0,0,0,3290,3293,1,0,0,0,3291, + 3289,1,0,0,0,3291,3292,1,0,0,0,3292,3295,1,0,0,0,3293,3291,1,0,0, + 0,3294,3282,1,0,0,0,3294,3295,1,0,0,0,3295,193,1,0,0,0,3296,3297, + 5,13,0,0,3297,3299,3,706,353,0,3298,3300,3,268,134,0,3299,3298,1, + 0,0,0,3299,3300,1,0,0,0,3300,195,1,0,0,0,3301,3306,3,210,105,0,3302, + 3303,5,173,0,0,3303,3306,3,652,326,0,3304,3306,3,230,115,0,3305, + 3301,1,0,0,0,3305,3302,1,0,0,0,3305,3304,1,0,0,0,3306,197,1,0,0, + 0,3307,3313,3,200,100,0,3308,3310,5,828,0,0,3309,3311,7,45,0,0,3310, + 3309,1,0,0,0,3310,3311,1,0,0,0,3311,3312,1,0,0,0,3312,3314,3,200, + 100,0,3313,3308,1,0,0,0,3314,3315,1,0,0,0,3315,3313,1,0,0,0,3315, + 3316,1,0,0,0,3316,199,1,0,0,0,3317,3319,5,866,0,0,3318,3317,1,0, + 0,0,3318,3319,1,0,0,0,3319,3320,1,0,0,0,3320,3322,3,280,140,0,3321, + 3323,5,867,0,0,3322,3321,1,0,0,0,3322,3323,1,0,0,0,3323,201,1,0, + 0,0,3324,3325,5,103,0,0,3325,3327,5,360,0,0,3326,3328,7,46,0,0,3327, + 3326,1,0,0,0,3327,3328,1,0,0,0,3328,3330,1,0,0,0,3329,3331,5,450, + 0,0,3330,3329,1,0,0,0,3330,3331,1,0,0,0,3331,3332,1,0,0,0,3332,3333, + 5,83,0,0,3333,3335,5,882,0,0,3334,3336,7,7,0,0,3335,3334,1,0,0,0, + 3335,3336,1,0,0,0,3336,3337,1,0,0,0,3337,3338,5,88,0,0,3338,3339, + 5,173,0,0,3339,3345,3,652,326,0,3340,3341,5,130,0,0,3341,3342,5, + 866,0,0,3342,3343,3,670,335,0,3343,3344,5,867,0,0,3344,3346,1,0, + 0,0,3345,3340,1,0,0,0,3345,3346,1,0,0,0,3346,3350,1,0,0,0,3347,3348, + 5,26,0,0,3348,3349,5,155,0,0,3349,3351,3,688,344,0,3350,3347,1,0, + 0,0,3350,3351,1,0,0,0,3351,3358,1,0,0,0,3352,3354,7,47,0,0,3353, + 3355,3,304,152,0,3354,3353,1,0,0,0,3355,3356,1,0,0,0,3356,3354,1, + 0,0,0,3356,3357,1,0,0,0,3357,3359,1,0,0,0,3358,3352,1,0,0,0,3358, + 3359,1,0,0,0,3359,3366,1,0,0,0,3360,3362,5,102,0,0,3361,3363,3,306, + 153,0,3362,3361,1,0,0,0,3363,3364,1,0,0,0,3364,3362,1,0,0,0,3364, + 3365,1,0,0,0,3365,3367,1,0,0,0,3366,3360,1,0,0,0,3366,3367,1,0,0, + 0,3367,3372,1,0,0,0,3368,3369,5,79,0,0,3369,3370,3,712,356,0,3370, + 3371,7,48,0,0,3371,3373,1,0,0,0,3372,3368,1,0,0,0,3372,3373,1,0, + 0,0,3373,3385,1,0,0,0,3374,3375,5,866,0,0,3375,3380,3,236,118,0, + 3376,3377,5,868,0,0,3377,3379,3,236,118,0,3378,3376,1,0,0,0,3379, + 3382,1,0,0,0,3380,3378,1,0,0,0,3380,3381,1,0,0,0,3381,3383,1,0,0, + 0,3382,3380,1,0,0,0,3383,3384,5,867,0,0,3384,3386,1,0,0,0,3385,3374, + 1,0,0,0,3385,3386,1,0,0,0,3386,3396,1,0,0,0,3387,3388,5,155,0,0, + 3388,3393,3,234,117,0,3389,3390,5,868,0,0,3390,3392,3,234,117,0, + 3391,3389,1,0,0,0,3392,3395,1,0,0,0,3393,3391,1,0,0,0,3393,3394, + 1,0,0,0,3394,3397,1,0,0,0,3395,3393,1,0,0,0,3396,3387,1,0,0,0,3396, + 3397,1,0,0,0,3397,203,1,0,0,0,3398,3399,5,103,0,0,3399,3401,5,695, + 0,0,3400,3402,7,46,0,0,3401,3400,1,0,0,0,3401,3402,1,0,0,0,3402, + 3404,1,0,0,0,3403,3405,5,450,0,0,3404,3403,1,0,0,0,3404,3405,1,0, + 0,0,3405,3406,1,0,0,0,3406,3407,5,83,0,0,3407,3409,5,882,0,0,3408, + 3410,7,7,0,0,3409,3408,1,0,0,0,3409,3410,1,0,0,0,3410,3411,1,0,0, + 0,3411,3412,5,88,0,0,3412,3413,5,173,0,0,3413,3417,3,652,326,0,3414, + 3415,5,26,0,0,3415,3416,5,155,0,0,3416,3418,3,688,344,0,3417,3414, + 1,0,0,0,3417,3418,1,0,0,0,3418,3429,1,0,0,0,3419,3420,5,587,0,0, + 3420,3421,5,423,0,0,3421,3423,5,20,0,0,3422,3424,5,859,0,0,3423, + 3422,1,0,0,0,3423,3424,1,0,0,0,3424,3425,1,0,0,0,3425,3427,5,882, + 0,0,3426,3428,5,858,0,0,3427,3426,1,0,0,0,3427,3428,1,0,0,0,3428, + 3430,1,0,0,0,3429,3419,1,0,0,0,3429,3430,1,0,0,0,3430,3435,1,0,0, + 0,3431,3432,5,79,0,0,3432,3433,3,712,356,0,3433,3434,7,48,0,0,3434, + 3436,1,0,0,0,3435,3431,1,0,0,0,3435,3436,1,0,0,0,3436,3448,1,0,0, + 0,3437,3438,5,866,0,0,3438,3443,3,236,118,0,3439,3440,5,868,0,0, + 3440,3442,3,236,118,0,3441,3439,1,0,0,0,3442,3445,1,0,0,0,3443,3441, + 1,0,0,0,3443,3444,1,0,0,0,3444,3446,1,0,0,0,3445,3443,1,0,0,0,3446, + 3447,5,867,0,0,3447,3449,1,0,0,0,3448,3437,1,0,0,0,3448,3449,1,0, + 0,0,3449,3459,1,0,0,0,3450,3451,5,155,0,0,3451,3456,3,234,117,0, + 3452,3453,5,868,0,0,3453,3455,3,234,117,0,3454,3452,1,0,0,0,3455, + 3458,1,0,0,0,3456,3454,1,0,0,0,3456,3457,1,0,0,0,3457,3460,1,0,0, + 0,3458,3456,1,0,0,0,3459,3450,1,0,0,0,3459,3460,1,0,0,0,3460,205, + 1,0,0,0,3461,3462,5,866,0,0,3462,3464,3,224,112,0,3463,3465,3,258, + 129,0,3464,3463,1,0,0,0,3464,3465,1,0,0,0,3465,3467,1,0,0,0,3466, + 3468,3,318,159,0,3467,3466,1,0,0,0,3467,3468,1,0,0,0,3468,3469,1, + 0,0,0,3469,3471,5,867,0,0,3470,3472,3,258,129,0,3471,3470,1,0,0, + 0,3471,3472,1,0,0,0,3472,3474,1,0,0,0,3473,3475,3,318,159,0,3474, + 3473,1,0,0,0,3474,3475,1,0,0,0,3475,3477,1,0,0,0,3476,3478,3,302, + 151,0,3477,3476,1,0,0,0,3477,3478,1,0,0,0,3478,207,1,0,0,0,3479, + 3481,5,143,0,0,3480,3482,7,49,0,0,3481,3480,1,0,0,0,3481,3482,1, + 0,0,0,3482,3484,1,0,0,0,3483,3485,5,88,0,0,3484,3483,1,0,0,0,3484, + 3485,1,0,0,0,3485,3486,1,0,0,0,3486,3492,3,652,326,0,3487,3488,5, + 130,0,0,3488,3489,5,866,0,0,3489,3490,3,670,335,0,3490,3491,5,867, + 0,0,3491,3493,1,0,0,0,3492,3487,1,0,0,0,3492,3493,1,0,0,0,3493,3502, + 1,0,0,0,3494,3495,5,866,0,0,3495,3496,3,660,330,0,3496,3497,5,867, + 0,0,3497,3499,1,0,0,0,3498,3494,1,0,0,0,3498,3499,1,0,0,0,3499,3500, + 1,0,0,0,3500,3503,3,228,114,0,3501,3503,3,232,116,0,3502,3498,1, + 0,0,0,3502,3501,1,0,0,0,3503,209,1,0,0,0,3504,3508,3,280,140,0,3505, + 3507,3,282,141,0,3506,3505,1,0,0,0,3507,3510,1,0,0,0,3508,3506,1, + 0,0,0,3508,3509,1,0,0,0,3509,3519,1,0,0,0,3510,3508,1,0,0,0,3511, + 3513,5,181,0,0,3512,3514,7,45,0,0,3513,3512,1,0,0,0,3513,3514,1, + 0,0,0,3514,3517,1,0,0,0,3515,3518,3,280,140,0,3516,3518,3,278,139, + 0,3517,3515,1,0,0,0,3517,3516,1,0,0,0,3518,3520,1,0,0,0,3519,3511, + 1,0,0,0,3519,3520,1,0,0,0,3520,3525,1,0,0,0,3521,3522,5,868,0,0, + 3522,3524,3,284,142,0,3523,3521,1,0,0,0,3524,3527,1,0,0,0,3525,3523, + 1,0,0,0,3525,3526,1,0,0,0,3526,3529,1,0,0,0,3527,3525,1,0,0,0,3528, + 3530,3,258,129,0,3529,3528,1,0,0,0,3529,3530,1,0,0,0,3530,3532,1, + 0,0,0,3531,3533,3,318,159,0,3532,3531,1,0,0,0,3532,3533,1,0,0,0, + 3533,3535,1,0,0,0,3534,3536,3,238,119,0,3535,3534,1,0,0,0,3535,3536, + 1,0,0,0,3536,3538,1,0,0,0,3537,3539,3,302,151,0,3538,3537,1,0,0, + 0,3538,3539,1,0,0,0,3539,3564,1,0,0,0,3540,3544,3,278,139,0,3541, + 3543,3,282,141,0,3542,3541,1,0,0,0,3543,3546,1,0,0,0,3544,3542,1, + 0,0,0,3544,3545,1,0,0,0,3545,3552,1,0,0,0,3546,3544,1,0,0,0,3547, + 3549,5,181,0,0,3548,3550,7,45,0,0,3549,3548,1,0,0,0,3549,3550,1, + 0,0,0,3550,3551,1,0,0,0,3551,3553,3,278,139,0,3552,3547,1,0,0,0, + 3552,3553,1,0,0,0,3553,3555,1,0,0,0,3554,3556,3,258,129,0,3555,3554, + 1,0,0,0,3555,3556,1,0,0,0,3556,3558,1,0,0,0,3557,3559,3,318,159, + 0,3558,3557,1,0,0,0,3558,3559,1,0,0,0,3559,3561,1,0,0,0,3560,3562, + 3,238,119,0,3561,3560,1,0,0,0,3561,3562,1,0,0,0,3562,3564,1,0,0, + 0,3563,3504,1,0,0,0,3563,3540,1,0,0,0,3564,211,1,0,0,0,3565,3567, + 3,50,25,0,3566,3565,1,0,0,0,3566,3567,1,0,0,0,3567,3568,1,0,0,0, + 3568,3570,3,214,107,0,3569,3571,3,258,129,0,3570,3569,1,0,0,0,3570, + 3571,1,0,0,0,3571,3573,1,0,0,0,3572,3574,3,318,159,0,3573,3572,1, + 0,0,0,3573,3574,1,0,0,0,3574,3576,1,0,0,0,3575,3577,3,302,151,0, + 3576,3575,1,0,0,0,3576,3577,1,0,0,0,3577,213,1,0,0,0,3578,3579,6, + 107,-1,0,3579,3580,3,216,108,0,3580,3595,1,0,0,0,3581,3582,10,2, + 0,0,3582,3584,5,181,0,0,3583,3585,7,45,0,0,3584,3583,1,0,0,0,3584, + 3585,1,0,0,0,3585,3586,1,0,0,0,3586,3594,3,216,108,0,3587,3588,10, + 1,0,0,3588,3590,5,59,0,0,3589,3591,7,45,0,0,3590,3589,1,0,0,0,3590, + 3591,1,0,0,0,3591,3592,1,0,0,0,3592,3594,3,216,108,0,3593,3581,1, + 0,0,0,3593,3587,1,0,0,0,3594,3597,1,0,0,0,3595,3593,1,0,0,0,3595, + 3596,1,0,0,0,3596,215,1,0,0,0,3597,3595,1,0,0,0,3598,3599,6,108, + -1,0,3599,3600,3,218,109,0,3600,3609,1,0,0,0,3601,3602,10,1,0,0, + 3602,3604,5,828,0,0,3603,3605,7,45,0,0,3604,3603,1,0,0,0,3604,3605, + 1,0,0,0,3605,3606,1,0,0,0,3606,3608,3,218,109,0,3607,3601,1,0,0, + 0,3608,3611,1,0,0,0,3609,3607,1,0,0,0,3609,3610,1,0,0,0,3610,217, + 1,0,0,0,3611,3609,1,0,0,0,3612,3627,3,226,113,0,3613,3614,5,866, + 0,0,3614,3616,3,214,107,0,3615,3617,3,258,129,0,3616,3615,1,0,0, + 0,3616,3617,1,0,0,0,3617,3619,1,0,0,0,3618,3620,3,318,159,0,3619, + 3618,1,0,0,0,3619,3620,1,0,0,0,3620,3622,1,0,0,0,3621,3623,3,302, + 151,0,3622,3621,1,0,0,0,3622,3623,1,0,0,0,3623,3624,1,0,0,0,3624, + 3625,5,867,0,0,3625,3627,1,0,0,0,3626,3612,1,0,0,0,3626,3613,1,0, + 0,0,3627,219,1,0,0,0,3628,3631,3,254,127,0,3629,3631,3,256,128,0, + 3630,3628,1,0,0,0,3630,3629,1,0,0,0,3631,221,1,0,0,0,3632,3636,3, + 230,115,0,3633,3634,5,125,0,0,3634,3635,5,20,0,0,3635,3637,3,674, + 337,0,3636,3633,1,0,0,0,3636,3637,1,0,0,0,3637,3640,1,0,0,0,3638, + 3639,5,100,0,0,3639,3641,3,320,160,0,3640,3638,1,0,0,0,3640,3641, + 1,0,0,0,3641,223,1,0,0,0,3642,3647,3,226,113,0,3643,3644,7,50,0, + 0,3644,3646,3,226,113,0,3645,3643,1,0,0,0,3646,3649,1,0,0,0,3647, + 3645,1,0,0,0,3647,3648,1,0,0,0,3648,3651,1,0,0,0,3649,3647,1,0,0, + 0,3650,3652,3,258,129,0,3651,3650,1,0,0,0,3651,3652,1,0,0,0,3652, + 3654,1,0,0,0,3653,3655,3,318,159,0,3654,3653,1,0,0,0,3654,3655,1, + 0,0,0,3655,3657,1,0,0,0,3656,3658,3,302,151,0,3657,3656,1,0,0,0, + 3657,3658,1,0,0,0,3658,225,1,0,0,0,3659,3663,3,210,105,0,3660,3663, + 3,618,309,0,3661,3663,3,222,111,0,3662,3659,1,0,0,0,3662,3660,1, + 0,0,0,3662,3661,1,0,0,0,3663,227,1,0,0,0,3664,3670,3,210,105,0,3665, + 3666,5,173,0,0,3666,3670,3,652,326,0,3667,3670,3,742,371,0,3668, + 3670,3,230,115,0,3669,3664,1,0,0,0,3669,3665,1,0,0,0,3669,3667,1, + 0,0,0,3669,3668,1,0,0,0,3670,229,1,0,0,0,3671,3672,5,189,0,0,3672, + 3673,5,586,0,0,3673,3679,3,744,372,0,3674,3675,5,868,0,0,3675,3676, + 5,586,0,0,3676,3678,3,744,372,0,3677,3674,1,0,0,0,3678,3681,1,0, + 0,0,3679,3677,1,0,0,0,3679,3680,1,0,0,0,3680,231,1,0,0,0,3681,3679, + 1,0,0,0,3682,3683,5,155,0,0,3683,3688,3,234,117,0,3684,3685,5,868, + 0,0,3685,3687,3,234,117,0,3686,3684,1,0,0,0,3687,3690,1,0,0,0,3688, + 3686,1,0,0,0,3688,3689,1,0,0,0,3689,233,1,0,0,0,3690,3688,1,0,0, + 0,3691,3692,3,662,331,0,3692,3693,5,857,0,0,3693,3694,3,746,373, + 0,3694,235,1,0,0,0,3695,3698,3,706,353,0,3696,3698,5,892,0,0,3697, + 3695,1,0,0,0,3697,3696,1,0,0,0,3698,237,1,0,0,0,3699,3700,5,65,0, + 0,3700,3710,7,51,0,0,3701,3702,5,510,0,0,3702,3707,3,652,326,0,3703, + 3704,5,868,0,0,3704,3706,3,652,326,0,3705,3703,1,0,0,0,3706,3709, + 1,0,0,0,3707,3705,1,0,0,0,3707,3708,1,0,0,0,3708,3711,1,0,0,0,3709, + 3707,1,0,0,0,3710,3701,1,0,0,0,3710,3711,1,0,0,0,3711,3714,1,0,0, + 0,3712,3713,7,52,0,0,3713,3715,5,105,0,0,3714,3712,1,0,0,0,3714, + 3715,1,0,0,0,3715,3721,1,0,0,0,3716,3717,5,104,0,0,3717,3718,5,80, + 0,0,3718,3719,5,594,0,0,3719,3721,5,491,0,0,3720,3699,1,0,0,0,3720, + 3716,1,0,0,0,3721,239,1,0,0,0,3722,3724,5,44,0,0,3723,3725,5,107, + 0,0,3724,3723,1,0,0,0,3724,3725,1,0,0,0,3725,3727,1,0,0,0,3726,3728, + 5,549,0,0,3727,3726,1,0,0,0,3727,3728,1,0,0,0,3728,3730,1,0,0,0, + 3729,3731,5,79,0,0,3730,3729,1,0,0,0,3730,3731,1,0,0,0,3731,3732, + 1,0,0,0,3732,3733,5,68,0,0,3733,3738,3,652,326,0,3734,3736,5,13, + 0,0,3735,3734,1,0,0,0,3735,3736,1,0,0,0,3736,3737,1,0,0,0,3737,3739, + 3,706,353,0,3738,3735,1,0,0,0,3738,3739,1,0,0,0,3739,3745,1,0,0, + 0,3740,3741,5,130,0,0,3741,3742,5,866,0,0,3742,3743,3,670,335,0, + 3743,3744,5,867,0,0,3744,3746,1,0,0,0,3745,3740,1,0,0,0,3745,3746, + 1,0,0,0,3746,3749,1,0,0,0,3747,3748,5,192,0,0,3748,3750,3,804,402, + 0,3749,3747,1,0,0,0,3749,3750,1,0,0,0,3750,3752,1,0,0,0,3751,3753, + 3,258,129,0,3752,3751,1,0,0,0,3752,3753,1,0,0,0,3753,3756,1,0,0, + 0,3754,3755,5,100,0,0,3755,3757,3,320,160,0,3756,3754,1,0,0,0,3756, + 3757,1,0,0,0,3757,241,1,0,0,0,3758,3760,5,44,0,0,3759,3761,5,107, + 0,0,3760,3759,1,0,0,0,3760,3761,1,0,0,0,3761,3763,1,0,0,0,3762,3764, + 5,549,0,0,3763,3762,1,0,0,0,3763,3764,1,0,0,0,3764,3766,1,0,0,0, + 3765,3767,5,79,0,0,3766,3765,1,0,0,0,3766,3767,1,0,0,0,3767,3807, + 1,0,0,0,3768,3771,3,652,326,0,3769,3770,5,865,0,0,3770,3772,5,850, + 0,0,3771,3769,1,0,0,0,3771,3772,1,0,0,0,3772,3781,1,0,0,0,3773,3774, + 5,868,0,0,3774,3777,3,652,326,0,3775,3776,5,865,0,0,3776,3778,5, + 850,0,0,3777,3775,1,0,0,0,3777,3778,1,0,0,0,3778,3780,1,0,0,0,3779, + 3773,1,0,0,0,3780,3783,1,0,0,0,3781,3779,1,0,0,0,3781,3782,1,0,0, + 0,3782,3784,1,0,0,0,3783,3781,1,0,0,0,3784,3785,5,68,0,0,3785,3786, + 3,262,131,0,3786,3808,1,0,0,0,3787,3788,5,68,0,0,3788,3791,3,652, + 326,0,3789,3790,5,865,0,0,3790,3792,5,850,0,0,3791,3789,1,0,0,0, + 3791,3792,1,0,0,0,3792,3801,1,0,0,0,3793,3794,5,868,0,0,3794,3797, + 3,652,326,0,3795,3796,5,865,0,0,3796,3798,5,850,0,0,3797,3795,1, + 0,0,0,3797,3798,1,0,0,0,3798,3800,1,0,0,0,3799,3793,1,0,0,0,3800, + 3803,1,0,0,0,3801,3799,1,0,0,0,3801,3802,1,0,0,0,3802,3804,1,0,0, + 0,3803,3801,1,0,0,0,3804,3805,5,188,0,0,3805,3806,3,262,131,0,3806, + 3808,1,0,0,0,3807,3768,1,0,0,0,3807,3787,1,0,0,0,3808,3811,1,0,0, + 0,3809,3810,5,192,0,0,3810,3812,3,804,402,0,3811,3809,1,0,0,0,3811, + 3812,1,0,0,0,3812,243,1,0,0,0,3813,3814,5,417,0,0,3814,3815,3,652, + 326,0,3815,3820,5,516,0,0,3816,3818,5,13,0,0,3817,3816,1,0,0,0,3817, + 3818,1,0,0,0,3818,3819,1,0,0,0,3819,3821,3,706,353,0,3820,3817,1, + 0,0,0,3820,3821,1,0,0,0,3821,245,1,0,0,0,3822,3823,5,417,0,0,3823, + 3824,3,652,326,0,3824,3825,5,135,0,0,3825,3832,3,642,321,0,3826, + 3827,3,814,407,0,3827,3828,5,866,0,0,3828,3829,3,748,374,0,3829, + 3830,5,867,0,0,3830,3833,1,0,0,0,3831,3833,7,53,0,0,3832,3826,1, + 0,0,0,3832,3831,1,0,0,0,3833,3836,1,0,0,0,3834,3835,5,192,0,0,3835, + 3837,3,804,402,0,3836,3834,1,0,0,0,3836,3837,1,0,0,0,3837,3840,1, + 0,0,0,3838,3839,5,100,0,0,3839,3841,3,320,160,0,3840,3838,1,0,0, + 0,3840,3841,1,0,0,0,3841,247,1,0,0,0,3842,3843,5,417,0,0,3843,3844, + 3,652,326,0,3844,3845,5,135,0,0,3845,3848,7,54,0,0,3846,3847,5,192, + 0,0,3847,3849,3,804,402,0,3848,3846,1,0,0,0,3848,3849,1,0,0,0,3849, + 3852,1,0,0,0,3850,3851,5,100,0,0,3851,3853,3,320,160,0,3852,3850, + 1,0,0,0,3852,3853,1,0,0,0,3853,249,1,0,0,0,3854,3855,5,417,0,0,3855, + 3856,3,652,326,0,3856,3857,5,334,0,0,3857,251,1,0,0,0,3858,3859, + 5,425,0,0,3859,3860,5,173,0,0,3860,3861,5,68,0,0,3861,3866,3,716, + 358,0,3862,3863,5,868,0,0,3863,3865,3,716,358,0,3864,3862,1,0,0, + 0,3865,3868,1,0,0,0,3866,3864,1,0,0,0,3866,3867,1,0,0,0,3867,253, + 1,0,0,0,3868,3866,1,0,0,0,3869,3871,5,185,0,0,3870,3872,5,107,0, + 0,3871,3870,1,0,0,0,3871,3872,1,0,0,0,3872,3874,1,0,0,0,3873,3875, + 5,79,0,0,3874,3873,1,0,0,0,3874,3875,1,0,0,0,3875,3876,1,0,0,0,3876, + 3881,3,652,326,0,3877,3879,5,13,0,0,3878,3877,1,0,0,0,3878,3879, + 1,0,0,0,3879,3880,1,0,0,0,3880,3882,3,706,353,0,3881,3878,1,0,0, + 0,3881,3882,1,0,0,0,3882,3883,1,0,0,0,3883,3884,5,155,0,0,3884,3889, + 3,234,117,0,3885,3886,5,868,0,0,3886,3888,3,234,117,0,3887,3885, + 1,0,0,0,3888,3891,1,0,0,0,3889,3887,1,0,0,0,3889,3890,1,0,0,0,3890, + 3894,1,0,0,0,3891,3889,1,0,0,0,3892,3893,5,192,0,0,3893,3895,3,804, + 402,0,3894,3892,1,0,0,0,3894,3895,1,0,0,0,3895,3897,1,0,0,0,3896, + 3898,3,258,129,0,3897,3896,1,0,0,0,3897,3898,1,0,0,0,3898,3900,1, + 0,0,0,3899,3901,3,318,159,0,3900,3899,1,0,0,0,3900,3901,1,0,0,0, + 3901,255,1,0,0,0,3902,3904,5,185,0,0,3903,3905,5,107,0,0,3904,3903, + 1,0,0,0,3904,3905,1,0,0,0,3905,3907,1,0,0,0,3906,3908,5,79,0,0,3907, + 3906,1,0,0,0,3907,3908,1,0,0,0,3908,3909,1,0,0,0,3909,3910,3,262, + 131,0,3910,3911,5,155,0,0,3911,3916,3,234,117,0,3912,3913,5,868, + 0,0,3913,3915,3,234,117,0,3914,3912,1,0,0,0,3915,3918,1,0,0,0,3916, + 3914,1,0,0,0,3916,3917,1,0,0,0,3917,3921,1,0,0,0,3918,3916,1,0,0, + 0,3919,3920,5,192,0,0,3920,3922,3,804,402,0,3921,3919,1,0,0,0,3921, + 3922,1,0,0,0,3922,257,1,0,0,0,3923,3924,5,125,0,0,3924,3925,5,20, + 0,0,3925,3930,3,260,130,0,3926,3927,5,868,0,0,3927,3929,3,260,130, + 0,3928,3926,1,0,0,0,3929,3932,1,0,0,0,3930,3928,1,0,0,0,3930,3931, + 1,0,0,0,3931,259,1,0,0,0,3932,3930,1,0,0,0,3933,3935,3,804,402,0, + 3934,3936,7,55,0,0,3935,3934,1,0,0,0,3935,3936,1,0,0,0,3936,261, + 1,0,0,0,3937,3942,3,264,132,0,3938,3939,5,868,0,0,3939,3941,3,264, + 132,0,3940,3938,1,0,0,0,3941,3944,1,0,0,0,3942,3940,1,0,0,0,3942, + 3943,1,0,0,0,3943,263,1,0,0,0,3944,3942,1,0,0,0,3945,3949,3,266, + 133,0,3946,3948,3,274,137,0,3947,3946,1,0,0,0,3948,3951,1,0,0,0, + 3949,3947,1,0,0,0,3949,3950,1,0,0,0,3950,3964,1,0,0,0,3951,3949, + 1,0,0,0,3952,3953,5,866,0,0,3953,3957,3,266,133,0,3954,3956,3,274, + 137,0,3955,3954,1,0,0,0,3956,3959,1,0,0,0,3957,3955,1,0,0,0,3957, + 3958,1,0,0,0,3958,3960,1,0,0,0,3959,3957,1,0,0,0,3960,3961,5,867, + 0,0,3961,3964,1,0,0,0,3962,3964,3,286,143,0,3963,3945,1,0,0,0,3963, + 3952,1,0,0,0,3963,3962,1,0,0,0,3964,265,1,0,0,0,3965,3971,3,652, + 326,0,3966,3967,5,130,0,0,3967,3968,5,866,0,0,3968,3969,3,670,335, + 0,3969,3970,5,867,0,0,3970,3972,1,0,0,0,3971,3966,1,0,0,0,3971,3972, + 1,0,0,0,3972,3977,1,0,0,0,3973,3975,5,13,0,0,3974,3973,1,0,0,0,3974, + 3975,1,0,0,0,3975,3976,1,0,0,0,3976,3978,3,706,353,0,3977,3974,1, + 0,0,0,3977,3978,1,0,0,0,3978,3987,1,0,0,0,3979,3984,3,270,135,0, + 3980,3981,5,868,0,0,3981,3983,3,270,135,0,3982,3980,1,0,0,0,3983, + 3986,1,0,0,0,3984,3982,1,0,0,0,3984,3985,1,0,0,0,3985,3988,1,0,0, + 0,3986,3984,1,0,0,0,3987,3979,1,0,0,0,3987,3988,1,0,0,0,3988,4011, + 1,0,0,0,3989,3991,5,95,0,0,3990,3989,1,0,0,0,3990,3991,1,0,0,0,3991, + 3997,1,0,0,0,3992,3998,3,210,105,0,3993,3994,5,866,0,0,3994,3995, + 3,210,105,0,3995,3996,5,867,0,0,3996,3998,1,0,0,0,3997,3992,1,0, + 0,0,3997,3993,1,0,0,0,3998,4000,1,0,0,0,3999,4001,5,13,0,0,4000, + 3999,1,0,0,0,4000,4001,1,0,0,0,4001,4002,1,0,0,0,4002,4004,3,706, + 353,0,4003,4005,3,268,134,0,4004,4003,1,0,0,0,4004,4005,1,0,0,0, + 4005,4011,1,0,0,0,4006,4007,5,866,0,0,4007,4008,3,262,131,0,4008, + 4009,5,867,0,0,4009,4011,1,0,0,0,4010,3965,1,0,0,0,4010,3990,1,0, + 0,0,4010,4006,1,0,0,0,4011,267,1,0,0,0,4012,4013,5,866,0,0,4013, + 4014,3,660,330,0,4014,4015,5,867,0,0,4015,269,1,0,0,0,4016,4017, + 7,56,0,0,4017,4020,7,19,0,0,4018,4019,5,65,0,0,4019,4021,3,272,136, + 0,4020,4018,1,0,0,0,4020,4021,1,0,0,0,4021,4022,1,0,0,0,4022,4024, + 5,866,0,0,4023,4025,3,640,320,0,4024,4023,1,0,0,0,4024,4025,1,0, + 0,0,4025,4026,1,0,0,0,4026,4027,5,867,0,0,4027,271,1,0,0,0,4028, + 4034,5,91,0,0,4029,4030,5,125,0,0,4030,4034,5,20,0,0,4031,4032,5, + 74,0,0,4032,4034,5,20,0,0,4033,4028,1,0,0,0,4033,4029,1,0,0,0,4033, + 4031,1,0,0,0,4034,273,1,0,0,0,4035,4037,7,57,0,0,4036,4035,1,0,0, + 0,4036,4037,1,0,0,0,4037,4038,1,0,0,0,4038,4040,5,91,0,0,4039,4041, + 5,95,0,0,4040,4039,1,0,0,0,4040,4041,1,0,0,0,4041,4042,1,0,0,0,4042, + 4046,3,266,133,0,4043,4045,3,276,138,0,4044,4043,1,0,0,0,4045,4048, + 1,0,0,0,4046,4044,1,0,0,0,4046,4047,1,0,0,0,4047,4085,1,0,0,0,4048, + 4046,1,0,0,0,4049,4050,5,172,0,0,4050,4054,3,266,133,0,4051,4053, + 3,276,138,0,4052,4051,1,0,0,0,4053,4056,1,0,0,0,4054,4052,1,0,0, + 0,4054,4055,1,0,0,0,4055,4085,1,0,0,0,4056,4054,1,0,0,0,4057,4059, + 7,58,0,0,4058,4060,5,127,0,0,4059,4058,1,0,0,0,4059,4060,1,0,0,0, + 4060,4061,1,0,0,0,4061,4063,5,91,0,0,4062,4064,5,95,0,0,4063,4062, + 1,0,0,0,4063,4064,1,0,0,0,4064,4065,1,0,0,0,4065,4069,3,266,133, + 0,4066,4068,3,276,138,0,4067,4066,1,0,0,0,4068,4071,1,0,0,0,4069, + 4067,1,0,0,0,4069,4070,1,0,0,0,4070,4085,1,0,0,0,4071,4069,1,0,0, + 0,4072,4080,5,113,0,0,4073,4076,5,84,0,0,4074,4076,7,58,0,0,4075, + 4073,1,0,0,0,4075,4074,1,0,0,0,4076,4078,1,0,0,0,4077,4079,5,127, + 0,0,4078,4077,1,0,0,0,4078,4079,1,0,0,0,4079,4081,1,0,0,0,4080,4075, + 1,0,0,0,4080,4081,1,0,0,0,4081,4082,1,0,0,0,4082,4083,5,91,0,0,4083, + 4085,3,266,133,0,4084,4036,1,0,0,0,4084,4049,1,0,0,0,4084,4057,1, + 0,0,0,4084,4072,1,0,0,0,4085,275,1,0,0,0,4086,4087,5,119,0,0,4087, + 4094,3,804,402,0,4088,4089,5,188,0,0,4089,4090,5,866,0,0,4090,4091, + 3,660,330,0,4091,4092,5,867,0,0,4092,4094,1,0,0,0,4093,4086,1,0, + 0,0,4093,4088,1,0,0,0,4094,277,1,0,0,0,4095,4096,5,866,0,0,4096, + 4097,3,280,140,0,4097,4098,5,867,0,0,4098,4104,1,0,0,0,4099,4100, + 5,866,0,0,4100,4101,3,278,139,0,4101,4102,5,867,0,0,4102,4104,1, + 0,0,0,4103,4095,1,0,0,0,4103,4099,1,0,0,0,4104,279,1,0,0,0,4105, + 4109,5,154,0,0,4106,4108,3,296,148,0,4107,4106,1,0,0,0,4108,4111, + 1,0,0,0,4109,4107,1,0,0,0,4109,4110,1,0,0,0,4110,4112,1,0,0,0,4111, + 4109,1,0,0,0,4112,4114,3,298,149,0,4113,4115,3,302,151,0,4114,4113, + 1,0,0,0,4114,4115,1,0,0,0,4115,4116,1,0,0,0,4116,4118,3,308,154, + 0,4117,4119,3,310,155,0,4118,4117,1,0,0,0,4118,4119,1,0,0,0,4119, + 4121,1,0,0,0,4120,4122,3,312,156,0,4121,4120,1,0,0,0,4121,4122,1, + 0,0,0,4122,4124,1,0,0,0,4123,4125,3,314,157,0,4124,4123,1,0,0,0, + 4124,4125,1,0,0,0,4125,4127,1,0,0,0,4126,4128,3,258,129,0,4127,4126, + 1,0,0,0,4127,4128,1,0,0,0,4128,4130,1,0,0,0,4129,4131,3,318,159, + 0,4130,4129,1,0,0,0,4130,4131,1,0,0,0,4131,4133,1,0,0,0,4132,4134, + 3,302,151,0,4133,4132,1,0,0,0,4133,4134,1,0,0,0,4134,4136,1,0,0, + 0,4135,4137,3,282,141,0,4136,4135,1,0,0,0,4136,4137,1,0,0,0,4137, + 281,1,0,0,0,4138,4140,5,181,0,0,4139,4141,7,45,0,0,4140,4139,1,0, + 0,0,4140,4141,1,0,0,0,4141,4144,1,0,0,0,4142,4145,3,280,140,0,4143, + 4145,3,278,139,0,4144,4142,1,0,0,0,4144,4143,1,0,0,0,4145,283,1, + 0,0,0,4146,4161,5,95,0,0,4147,4162,3,280,140,0,4148,4162,3,278,139, + 0,4149,4152,5,866,0,0,4150,4153,3,280,140,0,4151,4153,3,278,139, + 0,4152,4150,1,0,0,0,4152,4151,1,0,0,0,4153,4154,1,0,0,0,4154,4159, + 5,867,0,0,4155,4157,5,13,0,0,4156,4155,1,0,0,0,4156,4157,1,0,0,0, + 4157,4158,1,0,0,0,4158,4160,3,706,353,0,4159,4156,1,0,0,0,4159,4160, + 1,0,0,0,4160,4162,1,0,0,0,4161,4147,1,0,0,0,4161,4148,1,0,0,0,4161, + 4149,1,0,0,0,4162,285,1,0,0,0,4163,4164,5,253,0,0,4164,4165,5,866, + 0,0,4165,4166,5,882,0,0,4166,4167,5,868,0,0,4167,4168,5,882,0,0, + 4168,4169,5,337,0,0,4169,4170,5,866,0,0,4170,4171,3,288,144,0,4171, + 4172,5,867,0,0,4172,4177,5,867,0,0,4173,4175,5,13,0,0,4174,4173, + 1,0,0,0,4174,4175,1,0,0,0,4175,4176,1,0,0,0,4176,4178,3,706,353, + 0,4177,4174,1,0,0,0,4177,4178,1,0,0,0,4178,287,1,0,0,0,4179,4184, + 3,290,145,0,4180,4181,5,868,0,0,4181,4183,3,290,145,0,4182,4180, + 1,0,0,0,4183,4186,1,0,0,0,4184,4182,1,0,0,0,4184,4185,1,0,0,0,4185, + 289,1,0,0,0,4186,4184,1,0,0,0,4187,4204,3,662,331,0,4188,4189,5, + 65,0,0,4189,4205,5,256,0,0,4190,4202,3,726,363,0,4191,4192,5,257, + 0,0,4192,4194,5,882,0,0,4193,4195,3,292,146,0,4194,4193,1,0,0,0, + 4194,4195,1,0,0,0,4195,4197,1,0,0,0,4196,4198,3,294,147,0,4197,4196, + 1,0,0,0,4197,4198,1,0,0,0,4198,4203,1,0,0,0,4199,4200,5,60,0,0,4200, + 4201,5,257,0,0,4201,4203,5,882,0,0,4202,4191,1,0,0,0,4202,4199,1, + 0,0,0,4203,4205,1,0,0,0,4204,4188,1,0,0,0,4204,4190,1,0,0,0,4205, + 4217,1,0,0,0,4206,4208,5,255,0,0,4207,4209,5,257,0,0,4208,4207,1, + 0,0,0,4208,4209,1,0,0,0,4209,4210,1,0,0,0,4210,4211,5,882,0,0,4211, + 4212,5,337,0,0,4212,4213,5,866,0,0,4213,4214,3,288,144,0,4214,4215, + 5,867,0,0,4215,4217,1,0,0,0,4216,4187,1,0,0,0,4216,4206,1,0,0,0, + 4217,291,1,0,0,0,4218,4223,5,116,0,0,4219,4223,5,382,0,0,4220,4221, + 5,42,0,0,4221,4223,3,754,377,0,4222,4218,1,0,0,0,4222,4219,1,0,0, + 0,4222,4220,1,0,0,0,4223,4224,1,0,0,0,4224,4225,5,119,0,0,4225,4226, + 5,55,0,0,4226,293,1,0,0,0,4227,4232,5,116,0,0,4228,4232,5,382,0, + 0,4229,4230,5,42,0,0,4230,4232,3,754,377,0,4231,4227,1,0,0,0,4231, + 4228,1,0,0,0,4231,4229,1,0,0,0,4232,4233,1,0,0,0,4233,4234,5,119, + 0,0,4234,4235,5,382,0,0,4235,295,1,0,0,0,4236,4245,7,59,0,0,4237, + 4245,5,76,0,0,4238,4245,5,172,0,0,4239,4245,5,168,0,0,4240,4245, + 5,166,0,0,4241,4245,5,636,0,0,4242,4245,7,60,0,0,4243,4245,5,167, + 0,0,4244,4236,1,0,0,0,4244,4237,1,0,0,0,4244,4238,1,0,0,0,4244,4239, + 1,0,0,0,4244,4240,1,0,0,0,4244,4241,1,0,0,0,4244,4242,1,0,0,0,4244, + 4243,1,0,0,0,4245,297,1,0,0,0,4246,4249,5,850,0,0,4247,4249,3,300, + 150,0,4248,4246,1,0,0,0,4248,4247,1,0,0,0,4249,4254,1,0,0,0,4250, + 4251,5,868,0,0,4251,4253,3,300,150,0,4252,4250,1,0,0,0,4253,4256, + 1,0,0,0,4254,4252,1,0,0,0,4254,4255,1,0,0,0,4255,299,1,0,0,0,4256, + 4254,1,0,0,0,4257,4258,5,892,0,0,4258,4260,5,841,0,0,4259,4257,1, + 0,0,0,4259,4260,1,0,0,0,4260,4261,1,0,0,0,4261,4266,3,804,402,0, + 4262,4264,5,13,0,0,4263,4262,1,0,0,0,4263,4264,1,0,0,0,4264,4265, + 1,0,0,0,4265,4267,3,706,353,0,4266,4263,1,0,0,0,4266,4267,1,0,0, + 0,4267,4287,1,0,0,0,4268,4273,3,764,382,0,4269,4271,5,13,0,0,4270, + 4269,1,0,0,0,4270,4271,1,0,0,0,4271,4272,1,0,0,0,4272,4274,3,706, + 353,0,4273,4270,1,0,0,0,4273,4274,1,0,0,0,4274,4287,1,0,0,0,4275, + 4276,3,702,351,0,4276,4277,5,865,0,0,4277,4278,5,850,0,0,4278,4287, + 1,0,0,0,4279,4284,3,662,331,0,4280,4282,5,13,0,0,4281,4280,1,0,0, + 0,4281,4282,1,0,0,0,4282,4283,1,0,0,0,4283,4285,3,706,353,0,4284, + 4281,1,0,0,0,4284,4285,1,0,0,0,4285,4287,1,0,0,0,4286,4259,1,0,0, + 0,4286,4268,1,0,0,0,4286,4275,1,0,0,0,4286,4279,1,0,0,0,4287,301, + 1,0,0,0,4288,4289,5,88,0,0,4289,4294,3,236,118,0,4290,4291,5,868, + 0,0,4291,4293,3,236,118,0,4292,4290,1,0,0,0,4293,4296,1,0,0,0,4294, + 4292,1,0,0,0,4294,4295,1,0,0,0,4295,4325,1,0,0,0,4296,4294,1,0,0, + 0,4297,4298,5,88,0,0,4298,4299,5,372,0,0,4299,4325,5,882,0,0,4300, + 4301,5,88,0,0,4301,4302,5,128,0,0,4302,4306,5,882,0,0,4303,4304, + 5,26,0,0,4304,4305,5,155,0,0,4305,4307,3,688,344,0,4306,4303,1,0, + 0,0,4306,4307,1,0,0,0,4307,4314,1,0,0,0,4308,4310,7,47,0,0,4309, + 4311,3,304,152,0,4310,4309,1,0,0,0,4311,4312,1,0,0,0,4312,4310,1, + 0,0,0,4312,4313,1,0,0,0,4313,4315,1,0,0,0,4314,4308,1,0,0,0,4314, + 4315,1,0,0,0,4315,4322,1,0,0,0,4316,4318,5,102,0,0,4317,4319,3,306, + 153,0,4318,4317,1,0,0,0,4319,4320,1,0,0,0,4320,4318,1,0,0,0,4320, + 4321,1,0,0,0,4321,4323,1,0,0,0,4322,4316,1,0,0,0,4322,4323,1,0,0, + 0,4323,4325,1,0,0,0,4324,4288,1,0,0,0,4324,4297,1,0,0,0,4324,4300, + 1,0,0,0,4325,303,1,0,0,0,4326,4327,5,174,0,0,4327,4328,5,20,0,0, + 4328,4339,5,882,0,0,4329,4331,5,123,0,0,4330,4329,1,0,0,0,4330,4331, + 1,0,0,0,4331,4332,1,0,0,0,4332,4333,5,56,0,0,4333,4334,5,20,0,0, + 4334,4339,5,882,0,0,4335,4336,5,58,0,0,4336,4337,5,20,0,0,4337,4339, + 5,882,0,0,4338,4326,1,0,0,0,4338,4330,1,0,0,0,4338,4335,1,0,0,0, + 4339,305,1,0,0,0,4340,4341,5,171,0,0,4341,4342,5,20,0,0,4342,4347, + 5,882,0,0,4343,4344,5,174,0,0,4344,4345,5,20,0,0,4345,4347,5,882, + 0,0,4346,4340,1,0,0,0,4346,4343,1,0,0,0,4347,307,1,0,0,0,4348,4349, + 5,68,0,0,4349,4351,3,262,131,0,4350,4348,1,0,0,0,4350,4351,1,0,0, + 0,4351,4354,1,0,0,0,4352,4353,5,192,0,0,4353,4355,3,804,402,0,4354, + 4352,1,0,0,0,4354,4355,1,0,0,0,4355,309,1,0,0,0,4356,4357,5,74,0, + 0,4357,4358,5,20,0,0,4358,4363,3,316,158,0,4359,4360,5,868,0,0,4360, + 4362,3,316,158,0,4361,4359,1,0,0,0,4362,4365,1,0,0,0,4363,4361,1, + 0,0,0,4363,4364,1,0,0,0,4364,4368,1,0,0,0,4365,4363,1,0,0,0,4366, + 4367,5,194,0,0,4367,4369,5,584,0,0,4368,4366,1,0,0,0,4368,4369,1, + 0,0,0,4369,311,1,0,0,0,4370,4371,5,75,0,0,4371,4372,3,804,402,0, + 4372,313,1,0,0,0,4373,4374,5,689,0,0,4374,4375,3,782,391,0,4375, + 4376,5,13,0,0,4376,4377,5,866,0,0,4377,4378,3,780,390,0,4378,4388, + 5,867,0,0,4379,4380,5,868,0,0,4380,4381,3,782,391,0,4381,4382,5, + 13,0,0,4382,4383,5,866,0,0,4383,4384,3,780,390,0,4384,4385,5,867, + 0,0,4385,4387,1,0,0,0,4386,4379,1,0,0,0,4387,4390,1,0,0,0,4388,4386, + 1,0,0,0,4388,4389,1,0,0,0,4389,315,1,0,0,0,4390,4388,1,0,0,0,4391, + 4393,3,804,402,0,4392,4394,7,55,0,0,4393,4392,1,0,0,0,4393,4394, + 1,0,0,0,4394,317,1,0,0,0,4395,4406,5,100,0,0,4396,4397,3,320,160, + 0,4397,4398,5,868,0,0,4398,4400,1,0,0,0,4399,4396,1,0,0,0,4399,4400, + 1,0,0,0,4400,4401,1,0,0,0,4401,4407,3,320,160,0,4402,4403,3,320, + 160,0,4403,4404,5,509,0,0,4404,4405,3,320,160,0,4405,4407,1,0,0, + 0,4406,4399,1,0,0,0,4406,4402,1,0,0,0,4407,319,1,0,0,0,4408,4412, + 3,712,356,0,4409,4412,3,686,343,0,4410,4412,3,708,354,0,4411,4408, + 1,0,0,0,4411,4409,1,0,0,0,4411,4410,1,0,0,0,4412,321,1,0,0,0,4413, + 4414,5,640,0,0,4414,4423,5,664,0,0,4415,4420,3,344,172,0,4416,4417, + 5,868,0,0,4417,4419,3,344,172,0,4418,4416,1,0,0,0,4419,4422,1,0, + 0,0,4420,4418,1,0,0,0,4420,4421,1,0,0,0,4421,4424,1,0,0,0,4422,4420, + 1,0,0,0,4423,4415,1,0,0,0,4423,4424,1,0,0,0,4424,323,1,0,0,0,4425, + 4427,5,317,0,0,4426,4428,5,691,0,0,4427,4426,1,0,0,0,4427,4428,1, + 0,0,0,4428,325,1,0,0,0,4429,4431,5,341,0,0,4430,4432,5,691,0,0,4431, + 4430,1,0,0,0,4431,4432,1,0,0,0,4432,4438,1,0,0,0,4433,4435,5,11, + 0,0,4434,4436,5,502,0,0,4435,4434,1,0,0,0,4435,4436,1,0,0,0,4436, + 4437,1,0,0,0,4437,4439,5,326,0,0,4438,4433,1,0,0,0,4438,4439,1,0, + 0,0,4439,4444,1,0,0,0,4440,4442,5,502,0,0,4441,4440,1,0,0,0,4441, + 4442,1,0,0,0,4442,4443,1,0,0,0,4443,4445,5,140,0,0,4444,4441,1,0, + 0,0,4444,4445,1,0,0,0,4445,327,1,0,0,0,4446,4448,5,583,0,0,4447, + 4449,5,691,0,0,4448,4447,1,0,0,0,4448,4449,1,0,0,0,4449,4455,1,0, + 0,0,4450,4452,5,11,0,0,4451,4453,5,502,0,0,4452,4451,1,0,0,0,4452, + 4453,1,0,0,0,4453,4454,1,0,0,0,4454,4456,5,326,0,0,4455,4450,1,0, + 0,0,4455,4456,1,0,0,0,4456,4461,1,0,0,0,4457,4459,5,502,0,0,4458, + 4457,1,0,0,0,4458,4459,1,0,0,0,4459,4460,1,0,0,0,4460,4462,5,140, + 0,0,4461,4458,1,0,0,0,4461,4462,1,0,0,0,4462,329,1,0,0,0,4463,4464, + 5,589,0,0,4464,4465,3,706,353,0,4465,331,1,0,0,0,4466,4468,5,583, + 0,0,4467,4469,5,691,0,0,4468,4467,1,0,0,0,4468,4469,1,0,0,0,4469, + 4470,1,0,0,0,4470,4472,5,176,0,0,4471,4473,5,589,0,0,4472,4471,1, + 0,0,0,4472,4473,1,0,0,0,4473,4474,1,0,0,0,4474,4475,3,706,353,0, + 4475,333,1,0,0,0,4476,4477,5,140,0,0,4477,4478,5,589,0,0,4478,4479, + 3,706,353,0,4479,335,1,0,0,0,4480,4481,5,104,0,0,4481,4482,7,61, + 0,0,4482,4487,3,346,173,0,4483,4484,5,868,0,0,4484,4486,3,346,173, + 0,4485,4483,1,0,0,0,4486,4489,1,0,0,0,4487,4485,1,0,0,0,4487,4488, + 1,0,0,0,4488,337,1,0,0,0,4489,4487,1,0,0,0,4490,4491,5,183,0,0,4491, + 4492,5,752,0,0,4492,339,1,0,0,0,4493,4494,5,155,0,0,4494,4495,5, + 313,0,0,4495,4496,5,857,0,0,4496,4497,7,26,0,0,4497,341,1,0,0,0, + 4498,4500,5,155,0,0,4499,4501,7,62,0,0,4500,4499,1,0,0,0,4500,4501, + 1,0,0,0,4501,4502,1,0,0,0,4502,4503,5,664,0,0,4503,4508,3,350,175, + 0,4504,4505,5,868,0,0,4505,4507,3,350,175,0,4506,4504,1,0,0,0,4507, + 4510,1,0,0,0,4508,4506,1,0,0,0,4508,4509,1,0,0,0,4509,343,1,0,0, + 0,4510,4508,1,0,0,0,4511,4512,5,194,0,0,4512,4513,5,350,0,0,4513, + 4519,5,600,0,0,4514,4515,5,135,0,0,4515,4519,5,195,0,0,4516,4517, + 5,135,0,0,4517,4519,5,515,0,0,4518,4511,1,0,0,0,4518,4514,1,0,0, + 0,4518,4516,1,0,0,0,4519,345,1,0,0,0,4520,4525,3,652,326,0,4521, + 4523,5,13,0,0,4522,4521,1,0,0,0,4522,4523,1,0,0,0,4523,4524,1,0, + 0,0,4524,4526,3,706,353,0,4525,4522,1,0,0,0,4525,4526,1,0,0,0,4526, + 4527,1,0,0,0,4527,4528,3,348,174,0,4528,347,1,0,0,0,4529,4531,5, + 135,0,0,4530,4532,5,450,0,0,4531,4530,1,0,0,0,4531,4532,1,0,0,0, + 4532,4538,1,0,0,0,4533,4535,5,107,0,0,4534,4533,1,0,0,0,4534,4535, + 1,0,0,0,4535,4536,1,0,0,0,4536,4538,5,195,0,0,4537,4529,1,0,0,0, + 4537,4534,1,0,0,0,4538,349,1,0,0,0,4539,4540,5,440,0,0,4540,4541, + 5,448,0,0,4541,4547,3,352,176,0,4542,4543,5,135,0,0,4543,4547,5, + 195,0,0,4544,4545,5,135,0,0,4545,4547,5,515,0,0,4546,4539,1,0,0, + 0,4546,4542,1,0,0,0,4546,4544,1,0,0,0,4547,351,1,0,0,0,4548,4549, + 5,809,0,0,4549,4556,5,135,0,0,4550,4551,5,135,0,0,4551,4556,5,810, + 0,0,4552,4553,5,135,0,0,4553,4556,5,811,0,0,4554,4556,5,812,0,0, + 4555,4548,1,0,0,0,4555,4550,1,0,0,0,4555,4552,1,0,0,0,4555,4554, + 1,0,0,0,4556,353,1,0,0,0,4557,4558,5,25,0,0,4558,4559,5,453,0,0, + 4559,4560,5,176,0,0,4560,4565,3,370,185,0,4561,4562,5,868,0,0,4562, + 4564,3,370,185,0,4563,4561,1,0,0,0,4564,4567,1,0,0,0,4565,4563,1, + 0,0,0,4565,4566,1,0,0,0,4566,4569,1,0,0,0,4567,4565,1,0,0,0,4568, + 4570,3,390,195,0,4569,4568,1,0,0,0,4569,4570,1,0,0,0,4570,355,1, + 0,0,0,4571,4572,5,25,0,0,4572,4573,5,572,0,0,4573,4574,5,400,0,0, + 4574,4579,3,392,196,0,4575,4576,5,868,0,0,4576,4578,3,392,196,0, + 4577,4575,1,0,0,0,4578,4581,1,0,0,0,4579,4577,1,0,0,0,4579,4580, + 1,0,0,0,4580,4583,1,0,0,0,4581,4579,1,0,0,0,4582,4584,3,390,195, + 0,4583,4582,1,0,0,0,4583,4584,1,0,0,0,4584,357,1,0,0,0,4585,4586, + 5,25,0,0,4586,4587,5,572,0,0,4587,4588,5,605,0,0,4588,4589,5,176, + 0,0,4589,4594,3,380,190,0,4590,4591,5,868,0,0,4591,4593,3,380,190, + 0,4592,4590,1,0,0,0,4593,4596,1,0,0,0,4594,4592,1,0,0,0,4594,4595, + 1,0,0,0,4595,4598,1,0,0,0,4596,4594,1,0,0,0,4597,4599,3,390,195, + 0,4598,4597,1,0,0,0,4598,4599,1,0,0,0,4599,359,1,0,0,0,4600,4601, + 5,133,0,0,4601,4602,7,63,0,0,4602,4607,5,452,0,0,4603,4604,5,176, + 0,0,4604,4608,5,882,0,0,4605,4606,5,16,0,0,4606,4608,5,882,0,0,4607, + 4603,1,0,0,0,4607,4605,1,0,0,0,4608,361,1,0,0,0,4609,4610,5,640, + 0,0,4610,4619,7,64,0,0,4611,4616,3,396,198,0,4612,4613,5,868,0,0, + 4613,4615,3,396,198,0,4614,4612,1,0,0,0,4615,4618,1,0,0,0,4616,4614, + 1,0,0,0,4616,4617,1,0,0,0,4617,4620,1,0,0,0,4618,4616,1,0,0,0,4619, + 4611,1,0,0,0,4619,4620,1,0,0,0,4620,4623,1,0,0,0,4621,4622,5,676, + 0,0,4622,4624,3,398,199,0,4623,4621,1,0,0,0,4623,4624,1,0,0,0,4624, + 4628,1,0,0,0,4625,4627,3,400,200,0,4626,4625,1,0,0,0,4627,4630,1, + 0,0,0,4628,4626,1,0,0,0,4628,4629,1,0,0,0,4629,4632,1,0,0,0,4630, + 4628,1,0,0,0,4631,4633,3,390,195,0,4632,4631,1,0,0,0,4632,4633,1, + 0,0,0,4633,363,1,0,0,0,4634,4635,5,646,0,0,4635,4644,7,64,0,0,4636, + 4641,3,396,198,0,4637,4638,5,868,0,0,4638,4640,3,396,198,0,4639, + 4637,1,0,0,0,4640,4643,1,0,0,0,4641,4639,1,0,0,0,4641,4642,1,0,0, + 0,4642,4645,1,0,0,0,4643,4641,1,0,0,0,4644,4636,1,0,0,0,4644,4645, + 1,0,0,0,4645,4647,1,0,0,0,4646,4648,3,390,195,0,4647,4646,1,0,0, + 0,4647,4648,1,0,0,0,4648,365,1,0,0,0,4649,4650,5,640,0,0,4650,4654, + 5,415,0,0,4651,4652,5,678,0,0,4652,4653,5,857,0,0,4653,4655,5,882, + 0,0,4654,4651,1,0,0,0,4654,4655,1,0,0,0,4655,4660,1,0,0,0,4656,4657, + 5,868,0,0,4657,4658,5,529,0,0,4658,4659,5,857,0,0,4659,4661,5,882, + 0,0,4660,4656,1,0,0,0,4660,4661,1,0,0,0,4661,4666,1,0,0,0,4662,4663, + 5,868,0,0,4663,4664,5,363,0,0,4664,4665,5,857,0,0,4665,4667,5,882, + 0,0,4666,4662,1,0,0,0,4666,4667,1,0,0,0,4667,367,1,0,0,0,4668,4669, + 5,646,0,0,4669,4670,5,415,0,0,4670,369,1,0,0,0,4671,4672,3,372,186, + 0,4672,4673,5,857,0,0,4673,4674,5,882,0,0,4674,4699,1,0,0,0,4675, + 4676,3,374,187,0,4676,4677,5,857,0,0,4677,4678,3,712,356,0,4678, + 4699,1,0,0,0,4679,4680,3,376,188,0,4680,4681,5,857,0,0,4681,4682, + 7,26,0,0,4682,4699,1,0,0,0,4683,4699,3,378,189,0,4684,4685,5,424, + 0,0,4685,4686,5,857,0,0,4686,4695,5,866,0,0,4687,4692,3,706,353, + 0,4688,4689,5,868,0,0,4689,4691,3,706,353,0,4690,4688,1,0,0,0,4691, + 4694,1,0,0,0,4692,4690,1,0,0,0,4692,4693,1,0,0,0,4693,4696,1,0,0, + 0,4694,4692,1,0,0,0,4695,4687,1,0,0,0,4695,4696,1,0,0,0,4696,4697, + 1,0,0,0,4697,4699,5,867,0,0,4698,4671,1,0,0,0,4698,4675,1,0,0,0, + 4698,4679,1,0,0,0,4698,4683,1,0,0,0,4698,4684,1,0,0,0,4699,371,1, + 0,0,0,4700,4701,7,65,0,0,4701,373,1,0,0,0,4702,4703,7,66,0,0,4703, + 375,1,0,0,0,4704,4705,7,67,0,0,4705,377,1,0,0,0,4706,4707,5,543, + 0,0,4707,4708,5,857,0,0,4708,4720,7,68,0,0,4709,4710,5,574,0,0,4710, + 4711,5,857,0,0,4711,4720,7,69,0,0,4712,4713,5,310,0,0,4713,4717, + 5,857,0,0,4714,4718,5,507,0,0,4715,4718,5,450,0,0,4716,4718,3,402, + 201,0,4717,4714,1,0,0,0,4717,4715,1,0,0,0,4717,4716,1,0,0,0,4718, + 4720,1,0,0,0,4719,4706,1,0,0,0,4719,4709,1,0,0,0,4719,4712,1,0,0, + 0,4720,379,1,0,0,0,4721,4722,3,382,191,0,4722,4723,5,857,0,0,4723, + 4724,5,882,0,0,4724,4749,1,0,0,0,4725,4726,3,384,192,0,4726,4727, + 5,857,0,0,4727,4728,3,712,356,0,4728,4749,1,0,0,0,4729,4730,3,386, + 193,0,4730,4731,5,857,0,0,4731,4732,7,26,0,0,4732,4749,1,0,0,0,4733, + 4749,3,388,194,0,4734,4735,5,424,0,0,4735,4736,5,857,0,0,4736,4745, + 5,866,0,0,4737,4742,3,706,353,0,4738,4739,5,868,0,0,4739,4741,3, + 706,353,0,4740,4738,1,0,0,0,4741,4744,1,0,0,0,4742,4740,1,0,0,0, + 4742,4743,1,0,0,0,4743,4746,1,0,0,0,4744,4742,1,0,0,0,4745,4737, + 1,0,0,0,4745,4746,1,0,0,0,4746,4747,1,0,0,0,4747,4749,5,867,0,0, + 4748,4721,1,0,0,0,4748,4725,1,0,0,0,4748,4729,1,0,0,0,4748,4733, + 1,0,0,0,4748,4734,1,0,0,0,4749,381,1,0,0,0,4750,4751,7,70,0,0,4751, + 383,1,0,0,0,4752,4753,7,71,0,0,4753,385,1,0,0,0,4754,4755,7,72,0, + 0,4755,387,1,0,0,0,4756,4757,5,543,0,0,4757,4758,5,857,0,0,4758, + 4770,7,68,0,0,4759,4760,5,574,0,0,4760,4761,5,857,0,0,4761,4770, + 7,73,0,0,4762,4763,5,310,0,0,4763,4767,5,857,0,0,4764,4768,5,507, + 0,0,4765,4768,5,450,0,0,4766,4768,3,402,201,0,4767,4764,1,0,0,0, + 4767,4765,1,0,0,0,4767,4766,1,0,0,0,4768,4770,1,0,0,0,4769,4756, + 1,0,0,0,4769,4759,1,0,0,0,4769,4762,1,0,0,0,4770,389,1,0,0,0,4771, + 4772,5,65,0,0,4772,4773,5,328,0,0,4773,4774,5,882,0,0,4774,391,1, + 0,0,0,4775,4776,5,565,0,0,4776,4777,5,857,0,0,4777,4778,5,866,0, + 0,4778,4783,3,628,314,0,4779,4780,5,868,0,0,4780,4782,3,628,314, + 0,4781,4779,1,0,0,0,4782,4785,1,0,0,0,4783,4781,1,0,0,0,4783,4784, + 1,0,0,0,4784,4786,1,0,0,0,4785,4783,1,0,0,0,4786,4787,5,867,0,0, + 4787,4839,1,0,0,0,4788,4789,5,567,0,0,4789,4790,5,857,0,0,4790,4791, + 5,866,0,0,4791,4796,3,628,314,0,4792,4793,5,868,0,0,4793,4795,3, + 628,314,0,4794,4792,1,0,0,0,4795,4798,1,0,0,0,4796,4794,1,0,0,0, + 4796,4797,1,0,0,0,4797,4799,1,0,0,0,4798,4796,1,0,0,0,4799,4800, + 5,867,0,0,4800,4839,1,0,0,0,4801,4802,5,566,0,0,4802,4803,5,857, + 0,0,4803,4804,5,866,0,0,4804,4805,3,650,325,0,4805,4806,5,867,0, + 0,4806,4839,1,0,0,0,4807,4808,5,568,0,0,4808,4809,5,857,0,0,4809, + 4810,5,866,0,0,4810,4811,3,650,325,0,4811,4812,5,867,0,0,4812,4839, + 1,0,0,0,4813,4814,5,570,0,0,4814,4815,5,857,0,0,4815,4816,5,866, + 0,0,4816,4817,3,750,375,0,4817,4818,5,867,0,0,4818,4839,1,0,0,0, + 4819,4820,5,571,0,0,4820,4821,5,857,0,0,4821,4822,5,866,0,0,4822, + 4823,3,750,375,0,4823,4824,5,867,0,0,4824,4839,1,0,0,0,4825,4826, + 5,569,0,0,4826,4827,5,857,0,0,4827,4828,5,866,0,0,4828,4833,3,394, + 197,0,4829,4830,5,868,0,0,4830,4832,3,394,197,0,4831,4829,1,0,0, + 0,4832,4835,1,0,0,0,4833,4831,1,0,0,0,4833,4834,1,0,0,0,4834,4836, + 1,0,0,0,4835,4833,1,0,0,0,4836,4837,5,867,0,0,4837,4839,1,0,0,0, + 4838,4775,1,0,0,0,4838,4788,1,0,0,0,4838,4801,1,0,0,0,4838,4807, + 1,0,0,0,4838,4813,1,0,0,0,4838,4819,1,0,0,0,4838,4825,1,0,0,0,4839, + 393,1,0,0,0,4840,4841,5,866,0,0,4841,4842,3,652,326,0,4842,4843, + 5,868,0,0,4843,4844,3,652,326,0,4844,4845,5,867,0,0,4845,395,1,0, + 0,0,4846,4847,7,74,0,0,4847,397,1,0,0,0,4848,4849,7,75,0,0,4849, + 4850,5,857,0,0,4850,4874,3,402,201,0,4851,4852,5,460,0,0,4852,4853, + 5,857,0,0,4853,4854,5,882,0,0,4854,4855,5,868,0,0,4855,4856,5,461, + 0,0,4856,4857,5,857,0,0,4857,4874,3,712,356,0,4858,4859,5,611,0, + 0,4859,4860,5,857,0,0,4860,4861,5,882,0,0,4861,4862,5,868,0,0,4862, + 4863,5,612,0,0,4863,4864,5,857,0,0,4864,4874,3,712,356,0,4865,4866, + 5,557,0,0,4866,4867,5,857,0,0,4867,4868,5,882,0,0,4868,4869,5,868, + 0,0,4869,4870,5,558,0,0,4870,4871,5,857,0,0,4871,4874,3,712,356, + 0,4872,4874,5,634,0,0,4873,4848,1,0,0,0,4873,4851,1,0,0,0,4873,4858, + 1,0,0,0,4873,4865,1,0,0,0,4873,4872,1,0,0,0,4874,399,1,0,0,0,4875, + 4876,5,678,0,0,4876,4877,5,857,0,0,4877,4888,5,882,0,0,4878,4879, + 5,529,0,0,4879,4880,5,857,0,0,4880,4888,5,882,0,0,4881,4882,5,363, + 0,0,4882,4883,5,857,0,0,4883,4888,5,882,0,0,4884,4885,5,535,0,0, + 4885,4886,5,857,0,0,4886,4888,5,882,0,0,4887,4875,1,0,0,0,4887,4878, + 1,0,0,0,4887,4881,1,0,0,0,4887,4884,1,0,0,0,4888,401,1,0,0,0,4889, + 4894,3,696,348,0,4890,4891,5,868,0,0,4891,4893,3,696,348,0,4892, + 4890,1,0,0,0,4893,4896,1,0,0,0,4894,4892,1,0,0,0,4894,4895,1,0,0, + 0,4895,4899,1,0,0,0,4896,4894,1,0,0,0,4897,4899,5,882,0,0,4898,4889, + 1,0,0,0,4898,4897,1,0,0,0,4899,403,1,0,0,0,4900,4901,5,694,0,0,4901, + 4902,7,76,0,0,4902,4904,3,698,349,0,4903,4905,7,77,0,0,4904,4903, + 1,0,0,0,4904,4905,1,0,0,0,4905,405,1,0,0,0,4906,4907,5,694,0,0,4907, + 4908,5,378,0,0,4908,4914,3,698,349,0,4909,4912,5,654,0,0,4910,4911, + 5,65,0,0,4911,4913,5,489,0,0,4912,4910,1,0,0,0,4912,4913,1,0,0,0, + 4913,4915,1,0,0,0,4914,4909,1,0,0,0,4914,4915,1,0,0,0,4915,407,1, + 0,0,0,4916,4917,5,694,0,0,4917,4918,5,540,0,0,4918,4919,3,698,349, + 0,4919,409,1,0,0,0,4920,4921,5,694,0,0,4921,4922,5,341,0,0,4922, + 4925,3,698,349,0,4923,4924,5,513,0,0,4924,4926,5,533,0,0,4925,4923, + 1,0,0,0,4925,4926,1,0,0,0,4926,411,1,0,0,0,4927,4928,5,694,0,0,4928, + 4929,5,583,0,0,4929,4930,3,698,349,0,4930,413,1,0,0,0,4931,4932, + 5,694,0,0,4932,4935,5,551,0,0,4933,4934,5,33,0,0,4934,4936,3,698, + 349,0,4935,4933,1,0,0,0,4935,4936,1,0,0,0,4936,415,1,0,0,0,4937, + 4938,5,540,0,0,4938,4939,3,706,353,0,4939,4942,5,68,0,0,4940,4943, + 5,882,0,0,4941,4943,5,892,0,0,4942,4940,1,0,0,0,4942,4941,1,0,0, + 0,4943,417,1,0,0,0,4944,4945,5,717,0,0,4945,4948,3,706,353,0,4946, + 4947,5,188,0,0,4947,4949,3,752,376,0,4948,4946,1,0,0,0,4948,4949, + 1,0,0,0,4949,419,1,0,0,0,4950,4951,7,78,0,0,4951,4952,5,540,0,0, + 4952,4953,3,706,353,0,4953,421,1,0,0,0,4954,4957,3,424,212,0,4955, + 4957,3,4,2,0,4956,4954,1,0,0,0,4956,4955,1,0,0,0,4957,423,1,0,0, + 0,4958,4959,3,706,353,0,4959,4960,5,878,0,0,4960,4962,1,0,0,0,4961, + 4958,1,0,0,0,4961,4962,1,0,0,0,4962,4963,1,0,0,0,4963,4969,5,317, + 0,0,4964,4965,3,444,222,0,4965,4966,5,869,0,0,4966,4968,1,0,0,0, + 4967,4964,1,0,0,0,4968,4971,1,0,0,0,4969,4967,1,0,0,0,4969,4970, + 1,0,0,0,4970,4977,1,0,0,0,4971,4969,1,0,0,0,4972,4973,3,446,223, + 0,4973,4974,5,869,0,0,4974,4976,1,0,0,0,4975,4972,1,0,0,0,4976,4979, + 1,0,0,0,4977,4975,1,0,0,0,4977,4978,1,0,0,0,4978,4985,1,0,0,0,4979, + 4977,1,0,0,0,4980,4981,3,448,224,0,4981,4982,5,869,0,0,4982,4984, + 1,0,0,0,4983,4980,1,0,0,0,4984,4987,1,0,0,0,4985,4983,1,0,0,0,4985, + 4986,1,0,0,0,4986,4993,1,0,0,0,4987,4985,1,0,0,0,4988,4989,3,450, + 225,0,4989,4990,5,869,0,0,4990,4992,1,0,0,0,4991,4988,1,0,0,0,4992, + 4995,1,0,0,0,4993,4991,1,0,0,0,4993,4994,1,0,0,0,4994,4999,1,0,0, + 0,4995,4993,1,0,0,0,4996,4998,3,454,227,0,4997,4996,1,0,0,0,4998, + 5001,1,0,0,0,4999,4997,1,0,0,0,4999,5000,1,0,0,0,5000,5002,1,0,0, + 0,5001,4999,1,0,0,0,5002,5004,5,378,0,0,5003,5005,3,706,353,0,5004, + 5003,1,0,0,0,5004,5005,1,0,0,0,5005,425,1,0,0,0,5006,5009,5,23,0, + 0,5007,5010,3,706,353,0,5008,5010,3,804,402,0,5009,5007,1,0,0,0, + 5009,5008,1,0,0,0,5009,5010,1,0,0,0,5010,5012,1,0,0,0,5011,5013, + 3,456,228,0,5012,5011,1,0,0,0,5013,5014,1,0,0,0,5014,5012,1,0,0, + 0,5014,5015,1,0,0,0,5015,5022,1,0,0,0,5016,5018,5,53,0,0,5017,5019, + 3,454,227,0,5018,5017,1,0,0,0,5019,5020,1,0,0,0,5020,5018,1,0,0, + 0,5020,5021,1,0,0,0,5021,5023,1,0,0,0,5022,5016,1,0,0,0,5022,5023, + 1,0,0,0,5023,5024,1,0,0,0,5024,5025,5,378,0,0,5025,5026,5,23,0,0, + 5026,427,1,0,0,0,5027,5028,5,78,0,0,5028,5029,3,804,402,0,5029,5031, + 5,175,0,0,5030,5032,3,454,227,0,5031,5030,1,0,0,0,5032,5033,1,0, + 0,0,5033,5031,1,0,0,0,5033,5034,1,0,0,0,5034,5038,1,0,0,0,5035,5037, + 3,458,229,0,5036,5035,1,0,0,0,5037,5040,1,0,0,0,5038,5036,1,0,0, + 0,5038,5039,1,0,0,0,5039,5047,1,0,0,0,5040,5038,1,0,0,0,5041,5043, + 5,53,0,0,5042,5044,3,454,227,0,5043,5042,1,0,0,0,5044,5045,1,0,0, + 0,5045,5043,1,0,0,0,5045,5046,1,0,0,0,5046,5048,1,0,0,0,5047,5041, + 1,0,0,0,5047,5048,1,0,0,0,5048,5049,1,0,0,0,5049,5050,5,378,0,0, + 5050,5051,5,78,0,0,5051,429,1,0,0,0,5052,5053,5,90,0,0,5053,5054, + 3,706,353,0,5054,431,1,0,0,0,5055,5056,5,97,0,0,5056,5057,3,706, + 353,0,5057,433,1,0,0,0,5058,5059,3,706,353,0,5059,5060,5,878,0,0, + 5060,5062,1,0,0,0,5061,5058,1,0,0,0,5061,5062,1,0,0,0,5062,5063, + 1,0,0,0,5063,5065,5,106,0,0,5064,5066,3,454,227,0,5065,5064,1,0, + 0,0,5066,5067,1,0,0,0,5067,5065,1,0,0,0,5067,5068,1,0,0,0,5068,5069, + 1,0,0,0,5069,5070,5,378,0,0,5070,5072,5,106,0,0,5071,5073,3,706, + 353,0,5072,5071,1,0,0,0,5072,5073,1,0,0,0,5073,435,1,0,0,0,5074, + 5075,3,706,353,0,5075,5076,5,878,0,0,5076,5078,1,0,0,0,5077,5074, + 1,0,0,0,5077,5078,1,0,0,0,5078,5079,1,0,0,0,5079,5081,5,142,0,0, + 5080,5082,3,454,227,0,5081,5080,1,0,0,0,5082,5083,1,0,0,0,5083,5081, + 1,0,0,0,5083,5084,1,0,0,0,5084,5085,1,0,0,0,5085,5086,5,676,0,0, + 5086,5087,3,804,402,0,5087,5088,5,378,0,0,5088,5090,5,142,0,0,5089, + 5091,3,706,353,0,5090,5089,1,0,0,0,5090,5091,1,0,0,0,5091,437,1, + 0,0,0,5092,5093,5,148,0,0,5093,5094,3,804,402,0,5094,439,1,0,0,0, + 5095,5096,3,706,353,0,5096,5097,5,878,0,0,5097,5099,1,0,0,0,5098, + 5095,1,0,0,0,5098,5099,1,0,0,0,5099,5100,1,0,0,0,5100,5101,5,193, + 0,0,5101,5102,3,804,402,0,5102,5104,5,371,0,0,5103,5105,3,454,227, + 0,5104,5103,1,0,0,0,5105,5106,1,0,0,0,5106,5104,1,0,0,0,5106,5107, + 1,0,0,0,5107,5108,1,0,0,0,5108,5109,5,378,0,0,5109,5111,5,193,0, + 0,5110,5112,3,706,353,0,5111,5110,1,0,0,0,5111,5112,1,0,0,0,5112, + 441,1,0,0,0,5113,5114,5,334,0,0,5114,5129,3,706,353,0,5115,5120, + 5,64,0,0,5116,5118,5,501,0,0,5117,5116,1,0,0,0,5117,5118,1,0,0,0, + 5118,5119,1,0,0,0,5119,5121,5,68,0,0,5120,5117,1,0,0,0,5120,5121, + 1,0,0,0,5121,5122,1,0,0,0,5122,5123,3,706,353,0,5123,5124,5,88,0, + 0,5124,5125,3,704,352,0,5125,5129,1,0,0,0,5126,5127,5,516,0,0,5127, + 5129,3,706,353,0,5128,5113,1,0,0,0,5128,5115,1,0,0,0,5128,5126,1, + 0,0,0,5129,443,1,0,0,0,5130,5131,5,41,0,0,5131,5132,3,704,352,0, + 5132,5135,3,726,363,0,5133,5134,5,42,0,0,5134,5136,3,804,402,0,5135, + 5133,1,0,0,0,5135,5136,1,0,0,0,5136,445,1,0,0,0,5137,5138,5,41,0, + 0,5138,5139,3,706,353,0,5139,5140,5,30,0,0,5140,5147,5,65,0,0,5141, + 5148,3,712,356,0,5142,5144,5,164,0,0,5143,5145,5,682,0,0,5144,5143, + 1,0,0,0,5144,5145,1,0,0,0,5145,5146,1,0,0,0,5146,5148,5,882,0,0, + 5147,5141,1,0,0,0,5147,5142,1,0,0,0,5148,447,1,0,0,0,5149,5150,5, + 41,0,0,5150,5151,3,706,353,0,5151,5152,5,38,0,0,5152,5153,5,65,0, + 0,5153,5154,3,210,105,0,5154,449,1,0,0,0,5155,5156,5,41,0,0,5156, + 5157,7,79,0,0,5157,5158,5,417,0,0,5158,5159,5,65,0,0,5159,5164,3, + 452,226,0,5160,5161,5,868,0,0,5161,5163,3,452,226,0,5162,5160,1, + 0,0,0,5163,5166,1,0,0,0,5164,5162,1,0,0,0,5164,5165,1,0,0,0,5165, + 5167,1,0,0,0,5166,5164,1,0,0,0,5167,5168,3,422,211,0,5168,451,1, + 0,0,0,5169,5181,3,712,356,0,5170,5172,5,164,0,0,5171,5173,5,682, + 0,0,5172,5171,1,0,0,0,5172,5173,1,0,0,0,5173,5174,1,0,0,0,5174,5181, + 5,882,0,0,5175,5181,3,706,353,0,5176,5181,5,165,0,0,5177,5178,5, + 114,0,0,5178,5181,5,407,0,0,5179,5181,5,163,0,0,5180,5169,1,0,0, + 0,5180,5170,1,0,0,0,5180,5175,1,0,0,0,5180,5176,1,0,0,0,5180,5177, + 1,0,0,0,5180,5179,1,0,0,0,5181,453,1,0,0,0,5182,5185,3,18,9,0,5183, + 5185,3,4,2,0,5184,5182,1,0,0,0,5184,5183,1,0,0,0,5185,5186,1,0,0, + 0,5186,5187,5,869,0,0,5187,455,1,0,0,0,5188,5191,5,191,0,0,5189, + 5192,3,724,362,0,5190,5192,3,804,402,0,5191,5189,1,0,0,0,5191,5190, + 1,0,0,0,5192,5193,1,0,0,0,5193,5195,5,175,0,0,5194,5196,3,454,227, + 0,5195,5194,1,0,0,0,5196,5197,1,0,0,0,5197,5195,1,0,0,0,5197,5198, + 1,0,0,0,5198,457,1,0,0,0,5199,5200,5,54,0,0,5200,5201,3,804,402, + 0,5201,5203,5,175,0,0,5202,5204,3,454,227,0,5203,5202,1,0,0,0,5204, + 5205,1,0,0,0,5205,5203,1,0,0,0,5205,5206,1,0,0,0,5206,459,1,0,0, + 0,5207,5208,5,8,0,0,5208,5210,5,678,0,0,5209,5211,3,758,379,0,5210, + 5209,1,0,0,0,5210,5211,1,0,0,0,5211,5268,1,0,0,0,5212,5217,3,492, + 246,0,5213,5214,5,868,0,0,5214,5216,3,492,246,0,5215,5213,1,0,0, + 0,5216,5219,1,0,0,0,5217,5215,1,0,0,0,5217,5218,1,0,0,0,5218,5269, + 1,0,0,0,5219,5217,1,0,0,0,5220,5225,3,494,247,0,5221,5222,5,868, + 0,0,5222,5224,3,494,247,0,5223,5221,1,0,0,0,5224,5227,1,0,0,0,5225, + 5223,1,0,0,0,5225,5226,1,0,0,0,5226,5242,1,0,0,0,5227,5225,1,0,0, + 0,5228,5240,5,144,0,0,5229,5241,5,505,0,0,5230,5237,3,506,253,0, + 5231,5233,5,11,0,0,5232,5231,1,0,0,0,5232,5233,1,0,0,0,5233,5234, + 1,0,0,0,5234,5236,3,506,253,0,5235,5232,1,0,0,0,5236,5239,1,0,0, + 0,5237,5235,1,0,0,0,5237,5238,1,0,0,0,5238,5241,1,0,0,0,5239,5237, + 1,0,0,0,5240,5229,1,0,0,0,5240,5230,1,0,0,0,5241,5243,1,0,0,0,5242, + 5228,1,0,0,0,5242,5243,1,0,0,0,5243,5250,1,0,0,0,5244,5246,5,194, + 0,0,5245,5247,3,508,254,0,5246,5245,1,0,0,0,5247,5248,1,0,0,0,5248, + 5246,1,0,0,0,5248,5249,1,0,0,0,5249,5251,1,0,0,0,5250,5244,1,0,0, + 0,5250,5251,1,0,0,0,5251,5256,1,0,0,0,5252,5255,3,510,255,0,5253, + 5255,3,512,256,0,5254,5252,1,0,0,0,5254,5253,1,0,0,0,5255,5258,1, + 0,0,0,5256,5254,1,0,0,0,5256,5257,1,0,0,0,5257,5261,1,0,0,0,5258, + 5256,1,0,0,0,5259,5260,7,80,0,0,5260,5262,5,882,0,0,5261,5259,1, + 0,0,0,5261,5262,1,0,0,0,5262,5269,1,0,0,0,5263,5264,3,656,328,0, + 5264,5265,5,42,0,0,5265,5266,5,582,0,0,5266,5267,3,468,234,0,5267, + 5269,1,0,0,0,5268,5212,1,0,0,0,5268,5220,1,0,0,0,5268,5263,1,0,0, + 0,5269,461,1,0,0,0,5270,5271,5,34,0,0,5271,5273,5,678,0,0,5272,5274, + 3,760,380,0,5273,5272,1,0,0,0,5273,5274,1,0,0,0,5274,5275,1,0,0, + 0,5275,5277,3,684,342,0,5276,5278,3,496,248,0,5277,5276,1,0,0,0, + 5277,5278,1,0,0,0,5278,5286,1,0,0,0,5279,5280,5,868,0,0,5280,5282, + 3,684,342,0,5281,5283,3,496,248,0,5282,5281,1,0,0,0,5282,5283,1, + 0,0,0,5283,5285,1,0,0,0,5284,5279,1,0,0,0,5285,5288,1,0,0,0,5286, + 5284,1,0,0,0,5286,5287,1,0,0,0,5287,5292,1,0,0,0,5288,5286,1,0,0, + 0,5289,5290,5,42,0,0,5290,5291,5,582,0,0,5291,5293,3,468,234,0,5292, + 5289,1,0,0,0,5292,5293,1,0,0,0,5293,5308,1,0,0,0,5294,5306,5,144, + 0,0,5295,5307,5,505,0,0,5296,5303,3,506,253,0,5297,5299,5,11,0,0, + 5298,5297,1,0,0,0,5298,5299,1,0,0,0,5299,5300,1,0,0,0,5300,5302, + 3,506,253,0,5301,5298,1,0,0,0,5302,5305,1,0,0,0,5303,5301,1,0,0, + 0,5303,5304,1,0,0,0,5304,5307,1,0,0,0,5305,5303,1,0,0,0,5306,5295, + 1,0,0,0,5306,5296,1,0,0,0,5307,5309,1,0,0,0,5308,5294,1,0,0,0,5308, + 5309,1,0,0,0,5309,5316,1,0,0,0,5310,5312,5,194,0,0,5311,5313,3,508, + 254,0,5312,5311,1,0,0,0,5313,5314,1,0,0,0,5314,5312,1,0,0,0,5314, + 5315,1,0,0,0,5315,5317,1,0,0,0,5316,5310,1,0,0,0,5316,5317,1,0,0, + 0,5317,5322,1,0,0,0,5318,5321,3,510,255,0,5319,5321,3,512,256,0, + 5320,5318,1,0,0,0,5320,5319,1,0,0,0,5321,5324,1,0,0,0,5322,5320, + 1,0,0,0,5322,5323,1,0,0,0,5323,5327,1,0,0,0,5324,5322,1,0,0,0,5325, + 5326,7,80,0,0,5326,5328,5,882,0,0,5327,5325,1,0,0,0,5327,5328,1, + 0,0,0,5328,463,1,0,0,0,5329,5330,5,51,0,0,5330,5332,5,678,0,0,5331, + 5333,3,758,379,0,5332,5331,1,0,0,0,5332,5333,1,0,0,0,5333,5334,1, + 0,0,0,5334,5339,3,684,342,0,5335,5336,5,868,0,0,5336,5338,3,684, + 342,0,5337,5335,1,0,0,0,5338,5341,1,0,0,0,5339,5337,1,0,0,0,5339, + 5340,1,0,0,0,5340,465,1,0,0,0,5341,5339,1,0,0,0,5342,5343,5,73,0, + 0,5343,5348,3,520,260,0,5344,5345,5,868,0,0,5345,5347,3,520,260, + 0,5346,5344,1,0,0,0,5347,5350,1,0,0,0,5348,5346,1,0,0,0,5348,5349, + 1,0,0,0,5349,5351,1,0,0,0,5350,5348,1,0,0,0,5351,5353,5,119,0,0, + 5352,5354,3,488,244,0,5353,5352,1,0,0,0,5353,5354,1,0,0,0,5354,5355, + 1,0,0,0,5355,5356,3,524,262,0,5356,5366,5,176,0,0,5357,5362,3,500, + 250,0,5358,5359,5,868,0,0,5359,5361,3,500,250,0,5360,5358,1,0,0, + 0,5361,5364,1,0,0,0,5362,5360,1,0,0,0,5362,5363,1,0,0,0,5363,5367, + 1,0,0,0,5364,5362,1,0,0,0,5365,5367,3,654,327,0,5366,5357,1,0,0, + 0,5366,5365,1,0,0,0,5367,5382,1,0,0,0,5368,5380,5,144,0,0,5369,5381, + 5,505,0,0,5370,5377,3,506,253,0,5371,5373,5,11,0,0,5372,5371,1,0, + 0,0,5372,5373,1,0,0,0,5373,5374,1,0,0,0,5374,5376,3,506,253,0,5375, + 5372,1,0,0,0,5376,5379,1,0,0,0,5377,5375,1,0,0,0,5377,5378,1,0,0, + 0,5378,5381,1,0,0,0,5379,5377,1,0,0,0,5380,5369,1,0,0,0,5380,5370, + 1,0,0,0,5381,5383,1,0,0,0,5382,5368,1,0,0,0,5382,5383,1,0,0,0,5383, + 5393,1,0,0,0,5384,5390,5,194,0,0,5385,5386,5,73,0,0,5386,5389,5, + 121,0,0,5387,5389,3,508,254,0,5388,5385,1,0,0,0,5388,5387,1,0,0, + 0,5389,5392,1,0,0,0,5390,5388,1,0,0,0,5390,5391,1,0,0,0,5391,5394, + 1,0,0,0,5392,5390,1,0,0,0,5393,5384,1,0,0,0,5393,5394,1,0,0,0,5394, + 5402,1,0,0,0,5395,5396,5,13,0,0,5396,5400,3,684,342,0,5397,5398, + 5,194,0,0,5398,5399,5,582,0,0,5399,5401,3,468,234,0,5400,5397,1, + 0,0,0,5400,5401,1,0,0,0,5401,5403,1,0,0,0,5402,5395,1,0,0,0,5402, + 5403,1,0,0,0,5403,5432,1,0,0,0,5404,5407,5,73,0,0,5405,5406,5,547, + 0,0,5406,5408,5,119,0,0,5407,5405,1,0,0,0,5407,5408,1,0,0,0,5408, + 5409,1,0,0,0,5409,5414,3,656,328,0,5410,5411,5,868,0,0,5411,5413, + 3,656,328,0,5412,5410,1,0,0,0,5413,5416,1,0,0,0,5414,5412,1,0,0, + 0,5414,5415,1,0,0,0,5415,5417,1,0,0,0,5416,5414,1,0,0,0,5417,5418, + 5,176,0,0,5418,5423,3,656,328,0,5419,5420,5,868,0,0,5420,5422,3, + 656,328,0,5421,5419,1,0,0,0,5422,5425,1,0,0,0,5423,5421,1,0,0,0, + 5423,5424,1,0,0,0,5424,5429,1,0,0,0,5425,5423,1,0,0,0,5426,5427, + 5,194,0,0,5427,5428,5,704,0,0,5428,5430,5,121,0,0,5429,5426,1,0, + 0,0,5429,5430,1,0,0,0,5430,5432,1,0,0,0,5431,5342,1,0,0,0,5431,5404, + 1,0,0,0,5432,467,1,0,0,0,5433,5442,5,42,0,0,5434,5442,5,505,0,0, + 5435,5438,5,7,0,0,5436,5437,5,59,0,0,5437,5439,3,654,327,0,5438, + 5436,1,0,0,0,5438,5439,1,0,0,0,5439,5442,1,0,0,0,5440,5442,3,654, + 327,0,5441,5433,1,0,0,0,5441,5434,1,0,0,0,5441,5435,1,0,0,0,5441, + 5440,1,0,0,0,5442,469,1,0,0,0,5443,5444,5,73,0,0,5444,5445,5,547, + 0,0,5445,5446,5,119,0,0,5446,5447,3,684,342,0,5447,5448,5,176,0, + 0,5448,5453,3,684,342,0,5449,5450,5,868,0,0,5450,5452,3,684,342, + 0,5451,5449,1,0,0,0,5452,5455,1,0,0,0,5453,5451,1,0,0,0,5453,5454, + 1,0,0,0,5454,5459,1,0,0,0,5455,5453,1,0,0,0,5456,5457,5,194,0,0, + 5457,5458,5,73,0,0,5458,5460,5,121,0,0,5459,5456,1,0,0,0,5459,5460, + 1,0,0,0,5460,471,1,0,0,0,5461,5462,5,8,0,0,5462,5463,5,739,0,0,5463, + 5464,5,74,0,0,5464,5470,3,646,323,0,5465,5467,5,190,0,0,5466,5468, + 5,857,0,0,5467,5466,1,0,0,0,5467,5468,1,0,0,0,5468,5469,1,0,0,0, + 5469,5471,3,480,240,0,5470,5465,1,0,0,0,5470,5471,1,0,0,0,5471,5477, + 1,0,0,0,5472,5474,5,837,0,0,5473,5475,5,857,0,0,5474,5473,1,0,0, + 0,5474,5475,1,0,0,0,5475,5476,1,0,0,0,5476,5478,3,712,356,0,5477, + 5472,1,0,0,0,5477,5478,1,0,0,0,5478,5483,1,0,0,0,5479,5481,7,39, + 0,0,5480,5482,5,66,0,0,5481,5480,1,0,0,0,5481,5482,1,0,0,0,5482, + 5484,1,0,0,0,5483,5479,1,0,0,0,5483,5484,1,0,0,0,5484,473,1,0,0, + 0,5485,5486,5,34,0,0,5486,5487,5,739,0,0,5487,5488,5,74,0,0,5488, + 5489,3,644,322,0,5489,5490,5,839,0,0,5490,5491,5,857,0,0,5491,5497, + 7,81,0,0,5492,5494,5,190,0,0,5493,5495,5,857,0,0,5494,5493,1,0,0, + 0,5494,5495,1,0,0,0,5495,5496,1,0,0,0,5496,5498,3,480,240,0,5497, + 5492,1,0,0,0,5497,5498,1,0,0,0,5498,5504,1,0,0,0,5499,5501,5,837, + 0,0,5500,5502,5,857,0,0,5501,5500,1,0,0,0,5501,5502,1,0,0,0,5502, + 5503,1,0,0,0,5503,5505,3,712,356,0,5504,5499,1,0,0,0,5504,5505,1, + 0,0,0,5505,5507,1,0,0,0,5506,5508,7,39,0,0,5507,5506,1,0,0,0,5507, + 5508,1,0,0,0,5508,475,1,0,0,0,5509,5510,5,51,0,0,5510,5511,5,739, + 0,0,5511,5512,5,74,0,0,5512,5514,3,646,323,0,5513,5515,5,66,0,0, + 5514,5513,1,0,0,0,5514,5515,1,0,0,0,5515,477,1,0,0,0,5516,5517,5, + 155,0,0,5517,5518,5,739,0,0,5518,5519,5,74,0,0,5519,5529,3,646,323, + 0,5520,5521,5,65,0,0,5521,5526,3,712,356,0,5522,5523,5,868,0,0,5523, + 5525,3,712,356,0,5524,5522,1,0,0,0,5525,5528,1,0,0,0,5526,5524,1, + 0,0,0,5526,5527,1,0,0,0,5527,5530,1,0,0,0,5528,5526,1,0,0,0,5529, + 5520,1,0,0,0,5529,5530,1,0,0,0,5530,479,1,0,0,0,5531,5537,3,712, + 356,0,5532,5533,3,712,356,0,5533,5534,5,854,0,0,5534,5535,3,712, + 356,0,5535,5537,1,0,0,0,5536,5531,1,0,0,0,5536,5532,1,0,0,0,5537, + 5542,1,0,0,0,5538,5539,5,868,0,0,5539,5541,3,480,240,0,5540,5538, + 1,0,0,0,5541,5544,1,0,0,0,5542,5540,1,0,0,0,5542,5543,1,0,0,0,5543, + 481,1,0,0,0,5544,5542,1,0,0,0,5545,5546,5,141,0,0,5546,5547,5,678, + 0,0,5547,5552,3,526,263,0,5548,5549,5,868,0,0,5549,5551,3,526,263, + 0,5550,5548,1,0,0,0,5551,5554,1,0,0,0,5552,5550,1,0,0,0,5552,5553, + 1,0,0,0,5553,483,1,0,0,0,5554,5552,1,0,0,0,5555,5557,5,149,0,0,5556, + 5558,3,758,379,0,5557,5556,1,0,0,0,5557,5558,1,0,0,0,5558,5559,1, + 0,0,0,5559,5564,3,520,260,0,5560,5561,5,868,0,0,5561,5563,3,520, + 260,0,5562,5560,1,0,0,0,5563,5566,1,0,0,0,5564,5562,1,0,0,0,5564, + 5565,1,0,0,0,5565,5567,1,0,0,0,5566,5564,1,0,0,0,5567,5569,5,119, + 0,0,5568,5570,3,488,244,0,5569,5568,1,0,0,0,5569,5570,1,0,0,0,5570, + 5571,1,0,0,0,5571,5572,3,524,262,0,5572,5573,5,68,0,0,5573,5575, + 3,654,327,0,5574,5576,3,486,243,0,5575,5574,1,0,0,0,5575,5576,1, + 0,0,0,5576,5608,1,0,0,0,5577,5579,5,149,0,0,5578,5580,3,758,379, + 0,5579,5578,1,0,0,0,5579,5580,1,0,0,0,5580,5581,1,0,0,0,5581,5583, + 5,7,0,0,5582,5584,5,734,0,0,5583,5582,1,0,0,0,5583,5584,1,0,0,0, + 5584,5585,1,0,0,0,5585,5586,5,868,0,0,5586,5587,5,73,0,0,5587,5588, + 5,121,0,0,5588,5589,5,68,0,0,5589,5591,3,654,327,0,5590,5592,3,486, + 243,0,5591,5590,1,0,0,0,5591,5592,1,0,0,0,5592,5608,1,0,0,0,5593, + 5595,5,149,0,0,5594,5596,3,758,379,0,5595,5594,1,0,0,0,5595,5596, + 1,0,0,0,5596,5599,1,0,0,0,5597,5598,5,547,0,0,5598,5600,5,119,0, + 0,5599,5597,1,0,0,0,5599,5600,1,0,0,0,5600,5601,1,0,0,0,5601,5602, + 3,654,327,0,5602,5603,5,68,0,0,5603,5605,3,654,327,0,5604,5606,3, + 486,243,0,5605,5604,1,0,0,0,5605,5606,1,0,0,0,5606,5608,1,0,0,0, + 5607,5555,1,0,0,0,5607,5577,1,0,0,0,5607,5593,1,0,0,0,5608,485,1, + 0,0,0,5609,5610,5,79,0,0,5610,5611,5,674,0,0,5611,5612,5,678,0,0, + 5612,487,1,0,0,0,5613,5614,7,82,0,0,5614,489,1,0,0,0,5615,5616,5, + 155,0,0,5616,5619,5,529,0,0,5617,5618,5,65,0,0,5618,5620,3,684,342, + 0,5619,5617,1,0,0,0,5619,5620,1,0,0,0,5620,5621,1,0,0,0,5621,5624, + 5,857,0,0,5622,5625,3,798,399,0,5623,5625,5,882,0,0,5624,5622,1, + 0,0,0,5624,5623,1,0,0,0,5625,5648,1,0,0,0,5626,5627,5,155,0,0,5627, + 5630,5,529,0,0,5628,5629,5,65,0,0,5629,5631,3,684,342,0,5630,5628, + 1,0,0,0,5630,5631,1,0,0,0,5631,5636,1,0,0,0,5632,5633,5,176,0,0, + 5633,5637,5,829,0,0,5634,5635,5,857,0,0,5635,5637,5,882,0,0,5636, + 5632,1,0,0,0,5636,5634,1,0,0,0,5637,5640,1,0,0,0,5638,5639,5,143, + 0,0,5639,5641,5,882,0,0,5640,5638,1,0,0,0,5640,5641,1,0,0,0,5641, + 5645,1,0,0,0,5642,5643,5,147,0,0,5643,5644,5,36,0,0,5644,5646,5, + 529,0,0,5645,5642,1,0,0,0,5645,5646,1,0,0,0,5646,5648,1,0,0,0,5647, + 5615,1,0,0,0,5647,5626,1,0,0,0,5648,491,1,0,0,0,5649,5650,3,684, + 342,0,5650,5651,3,510,255,0,5651,493,1,0,0,0,5652,5678,3,684,342, + 0,5653,5654,5,423,0,0,5654,5655,5,20,0,0,5655,5656,5,882,0,0,5656, + 5679,3,502,251,0,5657,5658,5,423,0,0,5658,5659,5,20,0,0,5659,5660, + 5,829,0,0,5660,5661,5,529,0,0,5661,5679,3,502,251,0,5662,5663,5, + 423,0,0,5663,5664,5,194,0,0,5664,5679,3,504,252,0,5665,5666,5,369, + 0,0,5666,5667,5,511,0,0,5667,5679,5,529,0,0,5668,5669,7,83,0,0,5669, + 5671,3,518,259,0,5670,5672,3,514,257,0,5671,5670,1,0,0,0,5671,5672, + 1,0,0,0,5672,5674,1,0,0,0,5673,5668,1,0,0,0,5674,5675,1,0,0,0,5675, + 5673,1,0,0,0,5675,5676,1,0,0,0,5676,5679,1,0,0,0,5677,5679,3,516, + 258,0,5678,5653,1,0,0,0,5678,5657,1,0,0,0,5678,5662,1,0,0,0,5678, + 5665,1,0,0,0,5678,5673,1,0,0,0,5678,5677,1,0,0,0,5678,5679,1,0,0, + 0,5679,495,1,0,0,0,5680,5681,5,423,0,0,5681,5687,5,20,0,0,5682,5688, + 5,882,0,0,5683,5684,5,829,0,0,5684,5688,5,529,0,0,5685,5686,5,529, + 0,0,5686,5688,5,882,0,0,5687,5682,1,0,0,0,5687,5683,1,0,0,0,5687, + 5685,1,0,0,0,5688,5691,1,0,0,0,5689,5690,5,11,0,0,5690,5692,3,496, + 248,0,5691,5689,1,0,0,0,5691,5692,1,0,0,0,5692,5717,1,0,0,0,5693, + 5694,5,423,0,0,5694,5695,5,194,0,0,5695,5704,3,706,353,0,5696,5700, + 5,20,0,0,5697,5701,5,882,0,0,5698,5699,5,829,0,0,5699,5701,5,529, + 0,0,5700,5697,1,0,0,0,5700,5698,1,0,0,0,5701,5705,1,0,0,0,5702,5703, + 5,13,0,0,5703,5705,5,882,0,0,5704,5696,1,0,0,0,5704,5702,1,0,0,0, + 5704,5705,1,0,0,0,5705,5708,1,0,0,0,5706,5707,5,11,0,0,5707,5709, + 3,496,248,0,5708,5706,1,0,0,0,5708,5709,1,0,0,0,5709,5717,1,0,0, + 0,5710,5711,5,423,0,0,5711,5712,5,194,0,0,5712,5714,3,706,353,0, + 5713,5715,3,498,249,0,5714,5713,1,0,0,0,5714,5715,1,0,0,0,5715,5717, + 1,0,0,0,5716,5680,1,0,0,0,5716,5693,1,0,0,0,5716,5710,1,0,0,0,5717, + 497,1,0,0,0,5718,5719,5,427,0,0,5719,5720,5,708,0,0,5720,5721,5, + 423,0,0,5721,5725,5,20,0,0,5722,5723,5,829,0,0,5723,5726,5,529,0, + 0,5724,5726,5,882,0,0,5725,5722,1,0,0,0,5725,5724,1,0,0,0,5726,5736, + 1,0,0,0,5727,5728,5,427,0,0,5728,5729,5,708,0,0,5729,5730,5,423, + 0,0,5730,5731,5,194,0,0,5731,5732,3,706,353,0,5732,5733,5,13,0,0, + 5733,5734,5,882,0,0,5734,5736,1,0,0,0,5735,5718,1,0,0,0,5735,5727, + 1,0,0,0,5736,499,1,0,0,0,5737,5738,3,684,342,0,5738,5739,5,423,0, + 0,5739,5740,5,20,0,0,5740,5741,5,529,0,0,5741,5742,5,882,0,0,5742, + 5763,1,0,0,0,5743,5744,3,684,342,0,5744,5745,5,423,0,0,5745,5746, + 5,20,0,0,5746,5747,5,829,0,0,5747,5748,5,529,0,0,5748,5749,3,502, + 251,0,5749,5763,1,0,0,0,5750,5751,3,684,342,0,5751,5752,5,423,0, + 0,5752,5753,5,20,0,0,5753,5754,5,882,0,0,5754,5755,3,502,251,0,5755, + 5763,1,0,0,0,5756,5757,3,684,342,0,5757,5758,5,423,0,0,5758,5759, + 5,194,0,0,5759,5760,3,504,252,0,5760,5763,1,0,0,0,5761,5763,3,684, + 342,0,5762,5737,1,0,0,0,5762,5743,1,0,0,0,5762,5750,1,0,0,0,5762, + 5756,1,0,0,0,5762,5761,1,0,0,0,5763,501,1,0,0,0,5764,5765,5,143, + 0,0,5765,5767,5,882,0,0,5766,5764,1,0,0,0,5766,5767,1,0,0,0,5767, + 5771,1,0,0,0,5768,5769,5,147,0,0,5769,5770,5,36,0,0,5770,5772,5, + 529,0,0,5771,5768,1,0,0,0,5771,5772,1,0,0,0,5772,503,1,0,0,0,5773, + 5781,3,706,353,0,5774,5778,7,84,0,0,5775,5779,5,882,0,0,5776,5777, + 5,829,0,0,5777,5779,5,529,0,0,5778,5775,1,0,0,0,5778,5776,1,0,0, + 0,5779,5780,1,0,0,0,5780,5782,3,502,251,0,5781,5774,1,0,0,0,5781, + 5782,1,0,0,0,5782,5788,1,0,0,0,5783,5784,3,706,353,0,5784,5785,5, + 188,0,0,5785,5786,3,798,399,0,5786,5788,1,0,0,0,5787,5773,1,0,0, + 0,5787,5783,1,0,0,0,5788,505,1,0,0,0,5789,5798,5,169,0,0,5790,5798, + 5,693,0,0,5791,5792,5,331,0,0,5792,5798,5,882,0,0,5793,5794,5,441, + 0,0,5794,5798,5,882,0,0,5795,5796,5,651,0,0,5796,5798,5,882,0,0, + 5797,5789,1,0,0,0,5797,5790,1,0,0,0,5797,5791,1,0,0,0,5797,5793, + 1,0,0,0,5797,5795,1,0,0,0,5798,507,1,0,0,0,5799,5800,5,479,0,0,5800, + 5808,3,712,356,0,5801,5802,5,482,0,0,5802,5808,3,712,356,0,5803, + 5804,5,478,0,0,5804,5808,3,712,356,0,5805,5806,5,483,0,0,5806,5808, + 3,712,356,0,5807,5799,1,0,0,0,5807,5801,1,0,0,0,5807,5803,1,0,0, + 0,5807,5805,1,0,0,0,5808,509,1,0,0,0,5809,5810,5,529,0,0,5810,5817, + 5,390,0,0,5811,5818,5,42,0,0,5812,5818,5,500,0,0,5813,5814,5,87, + 0,0,5814,5815,3,712,356,0,5815,5816,5,698,0,0,5816,5818,1,0,0,0, + 5817,5811,1,0,0,0,5817,5812,1,0,0,0,5817,5813,1,0,0,0,5817,5818, + 1,0,0,0,5818,5848,1,0,0,0,5819,5820,5,529,0,0,5820,5823,5,420,0, + 0,5821,5824,5,42,0,0,5822,5824,3,712,356,0,5823,5821,1,0,0,0,5823, + 5822,1,0,0,0,5824,5848,1,0,0,0,5825,5826,5,529,0,0,5826,5827,5,581, + 0,0,5827,5832,5,87,0,0,5828,5833,5,42,0,0,5829,5830,3,712,356,0, + 5830,5831,5,698,0,0,5831,5833,1,0,0,0,5832,5828,1,0,0,0,5832,5829, + 1,0,0,0,5833,5848,1,0,0,0,5834,5835,5,529,0,0,5835,5836,5,144,0, + 0,5836,5838,5,36,0,0,5837,5839,7,85,0,0,5838,5837,1,0,0,0,5838,5839, + 1,0,0,0,5839,5848,1,0,0,0,5840,5841,5,395,0,0,5841,5848,3,712,356, + 0,5842,5845,5,530,0,0,5843,5846,3,712,356,0,5844,5846,5,669,0,0, + 5845,5843,1,0,0,0,5845,5844,1,0,0,0,5846,5848,1,0,0,0,5847,5809, + 1,0,0,0,5847,5819,1,0,0,0,5847,5825,1,0,0,0,5847,5834,1,0,0,0,5847, + 5840,1,0,0,0,5847,5842,1,0,0,0,5848,511,1,0,0,0,5849,5850,5,304, + 0,0,5850,5851,7,86,0,0,5851,513,1,0,0,0,5852,5855,5,423,0,0,5853, + 5854,5,194,0,0,5854,5856,3,706,353,0,5855,5853,1,0,0,0,5855,5856, + 1,0,0,0,5856,5865,1,0,0,0,5857,5861,5,20,0,0,5858,5862,5,882,0,0, + 5859,5860,5,829,0,0,5860,5862,5,529,0,0,5861,5858,1,0,0,0,5861,5859, + 1,0,0,0,5862,5866,1,0,0,0,5863,5864,5,13,0,0,5864,5866,5,882,0,0, + 5865,5857,1,0,0,0,5865,5863,1,0,0,0,5866,515,1,0,0,0,5867,5868,3, + 518,259,0,5868,5869,5,429,0,0,5869,5870,5,555,0,0,5870,5883,1,0, + 0,0,5871,5872,3,518,259,0,5872,5873,5,401,0,0,5873,5874,5,555,0, + 0,5874,5875,5,155,0,0,5875,5876,5,330,0,0,5876,5877,5,13,0,0,5877, + 5878,5,882,0,0,5878,5883,1,0,0,0,5879,5880,3,518,259,0,5880,5881, + 5,675,0,0,5881,5883,1,0,0,0,5882,5867,1,0,0,0,5882,5871,1,0,0,0, + 5882,5879,1,0,0,0,5883,517,1,0,0,0,5884,5885,7,87,0,0,5885,5886, + 5,394,0,0,5886,519,1,0,0,0,5887,5892,3,522,261,0,5888,5889,5,866, + 0,0,5889,5890,3,660,330,0,5890,5891,5,867,0,0,5891,5893,1,0,0,0, + 5892,5888,1,0,0,0,5892,5893,1,0,0,0,5893,521,1,0,0,0,5894,5896,5, + 7,0,0,5895,5897,5,734,0,0,5896,5895,1,0,0,0,5896,5897,1,0,0,0,5897, + 5988,1,0,0,0,5898,5900,5,8,0,0,5899,5901,5,743,0,0,5900,5899,1,0, + 0,0,5900,5901,1,0,0,0,5901,5988,1,0,0,0,5902,5910,5,34,0,0,5903, + 5904,5,660,0,0,5904,5911,5,752,0,0,5905,5911,5,743,0,0,5906,5911, + 5,684,0,0,5907,5911,5,678,0,0,5908,5911,5,658,0,0,5909,5911,5,582, + 0,0,5910,5903,1,0,0,0,5910,5905,1,0,0,0,5910,5906,1,0,0,0,5910,5907, + 1,0,0,0,5910,5908,1,0,0,0,5910,5909,1,0,0,0,5910,5911,1,0,0,0,5911, + 5988,1,0,0,0,5912,5988,5,44,0,0,5913,5915,5,51,0,0,5914,5916,5,582, + 0,0,5915,5914,1,0,0,0,5915,5916,1,0,0,0,5916,5988,1,0,0,0,5917,5988, + 5,385,0,0,5918,5988,5,717,0,0,5919,5988,5,718,0,0,5920,5921,5,73, + 0,0,5921,5988,5,121,0,0,5922,5988,5,82,0,0,5923,5988,5,86,0,0,5924, + 5925,5,104,0,0,5925,5988,5,752,0,0,5926,5988,5,735,0,0,5927,5988, + 5,547,0,0,5928,5988,5,138,0,0,5929,5988,5,736,0,0,5930,5931,5,572, + 0,0,5931,5988,7,88,0,0,5932,5988,5,154,0,0,5933,5934,5,157,0,0,5934, + 5988,7,89,0,0,5935,5988,5,749,0,0,5936,5988,5,750,0,0,5937,5988, + 5,178,0,0,5938,5988,5,185,0,0,5939,5988,5,186,0,0,5940,5988,5,705, + 0,0,5941,5988,5,706,0,0,5942,5988,5,707,0,0,5943,5988,5,709,0,0, + 5944,5988,5,710,0,0,5945,5988,5,711,0,0,5946,5988,5,712,0,0,5947, + 5988,5,714,0,0,5948,5988,5,715,0,0,5949,5988,5,716,0,0,5950,5988, + 5,719,0,0,5951,5988,5,720,0,0,5952,5988,5,721,0,0,5953,5988,5,722, + 0,0,5954,5988,5,723,0,0,5955,5988,5,724,0,0,5956,5988,5,725,0,0, + 5957,5988,5,726,0,0,5958,5988,5,727,0,0,5959,5988,5,728,0,0,5960, + 5988,5,731,0,0,5961,5988,5,732,0,0,5962,5988,5,733,0,0,5963,5988, + 5,737,0,0,5964,5988,5,738,0,0,5965,5988,5,740,0,0,5966,5988,5,741, + 0,0,5967,5988,5,742,0,0,5968,5988,5,745,0,0,5969,5988,5,746,0,0, + 5970,5988,5,747,0,0,5971,5988,5,160,0,0,5972,5988,5,748,0,0,5973, + 5988,5,836,0,0,5974,5988,5,751,0,0,5975,5988,5,753,0,0,5976,5988, + 5,838,0,0,5977,5988,5,754,0,0,5978,5988,5,755,0,0,5979,5980,5,103, + 0,0,5980,5981,5,68,0,0,5981,5988,5,744,0,0,5982,5983,5,154,0,0,5983, + 5984,5,88,0,0,5984,5988,5,744,0,0,5985,5986,5,729,0,0,5986,5988, + 5,730,0,0,5987,5894,1,0,0,0,5987,5898,1,0,0,0,5987,5902,1,0,0,0, + 5987,5912,1,0,0,0,5987,5913,1,0,0,0,5987,5917,1,0,0,0,5987,5918, + 1,0,0,0,5987,5919,1,0,0,0,5987,5920,1,0,0,0,5987,5922,1,0,0,0,5987, + 5923,1,0,0,0,5987,5924,1,0,0,0,5987,5926,1,0,0,0,5987,5927,1,0,0, + 0,5987,5928,1,0,0,0,5987,5929,1,0,0,0,5987,5930,1,0,0,0,5987,5932, + 1,0,0,0,5987,5933,1,0,0,0,5987,5935,1,0,0,0,5987,5936,1,0,0,0,5987, + 5937,1,0,0,0,5987,5938,1,0,0,0,5987,5939,1,0,0,0,5987,5940,1,0,0, + 0,5987,5941,1,0,0,0,5987,5942,1,0,0,0,5987,5943,1,0,0,0,5987,5944, + 1,0,0,0,5987,5945,1,0,0,0,5987,5946,1,0,0,0,5987,5947,1,0,0,0,5987, + 5948,1,0,0,0,5987,5949,1,0,0,0,5987,5950,1,0,0,0,5987,5951,1,0,0, + 0,5987,5952,1,0,0,0,5987,5953,1,0,0,0,5987,5954,1,0,0,0,5987,5955, + 1,0,0,0,5987,5956,1,0,0,0,5987,5957,1,0,0,0,5987,5958,1,0,0,0,5987, + 5959,1,0,0,0,5987,5960,1,0,0,0,5987,5961,1,0,0,0,5987,5962,1,0,0, + 0,5987,5963,1,0,0,0,5987,5964,1,0,0,0,5987,5965,1,0,0,0,5987,5966, + 1,0,0,0,5987,5967,1,0,0,0,5987,5968,1,0,0,0,5987,5969,1,0,0,0,5987, + 5970,1,0,0,0,5987,5971,1,0,0,0,5987,5972,1,0,0,0,5987,5973,1,0,0, + 0,5987,5974,1,0,0,0,5987,5975,1,0,0,0,5987,5976,1,0,0,0,5987,5977, + 1,0,0,0,5987,5978,1,0,0,0,5987,5979,1,0,0,0,5987,5982,1,0,0,0,5987, + 5985,1,0,0,0,5988,523,1,0,0,0,5989,6006,5,850,0,0,5990,5991,5,850, + 0,0,5991,5992,5,865,0,0,5992,6006,5,850,0,0,5993,5994,3,706,353, + 0,5994,5995,5,865,0,0,5995,5996,5,850,0,0,5996,6006,1,0,0,0,5997, + 5998,3,706,353,0,5998,5999,5,865,0,0,5999,6000,3,706,353,0,6000, + 6006,1,0,0,0,6001,6002,3,706,353,0,6002,6003,3,710,355,0,6003,6006, + 1,0,0,0,6004,6006,3,706,353,0,6005,5989,1,0,0,0,6005,5990,1,0,0, + 0,6005,5993,1,0,0,0,6005,5997,1,0,0,0,6005,6001,1,0,0,0,6005,6004, + 1,0,0,0,6006,525,1,0,0,0,6007,6008,3,684,342,0,6008,6009,5,176,0, + 0,6009,6010,3,684,342,0,6010,527,1,0,0,0,6011,6013,5,10,0,0,6012, + 6014,3,538,269,0,6013,6012,1,0,0,0,6013,6014,1,0,0,0,6014,6015,1, + 0,0,0,6015,6016,5,173,0,0,6016,6060,3,650,325,0,6017,6019,5,10,0, + 0,6018,6020,3,538,269,0,6019,6018,1,0,0,0,6019,6020,1,0,0,0,6020, + 6021,1,0,0,0,6021,6022,5,173,0,0,6022,6023,3,652,326,0,6023,6024, + 5,185,0,0,6024,6025,5,77,0,0,6025,6026,5,119,0,0,6026,6031,3,660, + 330,0,6027,6028,5,194,0,0,6028,6029,3,712,356,0,6029,6030,5,19,0, + 0,6030,6032,1,0,0,0,6031,6027,1,0,0,0,6031,6032,1,0,0,0,6032,6060, + 1,0,0,0,6033,6035,5,10,0,0,6034,6036,3,538,269,0,6035,6034,1,0,0, + 0,6035,6036,1,0,0,0,6036,6037,1,0,0,0,6037,6038,5,173,0,0,6038,6039, + 3,652,326,0,6039,6040,5,185,0,0,6040,6041,5,77,0,0,6041,6042,5,119, + 0,0,6042,6046,3,662,331,0,6043,6044,5,188,0,0,6044,6045,5,360,0, + 0,6045,6047,5,882,0,0,6046,6043,1,0,0,0,6046,6047,1,0,0,0,6047,6060, + 1,0,0,0,6048,6050,5,10,0,0,6049,6051,3,538,269,0,6050,6049,1,0,0, + 0,6050,6051,1,0,0,0,6051,6052,1,0,0,0,6052,6053,5,173,0,0,6053,6054, + 3,652,326,0,6054,6055,5,51,0,0,6055,6056,5,77,0,0,6056,6057,5,119, + 0,0,6057,6058,3,660,330,0,6058,6060,1,0,0,0,6059,6011,1,0,0,0,6059, + 6017,1,0,0,0,6059,6033,1,0,0,0,6059,6048,1,0,0,0,6060,529,1,0,0, + 0,6061,6062,5,27,0,0,6062,6063,5,173,0,0,6063,6067,3,650,325,0,6064, + 6066,3,540,270,0,6065,6064,1,0,0,0,6066,6069,1,0,0,0,6067,6065,1, + 0,0,0,6067,6068,1,0,0,0,6068,531,1,0,0,0,6069,6067,1,0,0,0,6070, + 6071,5,329,0,0,6071,6072,5,173,0,0,6072,6074,3,650,325,0,6073,6075, + 7,90,0,0,6074,6073,1,0,0,0,6074,6075,1,0,0,0,6075,533,1,0,0,0,6076, + 6078,5,120,0,0,6077,6079,3,538,269,0,6078,6077,1,0,0,0,6078,6079, + 1,0,0,0,6079,6080,1,0,0,0,6080,6081,7,61,0,0,6081,6082,3,650,325, + 0,6082,535,1,0,0,0,6083,6085,5,562,0,0,6084,6086,3,538,269,0,6085, + 6084,1,0,0,0,6085,6086,1,0,0,0,6086,6087,1,0,0,0,6087,6088,5,173, + 0,0,6088,6090,3,650,325,0,6089,6091,5,549,0,0,6090,6089,1,0,0,0, + 6090,6091,1,0,0,0,6091,6093,1,0,0,0,6092,6094,5,392,0,0,6093,6092, + 1,0,0,0,6093,6094,1,0,0,0,6094,6096,1,0,0,0,6095,6097,5,679,0,0, + 6096,6095,1,0,0,0,6096,6097,1,0,0,0,6097,537,1,0,0,0,6098,6099,7, + 91,0,0,6099,539,1,0,0,0,6100,6101,5,65,0,0,6101,6108,5,677,0,0,6102, + 6108,5,549,0,0,6103,6108,5,396,0,0,6104,6108,5,484,0,0,6105,6108, + 5,392,0,0,6106,6108,5,327,0,0,6107,6100,1,0,0,0,6107,6102,1,0,0, + 0,6107,6103,1,0,0,0,6107,6104,1,0,0,0,6107,6105,1,0,0,0,6107,6106, + 1,0,0,0,6108,541,1,0,0,0,6109,6110,5,432,0,0,6110,6111,5,344,0,0, + 6111,6116,3,706,353,0,6112,6113,5,868,0,0,6113,6115,3,706,353,0, + 6114,6112,1,0,0,0,6115,6118,1,0,0,0,6116,6114,1,0,0,0,6116,6117, + 1,0,0,0,6117,6128,1,0,0,0,6118,6116,1,0,0,0,6119,6120,5,155,0,0, + 6120,6125,3,544,272,0,6121,6122,5,868,0,0,6122,6124,3,544,272,0, + 6123,6121,1,0,0,0,6124,6127,1,0,0,0,6125,6123,1,0,0,0,6125,6126, + 1,0,0,0,6126,6129,1,0,0,0,6127,6125,1,0,0,0,6128,6119,1,0,0,0,6128, + 6129,1,0,0,0,6129,543,1,0,0,0,6130,6131,7,92,0,0,6131,6132,3,702, + 351,0,6132,6133,5,857,0,0,6133,6134,3,804,402,0,6134,545,1,0,0,0, + 6135,6136,5,673,0,0,6136,6137,5,344,0,0,6137,6142,3,706,353,0,6138, + 6139,5,868,0,0,6139,6141,3,706,353,0,6140,6138,1,0,0,0,6141,6144, + 1,0,0,0,6142,6140,1,0,0,0,6142,6143,1,0,0,0,6143,547,1,0,0,0,6144, + 6142,1,0,0,0,6145,6146,5,432,0,0,6146,6147,5,534,0,0,6147,6148,3, + 706,353,0,6148,6149,5,603,0,0,6149,6150,5,882,0,0,6150,549,1,0,0, + 0,6151,6152,5,673,0,0,6152,6153,5,534,0,0,6153,6154,3,706,353,0, + 6154,551,1,0,0,0,6155,6156,5,713,0,0,6156,6157,5,450,0,0,6157,6158, + 5,360,0,0,6158,6160,5,367,0,0,6159,6161,5,857,0,0,6160,6159,1,0, + 0,0,6160,6161,1,0,0,0,6161,6162,1,0,0,0,6162,6186,5,882,0,0,6163, + 6164,5,713,0,0,6164,6165,5,433,0,0,6165,6166,5,68,0,0,6166,6167, + 3,676,338,0,6167,6168,5,423,0,0,6168,6169,5,20,0,0,6169,6176,5,882, + 0,0,6170,6171,5,360,0,0,6171,6173,5,367,0,0,6172,6174,5,857,0,0, + 6173,6172,1,0,0,0,6173,6174,1,0,0,0,6174,6175,1,0,0,0,6175,6177, + 5,882,0,0,6176,6170,1,0,0,0,6176,6177,1,0,0,0,6177,6183,1,0,0,0, + 6178,6180,5,144,0,0,6179,6181,5,502,0,0,6180,6179,1,0,0,0,6180,6181, + 1,0,0,0,6181,6182,1,0,0,0,6182,6184,5,169,0,0,6183,6178,1,0,0,0, + 6183,6184,1,0,0,0,6184,6186,1,0,0,0,6185,6155,1,0,0,0,6185,6163, + 1,0,0,0,6186,553,1,0,0,0,6187,6188,5,155,0,0,6188,6189,3,558,279, + 0,6189,6192,7,93,0,0,6190,6193,3,804,402,0,6191,6193,5,119,0,0,6192, + 6190,1,0,0,0,6192,6191,1,0,0,0,6193,6203,1,0,0,0,6194,6195,5,868, + 0,0,6195,6196,3,558,279,0,6196,6199,7,93,0,0,6197,6200,3,804,402, + 0,6198,6200,5,119,0,0,6199,6197,1,0,0,0,6199,6198,1,0,0,0,6200,6202, + 1,0,0,0,6201,6194,1,0,0,0,6202,6205,1,0,0,0,6203,6201,1,0,0,0,6203, + 6204,1,0,0,0,6204,6240,1,0,0,0,6205,6203,1,0,0,0,6206,6207,5,155, + 0,0,6207,6210,3,58,29,0,6208,6211,3,688,344,0,6209,6211,5,42,0,0, + 6210,6208,1,0,0,0,6210,6209,1,0,0,0,6211,6240,1,0,0,0,6212,6213, + 5,155,0,0,6213,6220,5,497,0,0,6214,6217,3,688,344,0,6215,6216,5, + 28,0,0,6216,6218,3,690,345,0,6217,6215,1,0,0,0,6217,6218,1,0,0,0, + 6218,6221,1,0,0,0,6219,6221,5,42,0,0,6220,6214,1,0,0,0,6220,6219, + 1,0,0,0,6221,6240,1,0,0,0,6222,6240,3,490,245,0,6223,6240,3,342, + 171,0,6224,6240,3,340,170,0,6225,6226,5,155,0,0,6226,6227,3,702, + 351,0,6227,6228,7,93,0,0,6228,6236,3,804,402,0,6229,6230,5,868,0, + 0,6230,6231,3,702,351,0,6231,6232,7,93,0,0,6232,6233,3,804,402,0, + 6233,6235,1,0,0,0,6234,6229,1,0,0,0,6235,6238,1,0,0,0,6236,6234, + 1,0,0,0,6236,6237,1,0,0,0,6237,6240,1,0,0,0,6238,6236,1,0,0,0,6239, + 6187,1,0,0,0,6239,6206,1,0,0,0,6239,6212,1,0,0,0,6239,6222,1,0,0, + 0,6239,6223,1,0,0,0,6239,6224,1,0,0,0,6239,6225,1,0,0,0,6240,555, + 1,0,0,0,6241,6242,5,157,0,0,6242,6243,7,63,0,0,6243,6426,5,452,0, + 0,6244,6245,5,157,0,0,6245,6246,7,94,0,0,6246,6249,5,386,0,0,6247, + 6248,5,80,0,0,6248,6250,5,882,0,0,6249,6247,1,0,0,0,6249,6250,1, + 0,0,0,6250,6253,1,0,0,0,6251,6252,5,68,0,0,6252,6254,3,712,356,0, + 6253,6251,1,0,0,0,6253,6254,1,0,0,0,6254,6262,1,0,0,0,6255,6259, + 5,100,0,0,6256,6257,3,712,356,0,6257,6258,5,868,0,0,6258,6260,1, + 0,0,0,6259,6256,1,0,0,0,6259,6260,1,0,0,0,6260,6261,1,0,0,0,6261, + 6263,3,712,356,0,6262,6255,1,0,0,0,6262,6263,1,0,0,0,6263,6265,1, + 0,0,0,6264,6266,3,390,195,0,6265,6264,1,0,0,0,6265,6266,1,0,0,0, + 6266,6426,1,0,0,0,6267,6268,5,157,0,0,6268,6270,3,560,280,0,6269, + 6271,3,562,281,0,6270,6269,1,0,0,0,6270,6271,1,0,0,0,6271,6426,1, + 0,0,0,6272,6274,5,157,0,0,6273,6275,5,392,0,0,6274,6273,1,0,0,0, + 6274,6275,1,0,0,0,6275,6277,1,0,0,0,6276,6278,5,408,0,0,6277,6276, + 1,0,0,0,6277,6278,1,0,0,0,6278,6279,1,0,0,0,6279,6280,7,47,0,0,6280, + 6281,7,95,0,0,6281,6284,3,652,326,0,6282,6283,7,95,0,0,6283,6285, + 3,628,314,0,6284,6282,1,0,0,0,6284,6285,1,0,0,0,6285,6287,1,0,0, + 0,6286,6288,3,562,281,0,6287,6286,1,0,0,0,6287,6288,1,0,0,0,6288, + 6426,1,0,0,0,6289,6290,5,157,0,0,6290,6291,5,34,0,0,6291,6293,7, + 0,0,0,6292,6294,3,760,380,0,6293,6292,1,0,0,0,6293,6294,1,0,0,0, + 6294,6295,1,0,0,0,6295,6426,3,628,314,0,6296,6297,5,157,0,0,6297, + 6298,5,34,0,0,6298,6299,7,96,0,0,6299,6426,3,702,351,0,6300,6301, + 5,157,0,0,6301,6302,5,34,0,0,6302,6303,5,409,0,0,6303,6426,3,632, + 316,0,6304,6305,5,157,0,0,6305,6306,5,34,0,0,6306,6307,5,684,0,0, + 6307,6426,3,636,318,0,6308,6309,5,157,0,0,6309,6310,5,34,0,0,6310, + 6311,5,173,0,0,6311,6426,3,652,326,0,6312,6313,5,157,0,0,6313,6314, + 5,34,0,0,6314,6315,5,678,0,0,6315,6426,3,684,342,0,6316,6317,5,157, + 0,0,6317,6318,5,380,0,0,6318,6319,3,692,346,0,6319,6320,7,97,0,0, + 6320,6426,1,0,0,0,6321,6322,5,157,0,0,6322,6426,3,564,282,0,6323, + 6324,5,157,0,0,6324,6332,7,98,0,0,6325,6329,5,100,0,0,6326,6327, + 3,712,356,0,6327,6328,5,868,0,0,6328,6330,1,0,0,0,6329,6326,1,0, + 0,0,6329,6330,1,0,0,0,6330,6331,1,0,0,0,6331,6333,3,712,356,0,6332, + 6325,1,0,0,0,6332,6333,1,0,0,0,6333,6426,1,0,0,0,6334,6335,5,157, + 0,0,6335,6336,5,262,0,0,6336,6337,5,866,0,0,6337,6338,5,850,0,0, + 6338,6339,5,867,0,0,6339,6426,7,98,0,0,6340,6341,5,157,0,0,6341, + 6344,3,566,283,0,6342,6343,7,95,0,0,6343,6345,3,628,314,0,6344,6342, + 1,0,0,0,6344,6345,1,0,0,0,6345,6347,1,0,0,0,6346,6348,3,562,281, + 0,6347,6346,1,0,0,0,6347,6348,1,0,0,0,6348,6426,1,0,0,0,6349,6350, + 5,157,0,0,6350,6351,5,132,0,0,6351,6352,5,336,0,0,6352,6426,3,702, + 351,0,6353,6354,5,157,0,0,6354,6355,5,409,0,0,6355,6356,5,336,0, + 0,6356,6426,3,632,316,0,6357,6358,5,157,0,0,6358,6365,5,414,0,0, + 6359,6360,5,65,0,0,6360,6363,3,656,328,0,6361,6362,5,188,0,0,6362, + 6364,3,654,327,0,6363,6361,1,0,0,0,6363,6364,1,0,0,0,6364,6366,1, + 0,0,0,6365,6359,1,0,0,0,6365,6366,1,0,0,0,6366,6426,1,0,0,0,6367, + 6369,5,157,0,0,6368,6370,5,392,0,0,6369,6368,1,0,0,0,6369,6370,1, + 0,0,0,6370,6371,1,0,0,0,6371,6372,7,99,0,0,6372,6373,7,95,0,0,6373, + 6376,3,652,326,0,6374,6375,7,95,0,0,6375,6377,3,628,314,0,6376,6374, + 1,0,0,0,6376,6377,1,0,0,0,6377,6380,1,0,0,0,6378,6379,5,192,0,0, + 6379,6381,3,804,402,0,6380,6378,1,0,0,0,6380,6381,1,0,0,0,6381,6426, + 1,0,0,0,6382,6383,5,157,0,0,6383,6384,5,516,0,0,6384,6387,5,752, + 0,0,6385,6386,7,95,0,0,6386,6388,3,628,314,0,6387,6385,1,0,0,0,6387, + 6388,1,0,0,0,6388,6390,1,0,0,0,6389,6391,3,562,281,0,6390,6389,1, + 0,0,0,6390,6391,1,0,0,0,6391,6426,1,0,0,0,6392,6393,5,157,0,0,6393, + 6402,5,545,0,0,6394,6399,3,568,284,0,6395,6396,5,868,0,0,6396,6398, + 3,568,284,0,6397,6395,1,0,0,0,6398,6401,1,0,0,0,6399,6397,1,0,0, + 0,6399,6400,1,0,0,0,6400,6403,1,0,0,0,6401,6399,1,0,0,0,6402,6394, + 1,0,0,0,6402,6403,1,0,0,0,6403,6407,1,0,0,0,6404,6405,5,65,0,0,6405, + 6406,5,548,0,0,6406,6408,3,712,356,0,6407,6404,1,0,0,0,6407,6408, + 1,0,0,0,6408,6415,1,0,0,0,6409,6410,5,100,0,0,6410,6413,3,712,356, + 0,6411,6412,5,509,0,0,6412,6414,3,712,356,0,6413,6411,1,0,0,0,6413, + 6414,1,0,0,0,6414,6416,1,0,0,0,6415,6409,1,0,0,0,6415,6416,1,0,0, + 0,6416,6426,1,0,0,0,6417,6418,5,157,0,0,6418,6419,7,64,0,0,6419, + 6421,5,645,0,0,6420,6422,3,390,195,0,6421,6420,1,0,0,0,6421,6422, + 1,0,0,0,6422,6426,1,0,0,0,6423,6424,5,157,0,0,6424,6426,5,564,0, + 0,6425,6241,1,0,0,0,6425,6244,1,0,0,0,6425,6267,1,0,0,0,6425,6272, + 1,0,0,0,6425,6289,1,0,0,0,6425,6296,1,0,0,0,6425,6300,1,0,0,0,6425, + 6304,1,0,0,0,6425,6308,1,0,0,0,6425,6312,1,0,0,0,6425,6316,1,0,0, + 0,6425,6321,1,0,0,0,6425,6323,1,0,0,0,6425,6334,1,0,0,0,6425,6340, + 1,0,0,0,6425,6349,1,0,0,0,6425,6353,1,0,0,0,6425,6357,1,0,0,0,6425, + 6367,1,0,0,0,6425,6382,1,0,0,0,6425,6392,1,0,0,0,6425,6417,1,0,0, + 0,6425,6423,1,0,0,0,6426,557,1,0,0,0,6427,6438,5,892,0,0,6428,6438, + 5,893,0,0,6429,6430,5,870,0,0,6430,6432,5,870,0,0,6431,6429,1,0, + 0,0,6431,6432,1,0,0,0,6432,6433,1,0,0,0,6433,6435,7,100,0,0,6434, + 6431,1,0,0,0,6434,6435,1,0,0,0,6435,6436,1,0,0,0,6436,6438,3,706, + 353,0,6437,6427,1,0,0,0,6437,6428,1,0,0,0,6437,6434,1,0,0,0,6438, + 559,1,0,0,0,6439,6440,5,26,0,0,6440,6454,5,155,0,0,6441,6454,5,823, + 0,0,6442,6454,5,824,0,0,6443,6454,5,40,0,0,6444,6454,5,153,0,0,6445, + 6446,5,409,0,0,6446,6454,5,645,0,0,6447,6448,5,132,0,0,6448,6454, + 5,645,0,0,6449,6451,7,62,0,0,6450,6449,1,0,0,0,6450,6451,1,0,0,0, + 6451,6452,1,0,0,0,6452,6454,7,101,0,0,6453,6439,1,0,0,0,6453,6441, + 1,0,0,0,6453,6442,1,0,0,0,6453,6443,1,0,0,0,6453,6444,1,0,0,0,6453, + 6445,1,0,0,0,6453,6447,1,0,0,0,6453,6450,1,0,0,0,6454,561,1,0,0, + 0,6455,6456,5,99,0,0,6456,6460,5,882,0,0,6457,6458,5,192,0,0,6458, + 6460,3,804,402,0,6459,6455,1,0,0,0,6459,6457,1,0,0,0,6460,563,1, + 0,0,0,6461,6463,5,647,0,0,6462,6461,1,0,0,0,6462,6463,1,0,0,0,6463, + 6464,1,0,0,0,6464,6479,5,381,0,0,6465,6466,5,453,0,0,6466,6479,5, + 645,0,0,6467,6479,5,536,0,0,6468,6479,5,734,0,0,6469,6471,5,408, + 0,0,6470,6469,1,0,0,0,6470,6471,1,0,0,0,6471,6472,1,0,0,0,6472,6479, + 5,544,0,0,6473,6479,5,546,0,0,6474,6475,5,598,0,0,6475,6479,5,422, + 0,0,6476,6479,5,312,0,0,6477,6479,5,356,0,0,6478,6462,1,0,0,0,6478, + 6465,1,0,0,0,6478,6467,1,0,0,0,6478,6468,1,0,0,0,6478,6470,1,0,0, + 0,6478,6473,1,0,0,0,6478,6474,1,0,0,0,6478,6476,1,0,0,0,6478,6477, + 1,0,0,0,6479,565,1,0,0,0,6480,6492,5,386,0,0,6481,6482,5,173,0,0, + 6482,6492,5,645,0,0,6483,6485,5,392,0,0,6484,6483,1,0,0,0,6484,6485, + 1,0,0,0,6485,6487,1,0,0,0,6486,6488,5,408,0,0,6487,6486,1,0,0,0, + 6487,6488,1,0,0,0,6488,6489,1,0,0,0,6489,6492,5,752,0,0,6490,6492, + 5,667,0,0,6491,6480,1,0,0,0,6491,6481,1,0,0,0,6491,6484,1,0,0,0, + 6491,6490,1,0,0,0,6492,567,1,0,0,0,6493,6506,5,7,0,0,6494,6495,5, + 320,0,0,6495,6506,5,437,0,0,6496,6497,5,355,0,0,6497,6506,5,656, + 0,0,6498,6506,5,358,0,0,6499,6506,5,439,0,0,6500,6506,5,802,0,0, + 6501,6502,5,521,0,0,6502,6506,5,397,0,0,6503,6506,5,605,0,0,6504, + 6506,5,655,0,0,6505,6493,1,0,0,0,6505,6494,1,0,0,0,6505,6496,1,0, + 0,0,6505,6498,1,0,0,0,6505,6499,1,0,0,0,6505,6500,1,0,0,0,6505,6501, + 1,0,0,0,6505,6503,1,0,0,0,6505,6504,1,0,0,0,6506,569,1,0,0,0,6507, + 6508,5,318,0,0,6508,6509,5,882,0,0,6509,571,1,0,0,0,6510,6511,5, + 324,0,0,6511,6529,5,82,0,0,6512,6517,3,592,296,0,6513,6514,5,868, + 0,0,6514,6516,3,592,296,0,6515,6513,1,0,0,0,6516,6519,1,0,0,0,6517, + 6515,1,0,0,0,6517,6518,1,0,0,0,6518,6530,1,0,0,0,6519,6517,1,0,0, + 0,6520,6521,3,652,326,0,6521,6522,5,130,0,0,6522,6525,5,866,0,0, + 6523,6526,3,670,335,0,6524,6526,5,7,0,0,6525,6523,1,0,0,0,6525,6524, + 1,0,0,0,6526,6527,1,0,0,0,6527,6528,5,867,0,0,6528,6530,1,0,0,0, + 6529,6512,1,0,0,0,6529,6520,1,0,0,0,6530,6531,1,0,0,0,6531,6532, + 5,80,0,0,6532,6533,3,628,314,0,6533,573,1,0,0,0,6534,6536,5,404, + 0,0,6535,6537,3,538,269,0,6536,6535,1,0,0,0,6536,6537,1,0,0,0,6537, + 6538,1,0,0,0,6538,6543,3,594,297,0,6539,6540,5,868,0,0,6540,6542, + 3,594,297,0,6541,6539,1,0,0,0,6542,6545,1,0,0,0,6543,6541,1,0,0, + 0,6543,6544,1,0,0,0,6544,575,1,0,0,0,6545,6543,1,0,0,0,6546,6548, + 5,94,0,0,6547,6549,7,102,0,0,6548,6547,1,0,0,0,6548,6549,1,0,0,0, + 6549,6550,1,0,0,0,6550,6551,3,804,402,0,6551,577,1,0,0,0,6552,6553, + 5,103,0,0,6553,6554,5,82,0,0,6554,6555,5,88,0,0,6555,6556,5,324, + 0,0,6556,6561,3,598,299,0,6557,6558,5,868,0,0,6558,6560,3,598,299, + 0,6559,6557,1,0,0,0,6560,6563,1,0,0,0,6561,6559,1,0,0,0,6561,6562, + 1,0,0,0,6562,579,1,0,0,0,6563,6561,1,0,0,0,6564,6565,5,575,0,0,6565, + 6570,3,582,291,0,6566,6567,5,868,0,0,6567,6569,3,582,291,0,6568, + 6566,1,0,0,0,6569,6572,1,0,0,0,6570,6568,1,0,0,0,6570,6571,1,0,0, + 0,6571,581,1,0,0,0,6572,6570,1,0,0,0,6573,6579,5,453,0,0,6574,6579, + 5,563,0,0,6575,6576,5,548,0,0,6576,6579,5,324,0,0,6577,6579,5,598, + 0,0,6578,6573,1,0,0,0,6578,6574,1,0,0,0,6578,6575,1,0,0,0,6578,6577, + 1,0,0,0,6579,583,1,0,0,0,6580,6581,5,575,0,0,6581,6586,5,531,0,0, + 6582,6584,3,758,379,0,6583,6582,1,0,0,0,6583,6584,1,0,0,0,6584,6585, + 1,0,0,0,6585,6587,3,706,353,0,6586,6583,1,0,0,0,6586,6587,1,0,0, + 0,6587,585,1,0,0,0,6588,6589,5,575,0,0,6589,6591,7,64,0,0,6590,6592, + 5,7,0,0,6591,6590,1,0,0,0,6591,6592,1,0,0,0,6592,6594,1,0,0,0,6593, + 6595,3,390,195,0,6594,6593,1,0,0,0,6594,6595,1,0,0,0,6595,587,1, + 0,0,0,6596,6597,5,576,0,0,6597,589,1,0,0,0,6598,6599,5,749,0,0,6599, + 591,1,0,0,0,6600,6606,3,652,326,0,6601,6602,7,19,0,0,6602,6603,5, + 866,0,0,6603,6604,3,640,320,0,6604,6605,5,867,0,0,6605,6607,1,0, + 0,0,6606,6601,1,0,0,0,6606,6607,1,0,0,0,6607,593,1,0,0,0,6608,6627, + 5,366,0,0,6609,6627,5,422,0,0,6610,6612,7,103,0,0,6611,6610,1,0, + 0,0,6611,6612,1,0,0,0,6612,6613,1,0,0,0,6613,6627,5,452,0,0,6614, + 6627,5,517,0,0,6615,6627,5,734,0,0,6616,6617,5,548,0,0,6617,6627, + 5,324,0,0,6618,6627,5,645,0,0,6619,6627,5,680,0,0,6620,6624,5,752, + 0,0,6621,6622,5,194,0,0,6622,6623,5,135,0,0,6623,6625,5,104,0,0, + 6624,6621,1,0,0,0,6624,6625,1,0,0,0,6625,6627,1,0,0,0,6626,6608, + 1,0,0,0,6626,6609,1,0,0,0,6626,6611,1,0,0,0,6626,6614,1,0,0,0,6626, + 6615,1,0,0,0,6626,6616,1,0,0,0,6626,6618,1,0,0,0,6626,6619,1,0,0, + 0,6626,6620,1,0,0,0,6627,6641,1,0,0,0,6628,6629,5,556,0,0,6629,6631, + 5,452,0,0,6630,6632,3,390,195,0,6631,6630,1,0,0,0,6631,6632,1,0, + 0,0,6632,6641,1,0,0,0,6633,6635,7,61,0,0,6634,6636,3,650,325,0,6635, + 6634,1,0,0,0,6635,6636,1,0,0,0,6636,6638,1,0,0,0,6637,6639,3,596, + 298,0,6638,6637,1,0,0,0,6638,6639,1,0,0,0,6639,6641,1,0,0,0,6640, + 6626,1,0,0,0,6640,6628,1,0,0,0,6640,6633,1,0,0,0,6641,595,1,0,0, + 0,6642,6643,5,194,0,0,6643,6644,5,135,0,0,6644,6648,5,104,0,0,6645, + 6646,5,65,0,0,6646,6648,5,391,0,0,6647,6642,1,0,0,0,6647,6645,1, + 0,0,0,6648,597,1,0,0,0,6649,6657,3,652,326,0,6650,6651,5,130,0,0, + 6651,6654,5,866,0,0,6652,6655,3,670,335,0,6653,6655,5,7,0,0,6654, + 6652,1,0,0,0,6654,6653,1,0,0,0,6655,6656,1,0,0,0,6656,6658,5,867, + 0,0,6657,6650,1,0,0,0,6657,6658,1,0,0,0,6658,6666,1,0,0,0,6659,6661, + 7,19,0,0,6660,6659,1,0,0,0,6660,6661,1,0,0,0,6661,6662,1,0,0,0,6662, + 6663,5,866,0,0,6663,6664,3,640,320,0,6664,6665,5,867,0,0,6665,6667, + 1,0,0,0,6666,6660,1,0,0,0,6666,6667,1,0,0,0,6667,6670,1,0,0,0,6668, + 6669,5,79,0,0,6669,6671,5,446,0,0,6670,6668,1,0,0,0,6670,6671,1, + 0,0,0,6671,599,1,0,0,0,6672,6673,7,104,0,0,6673,6676,3,652,326,0, + 6674,6677,3,662,331,0,6675,6677,5,882,0,0,6676,6674,1,0,0,0,6676, + 6675,1,0,0,0,6676,6677,1,0,0,0,6677,601,1,0,0,0,6678,6684,7,104, + 0,0,6679,6685,5,392,0,0,6680,6685,5,528,0,0,6681,6682,5,826,0,0, + 6682,6683,5,857,0,0,6683,6685,7,105,0,0,6684,6679,1,0,0,0,6684,6680, + 1,0,0,0,6684,6681,1,0,0,0,6684,6685,1,0,0,0,6685,6686,1,0,0,0,6686, + 6687,3,624,312,0,6687,603,1,0,0,0,6688,6689,7,104,0,0,6689,6693, + 5,10,0,0,6690,6691,5,826,0,0,6691,6692,5,857,0,0,6692,6694,5,666, + 0,0,6693,6690,1,0,0,0,6693,6694,1,0,0,0,6694,6695,1,0,0,0,6695,6696, + 3,210,105,0,6696,605,1,0,0,0,6697,6698,5,419,0,0,6698,6699,5,882, + 0,0,6699,607,1,0,0,0,6700,6701,5,187,0,0,6701,6702,3,628,314,0,6702, + 609,1,0,0,0,6703,6711,5,158,0,0,6704,6706,5,164,0,0,6705,6707,5, + 682,0,0,6706,6705,1,0,0,0,6706,6707,1,0,0,0,6707,6708,1,0,0,0,6708, + 6712,3,716,358,0,6709,6712,5,889,0,0,6710,6712,5,890,0,0,6711,6704, + 1,0,0,0,6711,6709,1,0,0,0,6711,6710,1,0,0,0,6712,6722,1,0,0,0,6713, + 6714,5,155,0,0,6714,6719,3,614,307,0,6715,6716,5,868,0,0,6716,6718, + 3,614,307,0,6717,6715,1,0,0,0,6718,6721,1,0,0,0,6719,6717,1,0,0, + 0,6719,6720,1,0,0,0,6720,6723,1,0,0,0,6721,6719,1,0,0,0,6722,6713, + 1,0,0,0,6722,6723,1,0,0,0,6723,611,1,0,0,0,6724,6732,5,145,0,0,6725, + 6727,5,164,0,0,6726,6728,5,682,0,0,6727,6726,1,0,0,0,6727,6728,1, + 0,0,0,6728,6729,1,0,0,0,6729,6733,3,716,358,0,6730,6733,5,889,0, + 0,6731,6733,5,890,0,0,6732,6725,1,0,0,0,6732,6730,1,0,0,0,6732,6731, + 1,0,0,0,6732,6733,1,0,0,0,6733,6743,1,0,0,0,6734,6735,5,155,0,0, + 6735,6740,3,614,307,0,6736,6737,5,868,0,0,6737,6739,3,614,307,0, + 6738,6736,1,0,0,0,6739,6742,1,0,0,0,6740,6738,1,0,0,0,6740,6741, + 1,0,0,0,6741,6744,1,0,0,0,6742,6740,1,0,0,0,6743,6734,1,0,0,0,6743, + 6744,1,0,0,0,6744,613,1,0,0,0,6745,6746,7,106,0,0,6746,6751,5,857, + 0,0,6747,6752,3,716,358,0,6748,6752,5,883,0,0,6749,6752,3,686,343, + 0,6750,6752,3,708,354,0,6751,6747,1,0,0,0,6751,6748,1,0,0,0,6751, + 6749,1,0,0,0,6751,6750,1,0,0,0,6752,615,1,0,0,0,6753,6755,5,194, + 0,0,6754,6756,5,552,0,0,6755,6754,1,0,0,0,6755,6756,1,0,0,0,6756, + 6757,1,0,0,0,6757,6762,3,52,26,0,6758,6759,5,868,0,0,6759,6761,3, + 52,26,0,6760,6758,1,0,0,0,6761,6764,1,0,0,0,6762,6760,1,0,0,0,6762, + 6763,1,0,0,0,6763,617,1,0,0,0,6764,6762,1,0,0,0,6765,6766,5,173, + 0,0,6766,6768,3,652,326,0,6767,6769,3,258,129,0,6768,6767,1,0,0, + 0,6768,6769,1,0,0,0,6769,6771,1,0,0,0,6770,6772,3,318,159,0,6771, + 6770,1,0,0,0,6771,6772,1,0,0,0,6772,619,1,0,0,0,6773,6775,5,72,0, + 0,6774,6776,7,107,0,0,6775,6774,1,0,0,0,6775,6776,1,0,0,0,6776,6777, + 1,0,0,0,6777,6809,5,48,0,0,6778,6779,3,558,279,0,6779,6780,5,857, + 0,0,6780,6788,7,108,0,0,6781,6782,5,868,0,0,6782,6783,3,558,279, + 0,6783,6784,5,857,0,0,6784,6785,7,108,0,0,6785,6787,1,0,0,0,6786, + 6781,1,0,0,0,6787,6790,1,0,0,0,6788,6786,1,0,0,0,6788,6789,1,0,0, + 0,6789,6810,1,0,0,0,6790,6788,1,0,0,0,6791,6794,5,30,0,0,6792,6795, + 3,712,356,0,6793,6795,3,558,279,0,6794,6792,1,0,0,0,6794,6793,1, + 0,0,0,6795,6796,1,0,0,0,6796,6797,3,558,279,0,6797,6798,5,857,0, + 0,6798,6806,3,622,311,0,6799,6800,5,868,0,0,6800,6801,3,558,279, + 0,6801,6802,5,857,0,0,6802,6803,3,622,311,0,6803,6805,1,0,0,0,6804, + 6799,1,0,0,0,6805,6808,1,0,0,0,6806,6804,1,0,0,0,6806,6807,1,0,0, + 0,6807,6810,1,0,0,0,6808,6806,1,0,0,0,6809,6778,1,0,0,0,6809,6791, + 1,0,0,0,6810,621,1,0,0,0,6811,6812,7,109,0,0,6812,623,1,0,0,0,6813, + 6819,3,210,105,0,6814,6819,3,186,93,0,6815,6819,3,192,96,0,6816, + 6819,3,208,104,0,6817,6819,3,220,110,0,6818,6813,1,0,0,0,6818,6814, + 1,0,0,0,6818,6815,1,0,0,0,6818,6816,1,0,0,0,6818,6817,1,0,0,0,6819, + 6824,1,0,0,0,6820,6821,5,65,0,0,6821,6822,5,349,0,0,6822,6824,3, + 706,353,0,6823,6818,1,0,0,0,6823,6820,1,0,0,0,6824,625,1,0,0,0,6825, + 6826,3,702,351,0,6826,627,1,0,0,0,6827,6828,3,702,351,0,6828,629, + 1,0,0,0,6829,6830,3,702,351,0,6830,631,1,0,0,0,6831,6832,3,702,351, + 0,6832,633,1,0,0,0,6833,6834,3,702,351,0,6834,635,1,0,0,0,6835,6836, + 3,702,351,0,6836,637,1,0,0,0,6837,6838,3,706,353,0,6838,639,1,0, + 0,0,6839,6844,3,642,321,0,6840,6841,5,868,0,0,6841,6843,3,642,321, + 0,6842,6840,1,0,0,0,6843,6846,1,0,0,0,6844,6842,1,0,0,0,6844,6845, + 1,0,0,0,6845,641,1,0,0,0,6846,6844,1,0,0,0,6847,6848,3,706,353,0, + 6848,643,1,0,0,0,6849,6850,3,706,353,0,6850,645,1,0,0,0,6851,6852, + 3,706,353,0,6852,647,1,0,0,0,6853,6854,3,702,351,0,6854,649,1,0, + 0,0,6855,6860,3,652,326,0,6856,6857,5,868,0,0,6857,6859,3,652,326, + 0,6858,6856,1,0,0,0,6859,6862,1,0,0,0,6860,6858,1,0,0,0,6860,6861, + 1,0,0,0,6861,651,1,0,0,0,6862,6860,1,0,0,0,6863,6864,3,702,351,0, + 6864,653,1,0,0,0,6865,6870,3,656,328,0,6866,6867,5,868,0,0,6867, + 6869,3,656,328,0,6868,6866,1,0,0,0,6869,6872,1,0,0,0,6870,6868,1, + 0,0,0,6870,6871,1,0,0,0,6871,655,1,0,0,0,6872,6870,1,0,0,0,6873, + 6876,3,684,342,0,6874,6876,3,706,353,0,6875,6873,1,0,0,0,6875,6874, + 1,0,0,0,6876,657,1,0,0,0,6877,6882,3,706,353,0,6878,6880,3,710,355, + 0,6879,6881,3,710,355,0,6880,6879,1,0,0,0,6880,6881,1,0,0,0,6881, + 6883,1,0,0,0,6882,6878,1,0,0,0,6882,6883,1,0,0,0,6883,6892,1,0,0, + 0,6884,6886,9,0,0,0,6885,6884,1,0,0,0,6885,6886,1,0,0,0,6886,6887, + 1,0,0,0,6887,6889,3,710,355,0,6888,6890,3,710,355,0,6889,6888,1, + 0,0,0,6889,6890,1,0,0,0,6890,6892,1,0,0,0,6891,6877,1,0,0,0,6891, + 6885,1,0,0,0,6892,659,1,0,0,0,6893,6898,3,662,331,0,6894,6895,5, + 868,0,0,6895,6897,3,662,331,0,6896,6894,1,0,0,0,6897,6900,1,0,0, + 0,6898,6896,1,0,0,0,6898,6899,1,0,0,0,6899,661,1,0,0,0,6900,6898, + 1,0,0,0,6901,6906,3,706,353,0,6902,6904,3,710,355,0,6903,6905,3, + 710,355,0,6904,6903,1,0,0,0,6904,6905,1,0,0,0,6905,6907,1,0,0,0, + 6906,6902,1,0,0,0,6906,6907,1,0,0,0,6907,6917,1,0,0,0,6908,6910, + 9,0,0,0,6909,6908,1,0,0,0,6909,6910,1,0,0,0,6910,6911,1,0,0,0,6911, + 6913,3,710,355,0,6912,6914,3,710,355,0,6913,6912,1,0,0,0,6913,6914, + 1,0,0,0,6914,6917,1,0,0,0,6915,6917,4,331,3,0,6916,6901,1,0,0,0, + 6916,6909,1,0,0,0,6916,6915,1,0,0,0,6917,663,1,0,0,0,6918,6919,3, + 706,353,0,6919,665,1,0,0,0,6920,6921,3,706,353,0,6921,667,1,0,0, + 0,6922,6923,3,706,353,0,6923,669,1,0,0,0,6924,6929,3,672,336,0,6925, + 6926,5,868,0,0,6926,6928,3,672,336,0,6927,6925,1,0,0,0,6928,6931, + 1,0,0,0,6929,6927,1,0,0,0,6929,6930,1,0,0,0,6930,671,1,0,0,0,6931, + 6929,1,0,0,0,6932,6933,3,706,353,0,6933,673,1,0,0,0,6934,6939,3, + 706,353,0,6935,6936,5,866,0,0,6936,6937,3,712,356,0,6937,6938,5, + 867,0,0,6938,6940,1,0,0,0,6939,6935,1,0,0,0,6939,6940,1,0,0,0,6940, + 6943,1,0,0,0,6941,6943,3,804,402,0,6942,6934,1,0,0,0,6942,6941,1, + 0,0,0,6943,6945,1,0,0,0,6944,6946,7,55,0,0,6945,6944,1,0,0,0,6945, + 6946,1,0,0,0,6946,675,1,0,0,0,6947,6948,3,678,339,0,6948,6949,5, + 878,0,0,6949,6950,3,712,356,0,6950,677,1,0,0,0,6951,6952,3,680,340, + 0,6952,6953,5,891,0,0,6953,679,1,0,0,0,6954,6959,5,882,0,0,6955, + 6959,5,889,0,0,6956,6959,5,704,0,0,6957,6959,3,834,417,0,6958,6954, + 1,0,0,0,6958,6955,1,0,0,0,6958,6956,1,0,0,0,6958,6957,1,0,0,0,6959, + 681,1,0,0,0,6960,6961,7,110,0,0,6961,683,1,0,0,0,6962,6964,3,680, + 340,0,6963,6965,3,682,341,0,6964,6963,1,0,0,0,6964,6965,1,0,0,0, + 6965,6968,1,0,0,0,6966,6968,3,60,30,0,6967,6962,1,0,0,0,6967,6966, + 1,0,0,0,6968,685,1,0,0,0,6969,6970,7,111,0,0,6970,687,1,0,0,0,6971, + 6976,5,228,0,0,6972,6976,3,824,412,0,6973,6976,5,882,0,0,6974,6976, + 5,879,0,0,6975,6971,1,0,0,0,6975,6972,1,0,0,0,6975,6973,1,0,0,0, + 6975,6974,1,0,0,0,6976,689,1,0,0,0,6977,6978,3,706,353,0,6978,691, + 1,0,0,0,6979,6983,3,694,347,0,6980,6983,5,889,0,0,6981,6983,5,882, + 0,0,6982,6979,1,0,0,0,6982,6980,1,0,0,0,6982,6981,1,0,0,0,6983,693, + 1,0,0,0,6984,6985,7,112,0,0,6985,695,1,0,0,0,6986,6987,3,712,356, + 0,6987,6988,5,854,0,0,6988,6989,3,712,356,0,6989,6990,5,854,0,0, + 6990,6991,3,712,356,0,6991,6992,5,854,0,0,6992,6993,3,712,356,0, + 6993,6994,5,854,0,0,6994,7000,3,712,356,0,6995,6996,5,878,0,0,6996, + 6997,3,712,356,0,6997,6998,5,854,0,0,6998,6999,3,712,356,0,6999, + 7001,1,0,0,0,7000,6995,1,0,0,0,7001,7002,1,0,0,0,7002,7000,1,0,0, + 0,7002,7003,1,0,0,0,7003,697,1,0,0,0,7004,7011,3,700,350,0,7005, + 7006,5,868,0,0,7006,7009,3,700,350,0,7007,7008,5,868,0,0,7008,7010, + 3,712,356,0,7009,7007,1,0,0,0,7009,7010,1,0,0,0,7010,7012,1,0,0, + 0,7011,7005,1,0,0,0,7011,7012,1,0,0,0,7012,699,1,0,0,0,7013,7021, + 5,882,0,0,7014,7021,5,887,0,0,7015,7017,5,884,0,0,7016,7015,1,0, + 0,0,7017,7018,1,0,0,0,7018,7016,1,0,0,0,7018,7019,1,0,0,0,7019,7021, + 1,0,0,0,7020,7013,1,0,0,0,7020,7014,1,0,0,0,7020,7016,1,0,0,0,7021, + 701,1,0,0,0,7022,7024,3,706,353,0,7023,7025,3,710,355,0,7024,7023, + 1,0,0,0,7024,7025,1,0,0,0,7025,703,1,0,0,0,7026,7031,3,706,353,0, + 7027,7028,5,868,0,0,7028,7030,3,706,353,0,7029,7027,1,0,0,0,7030, + 7033,1,0,0,0,7031,7029,1,0,0,0,7031,7032,1,0,0,0,7032,705,1,0,0, + 0,7033,7031,1,0,0,0,7034,7038,3,708,354,0,7035,7038,5,879,0,0,7036, + 7038,5,882,0,0,7037,7034,1,0,0,0,7037,7035,1,0,0,0,7037,7036,1,0, + 0,0,7038,707,1,0,0,0,7039,7049,5,889,0,0,7040,7049,3,824,412,0,7041, + 7049,3,826,413,0,7042,7049,3,694,347,0,7043,7049,3,828,414,0,7044, + 7049,3,830,415,0,7045,7049,3,832,416,0,7046,7049,3,834,417,0,7047, + 7049,3,796,398,0,7048,7039,1,0,0,0,7048,7040,1,0,0,0,7048,7041,1, + 0,0,0,7048,7042,1,0,0,0,7048,7043,1,0,0,0,7048,7044,1,0,0,0,7048, + 7045,1,0,0,0,7048,7046,1,0,0,0,7048,7047,1,0,0,0,7049,709,1,0,0, + 0,7050,7051,5,865,0,0,7051,7055,5,889,0,0,7052,7053,5,865,0,0,7053, + 7055,3,706,353,0,7054,7050,1,0,0,0,7054,7052,1,0,0,0,7055,711,1, + 0,0,0,7056,7057,7,113,0,0,7057,713,1,0,0,0,7058,7061,5,880,0,0,7059, + 7061,3,712,356,0,7060,7058,1,0,0,0,7060,7059,1,0,0,0,7061,715,1, + 0,0,0,7062,7064,5,888,0,0,7063,7062,1,0,0,0,7063,7064,1,0,0,0,7064, + 7065,1,0,0,0,7065,7068,5,882,0,0,7066,7068,5,881,0,0,7067,7063,1, + 0,0,0,7067,7066,1,0,0,0,7068,7070,1,0,0,0,7069,7071,5,882,0,0,7070, + 7069,1,0,0,0,7071,7072,1,0,0,0,7072,7070,1,0,0,0,7072,7073,1,0,0, + 0,7073,7086,1,0,0,0,7074,7076,5,888,0,0,7075,7074,1,0,0,0,7075,7076, + 1,0,0,0,7076,7077,1,0,0,0,7077,7080,5,882,0,0,7078,7080,5,881,0, + 0,7079,7075,1,0,0,0,7079,7078,1,0,0,0,7080,7083,1,0,0,0,7081,7082, + 5,28,0,0,7082,7084,3,690,345,0,7083,7081,1,0,0,0,7083,7084,1,0,0, + 0,7084,7086,1,0,0,0,7085,7067,1,0,0,0,7085,7079,1,0,0,0,7086,717, + 1,0,0,0,7087,7088,7,114,0,0,7088,719,1,0,0,0,7089,7091,5,888,0,0, + 7090,7089,1,0,0,0,7090,7091,1,0,0,0,7091,7092,1,0,0,0,7092,7093, + 5,884,0,0,7093,721,1,0,0,0,7094,7096,5,114,0,0,7095,7094,1,0,0,0, + 7095,7096,1,0,0,0,7096,7097,1,0,0,0,7097,7098,7,115,0,0,7098,723, + 1,0,0,0,7099,7112,3,716,358,0,7100,7112,3,712,356,0,7101,7102,5, + 854,0,0,7102,7112,3,712,356,0,7103,7112,3,720,360,0,7104,7112,3, + 718,359,0,7105,7112,5,885,0,0,7106,7112,5,887,0,0,7107,7109,5,114, + 0,0,7108,7107,1,0,0,0,7108,7109,1,0,0,0,7109,7110,1,0,0,0,7110,7112, + 7,115,0,0,7111,7099,1,0,0,0,7111,7100,1,0,0,0,7111,7101,1,0,0,0, + 7111,7103,1,0,0,0,7111,7104,1,0,0,0,7111,7105,1,0,0,0,7111,7106, + 1,0,0,0,7111,7108,1,0,0,0,7112,725,1,0,0,0,7113,7115,7,116,0,0,7114, + 7116,5,240,0,0,7115,7114,1,0,0,0,7115,7116,1,0,0,0,7116,7118,1,0, + 0,0,7117,7119,3,732,366,0,7118,7117,1,0,0,0,7118,7119,1,0,0,0,7119, + 7121,1,0,0,0,7120,7122,5,228,0,0,7121,7120,1,0,0,0,7121,7122,1,0, + 0,0,7122,7126,1,0,0,0,7123,7124,3,58,29,0,7124,7125,3,688,344,0, + 7125,7127,1,0,0,0,7126,7123,1,0,0,0,7126,7127,1,0,0,0,7127,7131, + 1,0,0,0,7128,7129,5,28,0,0,7129,7132,3,690,345,0,7130,7132,5,228, + 0,0,7131,7128,1,0,0,0,7131,7130,1,0,0,0,7131,7132,1,0,0,0,7132,7240, + 1,0,0,0,7133,7134,5,227,0,0,7134,7135,7,117,0,0,7135,7137,5,240, + 0,0,7136,7138,3,732,366,0,7137,7136,1,0,0,0,7137,7138,1,0,0,0,7138, + 7140,1,0,0,0,7139,7141,5,228,0,0,7140,7139,1,0,0,0,7140,7141,1,0, + 0,0,7141,7240,1,0,0,0,7142,7143,5,227,0,0,7143,7145,7,118,0,0,7144, + 7146,3,732,366,0,7145,7144,1,0,0,0,7145,7146,1,0,0,0,7146,7148,1, + 0,0,0,7147,7149,5,228,0,0,7148,7147,1,0,0,0,7148,7149,1,0,0,0,7149, + 7240,1,0,0,0,7150,7151,5,498,0,0,7151,7153,5,225,0,0,7152,7154,3, + 732,366,0,7153,7152,1,0,0,0,7153,7154,1,0,0,0,7154,7156,1,0,0,0, + 7155,7157,5,228,0,0,7156,7155,1,0,0,0,7156,7157,1,0,0,0,7157,7240, + 1,0,0,0,7158,7160,7,119,0,0,7159,7161,3,732,366,0,7160,7159,1,0, + 0,0,7160,7161,1,0,0,0,7161,7165,1,0,0,0,7162,7164,7,120,0,0,7163, + 7162,1,0,0,0,7164,7167,1,0,0,0,7165,7163,1,0,0,0,7165,7166,1,0,0, + 0,7166,7240,1,0,0,0,7167,7165,1,0,0,0,7168,7170,5,210,0,0,7169,7171, + 3,734,367,0,7170,7169,1,0,0,0,7170,7171,1,0,0,0,7171,7175,1,0,0, + 0,7172,7174,7,120,0,0,7173,7172,1,0,0,0,7174,7177,1,0,0,0,7175,7173, + 1,0,0,0,7175,7176,1,0,0,0,7176,7240,1,0,0,0,7177,7175,1,0,0,0,7178, + 7180,5,211,0,0,7179,7181,5,212,0,0,7180,7179,1,0,0,0,7180,7181,1, + 0,0,0,7181,7183,1,0,0,0,7182,7184,3,734,367,0,7183,7182,1,0,0,0, + 7183,7184,1,0,0,0,7184,7188,1,0,0,0,7185,7187,7,120,0,0,7186,7185, + 1,0,0,0,7187,7190,1,0,0,0,7188,7186,1,0,0,0,7188,7189,1,0,0,0,7189, + 7240,1,0,0,0,7190,7188,1,0,0,0,7191,7193,7,121,0,0,7192,7194,3,736, + 368,0,7193,7192,1,0,0,0,7193,7194,1,0,0,0,7194,7198,1,0,0,0,7195, + 7197,7,120,0,0,7196,7195,1,0,0,0,7197,7200,1,0,0,0,7198,7196,1,0, + 0,0,7198,7199,1,0,0,0,7199,7240,1,0,0,0,7200,7198,1,0,0,0,7201,7240, + 7,122,0,0,7202,7204,7,123,0,0,7203,7205,3,732,366,0,7204,7203,1, + 0,0,0,7204,7205,1,0,0,0,7205,7240,1,0,0,0,7206,7207,7,124,0,0,7207, + 7209,3,728,364,0,7208,7210,5,228,0,0,7209,7208,1,0,0,0,7209,7210, + 1,0,0,0,7210,7214,1,0,0,0,7211,7212,3,58,29,0,7212,7213,3,688,344, + 0,7213,7215,1,0,0,0,7214,7211,1,0,0,0,7214,7215,1,0,0,0,7215,7240, + 1,0,0,0,7216,7219,7,125,0,0,7217,7218,5,834,0,0,7218,7220,3,712, + 356,0,7219,7217,1,0,0,0,7219,7220,1,0,0,0,7220,7240,1,0,0,0,7221, + 7223,5,233,0,0,7222,7224,5,225,0,0,7223,7222,1,0,0,0,7223,7224,1, + 0,0,0,7224,7226,1,0,0,0,7225,7227,5,228,0,0,7226,7225,1,0,0,0,7226, + 7227,1,0,0,0,7227,7231,1,0,0,0,7228,7229,3,58,29,0,7229,7230,3,688, + 344,0,7230,7232,1,0,0,0,7231,7228,1,0,0,0,7231,7232,1,0,0,0,7232, + 7235,1,0,0,0,7233,7234,5,28,0,0,7234,7236,3,690,345,0,7235,7233, + 1,0,0,0,7235,7236,1,0,0,0,7236,7240,1,0,0,0,7237,7238,5,233,0,0, + 7238,7240,5,229,0,0,7239,7113,1,0,0,0,7239,7133,1,0,0,0,7239,7142, + 1,0,0,0,7239,7150,1,0,0,0,7239,7158,1,0,0,0,7239,7168,1,0,0,0,7239, + 7178,1,0,0,0,7239,7191,1,0,0,0,7239,7201,1,0,0,0,7239,7202,1,0,0, + 0,7239,7206,1,0,0,0,7239,7216,1,0,0,0,7239,7221,1,0,0,0,7239,7237, + 1,0,0,0,7240,727,1,0,0,0,7241,7242,5,866,0,0,7242,7247,5,882,0,0, + 7243,7244,5,868,0,0,7244,7246,5,882,0,0,7245,7243,1,0,0,0,7246,7249, + 1,0,0,0,7247,7245,1,0,0,0,7247,7248,1,0,0,0,7248,7250,1,0,0,0,7249, + 7247,1,0,0,0,7250,7251,5,867,0,0,7251,729,1,0,0,0,7252,7254,7,126, + 0,0,7253,7255,3,732,366,0,7254,7253,1,0,0,0,7254,7255,1,0,0,0,7255, + 7275,1,0,0,0,7256,7258,5,224,0,0,7257,7259,3,732,366,0,7258,7257, + 1,0,0,0,7258,7259,1,0,0,0,7259,7263,1,0,0,0,7260,7261,3,58,29,0, + 7261,7262,3,688,344,0,7262,7264,1,0,0,0,7263,7260,1,0,0,0,7263,7264, + 1,0,0,0,7264,7275,1,0,0,0,7265,7275,7,127,0,0,7266,7268,7,128,0, + 0,7267,7269,3,736,368,0,7268,7267,1,0,0,0,7268,7269,1,0,0,0,7269, + 7275,1,0,0,0,7270,7272,7,129,0,0,7271,7273,7,130,0,0,7272,7271,1, + 0,0,0,7272,7273,1,0,0,0,7273,7275,1,0,0,0,7274,7252,1,0,0,0,7274, + 7256,1,0,0,0,7274,7265,1,0,0,0,7274,7266,1,0,0,0,7274,7270,1,0,0, + 0,7275,7277,1,0,0,0,7276,7278,5,12,0,0,7277,7276,1,0,0,0,7277,7278, + 1,0,0,0,7278,731,1,0,0,0,7279,7280,5,866,0,0,7280,7281,3,712,356, + 0,7281,7282,5,867,0,0,7282,733,1,0,0,0,7283,7284,5,866,0,0,7284, + 7285,3,712,356,0,7285,7286,5,868,0,0,7286,7287,3,712,356,0,7287, + 7288,5,867,0,0,7288,735,1,0,0,0,7289,7290,5,866,0,0,7290,7293,3, + 712,356,0,7291,7292,5,868,0,0,7292,7294,3,712,356,0,7293,7291,1, + 0,0,0,7293,7294,1,0,0,0,7294,7295,1,0,0,0,7295,7296,5,867,0,0,7296, + 737,1,0,0,0,7297,7298,5,866,0,0,7298,7303,3,674,337,0,7299,7300, + 5,868,0,0,7300,7302,3,674,337,0,7301,7299,1,0,0,0,7302,7305,1,0, + 0,0,7303,7301,1,0,0,0,7303,7304,1,0,0,0,7304,7306,1,0,0,0,7305,7303, + 1,0,0,0,7306,7307,5,867,0,0,7307,739,1,0,0,0,7308,7313,3,804,402, + 0,7309,7310,5,868,0,0,7310,7312,3,804,402,0,7311,7309,1,0,0,0,7312, + 7315,1,0,0,0,7313,7311,1,0,0,0,7313,7314,1,0,0,0,7314,741,1,0,0, + 0,7315,7313,1,0,0,0,7316,7317,7,131,0,0,7317,7322,3,744,372,0,7318, + 7319,5,868,0,0,7319,7321,3,744,372,0,7320,7318,1,0,0,0,7321,7324, + 1,0,0,0,7322,7320,1,0,0,0,7322,7323,1,0,0,0,7323,743,1,0,0,0,7324, + 7322,1,0,0,0,7325,7326,5,866,0,0,7326,7331,3,746,373,0,7327,7328, + 5,868,0,0,7328,7330,3,746,373,0,7329,7327,1,0,0,0,7330,7333,1,0, + 0,0,7331,7329,1,0,0,0,7331,7332,1,0,0,0,7332,7334,1,0,0,0,7333,7331, + 1,0,0,0,7334,7335,5,867,0,0,7335,745,1,0,0,0,7336,7339,3,804,402, + 0,7337,7339,5,42,0,0,7338,7336,1,0,0,0,7338,7337,1,0,0,0,7339,747, + 1,0,0,0,7340,7345,3,724,362,0,7341,7342,5,868,0,0,7342,7344,3,724, + 362,0,7343,7341,1,0,0,0,7344,7347,1,0,0,0,7345,7343,1,0,0,0,7345, + 7346,1,0,0,0,7346,749,1,0,0,0,7347,7345,1,0,0,0,7348,7353,5,882, + 0,0,7349,7350,5,868,0,0,7350,7352,5,882,0,0,7351,7349,1,0,0,0,7352, + 7355,1,0,0,0,7353,7351,1,0,0,0,7353,7354,1,0,0,0,7354,751,1,0,0, + 0,7355,7353,1,0,0,0,7356,7361,5,892,0,0,7357,7358,5,868,0,0,7358, + 7360,5,892,0,0,7359,7357,1,0,0,0,7360,7363,1,0,0,0,7361,7359,1,0, + 0,0,7361,7362,1,0,0,0,7362,753,1,0,0,0,7363,7361,1,0,0,0,7364,7391, + 5,116,0,0,7365,7366,5,24,0,0,7366,7367,5,866,0,0,7367,7368,3,804, + 402,0,7368,7369,5,13,0,0,7369,7370,3,730,365,0,7370,7371,5,867,0, + 0,7371,7391,1,0,0,0,7372,7374,3,810,405,0,7373,7372,1,0,0,0,7373, + 7374,1,0,0,0,7374,7375,1,0,0,0,7375,7391,3,724,362,0,7376,7380,3, + 756,378,0,7377,7378,5,119,0,0,7378,7379,5,185,0,0,7379,7381,3,756, + 378,0,7380,7377,1,0,0,0,7380,7381,1,0,0,0,7381,7391,1,0,0,0,7382, + 7383,5,866,0,0,7383,7384,3,804,402,0,7384,7385,5,867,0,0,7385,7391, + 1,0,0,0,7386,7387,5,866,0,0,7387,7388,3,702,351,0,7388,7389,5,867, + 0,0,7389,7391,1,0,0,0,7390,7364,1,0,0,0,7390,7365,1,0,0,0,7390,7373, + 1,0,0,0,7390,7376,1,0,0,0,7390,7382,1,0,0,0,7390,7386,1,0,0,0,7391, + 755,1,0,0,0,7392,7398,7,132,0,0,7393,7395,5,866,0,0,7394,7396,3, + 712,356,0,7395,7394,1,0,0,0,7395,7396,1,0,0,0,7396,7397,1,0,0,0, + 7397,7399,5,867,0,0,7398,7393,1,0,0,0,7398,7399,1,0,0,0,7399,7407, + 1,0,0,0,7400,7401,5,295,0,0,7401,7403,5,866,0,0,7402,7404,3,712, + 356,0,7403,7402,1,0,0,0,7403,7404,1,0,0,0,7404,7405,1,0,0,0,7405, + 7407,5,867,0,0,7406,7392,1,0,0,0,7406,7400,1,0,0,0,7407,757,1,0, + 0,0,7408,7409,5,78,0,0,7409,7410,5,60,0,0,7410,759,1,0,0,0,7411, + 7412,5,78,0,0,7412,7413,5,114,0,0,7413,7414,5,60,0,0,7414,761,1, + 0,0,0,7415,7416,5,124,0,0,7416,7417,5,143,0,0,7417,763,1,0,0,0,7418, + 7441,3,766,383,0,7419,7441,3,774,387,0,7420,7441,3,776,388,0,7421, + 7428,3,796,398,0,7422,7423,5,866,0,0,7423,7429,5,867,0,0,7424,7425, + 5,866,0,0,7425,7426,3,800,400,0,7426,7427,5,867,0,0,7427,7429,1, + 0,0,0,7428,7422,1,0,0,0,7428,7424,1,0,0,0,7429,7441,1,0,0,0,7430, + 7437,3,632,316,0,7431,7432,5,866,0,0,7432,7438,5,867,0,0,7433,7434, + 5,866,0,0,7434,7435,3,800,400,0,7435,7436,5,867,0,0,7436,7438,1, + 0,0,0,7437,7431,1,0,0,0,7437,7433,1,0,0,0,7438,7441,1,0,0,0,7439, + 7441,3,798,399,0,7440,7418,1,0,0,0,7440,7419,1,0,0,0,7440,7420,1, + 0,0,0,7440,7421,1,0,0,0,7440,7430,1,0,0,0,7440,7439,1,0,0,0,7441, + 765,1,0,0,0,7442,7445,7,133,0,0,7443,7444,5,866,0,0,7444,7446,5, + 867,0,0,7445,7443,1,0,0,0,7445,7446,1,0,0,0,7446,7622,1,0,0,0,7447, + 7622,3,60,30,0,7448,7449,5,33,0,0,7449,7450,5,866,0,0,7450,7451, + 3,804,402,0,7451,7452,5,868,0,0,7452,7453,3,730,365,0,7453,7454, + 5,867,0,0,7454,7622,1,0,0,0,7455,7456,5,33,0,0,7456,7457,5,866,0, + 0,7457,7458,3,804,402,0,7458,7459,5,188,0,0,7459,7460,3,688,344, + 0,7460,7461,5,867,0,0,7461,7622,1,0,0,0,7462,7463,5,24,0,0,7463, + 7464,5,866,0,0,7464,7465,3,804,402,0,7465,7466,5,13,0,0,7466,7467, + 3,730,365,0,7467,7468,5,867,0,0,7468,7622,1,0,0,0,7469,7470,5,189, + 0,0,7470,7471,5,866,0,0,7471,7472,3,662,331,0,7472,7473,5,867,0, + 0,7473,7622,1,0,0,0,7474,7476,5,23,0,0,7475,7477,3,768,384,0,7476, + 7475,1,0,0,0,7477,7478,1,0,0,0,7478,7476,1,0,0,0,7478,7479,1,0,0, + 0,7479,7482,1,0,0,0,7480,7481,5,53,0,0,7481,7483,3,802,401,0,7482, + 7480,1,0,0,0,7482,7483,1,0,0,0,7483,7484,1,0,0,0,7484,7485,5,378, + 0,0,7485,7622,1,0,0,0,7486,7487,5,23,0,0,7487,7489,3,804,402,0,7488, + 7490,3,768,384,0,7489,7488,1,0,0,0,7490,7491,1,0,0,0,7491,7489,1, + 0,0,0,7491,7492,1,0,0,0,7492,7495,1,0,0,0,7493,7494,5,53,0,0,7494, + 7496,3,802,401,0,7495,7493,1,0,0,0,7495,7496,1,0,0,0,7496,7497,1, + 0,0,0,7497,7498,5,378,0,0,7498,7622,1,0,0,0,7499,7500,5,224,0,0, + 7500,7501,5,866,0,0,7501,7504,3,800,400,0,7502,7503,5,188,0,0,7503, + 7505,3,688,344,0,7504,7502,1,0,0,0,7504,7505,1,0,0,0,7505,7506,1, + 0,0,0,7506,7507,5,867,0,0,7507,7622,1,0,0,0,7508,7509,5,296,0,0, + 7509,7512,5,866,0,0,7510,7513,3,716,358,0,7511,7513,3,804,402,0, + 7512,7510,1,0,0,0,7512,7511,1,0,0,0,7513,7514,1,0,0,0,7514,7517, + 5,80,0,0,7515,7518,3,716,358,0,7516,7518,3,804,402,0,7517,7515,1, + 0,0,0,7517,7516,1,0,0,0,7518,7519,1,0,0,0,7519,7520,5,867,0,0,7520, + 7622,1,0,0,0,7521,7522,7,134,0,0,7522,7525,5,866,0,0,7523,7526,3, + 716,358,0,7524,7526,3,804,402,0,7525,7523,1,0,0,0,7525,7524,1,0, + 0,0,7526,7527,1,0,0,0,7527,7530,5,68,0,0,7528,7531,3,712,356,0,7529, + 7531,3,804,402,0,7530,7528,1,0,0,0,7530,7529,1,0,0,0,7531,7537,1, + 0,0,0,7532,7535,5,65,0,0,7533,7536,3,712,356,0,7534,7536,3,804,402, + 0,7535,7533,1,0,0,0,7535,7534,1,0,0,0,7536,7538,1,0,0,0,7537,7532, + 1,0,0,0,7537,7538,1,0,0,0,7538,7539,1,0,0,0,7539,7540,5,867,0,0, + 7540,7622,1,0,0,0,7541,7542,5,300,0,0,7542,7543,5,866,0,0,7543,7546, + 7,135,0,0,7544,7547,3,716,358,0,7545,7547,3,804,402,0,7546,7544, + 1,0,0,0,7546,7545,1,0,0,0,7546,7547,1,0,0,0,7547,7548,1,0,0,0,7548, + 7551,5,68,0,0,7549,7552,3,716,358,0,7550,7552,3,804,402,0,7551,7549, + 1,0,0,0,7551,7550,1,0,0,0,7552,7553,1,0,0,0,7553,7554,5,867,0,0, + 7554,7622,1,0,0,0,7555,7556,5,300,0,0,7556,7559,5,866,0,0,7557,7560, + 3,716,358,0,7558,7560,3,804,402,0,7559,7557,1,0,0,0,7559,7558,1, + 0,0,0,7560,7561,1,0,0,0,7561,7564,5,68,0,0,7562,7565,3,716,358,0, + 7563,7565,3,804,402,0,7564,7562,1,0,0,0,7564,7563,1,0,0,0,7565,7566, + 1,0,0,0,7566,7567,5,867,0,0,7567,7622,1,0,0,0,7568,7569,5,840,0, + 0,7569,7572,5,866,0,0,7570,7573,3,716,358,0,7571,7573,3,804,402, + 0,7572,7570,1,0,0,0,7572,7571,1,0,0,0,7573,7580,1,0,0,0,7574,7575, + 5,13,0,0,7575,7576,7,136,0,0,7576,7577,5,866,0,0,7577,7578,3,712, + 356,0,7578,7579,5,867,0,0,7579,7581,1,0,0,0,7580,7574,1,0,0,0,7580, + 7581,1,0,0,0,7581,7583,1,0,0,0,7582,7584,3,770,385,0,7583,7582,1, + 0,0,0,7583,7584,1,0,0,0,7584,7585,1,0,0,0,7585,7586,5,867,0,0,7586, + 7622,1,0,0,0,7587,7588,5,293,0,0,7588,7589,5,866,0,0,7589,7590,3, + 70,35,0,7590,7593,5,68,0,0,7591,7594,3,716,358,0,7592,7594,3,804, + 402,0,7593,7591,1,0,0,0,7593,7592,1,0,0,0,7594,7595,1,0,0,0,7595, + 7596,5,867,0,0,7596,7622,1,0,0,0,7597,7598,5,827,0,0,7598,7599,5, + 866,0,0,7599,7600,7,137,0,0,7600,7601,5,868,0,0,7601,7602,3,716, + 358,0,7602,7603,5,867,0,0,7603,7622,1,0,0,0,7604,7605,5,254,0,0, + 7605,7606,5,866,0,0,7606,7607,3,804,402,0,7607,7608,5,868,0,0,7608, + 7611,3,804,402,0,7609,7610,5,579,0,0,7610,7612,3,730,365,0,7611, + 7609,1,0,0,0,7611,7612,1,0,0,0,7612,7614,1,0,0,0,7613,7615,3,292, + 146,0,7614,7613,1,0,0,0,7614,7615,1,0,0,0,7615,7617,1,0,0,0,7616, + 7618,3,294,147,0,7617,7616,1,0,0,0,7617,7618,1,0,0,0,7618,7619,1, + 0,0,0,7619,7620,5,867,0,0,7620,7622,1,0,0,0,7621,7442,1,0,0,0,7621, + 7447,1,0,0,0,7621,7448,1,0,0,0,7621,7455,1,0,0,0,7621,7462,1,0,0, + 0,7621,7469,1,0,0,0,7621,7474,1,0,0,0,7621,7486,1,0,0,0,7621,7499, + 1,0,0,0,7621,7508,1,0,0,0,7621,7521,1,0,0,0,7621,7541,1,0,0,0,7621, + 7555,1,0,0,0,7621,7568,1,0,0,0,7621,7587,1,0,0,0,7621,7597,1,0,0, + 0,7621,7604,1,0,0,0,7622,767,1,0,0,0,7623,7624,5,191,0,0,7624,7625, + 3,802,401,0,7625,7626,5,175,0,0,7626,7627,3,802,401,0,7627,769,1, + 0,0,0,7628,7629,5,448,0,0,7629,7634,3,772,386,0,7630,7631,5,868, + 0,0,7631,7633,3,772,386,0,7632,7630,1,0,0,0,7633,7636,1,0,0,0,7634, + 7632,1,0,0,0,7634,7635,1,0,0,0,7635,7643,1,0,0,0,7636,7634,1,0,0, + 0,7637,7638,5,448,0,0,7638,7639,3,712,356,0,7639,7640,5,854,0,0, + 7640,7641,3,712,356,0,7641,7643,1,0,0,0,7642,7628,1,0,0,0,7642,7637, + 1,0,0,0,7643,771,1,0,0,0,7644,7646,3,712,356,0,7645,7647,7,138,0, + 0,7646,7645,1,0,0,0,7646,7647,1,0,0,0,7647,773,1,0,0,0,7648,7649, + 7,139,0,0,7649,7651,5,866,0,0,7650,7652,7,45,0,0,7651,7650,1,0,0, + 0,7651,7652,1,0,0,0,7652,7653,1,0,0,0,7653,7654,3,802,401,0,7654, + 7656,5,867,0,0,7655,7657,3,778,389,0,7656,7655,1,0,0,0,7656,7657, + 1,0,0,0,7657,7708,1,0,0,0,7658,7659,5,262,0,0,7659,7667,5,866,0, + 0,7660,7668,5,850,0,0,7661,7663,5,7,0,0,7662,7661,1,0,0,0,7662,7663, + 1,0,0,0,7663,7664,1,0,0,0,7664,7668,3,802,401,0,7665,7666,5,49,0, + 0,7666,7668,3,800,400,0,7667,7660,1,0,0,0,7667,7662,1,0,0,0,7667, + 7665,1,0,0,0,7668,7669,1,0,0,0,7669,7671,5,867,0,0,7670,7672,3,778, + 389,0,7671,7670,1,0,0,0,7671,7672,1,0,0,0,7672,7708,1,0,0,0,7673, + 7674,7,140,0,0,7674,7676,5,866,0,0,7675,7677,5,7,0,0,7676,7675,1, + 0,0,0,7676,7677,1,0,0,0,7677,7678,1,0,0,0,7678,7679,3,802,401,0, + 7679,7681,5,867,0,0,7680,7682,3,778,389,0,7681,7680,1,0,0,0,7681, + 7682,1,0,0,0,7682,7708,1,0,0,0,7683,7684,5,266,0,0,7684,7686,5,866, + 0,0,7685,7687,5,49,0,0,7686,7685,1,0,0,0,7686,7687,1,0,0,0,7687, + 7688,1,0,0,0,7688,7699,3,800,400,0,7689,7690,5,125,0,0,7690,7691, + 5,20,0,0,7691,7696,3,260,130,0,7692,7693,5,868,0,0,7693,7695,3,260, + 130,0,7694,7692,1,0,0,0,7695,7698,1,0,0,0,7696,7694,1,0,0,0,7696, + 7697,1,0,0,0,7697,7700,1,0,0,0,7698,7696,1,0,0,0,7699,7689,1,0,0, + 0,7699,7700,1,0,0,0,7700,7703,1,0,0,0,7701,7702,5,156,0,0,7702,7704, + 5,882,0,0,7703,7701,1,0,0,0,7703,7704,1,0,0,0,7704,7705,1,0,0,0, + 7705,7706,5,867,0,0,7706,7708,1,0,0,0,7707,7648,1,0,0,0,7707,7658, + 1,0,0,0,7707,7673,1,0,0,0,7707,7683,1,0,0,0,7708,775,1,0,0,0,7709, + 7710,7,141,0,0,7710,7711,5,866,0,0,7711,7714,3,804,402,0,7712,7713, + 5,868,0,0,7713,7715,3,712,356,0,7714,7712,1,0,0,0,7714,7715,1,0, + 0,0,7715,7718,1,0,0,0,7716,7717,5,868,0,0,7717,7719,3,712,356,0, + 7718,7716,1,0,0,0,7718,7719,1,0,0,0,7719,7720,1,0,0,0,7720,7721, + 5,867,0,0,7721,7722,3,778,389,0,7722,7748,1,0,0,0,7723,7724,7,142, + 0,0,7724,7725,5,866,0,0,7725,7726,3,804,402,0,7726,7727,5,867,0, + 0,7727,7728,3,778,389,0,7728,7748,1,0,0,0,7729,7730,7,143,0,0,7730, + 7731,5,866,0,0,7731,7732,5,867,0,0,7732,7748,3,778,389,0,7733,7734, + 5,273,0,0,7734,7735,5,866,0,0,7735,7736,3,804,402,0,7736,7737,5, + 868,0,0,7737,7738,3,712,356,0,7738,7739,5,867,0,0,7739,7740,3,778, + 389,0,7740,7748,1,0,0,0,7741,7742,5,272,0,0,7742,7743,5,866,0,0, + 7743,7744,3,712,356,0,7744,7745,5,867,0,0,7745,7746,3,778,389,0, + 7746,7748,1,0,0,0,7747,7709,1,0,0,0,7747,7723,1,0,0,0,7747,7729, + 1,0,0,0,7747,7733,1,0,0,0,7747,7741,1,0,0,0,7748,777,1,0,0,0,7749, + 7755,5,129,0,0,7750,7751,5,866,0,0,7751,7752,3,780,390,0,7752,7753, + 5,867,0,0,7753,7756,1,0,0,0,7754,7756,3,782,391,0,7755,7750,1,0, + 0,0,7755,7754,1,0,0,0,7756,779,1,0,0,0,7757,7759,3,782,391,0,7758, + 7757,1,0,0,0,7758,7759,1,0,0,0,7759,7761,1,0,0,0,7760,7762,3,794, + 397,0,7761,7760,1,0,0,0,7761,7762,1,0,0,0,7762,7764,1,0,0,0,7763, + 7765,3,258,129,0,7764,7763,1,0,0,0,7764,7765,1,0,0,0,7765,7767,1, + 0,0,0,7766,7768,3,784,392,0,7767,7766,1,0,0,0,7767,7768,1,0,0,0, + 7768,781,1,0,0,0,7769,7770,3,706,353,0,7770,783,1,0,0,0,7771,7772, + 3,786,393,0,7772,7773,3,788,394,0,7773,785,1,0,0,0,7774,7775,7,144, + 0,0,7775,787,1,0,0,0,7776,7779,3,792,396,0,7777,7779,3,790,395,0, + 7778,7776,1,0,0,0,7778,7777,1,0,0,0,7779,789,1,0,0,0,7780,7781,5, + 17,0,0,7781,7782,3,792,396,0,7782,7783,5,11,0,0,7783,7784,3,792, + 396,0,7784,791,1,0,0,0,7785,7786,5,36,0,0,7786,7793,5,586,0,0,7787, + 7788,5,669,0,0,7788,7793,7,145,0,0,7789,7790,3,804,402,0,7790,7791, + 7,145,0,0,7791,7793,1,0,0,0,7792,7785,1,0,0,0,7792,7787,1,0,0,0, + 7792,7789,1,0,0,0,7793,793,1,0,0,0,7794,7795,5,130,0,0,7795,7796, + 5,20,0,0,7796,7801,3,804,402,0,7797,7798,5,868,0,0,7798,7800,3,804, + 402,0,7799,7797,1,0,0,0,7800,7803,1,0,0,0,7801,7799,1,0,0,0,7801, + 7802,1,0,0,0,7802,795,1,0,0,0,7803,7801,1,0,0,0,7804,7829,3,836, + 418,0,7805,7829,5,757,0,0,7806,7829,5,289,0,0,7807,7829,5,285,0, + 0,7808,7829,5,286,0,0,7809,7829,5,287,0,0,7810,7829,5,290,0,0,7811, + 7829,5,291,0,0,7812,7829,5,292,0,0,7813,7829,5,78,0,0,7814,7829, + 5,86,0,0,7815,7829,5,288,0,0,7816,7829,5,294,0,0,7817,7829,5,488, + 0,0,7818,7829,5,295,0,0,7819,7829,5,142,0,0,7820,7829,5,143,0,0, + 7821,7829,5,297,0,0,7822,7829,5,298,0,0,7823,7829,5,299,0,0,7824, + 7829,5,300,0,0,7825,7829,5,301,0,0,7826,7829,5,302,0,0,7827,7829, + 5,303,0,0,7828,7804,1,0,0,0,7828,7805,1,0,0,0,7828,7806,1,0,0,0, + 7828,7807,1,0,0,0,7828,7808,1,0,0,0,7828,7809,1,0,0,0,7828,7810, + 1,0,0,0,7828,7811,1,0,0,0,7828,7812,1,0,0,0,7828,7813,1,0,0,0,7828, + 7814,1,0,0,0,7828,7815,1,0,0,0,7828,7816,1,0,0,0,7828,7817,1,0,0, + 0,7828,7818,1,0,0,0,7828,7819,1,0,0,0,7828,7820,1,0,0,0,7828,7821, + 1,0,0,0,7828,7822,1,0,0,0,7828,7823,1,0,0,0,7828,7824,1,0,0,0,7828, + 7825,1,0,0,0,7828,7826,1,0,0,0,7828,7827,1,0,0,0,7829,797,1,0,0, + 0,7830,7831,7,146,0,0,7831,7832,5,866,0,0,7832,7833,3,802,401,0, + 7833,7834,5,867,0,0,7834,799,1,0,0,0,7835,7840,3,802,401,0,7836, + 7837,5,868,0,0,7837,7839,3,802,401,0,7838,7836,1,0,0,0,7839,7842, + 1,0,0,0,7840,7838,1,0,0,0,7840,7841,1,0,0,0,7841,801,1,0,0,0,7842, + 7840,1,0,0,0,7843,7847,3,724,362,0,7844,7847,3,764,382,0,7845,7847, + 3,804,402,0,7846,7843,1,0,0,0,7846,7844,1,0,0,0,7846,7845,1,0,0, + 0,7847,803,1,0,0,0,7848,7849,6,402,-1,0,7849,7850,7,147,0,0,7850, + 7860,3,804,402,4,7851,7852,3,806,403,0,7852,7854,5,89,0,0,7853,7855, + 5,114,0,0,7854,7853,1,0,0,0,7854,7855,1,0,0,0,7855,7856,1,0,0,0, + 7856,7857,7,148,0,0,7857,7860,1,0,0,0,7858,7860,3,806,403,0,7859, + 7848,1,0,0,0,7859,7851,1,0,0,0,7859,7858,1,0,0,0,7860,7867,1,0,0, + 0,7861,7862,10,3,0,0,7862,7863,3,816,408,0,7863,7864,3,804,402,4, + 7864,7866,1,0,0,0,7865,7861,1,0,0,0,7866,7869,1,0,0,0,7867,7865, + 1,0,0,0,7867,7868,1,0,0,0,7868,805,1,0,0,0,7869,7867,1,0,0,0,7870, + 7871,6,403,-1,0,7871,7872,3,808,404,0,7872,7936,1,0,0,0,7873,7875, + 10,6,0,0,7874,7876,5,114,0,0,7875,7874,1,0,0,0,7875,7876,1,0,0,0, + 7876,7877,1,0,0,0,7877,7878,5,17,0,0,7878,7879,3,806,403,0,7879, + 7880,5,11,0,0,7880,7881,3,806,403,7,7881,7935,1,0,0,0,7882,7883, + 10,5,0,0,7883,7884,5,604,0,0,7884,7885,5,99,0,0,7885,7935,3,806, + 403,6,7886,7888,10,3,0,0,7887,7889,5,114,0,0,7888,7887,1,0,0,0,7888, + 7889,1,0,0,0,7889,7890,1,0,0,0,7890,7891,7,149,0,0,7891,7935,3,806, + 403,4,7892,7894,10,9,0,0,7893,7895,5,114,0,0,7894,7893,1,0,0,0,7894, + 7895,1,0,0,0,7895,7896,1,0,0,0,7896,7897,5,80,0,0,7897,7900,5,866, + 0,0,7898,7901,3,210,105,0,7899,7901,3,740,370,0,7900,7898,1,0,0, + 0,7900,7899,1,0,0,0,7901,7902,1,0,0,0,7902,7903,5,867,0,0,7903,7935, + 1,0,0,0,7904,7905,10,8,0,0,7905,7906,5,89,0,0,7906,7935,3,722,361, + 0,7907,7908,10,7,0,0,7908,7915,3,812,406,0,7909,7910,7,150,0,0,7910, + 7911,5,866,0,0,7911,7912,3,210,105,0,7912,7913,5,867,0,0,7913,7916, + 1,0,0,0,7914,7916,3,806,403,0,7915,7909,1,0,0,0,7915,7914,1,0,0, + 0,7916,7935,1,0,0,0,7917,7919,10,4,0,0,7918,7920,5,114,0,0,7919, + 7918,1,0,0,0,7919,7920,1,0,0,0,7920,7921,1,0,0,0,7921,7922,5,99, + 0,0,7922,7925,3,806,403,0,7923,7924,5,384,0,0,7924,7926,5,882,0, + 0,7925,7923,1,0,0,0,7925,7926,1,0,0,0,7926,7935,1,0,0,0,7927,7928, + 10,2,0,0,7928,7929,5,485,0,0,7929,7930,5,510,0,0,7930,7931,5,866, + 0,0,7931,7932,3,806,403,0,7932,7933,5,867,0,0,7933,7935,1,0,0,0, + 7934,7873,1,0,0,0,7934,7882,1,0,0,0,7934,7886,1,0,0,0,7934,7892, + 1,0,0,0,7934,7904,1,0,0,0,7934,7907,1,0,0,0,7934,7917,1,0,0,0,7934, + 7927,1,0,0,0,7935,7938,1,0,0,0,7936,7934,1,0,0,0,7936,7937,1,0,0, + 0,7937,807,1,0,0,0,7938,7936,1,0,0,0,7939,7940,6,404,-1,0,7940,7988, + 3,724,362,0,7941,7988,3,764,382,0,7942,7988,3,686,343,0,7943,7944, + 3,810,405,0,7944,7945,3,808,404,12,7945,7988,1,0,0,0,7946,7947,5, + 228,0,0,7947,7988,3,808,404,11,7948,7949,5,892,0,0,7949,7950,5,841, + 0,0,7950,7988,3,808,404,10,7951,7952,5,866,0,0,7952,7957,3,804,402, + 0,7953,7954,5,868,0,0,7954,7956,3,804,402,0,7955,7953,1,0,0,0,7956, + 7959,1,0,0,0,7957,7955,1,0,0,0,7957,7958,1,0,0,0,7958,7960,1,0,0, + 0,7959,7957,1,0,0,0,7960,7961,5,867,0,0,7961,7988,1,0,0,0,7962,7963, + 5,586,0,0,7963,7964,5,866,0,0,7964,7967,3,804,402,0,7965,7966,5, + 868,0,0,7966,7968,3,804,402,0,7967,7965,1,0,0,0,7968,7969,1,0,0, + 0,7969,7967,1,0,0,0,7969,7970,1,0,0,0,7970,7971,1,0,0,0,7971,7972, + 5,867,0,0,7972,7988,1,0,0,0,7973,7974,5,60,0,0,7974,7975,5,866,0, + 0,7975,7976,3,210,105,0,7976,7977,5,867,0,0,7977,7988,1,0,0,0,7978, + 7979,5,866,0,0,7979,7980,3,210,105,0,7980,7981,5,867,0,0,7981,7988, + 1,0,0,0,7982,7983,5,87,0,0,7983,7984,3,804,402,0,7984,7985,3,70, + 35,0,7985,7988,1,0,0,0,7986,7988,3,662,331,0,7987,7939,1,0,0,0,7987, + 7941,1,0,0,0,7987,7942,1,0,0,0,7987,7943,1,0,0,0,7987,7946,1,0,0, + 0,7987,7948,1,0,0,0,7987,7951,1,0,0,0,7987,7962,1,0,0,0,7987,7973, + 1,0,0,0,7987,7978,1,0,0,0,7987,7982,1,0,0,0,7987,7986,1,0,0,0,7988, + 8006,1,0,0,0,7989,7990,10,4,0,0,7990,7991,3,822,411,0,7991,7992, + 3,808,404,5,7992,8005,1,0,0,0,7993,7994,10,3,0,0,7994,7995,3,818, + 409,0,7995,7996,3,808,404,4,7996,8005,1,0,0,0,7997,7998,10,2,0,0, + 7998,7999,3,820,410,0,7999,8000,3,808,404,3,8000,8005,1,0,0,0,8001, + 8002,10,14,0,0,8002,8003,5,28,0,0,8003,8005,3,690,345,0,8004,7989, + 1,0,0,0,8004,7993,1,0,0,0,8004,7997,1,0,0,0,8004,8001,1,0,0,0,8005, + 8008,1,0,0,0,8006,8004,1,0,0,0,8006,8007,1,0,0,0,8007,809,1,0,0, + 0,8008,8006,1,0,0,0,8009,8010,7,151,0,0,8010,811,1,0,0,0,8011,8012, + 5,859,0,0,8012,8020,5,858,0,0,8013,8014,5,860,0,0,8014,8020,5,857, + 0,0,8015,8016,5,859,0,0,8016,8017,5,857,0,0,8017,8020,5,858,0,0, + 8018,8020,3,814,407,0,8019,8011,1,0,0,0,8019,8013,1,0,0,0,8019,8015, + 1,0,0,0,8019,8018,1,0,0,0,8020,813,1,0,0,0,8021,8022,5,859,0,0,8022, + 8029,5,857,0,0,8023,8024,5,858,0,0,8024,8029,5,857,0,0,8025,8029, + 5,857,0,0,8026,8029,5,858,0,0,8027,8029,5,859,0,0,8028,8021,1,0, + 0,0,8028,8023,1,0,0,0,8028,8025,1,0,0,0,8028,8026,1,0,0,0,8028,8027, + 1,0,0,0,8029,815,1,0,0,0,8030,8038,5,11,0,0,8031,8032,5,863,0,0, + 8032,8038,5,863,0,0,8033,8038,5,196,0,0,8034,8038,5,124,0,0,8035, + 8036,5,862,0,0,8036,8038,5,862,0,0,8037,8030,1,0,0,0,8037,8031,1, + 0,0,0,8037,8033,1,0,0,0,8037,8034,1,0,0,0,8037,8035,1,0,0,0,8038, + 817,1,0,0,0,8039,8040,5,859,0,0,8040,8047,5,859,0,0,8041,8042,5, + 858,0,0,8042,8047,5,858,0,0,8043,8047,5,863,0,0,8044,8047,5,864, + 0,0,8045,8047,5,862,0,0,8046,8039,1,0,0,0,8046,8041,1,0,0,0,8046, + 8043,1,0,0,0,8046,8044,1,0,0,0,8046,8045,1,0,0,0,8047,819,1,0,0, + 0,8048,8049,7,152,0,0,8049,821,1,0,0,0,8050,8051,5,854,0,0,8051, + 8056,5,858,0,0,8052,8053,5,854,0,0,8053,8054,5,858,0,0,8054,8056, + 5,858,0,0,8055,8050,1,0,0,0,8055,8052,1,0,0,0,8056,823,1,0,0,0,8057, + 8058,7,153,0,0,8058,825,1,0,0,0,8059,8060,7,154,0,0,8060,827,1,0, + 0,0,8061,8062,7,155,0,0,8062,829,1,0,0,0,8063,8064,7,156,0,0,8064, + 831,1,0,0,0,8065,8066,7,157,0,0,8066,833,1,0,0,0,8067,8068,7,158, + 0,0,8068,835,1,0,0,0,8069,8070,7,159,0,0,8070,837,1,0,0,0,1163,841, + 848,851,860,904,923,934,950,955,967,1002,1012,1017,1023,1028,1032, + 1041,1044,1047,1051,1058,1061,1066,1074,1079,1084,1087,1089,1101, + 1104,1108,1111,1115,1118,1122,1125,1128,1132,1135,1139,1145,1149, + 1154,1160,1167,1174,1177,1181,1186,1192,1201,1206,1210,1214,1225, + 1243,1250,1254,1258,1262,1267,1270,1273,1276,1279,1285,1289,1299, + 1303,1307,1313,1318,1321,1324,1326,1330,1337,1341,1344,1349,1353, + 1356,1360,1363,1367,1380,1383,1387,1390,1394,1397,1401,1404,1408, + 1411,1414,1418,1421,1425,1431,1434,1438,1450,1456,1467,1472,1480, + 1484,1489,1492,1497,1507,1512,1517,1523,1528,1532,1534,1537,1541, + 1545,1548,1552,1556,1560,1566,1569,1576,1581,1587,1594,1600,1608, + 1611,1618,1621,1623,1629,1635,1652,1659,1666,1678,1683,1686,1689, + 1702,1715,1720,1736,1744,1754,1757,1763,1768,1771,1777,1781,1786, + 1792,1796,1800,1803,1806,1812,1816,1821,1832,1835,1842,1845,1849, + 1855,1867,1870,1875,1888,1895,1901,1906,1910,1913,1921,1929,1931, + 1941,1945,1948,1952,1957,1962,1967,1971,1975,1979,1983,1987,1991, + 1996,2001,2006,2012,2017,2022,2027,2032,2037,2043,2048,2053,2058, + 2063,2068,2073,2078,2085,2090,2095,2100,2104,2109,2117,2122,2128, + 2140,2147,2149,2157,2162,2165,2173,2179,2183,2196,2208,2210,2213, + 2221,2227,2233,2246,2253,2262,2267,2278,2287,2292,2304,2311,2320, + 2325,2337,2344,2353,2358,2365,2374,2379,2381,2386,2394,2403,2407, + 2410,2414,2419,2425,2431,2436,2441,2446,2451,2454,2459,2464,2474, + 2478,2485,2490,2493,2498,2501,2505,2509,2517,2536,2539,2542,2546, + 2556,2569,2582,2585,2591,2594,2598,2607,2610,2613,2618,2622,2625, + 2629,2633,2636,2640,2643,2647,2650,2656,2659,2664,2672,2678,2682, + 2686,2691,2696,2703,2707,2718,2726,2729,2735,2741,2744,2750,2756, + 2758,2763,2769,2775,2777,2781,2784,2787,2793,2799,2801,2806,2813, + 2822,2825,2829,2834,2844,2853,2861,2864,2872,2875,2882,2887,2895, + 2911,2916,2923,2942,2948,2958,2970,2977,2984,2999,3012,3018,3024, + 3030,3036,3042,3048,3053,3060,3067,3074,3079,3082,3084,3093,3100, + 3107,3114,3123,3129,3133,3137,3141,3147,3150,3155,3162,3169,3173, + 3178,3188,3196,3202,3211,3220,3229,3232,3236,3245,3249,3252,3255, + 3261,3264,3267,3271,3274,3277,3280,3291,3294,3299,3305,3310,3315, + 3318,3322,3327,3330,3335,3345,3350,3356,3358,3364,3366,3372,3380, + 3385,3393,3396,3401,3404,3409,3417,3423,3427,3429,3435,3443,3448, + 3456,3459,3464,3467,3471,3474,3477,3481,3484,3492,3498,3502,3508, + 3513,3517,3519,3525,3529,3532,3535,3538,3544,3549,3552,3555,3558, + 3561,3563,3566,3570,3573,3576,3584,3590,3593,3595,3604,3609,3616, + 3619,3622,3626,3630,3636,3640,3647,3651,3654,3657,3662,3669,3679, + 3688,3697,3707,3710,3714,3720,3724,3727,3730,3735,3738,3745,3749, + 3752,3756,3760,3763,3766,3771,3777,3781,3791,3797,3801,3807,3811, + 3817,3820,3832,3836,3840,3848,3852,3866,3871,3874,3878,3881,3889, + 3894,3897,3900,3904,3907,3916,3921,3930,3935,3942,3949,3957,3963, + 3971,3974,3977,3984,3987,3990,3997,4000,4004,4010,4020,4024,4033, + 4036,4040,4046,4054,4059,4063,4069,4075,4078,4080,4084,4093,4103, + 4109,4114,4118,4121,4124,4127,4130,4133,4136,4140,4144,4152,4156, + 4159,4161,4174,4177,4184,4194,4197,4202,4204,4208,4216,4222,4231, + 4244,4248,4254,4259,4263,4266,4270,4273,4281,4284,4286,4294,4306, + 4312,4314,4320,4322,4324,4330,4338,4346,4350,4354,4363,4368,4388, + 4393,4399,4406,4411,4420,4423,4427,4431,4435,4438,4441,4444,4448, + 4452,4455,4458,4461,4468,4472,4487,4500,4508,4518,4522,4525,4531, + 4534,4537,4546,4555,4565,4569,4579,4583,4594,4598,4607,4616,4619, + 4623,4628,4632,4641,4644,4647,4654,4660,4666,4692,4695,4698,4717, + 4719,4742,4745,4748,4767,4769,4783,4796,4833,4838,4873,4887,4894, + 4898,4904,4912,4914,4925,4935,4942,4948,4956,4961,4969,4977,4985, + 4993,4999,5004,5009,5014,5020,5022,5033,5038,5045,5047,5061,5067, + 5072,5077,5083,5090,5098,5106,5111,5117,5120,5128,5135,5144,5147, + 5164,5172,5180,5184,5191,5197,5205,5210,5217,5225,5232,5237,5240, + 5242,5248,5250,5254,5256,5261,5268,5273,5277,5282,5286,5292,5298, + 5303,5306,5308,5314,5316,5320,5322,5327,5332,5339,5348,5353,5362, + 5366,5372,5377,5380,5382,5388,5390,5393,5400,5402,5407,5414,5423, + 5429,5431,5438,5441,5453,5459,5467,5470,5474,5477,5481,5483,5494, + 5497,5501,5504,5507,5514,5526,5529,5536,5542,5552,5557,5564,5569, + 5575,5579,5583,5591,5595,5599,5605,5607,5619,5624,5630,5636,5640, + 5645,5647,5671,5675,5678,5687,5691,5700,5704,5708,5714,5716,5725, + 5735,5762,5766,5771,5778,5781,5787,5797,5807,5817,5823,5832,5838, + 5845,5847,5855,5861,5865,5882,5892,5896,5900,5910,5915,5987,6005, + 6013,6019,6031,6035,6046,6050,6059,6067,6074,6078,6085,6090,6093, + 6096,6107,6116,6125,6128,6142,6160,6173,6176,6180,6183,6185,6192, + 6199,6203,6210,6217,6220,6236,6239,6249,6253,6259,6262,6265,6270, + 6274,6277,6284,6287,6293,6329,6332,6344,6347,6363,6365,6369,6376, + 6380,6387,6390,6399,6402,6407,6413,6415,6421,6425,6431,6434,6437, + 6450,6453,6459,6462,6470,6478,6484,6487,6491,6505,6517,6525,6529, + 6536,6543,6548,6561,6570,6578,6583,6586,6591,6594,6606,6611,6624, + 6626,6631,6635,6638,6640,6647,6654,6657,6660,6666,6670,6676,6684, + 6693,6706,6711,6719,6722,6727,6732,6740,6743,6751,6755,6762,6768, + 6771,6775,6788,6794,6806,6809,6818,6823,6844,6860,6870,6875,6880, + 6882,6885,6889,6891,6898,6904,6906,6909,6913,6916,6929,6939,6942, + 6945,6958,6964,6967,6975,6982,7002,7009,7011,7018,7020,7024,7031, + 7037,7048,7054,7060,7063,7067,7072,7075,7079,7083,7085,7090,7095, + 7108,7111,7115,7118,7121,7126,7131,7137,7140,7145,7148,7153,7156, + 7160,7165,7170,7175,7180,7183,7188,7193,7198,7204,7209,7214,7219, + 7223,7226,7231,7235,7239,7247,7254,7258,7263,7268,7272,7274,7277, + 7293,7303,7313,7322,7331,7338,7345,7353,7361,7373,7380,7390,7395, + 7398,7403,7406,7428,7437,7440,7445,7478,7482,7491,7495,7504,7512, + 7517,7525,7530,7535,7537,7546,7551,7559,7564,7572,7580,7583,7593, + 7611,7614,7617,7621,7634,7642,7646,7651,7656,7662,7667,7671,7676, + 7681,7686,7696,7699,7703,7707,7714,7718,7747,7755,7758,7761,7764, + 7767,7778,7792,7801,7828,7840,7846,7854,7859,7867,7875,7888,7894, + 7900,7915,7919,7925,7934,7936,7957,7969,7987,8004,8006,8019,8028, + 8037,8046,8055 ]; private static __ATN: antlr.ATN; @@ -51414,6 +52233,9 @@ export class DdlStatementContext extends antlr.ParserRuleContext { public createFunction(): CreateFunctionContext | null { return this.getRuleContext(0, CreateFunctionContext); } + public createFunctionLoadable(): CreateFunctionLoadableContext | null { + return this.getRuleContext(0, CreateFunctionLoadableContext); + } public createServer(): CreateServerContext | null { return this.getRuleContext(0, CreateServerContext); } @@ -52486,6 +53308,160 @@ export class CreateProcedureContext extends antlr.ParserRuleContext { } +export class CreateFunctionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_CREATE, 0)!; + } + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_FUNCTION, 0)!; + } + public functionNameCreate(): FunctionNameCreateContext { + return this.getRuleContext(0, FunctionNameCreateContext)!; + } + public LR_BRACKET(): antlr.TerminalNode { + return this.getToken(MySqlParser.LR_BRACKET, 0)!; + } + public RR_BRACKET(): antlr.TerminalNode { + return this.getToken(MySqlParser.RR_BRACKET, 0)!; + } + public KW_RETURNS(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_RETURNS, 0)!; + } + public dataType(): DataTypeContext { + return this.getRuleContext(0, DataTypeContext)!; + } + public routineBody(): RoutineBodyContext | null { + return this.getRuleContext(0, RoutineBodyContext); + } + public returnStatement(): ReturnStatementContext | null { + return this.getRuleContext(0, ReturnStatementContext); + } + public ownerStatement(): OwnerStatementContext | null { + return this.getRuleContext(0, OwnerStatementContext); + } + public KW_AGGREGATE(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_AGGREGATE, 0); + } + public ifNotExists(): IfNotExistsContext | null { + return this.getRuleContext(0, IfNotExistsContext); + } + public functionParameter(): FunctionParameterContext[]; + public functionParameter(i: number): FunctionParameterContext | null; + public functionParameter(i?: number): FunctionParameterContext[] | FunctionParameterContext | null { + if (i === undefined) { + return this.getRuleContexts(FunctionParameterContext); + } + + return this.getRuleContext(i, FunctionParameterContext); + } + public COMMA(): antlr.TerminalNode[]; + public COMMA(i: number): antlr.TerminalNode | null; + public COMMA(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(MySqlParser.COMMA); + } else { + return this.getToken(MySqlParser.COMMA, i); + } + } + public routineOption(): RoutineOptionContext[]; + public routineOption(i: number): RoutineOptionContext | null; + public routineOption(i?: number): RoutineOptionContext[] | RoutineOptionContext | null { + if (i === undefined) { + return this.getRuleContexts(RoutineOptionContext); + } + + return this.getRuleContext(i, RoutineOptionContext); + } + public override get ruleIndex(): number { + return MySqlParser.RULE_createFunction; + } + public override enterRule(listener: MySqlParserListener): void { + if(listener.enterCreateFunction) { + listener.enterCreateFunction(this); + } + } + public override exitRule(listener: MySqlParserListener): void { + if(listener.exitCreateFunction) { + listener.exitCreateFunction(this); + } + } + public override accept(visitor: MySqlParserVisitor): Result | null { + if (visitor.visitCreateFunction) { + return visitor.visitCreateFunction(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class CreateFunctionLoadableContext extends antlr.ParserRuleContext { + public _returnType?: Token | null; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_CREATE, 0)!; + } + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_FUNCTION, 0)!; + } + public functionNameCreate(): FunctionNameCreateContext { + return this.getRuleContext(0, FunctionNameCreateContext)!; + } + public KW_RETURNS(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_RETURNS, 0)!; + } + public KW_SONAME(): antlr.TerminalNode { + return this.getToken(MySqlParser.KW_SONAME, 0)!; + } + public STRING_LITERAL(): antlr.TerminalNode { + return this.getToken(MySqlParser.STRING_LITERAL, 0)!; + } + public KW_STRING(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_STRING, 0); + } + public KW_INTEGER(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_INTEGER, 0); + } + public KW_REAL(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_REAL, 0); + } + public KW_DECIMAL(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_DECIMAL, 0); + } + public KW_AGGREGATE(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_AGGREGATE, 0); + } + public ifNotExists(): IfNotExistsContext | null { + return this.getRuleContext(0, IfNotExistsContext); + } + public override get ruleIndex(): number { + return MySqlParser.RULE_createFunctionLoadable; + } + public override enterRule(listener: MySqlParserListener): void { + if(listener.enterCreateFunctionLoadable) { + listener.enterCreateFunctionLoadable(this); + } + } + public override exitRule(listener: MySqlParserListener): void { + if(listener.exitCreateFunctionLoadable) { + listener.exitCreateFunctionLoadable(this); + } + } + public override accept(visitor: MySqlParserVisitor): Result | null { + if (visitor.visitCreateFunctionLoadable) { + return visitor.visitCreateFunctionLoadable(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class CreateRoleContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -53081,8 +54057,14 @@ export class CreateTriggerContext extends antlr.ParserRuleContext { public ownerStatement(): OwnerStatementContext | null { return this.getRuleContext(0, OwnerStatementContext); } - public ifNotExists(): IfNotExistsContext | null { - return this.getRuleContext(0, IfNotExistsContext); + public ifNotExists(): IfNotExistsContext[]; + public ifNotExists(i: number): IfNotExistsContext | null; + public ifNotExists(i?: number): IfNotExistsContext[] | IfNotExistsContext | null { + if (i === undefined) { + return this.getRuleContexts(IfNotExistsContext); + } + + return this.getRuleContext(i, IfNotExistsContext); } public KW_FOLLOWS(): antlr.TerminalNode | null { return this.getToken(MySqlParser.KW_FOLLOWS, 0); @@ -53989,6 +54971,40 @@ export class ProcedureParameterContext extends antlr.ParserRuleContext { } +export class FunctionParameterContext extends antlr.ParserRuleContext { + public _paramName?: UidContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public dataType(): DataTypeContext { + return this.getRuleContext(0, DataTypeContext)!; + } + public uid(): UidContext { + return this.getRuleContext(0, UidContext)!; + } + public override get ruleIndex(): number { + return MySqlParser.RULE_functionParameter; + } + public override enterRule(listener: MySqlParserListener): void { + if(listener.enterFunctionParameter) { + listener.enterFunctionParameter(this); + } + } + public override exitRule(listener: MySqlParserListener): void { + if(listener.exitFunctionParameter) { + listener.exitFunctionParameter(this); + } + } + public override accept(visitor: MySqlParserVisitor): Result | null { + if (visitor.visitFunctionParameter) { + return visitor.visitFunctionParameter(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class RoutineOptionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -64213,6 +65229,9 @@ export class QuerySpecificationContext extends antlr.ParserRuleContext { public limitClause(): LimitClauseContext | null { return this.getRuleContext(0, LimitClauseContext); } + public unionStatement(): UnionStatementContext | null { + return this.getRuleContext(0, UnionStatementContext); + } public override get ruleIndex(): number { return MySqlParser.RULE_querySpecification; } @@ -73039,70 +74058,6 @@ export class CheckTableOptionContext extends antlr.ParserRuleContext { } -export class CreateFunctionContext extends antlr.ParserRuleContext { - public _returnType?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(MySqlParser.KW_CREATE, 0)!; - } - public KW_FUNCTION(): antlr.TerminalNode { - return this.getToken(MySqlParser.KW_FUNCTION, 0)!; - } - public functionNameCreate(): FunctionNameCreateContext { - return this.getRuleContext(0, FunctionNameCreateContext)!; - } - public KW_RETURNS(): antlr.TerminalNode { - return this.getToken(MySqlParser.KW_RETURNS, 0)!; - } - public KW_SONAME(): antlr.TerminalNode { - return this.getToken(MySqlParser.KW_SONAME, 0)!; - } - public STRING_LITERAL(): antlr.TerminalNode { - return this.getToken(MySqlParser.STRING_LITERAL, 0)!; - } - public KW_STRING(): antlr.TerminalNode | null { - return this.getToken(MySqlParser.KW_STRING, 0); - } - public KW_INTEGER(): antlr.TerminalNode | null { - return this.getToken(MySqlParser.KW_INTEGER, 0); - } - public KW_REAL(): antlr.TerminalNode | null { - return this.getToken(MySqlParser.KW_REAL, 0); - } - public KW_DECIMAL(): antlr.TerminalNode | null { - return this.getToken(MySqlParser.KW_DECIMAL, 0); - } - public KW_AGGREGATE(): antlr.TerminalNode | null { - return this.getToken(MySqlParser.KW_AGGREGATE, 0); - } - public ifNotExists(): IfNotExistsContext | null { - return this.getRuleContext(0, IfNotExistsContext); - } - public override get ruleIndex(): number { - return MySqlParser.RULE_createFunction; - } - public override enterRule(listener: MySqlParserListener): void { - if(listener.enterCreateFunction) { - listener.enterCreateFunction(this); - } - } - public override exitRule(listener: MySqlParserListener): void { - if(listener.exitCreateFunction) { - listener.exitCreateFunction(this); - } - } - public override accept(visitor: MySqlParserVisitor): Result | null { - if (visitor.visitCreateFunction) { - return visitor.visitCreateFunction(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class InstallComponentContext extends antlr.ParserRuleContext { public _component_name?: UidContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -84470,6 +85425,9 @@ export class KeywordsCanBeIdContext extends antlr.ParserRuleContext { public KW_RETURNED_SQLSTATE(): antlr.TerminalNode | null { return this.getToken(MySqlParser.KW_RETURNED_SQLSTATE, 0); } + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(MySqlParser.KW_RETURNING, 0); + } public KW_RETURNS(): antlr.TerminalNode | null { return this.getToken(MySqlParser.KW_RETURNS, 0); } diff --git a/src/lib/mysql/MySqlParserListener.ts b/src/lib/mysql/MySqlParserListener.ts index 96fa7f62..3eb53370 100644 --- a/src/lib/mysql/MySqlParserListener.ts +++ b/src/lib/mysql/MySqlParserListener.ts @@ -25,6 +25,8 @@ import { CreateEventContext } from "./MySqlParser.js"; import { CreateIndexContext } from "./MySqlParser.js"; import { CreateLogfileGroupContext } from "./MySqlParser.js"; import { CreateProcedureContext } from "./MySqlParser.js"; +import { CreateFunctionContext } from "./MySqlParser.js"; +import { CreateFunctionLoadableContext } from "./MySqlParser.js"; import { CreateRoleContext } from "./MySqlParser.js"; import { CreateServerContext } from "./MySqlParser.js"; import { QueryCreateTableContext } from "./MySqlParser.js"; @@ -49,6 +51,7 @@ import { EnableTypeContext } from "./MySqlParser.js"; import { IndexTypeContext } from "./MySqlParser.js"; import { IndexOptionContext } from "./MySqlParser.js"; import { ProcedureParameterContext } from "./MySqlParser.js"; +import { FunctionParameterContext } from "./MySqlParser.js"; import { RoutineCommentContext } from "./MySqlParser.js"; import { RoutineLanguageContext } from "./MySqlParser.js"; import { RoutineBehaviorContext } from "./MySqlParser.js"; @@ -444,7 +447,6 @@ import { OptimizeTableContext } from "./MySqlParser.js"; import { RepairTableContext } from "./MySqlParser.js"; import { TableActionOptionContext } from "./MySqlParser.js"; import { CheckTableOptionContext } from "./MySqlParser.js"; -import { CreateFunctionContext } from "./MySqlParser.js"; import { InstallComponentContext } from "./MySqlParser.js"; import { VariableExprContext } from "./MySqlParser.js"; import { UninstallComponentContext } from "./MySqlParser.js"; @@ -854,6 +856,26 @@ export class MySqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitCreateProcedure?: (ctx: CreateProcedureContext) => void; + /** + * Enter a parse tree produced by `MySqlParser.createFunction`. + * @param ctx the parse tree + */ + enterCreateFunction?: (ctx: CreateFunctionContext) => void; + /** + * Exit a parse tree produced by `MySqlParser.createFunction`. + * @param ctx the parse tree + */ + exitCreateFunction?: (ctx: CreateFunctionContext) => void; + /** + * Enter a parse tree produced by `MySqlParser.createFunctionLoadable`. + * @param ctx the parse tree + */ + enterCreateFunctionLoadable?: (ctx: CreateFunctionLoadableContext) => void; + /** + * Exit a parse tree produced by `MySqlParser.createFunctionLoadable`. + * @param ctx the parse tree + */ + exitCreateFunctionLoadable?: (ctx: CreateFunctionLoadableContext) => void; /** * Enter a parse tree produced by `MySqlParser.createRole`. * @param ctx the parse tree @@ -1104,6 +1126,16 @@ export class MySqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitProcedureParameter?: (ctx: ProcedureParameterContext) => void; + /** + * Enter a parse tree produced by `MySqlParser.functionParameter`. + * @param ctx the parse tree + */ + enterFunctionParameter?: (ctx: FunctionParameterContext) => void; + /** + * Exit a parse tree produced by `MySqlParser.functionParameter`. + * @param ctx the parse tree + */ + exitFunctionParameter?: (ctx: FunctionParameterContext) => void; /** * Enter a parse tree produced by the `routineComment` * labeled alternative in `MySqlParser.routineOption`. @@ -5440,16 +5472,6 @@ export class MySqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitCheckTableOption?: (ctx: CheckTableOptionContext) => void; - /** - * Enter a parse tree produced by `MySqlParser.createFunction`. - * @param ctx the parse tree - */ - enterCreateFunction?: (ctx: CreateFunctionContext) => void; - /** - * Exit a parse tree produced by `MySqlParser.createFunction`. - * @param ctx the parse tree - */ - exitCreateFunction?: (ctx: CreateFunctionContext) => void; /** * Enter a parse tree produced by `MySqlParser.installComponent`. * @param ctx the parse tree diff --git a/src/lib/mysql/MySqlParserVisitor.ts b/src/lib/mysql/MySqlParserVisitor.ts index bf5c9671..6ddd8c45 100644 --- a/src/lib/mysql/MySqlParserVisitor.ts +++ b/src/lib/mysql/MySqlParserVisitor.ts @@ -25,6 +25,8 @@ import { CreateEventContext } from "./MySqlParser.js"; import { CreateIndexContext } from "./MySqlParser.js"; import { CreateLogfileGroupContext } from "./MySqlParser.js"; import { CreateProcedureContext } from "./MySqlParser.js"; +import { CreateFunctionContext } from "./MySqlParser.js"; +import { CreateFunctionLoadableContext } from "./MySqlParser.js"; import { CreateRoleContext } from "./MySqlParser.js"; import { CreateServerContext } from "./MySqlParser.js"; import { QueryCreateTableContext } from "./MySqlParser.js"; @@ -49,6 +51,7 @@ import { EnableTypeContext } from "./MySqlParser.js"; import { IndexTypeContext } from "./MySqlParser.js"; import { IndexOptionContext } from "./MySqlParser.js"; import { ProcedureParameterContext } from "./MySqlParser.js"; +import { FunctionParameterContext } from "./MySqlParser.js"; import { RoutineCommentContext } from "./MySqlParser.js"; import { RoutineLanguageContext } from "./MySqlParser.js"; import { RoutineBehaviorContext } from "./MySqlParser.js"; @@ -444,7 +447,6 @@ import { OptimizeTableContext } from "./MySqlParser.js"; import { RepairTableContext } from "./MySqlParser.js"; import { TableActionOptionContext } from "./MySqlParser.js"; import { CheckTableOptionContext } from "./MySqlParser.js"; -import { CreateFunctionContext } from "./MySqlParser.js"; import { InstallComponentContext } from "./MySqlParser.js"; import { VariableExprContext } from "./MySqlParser.js"; import { UninstallComponentContext } from "./MySqlParser.js"; @@ -789,6 +791,18 @@ export class MySqlParserVisitor extends AbstractParseTreeVisitor * @return the visitor result */ visitCreateProcedure?: (ctx: CreateProcedureContext) => Result; + /** + * Visit a parse tree produced by `MySqlParser.createFunction`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCreateFunction?: (ctx: CreateFunctionContext) => Result; + /** + * Visit a parse tree produced by `MySqlParser.createFunctionLoadable`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCreateFunctionLoadable?: (ctx: CreateFunctionLoadableContext) => Result; /** * Visit a parse tree produced by `MySqlParser.createRole`. * @param ctx the parse tree @@ -938,6 +952,12 @@ export class MySqlParserVisitor extends AbstractParseTreeVisitor * @return the visitor result */ visitProcedureParameter?: (ctx: ProcedureParameterContext) => Result; + /** + * Visit a parse tree produced by `MySqlParser.functionParameter`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunctionParameter?: (ctx: FunctionParameterContext) => Result; /** * Visit a parse tree produced by the `routineComment` * labeled alternative in `MySqlParser.routineOption`. @@ -3501,12 +3521,6 @@ export class MySqlParserVisitor extends AbstractParseTreeVisitor * @return the visitor result */ visitCheckTableOption?: (ctx: CheckTableOptionContext) => Result; - /** - * Visit a parse tree produced by `MySqlParser.createFunction`. - * @param ctx the parse tree - * @return the visitor result - */ - visitCreateFunction?: (ctx: CreateFunctionContext) => Result; /** * Visit a parse tree produced by `MySqlParser.installComponent`. * @param ctx the parse tree diff --git a/src/lib/postgresql/PostgreSqlParser.interp b/src/lib/postgresql/PostgreSqlParser.interp index 68bf4dae..dfd40ac5 100644 --- a/src/lib/postgresql/PostgreSqlParser.interp +++ b/src/lib/postgresql/PostgreSqlParser.interp @@ -1650,9 +1650,8 @@ cursor_variable exception_sect proc_condition any_identifier -plsql_unreserved_keyword sql_expression atn: -[4, 1, 590, 8504, 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, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 2, 466, 7, 466, 1, 0, 5, 0, 936, 8, 0, 10, 0, 12, 0, 939, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 945, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1065, 8, 2, 3, 2, 1067, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 1076, 8, 4, 1, 4, 5, 4, 1079, 8, 4, 10, 4, 12, 4, 1082, 9, 4, 1, 5, 1, 5, 1, 5, 3, 5, 1087, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 1122, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 1132, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 1138, 8, 7, 1, 7, 5, 7, 1141, 8, 7, 10, 7, 12, 7, 1144, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1150, 8, 8, 1, 8, 5, 8, 1153, 8, 8, 10, 8, 12, 8, 1156, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1162, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1173, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 5, 11, 1179, 8, 11, 10, 11, 12, 11, 1182, 9, 11, 1, 11, 3, 11, 1185, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1197, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1203, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1209, 8, 12, 1, 12, 1, 12, 3, 12, 1213, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1218, 8, 12, 1, 12, 1, 12, 3, 12, 1222, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1235, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1245, 8, 12, 3, 12, 1247, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1253, 8, 13, 1, 13, 5, 13, 1256, 8, 13, 10, 13, 12, 13, 1259, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 1271, 8, 15, 1, 15, 3, 15, 1274, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1279, 8, 15, 1, 15, 5, 15, 1282, 8, 15, 10, 15, 12, 15, 1285, 9, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1295, 8, 17, 1, 18, 1, 18, 3, 18, 1299, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1311, 8, 19, 1, 20, 1, 20, 3, 20, 1315, 8, 20, 1, 20, 3, 20, 1318, 8, 20, 1, 20, 1, 20, 3, 20, 1322, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1334, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1352, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 1357, 8, 22, 10, 22, 12, 22, 1360, 9, 22, 1, 23, 1, 23, 1, 23, 5, 23, 1365, 8, 23, 10, 23, 12, 23, 1368, 9, 23, 1, 24, 1, 24, 3, 24, 1372, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1379, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1387, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1393, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1401, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1409, 8, 28, 1, 29, 1, 29, 3, 29, 1413, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 1427, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 1432, 8, 32, 1, 33, 1, 33, 1, 33, 3, 33, 1437, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1449, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1455, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 3, 38, 1467, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1472, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1482, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1488, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1493, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1501, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1506, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1513, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1518, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1523, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1533, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1538, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1543, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1550, 8, 38, 1, 38, 1, 38, 3, 38, 1554, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1568, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1574, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1580, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1585, 8, 38, 1, 39, 1, 39, 1, 39, 5, 39, 1590, 8, 39, 10, 39, 12, 39, 1593, 9, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1604, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 1610, 8, 41, 10, 41, 12, 41, 1613, 9, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 1620, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1636, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1645, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 1652, 8, 46, 10, 46, 12, 46, 1655, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1663, 8, 46, 1, 46, 1, 46, 3, 46, 1667, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1679, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1687, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1697, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1717, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1722, 8, 46, 1, 46, 3, 46, 1725, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1732, 8, 46, 1, 46, 3, 46, 1735, 8, 46, 1, 46, 1, 46, 3, 46, 1739, 8, 46, 1, 46, 1, 46, 3, 46, 1743, 8, 46, 1, 46, 3, 46, 1746, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1751, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1756, 8, 46, 1, 46, 1, 46, 3, 46, 1760, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1769, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1775, 8, 46, 1, 46, 1, 46, 3, 46, 1779, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1788, 8, 46, 1, 46, 3, 46, 1791, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1797, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1806, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 1816, 8, 46, 11, 46, 12, 46, 1817, 1, 46, 1, 46, 3, 46, 1822, 8, 46, 1, 46, 1, 46, 3, 46, 1826, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1831, 8, 46, 1, 46, 3, 46, 1834, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1840, 8, 46, 4, 46, 1842, 8, 46, 11, 46, 12, 46, 1843, 1, 46, 1, 46, 3, 46, 1848, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1854, 8, 46, 1, 46, 1, 46, 3, 46, 1858, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1863, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1868, 8, 46, 1, 46, 1, 46, 3, 46, 1872, 8, 46, 1, 46, 3, 46, 1875, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1882, 8, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1893, 8, 50, 10, 50, 12, 50, 1896, 9, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1908, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1920, 8, 53, 10, 53, 12, 53, 1923, 9, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1939, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1947, 8, 54, 10, 54, 12, 54, 1950, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1956, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1961, 8, 55, 1, 55, 1, 55, 3, 55, 1965, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1972, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1977, 8, 55, 1, 55, 3, 55, 1980, 8, 55, 3, 55, 1982, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 1987, 8, 56, 1, 57, 1, 57, 3, 57, 1991, 8, 57, 1, 57, 1, 57, 3, 57, 1995, 8, 57, 1, 57, 1, 57, 3, 57, 1999, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2004, 8, 57, 1, 57, 3, 57, 2007, 8, 57, 1, 57, 1, 57, 3, 57, 2011, 8, 57, 1, 57, 3, 57, 2014, 8, 57, 1, 57, 1, 57, 3, 57, 2018, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2026, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2031, 8, 57, 1, 57, 3, 57, 2034, 8, 57, 1, 57, 1, 57, 3, 57, 2038, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2044, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2053, 8, 58, 1, 58, 1, 58, 3, 58, 2057, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2063, 8, 58, 10, 58, 12, 58, 2066, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2072, 8, 58, 10, 58, 12, 58, 2075, 9, 58, 1, 58, 1, 58, 3, 58, 2079, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 2089, 8, 59, 10, 59, 12, 59, 2092, 9, 59, 1, 59, 1, 59, 3, 59, 2096, 8, 59, 1, 60, 1, 60, 3, 60, 2100, 8, 60, 1, 60, 1, 60, 3, 60, 2104, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2109, 8, 60, 1, 60, 1, 60, 3, 60, 2113, 8, 60, 1, 60, 3, 60, 2116, 8, 60, 1, 60, 3, 60, 2119, 8, 60, 1, 60, 3, 60, 2122, 8, 60, 1, 60, 3, 60, 2125, 8, 60, 1, 60, 3, 60, 2128, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2133, 8, 60, 1, 60, 3, 60, 2136, 8, 60, 1, 60, 3, 60, 2139, 8, 60, 1, 60, 3, 60, 2142, 8, 60, 1, 60, 3, 60, 2145, 8, 60, 1, 60, 3, 60, 2148, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2154, 8, 60, 1, 60, 1, 60, 3, 60, 2158, 8, 60, 1, 60, 3, 60, 2161, 8, 60, 1, 60, 3, 60, 2164, 8, 60, 1, 60, 3, 60, 2167, 8, 60, 1, 60, 3, 60, 2170, 8, 60, 3, 60, 2172, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2179, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 2185, 8, 62, 10, 62, 12, 62, 2188, 9, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 5, 63, 2195, 8, 63, 10, 63, 12, 63, 2198, 9, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 2205, 8, 64, 10, 64, 12, 64, 2208, 9, 64, 1, 64, 1, 64, 3, 64, 2212, 8, 64, 1, 64, 3, 64, 2215, 8, 64, 1, 65, 1, 65, 1, 65, 3, 65, 2220, 8, 65, 1, 65, 5, 65, 2223, 8, 65, 10, 65, 12, 65, 2226, 9, 65, 1, 65, 1, 65, 3, 65, 2230, 8, 65, 1, 65, 3, 65, 2233, 8, 65, 1, 66, 1, 66, 1, 66, 3, 66, 2238, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2247, 8, 66, 3, 66, 2249, 8, 66, 1, 66, 1, 66, 3, 66, 2253, 8, 66, 1, 66, 3, 66, 2256, 8, 66, 1, 66, 1, 66, 3, 66, 2260, 8, 66, 1, 66, 5, 66, 2263, 8, 66, 10, 66, 12, 66, 2266, 9, 66, 1, 67, 1, 67, 3, 67, 2270, 8, 67, 1, 67, 1, 67, 3, 67, 2274, 8, 67, 1, 67, 3, 67, 2277, 8, 67, 1, 67, 1, 67, 3, 67, 2281, 8, 67, 1, 68, 3, 68, 2284, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2289, 8, 68, 1, 68, 3, 68, 2292, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2297, 8, 68, 1, 68, 3, 68, 2300, 8, 68, 1, 68, 1, 68, 3, 68, 2304, 8, 68, 1, 68, 3, 68, 2307, 8, 68, 1, 68, 3, 68, 2310, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2315, 8, 68, 1, 68, 3, 68, 2318, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2326, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 4, 68, 2336, 8, 68, 11, 68, 12, 68, 2337, 1, 68, 1, 68, 3, 68, 2342, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2349, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2354, 8, 68, 1, 68, 3, 68, 2357, 8, 68, 1, 68, 3, 68, 2360, 8, 68, 1, 68, 3, 68, 2363, 8, 68, 1, 69, 1, 69, 1, 69, 3, 69, 2368, 8, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2377, 8, 71, 10, 71, 12, 71, 2380, 9, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2385, 8, 71, 1, 71, 1, 71, 3, 71, 2389, 8, 71, 1, 71, 3, 71, 2392, 8, 71, 1, 71, 3, 71, 2395, 8, 71, 1, 71, 5, 71, 2398, 8, 71, 10, 71, 12, 71, 2401, 9, 71, 1, 71, 1, 71, 5, 71, 2405, 8, 71, 10, 71, 12, 71, 2408, 9, 71, 3, 71, 2410, 8, 71, 1, 71, 1, 71, 3, 71, 2414, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2420, 8, 71, 10, 71, 12, 71, 2423, 9, 71, 1, 71, 1, 71, 3, 71, 2427, 8, 71, 1, 71, 3, 71, 2430, 8, 71, 1, 71, 3, 71, 2433, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2440, 8, 71, 1, 71, 5, 71, 2443, 8, 71, 10, 71, 12, 71, 2446, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2454, 8, 71, 1, 71, 3, 71, 2457, 8, 71, 1, 71, 3, 71, 2460, 8, 71, 1, 71, 5, 71, 2463, 8, 71, 10, 71, 12, 71, 2466, 9, 71, 3, 71, 2468, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2478, 8, 73, 10, 73, 12, 73, 2481, 9, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 5, 74, 2488, 8, 74, 10, 74, 12, 74, 2491, 9, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2507, 8, 77, 1, 78, 1, 78, 3, 78, 2511, 8, 78, 1, 78, 1, 78, 3, 78, 2515, 8, 78, 3, 78, 2517, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2534, 8, 81, 3, 81, 2536, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 5, 83, 2550, 8, 83, 10, 83, 12, 83, 2553, 9, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2563, 8, 84, 1, 84, 3, 84, 2566, 8, 84, 1, 84, 3, 84, 2569, 8, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2578, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 2587, 8, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 3, 91, 2603, 8, 91, 1, 91, 3, 91, 2606, 8, 91, 1, 91, 3, 91, 2609, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 5, 91, 2615, 8, 91, 10, 91, 12, 91, 2618, 9, 91, 1, 91, 3, 91, 2621, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 3, 92, 2628, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 2637, 8, 93, 1, 93, 1, 93, 3, 93, 2641, 8, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 2647, 8, 93, 1, 94, 1, 94, 3, 94, 2651, 8, 94, 1, 94, 3, 94, 2654, 8, 94, 1, 94, 3, 94, 2657, 8, 94, 1, 94, 3, 94, 2660, 8, 94, 1, 94, 3, 94, 2663, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2669, 8, 95, 1, 96, 1, 96, 3, 96, 2673, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2678, 8, 96, 1, 96, 1, 96, 3, 96, 2682, 8, 96, 1, 96, 3, 96, 2685, 8, 96, 1, 96, 3, 96, 2688, 8, 96, 1, 96, 3, 96, 2691, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2696, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 2702, 8, 97, 1, 97, 1, 97, 3, 97, 2706, 8, 97, 1, 98, 1, 98, 3, 98, 2710, 8, 98, 1, 98, 1, 98, 3, 98, 2714, 8, 98, 1, 98, 1, 98, 4, 98, 2718, 8, 98, 11, 98, 12, 98, 2719, 3, 98, 2722, 8, 98, 1, 99, 1, 99, 1, 99, 3, 99, 2727, 8, 99, 1, 99, 1, 99, 4, 99, 2731, 8, 99, 11, 99, 12, 99, 2732, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2739, 8, 100, 1, 100, 1, 100, 3, 100, 2743, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2758, 8, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2763, 8, 100, 1, 100, 3, 100, 2766, 8, 100, 3, 100, 2768, 8, 100, 1, 101, 3, 101, 2771, 8, 101, 1, 101, 1, 101, 3, 101, 2775, 8, 101, 1, 102, 1, 102, 3, 102, 2779, 8, 102, 1, 102, 3, 102, 2782, 8, 102, 1, 102, 3, 102, 2785, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2793, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2799, 8, 102, 3, 102, 2801, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2807, 8, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2812, 8, 103, 1, 104, 1, 104, 1, 104, 3, 104, 2817, 8, 104, 1, 104, 1, 104, 3, 104, 2821, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 2828, 8, 104, 10, 104, 12, 104, 2831, 9, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 2839, 8, 105, 10, 105, 12, 105, 2842, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 2880, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 4, 107, 2888, 8, 107, 11, 107, 12, 107, 2889, 3, 107, 2892, 8, 107, 1, 107, 3, 107, 2895, 8, 107, 1, 108, 1, 108, 3, 108, 2899, 8, 108, 1, 108, 1, 108, 3, 108, 2903, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 4, 109, 2911, 8, 109, 11, 109, 12, 109, 2912, 3, 109, 2915, 8, 109, 1, 109, 1, 109, 4, 109, 2919, 8, 109, 11, 109, 12, 109, 2920, 3, 109, 2923, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 5, 110, 2930, 8, 110, 10, 110, 12, 110, 2933, 9, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 5, 111, 2942, 8, 111, 10, 111, 12, 111, 2945, 9, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 3, 114, 2958, 8, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2963, 8, 114, 1, 114, 3, 114, 2966, 8, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2973, 8, 114, 1, 115, 1, 115, 1, 115, 3, 115, 2978, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 2986, 8, 116, 3, 116, 2988, 8, 116, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2994, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2999, 8, 117, 1, 117, 1, 117, 3, 117, 3003, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3008, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3014, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3021, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3027, 8, 117, 3, 117, 3029, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3038, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3044, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3052, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3058, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3063, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3068, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3076, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3091, 8, 121, 3, 121, 3093, 8, 121, 1, 121, 1, 121, 3, 121, 3097, 8, 121, 1, 121, 1, 121, 3, 121, 3101, 8, 121, 1, 121, 3, 121, 3104, 8, 121, 1, 121, 3, 121, 3107, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 3116, 8, 122, 1, 122, 3, 122, 3119, 8, 122, 1, 122, 3, 122, 3122, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3128, 8, 123, 1, 123, 1, 123, 5, 123, 3132, 8, 123, 10, 123, 12, 123, 3135, 9, 123, 1, 123, 3, 123, 3138, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3150, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3156, 8, 123, 1, 124, 3, 124, 3159, 8, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3164, 8, 124, 1, 124, 1, 124, 3, 124, 3168, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3175, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3185, 8, 124, 3, 124, 3187, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 3, 128, 3211, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3223, 8, 128, 1, 128, 4, 128, 3226, 8, 128, 11, 128, 12, 128, 3227, 3, 128, 3230, 8, 128, 1, 128, 1, 128, 3, 128, 3234, 8, 128, 1, 128, 3, 128, 3237, 8, 128, 1, 128, 3, 128, 3240, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3250, 8, 128, 1, 128, 3, 128, 3253, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3263, 8, 128, 1, 128, 5, 128, 3266, 8, 128, 10, 128, 12, 128, 3269, 9, 128, 1, 128, 1, 128, 3, 128, 3273, 8, 128, 1, 128, 3, 128, 3276, 8, 128, 1, 128, 3, 128, 3279, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3287, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 3293, 8, 129, 1, 130, 1, 130, 1, 130, 5, 130, 3298, 8, 130, 10, 130, 12, 130, 3301, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 3308, 8, 131, 1, 131, 3, 131, 3311, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3322, 8, 133, 1, 134, 1, 134, 3, 134, 3326, 8, 134, 1, 134, 1, 134, 5, 134, 3330, 8, 134, 10, 134, 12, 134, 3333, 9, 134, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 3339, 8, 135, 1, 136, 3, 136, 3342, 8, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 3351, 8, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 5, 137, 3363, 8, 137, 10, 137, 12, 137, 3366, 9, 137, 3, 137, 3368, 8, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 5, 138, 3380, 8, 138, 10, 138, 12, 138, 3383, 9, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 3393, 8, 139, 1, 139, 3, 139, 3396, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 5, 140, 3406, 8, 140, 10, 140, 12, 140, 3409, 9, 140, 1, 141, 1, 141, 3, 141, 3413, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 3424, 8, 141, 10, 141, 12, 141, 3427, 9, 141, 1, 141, 1, 141, 3, 141, 3431, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3444, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 3451, 8, 141, 10, 141, 12, 141, 3454, 9, 141, 3, 141, 3456, 8, 141, 1, 141, 3, 141, 3459, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3466, 8, 141, 1, 141, 3, 141, 3469, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3481, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3487, 8, 141, 3, 141, 3489, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 3495, 8, 142, 10, 142, 12, 142, 3498, 9, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 3, 143, 3505, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 3513, 8, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3525, 8, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3530, 8, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3541, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3552, 8, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3560, 8, 148, 1, 148, 1, 148, 1, 148, 1, 148, 5, 148, 3566, 8, 148, 10, 148, 12, 148, 3569, 9, 148, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3575, 8, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3582, 8, 149, 3, 149, 3584, 8, 149, 1, 149, 3, 149, 3587, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3592, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3597, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 3614, 8, 151, 10, 151, 12, 151, 3617, 9, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 3623, 8, 151, 10, 151, 12, 151, 3626, 9, 151, 3, 151, 3628, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3655, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3664, 8, 154, 1, 154, 3, 154, 3667, 8, 154, 1, 154, 1, 154, 3, 154, 3671, 8, 154, 1, 154, 1, 154, 3, 154, 3675, 8, 154, 1, 154, 1, 154, 3, 154, 3679, 8, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3684, 8, 154, 10, 154, 12, 154, 3687, 9, 154, 1, 154, 3, 154, 3690, 8, 154, 1, 154, 1, 154, 3, 154, 3694, 8, 154, 1, 154, 1, 154, 3, 154, 3698, 8, 154, 1, 154, 1, 154, 3, 154, 3702, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3707, 8, 154, 1, 154, 1, 154, 3, 154, 3711, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3716, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3722, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3727, 8, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3732, 8, 154, 10, 154, 12, 154, 3735, 9, 154, 1, 154, 3, 154, 3738, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3744, 8, 154, 1, 154, 1, 154, 3, 154, 3748, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3753, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3761, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3767, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3772, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3779, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3784, 8, 154, 1, 154, 1, 154, 3, 154, 3788, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3793, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3799, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3806, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3811, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3818, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3823, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3830, 8, 154, 1, 154, 1, 154, 3, 154, 3834, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3840, 8, 154, 10, 154, 12, 154, 3843, 9, 154, 1, 154, 3, 154, 3846, 8, 154, 3, 154, 3848, 8, 154, 1, 155, 3, 155, 3851, 8, 155, 1, 155, 1, 155, 1, 155, 3, 155, 3856, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 3866, 8, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 3881, 8, 156, 1, 156, 3, 156, 3884, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 3892, 8, 156, 1, 157, 1, 157, 1, 157, 5, 157, 3897, 8, 157, 10, 157, 12, 157, 3900, 9, 157, 1, 158, 1, 158, 3, 158, 3904, 8, 158, 1, 159, 1, 159, 4, 159, 3908, 8, 159, 11, 159, 12, 159, 3909, 1, 160, 1, 160, 3, 160, 3914, 8, 160, 1, 160, 1, 160, 1, 160, 5, 160, 3919, 8, 160, 10, 160, 12, 160, 3922, 9, 160, 1, 160, 1, 160, 3, 160, 3926, 8, 160, 1, 160, 3, 160, 3929, 8, 160, 1, 161, 3, 161, 3932, 8, 161, 1, 161, 1, 161, 3, 161, 3936, 8, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3945, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3963, 8, 162, 1, 162, 3, 162, 3966, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3998, 8, 162, 1, 162, 1, 162, 1, 162, 3, 162, 4003, 8, 162, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4009, 8, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4029, 8, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4034, 8, 163, 1, 164, 1, 164, 1, 164, 1, 165, 3, 165, 4040, 8, 165, 1, 165, 3, 165, 4043, 8, 165, 1, 165, 1, 165, 3, 165, 4047, 8, 165, 1, 165, 1, 165, 3, 165, 4051, 8, 165, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 4057, 8, 165, 1, 165, 3, 165, 4060, 8, 165, 1, 165, 1, 165, 3, 165, 4064, 8, 165, 1, 165, 1, 165, 3, 165, 4068, 8, 165, 1, 165, 1, 165, 1, 165, 3, 165, 4073, 8, 165, 1, 165, 3, 165, 4076, 8, 165, 1, 165, 3, 165, 4079, 8, 165, 1, 165, 3, 165, 4082, 8, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 4095, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 4101, 8, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 4109, 8, 168, 1, 169, 1, 169, 1, 169, 5, 169, 4114, 8, 169, 10, 169, 12, 169, 4117, 9, 169, 1, 169, 1, 169, 3, 169, 4121, 8, 169, 1, 169, 3, 169, 4124, 8, 169, 1, 169, 1, 169, 1, 169, 5, 169, 4129, 8, 169, 10, 169, 12, 169, 4132, 9, 169, 3, 169, 4134, 8, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 4142, 8, 171, 1, 171, 3, 171, 4145, 8, 171, 1, 172, 1, 172, 1, 172, 3, 172, 4150, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4157, 8, 172, 1, 172, 3, 172, 4160, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 5, 172, 4178, 8, 172, 10, 172, 12, 172, 4181, 9, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4192, 8, 172, 1, 173, 3, 173, 4195, 8, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 4201, 8, 173, 1, 173, 5, 173, 4204, 8, 173, 10, 173, 12, 173, 4207, 9, 173, 1, 174, 1, 174, 1, 174, 1, 174, 5, 174, 4213, 8, 174, 10, 174, 12, 174, 4216, 9, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 4223, 8, 174, 1, 174, 1, 174, 1, 174, 3, 174, 4228, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4234, 8, 175, 1, 175, 1, 175, 1, 175, 5, 175, 4239, 8, 175, 10, 175, 12, 175, 4242, 9, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4249, 8, 175, 1, 175, 3, 175, 4252, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 5, 176, 4263, 8, 176, 10, 176, 12, 176, 4266, 9, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4279, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4285, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4293, 8, 177, 3, 177, 4295, 8, 177, 1, 178, 1, 178, 1, 179, 1, 179, 3, 179, 4301, 8, 179, 1, 179, 1, 179, 3, 179, 4305, 8, 179, 1, 179, 3, 179, 4308, 8, 179, 1, 179, 3, 179, 4311, 8, 179, 1, 179, 1, 179, 1, 179, 3, 179, 4316, 8, 179, 1, 179, 1, 179, 1, 179, 3, 179, 4321, 8, 179, 1, 179, 1, 179, 3, 179, 4325, 8, 179, 1, 179, 3, 179, 4328, 8, 179, 1, 179, 3, 179, 4331, 8, 179, 1, 179, 3, 179, 4334, 8, 179, 1, 179, 3, 179, 4337, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 5, 180, 4343, 8, 180, 10, 180, 12, 180, 4346, 9, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 3, 181, 4356, 8, 181, 1, 181, 3, 181, 4359, 8, 181, 1, 181, 3, 181, 4362, 8, 181, 1, 181, 1, 181, 1, 181, 3, 181, 4367, 8, 181, 1, 181, 3, 181, 4370, 8, 181, 1, 181, 1, 181, 3, 181, 4374, 8, 181, 1, 182, 1, 182, 3, 182, 4378, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 4384, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4390, 8, 182, 10, 182, 12, 182, 4393, 9, 182, 3, 182, 4395, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4406, 8, 182, 10, 182, 12, 182, 4409, 9, 182, 1, 182, 1, 182, 3, 182, 4413, 8, 182, 3, 182, 4415, 8, 182, 1, 182, 4, 182, 4418, 8, 182, 11, 182, 12, 182, 4419, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 4427, 8, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 3, 184, 4434, 8, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 5, 185, 4441, 8, 185, 10, 185, 12, 185, 4444, 9, 185, 1, 186, 1, 186, 1, 186, 5, 186, 4449, 8, 186, 10, 186, 12, 186, 4452, 9, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 4459, 8, 187, 1, 188, 1, 188, 1, 188, 5, 188, 4464, 8, 188, 10, 188, 12, 188, 4467, 9, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 4474, 8, 189, 1, 190, 1, 190, 1, 190, 5, 190, 4479, 8, 190, 10, 190, 12, 190, 4482, 9, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 4489, 8, 191, 1, 192, 1, 192, 3, 192, 4493, 8, 192, 1, 192, 1, 192, 3, 192, 4497, 8, 192, 3, 192, 4499, 8, 192, 1, 192, 1, 192, 1, 193, 1, 193, 3, 193, 4505, 8, 193, 1, 193, 1, 193, 1, 193, 3, 193, 4510, 8, 193, 1, 194, 1, 194, 3, 194, 4514, 8, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 4521, 8, 194, 1, 195, 1, 195, 1, 195, 3, 195, 4526, 8, 195, 1, 196, 1, 196, 1, 196, 3, 196, 4531, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 4536, 8, 196, 3, 196, 4538, 8, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 3, 198, 4548, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4558, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4574, 8, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 5, 199, 4590, 8, 199, 10, 199, 12, 199, 4593, 9, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4604, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4611, 8, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 4626, 8, 202, 1, 202, 4, 202, 4629, 8, 202, 11, 202, 12, 202, 4630, 1, 202, 3, 202, 4634, 8, 202, 1, 203, 1, 203, 1, 203, 3, 203, 4639, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4644, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4649, 8, 203, 1, 203, 3, 203, 4652, 8, 203, 1, 203, 3, 203, 4655, 8, 203, 1, 204, 1, 204, 1, 204, 3, 204, 4660, 8, 204, 1, 204, 1, 204, 1, 204, 5, 204, 4665, 8, 204, 10, 204, 12, 204, 4668, 9, 204, 1, 204, 3, 204, 4671, 8, 204, 1, 205, 1, 205, 1, 205, 3, 205, 4676, 8, 205, 1, 205, 1, 205, 1, 205, 5, 205, 4681, 8, 205, 10, 205, 12, 205, 4684, 9, 205, 1, 205, 3, 205, 4687, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4693, 8, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4702, 8, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 5, 207, 4709, 8, 207, 10, 207, 12, 207, 4712, 9, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 4, 209, 4723, 8, 209, 11, 209, 12, 209, 4724, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 4738, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 4744, 8, 210, 1, 210, 1, 210, 3, 210, 4748, 8, 210, 3, 210, 4750, 8, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 3, 212, 4757, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 4770, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 4777, 8, 212, 3, 212, 4779, 8, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 5, 214, 4793, 8, 214, 10, 214, 12, 214, 4796, 9, 214, 1, 214, 3, 214, 4799, 8, 214, 1, 214, 1, 214, 3, 214, 4803, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4808, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4813, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4818, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4823, 8, 214, 1, 214, 3, 214, 4826, 8, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4838, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4891, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4900, 8, 216, 1, 216, 1, 216, 3, 216, 4904, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4913, 8, 216, 1, 216, 1, 216, 3, 216, 4917, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4926, 8, 216, 1, 216, 1, 216, 3, 216, 4930, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4935, 8, 216, 1, 216, 3, 216, 4938, 8, 216, 1, 216, 1, 216, 3, 216, 4942, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4947, 8, 216, 3, 216, 4949, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4958, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4963, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4974, 8, 216, 1, 216, 1, 216, 3, 216, 4978, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4992, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 5000, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 5038, 8, 216, 3, 216, 5040, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 5059, 8, 217, 1, 217, 3, 217, 5062, 8, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5089, 8, 218, 1, 218, 1, 218, 3, 218, 5093, 8, 218, 1, 218, 1, 218, 3, 218, 5097, 8, 218, 1, 218, 1, 218, 3, 218, 5101, 8, 218, 1, 218, 1, 218, 3, 218, 5105, 8, 218, 1, 218, 3, 218, 5108, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5123, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5130, 8, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 5, 220, 5142, 8, 220, 10, 220, 12, 220, 5145, 9, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 5157, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5182, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5201, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5216, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5232, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5239, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 5250, 8, 224, 1, 224, 3, 224, 5253, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 5270, 8, 225, 10, 225, 12, 225, 5273, 9, 225, 3, 225, 5275, 8, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 5, 226, 5286, 8, 226, 10, 226, 12, 226, 5289, 9, 226, 1, 226, 3, 226, 5292, 8, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5312, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 5, 227, 5322, 8, 227, 10, 227, 12, 227, 5325, 9, 227, 1, 227, 3, 227, 5328, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5350, 8, 227, 1, 228, 1, 228, 3, 228, 5354, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5364, 8, 228, 1, 228, 1, 228, 3, 228, 5368, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5374, 8, 228, 1, 228, 1, 228, 3, 228, 5378, 8, 228, 5, 228, 5380, 8, 228, 10, 228, 12, 228, 5383, 9, 228, 1, 228, 3, 228, 5386, 8, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 5393, 8, 229, 1, 230, 1, 230, 1, 230, 3, 230, 5398, 8, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 3, 233, 5409, 8, 233, 1, 234, 1, 234, 3, 234, 5413, 8, 234, 1, 234, 3, 234, 5416, 8, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5421, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5427, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5438, 8, 234, 1, 234, 1, 234, 3, 234, 5442, 8, 234, 1, 234, 3, 234, 5445, 8, 234, 1, 234, 1, 234, 3, 234, 5449, 8, 234, 1, 234, 1, 234, 3, 234, 5453, 8, 234, 1, 234, 3, 234, 5456, 8, 234, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 3, 236, 5466, 8, 236, 1, 236, 3, 236, 5469, 8, 236, 1, 237, 1, 237, 3, 237, 5473, 8, 237, 1, 237, 5, 237, 5476, 8, 237, 10, 237, 12, 237, 5479, 9, 237, 1, 238, 1, 238, 1, 238, 3, 238, 5484, 8, 238, 1, 238, 3, 238, 5487, 8, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5492, 8, 238, 1, 238, 3, 238, 5495, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5502, 8, 238, 3, 238, 5504, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5510, 8, 238, 1, 238, 1, 238, 3, 238, 5514, 8, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 5523, 8, 240, 1, 240, 4, 240, 5526, 8, 240, 11, 240, 12, 240, 5527, 3, 240, 5530, 8, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 3, 241, 5540, 8, 241, 1, 241, 3, 241, 5543, 8, 241, 1, 241, 1, 241, 1, 241, 3, 241, 5548, 8, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5556, 8, 242, 1, 242, 3, 242, 5559, 8, 242, 1, 242, 4, 242, 5562, 8, 242, 11, 242, 12, 242, 5563, 3, 242, 5566, 8, 242, 3, 242, 5568, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 5574, 8, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 5591, 8, 246, 1, 246, 1, 246, 5, 246, 5595, 8, 246, 10, 246, 12, 246, 5598, 9, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5610, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5616, 8, 247, 1, 247, 1, 247, 3, 247, 5620, 8, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5625, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5655, 8, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5670, 8, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5675, 8, 249, 1, 250, 1, 250, 3, 250, 5679, 8, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 3, 251, 5692, 8, 251, 1, 251, 1, 251, 3, 251, 5696, 8, 251, 3, 251, 5698, 8, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 5705, 8, 251, 10, 251, 12, 251, 5708, 9, 251, 1, 251, 1, 251, 1, 251, 3, 251, 5713, 8, 251, 3, 251, 5715, 8, 251, 1, 252, 1, 252, 3, 252, 5719, 8, 252, 1, 252, 3, 252, 5722, 8, 252, 1, 252, 3, 252, 5725, 8, 252, 1, 252, 3, 252, 5728, 8, 252, 1, 252, 3, 252, 5731, 8, 252, 3, 252, 5733, 8, 252, 1, 252, 3, 252, 5736, 8, 252, 1, 253, 1, 253, 3, 253, 5740, 8, 253, 1, 253, 1, 253, 1, 253, 1, 253, 5, 253, 5746, 8, 253, 10, 253, 12, 253, 5749, 9, 253, 1, 253, 1, 253, 3, 253, 5753, 8, 253, 1, 253, 3, 253, 5756, 8, 253, 1, 254, 1, 254, 1, 255, 1, 255, 3, 255, 5762, 8, 255, 1, 255, 1, 255, 3, 255, 5766, 8, 255, 1, 256, 1, 256, 3, 256, 5770, 8, 256, 1, 256, 1, 256, 1, 256, 3, 256, 5775, 8, 256, 3, 256, 5777, 8, 256, 1, 257, 1, 257, 3, 257, 5781, 8, 257, 1, 258, 1, 258, 3, 258, 5785, 8, 258, 1, 259, 1, 259, 1, 259, 5, 259, 5790, 8, 259, 10, 259, 12, 259, 5793, 9, 259, 1, 260, 1, 260, 1, 260, 3, 260, 5798, 8, 260, 1, 260, 1, 260, 3, 260, 5802, 8, 260, 3, 260, 5804, 8, 260, 3, 260, 5806, 8, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5819, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 5825, 8, 262, 10, 262, 12, 262, 5828, 9, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 3, 263, 5835, 8, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 5, 264, 5844, 8, 264, 10, 264, 12, 264, 5847, 9, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 3, 265, 5855, 8, 265, 1, 266, 1, 266, 1, 266, 3, 266, 5860, 8, 266, 1, 266, 1, 266, 3, 266, 5864, 8, 266, 1, 266, 1, 266, 3, 266, 5868, 8, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 3, 266, 5875, 8, 266, 1, 266, 3, 266, 5878, 8, 266, 3, 266, 5880, 8, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 3, 268, 5888, 8, 268, 1, 268, 1, 268, 3, 268, 5892, 8, 268, 1, 269, 3, 269, 5895, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5902, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5909, 8, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5914, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5921, 8, 269, 1, 269, 3, 269, 5924, 8, 269, 3, 269, 5926, 8, 269, 1, 269, 3, 269, 5929, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 5935, 8, 270, 1, 270, 1, 270, 1, 270, 3, 270, 5940, 8, 270, 1, 270, 1, 270, 3, 270, 5944, 8, 270, 1, 271, 1, 271, 1, 271, 5, 271, 5949, 8, 271, 10, 271, 12, 271, 5952, 9, 271, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 274, 3, 274, 5961, 8, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 5968, 8, 274, 1, 274, 3, 274, 5971, 8, 274, 1, 274, 3, 274, 5974, 8, 274, 1, 275, 1, 275, 3, 275, 5978, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 5989, 8, 275, 1, 275, 3, 275, 5992, 8, 275, 1, 275, 3, 275, 5995, 8, 275, 1, 275, 3, 275, 5998, 8, 275, 1, 276, 3, 276, 6001, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6008, 8, 276, 1, 276, 3, 276, 6011, 8, 276, 1, 276, 3, 276, 6014, 8, 276, 1, 277, 1, 277, 1, 277, 5, 277, 6019, 8, 277, 10, 277, 12, 277, 6022, 9, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6033, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6040, 8, 278, 3, 278, 6042, 8, 278, 1, 279, 1, 279, 1, 279, 3, 279, 6047, 8, 279, 1, 279, 1, 279, 1, 279, 5, 279, 6052, 8, 279, 10, 279, 12, 279, 6055, 9, 279, 1, 279, 1, 279, 1, 279, 3, 279, 6060, 8, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 3, 280, 6067, 8, 280, 1, 281, 1, 281, 1, 281, 3, 281, 6072, 8, 281, 1, 281, 1, 281, 1, 282, 3, 282, 6077, 8, 282, 1, 282, 1, 282, 3, 282, 6081, 8, 282, 1, 282, 1, 282, 3, 282, 6085, 8, 282, 1, 282, 1, 282, 3, 282, 6089, 8, 282, 3, 282, 6091, 8, 282, 1, 283, 1, 283, 3, 283, 6095, 8, 283, 1, 284, 1, 284, 3, 284, 6099, 8, 284, 1, 284, 3, 284, 6102, 8, 284, 1, 284, 3, 284, 6105, 8, 284, 3, 284, 6107, 8, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6117, 8, 284, 3, 284, 6119, 8, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6124, 8, 284, 5, 284, 6126, 8, 284, 10, 284, 12, 284, 6129, 9, 284, 1, 285, 1, 285, 3, 285, 6133, 8, 285, 1, 286, 1, 286, 3, 286, 6137, 8, 286, 1, 286, 1, 286, 1, 286, 5, 286, 6142, 8, 286, 10, 286, 12, 286, 6145, 9, 286, 1, 287, 1, 287, 3, 287, 6149, 8, 287, 1, 287, 1, 287, 3, 287, 6153, 8, 287, 1, 287, 3, 287, 6156, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 6162, 8, 287, 1, 287, 3, 287, 6165, 8, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 6184, 8, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 3, 290, 6191, 8, 290, 1, 290, 1, 290, 3, 290, 6195, 8, 290, 1, 291, 3, 291, 6198, 8, 291, 1, 291, 1, 291, 3, 291, 6202, 8, 291, 1, 291, 1, 291, 3, 291, 6206, 8, 291, 1, 291, 3, 291, 6209, 8, 291, 1, 291, 3, 291, 6212, 8, 291, 1, 292, 1, 292, 1, 292, 3, 292, 6217, 8, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 5, 293, 6224, 8, 293, 10, 293, 12, 293, 6227, 9, 293, 1, 294, 1, 294, 1, 294, 1, 294, 3, 294, 6233, 8, 294, 1, 294, 1, 294, 3, 294, 6237, 8, 294, 1, 295, 1, 295, 3, 295, 6241, 8, 295, 1, 295, 1, 295, 3, 295, 6245, 8, 295, 1, 295, 3, 295, 6248, 8, 295, 3, 295, 6250, 8, 295, 1, 296, 1, 296, 1, 296, 3, 296, 6255, 8, 296, 1, 296, 1, 296, 3, 296, 6259, 8, 296, 1, 297, 1, 297, 1, 297, 3, 297, 6264, 8, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6270, 8, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 6277, 8, 298, 1, 299, 1, 299, 1, 299, 3, 299, 6282, 8, 299, 1, 300, 1, 300, 1, 300, 3, 300, 6287, 8, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 5, 301, 6294, 8, 301, 10, 301, 12, 301, 6297, 9, 301, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6303, 8, 302, 1, 302, 1, 302, 1, 302, 1, 302, 5, 302, 6309, 8, 302, 10, 302, 12, 302, 6312, 9, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6322, 8, 302, 1, 303, 1, 303, 1, 303, 3, 303, 6327, 8, 303, 1, 303, 1, 303, 3, 303, 6331, 8, 303, 1, 303, 3, 303, 6334, 8, 303, 1, 303, 1, 303, 3, 303, 6338, 8, 303, 1, 303, 1, 303, 1, 303, 3, 303, 6343, 8, 303, 4, 303, 6345, 8, 303, 11, 303, 12, 303, 6346, 1, 303, 1, 303, 1, 303, 3, 303, 6352, 8, 303, 1, 304, 1, 304, 1, 304, 1, 304, 5, 304, 6358, 8, 304, 10, 304, 12, 304, 6361, 9, 304, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 5, 306, 6369, 8, 306, 10, 306, 12, 306, 6372, 9, 306, 1, 307, 1, 307, 3, 307, 6376, 8, 307, 1, 307, 1, 307, 3, 307, 6380, 8, 307, 1, 307, 3, 307, 6383, 8, 307, 1, 307, 3, 307, 6386, 8, 307, 3, 307, 6388, 8, 307, 1, 307, 3, 307, 6391, 8, 307, 1, 307, 3, 307, 6394, 8, 307, 1, 307, 3, 307, 6397, 8, 307, 1, 307, 1, 307, 3, 307, 6401, 8, 307, 1, 307, 1, 307, 3, 307, 6405, 8, 307, 1, 307, 1, 307, 3, 307, 6409, 8, 307, 3, 307, 6411, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6420, 8, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6425, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6431, 8, 307, 1, 307, 1, 307, 3, 307, 6435, 8, 307, 3, 307, 6437, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6444, 8, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6449, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 5, 307, 6455, 8, 307, 10, 307, 12, 307, 6458, 9, 307, 1, 308, 3, 308, 6461, 8, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 3, 308, 6468, 8, 308, 1, 309, 1, 309, 1, 309, 3, 309, 6473, 8, 309, 1, 309, 3, 309, 6476, 8, 309, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 6482, 8, 309, 1, 310, 1, 310, 3, 310, 6486, 8, 310, 1, 311, 1, 311, 1, 311, 1, 311, 3, 311, 6492, 8, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6501, 8, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6507, 8, 312, 3, 312, 6509, 8, 312, 1, 313, 1, 313, 1, 313, 3, 313, 6514, 8, 313, 1, 313, 3, 313, 6517, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6526, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6533, 8, 313, 3, 313, 6535, 8, 313, 1, 314, 1, 314, 1, 314, 5, 314, 6540, 8, 314, 10, 314, 12, 314, 6543, 9, 314, 1, 315, 1, 315, 3, 315, 6547, 8, 315, 1, 315, 3, 315, 6550, 8, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 3, 316, 6560, 8, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 5, 317, 6569, 8, 317, 10, 317, 12, 317, 6572, 9, 317, 1, 317, 1, 317, 3, 317, 6576, 8, 317, 1, 317, 1, 317, 3, 317, 6580, 8, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 3, 318, 6588, 8, 318, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 3, 320, 6598, 8, 320, 1, 321, 1, 321, 1, 321, 5, 321, 6603, 8, 321, 10, 321, 12, 321, 6606, 9, 321, 1, 322, 1, 322, 1, 322, 3, 322, 6611, 8, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 5, 323, 6620, 8, 323, 10, 323, 12, 323, 6623, 9, 323, 1, 323, 1, 323, 1, 323, 3, 323, 6628, 8, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 5, 323, 6636, 8, 323, 10, 323, 12, 323, 6639, 9, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 3, 324, 6647, 8, 324, 1, 324, 1, 324, 3, 324, 6651, 8, 324, 1, 324, 4, 324, 6654, 8, 324, 11, 324, 12, 324, 6655, 3, 324, 6658, 8, 324, 1, 324, 1, 324, 3, 324, 6662, 8, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 6670, 8, 325, 1, 326, 3, 326, 6673, 8, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6678, 8, 326, 1, 326, 5, 326, 6681, 8, 326, 10, 326, 12, 326, 6684, 9, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6690, 8, 326, 3, 326, 6692, 8, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6698, 8, 326, 1, 327, 1, 327, 3, 327, 6702, 8, 327, 1, 327, 3, 327, 6705, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 6710, 8, 327, 1, 327, 3, 327, 6713, 8, 327, 3, 327, 6715, 8, 327, 1, 328, 1, 328, 1, 328, 1, 328, 3, 328, 6721, 8, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 6730, 8, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 6736, 8, 329, 1, 329, 3, 329, 6739, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 3, 331, 6747, 8, 331, 1, 331, 3, 331, 6750, 8, 331, 1, 332, 1, 332, 3, 332, 6754, 8, 332, 1, 332, 1, 332, 1, 332, 1, 332, 3, 332, 6760, 8, 332, 3, 332, 6762, 8, 332, 1, 332, 3, 332, 6765, 8, 332, 1, 333, 1, 333, 3, 333, 6769, 8, 333, 1, 333, 1, 333, 1, 333, 3, 333, 6774, 8, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6781, 8, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6788, 8, 334, 3, 334, 6790, 8, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6796, 8, 334, 3, 334, 6798, 8, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6803, 8, 334, 3, 334, 6805, 8, 334, 1, 335, 1, 335, 3, 335, 6809, 8, 335, 1, 336, 1, 336, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 3, 338, 6818, 8, 338, 1, 338, 1, 338, 3, 338, 6822, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 5, 338, 6830, 8, 338, 10, 338, 12, 338, 6833, 9, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6846, 8, 339, 1, 339, 3, 339, 6849, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6857, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 5, 339, 6864, 8, 339, 10, 339, 12, 339, 6867, 9, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6872, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6877, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6885, 8, 339, 3, 339, 6887, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6892, 8, 339, 1, 339, 1, 339, 3, 339, 6896, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6901, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6906, 8, 339, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 6912, 8, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 5, 340, 6928, 8, 340, 10, 340, 12, 340, 6931, 9, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6939, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6954, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6959, 8, 341, 1, 341, 3, 341, 6962, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6968, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6973, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6986, 8, 341, 1, 341, 4, 341, 6989, 8, 341, 11, 341, 12, 341, 6990, 1, 341, 1, 341, 3, 341, 6995, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7002, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7021, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7033, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7038, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7046, 8, 341, 5, 341, 7048, 8, 341, 10, 341, 12, 341, 7051, 9, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7059, 8, 342, 1, 342, 3, 342, 7062, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7067, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7072, 8, 342, 1, 342, 1, 342, 3, 342, 7076, 8, 342, 1, 342, 3, 342, 7079, 8, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7088, 8, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7096, 8, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7101, 8, 343, 3, 343, 7103, 8, 343, 1, 343, 3, 343, 7106, 8, 343, 1, 344, 1, 344, 3, 344, 7110, 8, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7121, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7142, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7150, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7163, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7173, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7179, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7185, 8, 345, 1, 345, 3, 345, 7188, 8, 345, 1, 345, 3, 345, 7191, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7217, 8, 345, 3, 345, 7219, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7240, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7250, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7263, 8, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7268, 8, 345, 1, 345, 1, 345, 3, 345, 7272, 8, 345, 3, 345, 7274, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7286, 8, 345, 1, 346, 1, 346, 1, 346, 5, 346, 7291, 8, 346, 10, 346, 12, 346, 7294, 9, 346, 1, 347, 1, 347, 1, 347, 3, 347, 7299, 8, 347, 1, 348, 1, 348, 1, 349, 1, 349, 3, 349, 7305, 8, 349, 1, 349, 1, 349, 3, 349, 7309, 8, 349, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 5, 351, 7318, 8, 351, 10, 351, 12, 351, 7321, 9, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 3, 353, 7330, 8, 353, 1, 354, 1, 354, 3, 354, 7334, 8, 354, 1, 354, 1, 354, 1, 354, 3, 354, 7339, 8, 354, 1, 354, 3, 354, 7342, 8, 354, 1, 354, 3, 354, 7345, 8, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7354, 8, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7365, 8, 355, 3, 355, 7367, 8, 355, 1, 356, 1, 356, 3, 356, 7371, 8, 356, 1, 356, 1, 356, 1, 356, 3, 356, 7376, 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 3, 357, 7385, 8, 357, 1, 358, 1, 358, 1, 358, 3, 358, 7390, 8, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 360, 1, 360, 3, 360, 7398, 8, 360, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 3, 362, 7408, 8, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7416, 8, 363, 1, 364, 1, 364, 3, 364, 7420, 8, 364, 1, 364, 3, 364, 7423, 8, 364, 1, 365, 1, 365, 1, 365, 5, 365, 7428, 8, 365, 10, 365, 12, 365, 7431, 9, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 3, 366, 7438, 8, 366, 1, 367, 1, 367, 3, 367, 7442, 8, 367, 1, 368, 1, 368, 1, 368, 5, 368, 7447, 8, 368, 10, 368, 12, 368, 7450, 9, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 3, 369, 7457, 8, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 5, 370, 7464, 8, 370, 10, 370, 12, 370, 7467, 9, 370, 3, 370, 7469, 8, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 3, 371, 7481, 8, 371, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7490, 8, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7497, 8, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7506, 8, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 3, 375, 7516, 8, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7521, 8, 375, 1, 375, 1, 375, 3, 375, 7525, 8, 375, 3, 375, 7527, 8, 375, 1, 375, 3, 375, 7530, 8, 375, 1, 376, 4, 376, 7533, 8, 376, 11, 376, 12, 376, 7534, 1, 377, 5, 377, 7538, 8, 377, 10, 377, 12, 377, 7541, 9, 377, 1, 378, 1, 378, 1, 378, 5, 378, 7546, 8, 378, 10, 378, 12, 378, 7549, 9, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 3, 379, 7556, 8, 379, 1, 379, 3, 379, 7559, 8, 379, 1, 380, 1, 380, 1, 380, 5, 380, 7564, 8, 380, 10, 380, 12, 380, 7567, 9, 380, 1, 381, 1, 381, 1, 381, 5, 381, 7572, 8, 381, 10, 381, 12, 381, 7575, 9, 381, 1, 382, 1, 382, 1, 382, 5, 382, 7580, 8, 382, 10, 382, 12, 382, 7583, 9, 382, 1, 383, 1, 383, 1, 383, 5, 383, 7588, 8, 383, 10, 383, 12, 383, 7591, 9, 383, 1, 384, 1, 384, 1, 385, 1, 385, 1, 386, 1, 386, 1, 387, 1, 387, 1, 388, 1, 388, 1, 389, 1, 389, 1, 390, 1, 390, 3, 390, 7607, 8, 390, 1, 391, 1, 391, 1, 391, 5, 391, 7612, 8, 391, 10, 391, 12, 391, 7615, 9, 391, 1, 392, 1, 392, 1, 392, 5, 392, 7620, 8, 392, 10, 392, 12, 392, 7623, 9, 392, 1, 393, 1, 393, 1, 394, 1, 394, 1, 395, 1, 395, 1, 396, 1, 396, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 3, 398, 7639, 8, 398, 1, 399, 1, 399, 1, 399, 1, 399, 3, 399, 7645, 8, 399, 1, 400, 1, 400, 1, 400, 1, 400, 3, 400, 7651, 8, 400, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7659, 8, 402, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7665, 8, 403, 1, 404, 1, 404, 1, 404, 3, 404, 7670, 8, 404, 1, 405, 1, 405, 1, 405, 1, 405, 5, 405, 7676, 8, 405, 10, 405, 12, 405, 7679, 9, 405, 1, 405, 1, 405, 3, 405, 7683, 8, 405, 1, 406, 3, 406, 7686, 8, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 3, 407, 7695, 8, 407, 1, 408, 1, 408, 1, 408, 5, 408, 7700, 8, 408, 10, 408, 12, 408, 7703, 9, 408, 1, 409, 1, 409, 1, 409, 1, 409, 3, 409, 7709, 8, 409, 1, 410, 1, 410, 1, 410, 1, 410, 3, 410, 7715, 8, 410, 1, 411, 1, 411, 1, 411, 1, 411, 3, 411, 7721, 8, 411, 1, 412, 1, 412, 1, 412, 3, 412, 7726, 8, 412, 1, 413, 1, 413, 1, 413, 3, 413, 7731, 8, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 3, 413, 7739, 8, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 3, 415, 7794, 8, 415, 1, 416, 1, 416, 1, 417, 1, 417, 1, 418, 3, 418, 7801, 8, 418, 1, 418, 1, 418, 1, 418, 1, 418, 4, 418, 7807, 8, 418, 11, 418, 12, 418, 7808, 3, 418, 7811, 8, 418, 3, 418, 7813, 8, 418, 1, 418, 1, 418, 5, 418, 7817, 8, 418, 10, 418, 12, 418, 7820, 9, 418, 1, 418, 3, 418, 7823, 8, 418, 1, 418, 1, 418, 3, 418, 7827, 8, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 3, 420, 7838, 8, 420, 1, 420, 3, 420, 7841, 8, 420, 1, 420, 1, 420, 3, 420, 7845, 8, 420, 1, 420, 1, 420, 3, 420, 7849, 8, 420, 1, 420, 1, 420, 3, 420, 7853, 8, 420, 1, 420, 3, 420, 7856, 8, 420, 1, 420, 3, 420, 7859, 8, 420, 1, 420, 3, 420, 7862, 8, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 5, 420, 7869, 8, 420, 10, 420, 12, 420, 7872, 9, 420, 1, 420, 1, 420, 3, 420, 7876, 8, 420, 1, 420, 1, 420, 3, 420, 7880, 8, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 3, 423, 7913, 8, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7923, 8, 425, 1, 425, 1, 425, 3, 425, 7927, 8, 425, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7933, 8, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7938, 8, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 3, 427, 7947, 8, 427, 1, 427, 1, 427, 1, 427, 1, 427, 5, 427, 7953, 8, 427, 10, 427, 12, 427, 7956, 9, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 3, 429, 7966, 8, 429, 1, 429, 1, 429, 1, 429, 1, 429, 5, 429, 7972, 8, 429, 10, 429, 12, 429, 7975, 9, 429, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 7981, 8, 430, 10, 430, 12, 430, 7984, 9, 430, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 7990, 8, 430, 10, 430, 12, 430, 7993, 9, 430, 5, 430, 7995, 8, 430, 10, 430, 12, 430, 7998, 9, 430, 1, 430, 3, 430, 8001, 8, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 5, 431, 8009, 8, 431, 10, 431, 12, 431, 8012, 9, 431, 1, 432, 1, 432, 3, 432, 8016, 8, 432, 1, 432, 1, 432, 1, 432, 1, 432, 5, 432, 8022, 8, 432, 10, 432, 12, 432, 8025, 9, 432, 4, 432, 8027, 8, 432, 11, 432, 12, 432, 8028, 1, 432, 3, 432, 8032, 8, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 3, 433, 8039, 8, 433, 1, 433, 1, 433, 1, 433, 1, 433, 3, 433, 8045, 8, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8053, 8, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8061, 8, 434, 1, 434, 3, 434, 8064, 8, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8071, 8, 434, 3, 434, 8073, 8, 434, 1, 435, 3, 435, 8076, 8, 435, 1, 435, 1, 435, 1, 435, 1, 435, 3, 435, 8082, 8, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 3, 436, 8091, 8, 436, 1, 436, 1, 436, 3, 436, 8095, 8, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 3, 437, 8109, 8, 437, 1, 437, 3, 437, 8112, 8, 437, 3, 437, 8114, 8, 437, 1, 437, 1, 437, 1, 438, 1, 438, 3, 438, 8120, 8, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 4, 438, 8128, 8, 438, 11, 438, 12, 438, 8129, 3, 438, 8132, 8, 438, 3, 438, 8134, 8, 438, 1, 438, 1, 438, 1, 438, 1, 438, 5, 438, 8140, 8, 438, 10, 438, 12, 438, 8143, 9, 438, 3, 438, 8145, 8, 438, 1, 438, 3, 438, 8148, 8, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 3, 440, 8158, 8, 440, 1, 440, 1, 440, 1, 441, 1, 441, 5, 441, 8164, 8, 441, 10, 441, 12, 441, 8167, 9, 441, 1, 441, 1, 441, 1, 441, 3, 441, 8172, 8, 441, 1, 441, 1, 441, 1, 442, 1, 442, 3, 442, 8178, 8, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 3, 443, 8185, 8, 443, 1, 443, 1, 443, 3, 443, 8189, 8, 443, 1, 443, 1, 443, 3, 443, 8193, 8, 443, 1, 443, 3, 443, 8196, 8, 443, 1, 443, 3, 443, 8199, 8, 443, 1, 443, 1, 443, 1, 444, 1, 444, 3, 444, 8205, 8, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 3, 445, 8212, 8, 445, 1, 445, 3, 445, 8215, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 3, 445, 8223, 8, 445, 3, 445, 8225, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 5, 445, 8232, 8, 445, 10, 445, 12, 445, 8235, 9, 445, 1, 445, 1, 445, 3, 445, 8239, 8, 445, 3, 445, 8241, 8, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 3, 446, 8248, 8, 446, 1, 446, 1, 446, 1, 447, 1, 447, 3, 447, 8254, 8, 447, 1, 447, 3, 447, 8257, 8, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 8269, 8, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 8276, 8, 448, 3, 448, 8278, 8, 448, 1, 449, 1, 449, 3, 449, 8282, 8, 449, 1, 449, 1, 449, 1, 449, 1, 450, 3, 450, 8288, 8, 450, 1, 450, 1, 450, 1, 450, 3, 450, 8293, 8, 450, 1, 450, 1, 450, 3, 450, 8297, 8, 450, 1, 450, 3, 450, 8300, 8, 450, 1, 450, 3, 450, 8303, 8, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 4, 450, 8310, 8, 450, 11, 450, 12, 450, 8311, 1, 451, 3, 451, 8315, 8, 451, 1, 451, 1, 451, 3, 451, 8319, 8, 451, 1, 451, 1, 451, 3, 451, 8323, 8, 451, 3, 451, 8325, 8, 451, 1, 451, 3, 451, 8328, 8, 451, 1, 451, 3, 451, 8331, 8, 451, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8337, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8344, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8351, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8357, 8, 452, 3, 452, 8359, 8, 452, 1, 453, 1, 453, 3, 453, 8363, 8, 453, 1, 453, 1, 453, 1, 453, 3, 453, 8368, 8, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 5, 454, 8384, 8, 454, 10, 454, 12, 454, 8387, 9, 454, 1, 454, 1, 454, 4, 454, 8391, 8, 454, 11, 454, 12, 454, 8392, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 5, 455, 8400, 8, 455, 10, 455, 12, 455, 8403, 9, 455, 1, 455, 1, 455, 1, 455, 1, 455, 3, 455, 8409, 8, 455, 1, 456, 1, 456, 3, 456, 8413, 8, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 3, 459, 8425, 8, 459, 1, 459, 3, 459, 8428, 8, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 3, 460, 8441, 8, 460, 1, 460, 3, 460, 8444, 8, 460, 1, 461, 1, 461, 3, 461, 8448, 8, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 5, 462, 8455, 8, 462, 10, 462, 12, 462, 8458, 9, 462, 1, 462, 1, 462, 5, 462, 8462, 8, 462, 10, 462, 12, 462, 8465, 9, 462, 4, 462, 8467, 8, 462, 11, 462, 12, 462, 8468, 1, 463, 1, 463, 1, 463, 3, 463, 8474, 8, 463, 1, 464, 1, 464, 3, 464, 8478, 8, 464, 1, 465, 1, 465, 1, 466, 3, 466, 8483, 8, 466, 1, 466, 3, 466, 8486, 8, 466, 1, 466, 3, 466, 8489, 8, 466, 1, 466, 3, 466, 8492, 8, 466, 1, 466, 3, 466, 8495, 8, 466, 1, 466, 1, 466, 3, 466, 8499, 8, 466, 1, 466, 3, 466, 8502, 8, 466, 1, 466, 0, 3, 676, 680, 682, 467, 0, 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, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 932, 0, 119, 2, 0, 195, 195, 364, 364, 2, 0, 66, 66, 318, 318, 2, 0, 99, 99, 318, 318, 2, 0, 134, 134, 318, 318, 1, 0, 529, 531, 2, 0, 10, 10, 94, 94, 2, 0, 133, 133, 191, 191, 2, 0, 254, 254, 332, 332, 2, 0, 162, 162, 363, 363, 2, 0, 180, 180, 221, 221, 5, 0, 30, 30, 288, 288, 329, 329, 352, 352, 354, 354, 2, 0, 109, 109, 532, 532, 2, 0, 158, 158, 277, 277, 2, 0, 367, 367, 439, 439, 2, 0, 139, 139, 312, 312, 2, 0, 191, 191, 333, 333, 2, 0, 313, 313, 333, 333, 2, 0, 150, 150, 315, 315, 2, 0, 64, 64, 94, 94, 4, 0, 78, 78, 183, 183, 197, 197, 298, 298, 2, 0, 213, 213, 254, 254, 2, 0, 352, 352, 354, 354, 2, 0, 200, 200, 224, 224, 9, 0, 30, 30, 160, 160, 165, 165, 179, 179, 219, 219, 227, 227, 342, 342, 345, 345, 438, 438, 3, 0, 113, 113, 284, 284, 336, 336, 2, 0, 53, 53, 78, 78, 2, 0, 105, 105, 379, 379, 2, 0, 260, 260, 262, 262, 3, 0, 173, 173, 260, 260, 262, 262, 1, 0, 12, 13, 2, 0, 64, 64, 375, 375, 2, 0, 156, 156, 206, 206, 2, 0, 189, 189, 360, 360, 2, 0, 215, 215, 373, 373, 3, 0, 133, 133, 191, 191, 333, 333, 5, 0, 30, 30, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 9, 9, 94, 94, 2, 0, 92, 92, 226, 226, 1, 0, 448, 449, 2, 0, 92, 92, 414, 414, 2, 0, 341, 341, 414, 414, 4, 0, 163, 163, 185, 185, 283, 283, 353, 353, 2, 0, 135, 135, 145, 145, 2, 0, 211, 211, 278, 278, 3, 0, 321, 321, 357, 357, 445, 445, 3, 0, 66, 66, 99, 99, 318, 318, 5, 0, 108, 108, 168, 168, 226, 226, 328, 328, 342, 342, 2, 0, 167, 167, 314, 314, 2, 0, 61, 61, 265, 265, 4, 0, 207, 207, 249, 249, 268, 268, 293, 293, 2, 0, 130, 130, 307, 307, 2, 0, 64, 64, 68, 68, 10, 0, 46, 46, 88, 88, 182, 182, 202, 202, 241, 241, 352, 352, 354, 354, 357, 358, 369, 369, 521, 523, 5, 0, 212, 212, 329, 329, 350, 350, 455, 455, 457, 457, 5, 0, 212, 212, 329, 329, 350, 350, 361, 361, 455, 456, 2, 0, 37, 37, 55, 55, 2, 0, 207, 207, 249, 249, 2, 0, 10, 10, 53, 53, 2, 0, 181, 181, 243, 243, 2, 0, 170, 170, 320, 320, 2, 0, 141, 141, 223, 223, 5, 0, 108, 108, 168, 168, 189, 189, 342, 342, 360, 360, 2, 0, 226, 226, 328, 328, 2, 0, 163, 163, 185, 185, 2, 0, 186, 186, 193, 193, 4, 0, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 137, 137, 242, 242, 2, 0, 161, 161, 319, 319, 4, 0, 129, 129, 161, 161, 319, 319, 454, 454, 2, 0, 356, 356, 380, 380, 2, 0, 81, 81, 382, 382, 2, 0, 151, 151, 254, 254, 2, 0, 133, 133, 138, 138, 1, 0, 31, 32, 2, 0, 128, 128, 547, 547, 2, 0, 60, 60, 96, 96, 2, 0, 99, 99, 349, 349, 2, 0, 131, 131, 414, 414, 2, 0, 201, 201, 334, 334, 3, 0, 59, 59, 70, 70, 97, 97, 2, 0, 30, 30, 56, 56, 1, 0, 527, 528, 2, 0, 207, 207, 268, 268, 2, 0, 320, 320, 414, 414, 2, 0, 571, 571, 573, 573, 1, 0, 468, 469, 4, 0, 113, 113, 115, 115, 119, 119, 126, 126, 2, 0, 360, 360, 477, 477, 2, 0, 394, 395, 409, 409, 2, 0, 391, 392, 406, 406, 1, 0, 391, 392, 1, 0, 418, 419, 5, 0, 10, 10, 16, 17, 21, 21, 23, 23, 25, 25, 3, 0, 9, 9, 14, 14, 27, 27, 2, 0, 98, 98, 396, 396, 2, 0, 50, 51, 75, 76, 2, 0, 41, 41, 420, 420, 3, 0, 39, 39, 73, 73, 95, 95, 4, 0, 393, 393, 399, 399, 404, 404, 425, 425, 2, 0, 292, 292, 347, 347, 2, 0, 166, 166, 188, 188, 2, 0, 304, 304, 450, 450, 3, 0, 299, 299, 320, 320, 481, 481, 2, 0, 208, 208, 289, 289, 3, 0, 30, 30, 34, 34, 90, 90, 6, 0, 9, 10, 12, 17, 21, 21, 23, 23, 25, 25, 27, 27, 2, 0, 114, 114, 120, 120, 2, 0, 20, 20, 22, 22, 1, 0, 483, 486, 10, 0, 124, 124, 129, 228, 238, 386, 433, 452, 455, 469, 471, 471, 473, 473, 475, 475, 478, 488, 547, 548, 3, 0, 106, 123, 125, 128, 472, 472, 4, 0, 30, 52, 54, 70, 72, 105, 454, 454, 2, 0, 62, 62, 116, 116, 2, 0, 10, 10, 20, 20, 2, 0, 434, 434, 501, 501, 2, 0, 167, 167, 507, 507, 1, 0, 512, 517, 2, 0, 144, 144, 210, 210, 36, 0, 33, 33, 35, 35, 43, 43, 45, 45, 53, 53, 57, 57, 61, 61, 116, 116, 123, 123, 130, 130, 144, 144, 153, 153, 157, 157, 161, 161, 167, 167, 172, 172, 207, 207, 210, 210, 241, 241, 249, 249, 265, 265, 268, 269, 279, 279, 293, 293, 307, 307, 313, 313, 319, 319, 323, 324, 333, 333, 360, 360, 433, 434, 477, 477, 490, 502, 504, 504, 506, 518, 520, 520, 9941, 0, 937, 1, 0, 0, 0, 2, 942, 1, 0, 0, 0, 4, 1066, 1, 0, 0, 0, 6, 1068, 1, 0, 0, 0, 8, 1071, 1, 0, 0, 0, 10, 1121, 1, 0, 0, 0, 12, 1131, 1, 0, 0, 0, 14, 1133, 1, 0, 0, 0, 16, 1145, 1, 0, 0, 0, 18, 1157, 1, 0, 0, 0, 20, 1168, 1, 0, 0, 0, 22, 1202, 1, 0, 0, 0, 24, 1246, 1, 0, 0, 0, 26, 1248, 1, 0, 0, 0, 28, 1260, 1, 0, 0, 0, 30, 1267, 1, 0, 0, 0, 32, 1286, 1, 0, 0, 0, 34, 1294, 1, 0, 0, 0, 36, 1296, 1, 0, 0, 0, 38, 1310, 1, 0, 0, 0, 40, 1314, 1, 0, 0, 0, 42, 1351, 1, 0, 0, 0, 44, 1353, 1, 0, 0, 0, 46, 1361, 1, 0, 0, 0, 48, 1371, 1, 0, 0, 0, 50, 1378, 1, 0, 0, 0, 52, 1386, 1, 0, 0, 0, 54, 1392, 1, 0, 0, 0, 56, 1408, 1, 0, 0, 0, 58, 1412, 1, 0, 0, 0, 60, 1414, 1, 0, 0, 0, 62, 1426, 1, 0, 0, 0, 64, 1431, 1, 0, 0, 0, 66, 1436, 1, 0, 0, 0, 68, 1438, 1, 0, 0, 0, 70, 1450, 1, 0, 0, 0, 72, 1458, 1, 0, 0, 0, 74, 1460, 1, 0, 0, 0, 76, 1584, 1, 0, 0, 0, 78, 1586, 1, 0, 0, 0, 80, 1603, 1, 0, 0, 0, 82, 1605, 1, 0, 0, 0, 84, 1619, 1, 0, 0, 0, 86, 1621, 1, 0, 0, 0, 88, 1635, 1, 0, 0, 0, 90, 1637, 1, 0, 0, 0, 92, 1874, 1, 0, 0, 0, 94, 1881, 1, 0, 0, 0, 96, 1883, 1, 0, 0, 0, 98, 1885, 1, 0, 0, 0, 100, 1888, 1, 0, 0, 0, 102, 1899, 1, 0, 0, 0, 104, 1902, 1, 0, 0, 0, 106, 1938, 1, 0, 0, 0, 108, 1940, 1, 0, 0, 0, 110, 1981, 1, 0, 0, 0, 112, 1983, 1, 0, 0, 0, 114, 2037, 1, 0, 0, 0, 116, 2078, 1, 0, 0, 0, 118, 2080, 1, 0, 0, 0, 120, 2097, 1, 0, 0, 0, 122, 2178, 1, 0, 0, 0, 124, 2180, 1, 0, 0, 0, 126, 2191, 1, 0, 0, 0, 128, 2214, 1, 0, 0, 0, 130, 2232, 1, 0, 0, 0, 132, 2234, 1, 0, 0, 0, 134, 2269, 1, 0, 0, 0, 136, 2362, 1, 0, 0, 0, 138, 2367, 1, 0, 0, 0, 140, 2369, 1, 0, 0, 0, 142, 2467, 1, 0, 0, 0, 144, 2469, 1, 0, 0, 0, 146, 2473, 1, 0, 0, 0, 148, 2484, 1, 0, 0, 0, 150, 2492, 1, 0, 0, 0, 152, 2495, 1, 0, 0, 0, 154, 2498, 1, 0, 0, 0, 156, 2516, 1, 0, 0, 0, 158, 2518, 1, 0, 0, 0, 160, 2522, 1, 0, 0, 0, 162, 2535, 1, 0, 0, 0, 164, 2537, 1, 0, 0, 0, 166, 2542, 1, 0, 0, 0, 168, 2562, 1, 0, 0, 0, 170, 2570, 1, 0, 0, 0, 172, 2577, 1, 0, 0, 0, 174, 2579, 1, 0, 0, 0, 176, 2588, 1, 0, 0, 0, 178, 2591, 1, 0, 0, 0, 180, 2595, 1, 0, 0, 0, 182, 2599, 1, 0, 0, 0, 184, 2624, 1, 0, 0, 0, 186, 2634, 1, 0, 0, 0, 188, 2648, 1, 0, 0, 0, 190, 2664, 1, 0, 0, 0, 192, 2670, 1, 0, 0, 0, 194, 2697, 1, 0, 0, 0, 196, 2707, 1, 0, 0, 0, 198, 2723, 1, 0, 0, 0, 200, 2767, 1, 0, 0, 0, 202, 2774, 1, 0, 0, 0, 204, 2776, 1, 0, 0, 0, 206, 2802, 1, 0, 0, 0, 208, 2813, 1, 0, 0, 0, 210, 2832, 1, 0, 0, 0, 212, 2843, 1, 0, 0, 0, 214, 2881, 1, 0, 0, 0, 216, 2902, 1, 0, 0, 0, 218, 2904, 1, 0, 0, 0, 220, 2924, 1, 0, 0, 0, 222, 2936, 1, 0, 0, 0, 224, 2948, 1, 0, 0, 0, 226, 2951, 1, 0, 0, 0, 228, 2954, 1, 0, 0, 0, 230, 2974, 1, 0, 0, 0, 232, 2979, 1, 0, 0, 0, 234, 3028, 1, 0, 0, 0, 236, 3030, 1, 0, 0, 0, 238, 3053, 1, 0, 0, 0, 240, 3069, 1, 0, 0, 0, 242, 3081, 1, 0, 0, 0, 244, 3108, 1, 0, 0, 0, 246, 3123, 1, 0, 0, 0, 248, 3186, 1, 0, 0, 0, 250, 3188, 1, 0, 0, 0, 252, 3193, 1, 0, 0, 0, 254, 3199, 1, 0, 0, 0, 256, 3286, 1, 0, 0, 0, 258, 3292, 1, 0, 0, 0, 260, 3294, 1, 0, 0, 0, 262, 3310, 1, 0, 0, 0, 264, 3312, 1, 0, 0, 0, 266, 3321, 1, 0, 0, 0, 268, 3325, 1, 0, 0, 0, 270, 3338, 1, 0, 0, 0, 272, 3350, 1, 0, 0, 0, 274, 3352, 1, 0, 0, 0, 276, 3374, 1, 0, 0, 0, 278, 3386, 1, 0, 0, 0, 280, 3397, 1, 0, 0, 0, 282, 3488, 1, 0, 0, 0, 284, 3490, 1, 0, 0, 0, 286, 3501, 1, 0, 0, 0, 288, 3512, 1, 0, 0, 0, 290, 3514, 1, 0, 0, 0, 292, 3540, 1, 0, 0, 0, 294, 3542, 1, 0, 0, 0, 296, 3546, 1, 0, 0, 0, 298, 3596, 1, 0, 0, 0, 300, 3598, 1, 0, 0, 0, 302, 3604, 1, 0, 0, 0, 304, 3629, 1, 0, 0, 0, 306, 3633, 1, 0, 0, 0, 308, 3847, 1, 0, 0, 0, 310, 3865, 1, 0, 0, 0, 312, 3891, 1, 0, 0, 0, 314, 3893, 1, 0, 0, 0, 316, 3901, 1, 0, 0, 0, 318, 3907, 1, 0, 0, 0, 320, 3911, 1, 0, 0, 0, 322, 3931, 1, 0, 0, 0, 324, 3937, 1, 0, 0, 0, 326, 4004, 1, 0, 0, 0, 328, 4035, 1, 0, 0, 0, 330, 4081, 1, 0, 0, 0, 332, 4083, 1, 0, 0, 0, 334, 4085, 1, 0, 0, 0, 336, 4096, 1, 0, 0, 0, 338, 4133, 1, 0, 0, 0, 340, 4135, 1, 0, 0, 0, 342, 4141, 1, 0, 0, 0, 344, 4191, 1, 0, 0, 0, 346, 4194, 1, 0, 0, 0, 348, 4208, 1, 0, 0, 0, 350, 4229, 1, 0, 0, 0, 352, 4253, 1, 0, 0, 0, 354, 4294, 1, 0, 0, 0, 356, 4296, 1, 0, 0, 0, 358, 4298, 1, 0, 0, 0, 360, 4338, 1, 0, 0, 0, 362, 4355, 1, 0, 0, 0, 364, 4375, 1, 0, 0, 0, 366, 4428, 1, 0, 0, 0, 368, 4431, 1, 0, 0, 0, 370, 4437, 1, 0, 0, 0, 372, 4445, 1, 0, 0, 0, 374, 4458, 1, 0, 0, 0, 376, 4460, 1, 0, 0, 0, 378, 4473, 1, 0, 0, 0, 380, 4475, 1, 0, 0, 0, 382, 4488, 1, 0, 0, 0, 384, 4498, 1, 0, 0, 0, 386, 4509, 1, 0, 0, 0, 388, 4520, 1, 0, 0, 0, 390, 4522, 1, 0, 0, 0, 392, 4527, 1, 0, 0, 0, 394, 4541, 1, 0, 0, 0, 396, 4573, 1, 0, 0, 0, 398, 4610, 1, 0, 0, 0, 400, 4612, 1, 0, 0, 0, 402, 4615, 1, 0, 0, 0, 404, 4618, 1, 0, 0, 0, 406, 4635, 1, 0, 0, 0, 408, 4656, 1, 0, 0, 0, 410, 4672, 1, 0, 0, 0, 412, 4688, 1, 0, 0, 0, 414, 4710, 1, 0, 0, 0, 416, 4715, 1, 0, 0, 0, 418, 4718, 1, 0, 0, 0, 420, 4726, 1, 0, 0, 0, 422, 4751, 1, 0, 0, 0, 424, 4754, 1, 0, 0, 0, 426, 4782, 1, 0, 0, 0, 428, 4787, 1, 0, 0, 0, 430, 4827, 1, 0, 0, 0, 432, 5039, 1, 0, 0, 0, 434, 5041, 1, 0, 0, 0, 436, 5129, 1, 0, 0, 0, 438, 5131, 1, 0, 0, 0, 440, 5137, 1, 0, 0, 0, 442, 5148, 1, 0, 0, 0, 444, 5158, 1, 0, 0, 0, 446, 5238, 1, 0, 0, 0, 448, 5240, 1, 0, 0, 0, 450, 5254, 1, 0, 0, 0, 452, 5276, 1, 0, 0, 0, 454, 5349, 1, 0, 0, 0, 456, 5351, 1, 0, 0, 0, 458, 5392, 1, 0, 0, 0, 460, 5394, 1, 0, 0, 0, 462, 5399, 1, 0, 0, 0, 464, 5402, 1, 0, 0, 0, 466, 5405, 1, 0, 0, 0, 468, 5455, 1, 0, 0, 0, 470, 5457, 1, 0, 0, 0, 472, 5468, 1, 0, 0, 0, 474, 5470, 1, 0, 0, 0, 476, 5480, 1, 0, 0, 0, 478, 5515, 1, 0, 0, 0, 480, 5518, 1, 0, 0, 0, 482, 5539, 1, 0, 0, 0, 484, 5549, 1, 0, 0, 0, 486, 5569, 1, 0, 0, 0, 488, 5575, 1, 0, 0, 0, 490, 5581, 1, 0, 0, 0, 492, 5586, 1, 0, 0, 0, 494, 5599, 1, 0, 0, 0, 496, 5626, 1, 0, 0, 0, 498, 5674, 1, 0, 0, 0, 500, 5676, 1, 0, 0, 0, 502, 5714, 1, 0, 0, 0, 504, 5716, 1, 0, 0, 0, 506, 5737, 1, 0, 0, 0, 508, 5757, 1, 0, 0, 0, 510, 5761, 1, 0, 0, 0, 512, 5776, 1, 0, 0, 0, 514, 5778, 1, 0, 0, 0, 516, 5782, 1, 0, 0, 0, 518, 5786, 1, 0, 0, 0, 520, 5794, 1, 0, 0, 0, 522, 5818, 1, 0, 0, 0, 524, 5820, 1, 0, 0, 0, 526, 5831, 1, 0, 0, 0, 528, 5839, 1, 0, 0, 0, 530, 5854, 1, 0, 0, 0, 532, 5879, 1, 0, 0, 0, 534, 5881, 1, 0, 0, 0, 536, 5885, 1, 0, 0, 0, 538, 5894, 1, 0, 0, 0, 540, 5934, 1, 0, 0, 0, 542, 5945, 1, 0, 0, 0, 544, 5953, 1, 0, 0, 0, 546, 5956, 1, 0, 0, 0, 548, 5960, 1, 0, 0, 0, 550, 5975, 1, 0, 0, 0, 552, 6000, 1, 0, 0, 0, 554, 6015, 1, 0, 0, 0, 556, 6041, 1, 0, 0, 0, 558, 6043, 1, 0, 0, 0, 560, 6066, 1, 0, 0, 0, 562, 6068, 1, 0, 0, 0, 564, 6076, 1, 0, 0, 0, 566, 6094, 1, 0, 0, 0, 568, 6118, 1, 0, 0, 0, 570, 6130, 1, 0, 0, 0, 572, 6134, 1, 0, 0, 0, 574, 6146, 1, 0, 0, 0, 576, 6166, 1, 0, 0, 0, 578, 6174, 1, 0, 0, 0, 580, 6188, 1, 0, 0, 0, 582, 6211, 1, 0, 0, 0, 584, 6213, 1, 0, 0, 0, 586, 6218, 1, 0, 0, 0, 588, 6228, 1, 0, 0, 0, 590, 6249, 1, 0, 0, 0, 592, 6251, 1, 0, 0, 0, 594, 6260, 1, 0, 0, 0, 596, 6271, 1, 0, 0, 0, 598, 6281, 1, 0, 0, 0, 600, 6283, 1, 0, 0, 0, 602, 6290, 1, 0, 0, 0, 604, 6321, 1, 0, 0, 0, 606, 6351, 1, 0, 0, 0, 608, 6353, 1, 0, 0, 0, 610, 6362, 1, 0, 0, 0, 612, 6365, 1, 0, 0, 0, 614, 6436, 1, 0, 0, 0, 616, 6460, 1, 0, 0, 0, 618, 6481, 1, 0, 0, 0, 620, 6483, 1, 0, 0, 0, 622, 6491, 1, 0, 0, 0, 624, 6508, 1, 0, 0, 0, 626, 6534, 1, 0, 0, 0, 628, 6536, 1, 0, 0, 0, 630, 6544, 1, 0, 0, 0, 632, 6551, 1, 0, 0, 0, 634, 6575, 1, 0, 0, 0, 636, 6581, 1, 0, 0, 0, 638, 6589, 1, 0, 0, 0, 640, 6592, 1, 0, 0, 0, 642, 6599, 1, 0, 0, 0, 644, 6607, 1, 0, 0, 0, 646, 6612, 1, 0, 0, 0, 648, 6642, 1, 0, 0, 0, 650, 6669, 1, 0, 0, 0, 652, 6697, 1, 0, 0, 0, 654, 6714, 1, 0, 0, 0, 656, 6720, 1, 0, 0, 0, 658, 6738, 1, 0, 0, 0, 660, 6740, 1, 0, 0, 0, 662, 6744, 1, 0, 0, 0, 664, 6761, 1, 0, 0, 0, 666, 6766, 1, 0, 0, 0, 668, 6804, 1, 0, 0, 0, 670, 6806, 1, 0, 0, 0, 672, 6810, 1, 0, 0, 0, 674, 6812, 1, 0, 0, 0, 676, 6821, 1, 0, 0, 0, 678, 6905, 1, 0, 0, 0, 680, 6911, 1, 0, 0, 0, 682, 7020, 1, 0, 0, 0, 684, 7052, 1, 0, 0, 0, 686, 7105, 1, 0, 0, 0, 688, 7109, 1, 0, 0, 0, 690, 7285, 1, 0, 0, 0, 692, 7287, 1, 0, 0, 0, 694, 7295, 1, 0, 0, 0, 696, 7300, 1, 0, 0, 0, 698, 7302, 1, 0, 0, 0, 700, 7310, 1, 0, 0, 0, 702, 7313, 1, 0, 0, 0, 704, 7322, 1, 0, 0, 0, 706, 7326, 1, 0, 0, 0, 708, 7331, 1, 0, 0, 0, 710, 7348, 1, 0, 0, 0, 712, 7375, 1, 0, 0, 0, 714, 7384, 1, 0, 0, 0, 716, 7386, 1, 0, 0, 0, 718, 7393, 1, 0, 0, 0, 720, 7397, 1, 0, 0, 0, 722, 7399, 1, 0, 0, 0, 724, 7407, 1, 0, 0, 0, 726, 7415, 1, 0, 0, 0, 728, 7422, 1, 0, 0, 0, 730, 7424, 1, 0, 0, 0, 732, 7437, 1, 0, 0, 0, 734, 7441, 1, 0, 0, 0, 736, 7443, 1, 0, 0, 0, 738, 7456, 1, 0, 0, 0, 740, 7458, 1, 0, 0, 0, 742, 7480, 1, 0, 0, 0, 744, 7482, 1, 0, 0, 0, 746, 7505, 1, 0, 0, 0, 748, 7507, 1, 0, 0, 0, 750, 7529, 1, 0, 0, 0, 752, 7532, 1, 0, 0, 0, 754, 7539, 1, 0, 0, 0, 756, 7542, 1, 0, 0, 0, 758, 7558, 1, 0, 0, 0, 760, 7560, 1, 0, 0, 0, 762, 7568, 1, 0, 0, 0, 764, 7576, 1, 0, 0, 0, 766, 7584, 1, 0, 0, 0, 768, 7592, 1, 0, 0, 0, 770, 7594, 1, 0, 0, 0, 772, 7596, 1, 0, 0, 0, 774, 7598, 1, 0, 0, 0, 776, 7600, 1, 0, 0, 0, 778, 7602, 1, 0, 0, 0, 780, 7604, 1, 0, 0, 0, 782, 7608, 1, 0, 0, 0, 784, 7616, 1, 0, 0, 0, 786, 7624, 1, 0, 0, 0, 788, 7626, 1, 0, 0, 0, 790, 7628, 1, 0, 0, 0, 792, 7630, 1, 0, 0, 0, 794, 7632, 1, 0, 0, 0, 796, 7638, 1, 0, 0, 0, 798, 7644, 1, 0, 0, 0, 800, 7650, 1, 0, 0, 0, 802, 7652, 1, 0, 0, 0, 804, 7658, 1, 0, 0, 0, 806, 7664, 1, 0, 0, 0, 808, 7666, 1, 0, 0, 0, 810, 7682, 1, 0, 0, 0, 812, 7685, 1, 0, 0, 0, 814, 7694, 1, 0, 0, 0, 816, 7696, 1, 0, 0, 0, 818, 7708, 1, 0, 0, 0, 820, 7714, 1, 0, 0, 0, 822, 7720, 1, 0, 0, 0, 824, 7725, 1, 0, 0, 0, 826, 7738, 1, 0, 0, 0, 828, 7740, 1, 0, 0, 0, 830, 7793, 1, 0, 0, 0, 832, 7795, 1, 0, 0, 0, 834, 7797, 1, 0, 0, 0, 836, 7800, 1, 0, 0, 0, 838, 7828, 1, 0, 0, 0, 840, 7832, 1, 0, 0, 0, 842, 7883, 1, 0, 0, 0, 844, 7886, 1, 0, 0, 0, 846, 7912, 1, 0, 0, 0, 848, 7914, 1, 0, 0, 0, 850, 7937, 1, 0, 0, 0, 852, 7939, 1, 0, 0, 0, 854, 7944, 1, 0, 0, 0, 856, 7959, 1, 0, 0, 0, 858, 7965, 1, 0, 0, 0, 860, 7976, 1, 0, 0, 0, 862, 8006, 1, 0, 0, 0, 864, 8013, 1, 0, 0, 0, 866, 8038, 1, 0, 0, 0, 868, 8048, 1, 0, 0, 0, 870, 8075, 1, 0, 0, 0, 872, 8088, 1, 0, 0, 0, 874, 8098, 1, 0, 0, 0, 876, 8117, 1, 0, 0, 0, 878, 8149, 1, 0, 0, 0, 880, 8153, 1, 0, 0, 0, 882, 8161, 1, 0, 0, 0, 884, 8175, 1, 0, 0, 0, 886, 8181, 1, 0, 0, 0, 888, 8202, 1, 0, 0, 0, 890, 8208, 1, 0, 0, 0, 892, 8247, 1, 0, 0, 0, 894, 8251, 1, 0, 0, 0, 896, 8277, 1, 0, 0, 0, 898, 8279, 1, 0, 0, 0, 900, 8287, 1, 0, 0, 0, 902, 8324, 1, 0, 0, 0, 904, 8358, 1, 0, 0, 0, 906, 8360, 1, 0, 0, 0, 908, 8371, 1, 0, 0, 0, 910, 8408, 1, 0, 0, 0, 912, 8412, 1, 0, 0, 0, 914, 8414, 1, 0, 0, 0, 916, 8418, 1, 0, 0, 0, 918, 8421, 1, 0, 0, 0, 920, 8443, 1, 0, 0, 0, 922, 8447, 1, 0, 0, 0, 924, 8449, 1, 0, 0, 0, 926, 8473, 1, 0, 0, 0, 928, 8477, 1, 0, 0, 0, 930, 8479, 1, 0, 0, 0, 932, 8482, 1, 0, 0, 0, 934, 936, 3, 2, 1, 0, 935, 934, 1, 0, 0, 0, 936, 939, 1, 0, 0, 0, 937, 935, 1, 0, 0, 0, 937, 938, 1, 0, 0, 0, 938, 940, 1, 0, 0, 0, 939, 937, 1, 0, 0, 0, 940, 941, 5, 0, 0, 1, 941, 1, 1, 0, 0, 0, 942, 944, 3, 4, 2, 0, 943, 945, 5, 7, 0, 0, 944, 943, 1, 0, 0, 0, 944, 945, 1, 0, 0, 0, 945, 3, 1, 0, 0, 0, 946, 1067, 3, 278, 139, 0, 947, 1067, 3, 488, 244, 0, 948, 1067, 3, 484, 242, 0, 949, 1067, 3, 486, 243, 0, 950, 1067, 3, 352, 176, 0, 951, 1067, 3, 494, 247, 0, 952, 1067, 3, 292, 146, 0, 953, 1067, 3, 210, 105, 0, 954, 1067, 3, 212, 106, 0, 955, 1067, 3, 218, 109, 0, 956, 1067, 3, 232, 116, 0, 957, 1067, 3, 404, 202, 0, 958, 1067, 3, 28, 14, 0, 959, 1067, 3, 434, 217, 0, 960, 1067, 3, 436, 218, 0, 961, 1067, 3, 446, 223, 0, 962, 1067, 3, 438, 219, 0, 963, 1067, 3, 444, 222, 0, 964, 1067, 3, 244, 122, 0, 965, 1067, 3, 246, 123, 0, 966, 1067, 3, 198, 99, 0, 967, 1067, 3, 490, 245, 0, 968, 1067, 3, 76, 38, 0, 969, 1067, 3, 430, 215, 0, 970, 1067, 3, 108, 54, 0, 971, 1067, 3, 450, 225, 0, 972, 1067, 3, 18, 9, 0, 973, 1067, 3, 20, 10, 0, 974, 1067, 3, 16, 8, 0, 975, 1067, 3, 454, 227, 0, 976, 1067, 3, 184, 92, 0, 977, 1067, 3, 498, 249, 0, 978, 1067, 3, 496, 248, 0, 979, 1067, 3, 240, 120, 0, 980, 1067, 3, 506, 253, 0, 981, 1067, 3, 6, 3, 0, 982, 1067, 3, 72, 36, 0, 983, 1067, 3, 112, 56, 0, 984, 1067, 3, 502, 251, 0, 985, 1067, 3, 324, 162, 0, 986, 1067, 3, 70, 35, 0, 987, 1067, 3, 114, 57, 0, 988, 1067, 3, 254, 127, 0, 989, 1067, 3, 186, 93, 0, 990, 1067, 3, 280, 140, 0, 991, 1067, 3, 420, 210, 0, 992, 1067, 3, 500, 250, 0, 993, 1067, 3, 492, 246, 0, 994, 1067, 3, 208, 104, 0, 995, 1067, 3, 214, 107, 0, 996, 1067, 3, 228, 114, 0, 997, 1067, 3, 234, 117, 0, 998, 1067, 3, 364, 182, 0, 999, 1067, 3, 26, 13, 0, 1000, 1067, 3, 192, 96, 0, 1001, 1067, 3, 296, 148, 0, 1002, 1067, 3, 300, 150, 0, 1003, 1067, 3, 448, 224, 0, 1004, 1067, 3, 302, 151, 0, 1005, 1067, 3, 242, 121, 0, 1006, 1067, 3, 204, 102, 0, 1007, 1067, 3, 30, 15, 0, 1008, 1067, 3, 196, 98, 0, 1009, 1067, 3, 120, 60, 0, 1010, 1067, 3, 452, 226, 0, 1011, 1067, 3, 182, 91, 0, 1012, 1067, 3, 206, 103, 0, 1013, 1067, 3, 424, 212, 0, 1014, 1067, 3, 256, 128, 0, 1015, 1067, 3, 274, 137, 0, 1016, 1067, 3, 8, 4, 0, 1017, 1067, 3, 14, 7, 0, 1018, 1067, 3, 238, 119, 0, 1019, 1067, 3, 480, 240, 0, 1020, 1067, 3, 536, 268, 0, 1021, 1067, 3, 558, 279, 0, 1022, 1067, 3, 282, 141, 0, 1023, 1067, 3, 548, 274, 0, 1024, 1067, 3, 74, 37, 0, 1025, 1067, 3, 418, 209, 0, 1026, 1067, 3, 308, 154, 0, 1027, 1067, 3, 532, 266, 0, 1028, 1067, 3, 520, 260, 0, 1029, 1067, 3, 328, 164, 0, 1030, 1067, 3, 334, 167, 0, 1031, 1067, 3, 348, 174, 0, 1032, 1067, 3, 900, 450, 0, 1033, 1067, 3, 236, 118, 0, 1034, 1067, 3, 358, 179, 0, 1035, 1067, 3, 538, 269, 0, 1036, 1067, 3, 464, 232, 0, 1037, 1067, 3, 194, 97, 0, 1038, 1067, 3, 478, 239, 0, 1039, 1067, 3, 550, 275, 0, 1040, 1067, 3, 460, 230, 0, 1041, 1067, 3, 526, 263, 0, 1042, 1067, 3, 306, 153, 0, 1043, 1067, 3, 428, 214, 0, 1044, 1067, 3, 408, 204, 0, 1045, 1067, 3, 406, 203, 0, 1046, 1067, 3, 410, 205, 0, 1047, 1067, 3, 432, 216, 0, 1048, 1067, 3, 336, 168, 0, 1049, 1067, 3, 350, 175, 0, 1050, 1067, 3, 456, 228, 0, 1051, 1067, 3, 326, 163, 0, 1052, 1067, 3, 560, 280, 0, 1053, 1067, 3, 468, 234, 0, 1054, 1067, 3, 320, 160, 0, 1055, 1067, 3, 466, 233, 0, 1056, 1067, 3, 552, 276, 0, 1057, 1067, 3, 504, 252, 0, 1058, 1067, 3, 60, 30, 0, 1059, 1067, 3, 36, 18, 0, 1060, 1067, 3, 68, 34, 0, 1061, 1067, 3, 476, 238, 0, 1062, 1064, 5, 581, 0, 0, 1063, 1065, 5, 582, 0, 0, 1064, 1063, 1, 0, 0, 0, 1064, 1065, 1, 0, 0, 0, 1065, 1067, 1, 0, 0, 0, 1066, 946, 1, 0, 0, 0, 1066, 947, 1, 0, 0, 0, 1066, 948, 1, 0, 0, 0, 1066, 949, 1, 0, 0, 0, 1066, 950, 1, 0, 0, 0, 1066, 951, 1, 0, 0, 0, 1066, 952, 1, 0, 0, 0, 1066, 953, 1, 0, 0, 0, 1066, 954, 1, 0, 0, 0, 1066, 955, 1, 0, 0, 0, 1066, 956, 1, 0, 0, 0, 1066, 957, 1, 0, 0, 0, 1066, 958, 1, 0, 0, 0, 1066, 959, 1, 0, 0, 0, 1066, 960, 1, 0, 0, 0, 1066, 961, 1, 0, 0, 0, 1066, 962, 1, 0, 0, 0, 1066, 963, 1, 0, 0, 0, 1066, 964, 1, 0, 0, 0, 1066, 965, 1, 0, 0, 0, 1066, 966, 1, 0, 0, 0, 1066, 967, 1, 0, 0, 0, 1066, 968, 1, 0, 0, 0, 1066, 969, 1, 0, 0, 0, 1066, 970, 1, 0, 0, 0, 1066, 971, 1, 0, 0, 0, 1066, 972, 1, 0, 0, 0, 1066, 973, 1, 0, 0, 0, 1066, 974, 1, 0, 0, 0, 1066, 975, 1, 0, 0, 0, 1066, 976, 1, 0, 0, 0, 1066, 977, 1, 0, 0, 0, 1066, 978, 1, 0, 0, 0, 1066, 979, 1, 0, 0, 0, 1066, 980, 1, 0, 0, 0, 1066, 981, 1, 0, 0, 0, 1066, 982, 1, 0, 0, 0, 1066, 983, 1, 0, 0, 0, 1066, 984, 1, 0, 0, 0, 1066, 985, 1, 0, 0, 0, 1066, 986, 1, 0, 0, 0, 1066, 987, 1, 0, 0, 0, 1066, 988, 1, 0, 0, 0, 1066, 989, 1, 0, 0, 0, 1066, 990, 1, 0, 0, 0, 1066, 991, 1, 0, 0, 0, 1066, 992, 1, 0, 0, 0, 1066, 993, 1, 0, 0, 0, 1066, 994, 1, 0, 0, 0, 1066, 995, 1, 0, 0, 0, 1066, 996, 1, 0, 0, 0, 1066, 997, 1, 0, 0, 0, 1066, 998, 1, 0, 0, 0, 1066, 999, 1, 0, 0, 0, 1066, 1000, 1, 0, 0, 0, 1066, 1001, 1, 0, 0, 0, 1066, 1002, 1, 0, 0, 0, 1066, 1003, 1, 0, 0, 0, 1066, 1004, 1, 0, 0, 0, 1066, 1005, 1, 0, 0, 0, 1066, 1006, 1, 0, 0, 0, 1066, 1007, 1, 0, 0, 0, 1066, 1008, 1, 0, 0, 0, 1066, 1009, 1, 0, 0, 0, 1066, 1010, 1, 0, 0, 0, 1066, 1011, 1, 0, 0, 0, 1066, 1012, 1, 0, 0, 0, 1066, 1013, 1, 0, 0, 0, 1066, 1014, 1, 0, 0, 0, 1066, 1015, 1, 0, 0, 0, 1066, 1016, 1, 0, 0, 0, 1066, 1017, 1, 0, 0, 0, 1066, 1018, 1, 0, 0, 0, 1066, 1019, 1, 0, 0, 0, 1066, 1020, 1, 0, 0, 0, 1066, 1021, 1, 0, 0, 0, 1066, 1022, 1, 0, 0, 0, 1066, 1023, 1, 0, 0, 0, 1066, 1024, 1, 0, 0, 0, 1066, 1025, 1, 0, 0, 0, 1066, 1026, 1, 0, 0, 0, 1066, 1027, 1, 0, 0, 0, 1066, 1028, 1, 0, 0, 0, 1066, 1029, 1, 0, 0, 0, 1066, 1030, 1, 0, 0, 0, 1066, 1031, 1, 0, 0, 0, 1066, 1032, 1, 0, 0, 0, 1066, 1033, 1, 0, 0, 0, 1066, 1034, 1, 0, 0, 0, 1066, 1035, 1, 0, 0, 0, 1066, 1036, 1, 0, 0, 0, 1066, 1037, 1, 0, 0, 0, 1066, 1038, 1, 0, 0, 0, 1066, 1039, 1, 0, 0, 0, 1066, 1040, 1, 0, 0, 0, 1066, 1041, 1, 0, 0, 0, 1066, 1042, 1, 0, 0, 0, 1066, 1043, 1, 0, 0, 0, 1066, 1044, 1, 0, 0, 0, 1066, 1045, 1, 0, 0, 0, 1066, 1046, 1, 0, 0, 0, 1066, 1047, 1, 0, 0, 0, 1066, 1048, 1, 0, 0, 0, 1066, 1049, 1, 0, 0, 0, 1066, 1050, 1, 0, 0, 0, 1066, 1051, 1, 0, 0, 0, 1066, 1052, 1, 0, 0, 0, 1066, 1053, 1, 0, 0, 0, 1066, 1054, 1, 0, 0, 0, 1066, 1055, 1, 0, 0, 0, 1066, 1056, 1, 0, 0, 0, 1066, 1057, 1, 0, 0, 0, 1066, 1058, 1, 0, 0, 0, 1066, 1059, 1, 0, 0, 0, 1066, 1060, 1, 0, 0, 0, 1066, 1061, 1, 0, 0, 0, 1066, 1062, 1, 0, 0, 0, 1067, 5, 1, 0, 0, 0, 1068, 1069, 5, 433, 0, 0, 1069, 1070, 3, 684, 342, 0, 1070, 7, 1, 0, 0, 0, 1071, 1072, 5, 46, 0, 0, 1072, 1073, 5, 318, 0, 0, 1073, 1075, 3, 814, 407, 0, 1074, 1076, 5, 105, 0, 0, 1075, 1074, 1, 0, 0, 0, 1075, 1076, 1, 0, 0, 0, 1076, 1080, 1, 0, 0, 0, 1077, 1079, 3, 12, 6, 0, 1078, 1077, 1, 0, 0, 0, 1079, 1082, 1, 0, 0, 0, 1080, 1078, 1, 0, 0, 0, 1080, 1081, 1, 0, 0, 0, 1081, 9, 1, 0, 0, 0, 1082, 1080, 1, 0, 0, 0, 1083, 1086, 5, 287, 0, 0, 1084, 1087, 3, 808, 404, 0, 1085, 1087, 5, 78, 0, 0, 1086, 1084, 1, 0, 0, 0, 1086, 1085, 1, 0, 0, 0, 1087, 1122, 1, 0, 0, 0, 1088, 1089, 7, 0, 0, 0, 1089, 1090, 5, 287, 0, 0, 1090, 1122, 3, 808, 404, 0, 1091, 1122, 5, 228, 0, 0, 1092, 1122, 5, 229, 0, 0, 1093, 1122, 5, 236, 0, 0, 1094, 1122, 5, 237, 0, 0, 1095, 1122, 5, 234, 0, 0, 1096, 1122, 5, 235, 0, 0, 1097, 1122, 5, 232, 0, 0, 1098, 1122, 5, 233, 0, 0, 1099, 1122, 5, 230, 0, 0, 1100, 1122, 5, 231, 0, 0, 1101, 1122, 5, 535, 0, 0, 1102, 1122, 5, 536, 0, 0, 1103, 1122, 5, 537, 0, 0, 1104, 1122, 5, 538, 0, 0, 1105, 1122, 5, 539, 0, 0, 1106, 1122, 5, 540, 0, 0, 1107, 1108, 5, 164, 0, 0, 1108, 1109, 5, 74, 0, 0, 1109, 1122, 3, 812, 406, 0, 1110, 1111, 5, 371, 0, 0, 1111, 1112, 5, 368, 0, 0, 1112, 1122, 3, 808, 404, 0, 1113, 1114, 5, 68, 0, 0, 1114, 1115, 7, 1, 0, 0, 1115, 1122, 3, 784, 392, 0, 1116, 1117, 7, 2, 0, 0, 1117, 1122, 3, 816, 408, 0, 1118, 1119, 5, 134, 0, 0, 1119, 1122, 3, 784, 392, 0, 1120, 1122, 3, 826, 413, 0, 1121, 1083, 1, 0, 0, 0, 1121, 1088, 1, 0, 0, 0, 1121, 1091, 1, 0, 0, 0, 1121, 1092, 1, 0, 0, 0, 1121, 1093, 1, 0, 0, 0, 1121, 1094, 1, 0, 0, 0, 1121, 1095, 1, 0, 0, 0, 1121, 1096, 1, 0, 0, 0, 1121, 1097, 1, 0, 0, 0, 1121, 1098, 1, 0, 0, 0, 1121, 1099, 1, 0, 0, 0, 1121, 1100, 1, 0, 0, 0, 1121, 1101, 1, 0, 0, 0, 1121, 1102, 1, 0, 0, 0, 1121, 1103, 1, 0, 0, 0, 1121, 1104, 1, 0, 0, 0, 1121, 1105, 1, 0, 0, 0, 1121, 1106, 1, 0, 0, 0, 1121, 1107, 1, 0, 0, 0, 1121, 1110, 1, 0, 0, 0, 1121, 1113, 1, 0, 0, 0, 1121, 1116, 1, 0, 0, 0, 1121, 1118, 1, 0, 0, 0, 1121, 1120, 1, 0, 0, 0, 1122, 11, 1, 0, 0, 0, 1123, 1132, 3, 10, 5, 0, 1124, 1125, 5, 348, 0, 0, 1125, 1132, 5, 571, 0, 0, 1126, 1127, 7, 3, 0, 0, 1127, 1132, 3, 816, 408, 0, 1128, 1129, 5, 68, 0, 0, 1129, 1130, 7, 1, 0, 0, 1130, 1132, 3, 816, 408, 0, 1131, 1123, 1, 0, 0, 0, 1131, 1124, 1, 0, 0, 0, 1131, 1126, 1, 0, 0, 0, 1131, 1128, 1, 0, 0, 0, 1132, 13, 1, 0, 0, 0, 1133, 1134, 5, 46, 0, 0, 1134, 1135, 5, 99, 0, 0, 1135, 1137, 3, 814, 407, 0, 1136, 1138, 5, 105, 0, 0, 1137, 1136, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1142, 1, 0, 0, 0, 1139, 1141, 3, 12, 6, 0, 1140, 1139, 1, 0, 0, 0, 1141, 1144, 1, 0, 0, 0, 1142, 1140, 1, 0, 0, 0, 1142, 1143, 1, 0, 0, 0, 1143, 15, 1, 0, 0, 0, 1144, 1142, 1, 0, 0, 0, 1145, 1146, 5, 138, 0, 0, 1146, 1147, 7, 2, 0, 0, 1147, 1149, 3, 814, 407, 0, 1148, 1150, 5, 105, 0, 0, 1149, 1148, 1, 0, 0, 0, 1149, 1150, 1, 0, 0, 0, 1150, 1154, 1, 0, 0, 0, 1151, 1153, 3, 10, 5, 0, 1152, 1151, 1, 0, 0, 0, 1153, 1156, 1, 0, 0, 0, 1154, 1152, 1, 0, 0, 0, 1154, 1155, 1, 0, 0, 0, 1155, 17, 1, 0, 0, 0, 1156, 1154, 1, 0, 0, 0, 1157, 1158, 5, 138, 0, 0, 1158, 1161, 7, 2, 0, 0, 1159, 1162, 5, 30, 0, 0, 1160, 1162, 3, 814, 407, 0, 1161, 1159, 1, 0, 0, 0, 1161, 1160, 1, 0, 0, 0, 1162, 1163, 1, 0, 0, 0, 1163, 1164, 5, 68, 0, 0, 1164, 1165, 5, 175, 0, 0, 1165, 1166, 3, 788, 394, 0, 1166, 1167, 3, 64, 32, 0, 1167, 19, 1, 0, 0, 0, 1168, 1169, 5, 138, 0, 0, 1169, 1170, 5, 442, 0, 0, 1170, 1172, 3, 794, 397, 0, 1171, 1173, 3, 368, 184, 0, 1172, 1171, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1174, 1, 0, 0, 0, 1174, 1175, 3, 22, 11, 0, 1175, 21, 1, 0, 0, 0, 1176, 1180, 3, 24, 12, 0, 1177, 1179, 3, 24, 12, 0, 1178, 1177, 1, 0, 0, 0, 1179, 1182, 1, 0, 0, 0, 1180, 1178, 1, 0, 0, 0, 1180, 1181, 1, 0, 0, 0, 1181, 1184, 1, 0, 0, 0, 1182, 1180, 1, 0, 0, 0, 1183, 1185, 5, 315, 0, 0, 1184, 1183, 1, 0, 0, 0, 1184, 1185, 1, 0, 0, 0, 1185, 1203, 1, 0, 0, 0, 1186, 1187, 5, 309, 0, 0, 1187, 1188, 5, 94, 0, 0, 1188, 1203, 3, 792, 396, 0, 1189, 1190, 5, 282, 0, 0, 1190, 1191, 5, 94, 0, 0, 1191, 1203, 3, 814, 407, 0, 1192, 1193, 5, 333, 0, 0, 1193, 1194, 5, 323, 0, 0, 1194, 1203, 3, 32, 16, 0, 1195, 1197, 5, 269, 0, 0, 1196, 1195, 1, 0, 0, 0, 1196, 1197, 1, 0, 0, 0, 1197, 1198, 1, 0, 0, 0, 1198, 1199, 5, 462, 0, 0, 1199, 1200, 5, 80, 0, 0, 1200, 1201, 5, 204, 0, 0, 1201, 1203, 3, 818, 409, 0, 1202, 1176, 1, 0, 0, 0, 1202, 1186, 1, 0, 0, 0, 1202, 1189, 1, 0, 0, 0, 1202, 1192, 1, 0, 0, 0, 1202, 1196, 1, 0, 0, 0, 1203, 23, 1, 0, 0, 0, 1204, 1247, 5, 222, 0, 0, 1205, 1247, 5, 338, 0, 0, 1206, 1247, 5, 377, 0, 0, 1207, 1209, 5, 77, 0, 0, 1208, 1207, 1, 0, 0, 0, 1208, 1209, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0, 1210, 1247, 5, 250, 0, 0, 1211, 1213, 5, 205, 0, 0, 1212, 1211, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1215, 5, 327, 0, 0, 1215, 1222, 5, 243, 0, 0, 1216, 1218, 5, 205, 0, 0, 1217, 1216, 1, 0, 0, 0, 1217, 1218, 1, 0, 0, 0, 1218, 1219, 1, 0, 0, 0, 1219, 1220, 5, 327, 0, 0, 1220, 1222, 5, 181, 0, 0, 1221, 1212, 1, 0, 0, 0, 1221, 1217, 1, 0, 0, 0, 1222, 1247, 1, 0, 0, 0, 1223, 1224, 5, 460, 0, 0, 1224, 1247, 7, 4, 0, 0, 1225, 1226, 5, 170, 0, 0, 1226, 1247, 3, 824, 412, 0, 1227, 1228, 5, 320, 0, 0, 1228, 1247, 3, 818, 409, 0, 1229, 1230, 5, 333, 0, 0, 1230, 1231, 3, 818, 409, 0, 1231, 1234, 7, 5, 0, 0, 1232, 1235, 3, 818, 409, 0, 1233, 1235, 5, 53, 0, 0, 1234, 1232, 1, 0, 0, 0, 1234, 1233, 1, 0, 0, 0, 1235, 1247, 1, 0, 0, 0, 1236, 1237, 5, 333, 0, 0, 1237, 1238, 3, 818, 409, 0, 1238, 1239, 5, 64, 0, 0, 1239, 1240, 5, 434, 0, 0, 1240, 1247, 1, 0, 0, 0, 1241, 1244, 5, 313, 0, 0, 1242, 1245, 3, 818, 409, 0, 1243, 1245, 5, 30, 0, 0, 1244, 1242, 1, 0, 0, 0, 1244, 1243, 1, 0, 0, 0, 1245, 1247, 1, 0, 0, 0, 1246, 1204, 1, 0, 0, 0, 1246, 1205, 1, 0, 0, 0, 1246, 1206, 1, 0, 0, 0, 1246, 1208, 1, 0, 0, 0, 1246, 1221, 1, 0, 0, 0, 1246, 1223, 1, 0, 0, 0, 1246, 1225, 1, 0, 0, 0, 1246, 1227, 1, 0, 0, 0, 1246, 1229, 1, 0, 0, 0, 1246, 1236, 1, 0, 0, 0, 1246, 1241, 1, 0, 0, 0, 1247, 25, 1, 0, 0, 0, 1248, 1249, 5, 46, 0, 0, 1249, 1250, 5, 66, 0, 0, 1250, 1252, 3, 814, 407, 0, 1251, 1253, 5, 105, 0, 0, 1252, 1251, 1, 0, 0, 0, 1252, 1253, 1, 0, 0, 0, 1253, 1257, 1, 0, 0, 0, 1254, 1256, 3, 12, 6, 0, 1255, 1254, 1, 0, 0, 0, 1256, 1259, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 27, 1, 0, 0, 0, 1259, 1257, 1, 0, 0, 0, 1260, 1261, 5, 138, 0, 0, 1261, 1262, 5, 66, 0, 0, 1262, 1263, 3, 814, 407, 0, 1263, 1264, 7, 6, 0, 0, 1264, 1265, 5, 99, 0, 0, 1265, 1266, 3, 816, 408, 0, 1266, 29, 1, 0, 0, 0, 1267, 1268, 5, 46, 0, 0, 1268, 1270, 5, 323, 0, 0, 1269, 1271, 3, 294, 147, 0, 1270, 1269, 1, 0, 0, 0, 1270, 1271, 1, 0, 0, 0, 1271, 1278, 1, 0, 0, 0, 1272, 1274, 3, 32, 16, 0, 1273, 1272, 1, 0, 0, 0, 1273, 1274, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, 1276, 5, 106, 0, 0, 1276, 1279, 3, 814, 407, 0, 1277, 1279, 3, 32, 16, 0, 1278, 1273, 1, 0, 0, 0, 1278, 1277, 1, 0, 0, 0, 1279, 1283, 1, 0, 0, 0, 1280, 1282, 3, 34, 17, 0, 1281, 1280, 1, 0, 0, 0, 1282, 1285, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1283, 1284, 1, 0, 0, 0, 1284, 31, 1, 0, 0, 0, 1285, 1283, 1, 0, 0, 0, 1286, 1287, 3, 316, 158, 0, 1287, 33, 1, 0, 0, 0, 1288, 1295, 3, 120, 60, 0, 1289, 1295, 3, 358, 179, 0, 1290, 1295, 3, 196, 98, 0, 1291, 1295, 3, 256, 128, 0, 1292, 1295, 3, 334, 167, 0, 1293, 1295, 3, 476, 238, 0, 1294, 1288, 1, 0, 0, 0, 1294, 1289, 1, 0, 0, 0, 1294, 1290, 1, 0, 0, 0, 1294, 1291, 1, 0, 0, 0, 1294, 1292, 1, 0, 0, 0, 1294, 1293, 1, 0, 0, 0, 1295, 35, 1, 0, 0, 0, 1296, 1298, 5, 333, 0, 0, 1297, 1299, 7, 7, 0, 0, 1298, 1297, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1301, 3, 38, 19, 0, 1301, 37, 1, 0, 0, 0, 1302, 1303, 5, 356, 0, 0, 1303, 1311, 3, 474, 237, 0, 1304, 1305, 5, 332, 0, 0, 1305, 1306, 5, 154, 0, 0, 1306, 1307, 5, 36, 0, 0, 1307, 1308, 5, 356, 0, 0, 1308, 1311, 3, 474, 237, 0, 1309, 1311, 3, 42, 21, 0, 1310, 1302, 1, 0, 0, 0, 1310, 1304, 1, 0, 0, 0, 1310, 1309, 1, 0, 0, 0, 1311, 39, 1, 0, 0, 0, 1312, 1315, 5, 30, 0, 0, 1313, 1315, 3, 44, 22, 0, 1314, 1312, 1, 0, 0, 0, 1314, 1313, 1, 0, 0, 0, 1315, 1317, 1, 0, 0, 0, 1316, 1318, 7, 5, 0, 0, 1317, 1316, 1, 0, 0, 0, 1317, 1318, 1, 0, 0, 0, 1318, 1321, 1, 0, 0, 0, 1319, 1322, 5, 53, 0, 0, 1320, 1322, 3, 46, 23, 0, 1321, 1319, 1, 0, 0, 0, 1321, 1320, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 41, 1, 0, 0, 0, 1323, 1324, 5, 418, 0, 0, 1324, 1325, 5, 386, 0, 0, 1325, 1352, 3, 56, 28, 0, 1326, 1327, 5, 152, 0, 0, 1327, 1352, 3, 808, 404, 0, 1328, 1329, 5, 323, 0, 0, 1329, 1352, 3, 790, 395, 0, 1330, 1333, 5, 267, 0, 0, 1331, 1334, 3, 808, 404, 0, 1332, 1334, 5, 53, 0, 0, 1333, 1331, 1, 0, 0, 0, 1333, 1332, 1, 0, 0, 0, 1333, 1334, 1, 0, 0, 0, 1334, 1352, 1, 0, 0, 0, 1335, 1336, 5, 318, 0, 0, 1336, 1352, 3, 58, 29, 0, 1337, 1338, 5, 332, 0, 0, 1338, 1339, 5, 106, 0, 0, 1339, 1352, 3, 58, 29, 0, 1340, 1341, 5, 383, 0, 0, 1341, 1342, 5, 279, 0, 0, 1342, 1352, 3, 696, 348, 0, 1343, 1344, 5, 356, 0, 0, 1344, 1345, 5, 337, 0, 0, 1345, 1352, 3, 808, 404, 0, 1346, 1347, 3, 44, 22, 0, 1347, 1348, 5, 64, 0, 0, 1348, 1349, 5, 434, 0, 0, 1349, 1352, 1, 0, 0, 0, 1350, 1352, 3, 40, 20, 0, 1351, 1323, 1, 0, 0, 0, 1351, 1326, 1, 0, 0, 0, 1351, 1328, 1, 0, 0, 0, 1351, 1330, 1, 0, 0, 0, 1351, 1335, 1, 0, 0, 0, 1351, 1337, 1, 0, 0, 0, 1351, 1340, 1, 0, 0, 0, 1351, 1343, 1, 0, 0, 0, 1351, 1346, 1, 0, 0, 0, 1351, 1350, 1, 0, 0, 0, 1352, 43, 1, 0, 0, 0, 1353, 1358, 3, 818, 409, 0, 1354, 1355, 5, 11, 0, 0, 1355, 1357, 3, 818, 409, 0, 1356, 1354, 1, 0, 0, 0, 1357, 1360, 1, 0, 0, 0, 1358, 1356, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 45, 1, 0, 0, 0, 1360, 1358, 1, 0, 0, 0, 1361, 1366, 3, 48, 24, 0, 1362, 1363, 5, 6, 0, 0, 1363, 1365, 3, 48, 24, 0, 1364, 1362, 1, 0, 0, 0, 1365, 1368, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1366, 1367, 1, 0, 0, 0, 1367, 47, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1369, 1372, 3, 54, 27, 0, 1370, 1372, 3, 202, 101, 0, 1371, 1369, 1, 0, 0, 0, 1371, 1370, 1, 0, 0, 0, 1372, 49, 1, 0, 0, 0, 1373, 1374, 5, 300, 0, 0, 1374, 1379, 7, 8, 0, 0, 1375, 1376, 5, 310, 0, 0, 1376, 1379, 5, 300, 0, 0, 1377, 1379, 5, 330, 0, 0, 1378, 1373, 1, 0, 0, 0, 1378, 1375, 1, 0, 0, 0, 1378, 1377, 1, 0, 0, 0, 1379, 51, 1, 0, 0, 0, 1380, 1387, 5, 96, 0, 0, 1381, 1387, 5, 60, 0, 0, 1382, 1387, 5, 80, 0, 0, 1383, 1387, 3, 800, 400, 0, 1384, 1387, 3, 832, 416, 0, 1385, 1387, 3, 808, 404, 0, 1386, 1380, 1, 0, 0, 0, 1386, 1381, 1, 0, 0, 0, 1386, 1382, 1, 0, 0, 0, 1386, 1383, 1, 0, 0, 0, 1386, 1384, 1, 0, 0, 0, 1386, 1385, 1, 0, 0, 0, 1387, 53, 1, 0, 0, 0, 1388, 1393, 5, 96, 0, 0, 1389, 1393, 5, 60, 0, 0, 1390, 1393, 5, 80, 0, 0, 1391, 1393, 3, 58, 29, 0, 1392, 1388, 1, 0, 0, 0, 1392, 1389, 1, 0, 0, 0, 1392, 1390, 1, 0, 0, 0, 1392, 1391, 1, 0, 0, 0, 1393, 55, 1, 0, 0, 0, 1394, 1409, 3, 808, 404, 0, 1395, 1409, 5, 53, 0, 0, 1396, 1409, 3, 826, 413, 0, 1397, 1398, 5, 403, 0, 0, 1398, 1400, 3, 808, 404, 0, 1399, 1401, 3, 668, 334, 0, 1400, 1399, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1409, 1, 0, 0, 0, 1402, 1403, 5, 403, 0, 0, 1403, 1404, 3, 660, 330, 0, 1404, 1405, 3, 808, 404, 0, 1405, 1409, 1, 0, 0, 0, 1406, 1409, 3, 202, 101, 0, 1407, 1409, 5, 254, 0, 0, 1408, 1394, 1, 0, 0, 0, 1408, 1395, 1, 0, 0, 0, 1408, 1396, 1, 0, 0, 0, 1408, 1397, 1, 0, 0, 0, 1408, 1402, 1, 0, 0, 0, 1408, 1406, 1, 0, 0, 0, 1408, 1407, 1, 0, 0, 0, 1409, 57, 1, 0, 0, 0, 1410, 1413, 3, 822, 411, 0, 1411, 1413, 3, 808, 404, 0, 1412, 1410, 1, 0, 0, 0, 1412, 1411, 1, 0, 0, 0, 1413, 59, 1, 0, 0, 0, 1414, 1415, 5, 313, 0, 0, 1415, 1416, 3, 62, 31, 0, 1416, 61, 1, 0, 0, 0, 1417, 1418, 5, 418, 0, 0, 1418, 1427, 5, 386, 0, 0, 1419, 1420, 5, 356, 0, 0, 1420, 1421, 5, 244, 0, 0, 1421, 1427, 5, 251, 0, 0, 1422, 1423, 5, 332, 0, 0, 1423, 1427, 5, 106, 0, 0, 1424, 1427, 5, 30, 0, 0, 1425, 1427, 3, 44, 22, 0, 1426, 1417, 1, 0, 0, 0, 1426, 1419, 1, 0, 0, 0, 1426, 1422, 1, 0, 0, 0, 1426, 1424, 1, 0, 0, 0, 1426, 1425, 1, 0, 0, 0, 1427, 63, 1, 0, 0, 0, 1428, 1429, 5, 333, 0, 0, 1429, 1432, 3, 38, 19, 0, 1430, 1432, 3, 60, 30, 0, 1431, 1428, 1, 0, 0, 0, 1431, 1430, 1, 0, 0, 0, 1432, 65, 1, 0, 0, 0, 1433, 1434, 5, 333, 0, 0, 1434, 1437, 3, 42, 21, 0, 1435, 1437, 3, 60, 30, 0, 1436, 1433, 1, 0, 0, 0, 1436, 1435, 1, 0, 0, 0, 1437, 67, 1, 0, 0, 0, 1438, 1448, 5, 335, 0, 0, 1439, 1449, 3, 44, 22, 0, 1440, 1441, 5, 418, 0, 0, 1441, 1449, 5, 386, 0, 0, 1442, 1443, 5, 356, 0, 0, 1443, 1444, 5, 244, 0, 0, 1444, 1449, 5, 251, 0, 0, 1445, 1446, 5, 332, 0, 0, 1446, 1449, 5, 106, 0, 0, 1447, 1449, 5, 30, 0, 0, 1448, 1439, 1, 0, 0, 0, 1448, 1440, 1, 0, 0, 0, 1448, 1442, 1, 0, 0, 0, 1448, 1445, 1, 0, 0, 0, 1448, 1447, 1, 0, 0, 0, 1449, 69, 1, 0, 0, 0, 1450, 1451, 5, 333, 0, 0, 1451, 1454, 5, 165, 0, 0, 1452, 1455, 5, 30, 0, 0, 1453, 1455, 3, 760, 380, 0, 1454, 1452, 1, 0, 0, 0, 1454, 1453, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 1457, 7, 9, 0, 0, 1457, 71, 1, 0, 0, 0, 1458, 1459, 5, 155, 0, 0, 1459, 73, 1, 0, 0, 0, 1460, 1461, 5, 187, 0, 0, 1461, 1462, 7, 10, 0, 0, 1462, 75, 1, 0, 0, 0, 1463, 1464, 5, 138, 0, 0, 1464, 1466, 5, 92, 0, 0, 1465, 1467, 3, 422, 211, 0, 1466, 1465, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1468, 1, 0, 0, 0, 1468, 1471, 3, 624, 312, 0, 1469, 1472, 3, 78, 39, 0, 1470, 1472, 3, 88, 44, 0, 1471, 1469, 1, 0, 0, 0, 1471, 1470, 1, 0, 0, 0, 1472, 1585, 1, 0, 0, 0, 1473, 1474, 5, 138, 0, 0, 1474, 1475, 5, 92, 0, 0, 1475, 1476, 5, 30, 0, 0, 1476, 1477, 5, 68, 0, 0, 1477, 1481, 3, 176, 88, 0, 1478, 1479, 5, 281, 0, 0, 1479, 1480, 5, 147, 0, 0, 1480, 1482, 3, 816, 408, 0, 1481, 1478, 1, 0, 0, 0, 1481, 1482, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1484, 5, 333, 0, 0, 1484, 1485, 5, 351, 0, 0, 1485, 1487, 3, 768, 384, 0, 1486, 1488, 5, 272, 0, 0, 1487, 1486, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1585, 1, 0, 0, 0, 1489, 1490, 5, 138, 0, 0, 1490, 1492, 5, 92, 0, 0, 1491, 1493, 3, 422, 211, 0, 1492, 1491, 1, 0, 0, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1495, 3, 774, 387, 0, 1495, 1500, 3, 90, 45, 0, 1496, 1497, 5, 62, 0, 0, 1497, 1498, 5, 422, 0, 0, 1498, 1501, 3, 80, 40, 0, 1499, 1501, 5, 53, 0, 0, 1500, 1496, 1, 0, 0, 0, 1500, 1499, 1, 0, 0, 0, 1501, 1585, 1, 0, 0, 0, 1502, 1503, 5, 138, 0, 0, 1503, 1505, 5, 92, 0, 0, 1504, 1506, 3, 422, 211, 0, 1505, 1504, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1508, 3, 774, 387, 0, 1508, 1509, 5, 436, 0, 0, 1509, 1510, 5, 285, 0, 0, 1510, 1512, 3, 780, 390, 0, 1511, 1513, 7, 11, 0, 0, 1512, 1511, 1, 0, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1585, 1, 0, 0, 0, 1514, 1515, 5, 138, 0, 0, 1515, 1517, 5, 226, 0, 0, 1516, 1518, 3, 422, 211, 0, 1517, 1516, 1, 0, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1522, 3, 780, 390, 0, 1520, 1523, 3, 78, 39, 0, 1521, 1523, 3, 90, 45, 0, 1522, 1520, 1, 0, 0, 0, 1522, 1521, 1, 0, 0, 0, 1523, 1585, 1, 0, 0, 0, 1524, 1525, 5, 138, 0, 0, 1525, 1526, 5, 226, 0, 0, 1526, 1527, 5, 30, 0, 0, 1527, 1528, 5, 68, 0, 0, 1528, 1532, 3, 176, 88, 0, 1529, 1530, 5, 281, 0, 0, 1530, 1531, 5, 147, 0, 0, 1531, 1533, 3, 816, 408, 0, 1532, 1529, 1, 0, 0, 0, 1532, 1533, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 1535, 5, 333, 0, 0, 1535, 1537, 3, 176, 88, 0, 1536, 1538, 5, 272, 0, 0, 1537, 1536, 1, 0, 0, 0, 1537, 1538, 1, 0, 0, 0, 1538, 1585, 1, 0, 0, 0, 1539, 1540, 5, 138, 0, 0, 1540, 1542, 5, 328, 0, 0, 1541, 1543, 3, 422, 211, 0, 1542, 1541, 1, 0, 0, 0, 1542, 1543, 1, 0, 0, 0, 1543, 1544, 1, 0, 0, 0, 1544, 1545, 3, 780, 390, 0, 1545, 1546, 3, 78, 39, 0, 1546, 1585, 1, 0, 0, 0, 1547, 1549, 5, 138, 0, 0, 1548, 1550, 5, 259, 0, 0, 1549, 1548, 1, 0, 0, 0, 1549, 1550, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1553, 5, 376, 0, 0, 1552, 1554, 3, 422, 211, 0, 1553, 1552, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 1555, 1, 0, 0, 0, 1555, 1556, 3, 778, 389, 0, 1556, 1557, 3, 78, 39, 0, 1557, 1585, 1, 0, 0, 0, 1558, 1559, 5, 138, 0, 0, 1559, 1560, 5, 259, 0, 0, 1560, 1561, 5, 376, 0, 0, 1561, 1562, 5, 30, 0, 0, 1562, 1563, 5, 68, 0, 0, 1563, 1567, 3, 176, 88, 0, 1564, 1565, 5, 281, 0, 0, 1565, 1566, 5, 147, 0, 0, 1566, 1568, 3, 816, 408, 0, 1567, 1564, 1, 0, 0, 0, 1567, 1568, 1, 0, 0, 0, 1568, 1569, 1, 0, 0, 0, 1569, 1570, 5, 333, 0, 0, 1570, 1571, 5, 351, 0, 0, 1571, 1573, 3, 768, 384, 0, 1572, 1574, 5, 272, 0, 0, 1573, 1572, 1, 0, 0, 0, 1573, 1574, 1, 0, 0, 0, 1574, 1585, 1, 0, 0, 0, 1575, 1576, 5, 138, 0, 0, 1576, 1577, 5, 63, 0, 0, 1577, 1579, 5, 92, 0, 0, 1578, 1580, 3, 422, 211, 0, 1579, 1578, 1, 0, 0, 0, 1579, 1580, 1, 0, 0, 0, 1580, 1581, 1, 0, 0, 0, 1581, 1582, 3, 624, 312, 0, 1582, 1583, 3, 78, 39, 0, 1583, 1585, 1, 0, 0, 0, 1584, 1463, 1, 0, 0, 0, 1584, 1473, 1, 0, 0, 0, 1584, 1489, 1, 0, 0, 0, 1584, 1502, 1, 0, 0, 0, 1584, 1514, 1, 0, 0, 0, 1584, 1524, 1, 0, 0, 0, 1584, 1539, 1, 0, 0, 0, 1584, 1547, 1, 0, 0, 0, 1584, 1558, 1, 0, 0, 0, 1584, 1575, 1, 0, 0, 0, 1585, 77, 1, 0, 0, 0, 1586, 1591, 3, 92, 46, 0, 1587, 1588, 5, 6, 0, 0, 1588, 1590, 3, 92, 46, 0, 1589, 1587, 1, 0, 0, 0, 1590, 1593, 1, 0, 0, 0, 1591, 1589, 1, 0, 0, 0, 1591, 1592, 1, 0, 0, 0, 1592, 79, 1, 0, 0, 0, 1593, 1591, 1, 0, 0, 0, 1594, 1595, 5, 68, 0, 0, 1595, 1604, 3, 534, 267, 0, 1596, 1597, 5, 64, 0, 0, 1597, 1598, 3, 82, 41, 0, 1598, 1599, 5, 94, 0, 0, 1599, 1600, 3, 82, 41, 0, 1600, 1604, 1, 0, 0, 0, 1601, 1602, 5, 105, 0, 0, 1602, 1604, 3, 86, 43, 0, 1603, 1594, 1, 0, 0, 0, 1603, 1596, 1, 0, 0, 0, 1603, 1601, 1, 0, 0, 0, 1604, 81, 1, 0, 0, 0, 1605, 1606, 5, 2, 0, 0, 1606, 1611, 3, 84, 42, 0, 1607, 1608, 5, 6, 0, 0, 1608, 1610, 3, 84, 42, 0, 1609, 1607, 1, 0, 0, 0, 1610, 1613, 1, 0, 0, 0, 1611, 1609, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1614, 1, 0, 0, 0, 1613, 1611, 1, 0, 0, 0, 1614, 1615, 5, 3, 0, 0, 1615, 83, 1, 0, 0, 0, 1616, 1620, 3, 534, 267, 0, 1617, 1620, 5, 262, 0, 0, 1618, 1620, 5, 260, 0, 0, 1619, 1616, 1, 0, 0, 0, 1619, 1617, 1, 0, 0, 0, 1619, 1618, 1, 0, 0, 0, 1620, 85, 1, 0, 0, 0, 1621, 1622, 5, 2, 0, 0, 1622, 1623, 5, 533, 0, 0, 1623, 1624, 3, 202, 101, 0, 1624, 1625, 5, 6, 0, 0, 1625, 1626, 5, 534, 0, 0, 1626, 1627, 3, 202, 101, 0, 1627, 1628, 5, 3, 0, 0, 1628, 87, 1, 0, 0, 0, 1629, 1630, 3, 90, 45, 0, 1630, 1631, 3, 106, 53, 0, 1631, 1636, 1, 0, 0, 0, 1632, 1633, 5, 436, 0, 0, 1633, 1634, 5, 285, 0, 0, 1634, 1636, 3, 780, 390, 0, 1635, 1629, 1, 0, 0, 0, 1635, 1632, 1, 0, 0, 0, 1636, 89, 1, 0, 0, 0, 1637, 1638, 5, 435, 0, 0, 1638, 1639, 5, 285, 0, 0, 1639, 1640, 3, 780, 390, 0, 1640, 91, 1, 0, 0, 0, 1641, 1644, 5, 133, 0, 0, 1642, 1643, 5, 45, 0, 0, 1643, 1645, 3, 818, 409, 0, 1644, 1642, 1, 0, 0, 0, 1644, 1645, 1, 0, 0, 0, 1645, 1646, 1, 0, 0, 0, 1646, 1875, 3, 142, 71, 0, 1647, 1648, 5, 138, 0, 0, 1648, 1649, 5, 45, 0, 0, 1649, 1653, 3, 818, 409, 0, 1650, 1652, 3, 272, 136, 0, 1651, 1650, 1, 0, 0, 0, 1652, 1655, 1, 0, 0, 0, 1653, 1651, 1, 0, 0, 0, 1653, 1654, 1, 0, 0, 0, 1654, 1875, 1, 0, 0, 0, 1655, 1653, 1, 0, 0, 0, 1656, 1657, 5, 372, 0, 0, 1657, 1658, 5, 45, 0, 0, 1658, 1875, 3, 818, 409, 0, 1659, 1660, 5, 191, 0, 0, 1660, 1662, 5, 45, 0, 0, 1661, 1663, 3, 422, 211, 0, 1662, 1661, 1, 0, 0, 0, 1662, 1663, 1, 0, 0, 0, 1663, 1664, 1, 0, 0, 0, 1664, 1666, 3, 818, 409, 0, 1665, 1667, 3, 96, 48, 0, 1666, 1665, 1, 0, 0, 0, 1666, 1667, 1, 0, 0, 0, 1667, 1875, 1, 0, 0, 0, 1668, 1669, 5, 333, 0, 0, 1669, 1670, 5, 379, 0, 0, 1670, 1875, 7, 12, 0, 0, 1671, 1672, 5, 158, 0, 0, 1672, 1673, 5, 80, 0, 0, 1673, 1875, 3, 818, 409, 0, 1674, 1675, 5, 333, 0, 0, 1675, 1875, 7, 13, 0, 0, 1676, 1678, 5, 193, 0, 0, 1677, 1679, 7, 14, 0, 0, 1678, 1677, 1, 0, 0, 0, 1678, 1679, 1, 0, 0, 0, 1679, 1680, 1, 0, 0, 0, 1680, 1875, 5, 357, 0, 0, 1681, 1682, 5, 186, 0, 0, 1682, 1686, 5, 357, 0, 0, 1683, 1687, 5, 30, 0, 0, 1684, 1687, 5, 99, 0, 0, 1685, 1687, 3, 818, 409, 0, 1686, 1683, 1, 0, 0, 0, 1686, 1684, 1, 0, 0, 0, 1686, 1685, 1, 0, 0, 0, 1687, 1875, 1, 0, 0, 0, 1688, 1689, 5, 193, 0, 0, 1689, 1690, 7, 14, 0, 0, 1690, 1691, 5, 321, 0, 0, 1691, 1875, 3, 818, 409, 0, 1692, 1693, 5, 186, 0, 0, 1693, 1694, 5, 321, 0, 0, 1694, 1875, 3, 818, 409, 0, 1695, 1697, 5, 269, 0, 0, 1696, 1695, 1, 0, 0, 0, 1696, 1697, 1, 0, 0, 0, 1697, 1698, 1, 0, 0, 0, 1698, 1699, 5, 228, 0, 0, 1699, 1875, 3, 780, 390, 0, 1700, 1701, 5, 275, 0, 0, 1701, 1875, 3, 316, 158, 0, 1702, 1703, 5, 77, 0, 0, 1703, 1875, 5, 275, 0, 0, 1704, 1705, 5, 282, 0, 0, 1705, 1706, 5, 94, 0, 0, 1706, 1875, 3, 814, 407, 0, 1707, 1708, 5, 333, 0, 0, 1708, 1709, 5, 351, 0, 0, 1709, 1875, 3, 768, 384, 0, 1710, 1711, 5, 312, 0, 0, 1711, 1716, 5, 219, 0, 0, 1712, 1717, 5, 270, 0, 0, 1713, 1717, 5, 113, 0, 0, 1714, 1717, 5, 53, 0, 0, 1715, 1717, 3, 180, 90, 0, 1716, 1712, 1, 0, 0, 0, 1716, 1713, 1, 0, 0, 0, 1716, 1714, 1, 0, 0, 0, 1716, 1715, 1, 0, 0, 0, 1717, 1875, 1, 0, 0, 0, 1718, 1725, 5, 193, 0, 0, 1719, 1725, 5, 186, 0, 0, 1720, 1722, 5, 269, 0, 0, 1721, 1720, 1, 0, 0, 0, 1721, 1722, 1, 0, 0, 0, 1722, 1723, 1, 0, 0, 0, 1723, 1725, 5, 209, 0, 0, 1724, 1718, 1, 0, 0, 0, 1724, 1719, 1, 0, 0, 0, 1724, 1721, 1, 0, 0, 0, 1725, 1726, 1, 0, 0, 0, 1726, 1727, 5, 414, 0, 0, 1727, 1728, 5, 251, 0, 0, 1728, 1875, 5, 327, 0, 0, 1729, 1731, 5, 191, 0, 0, 1730, 1732, 5, 44, 0, 0, 1731, 1730, 1, 0, 0, 0, 1731, 1732, 1, 0, 0, 0, 1732, 1734, 1, 0, 0, 0, 1733, 1735, 3, 422, 211, 0, 1734, 1733, 1, 0, 0, 0, 1734, 1735, 1, 0, 0, 0, 1735, 1736, 1, 0, 0, 0, 1736, 1738, 3, 800, 400, 0, 1737, 1739, 3, 96, 48, 0, 1738, 1737, 1, 0, 0, 0, 1738, 1739, 1, 0, 0, 0, 1739, 1875, 1, 0, 0, 0, 1740, 1742, 5, 133, 0, 0, 1741, 1743, 5, 44, 0, 0, 1742, 1741, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1745, 1, 0, 0, 0, 1744, 1746, 3, 294, 147, 0, 1745, 1744, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1875, 3, 132, 66, 0, 1748, 1750, 5, 138, 0, 0, 1749, 1751, 5, 44, 0, 0, 1750, 1749, 1, 0, 0, 0, 1750, 1751, 1, 0, 0, 0, 1751, 1752, 1, 0, 0, 0, 1752, 1755, 3, 800, 400, 0, 1753, 1756, 3, 94, 47, 0, 1754, 1756, 3, 222, 111, 0, 1755, 1753, 1, 0, 0, 0, 1755, 1754, 1, 0, 0, 0, 1756, 1875, 1, 0, 0, 0, 1757, 1759, 5, 138, 0, 0, 1758, 1760, 5, 44, 0, 0, 1759, 1758, 1, 0, 0, 0, 1759, 1760, 1, 0, 0, 0, 1760, 1761, 1, 0, 0, 0, 1761, 1762, 3, 800, 400, 0, 1762, 1763, 7, 15, 0, 0, 1763, 1764, 5, 77, 0, 0, 1764, 1765, 5, 78, 0, 0, 1765, 1875, 1, 0, 0, 0, 1766, 1768, 5, 138, 0, 0, 1767, 1769, 5, 44, 0, 0, 1768, 1767, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1770, 1, 0, 0, 0, 1770, 1771, 3, 800, 400, 0, 1771, 1772, 5, 191, 0, 0, 1772, 1774, 5, 437, 0, 0, 1773, 1775, 3, 422, 211, 0, 1774, 1773, 1, 0, 0, 0, 1774, 1775, 1, 0, 0, 0, 1775, 1875, 1, 0, 0, 0, 1776, 1778, 5, 138, 0, 0, 1777, 1779, 5, 44, 0, 0, 1778, 1777, 1, 0, 0, 0, 1778, 1779, 1, 0, 0, 0, 1779, 1780, 1, 0, 0, 0, 1780, 1781, 3, 800, 400, 0, 1781, 1782, 5, 333, 0, 0, 1782, 1783, 5, 342, 0, 0, 1783, 1784, 3, 812, 406, 0, 1784, 1875, 1, 0, 0, 0, 1785, 1787, 5, 138, 0, 0, 1786, 1788, 5, 44, 0, 0, 1787, 1786, 1, 0, 0, 0, 1787, 1788, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1791, 3, 800, 400, 0, 1790, 1785, 1, 0, 0, 0, 1790, 1791, 1, 0, 0, 0, 1791, 1792, 1, 0, 0, 0, 1792, 1793, 7, 16, 0, 0, 1793, 1875, 3, 100, 50, 0, 1794, 1796, 5, 138, 0, 0, 1795, 1797, 5, 44, 0, 0, 1796, 1795, 1, 0, 0, 0, 1796, 1797, 1, 0, 0, 0, 1797, 1798, 1, 0, 0, 0, 1798, 1799, 3, 800, 400, 0, 1799, 1800, 5, 333, 0, 0, 1800, 1801, 5, 345, 0, 0, 1801, 1802, 3, 818, 409, 0, 1802, 1875, 1, 0, 0, 0, 1803, 1805, 5, 138, 0, 0, 1804, 1806, 5, 44, 0, 0, 1805, 1804, 1, 0, 0, 0, 1805, 1806, 1, 0, 0, 0, 1806, 1807, 1, 0, 0, 0, 1807, 1808, 3, 800, 400, 0, 1808, 1809, 5, 133, 0, 0, 1809, 1810, 5, 438, 0, 0, 1810, 1811, 3, 138, 69, 0, 1811, 1812, 5, 36, 0, 0, 1812, 1821, 5, 219, 0, 0, 1813, 1815, 5, 2, 0, 0, 1814, 1816, 3, 200, 100, 0, 1815, 1814, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1815, 1, 0, 0, 0, 1817, 1818, 1, 0, 0, 0, 1818, 1819, 1, 0, 0, 0, 1819, 1820, 5, 3, 0, 0, 1820, 1822, 1, 0, 0, 0, 1821, 1813, 1, 0, 0, 0, 1821, 1822, 1, 0, 0, 0, 1822, 1875, 1, 0, 0, 0, 1823, 1825, 5, 138, 0, 0, 1824, 1826, 5, 44, 0, 0, 1825, 1824, 1, 0, 0, 0, 1825, 1826, 1, 0, 0, 0, 1826, 1827, 1, 0, 0, 0, 1827, 1841, 3, 800, 400, 0, 1828, 1833, 5, 314, 0, 0, 1829, 1831, 5, 105, 0, 0, 1830, 1829, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1832, 1, 0, 0, 0, 1832, 1834, 3, 202, 101, 0, 1833, 1830, 1, 0, 0, 0, 1833, 1834, 1, 0, 0, 0, 1834, 1842, 1, 0, 0, 0, 1835, 1839, 5, 333, 0, 0, 1836, 1840, 3, 200, 100, 0, 1837, 1838, 5, 438, 0, 0, 1838, 1840, 3, 138, 69, 0, 1839, 1836, 1, 0, 0, 0, 1839, 1837, 1, 0, 0, 0, 1840, 1842, 1, 0, 0, 0, 1841, 1828, 1, 0, 0, 0, 1841, 1835, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1841, 1, 0, 0, 0, 1843, 1844, 1, 0, 0, 0, 1844, 1875, 1, 0, 0, 0, 1845, 1847, 5, 138, 0, 0, 1846, 1848, 5, 44, 0, 0, 1847, 1846, 1, 0, 0, 0, 1847, 1848, 1, 0, 0, 0, 1848, 1849, 1, 0, 0, 0, 1849, 1850, 3, 800, 400, 0, 1850, 1851, 5, 191, 0, 0, 1851, 1853, 5, 219, 0, 0, 1852, 1854, 3, 422, 211, 0, 1853, 1852, 1, 0, 0, 0, 1853, 1854, 1, 0, 0, 0, 1854, 1875, 1, 0, 0, 0, 1855, 1857, 5, 138, 0, 0, 1856, 1858, 5, 44, 0, 0, 1857, 1856, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 1859, 1, 0, 0, 0, 1859, 1862, 3, 800, 400, 0, 1860, 1861, 5, 333, 0, 0, 1861, 1863, 5, 174, 0, 0, 1862, 1860, 1, 0, 0, 0, 1862, 1863, 1, 0, 0, 0, 1863, 1864, 1, 0, 0, 0, 1864, 1865, 5, 360, 0, 0, 1865, 1867, 3, 652, 326, 0, 1866, 1868, 3, 98, 49, 0, 1867, 1866, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 1871, 1, 0, 0, 0, 1869, 1870, 5, 100, 0, 0, 1870, 1872, 3, 674, 337, 0, 1871, 1869, 1, 0, 0, 0, 1871, 1872, 1, 0, 0, 0, 1872, 1875, 1, 0, 0, 0, 1873, 1875, 3, 222, 111, 0, 1874, 1641, 1, 0, 0, 0, 1874, 1647, 1, 0, 0, 0, 1874, 1656, 1, 0, 0, 0, 1874, 1659, 1, 0, 0, 0, 1874, 1668, 1, 0, 0, 0, 1874, 1671, 1, 0, 0, 0, 1874, 1674, 1, 0, 0, 0, 1874, 1676, 1, 0, 0, 0, 1874, 1681, 1, 0, 0, 0, 1874, 1688, 1, 0, 0, 0, 1874, 1692, 1, 0, 0, 0, 1874, 1696, 1, 0, 0, 0, 1874, 1700, 1, 0, 0, 0, 1874, 1702, 1, 0, 0, 0, 1874, 1704, 1, 0, 0, 0, 1874, 1707, 1, 0, 0, 0, 1874, 1710, 1, 0, 0, 0, 1874, 1724, 1, 0, 0, 0, 1874, 1729, 1, 0, 0, 0, 1874, 1740, 1, 0, 0, 0, 1874, 1748, 1, 0, 0, 0, 1874, 1757, 1, 0, 0, 0, 1874, 1766, 1, 0, 0, 0, 1874, 1776, 1, 0, 0, 0, 1874, 1790, 1, 0, 0, 0, 1874, 1794, 1, 0, 0, 0, 1874, 1803, 1, 0, 0, 0, 1874, 1823, 1, 0, 0, 0, 1874, 1845, 1, 0, 0, 0, 1874, 1855, 1, 0, 0, 0, 1874, 1873, 1, 0, 0, 0, 1875, 93, 1, 0, 0, 0, 1876, 1877, 5, 333, 0, 0, 1877, 1878, 5, 53, 0, 0, 1878, 1882, 3, 674, 337, 0, 1879, 1880, 5, 191, 0, 0, 1880, 1882, 5, 53, 0, 0, 1881, 1876, 1, 0, 0, 0, 1881, 1879, 1, 0, 0, 0, 1882, 95, 1, 0, 0, 0, 1883, 1884, 7, 17, 0, 0, 1884, 97, 1, 0, 0, 0, 1885, 1886, 5, 43, 0, 0, 1886, 1887, 3, 316, 158, 0, 1887, 99, 1, 0, 0, 0, 1888, 1889, 5, 2, 0, 0, 1889, 1894, 3, 104, 52, 0, 1890, 1891, 5, 6, 0, 0, 1891, 1893, 3, 104, 52, 0, 1892, 1890, 1, 0, 0, 0, 1893, 1896, 1, 0, 0, 0, 1894, 1892, 1, 0, 0, 0, 1894, 1895, 1, 0, 0, 0, 1895, 1897, 1, 0, 0, 0, 1896, 1894, 1, 0, 0, 0, 1897, 1898, 5, 3, 0, 0, 1898, 101, 1, 0, 0, 0, 1899, 1900, 5, 105, 0, 0, 1900, 1901, 3, 100, 50, 0, 1901, 103, 1, 0, 0, 0, 1902, 1907, 3, 824, 412, 0, 1903, 1904, 5, 10, 0, 0, 1904, 1908, 3, 288, 144, 0, 1905, 1906, 5, 11, 0, 0, 1906, 1908, 3, 286, 143, 0, 1907, 1903, 1, 0, 0, 0, 1907, 1905, 1, 0, 0, 0, 1907, 1908, 1, 0, 0, 0, 1908, 105, 1, 0, 0, 0, 1909, 1910, 5, 62, 0, 0, 1910, 1911, 5, 422, 0, 0, 1911, 1912, 5, 105, 0, 0, 1912, 1913, 5, 2, 0, 0, 1913, 1914, 3, 822, 411, 0, 1914, 1921, 5, 571, 0, 0, 1915, 1916, 5, 6, 0, 0, 1916, 1917, 3, 822, 411, 0, 1917, 1918, 5, 571, 0, 0, 1918, 1920, 1, 0, 0, 0, 1919, 1915, 1, 0, 0, 0, 1920, 1923, 1, 0, 0, 0, 1921, 1919, 1, 0, 0, 0, 1921, 1922, 1, 0, 0, 0, 1922, 1924, 1, 0, 0, 0, 1923, 1921, 1, 0, 0, 0, 1924, 1925, 5, 3, 0, 0, 1925, 1939, 1, 0, 0, 0, 1926, 1927, 5, 62, 0, 0, 1927, 1928, 5, 422, 0, 0, 1928, 1929, 5, 68, 0, 0, 1929, 1939, 3, 534, 267, 0, 1930, 1931, 5, 62, 0, 0, 1931, 1932, 5, 422, 0, 0, 1932, 1933, 5, 64, 0, 0, 1933, 1934, 3, 534, 267, 0, 1934, 1935, 5, 94, 0, 0, 1935, 1936, 3, 534, 267, 0, 1936, 1939, 1, 0, 0, 0, 1937, 1939, 5, 53, 0, 0, 1938, 1909, 1, 0, 0, 0, 1938, 1926, 1, 0, 0, 0, 1938, 1930, 1, 0, 0, 0, 1938, 1937, 1, 0, 0, 0, 1939, 107, 1, 0, 0, 0, 1940, 1941, 5, 138, 0, 0, 1941, 1942, 5, 360, 0, 0, 1942, 1943, 3, 316, 158, 0, 1943, 1948, 3, 110, 55, 0, 1944, 1945, 5, 6, 0, 0, 1945, 1947, 3, 110, 55, 0, 1946, 1944, 1, 0, 0, 0, 1947, 1950, 1, 0, 0, 0, 1948, 1946, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 109, 1, 0, 0, 0, 1950, 1948, 1, 0, 0, 0, 1951, 1952, 5, 133, 0, 0, 1952, 1953, 5, 143, 0, 0, 1953, 1955, 3, 644, 322, 0, 1954, 1956, 3, 96, 48, 0, 1955, 1954, 1, 0, 0, 0, 1955, 1956, 1, 0, 0, 0, 1956, 1982, 1, 0, 0, 0, 1957, 1958, 5, 191, 0, 0, 1958, 1960, 5, 143, 0, 0, 1959, 1961, 3, 422, 211, 0, 1960, 1959, 1, 0, 0, 0, 1960, 1961, 1, 0, 0, 0, 1961, 1962, 1, 0, 0, 0, 1962, 1964, 3, 818, 409, 0, 1963, 1965, 3, 96, 48, 0, 1964, 1963, 1, 0, 0, 0, 1964, 1965, 1, 0, 0, 0, 1965, 1982, 1, 0, 0, 0, 1966, 1967, 5, 138, 0, 0, 1967, 1968, 5, 143, 0, 0, 1968, 1971, 3, 818, 409, 0, 1969, 1970, 5, 333, 0, 0, 1970, 1972, 5, 174, 0, 0, 1971, 1969, 1, 0, 0, 0, 1971, 1972, 1, 0, 0, 0, 1972, 1973, 1, 0, 0, 0, 1973, 1974, 5, 360, 0, 0, 1974, 1976, 3, 652, 326, 0, 1975, 1977, 3, 98, 49, 0, 1976, 1975, 1, 0, 0, 0, 1976, 1977, 1, 0, 0, 0, 1977, 1979, 1, 0, 0, 0, 1978, 1980, 3, 96, 48, 0, 1979, 1978, 1, 0, 0, 0, 1979, 1980, 1, 0, 0, 0, 1980, 1982, 1, 0, 0, 0, 1981, 1951, 1, 0, 0, 0, 1981, 1957, 1, 0, 0, 0, 1981, 1966, 1, 0, 0, 0, 1982, 111, 1, 0, 0, 0, 1983, 1986, 5, 157, 0, 0, 1984, 1987, 3, 818, 409, 0, 1985, 1987, 5, 30, 0, 0, 1986, 1984, 1, 0, 0, 0, 1986, 1985, 1, 0, 0, 0, 1987, 113, 1, 0, 0, 0, 1988, 1990, 5, 169, 0, 0, 1989, 1991, 5, 107, 0, 0, 1990, 1989, 1, 0, 0, 0, 1990, 1991, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 1994, 3, 774, 387, 0, 1993, 1995, 3, 144, 72, 0, 1994, 1993, 1, 0, 0, 0, 1994, 1995, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1998, 7, 18, 0, 0, 1997, 1999, 5, 297, 0, 0, 1998, 1997, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2003, 1, 0, 0, 0, 2000, 2004, 3, 808, 404, 0, 2001, 2004, 5, 343, 0, 0, 2002, 2004, 5, 344, 0, 0, 2003, 2000, 1, 0, 0, 0, 2003, 2001, 1, 0, 0, 0, 2003, 2002, 1, 0, 0, 0, 2004, 2010, 1, 0, 0, 0, 2005, 2007, 5, 100, 0, 0, 2006, 2005, 1, 0, 0, 0, 2006, 2007, 1, 0, 0, 0, 2007, 2008, 1, 0, 0, 0, 2008, 2009, 5, 184, 0, 0, 2009, 2011, 3, 808, 404, 0, 2010, 2006, 1, 0, 0, 0, 2010, 2011, 1, 0, 0, 0, 2011, 2013, 1, 0, 0, 0, 2012, 2014, 5, 105, 0, 0, 2013, 2012, 1, 0, 0, 0, 2013, 2014, 1, 0, 0, 0, 2014, 2015, 1, 0, 0, 0, 2015, 2017, 3, 116, 58, 0, 2016, 2018, 3, 638, 319, 0, 2017, 2016, 1, 0, 0, 0, 2017, 2018, 1, 0, 0, 0, 2018, 2038, 1, 0, 0, 0, 2019, 2020, 5, 169, 0, 0, 2020, 2021, 5, 2, 0, 0, 2021, 2022, 3, 530, 265, 0, 2022, 2023, 5, 3, 0, 0, 2023, 2025, 5, 94, 0, 0, 2024, 2026, 5, 297, 0, 0, 2025, 2024, 1, 0, 0, 0, 2025, 2026, 1, 0, 0, 0, 2026, 2030, 1, 0, 0, 0, 2027, 2031, 3, 808, 404, 0, 2028, 2031, 5, 343, 0, 0, 2029, 2031, 5, 344, 0, 0, 2030, 2027, 1, 0, 0, 0, 2030, 2028, 1, 0, 0, 0, 2030, 2029, 1, 0, 0, 0, 2031, 2033, 1, 0, 0, 0, 2032, 2034, 5, 105, 0, 0, 2033, 2032, 1, 0, 0, 0, 2033, 2034, 1, 0, 0, 0, 2034, 2035, 1, 0, 0, 0, 2035, 2036, 3, 116, 58, 0, 2036, 2038, 1, 0, 0, 0, 2037, 1988, 1, 0, 0, 0, 2037, 2019, 1, 0, 0, 0, 2038, 115, 1, 0, 0, 0, 2039, 2063, 5, 107, 0, 0, 2040, 2063, 5, 112, 0, 0, 2041, 2043, 7, 19, 0, 0, 2042, 2044, 5, 36, 0, 0, 2043, 2042, 1, 0, 0, 0, 2043, 2044, 1, 0, 0, 0, 2044, 2045, 1, 0, 0, 0, 2045, 2063, 3, 808, 404, 0, 2046, 2063, 5, 171, 0, 0, 2047, 2063, 5, 216, 0, 0, 2048, 2049, 5, 209, 0, 0, 2049, 2052, 5, 298, 0, 0, 2050, 2053, 3, 148, 74, 0, 2051, 2053, 5, 9, 0, 0, 2052, 2050, 1, 0, 0, 0, 2052, 2051, 1, 0, 0, 0, 2053, 2063, 1, 0, 0, 0, 2054, 2056, 5, 209, 0, 0, 2055, 2057, 5, 77, 0, 0, 2056, 2055, 1, 0, 0, 0, 2056, 2057, 1, 0, 0, 0, 2057, 2058, 1, 0, 0, 0, 2058, 2059, 5, 78, 0, 0, 2059, 2063, 3, 148, 74, 0, 2060, 2061, 5, 194, 0, 0, 2061, 2063, 3, 808, 404, 0, 2062, 2039, 1, 0, 0, 0, 2062, 2040, 1, 0, 0, 0, 2062, 2041, 1, 0, 0, 0, 2062, 2046, 1, 0, 0, 0, 2062, 2047, 1, 0, 0, 0, 2062, 2048, 1, 0, 0, 0, 2062, 2054, 1, 0, 0, 0, 2062, 2060, 1, 0, 0, 0, 2063, 2066, 1, 0, 0, 0, 2064, 2062, 1, 0, 0, 0, 2064, 2065, 1, 0, 0, 0, 2065, 2079, 1, 0, 0, 0, 2066, 2064, 1, 0, 0, 0, 2067, 2068, 5, 2, 0, 0, 2068, 2073, 3, 118, 59, 0, 2069, 2070, 5, 6, 0, 0, 2070, 2072, 3, 118, 59, 0, 2071, 2069, 1, 0, 0, 0, 2072, 2075, 1, 0, 0, 0, 2073, 2071, 1, 0, 0, 0, 2073, 2074, 1, 0, 0, 0, 2074, 2076, 1, 0, 0, 0, 2075, 2073, 1, 0, 0, 0, 2076, 2077, 5, 3, 0, 0, 2077, 2079, 1, 0, 0, 0, 2078, 2064, 1, 0, 0, 0, 2078, 2067, 1, 0, 0, 0, 2079, 117, 1, 0, 0, 0, 2080, 2095, 3, 824, 412, 0, 2081, 2096, 3, 54, 27, 0, 2082, 2096, 3, 202, 101, 0, 2083, 2096, 5, 9, 0, 0, 2084, 2085, 5, 2, 0, 0, 2085, 2090, 3, 52, 26, 0, 2086, 2087, 5, 6, 0, 0, 2087, 2089, 3, 52, 26, 0, 2088, 2086, 1, 0, 0, 0, 2089, 2092, 1, 0, 0, 0, 2090, 2088, 1, 0, 0, 0, 2090, 2091, 1, 0, 0, 0, 2091, 2093, 1, 0, 0, 0, 2092, 2090, 1, 0, 0, 0, 2093, 2094, 5, 3, 0, 0, 2094, 2096, 1, 0, 0, 0, 2095, 2081, 1, 0, 0, 0, 2095, 2082, 1, 0, 0, 0, 2095, 2083, 1, 0, 0, 0, 2095, 2084, 1, 0, 0, 0, 2095, 2096, 1, 0, 0, 0, 2096, 119, 1, 0, 0, 0, 2097, 2099, 5, 46, 0, 0, 2098, 2100, 3, 122, 61, 0, 2099, 2098, 1, 0, 0, 0, 2099, 2100, 1, 0, 0, 0, 2100, 2101, 1, 0, 0, 0, 2101, 2103, 5, 92, 0, 0, 2102, 2104, 3, 294, 147, 0, 2103, 2102, 1, 0, 0, 0, 2103, 2104, 1, 0, 0, 0, 2104, 2105, 1, 0, 0, 0, 2105, 2171, 3, 772, 386, 0, 2106, 2108, 5, 2, 0, 0, 2107, 2109, 3, 126, 63, 0, 2108, 2107, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2110, 1, 0, 0, 0, 2110, 2112, 5, 3, 0, 0, 2111, 2113, 3, 164, 82, 0, 2112, 2111, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2115, 1, 0, 0, 0, 2114, 2116, 3, 166, 83, 0, 2115, 2114, 1, 0, 0, 0, 2115, 2116, 1, 0, 0, 0, 2116, 2118, 1, 0, 0, 0, 2117, 2119, 3, 170, 85, 0, 2118, 2117, 1, 0, 0, 0, 2118, 2119, 1, 0, 0, 0, 2119, 2121, 1, 0, 0, 0, 2120, 2122, 3, 172, 86, 0, 2121, 2120, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2124, 1, 0, 0, 0, 2123, 2125, 3, 174, 87, 0, 2124, 2123, 1, 0, 0, 0, 2124, 2125, 1, 0, 0, 0, 2125, 2127, 1, 0, 0, 0, 2126, 2128, 3, 176, 88, 0, 2127, 2126, 1, 0, 0, 0, 2127, 2128, 1, 0, 0, 0, 2128, 2172, 1, 0, 0, 0, 2129, 2130, 5, 275, 0, 0, 2130, 2132, 3, 316, 158, 0, 2131, 2133, 3, 124, 62, 0, 2132, 2131, 1, 0, 0, 0, 2132, 2133, 1, 0, 0, 0, 2133, 2135, 1, 0, 0, 0, 2134, 2136, 3, 166, 83, 0, 2135, 2134, 1, 0, 0, 0, 2135, 2136, 1, 0, 0, 0, 2136, 2138, 1, 0, 0, 0, 2137, 2139, 3, 170, 85, 0, 2138, 2137, 1, 0, 0, 0, 2138, 2139, 1, 0, 0, 0, 2139, 2141, 1, 0, 0, 0, 2140, 2142, 3, 172, 86, 0, 2141, 2140, 1, 0, 0, 0, 2141, 2142, 1, 0, 0, 0, 2142, 2144, 1, 0, 0, 0, 2143, 2145, 3, 174, 87, 0, 2144, 2143, 1, 0, 0, 0, 2144, 2145, 1, 0, 0, 0, 2145, 2147, 1, 0, 0, 0, 2146, 2148, 3, 176, 88, 0, 2147, 2146, 1, 0, 0, 0, 2147, 2148, 1, 0, 0, 0, 2148, 2172, 1, 0, 0, 0, 2149, 2150, 5, 285, 0, 0, 2150, 2151, 5, 275, 0, 0, 2151, 2153, 3, 780, 390, 0, 2152, 2154, 3, 124, 62, 0, 2153, 2152, 1, 0, 0, 0, 2153, 2154, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 2157, 3, 106, 53, 0, 2156, 2158, 3, 166, 83, 0, 2157, 2156, 1, 0, 0, 0, 2157, 2158, 1, 0, 0, 0, 2158, 2160, 1, 0, 0, 0, 2159, 2161, 3, 170, 85, 0, 2160, 2159, 1, 0, 0, 0, 2160, 2161, 1, 0, 0, 0, 2161, 2163, 1, 0, 0, 0, 2162, 2164, 3, 172, 86, 0, 2163, 2162, 1, 0, 0, 0, 2163, 2164, 1, 0, 0, 0, 2164, 2166, 1, 0, 0, 0, 2165, 2167, 3, 174, 87, 0, 2166, 2165, 1, 0, 0, 0, 2166, 2167, 1, 0, 0, 0, 2167, 2169, 1, 0, 0, 0, 2168, 2170, 3, 176, 88, 0, 2169, 2168, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2172, 1, 0, 0, 0, 2171, 2106, 1, 0, 0, 0, 2171, 2129, 1, 0, 0, 0, 2171, 2149, 1, 0, 0, 0, 2172, 121, 1, 0, 0, 0, 2173, 2179, 5, 354, 0, 0, 2174, 2179, 5, 352, 0, 0, 2175, 2176, 7, 20, 0, 0, 2176, 2179, 7, 21, 0, 0, 2177, 2179, 5, 367, 0, 0, 2178, 2173, 1, 0, 0, 0, 2178, 2174, 1, 0, 0, 0, 2178, 2175, 1, 0, 0, 0, 2178, 2177, 1, 0, 0, 0, 2179, 123, 1, 0, 0, 0, 2180, 2181, 5, 2, 0, 0, 2181, 2186, 3, 130, 65, 0, 2182, 2183, 5, 6, 0, 0, 2183, 2185, 3, 130, 65, 0, 2184, 2182, 1, 0, 0, 0, 2185, 2188, 1, 0, 0, 0, 2186, 2184, 1, 0, 0, 0, 2186, 2187, 1, 0, 0, 0, 2187, 2189, 1, 0, 0, 0, 2188, 2186, 1, 0, 0, 0, 2189, 2190, 5, 3, 0, 0, 2190, 125, 1, 0, 0, 0, 2191, 2196, 3, 128, 64, 0, 2192, 2193, 5, 6, 0, 0, 2193, 2195, 3, 128, 64, 0, 2194, 2192, 1, 0, 0, 0, 2195, 2198, 1, 0, 0, 0, 2196, 2194, 1, 0, 0, 0, 2196, 2197, 1, 0, 0, 0, 2197, 127, 1, 0, 0, 0, 2198, 2196, 1, 0, 0, 0, 2199, 2215, 3, 132, 66, 0, 2200, 2201, 5, 120, 0, 0, 2201, 2206, 3, 780, 390, 0, 2202, 2203, 7, 22, 0, 0, 2203, 2205, 3, 140, 70, 0, 2204, 2202, 1, 0, 0, 0, 2205, 2208, 1, 0, 0, 0, 2206, 2204, 1, 0, 0, 0, 2206, 2207, 1, 0, 0, 0, 2207, 2215, 1, 0, 0, 0, 2208, 2206, 1, 0, 0, 0, 2209, 2210, 5, 45, 0, 0, 2210, 2212, 3, 818, 409, 0, 2211, 2209, 1, 0, 0, 0, 2211, 2212, 1, 0, 0, 0, 2212, 2213, 1, 0, 0, 0, 2213, 2215, 3, 142, 71, 0, 2214, 2199, 1, 0, 0, 0, 2214, 2200, 1, 0, 0, 0, 2214, 2211, 1, 0, 0, 0, 2215, 129, 1, 0, 0, 0, 2216, 2219, 3, 802, 401, 0, 2217, 2218, 5, 105, 0, 0, 2218, 2220, 5, 280, 0, 0, 2219, 2217, 1, 0, 0, 0, 2219, 2220, 1, 0, 0, 0, 2220, 2224, 1, 0, 0, 0, 2221, 2223, 3, 134, 67, 0, 2222, 2221, 1, 0, 0, 0, 2223, 2226, 1, 0, 0, 0, 2224, 2222, 1, 0, 0, 0, 2224, 2225, 1, 0, 0, 0, 2225, 2233, 1, 0, 0, 0, 2226, 2224, 1, 0, 0, 0, 2227, 2228, 5, 45, 0, 0, 2228, 2230, 3, 818, 409, 0, 2229, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 2231, 1, 0, 0, 0, 2231, 2233, 3, 142, 71, 0, 2232, 2216, 1, 0, 0, 0, 2232, 2229, 1, 0, 0, 0, 2233, 131, 1, 0, 0, 0, 2234, 2235, 3, 802, 401, 0, 2235, 2237, 3, 652, 326, 0, 2236, 2238, 3, 220, 110, 0, 2237, 2236, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 2248, 1, 0, 0, 0, 2239, 2246, 5, 345, 0, 0, 2240, 2247, 5, 544, 0, 0, 2241, 2247, 5, 205, 0, 0, 2242, 2247, 5, 545, 0, 0, 2243, 2247, 5, 546, 0, 0, 2244, 2247, 5, 53, 0, 0, 2245, 2247, 3, 818, 409, 0, 2246, 2240, 1, 0, 0, 0, 2246, 2241, 1, 0, 0, 0, 2246, 2242, 1, 0, 0, 0, 2246, 2243, 1, 0, 0, 0, 2246, 2244, 1, 0, 0, 0, 2246, 2245, 1, 0, 0, 0, 2247, 2249, 1, 0, 0, 0, 2248, 2239, 1, 0, 0, 0, 2248, 2249, 1, 0, 0, 0, 2249, 2252, 1, 0, 0, 0, 2250, 2251, 5, 543, 0, 0, 2251, 2253, 3, 818, 409, 0, 2252, 2250, 1, 0, 0, 0, 2252, 2253, 1, 0, 0, 0, 2253, 2255, 1, 0, 0, 0, 2254, 2256, 3, 98, 49, 0, 2255, 2254, 1, 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2259, 1, 0, 0, 0, 2257, 2258, 5, 105, 0, 0, 2258, 2260, 5, 280, 0, 0, 2259, 2257, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2264, 1, 0, 0, 0, 2261, 2263, 3, 134, 67, 0, 2262, 2261, 1, 0, 0, 0, 2263, 2266, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2264, 2265, 1, 0, 0, 0, 2265, 133, 1, 0, 0, 0, 2266, 2264, 1, 0, 0, 0, 2267, 2268, 5, 45, 0, 0, 2268, 2270, 3, 818, 409, 0, 2269, 2267, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2271, 1, 0, 0, 0, 2271, 2276, 3, 136, 68, 0, 2272, 2274, 5, 77, 0, 0, 2273, 2272, 1, 0, 0, 0, 2273, 2274, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2277, 5, 54, 0, 0, 2276, 2273, 1, 0, 0, 0, 2276, 2277, 1, 0, 0, 0, 2277, 2280, 1, 0, 0, 0, 2278, 2279, 5, 69, 0, 0, 2279, 2281, 7, 9, 0, 0, 2280, 2278, 1, 0, 0, 0, 2280, 2281, 1, 0, 0, 0, 2281, 135, 1, 0, 0, 0, 2282, 2284, 5, 77, 0, 0, 2283, 2282, 1, 0, 0, 0, 2283, 2284, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2363, 5, 78, 0, 0, 2286, 2288, 5, 98, 0, 0, 2287, 2289, 3, 400, 200, 0, 2288, 2287, 1, 0, 0, 0, 2288, 2289, 1, 0, 0, 0, 2289, 2291, 1, 0, 0, 0, 2290, 2292, 3, 178, 89, 0, 2291, 2290, 1, 0, 0, 0, 2291, 2292, 1, 0, 0, 0, 2292, 2363, 1, 0, 0, 0, 2293, 2299, 5, 98, 0, 0, 2294, 2296, 5, 273, 0, 0, 2295, 2297, 5, 77, 0, 0, 2296, 2295, 1, 0, 0, 0, 2296, 2297, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2300, 5, 56, 0, 0, 2299, 2294, 1, 0, 0, 0, 2299, 2300, 1, 0, 0, 0, 2300, 2303, 1, 0, 0, 0, 2301, 2302, 5, 441, 0, 0, 2302, 2304, 3, 360, 180, 0, 2303, 2301, 1, 0, 0, 0, 2303, 2304, 1, 0, 0, 0, 2304, 2306, 1, 0, 0, 0, 2305, 2307, 3, 572, 286, 0, 2306, 2305, 1, 0, 0, 0, 2306, 2307, 1, 0, 0, 0, 2307, 2309, 1, 0, 0, 0, 2308, 2310, 3, 178, 89, 0, 2309, 2308, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2363, 1, 0, 0, 0, 2311, 2312, 5, 85, 0, 0, 2312, 2314, 5, 245, 0, 0, 2313, 2315, 3, 400, 200, 0, 2314, 2313, 1, 0, 0, 0, 2314, 2315, 1, 0, 0, 0, 2315, 2317, 1, 0, 0, 0, 2316, 2318, 3, 178, 89, 0, 2317, 2316, 1, 0, 0, 0, 2317, 2318, 1, 0, 0, 0, 2318, 2363, 1, 0, 0, 0, 2319, 2320, 5, 42, 0, 0, 2320, 2321, 5, 2, 0, 0, 2321, 2322, 3, 674, 337, 0, 2322, 2325, 5, 3, 0, 0, 2323, 2324, 5, 269, 0, 0, 2324, 2326, 5, 228, 0, 0, 2325, 2323, 1, 0, 0, 0, 2325, 2326, 1, 0, 0, 0, 2326, 2363, 1, 0, 0, 0, 2327, 2328, 5, 53, 0, 0, 2328, 2363, 3, 682, 341, 0, 2329, 2330, 5, 438, 0, 0, 2330, 2331, 3, 138, 69, 0, 2331, 2348, 5, 36, 0, 0, 2332, 2341, 5, 219, 0, 0, 2333, 2335, 5, 2, 0, 0, 2334, 2336, 3, 200, 100, 0, 2335, 2334, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2335, 1, 0, 0, 0, 2337, 2338, 1, 0, 0, 0, 2338, 2339, 1, 0, 0, 0, 2339, 2340, 5, 3, 0, 0, 2340, 2342, 1, 0, 0, 0, 2341, 2333, 1, 0, 0, 0, 2341, 2342, 1, 0, 0, 0, 2342, 2349, 1, 0, 0, 0, 2343, 2344, 5, 2, 0, 0, 2344, 2345, 3, 674, 337, 0, 2345, 2346, 5, 3, 0, 0, 2346, 2347, 5, 440, 0, 0, 2347, 2349, 1, 0, 0, 0, 2348, 2332, 1, 0, 0, 0, 2348, 2343, 1, 0, 0, 0, 2349, 2363, 1, 0, 0, 0, 2350, 2351, 5, 86, 0, 0, 2351, 2353, 3, 780, 390, 0, 2352, 2354, 3, 144, 72, 0, 2353, 2352, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2356, 1, 0, 0, 0, 2355, 2357, 3, 152, 76, 0, 2356, 2355, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2359, 1, 0, 0, 0, 2358, 2360, 3, 156, 78, 0, 2359, 2358, 1, 0, 0, 0, 2359, 2360, 1, 0, 0, 0, 2360, 2363, 1, 0, 0, 0, 2361, 2363, 3, 98, 49, 0, 2362, 2283, 1, 0, 0, 0, 2362, 2286, 1, 0, 0, 0, 2362, 2293, 1, 0, 0, 0, 2362, 2311, 1, 0, 0, 0, 2362, 2319, 1, 0, 0, 0, 2362, 2327, 1, 0, 0, 0, 2362, 2329, 1, 0, 0, 0, 2362, 2350, 1, 0, 0, 0, 2362, 2361, 1, 0, 0, 0, 2363, 137, 1, 0, 0, 0, 2364, 2368, 5, 139, 0, 0, 2365, 2366, 5, 147, 0, 0, 2366, 2368, 5, 53, 0, 0, 2367, 2364, 1, 0, 0, 0, 2367, 2365, 1, 0, 0, 0, 2368, 139, 1, 0, 0, 0, 2369, 2370, 7, 23, 0, 0, 2370, 141, 1, 0, 0, 0, 2371, 2372, 5, 42, 0, 0, 2372, 2373, 5, 2, 0, 0, 2373, 2374, 3, 674, 337, 0, 2374, 2378, 5, 3, 0, 0, 2375, 2377, 3, 272, 136, 0, 2376, 2375, 1, 0, 0, 0, 2377, 2380, 1, 0, 0, 0, 2378, 2376, 1, 0, 0, 0, 2378, 2379, 1, 0, 0, 0, 2379, 2468, 1, 0, 0, 0, 2380, 2378, 1, 0, 0, 0, 2381, 2385, 5, 98, 0, 0, 2382, 2383, 5, 85, 0, 0, 2383, 2385, 5, 245, 0, 0, 2384, 2381, 1, 0, 0, 0, 2384, 2382, 1, 0, 0, 0, 2385, 2409, 1, 0, 0, 0, 2386, 2388, 3, 144, 72, 0, 2387, 2389, 3, 150, 75, 0, 2388, 2387, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 2391, 1, 0, 0, 0, 2390, 2392, 3, 400, 200, 0, 2391, 2390, 1, 0, 0, 0, 2391, 2392, 1, 0, 0, 0, 2392, 2394, 1, 0, 0, 0, 2393, 2395, 3, 178, 89, 0, 2394, 2393, 1, 0, 0, 0, 2394, 2395, 1, 0, 0, 0, 2395, 2399, 1, 0, 0, 0, 2396, 2398, 3, 272, 136, 0, 2397, 2396, 1, 0, 0, 0, 2398, 2401, 1, 0, 0, 0, 2399, 2397, 1, 0, 0, 0, 2399, 2400, 1, 0, 0, 0, 2400, 2410, 1, 0, 0, 0, 2401, 2399, 1, 0, 0, 0, 2402, 2406, 3, 180, 90, 0, 2403, 2405, 3, 272, 136, 0, 2404, 2403, 1, 0, 0, 0, 2405, 2408, 1, 0, 0, 0, 2406, 2404, 1, 0, 0, 0, 2406, 2407, 1, 0, 0, 0, 2407, 2410, 1, 0, 0, 0, 2408, 2406, 1, 0, 0, 0, 2409, 2386, 1, 0, 0, 0, 2409, 2402, 1, 0, 0, 0, 2410, 2468, 1, 0, 0, 0, 2411, 2413, 5, 199, 0, 0, 2412, 2414, 3, 170, 85, 0, 2413, 2412, 1, 0, 0, 0, 2413, 2414, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2416, 5, 2, 0, 0, 2416, 2421, 3, 154, 77, 0, 2417, 2418, 5, 6, 0, 0, 2418, 2420, 3, 154, 77, 0, 2419, 2417, 1, 0, 0, 0, 2420, 2423, 1, 0, 0, 0, 2421, 2419, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 2424, 1, 0, 0, 0, 2423, 2421, 1, 0, 0, 0, 2424, 2426, 5, 3, 0, 0, 2425, 2427, 3, 150, 75, 0, 2426, 2425, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2429, 1, 0, 0, 0, 2428, 2430, 3, 400, 200, 0, 2429, 2428, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2432, 1, 0, 0, 0, 2431, 2433, 3, 178, 89, 0, 2432, 2431, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2439, 1, 0, 0, 0, 2434, 2435, 5, 103, 0, 0, 2435, 2436, 5, 2, 0, 0, 2436, 2437, 3, 674, 337, 0, 2437, 2438, 5, 3, 0, 0, 2438, 2440, 1, 0, 0, 0, 2439, 2434, 1, 0, 0, 0, 2439, 2440, 1, 0, 0, 0, 2440, 2444, 1, 0, 0, 0, 2441, 2443, 3, 272, 136, 0, 2442, 2441, 1, 0, 0, 0, 2443, 2446, 1, 0, 0, 0, 2444, 2442, 1, 0, 0, 0, 2444, 2445, 1, 0, 0, 0, 2445, 2468, 1, 0, 0, 0, 2446, 2444, 1, 0, 0, 0, 2447, 2448, 5, 63, 0, 0, 2448, 2449, 5, 245, 0, 0, 2449, 2450, 3, 144, 72, 0, 2450, 2451, 5, 86, 0, 0, 2451, 2453, 3, 780, 390, 0, 2452, 2454, 3, 144, 72, 0, 2453, 2452, 1, 0, 0, 0, 2453, 2454, 1, 0, 0, 0, 2454, 2456, 1, 0, 0, 0, 2455, 2457, 3, 152, 76, 0, 2456, 2455, 1, 0, 0, 0, 2456, 2457, 1, 0, 0, 0, 2457, 2459, 1, 0, 0, 0, 2458, 2460, 3, 156, 78, 0, 2459, 2458, 1, 0, 0, 0, 2459, 2460, 1, 0, 0, 0, 2460, 2464, 1, 0, 0, 0, 2461, 2463, 3, 272, 136, 0, 2462, 2461, 1, 0, 0, 0, 2463, 2466, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2464, 2465, 1, 0, 0, 0, 2465, 2468, 1, 0, 0, 0, 2466, 2464, 1, 0, 0, 0, 2467, 2371, 1, 0, 0, 0, 2467, 2384, 1, 0, 0, 0, 2467, 2411, 1, 0, 0, 0, 2467, 2447, 1, 0, 0, 0, 2468, 143, 1, 0, 0, 0, 2469, 2470, 5, 2, 0, 0, 2470, 2471, 3, 148, 74, 0, 2471, 2472, 5, 3, 0, 0, 2472, 145, 1, 0, 0, 0, 2473, 2474, 5, 2, 0, 0, 2474, 2479, 3, 802, 401, 0, 2475, 2476, 5, 6, 0, 0, 2476, 2478, 3, 802, 401, 0, 2477, 2475, 1, 0, 0, 0, 2478, 2481, 1, 0, 0, 0, 2479, 2477, 1, 0, 0, 0, 2479, 2480, 1, 0, 0, 0, 2480, 2482, 1, 0, 0, 0, 2481, 2479, 1, 0, 0, 0, 2482, 2483, 5, 3, 0, 0, 2483, 147, 1, 0, 0, 0, 2484, 2489, 3, 800, 400, 0, 2485, 2486, 5, 6, 0, 0, 2486, 2488, 3, 800, 400, 0, 2487, 2485, 1, 0, 0, 0, 2488, 2491, 1, 0, 0, 0, 2489, 2487, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 149, 1, 0, 0, 0, 2491, 2489, 1, 0, 0, 0, 2492, 2493, 5, 441, 0, 0, 2493, 2494, 3, 144, 72, 0, 2494, 151, 1, 0, 0, 0, 2495, 2496, 5, 258, 0, 0, 2496, 2497, 7, 24, 0, 0, 2497, 153, 1, 0, 0, 0, 2498, 2499, 3, 362, 181, 0, 2499, 2506, 5, 105, 0, 0, 2500, 2507, 3, 414, 207, 0, 2501, 2502, 5, 278, 0, 0, 2502, 2503, 5, 2, 0, 0, 2503, 2504, 3, 414, 207, 0, 2504, 2505, 5, 3, 0, 0, 2505, 2507, 1, 0, 0, 0, 2506, 2500, 1, 0, 0, 0, 2506, 2501, 1, 0, 0, 0, 2507, 155, 1, 0, 0, 0, 2508, 2510, 3, 158, 79, 0, 2509, 2511, 3, 160, 80, 0, 2510, 2509, 1, 0, 0, 0, 2510, 2511, 1, 0, 0, 0, 2511, 2517, 1, 0, 0, 0, 2512, 2514, 3, 160, 80, 0, 2513, 2515, 3, 158, 79, 0, 2514, 2513, 1, 0, 0, 0, 2514, 2515, 1, 0, 0, 0, 2515, 2517, 1, 0, 0, 0, 2516, 2508, 1, 0, 0, 0, 2516, 2512, 1, 0, 0, 0, 2517, 157, 1, 0, 0, 0, 2518, 2519, 5, 80, 0, 0, 2519, 2520, 5, 369, 0, 0, 2520, 2521, 3, 162, 81, 0, 2521, 159, 1, 0, 0, 0, 2522, 2523, 5, 80, 0, 0, 2523, 2524, 5, 182, 0, 0, 2524, 2525, 3, 162, 81, 0, 2525, 161, 1, 0, 0, 0, 2526, 2527, 5, 269, 0, 0, 2527, 2536, 5, 132, 0, 0, 2528, 2536, 5, 315, 0, 0, 2529, 2536, 5, 150, 0, 0, 2530, 2531, 5, 333, 0, 0, 2531, 2533, 7, 25, 0, 0, 2532, 2534, 3, 148, 74, 0, 2533, 2532, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 2536, 1, 0, 0, 0, 2535, 2526, 1, 0, 0, 0, 2535, 2528, 1, 0, 0, 0, 2535, 2529, 1, 0, 0, 0, 2535, 2530, 1, 0, 0, 0, 2536, 163, 1, 0, 0, 0, 2537, 2538, 5, 238, 0, 0, 2538, 2539, 5, 2, 0, 0, 2539, 2540, 3, 760, 380, 0, 2540, 2541, 5, 3, 0, 0, 2541, 165, 1, 0, 0, 0, 2542, 2543, 5, 285, 0, 0, 2543, 2544, 5, 147, 0, 0, 2544, 2545, 3, 818, 409, 0, 2545, 2546, 5, 2, 0, 0, 2546, 2551, 3, 168, 84, 0, 2547, 2548, 5, 6, 0, 0, 2548, 2550, 3, 168, 84, 0, 2549, 2547, 1, 0, 0, 0, 2550, 2553, 1, 0, 0, 0, 2551, 2549, 1, 0, 0, 0, 2551, 2552, 1, 0, 0, 0, 2552, 2554, 1, 0, 0, 0, 2553, 2551, 1, 0, 0, 0, 2554, 2555, 5, 3, 0, 0, 2555, 167, 1, 0, 0, 0, 2556, 2563, 3, 800, 400, 0, 2557, 2563, 3, 688, 344, 0, 2558, 2559, 5, 2, 0, 0, 2559, 2560, 3, 674, 337, 0, 2560, 2561, 5, 3, 0, 0, 2561, 2563, 1, 0, 0, 0, 2562, 2556, 1, 0, 0, 0, 2562, 2557, 1, 0, 0, 0, 2562, 2558, 1, 0, 0, 0, 2563, 2565, 1, 0, 0, 0, 2564, 2566, 3, 98, 49, 0, 2565, 2564, 1, 0, 0, 0, 2565, 2566, 1, 0, 0, 0, 2566, 2568, 1, 0, 0, 0, 2567, 2569, 3, 316, 158, 0, 2568, 2567, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 169, 1, 0, 0, 0, 2570, 2571, 5, 100, 0, 0, 2571, 2572, 3, 818, 409, 0, 2572, 171, 1, 0, 0, 0, 2573, 2574, 5, 105, 0, 0, 2574, 2578, 3, 100, 50, 0, 2575, 2576, 7, 26, 0, 0, 2576, 2578, 5, 277, 0, 0, 2577, 2573, 1, 0, 0, 0, 2577, 2575, 1, 0, 0, 0, 2578, 173, 1, 0, 0, 0, 2579, 2580, 5, 80, 0, 0, 2580, 2586, 5, 161, 0, 0, 2581, 2587, 5, 191, 0, 0, 2582, 2583, 5, 182, 0, 0, 2583, 2587, 5, 320, 0, 0, 2584, 2585, 5, 292, 0, 0, 2585, 2587, 5, 320, 0, 0, 2586, 2581, 1, 0, 0, 0, 2586, 2582, 1, 0, 0, 0, 2586, 2584, 1, 0, 0, 0, 2587, 175, 1, 0, 0, 0, 2588, 2589, 5, 351, 0, 0, 2589, 2590, 3, 770, 385, 0, 2590, 177, 1, 0, 0, 0, 2591, 2592, 5, 100, 0, 0, 2592, 2593, 5, 226, 0, 0, 2593, 2594, 3, 176, 88, 0, 2594, 179, 1, 0, 0, 0, 2595, 2596, 5, 100, 0, 0, 2596, 2597, 5, 226, 0, 0, 2597, 2598, 3, 818, 409, 0, 2598, 181, 1, 0, 0, 0, 2599, 2600, 5, 46, 0, 0, 2600, 2605, 5, 342, 0, 0, 2601, 2603, 3, 294, 147, 0, 2602, 2601, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2606, 3, 316, 158, 0, 2605, 2602, 1, 0, 0, 0, 2605, 2606, 1, 0, 0, 0, 2606, 2608, 1, 0, 0, 0, 2607, 2609, 3, 144, 72, 0, 2608, 2607, 1, 0, 0, 0, 2608, 2609, 1, 0, 0, 0, 2609, 2610, 1, 0, 0, 0, 2610, 2620, 5, 80, 0, 0, 2611, 2616, 3, 732, 366, 0, 2612, 2613, 5, 6, 0, 0, 2613, 2615, 3, 732, 366, 0, 2614, 2612, 1, 0, 0, 0, 2615, 2618, 1, 0, 0, 0, 2616, 2614, 1, 0, 0, 0, 2616, 2617, 1, 0, 0, 0, 2617, 2621, 1, 0, 0, 0, 2618, 2616, 1, 0, 0, 0, 2619, 2621, 3, 730, 365, 0, 2620, 2611, 1, 0, 0, 0, 2620, 2619, 1, 0, 0, 0, 2621, 2622, 1, 0, 0, 0, 2622, 2623, 3, 610, 305, 0, 2623, 183, 1, 0, 0, 0, 2624, 2625, 5, 138, 0, 0, 2625, 2627, 5, 342, 0, 0, 2626, 2628, 3, 422, 211, 0, 2627, 2626, 1, 0, 0, 0, 2627, 2628, 1, 0, 0, 0, 2628, 2629, 1, 0, 0, 0, 2629, 2630, 3, 316, 158, 0, 2630, 2631, 5, 333, 0, 0, 2631, 2632, 5, 342, 0, 0, 2632, 2633, 3, 812, 406, 0, 2633, 185, 1, 0, 0, 0, 2634, 2636, 5, 46, 0, 0, 2635, 2637, 3, 122, 61, 0, 2636, 2635, 1, 0, 0, 0, 2636, 2637, 1, 0, 0, 0, 2637, 2638, 1, 0, 0, 0, 2638, 2640, 5, 92, 0, 0, 2639, 2641, 3, 294, 147, 0, 2640, 2639, 1, 0, 0, 0, 2640, 2641, 1, 0, 0, 0, 2641, 2642, 1, 0, 0, 0, 2642, 2643, 3, 188, 94, 0, 2643, 2644, 5, 36, 0, 0, 2644, 2646, 3, 560, 280, 0, 2645, 2647, 3, 190, 95, 0, 2646, 2645, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 187, 1, 0, 0, 0, 2648, 2650, 3, 772, 386, 0, 2649, 2651, 3, 146, 73, 0, 2650, 2649, 1, 0, 0, 0, 2650, 2651, 1, 0, 0, 0, 2651, 2653, 1, 0, 0, 0, 2652, 2654, 3, 170, 85, 0, 2653, 2652, 1, 0, 0, 0, 2653, 2654, 1, 0, 0, 0, 2654, 2656, 1, 0, 0, 0, 2655, 2657, 3, 172, 86, 0, 2656, 2655, 1, 0, 0, 0, 2656, 2657, 1, 0, 0, 0, 2657, 2659, 1, 0, 0, 0, 2658, 2660, 3, 174, 87, 0, 2659, 2658, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 2662, 1, 0, 0, 0, 2661, 2663, 3, 176, 88, 0, 2662, 2661, 1, 0, 0, 0, 2662, 2663, 1, 0, 0, 0, 2663, 189, 1, 0, 0, 0, 2664, 2668, 5, 105, 0, 0, 2665, 2669, 5, 174, 0, 0, 2666, 2667, 5, 269, 0, 0, 2667, 2669, 5, 174, 0, 0, 2668, 2665, 1, 0, 0, 0, 2668, 2666, 1, 0, 0, 0, 2669, 191, 1, 0, 0, 0, 2670, 2672, 5, 46, 0, 0, 2671, 2673, 5, 367, 0, 0, 2672, 2671, 1, 0, 0, 0, 2672, 2673, 1, 0, 0, 0, 2673, 2674, 1, 0, 0, 0, 2674, 2675, 5, 259, 0, 0, 2675, 2677, 5, 376, 0, 0, 2676, 2678, 3, 294, 147, 0, 2677, 2676, 1, 0, 0, 0, 2677, 2678, 1, 0, 0, 0, 2678, 2679, 1, 0, 0, 0, 2679, 2681, 3, 776, 388, 0, 2680, 2682, 3, 146, 73, 0, 2681, 2680, 1, 0, 0, 0, 2681, 2682, 1, 0, 0, 0, 2682, 2684, 1, 0, 0, 0, 2683, 2685, 3, 170, 85, 0, 2684, 2683, 1, 0, 0, 0, 2684, 2685, 1, 0, 0, 0, 2685, 2687, 1, 0, 0, 0, 2686, 2688, 3, 102, 51, 0, 2687, 2686, 1, 0, 0, 0, 2687, 2688, 1, 0, 0, 0, 2688, 2690, 1, 0, 0, 0, 2689, 2691, 3, 176, 88, 0, 2690, 2689, 1, 0, 0, 0, 2690, 2691, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2693, 5, 36, 0, 0, 2693, 2695, 3, 560, 280, 0, 2694, 2696, 3, 190, 95, 0, 2695, 2694, 1, 0, 0, 0, 2695, 2696, 1, 0, 0, 0, 2696, 193, 1, 0, 0, 0, 2697, 2698, 5, 305, 0, 0, 2698, 2699, 5, 259, 0, 0, 2699, 2701, 5, 376, 0, 0, 2700, 2702, 5, 109, 0, 0, 2701, 2700, 1, 0, 0, 0, 2701, 2702, 1, 0, 0, 0, 2702, 2703, 1, 0, 0, 0, 2703, 2705, 3, 778, 389, 0, 2704, 2706, 3, 190, 95, 0, 2705, 2704, 1, 0, 0, 0, 2705, 2706, 1, 0, 0, 0, 2706, 195, 1, 0, 0, 0, 2707, 2709, 5, 46, 0, 0, 2708, 2710, 3, 122, 61, 0, 2709, 2708, 1, 0, 0, 0, 2709, 2710, 1, 0, 0, 0, 2710, 2711, 1, 0, 0, 0, 2711, 2713, 5, 328, 0, 0, 2712, 2714, 3, 294, 147, 0, 2713, 2712, 1, 0, 0, 0, 2713, 2714, 1, 0, 0, 0, 2714, 2715, 1, 0, 0, 0, 2715, 2721, 3, 780, 390, 0, 2716, 2718, 3, 200, 100, 0, 2717, 2716, 1, 0, 0, 0, 2718, 2719, 1, 0, 0, 0, 2719, 2717, 1, 0, 0, 0, 2719, 2720, 1, 0, 0, 0, 2720, 2722, 1, 0, 0, 0, 2721, 2717, 1, 0, 0, 0, 2721, 2722, 1, 0, 0, 0, 2722, 197, 1, 0, 0, 0, 2723, 2724, 5, 138, 0, 0, 2724, 2726, 5, 328, 0, 0, 2725, 2727, 3, 422, 211, 0, 2726, 2725, 1, 0, 0, 0, 2726, 2727, 1, 0, 0, 0, 2727, 2728, 1, 0, 0, 0, 2728, 2730, 3, 780, 390, 0, 2729, 2731, 3, 200, 100, 0, 2730, 2729, 1, 0, 0, 0, 2731, 2732, 1, 0, 0, 0, 2732, 2730, 1, 0, 0, 0, 2732, 2733, 1, 0, 0, 0, 2733, 199, 1, 0, 0, 0, 2734, 2735, 5, 36, 0, 0, 2735, 2768, 3, 654, 327, 0, 2736, 2738, 5, 148, 0, 0, 2737, 2739, 3, 202, 101, 0, 2738, 2737, 1, 0, 0, 0, 2738, 2739, 1, 0, 0, 0, 2739, 2768, 1, 0, 0, 0, 2740, 2742, 5, 225, 0, 0, 2741, 2743, 5, 147, 0, 0, 2742, 2741, 1, 0, 0, 0, 2742, 2743, 1, 0, 0, 0, 2743, 2744, 1, 0, 0, 0, 2744, 2768, 3, 202, 101, 0, 2745, 2746, 7, 27, 0, 0, 2746, 2768, 3, 202, 101, 0, 2747, 2748, 5, 269, 0, 0, 2748, 2768, 7, 28, 0, 0, 2749, 2750, 5, 281, 0, 0, 2750, 2751, 5, 147, 0, 0, 2751, 2768, 3, 800, 400, 0, 2752, 2753, 5, 328, 0, 0, 2753, 2754, 5, 266, 0, 0, 2754, 2768, 3, 316, 158, 0, 2755, 2757, 5, 340, 0, 0, 2756, 2758, 5, 105, 0, 0, 2757, 2756, 1, 0, 0, 0, 2757, 2758, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2768, 3, 202, 101, 0, 2760, 2762, 5, 314, 0, 0, 2761, 2763, 5, 105, 0, 0, 2762, 2761, 1, 0, 0, 0, 2762, 2763, 1, 0, 0, 0, 2763, 2765, 1, 0, 0, 0, 2764, 2766, 3, 202, 101, 0, 2765, 2764, 1, 0, 0, 0, 2765, 2766, 1, 0, 0, 0, 2766, 2768, 1, 0, 0, 0, 2767, 2734, 1, 0, 0, 0, 2767, 2736, 1, 0, 0, 0, 2767, 2740, 1, 0, 0, 0, 2767, 2745, 1, 0, 0, 0, 2767, 2747, 1, 0, 0, 0, 2767, 2749, 1, 0, 0, 0, 2767, 2752, 1, 0, 0, 0, 2767, 2755, 1, 0, 0, 0, 2767, 2760, 1, 0, 0, 0, 2768, 201, 1, 0, 0, 0, 2769, 2771, 7, 29, 0, 0, 2770, 2769, 1, 0, 0, 0, 2770, 2771, 1, 0, 0, 0, 2771, 2772, 1, 0, 0, 0, 2772, 2775, 5, 573, 0, 0, 2773, 2775, 3, 812, 406, 0, 2774, 2770, 1, 0, 0, 0, 2774, 2773, 1, 0, 0, 0, 2775, 203, 1, 0, 0, 0, 2776, 2778, 5, 46, 0, 0, 2777, 2779, 3, 366, 183, 0, 2778, 2777, 1, 0, 0, 0, 2778, 2779, 1, 0, 0, 0, 2779, 2781, 1, 0, 0, 0, 2780, 2782, 5, 359, 0, 0, 2781, 2780, 1, 0, 0, 0, 2781, 2782, 1, 0, 0, 0, 2782, 2784, 1, 0, 0, 0, 2783, 2785, 5, 295, 0, 0, 2784, 2783, 1, 0, 0, 0, 2784, 2785, 1, 0, 0, 0, 2785, 2786, 1, 0, 0, 0, 2786, 2787, 5, 247, 0, 0, 2787, 2800, 3, 818, 409, 0, 2788, 2789, 5, 215, 0, 0, 2789, 2792, 3, 316, 158, 0, 2790, 2791, 5, 239, 0, 0, 2791, 2793, 3, 316, 158, 0, 2792, 2790, 1, 0, 0, 0, 2792, 2793, 1, 0, 0, 0, 2793, 2798, 1, 0, 0, 0, 2794, 2795, 5, 373, 0, 0, 2795, 2799, 3, 316, 158, 0, 2796, 2797, 5, 269, 0, 0, 2797, 2799, 5, 373, 0, 0, 2798, 2794, 1, 0, 0, 0, 2798, 2796, 1, 0, 0, 0, 2798, 2799, 1, 0, 0, 0, 2799, 2801, 1, 0, 0, 0, 2800, 2788, 1, 0, 0, 0, 2800, 2801, 1, 0, 0, 0, 2801, 205, 1, 0, 0, 0, 2802, 2803, 5, 46, 0, 0, 2803, 2806, 3, 176, 88, 0, 2804, 2805, 5, 282, 0, 0, 2805, 2807, 3, 814, 407, 0, 2806, 2804, 1, 0, 0, 0, 2806, 2807, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 2809, 5, 255, 0, 0, 2809, 2811, 3, 808, 404, 0, 2810, 2812, 3, 102, 51, 0, 2811, 2810, 1, 0, 0, 0, 2811, 2812, 1, 0, 0, 0, 2812, 207, 1, 0, 0, 0, 2813, 2814, 5, 46, 0, 0, 2814, 2816, 5, 204, 0, 0, 2815, 2817, 3, 294, 147, 0, 2816, 2815, 1, 0, 0, 0, 2816, 2817, 1, 0, 0, 0, 2817, 2818, 1, 0, 0, 0, 2818, 2820, 3, 818, 409, 0, 2819, 2821, 5, 105, 0, 0, 2820, 2819, 1, 0, 0, 0, 2820, 2821, 1, 0, 0, 0, 2821, 2829, 1, 0, 0, 0, 2822, 2823, 5, 323, 0, 0, 2823, 2828, 3, 790, 395, 0, 2824, 2825, 7, 30, 0, 0, 2825, 2828, 3, 58, 29, 0, 2826, 2828, 5, 150, 0, 0, 2827, 2822, 1, 0, 0, 0, 2827, 2824, 1, 0, 0, 0, 2827, 2826, 1, 0, 0, 0, 2828, 2831, 1, 0, 0, 0, 2829, 2827, 1, 0, 0, 0, 2829, 2830, 1, 0, 0, 0, 2830, 209, 1, 0, 0, 0, 2831, 2829, 1, 0, 0, 0, 2832, 2833, 5, 138, 0, 0, 2833, 2834, 5, 204, 0, 0, 2834, 2835, 3, 818, 409, 0, 2835, 2840, 5, 369, 0, 0, 2836, 2837, 5, 94, 0, 0, 2837, 2839, 3, 58, 29, 0, 2838, 2836, 1, 0, 0, 0, 2839, 2842, 1, 0, 0, 0, 2840, 2838, 1, 0, 0, 0, 2840, 2841, 1, 0, 0, 0, 2841, 211, 1, 0, 0, 0, 2842, 2840, 1, 0, 0, 0, 2843, 2844, 5, 138, 0, 0, 2844, 2845, 5, 204, 0, 0, 2845, 2846, 3, 818, 409, 0, 2846, 2879, 7, 6, 0, 0, 2847, 2848, 5, 443, 0, 0, 2848, 2849, 5, 62, 0, 0, 2849, 2850, 3, 652, 326, 0, 2850, 2851, 5, 247, 0, 0, 2851, 2852, 3, 818, 409, 0, 2852, 2880, 1, 0, 0, 0, 2853, 2854, 5, 442, 0, 0, 2854, 2880, 3, 374, 187, 0, 2855, 2856, 5, 296, 0, 0, 2856, 2880, 3, 378, 189, 0, 2857, 2858, 5, 278, 0, 0, 2858, 2859, 7, 31, 0, 0, 2859, 2860, 3, 316, 158, 0, 2860, 2861, 3, 170, 85, 0, 2861, 2880, 1, 0, 0, 0, 2862, 2863, 5, 278, 0, 0, 2863, 2880, 3, 416, 208, 0, 2864, 2865, 5, 211, 0, 0, 2865, 2880, 3, 382, 191, 0, 2866, 2867, 7, 32, 0, 0, 2867, 2880, 3, 652, 326, 0, 2868, 2869, 5, 41, 0, 0, 2869, 2870, 5, 2, 0, 0, 2870, 2871, 3, 652, 326, 0, 2871, 2872, 5, 36, 0, 0, 2872, 2873, 3, 652, 326, 0, 2873, 2874, 5, 3, 0, 0, 2874, 2880, 1, 0, 0, 0, 2875, 2876, 5, 136, 0, 0, 2876, 2880, 3, 394, 197, 0, 2877, 2880, 3, 312, 156, 0, 2878, 2880, 3, 310, 155, 0, 2879, 2847, 1, 0, 0, 0, 2879, 2853, 1, 0, 0, 0, 2879, 2855, 1, 0, 0, 0, 2879, 2857, 1, 0, 0, 0, 2879, 2862, 1, 0, 0, 0, 2879, 2864, 1, 0, 0, 0, 2879, 2866, 1, 0, 0, 0, 2879, 2868, 1, 0, 0, 0, 2879, 2875, 1, 0, 0, 0, 2879, 2877, 1, 0, 0, 0, 2879, 2878, 1, 0, 0, 0, 2880, 213, 1, 0, 0, 0, 2881, 2882, 5, 46, 0, 0, 2882, 2883, 5, 63, 0, 0, 2883, 2884, 5, 174, 0, 0, 2884, 2885, 5, 381, 0, 0, 2885, 2891, 3, 818, 409, 0, 2886, 2888, 3, 216, 108, 0, 2887, 2886, 1, 0, 0, 0, 2888, 2889, 1, 0, 0, 0, 2889, 2887, 1, 0, 0, 0, 2889, 2890, 1, 0, 0, 0, 2890, 2892, 1, 0, 0, 0, 2891, 2887, 1, 0, 0, 0, 2891, 2892, 1, 0, 0, 0, 2892, 2894, 1, 0, 0, 0, 2893, 2895, 3, 220, 110, 0, 2894, 2893, 1, 0, 0, 0, 2894, 2895, 1, 0, 0, 0, 2895, 215, 1, 0, 0, 0, 2896, 2898, 7, 33, 0, 0, 2897, 2899, 3, 316, 158, 0, 2898, 2897, 1, 0, 0, 0, 2898, 2899, 1, 0, 0, 0, 2899, 2903, 1, 0, 0, 0, 2900, 2901, 5, 269, 0, 0, 2901, 2903, 7, 33, 0, 0, 2902, 2896, 1, 0, 0, 0, 2902, 2900, 1, 0, 0, 0, 2903, 217, 1, 0, 0, 0, 2904, 2905, 5, 138, 0, 0, 2905, 2906, 5, 63, 0, 0, 2906, 2907, 5, 174, 0, 0, 2907, 2908, 5, 381, 0, 0, 2908, 2922, 3, 818, 409, 0, 2909, 2911, 3, 216, 108, 0, 2910, 2909, 1, 0, 0, 0, 2911, 2912, 1, 0, 0, 0, 2912, 2910, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2915, 1, 0, 0, 0, 2914, 2910, 1, 0, 0, 0, 2914, 2915, 1, 0, 0, 0, 2915, 2916, 1, 0, 0, 0, 2916, 2923, 3, 222, 111, 0, 2917, 2919, 3, 216, 108, 0, 2918, 2917, 1, 0, 0, 0, 2919, 2920, 1, 0, 0, 0, 2920, 2918, 1, 0, 0, 0, 2920, 2921, 1, 0, 0, 0, 2921, 2923, 1, 0, 0, 0, 2922, 2914, 1, 0, 0, 0, 2922, 2918, 1, 0, 0, 0, 2923, 219, 1, 0, 0, 0, 2924, 2925, 5, 280, 0, 0, 2925, 2926, 5, 2, 0, 0, 2926, 2931, 3, 226, 113, 0, 2927, 2928, 5, 6, 0, 0, 2928, 2930, 3, 226, 113, 0, 2929, 2927, 1, 0, 0, 0, 2930, 2933, 1, 0, 0, 0, 2931, 2929, 1, 0, 0, 0, 2931, 2932, 1, 0, 0, 0, 2932, 2934, 1, 0, 0, 0, 2933, 2931, 1, 0, 0, 0, 2934, 2935, 5, 3, 0, 0, 2935, 221, 1, 0, 0, 0, 2936, 2937, 5, 280, 0, 0, 2937, 2938, 5, 2, 0, 0, 2938, 2943, 3, 224, 112, 0, 2939, 2940, 5, 6, 0, 0, 2940, 2942, 3, 224, 112, 0, 2941, 2939, 1, 0, 0, 0, 2942, 2945, 1, 0, 0, 0, 2943, 2941, 1, 0, 0, 0, 2943, 2944, 1, 0, 0, 0, 2944, 2946, 1, 0, 0, 0, 2945, 2943, 1, 0, 0, 0, 2946, 2947, 5, 3, 0, 0, 2947, 223, 1, 0, 0, 0, 2948, 2949, 7, 34, 0, 0, 2949, 2950, 3, 226, 113, 0, 2950, 225, 1, 0, 0, 0, 2951, 2952, 3, 824, 412, 0, 2952, 2953, 3, 808, 404, 0, 2953, 227, 1, 0, 0, 0, 2954, 2955, 5, 46, 0, 0, 2955, 2957, 5, 331, 0, 0, 2956, 2958, 3, 294, 147, 0, 2957, 2956, 1, 0, 0, 0, 2957, 2958, 1, 0, 0, 0, 2958, 2959, 1, 0, 0, 0, 2959, 2962, 3, 818, 409, 0, 2960, 2961, 5, 360, 0, 0, 2961, 2963, 3, 808, 404, 0, 2962, 2960, 1, 0, 0, 0, 2962, 2963, 1, 0, 0, 0, 2963, 2965, 1, 0, 0, 0, 2964, 2966, 3, 230, 115, 0, 2965, 2964, 1, 0, 0, 0, 2965, 2966, 1, 0, 0, 0, 2966, 2967, 1, 0, 0, 0, 2967, 2968, 5, 63, 0, 0, 2968, 2969, 5, 174, 0, 0, 2969, 2970, 5, 381, 0, 0, 2970, 2972, 3, 818, 409, 0, 2971, 2973, 3, 220, 110, 0, 2972, 2971, 1, 0, 0, 0, 2972, 2973, 1, 0, 0, 0, 2973, 229, 1, 0, 0, 0, 2974, 2977, 5, 375, 0, 0, 2975, 2978, 3, 808, 404, 0, 2976, 2978, 5, 78, 0, 0, 2977, 2975, 1, 0, 0, 0, 2977, 2976, 1, 0, 0, 0, 2978, 231, 1, 0, 0, 0, 2979, 2980, 5, 138, 0, 0, 2980, 2981, 5, 331, 0, 0, 2981, 2987, 3, 818, 409, 0, 2982, 2988, 3, 222, 111, 0, 2983, 2985, 3, 230, 115, 0, 2984, 2986, 3, 222, 111, 0, 2985, 2984, 1, 0, 0, 0, 2985, 2986, 1, 0, 0, 0, 2986, 2988, 1, 0, 0, 0, 2987, 2982, 1, 0, 0, 0, 2987, 2983, 1, 0, 0, 0, 2988, 233, 1, 0, 0, 0, 2989, 2990, 5, 46, 0, 0, 2990, 2991, 5, 63, 0, 0, 2991, 2993, 5, 92, 0, 0, 2992, 2994, 3, 294, 147, 0, 2993, 2992, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2995, 1, 0, 0, 0, 2995, 2996, 3, 772, 386, 0, 2996, 2998, 5, 2, 0, 0, 2997, 2999, 3, 126, 63, 0, 2998, 2997, 1, 0, 0, 0, 2998, 2999, 1, 0, 0, 0, 2999, 3000, 1, 0, 0, 0, 3000, 3002, 5, 3, 0, 0, 3001, 3003, 3, 164, 82, 0, 3002, 3001, 1, 0, 0, 0, 3002, 3003, 1, 0, 0, 0, 3003, 3004, 1, 0, 0, 0, 3004, 3005, 5, 331, 0, 0, 3005, 3007, 3, 818, 409, 0, 3006, 3008, 3, 220, 110, 0, 3007, 3006, 1, 0, 0, 0, 3007, 3008, 1, 0, 0, 0, 3008, 3029, 1, 0, 0, 0, 3009, 3010, 5, 46, 0, 0, 3010, 3011, 5, 63, 0, 0, 3011, 3013, 5, 92, 0, 0, 3012, 3014, 3, 294, 147, 0, 3013, 3012, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3015, 1, 0, 0, 0, 3015, 3016, 3, 772, 386, 0, 3016, 3017, 5, 285, 0, 0, 3017, 3018, 5, 275, 0, 0, 3018, 3020, 3, 774, 387, 0, 3019, 3021, 3, 124, 62, 0, 3020, 3019, 1, 0, 0, 0, 3020, 3021, 1, 0, 0, 0, 3021, 3022, 1, 0, 0, 0, 3022, 3023, 3, 106, 53, 0, 3023, 3024, 5, 331, 0, 0, 3024, 3026, 3, 818, 409, 0, 3025, 3027, 3, 220, 110, 0, 3026, 3025, 1, 0, 0, 0, 3026, 3027, 1, 0, 0, 0, 3027, 3029, 1, 0, 0, 0, 3028, 2989, 1, 0, 0, 0, 3028, 3009, 1, 0, 0, 0, 3029, 235, 1, 0, 0, 0, 3030, 3031, 5, 444, 0, 0, 3031, 3032, 5, 63, 0, 0, 3032, 3033, 5, 323, 0, 0, 3033, 3043, 3, 790, 395, 0, 3034, 3035, 5, 74, 0, 0, 3035, 3038, 5, 94, 0, 0, 3036, 3038, 5, 59, 0, 0, 3037, 3034, 1, 0, 0, 0, 3037, 3036, 1, 0, 0, 0, 3038, 3039, 1, 0, 0, 0, 3039, 3040, 5, 2, 0, 0, 3040, 3041, 3, 628, 314, 0, 3041, 3042, 5, 3, 0, 0, 3042, 3044, 1, 0, 0, 0, 3043, 3037, 1, 0, 0, 0, 3043, 3044, 1, 0, 0, 0, 3044, 3045, 1, 0, 0, 0, 3045, 3046, 5, 64, 0, 0, 3046, 3047, 5, 331, 0, 0, 3047, 3048, 3, 818, 409, 0, 3048, 3049, 5, 71, 0, 0, 3049, 3051, 3, 818, 409, 0, 3050, 3052, 3, 220, 110, 0, 3051, 3050, 1, 0, 0, 0, 3051, 3052, 1, 0, 0, 0, 3052, 237, 1, 0, 0, 0, 3053, 3054, 5, 46, 0, 0, 3054, 3055, 5, 99, 0, 0, 3055, 3057, 5, 257, 0, 0, 3056, 3058, 3, 294, 147, 0, 3057, 3056, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3059, 1, 0, 0, 0, 3059, 3062, 5, 62, 0, 0, 3060, 3063, 3, 814, 407, 0, 3061, 3063, 5, 99, 0, 0, 3062, 3060, 1, 0, 0, 0, 3062, 3061, 1, 0, 0, 0, 3063, 3064, 1, 0, 0, 0, 3064, 3065, 5, 331, 0, 0, 3065, 3067, 3, 818, 409, 0, 3066, 3068, 3, 220, 110, 0, 3067, 3066, 1, 0, 0, 0, 3067, 3068, 1, 0, 0, 0, 3068, 239, 1, 0, 0, 0, 3069, 3070, 5, 138, 0, 0, 3070, 3071, 5, 99, 0, 0, 3071, 3072, 5, 257, 0, 0, 3072, 3075, 5, 62, 0, 0, 3073, 3076, 3, 814, 407, 0, 3074, 3076, 5, 99, 0, 0, 3075, 3073, 1, 0, 0, 0, 3075, 3074, 1, 0, 0, 0, 3076, 3077, 1, 0, 0, 0, 3077, 3078, 5, 331, 0, 0, 3078, 3079, 3, 818, 409, 0, 3079, 3080, 3, 222, 111, 0, 3080, 241, 1, 0, 0, 0, 3081, 3082, 5, 46, 0, 0, 3082, 3083, 5, 445, 0, 0, 3083, 3084, 3, 818, 409, 0, 3084, 3085, 5, 80, 0, 0, 3085, 3092, 3, 780, 390, 0, 3086, 3090, 5, 36, 0, 0, 3087, 3091, 5, 541, 0, 0, 3088, 3091, 5, 542, 0, 0, 3089, 3091, 3, 826, 413, 0, 3090, 3087, 1, 0, 0, 0, 3090, 3088, 1, 0, 0, 0, 3090, 3089, 1, 0, 0, 0, 3091, 3093, 1, 0, 0, 0, 3092, 3086, 1, 0, 0, 0, 3092, 3093, 1, 0, 0, 0, 3093, 3096, 1, 0, 0, 0, 3094, 3095, 5, 62, 0, 0, 3095, 3097, 7, 35, 0, 0, 3096, 3094, 1, 0, 0, 0, 3096, 3097, 1, 0, 0, 0, 3097, 3100, 1, 0, 0, 0, 3098, 3099, 5, 94, 0, 0, 3099, 3101, 3, 816, 408, 0, 3100, 3098, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3101, 3103, 1, 0, 0, 0, 3102, 3104, 3, 250, 125, 0, 3103, 3102, 1, 0, 0, 0, 3103, 3104, 1, 0, 0, 0, 3104, 3106, 1, 0, 0, 0, 3105, 3107, 3, 252, 126, 0, 3106, 3105, 1, 0, 0, 0, 3106, 3107, 1, 0, 0, 0, 3107, 243, 1, 0, 0, 0, 3108, 3109, 5, 138, 0, 0, 3109, 3110, 5, 445, 0, 0, 3110, 3111, 3, 818, 409, 0, 3111, 3112, 5, 80, 0, 0, 3112, 3115, 3, 780, 390, 0, 3113, 3114, 5, 94, 0, 0, 3114, 3116, 3, 816, 408, 0, 3115, 3113, 1, 0, 0, 0, 3115, 3116, 1, 0, 0, 0, 3116, 3118, 1, 0, 0, 0, 3117, 3119, 3, 250, 125, 0, 3118, 3117, 1, 0, 0, 0, 3118, 3119, 1, 0, 0, 0, 3119, 3121, 1, 0, 0, 0, 3120, 3122, 3, 252, 126, 0, 3121, 3120, 1, 0, 0, 0, 3121, 3122, 1, 0, 0, 0, 3122, 245, 1, 0, 0, 0, 3123, 3124, 5, 138, 0, 0, 3124, 3125, 5, 296, 0, 0, 3125, 3127, 3, 796, 398, 0, 3126, 3128, 3, 368, 184, 0, 3127, 3126, 1, 0, 0, 0, 3127, 3128, 1, 0, 0, 0, 3128, 3155, 1, 0, 0, 0, 3129, 3133, 3, 248, 124, 0, 3130, 3132, 3, 248, 124, 0, 3131, 3130, 1, 0, 0, 0, 3132, 3135, 1, 0, 0, 0, 3133, 3131, 1, 0, 0, 0, 3133, 3134, 1, 0, 0, 0, 3134, 3137, 1, 0, 0, 0, 3135, 3133, 1, 0, 0, 0, 3136, 3138, 5, 315, 0, 0, 3137, 3136, 1, 0, 0, 0, 3137, 3138, 1, 0, 0, 0, 3138, 3156, 1, 0, 0, 0, 3139, 3140, 5, 309, 0, 0, 3140, 3141, 5, 94, 0, 0, 3141, 3156, 3, 798, 399, 0, 3142, 3143, 5, 282, 0, 0, 3143, 3144, 5, 94, 0, 0, 3144, 3156, 3, 814, 407, 0, 3145, 3146, 5, 333, 0, 0, 3146, 3147, 5, 323, 0, 0, 3147, 3156, 3, 32, 16, 0, 3148, 3150, 5, 269, 0, 0, 3149, 3148, 1, 0, 0, 0, 3149, 3150, 1, 0, 0, 0, 3150, 3151, 1, 0, 0, 0, 3151, 3152, 5, 462, 0, 0, 3152, 3153, 5, 80, 0, 0, 3153, 3154, 5, 204, 0, 0, 3154, 3156, 3, 818, 409, 0, 3155, 3129, 1, 0, 0, 0, 3155, 3139, 1, 0, 0, 0, 3155, 3142, 1, 0, 0, 0, 3155, 3145, 1, 0, 0, 0, 3155, 3149, 1, 0, 0, 0, 3156, 247, 1, 0, 0, 0, 3157, 3159, 5, 205, 0, 0, 3158, 3157, 1, 0, 0, 0, 3158, 3159, 1, 0, 0, 0, 3159, 3160, 1, 0, 0, 0, 3160, 3161, 5, 327, 0, 0, 3161, 3168, 5, 243, 0, 0, 3162, 3164, 5, 205, 0, 0, 3163, 3162, 1, 0, 0, 0, 3163, 3164, 1, 0, 0, 0, 3164, 3165, 1, 0, 0, 0, 3165, 3166, 5, 327, 0, 0, 3166, 3168, 5, 181, 0, 0, 3167, 3158, 1, 0, 0, 0, 3167, 3163, 1, 0, 0, 0, 3168, 3187, 1, 0, 0, 0, 3169, 3170, 5, 333, 0, 0, 3170, 3171, 3, 818, 409, 0, 3171, 3174, 7, 36, 0, 0, 3172, 3175, 3, 818, 409, 0, 3173, 3175, 5, 53, 0, 0, 3174, 3172, 1, 0, 0, 0, 3174, 3173, 1, 0, 0, 0, 3175, 3187, 1, 0, 0, 0, 3176, 3177, 5, 333, 0, 0, 3177, 3178, 3, 818, 409, 0, 3178, 3179, 5, 64, 0, 0, 3179, 3180, 5, 434, 0, 0, 3180, 3187, 1, 0, 0, 0, 3181, 3184, 5, 313, 0, 0, 3182, 3185, 3, 818, 409, 0, 3183, 3185, 5, 30, 0, 0, 3184, 3182, 1, 0, 0, 0, 3184, 3183, 1, 0, 0, 0, 3185, 3187, 1, 0, 0, 0, 3186, 3167, 1, 0, 0, 0, 3186, 3169, 1, 0, 0, 0, 3186, 3176, 1, 0, 0, 0, 3186, 3181, 1, 0, 0, 0, 3187, 249, 1, 0, 0, 0, 3188, 3189, 5, 100, 0, 0, 3189, 3190, 5, 2, 0, 0, 3190, 3191, 3, 674, 337, 0, 3191, 3192, 5, 3, 0, 0, 3192, 251, 1, 0, 0, 0, 3193, 3194, 5, 105, 0, 0, 3194, 3195, 5, 42, 0, 0, 3195, 3196, 5, 2, 0, 0, 3196, 3197, 3, 674, 337, 0, 3197, 3198, 5, 3, 0, 0, 3198, 253, 1, 0, 0, 0, 3199, 3200, 5, 46, 0, 0, 3200, 3201, 5, 131, 0, 0, 3201, 3202, 5, 446, 0, 0, 3202, 3203, 3, 818, 409, 0, 3203, 3204, 5, 360, 0, 0, 3204, 3205, 7, 37, 0, 0, 3205, 3206, 5, 215, 0, 0, 3206, 3207, 3, 316, 158, 0, 3207, 255, 1, 0, 0, 0, 3208, 3210, 5, 46, 0, 0, 3209, 3211, 3, 366, 183, 0, 3210, 3209, 1, 0, 0, 0, 3210, 3211, 1, 0, 0, 0, 3211, 3212, 1, 0, 0, 0, 3212, 3213, 5, 357, 0, 0, 3213, 3214, 3, 818, 409, 0, 3214, 3215, 3, 258, 129, 0, 3215, 3216, 3, 260, 130, 0, 3216, 3217, 5, 80, 0, 0, 3217, 3229, 3, 774, 387, 0, 3218, 3225, 5, 447, 0, 0, 3219, 3220, 7, 38, 0, 0, 3220, 3222, 7, 39, 0, 0, 3221, 3223, 5, 36, 0, 0, 3222, 3221, 1, 0, 0, 0, 3222, 3223, 1, 0, 0, 0, 3223, 3224, 1, 0, 0, 0, 3224, 3226, 3, 818, 409, 0, 3225, 3219, 1, 0, 0, 0, 3226, 3227, 1, 0, 0, 0, 3227, 3225, 1, 0, 0, 0, 3227, 3228, 1, 0, 0, 0, 3228, 3230, 1, 0, 0, 0, 3229, 3218, 1, 0, 0, 0, 3229, 3230, 1, 0, 0, 0, 3230, 3236, 1, 0, 0, 0, 3231, 3233, 5, 62, 0, 0, 3232, 3234, 5, 192, 0, 0, 3233, 3232, 1, 0, 0, 0, 3233, 3234, 1, 0, 0, 0, 3234, 3235, 1, 0, 0, 0, 3235, 3237, 7, 40, 0, 0, 3236, 3231, 1, 0, 0, 0, 3236, 3237, 1, 0, 0, 0, 3237, 3239, 1, 0, 0, 0, 3238, 3240, 3, 264, 132, 0, 3239, 3238, 1, 0, 0, 0, 3239, 3240, 1, 0, 0, 0, 3240, 3241, 1, 0, 0, 0, 3241, 3242, 5, 202, 0, 0, 3242, 3243, 3, 266, 133, 0, 3243, 3244, 5, 2, 0, 0, 3244, 3245, 3, 268, 134, 0, 3245, 3246, 5, 3, 0, 0, 3246, 3287, 1, 0, 0, 0, 3247, 3249, 5, 46, 0, 0, 3248, 3250, 3, 366, 183, 0, 3249, 3248, 1, 0, 0, 0, 3249, 3250, 1, 0, 0, 0, 3250, 3252, 1, 0, 0, 0, 3251, 3253, 5, 45, 0, 0, 3252, 3251, 1, 0, 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3254, 1, 0, 0, 0, 3254, 3255, 5, 357, 0, 0, 3255, 3256, 3, 818, 409, 0, 3256, 3257, 3, 258, 129, 0, 3257, 3258, 3, 260, 130, 0, 3258, 3259, 5, 80, 0, 0, 3259, 3262, 3, 774, 387, 0, 3260, 3261, 5, 64, 0, 0, 3261, 3263, 3, 780, 390, 0, 3262, 3260, 1, 0, 0, 0, 3262, 3263, 1, 0, 0, 0, 3263, 3267, 1, 0, 0, 0, 3264, 3266, 3, 272, 136, 0, 3265, 3264, 1, 0, 0, 0, 3266, 3269, 1, 0, 0, 0, 3267, 3265, 1, 0, 0, 0, 3267, 3268, 1, 0, 0, 0, 3268, 3275, 1, 0, 0, 0, 3269, 3267, 1, 0, 0, 0, 3270, 3272, 5, 62, 0, 0, 3271, 3273, 5, 192, 0, 0, 3272, 3271, 1, 0, 0, 0, 3272, 3273, 1, 0, 0, 0, 3273, 3274, 1, 0, 0, 0, 3274, 3276, 7, 40, 0, 0, 3275, 3270, 1, 0, 0, 0, 3275, 3276, 1, 0, 0, 0, 3276, 3278, 1, 0, 0, 0, 3277, 3279, 3, 264, 132, 0, 3278, 3277, 1, 0, 0, 0, 3278, 3279, 1, 0, 0, 0, 3279, 3280, 1, 0, 0, 0, 3280, 3281, 5, 202, 0, 0, 3281, 3282, 3, 266, 133, 0, 3282, 3283, 5, 2, 0, 0, 3283, 3284, 3, 268, 134, 0, 3284, 3285, 5, 3, 0, 0, 3285, 3287, 1, 0, 0, 0, 3286, 3208, 1, 0, 0, 0, 3286, 3247, 1, 0, 0, 0, 3287, 257, 1, 0, 0, 0, 3288, 3293, 5, 145, 0, 0, 3289, 3293, 5, 135, 0, 0, 3290, 3291, 5, 242, 0, 0, 3291, 3293, 5, 275, 0, 0, 3292, 3288, 1, 0, 0, 0, 3292, 3289, 1, 0, 0, 0, 3292, 3290, 1, 0, 0, 0, 3293, 259, 1, 0, 0, 0, 3294, 3299, 3, 262, 131, 0, 3295, 3296, 5, 82, 0, 0, 3296, 3298, 3, 262, 131, 0, 3297, 3295, 1, 0, 0, 0, 3298, 3301, 1, 0, 0, 0, 3299, 3297, 1, 0, 0, 0, 3299, 3300, 1, 0, 0, 0, 3300, 261, 1, 0, 0, 0, 3301, 3299, 1, 0, 0, 0, 3302, 3311, 5, 241, 0, 0, 3303, 3311, 5, 182, 0, 0, 3304, 3307, 5, 369, 0, 0, 3305, 3306, 5, 275, 0, 0, 3306, 3308, 3, 148, 74, 0, 3307, 3305, 1, 0, 0, 0, 3307, 3308, 1, 0, 0, 0, 3308, 3311, 1, 0, 0, 0, 3309, 3311, 5, 358, 0, 0, 3310, 3302, 1, 0, 0, 0, 3310, 3303, 1, 0, 0, 0, 3310, 3304, 1, 0, 0, 0, 3310, 3309, 1, 0, 0, 0, 3311, 263, 1, 0, 0, 0, 3312, 3313, 5, 102, 0, 0, 3313, 3314, 5, 2, 0, 0, 3314, 3315, 3, 674, 337, 0, 3315, 3316, 5, 3, 0, 0, 3316, 265, 1, 0, 0, 0, 3317, 3318, 5, 211, 0, 0, 3318, 3322, 3, 806, 403, 0, 3319, 3320, 5, 296, 0, 0, 3320, 3322, 3, 796, 398, 0, 3321, 3317, 1, 0, 0, 0, 3321, 3319, 1, 0, 0, 0, 3322, 267, 1, 0, 0, 0, 3323, 3326, 3, 270, 135, 0, 3324, 3326, 1, 0, 0, 0, 3325, 3323, 1, 0, 0, 0, 3325, 3324, 1, 0, 0, 0, 3326, 3331, 1, 0, 0, 0, 3327, 3328, 5, 6, 0, 0, 3328, 3330, 3, 270, 135, 0, 3329, 3327, 1, 0, 0, 0, 3330, 3333, 1, 0, 0, 0, 3331, 3329, 1, 0, 0, 0, 3331, 3332, 1, 0, 0, 0, 3332, 269, 1, 0, 0, 0, 3333, 3331, 1, 0, 0, 0, 3334, 3339, 5, 571, 0, 0, 3335, 3339, 5, 573, 0, 0, 3336, 3339, 3, 808, 404, 0, 3337, 3339, 3, 824, 412, 0, 3338, 3334, 1, 0, 0, 0, 3338, 3335, 1, 0, 0, 0, 3338, 3336, 1, 0, 0, 0, 3338, 3337, 1, 0, 0, 0, 3339, 271, 1, 0, 0, 0, 3340, 3342, 5, 77, 0, 0, 3341, 3340, 1, 0, 0, 0, 3341, 3342, 1, 0, 0, 0, 3342, 3343, 1, 0, 0, 0, 3343, 3351, 5, 54, 0, 0, 3344, 3345, 5, 69, 0, 0, 3345, 3351, 7, 9, 0, 0, 3346, 3347, 5, 77, 0, 0, 3347, 3351, 5, 371, 0, 0, 3348, 3349, 5, 269, 0, 0, 3349, 3351, 5, 228, 0, 0, 3350, 3341, 1, 0, 0, 0, 3350, 3344, 1, 0, 0, 0, 3350, 3346, 1, 0, 0, 0, 3350, 3348, 1, 0, 0, 0, 3351, 273, 1, 0, 0, 0, 3352, 3353, 5, 46, 0, 0, 3353, 3354, 5, 198, 0, 0, 3354, 3355, 5, 357, 0, 0, 3355, 3356, 3, 818, 409, 0, 3356, 3357, 5, 80, 0, 0, 3357, 3367, 3, 824, 412, 0, 3358, 3359, 5, 102, 0, 0, 3359, 3364, 3, 276, 138, 0, 3360, 3361, 5, 33, 0, 0, 3361, 3363, 3, 276, 138, 0, 3362, 3360, 1, 0, 0, 0, 3363, 3366, 1, 0, 0, 0, 3364, 3362, 1, 0, 0, 0, 3364, 3365, 1, 0, 0, 0, 3365, 3368, 1, 0, 0, 0, 3366, 3364, 1, 0, 0, 0, 3367, 3358, 1, 0, 0, 0, 3367, 3368, 1, 0, 0, 0, 3368, 3369, 1, 0, 0, 0, 3369, 3370, 5, 202, 0, 0, 3370, 3371, 3, 266, 133, 0, 3371, 3372, 5, 2, 0, 0, 3372, 3373, 5, 3, 0, 0, 3373, 275, 1, 0, 0, 0, 3374, 3375, 3, 818, 409, 0, 3375, 3376, 5, 68, 0, 0, 3376, 3377, 5, 2, 0, 0, 3377, 3381, 3, 808, 404, 0, 3378, 3380, 3, 462, 231, 0, 3379, 3378, 1, 0, 0, 0, 3380, 3383, 1, 0, 0, 0, 3381, 3379, 1, 0, 0, 0, 3381, 3382, 1, 0, 0, 0, 3382, 3384, 1, 0, 0, 0, 3383, 3381, 1, 0, 0, 0, 3384, 3385, 5, 3, 0, 0, 3385, 277, 1, 0, 0, 0, 3386, 3387, 5, 138, 0, 0, 3387, 3388, 5, 198, 0, 0, 3388, 3389, 5, 357, 0, 0, 3389, 3395, 3, 818, 409, 0, 3390, 3392, 5, 193, 0, 0, 3391, 3393, 7, 14, 0, 0, 3392, 3391, 1, 0, 0, 0, 3392, 3393, 1, 0, 0, 0, 3393, 3396, 1, 0, 0, 0, 3394, 3396, 5, 186, 0, 0, 3395, 3390, 1, 0, 0, 0, 3395, 3394, 1, 0, 0, 0, 3396, 279, 1, 0, 0, 0, 3397, 3398, 5, 46, 0, 0, 3398, 3399, 5, 140, 0, 0, 3399, 3400, 3, 316, 158, 0, 3400, 3401, 5, 42, 0, 0, 3401, 3402, 5, 2, 0, 0, 3402, 3403, 3, 674, 337, 0, 3403, 3407, 5, 3, 0, 0, 3404, 3406, 3, 272, 136, 0, 3405, 3404, 1, 0, 0, 0, 3406, 3409, 1, 0, 0, 0, 3407, 3405, 1, 0, 0, 0, 3407, 3408, 1, 0, 0, 0, 3408, 281, 1, 0, 0, 0, 3409, 3407, 1, 0, 0, 0, 3410, 3412, 5, 46, 0, 0, 3411, 3413, 3, 366, 183, 0, 3412, 3411, 1, 0, 0, 0, 3412, 3413, 1, 0, 0, 0, 3413, 3414, 1, 0, 0, 0, 3414, 3415, 5, 136, 0, 0, 3415, 3430, 3, 806, 403, 0, 3416, 3417, 3, 392, 196, 0, 3417, 3418, 3, 284, 142, 0, 3418, 3431, 1, 0, 0, 0, 3419, 3420, 5, 2, 0, 0, 3420, 3425, 3, 290, 145, 0, 3421, 3422, 5, 6, 0, 0, 3422, 3424, 3, 290, 145, 0, 3423, 3421, 1, 0, 0, 0, 3424, 3427, 1, 0, 0, 0, 3425, 3423, 1, 0, 0, 0, 3425, 3426, 1, 0, 0, 0, 3426, 3428, 1, 0, 0, 0, 3427, 3425, 1, 0, 0, 0, 3428, 3429, 5, 3, 0, 0, 3429, 3431, 1, 0, 0, 0, 3430, 3416, 1, 0, 0, 0, 3430, 3419, 1, 0, 0, 0, 3431, 3489, 1, 0, 0, 0, 3432, 3433, 5, 46, 0, 0, 3433, 3434, 5, 278, 0, 0, 3434, 3435, 3, 414, 207, 0, 3435, 3436, 3, 284, 142, 0, 3436, 3489, 1, 0, 0, 0, 3437, 3438, 5, 46, 0, 0, 3438, 3439, 5, 360, 0, 0, 3439, 3440, 3, 316, 158, 0, 3440, 3458, 5, 36, 0, 0, 3441, 3443, 5, 2, 0, 0, 3442, 3444, 3, 642, 321, 0, 3443, 3442, 1, 0, 0, 0, 3443, 3444, 1, 0, 0, 0, 3444, 3445, 1, 0, 0, 0, 3445, 3459, 5, 3, 0, 0, 3446, 3447, 5, 196, 0, 0, 3447, 3455, 5, 2, 0, 0, 3448, 3452, 3, 808, 404, 0, 3449, 3451, 3, 462, 231, 0, 3450, 3449, 1, 0, 0, 0, 3451, 3454, 1, 0, 0, 0, 3452, 3450, 1, 0, 0, 0, 3452, 3453, 1, 0, 0, 0, 3453, 3456, 1, 0, 0, 0, 3454, 3452, 1, 0, 0, 0, 3455, 3448, 1, 0, 0, 0, 3455, 3456, 1, 0, 0, 0, 3456, 3457, 1, 0, 0, 0, 3457, 3459, 5, 3, 0, 0, 3458, 3441, 1, 0, 0, 0, 3458, 3446, 1, 0, 0, 0, 3459, 3489, 1, 0, 0, 0, 3460, 3461, 5, 46, 0, 0, 3461, 3462, 5, 360, 0, 0, 3462, 3468, 3, 316, 158, 0, 3463, 3464, 5, 36, 0, 0, 3464, 3466, 5, 299, 0, 0, 3465, 3463, 1, 0, 0, 0, 3465, 3466, 1, 0, 0, 0, 3466, 3467, 1, 0, 0, 0, 3467, 3469, 3, 284, 142, 0, 3468, 3465, 1, 0, 0, 0, 3468, 3469, 1, 0, 0, 0, 3469, 3489, 1, 0, 0, 0, 3470, 3471, 5, 46, 0, 0, 3471, 3472, 5, 355, 0, 0, 3472, 3473, 5, 325, 0, 0, 3473, 3474, 7, 41, 0, 0, 3474, 3475, 3, 316, 158, 0, 3475, 3476, 3, 284, 142, 0, 3476, 3489, 1, 0, 0, 0, 3477, 3478, 5, 46, 0, 0, 3478, 3480, 5, 108, 0, 0, 3479, 3481, 3, 294, 147, 0, 3480, 3479, 1, 0, 0, 0, 3480, 3481, 1, 0, 0, 0, 3481, 3482, 1, 0, 0, 0, 3482, 3486, 3, 316, 158, 0, 3483, 3487, 3, 284, 142, 0, 3484, 3485, 5, 64, 0, 0, 3485, 3487, 3, 316, 158, 0, 3486, 3483, 1, 0, 0, 0, 3486, 3484, 1, 0, 0, 0, 3487, 3489, 1, 0, 0, 0, 3488, 3410, 1, 0, 0, 0, 3488, 3432, 1, 0, 0, 0, 3488, 3437, 1, 0, 0, 0, 3488, 3460, 1, 0, 0, 0, 3488, 3470, 1, 0, 0, 0, 3488, 3477, 1, 0, 0, 0, 3489, 283, 1, 0, 0, 0, 3490, 3491, 5, 2, 0, 0, 3491, 3496, 3, 286, 143, 0, 3492, 3493, 5, 6, 0, 0, 3493, 3495, 3, 286, 143, 0, 3494, 3492, 1, 0, 0, 0, 3495, 3498, 1, 0, 0, 0, 3496, 3494, 1, 0, 0, 0, 3496, 3497, 1, 0, 0, 0, 3497, 3499, 1, 0, 0, 0, 3498, 3496, 1, 0, 0, 0, 3499, 3500, 5, 3, 0, 0, 3500, 285, 1, 0, 0, 0, 3501, 3504, 3, 824, 412, 0, 3502, 3503, 5, 10, 0, 0, 3503, 3505, 3, 288, 144, 0, 3504, 3502, 1, 0, 0, 0, 3504, 3505, 1, 0, 0, 0, 3505, 287, 1, 0, 0, 0, 3506, 3513, 3, 388, 194, 0, 3507, 3513, 3, 834, 417, 0, 3508, 3513, 3, 726, 363, 0, 3509, 3513, 3, 202, 101, 0, 3510, 3513, 3, 808, 404, 0, 3511, 3513, 5, 407, 0, 0, 3512, 3506, 1, 0, 0, 0, 3512, 3507, 1, 0, 0, 0, 3512, 3508, 1, 0, 0, 0, 3512, 3509, 1, 0, 0, 0, 3512, 3510, 1, 0, 0, 0, 3512, 3511, 1, 0, 0, 0, 3513, 289, 1, 0, 0, 0, 3514, 3515, 3, 826, 413, 0, 3515, 3516, 5, 10, 0, 0, 3516, 3517, 3, 288, 144, 0, 3517, 291, 1, 0, 0, 0, 3518, 3519, 5, 138, 0, 0, 3519, 3520, 5, 360, 0, 0, 3520, 3521, 3, 316, 158, 0, 3521, 3522, 5, 133, 0, 0, 3522, 3524, 5, 450, 0, 0, 3523, 3525, 3, 294, 147, 0, 3524, 3523, 1, 0, 0, 0, 3524, 3525, 1, 0, 0, 0, 3525, 3526, 1, 0, 0, 0, 3526, 3529, 3, 808, 404, 0, 3527, 3528, 7, 42, 0, 0, 3528, 3530, 3, 808, 404, 0, 3529, 3527, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3541, 1, 0, 0, 0, 3531, 3532, 5, 138, 0, 0, 3532, 3533, 5, 360, 0, 0, 3533, 3534, 3, 316, 158, 0, 3534, 3535, 5, 309, 0, 0, 3535, 3536, 5, 450, 0, 0, 3536, 3537, 3, 808, 404, 0, 3537, 3538, 5, 94, 0, 0, 3538, 3539, 3, 808, 404, 0, 3539, 3541, 1, 0, 0, 0, 3540, 3518, 1, 0, 0, 0, 3540, 3531, 1, 0, 0, 0, 3541, 293, 1, 0, 0, 0, 3542, 3543, 5, 220, 0, 0, 3543, 3544, 5, 77, 0, 0, 3544, 3545, 5, 396, 0, 0, 3545, 295, 1, 0, 0, 0, 3546, 3547, 5, 46, 0, 0, 3547, 3548, 5, 278, 0, 0, 3548, 3549, 5, 156, 0, 0, 3549, 3551, 3, 316, 158, 0, 3550, 3552, 5, 53, 0, 0, 3551, 3550, 1, 0, 0, 0, 3551, 3552, 1, 0, 0, 0, 3552, 3553, 1, 0, 0, 0, 3553, 3554, 5, 62, 0, 0, 3554, 3555, 5, 360, 0, 0, 3555, 3556, 3, 652, 326, 0, 3556, 3559, 3, 170, 85, 0, 3557, 3558, 5, 206, 0, 0, 3558, 3560, 3, 316, 158, 0, 3559, 3557, 1, 0, 0, 0, 3559, 3560, 1, 0, 0, 0, 3560, 3561, 1, 0, 0, 0, 3561, 3562, 5, 36, 0, 0, 3562, 3567, 3, 298, 149, 0, 3563, 3564, 5, 6, 0, 0, 3564, 3566, 3, 298, 149, 0, 3565, 3563, 1, 0, 0, 0, 3566, 3569, 1, 0, 0, 0, 3567, 3565, 1, 0, 0, 0, 3567, 3568, 1, 0, 0, 0, 3568, 297, 1, 0, 0, 0, 3569, 3567, 1, 0, 0, 0, 3570, 3571, 5, 278, 0, 0, 3571, 3572, 5, 571, 0, 0, 3572, 3574, 3, 414, 207, 0, 3573, 3575, 3, 412, 206, 0, 3574, 3573, 1, 0, 0, 0, 3574, 3575, 1, 0, 0, 0, 3575, 3583, 1, 0, 0, 0, 3576, 3581, 5, 62, 0, 0, 3577, 3582, 5, 325, 0, 0, 3578, 3579, 5, 83, 0, 0, 3579, 3580, 5, 147, 0, 0, 3580, 3582, 3, 316, 158, 0, 3581, 3577, 1, 0, 0, 0, 3581, 3578, 1, 0, 0, 0, 3582, 3584, 1, 0, 0, 0, 3583, 3576, 1, 0, 0, 0, 3583, 3584, 1, 0, 0, 0, 3584, 3586, 1, 0, 0, 0, 3585, 3587, 5, 302, 0, 0, 3586, 3585, 1, 0, 0, 0, 3586, 3587, 1, 0, 0, 0, 3587, 3597, 1, 0, 0, 0, 3588, 3589, 5, 211, 0, 0, 3589, 3591, 5, 571, 0, 0, 3590, 3592, 3, 528, 264, 0, 3591, 3590, 1, 0, 0, 0, 3591, 3592, 1, 0, 0, 0, 3592, 3593, 1, 0, 0, 0, 3593, 3597, 3, 382, 191, 0, 3594, 3595, 5, 345, 0, 0, 3595, 3597, 3, 652, 326, 0, 3596, 3570, 1, 0, 0, 0, 3596, 3588, 1, 0, 0, 0, 3596, 3594, 1, 0, 0, 0, 3597, 299, 1, 0, 0, 0, 3598, 3599, 5, 46, 0, 0, 3599, 3600, 5, 278, 0, 0, 3600, 3601, 5, 206, 0, 0, 3601, 3602, 3, 316, 158, 0, 3602, 3603, 3, 170, 85, 0, 3603, 301, 1, 0, 0, 0, 3604, 3605, 5, 138, 0, 0, 3605, 3606, 5, 278, 0, 0, 3606, 3607, 5, 206, 0, 0, 3607, 3608, 3, 316, 158, 0, 3608, 3627, 3, 170, 85, 0, 3609, 3610, 5, 133, 0, 0, 3610, 3615, 3, 298, 149, 0, 3611, 3612, 5, 6, 0, 0, 3612, 3614, 3, 298, 149, 0, 3613, 3611, 1, 0, 0, 0, 3614, 3617, 1, 0, 0, 0, 3615, 3613, 1, 0, 0, 0, 3615, 3616, 1, 0, 0, 0, 3616, 3628, 1, 0, 0, 0, 3617, 3615, 1, 0, 0, 0, 3618, 3619, 5, 191, 0, 0, 3619, 3624, 3, 304, 152, 0, 3620, 3621, 5, 6, 0, 0, 3621, 3623, 3, 304, 152, 0, 3622, 3620, 1, 0, 0, 0, 3623, 3626, 1, 0, 0, 0, 3624, 3622, 1, 0, 0, 0, 3624, 3625, 1, 0, 0, 0, 3625, 3628, 1, 0, 0, 0, 3626, 3624, 1, 0, 0, 0, 3627, 3609, 1, 0, 0, 0, 3627, 3618, 1, 0, 0, 0, 3628, 303, 1, 0, 0, 0, 3629, 3630, 7, 43, 0, 0, 3630, 3631, 5, 571, 0, 0, 3631, 3632, 3, 528, 264, 0, 3632, 305, 1, 0, 0, 0, 3633, 3634, 5, 301, 0, 0, 3634, 3635, 5, 281, 0, 0, 3635, 3636, 5, 147, 0, 0, 3636, 3637, 3, 816, 408, 0, 3637, 3638, 5, 94, 0, 0, 3638, 3639, 3, 814, 407, 0, 3639, 307, 1, 0, 0, 0, 3640, 3663, 5, 191, 0, 0, 3641, 3664, 5, 328, 0, 0, 3642, 3664, 5, 226, 0, 0, 3643, 3664, 5, 108, 0, 0, 3644, 3664, 5, 168, 0, 0, 3645, 3664, 5, 342, 0, 0, 3646, 3664, 5, 452, 0, 0, 3647, 3664, 5, 331, 0, 0, 3648, 3649, 5, 131, 0, 0, 3649, 3664, 5, 446, 0, 0, 3650, 3651, 5, 198, 0, 0, 3651, 3664, 5, 357, 0, 0, 3652, 3664, 5, 204, 0, 0, 3653, 3655, 5, 295, 0, 0, 3654, 3653, 1, 0, 0, 0, 3654, 3655, 1, 0, 0, 0, 3655, 3656, 1, 0, 0, 0, 3656, 3664, 5, 247, 0, 0, 3657, 3658, 5, 63, 0, 0, 3658, 3659, 5, 174, 0, 0, 3659, 3664, 5, 381, 0, 0, 3660, 3661, 5, 355, 0, 0, 3661, 3662, 5, 325, 0, 0, 3662, 3664, 7, 41, 0, 0, 3663, 3641, 1, 0, 0, 0, 3663, 3642, 1, 0, 0, 0, 3663, 3643, 1, 0, 0, 0, 3663, 3644, 1, 0, 0, 0, 3663, 3645, 1, 0, 0, 0, 3663, 3646, 1, 0, 0, 0, 3663, 3647, 1, 0, 0, 0, 3663, 3648, 1, 0, 0, 0, 3663, 3650, 1, 0, 0, 0, 3663, 3652, 1, 0, 0, 0, 3663, 3654, 1, 0, 0, 0, 3663, 3657, 1, 0, 0, 0, 3663, 3660, 1, 0, 0, 0, 3664, 3666, 1, 0, 0, 0, 3665, 3667, 3, 422, 211, 0, 3666, 3665, 1, 0, 0, 0, 3666, 3667, 1, 0, 0, 0, 3667, 3668, 1, 0, 0, 0, 3668, 3670, 3, 784, 392, 0, 3669, 3671, 3, 96, 48, 0, 3670, 3669, 1, 0, 0, 0, 3670, 3671, 1, 0, 0, 0, 3671, 3848, 1, 0, 0, 0, 3672, 3674, 5, 191, 0, 0, 3673, 3675, 5, 259, 0, 0, 3674, 3673, 1, 0, 0, 0, 3674, 3675, 1, 0, 0, 0, 3675, 3676, 1, 0, 0, 0, 3676, 3678, 5, 376, 0, 0, 3677, 3679, 3, 422, 211, 0, 3678, 3677, 1, 0, 0, 0, 3678, 3679, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 3685, 3, 778, 389, 0, 3681, 3682, 5, 6, 0, 0, 3682, 3684, 3, 778, 389, 0, 3683, 3681, 1, 0, 0, 0, 3684, 3687, 1, 0, 0, 0, 3685, 3683, 1, 0, 0, 0, 3685, 3686, 1, 0, 0, 0, 3686, 3689, 1, 0, 0, 0, 3687, 3685, 1, 0, 0, 0, 3688, 3690, 3, 96, 48, 0, 3689, 3688, 1, 0, 0, 0, 3689, 3690, 1, 0, 0, 0, 3690, 3848, 1, 0, 0, 0, 3691, 3693, 5, 191, 0, 0, 3692, 3694, 5, 63, 0, 0, 3693, 3692, 1, 0, 0, 0, 3693, 3694, 1, 0, 0, 0, 3694, 3695, 1, 0, 0, 0, 3695, 3697, 5, 92, 0, 0, 3696, 3698, 3, 422, 211, 0, 3697, 3696, 1, 0, 0, 0, 3697, 3698, 1, 0, 0, 0, 3698, 3699, 1, 0, 0, 0, 3699, 3701, 3, 762, 381, 0, 3700, 3702, 3, 96, 48, 0, 3701, 3700, 1, 0, 0, 0, 3701, 3702, 1, 0, 0, 0, 3702, 3848, 1, 0, 0, 0, 3703, 3704, 5, 191, 0, 0, 3704, 3706, 5, 323, 0, 0, 3705, 3707, 3, 422, 211, 0, 3706, 3705, 1, 0, 0, 0, 3706, 3707, 1, 0, 0, 0, 3707, 3708, 1, 0, 0, 0, 3708, 3710, 3, 764, 382, 0, 3709, 3711, 3, 96, 48, 0, 3710, 3709, 1, 0, 0, 0, 3710, 3711, 1, 0, 0, 0, 3711, 3848, 1, 0, 0, 0, 3712, 3713, 5, 191, 0, 0, 3713, 3715, 7, 44, 0, 0, 3714, 3716, 3, 422, 211, 0, 3715, 3714, 1, 0, 0, 0, 3715, 3716, 1, 0, 0, 0, 3716, 3717, 1, 0, 0, 0, 3717, 3718, 3, 818, 409, 0, 3718, 3719, 5, 80, 0, 0, 3719, 3721, 3, 316, 158, 0, 3720, 3722, 3, 96, 48, 0, 3721, 3720, 1, 0, 0, 0, 3721, 3722, 1, 0, 0, 0, 3722, 3848, 1, 0, 0, 0, 3723, 3724, 5, 191, 0, 0, 3724, 3726, 7, 32, 0, 0, 3725, 3727, 3, 422, 211, 0, 3726, 3725, 1, 0, 0, 0, 3726, 3727, 1, 0, 0, 0, 3727, 3728, 1, 0, 0, 0, 3728, 3733, 3, 652, 326, 0, 3729, 3730, 5, 6, 0, 0, 3730, 3732, 3, 652, 326, 0, 3731, 3729, 1, 0, 0, 0, 3732, 3735, 1, 0, 0, 0, 3733, 3731, 1, 0, 0, 0, 3733, 3734, 1, 0, 0, 0, 3734, 3737, 1, 0, 0, 0, 3735, 3733, 1, 0, 0, 0, 3736, 3738, 3, 96, 48, 0, 3737, 3736, 1, 0, 0, 0, 3737, 3738, 1, 0, 0, 0, 3738, 3848, 1, 0, 0, 0, 3739, 3740, 5, 191, 0, 0, 3740, 3741, 5, 226, 0, 0, 3741, 3743, 5, 109, 0, 0, 3742, 3744, 3, 422, 211, 0, 3743, 3742, 1, 0, 0, 0, 3743, 3744, 1, 0, 0, 0, 3744, 3745, 1, 0, 0, 0, 3745, 3747, 3, 314, 157, 0, 3746, 3748, 3, 96, 48, 0, 3747, 3746, 1, 0, 0, 0, 3747, 3748, 1, 0, 0, 0, 3748, 3848, 1, 0, 0, 0, 3749, 3750, 5, 191, 0, 0, 3750, 3752, 5, 41, 0, 0, 3751, 3753, 3, 422, 211, 0, 3752, 3751, 1, 0, 0, 0, 3752, 3753, 1, 0, 0, 0, 3753, 3754, 1, 0, 0, 0, 3754, 3755, 5, 2, 0, 0, 3755, 3756, 3, 652, 326, 0, 3756, 3757, 5, 36, 0, 0, 3757, 3758, 3, 652, 326, 0, 3758, 3760, 5, 3, 0, 0, 3759, 3761, 3, 96, 48, 0, 3760, 3759, 1, 0, 0, 0, 3760, 3761, 1, 0, 0, 0, 3761, 3848, 1, 0, 0, 0, 3762, 3763, 5, 191, 0, 0, 3763, 3764, 5, 278, 0, 0, 3764, 3766, 7, 31, 0, 0, 3765, 3767, 3, 422, 211, 0, 3766, 3765, 1, 0, 0, 0, 3766, 3767, 1, 0, 0, 0, 3767, 3768, 1, 0, 0, 0, 3768, 3769, 3, 316, 158, 0, 3769, 3771, 3, 170, 85, 0, 3770, 3772, 3, 96, 48, 0, 3771, 3770, 1, 0, 0, 0, 3771, 3772, 1, 0, 0, 0, 3772, 3848, 1, 0, 0, 0, 3773, 3774, 5, 191, 0, 0, 3774, 3775, 5, 281, 0, 0, 3775, 3776, 5, 147, 0, 0, 3776, 3778, 3, 816, 408, 0, 3777, 3779, 3, 96, 48, 0, 3778, 3777, 1, 0, 0, 0, 3778, 3779, 1, 0, 0, 0, 3779, 3848, 1, 0, 0, 0, 3780, 3781, 5, 191, 0, 0, 3781, 3783, 5, 451, 0, 0, 3782, 3784, 3, 422, 211, 0, 3783, 3782, 1, 0, 0, 0, 3783, 3784, 1, 0, 0, 0, 3784, 3785, 1, 0, 0, 0, 3785, 3787, 3, 818, 409, 0, 3786, 3788, 3, 96, 48, 0, 3787, 3786, 1, 0, 0, 0, 3787, 3788, 1, 0, 0, 0, 3788, 3848, 1, 0, 0, 0, 3789, 3790, 5, 191, 0, 0, 3790, 3792, 5, 351, 0, 0, 3791, 3793, 3, 422, 211, 0, 3792, 3791, 1, 0, 0, 0, 3792, 3793, 1, 0, 0, 0, 3793, 3794, 1, 0, 0, 0, 3794, 3848, 3, 770, 385, 0, 3795, 3796, 5, 191, 0, 0, 3796, 3798, 5, 443, 0, 0, 3797, 3799, 3, 422, 211, 0, 3798, 3797, 1, 0, 0, 0, 3798, 3799, 1, 0, 0, 0, 3799, 3800, 1, 0, 0, 0, 3800, 3801, 5, 62, 0, 0, 3801, 3802, 3, 652, 326, 0, 3802, 3803, 5, 247, 0, 0, 3803, 3805, 3, 818, 409, 0, 3804, 3806, 3, 96, 48, 0, 3805, 3804, 1, 0, 0, 0, 3805, 3806, 1, 0, 0, 0, 3806, 3848, 1, 0, 0, 0, 3807, 3808, 5, 191, 0, 0, 3808, 3810, 7, 45, 0, 0, 3809, 3811, 3, 422, 211, 0, 3810, 3809, 1, 0, 0, 0, 3810, 3811, 1, 0, 0, 0, 3811, 3812, 1, 0, 0, 0, 3812, 3848, 3, 816, 408, 0, 3813, 3814, 5, 191, 0, 0, 3814, 3815, 5, 99, 0, 0, 3815, 3817, 5, 257, 0, 0, 3816, 3818, 3, 422, 211, 0, 3817, 3816, 1, 0, 0, 0, 3817, 3818, 1, 0, 0, 0, 3818, 3819, 1, 0, 0, 0, 3819, 3822, 5, 62, 0, 0, 3820, 3823, 3, 814, 407, 0, 3821, 3823, 5, 99, 0, 0, 3822, 3820, 1, 0, 0, 0, 3822, 3821, 1, 0, 0, 0, 3823, 3824, 1, 0, 0, 0, 3824, 3825, 5, 331, 0, 0, 3825, 3848, 3, 818, 409, 0, 3826, 3827, 5, 191, 0, 0, 3827, 3829, 5, 175, 0, 0, 3828, 3830, 3, 422, 211, 0, 3829, 3828, 1, 0, 0, 0, 3829, 3830, 1, 0, 0, 0, 3830, 3831, 1, 0, 0, 0, 3831, 3845, 3, 788, 394, 0, 3832, 3834, 5, 105, 0, 0, 3833, 3832, 1, 0, 0, 0, 3833, 3834, 1, 0, 0, 0, 3834, 3835, 1, 0, 0, 0, 3835, 3836, 5, 2, 0, 0, 3836, 3841, 5, 209, 0, 0, 3837, 3838, 5, 6, 0, 0, 3838, 3840, 5, 209, 0, 0, 3839, 3837, 1, 0, 0, 0, 3840, 3843, 1, 0, 0, 0, 3841, 3839, 1, 0, 0, 0, 3841, 3842, 1, 0, 0, 0, 3842, 3844, 1, 0, 0, 0, 3843, 3841, 1, 0, 0, 0, 3844, 3846, 5, 3, 0, 0, 3845, 3833, 1, 0, 0, 0, 3845, 3846, 1, 0, 0, 0, 3846, 3848, 1, 0, 0, 0, 3847, 3640, 1, 0, 0, 0, 3847, 3672, 1, 0, 0, 0, 3847, 3691, 1, 0, 0, 0, 3847, 3703, 1, 0, 0, 0, 3847, 3712, 1, 0, 0, 0, 3847, 3723, 1, 0, 0, 0, 3847, 3739, 1, 0, 0, 0, 3847, 3749, 1, 0, 0, 0, 3847, 3762, 1, 0, 0, 0, 3847, 3773, 1, 0, 0, 0, 3847, 3780, 1, 0, 0, 0, 3847, 3789, 1, 0, 0, 0, 3847, 3795, 1, 0, 0, 0, 3847, 3807, 1, 0, 0, 0, 3847, 3813, 1, 0, 0, 0, 3847, 3826, 1, 0, 0, 0, 3848, 309, 1, 0, 0, 0, 3849, 3851, 5, 63, 0, 0, 3850, 3849, 1, 0, 0, 0, 3850, 3851, 1, 0, 0, 0, 3851, 3852, 1, 0, 0, 0, 3852, 3853, 5, 92, 0, 0, 3853, 3866, 3, 774, 387, 0, 3854, 3856, 5, 259, 0, 0, 3855, 3854, 1, 0, 0, 0, 3855, 3856, 1, 0, 0, 0, 3856, 3857, 1, 0, 0, 0, 3857, 3858, 5, 376, 0, 0, 3858, 3866, 3, 778, 389, 0, 3859, 3860, 7, 46, 0, 0, 3860, 3866, 3, 316, 158, 0, 3861, 3862, 5, 355, 0, 0, 3862, 3863, 5, 325, 0, 0, 3863, 3864, 7, 41, 0, 0, 3864, 3866, 3, 316, 158, 0, 3865, 3850, 1, 0, 0, 0, 3865, 3855, 1, 0, 0, 0, 3865, 3859, 1, 0, 0, 0, 3865, 3861, 1, 0, 0, 0, 3866, 311, 1, 0, 0, 0, 3867, 3868, 5, 198, 0, 0, 3868, 3884, 5, 357, 0, 0, 3869, 3870, 5, 131, 0, 0, 3870, 3884, 5, 446, 0, 0, 3871, 3884, 5, 204, 0, 0, 3872, 3884, 5, 452, 0, 0, 3873, 3884, 5, 331, 0, 0, 3874, 3884, 5, 318, 0, 0, 3875, 3884, 5, 451, 0, 0, 3876, 3877, 5, 63, 0, 0, 3877, 3878, 5, 174, 0, 0, 3878, 3884, 5, 381, 0, 0, 3879, 3881, 5, 295, 0, 0, 3880, 3879, 1, 0, 0, 0, 3880, 3881, 1, 0, 0, 0, 3881, 3882, 1, 0, 0, 0, 3882, 3884, 5, 247, 0, 0, 3883, 3867, 1, 0, 0, 0, 3883, 3869, 1, 0, 0, 0, 3883, 3871, 1, 0, 0, 0, 3883, 3872, 1, 0, 0, 0, 3883, 3873, 1, 0, 0, 0, 3883, 3874, 1, 0, 0, 0, 3883, 3875, 1, 0, 0, 0, 3883, 3876, 1, 0, 0, 0, 3883, 3880, 1, 0, 0, 0, 3884, 3885, 1, 0, 0, 0, 3885, 3892, 3, 818, 409, 0, 3886, 3887, 5, 323, 0, 0, 3887, 3892, 3, 790, 395, 0, 3888, 3889, 5, 175, 0, 0, 3889, 3892, 3, 788, 394, 0, 3890, 3892, 3, 176, 88, 0, 3891, 3883, 1, 0, 0, 0, 3891, 3886, 1, 0, 0, 0, 3891, 3888, 1, 0, 0, 0, 3891, 3890, 1, 0, 0, 0, 3892, 313, 1, 0, 0, 0, 3893, 3898, 3, 316, 158, 0, 3894, 3895, 5, 6, 0, 0, 3895, 3897, 3, 316, 158, 0, 3896, 3894, 1, 0, 0, 0, 3897, 3900, 1, 0, 0, 0, 3898, 3896, 1, 0, 0, 0, 3898, 3899, 1, 0, 0, 0, 3899, 315, 1, 0, 0, 0, 3900, 3898, 1, 0, 0, 0, 3901, 3903, 3, 818, 409, 0, 3902, 3904, 3, 318, 159, 0, 3903, 3902, 1, 0, 0, 0, 3903, 3904, 1, 0, 0, 0, 3904, 317, 1, 0, 0, 0, 3905, 3906, 5, 11, 0, 0, 3906, 3908, 3, 824, 412, 0, 3907, 3905, 1, 0, 0, 0, 3908, 3909, 1, 0, 0, 0, 3909, 3907, 1, 0, 0, 0, 3909, 3910, 1, 0, 0, 0, 3910, 319, 1, 0, 0, 0, 3911, 3913, 5, 358, 0, 0, 3912, 3914, 5, 92, 0, 0, 3913, 3912, 1, 0, 0, 0, 3913, 3914, 1, 0, 0, 0, 3914, 3915, 1, 0, 0, 0, 3915, 3920, 3, 322, 161, 0, 3916, 3917, 5, 6, 0, 0, 3917, 3919, 3, 322, 161, 0, 3918, 3916, 1, 0, 0, 0, 3919, 3922, 1, 0, 0, 0, 3920, 3918, 1, 0, 0, 0, 3920, 3921, 1, 0, 0, 0, 3921, 3925, 1, 0, 0, 0, 3922, 3920, 1, 0, 0, 0, 3923, 3924, 7, 47, 0, 0, 3924, 3926, 5, 219, 0, 0, 3925, 3923, 1, 0, 0, 0, 3925, 3926, 1, 0, 0, 0, 3926, 3928, 1, 0, 0, 0, 3927, 3929, 3, 96, 48, 0, 3928, 3927, 1, 0, 0, 0, 3928, 3929, 1, 0, 0, 0, 3929, 321, 1, 0, 0, 0, 3930, 3932, 5, 81, 0, 0, 3931, 3930, 1, 0, 0, 0, 3931, 3932, 1, 0, 0, 0, 3932, 3933, 1, 0, 0, 0, 3933, 3935, 3, 774, 387, 0, 3934, 3936, 5, 9, 0, 0, 3935, 3934, 1, 0, 0, 0, 3935, 3936, 1, 0, 0, 0, 3936, 323, 1, 0, 0, 0, 3937, 3938, 5, 159, 0, 0, 3938, 3997, 5, 80, 0, 0, 3939, 3998, 3, 310, 155, 0, 3940, 3998, 3, 312, 156, 0, 3941, 3942, 5, 44, 0, 0, 3942, 3944, 3, 818, 409, 0, 3943, 3945, 3, 318, 159, 0, 3944, 3943, 1, 0, 0, 0, 3944, 3945, 1, 0, 0, 0, 3945, 3946, 1, 0, 0, 0, 3946, 3947, 5, 11, 0, 0, 3947, 3948, 3, 800, 400, 0, 3948, 3998, 1, 0, 0, 0, 3949, 3950, 7, 32, 0, 0, 3950, 3998, 3, 652, 326, 0, 3951, 3952, 5, 136, 0, 0, 3952, 3998, 3, 394, 197, 0, 3953, 3954, 5, 211, 0, 0, 3954, 3998, 3, 382, 191, 0, 3955, 3956, 5, 278, 0, 0, 3956, 3998, 3, 416, 208, 0, 3957, 3958, 5, 45, 0, 0, 3958, 3959, 3, 818, 409, 0, 3959, 3965, 5, 80, 0, 0, 3960, 3966, 3, 774, 387, 0, 3961, 3963, 5, 189, 0, 0, 3962, 3961, 1, 0, 0, 0, 3962, 3963, 1, 0, 0, 0, 3963, 3964, 1, 0, 0, 0, 3964, 3966, 3, 316, 158, 0, 3965, 3960, 1, 0, 0, 0, 3965, 3962, 1, 0, 0, 0, 3966, 3998, 1, 0, 0, 0, 3967, 3968, 7, 44, 0, 0, 3968, 3969, 3, 818, 409, 0, 3969, 3970, 5, 80, 0, 0, 3970, 3971, 3, 316, 158, 0, 3971, 3998, 1, 0, 0, 0, 3972, 3973, 5, 296, 0, 0, 3973, 3998, 3, 378, 189, 0, 3974, 3975, 5, 442, 0, 0, 3975, 3998, 3, 374, 187, 0, 3976, 3977, 5, 443, 0, 0, 3977, 3978, 5, 62, 0, 0, 3978, 3979, 3, 652, 326, 0, 3979, 3980, 5, 247, 0, 0, 3980, 3981, 3, 818, 409, 0, 3981, 3998, 1, 0, 0, 0, 3982, 3983, 5, 278, 0, 0, 3983, 3984, 7, 31, 0, 0, 3984, 3985, 3, 316, 158, 0, 3985, 3986, 3, 170, 85, 0, 3986, 3998, 1, 0, 0, 0, 3987, 3988, 5, 248, 0, 0, 3988, 3989, 5, 274, 0, 0, 3989, 3998, 3, 202, 101, 0, 3990, 3991, 5, 41, 0, 0, 3991, 3992, 5, 2, 0, 0, 3992, 3993, 3, 652, 326, 0, 3993, 3994, 5, 36, 0, 0, 3994, 3995, 3, 652, 326, 0, 3995, 3996, 5, 3, 0, 0, 3996, 3998, 1, 0, 0, 0, 3997, 3939, 1, 0, 0, 0, 3997, 3940, 1, 0, 0, 0, 3997, 3941, 1, 0, 0, 0, 3997, 3949, 1, 0, 0, 0, 3997, 3951, 1, 0, 0, 0, 3997, 3953, 1, 0, 0, 0, 3997, 3955, 1, 0, 0, 0, 3997, 3957, 1, 0, 0, 0, 3997, 3967, 1, 0, 0, 0, 3997, 3972, 1, 0, 0, 0, 3997, 3974, 1, 0, 0, 0, 3997, 3976, 1, 0, 0, 0, 3997, 3982, 1, 0, 0, 0, 3997, 3987, 1, 0, 0, 0, 3997, 3990, 1, 0, 0, 0, 3998, 3999, 1, 0, 0, 0, 3999, 4002, 5, 116, 0, 0, 4000, 4003, 3, 808, 404, 0, 4001, 4003, 5, 78, 0, 0, 4002, 4000, 1, 0, 0, 0, 4002, 4001, 1, 0, 0, 0, 4003, 325, 1, 0, 0, 0, 4004, 4005, 5, 327, 0, 0, 4005, 4008, 5, 246, 0, 0, 4006, 4007, 5, 62, 0, 0, 4007, 4009, 3, 58, 29, 0, 4008, 4006, 1, 0, 0, 0, 4008, 4009, 1, 0, 0, 0, 4009, 4010, 1, 0, 0, 0, 4010, 4028, 5, 80, 0, 0, 4011, 4012, 7, 32, 0, 0, 4012, 4029, 3, 652, 326, 0, 4013, 4014, 5, 136, 0, 0, 4014, 4029, 3, 394, 197, 0, 4015, 4016, 5, 44, 0, 0, 4016, 4029, 3, 800, 400, 0, 4017, 4018, 5, 211, 0, 0, 4018, 4029, 3, 382, 191, 0, 4019, 4020, 5, 248, 0, 0, 4020, 4021, 5, 274, 0, 0, 4021, 4029, 3, 202, 101, 0, 4022, 4023, 5, 296, 0, 0, 4023, 4029, 3, 378, 189, 0, 4024, 4025, 5, 442, 0, 0, 4025, 4029, 3, 374, 187, 0, 4026, 4029, 3, 310, 155, 0, 4027, 4029, 3, 312, 156, 0, 4028, 4011, 1, 0, 0, 0, 4028, 4013, 1, 0, 0, 0, 4028, 4015, 1, 0, 0, 0, 4028, 4017, 1, 0, 0, 0, 4028, 4019, 1, 0, 0, 0, 4028, 4022, 1, 0, 0, 0, 4028, 4024, 1, 0, 0, 0, 4028, 4026, 1, 0, 0, 0, 4028, 4027, 1, 0, 0, 0, 4029, 4030, 1, 0, 0, 0, 4030, 4033, 5, 116, 0, 0, 4031, 4034, 3, 808, 404, 0, 4032, 4034, 5, 78, 0, 0, 4033, 4031, 1, 0, 0, 0, 4033, 4032, 1, 0, 0, 0, 4034, 327, 1, 0, 0, 0, 4035, 4036, 7, 48, 0, 0, 4036, 4037, 3, 330, 165, 0, 4037, 329, 1, 0, 0, 0, 4038, 4040, 7, 49, 0, 0, 4039, 4038, 1, 0, 0, 0, 4039, 4040, 1, 0, 0, 0, 4040, 4042, 1, 0, 0, 0, 4041, 4043, 3, 332, 166, 0, 4042, 4041, 1, 0, 0, 0, 4042, 4043, 1, 0, 0, 0, 4043, 4044, 1, 0, 0, 0, 4044, 4082, 3, 818, 409, 0, 4045, 4047, 7, 50, 0, 0, 4046, 4045, 1, 0, 0, 0, 4046, 4047, 1, 0, 0, 0, 4047, 4048, 1, 0, 0, 0, 4048, 4050, 3, 812, 406, 0, 4049, 4051, 3, 332, 166, 0, 4050, 4049, 1, 0, 0, 0, 4050, 4051, 1, 0, 0, 0, 4051, 4052, 1, 0, 0, 0, 4052, 4053, 3, 818, 409, 0, 4053, 4082, 1, 0, 0, 0, 4054, 4056, 5, 210, 0, 0, 4055, 4057, 3, 812, 406, 0, 4056, 4055, 1, 0, 0, 0, 4056, 4057, 1, 0, 0, 0, 4057, 4059, 1, 0, 0, 0, 4058, 4060, 3, 332, 166, 0, 4059, 4058, 1, 0, 0, 0, 4059, 4060, 1, 0, 0, 0, 4060, 4061, 1, 0, 0, 0, 4061, 4082, 3, 818, 409, 0, 4062, 4064, 5, 210, 0, 0, 4063, 4062, 1, 0, 0, 0, 4063, 4064, 1, 0, 0, 0, 4064, 4065, 1, 0, 0, 0, 4065, 4067, 5, 30, 0, 0, 4066, 4068, 3, 332, 166, 0, 4067, 4066, 1, 0, 0, 0, 4067, 4068, 1, 0, 0, 0, 4068, 4069, 1, 0, 0, 0, 4069, 4082, 3, 818, 409, 0, 4070, 4075, 5, 144, 0, 0, 4071, 4073, 5, 30, 0, 0, 4072, 4071, 1, 0, 0, 0, 4072, 4073, 1, 0, 0, 0, 4073, 4076, 1, 0, 0, 0, 4074, 4076, 3, 812, 406, 0, 4075, 4072, 1, 0, 0, 0, 4075, 4074, 1, 0, 0, 0, 4076, 4078, 1, 0, 0, 0, 4077, 4079, 3, 332, 166, 0, 4078, 4077, 1, 0, 0, 0, 4078, 4079, 1, 0, 0, 0, 4079, 4080, 1, 0, 0, 0, 4080, 4082, 3, 818, 409, 0, 4081, 4039, 1, 0, 0, 0, 4081, 4046, 1, 0, 0, 0, 4081, 4054, 1, 0, 0, 0, 4081, 4063, 1, 0, 0, 0, 4081, 4070, 1, 0, 0, 0, 4082, 331, 1, 0, 0, 0, 4083, 4084, 7, 51, 0, 0, 4084, 333, 1, 0, 0, 0, 4085, 4086, 5, 65, 0, 0, 4086, 4087, 3, 338, 169, 0, 4087, 4088, 5, 80, 0, 0, 4088, 4089, 3, 344, 172, 0, 4089, 4090, 5, 94, 0, 0, 4090, 4094, 3, 346, 173, 0, 4091, 4092, 5, 105, 0, 0, 4092, 4093, 5, 65, 0, 0, 4093, 4095, 5, 279, 0, 0, 4094, 4091, 1, 0, 0, 0, 4094, 4095, 1, 0, 0, 0, 4095, 335, 1, 0, 0, 0, 4096, 4100, 5, 317, 0, 0, 4097, 4098, 5, 65, 0, 0, 4098, 4099, 5, 279, 0, 0, 4099, 4101, 5, 62, 0, 0, 4100, 4097, 1, 0, 0, 0, 4100, 4101, 1, 0, 0, 0, 4101, 4102, 1, 0, 0, 0, 4102, 4103, 3, 338, 169, 0, 4103, 4104, 5, 80, 0, 0, 4104, 4105, 3, 344, 172, 0, 4105, 4106, 5, 64, 0, 0, 4106, 4108, 3, 346, 173, 0, 4107, 4109, 3, 96, 48, 0, 4108, 4107, 1, 0, 0, 0, 4108, 4109, 1, 0, 0, 0, 4109, 337, 1, 0, 0, 0, 4110, 4115, 3, 342, 171, 0, 4111, 4112, 5, 6, 0, 0, 4112, 4114, 3, 342, 171, 0, 4113, 4111, 1, 0, 0, 0, 4114, 4117, 1, 0, 0, 0, 4115, 4113, 1, 0, 0, 0, 4115, 4116, 1, 0, 0, 0, 4116, 4134, 1, 0, 0, 0, 4117, 4115, 1, 0, 0, 0, 4118, 4120, 5, 30, 0, 0, 4119, 4121, 5, 294, 0, 0, 4120, 4119, 1, 0, 0, 0, 4120, 4121, 1, 0, 0, 0, 4121, 4123, 1, 0, 0, 0, 4122, 4124, 3, 144, 72, 0, 4123, 4122, 1, 0, 0, 0, 4123, 4124, 1, 0, 0, 0, 4124, 4134, 1, 0, 0, 0, 4125, 4130, 3, 340, 170, 0, 4126, 4127, 5, 6, 0, 0, 4127, 4129, 3, 340, 170, 0, 4128, 4126, 1, 0, 0, 0, 4129, 4132, 1, 0, 0, 0, 4130, 4128, 1, 0, 0, 0, 4130, 4131, 1, 0, 0, 0, 4131, 4134, 1, 0, 0, 0, 4132, 4130, 1, 0, 0, 0, 4133, 4110, 1, 0, 0, 0, 4133, 4118, 1, 0, 0, 0, 4133, 4125, 1, 0, 0, 0, 4134, 339, 1, 0, 0, 0, 4135, 4136, 7, 52, 0, 0, 4136, 341, 1, 0, 0, 0, 4137, 4142, 5, 88, 0, 0, 4138, 4142, 5, 86, 0, 0, 4139, 4142, 5, 46, 0, 0, 4140, 4142, 3, 818, 409, 0, 4141, 4137, 1, 0, 0, 0, 4141, 4138, 1, 0, 0, 0, 4141, 4139, 1, 0, 0, 0, 4141, 4140, 1, 0, 0, 0, 4142, 4144, 1, 0, 0, 0, 4143, 4145, 3, 144, 72, 0, 4144, 4143, 1, 0, 0, 0, 4144, 4145, 1, 0, 0, 0, 4145, 343, 1, 0, 0, 0, 4146, 4147, 5, 92, 0, 0, 4147, 4192, 3, 762, 381, 0, 4148, 4150, 5, 328, 0, 0, 4149, 4148, 1, 0, 0, 0, 4149, 4150, 1, 0, 0, 0, 4150, 4151, 1, 0, 0, 0, 4151, 4192, 3, 760, 380, 0, 4152, 4156, 5, 63, 0, 0, 4153, 4154, 5, 174, 0, 0, 4154, 4157, 5, 381, 0, 0, 4155, 4157, 5, 331, 0, 0, 4156, 4153, 1, 0, 0, 0, 4156, 4155, 1, 0, 0, 0, 4157, 4160, 1, 0, 0, 0, 4158, 4160, 5, 247, 0, 0, 4159, 4152, 1, 0, 0, 0, 4159, 4158, 1, 0, 0, 0, 4160, 4161, 1, 0, 0, 0, 4161, 4192, 3, 784, 392, 0, 4162, 4163, 5, 211, 0, 0, 4163, 4192, 3, 380, 190, 0, 4164, 4165, 5, 296, 0, 0, 4165, 4192, 3, 376, 188, 0, 4166, 4167, 5, 442, 0, 0, 4167, 4192, 3, 372, 186, 0, 4168, 4169, 5, 175, 0, 0, 4169, 4192, 3, 766, 383, 0, 4170, 4171, 7, 32, 0, 0, 4171, 4192, 3, 314, 157, 0, 4172, 4173, 5, 248, 0, 0, 4173, 4174, 5, 274, 0, 0, 4174, 4179, 3, 202, 101, 0, 4175, 4176, 5, 6, 0, 0, 4176, 4178, 3, 202, 101, 0, 4177, 4175, 1, 0, 0, 0, 4178, 4181, 1, 0, 0, 0, 4179, 4177, 1, 0, 0, 0, 4179, 4180, 1, 0, 0, 0, 4180, 4192, 1, 0, 0, 0, 4181, 4179, 1, 0, 0, 0, 4182, 4183, 5, 323, 0, 0, 4183, 4192, 3, 764, 382, 0, 4184, 4185, 5, 351, 0, 0, 4185, 4192, 3, 782, 391, 0, 4186, 4187, 5, 30, 0, 0, 4187, 4188, 7, 53, 0, 0, 4188, 4189, 5, 68, 0, 0, 4189, 4190, 5, 323, 0, 0, 4190, 4192, 3, 764, 382, 0, 4191, 4146, 1, 0, 0, 0, 4191, 4149, 1, 0, 0, 0, 4191, 4159, 1, 0, 0, 0, 4191, 4162, 1, 0, 0, 0, 4191, 4164, 1, 0, 0, 0, 4191, 4166, 1, 0, 0, 0, 4191, 4168, 1, 0, 0, 0, 4191, 4170, 1, 0, 0, 0, 4191, 4172, 1, 0, 0, 0, 4191, 4182, 1, 0, 0, 0, 4191, 4184, 1, 0, 0, 0, 4191, 4186, 1, 0, 0, 0, 4192, 345, 1, 0, 0, 0, 4193, 4195, 5, 66, 0, 0, 4194, 4193, 1, 0, 0, 0, 4194, 4195, 1, 0, 0, 0, 4195, 4196, 1, 0, 0, 0, 4196, 4197, 3, 814, 407, 0, 4197, 4205, 1, 0, 0, 0, 4198, 4200, 5, 6, 0, 0, 4199, 4201, 5, 66, 0, 0, 4200, 4199, 1, 0, 0, 0, 4200, 4201, 1, 0, 0, 0, 4201, 4202, 1, 0, 0, 0, 4202, 4204, 3, 814, 407, 0, 4203, 4198, 1, 0, 0, 0, 4204, 4207, 1, 0, 0, 0, 4205, 4203, 1, 0, 0, 0, 4205, 4206, 1, 0, 0, 0, 4206, 347, 1, 0, 0, 0, 4207, 4205, 1, 0, 0, 0, 4208, 4209, 5, 65, 0, 0, 4209, 4214, 3, 342, 171, 0, 4210, 4211, 5, 6, 0, 0, 4211, 4213, 3, 342, 171, 0, 4212, 4210, 1, 0, 0, 0, 4213, 4216, 1, 0, 0, 0, 4214, 4212, 1, 0, 0, 0, 4214, 4215, 1, 0, 0, 0, 4215, 4217, 1, 0, 0, 0, 4216, 4214, 1, 0, 0, 0, 4217, 4218, 5, 94, 0, 0, 4218, 4222, 3, 816, 408, 0, 4219, 4220, 5, 105, 0, 0, 4220, 4221, 5, 134, 0, 0, 4221, 4223, 5, 279, 0, 0, 4222, 4219, 1, 0, 0, 0, 4222, 4223, 1, 0, 0, 0, 4223, 4227, 1, 0, 0, 0, 4224, 4225, 5, 214, 0, 0, 4225, 4226, 5, 147, 0, 0, 4226, 4228, 3, 814, 407, 0, 4227, 4224, 1, 0, 0, 0, 4227, 4228, 1, 0, 0, 0, 4228, 349, 1, 0, 0, 0, 4229, 4233, 5, 317, 0, 0, 4230, 4231, 5, 134, 0, 0, 4231, 4232, 5, 279, 0, 0, 4232, 4234, 5, 62, 0, 0, 4233, 4230, 1, 0, 0, 0, 4233, 4234, 1, 0, 0, 0, 4234, 4235, 1, 0, 0, 0, 4235, 4240, 3, 342, 171, 0, 4236, 4237, 5, 6, 0, 0, 4237, 4239, 3, 342, 171, 0, 4238, 4236, 1, 0, 0, 0, 4239, 4242, 1, 0, 0, 0, 4240, 4238, 1, 0, 0, 0, 4240, 4241, 1, 0, 0, 0, 4241, 4243, 1, 0, 0, 0, 4242, 4240, 1, 0, 0, 0, 4243, 4244, 5, 64, 0, 0, 4244, 4248, 3, 816, 408, 0, 4245, 4246, 5, 214, 0, 0, 4246, 4247, 5, 147, 0, 0, 4247, 4249, 3, 814, 407, 0, 4248, 4245, 1, 0, 0, 0, 4248, 4249, 1, 0, 0, 0, 4249, 4251, 1, 0, 0, 0, 4250, 4252, 3, 96, 48, 0, 4251, 4250, 1, 0, 0, 0, 4251, 4252, 1, 0, 0, 0, 4252, 351, 1, 0, 0, 0, 4253, 4254, 5, 138, 0, 0, 4254, 4255, 5, 53, 0, 0, 4255, 4264, 5, 294, 0, 0, 4256, 4257, 5, 68, 0, 0, 4257, 4258, 5, 323, 0, 0, 4258, 4263, 3, 764, 382, 0, 4259, 4260, 5, 62, 0, 0, 4260, 4261, 7, 2, 0, 0, 4261, 4263, 3, 816, 408, 0, 4262, 4256, 1, 0, 0, 0, 4262, 4259, 1, 0, 0, 0, 4263, 4266, 1, 0, 0, 0, 4264, 4262, 1, 0, 0, 0, 4264, 4265, 1, 0, 0, 0, 4265, 4267, 1, 0, 0, 0, 4266, 4264, 1, 0, 0, 0, 4267, 4268, 3, 354, 177, 0, 4268, 353, 1, 0, 0, 0, 4269, 4270, 5, 65, 0, 0, 4270, 4271, 3, 338, 169, 0, 4271, 4272, 5, 80, 0, 0, 4272, 4273, 3, 356, 178, 0, 4273, 4274, 5, 94, 0, 0, 4274, 4278, 3, 346, 173, 0, 4275, 4276, 5, 105, 0, 0, 4276, 4277, 5, 65, 0, 0, 4277, 4279, 5, 279, 0, 0, 4278, 4275, 1, 0, 0, 0, 4278, 4279, 1, 0, 0, 0, 4279, 4295, 1, 0, 0, 0, 4280, 4284, 5, 317, 0, 0, 4281, 4282, 5, 65, 0, 0, 4282, 4283, 5, 279, 0, 0, 4283, 4285, 5, 62, 0, 0, 4284, 4281, 1, 0, 0, 0, 4284, 4285, 1, 0, 0, 0, 4285, 4286, 1, 0, 0, 0, 4286, 4287, 3, 338, 169, 0, 4287, 4288, 5, 80, 0, 0, 4288, 4289, 3, 356, 178, 0, 4289, 4290, 5, 64, 0, 0, 4290, 4292, 3, 346, 173, 0, 4291, 4293, 3, 96, 48, 0, 4292, 4291, 1, 0, 0, 0, 4292, 4293, 1, 0, 0, 0, 4293, 4295, 1, 0, 0, 0, 4294, 4269, 1, 0, 0, 0, 4294, 4280, 1, 0, 0, 0, 4295, 355, 1, 0, 0, 0, 4296, 4297, 7, 54, 0, 0, 4297, 357, 1, 0, 0, 0, 4298, 4300, 5, 46, 0, 0, 4299, 4301, 5, 98, 0, 0, 4300, 4299, 1, 0, 0, 0, 4300, 4301, 1, 0, 0, 0, 4301, 4302, 1, 0, 0, 0, 4302, 4304, 5, 226, 0, 0, 4303, 4305, 5, 109, 0, 0, 4304, 4303, 1, 0, 0, 0, 4304, 4305, 1, 0, 0, 0, 4305, 4307, 1, 0, 0, 0, 4306, 4308, 3, 294, 147, 0, 4307, 4306, 1, 0, 0, 0, 4307, 4308, 1, 0, 0, 0, 4308, 4310, 1, 0, 0, 0, 4309, 4311, 3, 818, 409, 0, 4310, 4309, 1, 0, 0, 0, 4310, 4311, 1, 0, 0, 0, 4311, 4312, 1, 0, 0, 0, 4312, 4313, 5, 80, 0, 0, 4313, 4315, 3, 624, 312, 0, 4314, 4316, 3, 170, 85, 0, 4315, 4314, 1, 0, 0, 0, 4315, 4316, 1, 0, 0, 0, 4316, 4317, 1, 0, 0, 0, 4317, 4320, 3, 360, 180, 0, 4318, 4319, 5, 441, 0, 0, 4319, 4321, 3, 360, 180, 0, 4320, 4318, 1, 0, 0, 0, 4320, 4321, 1, 0, 0, 0, 4321, 4327, 1, 0, 0, 0, 4322, 4324, 5, 273, 0, 0, 4323, 4325, 5, 77, 0, 0, 4324, 4323, 1, 0, 0, 0, 4324, 4325, 1, 0, 0, 0, 4325, 4326, 1, 0, 0, 0, 4326, 4328, 5, 56, 0, 0, 4327, 4322, 1, 0, 0, 0, 4327, 4328, 1, 0, 0, 0, 4328, 4330, 1, 0, 0, 0, 4329, 4331, 3, 102, 51, 0, 4330, 4329, 1, 0, 0, 0, 4330, 4331, 1, 0, 0, 0, 4331, 4333, 1, 0, 0, 0, 4332, 4334, 3, 176, 88, 0, 4333, 4332, 1, 0, 0, 0, 4333, 4334, 1, 0, 0, 0, 4334, 4336, 1, 0, 0, 0, 4335, 4337, 3, 638, 319, 0, 4336, 4335, 1, 0, 0, 0, 4336, 4337, 1, 0, 0, 0, 4337, 359, 1, 0, 0, 0, 4338, 4339, 5, 2, 0, 0, 4339, 4344, 3, 362, 181, 0, 4340, 4341, 5, 6, 0, 0, 4341, 4343, 3, 362, 181, 0, 4342, 4340, 1, 0, 0, 0, 4343, 4346, 1, 0, 0, 0, 4344, 4342, 1, 0, 0, 0, 4344, 4345, 1, 0, 0, 0, 4345, 4347, 1, 0, 0, 0, 4346, 4344, 1, 0, 0, 0, 4347, 4348, 5, 3, 0, 0, 4348, 361, 1, 0, 0, 0, 4349, 4356, 3, 800, 400, 0, 4350, 4356, 3, 688, 344, 0, 4351, 4352, 5, 2, 0, 0, 4352, 4353, 3, 674, 337, 0, 4353, 4354, 5, 3, 0, 0, 4354, 4356, 1, 0, 0, 0, 4355, 4349, 1, 0, 0, 0, 4355, 4350, 1, 0, 0, 0, 4355, 4351, 1, 0, 0, 0, 4356, 4358, 1, 0, 0, 0, 4357, 4359, 3, 98, 49, 0, 4358, 4357, 1, 0, 0, 0, 4358, 4359, 1, 0, 0, 0, 4359, 4366, 1, 0, 0, 0, 4360, 4362, 3, 316, 158, 0, 4361, 4360, 1, 0, 0, 0, 4361, 4362, 1, 0, 0, 0, 4362, 4367, 1, 0, 0, 0, 4363, 4364, 3, 316, 158, 0, 4364, 4365, 3, 100, 50, 0, 4365, 4367, 1, 0, 0, 0, 4366, 4361, 1, 0, 0, 0, 4366, 4363, 1, 0, 0, 0, 4367, 4369, 1, 0, 0, 0, 4368, 4370, 7, 55, 0, 0, 4369, 4368, 1, 0, 0, 0, 4369, 4370, 1, 0, 0, 0, 4370, 4373, 1, 0, 0, 0, 4371, 4372, 5, 273, 0, 0, 4372, 4374, 7, 56, 0, 0, 4373, 4371, 1, 0, 0, 0, 4373, 4374, 1, 0, 0, 0, 4374, 363, 1, 0, 0, 0, 4375, 4377, 5, 46, 0, 0, 4376, 4378, 3, 366, 183, 0, 4377, 4376, 1, 0, 0, 0, 4377, 4378, 1, 0, 0, 0, 4378, 4383, 1, 0, 0, 0, 4379, 4380, 5, 211, 0, 0, 4380, 4384, 3, 804, 402, 0, 4381, 4382, 5, 296, 0, 0, 4382, 4384, 3, 798, 399, 0, 4383, 4379, 1, 0, 0, 0, 4383, 4381, 1, 0, 0, 0, 4384, 4385, 1, 0, 0, 0, 4385, 4394, 5, 2, 0, 0, 4386, 4391, 3, 390, 195, 0, 4387, 4388, 5, 6, 0, 0, 4388, 4390, 3, 390, 195, 0, 4389, 4387, 1, 0, 0, 0, 4390, 4393, 1, 0, 0, 0, 4391, 4389, 1, 0, 0, 0, 4391, 4392, 1, 0, 0, 0, 4392, 4395, 1, 0, 0, 0, 4393, 4391, 1, 0, 0, 0, 4394, 4386, 1, 0, 0, 0, 4394, 4395, 1, 0, 0, 0, 4395, 4396, 1, 0, 0, 0, 4396, 4397, 5, 3, 0, 0, 4397, 4414, 1, 0, 0, 0, 4398, 4412, 5, 316, 0, 0, 4399, 4413, 3, 388, 194, 0, 4400, 4401, 5, 92, 0, 0, 4401, 4402, 5, 2, 0, 0, 4402, 4407, 3, 402, 201, 0, 4403, 4404, 5, 6, 0, 0, 4404, 4406, 3, 402, 201, 0, 4405, 4403, 1, 0, 0, 0, 4406, 4409, 1, 0, 0, 0, 4407, 4405, 1, 0, 0, 0, 4407, 4408, 1, 0, 0, 0, 4408, 4410, 1, 0, 0, 0, 4409, 4407, 1, 0, 0, 0, 4410, 4411, 5, 3, 0, 0, 4411, 4413, 1, 0, 0, 0, 4412, 4399, 1, 0, 0, 0, 4412, 4400, 1, 0, 0, 0, 4413, 4415, 1, 0, 0, 0, 4414, 4398, 1, 0, 0, 0, 4414, 4415, 1, 0, 0, 0, 4415, 4417, 1, 0, 0, 0, 4416, 4418, 3, 398, 199, 0, 4417, 4416, 1, 0, 0, 0, 4418, 4419, 1, 0, 0, 0, 4419, 4417, 1, 0, 0, 0, 4419, 4420, 1, 0, 0, 0, 4420, 4426, 1, 0, 0, 0, 4421, 4422, 5, 105, 0, 0, 4422, 4423, 5, 2, 0, 0, 4423, 4424, 3, 784, 392, 0, 4424, 4425, 5, 3, 0, 0, 4425, 4427, 1, 0, 0, 0, 4426, 4421, 1, 0, 0, 0, 4426, 4427, 1, 0, 0, 0, 4427, 365, 1, 0, 0, 0, 4428, 4429, 5, 82, 0, 0, 4429, 4430, 5, 311, 0, 0, 4430, 367, 1, 0, 0, 0, 4431, 4433, 5, 2, 0, 0, 4432, 4434, 3, 370, 185, 0, 4433, 4432, 1, 0, 0, 0, 4433, 4434, 1, 0, 0, 0, 4434, 4435, 1, 0, 0, 0, 4435, 4436, 5, 3, 0, 0, 4436, 369, 1, 0, 0, 0, 4437, 4442, 3, 384, 192, 0, 4438, 4439, 5, 6, 0, 0, 4439, 4441, 3, 384, 192, 0, 4440, 4438, 1, 0, 0, 0, 4441, 4444, 1, 0, 0, 0, 4442, 4440, 1, 0, 0, 0, 4442, 4443, 1, 0, 0, 0, 4443, 371, 1, 0, 0, 0, 4444, 4442, 1, 0, 0, 0, 4445, 4450, 3, 374, 187, 0, 4446, 4447, 5, 6, 0, 0, 4447, 4449, 3, 374, 187, 0, 4448, 4446, 1, 0, 0, 0, 4449, 4452, 1, 0, 0, 0, 4450, 4448, 1, 0, 0, 0, 4450, 4451, 1, 0, 0, 0, 4451, 373, 1, 0, 0, 0, 4452, 4450, 1, 0, 0, 0, 4453, 4454, 3, 794, 397, 0, 4454, 4455, 3, 368, 184, 0, 4455, 4459, 1, 0, 0, 0, 4456, 4459, 3, 832, 416, 0, 4457, 4459, 3, 780, 390, 0, 4458, 4453, 1, 0, 0, 0, 4458, 4456, 1, 0, 0, 0, 4458, 4457, 1, 0, 0, 0, 4459, 375, 1, 0, 0, 0, 4460, 4465, 3, 378, 189, 0, 4461, 4462, 5, 6, 0, 0, 4462, 4464, 3, 378, 189, 0, 4463, 4461, 1, 0, 0, 0, 4464, 4467, 1, 0, 0, 0, 4465, 4463, 1, 0, 0, 0, 4465, 4466, 1, 0, 0, 0, 4466, 377, 1, 0, 0, 0, 4467, 4465, 1, 0, 0, 0, 4468, 4469, 3, 796, 398, 0, 4469, 4470, 3, 368, 184, 0, 4470, 4474, 1, 0, 0, 0, 4471, 4474, 3, 832, 416, 0, 4472, 4474, 3, 780, 390, 0, 4473, 4468, 1, 0, 0, 0, 4473, 4471, 1, 0, 0, 0, 4473, 4472, 1, 0, 0, 0, 4474, 379, 1, 0, 0, 0, 4475, 4480, 3, 382, 191, 0, 4476, 4477, 5, 6, 0, 0, 4477, 4479, 3, 382, 191, 0, 4478, 4476, 1, 0, 0, 0, 4479, 4482, 1, 0, 0, 0, 4480, 4478, 1, 0, 0, 0, 4480, 4481, 1, 0, 0, 0, 4481, 381, 1, 0, 0, 0, 4482, 4480, 1, 0, 0, 0, 4483, 4484, 3, 806, 403, 0, 4484, 4485, 3, 368, 184, 0, 4485, 4489, 1, 0, 0, 0, 4486, 4489, 3, 832, 416, 0, 4487, 4489, 3, 780, 390, 0, 4488, 4483, 1, 0, 0, 0, 4488, 4486, 1, 0, 0, 0, 4488, 4487, 1, 0, 0, 0, 4489, 383, 1, 0, 0, 0, 4490, 4492, 3, 386, 193, 0, 4491, 4493, 3, 820, 410, 0, 4492, 4491, 1, 0, 0, 0, 4492, 4493, 1, 0, 0, 0, 4493, 4499, 1, 0, 0, 0, 4494, 4496, 3, 820, 410, 0, 4495, 4497, 3, 386, 193, 0, 4496, 4495, 1, 0, 0, 0, 4496, 4497, 1, 0, 0, 0, 4497, 4499, 1, 0, 0, 0, 4498, 4490, 1, 0, 0, 0, 4498, 4494, 1, 0, 0, 0, 4498, 4499, 1, 0, 0, 0, 4499, 4500, 1, 0, 0, 0, 4500, 4501, 3, 388, 194, 0, 4501, 385, 1, 0, 0, 0, 4502, 4504, 5, 68, 0, 0, 4503, 4505, 5, 453, 0, 0, 4504, 4503, 1, 0, 0, 0, 4504, 4505, 1, 0, 0, 0, 4505, 4510, 1, 0, 0, 0, 4506, 4510, 5, 453, 0, 0, 4507, 4510, 5, 400, 0, 0, 4508, 4510, 5, 101, 0, 0, 4509, 4502, 1, 0, 0, 0, 4509, 4506, 1, 0, 0, 0, 4509, 4507, 1, 0, 0, 0, 4509, 4508, 1, 0, 0, 0, 4510, 387, 1, 0, 0, 0, 4511, 4521, 3, 652, 326, 0, 4512, 4514, 5, 415, 0, 0, 4513, 4512, 1, 0, 0, 0, 4513, 4514, 1, 0, 0, 0, 4514, 4515, 1, 0, 0, 0, 4515, 4516, 3, 820, 410, 0, 4516, 4517, 3, 318, 159, 0, 4517, 4518, 5, 27, 0, 0, 4518, 4519, 5, 360, 0, 0, 4519, 4521, 1, 0, 0, 0, 4520, 4511, 1, 0, 0, 0, 4520, 4513, 1, 0, 0, 0, 4521, 389, 1, 0, 0, 0, 4522, 4525, 3, 384, 192, 0, 4523, 4524, 7, 57, 0, 0, 4524, 4526, 3, 674, 337, 0, 4525, 4523, 1, 0, 0, 0, 4525, 4526, 1, 0, 0, 0, 4526, 391, 1, 0, 0, 0, 4527, 4537, 5, 2, 0, 0, 4528, 4538, 5, 9, 0, 0, 4529, 4531, 3, 370, 185, 0, 4530, 4529, 1, 0, 0, 0, 4530, 4531, 1, 0, 0, 0, 4531, 4535, 1, 0, 0, 0, 4532, 4533, 5, 83, 0, 0, 4533, 4534, 5, 147, 0, 0, 4534, 4536, 3, 370, 185, 0, 4535, 4532, 1, 0, 0, 0, 4535, 4536, 1, 0, 0, 0, 4536, 4538, 1, 0, 0, 0, 4537, 4528, 1, 0, 0, 0, 4537, 4530, 1, 0, 0, 0, 4538, 4539, 1, 0, 0, 0, 4539, 4540, 5, 3, 0, 0, 4540, 393, 1, 0, 0, 0, 4541, 4542, 3, 806, 403, 0, 4542, 4543, 3, 392, 196, 0, 4543, 395, 1, 0, 0, 0, 4544, 4545, 5, 316, 0, 0, 4545, 4548, 5, 78, 0, 0, 4546, 4548, 5, 149, 0, 0, 4547, 4544, 1, 0, 0, 0, 4547, 4546, 1, 0, 0, 0, 4548, 4549, 1, 0, 0, 0, 4549, 4550, 5, 80, 0, 0, 4550, 4551, 5, 78, 0, 0, 4551, 4574, 5, 458, 0, 0, 4552, 4574, 5, 346, 0, 0, 4553, 4574, 5, 222, 0, 0, 4554, 4574, 5, 338, 0, 0, 4555, 4574, 5, 377, 0, 0, 4556, 4558, 5, 205, 0, 0, 4557, 4556, 1, 0, 0, 0, 4557, 4558, 1, 0, 0, 0, 4558, 4559, 1, 0, 0, 0, 4559, 4560, 5, 327, 0, 0, 4560, 4574, 7, 58, 0, 0, 4561, 4574, 5, 250, 0, 0, 4562, 4563, 5, 77, 0, 0, 4563, 4574, 5, 250, 0, 0, 4564, 4565, 7, 59, 0, 0, 4565, 4574, 3, 202, 101, 0, 4566, 4567, 5, 459, 0, 0, 4567, 4574, 3, 316, 158, 0, 4568, 4569, 5, 333, 0, 0, 4569, 4574, 3, 42, 21, 0, 4570, 4574, 3, 60, 30, 0, 4571, 4572, 5, 460, 0, 0, 4572, 4574, 3, 818, 409, 0, 4573, 4547, 1, 0, 0, 0, 4573, 4552, 1, 0, 0, 0, 4573, 4553, 1, 0, 0, 0, 4573, 4554, 1, 0, 0, 0, 4573, 4555, 1, 0, 0, 0, 4573, 4557, 1, 0, 0, 0, 4573, 4561, 1, 0, 0, 0, 4573, 4562, 1, 0, 0, 0, 4573, 4564, 1, 0, 0, 0, 4573, 4566, 1, 0, 0, 0, 4573, 4568, 1, 0, 0, 0, 4573, 4570, 1, 0, 0, 0, 4573, 4571, 1, 0, 0, 0, 4574, 397, 1, 0, 0, 0, 4575, 4576, 5, 36, 0, 0, 4576, 4577, 3, 808, 404, 0, 4577, 4578, 3, 462, 231, 0, 4578, 4611, 1, 0, 0, 0, 4579, 4580, 5, 247, 0, 0, 4580, 4611, 3, 58, 29, 0, 4581, 4582, 5, 443, 0, 0, 4582, 4583, 5, 62, 0, 0, 4583, 4584, 5, 360, 0, 0, 4584, 4591, 3, 652, 326, 0, 4585, 4586, 5, 6, 0, 0, 4586, 4587, 5, 62, 0, 0, 4587, 4588, 5, 360, 0, 0, 4588, 4590, 3, 652, 326, 0, 4589, 4585, 1, 0, 0, 0, 4590, 4593, 1, 0, 0, 0, 4591, 4589, 1, 0, 0, 0, 4591, 4592, 1, 0, 0, 0, 4592, 4611, 1, 0, 0, 0, 4593, 4591, 1, 0, 0, 0, 4594, 4611, 5, 104, 0, 0, 4595, 4596, 5, 333, 0, 0, 4596, 4603, 3, 818, 409, 0, 4597, 4598, 5, 94, 0, 0, 4598, 4604, 3, 818, 409, 0, 4599, 4600, 5, 10, 0, 0, 4600, 4604, 3, 818, 409, 0, 4601, 4602, 5, 64, 0, 0, 4602, 4604, 5, 434, 0, 0, 4603, 4597, 1, 0, 0, 0, 4603, 4599, 1, 0, 0, 0, 4603, 4601, 1, 0, 0, 0, 4604, 4611, 1, 0, 0, 0, 4605, 4606, 5, 36, 0, 0, 4606, 4611, 3, 818, 409, 0, 4607, 4611, 3, 4, 2, 0, 4608, 4611, 3, 396, 198, 0, 4609, 4611, 3, 818, 409, 0, 4610, 4575, 1, 0, 0, 0, 4610, 4579, 1, 0, 0, 0, 4610, 4581, 1, 0, 0, 0, 4610, 4594, 1, 0, 0, 0, 4610, 4595, 1, 0, 0, 0, 4610, 4605, 1, 0, 0, 0, 4610, 4607, 1, 0, 0, 0, 4610, 4608, 1, 0, 0, 0, 4610, 4609, 1, 0, 0, 0, 4611, 399, 1, 0, 0, 0, 4612, 4613, 5, 105, 0, 0, 4613, 4614, 3, 284, 142, 0, 4614, 401, 1, 0, 0, 0, 4615, 4616, 3, 800, 400, 0, 4616, 4617, 3, 388, 194, 0, 4617, 403, 1, 0, 0, 0, 4618, 4625, 5, 138, 0, 0, 4619, 4620, 5, 211, 0, 0, 4620, 4626, 3, 382, 191, 0, 4621, 4622, 5, 296, 0, 0, 4622, 4626, 3, 378, 189, 0, 4623, 4624, 5, 442, 0, 0, 4624, 4626, 3, 374, 187, 0, 4625, 4619, 1, 0, 0, 0, 4625, 4621, 1, 0, 0, 0, 4625, 4623, 1, 0, 0, 0, 4626, 4628, 1, 0, 0, 0, 4627, 4629, 3, 396, 198, 0, 4628, 4627, 1, 0, 0, 0, 4629, 4630, 1, 0, 0, 0, 4630, 4628, 1, 0, 0, 0, 4630, 4631, 1, 0, 0, 0, 4631, 4633, 1, 0, 0, 0, 4632, 4634, 5, 315, 0, 0, 4633, 4632, 1, 0, 0, 0, 4633, 4634, 1, 0, 0, 0, 4634, 405, 1, 0, 0, 0, 4635, 4651, 5, 191, 0, 0, 4636, 4638, 5, 211, 0, 0, 4637, 4639, 3, 422, 211, 0, 4638, 4637, 1, 0, 0, 0, 4638, 4639, 1, 0, 0, 0, 4639, 4640, 1, 0, 0, 0, 4640, 4652, 3, 380, 190, 0, 4641, 4643, 5, 296, 0, 0, 4642, 4644, 3, 422, 211, 0, 4643, 4642, 1, 0, 0, 0, 4643, 4644, 1, 0, 0, 0, 4644, 4645, 1, 0, 0, 0, 4645, 4652, 3, 376, 188, 0, 4646, 4648, 5, 442, 0, 0, 4647, 4649, 3, 422, 211, 0, 4648, 4647, 1, 0, 0, 0, 4648, 4649, 1, 0, 0, 0, 4649, 4650, 1, 0, 0, 0, 4650, 4652, 3, 372, 186, 0, 4651, 4636, 1, 0, 0, 0, 4651, 4641, 1, 0, 0, 0, 4651, 4646, 1, 0, 0, 0, 4652, 4654, 1, 0, 0, 0, 4653, 4655, 3, 96, 48, 0, 4654, 4653, 1, 0, 0, 0, 4654, 4655, 1, 0, 0, 0, 4655, 407, 1, 0, 0, 0, 4656, 4657, 5, 191, 0, 0, 4657, 4659, 5, 136, 0, 0, 4658, 4660, 3, 422, 211, 0, 4659, 4658, 1, 0, 0, 0, 4659, 4660, 1, 0, 0, 0, 4660, 4661, 1, 0, 0, 0, 4661, 4666, 3, 394, 197, 0, 4662, 4663, 5, 6, 0, 0, 4663, 4665, 3, 394, 197, 0, 4664, 4662, 1, 0, 0, 0, 4665, 4668, 1, 0, 0, 0, 4666, 4664, 1, 0, 0, 0, 4666, 4667, 1, 0, 0, 0, 4667, 4670, 1, 0, 0, 0, 4668, 4666, 1, 0, 0, 0, 4669, 4671, 3, 96, 48, 0, 4670, 4669, 1, 0, 0, 0, 4670, 4671, 1, 0, 0, 0, 4671, 409, 1, 0, 0, 0, 4672, 4673, 5, 191, 0, 0, 4673, 4675, 5, 278, 0, 0, 4674, 4676, 3, 422, 211, 0, 4675, 4674, 1, 0, 0, 0, 4675, 4676, 1, 0, 0, 0, 4676, 4677, 1, 0, 0, 0, 4677, 4682, 3, 416, 208, 0, 4678, 4679, 5, 6, 0, 0, 4679, 4681, 3, 416, 208, 0, 4680, 4678, 1, 0, 0, 0, 4681, 4684, 1, 0, 0, 0, 4682, 4680, 1, 0, 0, 0, 4682, 4683, 1, 0, 0, 0, 4683, 4686, 1, 0, 0, 0, 4684, 4682, 1, 0, 0, 0, 4685, 4687, 3, 96, 48, 0, 4686, 4685, 1, 0, 0, 0, 4686, 4687, 1, 0, 0, 0, 4687, 411, 1, 0, 0, 0, 4688, 4701, 5, 2, 0, 0, 4689, 4692, 3, 652, 326, 0, 4690, 4691, 5, 6, 0, 0, 4691, 4693, 3, 652, 326, 0, 4692, 4690, 1, 0, 0, 0, 4692, 4693, 1, 0, 0, 0, 4693, 4702, 1, 0, 0, 0, 4694, 4695, 5, 407, 0, 0, 4695, 4696, 5, 6, 0, 0, 4696, 4702, 3, 652, 326, 0, 4697, 4698, 3, 652, 326, 0, 4698, 4699, 5, 6, 0, 0, 4699, 4700, 5, 407, 0, 0, 4700, 4702, 1, 0, 0, 0, 4701, 4689, 1, 0, 0, 0, 4701, 4694, 1, 0, 0, 0, 4701, 4697, 1, 0, 0, 0, 4702, 4703, 1, 0, 0, 0, 4703, 4704, 5, 3, 0, 0, 4704, 413, 1, 0, 0, 0, 4705, 4706, 3, 818, 409, 0, 4706, 4707, 5, 11, 0, 0, 4707, 4709, 1, 0, 0, 0, 4708, 4705, 1, 0, 0, 0, 4709, 4712, 1, 0, 0, 0, 4710, 4708, 1, 0, 0, 0, 4710, 4711, 1, 0, 0, 0, 4711, 4713, 1, 0, 0, 0, 4712, 4710, 1, 0, 0, 0, 4713, 4714, 3, 720, 360, 0, 4714, 415, 1, 0, 0, 0, 4715, 4716, 3, 414, 207, 0, 4716, 4717, 3, 412, 206, 0, 4717, 417, 1, 0, 0, 0, 4718, 4722, 5, 57, 0, 0, 4719, 4723, 3, 808, 404, 0, 4720, 4721, 5, 247, 0, 0, 4721, 4723, 3, 58, 29, 0, 4722, 4719, 1, 0, 0, 0, 4722, 4720, 1, 0, 0, 0, 4723, 4724, 1, 0, 0, 0, 4724, 4722, 1, 0, 0, 0, 4724, 4725, 1, 0, 0, 0, 4725, 419, 1, 0, 0, 0, 4726, 4727, 5, 46, 0, 0, 4727, 4728, 5, 41, 0, 0, 4728, 4729, 5, 2, 0, 0, 4729, 4730, 3, 652, 326, 0, 4730, 4731, 5, 36, 0, 0, 4731, 4732, 3, 652, 326, 0, 4732, 4749, 5, 3, 0, 0, 4733, 4734, 5, 379, 0, 0, 4734, 4737, 5, 211, 0, 0, 4735, 4736, 5, 36, 0, 0, 4736, 4738, 7, 60, 0, 0, 4737, 4735, 1, 0, 0, 0, 4737, 4738, 1, 0, 0, 0, 4738, 4750, 1, 0, 0, 0, 4739, 4743, 5, 105, 0, 0, 4740, 4741, 5, 211, 0, 0, 4741, 4744, 3, 382, 191, 0, 4742, 4744, 5, 400, 0, 0, 4743, 4740, 1, 0, 0, 0, 4743, 4742, 1, 0, 0, 0, 4744, 4747, 1, 0, 0, 0, 4745, 4746, 5, 36, 0, 0, 4746, 4748, 7, 60, 0, 0, 4747, 4745, 1, 0, 0, 0, 4747, 4748, 1, 0, 0, 0, 4748, 4750, 1, 0, 0, 0, 4749, 4733, 1, 0, 0, 0, 4749, 4739, 1, 0, 0, 0, 4750, 421, 1, 0, 0, 0, 4751, 4752, 5, 220, 0, 0, 4752, 4753, 5, 396, 0, 0, 4753, 423, 1, 0, 0, 0, 4754, 4756, 5, 46, 0, 0, 4755, 4757, 3, 366, 183, 0, 4756, 4755, 1, 0, 0, 0, 4756, 4757, 1, 0, 0, 0, 4757, 4758, 1, 0, 0, 0, 4758, 4759, 5, 443, 0, 0, 4759, 4760, 5, 62, 0, 0, 4760, 4761, 3, 652, 326, 0, 4761, 4762, 5, 247, 0, 0, 4762, 4763, 3, 818, 409, 0, 4763, 4778, 5, 2, 0, 0, 4764, 4765, 5, 64, 0, 0, 4765, 4769, 3, 426, 213, 0, 4766, 4767, 5, 6, 0, 0, 4767, 4768, 5, 94, 0, 0, 4768, 4770, 3, 426, 213, 0, 4769, 4766, 1, 0, 0, 0, 4769, 4770, 1, 0, 0, 0, 4770, 4779, 1, 0, 0, 0, 4771, 4772, 5, 94, 0, 0, 4772, 4776, 3, 426, 213, 0, 4773, 4774, 5, 6, 0, 0, 4774, 4775, 5, 64, 0, 0, 4775, 4777, 3, 426, 213, 0, 4776, 4773, 1, 0, 0, 0, 4776, 4777, 1, 0, 0, 0, 4777, 4779, 1, 0, 0, 0, 4778, 4764, 1, 0, 0, 0, 4778, 4771, 1, 0, 0, 0, 4779, 4780, 1, 0, 0, 0, 4780, 4781, 5, 3, 0, 0, 4781, 425, 1, 0, 0, 0, 4782, 4783, 5, 461, 0, 0, 4783, 4784, 5, 105, 0, 0, 4784, 4785, 5, 211, 0, 0, 4785, 4786, 3, 382, 191, 0, 4786, 427, 1, 0, 0, 0, 4787, 4798, 5, 306, 0, 0, 4788, 4789, 5, 2, 0, 0, 4789, 4794, 5, 128, 0, 0, 4790, 4791, 5, 6, 0, 0, 4791, 4793, 5, 128, 0, 0, 4792, 4790, 1, 0, 0, 0, 4793, 4796, 1, 0, 0, 0, 4794, 4792, 1, 0, 0, 0, 4794, 4795, 1, 0, 0, 0, 4795, 4797, 1, 0, 0, 0, 4796, 4794, 1, 0, 0, 0, 4797, 4799, 5, 3, 0, 0, 4798, 4788, 1, 0, 0, 0, 4798, 4799, 1, 0, 0, 0, 4799, 4825, 1, 0, 0, 0, 4800, 4802, 5, 226, 0, 0, 4801, 4803, 5, 109, 0, 0, 4802, 4801, 1, 0, 0, 0, 4802, 4803, 1, 0, 0, 0, 4803, 4804, 1, 0, 0, 0, 4804, 4826, 3, 780, 390, 0, 4805, 4807, 5, 92, 0, 0, 4806, 4808, 5, 109, 0, 0, 4807, 4806, 1, 0, 0, 0, 4807, 4808, 1, 0, 0, 0, 4808, 4809, 1, 0, 0, 0, 4809, 4826, 3, 774, 387, 0, 4810, 4812, 5, 323, 0, 0, 4811, 4813, 5, 109, 0, 0, 4812, 4811, 1, 0, 0, 0, 4812, 4813, 1, 0, 0, 0, 4813, 4814, 1, 0, 0, 0, 4814, 4826, 3, 790, 395, 0, 4815, 4817, 5, 349, 0, 0, 4816, 4818, 5, 109, 0, 0, 4817, 4816, 1, 0, 0, 0, 4817, 4818, 1, 0, 0, 0, 4818, 4819, 1, 0, 0, 0, 4819, 4826, 3, 818, 409, 0, 4820, 4822, 5, 175, 0, 0, 4821, 4823, 5, 109, 0, 0, 4822, 4821, 1, 0, 0, 0, 4822, 4823, 1, 0, 0, 0, 4823, 4824, 1, 0, 0, 0, 4824, 4826, 3, 788, 394, 0, 4825, 4800, 1, 0, 0, 0, 4825, 4805, 1, 0, 0, 0, 4825, 4810, 1, 0, 0, 0, 4825, 4815, 1, 0, 0, 0, 4825, 4820, 1, 0, 0, 0, 4826, 429, 1, 0, 0, 0, 4827, 4828, 5, 138, 0, 0, 4828, 4829, 3, 176, 88, 0, 4829, 4830, 7, 16, 0, 0, 4830, 4831, 3, 100, 50, 0, 4831, 431, 1, 0, 0, 0, 4832, 4837, 5, 138, 0, 0, 4833, 4834, 5, 136, 0, 0, 4834, 4838, 3, 394, 197, 0, 4835, 4836, 5, 442, 0, 0, 4836, 4838, 3, 374, 187, 0, 4837, 4833, 1, 0, 0, 0, 4837, 4835, 1, 0, 0, 0, 4838, 4839, 1, 0, 0, 0, 4839, 4840, 5, 309, 0, 0, 4840, 4841, 5, 94, 0, 0, 4841, 4842, 3, 818, 409, 0, 4842, 5040, 1, 0, 0, 0, 4843, 4844, 5, 138, 0, 0, 4844, 4845, 5, 175, 0, 0, 4845, 4846, 3, 788, 394, 0, 4846, 4847, 5, 309, 0, 0, 4847, 4848, 5, 94, 0, 0, 4848, 4849, 3, 786, 393, 0, 4849, 5040, 1, 0, 0, 0, 4850, 4851, 5, 138, 0, 0, 4851, 4852, 7, 61, 0, 0, 4852, 4853, 3, 316, 158, 0, 4853, 4854, 5, 309, 0, 0, 4854, 4855, 5, 94, 0, 0, 4855, 4856, 3, 818, 409, 0, 4856, 5040, 1, 0, 0, 0, 4857, 4858, 5, 138, 0, 0, 4858, 4859, 5, 211, 0, 0, 4859, 4860, 3, 382, 191, 0, 4860, 4861, 5, 309, 0, 0, 4861, 4862, 5, 94, 0, 0, 4862, 4863, 3, 804, 402, 0, 4863, 5040, 1, 0, 0, 0, 4864, 4865, 5, 138, 0, 0, 4865, 4866, 5, 278, 0, 0, 4866, 4867, 7, 31, 0, 0, 4867, 4868, 3, 316, 158, 0, 4868, 4869, 3, 170, 85, 0, 4869, 4870, 5, 309, 0, 0, 4870, 4871, 5, 94, 0, 0, 4871, 4872, 3, 818, 409, 0, 4872, 5040, 1, 0, 0, 0, 4873, 4874, 5, 138, 0, 0, 4874, 4875, 5, 296, 0, 0, 4875, 4876, 3, 378, 189, 0, 4876, 4877, 5, 309, 0, 0, 4877, 4878, 5, 94, 0, 0, 4878, 4879, 3, 798, 399, 0, 4879, 5040, 1, 0, 0, 0, 4880, 4881, 5, 138, 0, 0, 4881, 4882, 5, 323, 0, 0, 4882, 4883, 3, 790, 395, 0, 4883, 4884, 5, 309, 0, 0, 4884, 4885, 5, 94, 0, 0, 4885, 4886, 3, 32, 16, 0, 4886, 5040, 1, 0, 0, 0, 4887, 4888, 5, 138, 0, 0, 4888, 4890, 7, 62, 0, 0, 4889, 4891, 3, 422, 211, 0, 4890, 4889, 1, 0, 0, 0, 4890, 4891, 1, 0, 0, 0, 4891, 4892, 1, 0, 0, 0, 4892, 4893, 3, 780, 390, 0, 4893, 4894, 5, 309, 0, 0, 4894, 4895, 5, 94, 0, 0, 4895, 4896, 3, 818, 409, 0, 4896, 5040, 1, 0, 0, 0, 4897, 4899, 5, 138, 0, 0, 4898, 4900, 5, 259, 0, 0, 4899, 4898, 1, 0, 0, 0, 4899, 4900, 1, 0, 0, 0, 4900, 4901, 1, 0, 0, 0, 4901, 4903, 5, 376, 0, 0, 4902, 4904, 3, 422, 211, 0, 4903, 4902, 1, 0, 0, 0, 4903, 4904, 1, 0, 0, 0, 4904, 4905, 1, 0, 0, 0, 4905, 4906, 3, 778, 389, 0, 4906, 4907, 5, 309, 0, 0, 4907, 4908, 5, 94, 0, 0, 4908, 4909, 3, 776, 388, 0, 4909, 5040, 1, 0, 0, 0, 4910, 4912, 5, 138, 0, 0, 4911, 4913, 5, 63, 0, 0, 4912, 4911, 1, 0, 0, 0, 4912, 4913, 1, 0, 0, 0, 4913, 4914, 1, 0, 0, 0, 4914, 4916, 5, 92, 0, 0, 4915, 4917, 3, 422, 211, 0, 4916, 4915, 1, 0, 0, 0, 4916, 4917, 1, 0, 0, 0, 4917, 4918, 1, 0, 0, 0, 4918, 4919, 3, 624, 312, 0, 4919, 4920, 5, 309, 0, 0, 4920, 4921, 5, 94, 0, 0, 4921, 4922, 3, 772, 386, 0, 4922, 5040, 1, 0, 0, 0, 4923, 4948, 5, 138, 0, 0, 4924, 4926, 5, 63, 0, 0, 4925, 4924, 1, 0, 0, 0, 4925, 4926, 1, 0, 0, 0, 4926, 4927, 1, 0, 0, 0, 4927, 4929, 5, 92, 0, 0, 4928, 4930, 3, 422, 211, 0, 4929, 4928, 1, 0, 0, 0, 4929, 4930, 1, 0, 0, 0, 4930, 4931, 1, 0, 0, 0, 4931, 4932, 3, 624, 312, 0, 4932, 4934, 5, 309, 0, 0, 4933, 4935, 5, 44, 0, 0, 4934, 4933, 1, 0, 0, 0, 4934, 4935, 1, 0, 0, 0, 4935, 4949, 1, 0, 0, 0, 4936, 4938, 5, 259, 0, 0, 4937, 4936, 1, 0, 0, 0, 4937, 4938, 1, 0, 0, 0, 4938, 4939, 1, 0, 0, 0, 4939, 4941, 5, 376, 0, 0, 4940, 4942, 3, 422, 211, 0, 4941, 4940, 1, 0, 0, 0, 4941, 4942, 1, 0, 0, 0, 4942, 4943, 1, 0, 0, 0, 4943, 4944, 3, 778, 389, 0, 4944, 4946, 5, 309, 0, 0, 4945, 4947, 5, 44, 0, 0, 4946, 4945, 1, 0, 0, 0, 4946, 4947, 1, 0, 0, 0, 4947, 4949, 1, 0, 0, 0, 4948, 4925, 1, 0, 0, 0, 4948, 4937, 1, 0, 0, 0, 4949, 4950, 1, 0, 0, 0, 4950, 4951, 3, 800, 400, 0, 4951, 4952, 5, 94, 0, 0, 4952, 4953, 3, 802, 401, 0, 4953, 5040, 1, 0, 0, 0, 4954, 4962, 5, 138, 0, 0, 4955, 4957, 5, 92, 0, 0, 4956, 4958, 3, 422, 211, 0, 4957, 4956, 1, 0, 0, 0, 4957, 4958, 1, 0, 0, 0, 4958, 4959, 1, 0, 0, 0, 4959, 4963, 3, 624, 312, 0, 4960, 4961, 5, 189, 0, 0, 4961, 4963, 3, 316, 158, 0, 4962, 4955, 1, 0, 0, 0, 4962, 4960, 1, 0, 0, 0, 4963, 4964, 1, 0, 0, 0, 4964, 4965, 5, 309, 0, 0, 4965, 4966, 5, 45, 0, 0, 4966, 4967, 3, 818, 409, 0, 4967, 4968, 5, 94, 0, 0, 4968, 4969, 3, 818, 409, 0, 4969, 5040, 1, 0, 0, 0, 4970, 4977, 5, 138, 0, 0, 4971, 4973, 5, 445, 0, 0, 4972, 4974, 3, 422, 211, 0, 4973, 4972, 1, 0, 0, 0, 4973, 4974, 1, 0, 0, 0, 4974, 4978, 1, 0, 0, 0, 4975, 4978, 5, 321, 0, 0, 4976, 4978, 5, 357, 0, 0, 4977, 4971, 1, 0, 0, 0, 4977, 4975, 1, 0, 0, 0, 4977, 4976, 1, 0, 0, 0, 4978, 4979, 1, 0, 0, 0, 4979, 4980, 3, 818, 409, 0, 4980, 4981, 5, 80, 0, 0, 4981, 4982, 3, 780, 390, 0, 4982, 4983, 5, 309, 0, 0, 4983, 4984, 5, 94, 0, 0, 4984, 4985, 3, 818, 409, 0, 4985, 5040, 1, 0, 0, 0, 4986, 4999, 5, 138, 0, 0, 4987, 4988, 5, 63, 0, 0, 4988, 4989, 5, 174, 0, 0, 4989, 5000, 5, 381, 0, 0, 4990, 4992, 5, 295, 0, 0, 4991, 4990, 1, 0, 0, 0, 4991, 4992, 1, 0, 0, 0, 4992, 4993, 1, 0, 0, 0, 4993, 5000, 5, 247, 0, 0, 4994, 5000, 5, 452, 0, 0, 4995, 5000, 5, 331, 0, 0, 4996, 5000, 5, 451, 0, 0, 4997, 4998, 5, 198, 0, 0, 4998, 5000, 5, 357, 0, 0, 4999, 4987, 1, 0, 0, 0, 4999, 4991, 1, 0, 0, 0, 4999, 4994, 1, 0, 0, 0, 4999, 4995, 1, 0, 0, 0, 4999, 4996, 1, 0, 0, 0, 4999, 4997, 1, 0, 0, 0, 5000, 5001, 1, 0, 0, 0, 5001, 5002, 3, 818, 409, 0, 5002, 5003, 5, 309, 0, 0, 5003, 5004, 5, 94, 0, 0, 5004, 5005, 3, 818, 409, 0, 5005, 5040, 1, 0, 0, 0, 5006, 5007, 5, 138, 0, 0, 5007, 5008, 7, 45, 0, 0, 5008, 5009, 3, 814, 407, 0, 5009, 5010, 5, 309, 0, 0, 5010, 5011, 5, 94, 0, 0, 5011, 5012, 3, 814, 407, 0, 5012, 5040, 1, 0, 0, 0, 5013, 5014, 5, 138, 0, 0, 5014, 5015, 3, 176, 88, 0, 5015, 5016, 5, 309, 0, 0, 5016, 5017, 5, 94, 0, 0, 5017, 5018, 3, 768, 384, 0, 5018, 5040, 1, 0, 0, 0, 5019, 5020, 5, 138, 0, 0, 5020, 5021, 5, 355, 0, 0, 5021, 5022, 5, 325, 0, 0, 5022, 5023, 7, 41, 0, 0, 5023, 5024, 3, 316, 158, 0, 5024, 5025, 5, 309, 0, 0, 5025, 5026, 5, 94, 0, 0, 5026, 5027, 3, 818, 409, 0, 5027, 5040, 1, 0, 0, 0, 5028, 5029, 5, 138, 0, 0, 5029, 5030, 5, 360, 0, 0, 5030, 5031, 3, 316, 158, 0, 5031, 5032, 5, 309, 0, 0, 5032, 5033, 5, 143, 0, 0, 5033, 5034, 3, 818, 409, 0, 5034, 5035, 5, 94, 0, 0, 5035, 5037, 3, 818, 409, 0, 5036, 5038, 3, 96, 48, 0, 5037, 5036, 1, 0, 0, 0, 5037, 5038, 1, 0, 0, 0, 5038, 5040, 1, 0, 0, 0, 5039, 4832, 1, 0, 0, 0, 5039, 4843, 1, 0, 0, 0, 5039, 4850, 1, 0, 0, 0, 5039, 4857, 1, 0, 0, 0, 5039, 4864, 1, 0, 0, 0, 5039, 4873, 1, 0, 0, 0, 5039, 4880, 1, 0, 0, 0, 5039, 4887, 1, 0, 0, 0, 5039, 4897, 1, 0, 0, 0, 5039, 4910, 1, 0, 0, 0, 5039, 4923, 1, 0, 0, 0, 5039, 4954, 1, 0, 0, 0, 5039, 4970, 1, 0, 0, 0, 5039, 4986, 1, 0, 0, 0, 5039, 5006, 1, 0, 0, 0, 5039, 5013, 1, 0, 0, 0, 5039, 5019, 1, 0, 0, 0, 5039, 5028, 1, 0, 0, 0, 5040, 433, 1, 0, 0, 0, 5041, 5058, 5, 138, 0, 0, 5042, 5043, 5, 211, 0, 0, 5043, 5059, 3, 382, 191, 0, 5044, 5045, 5, 296, 0, 0, 5045, 5059, 3, 378, 189, 0, 5046, 5047, 5, 442, 0, 0, 5047, 5059, 3, 374, 187, 0, 5048, 5049, 5, 357, 0, 0, 5049, 5050, 3, 818, 409, 0, 5050, 5051, 5, 80, 0, 0, 5051, 5052, 3, 780, 390, 0, 5052, 5059, 1, 0, 0, 0, 5053, 5054, 5, 259, 0, 0, 5054, 5055, 5, 376, 0, 0, 5055, 5059, 3, 778, 389, 0, 5056, 5057, 5, 226, 0, 0, 5057, 5059, 3, 780, 390, 0, 5058, 5042, 1, 0, 0, 0, 5058, 5044, 1, 0, 0, 0, 5058, 5046, 1, 0, 0, 0, 5058, 5048, 1, 0, 0, 0, 5058, 5053, 1, 0, 0, 0, 5058, 5056, 1, 0, 0, 0, 5059, 5061, 1, 0, 0, 0, 5060, 5062, 5, 269, 0, 0, 5061, 5060, 1, 0, 0, 0, 5061, 5062, 1, 0, 0, 0, 5062, 5063, 1, 0, 0, 0, 5063, 5064, 5, 462, 0, 0, 5064, 5065, 5, 80, 0, 0, 5065, 5066, 5, 204, 0, 0, 5066, 5067, 3, 818, 409, 0, 5067, 435, 1, 0, 0, 0, 5068, 5107, 5, 138, 0, 0, 5069, 5070, 5, 136, 0, 0, 5070, 5108, 3, 394, 197, 0, 5071, 5072, 5, 204, 0, 0, 5072, 5108, 3, 818, 409, 0, 5073, 5074, 5, 211, 0, 0, 5074, 5108, 3, 382, 191, 0, 5075, 5076, 5, 278, 0, 0, 5076, 5108, 3, 416, 208, 0, 5077, 5078, 5, 278, 0, 0, 5078, 5079, 7, 31, 0, 0, 5079, 5080, 3, 316, 158, 0, 5080, 5081, 3, 170, 85, 0, 5081, 5108, 1, 0, 0, 0, 5082, 5083, 5, 296, 0, 0, 5083, 5108, 3, 378, 189, 0, 5084, 5085, 5, 442, 0, 0, 5085, 5108, 3, 374, 187, 0, 5086, 5088, 5, 328, 0, 0, 5087, 5089, 3, 422, 211, 0, 5088, 5087, 1, 0, 0, 0, 5088, 5089, 1, 0, 0, 0, 5089, 5090, 1, 0, 0, 0, 5090, 5108, 3, 780, 390, 0, 5091, 5093, 5, 259, 0, 0, 5092, 5091, 1, 0, 0, 0, 5092, 5093, 1, 0, 0, 0, 5093, 5094, 1, 0, 0, 0, 5094, 5096, 5, 376, 0, 0, 5095, 5097, 3, 422, 211, 0, 5096, 5095, 1, 0, 0, 0, 5096, 5097, 1, 0, 0, 0, 5097, 5098, 1, 0, 0, 0, 5098, 5108, 3, 778, 389, 0, 5099, 5101, 5, 63, 0, 0, 5100, 5099, 1, 0, 0, 0, 5100, 5101, 1, 0, 0, 0, 5101, 5102, 1, 0, 0, 0, 5102, 5104, 5, 92, 0, 0, 5103, 5105, 3, 422, 211, 0, 5104, 5103, 1, 0, 0, 0, 5104, 5105, 1, 0, 0, 0, 5105, 5106, 1, 0, 0, 0, 5106, 5108, 3, 624, 312, 0, 5107, 5069, 1, 0, 0, 0, 5107, 5071, 1, 0, 0, 0, 5107, 5073, 1, 0, 0, 0, 5107, 5075, 1, 0, 0, 0, 5107, 5077, 1, 0, 0, 0, 5107, 5082, 1, 0, 0, 0, 5107, 5084, 1, 0, 0, 0, 5107, 5086, 1, 0, 0, 0, 5107, 5092, 1, 0, 0, 0, 5107, 5100, 1, 0, 0, 0, 5108, 5109, 1, 0, 0, 0, 5109, 5110, 5, 333, 0, 0, 5110, 5111, 5, 323, 0, 0, 5111, 5112, 3, 790, 395, 0, 5112, 5130, 1, 0, 0, 0, 5113, 5122, 5, 138, 0, 0, 5114, 5115, 5, 355, 0, 0, 5115, 5116, 5, 325, 0, 0, 5116, 5123, 7, 41, 0, 0, 5117, 5123, 5, 108, 0, 0, 5118, 5123, 5, 168, 0, 0, 5119, 5123, 5, 189, 0, 0, 5120, 5123, 5, 342, 0, 0, 5121, 5123, 5, 360, 0, 0, 5122, 5114, 1, 0, 0, 0, 5122, 5117, 1, 0, 0, 0, 5122, 5118, 1, 0, 0, 0, 5122, 5119, 1, 0, 0, 0, 5122, 5120, 1, 0, 0, 0, 5122, 5121, 1, 0, 0, 0, 5123, 5124, 1, 0, 0, 0, 5124, 5125, 3, 316, 158, 0, 5125, 5126, 5, 333, 0, 0, 5126, 5127, 5, 323, 0, 0, 5127, 5128, 3, 790, 395, 0, 5128, 5130, 1, 0, 0, 0, 5129, 5068, 1, 0, 0, 0, 5129, 5113, 1, 0, 0, 0, 5130, 437, 1, 0, 0, 0, 5131, 5132, 5, 138, 0, 0, 5132, 5133, 5, 278, 0, 0, 5133, 5134, 3, 416, 208, 0, 5134, 5135, 5, 333, 0, 0, 5135, 5136, 3, 440, 220, 0, 5136, 439, 1, 0, 0, 0, 5137, 5138, 5, 2, 0, 0, 5138, 5143, 3, 442, 221, 0, 5139, 5140, 5, 6, 0, 0, 5140, 5142, 3, 442, 221, 0, 5141, 5139, 1, 0, 0, 0, 5142, 5145, 1, 0, 0, 0, 5143, 5141, 1, 0, 0, 0, 5143, 5144, 1, 0, 0, 0, 5144, 5146, 1, 0, 0, 0, 5145, 5143, 1, 0, 0, 0, 5146, 5147, 5, 3, 0, 0, 5147, 441, 1, 0, 0, 0, 5148, 5149, 3, 824, 412, 0, 5149, 5156, 5, 10, 0, 0, 5150, 5157, 5, 407, 0, 0, 5151, 5157, 3, 388, 194, 0, 5152, 5157, 3, 834, 417, 0, 5153, 5157, 3, 726, 363, 0, 5154, 5157, 3, 202, 101, 0, 5155, 5157, 3, 808, 404, 0, 5156, 5150, 1, 0, 0, 0, 5156, 5151, 1, 0, 0, 0, 5156, 5152, 1, 0, 0, 0, 5156, 5153, 1, 0, 0, 0, 5156, 5154, 1, 0, 0, 0, 5156, 5155, 1, 0, 0, 0, 5157, 443, 1, 0, 0, 0, 5158, 5159, 5, 138, 0, 0, 5159, 5160, 5, 360, 0, 0, 5160, 5161, 3, 316, 158, 0, 5161, 5162, 5, 333, 0, 0, 5162, 5163, 3, 440, 220, 0, 5163, 445, 1, 0, 0, 0, 5164, 5165, 5, 138, 0, 0, 5165, 5166, 5, 278, 0, 0, 5166, 5167, 7, 31, 0, 0, 5167, 5168, 3, 316, 158, 0, 5168, 5169, 3, 170, 85, 0, 5169, 5170, 5, 282, 0, 0, 5170, 5171, 5, 94, 0, 0, 5171, 5172, 3, 814, 407, 0, 5172, 5239, 1, 0, 0, 0, 5173, 5200, 5, 138, 0, 0, 5174, 5175, 5, 136, 0, 0, 5175, 5201, 3, 394, 197, 0, 5176, 5177, 5, 175, 0, 0, 5177, 5201, 3, 788, 394, 0, 5178, 5179, 5, 211, 0, 0, 5179, 5201, 3, 382, 191, 0, 5180, 5182, 5, 295, 0, 0, 5181, 5180, 1, 0, 0, 0, 5181, 5182, 1, 0, 0, 0, 5182, 5183, 1, 0, 0, 0, 5183, 5184, 5, 247, 0, 0, 5184, 5201, 3, 818, 409, 0, 5185, 5186, 5, 248, 0, 0, 5186, 5187, 5, 274, 0, 0, 5187, 5201, 3, 202, 101, 0, 5188, 5189, 5, 248, 0, 0, 5189, 5190, 5, 274, 0, 0, 5190, 5201, 3, 202, 101, 0, 5191, 5192, 5, 278, 0, 0, 5192, 5201, 3, 416, 208, 0, 5193, 5194, 5, 296, 0, 0, 5194, 5201, 3, 378, 189, 0, 5195, 5196, 5, 442, 0, 0, 5196, 5201, 3, 374, 187, 0, 5197, 5198, 5, 323, 0, 0, 5198, 5201, 3, 790, 395, 0, 5199, 5201, 3, 176, 88, 0, 5200, 5174, 1, 0, 0, 0, 5200, 5176, 1, 0, 0, 0, 5200, 5178, 1, 0, 0, 0, 5200, 5181, 1, 0, 0, 0, 5200, 5185, 1, 0, 0, 0, 5200, 5188, 1, 0, 0, 0, 5200, 5191, 1, 0, 0, 0, 5200, 5193, 1, 0, 0, 0, 5200, 5195, 1, 0, 0, 0, 5200, 5197, 1, 0, 0, 0, 5200, 5199, 1, 0, 0, 0, 5201, 5202, 1, 0, 0, 0, 5202, 5203, 5, 282, 0, 0, 5203, 5204, 5, 94, 0, 0, 5204, 5205, 3, 814, 407, 0, 5205, 5239, 1, 0, 0, 0, 5206, 5215, 5, 138, 0, 0, 5207, 5208, 5, 355, 0, 0, 5208, 5209, 5, 325, 0, 0, 5209, 5216, 7, 63, 0, 0, 5210, 5216, 5, 108, 0, 0, 5211, 5216, 5, 168, 0, 0, 5212, 5216, 5, 189, 0, 0, 5213, 5216, 5, 360, 0, 0, 5214, 5216, 5, 342, 0, 0, 5215, 5207, 1, 0, 0, 0, 5215, 5210, 1, 0, 0, 0, 5215, 5211, 1, 0, 0, 0, 5215, 5212, 1, 0, 0, 0, 5215, 5213, 1, 0, 0, 0, 5215, 5214, 1, 0, 0, 0, 5216, 5217, 1, 0, 0, 0, 5217, 5218, 3, 316, 158, 0, 5218, 5219, 5, 282, 0, 0, 5219, 5220, 5, 94, 0, 0, 5220, 5221, 3, 814, 407, 0, 5221, 5239, 1, 0, 0, 0, 5222, 5231, 5, 138, 0, 0, 5223, 5232, 5, 331, 0, 0, 5224, 5225, 5, 63, 0, 0, 5225, 5226, 5, 174, 0, 0, 5226, 5232, 5, 381, 0, 0, 5227, 5228, 5, 198, 0, 0, 5228, 5232, 5, 357, 0, 0, 5229, 5232, 5, 452, 0, 0, 5230, 5232, 5, 451, 0, 0, 5231, 5223, 1, 0, 0, 0, 5231, 5224, 1, 0, 0, 0, 5231, 5227, 1, 0, 0, 0, 5231, 5229, 1, 0, 0, 0, 5231, 5230, 1, 0, 0, 0, 5232, 5233, 1, 0, 0, 0, 5233, 5234, 3, 818, 409, 0, 5234, 5235, 5, 282, 0, 0, 5235, 5236, 5, 94, 0, 0, 5236, 5237, 3, 814, 407, 0, 5237, 5239, 1, 0, 0, 0, 5238, 5164, 1, 0, 0, 0, 5238, 5173, 1, 0, 0, 0, 5238, 5206, 1, 0, 0, 0, 5238, 5222, 1, 0, 0, 0, 5239, 447, 1, 0, 0, 0, 5240, 5241, 5, 46, 0, 0, 5241, 5242, 5, 452, 0, 0, 5242, 5249, 3, 818, 409, 0, 5243, 5244, 5, 62, 0, 0, 5244, 5245, 5, 92, 0, 0, 5245, 5250, 3, 628, 314, 0, 5246, 5247, 5, 62, 0, 0, 5247, 5248, 5, 30, 0, 0, 5248, 5250, 5, 350, 0, 0, 5249, 5243, 1, 0, 0, 0, 5249, 5246, 1, 0, 0, 0, 5249, 5250, 1, 0, 0, 0, 5250, 5252, 1, 0, 0, 0, 5251, 5253, 3, 400, 200, 0, 5252, 5251, 1, 0, 0, 0, 5252, 5253, 1, 0, 0, 0, 5253, 449, 1, 0, 0, 0, 5254, 5255, 5, 138, 0, 0, 5255, 5256, 5, 452, 0, 0, 5256, 5274, 3, 818, 409, 0, 5257, 5258, 5, 282, 0, 0, 5258, 5259, 5, 94, 0, 0, 5259, 5275, 3, 814, 407, 0, 5260, 5261, 5, 333, 0, 0, 5261, 5275, 3, 284, 142, 0, 5262, 5263, 5, 309, 0, 0, 5263, 5264, 5, 94, 0, 0, 5264, 5275, 3, 818, 409, 0, 5265, 5266, 7, 34, 0, 0, 5266, 5271, 3, 626, 313, 0, 5267, 5268, 5, 6, 0, 0, 5268, 5270, 3, 626, 313, 0, 5269, 5267, 1, 0, 0, 0, 5270, 5273, 1, 0, 0, 0, 5271, 5269, 1, 0, 0, 0, 5271, 5272, 1, 0, 0, 0, 5272, 5275, 1, 0, 0, 0, 5273, 5271, 1, 0, 0, 0, 5274, 5257, 1, 0, 0, 0, 5274, 5260, 1, 0, 0, 0, 5274, 5262, 1, 0, 0, 0, 5274, 5265, 1, 0, 0, 0, 5275, 451, 1, 0, 0, 0, 5276, 5277, 5, 46, 0, 0, 5277, 5278, 5, 451, 0, 0, 5278, 5279, 3, 818, 409, 0, 5279, 5280, 5, 164, 0, 0, 5280, 5281, 3, 808, 404, 0, 5281, 5282, 5, 452, 0, 0, 5282, 5287, 3, 824, 412, 0, 5283, 5284, 5, 6, 0, 0, 5284, 5286, 3, 824, 412, 0, 5285, 5283, 1, 0, 0, 0, 5286, 5289, 1, 0, 0, 0, 5287, 5285, 1, 0, 0, 0, 5287, 5288, 1, 0, 0, 0, 5288, 5291, 1, 0, 0, 0, 5289, 5287, 1, 0, 0, 0, 5290, 5292, 3, 400, 200, 0, 5291, 5290, 1, 0, 0, 0, 5291, 5292, 1, 0, 0, 0, 5292, 453, 1, 0, 0, 0, 5293, 5294, 5, 138, 0, 0, 5294, 5295, 5, 451, 0, 0, 5295, 5296, 3, 818, 409, 0, 5296, 5297, 5, 333, 0, 0, 5297, 5298, 3, 284, 142, 0, 5298, 5350, 1, 0, 0, 0, 5299, 5300, 5, 138, 0, 0, 5300, 5301, 5, 451, 0, 0, 5301, 5302, 3, 818, 409, 0, 5302, 5303, 5, 164, 0, 0, 5303, 5304, 3, 808, 404, 0, 5304, 5350, 1, 0, 0, 0, 5305, 5306, 5, 138, 0, 0, 5306, 5307, 5, 451, 0, 0, 5307, 5308, 3, 818, 409, 0, 5308, 5309, 5, 305, 0, 0, 5309, 5311, 5, 452, 0, 0, 5310, 5312, 3, 400, 200, 0, 5311, 5310, 1, 0, 0, 0, 5311, 5312, 1, 0, 0, 0, 5312, 5350, 1, 0, 0, 0, 5313, 5314, 5, 138, 0, 0, 5314, 5315, 5, 451, 0, 0, 5315, 5316, 3, 818, 409, 0, 5316, 5317, 7, 34, 0, 0, 5317, 5318, 5, 452, 0, 0, 5318, 5323, 3, 824, 412, 0, 5319, 5320, 5, 6, 0, 0, 5320, 5322, 3, 824, 412, 0, 5321, 5319, 1, 0, 0, 0, 5322, 5325, 1, 0, 0, 0, 5323, 5321, 1, 0, 0, 0, 5323, 5324, 1, 0, 0, 0, 5324, 5327, 1, 0, 0, 0, 5325, 5323, 1, 0, 0, 0, 5326, 5328, 3, 400, 200, 0, 5327, 5326, 1, 0, 0, 0, 5327, 5328, 1, 0, 0, 0, 5328, 5350, 1, 0, 0, 0, 5329, 5330, 5, 138, 0, 0, 5330, 5331, 5, 451, 0, 0, 5331, 5332, 3, 818, 409, 0, 5332, 5333, 7, 64, 0, 0, 5333, 5350, 1, 0, 0, 0, 5334, 5335, 5, 138, 0, 0, 5335, 5336, 5, 451, 0, 0, 5336, 5337, 3, 818, 409, 0, 5337, 5338, 5, 465, 0, 0, 5338, 5339, 5, 2, 0, 0, 5339, 5340, 3, 290, 145, 0, 5340, 5341, 5, 3, 0, 0, 5341, 5350, 1, 0, 0, 0, 5342, 5343, 5, 138, 0, 0, 5343, 5344, 5, 451, 0, 0, 5344, 5345, 3, 818, 409, 0, 5345, 5346, 5, 282, 0, 0, 5346, 5347, 5, 94, 0, 0, 5347, 5348, 3, 814, 407, 0, 5348, 5350, 1, 0, 0, 0, 5349, 5293, 1, 0, 0, 0, 5349, 5299, 1, 0, 0, 0, 5349, 5305, 1, 0, 0, 0, 5349, 5313, 1, 0, 0, 0, 5349, 5329, 1, 0, 0, 0, 5349, 5334, 1, 0, 0, 0, 5349, 5342, 1, 0, 0, 0, 5350, 455, 1, 0, 0, 0, 5351, 5353, 5, 46, 0, 0, 5352, 5354, 3, 366, 183, 0, 5353, 5352, 1, 0, 0, 0, 5353, 5354, 1, 0, 0, 0, 5354, 5355, 1, 0, 0, 0, 5355, 5356, 5, 321, 0, 0, 5356, 5357, 3, 818, 409, 0, 5357, 5358, 5, 36, 0, 0, 5358, 5359, 5, 80, 0, 0, 5359, 5360, 7, 65, 0, 0, 5360, 5361, 5, 94, 0, 0, 5361, 5363, 3, 780, 390, 0, 5362, 5364, 3, 638, 319, 0, 5363, 5362, 1, 0, 0, 0, 5363, 5364, 1, 0, 0, 0, 5364, 5365, 1, 0, 0, 0, 5365, 5367, 5, 57, 0, 0, 5366, 5368, 7, 66, 0, 0, 5367, 5366, 1, 0, 0, 0, 5367, 5368, 1, 0, 0, 0, 5368, 5385, 1, 0, 0, 0, 5369, 5386, 5, 270, 0, 0, 5370, 5386, 3, 458, 229, 0, 5371, 5373, 5, 2, 0, 0, 5372, 5374, 3, 458, 229, 0, 5373, 5372, 1, 0, 0, 0, 5373, 5374, 1, 0, 0, 0, 5374, 5381, 1, 0, 0, 0, 5375, 5377, 5, 7, 0, 0, 5376, 5378, 3, 458, 229, 0, 5377, 5376, 1, 0, 0, 0, 5377, 5378, 1, 0, 0, 0, 5378, 5380, 1, 0, 0, 0, 5379, 5375, 1, 0, 0, 0, 5380, 5383, 1, 0, 0, 0, 5381, 5379, 1, 0, 0, 0, 5381, 5382, 1, 0, 0, 0, 5382, 5384, 1, 0, 0, 0, 5383, 5381, 1, 0, 0, 0, 5384, 5386, 5, 3, 0, 0, 5385, 5369, 1, 0, 0, 0, 5385, 5370, 1, 0, 0, 0, 5385, 5371, 1, 0, 0, 0, 5386, 457, 1, 0, 0, 0, 5387, 5393, 3, 560, 280, 0, 5388, 5393, 3, 538, 269, 0, 5389, 5393, 3, 552, 276, 0, 5390, 5393, 3, 548, 274, 0, 5391, 5393, 3, 460, 230, 0, 5392, 5387, 1, 0, 0, 0, 5392, 5388, 1, 0, 0, 0, 5392, 5389, 1, 0, 0, 0, 5392, 5390, 1, 0, 0, 0, 5392, 5391, 1, 0, 0, 0, 5393, 459, 1, 0, 0, 0, 5394, 5395, 5, 271, 0, 0, 5395, 5397, 3, 818, 409, 0, 5396, 5398, 3, 462, 231, 0, 5397, 5396, 1, 0, 0, 0, 5397, 5398, 1, 0, 0, 0, 5398, 461, 1, 0, 0, 0, 5399, 5400, 5, 6, 0, 0, 5400, 5401, 3, 808, 404, 0, 5401, 463, 1, 0, 0, 0, 5402, 5403, 5, 252, 0, 0, 5403, 5404, 3, 818, 409, 0, 5404, 465, 1, 0, 0, 0, 5405, 5408, 5, 366, 0, 0, 5406, 5409, 3, 818, 409, 0, 5407, 5409, 5, 9, 0, 0, 5408, 5406, 1, 0, 0, 0, 5408, 5407, 1, 0, 0, 0, 5409, 467, 1, 0, 0, 0, 5410, 5412, 5, 146, 0, 0, 5411, 5413, 3, 470, 235, 0, 5412, 5411, 1, 0, 0, 0, 5412, 5413, 1, 0, 0, 0, 5413, 5415, 1, 0, 0, 0, 5414, 5416, 3, 474, 237, 0, 5415, 5414, 1, 0, 0, 0, 5415, 5416, 1, 0, 0, 0, 5416, 5456, 1, 0, 0, 0, 5417, 5418, 5, 340, 0, 0, 5418, 5420, 5, 356, 0, 0, 5419, 5421, 3, 474, 237, 0, 5420, 5419, 1, 0, 0, 0, 5420, 5421, 1, 0, 0, 0, 5421, 5456, 1, 0, 0, 0, 5422, 5423, 5, 322, 0, 0, 5423, 5456, 3, 818, 409, 0, 5424, 5426, 5, 308, 0, 0, 5425, 5427, 5, 322, 0, 0, 5426, 5425, 1, 0, 0, 0, 5426, 5427, 1, 0, 0, 0, 5427, 5428, 1, 0, 0, 0, 5428, 5456, 3, 818, 409, 0, 5429, 5430, 5, 290, 0, 0, 5430, 5431, 5, 356, 0, 0, 5431, 5456, 3, 808, 404, 0, 5432, 5433, 7, 67, 0, 0, 5433, 5434, 5, 291, 0, 0, 5434, 5456, 3, 808, 404, 0, 5435, 5437, 7, 68, 0, 0, 5436, 5438, 3, 470, 235, 0, 5437, 5436, 1, 0, 0, 0, 5437, 5438, 1, 0, 0, 0, 5438, 5444, 1, 0, 0, 0, 5439, 5441, 5, 33, 0, 0, 5440, 5442, 5, 269, 0, 0, 5441, 5440, 1, 0, 0, 0, 5441, 5442, 1, 0, 0, 0, 5442, 5443, 1, 0, 0, 0, 5443, 5445, 5, 153, 0, 0, 5444, 5439, 1, 0, 0, 0, 5444, 5445, 1, 0, 0, 0, 5445, 5456, 1, 0, 0, 0, 5446, 5448, 5, 319, 0, 0, 5447, 5449, 3, 470, 235, 0, 5448, 5447, 1, 0, 0, 0, 5448, 5449, 1, 0, 0, 0, 5449, 5450, 1, 0, 0, 0, 5450, 5452, 5, 94, 0, 0, 5451, 5453, 5, 322, 0, 0, 5452, 5451, 1, 0, 0, 0, 5452, 5453, 1, 0, 0, 0, 5453, 5454, 1, 0, 0, 0, 5454, 5456, 3, 818, 409, 0, 5455, 5410, 1, 0, 0, 0, 5455, 5417, 1, 0, 0, 0, 5455, 5422, 1, 0, 0, 0, 5455, 5424, 1, 0, 0, 0, 5455, 5429, 1, 0, 0, 0, 5455, 5432, 1, 0, 0, 0, 5455, 5435, 1, 0, 0, 0, 5455, 5446, 1, 0, 0, 0, 5456, 469, 1, 0, 0, 0, 5457, 5458, 7, 69, 0, 0, 5458, 471, 1, 0, 0, 0, 5459, 5460, 5, 244, 0, 0, 5460, 5461, 5, 251, 0, 0, 5461, 5469, 3, 50, 25, 0, 5462, 5463, 5, 300, 0, 0, 5463, 5469, 7, 70, 0, 0, 5464, 5466, 5, 77, 0, 0, 5465, 5464, 1, 0, 0, 0, 5465, 5466, 1, 0, 0, 0, 5466, 5467, 1, 0, 0, 0, 5467, 5469, 5, 54, 0, 0, 5468, 5459, 1, 0, 0, 0, 5468, 5462, 1, 0, 0, 0, 5468, 5465, 1, 0, 0, 0, 5469, 473, 1, 0, 0, 0, 5470, 5477, 3, 472, 236, 0, 5471, 5473, 5, 6, 0, 0, 5472, 5471, 1, 0, 0, 0, 5472, 5473, 1, 0, 0, 0, 5473, 5474, 1, 0, 0, 0, 5474, 5476, 3, 472, 236, 0, 5475, 5472, 1, 0, 0, 0, 5476, 5479, 1, 0, 0, 0, 5477, 5475, 1, 0, 0, 0, 5477, 5478, 1, 0, 0, 0, 5478, 475, 1, 0, 0, 0, 5479, 5477, 1, 0, 0, 0, 5480, 5483, 5, 46, 0, 0, 5481, 5482, 5, 82, 0, 0, 5482, 5484, 5, 311, 0, 0, 5483, 5481, 1, 0, 0, 0, 5483, 5484, 1, 0, 0, 0, 5484, 5486, 1, 0, 0, 0, 5485, 5487, 3, 122, 61, 0, 5486, 5485, 1, 0, 0, 0, 5486, 5487, 1, 0, 0, 0, 5487, 5503, 1, 0, 0, 0, 5488, 5489, 5, 376, 0, 0, 5489, 5491, 3, 776, 388, 0, 5490, 5492, 3, 146, 73, 0, 5491, 5490, 1, 0, 0, 0, 5491, 5492, 1, 0, 0, 0, 5492, 5494, 1, 0, 0, 0, 5493, 5495, 3, 102, 51, 0, 5494, 5493, 1, 0, 0, 0, 5494, 5495, 1, 0, 0, 0, 5495, 5504, 1, 0, 0, 0, 5496, 5497, 5, 303, 0, 0, 5497, 5498, 5, 376, 0, 0, 5498, 5499, 3, 776, 388, 0, 5499, 5501, 3, 144, 72, 0, 5500, 5502, 3, 102, 51, 0, 5501, 5500, 1, 0, 0, 0, 5501, 5502, 1, 0, 0, 0, 5502, 5504, 1, 0, 0, 0, 5503, 5488, 1, 0, 0, 0, 5503, 5496, 1, 0, 0, 0, 5504, 5505, 1, 0, 0, 0, 5505, 5506, 5, 36, 0, 0, 5506, 5513, 3, 560, 280, 0, 5507, 5509, 5, 105, 0, 0, 5508, 5510, 7, 71, 0, 0, 5509, 5508, 1, 0, 0, 0, 5509, 5510, 1, 0, 0, 0, 5510, 5511, 1, 0, 0, 0, 5511, 5512, 5, 42, 0, 0, 5512, 5514, 5, 279, 0, 0, 5513, 5507, 1, 0, 0, 0, 5513, 5514, 1, 0, 0, 0, 5514, 477, 1, 0, 0, 0, 5515, 5516, 5, 253, 0, 0, 5516, 5517, 3, 808, 404, 0, 5517, 479, 1, 0, 0, 0, 5518, 5519, 5, 46, 0, 0, 5519, 5520, 5, 175, 0, 0, 5520, 5522, 3, 786, 393, 0, 5521, 5523, 5, 105, 0, 0, 5522, 5521, 1, 0, 0, 0, 5522, 5523, 1, 0, 0, 0, 5523, 5529, 1, 0, 0, 0, 5524, 5526, 3, 482, 241, 0, 5525, 5524, 1, 0, 0, 0, 5526, 5527, 1, 0, 0, 0, 5527, 5525, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 5530, 1, 0, 0, 0, 5529, 5525, 1, 0, 0, 0, 5529, 5530, 1, 0, 0, 0, 5530, 481, 1, 0, 0, 0, 5531, 5532, 5, 164, 0, 0, 5532, 5540, 5, 74, 0, 0, 5533, 5540, 5, 194, 0, 0, 5534, 5540, 5, 255, 0, 0, 5535, 5540, 5, 282, 0, 0, 5536, 5540, 5, 351, 0, 0, 5537, 5540, 5, 353, 0, 0, 5538, 5540, 3, 826, 413, 0, 5539, 5531, 1, 0, 0, 0, 5539, 5533, 1, 0, 0, 0, 5539, 5534, 1, 0, 0, 0, 5539, 5535, 1, 0, 0, 0, 5539, 5536, 1, 0, 0, 0, 5539, 5537, 1, 0, 0, 0, 5539, 5538, 1, 0, 0, 0, 5540, 5542, 1, 0, 0, 0, 5541, 5543, 5, 10, 0, 0, 5542, 5541, 1, 0, 0, 0, 5542, 5543, 1, 0, 0, 0, 5543, 5547, 1, 0, 0, 0, 5544, 5548, 3, 812, 406, 0, 5545, 5548, 3, 54, 27, 0, 5546, 5548, 5, 53, 0, 0, 5547, 5544, 1, 0, 0, 0, 5547, 5545, 1, 0, 0, 0, 5547, 5546, 1, 0, 0, 0, 5548, 483, 1, 0, 0, 0, 5549, 5550, 5, 138, 0, 0, 5550, 5551, 5, 175, 0, 0, 5551, 5567, 3, 788, 394, 0, 5552, 5553, 5, 333, 0, 0, 5553, 5554, 5, 351, 0, 0, 5554, 5556, 3, 768, 384, 0, 5555, 5552, 1, 0, 0, 0, 5555, 5556, 1, 0, 0, 0, 5556, 5568, 1, 0, 0, 0, 5557, 5559, 5, 105, 0, 0, 5558, 5557, 1, 0, 0, 0, 5558, 5559, 1, 0, 0, 0, 5559, 5561, 1, 0, 0, 0, 5560, 5562, 3, 482, 241, 0, 5561, 5560, 1, 0, 0, 0, 5562, 5563, 1, 0, 0, 0, 5563, 5561, 1, 0, 0, 0, 5563, 5564, 1, 0, 0, 0, 5564, 5566, 1, 0, 0, 0, 5565, 5558, 1, 0, 0, 0, 5565, 5566, 1, 0, 0, 0, 5566, 5568, 1, 0, 0, 0, 5567, 5555, 1, 0, 0, 0, 5567, 5565, 1, 0, 0, 0, 5568, 485, 1, 0, 0, 0, 5569, 5570, 5, 138, 0, 0, 5570, 5571, 5, 175, 0, 0, 5571, 5573, 3, 788, 394, 0, 5572, 5574, 3, 64, 32, 0, 5573, 5572, 1, 0, 0, 0, 5573, 5574, 1, 0, 0, 0, 5574, 487, 1, 0, 0, 0, 5575, 5576, 5, 138, 0, 0, 5576, 5577, 5, 108, 0, 0, 5577, 5578, 3, 316, 158, 0, 5578, 5579, 5, 305, 0, 0, 5579, 5580, 5, 375, 0, 0, 5580, 489, 1, 0, 0, 0, 5581, 5582, 5, 138, 0, 0, 5582, 5583, 5, 349, 0, 0, 5583, 5584, 7, 16, 0, 0, 5584, 5585, 3, 40, 20, 0, 5585, 491, 1, 0, 0, 0, 5586, 5587, 5, 46, 0, 0, 5587, 5588, 5, 189, 0, 0, 5588, 5590, 3, 316, 158, 0, 5589, 5591, 5, 36, 0, 0, 5590, 5589, 1, 0, 0, 0, 5590, 5591, 1, 0, 0, 0, 5591, 5592, 1, 0, 0, 0, 5592, 5596, 3, 652, 326, 0, 5593, 5595, 3, 134, 67, 0, 5594, 5593, 1, 0, 0, 0, 5595, 5598, 1, 0, 0, 0, 5596, 5594, 1, 0, 0, 0, 5596, 5597, 1, 0, 0, 0, 5597, 493, 1, 0, 0, 0, 5598, 5596, 1, 0, 0, 0, 5599, 5600, 5, 138, 0, 0, 5600, 5601, 5, 189, 0, 0, 5601, 5624, 3, 316, 158, 0, 5602, 5625, 3, 94, 47, 0, 5603, 5604, 7, 15, 0, 0, 5604, 5605, 5, 77, 0, 0, 5605, 5625, 5, 78, 0, 0, 5606, 5609, 5, 133, 0, 0, 5607, 5608, 5, 45, 0, 0, 5608, 5610, 3, 818, 409, 0, 5609, 5607, 1, 0, 0, 0, 5609, 5610, 1, 0, 0, 0, 5610, 5611, 1, 0, 0, 0, 5611, 5625, 3, 142, 71, 0, 5612, 5613, 5, 191, 0, 0, 5613, 5615, 5, 45, 0, 0, 5614, 5616, 3, 422, 211, 0, 5615, 5614, 1, 0, 0, 0, 5615, 5616, 1, 0, 0, 0, 5616, 5617, 1, 0, 0, 0, 5617, 5619, 3, 818, 409, 0, 5618, 5620, 3, 96, 48, 0, 5619, 5618, 1, 0, 0, 0, 5619, 5620, 1, 0, 0, 0, 5620, 5625, 1, 0, 0, 0, 5621, 5622, 5, 372, 0, 0, 5622, 5623, 5, 45, 0, 0, 5623, 5625, 3, 818, 409, 0, 5624, 5602, 1, 0, 0, 0, 5624, 5603, 1, 0, 0, 0, 5624, 5606, 1, 0, 0, 0, 5624, 5612, 1, 0, 0, 0, 5624, 5621, 1, 0, 0, 0, 5625, 495, 1, 0, 0, 0, 5626, 5627, 5, 138, 0, 0, 5627, 5628, 5, 355, 0, 0, 5628, 5629, 5, 325, 0, 0, 5629, 5630, 5, 185, 0, 0, 5630, 5631, 3, 316, 158, 0, 5631, 5632, 3, 284, 142, 0, 5632, 497, 1, 0, 0, 0, 5633, 5634, 5, 138, 0, 0, 5634, 5635, 5, 355, 0, 0, 5635, 5636, 5, 325, 0, 0, 5636, 5637, 5, 163, 0, 0, 5637, 5638, 3, 316, 158, 0, 5638, 5639, 7, 72, 0, 0, 5639, 5640, 5, 257, 0, 0, 5640, 5641, 5, 62, 0, 0, 5641, 5642, 3, 784, 392, 0, 5642, 5643, 5, 105, 0, 0, 5643, 5644, 3, 314, 157, 0, 5644, 5675, 1, 0, 0, 0, 5645, 5646, 5, 138, 0, 0, 5646, 5647, 5, 355, 0, 0, 5647, 5648, 5, 325, 0, 0, 5648, 5649, 5, 163, 0, 0, 5649, 5650, 3, 316, 158, 0, 5650, 5651, 5, 138, 0, 0, 5651, 5654, 5, 257, 0, 0, 5652, 5653, 5, 62, 0, 0, 5653, 5655, 3, 784, 392, 0, 5654, 5652, 1, 0, 0, 0, 5654, 5655, 1, 0, 0, 0, 5655, 5656, 1, 0, 0, 0, 5656, 5657, 5, 311, 0, 0, 5657, 5658, 3, 316, 158, 0, 5658, 5659, 5, 105, 0, 0, 5659, 5660, 3, 316, 158, 0, 5660, 5675, 1, 0, 0, 0, 5661, 5662, 5, 138, 0, 0, 5662, 5663, 5, 355, 0, 0, 5663, 5664, 5, 325, 0, 0, 5664, 5665, 5, 163, 0, 0, 5665, 5666, 3, 316, 158, 0, 5666, 5667, 5, 191, 0, 0, 5667, 5669, 5, 257, 0, 0, 5668, 5670, 3, 422, 211, 0, 5669, 5668, 1, 0, 0, 0, 5669, 5670, 1, 0, 0, 0, 5670, 5671, 1, 0, 0, 0, 5671, 5672, 5, 62, 0, 0, 5672, 5673, 3, 784, 392, 0, 5673, 5675, 1, 0, 0, 0, 5674, 5633, 1, 0, 0, 0, 5674, 5645, 1, 0, 0, 0, 5674, 5661, 1, 0, 0, 0, 5675, 499, 1, 0, 0, 0, 5676, 5678, 5, 46, 0, 0, 5677, 5679, 5, 53, 0, 0, 5678, 5677, 1, 0, 0, 0, 5678, 5679, 1, 0, 0, 0, 5679, 5680, 1, 0, 0, 0, 5680, 5681, 5, 168, 0, 0, 5681, 5682, 3, 316, 158, 0, 5682, 5683, 5, 62, 0, 0, 5683, 5684, 3, 808, 404, 0, 5684, 5685, 5, 94, 0, 0, 5685, 5686, 3, 808, 404, 0, 5686, 5687, 5, 64, 0, 0, 5687, 5688, 3, 316, 158, 0, 5688, 501, 1, 0, 0, 0, 5689, 5691, 5, 158, 0, 0, 5690, 5692, 3, 514, 257, 0, 5691, 5690, 1, 0, 0, 0, 5691, 5692, 1, 0, 0, 0, 5692, 5697, 1, 0, 0, 0, 5693, 5695, 3, 774, 387, 0, 5694, 5696, 3, 170, 85, 0, 5695, 5694, 1, 0, 0, 0, 5695, 5696, 1, 0, 0, 0, 5696, 5698, 1, 0, 0, 0, 5697, 5693, 1, 0, 0, 0, 5697, 5698, 1, 0, 0, 0, 5698, 5715, 1, 0, 0, 0, 5699, 5700, 5, 158, 0, 0, 5700, 5701, 5, 2, 0, 0, 5701, 5706, 3, 514, 257, 0, 5702, 5703, 5, 6, 0, 0, 5703, 5705, 3, 514, 257, 0, 5704, 5702, 1, 0, 0, 0, 5705, 5708, 1, 0, 0, 0, 5706, 5704, 1, 0, 0, 0, 5706, 5707, 1, 0, 0, 0, 5707, 5709, 1, 0, 0, 0, 5708, 5706, 1, 0, 0, 0, 5709, 5710, 5, 3, 0, 0, 5710, 5712, 3, 774, 387, 0, 5711, 5713, 3, 170, 85, 0, 5712, 5711, 1, 0, 0, 0, 5712, 5713, 1, 0, 0, 0, 5713, 5715, 1, 0, 0, 0, 5714, 5689, 1, 0, 0, 0, 5714, 5699, 1, 0, 0, 0, 5715, 503, 1, 0, 0, 0, 5716, 5732, 5, 370, 0, 0, 5717, 5719, 5, 113, 0, 0, 5718, 5717, 1, 0, 0, 0, 5718, 5719, 1, 0, 0, 0, 5719, 5721, 1, 0, 0, 0, 5720, 5722, 5, 112, 0, 0, 5721, 5720, 1, 0, 0, 0, 5721, 5722, 1, 0, 0, 0, 5722, 5724, 1, 0, 0, 0, 5723, 5725, 3, 514, 257, 0, 5724, 5723, 1, 0, 0, 0, 5724, 5725, 1, 0, 0, 0, 5725, 5727, 1, 0, 0, 0, 5726, 5728, 3, 508, 254, 0, 5727, 5726, 1, 0, 0, 0, 5727, 5728, 1, 0, 0, 0, 5728, 5733, 1, 0, 0, 0, 5729, 5731, 3, 524, 262, 0, 5730, 5729, 1, 0, 0, 0, 5730, 5731, 1, 0, 0, 0, 5731, 5733, 1, 0, 0, 0, 5732, 5718, 1, 0, 0, 0, 5732, 5730, 1, 0, 0, 0, 5733, 5735, 1, 0, 0, 0, 5734, 5736, 3, 518, 259, 0, 5735, 5734, 1, 0, 0, 0, 5735, 5736, 1, 0, 0, 0, 5736, 505, 1, 0, 0, 0, 5737, 5752, 3, 508, 254, 0, 5738, 5740, 3, 514, 257, 0, 5739, 5738, 1, 0, 0, 0, 5739, 5740, 1, 0, 0, 0, 5740, 5753, 1, 0, 0, 0, 5741, 5742, 5, 2, 0, 0, 5742, 5747, 3, 512, 256, 0, 5743, 5744, 5, 6, 0, 0, 5744, 5746, 3, 512, 256, 0, 5745, 5743, 1, 0, 0, 0, 5746, 5749, 1, 0, 0, 0, 5747, 5745, 1, 0, 0, 0, 5747, 5748, 1, 0, 0, 0, 5748, 5750, 1, 0, 0, 0, 5749, 5747, 1, 0, 0, 0, 5750, 5751, 5, 3, 0, 0, 5751, 5753, 1, 0, 0, 0, 5752, 5739, 1, 0, 0, 0, 5752, 5741, 1, 0, 0, 0, 5753, 5755, 1, 0, 0, 0, 5754, 5756, 3, 518, 259, 0, 5755, 5754, 1, 0, 0, 0, 5755, 5756, 1, 0, 0, 0, 5756, 507, 1, 0, 0, 0, 5757, 5758, 7, 73, 0, 0, 5758, 509, 1, 0, 0, 0, 5759, 5762, 3, 822, 411, 0, 5760, 5762, 3, 508, 254, 0, 5761, 5759, 1, 0, 0, 0, 5761, 5760, 1, 0, 0, 0, 5762, 5765, 1, 0, 0, 0, 5763, 5766, 3, 54, 27, 0, 5764, 5766, 3, 202, 101, 0, 5765, 5763, 1, 0, 0, 0, 5765, 5764, 1, 0, 0, 0, 5765, 5766, 1, 0, 0, 0, 5766, 511, 1, 0, 0, 0, 5767, 5769, 7, 74, 0, 0, 5768, 5770, 7, 75, 0, 0, 5769, 5768, 1, 0, 0, 0, 5769, 5770, 1, 0, 0, 0, 5770, 5777, 1, 0, 0, 0, 5771, 5774, 5, 548, 0, 0, 5772, 5775, 3, 202, 101, 0, 5773, 5775, 3, 808, 404, 0, 5774, 5772, 1, 0, 0, 0, 5774, 5773, 1, 0, 0, 0, 5775, 5777, 1, 0, 0, 0, 5776, 5767, 1, 0, 0, 0, 5776, 5771, 1, 0, 0, 0, 5777, 513, 1, 0, 0, 0, 5778, 5780, 5, 128, 0, 0, 5779, 5781, 7, 75, 0, 0, 5780, 5779, 1, 0, 0, 0, 5780, 5781, 1, 0, 0, 0, 5781, 515, 1, 0, 0, 0, 5782, 5784, 3, 774, 387, 0, 5783, 5785, 3, 144, 72, 0, 5784, 5783, 1, 0, 0, 0, 5784, 5785, 1, 0, 0, 0, 5785, 517, 1, 0, 0, 0, 5786, 5791, 3, 516, 258, 0, 5787, 5788, 5, 6, 0, 0, 5788, 5790, 3, 516, 258, 0, 5789, 5787, 1, 0, 0, 0, 5790, 5793, 1, 0, 0, 0, 5791, 5789, 1, 0, 0, 0, 5791, 5792, 1, 0, 0, 0, 5792, 519, 1, 0, 0, 0, 5793, 5791, 1, 0, 0, 0, 5794, 5805, 5, 203, 0, 0, 5795, 5806, 3, 524, 262, 0, 5796, 5798, 5, 128, 0, 0, 5797, 5796, 1, 0, 0, 0, 5797, 5798, 1, 0, 0, 0, 5798, 5806, 1, 0, 0, 0, 5799, 5801, 3, 508, 254, 0, 5800, 5802, 3, 514, 257, 0, 5801, 5800, 1, 0, 0, 0, 5801, 5802, 1, 0, 0, 0, 5802, 5804, 1, 0, 0, 0, 5803, 5799, 1, 0, 0, 0, 5803, 5804, 1, 0, 0, 0, 5804, 5806, 1, 0, 0, 0, 5805, 5795, 1, 0, 0, 0, 5805, 5797, 1, 0, 0, 0, 5805, 5803, 1, 0, 0, 0, 5806, 5807, 1, 0, 0, 0, 5807, 5808, 3, 522, 261, 0, 5808, 521, 1, 0, 0, 0, 5809, 5819, 3, 560, 280, 0, 5810, 5819, 3, 538, 269, 0, 5811, 5819, 3, 552, 276, 0, 5812, 5819, 3, 548, 274, 0, 5813, 5819, 3, 558, 279, 0, 5814, 5819, 3, 186, 93, 0, 5815, 5819, 3, 192, 96, 0, 5816, 5819, 3, 194, 97, 0, 5817, 5819, 3, 532, 266, 0, 5818, 5809, 1, 0, 0, 0, 5818, 5810, 1, 0, 0, 0, 5818, 5811, 1, 0, 0, 0, 5818, 5812, 1, 0, 0, 0, 5818, 5813, 1, 0, 0, 0, 5818, 5814, 1, 0, 0, 0, 5818, 5815, 1, 0, 0, 0, 5818, 5816, 1, 0, 0, 0, 5818, 5817, 1, 0, 0, 0, 5819, 523, 1, 0, 0, 0, 5820, 5821, 5, 2, 0, 0, 5821, 5826, 3, 510, 255, 0, 5822, 5823, 5, 6, 0, 0, 5823, 5825, 3, 510, 255, 0, 5824, 5822, 1, 0, 0, 0, 5825, 5828, 1, 0, 0, 0, 5826, 5824, 1, 0, 0, 0, 5826, 5827, 1, 0, 0, 0, 5827, 5829, 1, 0, 0, 0, 5828, 5826, 1, 0, 0, 0, 5829, 5830, 5, 3, 0, 0, 5830, 525, 1, 0, 0, 0, 5831, 5832, 5, 290, 0, 0, 5832, 5834, 3, 818, 409, 0, 5833, 5835, 3, 528, 264, 0, 5834, 5833, 1, 0, 0, 0, 5834, 5835, 1, 0, 0, 0, 5835, 5836, 1, 0, 0, 0, 5836, 5837, 5, 36, 0, 0, 5837, 5838, 3, 530, 265, 0, 5838, 527, 1, 0, 0, 0, 5839, 5840, 5, 2, 0, 0, 5840, 5845, 3, 652, 326, 0, 5841, 5842, 5, 6, 0, 0, 5842, 5844, 3, 652, 326, 0, 5843, 5841, 1, 0, 0, 0, 5844, 5847, 1, 0, 0, 0, 5845, 5843, 1, 0, 0, 0, 5845, 5846, 1, 0, 0, 0, 5846, 5848, 1, 0, 0, 0, 5847, 5845, 1, 0, 0, 0, 5848, 5849, 5, 3, 0, 0, 5849, 529, 1, 0, 0, 0, 5850, 5855, 3, 560, 280, 0, 5851, 5855, 3, 538, 269, 0, 5852, 5855, 3, 552, 276, 0, 5853, 5855, 3, 548, 274, 0, 5854, 5850, 1, 0, 0, 0, 5854, 5851, 1, 0, 0, 0, 5854, 5852, 1, 0, 0, 0, 5854, 5853, 1, 0, 0, 0, 5855, 531, 1, 0, 0, 0, 5856, 5857, 5, 202, 0, 0, 5857, 5859, 3, 818, 409, 0, 5858, 5860, 3, 534, 267, 0, 5859, 5858, 1, 0, 0, 0, 5859, 5860, 1, 0, 0, 0, 5860, 5880, 1, 0, 0, 0, 5861, 5863, 5, 46, 0, 0, 5862, 5864, 3, 122, 61, 0, 5863, 5862, 1, 0, 0, 0, 5863, 5864, 1, 0, 0, 0, 5864, 5865, 1, 0, 0, 0, 5865, 5867, 5, 92, 0, 0, 5866, 5868, 3, 294, 147, 0, 5867, 5866, 1, 0, 0, 0, 5867, 5868, 1, 0, 0, 0, 5868, 5869, 1, 0, 0, 0, 5869, 5870, 3, 188, 94, 0, 5870, 5871, 5, 36, 0, 0, 5871, 5872, 5, 202, 0, 0, 5872, 5874, 3, 818, 409, 0, 5873, 5875, 3, 534, 267, 0, 5874, 5873, 1, 0, 0, 0, 5874, 5875, 1, 0, 0, 0, 5875, 5877, 1, 0, 0, 0, 5876, 5878, 3, 190, 95, 0, 5877, 5876, 1, 0, 0, 0, 5877, 5878, 1, 0, 0, 0, 5878, 5880, 1, 0, 0, 0, 5879, 5856, 1, 0, 0, 0, 5879, 5861, 1, 0, 0, 0, 5880, 533, 1, 0, 0, 0, 5881, 5882, 5, 2, 0, 0, 5882, 5883, 3, 730, 365, 0, 5883, 5884, 5, 3, 0, 0, 5884, 535, 1, 0, 0, 0, 5885, 5887, 5, 177, 0, 0, 5886, 5888, 5, 290, 0, 0, 5887, 5886, 1, 0, 0, 0, 5887, 5888, 1, 0, 0, 0, 5888, 5891, 1, 0, 0, 0, 5889, 5892, 3, 818, 409, 0, 5890, 5892, 5, 30, 0, 0, 5891, 5889, 1, 0, 0, 0, 5891, 5890, 1, 0, 0, 0, 5892, 537, 1, 0, 0, 0, 5893, 5895, 3, 572, 286, 0, 5894, 5893, 1, 0, 0, 0, 5894, 5895, 1, 0, 0, 0, 5895, 5896, 1, 0, 0, 0, 5896, 5897, 5, 241, 0, 0, 5897, 5898, 5, 71, 0, 0, 5898, 5901, 3, 774, 387, 0, 5899, 5900, 5, 36, 0, 0, 5900, 5902, 3, 818, 409, 0, 5901, 5899, 1, 0, 0, 0, 5901, 5902, 1, 0, 0, 0, 5902, 5903, 1, 0, 0, 0, 5903, 5925, 3, 540, 270, 0, 5904, 5905, 5, 80, 0, 0, 5905, 5913, 5, 464, 0, 0, 5906, 5908, 3, 360, 180, 0, 5907, 5909, 3, 638, 319, 0, 5908, 5907, 1, 0, 0, 0, 5908, 5909, 1, 0, 0, 0, 5909, 5914, 1, 0, 0, 0, 5910, 5911, 5, 80, 0, 0, 5911, 5912, 5, 45, 0, 0, 5912, 5914, 3, 818, 409, 0, 5913, 5906, 1, 0, 0, 0, 5913, 5910, 1, 0, 0, 0, 5913, 5914, 1, 0, 0, 0, 5914, 5915, 1, 0, 0, 0, 5915, 5923, 5, 57, 0, 0, 5916, 5917, 5, 369, 0, 0, 5917, 5918, 5, 333, 0, 0, 5918, 5920, 3, 554, 277, 0, 5919, 5921, 3, 638, 319, 0, 5920, 5919, 1, 0, 0, 0, 5920, 5921, 1, 0, 0, 0, 5921, 5924, 1, 0, 0, 0, 5922, 5924, 5, 270, 0, 0, 5923, 5916, 1, 0, 0, 0, 5923, 5922, 1, 0, 0, 0, 5924, 5926, 1, 0, 0, 0, 5925, 5904, 1, 0, 0, 0, 5925, 5926, 1, 0, 0, 0, 5926, 5928, 1, 0, 0, 0, 5927, 5929, 3, 546, 273, 0, 5928, 5927, 1, 0, 0, 0, 5928, 5929, 1, 0, 0, 0, 5929, 539, 1, 0, 0, 0, 5930, 5931, 5, 2, 0, 0, 5931, 5932, 3, 542, 271, 0, 5932, 5933, 5, 3, 0, 0, 5933, 5935, 1, 0, 0, 0, 5934, 5930, 1, 0, 0, 0, 5934, 5935, 1, 0, 0, 0, 5935, 5939, 1, 0, 0, 0, 5936, 5937, 5, 463, 0, 0, 5937, 5938, 7, 76, 0, 0, 5938, 5940, 5, 450, 0, 0, 5939, 5936, 1, 0, 0, 0, 5939, 5940, 1, 0, 0, 0, 5940, 5943, 1, 0, 0, 0, 5941, 5944, 3, 910, 455, 0, 5942, 5944, 3, 560, 280, 0, 5943, 5941, 1, 0, 0, 0, 5943, 5942, 1, 0, 0, 0, 5944, 541, 1, 0, 0, 0, 5945, 5950, 3, 544, 272, 0, 5946, 5947, 5, 6, 0, 0, 5947, 5949, 3, 544, 272, 0, 5948, 5946, 1, 0, 0, 0, 5949, 5952, 1, 0, 0, 0, 5950, 5948, 1, 0, 0, 0, 5950, 5951, 1, 0, 0, 0, 5951, 543, 1, 0, 0, 0, 5952, 5950, 1, 0, 0, 0, 5953, 5954, 3, 800, 400, 0, 5954, 5955, 3, 754, 377, 0, 5955, 545, 1, 0, 0, 0, 5956, 5957, 5, 87, 0, 0, 5957, 5958, 3, 756, 378, 0, 5958, 547, 1, 0, 0, 0, 5959, 5961, 3, 572, 286, 0, 5960, 5959, 1, 0, 0, 0, 5960, 5961, 1, 0, 0, 0, 5961, 5962, 1, 0, 0, 0, 5962, 5963, 5, 182, 0, 0, 5963, 5964, 5, 64, 0, 0, 5964, 5967, 3, 630, 315, 0, 5965, 5966, 5, 100, 0, 0, 5966, 5968, 3, 612, 306, 0, 5967, 5965, 1, 0, 0, 0, 5967, 5968, 1, 0, 0, 0, 5968, 5970, 1, 0, 0, 0, 5969, 5971, 3, 640, 320, 0, 5970, 5969, 1, 0, 0, 0, 5970, 5971, 1, 0, 0, 0, 5971, 5973, 1, 0, 0, 0, 5972, 5974, 3, 546, 273, 0, 5973, 5972, 1, 0, 0, 0, 5973, 5974, 1, 0, 0, 0, 5974, 549, 1, 0, 0, 0, 5975, 5977, 5, 256, 0, 0, 5976, 5978, 5, 92, 0, 0, 5977, 5976, 1, 0, 0, 0, 5977, 5978, 1, 0, 0, 0, 5978, 5979, 1, 0, 0, 0, 5979, 5994, 3, 628, 314, 0, 5980, 5991, 5, 68, 0, 0, 5981, 5982, 7, 77, 0, 0, 5982, 5992, 7, 78, 0, 0, 5983, 5988, 5, 334, 0, 0, 5984, 5985, 5, 369, 0, 0, 5985, 5989, 5, 201, 0, 0, 5986, 5987, 5, 414, 0, 0, 5987, 5989, 5, 201, 0, 0, 5988, 5984, 1, 0, 0, 0, 5988, 5986, 1, 0, 0, 0, 5988, 5989, 1, 0, 0, 0, 5989, 5992, 1, 0, 0, 0, 5990, 5992, 5, 201, 0, 0, 5991, 5981, 1, 0, 0, 0, 5991, 5983, 1, 0, 0, 0, 5991, 5990, 1, 0, 0, 0, 5992, 5993, 1, 0, 0, 0, 5993, 5995, 5, 263, 0, 0, 5994, 5980, 1, 0, 0, 0, 5994, 5995, 1, 0, 0, 0, 5995, 5997, 1, 0, 0, 0, 5996, 5998, 5, 272, 0, 0, 5997, 5996, 1, 0, 0, 0, 5997, 5998, 1, 0, 0, 0, 5998, 551, 1, 0, 0, 0, 5999, 6001, 3, 572, 286, 0, 6000, 5999, 1, 0, 0, 0, 6000, 6001, 1, 0, 0, 0, 6001, 6002, 1, 0, 0, 0, 6002, 6003, 5, 369, 0, 0, 6003, 6004, 3, 630, 315, 0, 6004, 6005, 5, 333, 0, 0, 6005, 6007, 3, 554, 277, 0, 6006, 6008, 3, 610, 305, 0, 6007, 6006, 1, 0, 0, 0, 6007, 6008, 1, 0, 0, 0, 6008, 6010, 1, 0, 0, 0, 6009, 6011, 3, 640, 320, 0, 6010, 6009, 1, 0, 0, 0, 6010, 6011, 1, 0, 0, 0, 6011, 6013, 1, 0, 0, 0, 6012, 6014, 3, 546, 273, 0, 6013, 6012, 1, 0, 0, 0, 6013, 6014, 1, 0, 0, 0, 6014, 553, 1, 0, 0, 0, 6015, 6020, 3, 556, 278, 0, 6016, 6017, 5, 6, 0, 0, 6017, 6019, 3, 556, 278, 0, 6018, 6016, 1, 0, 0, 0, 6019, 6022, 1, 0, 0, 0, 6020, 6018, 1, 0, 0, 0, 6020, 6021, 1, 0, 0, 0, 6021, 555, 1, 0, 0, 0, 6022, 6020, 1, 0, 0, 0, 6023, 6024, 3, 544, 272, 0, 6024, 6025, 5, 10, 0, 0, 6025, 6026, 3, 674, 337, 0, 6026, 6042, 1, 0, 0, 0, 6027, 6028, 5, 2, 0, 0, 6028, 6029, 3, 542, 271, 0, 6029, 6030, 5, 3, 0, 0, 6030, 6039, 5, 10, 0, 0, 6031, 6033, 5, 414, 0, 0, 6032, 6031, 1, 0, 0, 0, 6032, 6033, 1, 0, 0, 0, 6033, 6034, 1, 0, 0, 0, 6034, 6040, 3, 674, 337, 0, 6035, 6036, 5, 2, 0, 0, 6036, 6037, 3, 566, 283, 0, 6037, 6038, 5, 3, 0, 0, 6038, 6040, 1, 0, 0, 0, 6039, 6032, 1, 0, 0, 0, 6039, 6035, 1, 0, 0, 0, 6040, 6042, 1, 0, 0, 0, 6041, 6023, 1, 0, 0, 0, 6041, 6027, 1, 0, 0, 0, 6042, 557, 1, 0, 0, 0, 6043, 6044, 5, 178, 0, 0, 6044, 6053, 3, 818, 409, 0, 6045, 6047, 5, 269, 0, 0, 6046, 6045, 1, 0, 0, 0, 6046, 6047, 1, 0, 0, 0, 6047, 6048, 1, 0, 0, 0, 6048, 6052, 5, 324, 0, 0, 6049, 6052, 5, 107, 0, 0, 6050, 6052, 5, 240, 0, 0, 6051, 6046, 1, 0, 0, 0, 6051, 6049, 1, 0, 0, 0, 6051, 6050, 1, 0, 0, 0, 6052, 6055, 1, 0, 0, 0, 6053, 6051, 1, 0, 0, 0, 6053, 6054, 1, 0, 0, 0, 6054, 6056, 1, 0, 0, 0, 6055, 6053, 1, 0, 0, 0, 6056, 6059, 5, 172, 0, 0, 6057, 6058, 7, 26, 0, 0, 6058, 6060, 5, 217, 0, 0, 6059, 6057, 1, 0, 0, 0, 6059, 6060, 1, 0, 0, 0, 6060, 6061, 1, 0, 0, 0, 6061, 6062, 5, 62, 0, 0, 6062, 6063, 3, 560, 280, 0, 6063, 559, 1, 0, 0, 0, 6064, 6067, 3, 564, 282, 0, 6065, 6067, 3, 562, 281, 0, 6066, 6064, 1, 0, 0, 0, 6066, 6065, 1, 0, 0, 0, 6067, 561, 1, 0, 0, 0, 6068, 6071, 5, 2, 0, 0, 6069, 6072, 3, 564, 282, 0, 6070, 6072, 3, 562, 281, 0, 6071, 6069, 1, 0, 0, 0, 6071, 6070, 1, 0, 0, 0, 6072, 6073, 1, 0, 0, 0, 6073, 6074, 5, 3, 0, 0, 6074, 563, 1, 0, 0, 0, 6075, 6077, 3, 572, 286, 0, 6076, 6075, 1, 0, 0, 0, 6076, 6077, 1, 0, 0, 0, 6077, 6078, 1, 0, 0, 0, 6078, 6080, 3, 566, 283, 0, 6079, 6081, 3, 586, 293, 0, 6080, 6079, 1, 0, 0, 0, 6080, 6081, 1, 0, 0, 0, 6081, 6090, 1, 0, 0, 0, 6082, 6084, 3, 606, 303, 0, 6083, 6085, 3, 590, 295, 0, 6084, 6083, 1, 0, 0, 0, 6084, 6085, 1, 0, 0, 0, 6085, 6091, 1, 0, 0, 0, 6086, 6088, 3, 590, 295, 0, 6087, 6089, 3, 606, 303, 0, 6088, 6087, 1, 0, 0, 0, 6088, 6089, 1, 0, 0, 0, 6089, 6091, 1, 0, 0, 0, 6090, 6082, 1, 0, 0, 0, 6090, 6086, 1, 0, 0, 0, 6090, 6091, 1, 0, 0, 0, 6091, 565, 1, 0, 0, 0, 6092, 6095, 3, 568, 284, 0, 6093, 6095, 3, 562, 281, 0, 6094, 6092, 1, 0, 0, 0, 6094, 6093, 1, 0, 0, 0, 6095, 567, 1, 0, 0, 0, 6096, 6106, 5, 88, 0, 0, 6097, 6099, 5, 30, 0, 0, 6098, 6097, 1, 0, 0, 0, 6098, 6099, 1, 0, 0, 0, 6099, 6101, 1, 0, 0, 0, 6100, 6102, 3, 580, 290, 0, 6101, 6100, 1, 0, 0, 0, 6101, 6102, 1, 0, 0, 0, 6102, 6107, 1, 0, 0, 0, 6103, 6105, 3, 584, 292, 0, 6104, 6103, 1, 0, 0, 0, 6104, 6105, 1, 0, 0, 0, 6105, 6107, 1, 0, 0, 0, 6106, 6098, 1, 0, 0, 0, 6106, 6104, 1, 0, 0, 0, 6107, 6108, 1, 0, 0, 0, 6108, 6119, 3, 932, 466, 0, 6109, 6119, 3, 608, 304, 0, 6110, 6111, 5, 92, 0, 0, 6111, 6119, 3, 624, 312, 0, 6112, 6113, 3, 562, 281, 0, 6113, 6116, 3, 570, 285, 0, 6114, 6117, 3, 568, 284, 0, 6115, 6117, 3, 562, 281, 0, 6116, 6114, 1, 0, 0, 0, 6116, 6115, 1, 0, 0, 0, 6117, 6119, 1, 0, 0, 0, 6118, 6096, 1, 0, 0, 0, 6118, 6109, 1, 0, 0, 0, 6118, 6110, 1, 0, 0, 0, 6118, 6112, 1, 0, 0, 0, 6119, 6127, 1, 0, 0, 0, 6120, 6123, 3, 570, 285, 0, 6121, 6124, 3, 568, 284, 0, 6122, 6124, 3, 562, 281, 0, 6123, 6121, 1, 0, 0, 0, 6123, 6122, 1, 0, 0, 0, 6124, 6126, 1, 0, 0, 0, 6125, 6120, 1, 0, 0, 0, 6126, 6129, 1, 0, 0, 0, 6127, 6125, 1, 0, 0, 0, 6127, 6128, 1, 0, 0, 0, 6128, 569, 1, 0, 0, 0, 6129, 6127, 1, 0, 0, 0, 6130, 6132, 7, 79, 0, 0, 6131, 6133, 7, 80, 0, 0, 6132, 6131, 1, 0, 0, 0, 6132, 6133, 1, 0, 0, 0, 6133, 571, 1, 0, 0, 0, 6134, 6136, 5, 105, 0, 0, 6135, 6137, 5, 303, 0, 0, 6136, 6135, 1, 0, 0, 0, 6136, 6137, 1, 0, 0, 0, 6137, 6138, 1, 0, 0, 0, 6138, 6143, 3, 574, 287, 0, 6139, 6140, 5, 6, 0, 0, 6140, 6142, 3, 574, 287, 0, 6141, 6139, 1, 0, 0, 0, 6142, 6145, 1, 0, 0, 0, 6143, 6141, 1, 0, 0, 0, 6143, 6144, 1, 0, 0, 0, 6144, 573, 1, 0, 0, 0, 6145, 6143, 1, 0, 0, 0, 6146, 6148, 3, 818, 409, 0, 6147, 6149, 3, 144, 72, 0, 6148, 6147, 1, 0, 0, 0, 6148, 6149, 1, 0, 0, 0, 6149, 6150, 1, 0, 0, 0, 6150, 6155, 5, 36, 0, 0, 6151, 6153, 5, 77, 0, 0, 6152, 6151, 1, 0, 0, 0, 6152, 6153, 1, 0, 0, 0, 6153, 6154, 1, 0, 0, 0, 6154, 6156, 5, 259, 0, 0, 6155, 6152, 1, 0, 0, 0, 6155, 6156, 1, 0, 0, 0, 6156, 6157, 1, 0, 0, 0, 6157, 6158, 5, 2, 0, 0, 6158, 6159, 3, 530, 265, 0, 6159, 6161, 5, 3, 0, 0, 6160, 6162, 3, 576, 288, 0, 6161, 6160, 1, 0, 0, 0, 6161, 6162, 1, 0, 0, 0, 6162, 6164, 1, 0, 0, 0, 6163, 6165, 3, 578, 289, 0, 6164, 6163, 1, 0, 0, 0, 6164, 6165, 1, 0, 0, 0, 6165, 575, 1, 0, 0, 0, 6166, 6167, 5, 325, 0, 0, 6167, 6168, 7, 81, 0, 0, 6168, 6169, 5, 207, 0, 0, 6169, 6170, 5, 147, 0, 0, 6170, 6171, 3, 148, 74, 0, 6171, 6172, 5, 333, 0, 0, 6172, 6173, 3, 800, 400, 0, 6173, 577, 1, 0, 0, 0, 6174, 6175, 5, 173, 0, 0, 6175, 6176, 3, 148, 74, 0, 6176, 6177, 5, 333, 0, 0, 6177, 6183, 3, 800, 400, 0, 6178, 6179, 5, 94, 0, 0, 6179, 6180, 3, 818, 409, 0, 6180, 6181, 5, 53, 0, 0, 6181, 6182, 3, 818, 409, 0, 6182, 6184, 1, 0, 0, 0, 6183, 6178, 1, 0, 0, 0, 6183, 6184, 1, 0, 0, 0, 6184, 6185, 1, 0, 0, 0, 6185, 6186, 5, 100, 0, 0, 6186, 6187, 3, 800, 400, 0, 6187, 579, 1, 0, 0, 0, 6188, 6194, 5, 71, 0, 0, 6189, 6191, 5, 346, 0, 0, 6190, 6189, 1, 0, 0, 0, 6190, 6191, 1, 0, 0, 0, 6191, 6192, 1, 0, 0, 0, 6192, 6195, 3, 582, 291, 0, 6193, 6195, 3, 730, 365, 0, 6194, 6190, 1, 0, 0, 0, 6194, 6193, 1, 0, 0, 0, 6195, 581, 1, 0, 0, 0, 6196, 6198, 7, 20, 0, 0, 6197, 6196, 1, 0, 0, 0, 6197, 6198, 1, 0, 0, 0, 6198, 6199, 1, 0, 0, 0, 6199, 6201, 7, 21, 0, 0, 6200, 6202, 5, 92, 0, 0, 6201, 6200, 1, 0, 0, 0, 6201, 6202, 1, 0, 0, 0, 6202, 6203, 1, 0, 0, 0, 6203, 6212, 3, 772, 386, 0, 6204, 6206, 5, 367, 0, 0, 6205, 6204, 1, 0, 0, 0, 6205, 6206, 1, 0, 0, 0, 6206, 6208, 1, 0, 0, 0, 6207, 6209, 5, 92, 0, 0, 6208, 6207, 1, 0, 0, 0, 6208, 6209, 1, 0, 0, 0, 6209, 6210, 1, 0, 0, 0, 6210, 6212, 3, 772, 386, 0, 6211, 6197, 1, 0, 0, 0, 6211, 6205, 1, 0, 0, 0, 6212, 583, 1, 0, 0, 0, 6213, 6216, 5, 56, 0, 0, 6214, 6215, 5, 80, 0, 0, 6215, 6217, 3, 534, 267, 0, 6216, 6214, 1, 0, 0, 0, 6216, 6217, 1, 0, 0, 0, 6217, 585, 1, 0, 0, 0, 6218, 6219, 5, 83, 0, 0, 6219, 6220, 5, 147, 0, 0, 6220, 6225, 3, 588, 294, 0, 6221, 6222, 5, 6, 0, 0, 6222, 6224, 3, 588, 294, 0, 6223, 6221, 1, 0, 0, 0, 6224, 6227, 1, 0, 0, 0, 6225, 6223, 1, 0, 0, 0, 6225, 6226, 1, 0, 0, 0, 6226, 587, 1, 0, 0, 0, 6227, 6225, 1, 0, 0, 0, 6228, 6232, 3, 734, 367, 0, 6229, 6230, 5, 100, 0, 0, 6230, 6233, 3, 726, 363, 0, 6231, 6233, 7, 55, 0, 0, 6232, 6229, 1, 0, 0, 0, 6232, 6231, 1, 0, 0, 0, 6232, 6233, 1, 0, 0, 0, 6233, 6236, 1, 0, 0, 0, 6234, 6235, 5, 273, 0, 0, 6235, 6237, 7, 56, 0, 0, 6236, 6234, 1, 0, 0, 0, 6236, 6237, 1, 0, 0, 0, 6237, 589, 1, 0, 0, 0, 6238, 6240, 3, 596, 298, 0, 6239, 6241, 3, 594, 297, 0, 6240, 6239, 1, 0, 0, 0, 6240, 6241, 1, 0, 0, 0, 6241, 6250, 1, 0, 0, 0, 6242, 6245, 3, 592, 296, 0, 6243, 6245, 3, 594, 297, 0, 6244, 6242, 1, 0, 0, 0, 6244, 6243, 1, 0, 0, 0, 6245, 6247, 1, 0, 0, 0, 6246, 6248, 3, 596, 298, 0, 6247, 6246, 1, 0, 0, 0, 6247, 6248, 1, 0, 0, 0, 6248, 6250, 1, 0, 0, 0, 6249, 6238, 1, 0, 0, 0, 6249, 6244, 1, 0, 0, 0, 6250, 591, 1, 0, 0, 0, 6251, 6254, 5, 74, 0, 0, 6252, 6255, 3, 674, 337, 0, 6253, 6255, 5, 30, 0, 0, 6254, 6252, 1, 0, 0, 0, 6254, 6253, 1, 0, 0, 0, 6255, 6258, 1, 0, 0, 0, 6256, 6257, 5, 6, 0, 0, 6257, 6259, 3, 674, 337, 0, 6258, 6256, 1, 0, 0, 0, 6258, 6259, 1, 0, 0, 0, 6259, 593, 1, 0, 0, 0, 6260, 6261, 5, 61, 0, 0, 6261, 6263, 7, 82, 0, 0, 6262, 6264, 3, 598, 299, 0, 6263, 6262, 1, 0, 0, 0, 6263, 6264, 1, 0, 0, 0, 6264, 6265, 1, 0, 0, 0, 6265, 6269, 7, 83, 0, 0, 6266, 6270, 5, 81, 0, 0, 6267, 6268, 5, 105, 0, 0, 6268, 6270, 5, 467, 0, 0, 6269, 6266, 1, 0, 0, 0, 6269, 6267, 1, 0, 0, 0, 6270, 595, 1, 0, 0, 0, 6271, 6276, 5, 79, 0, 0, 6272, 6273, 3, 598, 299, 0, 6273, 6274, 7, 83, 0, 0, 6274, 6277, 1, 0, 0, 0, 6275, 6277, 3, 674, 337, 0, 6276, 6272, 1, 0, 0, 0, 6276, 6275, 1, 0, 0, 0, 6277, 597, 1, 0, 0, 0, 6278, 6279, 7, 29, 0, 0, 6279, 6282, 7, 84, 0, 0, 6280, 6282, 3, 682, 341, 0, 6281, 6278, 1, 0, 0, 0, 6281, 6280, 1, 0, 0, 0, 6282, 599, 1, 0, 0, 0, 6283, 6284, 5, 66, 0, 0, 6284, 6286, 5, 147, 0, 0, 6285, 6287, 7, 80, 0, 0, 6286, 6285, 1, 0, 0, 0, 6286, 6287, 1, 0, 0, 0, 6287, 6288, 1, 0, 0, 0, 6288, 6289, 3, 602, 301, 0, 6289, 601, 1, 0, 0, 0, 6290, 6295, 3, 604, 302, 0, 6291, 6292, 5, 6, 0, 0, 6292, 6294, 3, 604, 302, 0, 6293, 6291, 1, 0, 0, 0, 6294, 6297, 1, 0, 0, 0, 6295, 6293, 1, 0, 0, 0, 6295, 6296, 1, 0, 0, 0, 6296, 603, 1, 0, 0, 0, 6297, 6295, 1, 0, 0, 0, 6298, 6322, 3, 734, 367, 0, 6299, 6300, 5, 2, 0, 0, 6300, 6322, 5, 3, 0, 0, 6301, 6303, 7, 85, 0, 0, 6302, 6301, 1, 0, 0, 0, 6302, 6303, 1, 0, 0, 0, 6303, 6304, 1, 0, 0, 0, 6304, 6305, 5, 2, 0, 0, 6305, 6310, 3, 734, 367, 0, 6306, 6307, 5, 6, 0, 0, 6307, 6309, 3, 734, 367, 0, 6308, 6306, 1, 0, 0, 0, 6309, 6312, 1, 0, 0, 0, 6310, 6308, 1, 0, 0, 0, 6310, 6311, 1, 0, 0, 0, 6311, 6313, 1, 0, 0, 0, 6312, 6310, 1, 0, 0, 0, 6313, 6314, 5, 3, 0, 0, 6314, 6322, 1, 0, 0, 0, 6315, 6316, 5, 470, 0, 0, 6316, 6317, 5, 471, 0, 0, 6317, 6318, 5, 2, 0, 0, 6318, 6319, 3, 602, 301, 0, 6319, 6320, 5, 3, 0, 0, 6320, 6322, 1, 0, 0, 0, 6321, 6298, 1, 0, 0, 0, 6321, 6299, 1, 0, 0, 0, 6321, 6302, 1, 0, 0, 0, 6321, 6315, 1, 0, 0, 0, 6322, 605, 1, 0, 0, 0, 6323, 6333, 5, 62, 0, 0, 6324, 6325, 5, 269, 0, 0, 6325, 6327, 5, 245, 0, 0, 6326, 6324, 1, 0, 0, 0, 6326, 6327, 1, 0, 0, 0, 6327, 6328, 1, 0, 0, 0, 6328, 6334, 5, 369, 0, 0, 6329, 6331, 5, 245, 0, 0, 6330, 6329, 1, 0, 0, 0, 6330, 6331, 1, 0, 0, 0, 6331, 6332, 1, 0, 0, 0, 6332, 6334, 5, 334, 0, 0, 6333, 6326, 1, 0, 0, 0, 6333, 6330, 1, 0, 0, 0, 6334, 6337, 1, 0, 0, 0, 6335, 6336, 5, 275, 0, 0, 6336, 6338, 3, 760, 380, 0, 6337, 6335, 1, 0, 0, 0, 6337, 6338, 1, 0, 0, 0, 6338, 6342, 1, 0, 0, 0, 6339, 6343, 5, 272, 0, 0, 6340, 6341, 5, 465, 0, 0, 6341, 6343, 5, 466, 0, 0, 6342, 6339, 1, 0, 0, 0, 6342, 6340, 1, 0, 0, 0, 6342, 6343, 1, 0, 0, 0, 6343, 6345, 1, 0, 0, 0, 6344, 6323, 1, 0, 0, 0, 6345, 6346, 1, 0, 0, 0, 6346, 6344, 1, 0, 0, 0, 6346, 6347, 1, 0, 0, 0, 6347, 6352, 1, 0, 0, 0, 6348, 6349, 5, 62, 0, 0, 6349, 6350, 5, 300, 0, 0, 6350, 6352, 5, 81, 0, 0, 6351, 6344, 1, 0, 0, 0, 6351, 6348, 1, 0, 0, 0, 6352, 607, 1, 0, 0, 0, 6353, 6354, 5, 422, 0, 0, 6354, 6359, 3, 534, 267, 0, 6355, 6356, 5, 6, 0, 0, 6356, 6358, 3, 534, 267, 0, 6357, 6355, 1, 0, 0, 0, 6358, 6361, 1, 0, 0, 0, 6359, 6357, 1, 0, 0, 0, 6359, 6360, 1, 0, 0, 0, 6360, 609, 1, 0, 0, 0, 6361, 6359, 1, 0, 0, 0, 6362, 6363, 5, 64, 0, 0, 6363, 6364, 3, 612, 306, 0, 6364, 611, 1, 0, 0, 0, 6365, 6370, 3, 614, 307, 0, 6366, 6367, 5, 6, 0, 0, 6367, 6369, 3, 614, 307, 0, 6368, 6366, 1, 0, 0, 0, 6369, 6372, 1, 0, 0, 0, 6370, 6368, 1, 0, 0, 0, 6370, 6371, 1, 0, 0, 0, 6371, 613, 1, 0, 0, 0, 6372, 6370, 1, 0, 0, 0, 6373, 6388, 3, 624, 312, 0, 6374, 6376, 5, 81, 0, 0, 6375, 6374, 1, 0, 0, 0, 6375, 6376, 1, 0, 0, 0, 6376, 6377, 1, 0, 0, 0, 6377, 6379, 3, 778, 389, 0, 6378, 6380, 5, 9, 0, 0, 6379, 6378, 1, 0, 0, 0, 6379, 6380, 1, 0, 0, 0, 6380, 6382, 1, 0, 0, 0, 6381, 6383, 3, 148, 74, 0, 6382, 6381, 1, 0, 0, 0, 6382, 6383, 1, 0, 0, 0, 6383, 6385, 1, 0, 0, 0, 6384, 6386, 3, 638, 319, 0, 6385, 6384, 1, 0, 0, 0, 6385, 6386, 1, 0, 0, 0, 6386, 6388, 1, 0, 0, 0, 6387, 6373, 1, 0, 0, 0, 6387, 6375, 1, 0, 0, 0, 6388, 6390, 1, 0, 0, 0, 6389, 6391, 3, 616, 308, 0, 6390, 6389, 1, 0, 0, 0, 6390, 6391, 1, 0, 0, 0, 6391, 6393, 1, 0, 0, 0, 6392, 6394, 3, 632, 316, 0, 6393, 6392, 1, 0, 0, 0, 6393, 6394, 1, 0, 0, 0, 6394, 6437, 1, 0, 0, 0, 6395, 6397, 5, 72, 0, 0, 6396, 6395, 1, 0, 0, 0, 6396, 6397, 1, 0, 0, 0, 6397, 6410, 1, 0, 0, 0, 6398, 6400, 3, 646, 323, 0, 6399, 6401, 3, 616, 308, 0, 6400, 6399, 1, 0, 0, 0, 6400, 6401, 1, 0, 0, 0, 6401, 6411, 1, 0, 0, 0, 6402, 6404, 3, 634, 317, 0, 6403, 6405, 3, 618, 309, 0, 6404, 6403, 1, 0, 0, 0, 6404, 6405, 1, 0, 0, 0, 6405, 6411, 1, 0, 0, 0, 6406, 6408, 3, 562, 281, 0, 6407, 6409, 3, 616, 308, 0, 6408, 6407, 1, 0, 0, 0, 6408, 6409, 1, 0, 0, 0, 6409, 6411, 1, 0, 0, 0, 6410, 6398, 1, 0, 0, 0, 6410, 6402, 1, 0, 0, 0, 6410, 6406, 1, 0, 0, 0, 6411, 6437, 1, 0, 0, 0, 6412, 6413, 5, 2, 0, 0, 6413, 6430, 3, 614, 307, 0, 6414, 6415, 5, 110, 0, 0, 6415, 6416, 5, 118, 0, 0, 6416, 6431, 3, 614, 307, 0, 6417, 6419, 5, 121, 0, 0, 6418, 6420, 3, 620, 310, 0, 6419, 6418, 1, 0, 0, 0, 6419, 6420, 1, 0, 0, 0, 6420, 6421, 1, 0, 0, 0, 6421, 6422, 5, 118, 0, 0, 6422, 6431, 3, 614, 307, 0, 6423, 6425, 3, 620, 310, 0, 6424, 6423, 1, 0, 0, 0, 6424, 6425, 1, 0, 0, 0, 6425, 6426, 1, 0, 0, 0, 6426, 6427, 5, 118, 0, 0, 6427, 6428, 3, 614, 307, 0, 6428, 6429, 3, 622, 311, 0, 6429, 6431, 1, 0, 0, 0, 6430, 6414, 1, 0, 0, 0, 6430, 6417, 1, 0, 0, 0, 6430, 6424, 1, 0, 0, 0, 6430, 6431, 1, 0, 0, 0, 6431, 6432, 1, 0, 0, 0, 6432, 6434, 5, 3, 0, 0, 6433, 6435, 3, 616, 308, 0, 6434, 6433, 1, 0, 0, 0, 6434, 6435, 1, 0, 0, 0, 6435, 6437, 1, 0, 0, 0, 6436, 6387, 1, 0, 0, 0, 6436, 6396, 1, 0, 0, 0, 6436, 6412, 1, 0, 0, 0, 6437, 6456, 1, 0, 0, 0, 6438, 6439, 5, 110, 0, 0, 6439, 6440, 5, 118, 0, 0, 6440, 6455, 3, 614, 307, 0, 6441, 6443, 5, 121, 0, 0, 6442, 6444, 3, 620, 310, 0, 6443, 6442, 1, 0, 0, 0, 6443, 6444, 1, 0, 0, 0, 6444, 6445, 1, 0, 0, 0, 6445, 6446, 5, 118, 0, 0, 6446, 6455, 3, 614, 307, 0, 6447, 6449, 3, 620, 310, 0, 6448, 6447, 1, 0, 0, 0, 6448, 6449, 1, 0, 0, 0, 6449, 6450, 1, 0, 0, 0, 6450, 6451, 5, 118, 0, 0, 6451, 6452, 3, 614, 307, 0, 6452, 6453, 3, 622, 311, 0, 6453, 6455, 1, 0, 0, 0, 6454, 6438, 1, 0, 0, 0, 6454, 6441, 1, 0, 0, 0, 6454, 6448, 1, 0, 0, 0, 6455, 6458, 1, 0, 0, 0, 6456, 6454, 1, 0, 0, 0, 6456, 6457, 1, 0, 0, 0, 6457, 615, 1, 0, 0, 0, 6458, 6456, 1, 0, 0, 0, 6459, 6461, 5, 36, 0, 0, 6460, 6459, 1, 0, 0, 0, 6460, 6461, 1, 0, 0, 0, 6461, 6462, 1, 0, 0, 0, 6462, 6467, 3, 818, 409, 0, 6463, 6464, 5, 2, 0, 0, 6464, 6465, 3, 784, 392, 0, 6465, 6466, 5, 3, 0, 0, 6466, 6468, 1, 0, 0, 0, 6467, 6463, 1, 0, 0, 0, 6467, 6468, 1, 0, 0, 0, 6468, 617, 1, 0, 0, 0, 6469, 6482, 3, 616, 308, 0, 6470, 6472, 5, 36, 0, 0, 6471, 6473, 3, 818, 409, 0, 6472, 6471, 1, 0, 0, 0, 6472, 6473, 1, 0, 0, 0, 6473, 6476, 1, 0, 0, 0, 6474, 6476, 3, 818, 409, 0, 6475, 6470, 1, 0, 0, 0, 6475, 6474, 1, 0, 0, 0, 6476, 6477, 1, 0, 0, 0, 6477, 6478, 5, 2, 0, 0, 6478, 6479, 3, 642, 321, 0, 6479, 6480, 5, 3, 0, 0, 6480, 6482, 1, 0, 0, 0, 6481, 6469, 1, 0, 0, 0, 6481, 6475, 1, 0, 0, 0, 6482, 619, 1, 0, 0, 0, 6483, 6485, 7, 86, 0, 0, 6484, 6486, 5, 123, 0, 0, 6485, 6484, 1, 0, 0, 0, 6485, 6486, 1, 0, 0, 0, 6486, 621, 1, 0, 0, 0, 6487, 6488, 5, 100, 0, 0, 6488, 6492, 3, 144, 72, 0, 6489, 6490, 5, 80, 0, 0, 6490, 6492, 3, 674, 337, 0, 6491, 6487, 1, 0, 0, 0, 6491, 6489, 1, 0, 0, 0, 6492, 623, 1, 0, 0, 0, 6493, 6509, 3, 322, 161, 0, 6494, 6500, 5, 81, 0, 0, 6495, 6501, 3, 774, 387, 0, 6496, 6497, 5, 2, 0, 0, 6497, 6498, 3, 774, 387, 0, 6498, 6499, 5, 3, 0, 0, 6499, 6501, 1, 0, 0, 0, 6500, 6495, 1, 0, 0, 0, 6500, 6496, 1, 0, 0, 0, 6501, 6509, 1, 0, 0, 0, 6502, 6503, 5, 68, 0, 0, 6503, 6506, 5, 323, 0, 0, 6504, 6507, 3, 790, 395, 0, 6505, 6507, 5, 111, 0, 0, 6506, 6504, 1, 0, 0, 0, 6506, 6505, 1, 0, 0, 0, 6507, 6509, 1, 0, 0, 0, 6508, 6493, 1, 0, 0, 0, 6508, 6494, 1, 0, 0, 0, 6508, 6502, 1, 0, 0, 0, 6509, 625, 1, 0, 0, 0, 6510, 6511, 5, 92, 0, 0, 6511, 6513, 3, 322, 161, 0, 6512, 6514, 3, 144, 72, 0, 6513, 6512, 1, 0, 0, 0, 6513, 6514, 1, 0, 0, 0, 6514, 6516, 1, 0, 0, 0, 6515, 6517, 3, 638, 319, 0, 6516, 6515, 1, 0, 0, 0, 6516, 6517, 1, 0, 0, 0, 6517, 6535, 1, 0, 0, 0, 6518, 6519, 5, 92, 0, 0, 6519, 6525, 5, 81, 0, 0, 6520, 6526, 3, 774, 387, 0, 6521, 6522, 5, 2, 0, 0, 6522, 6523, 3, 774, 387, 0, 6523, 6524, 5, 3, 0, 0, 6524, 6526, 1, 0, 0, 0, 6525, 6520, 1, 0, 0, 0, 6525, 6521, 1, 0, 0, 0, 6526, 6535, 1, 0, 0, 0, 6527, 6528, 5, 350, 0, 0, 6528, 6529, 5, 68, 0, 0, 6529, 6532, 5, 323, 0, 0, 6530, 6533, 3, 790, 395, 0, 6531, 6533, 5, 111, 0, 0, 6532, 6530, 1, 0, 0, 0, 6532, 6531, 1, 0, 0, 0, 6533, 6535, 1, 0, 0, 0, 6534, 6510, 1, 0, 0, 0, 6534, 6518, 1, 0, 0, 0, 6534, 6527, 1, 0, 0, 0, 6535, 627, 1, 0, 0, 0, 6536, 6541, 3, 624, 312, 0, 6537, 6538, 5, 6, 0, 0, 6538, 6540, 3, 624, 312, 0, 6539, 6537, 1, 0, 0, 0, 6540, 6543, 1, 0, 0, 0, 6541, 6539, 1, 0, 0, 0, 6541, 6542, 1, 0, 0, 0, 6542, 629, 1, 0, 0, 0, 6543, 6541, 1, 0, 0, 0, 6544, 6549, 3, 624, 312, 0, 6545, 6547, 5, 36, 0, 0, 6546, 6545, 1, 0, 0, 0, 6546, 6547, 1, 0, 0, 0, 6547, 6548, 1, 0, 0, 0, 6548, 6550, 3, 818, 409, 0, 6549, 6546, 1, 0, 0, 0, 6549, 6550, 1, 0, 0, 0, 6550, 631, 1, 0, 0, 0, 6551, 6552, 5, 472, 0, 0, 6552, 6553, 3, 806, 403, 0, 6553, 6559, 3, 534, 267, 0, 6554, 6555, 5, 310, 0, 0, 6555, 6556, 5, 2, 0, 0, 6556, 6557, 3, 674, 337, 0, 6557, 6558, 5, 3, 0, 0, 6558, 6560, 1, 0, 0, 0, 6559, 6554, 1, 0, 0, 0, 6559, 6560, 1, 0, 0, 0, 6560, 633, 1, 0, 0, 0, 6561, 6576, 3, 688, 344, 0, 6562, 6563, 5, 320, 0, 0, 6563, 6564, 5, 64, 0, 0, 6564, 6565, 5, 2, 0, 0, 6565, 6570, 3, 636, 318, 0, 6566, 6567, 5, 6, 0, 0, 6567, 6569, 3, 636, 318, 0, 6568, 6566, 1, 0, 0, 0, 6569, 6572, 1, 0, 0, 0, 6570, 6568, 1, 0, 0, 0, 6570, 6571, 1, 0, 0, 0, 6571, 6573, 1, 0, 0, 0, 6572, 6570, 1, 0, 0, 0, 6573, 6574, 5, 3, 0, 0, 6574, 6576, 1, 0, 0, 0, 6575, 6561, 1, 0, 0, 0, 6575, 6562, 1, 0, 0, 0, 6576, 6579, 1, 0, 0, 0, 6577, 6578, 5, 105, 0, 0, 6578, 6580, 5, 473, 0, 0, 6579, 6577, 1, 0, 0, 0, 6579, 6580, 1, 0, 0, 0, 6580, 635, 1, 0, 0, 0, 6581, 6587, 3, 688, 344, 0, 6582, 6583, 5, 36, 0, 0, 6583, 6584, 5, 2, 0, 0, 6584, 6585, 3, 642, 321, 0, 6585, 6586, 5, 3, 0, 0, 6586, 6588, 1, 0, 0, 0, 6587, 6582, 1, 0, 0, 0, 6587, 6588, 1, 0, 0, 0, 6588, 637, 1, 0, 0, 0, 6589, 6590, 5, 103, 0, 0, 6590, 6591, 3, 734, 367, 0, 6591, 639, 1, 0, 0, 0, 6592, 6597, 5, 103, 0, 0, 6593, 6594, 5, 434, 0, 0, 6594, 6595, 5, 275, 0, 0, 6595, 6598, 3, 818, 409, 0, 6596, 6598, 3, 674, 337, 0, 6597, 6593, 1, 0, 0, 0, 6597, 6596, 1, 0, 0, 0, 6598, 641, 1, 0, 0, 0, 6599, 6604, 3, 644, 322, 0, 6600, 6601, 5, 6, 0, 0, 6601, 6603, 3, 644, 322, 0, 6602, 6600, 1, 0, 0, 0, 6603, 6606, 1, 0, 0, 0, 6604, 6602, 1, 0, 0, 0, 6604, 6605, 1, 0, 0, 0, 6605, 643, 1, 0, 0, 0, 6606, 6604, 1, 0, 0, 0, 6607, 6608, 3, 818, 409, 0, 6608, 6610, 3, 652, 326, 0, 6609, 6611, 3, 98, 49, 0, 6610, 6609, 1, 0, 0, 0, 6610, 6611, 1, 0, 0, 0, 6611, 645, 1, 0, 0, 0, 6612, 6613, 5, 474, 0, 0, 6613, 6627, 5, 2, 0, 0, 6614, 6615, 5, 476, 0, 0, 6615, 6616, 5, 2, 0, 0, 6616, 6621, 3, 650, 325, 0, 6617, 6618, 5, 6, 0, 0, 6618, 6620, 3, 650, 325, 0, 6619, 6617, 1, 0, 0, 0, 6620, 6623, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6621, 6622, 1, 0, 0, 0, 6622, 6624, 1, 0, 0, 0, 6623, 6621, 1, 0, 0, 0, 6624, 6625, 5, 3, 0, 0, 6625, 6626, 5, 6, 0, 0, 6626, 6628, 1, 0, 0, 0, 6627, 6614, 1, 0, 0, 0, 6627, 6628, 1, 0, 0, 0, 6628, 6629, 1, 0, 0, 0, 6629, 6630, 3, 682, 341, 0, 6630, 6631, 3, 698, 349, 0, 6631, 6632, 5, 475, 0, 0, 6632, 6637, 3, 648, 324, 0, 6633, 6634, 5, 6, 0, 0, 6634, 6636, 3, 648, 324, 0, 6635, 6633, 1, 0, 0, 0, 6636, 6639, 1, 0, 0, 0, 6637, 6635, 1, 0, 0, 0, 6637, 6638, 1, 0, 0, 0, 6638, 6640, 1, 0, 0, 0, 6639, 6637, 1, 0, 0, 0, 6640, 6641, 5, 3, 0, 0, 6641, 647, 1, 0, 0, 0, 6642, 6661, 3, 818, 409, 0, 6643, 6657, 3, 652, 326, 0, 6644, 6647, 5, 53, 0, 0, 6645, 6647, 3, 826, 413, 0, 6646, 6644, 1, 0, 0, 0, 6646, 6645, 1, 0, 0, 0, 6647, 6648, 1, 0, 0, 0, 6648, 6654, 3, 674, 337, 0, 6649, 6651, 5, 77, 0, 0, 6650, 6649, 1, 0, 0, 0, 6650, 6651, 1, 0, 0, 0, 6651, 6652, 1, 0, 0, 0, 6652, 6654, 5, 78, 0, 0, 6653, 6646, 1, 0, 0, 0, 6653, 6650, 1, 0, 0, 0, 6654, 6655, 1, 0, 0, 0, 6655, 6653, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6658, 1, 0, 0, 0, 6657, 6653, 1, 0, 0, 0, 6657, 6658, 1, 0, 0, 0, 6658, 6662, 1, 0, 0, 0, 6659, 6660, 5, 62, 0, 0, 6660, 6662, 5, 473, 0, 0, 6661, 6643, 1, 0, 0, 0, 6661, 6659, 1, 0, 0, 0, 6662, 649, 1, 0, 0, 0, 6663, 6664, 3, 682, 341, 0, 6664, 6665, 5, 36, 0, 0, 6665, 6666, 3, 824, 412, 0, 6666, 6670, 1, 0, 0, 0, 6667, 6668, 5, 53, 0, 0, 6668, 6670, 3, 682, 341, 0, 6669, 6663, 1, 0, 0, 0, 6669, 6667, 1, 0, 0, 0, 6670, 651, 1, 0, 0, 0, 6671, 6673, 5, 415, 0, 0, 6672, 6671, 1, 0, 0, 0, 6672, 6673, 1, 0, 0, 0, 6673, 6674, 1, 0, 0, 0, 6674, 6691, 3, 654, 327, 0, 6675, 6677, 5, 4, 0, 0, 6676, 6678, 5, 571, 0, 0, 6677, 6676, 1, 0, 0, 0, 6677, 6678, 1, 0, 0, 0, 6678, 6679, 1, 0, 0, 0, 6679, 6681, 5, 5, 0, 0, 6680, 6675, 1, 0, 0, 0, 6681, 6684, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6682, 6683, 1, 0, 0, 0, 6683, 6692, 1, 0, 0, 0, 6684, 6682, 1, 0, 0, 0, 6685, 6689, 5, 35, 0, 0, 6686, 6687, 5, 4, 0, 0, 6687, 6688, 5, 571, 0, 0, 6688, 6690, 5, 5, 0, 0, 6689, 6686, 1, 0, 0, 0, 6689, 6690, 1, 0, 0, 0, 6690, 6692, 1, 0, 0, 0, 6691, 6682, 1, 0, 0, 0, 6691, 6685, 1, 0, 0, 0, 6692, 6698, 1, 0, 0, 0, 6693, 6694, 3, 780, 390, 0, 6694, 6695, 5, 27, 0, 0, 6695, 6696, 7, 87, 0, 0, 6696, 6698, 1, 0, 0, 0, 6697, 6672, 1, 0, 0, 0, 6697, 6693, 1, 0, 0, 0, 6698, 653, 1, 0, 0, 0, 6699, 6701, 3, 820, 410, 0, 6700, 6702, 3, 318, 159, 0, 6701, 6700, 1, 0, 0, 0, 6701, 6702, 1, 0, 0, 0, 6702, 6704, 1, 0, 0, 0, 6703, 6705, 3, 534, 267, 0, 6704, 6703, 1, 0, 0, 0, 6704, 6705, 1, 0, 0, 0, 6705, 6715, 1, 0, 0, 0, 6706, 6715, 3, 656, 328, 0, 6707, 6712, 5, 403, 0, 0, 6708, 6710, 3, 668, 334, 0, 6709, 6708, 1, 0, 0, 0, 6709, 6710, 1, 0, 0, 0, 6710, 6713, 1, 0, 0, 0, 6711, 6713, 3, 660, 330, 0, 6712, 6709, 1, 0, 0, 0, 6712, 6711, 1, 0, 0, 0, 6713, 6715, 1, 0, 0, 0, 6714, 6699, 1, 0, 0, 0, 6714, 6706, 1, 0, 0, 0, 6714, 6707, 1, 0, 0, 0, 6715, 655, 1, 0, 0, 0, 6716, 6721, 3, 658, 329, 0, 6717, 6721, 3, 662, 331, 0, 6718, 6721, 3, 664, 332, 0, 6719, 6721, 3, 666, 333, 0, 6720, 6716, 1, 0, 0, 0, 6720, 6717, 1, 0, 0, 0, 6720, 6718, 1, 0, 0, 0, 6720, 6719, 1, 0, 0, 0, 6721, 657, 1, 0, 0, 0, 6722, 6739, 5, 401, 0, 0, 6723, 6739, 5, 402, 0, 0, 6724, 6739, 5, 416, 0, 0, 6725, 6739, 5, 388, 0, 0, 6726, 6739, 5, 413, 0, 0, 6727, 6729, 5, 398, 0, 0, 6728, 6730, 3, 660, 330, 0, 6729, 6728, 1, 0, 0, 0, 6729, 6730, 1, 0, 0, 0, 6730, 6739, 1, 0, 0, 0, 6731, 6732, 5, 190, 0, 0, 6732, 6739, 5, 412, 0, 0, 6733, 6735, 7, 88, 0, 0, 6734, 6736, 3, 534, 267, 0, 6735, 6734, 1, 0, 0, 0, 6735, 6736, 1, 0, 0, 0, 6736, 6739, 1, 0, 0, 0, 6737, 6739, 5, 390, 0, 0, 6738, 6722, 1, 0, 0, 0, 6738, 6723, 1, 0, 0, 0, 6738, 6724, 1, 0, 0, 0, 6738, 6725, 1, 0, 0, 0, 6738, 6726, 1, 0, 0, 0, 6738, 6727, 1, 0, 0, 0, 6738, 6731, 1, 0, 0, 0, 6738, 6733, 1, 0, 0, 0, 6738, 6737, 1, 0, 0, 0, 6739, 659, 1, 0, 0, 0, 6740, 6741, 5, 2, 0, 0, 6741, 6742, 5, 571, 0, 0, 6742, 6743, 5, 3, 0, 0, 6743, 661, 1, 0, 0, 0, 6744, 6746, 5, 389, 0, 0, 6745, 6747, 5, 374, 0, 0, 6746, 6745, 1, 0, 0, 0, 6746, 6747, 1, 0, 0, 0, 6747, 6749, 1, 0, 0, 0, 6748, 6750, 3, 534, 267, 0, 6749, 6748, 1, 0, 0, 0, 6749, 6750, 1, 0, 0, 0, 6750, 663, 1, 0, 0, 0, 6751, 6753, 7, 89, 0, 0, 6752, 6754, 5, 374, 0, 0, 6753, 6752, 1, 0, 0, 0, 6753, 6754, 1, 0, 0, 0, 6754, 6762, 1, 0, 0, 0, 6755, 6762, 5, 423, 0, 0, 6756, 6757, 5, 405, 0, 0, 6757, 6759, 7, 90, 0, 0, 6758, 6760, 5, 374, 0, 0, 6759, 6758, 1, 0, 0, 0, 6759, 6760, 1, 0, 0, 0, 6760, 6762, 1, 0, 0, 0, 6761, 6751, 1, 0, 0, 0, 6761, 6755, 1, 0, 0, 0, 6761, 6756, 1, 0, 0, 0, 6762, 6764, 1, 0, 0, 0, 6763, 6765, 3, 660, 330, 0, 6764, 6763, 1, 0, 0, 0, 6764, 6765, 1, 0, 0, 0, 6765, 665, 1, 0, 0, 0, 6766, 6768, 7, 91, 0, 0, 6767, 6769, 3, 660, 330, 0, 6768, 6767, 1, 0, 0, 0, 6768, 6769, 1, 0, 0, 0, 6769, 6773, 1, 0, 0, 0, 6770, 6771, 7, 26, 0, 0, 6771, 6772, 5, 418, 0, 0, 6772, 6774, 5, 386, 0, 0, 6773, 6770, 1, 0, 0, 0, 6773, 6774, 1, 0, 0, 0, 6774, 667, 1, 0, 0, 0, 6775, 6805, 5, 264, 0, 0, 6776, 6805, 3, 670, 335, 0, 6777, 6780, 5, 384, 0, 0, 6778, 6779, 5, 94, 0, 0, 6779, 6781, 5, 264, 0, 0, 6780, 6778, 1, 0, 0, 0, 6780, 6781, 1, 0, 0, 0, 6781, 6805, 1, 0, 0, 0, 6782, 6789, 5, 176, 0, 0, 6783, 6787, 5, 94, 0, 0, 6784, 6788, 5, 218, 0, 0, 6785, 6788, 5, 261, 0, 0, 6786, 6788, 3, 670, 335, 0, 6787, 6784, 1, 0, 0, 0, 6787, 6785, 1, 0, 0, 0, 6787, 6786, 1, 0, 0, 0, 6788, 6790, 1, 0, 0, 0, 6789, 6783, 1, 0, 0, 0, 6789, 6790, 1, 0, 0, 0, 6790, 6805, 1, 0, 0, 0, 6791, 6797, 5, 218, 0, 0, 6792, 6795, 5, 94, 0, 0, 6793, 6796, 5, 261, 0, 0, 6794, 6796, 3, 670, 335, 0, 6795, 6793, 1, 0, 0, 0, 6795, 6794, 1, 0, 0, 0, 6796, 6798, 1, 0, 0, 0, 6797, 6792, 1, 0, 0, 0, 6797, 6798, 1, 0, 0, 0, 6798, 6805, 1, 0, 0, 0, 6799, 6802, 5, 261, 0, 0, 6800, 6801, 5, 94, 0, 0, 6801, 6803, 3, 670, 335, 0, 6802, 6800, 1, 0, 0, 0, 6802, 6803, 1, 0, 0, 0, 6803, 6805, 1, 0, 0, 0, 6804, 6775, 1, 0, 0, 0, 6804, 6776, 1, 0, 0, 0, 6804, 6777, 1, 0, 0, 0, 6804, 6782, 1, 0, 0, 0, 6804, 6791, 1, 0, 0, 0, 6804, 6799, 1, 0, 0, 0, 6805, 669, 1, 0, 0, 0, 6806, 6808, 5, 326, 0, 0, 6807, 6809, 3, 660, 330, 0, 6808, 6807, 1, 0, 0, 0, 6808, 6809, 1, 0, 0, 0, 6809, 671, 1, 0, 0, 0, 6810, 6811, 7, 92, 0, 0, 6811, 673, 1, 0, 0, 0, 6812, 6813, 3, 676, 338, 0, 6813, 675, 1, 0, 0, 0, 6814, 6815, 6, 338, -1, 0, 6815, 6817, 3, 680, 340, 0, 6816, 6818, 3, 678, 339, 0, 6817, 6816, 1, 0, 0, 0, 6817, 6818, 1, 0, 0, 0, 6818, 6822, 1, 0, 0, 0, 6819, 6820, 5, 77, 0, 0, 6820, 6822, 3, 676, 338, 3, 6821, 6814, 1, 0, 0, 0, 6821, 6819, 1, 0, 0, 0, 6822, 6831, 1, 0, 0, 0, 6823, 6824, 10, 2, 0, 0, 6824, 6825, 5, 33, 0, 0, 6825, 6830, 3, 676, 338, 3, 6826, 6827, 10, 1, 0, 0, 6827, 6828, 5, 82, 0, 0, 6828, 6830, 3, 676, 338, 2, 6829, 6823, 1, 0, 0, 0, 6829, 6826, 1, 0, 0, 0, 6830, 6833, 1, 0, 0, 0, 6831, 6829, 1, 0, 0, 0, 6831, 6832, 1, 0, 0, 0, 6832, 677, 1, 0, 0, 0, 6833, 6831, 1, 0, 0, 0, 6834, 6835, 3, 672, 336, 0, 6835, 6836, 3, 680, 340, 0, 6836, 6906, 1, 0, 0, 0, 6837, 6838, 3, 672, 336, 0, 6838, 6839, 3, 728, 364, 0, 6839, 6845, 3, 718, 359, 0, 6840, 6846, 3, 562, 281, 0, 6841, 6842, 5, 2, 0, 0, 6842, 6843, 3, 674, 337, 0, 6843, 6844, 5, 3, 0, 0, 6844, 6846, 1, 0, 0, 0, 6845, 6840, 1, 0, 0, 0, 6845, 6841, 1, 0, 0, 0, 6846, 6906, 1, 0, 0, 0, 6847, 6849, 5, 77, 0, 0, 6848, 6847, 1, 0, 0, 0, 6848, 6849, 1, 0, 0, 0, 6849, 6850, 1, 0, 0, 0, 6850, 6851, 5, 387, 0, 0, 6851, 6852, 3, 680, 340, 0, 6852, 6853, 5, 33, 0, 0, 6853, 6854, 3, 680, 340, 0, 6854, 6906, 1, 0, 0, 0, 6855, 6857, 5, 77, 0, 0, 6856, 6855, 1, 0, 0, 0, 6856, 6857, 1, 0, 0, 0, 6857, 6858, 1, 0, 0, 0, 6858, 6859, 5, 68, 0, 0, 6859, 6860, 5, 2, 0, 0, 6860, 6865, 3, 674, 337, 0, 6861, 6862, 5, 6, 0, 0, 6862, 6864, 3, 674, 337, 0, 6863, 6861, 1, 0, 0, 0, 6864, 6867, 1, 0, 0, 0, 6865, 6863, 1, 0, 0, 0, 6865, 6866, 1, 0, 0, 0, 6866, 6868, 1, 0, 0, 0, 6867, 6865, 1, 0, 0, 0, 6868, 6869, 5, 3, 0, 0, 6869, 6906, 1, 0, 0, 0, 6870, 6872, 5, 77, 0, 0, 6871, 6870, 1, 0, 0, 0, 6871, 6872, 1, 0, 0, 0, 6872, 6873, 1, 0, 0, 0, 6873, 6874, 5, 68, 0, 0, 6874, 6906, 3, 562, 281, 0, 6875, 6877, 5, 77, 0, 0, 6876, 6875, 1, 0, 0, 0, 6876, 6877, 1, 0, 0, 0, 6877, 6886, 1, 0, 0, 0, 6878, 6887, 5, 120, 0, 0, 6879, 6887, 5, 114, 0, 0, 6880, 6881, 5, 127, 0, 0, 6881, 6887, 5, 94, 0, 0, 6882, 6884, 5, 387, 0, 0, 6883, 6885, 5, 91, 0, 0, 6884, 6883, 1, 0, 0, 0, 6884, 6885, 1, 0, 0, 0, 6885, 6887, 1, 0, 0, 0, 6886, 6878, 1, 0, 0, 0, 6886, 6879, 1, 0, 0, 0, 6886, 6880, 1, 0, 0, 0, 6886, 6882, 1, 0, 0, 0, 6887, 6888, 1, 0, 0, 0, 6888, 6891, 3, 680, 340, 0, 6889, 6890, 5, 197, 0, 0, 6890, 6892, 3, 680, 340, 0, 6891, 6889, 1, 0, 0, 0, 6891, 6892, 1, 0, 0, 0, 6892, 6906, 1, 0, 0, 0, 6893, 6895, 5, 116, 0, 0, 6894, 6896, 5, 77, 0, 0, 6895, 6894, 1, 0, 0, 0, 6895, 6896, 1, 0, 0, 0, 6896, 6897, 1, 0, 0, 0, 6897, 6906, 5, 78, 0, 0, 6898, 6900, 5, 116, 0, 0, 6899, 6901, 5, 77, 0, 0, 6900, 6899, 1, 0, 0, 0, 6900, 6901, 1, 0, 0, 0, 6901, 6902, 1, 0, 0, 0, 6902, 6903, 5, 56, 0, 0, 6903, 6904, 5, 64, 0, 0, 6904, 6906, 3, 680, 340, 0, 6905, 6834, 1, 0, 0, 0, 6905, 6837, 1, 0, 0, 0, 6905, 6848, 1, 0, 0, 0, 6905, 6856, 1, 0, 0, 0, 6905, 6871, 1, 0, 0, 0, 6905, 6876, 1, 0, 0, 0, 6905, 6893, 1, 0, 0, 0, 6905, 6898, 1, 0, 0, 0, 6906, 679, 1, 0, 0, 0, 6907, 6908, 6, 340, -1, 0, 6908, 6912, 3, 682, 341, 0, 6909, 6910, 7, 29, 0, 0, 6910, 6912, 3, 680, 340, 4, 6911, 6907, 1, 0, 0, 0, 6911, 6909, 1, 0, 0, 0, 6912, 6929, 1, 0, 0, 0, 6913, 6914, 10, 3, 0, 0, 6914, 6915, 7, 93, 0, 0, 6915, 6928, 3, 680, 340, 4, 6916, 6917, 10, 2, 0, 0, 6917, 6918, 7, 29, 0, 0, 6918, 6928, 3, 680, 340, 3, 6919, 6920, 10, 1, 0, 0, 6920, 6921, 5, 15, 0, 0, 6921, 6928, 3, 680, 340, 2, 6922, 6923, 10, 5, 0, 0, 6923, 6924, 5, 142, 0, 0, 6924, 6925, 5, 418, 0, 0, 6925, 6926, 5, 386, 0, 0, 6926, 6928, 3, 674, 337, 0, 6927, 6913, 1, 0, 0, 0, 6927, 6916, 1, 0, 0, 0, 6927, 6919, 1, 0, 0, 0, 6927, 6922, 1, 0, 0, 0, 6928, 6931, 1, 0, 0, 0, 6929, 6927, 1, 0, 0, 0, 6929, 6930, 1, 0, 0, 0, 6930, 681, 1, 0, 0, 0, 6931, 6929, 1, 0, 0, 0, 6932, 6933, 6, 341, -1, 0, 6933, 6934, 7, 94, 0, 0, 6934, 7021, 3, 562, 281, 0, 6935, 6938, 5, 35, 0, 0, 6936, 6939, 3, 562, 281, 0, 6937, 6939, 3, 740, 370, 0, 6938, 6936, 1, 0, 0, 0, 6938, 6937, 1, 0, 0, 0, 6939, 7021, 1, 0, 0, 0, 6940, 6941, 5, 28, 0, 0, 6941, 7021, 3, 754, 377, 0, 6942, 6943, 5, 470, 0, 0, 6943, 7021, 3, 534, 267, 0, 6944, 7021, 5, 571, 0, 0, 6945, 7021, 5, 573, 0, 0, 6946, 7021, 5, 563, 0, 0, 6947, 7021, 5, 567, 0, 0, 6948, 6958, 3, 806, 403, 0, 6949, 6959, 3, 808, 404, 0, 6950, 6951, 5, 2, 0, 0, 6951, 6953, 3, 736, 368, 0, 6952, 6954, 3, 586, 293, 0, 6953, 6952, 1, 0, 0, 0, 6953, 6954, 1, 0, 0, 0, 6954, 6955, 1, 0, 0, 0, 6955, 6956, 5, 3, 0, 0, 6956, 6957, 3, 808, 404, 0, 6957, 6959, 1, 0, 0, 0, 6958, 6949, 1, 0, 0, 0, 6958, 6950, 1, 0, 0, 0, 6959, 7021, 1, 0, 0, 0, 6960, 6962, 3, 656, 328, 0, 6961, 6960, 1, 0, 0, 0, 6961, 6962, 1, 0, 0, 0, 6962, 6963, 1, 0, 0, 0, 6963, 7021, 3, 808, 404, 0, 6964, 6972, 5, 403, 0, 0, 6965, 6967, 3, 808, 404, 0, 6966, 6968, 3, 668, 334, 0, 6967, 6966, 1, 0, 0, 0, 6967, 6968, 1, 0, 0, 0, 6968, 6973, 1, 0, 0, 0, 6969, 6970, 3, 660, 330, 0, 6970, 6971, 3, 808, 404, 0, 6971, 6973, 1, 0, 0, 0, 6972, 6965, 1, 0, 0, 0, 6972, 6969, 1, 0, 0, 0, 6973, 7021, 1, 0, 0, 0, 6974, 7021, 5, 96, 0, 0, 6975, 7021, 5, 60, 0, 0, 6976, 7021, 5, 78, 0, 0, 6977, 7021, 5, 574, 0, 0, 6978, 6979, 5, 2, 0, 0, 6979, 6980, 3, 674, 337, 0, 6980, 6981, 5, 3, 0, 0, 6981, 6982, 3, 754, 377, 0, 6982, 7021, 1, 0, 0, 0, 6983, 6985, 5, 40, 0, 0, 6984, 6986, 3, 674, 337, 0, 6985, 6984, 1, 0, 0, 0, 6985, 6986, 1, 0, 0, 0, 6986, 6988, 1, 0, 0, 0, 6987, 6989, 3, 748, 374, 0, 6988, 6987, 1, 0, 0, 0, 6989, 6990, 1, 0, 0, 0, 6990, 6988, 1, 0, 0, 0, 6990, 6991, 1, 0, 0, 0, 6991, 6994, 1, 0, 0, 0, 6992, 6993, 5, 58, 0, 0, 6993, 6995, 3, 674, 337, 0, 6994, 6992, 1, 0, 0, 0, 6994, 6995, 1, 0, 0, 0, 6995, 6996, 1, 0, 0, 0, 6996, 6997, 5, 454, 0, 0, 6997, 7021, 1, 0, 0, 0, 6998, 7021, 3, 686, 343, 0, 6999, 7001, 3, 562, 281, 0, 7000, 7002, 3, 752, 376, 0, 7001, 7000, 1, 0, 0, 0, 7001, 7002, 1, 0, 0, 0, 7002, 7021, 1, 0, 0, 0, 7003, 7021, 3, 716, 358, 0, 7004, 7005, 5, 2, 0, 0, 7005, 7006, 3, 674, 337, 0, 7006, 7007, 5, 6, 0, 0, 7007, 7008, 3, 730, 365, 0, 7008, 7009, 5, 3, 0, 0, 7009, 7021, 1, 0, 0, 0, 7010, 7011, 3, 714, 357, 0, 7011, 7012, 5, 125, 0, 0, 7012, 7013, 3, 714, 357, 0, 7013, 7021, 1, 0, 0, 0, 7014, 7021, 3, 780, 390, 0, 7015, 7016, 7, 29, 0, 0, 7016, 7021, 3, 682, 341, 5, 7017, 7018, 3, 724, 362, 0, 7018, 7019, 3, 682, 341, 2, 7019, 7021, 1, 0, 0, 0, 7020, 6932, 1, 0, 0, 0, 7020, 6935, 1, 0, 0, 0, 7020, 6940, 1, 0, 0, 0, 7020, 6942, 1, 0, 0, 0, 7020, 6944, 1, 0, 0, 0, 7020, 6945, 1, 0, 0, 0, 7020, 6946, 1, 0, 0, 0, 7020, 6947, 1, 0, 0, 0, 7020, 6948, 1, 0, 0, 0, 7020, 6961, 1, 0, 0, 0, 7020, 6964, 1, 0, 0, 0, 7020, 6974, 1, 0, 0, 0, 7020, 6975, 1, 0, 0, 0, 7020, 6976, 1, 0, 0, 0, 7020, 6977, 1, 0, 0, 0, 7020, 6978, 1, 0, 0, 0, 7020, 6983, 1, 0, 0, 0, 7020, 6998, 1, 0, 0, 0, 7020, 6999, 1, 0, 0, 0, 7020, 7003, 1, 0, 0, 0, 7020, 7004, 1, 0, 0, 0, 7020, 7010, 1, 0, 0, 0, 7020, 7014, 1, 0, 0, 0, 7020, 7015, 1, 0, 0, 0, 7020, 7017, 1, 0, 0, 0, 7021, 7049, 1, 0, 0, 0, 7022, 7023, 10, 3, 0, 0, 7023, 7024, 3, 722, 361, 0, 7024, 7025, 3, 682, 341, 4, 7025, 7048, 1, 0, 0, 0, 7026, 7027, 10, 6, 0, 0, 7027, 7028, 5, 26, 0, 0, 7028, 7048, 3, 652, 326, 0, 7029, 7030, 10, 4, 0, 0, 7030, 7032, 3, 724, 362, 0, 7031, 7033, 3, 682, 341, 0, 7032, 7031, 1, 0, 0, 0, 7032, 7033, 1, 0, 0, 0, 7033, 7048, 1, 0, 0, 0, 7034, 7035, 10, 1, 0, 0, 7035, 7037, 5, 116, 0, 0, 7036, 7038, 5, 77, 0, 0, 7037, 7036, 1, 0, 0, 0, 7037, 7038, 1, 0, 0, 0, 7038, 7045, 1, 0, 0, 0, 7039, 7040, 5, 56, 0, 0, 7040, 7041, 5, 64, 0, 0, 7041, 7046, 3, 682, 341, 0, 7042, 7043, 5, 275, 0, 0, 7043, 7046, 3, 528, 264, 0, 7044, 7046, 5, 188, 0, 0, 7045, 7039, 1, 0, 0, 0, 7045, 7042, 1, 0, 0, 0, 7045, 7044, 1, 0, 0, 0, 7046, 7048, 1, 0, 0, 0, 7047, 7022, 1, 0, 0, 0, 7047, 7026, 1, 0, 0, 0, 7047, 7029, 1, 0, 0, 0, 7047, 7034, 1, 0, 0, 0, 7048, 7051, 1, 0, 0, 0, 7049, 7047, 1, 0, 0, 0, 7049, 7050, 1, 0, 0, 0, 7050, 683, 1, 0, 0, 0, 7051, 7049, 1, 0, 0, 0, 7052, 7078, 3, 806, 403, 0, 7053, 7075, 5, 2, 0, 0, 7054, 7058, 3, 736, 368, 0, 7055, 7056, 5, 6, 0, 0, 7056, 7057, 5, 101, 0, 0, 7057, 7059, 3, 738, 369, 0, 7058, 7055, 1, 0, 0, 0, 7058, 7059, 1, 0, 0, 0, 7059, 7061, 1, 0, 0, 0, 7060, 7062, 3, 586, 293, 0, 7061, 7060, 1, 0, 0, 0, 7061, 7062, 1, 0, 0, 0, 7062, 7076, 1, 0, 0, 0, 7063, 7064, 5, 101, 0, 0, 7064, 7066, 3, 738, 369, 0, 7065, 7067, 3, 586, 293, 0, 7066, 7065, 1, 0, 0, 0, 7066, 7067, 1, 0, 0, 0, 7067, 7076, 1, 0, 0, 0, 7068, 7069, 7, 80, 0, 0, 7069, 7071, 3, 736, 368, 0, 7070, 7072, 3, 586, 293, 0, 7071, 7070, 1, 0, 0, 0, 7071, 7072, 1, 0, 0, 0, 7072, 7076, 1, 0, 0, 0, 7073, 7076, 5, 9, 0, 0, 7074, 7076, 1, 0, 0, 0, 7075, 7054, 1, 0, 0, 0, 7075, 7063, 1, 0, 0, 0, 7075, 7068, 1, 0, 0, 0, 7075, 7073, 1, 0, 0, 0, 7075, 7074, 1, 0, 0, 0, 7076, 7077, 1, 0, 0, 0, 7077, 7079, 5, 3, 0, 0, 7078, 7053, 1, 0, 0, 0, 7078, 7079, 1, 0, 0, 0, 7079, 685, 1, 0, 0, 0, 7080, 7087, 3, 684, 342, 0, 7081, 7082, 5, 479, 0, 0, 7082, 7083, 5, 66, 0, 0, 7083, 7084, 5, 2, 0, 0, 7084, 7085, 3, 586, 293, 0, 7085, 7086, 5, 3, 0, 0, 7086, 7088, 1, 0, 0, 0, 7087, 7081, 1, 0, 0, 0, 7087, 7088, 1, 0, 0, 0, 7088, 7095, 1, 0, 0, 0, 7089, 7090, 5, 480, 0, 0, 7090, 7091, 5, 2, 0, 0, 7091, 7092, 5, 103, 0, 0, 7092, 7093, 3, 674, 337, 0, 7093, 7094, 5, 3, 0, 0, 7094, 7096, 1, 0, 0, 0, 7095, 7089, 1, 0, 0, 0, 7095, 7096, 1, 0, 0, 0, 7096, 7102, 1, 0, 0, 0, 7097, 7100, 5, 124, 0, 0, 7098, 7101, 3, 708, 354, 0, 7099, 7101, 3, 818, 409, 0, 7100, 7098, 1, 0, 0, 0, 7100, 7099, 1, 0, 0, 0, 7101, 7103, 1, 0, 0, 0, 7102, 7097, 1, 0, 0, 0, 7102, 7103, 1, 0, 0, 0, 7103, 7106, 1, 0, 0, 0, 7104, 7106, 3, 690, 345, 0, 7105, 7080, 1, 0, 0, 0, 7105, 7104, 1, 0, 0, 0, 7106, 687, 1, 0, 0, 0, 7107, 7110, 3, 684, 342, 0, 7108, 7110, 3, 690, 345, 0, 7109, 7107, 1, 0, 0, 0, 7109, 7108, 1, 0, 0, 0, 7110, 689, 1, 0, 0, 0, 7111, 7112, 5, 108, 0, 0, 7112, 7113, 5, 62, 0, 0, 7113, 7114, 5, 2, 0, 0, 7114, 7115, 3, 674, 337, 0, 7115, 7116, 5, 3, 0, 0, 7116, 7286, 1, 0, 0, 0, 7117, 7286, 5, 48, 0, 0, 7118, 7120, 7, 95, 0, 0, 7119, 7121, 3, 660, 330, 0, 7120, 7119, 1, 0, 0, 0, 7120, 7121, 1, 0, 0, 0, 7121, 7286, 1, 0, 0, 0, 7122, 7286, 5, 49, 0, 0, 7123, 7286, 5, 52, 0, 0, 7124, 7286, 5, 89, 0, 0, 7125, 7286, 5, 99, 0, 0, 7126, 7286, 5, 47, 0, 0, 7127, 7286, 5, 111, 0, 0, 7128, 7129, 7, 96, 0, 0, 7129, 7130, 5, 2, 0, 0, 7130, 7131, 3, 674, 337, 0, 7131, 7132, 5, 36, 0, 0, 7132, 7133, 3, 652, 326, 0, 7133, 7134, 5, 3, 0, 0, 7134, 7286, 1, 0, 0, 0, 7135, 7136, 5, 397, 0, 0, 7136, 7141, 5, 2, 0, 0, 7137, 7138, 3, 742, 371, 0, 7138, 7139, 5, 64, 0, 0, 7139, 7140, 3, 674, 337, 0, 7140, 7142, 1, 0, 0, 0, 7141, 7137, 1, 0, 0, 0, 7141, 7142, 1, 0, 0, 0, 7142, 7143, 1, 0, 0, 0, 7143, 7286, 5, 3, 0, 0, 7144, 7145, 5, 489, 0, 0, 7145, 7146, 5, 2, 0, 0, 7146, 7149, 3, 674, 337, 0, 7147, 7148, 5, 6, 0, 0, 7148, 7150, 3, 744, 372, 0, 7149, 7147, 1, 0, 0, 0, 7149, 7150, 1, 0, 0, 0, 7150, 7151, 1, 0, 0, 0, 7151, 7152, 5, 3, 0, 0, 7152, 7286, 1, 0, 0, 0, 7153, 7154, 5, 410, 0, 0, 7154, 7155, 5, 2, 0, 0, 7155, 7156, 3, 674, 337, 0, 7156, 7157, 5, 84, 0, 0, 7157, 7158, 3, 674, 337, 0, 7158, 7159, 5, 64, 0, 0, 7159, 7162, 3, 674, 337, 0, 7160, 7161, 5, 62, 0, 0, 7161, 7163, 3, 674, 337, 0, 7162, 7160, 1, 0, 0, 0, 7162, 7163, 1, 0, 0, 0, 7163, 7164, 1, 0, 0, 0, 7164, 7165, 5, 3, 0, 0, 7165, 7286, 1, 0, 0, 0, 7166, 7167, 5, 411, 0, 0, 7167, 7172, 5, 2, 0, 0, 7168, 7169, 3, 682, 341, 0, 7169, 7170, 5, 68, 0, 0, 7170, 7171, 3, 682, 341, 0, 7171, 7173, 1, 0, 0, 0, 7172, 7168, 1, 0, 0, 0, 7172, 7173, 1, 0, 0, 0, 7173, 7174, 1, 0, 0, 0, 7174, 7286, 5, 3, 0, 0, 7175, 7176, 5, 417, 0, 0, 7176, 7178, 5, 2, 0, 0, 7177, 7179, 3, 746, 373, 0, 7178, 7177, 1, 0, 0, 0, 7178, 7179, 1, 0, 0, 0, 7179, 7180, 1, 0, 0, 0, 7180, 7286, 5, 3, 0, 0, 7181, 7182, 5, 421, 0, 0, 7182, 7184, 5, 2, 0, 0, 7183, 7185, 7, 97, 0, 0, 7184, 7183, 1, 0, 0, 0, 7184, 7185, 1, 0, 0, 0, 7185, 7190, 1, 0, 0, 0, 7186, 7188, 3, 674, 337, 0, 7187, 7186, 1, 0, 0, 0, 7187, 7188, 1, 0, 0, 0, 7188, 7189, 1, 0, 0, 0, 7189, 7191, 5, 64, 0, 0, 7190, 7187, 1, 0, 0, 0, 7190, 7191, 1, 0, 0, 0, 7191, 7192, 1, 0, 0, 0, 7192, 7193, 3, 730, 365, 0, 7193, 7194, 1, 0, 0, 0, 7194, 7195, 5, 3, 0, 0, 7195, 7286, 1, 0, 0, 0, 7196, 7197, 5, 408, 0, 0, 7197, 7198, 5, 2, 0, 0, 7198, 7199, 3, 674, 337, 0, 7199, 7200, 5, 6, 0, 0, 7200, 7201, 3, 674, 337, 0, 7201, 7202, 5, 3, 0, 0, 7202, 7286, 1, 0, 0, 0, 7203, 7204, 7, 98, 0, 0, 7204, 7286, 3, 534, 267, 0, 7205, 7206, 5, 426, 0, 0, 7206, 7207, 5, 2, 0, 0, 7207, 7208, 5, 266, 0, 0, 7208, 7218, 3, 824, 412, 0, 7209, 7216, 5, 6, 0, 0, 7210, 7211, 5, 424, 0, 0, 7211, 7212, 5, 2, 0, 0, 7212, 7213, 3, 692, 346, 0, 7213, 7214, 5, 3, 0, 0, 7214, 7217, 1, 0, 0, 0, 7215, 7217, 3, 730, 365, 0, 7216, 7210, 1, 0, 0, 0, 7216, 7215, 1, 0, 0, 0, 7217, 7219, 1, 0, 0, 0, 7218, 7209, 1, 0, 0, 0, 7218, 7219, 1, 0, 0, 0, 7219, 7220, 1, 0, 0, 0, 7220, 7221, 5, 3, 0, 0, 7221, 7286, 1, 0, 0, 0, 7222, 7223, 5, 427, 0, 0, 7223, 7224, 5, 2, 0, 0, 7224, 7225, 3, 682, 341, 0, 7225, 7226, 3, 698, 349, 0, 7226, 7227, 5, 3, 0, 0, 7227, 7286, 1, 0, 0, 0, 7228, 7229, 5, 428, 0, 0, 7229, 7230, 5, 2, 0, 0, 7230, 7231, 3, 692, 346, 0, 7231, 7232, 5, 3, 0, 0, 7232, 7286, 1, 0, 0, 0, 7233, 7234, 5, 429, 0, 0, 7234, 7235, 5, 2, 0, 0, 7235, 7236, 3, 696, 348, 0, 7236, 7239, 3, 674, 337, 0, 7237, 7238, 7, 99, 0, 0, 7238, 7240, 5, 378, 0, 0, 7239, 7237, 1, 0, 0, 0, 7239, 7240, 1, 0, 0, 0, 7240, 7241, 1, 0, 0, 0, 7241, 7242, 5, 3, 0, 0, 7242, 7286, 1, 0, 0, 0, 7243, 7244, 5, 430, 0, 0, 7244, 7245, 5, 2, 0, 0, 7245, 7246, 5, 266, 0, 0, 7246, 7249, 3, 824, 412, 0, 7247, 7248, 5, 6, 0, 0, 7248, 7250, 3, 674, 337, 0, 7249, 7247, 1, 0, 0, 0, 7249, 7250, 1, 0, 0, 0, 7250, 7251, 1, 0, 0, 0, 7251, 7252, 5, 3, 0, 0, 7252, 7286, 1, 0, 0, 0, 7253, 7254, 5, 431, 0, 0, 7254, 7255, 5, 2, 0, 0, 7255, 7256, 5, 383, 0, 0, 7256, 7257, 3, 674, 337, 0, 7257, 7258, 5, 6, 0, 0, 7258, 7262, 5, 375, 0, 0, 7259, 7260, 5, 269, 0, 0, 7260, 7263, 5, 450, 0, 0, 7261, 7263, 3, 674, 337, 0, 7262, 7259, 1, 0, 0, 0, 7262, 7261, 1, 0, 0, 0, 7263, 7273, 1, 0, 0, 0, 7264, 7265, 5, 6, 0, 0, 7265, 7271, 5, 339, 0, 0, 7266, 7268, 5, 269, 0, 0, 7267, 7266, 1, 0, 0, 0, 7267, 7268, 1, 0, 0, 0, 7268, 7269, 1, 0, 0, 0, 7269, 7272, 5, 450, 0, 0, 7270, 7272, 5, 385, 0, 0, 7271, 7267, 1, 0, 0, 0, 7271, 7270, 1, 0, 0, 0, 7272, 7274, 1, 0, 0, 0, 7273, 7264, 1, 0, 0, 0, 7273, 7274, 1, 0, 0, 0, 7274, 7275, 1, 0, 0, 0, 7275, 7276, 5, 3, 0, 0, 7276, 7286, 1, 0, 0, 0, 7277, 7278, 5, 432, 0, 0, 7278, 7279, 5, 2, 0, 0, 7279, 7280, 3, 696, 348, 0, 7280, 7281, 3, 674, 337, 0, 7281, 7282, 5, 36, 0, 0, 7282, 7283, 3, 654, 327, 0, 7283, 7284, 5, 3, 0, 0, 7284, 7286, 1, 0, 0, 0, 7285, 7111, 1, 0, 0, 0, 7285, 7117, 1, 0, 0, 0, 7285, 7118, 1, 0, 0, 0, 7285, 7122, 1, 0, 0, 0, 7285, 7123, 1, 0, 0, 0, 7285, 7124, 1, 0, 0, 0, 7285, 7125, 1, 0, 0, 0, 7285, 7126, 1, 0, 0, 0, 7285, 7127, 1, 0, 0, 0, 7285, 7128, 1, 0, 0, 0, 7285, 7135, 1, 0, 0, 0, 7285, 7144, 1, 0, 0, 0, 7285, 7153, 1, 0, 0, 0, 7285, 7166, 1, 0, 0, 0, 7285, 7175, 1, 0, 0, 0, 7285, 7181, 1, 0, 0, 0, 7285, 7196, 1, 0, 0, 0, 7285, 7203, 1, 0, 0, 0, 7285, 7205, 1, 0, 0, 0, 7285, 7222, 1, 0, 0, 0, 7285, 7228, 1, 0, 0, 0, 7285, 7233, 1, 0, 0, 0, 7285, 7243, 1, 0, 0, 0, 7285, 7253, 1, 0, 0, 0, 7285, 7277, 1, 0, 0, 0, 7286, 691, 1, 0, 0, 0, 7287, 7292, 3, 694, 347, 0, 7288, 7289, 5, 6, 0, 0, 7289, 7291, 3, 694, 347, 0, 7290, 7288, 1, 0, 0, 0, 7291, 7294, 1, 0, 0, 0, 7292, 7290, 1, 0, 0, 0, 7292, 7293, 1, 0, 0, 0, 7293, 693, 1, 0, 0, 0, 7294, 7292, 1, 0, 0, 0, 7295, 7298, 3, 674, 337, 0, 7296, 7297, 5, 36, 0, 0, 7297, 7299, 3, 824, 412, 0, 7298, 7296, 1, 0, 0, 0, 7298, 7299, 1, 0, 0, 0, 7299, 695, 1, 0, 0, 0, 7300, 7301, 7, 100, 0, 0, 7301, 697, 1, 0, 0, 0, 7302, 7304, 5, 286, 0, 0, 7303, 7305, 3, 700, 350, 0, 7304, 7303, 1, 0, 0, 0, 7304, 7305, 1, 0, 0, 0, 7305, 7306, 1, 0, 0, 0, 7306, 7308, 3, 682, 341, 0, 7307, 7309, 3, 700, 350, 0, 7308, 7307, 1, 0, 0, 0, 7308, 7309, 1, 0, 0, 0, 7309, 699, 1, 0, 0, 0, 7310, 7311, 5, 147, 0, 0, 7311, 7312, 7, 101, 0, 0, 7312, 701, 1, 0, 0, 0, 7313, 7314, 5, 104, 0, 0, 7314, 7319, 3, 704, 352, 0, 7315, 7316, 5, 6, 0, 0, 7316, 7318, 3, 704, 352, 0, 7317, 7315, 1, 0, 0, 0, 7318, 7321, 1, 0, 0, 0, 7319, 7317, 1, 0, 0, 0, 7319, 7320, 1, 0, 0, 0, 7320, 703, 1, 0, 0, 0, 7321, 7319, 1, 0, 0, 0, 7322, 7323, 3, 818, 409, 0, 7323, 7324, 5, 36, 0, 0, 7324, 7325, 3, 708, 354, 0, 7325, 705, 1, 0, 0, 0, 7326, 7329, 5, 124, 0, 0, 7327, 7330, 3, 708, 354, 0, 7328, 7330, 3, 818, 409, 0, 7329, 7327, 1, 0, 0, 0, 7329, 7328, 1, 0, 0, 0, 7330, 707, 1, 0, 0, 0, 7331, 7333, 5, 2, 0, 0, 7332, 7334, 3, 818, 409, 0, 7333, 7332, 1, 0, 0, 0, 7333, 7334, 1, 0, 0, 0, 7334, 7338, 1, 0, 0, 0, 7335, 7336, 5, 285, 0, 0, 7336, 7337, 5, 147, 0, 0, 7337, 7339, 3, 730, 365, 0, 7338, 7335, 1, 0, 0, 0, 7338, 7339, 1, 0, 0, 0, 7339, 7341, 1, 0, 0, 0, 7340, 7342, 3, 586, 293, 0, 7341, 7340, 1, 0, 0, 0, 7341, 7342, 1, 0, 0, 0, 7342, 7344, 1, 0, 0, 0, 7343, 7345, 3, 710, 355, 0, 7344, 7343, 1, 0, 0, 0, 7344, 7345, 1, 0, 0, 0, 7345, 7346, 1, 0, 0, 0, 7346, 7347, 5, 3, 0, 0, 7347, 709, 1, 0, 0, 0, 7348, 7353, 7, 102, 0, 0, 7349, 7350, 5, 387, 0, 0, 7350, 7351, 3, 712, 356, 0, 7351, 7352, 5, 33, 0, 0, 7352, 7354, 1, 0, 0, 0, 7353, 7349, 1, 0, 0, 0, 7353, 7354, 1, 0, 0, 0, 7354, 7355, 1, 0, 0, 0, 7355, 7356, 3, 712, 356, 0, 7356, 7366, 1, 0, 0, 0, 7357, 7364, 5, 199, 0, 0, 7358, 7359, 5, 434, 0, 0, 7359, 7365, 5, 414, 0, 0, 7360, 7365, 5, 66, 0, 0, 7361, 7365, 5, 467, 0, 0, 7362, 7363, 5, 269, 0, 0, 7363, 7365, 5, 482, 0, 0, 7364, 7358, 1, 0, 0, 0, 7364, 7360, 1, 0, 0, 0, 7364, 7361, 1, 0, 0, 0, 7364, 7362, 1, 0, 0, 0, 7365, 7367, 1, 0, 0, 0, 7366, 7357, 1, 0, 0, 0, 7366, 7367, 1, 0, 0, 0, 7367, 711, 1, 0, 0, 0, 7368, 7371, 5, 362, 0, 0, 7369, 7371, 3, 674, 337, 0, 7370, 7368, 1, 0, 0, 0, 7370, 7369, 1, 0, 0, 0, 7371, 7372, 1, 0, 0, 0, 7372, 7376, 7, 103, 0, 0, 7373, 7374, 5, 434, 0, 0, 7374, 7376, 5, 414, 0, 0, 7375, 7370, 1, 0, 0, 0, 7375, 7373, 1, 0, 0, 0, 7376, 713, 1, 0, 0, 0, 7377, 7385, 3, 716, 358, 0, 7378, 7379, 5, 2, 0, 0, 7379, 7380, 3, 730, 365, 0, 7380, 7381, 5, 6, 0, 0, 7381, 7382, 3, 674, 337, 0, 7382, 7383, 5, 3, 0, 0, 7383, 7385, 1, 0, 0, 0, 7384, 7377, 1, 0, 0, 0, 7384, 7378, 1, 0, 0, 0, 7385, 715, 1, 0, 0, 0, 7386, 7387, 5, 414, 0, 0, 7387, 7389, 5, 2, 0, 0, 7388, 7390, 3, 730, 365, 0, 7389, 7388, 1, 0, 0, 0, 7389, 7390, 1, 0, 0, 0, 7390, 7391, 1, 0, 0, 0, 7391, 7392, 5, 3, 0, 0, 7392, 717, 1, 0, 0, 0, 7393, 7394, 7, 104, 0, 0, 7394, 719, 1, 0, 0, 0, 7395, 7398, 5, 29, 0, 0, 7396, 7398, 3, 722, 361, 0, 7397, 7395, 1, 0, 0, 0, 7397, 7396, 1, 0, 0, 0, 7398, 721, 1, 0, 0, 0, 7399, 7400, 7, 105, 0, 0, 7400, 723, 1, 0, 0, 0, 7401, 7408, 5, 29, 0, 0, 7402, 7403, 5, 278, 0, 0, 7403, 7404, 5, 2, 0, 0, 7404, 7405, 3, 414, 207, 0, 7405, 7406, 5, 3, 0, 0, 7406, 7408, 1, 0, 0, 0, 7407, 7401, 1, 0, 0, 0, 7407, 7402, 1, 0, 0, 0, 7408, 725, 1, 0, 0, 0, 7409, 7416, 3, 720, 360, 0, 7410, 7411, 5, 278, 0, 0, 7411, 7412, 5, 2, 0, 0, 7412, 7413, 3, 414, 207, 0, 7413, 7414, 5, 3, 0, 0, 7414, 7416, 1, 0, 0, 0, 7415, 7409, 1, 0, 0, 0, 7415, 7410, 1, 0, 0, 0, 7416, 727, 1, 0, 0, 0, 7417, 7423, 3, 726, 363, 0, 7418, 7420, 5, 77, 0, 0, 7419, 7418, 1, 0, 0, 0, 7419, 7420, 1, 0, 0, 0, 7420, 7421, 1, 0, 0, 0, 7421, 7423, 7, 106, 0, 0, 7422, 7417, 1, 0, 0, 0, 7422, 7419, 1, 0, 0, 0, 7423, 729, 1, 0, 0, 0, 7424, 7429, 3, 674, 337, 0, 7425, 7426, 5, 6, 0, 0, 7426, 7428, 3, 674, 337, 0, 7427, 7425, 1, 0, 0, 0, 7428, 7431, 1, 0, 0, 0, 7429, 7427, 1, 0, 0, 0, 7429, 7430, 1, 0, 0, 0, 7430, 731, 1, 0, 0, 0, 7431, 7429, 1, 0, 0, 0, 7432, 7433, 5, 2, 0, 0, 7433, 7434, 3, 674, 337, 0, 7434, 7435, 5, 3, 0, 0, 7435, 7438, 1, 0, 0, 0, 7436, 7438, 3, 800, 400, 0, 7437, 7432, 1, 0, 0, 0, 7437, 7436, 1, 0, 0, 0, 7438, 733, 1, 0, 0, 0, 7439, 7442, 3, 674, 337, 0, 7440, 7442, 3, 800, 400, 0, 7441, 7439, 1, 0, 0, 0, 7441, 7440, 1, 0, 0, 0, 7442, 735, 1, 0, 0, 0, 7443, 7448, 3, 738, 369, 0, 7444, 7445, 5, 6, 0, 0, 7445, 7447, 3, 738, 369, 0, 7446, 7444, 1, 0, 0, 0, 7447, 7450, 1, 0, 0, 0, 7448, 7446, 1, 0, 0, 0, 7448, 7449, 1, 0, 0, 0, 7449, 737, 1, 0, 0, 0, 7450, 7448, 1, 0, 0, 0, 7451, 7457, 3, 674, 337, 0, 7452, 7453, 3, 820, 410, 0, 7453, 7454, 7, 107, 0, 0, 7454, 7455, 3, 674, 337, 0, 7455, 7457, 1, 0, 0, 0, 7456, 7451, 1, 0, 0, 0, 7456, 7452, 1, 0, 0, 0, 7457, 739, 1, 0, 0, 0, 7458, 7468, 5, 4, 0, 0, 7459, 7469, 3, 730, 365, 0, 7460, 7465, 3, 740, 370, 0, 7461, 7462, 5, 6, 0, 0, 7462, 7464, 3, 740, 370, 0, 7463, 7461, 1, 0, 0, 0, 7464, 7467, 1, 0, 0, 0, 7465, 7463, 1, 0, 0, 0, 7465, 7466, 1, 0, 0, 0, 7466, 7469, 1, 0, 0, 0, 7467, 7465, 1, 0, 0, 0, 7468, 7459, 1, 0, 0, 0, 7468, 7460, 1, 0, 0, 0, 7468, 7469, 1, 0, 0, 0, 7469, 7470, 1, 0, 0, 0, 7470, 7471, 5, 5, 0, 0, 7471, 741, 1, 0, 0, 0, 7472, 7481, 3, 826, 413, 0, 7473, 7481, 5, 384, 0, 0, 7474, 7481, 5, 264, 0, 0, 7475, 7481, 5, 176, 0, 0, 7476, 7481, 5, 218, 0, 0, 7477, 7481, 5, 261, 0, 0, 7478, 7481, 5, 326, 0, 0, 7479, 7481, 3, 808, 404, 0, 7480, 7472, 1, 0, 0, 0, 7480, 7473, 1, 0, 0, 0, 7480, 7474, 1, 0, 0, 0, 7480, 7475, 1, 0, 0, 0, 7480, 7476, 1, 0, 0, 0, 7480, 7477, 1, 0, 0, 0, 7480, 7478, 1, 0, 0, 0, 7480, 7479, 1, 0, 0, 0, 7481, 743, 1, 0, 0, 0, 7482, 7483, 7, 108, 0, 0, 7483, 745, 1, 0, 0, 0, 7484, 7485, 3, 674, 337, 0, 7485, 7486, 5, 64, 0, 0, 7486, 7489, 3, 674, 337, 0, 7487, 7488, 5, 62, 0, 0, 7488, 7490, 3, 674, 337, 0, 7489, 7487, 1, 0, 0, 0, 7489, 7490, 1, 0, 0, 0, 7490, 7506, 1, 0, 0, 0, 7491, 7492, 3, 674, 337, 0, 7492, 7493, 5, 62, 0, 0, 7493, 7496, 3, 674, 337, 0, 7494, 7495, 5, 64, 0, 0, 7495, 7497, 3, 674, 337, 0, 7496, 7494, 1, 0, 0, 0, 7496, 7497, 1, 0, 0, 0, 7497, 7506, 1, 0, 0, 0, 7498, 7499, 3, 674, 337, 0, 7499, 7500, 5, 127, 0, 0, 7500, 7501, 3, 674, 337, 0, 7501, 7502, 5, 197, 0, 0, 7502, 7503, 3, 674, 337, 0, 7503, 7506, 1, 0, 0, 0, 7504, 7506, 3, 730, 365, 0, 7505, 7484, 1, 0, 0, 0, 7505, 7491, 1, 0, 0, 0, 7505, 7498, 1, 0, 0, 0, 7505, 7504, 1, 0, 0, 0, 7506, 747, 1, 0, 0, 0, 7507, 7508, 5, 102, 0, 0, 7508, 7509, 3, 674, 337, 0, 7509, 7510, 5, 93, 0, 0, 7510, 7511, 3, 674, 337, 0, 7511, 749, 1, 0, 0, 0, 7512, 7515, 5, 11, 0, 0, 7513, 7516, 3, 824, 412, 0, 7514, 7516, 5, 9, 0, 0, 7515, 7513, 1, 0, 0, 0, 7515, 7514, 1, 0, 0, 0, 7516, 7530, 1, 0, 0, 0, 7517, 7526, 5, 4, 0, 0, 7518, 7527, 3, 674, 337, 0, 7519, 7521, 3, 674, 337, 0, 7520, 7519, 1, 0, 0, 0, 7520, 7521, 1, 0, 0, 0, 7521, 7522, 1, 0, 0, 0, 7522, 7524, 5, 8, 0, 0, 7523, 7525, 3, 674, 337, 0, 7524, 7523, 1, 0, 0, 0, 7524, 7525, 1, 0, 0, 0, 7525, 7527, 1, 0, 0, 0, 7526, 7518, 1, 0, 0, 0, 7526, 7520, 1, 0, 0, 0, 7527, 7528, 1, 0, 0, 0, 7528, 7530, 5, 5, 0, 0, 7529, 7512, 1, 0, 0, 0, 7529, 7517, 1, 0, 0, 0, 7530, 751, 1, 0, 0, 0, 7531, 7533, 3, 750, 375, 0, 7532, 7531, 1, 0, 0, 0, 7533, 7534, 1, 0, 0, 0, 7534, 7532, 1, 0, 0, 0, 7534, 7535, 1, 0, 0, 0, 7535, 753, 1, 0, 0, 0, 7536, 7538, 3, 750, 375, 0, 7537, 7536, 1, 0, 0, 0, 7538, 7541, 1, 0, 0, 0, 7539, 7537, 1, 0, 0, 0, 7539, 7540, 1, 0, 0, 0, 7540, 755, 1, 0, 0, 0, 7541, 7539, 1, 0, 0, 0, 7542, 7547, 3, 758, 379, 0, 7543, 7544, 5, 6, 0, 0, 7544, 7546, 3, 758, 379, 0, 7545, 7543, 1, 0, 0, 0, 7546, 7549, 1, 0, 0, 0, 7547, 7545, 1, 0, 0, 0, 7547, 7548, 1, 0, 0, 0, 7548, 757, 1, 0, 0, 0, 7549, 7547, 1, 0, 0, 0, 7550, 7555, 3, 734, 367, 0, 7551, 7552, 5, 36, 0, 0, 7552, 7556, 3, 824, 412, 0, 7553, 7556, 3, 826, 413, 0, 7554, 7556, 1, 0, 0, 0, 7555, 7551, 1, 0, 0, 0, 7555, 7553, 1, 0, 0, 0, 7555, 7554, 1, 0, 0, 0, 7556, 7559, 1, 0, 0, 0, 7557, 7559, 5, 9, 0, 0, 7558, 7550, 1, 0, 0, 0, 7558, 7557, 1, 0, 0, 0, 7559, 759, 1, 0, 0, 0, 7560, 7565, 3, 780, 390, 0, 7561, 7562, 5, 6, 0, 0, 7562, 7564, 3, 780, 390, 0, 7563, 7561, 1, 0, 0, 0, 7564, 7567, 1, 0, 0, 0, 7565, 7563, 1, 0, 0, 0, 7565, 7566, 1, 0, 0, 0, 7566, 761, 1, 0, 0, 0, 7567, 7565, 1, 0, 0, 0, 7568, 7573, 3, 774, 387, 0, 7569, 7570, 5, 6, 0, 0, 7570, 7572, 3, 774, 387, 0, 7571, 7569, 1, 0, 0, 0, 7572, 7575, 1, 0, 0, 0, 7573, 7571, 1, 0, 0, 0, 7573, 7574, 1, 0, 0, 0, 7574, 763, 1, 0, 0, 0, 7575, 7573, 1, 0, 0, 0, 7576, 7581, 3, 790, 395, 0, 7577, 7578, 5, 6, 0, 0, 7578, 7580, 3, 790, 395, 0, 7579, 7577, 1, 0, 0, 0, 7580, 7583, 1, 0, 0, 0, 7581, 7579, 1, 0, 0, 0, 7581, 7582, 1, 0, 0, 0, 7582, 765, 1, 0, 0, 0, 7583, 7581, 1, 0, 0, 0, 7584, 7589, 3, 788, 394, 0, 7585, 7586, 5, 6, 0, 0, 7586, 7588, 3, 788, 394, 0, 7587, 7585, 1, 0, 0, 0, 7588, 7591, 1, 0, 0, 0, 7589, 7587, 1, 0, 0, 0, 7589, 7590, 1, 0, 0, 0, 7590, 767, 1, 0, 0, 0, 7591, 7589, 1, 0, 0, 0, 7592, 7593, 3, 780, 390, 0, 7593, 769, 1, 0, 0, 0, 7594, 7595, 3, 780, 390, 0, 7595, 771, 1, 0, 0, 0, 7596, 7597, 3, 780, 390, 0, 7597, 773, 1, 0, 0, 0, 7598, 7599, 3, 780, 390, 0, 7599, 775, 1, 0, 0, 0, 7600, 7601, 3, 780, 390, 0, 7601, 777, 1, 0, 0, 0, 7602, 7603, 3, 316, 158, 0, 7603, 779, 1, 0, 0, 0, 7604, 7606, 3, 818, 409, 0, 7605, 7607, 3, 752, 376, 0, 7606, 7605, 1, 0, 0, 0, 7606, 7607, 1, 0, 0, 0, 7607, 781, 1, 0, 0, 0, 7608, 7613, 3, 770, 385, 0, 7609, 7610, 5, 6, 0, 0, 7610, 7612, 3, 770, 385, 0, 7611, 7609, 1, 0, 0, 0, 7612, 7615, 1, 0, 0, 0, 7613, 7611, 1, 0, 0, 0, 7613, 7614, 1, 0, 0, 0, 7614, 783, 1, 0, 0, 0, 7615, 7613, 1, 0, 0, 0, 7616, 7621, 3, 818, 409, 0, 7617, 7618, 5, 6, 0, 0, 7618, 7620, 3, 818, 409, 0, 7619, 7617, 1, 0, 0, 0, 7620, 7623, 1, 0, 0, 0, 7621, 7619, 1, 0, 0, 0, 7621, 7622, 1, 0, 0, 0, 7622, 785, 1, 0, 0, 0, 7623, 7621, 1, 0, 0, 0, 7624, 7625, 3, 316, 158, 0, 7625, 787, 1, 0, 0, 0, 7626, 7627, 3, 316, 158, 0, 7627, 789, 1, 0, 0, 0, 7628, 7629, 3, 316, 158, 0, 7629, 791, 1, 0, 0, 0, 7630, 7631, 3, 818, 409, 0, 7631, 793, 1, 0, 0, 0, 7632, 7633, 3, 818, 409, 0, 7633, 795, 1, 0, 0, 0, 7634, 7639, 3, 820, 410, 0, 7635, 7636, 3, 818, 409, 0, 7636, 7637, 3, 752, 376, 0, 7637, 7639, 1, 0, 0, 0, 7638, 7634, 1, 0, 0, 0, 7638, 7635, 1, 0, 0, 0, 7639, 797, 1, 0, 0, 0, 7640, 7645, 3, 820, 410, 0, 7641, 7642, 3, 818, 409, 0, 7642, 7643, 3, 752, 376, 0, 7643, 7645, 1, 0, 0, 0, 7644, 7640, 1, 0, 0, 0, 7644, 7641, 1, 0, 0, 0, 7645, 799, 1, 0, 0, 0, 7646, 7647, 3, 818, 409, 0, 7647, 7648, 3, 754, 377, 0, 7648, 7651, 1, 0, 0, 0, 7649, 7651, 4, 400, 10, 0, 7650, 7646, 1, 0, 0, 0, 7650, 7649, 1, 0, 0, 0, 7651, 801, 1, 0, 0, 0, 7652, 7653, 3, 818, 409, 0, 7653, 803, 1, 0, 0, 0, 7654, 7659, 3, 820, 410, 0, 7655, 7656, 3, 818, 409, 0, 7656, 7657, 3, 752, 376, 0, 7657, 7659, 1, 0, 0, 0, 7658, 7654, 1, 0, 0, 0, 7658, 7655, 1, 0, 0, 0, 7659, 805, 1, 0, 0, 0, 7660, 7665, 3, 820, 410, 0, 7661, 7662, 3, 818, 409, 0, 7662, 7663, 3, 752, 376, 0, 7663, 7665, 1, 0, 0, 0, 7664, 7660, 1, 0, 0, 0, 7664, 7661, 1, 0, 0, 0, 7665, 807, 1, 0, 0, 0, 7666, 7669, 3, 810, 405, 0, 7667, 7668, 5, 487, 0, 0, 7668, 7670, 3, 810, 405, 0, 7669, 7667, 1, 0, 0, 0, 7669, 7670, 1, 0, 0, 0, 7670, 809, 1, 0, 0, 0, 7671, 7683, 5, 558, 0, 0, 7672, 7683, 5, 560, 0, 0, 7673, 7677, 5, 562, 0, 0, 7674, 7676, 5, 588, 0, 0, 7675, 7674, 1, 0, 0, 0, 7676, 7679, 1, 0, 0, 0, 7677, 7675, 1, 0, 0, 0, 7677, 7678, 1, 0, 0, 0, 7678, 7680, 1, 0, 0, 0, 7679, 7677, 1, 0, 0, 0, 7680, 7683, 5, 589, 0, 0, 7681, 7683, 5, 584, 0, 0, 7682, 7671, 1, 0, 0, 0, 7682, 7672, 1, 0, 0, 0, 7682, 7673, 1, 0, 0, 0, 7682, 7681, 1, 0, 0, 0, 7683, 811, 1, 0, 0, 0, 7684, 7686, 7, 29, 0, 0, 7685, 7684, 1, 0, 0, 0, 7685, 7686, 1, 0, 0, 0, 7686, 7687, 1, 0, 0, 0, 7687, 7688, 5, 571, 0, 0, 7688, 813, 1, 0, 0, 0, 7689, 7695, 3, 822, 411, 0, 7690, 7695, 5, 52, 0, 0, 7691, 7695, 5, 49, 0, 0, 7692, 7695, 5, 89, 0, 0, 7693, 7695, 5, 524, 0, 0, 7694, 7689, 1, 0, 0, 0, 7694, 7690, 1, 0, 0, 0, 7694, 7691, 1, 0, 0, 0, 7694, 7692, 1, 0, 0, 0, 7694, 7693, 1, 0, 0, 0, 7695, 815, 1, 0, 0, 0, 7696, 7701, 3, 814, 407, 0, 7697, 7698, 5, 6, 0, 0, 7698, 7700, 3, 814, 407, 0, 7699, 7697, 1, 0, 0, 0, 7700, 7703, 1, 0, 0, 0, 7701, 7699, 1, 0, 0, 0, 7701, 7702, 1, 0, 0, 0, 7702, 817, 1, 0, 0, 0, 7703, 7701, 1, 0, 0, 0, 7704, 7709, 3, 826, 413, 0, 7705, 7709, 3, 828, 414, 0, 7706, 7709, 3, 830, 415, 0, 7707, 7709, 3, 930, 465, 0, 7708, 7704, 1, 0, 0, 0, 7708, 7705, 1, 0, 0, 0, 7708, 7706, 1, 0, 0, 0, 7708, 7707, 1, 0, 0, 0, 7709, 819, 1, 0, 0, 0, 7710, 7715, 3, 826, 413, 0, 7711, 7715, 3, 828, 414, 0, 7712, 7715, 3, 930, 465, 0, 7713, 7715, 3, 832, 416, 0, 7714, 7710, 1, 0, 0, 0, 7714, 7711, 1, 0, 0, 0, 7714, 7712, 1, 0, 0, 0, 7714, 7713, 1, 0, 0, 0, 7715, 821, 1, 0, 0, 0, 7716, 7721, 3, 826, 413, 0, 7717, 7721, 3, 828, 414, 0, 7718, 7721, 3, 830, 415, 0, 7719, 7721, 3, 832, 416, 0, 7720, 7716, 1, 0, 0, 0, 7720, 7717, 1, 0, 0, 0, 7720, 7718, 1, 0, 0, 0, 7720, 7719, 1, 0, 0, 0, 7721, 823, 1, 0, 0, 0, 7722, 7726, 3, 822, 411, 0, 7723, 7726, 3, 930, 465, 0, 7724, 7726, 3, 834, 417, 0, 7725, 7722, 1, 0, 0, 0, 7725, 7723, 1, 0, 0, 0, 7725, 7724, 1, 0, 0, 0, 7726, 825, 1, 0, 0, 0, 7727, 7730, 5, 549, 0, 0, 7728, 7729, 5, 487, 0, 0, 7729, 7731, 3, 810, 405, 0, 7730, 7728, 1, 0, 0, 0, 7730, 7731, 1, 0, 0, 0, 7731, 7739, 1, 0, 0, 0, 7732, 7739, 3, 808, 404, 0, 7733, 7739, 5, 550, 0, 0, 7734, 7739, 5, 554, 0, 0, 7735, 7739, 5, 574, 0, 0, 7736, 7739, 5, 575, 0, 0, 7737, 7739, 3, 930, 465, 0, 7738, 7727, 1, 0, 0, 0, 7738, 7732, 1, 0, 0, 0, 7738, 7733, 1, 0, 0, 0, 7738, 7734, 1, 0, 0, 0, 7738, 7735, 1, 0, 0, 0, 7738, 7736, 1, 0, 0, 0, 7738, 7737, 1, 0, 0, 0, 7739, 827, 1, 0, 0, 0, 7740, 7741, 7, 109, 0, 0, 7741, 829, 1, 0, 0, 0, 7742, 7794, 5, 387, 0, 0, 7743, 7794, 5, 388, 0, 0, 7744, 7794, 3, 662, 331, 0, 7745, 7794, 5, 390, 0, 0, 7746, 7794, 5, 391, 0, 0, 7747, 7794, 3, 664, 332, 0, 7748, 7794, 5, 393, 0, 0, 7749, 7794, 5, 394, 0, 0, 7750, 7794, 5, 395, 0, 0, 7751, 7794, 5, 396, 0, 0, 7752, 7794, 5, 397, 0, 0, 7753, 7794, 5, 398, 0, 0, 7754, 7794, 5, 399, 0, 0, 7755, 7794, 5, 470, 0, 0, 7756, 7794, 5, 400, 0, 0, 7757, 7794, 5, 401, 0, 0, 7758, 7794, 5, 402, 0, 0, 7759, 7794, 5, 403, 0, 0, 7760, 7794, 5, 404, 0, 0, 7761, 7794, 5, 405, 0, 0, 7762, 7794, 5, 406, 0, 0, 7763, 7794, 5, 407, 0, 0, 7764, 7794, 5, 489, 0, 0, 7765, 7794, 5, 408, 0, 0, 7766, 7794, 3, 658, 329, 0, 7767, 7794, 5, 453, 0, 0, 7768, 7794, 5, 410, 0, 0, 7769, 7794, 5, 411, 0, 0, 7770, 7794, 5, 412, 0, 0, 7771, 7794, 5, 413, 0, 0, 7772, 7794, 5, 414, 0, 0, 7773, 7794, 5, 415, 0, 0, 7774, 7794, 5, 416, 0, 0, 7775, 7794, 5, 417, 0, 0, 7776, 7794, 5, 418, 0, 0, 7777, 7794, 5, 419, 0, 0, 7778, 7794, 5, 420, 0, 0, 7779, 7794, 5, 421, 0, 0, 7780, 7794, 5, 422, 0, 0, 7781, 7794, 5, 423, 0, 0, 7782, 7794, 5, 424, 0, 0, 7783, 7794, 5, 425, 0, 0, 7784, 7794, 5, 426, 0, 0, 7785, 7794, 5, 427, 0, 0, 7786, 7794, 5, 428, 0, 0, 7787, 7794, 5, 476, 0, 0, 7788, 7794, 5, 429, 0, 0, 7789, 7794, 5, 430, 0, 0, 7790, 7794, 5, 431, 0, 0, 7791, 7794, 5, 432, 0, 0, 7792, 7794, 5, 474, 0, 0, 7793, 7742, 1, 0, 0, 0, 7793, 7743, 1, 0, 0, 0, 7793, 7744, 1, 0, 0, 0, 7793, 7745, 1, 0, 0, 0, 7793, 7746, 1, 0, 0, 0, 7793, 7747, 1, 0, 0, 0, 7793, 7748, 1, 0, 0, 0, 7793, 7749, 1, 0, 0, 0, 7793, 7750, 1, 0, 0, 0, 7793, 7751, 1, 0, 0, 0, 7793, 7752, 1, 0, 0, 0, 7793, 7753, 1, 0, 0, 0, 7793, 7754, 1, 0, 0, 0, 7793, 7755, 1, 0, 0, 0, 7793, 7756, 1, 0, 0, 0, 7793, 7757, 1, 0, 0, 0, 7793, 7758, 1, 0, 0, 0, 7793, 7759, 1, 0, 0, 0, 7793, 7760, 1, 0, 0, 0, 7793, 7761, 1, 0, 0, 0, 7793, 7762, 1, 0, 0, 0, 7793, 7763, 1, 0, 0, 0, 7793, 7764, 1, 0, 0, 0, 7793, 7765, 1, 0, 0, 0, 7793, 7766, 1, 0, 0, 0, 7793, 7767, 1, 0, 0, 0, 7793, 7768, 1, 0, 0, 0, 7793, 7769, 1, 0, 0, 0, 7793, 7770, 1, 0, 0, 0, 7793, 7771, 1, 0, 0, 0, 7793, 7772, 1, 0, 0, 0, 7793, 7773, 1, 0, 0, 0, 7793, 7774, 1, 0, 0, 0, 7793, 7775, 1, 0, 0, 0, 7793, 7776, 1, 0, 0, 0, 7793, 7777, 1, 0, 0, 0, 7793, 7778, 1, 0, 0, 0, 7793, 7779, 1, 0, 0, 0, 7793, 7780, 1, 0, 0, 0, 7793, 7781, 1, 0, 0, 0, 7793, 7782, 1, 0, 0, 0, 7793, 7783, 1, 0, 0, 0, 7793, 7784, 1, 0, 0, 0, 7793, 7785, 1, 0, 0, 0, 7793, 7786, 1, 0, 0, 0, 7793, 7787, 1, 0, 0, 0, 7793, 7788, 1, 0, 0, 0, 7793, 7789, 1, 0, 0, 0, 7793, 7790, 1, 0, 0, 0, 7793, 7791, 1, 0, 0, 0, 7793, 7792, 1, 0, 0, 0, 7794, 831, 1, 0, 0, 0, 7795, 7796, 7, 110, 0, 0, 7796, 833, 1, 0, 0, 0, 7797, 7798, 7, 111, 0, 0, 7798, 835, 1, 0, 0, 0, 7799, 7801, 3, 838, 419, 0, 7800, 7799, 1, 0, 0, 0, 7800, 7801, 1, 0, 0, 0, 7801, 7812, 1, 0, 0, 0, 7802, 7810, 5, 178, 0, 0, 7803, 7807, 3, 840, 420, 0, 7804, 7807, 5, 178, 0, 0, 7805, 7807, 3, 838, 419, 0, 7806, 7803, 1, 0, 0, 0, 7806, 7804, 1, 0, 0, 0, 7806, 7805, 1, 0, 0, 0, 7807, 7808, 1, 0, 0, 0, 7808, 7806, 1, 0, 0, 0, 7808, 7809, 1, 0, 0, 0, 7809, 7811, 1, 0, 0, 0, 7810, 7806, 1, 0, 0, 0, 7810, 7811, 1, 0, 0, 0, 7811, 7813, 1, 0, 0, 0, 7812, 7802, 1, 0, 0, 0, 7812, 7813, 1, 0, 0, 0, 7813, 7814, 1, 0, 0, 0, 7814, 7818, 5, 146, 0, 0, 7815, 7817, 3, 846, 423, 0, 7816, 7815, 1, 0, 0, 0, 7817, 7820, 1, 0, 0, 0, 7818, 7816, 1, 0, 0, 0, 7818, 7819, 1, 0, 0, 0, 7819, 7822, 1, 0, 0, 0, 7820, 7818, 1, 0, 0, 0, 7821, 7823, 3, 924, 462, 0, 7822, 7821, 1, 0, 0, 0, 7822, 7823, 1, 0, 0, 0, 7823, 7824, 1, 0, 0, 0, 7824, 7826, 5, 454, 0, 0, 7825, 7827, 3, 928, 464, 0, 7826, 7825, 1, 0, 0, 0, 7826, 7827, 1, 0, 0, 0, 7827, 837, 1, 0, 0, 0, 7828, 7829, 5, 18, 0, 0, 7829, 7830, 3, 928, 464, 0, 7830, 7831, 5, 19, 0, 0, 7831, 839, 1, 0, 0, 0, 7832, 7879, 3, 928, 464, 0, 7833, 7834, 5, 496, 0, 0, 7834, 7837, 5, 62, 0, 0, 7835, 7838, 5, 28, 0, 0, 7836, 7838, 3, 818, 409, 0, 7837, 7835, 1, 0, 0, 0, 7837, 7836, 1, 0, 0, 0, 7838, 7880, 1, 0, 0, 0, 7839, 7841, 5, 497, 0, 0, 7840, 7839, 1, 0, 0, 0, 7840, 7841, 1, 0, 0, 0, 7841, 7842, 1, 0, 0, 0, 7842, 7844, 3, 652, 326, 0, 7843, 7845, 3, 98, 49, 0, 7844, 7843, 1, 0, 0, 0, 7844, 7845, 1, 0, 0, 0, 7845, 7848, 1, 0, 0, 0, 7846, 7847, 5, 77, 0, 0, 7847, 7849, 5, 78, 0, 0, 7848, 7846, 1, 0, 0, 0, 7848, 7849, 1, 0, 0, 0, 7849, 7855, 1, 0, 0, 0, 7850, 7853, 3, 844, 422, 0, 7851, 7853, 5, 53, 0, 0, 7852, 7850, 1, 0, 0, 0, 7852, 7851, 1, 0, 0, 0, 7853, 7854, 1, 0, 0, 0, 7854, 7856, 3, 932, 466, 0, 7855, 7852, 1, 0, 0, 0, 7855, 7856, 1, 0, 0, 0, 7856, 7880, 1, 0, 0, 0, 7857, 7859, 5, 269, 0, 0, 7858, 7857, 1, 0, 0, 0, 7858, 7859, 1, 0, 0, 0, 7859, 7860, 1, 0, 0, 0, 7860, 7862, 5, 324, 0, 0, 7861, 7858, 1, 0, 0, 0, 7861, 7862, 1, 0, 0, 0, 7862, 7863, 1, 0, 0, 0, 7863, 7875, 5, 172, 0, 0, 7864, 7865, 5, 2, 0, 0, 7865, 7870, 3, 842, 421, 0, 7866, 7867, 5, 6, 0, 0, 7867, 7869, 3, 842, 421, 0, 7868, 7866, 1, 0, 0, 0, 7869, 7872, 1, 0, 0, 0, 7870, 7868, 1, 0, 0, 0, 7870, 7871, 1, 0, 0, 0, 7871, 7873, 1, 0, 0, 0, 7872, 7870, 1, 0, 0, 0, 7873, 7874, 5, 3, 0, 0, 7874, 7876, 1, 0, 0, 0, 7875, 7864, 1, 0, 0, 0, 7875, 7876, 1, 0, 0, 0, 7876, 7877, 1, 0, 0, 0, 7877, 7878, 7, 112, 0, 0, 7878, 7880, 3, 560, 280, 0, 7879, 7833, 1, 0, 0, 0, 7879, 7840, 1, 0, 0, 0, 7879, 7861, 1, 0, 0, 0, 7880, 7881, 1, 0, 0, 0, 7881, 7882, 5, 7, 0, 0, 7882, 841, 1, 0, 0, 0, 7883, 7884, 3, 928, 464, 0, 7884, 7885, 3, 652, 326, 0, 7885, 843, 1, 0, 0, 0, 7886, 7887, 7, 113, 0, 0, 7887, 845, 1, 0, 0, 0, 7888, 7889, 3, 836, 418, 0, 7889, 7890, 5, 7, 0, 0, 7890, 7913, 1, 0, 0, 0, 7891, 7913, 3, 874, 437, 0, 7892, 7913, 3, 876, 438, 0, 7893, 7913, 3, 852, 426, 0, 7894, 7913, 3, 860, 430, 0, 7895, 7913, 3, 864, 432, 0, 7896, 7913, 3, 866, 433, 0, 7897, 7913, 3, 870, 435, 0, 7898, 7913, 3, 872, 436, 0, 7899, 7913, 3, 880, 440, 0, 7900, 7913, 3, 884, 442, 0, 7901, 7913, 3, 886, 443, 0, 7902, 7913, 3, 848, 424, 0, 7903, 7913, 3, 850, 425, 0, 7904, 7913, 3, 854, 427, 0, 7905, 7913, 3, 890, 445, 0, 7906, 7913, 3, 894, 447, 0, 7907, 7913, 3, 898, 449, 0, 7908, 7913, 3, 914, 457, 0, 7909, 7913, 3, 916, 458, 0, 7910, 7913, 3, 918, 459, 0, 7911, 7913, 3, 920, 460, 0, 7912, 7888, 1, 0, 0, 0, 7912, 7891, 1, 0, 0, 0, 7912, 7892, 1, 0, 0, 0, 7912, 7893, 1, 0, 0, 0, 7912, 7894, 1, 0, 0, 0, 7912, 7895, 1, 0, 0, 0, 7912, 7896, 1, 0, 0, 0, 7912, 7897, 1, 0, 0, 0, 7912, 7898, 1, 0, 0, 0, 7912, 7899, 1, 0, 0, 0, 7912, 7900, 1, 0, 0, 0, 7912, 7901, 1, 0, 0, 0, 7912, 7902, 1, 0, 0, 0, 7912, 7903, 1, 0, 0, 0, 7912, 7904, 1, 0, 0, 0, 7912, 7905, 1, 0, 0, 0, 7912, 7906, 1, 0, 0, 0, 7912, 7907, 1, 0, 0, 0, 7912, 7908, 1, 0, 0, 0, 7912, 7909, 1, 0, 0, 0, 7912, 7910, 1, 0, 0, 0, 7912, 7911, 1, 0, 0, 0, 7913, 847, 1, 0, 0, 0, 7914, 7915, 5, 498, 0, 0, 7915, 7916, 3, 932, 466, 0, 7916, 7917, 5, 7, 0, 0, 7917, 849, 1, 0, 0, 0, 7918, 7919, 5, 433, 0, 0, 7919, 7926, 3, 928, 464, 0, 7920, 7922, 5, 2, 0, 0, 7921, 7923, 3, 730, 365, 0, 7922, 7921, 1, 0, 0, 0, 7922, 7923, 1, 0, 0, 0, 7923, 7924, 1, 0, 0, 0, 7924, 7925, 5, 3, 0, 0, 7925, 7927, 5, 7, 0, 0, 7926, 7920, 1, 0, 0, 0, 7926, 7927, 1, 0, 0, 0, 7927, 7938, 1, 0, 0, 0, 7928, 7929, 5, 57, 0, 0, 7929, 7930, 3, 928, 464, 0, 7930, 7932, 5, 2, 0, 0, 7931, 7933, 3, 730, 365, 0, 7932, 7931, 1, 0, 0, 0, 7932, 7933, 1, 0, 0, 0, 7933, 7934, 1, 0, 0, 0, 7934, 7935, 5, 3, 0, 0, 7935, 7936, 5, 7, 0, 0, 7936, 7938, 1, 0, 0, 0, 7937, 7918, 1, 0, 0, 0, 7937, 7928, 1, 0, 0, 0, 7938, 851, 1, 0, 0, 0, 7939, 7940, 3, 858, 429, 0, 7940, 7941, 3, 844, 422, 0, 7941, 7942, 3, 932, 466, 0, 7942, 7943, 5, 7, 0, 0, 7943, 853, 1, 0, 0, 0, 7944, 7946, 5, 499, 0, 0, 7945, 7947, 7, 114, 0, 0, 7946, 7945, 1, 0, 0, 0, 7946, 7947, 1, 0, 0, 0, 7947, 7948, 1, 0, 0, 0, 7948, 7949, 5, 500, 0, 0, 7949, 7954, 3, 856, 428, 0, 7950, 7951, 5, 6, 0, 0, 7951, 7953, 3, 856, 428, 0, 7952, 7950, 1, 0, 0, 0, 7953, 7956, 1, 0, 0, 0, 7954, 7952, 1, 0, 0, 0, 7954, 7955, 1, 0, 0, 0, 7955, 7957, 1, 0, 0, 0, 7956, 7954, 1, 0, 0, 0, 7957, 7958, 5, 7, 0, 0, 7958, 855, 1, 0, 0, 0, 7959, 7960, 3, 858, 429, 0, 7960, 7961, 3, 844, 422, 0, 7961, 7962, 3, 818, 409, 0, 7962, 857, 1, 0, 0, 0, 7963, 7966, 3, 316, 158, 0, 7964, 7966, 5, 28, 0, 0, 7965, 7963, 1, 0, 0, 0, 7965, 7964, 1, 0, 0, 0, 7966, 7973, 1, 0, 0, 0, 7967, 7968, 5, 4, 0, 0, 7968, 7969, 3, 674, 337, 0, 7969, 7970, 5, 5, 0, 0, 7970, 7972, 1, 0, 0, 0, 7971, 7967, 1, 0, 0, 0, 7972, 7975, 1, 0, 0, 0, 7973, 7971, 1, 0, 0, 0, 7973, 7974, 1, 0, 0, 0, 7974, 859, 1, 0, 0, 0, 7975, 7973, 1, 0, 0, 0, 7976, 7977, 5, 220, 0, 0, 7977, 7978, 3, 932, 466, 0, 7978, 7982, 5, 93, 0, 0, 7979, 7981, 3, 846, 423, 0, 7980, 7979, 1, 0, 0, 0, 7981, 7984, 1, 0, 0, 0, 7982, 7980, 1, 0, 0, 0, 7982, 7983, 1, 0, 0, 0, 7983, 7996, 1, 0, 0, 0, 7984, 7982, 1, 0, 0, 0, 7985, 7986, 5, 502, 0, 0, 7986, 7987, 3, 674, 337, 0, 7987, 7991, 5, 93, 0, 0, 7988, 7990, 3, 846, 423, 0, 7989, 7988, 1, 0, 0, 0, 7990, 7993, 1, 0, 0, 0, 7991, 7989, 1, 0, 0, 0, 7991, 7992, 1, 0, 0, 0, 7992, 7995, 1, 0, 0, 0, 7993, 7991, 1, 0, 0, 0, 7994, 7985, 1, 0, 0, 0, 7995, 7998, 1, 0, 0, 0, 7996, 7994, 1, 0, 0, 0, 7996, 7997, 1, 0, 0, 0, 7997, 8000, 1, 0, 0, 0, 7998, 7996, 1, 0, 0, 0, 7999, 8001, 3, 862, 431, 0, 8000, 7999, 1, 0, 0, 0, 8000, 8001, 1, 0, 0, 0, 8001, 8002, 1, 0, 0, 0, 8002, 8003, 5, 454, 0, 0, 8003, 8004, 5, 220, 0, 0, 8004, 8005, 5, 7, 0, 0, 8005, 861, 1, 0, 0, 0, 8006, 8010, 5, 58, 0, 0, 8007, 8009, 3, 846, 423, 0, 8008, 8007, 1, 0, 0, 0, 8009, 8012, 1, 0, 0, 0, 8010, 8008, 1, 0, 0, 0, 8010, 8011, 1, 0, 0, 0, 8011, 863, 1, 0, 0, 0, 8012, 8010, 1, 0, 0, 0, 8013, 8015, 5, 40, 0, 0, 8014, 8016, 3, 932, 466, 0, 8015, 8014, 1, 0, 0, 0, 8015, 8016, 1, 0, 0, 0, 8016, 8026, 1, 0, 0, 0, 8017, 8018, 5, 102, 0, 0, 8018, 8019, 3, 730, 365, 0, 8019, 8023, 5, 93, 0, 0, 8020, 8022, 3, 846, 423, 0, 8021, 8020, 1, 0, 0, 0, 8022, 8025, 1, 0, 0, 0, 8023, 8021, 1, 0, 0, 0, 8023, 8024, 1, 0, 0, 0, 8024, 8027, 1, 0, 0, 0, 8025, 8023, 1, 0, 0, 0, 8026, 8017, 1, 0, 0, 0, 8027, 8028, 1, 0, 0, 0, 8028, 8026, 1, 0, 0, 0, 8028, 8029, 1, 0, 0, 0, 8029, 8031, 1, 0, 0, 0, 8030, 8032, 3, 862, 431, 0, 8031, 8030, 1, 0, 0, 0, 8031, 8032, 1, 0, 0, 0, 8032, 8033, 1, 0, 0, 0, 8033, 8034, 5, 454, 0, 0, 8034, 8035, 5, 40, 0, 0, 8035, 8036, 5, 7, 0, 0, 8036, 865, 1, 0, 0, 0, 8037, 8039, 3, 838, 419, 0, 8038, 8037, 1, 0, 0, 0, 8038, 8039, 1, 0, 0, 0, 8039, 8044, 1, 0, 0, 0, 8040, 8041, 5, 503, 0, 0, 8041, 8045, 3, 674, 337, 0, 8042, 8043, 5, 62, 0, 0, 8043, 8045, 3, 868, 434, 0, 8044, 8040, 1, 0, 0, 0, 8044, 8042, 1, 0, 0, 0, 8044, 8045, 1, 0, 0, 0, 8045, 8046, 1, 0, 0, 0, 8046, 8047, 3, 882, 441, 0, 8047, 867, 1, 0, 0, 0, 8048, 8049, 3, 314, 157, 0, 8049, 8072, 5, 68, 0, 0, 8050, 8052, 3, 818, 409, 0, 8051, 8053, 3, 534, 267, 0, 8052, 8051, 1, 0, 0, 0, 8052, 8053, 1, 0, 0, 0, 8053, 8073, 1, 0, 0, 0, 8054, 8073, 3, 560, 280, 0, 8055, 8073, 3, 520, 260, 0, 8056, 8057, 5, 202, 0, 0, 8057, 8060, 3, 674, 337, 0, 8058, 8059, 5, 100, 0, 0, 8059, 8061, 3, 730, 365, 0, 8060, 8058, 1, 0, 0, 0, 8060, 8061, 1, 0, 0, 0, 8061, 8073, 1, 0, 0, 0, 8062, 8064, 5, 504, 0, 0, 8063, 8062, 1, 0, 0, 0, 8063, 8064, 1, 0, 0, 0, 8064, 8065, 1, 0, 0, 0, 8065, 8066, 3, 674, 337, 0, 8066, 8067, 5, 24, 0, 0, 8067, 8070, 3, 674, 337, 0, 8068, 8069, 5, 147, 0, 0, 8069, 8071, 3, 674, 337, 0, 8070, 8068, 1, 0, 0, 0, 8070, 8071, 1, 0, 0, 0, 8071, 8073, 1, 0, 0, 0, 8072, 8050, 1, 0, 0, 0, 8072, 8054, 1, 0, 0, 0, 8072, 8055, 1, 0, 0, 0, 8072, 8056, 1, 0, 0, 0, 8072, 8063, 1, 0, 0, 0, 8073, 869, 1, 0, 0, 0, 8074, 8076, 3, 838, 419, 0, 8075, 8074, 1, 0, 0, 0, 8075, 8076, 1, 0, 0, 0, 8076, 8077, 1, 0, 0, 0, 8077, 8078, 5, 505, 0, 0, 8078, 8081, 3, 314, 157, 0, 8079, 8080, 5, 506, 0, 0, 8080, 8082, 5, 571, 0, 0, 8081, 8079, 1, 0, 0, 0, 8081, 8082, 1, 0, 0, 0, 8082, 8083, 1, 0, 0, 0, 8083, 8084, 5, 68, 0, 0, 8084, 8085, 5, 35, 0, 0, 8085, 8086, 3, 674, 337, 0, 8086, 8087, 3, 882, 441, 0, 8087, 871, 1, 0, 0, 0, 8088, 8090, 7, 115, 0, 0, 8089, 8091, 3, 928, 464, 0, 8090, 8089, 1, 0, 0, 0, 8090, 8091, 1, 0, 0, 0, 8091, 8094, 1, 0, 0, 0, 8092, 8093, 5, 102, 0, 0, 8093, 8095, 3, 932, 466, 0, 8094, 8092, 1, 0, 0, 0, 8094, 8095, 1, 0, 0, 0, 8095, 8096, 1, 0, 0, 0, 8096, 8097, 5, 7, 0, 0, 8097, 873, 1, 0, 0, 0, 8098, 8113, 5, 508, 0, 0, 8099, 8100, 5, 268, 0, 0, 8100, 8114, 3, 932, 466, 0, 8101, 8108, 5, 509, 0, 0, 8102, 8103, 5, 202, 0, 0, 8103, 8104, 3, 674, 337, 0, 8104, 8105, 5, 100, 0, 0, 8105, 8106, 3, 730, 365, 0, 8106, 8109, 1, 0, 0, 0, 8107, 8109, 3, 560, 280, 0, 8108, 8102, 1, 0, 0, 0, 8108, 8107, 1, 0, 0, 0, 8109, 8114, 1, 0, 0, 0, 8110, 8112, 3, 932, 466, 0, 8111, 8110, 1, 0, 0, 0, 8111, 8112, 1, 0, 0, 0, 8112, 8114, 1, 0, 0, 0, 8113, 8099, 1, 0, 0, 0, 8113, 8101, 1, 0, 0, 0, 8113, 8111, 1, 0, 0, 0, 8114, 8115, 1, 0, 0, 0, 8115, 8116, 5, 7, 0, 0, 8116, 875, 1, 0, 0, 0, 8117, 8147, 5, 510, 0, 0, 8118, 8120, 7, 116, 0, 0, 8119, 8118, 1, 0, 0, 0, 8119, 8120, 1, 0, 0, 0, 8120, 8133, 1, 0, 0, 0, 8121, 8134, 3, 826, 413, 0, 8122, 8123, 5, 511, 0, 0, 8123, 8134, 3, 808, 404, 0, 8124, 8131, 3, 808, 404, 0, 8125, 8126, 5, 6, 0, 0, 8126, 8128, 3, 674, 337, 0, 8127, 8125, 1, 0, 0, 0, 8128, 8129, 1, 0, 0, 0, 8129, 8127, 1, 0, 0, 0, 8129, 8130, 1, 0, 0, 0, 8130, 8132, 1, 0, 0, 0, 8131, 8127, 1, 0, 0, 0, 8131, 8132, 1, 0, 0, 0, 8132, 8134, 1, 0, 0, 0, 8133, 8121, 1, 0, 0, 0, 8133, 8122, 1, 0, 0, 0, 8133, 8124, 1, 0, 0, 0, 8133, 8134, 1, 0, 0, 0, 8134, 8144, 1, 0, 0, 0, 8135, 8136, 5, 100, 0, 0, 8136, 8141, 3, 878, 439, 0, 8137, 8138, 5, 6, 0, 0, 8138, 8140, 3, 878, 439, 0, 8139, 8137, 1, 0, 0, 0, 8140, 8143, 1, 0, 0, 0, 8141, 8139, 1, 0, 0, 0, 8141, 8142, 1, 0, 0, 0, 8142, 8145, 1, 0, 0, 0, 8143, 8141, 1, 0, 0, 0, 8144, 8135, 1, 0, 0, 0, 8144, 8145, 1, 0, 0, 0, 8145, 8146, 1, 0, 0, 0, 8146, 8148, 5, 7, 0, 0, 8147, 8119, 1, 0, 0, 0, 8147, 8148, 1, 0, 0, 0, 8148, 877, 1, 0, 0, 0, 8149, 8150, 3, 826, 413, 0, 8150, 8151, 5, 10, 0, 0, 8151, 8152, 3, 674, 337, 0, 8152, 879, 1, 0, 0, 0, 8153, 8154, 5, 518, 0, 0, 8154, 8157, 3, 932, 466, 0, 8155, 8156, 5, 6, 0, 0, 8156, 8158, 3, 932, 466, 0, 8157, 8155, 1, 0, 0, 0, 8157, 8158, 1, 0, 0, 0, 8158, 8159, 1, 0, 0, 0, 8159, 8160, 5, 7, 0, 0, 8160, 881, 1, 0, 0, 0, 8161, 8165, 5, 519, 0, 0, 8162, 8164, 3, 846, 423, 0, 8163, 8162, 1, 0, 0, 0, 8164, 8167, 1, 0, 0, 0, 8165, 8163, 1, 0, 0, 0, 8165, 8166, 1, 0, 0, 0, 8166, 8168, 1, 0, 0, 0, 8167, 8165, 1, 0, 0, 0, 8168, 8169, 5, 454, 0, 0, 8169, 8171, 5, 519, 0, 0, 8170, 8172, 3, 928, 464, 0, 8171, 8170, 1, 0, 0, 0, 8171, 8172, 1, 0, 0, 0, 8172, 8173, 1, 0, 0, 0, 8173, 8174, 5, 7, 0, 0, 8174, 883, 1, 0, 0, 0, 8175, 8177, 3, 4, 2, 0, 8176, 8178, 3, 888, 444, 0, 8177, 8176, 1, 0, 0, 0, 8177, 8178, 1, 0, 0, 0, 8178, 8179, 1, 0, 0, 0, 8179, 8180, 5, 7, 0, 0, 8180, 885, 1, 0, 0, 0, 8181, 8182, 5, 202, 0, 0, 8182, 8198, 3, 674, 337, 0, 8183, 8185, 3, 888, 444, 0, 8184, 8183, 1, 0, 0, 0, 8184, 8185, 1, 0, 0, 0, 8185, 8188, 1, 0, 0, 0, 8186, 8187, 5, 100, 0, 0, 8187, 8189, 3, 730, 365, 0, 8188, 8186, 1, 0, 0, 0, 8188, 8189, 1, 0, 0, 0, 8189, 8199, 1, 0, 0, 0, 8190, 8191, 5, 100, 0, 0, 8191, 8193, 3, 730, 365, 0, 8192, 8190, 1, 0, 0, 0, 8192, 8193, 1, 0, 0, 0, 8193, 8195, 1, 0, 0, 0, 8194, 8196, 3, 888, 444, 0, 8195, 8194, 1, 0, 0, 0, 8195, 8196, 1, 0, 0, 0, 8196, 8199, 1, 0, 0, 0, 8197, 8199, 1, 0, 0, 0, 8198, 8184, 1, 0, 0, 0, 8198, 8192, 1, 0, 0, 0, 8198, 8197, 1, 0, 0, 0, 8199, 8200, 1, 0, 0, 0, 8200, 8201, 5, 7, 0, 0, 8201, 887, 1, 0, 0, 0, 8202, 8204, 5, 71, 0, 0, 8203, 8205, 5, 346, 0, 0, 8204, 8203, 1, 0, 0, 0, 8204, 8205, 1, 0, 0, 0, 8205, 8206, 1, 0, 0, 0, 8206, 8207, 3, 730, 365, 0, 8207, 889, 1, 0, 0, 0, 8208, 8240, 5, 520, 0, 0, 8209, 8214, 3, 922, 461, 0, 8210, 8212, 5, 269, 0, 0, 8211, 8210, 1, 0, 0, 0, 8211, 8212, 1, 0, 0, 0, 8212, 8213, 1, 0, 0, 0, 8213, 8215, 5, 324, 0, 0, 8214, 8211, 1, 0, 0, 0, 8214, 8215, 1, 0, 0, 0, 8215, 8216, 1, 0, 0, 0, 8216, 8224, 5, 62, 0, 0, 8217, 8225, 3, 560, 280, 0, 8218, 8219, 5, 202, 0, 0, 8219, 8222, 3, 932, 466, 0, 8220, 8221, 5, 100, 0, 0, 8221, 8223, 3, 730, 365, 0, 8222, 8220, 1, 0, 0, 0, 8222, 8223, 1, 0, 0, 0, 8223, 8225, 1, 0, 0, 0, 8224, 8217, 1, 0, 0, 0, 8224, 8218, 1, 0, 0, 0, 8225, 8241, 1, 0, 0, 0, 8226, 8238, 3, 818, 409, 0, 8227, 8228, 5, 2, 0, 0, 8228, 8233, 3, 892, 446, 0, 8229, 8230, 5, 6, 0, 0, 8230, 8232, 3, 892, 446, 0, 8231, 8229, 1, 0, 0, 0, 8232, 8235, 1, 0, 0, 0, 8233, 8231, 1, 0, 0, 0, 8233, 8234, 1, 0, 0, 0, 8234, 8236, 1, 0, 0, 0, 8235, 8233, 1, 0, 0, 0, 8236, 8237, 5, 3, 0, 0, 8237, 8239, 1, 0, 0, 0, 8238, 8227, 1, 0, 0, 0, 8238, 8239, 1, 0, 0, 0, 8239, 8241, 1, 0, 0, 0, 8240, 8209, 1, 0, 0, 0, 8240, 8226, 1, 0, 0, 0, 8241, 8242, 1, 0, 0, 0, 8242, 8243, 5, 7, 0, 0, 8243, 891, 1, 0, 0, 0, 8244, 8245, 3, 818, 409, 0, 8245, 8246, 5, 20, 0, 0, 8246, 8248, 1, 0, 0, 0, 8247, 8244, 1, 0, 0, 0, 8247, 8248, 1, 0, 0, 0, 8248, 8249, 1, 0, 0, 0, 8249, 8250, 3, 674, 337, 0, 8250, 893, 1, 0, 0, 0, 8251, 8253, 5, 61, 0, 0, 8252, 8254, 3, 896, 448, 0, 8253, 8252, 1, 0, 0, 0, 8253, 8254, 1, 0, 0, 0, 8254, 8256, 1, 0, 0, 0, 8255, 8257, 3, 332, 166, 0, 8256, 8255, 1, 0, 0, 0, 8256, 8257, 1, 0, 0, 0, 8257, 8258, 1, 0, 0, 0, 8258, 8259, 3, 922, 461, 0, 8259, 8260, 5, 71, 0, 0, 8260, 8261, 3, 730, 365, 0, 8261, 8262, 5, 7, 0, 0, 8262, 895, 1, 0, 0, 0, 8263, 8278, 5, 268, 0, 0, 8264, 8278, 5, 293, 0, 0, 8265, 8278, 5, 207, 0, 0, 8266, 8278, 5, 249, 0, 0, 8267, 8269, 7, 50, 0, 0, 8268, 8267, 1, 0, 0, 0, 8268, 8269, 1, 0, 0, 0, 8269, 8270, 1, 0, 0, 0, 8270, 8278, 3, 674, 337, 0, 8271, 8278, 5, 30, 0, 0, 8272, 8275, 7, 117, 0, 0, 8273, 8276, 3, 674, 337, 0, 8274, 8276, 5, 30, 0, 0, 8275, 8273, 1, 0, 0, 0, 8275, 8274, 1, 0, 0, 0, 8275, 8276, 1, 0, 0, 0, 8276, 8278, 1, 0, 0, 0, 8277, 8263, 1, 0, 0, 0, 8277, 8264, 1, 0, 0, 0, 8277, 8265, 1, 0, 0, 0, 8277, 8266, 1, 0, 0, 0, 8277, 8268, 1, 0, 0, 0, 8277, 8271, 1, 0, 0, 0, 8277, 8272, 1, 0, 0, 0, 8278, 897, 1, 0, 0, 0, 8279, 8281, 5, 265, 0, 0, 8280, 8282, 3, 896, 448, 0, 8281, 8280, 1, 0, 0, 0, 8281, 8282, 1, 0, 0, 0, 8282, 8283, 1, 0, 0, 0, 8283, 8284, 3, 922, 461, 0, 8284, 8285, 5, 7, 0, 0, 8285, 899, 1, 0, 0, 0, 8286, 8288, 3, 572, 286, 0, 8287, 8286, 1, 0, 0, 0, 8287, 8288, 1, 0, 0, 0, 8288, 8289, 1, 0, 0, 0, 8289, 8290, 5, 525, 0, 0, 8290, 8292, 5, 71, 0, 0, 8291, 8293, 5, 81, 0, 0, 8292, 8291, 1, 0, 0, 0, 8292, 8293, 1, 0, 0, 0, 8293, 8294, 1, 0, 0, 0, 8294, 8296, 3, 774, 387, 0, 8295, 8297, 5, 9, 0, 0, 8296, 8295, 1, 0, 0, 0, 8296, 8297, 1, 0, 0, 0, 8297, 8302, 1, 0, 0, 0, 8298, 8300, 5, 36, 0, 0, 8299, 8298, 1, 0, 0, 0, 8299, 8300, 1, 0, 0, 0, 8300, 8301, 1, 0, 0, 0, 8301, 8303, 3, 818, 409, 0, 8302, 8299, 1, 0, 0, 0, 8302, 8303, 1, 0, 0, 0, 8303, 8304, 1, 0, 0, 0, 8304, 8305, 5, 100, 0, 0, 8305, 8306, 3, 902, 451, 0, 8306, 8307, 5, 80, 0, 0, 8307, 8309, 3, 674, 337, 0, 8308, 8310, 3, 904, 452, 0, 8309, 8308, 1, 0, 0, 0, 8310, 8311, 1, 0, 0, 0, 8311, 8309, 1, 0, 0, 0, 8311, 8312, 1, 0, 0, 0, 8312, 901, 1, 0, 0, 0, 8313, 8315, 5, 81, 0, 0, 8314, 8313, 1, 0, 0, 0, 8314, 8315, 1, 0, 0, 0, 8315, 8316, 1, 0, 0, 0, 8316, 8318, 3, 774, 387, 0, 8317, 8319, 5, 9, 0, 0, 8318, 8317, 1, 0, 0, 0, 8318, 8319, 1, 0, 0, 0, 8319, 8325, 1, 0, 0, 0, 8320, 8323, 3, 564, 282, 0, 8321, 8323, 3, 608, 304, 0, 8322, 8320, 1, 0, 0, 0, 8322, 8321, 1, 0, 0, 0, 8323, 8325, 1, 0, 0, 0, 8324, 8314, 1, 0, 0, 0, 8324, 8322, 1, 0, 0, 0, 8325, 8330, 1, 0, 0, 0, 8326, 8328, 5, 36, 0, 0, 8327, 8326, 1, 0, 0, 0, 8327, 8328, 1, 0, 0, 0, 8328, 8329, 1, 0, 0, 0, 8329, 8331, 3, 818, 409, 0, 8330, 8327, 1, 0, 0, 0, 8330, 8331, 1, 0, 0, 0, 8331, 903, 1, 0, 0, 0, 8332, 8333, 5, 102, 0, 0, 8333, 8336, 5, 526, 0, 0, 8334, 8335, 5, 33, 0, 0, 8335, 8337, 3, 674, 337, 0, 8336, 8334, 1, 0, 0, 0, 8336, 8337, 1, 0, 0, 0, 8337, 8338, 1, 0, 0, 0, 8338, 8343, 5, 93, 0, 0, 8339, 8344, 3, 908, 454, 0, 8340, 8344, 5, 182, 0, 0, 8341, 8342, 5, 57, 0, 0, 8342, 8344, 5, 270, 0, 0, 8343, 8339, 1, 0, 0, 0, 8343, 8340, 1, 0, 0, 0, 8343, 8341, 1, 0, 0, 0, 8344, 8359, 1, 0, 0, 0, 8345, 8346, 5, 102, 0, 0, 8346, 8347, 5, 77, 0, 0, 8347, 8350, 5, 526, 0, 0, 8348, 8349, 5, 33, 0, 0, 8349, 8351, 3, 674, 337, 0, 8350, 8348, 1, 0, 0, 0, 8350, 8351, 1, 0, 0, 0, 8351, 8352, 1, 0, 0, 0, 8352, 8356, 5, 93, 0, 0, 8353, 8357, 3, 906, 453, 0, 8354, 8355, 5, 57, 0, 0, 8355, 8357, 5, 270, 0, 0, 8356, 8353, 1, 0, 0, 0, 8356, 8354, 1, 0, 0, 0, 8357, 8359, 1, 0, 0, 0, 8358, 8332, 1, 0, 0, 0, 8358, 8345, 1, 0, 0, 0, 8359, 905, 1, 0, 0, 0, 8360, 8362, 5, 241, 0, 0, 8361, 8363, 3, 144, 72, 0, 8362, 8361, 1, 0, 0, 0, 8362, 8363, 1, 0, 0, 0, 8363, 8367, 1, 0, 0, 0, 8364, 8365, 5, 463, 0, 0, 8365, 8366, 7, 76, 0, 0, 8366, 8368, 5, 450, 0, 0, 8367, 8364, 1, 0, 0, 0, 8367, 8368, 1, 0, 0, 0, 8368, 8369, 1, 0, 0, 0, 8369, 8370, 3, 910, 455, 0, 8370, 907, 1, 0, 0, 0, 8371, 8372, 5, 369, 0, 0, 8372, 8390, 5, 333, 0, 0, 8373, 8374, 3, 800, 400, 0, 8374, 8375, 5, 10, 0, 0, 8375, 8376, 3, 912, 456, 0, 8376, 8391, 1, 0, 0, 0, 8377, 8378, 3, 144, 72, 0, 8378, 8379, 5, 10, 0, 0, 8379, 8380, 5, 2, 0, 0, 8380, 8385, 3, 912, 456, 0, 8381, 8382, 5, 6, 0, 0, 8382, 8384, 3, 912, 456, 0, 8383, 8381, 1, 0, 0, 0, 8384, 8387, 1, 0, 0, 0, 8385, 8383, 1, 0, 0, 0, 8385, 8386, 1, 0, 0, 0, 8386, 8388, 1, 0, 0, 0, 8387, 8385, 1, 0, 0, 0, 8388, 8389, 5, 3, 0, 0, 8389, 8391, 1, 0, 0, 0, 8390, 8373, 1, 0, 0, 0, 8390, 8377, 1, 0, 0, 0, 8391, 8392, 1, 0, 0, 0, 8392, 8390, 1, 0, 0, 0, 8392, 8393, 1, 0, 0, 0, 8393, 909, 1, 0, 0, 0, 8394, 8395, 5, 422, 0, 0, 8395, 8396, 5, 2, 0, 0, 8396, 8401, 3, 912, 456, 0, 8397, 8398, 5, 6, 0, 0, 8398, 8400, 3, 912, 456, 0, 8399, 8397, 1, 0, 0, 0, 8400, 8403, 1, 0, 0, 0, 8401, 8399, 1, 0, 0, 0, 8401, 8402, 1, 0, 0, 0, 8402, 8404, 1, 0, 0, 0, 8403, 8401, 1, 0, 0, 0, 8404, 8405, 5, 3, 0, 0, 8405, 8409, 1, 0, 0, 0, 8406, 8407, 5, 53, 0, 0, 8407, 8409, 5, 422, 0, 0, 8408, 8394, 1, 0, 0, 0, 8408, 8406, 1, 0, 0, 0, 8409, 911, 1, 0, 0, 0, 8410, 8413, 3, 588, 294, 0, 8411, 8413, 5, 53, 0, 0, 8412, 8410, 1, 0, 0, 0, 8412, 8411, 1, 0, 0, 0, 8413, 913, 1, 0, 0, 0, 8414, 8415, 5, 157, 0, 0, 8415, 8416, 3, 922, 461, 0, 8416, 8417, 5, 7, 0, 0, 8417, 915, 1, 0, 0, 0, 8418, 8419, 5, 78, 0, 0, 8419, 8420, 5, 7, 0, 0, 8420, 917, 1, 0, 0, 0, 8421, 8427, 7, 67, 0, 0, 8422, 8424, 5, 33, 0, 0, 8423, 8425, 5, 269, 0, 0, 8424, 8423, 1, 0, 0, 0, 8424, 8425, 1, 0, 0, 0, 8425, 8426, 1, 0, 0, 0, 8426, 8428, 5, 153, 0, 0, 8427, 8422, 1, 0, 0, 0, 8427, 8428, 1, 0, 0, 0, 8428, 8429, 1, 0, 0, 0, 8429, 8430, 5, 7, 0, 0, 8430, 919, 1, 0, 0, 0, 8431, 8432, 5, 333, 0, 0, 8432, 8433, 3, 316, 158, 0, 8433, 8434, 5, 94, 0, 0, 8434, 8435, 5, 53, 0, 0, 8435, 8436, 5, 7, 0, 0, 8436, 8444, 1, 0, 0, 0, 8437, 8440, 5, 313, 0, 0, 8438, 8441, 3, 316, 158, 0, 8439, 8441, 5, 30, 0, 0, 8440, 8438, 1, 0, 0, 0, 8440, 8439, 1, 0, 0, 0, 8441, 8442, 1, 0, 0, 0, 8442, 8444, 5, 7, 0, 0, 8443, 8431, 1, 0, 0, 0, 8443, 8437, 1, 0, 0, 0, 8444, 921, 1, 0, 0, 0, 8445, 8448, 3, 818, 409, 0, 8446, 8448, 5, 28, 0, 0, 8447, 8445, 1, 0, 0, 0, 8447, 8446, 1, 0, 0, 0, 8448, 923, 1, 0, 0, 0, 8449, 8466, 5, 517, 0, 0, 8450, 8451, 5, 102, 0, 0, 8451, 8456, 3, 926, 463, 0, 8452, 8453, 5, 82, 0, 0, 8453, 8455, 3, 926, 463, 0, 8454, 8452, 1, 0, 0, 0, 8455, 8458, 1, 0, 0, 0, 8456, 8454, 1, 0, 0, 0, 8456, 8457, 1, 0, 0, 0, 8457, 8459, 1, 0, 0, 0, 8458, 8456, 1, 0, 0, 0, 8459, 8463, 5, 93, 0, 0, 8460, 8462, 3, 846, 423, 0, 8461, 8460, 1, 0, 0, 0, 8462, 8465, 1, 0, 0, 0, 8463, 8461, 1, 0, 0, 0, 8463, 8464, 1, 0, 0, 0, 8464, 8467, 1, 0, 0, 0, 8465, 8463, 1, 0, 0, 0, 8466, 8450, 1, 0, 0, 0, 8467, 8468, 1, 0, 0, 0, 8468, 8466, 1, 0, 0, 0, 8468, 8469, 1, 0, 0, 0, 8469, 925, 1, 0, 0, 0, 8470, 8474, 3, 928, 464, 0, 8471, 8472, 5, 511, 0, 0, 8472, 8474, 3, 808, 404, 0, 8473, 8470, 1, 0, 0, 0, 8473, 8471, 1, 0, 0, 0, 8474, 927, 1, 0, 0, 0, 8475, 8478, 3, 818, 409, 0, 8476, 8478, 3, 930, 465, 0, 8477, 8475, 1, 0, 0, 0, 8477, 8476, 1, 0, 0, 0, 8478, 929, 1, 0, 0, 0, 8479, 8480, 7, 118, 0, 0, 8480, 931, 1, 0, 0, 0, 8481, 8483, 3, 756, 378, 0, 8482, 8481, 1, 0, 0, 0, 8482, 8483, 1, 0, 0, 0, 8483, 8485, 1, 0, 0, 0, 8484, 8486, 3, 580, 290, 0, 8485, 8484, 1, 0, 0, 0, 8485, 8486, 1, 0, 0, 0, 8486, 8488, 1, 0, 0, 0, 8487, 8489, 3, 610, 305, 0, 8488, 8487, 1, 0, 0, 0, 8488, 8489, 1, 0, 0, 0, 8489, 8491, 1, 0, 0, 0, 8490, 8492, 3, 638, 319, 0, 8491, 8490, 1, 0, 0, 0, 8491, 8492, 1, 0, 0, 0, 8492, 8494, 1, 0, 0, 0, 8493, 8495, 3, 600, 300, 0, 8494, 8493, 1, 0, 0, 0, 8494, 8495, 1, 0, 0, 0, 8495, 8498, 1, 0, 0, 0, 8496, 8497, 5, 67, 0, 0, 8497, 8499, 3, 674, 337, 0, 8498, 8496, 1, 0, 0, 0, 8498, 8499, 1, 0, 0, 0, 8499, 8501, 1, 0, 0, 0, 8500, 8502, 3, 702, 351, 0, 8501, 8500, 1, 0, 0, 0, 8501, 8502, 1, 0, 0, 0, 8502, 933, 1, 0, 0, 0, 1188, 937, 944, 1064, 1066, 1075, 1080, 1086, 1121, 1131, 1137, 1142, 1149, 1154, 1161, 1172, 1180, 1184, 1196, 1202, 1208, 1212, 1217, 1221, 1234, 1244, 1246, 1252, 1257, 1270, 1273, 1278, 1283, 1294, 1298, 1310, 1314, 1317, 1321, 1333, 1351, 1358, 1366, 1371, 1378, 1386, 1392, 1400, 1408, 1412, 1426, 1431, 1436, 1448, 1454, 1466, 1471, 1481, 1487, 1492, 1500, 1505, 1512, 1517, 1522, 1532, 1537, 1542, 1549, 1553, 1567, 1573, 1579, 1584, 1591, 1603, 1611, 1619, 1635, 1644, 1653, 1662, 1666, 1678, 1686, 1696, 1716, 1721, 1724, 1731, 1734, 1738, 1742, 1745, 1750, 1755, 1759, 1768, 1774, 1778, 1787, 1790, 1796, 1805, 1817, 1821, 1825, 1830, 1833, 1839, 1841, 1843, 1847, 1853, 1857, 1862, 1867, 1871, 1874, 1881, 1894, 1907, 1921, 1938, 1948, 1955, 1960, 1964, 1971, 1976, 1979, 1981, 1986, 1990, 1994, 1998, 2003, 2006, 2010, 2013, 2017, 2025, 2030, 2033, 2037, 2043, 2052, 2056, 2062, 2064, 2073, 2078, 2090, 2095, 2099, 2103, 2108, 2112, 2115, 2118, 2121, 2124, 2127, 2132, 2135, 2138, 2141, 2144, 2147, 2153, 2157, 2160, 2163, 2166, 2169, 2171, 2178, 2186, 2196, 2206, 2211, 2214, 2219, 2224, 2229, 2232, 2237, 2246, 2248, 2252, 2255, 2259, 2264, 2269, 2273, 2276, 2280, 2283, 2288, 2291, 2296, 2299, 2303, 2306, 2309, 2314, 2317, 2325, 2337, 2341, 2348, 2353, 2356, 2359, 2362, 2367, 2378, 2384, 2388, 2391, 2394, 2399, 2406, 2409, 2413, 2421, 2426, 2429, 2432, 2439, 2444, 2453, 2456, 2459, 2464, 2467, 2479, 2489, 2506, 2510, 2514, 2516, 2533, 2535, 2551, 2562, 2565, 2568, 2577, 2586, 2602, 2605, 2608, 2616, 2620, 2627, 2636, 2640, 2646, 2650, 2653, 2656, 2659, 2662, 2668, 2672, 2677, 2681, 2684, 2687, 2690, 2695, 2701, 2705, 2709, 2713, 2719, 2721, 2726, 2732, 2738, 2742, 2757, 2762, 2765, 2767, 2770, 2774, 2778, 2781, 2784, 2792, 2798, 2800, 2806, 2811, 2816, 2820, 2827, 2829, 2840, 2879, 2889, 2891, 2894, 2898, 2902, 2912, 2914, 2920, 2922, 2931, 2943, 2957, 2962, 2965, 2972, 2977, 2985, 2987, 2993, 2998, 3002, 3007, 3013, 3020, 3026, 3028, 3037, 3043, 3051, 3057, 3062, 3067, 3075, 3090, 3092, 3096, 3100, 3103, 3106, 3115, 3118, 3121, 3127, 3133, 3137, 3149, 3155, 3158, 3163, 3167, 3174, 3184, 3186, 3210, 3222, 3227, 3229, 3233, 3236, 3239, 3249, 3252, 3262, 3267, 3272, 3275, 3278, 3286, 3292, 3299, 3307, 3310, 3321, 3325, 3331, 3338, 3341, 3350, 3364, 3367, 3381, 3392, 3395, 3407, 3412, 3425, 3430, 3443, 3452, 3455, 3458, 3465, 3468, 3480, 3486, 3488, 3496, 3504, 3512, 3524, 3529, 3540, 3551, 3559, 3567, 3574, 3581, 3583, 3586, 3591, 3596, 3615, 3624, 3627, 3654, 3663, 3666, 3670, 3674, 3678, 3685, 3689, 3693, 3697, 3701, 3706, 3710, 3715, 3721, 3726, 3733, 3737, 3743, 3747, 3752, 3760, 3766, 3771, 3778, 3783, 3787, 3792, 3798, 3805, 3810, 3817, 3822, 3829, 3833, 3841, 3845, 3847, 3850, 3855, 3865, 3880, 3883, 3891, 3898, 3903, 3909, 3913, 3920, 3925, 3928, 3931, 3935, 3944, 3962, 3965, 3997, 4002, 4008, 4028, 4033, 4039, 4042, 4046, 4050, 4056, 4059, 4063, 4067, 4072, 4075, 4078, 4081, 4094, 4100, 4108, 4115, 4120, 4123, 4130, 4133, 4141, 4144, 4149, 4156, 4159, 4179, 4191, 4194, 4200, 4205, 4214, 4222, 4227, 4233, 4240, 4248, 4251, 4262, 4264, 4278, 4284, 4292, 4294, 4300, 4304, 4307, 4310, 4315, 4320, 4324, 4327, 4330, 4333, 4336, 4344, 4355, 4358, 4361, 4366, 4369, 4373, 4377, 4383, 4391, 4394, 4407, 4412, 4414, 4419, 4426, 4433, 4442, 4450, 4458, 4465, 4473, 4480, 4488, 4492, 4496, 4498, 4504, 4509, 4513, 4520, 4525, 4530, 4535, 4537, 4547, 4557, 4573, 4591, 4603, 4610, 4625, 4630, 4633, 4638, 4643, 4648, 4651, 4654, 4659, 4666, 4670, 4675, 4682, 4686, 4692, 4701, 4710, 4722, 4724, 4737, 4743, 4747, 4749, 4756, 4769, 4776, 4778, 4794, 4798, 4802, 4807, 4812, 4817, 4822, 4825, 4837, 4890, 4899, 4903, 4912, 4916, 4925, 4929, 4934, 4937, 4941, 4946, 4948, 4957, 4962, 4973, 4977, 4991, 4999, 5037, 5039, 5058, 5061, 5088, 5092, 5096, 5100, 5104, 5107, 5122, 5129, 5143, 5156, 5181, 5200, 5215, 5231, 5238, 5249, 5252, 5271, 5274, 5287, 5291, 5311, 5323, 5327, 5349, 5353, 5363, 5367, 5373, 5377, 5381, 5385, 5392, 5397, 5408, 5412, 5415, 5420, 5426, 5437, 5441, 5444, 5448, 5452, 5455, 5465, 5468, 5472, 5477, 5483, 5486, 5491, 5494, 5501, 5503, 5509, 5513, 5522, 5527, 5529, 5539, 5542, 5547, 5555, 5558, 5563, 5565, 5567, 5573, 5590, 5596, 5609, 5615, 5619, 5624, 5654, 5669, 5674, 5678, 5691, 5695, 5697, 5706, 5712, 5714, 5718, 5721, 5724, 5727, 5730, 5732, 5735, 5739, 5747, 5752, 5755, 5761, 5765, 5769, 5774, 5776, 5780, 5784, 5791, 5797, 5801, 5803, 5805, 5818, 5826, 5834, 5845, 5854, 5859, 5863, 5867, 5874, 5877, 5879, 5887, 5891, 5894, 5901, 5908, 5913, 5920, 5923, 5925, 5928, 5934, 5939, 5943, 5950, 5960, 5967, 5970, 5973, 5977, 5988, 5991, 5994, 5997, 6000, 6007, 6010, 6013, 6020, 6032, 6039, 6041, 6046, 6051, 6053, 6059, 6066, 6071, 6076, 6080, 6084, 6088, 6090, 6094, 6098, 6101, 6104, 6106, 6116, 6118, 6123, 6127, 6132, 6136, 6143, 6148, 6152, 6155, 6161, 6164, 6183, 6190, 6194, 6197, 6201, 6205, 6208, 6211, 6216, 6225, 6232, 6236, 6240, 6244, 6247, 6249, 6254, 6258, 6263, 6269, 6276, 6281, 6286, 6295, 6302, 6310, 6321, 6326, 6330, 6333, 6337, 6342, 6346, 6351, 6359, 6370, 6375, 6379, 6382, 6385, 6387, 6390, 6393, 6396, 6400, 6404, 6408, 6410, 6419, 6424, 6430, 6434, 6436, 6443, 6448, 6454, 6456, 6460, 6467, 6472, 6475, 6481, 6485, 6491, 6500, 6506, 6508, 6513, 6516, 6525, 6532, 6534, 6541, 6546, 6549, 6559, 6570, 6575, 6579, 6587, 6597, 6604, 6610, 6621, 6627, 6637, 6646, 6650, 6653, 6655, 6657, 6661, 6669, 6672, 6677, 6682, 6689, 6691, 6697, 6701, 6704, 6709, 6712, 6714, 6720, 6729, 6735, 6738, 6746, 6749, 6753, 6759, 6761, 6764, 6768, 6773, 6780, 6787, 6789, 6795, 6797, 6802, 6804, 6808, 6817, 6821, 6829, 6831, 6845, 6848, 6856, 6865, 6871, 6876, 6884, 6886, 6891, 6895, 6900, 6905, 6911, 6927, 6929, 6938, 6953, 6958, 6961, 6967, 6972, 6985, 6990, 6994, 7001, 7020, 7032, 7037, 7045, 7047, 7049, 7058, 7061, 7066, 7071, 7075, 7078, 7087, 7095, 7100, 7102, 7105, 7109, 7120, 7141, 7149, 7162, 7172, 7178, 7184, 7187, 7190, 7216, 7218, 7239, 7249, 7262, 7267, 7271, 7273, 7285, 7292, 7298, 7304, 7308, 7319, 7329, 7333, 7338, 7341, 7344, 7353, 7364, 7366, 7370, 7375, 7384, 7389, 7397, 7407, 7415, 7419, 7422, 7429, 7437, 7441, 7448, 7456, 7465, 7468, 7480, 7489, 7496, 7505, 7515, 7520, 7524, 7526, 7529, 7534, 7539, 7547, 7555, 7558, 7565, 7573, 7581, 7589, 7606, 7613, 7621, 7638, 7644, 7650, 7658, 7664, 7669, 7677, 7682, 7685, 7694, 7701, 7708, 7714, 7720, 7725, 7730, 7738, 7793, 7800, 7806, 7808, 7810, 7812, 7818, 7822, 7826, 7837, 7840, 7844, 7848, 7852, 7855, 7858, 7861, 7870, 7875, 7879, 7912, 7922, 7926, 7932, 7937, 7946, 7954, 7965, 7973, 7982, 7991, 7996, 8000, 8010, 8015, 8023, 8028, 8031, 8038, 8044, 8052, 8060, 8063, 8070, 8072, 8075, 8081, 8090, 8094, 8108, 8111, 8113, 8119, 8129, 8131, 8133, 8141, 8144, 8147, 8157, 8165, 8171, 8177, 8184, 8188, 8192, 8195, 8198, 8204, 8211, 8214, 8222, 8224, 8233, 8238, 8240, 8247, 8253, 8256, 8268, 8275, 8277, 8281, 8287, 8292, 8296, 8299, 8302, 8311, 8314, 8318, 8322, 8324, 8327, 8330, 8336, 8343, 8350, 8356, 8358, 8362, 8367, 8385, 8390, 8392, 8401, 8408, 8412, 8424, 8427, 8440, 8443, 8447, 8456, 8463, 8468, 8473, 8477, 8482, 8485, 8488, 8491, 8494, 8498, 8501] \ No newline at end of file +[4, 1, 590, 8496, 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, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 2, 346, 7, 346, 2, 347, 7, 347, 2, 348, 7, 348, 2, 349, 7, 349, 2, 350, 7, 350, 2, 351, 7, 351, 2, 352, 7, 352, 2, 353, 7, 353, 2, 354, 7, 354, 2, 355, 7, 355, 2, 356, 7, 356, 2, 357, 7, 357, 2, 358, 7, 358, 2, 359, 7, 359, 2, 360, 7, 360, 2, 361, 7, 361, 2, 362, 7, 362, 2, 363, 7, 363, 2, 364, 7, 364, 2, 365, 7, 365, 2, 366, 7, 366, 2, 367, 7, 367, 2, 368, 7, 368, 2, 369, 7, 369, 2, 370, 7, 370, 2, 371, 7, 371, 2, 372, 7, 372, 2, 373, 7, 373, 2, 374, 7, 374, 2, 375, 7, 375, 2, 376, 7, 376, 2, 377, 7, 377, 2, 378, 7, 378, 2, 379, 7, 379, 2, 380, 7, 380, 2, 381, 7, 381, 2, 382, 7, 382, 2, 383, 7, 383, 2, 384, 7, 384, 2, 385, 7, 385, 2, 386, 7, 386, 2, 387, 7, 387, 2, 388, 7, 388, 2, 389, 7, 389, 2, 390, 7, 390, 2, 391, 7, 391, 2, 392, 7, 392, 2, 393, 7, 393, 2, 394, 7, 394, 2, 395, 7, 395, 2, 396, 7, 396, 2, 397, 7, 397, 2, 398, 7, 398, 2, 399, 7, 399, 2, 400, 7, 400, 2, 401, 7, 401, 2, 402, 7, 402, 2, 403, 7, 403, 2, 404, 7, 404, 2, 405, 7, 405, 2, 406, 7, 406, 2, 407, 7, 407, 2, 408, 7, 408, 2, 409, 7, 409, 2, 410, 7, 410, 2, 411, 7, 411, 2, 412, 7, 412, 2, 413, 7, 413, 2, 414, 7, 414, 2, 415, 7, 415, 2, 416, 7, 416, 2, 417, 7, 417, 2, 418, 7, 418, 2, 419, 7, 419, 2, 420, 7, 420, 2, 421, 7, 421, 2, 422, 7, 422, 2, 423, 7, 423, 2, 424, 7, 424, 2, 425, 7, 425, 2, 426, 7, 426, 2, 427, 7, 427, 2, 428, 7, 428, 2, 429, 7, 429, 2, 430, 7, 430, 2, 431, 7, 431, 2, 432, 7, 432, 2, 433, 7, 433, 2, 434, 7, 434, 2, 435, 7, 435, 2, 436, 7, 436, 2, 437, 7, 437, 2, 438, 7, 438, 2, 439, 7, 439, 2, 440, 7, 440, 2, 441, 7, 441, 2, 442, 7, 442, 2, 443, 7, 443, 2, 444, 7, 444, 2, 445, 7, 445, 2, 446, 7, 446, 2, 447, 7, 447, 2, 448, 7, 448, 2, 449, 7, 449, 2, 450, 7, 450, 2, 451, 7, 451, 2, 452, 7, 452, 2, 453, 7, 453, 2, 454, 7, 454, 2, 455, 7, 455, 2, 456, 7, 456, 2, 457, 7, 457, 2, 458, 7, 458, 2, 459, 7, 459, 2, 460, 7, 460, 2, 461, 7, 461, 2, 462, 7, 462, 2, 463, 7, 463, 2, 464, 7, 464, 2, 465, 7, 465, 1, 0, 5, 0, 934, 8, 0, 10, 0, 12, 0, 937, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 3, 1, 943, 8, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 1063, 8, 2, 3, 2, 1065, 8, 2, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 3, 4, 1074, 8, 4, 1, 4, 5, 4, 1077, 8, 4, 10, 4, 12, 4, 1080, 9, 4, 1, 5, 1, 5, 1, 5, 3, 5, 1085, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 1120, 8, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 1130, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 1136, 8, 7, 1, 7, 5, 7, 1139, 8, 7, 10, 7, 12, 7, 1142, 9, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1148, 8, 8, 1, 8, 5, 8, 1151, 8, 8, 10, 8, 12, 8, 1154, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 1160, 8, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 1171, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 5, 11, 1177, 8, 11, 10, 11, 12, 11, 1180, 9, 11, 1, 11, 3, 11, 1183, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1195, 8, 11, 1, 11, 1, 11, 1, 11, 1, 11, 3, 11, 1201, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1207, 8, 12, 1, 12, 1, 12, 3, 12, 1211, 8, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1216, 8, 12, 1, 12, 1, 12, 3, 12, 1220, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1233, 8, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1243, 8, 12, 3, 12, 1245, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1251, 8, 13, 1, 13, 5, 13, 1254, 8, 13, 10, 13, 12, 13, 1257, 9, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 3, 15, 1269, 8, 15, 1, 15, 3, 15, 1272, 8, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1277, 8, 15, 1, 15, 5, 15, 1280, 8, 15, 10, 15, 12, 15, 1283, 9, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 3, 17, 1293, 8, 17, 1, 18, 1, 18, 3, 18, 1297, 8, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 3, 19, 1309, 8, 19, 1, 20, 1, 20, 3, 20, 1313, 8, 20, 1, 20, 3, 20, 1316, 8, 20, 1, 20, 1, 20, 3, 20, 1320, 8, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1332, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1350, 8, 21, 1, 22, 1, 22, 1, 22, 5, 22, 1355, 8, 22, 10, 22, 12, 22, 1358, 9, 22, 1, 23, 1, 23, 1, 23, 5, 23, 1363, 8, 23, 10, 23, 12, 23, 1366, 9, 23, 1, 24, 1, 24, 3, 24, 1370, 8, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 3, 25, 1377, 8, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1385, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 3, 27, 1391, 8, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1399, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 3, 28, 1407, 8, 28, 1, 29, 1, 29, 3, 29, 1411, 8, 29, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 1425, 8, 31, 1, 32, 1, 32, 1, 32, 3, 32, 1430, 8, 32, 1, 33, 1, 33, 1, 33, 3, 33, 1435, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1447, 8, 34, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1453, 8, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 3, 38, 1465, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1470, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1480, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1486, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1491, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1499, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1504, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1511, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1516, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1521, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1531, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1536, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1541, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1548, 8, 38, 1, 38, 1, 38, 3, 38, 1552, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1566, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1572, 8, 38, 1, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1578, 8, 38, 1, 38, 1, 38, 1, 38, 3, 38, 1583, 8, 38, 1, 39, 1, 39, 1, 39, 5, 39, 1588, 8, 39, 10, 39, 12, 39, 1591, 9, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 3, 40, 1602, 8, 40, 1, 41, 1, 41, 1, 41, 1, 41, 5, 41, 1608, 8, 41, 10, 41, 12, 41, 1611, 9, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 1618, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1634, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 3, 46, 1643, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 5, 46, 1650, 8, 46, 10, 46, 12, 46, 1653, 9, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1661, 8, 46, 1, 46, 1, 46, 3, 46, 1665, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1677, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1685, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1695, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1715, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1720, 8, 46, 1, 46, 3, 46, 1723, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1730, 8, 46, 1, 46, 3, 46, 1733, 8, 46, 1, 46, 1, 46, 3, 46, 1737, 8, 46, 1, 46, 1, 46, 3, 46, 1741, 8, 46, 1, 46, 3, 46, 1744, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1749, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1754, 8, 46, 1, 46, 1, 46, 3, 46, 1758, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1767, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1773, 8, 46, 1, 46, 1, 46, 3, 46, 1777, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1786, 8, 46, 1, 46, 3, 46, 1789, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1795, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1804, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 4, 46, 1814, 8, 46, 11, 46, 12, 46, 1815, 1, 46, 1, 46, 3, 46, 1820, 8, 46, 1, 46, 1, 46, 3, 46, 1824, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1829, 8, 46, 1, 46, 3, 46, 1832, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1838, 8, 46, 4, 46, 1840, 8, 46, 11, 46, 12, 46, 1841, 1, 46, 1, 46, 3, 46, 1846, 8, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1852, 8, 46, 1, 46, 1, 46, 3, 46, 1856, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1861, 8, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1866, 8, 46, 1, 46, 1, 46, 3, 46, 1870, 8, 46, 1, 46, 3, 46, 1873, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1880, 8, 47, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1891, 8, 50, 10, 50, 12, 50, 1894, 9, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 3, 52, 1906, 8, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1918, 8, 53, 10, 53, 12, 53, 1921, 9, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1937, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1945, 8, 54, 10, 54, 12, 54, 1948, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1954, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1959, 8, 55, 1, 55, 1, 55, 3, 55, 1963, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1970, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1975, 8, 55, 1, 55, 3, 55, 1978, 8, 55, 3, 55, 1980, 8, 55, 1, 56, 1, 56, 1, 56, 3, 56, 1985, 8, 56, 1, 57, 1, 57, 3, 57, 1989, 8, 57, 1, 57, 1, 57, 3, 57, 1993, 8, 57, 1, 57, 1, 57, 3, 57, 1997, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2002, 8, 57, 1, 57, 3, 57, 2005, 8, 57, 1, 57, 1, 57, 3, 57, 2009, 8, 57, 1, 57, 3, 57, 2012, 8, 57, 1, 57, 1, 57, 3, 57, 2016, 8, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2024, 8, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2029, 8, 57, 1, 57, 3, 57, 2032, 8, 57, 1, 57, 1, 57, 3, 57, 2036, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2042, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2051, 8, 58, 1, 58, 1, 58, 3, 58, 2055, 8, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2061, 8, 58, 10, 58, 12, 58, 2064, 9, 58, 1, 58, 1, 58, 1, 58, 1, 58, 5, 58, 2070, 8, 58, 10, 58, 12, 58, 2073, 9, 58, 1, 58, 1, 58, 3, 58, 2077, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 5, 59, 2087, 8, 59, 10, 59, 12, 59, 2090, 9, 59, 1, 59, 1, 59, 3, 59, 2094, 8, 59, 1, 60, 1, 60, 3, 60, 2098, 8, 60, 1, 60, 1, 60, 3, 60, 2102, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2107, 8, 60, 1, 60, 1, 60, 3, 60, 2111, 8, 60, 1, 60, 3, 60, 2114, 8, 60, 1, 60, 3, 60, 2117, 8, 60, 1, 60, 3, 60, 2120, 8, 60, 1, 60, 3, 60, 2123, 8, 60, 1, 60, 3, 60, 2126, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2131, 8, 60, 1, 60, 3, 60, 2134, 8, 60, 1, 60, 3, 60, 2137, 8, 60, 1, 60, 3, 60, 2140, 8, 60, 1, 60, 3, 60, 2143, 8, 60, 1, 60, 3, 60, 2146, 8, 60, 1, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2152, 8, 60, 1, 60, 1, 60, 3, 60, 2156, 8, 60, 1, 60, 3, 60, 2159, 8, 60, 1, 60, 3, 60, 2162, 8, 60, 1, 60, 3, 60, 2165, 8, 60, 1, 60, 3, 60, 2168, 8, 60, 3, 60, 2170, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 3, 61, 2177, 8, 61, 1, 62, 1, 62, 1, 62, 1, 62, 5, 62, 2183, 8, 62, 10, 62, 12, 62, 2186, 9, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 5, 63, 2193, 8, 63, 10, 63, 12, 63, 2196, 9, 63, 1, 64, 1, 64, 3, 64, 2200, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 5, 64, 2208, 8, 64, 10, 64, 12, 64, 2211, 9, 64, 3, 64, 2213, 8, 64, 1, 65, 1, 65, 1, 65, 3, 65, 2218, 8, 65, 1, 65, 5, 65, 2221, 8, 65, 10, 65, 12, 65, 2224, 9, 65, 1, 65, 1, 65, 3, 65, 2228, 8, 65, 1, 65, 3, 65, 2231, 8, 65, 1, 66, 1, 66, 1, 66, 3, 66, 2236, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2245, 8, 66, 3, 66, 2247, 8, 66, 1, 66, 1, 66, 3, 66, 2251, 8, 66, 1, 66, 3, 66, 2254, 8, 66, 1, 66, 1, 66, 3, 66, 2258, 8, 66, 1, 66, 5, 66, 2261, 8, 66, 10, 66, 12, 66, 2264, 9, 66, 1, 67, 1, 67, 3, 67, 2268, 8, 67, 1, 67, 1, 67, 3, 67, 2272, 8, 67, 1, 67, 3, 67, 2275, 8, 67, 1, 67, 1, 67, 3, 67, 2279, 8, 67, 1, 68, 3, 68, 2282, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2287, 8, 68, 1, 68, 3, 68, 2290, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2295, 8, 68, 1, 68, 3, 68, 2298, 8, 68, 1, 68, 1, 68, 3, 68, 2302, 8, 68, 1, 68, 3, 68, 2305, 8, 68, 1, 68, 3, 68, 2308, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2313, 8, 68, 1, 68, 3, 68, 2316, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2324, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 4, 68, 2334, 8, 68, 11, 68, 12, 68, 2335, 1, 68, 1, 68, 3, 68, 2340, 8, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2347, 8, 68, 1, 68, 1, 68, 1, 68, 3, 68, 2352, 8, 68, 1, 68, 3, 68, 2355, 8, 68, 1, 68, 3, 68, 2358, 8, 68, 1, 68, 3, 68, 2361, 8, 68, 1, 69, 1, 69, 1, 69, 3, 69, 2366, 8, 69, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2375, 8, 71, 10, 71, 12, 71, 2378, 9, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2383, 8, 71, 1, 71, 1, 71, 3, 71, 2387, 8, 71, 1, 71, 3, 71, 2390, 8, 71, 1, 71, 3, 71, 2393, 8, 71, 1, 71, 5, 71, 2396, 8, 71, 10, 71, 12, 71, 2399, 9, 71, 1, 71, 1, 71, 5, 71, 2403, 8, 71, 10, 71, 12, 71, 2406, 9, 71, 3, 71, 2408, 8, 71, 1, 71, 1, 71, 3, 71, 2412, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2418, 8, 71, 10, 71, 12, 71, 2421, 9, 71, 1, 71, 1, 71, 3, 71, 2425, 8, 71, 1, 71, 3, 71, 2428, 8, 71, 1, 71, 3, 71, 2431, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2438, 8, 71, 1, 71, 5, 71, 2441, 8, 71, 10, 71, 12, 71, 2444, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2452, 8, 71, 1, 71, 3, 71, 2455, 8, 71, 1, 71, 3, 71, 2458, 8, 71, 1, 71, 5, 71, 2461, 8, 71, 10, 71, 12, 71, 2464, 9, 71, 3, 71, 2466, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2476, 8, 73, 10, 73, 12, 73, 2479, 9, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 5, 74, 2486, 8, 74, 10, 74, 12, 74, 2489, 9, 74, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2505, 8, 77, 1, 78, 1, 78, 3, 78, 2509, 8, 78, 1, 78, 1, 78, 3, 78, 2513, 8, 78, 3, 78, 2515, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2532, 8, 81, 3, 81, 2534, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 5, 83, 2548, 8, 83, 10, 83, 12, 83, 2551, 9, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2561, 8, 84, 1, 84, 3, 84, 2564, 8, 84, 1, 84, 3, 84, 2567, 8, 84, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 3, 86, 2576, 8, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 3, 87, 2585, 8, 87, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 3, 91, 2601, 8, 91, 1, 91, 3, 91, 2604, 8, 91, 1, 91, 3, 91, 2607, 8, 91, 1, 91, 1, 91, 1, 91, 1, 91, 5, 91, 2613, 8, 91, 10, 91, 12, 91, 2616, 9, 91, 1, 91, 3, 91, 2619, 8, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 3, 92, 2626, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 3, 93, 2635, 8, 93, 1, 93, 1, 93, 3, 93, 2639, 8, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 2645, 8, 93, 1, 94, 1, 94, 3, 94, 2649, 8, 94, 1, 94, 3, 94, 2652, 8, 94, 1, 94, 3, 94, 2655, 8, 94, 1, 94, 3, 94, 2658, 8, 94, 1, 94, 3, 94, 2661, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 3, 95, 2667, 8, 95, 1, 96, 1, 96, 3, 96, 2671, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2676, 8, 96, 1, 96, 1, 96, 3, 96, 2680, 8, 96, 1, 96, 3, 96, 2683, 8, 96, 1, 96, 3, 96, 2686, 8, 96, 1, 96, 3, 96, 2689, 8, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2694, 8, 96, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 2700, 8, 97, 1, 97, 1, 97, 3, 97, 2704, 8, 97, 1, 98, 1, 98, 3, 98, 2708, 8, 98, 1, 98, 1, 98, 3, 98, 2712, 8, 98, 1, 98, 1, 98, 4, 98, 2716, 8, 98, 11, 98, 12, 98, 2717, 3, 98, 2720, 8, 98, 1, 99, 1, 99, 1, 99, 3, 99, 2725, 8, 99, 1, 99, 1, 99, 4, 99, 2729, 8, 99, 11, 99, 12, 99, 2730, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2737, 8, 100, 1, 100, 1, 100, 3, 100, 2741, 8, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2756, 8, 100, 1, 100, 1, 100, 1, 100, 3, 100, 2761, 8, 100, 1, 100, 3, 100, 2764, 8, 100, 3, 100, 2766, 8, 100, 1, 101, 3, 101, 2769, 8, 101, 1, 101, 1, 101, 3, 101, 2773, 8, 101, 1, 102, 1, 102, 3, 102, 2777, 8, 102, 1, 102, 3, 102, 2780, 8, 102, 1, 102, 3, 102, 2783, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2791, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 3, 102, 2797, 8, 102, 3, 102, 2799, 8, 102, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2805, 8, 103, 1, 103, 1, 103, 1, 103, 3, 103, 2810, 8, 103, 1, 104, 1, 104, 1, 104, 3, 104, 2815, 8, 104, 1, 104, 1, 104, 3, 104, 2819, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 5, 104, 2826, 8, 104, 10, 104, 12, 104, 2829, 9, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 5, 105, 2837, 8, 105, 10, 105, 12, 105, 2840, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 2878, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 4, 107, 2886, 8, 107, 11, 107, 12, 107, 2887, 3, 107, 2890, 8, 107, 1, 107, 3, 107, 2893, 8, 107, 1, 108, 1, 108, 3, 108, 2897, 8, 108, 1, 108, 1, 108, 3, 108, 2901, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 4, 109, 2909, 8, 109, 11, 109, 12, 109, 2910, 3, 109, 2913, 8, 109, 1, 109, 1, 109, 4, 109, 2917, 8, 109, 11, 109, 12, 109, 2918, 3, 109, 2921, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 5, 110, 2928, 8, 110, 10, 110, 12, 110, 2931, 9, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 5, 111, 2940, 8, 111, 10, 111, 12, 111, 2943, 9, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 3, 114, 2956, 8, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2961, 8, 114, 1, 114, 3, 114, 2964, 8, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 3, 114, 2971, 8, 114, 1, 115, 1, 115, 1, 115, 3, 115, 2976, 8, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 3, 116, 2984, 8, 116, 3, 116, 2986, 8, 116, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2992, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 2997, 8, 117, 1, 117, 1, 117, 3, 117, 3001, 8, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3006, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3012, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3019, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3025, 8, 117, 3, 117, 3027, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3036, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3042, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3050, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3056, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3061, 8, 119, 1, 119, 1, 119, 1, 119, 3, 119, 3066, 8, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 3, 120, 3074, 8, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 3, 121, 3089, 8, 121, 3, 121, 3091, 8, 121, 1, 121, 1, 121, 3, 121, 3095, 8, 121, 1, 121, 1, 121, 3, 121, 3099, 8, 121, 1, 121, 3, 121, 3102, 8, 121, 1, 121, 3, 121, 3105, 8, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 3, 122, 3114, 8, 122, 1, 122, 3, 122, 3117, 8, 122, 1, 122, 3, 122, 3120, 8, 122, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3126, 8, 123, 1, 123, 1, 123, 5, 123, 3130, 8, 123, 10, 123, 12, 123, 3133, 9, 123, 1, 123, 3, 123, 3136, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3148, 8, 123, 1, 123, 1, 123, 1, 123, 1, 123, 3, 123, 3154, 8, 123, 1, 124, 3, 124, 3157, 8, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3162, 8, 124, 1, 124, 1, 124, 3, 124, 3166, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3173, 8, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3183, 8, 124, 3, 124, 3185, 8, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 3, 128, 3209, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3221, 8, 128, 1, 128, 4, 128, 3224, 8, 128, 11, 128, 12, 128, 3225, 3, 128, 3228, 8, 128, 1, 128, 1, 128, 3, 128, 3232, 8, 128, 1, 128, 3, 128, 3235, 8, 128, 1, 128, 3, 128, 3238, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3248, 8, 128, 1, 128, 3, 128, 3251, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3261, 8, 128, 1, 128, 5, 128, 3264, 8, 128, 10, 128, 12, 128, 3267, 9, 128, 1, 128, 1, 128, 3, 128, 3271, 8, 128, 1, 128, 3, 128, 3274, 8, 128, 1, 128, 3, 128, 3277, 8, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3285, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 3291, 8, 129, 1, 130, 1, 130, 1, 130, 5, 130, 3296, 8, 130, 10, 130, 12, 130, 3299, 9, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 3306, 8, 131, 1, 131, 3, 131, 3309, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3320, 8, 133, 1, 134, 1, 134, 3, 134, 3324, 8, 134, 1, 134, 1, 134, 5, 134, 3328, 8, 134, 10, 134, 12, 134, 3331, 9, 134, 1, 135, 1, 135, 1, 135, 1, 135, 3, 135, 3337, 8, 135, 1, 136, 3, 136, 3340, 8, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 3, 136, 3349, 8, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 5, 137, 3361, 8, 137, 10, 137, 12, 137, 3364, 9, 137, 3, 137, 3366, 8, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 5, 138, 3378, 8, 138, 10, 138, 12, 138, 3381, 9, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 3, 139, 3391, 8, 139, 1, 139, 3, 139, 3394, 8, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 5, 140, 3404, 8, 140, 10, 140, 12, 140, 3407, 9, 140, 1, 141, 1, 141, 3, 141, 3411, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 3422, 8, 141, 10, 141, 12, 141, 3425, 9, 141, 1, 141, 1, 141, 3, 141, 3429, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3442, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 5, 141, 3449, 8, 141, 10, 141, 12, 141, 3452, 9, 141, 3, 141, 3454, 8, 141, 1, 141, 3, 141, 3457, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3464, 8, 141, 1, 141, 3, 141, 3467, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3479, 8, 141, 1, 141, 1, 141, 1, 141, 1, 141, 3, 141, 3485, 8, 141, 3, 141, 3487, 8, 141, 1, 142, 1, 142, 1, 142, 1, 142, 5, 142, 3493, 8, 142, 10, 142, 12, 142, 3496, 9, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 3, 143, 3503, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 3511, 8, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3523, 8, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3528, 8, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3539, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3550, 8, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 3, 148, 3558, 8, 148, 1, 148, 1, 148, 1, 148, 1, 148, 5, 148, 3564, 8, 148, 10, 148, 12, 148, 3567, 9, 148, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3573, 8, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3580, 8, 149, 3, 149, 3582, 8, 149, 1, 149, 3, 149, 3585, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3590, 8, 149, 1, 149, 1, 149, 1, 149, 3, 149, 3595, 8, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 3612, 8, 151, 10, 151, 12, 151, 3615, 9, 151, 1, 151, 1, 151, 1, 151, 1, 151, 5, 151, 3621, 8, 151, 10, 151, 12, 151, 3624, 9, 151, 3, 151, 3626, 8, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3653, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3662, 8, 154, 1, 154, 3, 154, 3665, 8, 154, 1, 154, 1, 154, 3, 154, 3669, 8, 154, 1, 154, 1, 154, 3, 154, 3673, 8, 154, 1, 154, 1, 154, 3, 154, 3677, 8, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3682, 8, 154, 10, 154, 12, 154, 3685, 9, 154, 1, 154, 3, 154, 3688, 8, 154, 1, 154, 1, 154, 3, 154, 3692, 8, 154, 1, 154, 1, 154, 3, 154, 3696, 8, 154, 1, 154, 1, 154, 3, 154, 3700, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3705, 8, 154, 1, 154, 1, 154, 3, 154, 3709, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3714, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3720, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3725, 8, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3730, 8, 154, 10, 154, 12, 154, 3733, 9, 154, 1, 154, 3, 154, 3736, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3742, 8, 154, 1, 154, 1, 154, 3, 154, 3746, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3751, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3759, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3765, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3770, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3777, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3782, 8, 154, 1, 154, 1, 154, 3, 154, 3786, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3791, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3797, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3804, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3809, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3816, 8, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3821, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 3, 154, 3828, 8, 154, 1, 154, 1, 154, 3, 154, 3832, 8, 154, 1, 154, 1, 154, 1, 154, 1, 154, 5, 154, 3838, 8, 154, 10, 154, 12, 154, 3841, 9, 154, 1, 154, 3, 154, 3844, 8, 154, 3, 154, 3846, 8, 154, 1, 155, 3, 155, 3849, 8, 155, 1, 155, 1, 155, 1, 155, 3, 155, 3854, 8, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 3, 155, 3864, 8, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 3879, 8, 156, 1, 156, 3, 156, 3882, 8, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 3, 156, 3890, 8, 156, 1, 157, 1, 157, 1, 157, 5, 157, 3895, 8, 157, 10, 157, 12, 157, 3898, 9, 157, 1, 158, 1, 158, 3, 158, 3902, 8, 158, 1, 159, 1, 159, 4, 159, 3906, 8, 159, 11, 159, 12, 159, 3907, 1, 160, 1, 160, 3, 160, 3912, 8, 160, 1, 160, 1, 160, 1, 160, 5, 160, 3917, 8, 160, 10, 160, 12, 160, 3920, 9, 160, 1, 160, 1, 160, 3, 160, 3924, 8, 160, 1, 160, 3, 160, 3927, 8, 160, 1, 161, 3, 161, 3930, 8, 161, 1, 161, 1, 161, 3, 161, 3934, 8, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3943, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3961, 8, 162, 1, 162, 3, 162, 3964, 8, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 3, 162, 3996, 8, 162, 1, 162, 1, 162, 1, 162, 3, 162, 4001, 8, 162, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4007, 8, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4027, 8, 163, 1, 163, 1, 163, 1, 163, 3, 163, 4032, 8, 163, 1, 164, 1, 164, 1, 164, 1, 165, 3, 165, 4038, 8, 165, 1, 165, 3, 165, 4041, 8, 165, 1, 165, 1, 165, 3, 165, 4045, 8, 165, 1, 165, 1, 165, 3, 165, 4049, 8, 165, 1, 165, 1, 165, 1, 165, 1, 165, 3, 165, 4055, 8, 165, 1, 165, 3, 165, 4058, 8, 165, 1, 165, 1, 165, 3, 165, 4062, 8, 165, 1, 165, 1, 165, 3, 165, 4066, 8, 165, 1, 165, 1, 165, 1, 165, 3, 165, 4071, 8, 165, 1, 165, 3, 165, 4074, 8, 165, 1, 165, 3, 165, 4077, 8, 165, 1, 165, 3, 165, 4080, 8, 165, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 3, 167, 4093, 8, 167, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 4099, 8, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 3, 168, 4107, 8, 168, 1, 169, 1, 169, 1, 169, 5, 169, 4112, 8, 169, 10, 169, 12, 169, 4115, 9, 169, 1, 169, 1, 169, 3, 169, 4119, 8, 169, 1, 169, 3, 169, 4122, 8, 169, 1, 169, 1, 169, 1, 169, 5, 169, 4127, 8, 169, 10, 169, 12, 169, 4130, 9, 169, 3, 169, 4132, 8, 169, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 3, 171, 4140, 8, 171, 1, 171, 3, 171, 4143, 8, 171, 1, 172, 1, 172, 1, 172, 3, 172, 4148, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4155, 8, 172, 1, 172, 3, 172, 4158, 8, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 5, 172, 4176, 8, 172, 10, 172, 12, 172, 4179, 9, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 3, 172, 4190, 8, 172, 1, 173, 3, 173, 4193, 8, 173, 1, 173, 1, 173, 1, 173, 1, 173, 3, 173, 4199, 8, 173, 1, 173, 5, 173, 4202, 8, 173, 10, 173, 12, 173, 4205, 9, 173, 1, 174, 1, 174, 1, 174, 1, 174, 5, 174, 4211, 8, 174, 10, 174, 12, 174, 4214, 9, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 3, 174, 4221, 8, 174, 1, 174, 1, 174, 1, 174, 3, 174, 4226, 8, 174, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4232, 8, 175, 1, 175, 1, 175, 1, 175, 5, 175, 4237, 8, 175, 10, 175, 12, 175, 4240, 9, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 3, 175, 4247, 8, 175, 1, 175, 3, 175, 4250, 8, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 5, 176, 4261, 8, 176, 10, 176, 12, 176, 4264, 9, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4277, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4283, 8, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 3, 177, 4291, 8, 177, 3, 177, 4293, 8, 177, 1, 178, 1, 178, 1, 179, 1, 179, 3, 179, 4299, 8, 179, 1, 179, 1, 179, 3, 179, 4303, 8, 179, 1, 179, 3, 179, 4306, 8, 179, 1, 179, 3, 179, 4309, 8, 179, 1, 179, 1, 179, 1, 179, 3, 179, 4314, 8, 179, 1, 179, 1, 179, 1, 179, 3, 179, 4319, 8, 179, 1, 179, 1, 179, 3, 179, 4323, 8, 179, 1, 179, 3, 179, 4326, 8, 179, 1, 179, 3, 179, 4329, 8, 179, 1, 179, 3, 179, 4332, 8, 179, 1, 179, 3, 179, 4335, 8, 179, 1, 180, 1, 180, 1, 180, 1, 180, 5, 180, 4341, 8, 180, 10, 180, 12, 180, 4344, 9, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 3, 181, 4354, 8, 181, 1, 181, 3, 181, 4357, 8, 181, 1, 181, 3, 181, 4360, 8, 181, 1, 181, 1, 181, 1, 181, 3, 181, 4365, 8, 181, 1, 181, 3, 181, 4368, 8, 181, 1, 181, 1, 181, 3, 181, 4372, 8, 181, 1, 182, 1, 182, 3, 182, 4376, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 4382, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4388, 8, 182, 10, 182, 12, 182, 4391, 9, 182, 3, 182, 4393, 8, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 5, 182, 4404, 8, 182, 10, 182, 12, 182, 4407, 9, 182, 1, 182, 1, 182, 3, 182, 4411, 8, 182, 3, 182, 4413, 8, 182, 1, 182, 4, 182, 4416, 8, 182, 11, 182, 12, 182, 4417, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 3, 182, 4425, 8, 182, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 3, 184, 4432, 8, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 5, 185, 4439, 8, 185, 10, 185, 12, 185, 4442, 9, 185, 1, 186, 1, 186, 1, 186, 5, 186, 4447, 8, 186, 10, 186, 12, 186, 4450, 9, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 3, 187, 4457, 8, 187, 1, 188, 1, 188, 1, 188, 5, 188, 4462, 8, 188, 10, 188, 12, 188, 4465, 9, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 3, 189, 4472, 8, 189, 1, 190, 1, 190, 1, 190, 5, 190, 4477, 8, 190, 10, 190, 12, 190, 4480, 9, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 3, 191, 4487, 8, 191, 1, 192, 1, 192, 3, 192, 4491, 8, 192, 1, 192, 1, 192, 3, 192, 4495, 8, 192, 3, 192, 4497, 8, 192, 1, 192, 1, 192, 1, 193, 1, 193, 3, 193, 4503, 8, 193, 1, 193, 1, 193, 1, 193, 3, 193, 4508, 8, 193, 1, 194, 1, 194, 3, 194, 4512, 8, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 3, 194, 4519, 8, 194, 1, 195, 1, 195, 1, 195, 3, 195, 4524, 8, 195, 1, 196, 1, 196, 1, 196, 3, 196, 4529, 8, 196, 1, 196, 1, 196, 1, 196, 3, 196, 4534, 8, 196, 3, 196, 4536, 8, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 3, 198, 4546, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4556, 8, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 3, 198, 4572, 8, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 5, 199, 4588, 8, 199, 10, 199, 12, 199, 4591, 9, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4602, 8, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 3, 199, 4609, 8, 199, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 3, 202, 4624, 8, 202, 1, 202, 4, 202, 4627, 8, 202, 11, 202, 12, 202, 4628, 1, 202, 3, 202, 4632, 8, 202, 1, 203, 1, 203, 1, 203, 3, 203, 4637, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4642, 8, 203, 1, 203, 1, 203, 1, 203, 3, 203, 4647, 8, 203, 1, 203, 3, 203, 4650, 8, 203, 1, 203, 3, 203, 4653, 8, 203, 1, 204, 1, 204, 1, 204, 3, 204, 4658, 8, 204, 1, 204, 1, 204, 1, 204, 5, 204, 4663, 8, 204, 10, 204, 12, 204, 4666, 9, 204, 1, 204, 3, 204, 4669, 8, 204, 1, 205, 1, 205, 1, 205, 3, 205, 4674, 8, 205, 1, 205, 1, 205, 1, 205, 5, 205, 4679, 8, 205, 10, 205, 12, 205, 4682, 9, 205, 1, 205, 3, 205, 4685, 8, 205, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4691, 8, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 3, 206, 4700, 8, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 5, 207, 4707, 8, 207, 10, 207, 12, 207, 4710, 9, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 4, 209, 4721, 8, 209, 11, 209, 12, 209, 4722, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 4736, 8, 210, 1, 210, 1, 210, 1, 210, 1, 210, 3, 210, 4742, 8, 210, 1, 210, 1, 210, 3, 210, 4746, 8, 210, 3, 210, 4748, 8, 210, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 3, 212, 4755, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 4768, 8, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 3, 212, 4775, 8, 212, 3, 212, 4777, 8, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 5, 214, 4791, 8, 214, 10, 214, 12, 214, 4794, 9, 214, 1, 214, 3, 214, 4797, 8, 214, 1, 214, 1, 214, 3, 214, 4801, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4806, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4811, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4816, 8, 214, 1, 214, 1, 214, 1, 214, 3, 214, 4821, 8, 214, 1, 214, 3, 214, 4824, 8, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4836, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4889, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4898, 8, 216, 1, 216, 1, 216, 3, 216, 4902, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4911, 8, 216, 1, 216, 1, 216, 3, 216, 4915, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4924, 8, 216, 1, 216, 1, 216, 3, 216, 4928, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4933, 8, 216, 1, 216, 3, 216, 4936, 8, 216, 1, 216, 1, 216, 3, 216, 4940, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4945, 8, 216, 3, 216, 4947, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4956, 8, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4961, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4972, 8, 216, 1, 216, 1, 216, 3, 216, 4976, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4990, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 4998, 8, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 3, 216, 5036, 8, 216, 3, 216, 5038, 8, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 3, 217, 5057, 8, 217, 1, 217, 3, 217, 5060, 8, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5087, 8, 218, 1, 218, 1, 218, 3, 218, 5091, 8, 218, 1, 218, 1, 218, 3, 218, 5095, 8, 218, 1, 218, 1, 218, 3, 218, 5099, 8, 218, 1, 218, 1, 218, 3, 218, 5103, 8, 218, 1, 218, 3, 218, 5106, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5121, 8, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 3, 218, 5128, 8, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 5, 220, 5140, 8, 220, 10, 220, 12, 220, 5143, 9, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 3, 221, 5155, 8, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5180, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5199, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5214, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5230, 8, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 3, 223, 5237, 8, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 3, 224, 5248, 8, 224, 1, 224, 3, 224, 5251, 8, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 5, 225, 5268, 8, 225, 10, 225, 12, 225, 5271, 9, 225, 3, 225, 5273, 8, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 5, 226, 5284, 8, 226, 10, 226, 12, 226, 5287, 9, 226, 1, 226, 3, 226, 5290, 8, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5310, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 5, 227, 5320, 8, 227, 10, 227, 12, 227, 5323, 9, 227, 1, 227, 3, 227, 5326, 8, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 3, 227, 5348, 8, 227, 1, 228, 1, 228, 3, 228, 5352, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5362, 8, 228, 1, 228, 1, 228, 3, 228, 5366, 8, 228, 1, 228, 1, 228, 1, 228, 1, 228, 3, 228, 5372, 8, 228, 1, 228, 1, 228, 3, 228, 5376, 8, 228, 5, 228, 5378, 8, 228, 10, 228, 12, 228, 5381, 9, 228, 1, 228, 3, 228, 5384, 8, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 3, 229, 5391, 8, 229, 1, 230, 1, 230, 1, 230, 3, 230, 5396, 8, 230, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 3, 233, 5407, 8, 233, 1, 234, 1, 234, 3, 234, 5411, 8, 234, 1, 234, 3, 234, 5414, 8, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5419, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5425, 8, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 3, 234, 5436, 8, 234, 1, 234, 1, 234, 3, 234, 5440, 8, 234, 1, 234, 3, 234, 5443, 8, 234, 1, 234, 1, 234, 3, 234, 5447, 8, 234, 1, 234, 1, 234, 3, 234, 5451, 8, 234, 1, 234, 3, 234, 5454, 8, 234, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 3, 236, 5464, 8, 236, 1, 236, 3, 236, 5467, 8, 236, 1, 237, 1, 237, 3, 237, 5471, 8, 237, 1, 237, 5, 237, 5474, 8, 237, 10, 237, 12, 237, 5477, 9, 237, 1, 238, 1, 238, 1, 238, 3, 238, 5482, 8, 238, 1, 238, 3, 238, 5485, 8, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5490, 8, 238, 1, 238, 3, 238, 5493, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5500, 8, 238, 3, 238, 5502, 8, 238, 1, 238, 1, 238, 1, 238, 1, 238, 3, 238, 5508, 8, 238, 1, 238, 1, 238, 3, 238, 5512, 8, 238, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 3, 240, 5521, 8, 240, 1, 240, 4, 240, 5524, 8, 240, 11, 240, 12, 240, 5525, 3, 240, 5528, 8, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 3, 241, 5538, 8, 241, 1, 241, 3, 241, 5541, 8, 241, 1, 241, 1, 241, 1, 241, 3, 241, 5546, 8, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 3, 242, 5554, 8, 242, 1, 242, 3, 242, 5557, 8, 242, 1, 242, 4, 242, 5560, 8, 242, 11, 242, 12, 242, 5561, 3, 242, 5564, 8, 242, 3, 242, 5566, 8, 242, 1, 243, 1, 243, 1, 243, 1, 243, 3, 243, 5572, 8, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 3, 246, 5589, 8, 246, 1, 246, 1, 246, 5, 246, 5593, 8, 246, 10, 246, 12, 246, 5596, 9, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5608, 8, 247, 1, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5614, 8, 247, 1, 247, 1, 247, 3, 247, 5618, 8, 247, 1, 247, 1, 247, 1, 247, 3, 247, 5623, 8, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5653, 8, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5668, 8, 249, 1, 249, 1, 249, 1, 249, 3, 249, 5673, 8, 249, 1, 250, 1, 250, 3, 250, 5677, 8, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 3, 251, 5690, 8, 251, 1, 251, 1, 251, 3, 251, 5694, 8, 251, 3, 251, 5696, 8, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 5, 251, 5703, 8, 251, 10, 251, 12, 251, 5706, 9, 251, 1, 251, 1, 251, 1, 251, 3, 251, 5711, 8, 251, 3, 251, 5713, 8, 251, 1, 252, 1, 252, 3, 252, 5717, 8, 252, 1, 252, 3, 252, 5720, 8, 252, 1, 252, 3, 252, 5723, 8, 252, 1, 252, 3, 252, 5726, 8, 252, 1, 252, 3, 252, 5729, 8, 252, 3, 252, 5731, 8, 252, 1, 252, 3, 252, 5734, 8, 252, 1, 253, 1, 253, 3, 253, 5738, 8, 253, 1, 253, 1, 253, 1, 253, 1, 253, 5, 253, 5744, 8, 253, 10, 253, 12, 253, 5747, 9, 253, 1, 253, 1, 253, 3, 253, 5751, 8, 253, 1, 253, 3, 253, 5754, 8, 253, 1, 254, 1, 254, 1, 255, 1, 255, 3, 255, 5760, 8, 255, 1, 255, 1, 255, 3, 255, 5764, 8, 255, 1, 256, 1, 256, 3, 256, 5768, 8, 256, 1, 256, 1, 256, 1, 256, 3, 256, 5773, 8, 256, 3, 256, 5775, 8, 256, 1, 257, 1, 257, 3, 257, 5779, 8, 257, 1, 258, 1, 258, 3, 258, 5783, 8, 258, 1, 259, 1, 259, 1, 259, 5, 259, 5788, 8, 259, 10, 259, 12, 259, 5791, 9, 259, 1, 260, 1, 260, 1, 260, 3, 260, 5796, 8, 260, 1, 260, 1, 260, 3, 260, 5800, 8, 260, 3, 260, 5802, 8, 260, 3, 260, 5804, 8, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 3, 261, 5817, 8, 261, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 5823, 8, 262, 10, 262, 12, 262, 5826, 9, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 3, 263, 5833, 8, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 5, 264, 5842, 8, 264, 10, 264, 12, 264, 5845, 9, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 3, 265, 5853, 8, 265, 1, 266, 1, 266, 1, 266, 3, 266, 5858, 8, 266, 1, 266, 1, 266, 3, 266, 5862, 8, 266, 1, 266, 1, 266, 3, 266, 5866, 8, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 3, 266, 5873, 8, 266, 1, 266, 3, 266, 5876, 8, 266, 3, 266, 5878, 8, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 3, 268, 5886, 8, 268, 1, 268, 1, 268, 3, 268, 5890, 8, 268, 1, 269, 3, 269, 5893, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5900, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5907, 8, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5912, 8, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 3, 269, 5919, 8, 269, 1, 269, 3, 269, 5922, 8, 269, 3, 269, 5924, 8, 269, 1, 269, 3, 269, 5927, 8, 269, 1, 270, 1, 270, 1, 270, 1, 270, 3, 270, 5933, 8, 270, 1, 270, 1, 270, 1, 270, 3, 270, 5938, 8, 270, 1, 270, 1, 270, 3, 270, 5942, 8, 270, 1, 271, 1, 271, 1, 271, 5, 271, 5947, 8, 271, 10, 271, 12, 271, 5950, 9, 271, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 274, 3, 274, 5959, 8, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 3, 274, 5966, 8, 274, 1, 274, 3, 274, 5969, 8, 274, 1, 274, 3, 274, 5972, 8, 274, 1, 275, 1, 275, 3, 275, 5976, 8, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 3, 275, 5987, 8, 275, 1, 275, 3, 275, 5990, 8, 275, 1, 275, 3, 275, 5993, 8, 275, 1, 275, 3, 275, 5996, 8, 275, 1, 276, 3, 276, 5999, 8, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 3, 276, 6006, 8, 276, 1, 276, 3, 276, 6009, 8, 276, 1, 276, 3, 276, 6012, 8, 276, 1, 277, 1, 277, 1, 277, 5, 277, 6017, 8, 277, 10, 277, 12, 277, 6020, 9, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6031, 8, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 3, 278, 6038, 8, 278, 3, 278, 6040, 8, 278, 1, 279, 1, 279, 1, 279, 3, 279, 6045, 8, 279, 1, 279, 1, 279, 1, 279, 5, 279, 6050, 8, 279, 10, 279, 12, 279, 6053, 9, 279, 1, 279, 1, 279, 1, 279, 3, 279, 6058, 8, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 3, 280, 6065, 8, 280, 1, 281, 1, 281, 1, 281, 3, 281, 6070, 8, 281, 1, 281, 1, 281, 1, 282, 3, 282, 6075, 8, 282, 1, 282, 1, 282, 3, 282, 6079, 8, 282, 1, 282, 1, 282, 3, 282, 6083, 8, 282, 1, 282, 1, 282, 3, 282, 6087, 8, 282, 3, 282, 6089, 8, 282, 1, 283, 1, 283, 3, 283, 6093, 8, 283, 1, 284, 1, 284, 3, 284, 6097, 8, 284, 1, 284, 3, 284, 6100, 8, 284, 1, 284, 3, 284, 6103, 8, 284, 3, 284, 6105, 8, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6115, 8, 284, 3, 284, 6117, 8, 284, 1, 284, 1, 284, 1, 284, 3, 284, 6122, 8, 284, 5, 284, 6124, 8, 284, 10, 284, 12, 284, 6127, 9, 284, 1, 285, 1, 285, 3, 285, 6131, 8, 285, 1, 286, 1, 286, 3, 286, 6135, 8, 286, 1, 286, 1, 286, 1, 286, 5, 286, 6140, 8, 286, 10, 286, 12, 286, 6143, 9, 286, 1, 287, 1, 287, 3, 287, 6147, 8, 287, 1, 287, 1, 287, 3, 287, 6151, 8, 287, 1, 287, 3, 287, 6154, 8, 287, 1, 287, 1, 287, 1, 287, 1, 287, 3, 287, 6160, 8, 287, 1, 287, 3, 287, 6163, 8, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 3, 289, 6182, 8, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 3, 290, 6189, 8, 290, 1, 290, 1, 290, 3, 290, 6193, 8, 290, 1, 291, 3, 291, 6196, 8, 291, 1, 291, 1, 291, 3, 291, 6200, 8, 291, 1, 291, 1, 291, 3, 291, 6204, 8, 291, 1, 291, 3, 291, 6207, 8, 291, 1, 291, 3, 291, 6210, 8, 291, 1, 292, 1, 292, 1, 292, 3, 292, 6215, 8, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 5, 293, 6222, 8, 293, 10, 293, 12, 293, 6225, 9, 293, 1, 294, 1, 294, 1, 294, 1, 294, 3, 294, 6231, 8, 294, 1, 294, 1, 294, 3, 294, 6235, 8, 294, 1, 295, 1, 295, 3, 295, 6239, 8, 295, 1, 295, 1, 295, 3, 295, 6243, 8, 295, 1, 295, 3, 295, 6246, 8, 295, 3, 295, 6248, 8, 295, 1, 296, 1, 296, 1, 296, 3, 296, 6253, 8, 296, 1, 296, 1, 296, 3, 296, 6257, 8, 296, 1, 297, 1, 297, 1, 297, 3, 297, 6262, 8, 297, 1, 297, 1, 297, 1, 297, 1, 297, 3, 297, 6268, 8, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 3, 298, 6275, 8, 298, 1, 299, 1, 299, 1, 299, 3, 299, 6280, 8, 299, 1, 300, 1, 300, 1, 300, 3, 300, 6285, 8, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 5, 301, 6292, 8, 301, 10, 301, 12, 301, 6295, 9, 301, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6301, 8, 302, 1, 302, 1, 302, 1, 302, 1, 302, 5, 302, 6307, 8, 302, 10, 302, 12, 302, 6310, 9, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 3, 302, 6320, 8, 302, 1, 303, 1, 303, 1, 303, 3, 303, 6325, 8, 303, 1, 303, 1, 303, 3, 303, 6329, 8, 303, 1, 303, 3, 303, 6332, 8, 303, 1, 303, 1, 303, 3, 303, 6336, 8, 303, 1, 303, 1, 303, 1, 303, 3, 303, 6341, 8, 303, 4, 303, 6343, 8, 303, 11, 303, 12, 303, 6344, 1, 303, 1, 303, 1, 303, 3, 303, 6350, 8, 303, 1, 304, 1, 304, 1, 304, 1, 304, 5, 304, 6356, 8, 304, 10, 304, 12, 304, 6359, 9, 304, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 5, 306, 6367, 8, 306, 10, 306, 12, 306, 6370, 9, 306, 1, 307, 1, 307, 3, 307, 6374, 8, 307, 1, 307, 1, 307, 3, 307, 6378, 8, 307, 1, 307, 3, 307, 6381, 8, 307, 1, 307, 3, 307, 6384, 8, 307, 3, 307, 6386, 8, 307, 1, 307, 3, 307, 6389, 8, 307, 1, 307, 3, 307, 6392, 8, 307, 1, 307, 3, 307, 6395, 8, 307, 1, 307, 1, 307, 3, 307, 6399, 8, 307, 1, 307, 1, 307, 3, 307, 6403, 8, 307, 1, 307, 1, 307, 3, 307, 6407, 8, 307, 3, 307, 6409, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6418, 8, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6423, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6429, 8, 307, 1, 307, 1, 307, 3, 307, 6433, 8, 307, 3, 307, 6435, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6442, 8, 307, 1, 307, 1, 307, 1, 307, 3, 307, 6447, 8, 307, 1, 307, 1, 307, 1, 307, 1, 307, 5, 307, 6453, 8, 307, 10, 307, 12, 307, 6456, 9, 307, 1, 308, 3, 308, 6459, 8, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 3, 308, 6466, 8, 308, 1, 309, 1, 309, 1, 309, 3, 309, 6471, 8, 309, 1, 309, 3, 309, 6474, 8, 309, 1, 309, 1, 309, 1, 309, 1, 309, 3, 309, 6480, 8, 309, 1, 310, 1, 310, 3, 310, 6484, 8, 310, 1, 311, 1, 311, 1, 311, 1, 311, 3, 311, 6490, 8, 311, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6499, 8, 312, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 6505, 8, 312, 3, 312, 6507, 8, 312, 1, 313, 1, 313, 1, 313, 3, 313, 6512, 8, 313, 1, 313, 3, 313, 6515, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6524, 8, 313, 1, 313, 1, 313, 1, 313, 1, 313, 1, 313, 3, 313, 6531, 8, 313, 3, 313, 6533, 8, 313, 1, 314, 1, 314, 1, 314, 5, 314, 6538, 8, 314, 10, 314, 12, 314, 6541, 9, 314, 1, 315, 1, 315, 3, 315, 6545, 8, 315, 1, 315, 3, 315, 6548, 8, 315, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 1, 316, 3, 316, 6558, 8, 316, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 1, 317, 5, 317, 6567, 8, 317, 10, 317, 12, 317, 6570, 9, 317, 1, 317, 1, 317, 3, 317, 6574, 8, 317, 1, 317, 1, 317, 3, 317, 6578, 8, 317, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 1, 318, 3, 318, 6586, 8, 318, 1, 319, 1, 319, 1, 319, 1, 320, 1, 320, 1, 320, 1, 320, 1, 320, 3, 320, 6596, 8, 320, 1, 321, 1, 321, 1, 321, 5, 321, 6601, 8, 321, 10, 321, 12, 321, 6604, 9, 321, 1, 322, 1, 322, 1, 322, 3, 322, 6609, 8, 322, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 5, 323, 6618, 8, 323, 10, 323, 12, 323, 6621, 9, 323, 1, 323, 1, 323, 1, 323, 3, 323, 6626, 8, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 1, 323, 5, 323, 6634, 8, 323, 10, 323, 12, 323, 6637, 9, 323, 1, 323, 1, 323, 1, 324, 1, 324, 1, 324, 1, 324, 3, 324, 6645, 8, 324, 1, 324, 1, 324, 3, 324, 6649, 8, 324, 1, 324, 4, 324, 6652, 8, 324, 11, 324, 12, 324, 6653, 3, 324, 6656, 8, 324, 1, 324, 1, 324, 3, 324, 6660, 8, 324, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 1, 325, 3, 325, 6668, 8, 325, 1, 326, 3, 326, 6671, 8, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6676, 8, 326, 1, 326, 5, 326, 6679, 8, 326, 10, 326, 12, 326, 6682, 9, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6688, 8, 326, 3, 326, 6690, 8, 326, 1, 326, 1, 326, 1, 326, 1, 326, 3, 326, 6696, 8, 326, 1, 327, 1, 327, 3, 327, 6700, 8, 327, 1, 327, 3, 327, 6703, 8, 327, 1, 327, 1, 327, 1, 327, 3, 327, 6708, 8, 327, 1, 327, 3, 327, 6711, 8, 327, 3, 327, 6713, 8, 327, 1, 328, 1, 328, 1, 328, 1, 328, 3, 328, 6719, 8, 328, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 6728, 8, 329, 1, 329, 1, 329, 1, 329, 1, 329, 3, 329, 6734, 8, 329, 1, 329, 3, 329, 6737, 8, 329, 1, 330, 1, 330, 1, 330, 1, 330, 1, 331, 1, 331, 3, 331, 6745, 8, 331, 1, 331, 3, 331, 6748, 8, 331, 1, 332, 1, 332, 3, 332, 6752, 8, 332, 1, 332, 1, 332, 1, 332, 1, 332, 3, 332, 6758, 8, 332, 3, 332, 6760, 8, 332, 1, 332, 3, 332, 6763, 8, 332, 1, 333, 1, 333, 3, 333, 6767, 8, 333, 1, 333, 1, 333, 1, 333, 3, 333, 6772, 8, 333, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6779, 8, 334, 1, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6786, 8, 334, 3, 334, 6788, 8, 334, 1, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6794, 8, 334, 3, 334, 6796, 8, 334, 1, 334, 1, 334, 1, 334, 3, 334, 6801, 8, 334, 3, 334, 6803, 8, 334, 1, 335, 1, 335, 3, 335, 6807, 8, 335, 1, 336, 1, 336, 1, 337, 1, 337, 1, 338, 1, 338, 1, 338, 3, 338, 6816, 8, 338, 1, 338, 1, 338, 3, 338, 6820, 8, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 1, 338, 5, 338, 6828, 8, 338, 10, 338, 12, 338, 6831, 9, 338, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6844, 8, 339, 1, 339, 3, 339, 6847, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6855, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 5, 339, 6862, 8, 339, 10, 339, 12, 339, 6865, 9, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6870, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6875, 8, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6883, 8, 339, 3, 339, 6885, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6890, 8, 339, 1, 339, 1, 339, 3, 339, 6894, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6899, 8, 339, 1, 339, 1, 339, 1, 339, 3, 339, 6904, 8, 339, 1, 340, 1, 340, 1, 340, 1, 340, 3, 340, 6910, 8, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 1, 340, 5, 340, 6926, 8, 340, 10, 340, 12, 340, 6929, 9, 340, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6937, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6952, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6957, 8, 341, 1, 341, 3, 341, 6960, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6966, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6971, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 6984, 8, 341, 1, 341, 4, 341, 6987, 8, 341, 11, 341, 12, 341, 6988, 1, 341, 1, 341, 3, 341, 6993, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7000, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7019, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7031, 8, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7036, 8, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 1, 341, 3, 341, 7044, 8, 341, 5, 341, 7046, 8, 341, 10, 341, 12, 341, 7049, 9, 341, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7057, 8, 342, 1, 342, 3, 342, 7060, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7065, 8, 342, 1, 342, 1, 342, 1, 342, 3, 342, 7070, 8, 342, 1, 342, 1, 342, 3, 342, 7074, 8, 342, 1, 342, 3, 342, 7077, 8, 342, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7086, 8, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7094, 8, 343, 1, 343, 1, 343, 1, 343, 3, 343, 7099, 8, 343, 3, 343, 7101, 8, 343, 1, 343, 3, 343, 7104, 8, 343, 1, 344, 1, 344, 3, 344, 7108, 8, 344, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7119, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7140, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7148, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7161, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7171, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7177, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7183, 8, 345, 1, 345, 3, 345, 7186, 8, 345, 1, 345, 3, 345, 7189, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7215, 8, 345, 3, 345, 7217, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7238, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7248, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7261, 8, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7266, 8, 345, 1, 345, 1, 345, 3, 345, 7270, 8, 345, 3, 345, 7272, 8, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 1, 345, 3, 345, 7284, 8, 345, 1, 346, 1, 346, 1, 346, 5, 346, 7289, 8, 346, 10, 346, 12, 346, 7292, 9, 346, 1, 347, 1, 347, 1, 347, 3, 347, 7297, 8, 347, 1, 348, 1, 348, 1, 349, 1, 349, 3, 349, 7303, 8, 349, 1, 349, 1, 349, 3, 349, 7307, 8, 349, 1, 350, 1, 350, 1, 350, 1, 351, 1, 351, 1, 351, 1, 351, 5, 351, 7316, 8, 351, 10, 351, 12, 351, 7319, 9, 351, 1, 352, 1, 352, 1, 352, 1, 352, 1, 353, 1, 353, 1, 353, 3, 353, 7328, 8, 353, 1, 354, 1, 354, 3, 354, 7332, 8, 354, 1, 354, 1, 354, 1, 354, 3, 354, 7337, 8, 354, 1, 354, 3, 354, 7340, 8, 354, 1, 354, 3, 354, 7343, 8, 354, 1, 354, 1, 354, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7352, 8, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 1, 355, 3, 355, 7363, 8, 355, 3, 355, 7365, 8, 355, 1, 356, 1, 356, 3, 356, 7369, 8, 356, 1, 356, 1, 356, 1, 356, 3, 356, 7374, 8, 356, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 1, 357, 3, 357, 7383, 8, 357, 1, 358, 1, 358, 1, 358, 3, 358, 7388, 8, 358, 1, 358, 1, 358, 1, 359, 1, 359, 1, 360, 1, 360, 3, 360, 7396, 8, 360, 1, 361, 1, 361, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 1, 362, 3, 362, 7406, 8, 362, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 1, 363, 3, 363, 7414, 8, 363, 1, 364, 1, 364, 3, 364, 7418, 8, 364, 1, 364, 3, 364, 7421, 8, 364, 1, 365, 1, 365, 1, 365, 5, 365, 7426, 8, 365, 10, 365, 12, 365, 7429, 9, 365, 1, 366, 1, 366, 1, 366, 1, 366, 1, 366, 3, 366, 7436, 8, 366, 1, 367, 1, 367, 3, 367, 7440, 8, 367, 1, 368, 1, 368, 1, 368, 5, 368, 7445, 8, 368, 10, 368, 12, 368, 7448, 9, 368, 1, 369, 1, 369, 1, 369, 1, 369, 1, 369, 3, 369, 7455, 8, 369, 1, 370, 1, 370, 1, 370, 1, 370, 1, 370, 5, 370, 7462, 8, 370, 10, 370, 12, 370, 7465, 9, 370, 3, 370, 7467, 8, 370, 1, 370, 1, 370, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 1, 371, 3, 371, 7479, 8, 371, 1, 372, 1, 372, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7488, 8, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7495, 8, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 1, 373, 3, 373, 7504, 8, 373, 1, 374, 1, 374, 1, 374, 1, 374, 1, 374, 1, 375, 1, 375, 1, 375, 3, 375, 7514, 8, 375, 1, 375, 1, 375, 1, 375, 3, 375, 7519, 8, 375, 1, 375, 1, 375, 3, 375, 7523, 8, 375, 3, 375, 7525, 8, 375, 1, 375, 3, 375, 7528, 8, 375, 1, 376, 4, 376, 7531, 8, 376, 11, 376, 12, 376, 7532, 1, 377, 5, 377, 7536, 8, 377, 10, 377, 12, 377, 7539, 9, 377, 1, 378, 1, 378, 1, 378, 5, 378, 7544, 8, 378, 10, 378, 12, 378, 7547, 9, 378, 1, 379, 1, 379, 1, 379, 1, 379, 1, 379, 3, 379, 7554, 8, 379, 1, 379, 3, 379, 7557, 8, 379, 1, 380, 1, 380, 1, 380, 5, 380, 7562, 8, 380, 10, 380, 12, 380, 7565, 9, 380, 1, 381, 1, 381, 1, 381, 5, 381, 7570, 8, 381, 10, 381, 12, 381, 7573, 9, 381, 1, 382, 1, 382, 1, 382, 5, 382, 7578, 8, 382, 10, 382, 12, 382, 7581, 9, 382, 1, 383, 1, 383, 1, 383, 5, 383, 7586, 8, 383, 10, 383, 12, 383, 7589, 9, 383, 1, 384, 1, 384, 1, 385, 1, 385, 1, 386, 1, 386, 1, 387, 1, 387, 1, 388, 1, 388, 1, 389, 1, 389, 1, 390, 1, 390, 3, 390, 7605, 8, 390, 1, 391, 1, 391, 1, 391, 5, 391, 7610, 8, 391, 10, 391, 12, 391, 7613, 9, 391, 1, 392, 1, 392, 1, 392, 5, 392, 7618, 8, 392, 10, 392, 12, 392, 7621, 9, 392, 1, 393, 1, 393, 1, 394, 1, 394, 1, 395, 1, 395, 1, 396, 1, 396, 1, 397, 1, 397, 1, 398, 1, 398, 1, 398, 1, 398, 3, 398, 7637, 8, 398, 1, 399, 1, 399, 1, 399, 1, 399, 3, 399, 7643, 8, 399, 1, 400, 1, 400, 1, 400, 1, 400, 3, 400, 7649, 8, 400, 1, 401, 1, 401, 1, 402, 1, 402, 1, 402, 1, 402, 3, 402, 7657, 8, 402, 1, 403, 1, 403, 1, 403, 1, 403, 3, 403, 7663, 8, 403, 1, 404, 1, 404, 1, 404, 3, 404, 7668, 8, 404, 1, 405, 1, 405, 1, 405, 1, 405, 5, 405, 7674, 8, 405, 10, 405, 12, 405, 7677, 9, 405, 1, 405, 1, 405, 3, 405, 7681, 8, 405, 1, 406, 3, 406, 7684, 8, 406, 1, 406, 1, 406, 1, 407, 1, 407, 1, 407, 1, 407, 1, 407, 3, 407, 7693, 8, 407, 1, 408, 1, 408, 1, 408, 5, 408, 7698, 8, 408, 10, 408, 12, 408, 7701, 9, 408, 1, 409, 1, 409, 3, 409, 7705, 8, 409, 1, 410, 1, 410, 3, 410, 7709, 8, 410, 1, 411, 1, 411, 1, 411, 3, 411, 7714, 8, 411, 1, 412, 1, 412, 1, 412, 1, 412, 3, 412, 7720, 8, 412, 1, 413, 1, 413, 1, 413, 3, 413, 7725, 8, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 1, 413, 3, 413, 7733, 8, 413, 1, 414, 1, 414, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 1, 415, 3, 415, 7788, 8, 415, 1, 416, 1, 416, 1, 417, 1, 417, 1, 418, 3, 418, 7795, 8, 418, 1, 418, 1, 418, 1, 418, 1, 418, 4, 418, 7801, 8, 418, 11, 418, 12, 418, 7802, 3, 418, 7805, 8, 418, 3, 418, 7807, 8, 418, 1, 418, 1, 418, 5, 418, 7811, 8, 418, 10, 418, 12, 418, 7814, 9, 418, 1, 418, 3, 418, 7817, 8, 418, 1, 418, 1, 418, 3, 418, 7821, 8, 418, 1, 419, 1, 419, 1, 419, 1, 419, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 3, 420, 7832, 8, 420, 1, 420, 3, 420, 7835, 8, 420, 1, 420, 1, 420, 3, 420, 7839, 8, 420, 1, 420, 1, 420, 3, 420, 7843, 8, 420, 1, 420, 1, 420, 3, 420, 7847, 8, 420, 1, 420, 3, 420, 7850, 8, 420, 1, 420, 3, 420, 7853, 8, 420, 1, 420, 3, 420, 7856, 8, 420, 1, 420, 1, 420, 1, 420, 1, 420, 1, 420, 5, 420, 7863, 8, 420, 10, 420, 12, 420, 7866, 9, 420, 1, 420, 1, 420, 3, 420, 7870, 8, 420, 1, 420, 1, 420, 3, 420, 7874, 8, 420, 1, 420, 1, 420, 1, 421, 1, 421, 1, 421, 1, 422, 1, 422, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 1, 423, 3, 423, 7907, 8, 423, 1, 424, 1, 424, 1, 424, 1, 424, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7917, 8, 425, 1, 425, 1, 425, 3, 425, 7921, 8, 425, 1, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7927, 8, 425, 1, 425, 1, 425, 1, 425, 3, 425, 7932, 8, 425, 1, 426, 1, 426, 1, 426, 1, 426, 1, 426, 1, 427, 1, 427, 3, 427, 7941, 8, 427, 1, 427, 1, 427, 1, 427, 1, 427, 5, 427, 7947, 8, 427, 10, 427, 12, 427, 7950, 9, 427, 1, 427, 1, 427, 1, 428, 1, 428, 1, 428, 1, 428, 1, 429, 1, 429, 3, 429, 7960, 8, 429, 1, 429, 1, 429, 1, 429, 1, 429, 5, 429, 7966, 8, 429, 10, 429, 12, 429, 7969, 9, 429, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 7975, 8, 430, 10, 430, 12, 430, 7978, 9, 430, 1, 430, 1, 430, 1, 430, 1, 430, 5, 430, 7984, 8, 430, 10, 430, 12, 430, 7987, 9, 430, 5, 430, 7989, 8, 430, 10, 430, 12, 430, 7992, 9, 430, 1, 430, 3, 430, 7995, 8, 430, 1, 430, 1, 430, 1, 430, 1, 430, 1, 431, 1, 431, 5, 431, 8003, 8, 431, 10, 431, 12, 431, 8006, 9, 431, 1, 432, 1, 432, 3, 432, 8010, 8, 432, 1, 432, 1, 432, 1, 432, 1, 432, 5, 432, 8016, 8, 432, 10, 432, 12, 432, 8019, 9, 432, 4, 432, 8021, 8, 432, 11, 432, 12, 432, 8022, 1, 432, 3, 432, 8026, 8, 432, 1, 432, 1, 432, 1, 432, 1, 432, 1, 433, 3, 433, 8033, 8, 433, 1, 433, 1, 433, 1, 433, 1, 433, 3, 433, 8039, 8, 433, 1, 433, 1, 433, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8047, 8, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8055, 8, 434, 1, 434, 3, 434, 8058, 8, 434, 1, 434, 1, 434, 1, 434, 1, 434, 1, 434, 3, 434, 8065, 8, 434, 3, 434, 8067, 8, 434, 1, 435, 3, 435, 8070, 8, 435, 1, 435, 1, 435, 1, 435, 1, 435, 3, 435, 8076, 8, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 435, 1, 436, 1, 436, 3, 436, 8085, 8, 436, 1, 436, 1, 436, 3, 436, 8089, 8, 436, 1, 436, 1, 436, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 1, 437, 3, 437, 8103, 8, 437, 1, 437, 3, 437, 8106, 8, 437, 3, 437, 8108, 8, 437, 1, 437, 1, 437, 1, 438, 1, 438, 3, 438, 8114, 8, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 1, 438, 4, 438, 8122, 8, 438, 11, 438, 12, 438, 8123, 3, 438, 8126, 8, 438, 3, 438, 8128, 8, 438, 1, 438, 1, 438, 1, 438, 1, 438, 5, 438, 8134, 8, 438, 10, 438, 12, 438, 8137, 9, 438, 3, 438, 8139, 8, 438, 1, 438, 3, 438, 8142, 8, 438, 1, 439, 1, 439, 1, 439, 1, 439, 1, 440, 1, 440, 1, 440, 1, 440, 3, 440, 8152, 8, 440, 1, 440, 1, 440, 1, 441, 1, 441, 5, 441, 8158, 8, 441, 10, 441, 12, 441, 8161, 9, 441, 1, 441, 1, 441, 1, 441, 3, 441, 8166, 8, 441, 1, 441, 1, 441, 1, 442, 1, 442, 3, 442, 8172, 8, 442, 1, 442, 1, 442, 1, 443, 1, 443, 1, 443, 3, 443, 8179, 8, 443, 1, 443, 1, 443, 3, 443, 8183, 8, 443, 1, 443, 1, 443, 3, 443, 8187, 8, 443, 1, 443, 3, 443, 8190, 8, 443, 1, 443, 3, 443, 8193, 8, 443, 1, 443, 1, 443, 1, 444, 1, 444, 3, 444, 8199, 8, 444, 1, 444, 1, 444, 1, 445, 1, 445, 1, 445, 3, 445, 8206, 8, 445, 1, 445, 3, 445, 8209, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 3, 445, 8217, 8, 445, 3, 445, 8219, 8, 445, 1, 445, 1, 445, 1, 445, 1, 445, 1, 445, 5, 445, 8226, 8, 445, 10, 445, 12, 445, 8229, 9, 445, 1, 445, 1, 445, 3, 445, 8233, 8, 445, 3, 445, 8235, 8, 445, 1, 445, 1, 445, 1, 446, 1, 446, 1, 446, 3, 446, 8242, 8, 446, 1, 446, 1, 446, 1, 447, 1, 447, 3, 447, 8248, 8, 447, 1, 447, 3, 447, 8251, 8, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 447, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 8263, 8, 448, 1, 448, 1, 448, 1, 448, 1, 448, 1, 448, 3, 448, 8270, 8, 448, 3, 448, 8272, 8, 448, 1, 449, 1, 449, 3, 449, 8276, 8, 449, 1, 449, 1, 449, 1, 449, 1, 450, 3, 450, 8282, 8, 450, 1, 450, 1, 450, 1, 450, 3, 450, 8287, 8, 450, 1, 450, 1, 450, 3, 450, 8291, 8, 450, 1, 450, 3, 450, 8294, 8, 450, 1, 450, 3, 450, 8297, 8, 450, 1, 450, 1, 450, 1, 450, 1, 450, 1, 450, 4, 450, 8304, 8, 450, 11, 450, 12, 450, 8305, 1, 451, 3, 451, 8309, 8, 451, 1, 451, 1, 451, 3, 451, 8313, 8, 451, 1, 451, 1, 451, 3, 451, 8317, 8, 451, 3, 451, 8319, 8, 451, 1, 451, 3, 451, 8322, 8, 451, 1, 451, 3, 451, 8325, 8, 451, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8331, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8338, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8345, 8, 452, 1, 452, 1, 452, 1, 452, 1, 452, 3, 452, 8351, 8, 452, 3, 452, 8353, 8, 452, 1, 453, 1, 453, 3, 453, 8357, 8, 453, 1, 453, 1, 453, 1, 453, 3, 453, 8362, 8, 453, 1, 453, 1, 453, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 1, 454, 5, 454, 8378, 8, 454, 10, 454, 12, 454, 8381, 9, 454, 1, 454, 1, 454, 4, 454, 8385, 8, 454, 11, 454, 12, 454, 8386, 1, 455, 1, 455, 1, 455, 1, 455, 1, 455, 5, 455, 8394, 8, 455, 10, 455, 12, 455, 8397, 9, 455, 1, 455, 1, 455, 1, 455, 1, 455, 3, 455, 8403, 8, 455, 1, 456, 1, 456, 3, 456, 8407, 8, 456, 1, 457, 1, 457, 1, 457, 1, 457, 1, 458, 1, 458, 1, 458, 1, 459, 1, 459, 1, 459, 3, 459, 8419, 8, 459, 1, 459, 3, 459, 8422, 8, 459, 1, 459, 1, 459, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 1, 460, 3, 460, 8435, 8, 460, 1, 460, 3, 460, 8438, 8, 460, 1, 461, 1, 461, 3, 461, 8442, 8, 461, 1, 462, 1, 462, 1, 462, 1, 462, 1, 462, 5, 462, 8449, 8, 462, 10, 462, 12, 462, 8452, 9, 462, 1, 462, 1, 462, 5, 462, 8456, 8, 462, 10, 462, 12, 462, 8459, 9, 462, 4, 462, 8461, 8, 462, 11, 462, 12, 462, 8462, 1, 463, 1, 463, 1, 463, 3, 463, 8468, 8, 463, 1, 464, 1, 464, 3, 464, 8472, 8, 464, 1, 465, 3, 465, 8475, 8, 465, 1, 465, 3, 465, 8478, 8, 465, 1, 465, 3, 465, 8481, 8, 465, 1, 465, 3, 465, 8484, 8, 465, 1, 465, 3, 465, 8487, 8, 465, 1, 465, 1, 465, 3, 465, 8491, 8, 465, 1, 465, 3, 465, 8494, 8, 465, 1, 465, 0, 3, 676, 680, 682, 466, 0, 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, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 366, 368, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 390, 392, 394, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 416, 418, 420, 422, 424, 426, 428, 430, 432, 434, 436, 438, 440, 442, 444, 446, 448, 450, 452, 454, 456, 458, 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, 520, 522, 524, 526, 528, 530, 532, 534, 536, 538, 540, 542, 544, 546, 548, 550, 552, 554, 556, 558, 560, 562, 564, 566, 568, 570, 572, 574, 576, 578, 580, 582, 584, 586, 588, 590, 592, 594, 596, 598, 600, 602, 604, 606, 608, 610, 612, 614, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 636, 638, 640, 642, 644, 646, 648, 650, 652, 654, 656, 658, 660, 662, 664, 666, 668, 670, 672, 674, 676, 678, 680, 682, 684, 686, 688, 690, 692, 694, 696, 698, 700, 702, 704, 706, 708, 710, 712, 714, 716, 718, 720, 722, 724, 726, 728, 730, 732, 734, 736, 738, 740, 742, 744, 746, 748, 750, 752, 754, 756, 758, 760, 762, 764, 766, 768, 770, 772, 774, 776, 778, 780, 782, 784, 786, 788, 790, 792, 794, 796, 798, 800, 802, 804, 806, 808, 810, 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, 832, 834, 836, 838, 840, 842, 844, 846, 848, 850, 852, 854, 856, 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, 878, 880, 882, 884, 886, 888, 890, 892, 894, 896, 898, 900, 902, 904, 906, 908, 910, 912, 914, 916, 918, 920, 922, 924, 926, 928, 930, 0, 118, 2, 0, 195, 195, 364, 364, 2, 0, 66, 66, 318, 318, 2, 0, 99, 99, 318, 318, 2, 0, 134, 134, 318, 318, 1, 0, 529, 531, 2, 0, 10, 10, 94, 94, 2, 0, 133, 133, 191, 191, 2, 0, 254, 254, 332, 332, 2, 0, 162, 162, 363, 363, 2, 0, 180, 180, 221, 221, 5, 0, 30, 30, 288, 288, 329, 329, 352, 352, 354, 354, 2, 0, 109, 109, 532, 532, 2, 0, 158, 158, 277, 277, 2, 0, 367, 367, 439, 439, 2, 0, 139, 139, 312, 312, 2, 0, 191, 191, 333, 333, 2, 0, 313, 313, 333, 333, 2, 0, 150, 150, 315, 315, 2, 0, 64, 64, 94, 94, 4, 0, 78, 78, 183, 183, 197, 197, 298, 298, 2, 0, 213, 213, 254, 254, 2, 0, 352, 352, 354, 354, 2, 0, 200, 200, 224, 224, 9, 0, 30, 30, 160, 160, 165, 165, 179, 179, 219, 219, 227, 227, 342, 342, 345, 345, 438, 438, 3, 0, 113, 113, 284, 284, 336, 336, 2, 0, 53, 53, 78, 78, 2, 0, 105, 105, 379, 379, 2, 0, 260, 260, 262, 262, 3, 0, 173, 173, 260, 260, 262, 262, 1, 0, 12, 13, 2, 0, 64, 64, 375, 375, 2, 0, 156, 156, 206, 206, 2, 0, 189, 189, 360, 360, 2, 0, 215, 215, 373, 373, 3, 0, 133, 133, 191, 191, 333, 333, 5, 0, 30, 30, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 9, 9, 94, 94, 2, 0, 92, 92, 226, 226, 1, 0, 448, 449, 2, 0, 92, 92, 414, 414, 2, 0, 341, 341, 414, 414, 4, 0, 163, 163, 185, 185, 283, 283, 353, 353, 2, 0, 135, 135, 145, 145, 2, 0, 211, 211, 278, 278, 3, 0, 321, 321, 357, 357, 445, 445, 3, 0, 66, 66, 99, 99, 318, 318, 5, 0, 108, 108, 168, 168, 226, 226, 328, 328, 342, 342, 2, 0, 167, 167, 314, 314, 2, 0, 61, 61, 265, 265, 4, 0, 207, 207, 249, 249, 268, 268, 293, 293, 2, 0, 130, 130, 307, 307, 2, 0, 64, 64, 68, 68, 10, 0, 46, 46, 88, 88, 182, 182, 202, 202, 241, 241, 352, 352, 354, 354, 357, 358, 369, 369, 521, 523, 5, 0, 212, 212, 329, 329, 350, 350, 455, 455, 457, 457, 5, 0, 212, 212, 329, 329, 350, 350, 361, 361, 455, 456, 2, 0, 37, 37, 55, 55, 2, 0, 207, 207, 249, 249, 2, 0, 10, 10, 53, 53, 2, 0, 181, 181, 243, 243, 2, 0, 170, 170, 320, 320, 2, 0, 141, 141, 223, 223, 5, 0, 108, 108, 168, 168, 189, 189, 342, 342, 360, 360, 2, 0, 226, 226, 328, 328, 2, 0, 163, 163, 185, 185, 2, 0, 186, 186, 193, 193, 4, 0, 88, 88, 182, 182, 241, 241, 369, 369, 2, 0, 137, 137, 242, 242, 2, 0, 161, 161, 319, 319, 4, 0, 129, 129, 161, 161, 319, 319, 454, 454, 2, 0, 356, 356, 380, 380, 2, 0, 81, 81, 382, 382, 2, 0, 151, 151, 254, 254, 2, 0, 133, 133, 138, 138, 1, 0, 31, 32, 2, 0, 128, 128, 547, 547, 2, 0, 60, 60, 96, 96, 2, 0, 99, 99, 349, 349, 2, 0, 131, 131, 414, 414, 2, 0, 201, 201, 334, 334, 3, 0, 59, 59, 70, 70, 97, 97, 2, 0, 30, 30, 56, 56, 1, 0, 527, 528, 2, 0, 207, 207, 268, 268, 2, 0, 320, 320, 414, 414, 2, 0, 571, 571, 573, 573, 1, 0, 468, 469, 4, 0, 113, 113, 115, 115, 119, 119, 126, 126, 2, 0, 360, 360, 477, 477, 2, 0, 394, 395, 409, 409, 2, 0, 391, 392, 406, 406, 1, 0, 391, 392, 1, 0, 418, 419, 5, 0, 10, 10, 16, 17, 21, 21, 23, 23, 25, 25, 3, 0, 9, 9, 14, 14, 27, 27, 2, 0, 98, 98, 396, 396, 2, 0, 50, 51, 75, 76, 2, 0, 41, 41, 420, 420, 3, 0, 39, 39, 73, 73, 95, 95, 4, 0, 393, 393, 399, 399, 404, 404, 425, 425, 2, 0, 292, 292, 347, 347, 2, 0, 166, 166, 188, 188, 2, 0, 304, 304, 450, 450, 3, 0, 299, 299, 320, 320, 481, 481, 2, 0, 208, 208, 289, 289, 3, 0, 30, 30, 34, 34, 90, 90, 6, 0, 9, 10, 12, 17, 21, 21, 23, 23, 25, 25, 27, 27, 2, 0, 114, 114, 120, 120, 2, 0, 20, 20, 22, 22, 1, 0, 483, 486, 17, 0, 53, 53, 116, 116, 123, 124, 129, 228, 238, 386, 433, 452, 455, 469, 471, 471, 473, 473, 475, 475, 477, 488, 490, 502, 504, 504, 506, 518, 520, 520, 524, 524, 547, 548, 3, 0, 106, 123, 125, 128, 472, 472, 4, 0, 30, 52, 54, 70, 72, 105, 454, 454, 2, 0, 62, 62, 116, 116, 2, 0, 10, 10, 20, 20, 2, 0, 434, 434, 501, 501, 2, 0, 167, 167, 507, 507, 1, 0, 512, 517, 2, 0, 144, 144, 210, 210, 9930, 0, 935, 1, 0, 0, 0, 2, 940, 1, 0, 0, 0, 4, 1064, 1, 0, 0, 0, 6, 1066, 1, 0, 0, 0, 8, 1069, 1, 0, 0, 0, 10, 1119, 1, 0, 0, 0, 12, 1129, 1, 0, 0, 0, 14, 1131, 1, 0, 0, 0, 16, 1143, 1, 0, 0, 0, 18, 1155, 1, 0, 0, 0, 20, 1166, 1, 0, 0, 0, 22, 1200, 1, 0, 0, 0, 24, 1244, 1, 0, 0, 0, 26, 1246, 1, 0, 0, 0, 28, 1258, 1, 0, 0, 0, 30, 1265, 1, 0, 0, 0, 32, 1284, 1, 0, 0, 0, 34, 1292, 1, 0, 0, 0, 36, 1294, 1, 0, 0, 0, 38, 1308, 1, 0, 0, 0, 40, 1312, 1, 0, 0, 0, 42, 1349, 1, 0, 0, 0, 44, 1351, 1, 0, 0, 0, 46, 1359, 1, 0, 0, 0, 48, 1369, 1, 0, 0, 0, 50, 1376, 1, 0, 0, 0, 52, 1384, 1, 0, 0, 0, 54, 1390, 1, 0, 0, 0, 56, 1406, 1, 0, 0, 0, 58, 1410, 1, 0, 0, 0, 60, 1412, 1, 0, 0, 0, 62, 1424, 1, 0, 0, 0, 64, 1429, 1, 0, 0, 0, 66, 1434, 1, 0, 0, 0, 68, 1436, 1, 0, 0, 0, 70, 1448, 1, 0, 0, 0, 72, 1456, 1, 0, 0, 0, 74, 1458, 1, 0, 0, 0, 76, 1582, 1, 0, 0, 0, 78, 1584, 1, 0, 0, 0, 80, 1601, 1, 0, 0, 0, 82, 1603, 1, 0, 0, 0, 84, 1617, 1, 0, 0, 0, 86, 1619, 1, 0, 0, 0, 88, 1633, 1, 0, 0, 0, 90, 1635, 1, 0, 0, 0, 92, 1872, 1, 0, 0, 0, 94, 1879, 1, 0, 0, 0, 96, 1881, 1, 0, 0, 0, 98, 1883, 1, 0, 0, 0, 100, 1886, 1, 0, 0, 0, 102, 1897, 1, 0, 0, 0, 104, 1900, 1, 0, 0, 0, 106, 1936, 1, 0, 0, 0, 108, 1938, 1, 0, 0, 0, 110, 1979, 1, 0, 0, 0, 112, 1981, 1, 0, 0, 0, 114, 2035, 1, 0, 0, 0, 116, 2076, 1, 0, 0, 0, 118, 2078, 1, 0, 0, 0, 120, 2095, 1, 0, 0, 0, 122, 2176, 1, 0, 0, 0, 124, 2178, 1, 0, 0, 0, 126, 2189, 1, 0, 0, 0, 128, 2212, 1, 0, 0, 0, 130, 2230, 1, 0, 0, 0, 132, 2232, 1, 0, 0, 0, 134, 2267, 1, 0, 0, 0, 136, 2360, 1, 0, 0, 0, 138, 2365, 1, 0, 0, 0, 140, 2367, 1, 0, 0, 0, 142, 2465, 1, 0, 0, 0, 144, 2467, 1, 0, 0, 0, 146, 2471, 1, 0, 0, 0, 148, 2482, 1, 0, 0, 0, 150, 2490, 1, 0, 0, 0, 152, 2493, 1, 0, 0, 0, 154, 2496, 1, 0, 0, 0, 156, 2514, 1, 0, 0, 0, 158, 2516, 1, 0, 0, 0, 160, 2520, 1, 0, 0, 0, 162, 2533, 1, 0, 0, 0, 164, 2535, 1, 0, 0, 0, 166, 2540, 1, 0, 0, 0, 168, 2560, 1, 0, 0, 0, 170, 2568, 1, 0, 0, 0, 172, 2575, 1, 0, 0, 0, 174, 2577, 1, 0, 0, 0, 176, 2586, 1, 0, 0, 0, 178, 2589, 1, 0, 0, 0, 180, 2593, 1, 0, 0, 0, 182, 2597, 1, 0, 0, 0, 184, 2622, 1, 0, 0, 0, 186, 2632, 1, 0, 0, 0, 188, 2646, 1, 0, 0, 0, 190, 2662, 1, 0, 0, 0, 192, 2668, 1, 0, 0, 0, 194, 2695, 1, 0, 0, 0, 196, 2705, 1, 0, 0, 0, 198, 2721, 1, 0, 0, 0, 200, 2765, 1, 0, 0, 0, 202, 2772, 1, 0, 0, 0, 204, 2774, 1, 0, 0, 0, 206, 2800, 1, 0, 0, 0, 208, 2811, 1, 0, 0, 0, 210, 2830, 1, 0, 0, 0, 212, 2841, 1, 0, 0, 0, 214, 2879, 1, 0, 0, 0, 216, 2900, 1, 0, 0, 0, 218, 2902, 1, 0, 0, 0, 220, 2922, 1, 0, 0, 0, 222, 2934, 1, 0, 0, 0, 224, 2946, 1, 0, 0, 0, 226, 2949, 1, 0, 0, 0, 228, 2952, 1, 0, 0, 0, 230, 2972, 1, 0, 0, 0, 232, 2977, 1, 0, 0, 0, 234, 3026, 1, 0, 0, 0, 236, 3028, 1, 0, 0, 0, 238, 3051, 1, 0, 0, 0, 240, 3067, 1, 0, 0, 0, 242, 3079, 1, 0, 0, 0, 244, 3106, 1, 0, 0, 0, 246, 3121, 1, 0, 0, 0, 248, 3184, 1, 0, 0, 0, 250, 3186, 1, 0, 0, 0, 252, 3191, 1, 0, 0, 0, 254, 3197, 1, 0, 0, 0, 256, 3284, 1, 0, 0, 0, 258, 3290, 1, 0, 0, 0, 260, 3292, 1, 0, 0, 0, 262, 3308, 1, 0, 0, 0, 264, 3310, 1, 0, 0, 0, 266, 3319, 1, 0, 0, 0, 268, 3323, 1, 0, 0, 0, 270, 3336, 1, 0, 0, 0, 272, 3348, 1, 0, 0, 0, 274, 3350, 1, 0, 0, 0, 276, 3372, 1, 0, 0, 0, 278, 3384, 1, 0, 0, 0, 280, 3395, 1, 0, 0, 0, 282, 3486, 1, 0, 0, 0, 284, 3488, 1, 0, 0, 0, 286, 3499, 1, 0, 0, 0, 288, 3510, 1, 0, 0, 0, 290, 3512, 1, 0, 0, 0, 292, 3538, 1, 0, 0, 0, 294, 3540, 1, 0, 0, 0, 296, 3544, 1, 0, 0, 0, 298, 3594, 1, 0, 0, 0, 300, 3596, 1, 0, 0, 0, 302, 3602, 1, 0, 0, 0, 304, 3627, 1, 0, 0, 0, 306, 3631, 1, 0, 0, 0, 308, 3845, 1, 0, 0, 0, 310, 3863, 1, 0, 0, 0, 312, 3889, 1, 0, 0, 0, 314, 3891, 1, 0, 0, 0, 316, 3899, 1, 0, 0, 0, 318, 3905, 1, 0, 0, 0, 320, 3909, 1, 0, 0, 0, 322, 3929, 1, 0, 0, 0, 324, 3935, 1, 0, 0, 0, 326, 4002, 1, 0, 0, 0, 328, 4033, 1, 0, 0, 0, 330, 4079, 1, 0, 0, 0, 332, 4081, 1, 0, 0, 0, 334, 4083, 1, 0, 0, 0, 336, 4094, 1, 0, 0, 0, 338, 4131, 1, 0, 0, 0, 340, 4133, 1, 0, 0, 0, 342, 4139, 1, 0, 0, 0, 344, 4189, 1, 0, 0, 0, 346, 4192, 1, 0, 0, 0, 348, 4206, 1, 0, 0, 0, 350, 4227, 1, 0, 0, 0, 352, 4251, 1, 0, 0, 0, 354, 4292, 1, 0, 0, 0, 356, 4294, 1, 0, 0, 0, 358, 4296, 1, 0, 0, 0, 360, 4336, 1, 0, 0, 0, 362, 4353, 1, 0, 0, 0, 364, 4373, 1, 0, 0, 0, 366, 4426, 1, 0, 0, 0, 368, 4429, 1, 0, 0, 0, 370, 4435, 1, 0, 0, 0, 372, 4443, 1, 0, 0, 0, 374, 4456, 1, 0, 0, 0, 376, 4458, 1, 0, 0, 0, 378, 4471, 1, 0, 0, 0, 380, 4473, 1, 0, 0, 0, 382, 4486, 1, 0, 0, 0, 384, 4496, 1, 0, 0, 0, 386, 4507, 1, 0, 0, 0, 388, 4518, 1, 0, 0, 0, 390, 4520, 1, 0, 0, 0, 392, 4525, 1, 0, 0, 0, 394, 4539, 1, 0, 0, 0, 396, 4571, 1, 0, 0, 0, 398, 4608, 1, 0, 0, 0, 400, 4610, 1, 0, 0, 0, 402, 4613, 1, 0, 0, 0, 404, 4616, 1, 0, 0, 0, 406, 4633, 1, 0, 0, 0, 408, 4654, 1, 0, 0, 0, 410, 4670, 1, 0, 0, 0, 412, 4686, 1, 0, 0, 0, 414, 4708, 1, 0, 0, 0, 416, 4713, 1, 0, 0, 0, 418, 4716, 1, 0, 0, 0, 420, 4724, 1, 0, 0, 0, 422, 4749, 1, 0, 0, 0, 424, 4752, 1, 0, 0, 0, 426, 4780, 1, 0, 0, 0, 428, 4785, 1, 0, 0, 0, 430, 4825, 1, 0, 0, 0, 432, 5037, 1, 0, 0, 0, 434, 5039, 1, 0, 0, 0, 436, 5127, 1, 0, 0, 0, 438, 5129, 1, 0, 0, 0, 440, 5135, 1, 0, 0, 0, 442, 5146, 1, 0, 0, 0, 444, 5156, 1, 0, 0, 0, 446, 5236, 1, 0, 0, 0, 448, 5238, 1, 0, 0, 0, 450, 5252, 1, 0, 0, 0, 452, 5274, 1, 0, 0, 0, 454, 5347, 1, 0, 0, 0, 456, 5349, 1, 0, 0, 0, 458, 5390, 1, 0, 0, 0, 460, 5392, 1, 0, 0, 0, 462, 5397, 1, 0, 0, 0, 464, 5400, 1, 0, 0, 0, 466, 5403, 1, 0, 0, 0, 468, 5453, 1, 0, 0, 0, 470, 5455, 1, 0, 0, 0, 472, 5466, 1, 0, 0, 0, 474, 5468, 1, 0, 0, 0, 476, 5478, 1, 0, 0, 0, 478, 5513, 1, 0, 0, 0, 480, 5516, 1, 0, 0, 0, 482, 5537, 1, 0, 0, 0, 484, 5547, 1, 0, 0, 0, 486, 5567, 1, 0, 0, 0, 488, 5573, 1, 0, 0, 0, 490, 5579, 1, 0, 0, 0, 492, 5584, 1, 0, 0, 0, 494, 5597, 1, 0, 0, 0, 496, 5624, 1, 0, 0, 0, 498, 5672, 1, 0, 0, 0, 500, 5674, 1, 0, 0, 0, 502, 5712, 1, 0, 0, 0, 504, 5714, 1, 0, 0, 0, 506, 5735, 1, 0, 0, 0, 508, 5755, 1, 0, 0, 0, 510, 5759, 1, 0, 0, 0, 512, 5774, 1, 0, 0, 0, 514, 5776, 1, 0, 0, 0, 516, 5780, 1, 0, 0, 0, 518, 5784, 1, 0, 0, 0, 520, 5792, 1, 0, 0, 0, 522, 5816, 1, 0, 0, 0, 524, 5818, 1, 0, 0, 0, 526, 5829, 1, 0, 0, 0, 528, 5837, 1, 0, 0, 0, 530, 5852, 1, 0, 0, 0, 532, 5877, 1, 0, 0, 0, 534, 5879, 1, 0, 0, 0, 536, 5883, 1, 0, 0, 0, 538, 5892, 1, 0, 0, 0, 540, 5932, 1, 0, 0, 0, 542, 5943, 1, 0, 0, 0, 544, 5951, 1, 0, 0, 0, 546, 5954, 1, 0, 0, 0, 548, 5958, 1, 0, 0, 0, 550, 5973, 1, 0, 0, 0, 552, 5998, 1, 0, 0, 0, 554, 6013, 1, 0, 0, 0, 556, 6039, 1, 0, 0, 0, 558, 6041, 1, 0, 0, 0, 560, 6064, 1, 0, 0, 0, 562, 6066, 1, 0, 0, 0, 564, 6074, 1, 0, 0, 0, 566, 6092, 1, 0, 0, 0, 568, 6116, 1, 0, 0, 0, 570, 6128, 1, 0, 0, 0, 572, 6132, 1, 0, 0, 0, 574, 6144, 1, 0, 0, 0, 576, 6164, 1, 0, 0, 0, 578, 6172, 1, 0, 0, 0, 580, 6186, 1, 0, 0, 0, 582, 6209, 1, 0, 0, 0, 584, 6211, 1, 0, 0, 0, 586, 6216, 1, 0, 0, 0, 588, 6226, 1, 0, 0, 0, 590, 6247, 1, 0, 0, 0, 592, 6249, 1, 0, 0, 0, 594, 6258, 1, 0, 0, 0, 596, 6269, 1, 0, 0, 0, 598, 6279, 1, 0, 0, 0, 600, 6281, 1, 0, 0, 0, 602, 6288, 1, 0, 0, 0, 604, 6319, 1, 0, 0, 0, 606, 6349, 1, 0, 0, 0, 608, 6351, 1, 0, 0, 0, 610, 6360, 1, 0, 0, 0, 612, 6363, 1, 0, 0, 0, 614, 6434, 1, 0, 0, 0, 616, 6458, 1, 0, 0, 0, 618, 6479, 1, 0, 0, 0, 620, 6481, 1, 0, 0, 0, 622, 6489, 1, 0, 0, 0, 624, 6506, 1, 0, 0, 0, 626, 6532, 1, 0, 0, 0, 628, 6534, 1, 0, 0, 0, 630, 6542, 1, 0, 0, 0, 632, 6549, 1, 0, 0, 0, 634, 6573, 1, 0, 0, 0, 636, 6579, 1, 0, 0, 0, 638, 6587, 1, 0, 0, 0, 640, 6590, 1, 0, 0, 0, 642, 6597, 1, 0, 0, 0, 644, 6605, 1, 0, 0, 0, 646, 6610, 1, 0, 0, 0, 648, 6640, 1, 0, 0, 0, 650, 6667, 1, 0, 0, 0, 652, 6695, 1, 0, 0, 0, 654, 6712, 1, 0, 0, 0, 656, 6718, 1, 0, 0, 0, 658, 6736, 1, 0, 0, 0, 660, 6738, 1, 0, 0, 0, 662, 6742, 1, 0, 0, 0, 664, 6759, 1, 0, 0, 0, 666, 6764, 1, 0, 0, 0, 668, 6802, 1, 0, 0, 0, 670, 6804, 1, 0, 0, 0, 672, 6808, 1, 0, 0, 0, 674, 6810, 1, 0, 0, 0, 676, 6819, 1, 0, 0, 0, 678, 6903, 1, 0, 0, 0, 680, 6909, 1, 0, 0, 0, 682, 7018, 1, 0, 0, 0, 684, 7050, 1, 0, 0, 0, 686, 7103, 1, 0, 0, 0, 688, 7107, 1, 0, 0, 0, 690, 7283, 1, 0, 0, 0, 692, 7285, 1, 0, 0, 0, 694, 7293, 1, 0, 0, 0, 696, 7298, 1, 0, 0, 0, 698, 7300, 1, 0, 0, 0, 700, 7308, 1, 0, 0, 0, 702, 7311, 1, 0, 0, 0, 704, 7320, 1, 0, 0, 0, 706, 7324, 1, 0, 0, 0, 708, 7329, 1, 0, 0, 0, 710, 7346, 1, 0, 0, 0, 712, 7373, 1, 0, 0, 0, 714, 7382, 1, 0, 0, 0, 716, 7384, 1, 0, 0, 0, 718, 7391, 1, 0, 0, 0, 720, 7395, 1, 0, 0, 0, 722, 7397, 1, 0, 0, 0, 724, 7405, 1, 0, 0, 0, 726, 7413, 1, 0, 0, 0, 728, 7420, 1, 0, 0, 0, 730, 7422, 1, 0, 0, 0, 732, 7435, 1, 0, 0, 0, 734, 7439, 1, 0, 0, 0, 736, 7441, 1, 0, 0, 0, 738, 7454, 1, 0, 0, 0, 740, 7456, 1, 0, 0, 0, 742, 7478, 1, 0, 0, 0, 744, 7480, 1, 0, 0, 0, 746, 7503, 1, 0, 0, 0, 748, 7505, 1, 0, 0, 0, 750, 7527, 1, 0, 0, 0, 752, 7530, 1, 0, 0, 0, 754, 7537, 1, 0, 0, 0, 756, 7540, 1, 0, 0, 0, 758, 7556, 1, 0, 0, 0, 760, 7558, 1, 0, 0, 0, 762, 7566, 1, 0, 0, 0, 764, 7574, 1, 0, 0, 0, 766, 7582, 1, 0, 0, 0, 768, 7590, 1, 0, 0, 0, 770, 7592, 1, 0, 0, 0, 772, 7594, 1, 0, 0, 0, 774, 7596, 1, 0, 0, 0, 776, 7598, 1, 0, 0, 0, 778, 7600, 1, 0, 0, 0, 780, 7602, 1, 0, 0, 0, 782, 7606, 1, 0, 0, 0, 784, 7614, 1, 0, 0, 0, 786, 7622, 1, 0, 0, 0, 788, 7624, 1, 0, 0, 0, 790, 7626, 1, 0, 0, 0, 792, 7628, 1, 0, 0, 0, 794, 7630, 1, 0, 0, 0, 796, 7636, 1, 0, 0, 0, 798, 7642, 1, 0, 0, 0, 800, 7648, 1, 0, 0, 0, 802, 7650, 1, 0, 0, 0, 804, 7656, 1, 0, 0, 0, 806, 7662, 1, 0, 0, 0, 808, 7664, 1, 0, 0, 0, 810, 7680, 1, 0, 0, 0, 812, 7683, 1, 0, 0, 0, 814, 7692, 1, 0, 0, 0, 816, 7694, 1, 0, 0, 0, 818, 7704, 1, 0, 0, 0, 820, 7708, 1, 0, 0, 0, 822, 7713, 1, 0, 0, 0, 824, 7719, 1, 0, 0, 0, 826, 7732, 1, 0, 0, 0, 828, 7734, 1, 0, 0, 0, 830, 7787, 1, 0, 0, 0, 832, 7789, 1, 0, 0, 0, 834, 7791, 1, 0, 0, 0, 836, 7794, 1, 0, 0, 0, 838, 7822, 1, 0, 0, 0, 840, 7826, 1, 0, 0, 0, 842, 7877, 1, 0, 0, 0, 844, 7880, 1, 0, 0, 0, 846, 7906, 1, 0, 0, 0, 848, 7908, 1, 0, 0, 0, 850, 7931, 1, 0, 0, 0, 852, 7933, 1, 0, 0, 0, 854, 7938, 1, 0, 0, 0, 856, 7953, 1, 0, 0, 0, 858, 7959, 1, 0, 0, 0, 860, 7970, 1, 0, 0, 0, 862, 8000, 1, 0, 0, 0, 864, 8007, 1, 0, 0, 0, 866, 8032, 1, 0, 0, 0, 868, 8042, 1, 0, 0, 0, 870, 8069, 1, 0, 0, 0, 872, 8082, 1, 0, 0, 0, 874, 8092, 1, 0, 0, 0, 876, 8111, 1, 0, 0, 0, 878, 8143, 1, 0, 0, 0, 880, 8147, 1, 0, 0, 0, 882, 8155, 1, 0, 0, 0, 884, 8169, 1, 0, 0, 0, 886, 8175, 1, 0, 0, 0, 888, 8196, 1, 0, 0, 0, 890, 8202, 1, 0, 0, 0, 892, 8241, 1, 0, 0, 0, 894, 8245, 1, 0, 0, 0, 896, 8271, 1, 0, 0, 0, 898, 8273, 1, 0, 0, 0, 900, 8281, 1, 0, 0, 0, 902, 8318, 1, 0, 0, 0, 904, 8352, 1, 0, 0, 0, 906, 8354, 1, 0, 0, 0, 908, 8365, 1, 0, 0, 0, 910, 8402, 1, 0, 0, 0, 912, 8406, 1, 0, 0, 0, 914, 8408, 1, 0, 0, 0, 916, 8412, 1, 0, 0, 0, 918, 8415, 1, 0, 0, 0, 920, 8437, 1, 0, 0, 0, 922, 8441, 1, 0, 0, 0, 924, 8443, 1, 0, 0, 0, 926, 8467, 1, 0, 0, 0, 928, 8471, 1, 0, 0, 0, 930, 8474, 1, 0, 0, 0, 932, 934, 3, 2, 1, 0, 933, 932, 1, 0, 0, 0, 934, 937, 1, 0, 0, 0, 935, 933, 1, 0, 0, 0, 935, 936, 1, 0, 0, 0, 936, 938, 1, 0, 0, 0, 937, 935, 1, 0, 0, 0, 938, 939, 5, 0, 0, 1, 939, 1, 1, 0, 0, 0, 940, 942, 3, 4, 2, 0, 941, 943, 5, 7, 0, 0, 942, 941, 1, 0, 0, 0, 942, 943, 1, 0, 0, 0, 943, 3, 1, 0, 0, 0, 944, 1065, 3, 278, 139, 0, 945, 1065, 3, 488, 244, 0, 946, 1065, 3, 484, 242, 0, 947, 1065, 3, 486, 243, 0, 948, 1065, 3, 352, 176, 0, 949, 1065, 3, 494, 247, 0, 950, 1065, 3, 292, 146, 0, 951, 1065, 3, 210, 105, 0, 952, 1065, 3, 212, 106, 0, 953, 1065, 3, 218, 109, 0, 954, 1065, 3, 232, 116, 0, 955, 1065, 3, 404, 202, 0, 956, 1065, 3, 28, 14, 0, 957, 1065, 3, 434, 217, 0, 958, 1065, 3, 436, 218, 0, 959, 1065, 3, 446, 223, 0, 960, 1065, 3, 438, 219, 0, 961, 1065, 3, 444, 222, 0, 962, 1065, 3, 244, 122, 0, 963, 1065, 3, 246, 123, 0, 964, 1065, 3, 198, 99, 0, 965, 1065, 3, 490, 245, 0, 966, 1065, 3, 76, 38, 0, 967, 1065, 3, 430, 215, 0, 968, 1065, 3, 108, 54, 0, 969, 1065, 3, 450, 225, 0, 970, 1065, 3, 18, 9, 0, 971, 1065, 3, 20, 10, 0, 972, 1065, 3, 16, 8, 0, 973, 1065, 3, 454, 227, 0, 974, 1065, 3, 184, 92, 0, 975, 1065, 3, 498, 249, 0, 976, 1065, 3, 496, 248, 0, 977, 1065, 3, 240, 120, 0, 978, 1065, 3, 506, 253, 0, 979, 1065, 3, 6, 3, 0, 980, 1065, 3, 72, 36, 0, 981, 1065, 3, 112, 56, 0, 982, 1065, 3, 502, 251, 0, 983, 1065, 3, 324, 162, 0, 984, 1065, 3, 70, 35, 0, 985, 1065, 3, 114, 57, 0, 986, 1065, 3, 254, 127, 0, 987, 1065, 3, 186, 93, 0, 988, 1065, 3, 280, 140, 0, 989, 1065, 3, 420, 210, 0, 990, 1065, 3, 500, 250, 0, 991, 1065, 3, 492, 246, 0, 992, 1065, 3, 208, 104, 0, 993, 1065, 3, 214, 107, 0, 994, 1065, 3, 228, 114, 0, 995, 1065, 3, 234, 117, 0, 996, 1065, 3, 364, 182, 0, 997, 1065, 3, 26, 13, 0, 998, 1065, 3, 192, 96, 0, 999, 1065, 3, 296, 148, 0, 1000, 1065, 3, 300, 150, 0, 1001, 1065, 3, 448, 224, 0, 1002, 1065, 3, 302, 151, 0, 1003, 1065, 3, 242, 121, 0, 1004, 1065, 3, 204, 102, 0, 1005, 1065, 3, 30, 15, 0, 1006, 1065, 3, 196, 98, 0, 1007, 1065, 3, 120, 60, 0, 1008, 1065, 3, 452, 226, 0, 1009, 1065, 3, 182, 91, 0, 1010, 1065, 3, 206, 103, 0, 1011, 1065, 3, 424, 212, 0, 1012, 1065, 3, 256, 128, 0, 1013, 1065, 3, 274, 137, 0, 1014, 1065, 3, 8, 4, 0, 1015, 1065, 3, 14, 7, 0, 1016, 1065, 3, 238, 119, 0, 1017, 1065, 3, 480, 240, 0, 1018, 1065, 3, 536, 268, 0, 1019, 1065, 3, 558, 279, 0, 1020, 1065, 3, 282, 141, 0, 1021, 1065, 3, 548, 274, 0, 1022, 1065, 3, 74, 37, 0, 1023, 1065, 3, 418, 209, 0, 1024, 1065, 3, 308, 154, 0, 1025, 1065, 3, 532, 266, 0, 1026, 1065, 3, 520, 260, 0, 1027, 1065, 3, 328, 164, 0, 1028, 1065, 3, 334, 167, 0, 1029, 1065, 3, 348, 174, 0, 1030, 1065, 3, 900, 450, 0, 1031, 1065, 3, 236, 118, 0, 1032, 1065, 3, 358, 179, 0, 1033, 1065, 3, 538, 269, 0, 1034, 1065, 3, 464, 232, 0, 1035, 1065, 3, 194, 97, 0, 1036, 1065, 3, 478, 239, 0, 1037, 1065, 3, 550, 275, 0, 1038, 1065, 3, 460, 230, 0, 1039, 1065, 3, 526, 263, 0, 1040, 1065, 3, 306, 153, 0, 1041, 1065, 3, 428, 214, 0, 1042, 1065, 3, 408, 204, 0, 1043, 1065, 3, 406, 203, 0, 1044, 1065, 3, 410, 205, 0, 1045, 1065, 3, 432, 216, 0, 1046, 1065, 3, 336, 168, 0, 1047, 1065, 3, 350, 175, 0, 1048, 1065, 3, 456, 228, 0, 1049, 1065, 3, 326, 163, 0, 1050, 1065, 3, 560, 280, 0, 1051, 1065, 3, 468, 234, 0, 1052, 1065, 3, 320, 160, 0, 1053, 1065, 3, 466, 233, 0, 1054, 1065, 3, 552, 276, 0, 1055, 1065, 3, 504, 252, 0, 1056, 1065, 3, 60, 30, 0, 1057, 1065, 3, 36, 18, 0, 1058, 1065, 3, 68, 34, 0, 1059, 1065, 3, 476, 238, 0, 1060, 1062, 5, 581, 0, 0, 1061, 1063, 5, 582, 0, 0, 1062, 1061, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1065, 1, 0, 0, 0, 1064, 944, 1, 0, 0, 0, 1064, 945, 1, 0, 0, 0, 1064, 946, 1, 0, 0, 0, 1064, 947, 1, 0, 0, 0, 1064, 948, 1, 0, 0, 0, 1064, 949, 1, 0, 0, 0, 1064, 950, 1, 0, 0, 0, 1064, 951, 1, 0, 0, 0, 1064, 952, 1, 0, 0, 0, 1064, 953, 1, 0, 0, 0, 1064, 954, 1, 0, 0, 0, 1064, 955, 1, 0, 0, 0, 1064, 956, 1, 0, 0, 0, 1064, 957, 1, 0, 0, 0, 1064, 958, 1, 0, 0, 0, 1064, 959, 1, 0, 0, 0, 1064, 960, 1, 0, 0, 0, 1064, 961, 1, 0, 0, 0, 1064, 962, 1, 0, 0, 0, 1064, 963, 1, 0, 0, 0, 1064, 964, 1, 0, 0, 0, 1064, 965, 1, 0, 0, 0, 1064, 966, 1, 0, 0, 0, 1064, 967, 1, 0, 0, 0, 1064, 968, 1, 0, 0, 0, 1064, 969, 1, 0, 0, 0, 1064, 970, 1, 0, 0, 0, 1064, 971, 1, 0, 0, 0, 1064, 972, 1, 0, 0, 0, 1064, 973, 1, 0, 0, 0, 1064, 974, 1, 0, 0, 0, 1064, 975, 1, 0, 0, 0, 1064, 976, 1, 0, 0, 0, 1064, 977, 1, 0, 0, 0, 1064, 978, 1, 0, 0, 0, 1064, 979, 1, 0, 0, 0, 1064, 980, 1, 0, 0, 0, 1064, 981, 1, 0, 0, 0, 1064, 982, 1, 0, 0, 0, 1064, 983, 1, 0, 0, 0, 1064, 984, 1, 0, 0, 0, 1064, 985, 1, 0, 0, 0, 1064, 986, 1, 0, 0, 0, 1064, 987, 1, 0, 0, 0, 1064, 988, 1, 0, 0, 0, 1064, 989, 1, 0, 0, 0, 1064, 990, 1, 0, 0, 0, 1064, 991, 1, 0, 0, 0, 1064, 992, 1, 0, 0, 0, 1064, 993, 1, 0, 0, 0, 1064, 994, 1, 0, 0, 0, 1064, 995, 1, 0, 0, 0, 1064, 996, 1, 0, 0, 0, 1064, 997, 1, 0, 0, 0, 1064, 998, 1, 0, 0, 0, 1064, 999, 1, 0, 0, 0, 1064, 1000, 1, 0, 0, 0, 1064, 1001, 1, 0, 0, 0, 1064, 1002, 1, 0, 0, 0, 1064, 1003, 1, 0, 0, 0, 1064, 1004, 1, 0, 0, 0, 1064, 1005, 1, 0, 0, 0, 1064, 1006, 1, 0, 0, 0, 1064, 1007, 1, 0, 0, 0, 1064, 1008, 1, 0, 0, 0, 1064, 1009, 1, 0, 0, 0, 1064, 1010, 1, 0, 0, 0, 1064, 1011, 1, 0, 0, 0, 1064, 1012, 1, 0, 0, 0, 1064, 1013, 1, 0, 0, 0, 1064, 1014, 1, 0, 0, 0, 1064, 1015, 1, 0, 0, 0, 1064, 1016, 1, 0, 0, 0, 1064, 1017, 1, 0, 0, 0, 1064, 1018, 1, 0, 0, 0, 1064, 1019, 1, 0, 0, 0, 1064, 1020, 1, 0, 0, 0, 1064, 1021, 1, 0, 0, 0, 1064, 1022, 1, 0, 0, 0, 1064, 1023, 1, 0, 0, 0, 1064, 1024, 1, 0, 0, 0, 1064, 1025, 1, 0, 0, 0, 1064, 1026, 1, 0, 0, 0, 1064, 1027, 1, 0, 0, 0, 1064, 1028, 1, 0, 0, 0, 1064, 1029, 1, 0, 0, 0, 1064, 1030, 1, 0, 0, 0, 1064, 1031, 1, 0, 0, 0, 1064, 1032, 1, 0, 0, 0, 1064, 1033, 1, 0, 0, 0, 1064, 1034, 1, 0, 0, 0, 1064, 1035, 1, 0, 0, 0, 1064, 1036, 1, 0, 0, 0, 1064, 1037, 1, 0, 0, 0, 1064, 1038, 1, 0, 0, 0, 1064, 1039, 1, 0, 0, 0, 1064, 1040, 1, 0, 0, 0, 1064, 1041, 1, 0, 0, 0, 1064, 1042, 1, 0, 0, 0, 1064, 1043, 1, 0, 0, 0, 1064, 1044, 1, 0, 0, 0, 1064, 1045, 1, 0, 0, 0, 1064, 1046, 1, 0, 0, 0, 1064, 1047, 1, 0, 0, 0, 1064, 1048, 1, 0, 0, 0, 1064, 1049, 1, 0, 0, 0, 1064, 1050, 1, 0, 0, 0, 1064, 1051, 1, 0, 0, 0, 1064, 1052, 1, 0, 0, 0, 1064, 1053, 1, 0, 0, 0, 1064, 1054, 1, 0, 0, 0, 1064, 1055, 1, 0, 0, 0, 1064, 1056, 1, 0, 0, 0, 1064, 1057, 1, 0, 0, 0, 1064, 1058, 1, 0, 0, 0, 1064, 1059, 1, 0, 0, 0, 1064, 1060, 1, 0, 0, 0, 1065, 5, 1, 0, 0, 0, 1066, 1067, 5, 433, 0, 0, 1067, 1068, 3, 684, 342, 0, 1068, 7, 1, 0, 0, 0, 1069, 1070, 5, 46, 0, 0, 1070, 1071, 5, 318, 0, 0, 1071, 1073, 3, 814, 407, 0, 1072, 1074, 5, 105, 0, 0, 1073, 1072, 1, 0, 0, 0, 1073, 1074, 1, 0, 0, 0, 1074, 1078, 1, 0, 0, 0, 1075, 1077, 3, 12, 6, 0, 1076, 1075, 1, 0, 0, 0, 1077, 1080, 1, 0, 0, 0, 1078, 1076, 1, 0, 0, 0, 1078, 1079, 1, 0, 0, 0, 1079, 9, 1, 0, 0, 0, 1080, 1078, 1, 0, 0, 0, 1081, 1084, 5, 287, 0, 0, 1082, 1085, 3, 808, 404, 0, 1083, 1085, 5, 78, 0, 0, 1084, 1082, 1, 0, 0, 0, 1084, 1083, 1, 0, 0, 0, 1085, 1120, 1, 0, 0, 0, 1086, 1087, 7, 0, 0, 0, 1087, 1088, 5, 287, 0, 0, 1088, 1120, 3, 808, 404, 0, 1089, 1120, 5, 228, 0, 0, 1090, 1120, 5, 229, 0, 0, 1091, 1120, 5, 236, 0, 0, 1092, 1120, 5, 237, 0, 0, 1093, 1120, 5, 234, 0, 0, 1094, 1120, 5, 235, 0, 0, 1095, 1120, 5, 232, 0, 0, 1096, 1120, 5, 233, 0, 0, 1097, 1120, 5, 230, 0, 0, 1098, 1120, 5, 231, 0, 0, 1099, 1120, 5, 535, 0, 0, 1100, 1120, 5, 536, 0, 0, 1101, 1120, 5, 537, 0, 0, 1102, 1120, 5, 538, 0, 0, 1103, 1120, 5, 539, 0, 0, 1104, 1120, 5, 540, 0, 0, 1105, 1106, 5, 164, 0, 0, 1106, 1107, 5, 74, 0, 0, 1107, 1120, 3, 812, 406, 0, 1108, 1109, 5, 371, 0, 0, 1109, 1110, 5, 368, 0, 0, 1110, 1120, 3, 808, 404, 0, 1111, 1112, 5, 68, 0, 0, 1112, 1113, 7, 1, 0, 0, 1113, 1120, 3, 784, 392, 0, 1114, 1115, 7, 2, 0, 0, 1115, 1120, 3, 816, 408, 0, 1116, 1117, 5, 134, 0, 0, 1117, 1120, 3, 784, 392, 0, 1118, 1120, 3, 826, 413, 0, 1119, 1081, 1, 0, 0, 0, 1119, 1086, 1, 0, 0, 0, 1119, 1089, 1, 0, 0, 0, 1119, 1090, 1, 0, 0, 0, 1119, 1091, 1, 0, 0, 0, 1119, 1092, 1, 0, 0, 0, 1119, 1093, 1, 0, 0, 0, 1119, 1094, 1, 0, 0, 0, 1119, 1095, 1, 0, 0, 0, 1119, 1096, 1, 0, 0, 0, 1119, 1097, 1, 0, 0, 0, 1119, 1098, 1, 0, 0, 0, 1119, 1099, 1, 0, 0, 0, 1119, 1100, 1, 0, 0, 0, 1119, 1101, 1, 0, 0, 0, 1119, 1102, 1, 0, 0, 0, 1119, 1103, 1, 0, 0, 0, 1119, 1104, 1, 0, 0, 0, 1119, 1105, 1, 0, 0, 0, 1119, 1108, 1, 0, 0, 0, 1119, 1111, 1, 0, 0, 0, 1119, 1114, 1, 0, 0, 0, 1119, 1116, 1, 0, 0, 0, 1119, 1118, 1, 0, 0, 0, 1120, 11, 1, 0, 0, 0, 1121, 1130, 3, 10, 5, 0, 1122, 1123, 5, 348, 0, 0, 1123, 1130, 5, 571, 0, 0, 1124, 1125, 7, 3, 0, 0, 1125, 1130, 3, 816, 408, 0, 1126, 1127, 5, 68, 0, 0, 1127, 1128, 7, 1, 0, 0, 1128, 1130, 3, 816, 408, 0, 1129, 1121, 1, 0, 0, 0, 1129, 1122, 1, 0, 0, 0, 1129, 1124, 1, 0, 0, 0, 1129, 1126, 1, 0, 0, 0, 1130, 13, 1, 0, 0, 0, 1131, 1132, 5, 46, 0, 0, 1132, 1133, 5, 99, 0, 0, 1133, 1135, 3, 814, 407, 0, 1134, 1136, 5, 105, 0, 0, 1135, 1134, 1, 0, 0, 0, 1135, 1136, 1, 0, 0, 0, 1136, 1140, 1, 0, 0, 0, 1137, 1139, 3, 12, 6, 0, 1138, 1137, 1, 0, 0, 0, 1139, 1142, 1, 0, 0, 0, 1140, 1138, 1, 0, 0, 0, 1140, 1141, 1, 0, 0, 0, 1141, 15, 1, 0, 0, 0, 1142, 1140, 1, 0, 0, 0, 1143, 1144, 5, 138, 0, 0, 1144, 1145, 7, 2, 0, 0, 1145, 1147, 3, 814, 407, 0, 1146, 1148, 5, 105, 0, 0, 1147, 1146, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 1152, 1, 0, 0, 0, 1149, 1151, 3, 10, 5, 0, 1150, 1149, 1, 0, 0, 0, 1151, 1154, 1, 0, 0, 0, 1152, 1150, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 17, 1, 0, 0, 0, 1154, 1152, 1, 0, 0, 0, 1155, 1156, 5, 138, 0, 0, 1156, 1159, 7, 2, 0, 0, 1157, 1160, 5, 30, 0, 0, 1158, 1160, 3, 814, 407, 0, 1159, 1157, 1, 0, 0, 0, 1159, 1158, 1, 0, 0, 0, 1160, 1161, 1, 0, 0, 0, 1161, 1162, 5, 68, 0, 0, 1162, 1163, 5, 175, 0, 0, 1163, 1164, 3, 788, 394, 0, 1164, 1165, 3, 64, 32, 0, 1165, 19, 1, 0, 0, 0, 1166, 1167, 5, 138, 0, 0, 1167, 1168, 5, 442, 0, 0, 1168, 1170, 3, 794, 397, 0, 1169, 1171, 3, 368, 184, 0, 1170, 1169, 1, 0, 0, 0, 1170, 1171, 1, 0, 0, 0, 1171, 1172, 1, 0, 0, 0, 1172, 1173, 3, 22, 11, 0, 1173, 21, 1, 0, 0, 0, 1174, 1178, 3, 24, 12, 0, 1175, 1177, 3, 24, 12, 0, 1176, 1175, 1, 0, 0, 0, 1177, 1180, 1, 0, 0, 0, 1178, 1176, 1, 0, 0, 0, 1178, 1179, 1, 0, 0, 0, 1179, 1182, 1, 0, 0, 0, 1180, 1178, 1, 0, 0, 0, 1181, 1183, 5, 315, 0, 0, 1182, 1181, 1, 0, 0, 0, 1182, 1183, 1, 0, 0, 0, 1183, 1201, 1, 0, 0, 0, 1184, 1185, 5, 309, 0, 0, 1185, 1186, 5, 94, 0, 0, 1186, 1201, 3, 792, 396, 0, 1187, 1188, 5, 282, 0, 0, 1188, 1189, 5, 94, 0, 0, 1189, 1201, 3, 814, 407, 0, 1190, 1191, 5, 333, 0, 0, 1191, 1192, 5, 323, 0, 0, 1192, 1201, 3, 32, 16, 0, 1193, 1195, 5, 269, 0, 0, 1194, 1193, 1, 0, 0, 0, 1194, 1195, 1, 0, 0, 0, 1195, 1196, 1, 0, 0, 0, 1196, 1197, 5, 462, 0, 0, 1197, 1198, 5, 80, 0, 0, 1198, 1199, 5, 204, 0, 0, 1199, 1201, 3, 818, 409, 0, 1200, 1174, 1, 0, 0, 0, 1200, 1184, 1, 0, 0, 0, 1200, 1187, 1, 0, 0, 0, 1200, 1190, 1, 0, 0, 0, 1200, 1194, 1, 0, 0, 0, 1201, 23, 1, 0, 0, 0, 1202, 1245, 5, 222, 0, 0, 1203, 1245, 5, 338, 0, 0, 1204, 1245, 5, 377, 0, 0, 1205, 1207, 5, 77, 0, 0, 1206, 1205, 1, 0, 0, 0, 1206, 1207, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1245, 5, 250, 0, 0, 1209, 1211, 5, 205, 0, 0, 1210, 1209, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1212, 1, 0, 0, 0, 1212, 1213, 5, 327, 0, 0, 1213, 1220, 5, 243, 0, 0, 1214, 1216, 5, 205, 0, 0, 1215, 1214, 1, 0, 0, 0, 1215, 1216, 1, 0, 0, 0, 1216, 1217, 1, 0, 0, 0, 1217, 1218, 5, 327, 0, 0, 1218, 1220, 5, 181, 0, 0, 1219, 1210, 1, 0, 0, 0, 1219, 1215, 1, 0, 0, 0, 1220, 1245, 1, 0, 0, 0, 1221, 1222, 5, 460, 0, 0, 1222, 1245, 7, 4, 0, 0, 1223, 1224, 5, 170, 0, 0, 1224, 1245, 3, 824, 412, 0, 1225, 1226, 5, 320, 0, 0, 1226, 1245, 3, 818, 409, 0, 1227, 1228, 5, 333, 0, 0, 1228, 1229, 3, 818, 409, 0, 1229, 1232, 7, 5, 0, 0, 1230, 1233, 3, 818, 409, 0, 1231, 1233, 5, 53, 0, 0, 1232, 1230, 1, 0, 0, 0, 1232, 1231, 1, 0, 0, 0, 1233, 1245, 1, 0, 0, 0, 1234, 1235, 5, 333, 0, 0, 1235, 1236, 3, 818, 409, 0, 1236, 1237, 5, 64, 0, 0, 1237, 1238, 5, 434, 0, 0, 1238, 1245, 1, 0, 0, 0, 1239, 1242, 5, 313, 0, 0, 1240, 1243, 3, 818, 409, 0, 1241, 1243, 5, 30, 0, 0, 1242, 1240, 1, 0, 0, 0, 1242, 1241, 1, 0, 0, 0, 1243, 1245, 1, 0, 0, 0, 1244, 1202, 1, 0, 0, 0, 1244, 1203, 1, 0, 0, 0, 1244, 1204, 1, 0, 0, 0, 1244, 1206, 1, 0, 0, 0, 1244, 1219, 1, 0, 0, 0, 1244, 1221, 1, 0, 0, 0, 1244, 1223, 1, 0, 0, 0, 1244, 1225, 1, 0, 0, 0, 1244, 1227, 1, 0, 0, 0, 1244, 1234, 1, 0, 0, 0, 1244, 1239, 1, 0, 0, 0, 1245, 25, 1, 0, 0, 0, 1246, 1247, 5, 46, 0, 0, 1247, 1248, 5, 66, 0, 0, 1248, 1250, 3, 814, 407, 0, 1249, 1251, 5, 105, 0, 0, 1250, 1249, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1255, 1, 0, 0, 0, 1252, 1254, 3, 12, 6, 0, 1253, 1252, 1, 0, 0, 0, 1254, 1257, 1, 0, 0, 0, 1255, 1253, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 27, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1258, 1259, 5, 138, 0, 0, 1259, 1260, 5, 66, 0, 0, 1260, 1261, 3, 814, 407, 0, 1261, 1262, 7, 6, 0, 0, 1262, 1263, 5, 99, 0, 0, 1263, 1264, 3, 816, 408, 0, 1264, 29, 1, 0, 0, 0, 1265, 1266, 5, 46, 0, 0, 1266, 1268, 5, 323, 0, 0, 1267, 1269, 3, 294, 147, 0, 1268, 1267, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1276, 1, 0, 0, 0, 1270, 1272, 3, 32, 16, 0, 1271, 1270, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1274, 5, 106, 0, 0, 1274, 1277, 3, 814, 407, 0, 1275, 1277, 3, 32, 16, 0, 1276, 1271, 1, 0, 0, 0, 1276, 1275, 1, 0, 0, 0, 1277, 1281, 1, 0, 0, 0, 1278, 1280, 3, 34, 17, 0, 1279, 1278, 1, 0, 0, 0, 1280, 1283, 1, 0, 0, 0, 1281, 1279, 1, 0, 0, 0, 1281, 1282, 1, 0, 0, 0, 1282, 31, 1, 0, 0, 0, 1283, 1281, 1, 0, 0, 0, 1284, 1285, 3, 316, 158, 0, 1285, 33, 1, 0, 0, 0, 1286, 1293, 3, 120, 60, 0, 1287, 1293, 3, 358, 179, 0, 1288, 1293, 3, 196, 98, 0, 1289, 1293, 3, 256, 128, 0, 1290, 1293, 3, 334, 167, 0, 1291, 1293, 3, 476, 238, 0, 1292, 1286, 1, 0, 0, 0, 1292, 1287, 1, 0, 0, 0, 1292, 1288, 1, 0, 0, 0, 1292, 1289, 1, 0, 0, 0, 1292, 1290, 1, 0, 0, 0, 1292, 1291, 1, 0, 0, 0, 1293, 35, 1, 0, 0, 0, 1294, 1296, 5, 333, 0, 0, 1295, 1297, 7, 7, 0, 0, 1296, 1295, 1, 0, 0, 0, 1296, 1297, 1, 0, 0, 0, 1297, 1298, 1, 0, 0, 0, 1298, 1299, 3, 38, 19, 0, 1299, 37, 1, 0, 0, 0, 1300, 1301, 5, 356, 0, 0, 1301, 1309, 3, 474, 237, 0, 1302, 1303, 5, 332, 0, 0, 1303, 1304, 5, 154, 0, 0, 1304, 1305, 5, 36, 0, 0, 1305, 1306, 5, 356, 0, 0, 1306, 1309, 3, 474, 237, 0, 1307, 1309, 3, 42, 21, 0, 1308, 1300, 1, 0, 0, 0, 1308, 1302, 1, 0, 0, 0, 1308, 1307, 1, 0, 0, 0, 1309, 39, 1, 0, 0, 0, 1310, 1313, 5, 30, 0, 0, 1311, 1313, 3, 44, 22, 0, 1312, 1310, 1, 0, 0, 0, 1312, 1311, 1, 0, 0, 0, 1313, 1315, 1, 0, 0, 0, 1314, 1316, 7, 5, 0, 0, 1315, 1314, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1319, 1, 0, 0, 0, 1317, 1320, 5, 53, 0, 0, 1318, 1320, 3, 46, 23, 0, 1319, 1317, 1, 0, 0, 0, 1319, 1318, 1, 0, 0, 0, 1319, 1320, 1, 0, 0, 0, 1320, 41, 1, 0, 0, 0, 1321, 1322, 5, 418, 0, 0, 1322, 1323, 5, 386, 0, 0, 1323, 1350, 3, 56, 28, 0, 1324, 1325, 5, 152, 0, 0, 1325, 1350, 3, 808, 404, 0, 1326, 1327, 5, 323, 0, 0, 1327, 1350, 3, 790, 395, 0, 1328, 1331, 5, 267, 0, 0, 1329, 1332, 3, 808, 404, 0, 1330, 1332, 5, 53, 0, 0, 1331, 1329, 1, 0, 0, 0, 1331, 1330, 1, 0, 0, 0, 1331, 1332, 1, 0, 0, 0, 1332, 1350, 1, 0, 0, 0, 1333, 1334, 5, 318, 0, 0, 1334, 1350, 3, 58, 29, 0, 1335, 1336, 5, 332, 0, 0, 1336, 1337, 5, 106, 0, 0, 1337, 1350, 3, 58, 29, 0, 1338, 1339, 5, 383, 0, 0, 1339, 1340, 5, 279, 0, 0, 1340, 1350, 3, 696, 348, 0, 1341, 1342, 5, 356, 0, 0, 1342, 1343, 5, 337, 0, 0, 1343, 1350, 3, 808, 404, 0, 1344, 1345, 3, 44, 22, 0, 1345, 1346, 5, 64, 0, 0, 1346, 1347, 5, 434, 0, 0, 1347, 1350, 1, 0, 0, 0, 1348, 1350, 3, 40, 20, 0, 1349, 1321, 1, 0, 0, 0, 1349, 1324, 1, 0, 0, 0, 1349, 1326, 1, 0, 0, 0, 1349, 1328, 1, 0, 0, 0, 1349, 1333, 1, 0, 0, 0, 1349, 1335, 1, 0, 0, 0, 1349, 1338, 1, 0, 0, 0, 1349, 1341, 1, 0, 0, 0, 1349, 1344, 1, 0, 0, 0, 1349, 1348, 1, 0, 0, 0, 1350, 43, 1, 0, 0, 0, 1351, 1356, 3, 818, 409, 0, 1352, 1353, 5, 11, 0, 0, 1353, 1355, 3, 818, 409, 0, 1354, 1352, 1, 0, 0, 0, 1355, 1358, 1, 0, 0, 0, 1356, 1354, 1, 0, 0, 0, 1356, 1357, 1, 0, 0, 0, 1357, 45, 1, 0, 0, 0, 1358, 1356, 1, 0, 0, 0, 1359, 1364, 3, 48, 24, 0, 1360, 1361, 5, 6, 0, 0, 1361, 1363, 3, 48, 24, 0, 1362, 1360, 1, 0, 0, 0, 1363, 1366, 1, 0, 0, 0, 1364, 1362, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 47, 1, 0, 0, 0, 1366, 1364, 1, 0, 0, 0, 1367, 1370, 3, 54, 27, 0, 1368, 1370, 3, 202, 101, 0, 1369, 1367, 1, 0, 0, 0, 1369, 1368, 1, 0, 0, 0, 1370, 49, 1, 0, 0, 0, 1371, 1372, 5, 300, 0, 0, 1372, 1377, 7, 8, 0, 0, 1373, 1374, 5, 310, 0, 0, 1374, 1377, 5, 300, 0, 0, 1375, 1377, 5, 330, 0, 0, 1376, 1371, 1, 0, 0, 0, 1376, 1373, 1, 0, 0, 0, 1376, 1375, 1, 0, 0, 0, 1377, 51, 1, 0, 0, 0, 1378, 1385, 5, 96, 0, 0, 1379, 1385, 5, 60, 0, 0, 1380, 1385, 5, 80, 0, 0, 1381, 1385, 3, 800, 400, 0, 1382, 1385, 3, 832, 416, 0, 1383, 1385, 3, 808, 404, 0, 1384, 1378, 1, 0, 0, 0, 1384, 1379, 1, 0, 0, 0, 1384, 1380, 1, 0, 0, 0, 1384, 1381, 1, 0, 0, 0, 1384, 1382, 1, 0, 0, 0, 1384, 1383, 1, 0, 0, 0, 1385, 53, 1, 0, 0, 0, 1386, 1391, 5, 96, 0, 0, 1387, 1391, 5, 60, 0, 0, 1388, 1391, 5, 80, 0, 0, 1389, 1391, 3, 58, 29, 0, 1390, 1386, 1, 0, 0, 0, 1390, 1387, 1, 0, 0, 0, 1390, 1388, 1, 0, 0, 0, 1390, 1389, 1, 0, 0, 0, 1391, 55, 1, 0, 0, 0, 1392, 1407, 3, 808, 404, 0, 1393, 1407, 5, 53, 0, 0, 1394, 1407, 3, 826, 413, 0, 1395, 1396, 5, 403, 0, 0, 1396, 1398, 3, 808, 404, 0, 1397, 1399, 3, 668, 334, 0, 1398, 1397, 1, 0, 0, 0, 1398, 1399, 1, 0, 0, 0, 1399, 1407, 1, 0, 0, 0, 1400, 1401, 5, 403, 0, 0, 1401, 1402, 3, 660, 330, 0, 1402, 1403, 3, 808, 404, 0, 1403, 1407, 1, 0, 0, 0, 1404, 1407, 3, 202, 101, 0, 1405, 1407, 5, 254, 0, 0, 1406, 1392, 1, 0, 0, 0, 1406, 1393, 1, 0, 0, 0, 1406, 1394, 1, 0, 0, 0, 1406, 1395, 1, 0, 0, 0, 1406, 1400, 1, 0, 0, 0, 1406, 1404, 1, 0, 0, 0, 1406, 1405, 1, 0, 0, 0, 1407, 57, 1, 0, 0, 0, 1408, 1411, 3, 822, 411, 0, 1409, 1411, 3, 808, 404, 0, 1410, 1408, 1, 0, 0, 0, 1410, 1409, 1, 0, 0, 0, 1411, 59, 1, 0, 0, 0, 1412, 1413, 5, 313, 0, 0, 1413, 1414, 3, 62, 31, 0, 1414, 61, 1, 0, 0, 0, 1415, 1416, 5, 418, 0, 0, 1416, 1425, 5, 386, 0, 0, 1417, 1418, 5, 356, 0, 0, 1418, 1419, 5, 244, 0, 0, 1419, 1425, 5, 251, 0, 0, 1420, 1421, 5, 332, 0, 0, 1421, 1425, 5, 106, 0, 0, 1422, 1425, 5, 30, 0, 0, 1423, 1425, 3, 44, 22, 0, 1424, 1415, 1, 0, 0, 0, 1424, 1417, 1, 0, 0, 0, 1424, 1420, 1, 0, 0, 0, 1424, 1422, 1, 0, 0, 0, 1424, 1423, 1, 0, 0, 0, 1425, 63, 1, 0, 0, 0, 1426, 1427, 5, 333, 0, 0, 1427, 1430, 3, 38, 19, 0, 1428, 1430, 3, 60, 30, 0, 1429, 1426, 1, 0, 0, 0, 1429, 1428, 1, 0, 0, 0, 1430, 65, 1, 0, 0, 0, 1431, 1432, 5, 333, 0, 0, 1432, 1435, 3, 42, 21, 0, 1433, 1435, 3, 60, 30, 0, 1434, 1431, 1, 0, 0, 0, 1434, 1433, 1, 0, 0, 0, 1435, 67, 1, 0, 0, 0, 1436, 1446, 5, 335, 0, 0, 1437, 1447, 3, 44, 22, 0, 1438, 1439, 5, 418, 0, 0, 1439, 1447, 5, 386, 0, 0, 1440, 1441, 5, 356, 0, 0, 1441, 1442, 5, 244, 0, 0, 1442, 1447, 5, 251, 0, 0, 1443, 1444, 5, 332, 0, 0, 1444, 1447, 5, 106, 0, 0, 1445, 1447, 5, 30, 0, 0, 1446, 1437, 1, 0, 0, 0, 1446, 1438, 1, 0, 0, 0, 1446, 1440, 1, 0, 0, 0, 1446, 1443, 1, 0, 0, 0, 1446, 1445, 1, 0, 0, 0, 1447, 69, 1, 0, 0, 0, 1448, 1449, 5, 333, 0, 0, 1449, 1452, 5, 165, 0, 0, 1450, 1453, 5, 30, 0, 0, 1451, 1453, 3, 760, 380, 0, 1452, 1450, 1, 0, 0, 0, 1452, 1451, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 7, 9, 0, 0, 1455, 71, 1, 0, 0, 0, 1456, 1457, 5, 155, 0, 0, 1457, 73, 1, 0, 0, 0, 1458, 1459, 5, 187, 0, 0, 1459, 1460, 7, 10, 0, 0, 1460, 75, 1, 0, 0, 0, 1461, 1462, 5, 138, 0, 0, 1462, 1464, 5, 92, 0, 0, 1463, 1465, 3, 422, 211, 0, 1464, 1463, 1, 0, 0, 0, 1464, 1465, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1469, 3, 624, 312, 0, 1467, 1470, 3, 78, 39, 0, 1468, 1470, 3, 88, 44, 0, 1469, 1467, 1, 0, 0, 0, 1469, 1468, 1, 0, 0, 0, 1470, 1583, 1, 0, 0, 0, 1471, 1472, 5, 138, 0, 0, 1472, 1473, 5, 92, 0, 0, 1473, 1474, 5, 30, 0, 0, 1474, 1475, 5, 68, 0, 0, 1475, 1479, 3, 176, 88, 0, 1476, 1477, 5, 281, 0, 0, 1477, 1478, 5, 147, 0, 0, 1478, 1480, 3, 816, 408, 0, 1479, 1476, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1481, 1, 0, 0, 0, 1481, 1482, 5, 333, 0, 0, 1482, 1483, 5, 351, 0, 0, 1483, 1485, 3, 768, 384, 0, 1484, 1486, 5, 272, 0, 0, 1485, 1484, 1, 0, 0, 0, 1485, 1486, 1, 0, 0, 0, 1486, 1583, 1, 0, 0, 0, 1487, 1488, 5, 138, 0, 0, 1488, 1490, 5, 92, 0, 0, 1489, 1491, 3, 422, 211, 0, 1490, 1489, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1493, 3, 774, 387, 0, 1493, 1498, 3, 90, 45, 0, 1494, 1495, 5, 62, 0, 0, 1495, 1496, 5, 422, 0, 0, 1496, 1499, 3, 80, 40, 0, 1497, 1499, 5, 53, 0, 0, 1498, 1494, 1, 0, 0, 0, 1498, 1497, 1, 0, 0, 0, 1499, 1583, 1, 0, 0, 0, 1500, 1501, 5, 138, 0, 0, 1501, 1503, 5, 92, 0, 0, 1502, 1504, 3, 422, 211, 0, 1503, 1502, 1, 0, 0, 0, 1503, 1504, 1, 0, 0, 0, 1504, 1505, 1, 0, 0, 0, 1505, 1506, 3, 774, 387, 0, 1506, 1507, 5, 436, 0, 0, 1507, 1508, 5, 285, 0, 0, 1508, 1510, 3, 780, 390, 0, 1509, 1511, 7, 11, 0, 0, 1510, 1509, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1583, 1, 0, 0, 0, 1512, 1513, 5, 138, 0, 0, 1513, 1515, 5, 226, 0, 0, 1514, 1516, 3, 422, 211, 0, 1515, 1514, 1, 0, 0, 0, 1515, 1516, 1, 0, 0, 0, 1516, 1517, 1, 0, 0, 0, 1517, 1520, 3, 780, 390, 0, 1518, 1521, 3, 78, 39, 0, 1519, 1521, 3, 90, 45, 0, 1520, 1518, 1, 0, 0, 0, 1520, 1519, 1, 0, 0, 0, 1521, 1583, 1, 0, 0, 0, 1522, 1523, 5, 138, 0, 0, 1523, 1524, 5, 226, 0, 0, 1524, 1525, 5, 30, 0, 0, 1525, 1526, 5, 68, 0, 0, 1526, 1530, 3, 176, 88, 0, 1527, 1528, 5, 281, 0, 0, 1528, 1529, 5, 147, 0, 0, 1529, 1531, 3, 816, 408, 0, 1530, 1527, 1, 0, 0, 0, 1530, 1531, 1, 0, 0, 0, 1531, 1532, 1, 0, 0, 0, 1532, 1533, 5, 333, 0, 0, 1533, 1535, 3, 176, 88, 0, 1534, 1536, 5, 272, 0, 0, 1535, 1534, 1, 0, 0, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1583, 1, 0, 0, 0, 1537, 1538, 5, 138, 0, 0, 1538, 1540, 5, 328, 0, 0, 1539, 1541, 3, 422, 211, 0, 1540, 1539, 1, 0, 0, 0, 1540, 1541, 1, 0, 0, 0, 1541, 1542, 1, 0, 0, 0, 1542, 1543, 3, 780, 390, 0, 1543, 1544, 3, 78, 39, 0, 1544, 1583, 1, 0, 0, 0, 1545, 1547, 5, 138, 0, 0, 1546, 1548, 5, 259, 0, 0, 1547, 1546, 1, 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1549, 1, 0, 0, 0, 1549, 1551, 5, 376, 0, 0, 1550, 1552, 3, 422, 211, 0, 1551, 1550, 1, 0, 0, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 1, 0, 0, 0, 1553, 1554, 3, 778, 389, 0, 1554, 1555, 3, 78, 39, 0, 1555, 1583, 1, 0, 0, 0, 1556, 1557, 5, 138, 0, 0, 1557, 1558, 5, 259, 0, 0, 1558, 1559, 5, 376, 0, 0, 1559, 1560, 5, 30, 0, 0, 1560, 1561, 5, 68, 0, 0, 1561, 1565, 3, 176, 88, 0, 1562, 1563, 5, 281, 0, 0, 1563, 1564, 5, 147, 0, 0, 1564, 1566, 3, 816, 408, 0, 1565, 1562, 1, 0, 0, 0, 1565, 1566, 1, 0, 0, 0, 1566, 1567, 1, 0, 0, 0, 1567, 1568, 5, 333, 0, 0, 1568, 1569, 5, 351, 0, 0, 1569, 1571, 3, 768, 384, 0, 1570, 1572, 5, 272, 0, 0, 1571, 1570, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1583, 1, 0, 0, 0, 1573, 1574, 5, 138, 0, 0, 1574, 1575, 5, 63, 0, 0, 1575, 1577, 5, 92, 0, 0, 1576, 1578, 3, 422, 211, 0, 1577, 1576, 1, 0, 0, 0, 1577, 1578, 1, 0, 0, 0, 1578, 1579, 1, 0, 0, 0, 1579, 1580, 3, 624, 312, 0, 1580, 1581, 3, 78, 39, 0, 1581, 1583, 1, 0, 0, 0, 1582, 1461, 1, 0, 0, 0, 1582, 1471, 1, 0, 0, 0, 1582, 1487, 1, 0, 0, 0, 1582, 1500, 1, 0, 0, 0, 1582, 1512, 1, 0, 0, 0, 1582, 1522, 1, 0, 0, 0, 1582, 1537, 1, 0, 0, 0, 1582, 1545, 1, 0, 0, 0, 1582, 1556, 1, 0, 0, 0, 1582, 1573, 1, 0, 0, 0, 1583, 77, 1, 0, 0, 0, 1584, 1589, 3, 92, 46, 0, 1585, 1586, 5, 6, 0, 0, 1586, 1588, 3, 92, 46, 0, 1587, 1585, 1, 0, 0, 0, 1588, 1591, 1, 0, 0, 0, 1589, 1587, 1, 0, 0, 0, 1589, 1590, 1, 0, 0, 0, 1590, 79, 1, 0, 0, 0, 1591, 1589, 1, 0, 0, 0, 1592, 1593, 5, 68, 0, 0, 1593, 1602, 3, 534, 267, 0, 1594, 1595, 5, 64, 0, 0, 1595, 1596, 3, 82, 41, 0, 1596, 1597, 5, 94, 0, 0, 1597, 1598, 3, 82, 41, 0, 1598, 1602, 1, 0, 0, 0, 1599, 1600, 5, 105, 0, 0, 1600, 1602, 3, 86, 43, 0, 1601, 1592, 1, 0, 0, 0, 1601, 1594, 1, 0, 0, 0, 1601, 1599, 1, 0, 0, 0, 1602, 81, 1, 0, 0, 0, 1603, 1604, 5, 2, 0, 0, 1604, 1609, 3, 84, 42, 0, 1605, 1606, 5, 6, 0, 0, 1606, 1608, 3, 84, 42, 0, 1607, 1605, 1, 0, 0, 0, 1608, 1611, 1, 0, 0, 0, 1609, 1607, 1, 0, 0, 0, 1609, 1610, 1, 0, 0, 0, 1610, 1612, 1, 0, 0, 0, 1611, 1609, 1, 0, 0, 0, 1612, 1613, 5, 3, 0, 0, 1613, 83, 1, 0, 0, 0, 1614, 1618, 3, 534, 267, 0, 1615, 1618, 5, 262, 0, 0, 1616, 1618, 5, 260, 0, 0, 1617, 1614, 1, 0, 0, 0, 1617, 1615, 1, 0, 0, 0, 1617, 1616, 1, 0, 0, 0, 1618, 85, 1, 0, 0, 0, 1619, 1620, 5, 2, 0, 0, 1620, 1621, 5, 533, 0, 0, 1621, 1622, 3, 202, 101, 0, 1622, 1623, 5, 6, 0, 0, 1623, 1624, 5, 534, 0, 0, 1624, 1625, 3, 202, 101, 0, 1625, 1626, 5, 3, 0, 0, 1626, 87, 1, 0, 0, 0, 1627, 1628, 3, 90, 45, 0, 1628, 1629, 3, 106, 53, 0, 1629, 1634, 1, 0, 0, 0, 1630, 1631, 5, 436, 0, 0, 1631, 1632, 5, 285, 0, 0, 1632, 1634, 3, 780, 390, 0, 1633, 1627, 1, 0, 0, 0, 1633, 1630, 1, 0, 0, 0, 1634, 89, 1, 0, 0, 0, 1635, 1636, 5, 435, 0, 0, 1636, 1637, 5, 285, 0, 0, 1637, 1638, 3, 780, 390, 0, 1638, 91, 1, 0, 0, 0, 1639, 1642, 5, 133, 0, 0, 1640, 1641, 5, 45, 0, 0, 1641, 1643, 3, 818, 409, 0, 1642, 1640, 1, 0, 0, 0, 1642, 1643, 1, 0, 0, 0, 1643, 1644, 1, 0, 0, 0, 1644, 1873, 3, 142, 71, 0, 1645, 1646, 5, 138, 0, 0, 1646, 1647, 5, 45, 0, 0, 1647, 1651, 3, 818, 409, 0, 1648, 1650, 3, 272, 136, 0, 1649, 1648, 1, 0, 0, 0, 1650, 1653, 1, 0, 0, 0, 1651, 1649, 1, 0, 0, 0, 1651, 1652, 1, 0, 0, 0, 1652, 1873, 1, 0, 0, 0, 1653, 1651, 1, 0, 0, 0, 1654, 1655, 5, 372, 0, 0, 1655, 1656, 5, 45, 0, 0, 1656, 1873, 3, 818, 409, 0, 1657, 1658, 5, 191, 0, 0, 1658, 1660, 5, 45, 0, 0, 1659, 1661, 3, 422, 211, 0, 1660, 1659, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1662, 1, 0, 0, 0, 1662, 1664, 3, 818, 409, 0, 1663, 1665, 3, 96, 48, 0, 1664, 1663, 1, 0, 0, 0, 1664, 1665, 1, 0, 0, 0, 1665, 1873, 1, 0, 0, 0, 1666, 1667, 5, 333, 0, 0, 1667, 1668, 5, 379, 0, 0, 1668, 1873, 7, 12, 0, 0, 1669, 1670, 5, 158, 0, 0, 1670, 1671, 5, 80, 0, 0, 1671, 1873, 3, 818, 409, 0, 1672, 1673, 5, 333, 0, 0, 1673, 1873, 7, 13, 0, 0, 1674, 1676, 5, 193, 0, 0, 1675, 1677, 7, 14, 0, 0, 1676, 1675, 1, 0, 0, 0, 1676, 1677, 1, 0, 0, 0, 1677, 1678, 1, 0, 0, 0, 1678, 1873, 5, 357, 0, 0, 1679, 1680, 5, 186, 0, 0, 1680, 1684, 5, 357, 0, 0, 1681, 1685, 5, 30, 0, 0, 1682, 1685, 5, 99, 0, 0, 1683, 1685, 3, 818, 409, 0, 1684, 1681, 1, 0, 0, 0, 1684, 1682, 1, 0, 0, 0, 1684, 1683, 1, 0, 0, 0, 1685, 1873, 1, 0, 0, 0, 1686, 1687, 5, 193, 0, 0, 1687, 1688, 7, 14, 0, 0, 1688, 1689, 5, 321, 0, 0, 1689, 1873, 3, 818, 409, 0, 1690, 1691, 5, 186, 0, 0, 1691, 1692, 5, 321, 0, 0, 1692, 1873, 3, 818, 409, 0, 1693, 1695, 5, 269, 0, 0, 1694, 1693, 1, 0, 0, 0, 1694, 1695, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1697, 5, 228, 0, 0, 1697, 1873, 3, 780, 390, 0, 1698, 1699, 5, 275, 0, 0, 1699, 1873, 3, 316, 158, 0, 1700, 1701, 5, 77, 0, 0, 1701, 1873, 5, 275, 0, 0, 1702, 1703, 5, 282, 0, 0, 1703, 1704, 5, 94, 0, 0, 1704, 1873, 3, 814, 407, 0, 1705, 1706, 5, 333, 0, 0, 1706, 1707, 5, 351, 0, 0, 1707, 1873, 3, 768, 384, 0, 1708, 1709, 5, 312, 0, 0, 1709, 1714, 5, 219, 0, 0, 1710, 1715, 5, 270, 0, 0, 1711, 1715, 5, 113, 0, 0, 1712, 1715, 5, 53, 0, 0, 1713, 1715, 3, 180, 90, 0, 1714, 1710, 1, 0, 0, 0, 1714, 1711, 1, 0, 0, 0, 1714, 1712, 1, 0, 0, 0, 1714, 1713, 1, 0, 0, 0, 1715, 1873, 1, 0, 0, 0, 1716, 1723, 5, 193, 0, 0, 1717, 1723, 5, 186, 0, 0, 1718, 1720, 5, 269, 0, 0, 1719, 1718, 1, 0, 0, 0, 1719, 1720, 1, 0, 0, 0, 1720, 1721, 1, 0, 0, 0, 1721, 1723, 5, 209, 0, 0, 1722, 1716, 1, 0, 0, 0, 1722, 1717, 1, 0, 0, 0, 1722, 1719, 1, 0, 0, 0, 1723, 1724, 1, 0, 0, 0, 1724, 1725, 5, 414, 0, 0, 1725, 1726, 5, 251, 0, 0, 1726, 1873, 5, 327, 0, 0, 1727, 1729, 5, 191, 0, 0, 1728, 1730, 5, 44, 0, 0, 1729, 1728, 1, 0, 0, 0, 1729, 1730, 1, 0, 0, 0, 1730, 1732, 1, 0, 0, 0, 1731, 1733, 3, 422, 211, 0, 1732, 1731, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1734, 1, 0, 0, 0, 1734, 1736, 3, 800, 400, 0, 1735, 1737, 3, 96, 48, 0, 1736, 1735, 1, 0, 0, 0, 1736, 1737, 1, 0, 0, 0, 1737, 1873, 1, 0, 0, 0, 1738, 1740, 5, 133, 0, 0, 1739, 1741, 5, 44, 0, 0, 1740, 1739, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1743, 1, 0, 0, 0, 1742, 1744, 3, 294, 147, 0, 1743, 1742, 1, 0, 0, 0, 1743, 1744, 1, 0, 0, 0, 1744, 1745, 1, 0, 0, 0, 1745, 1873, 3, 132, 66, 0, 1746, 1748, 5, 138, 0, 0, 1747, 1749, 5, 44, 0, 0, 1748, 1747, 1, 0, 0, 0, 1748, 1749, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1753, 3, 800, 400, 0, 1751, 1754, 3, 94, 47, 0, 1752, 1754, 3, 222, 111, 0, 1753, 1751, 1, 0, 0, 0, 1753, 1752, 1, 0, 0, 0, 1754, 1873, 1, 0, 0, 0, 1755, 1757, 5, 138, 0, 0, 1756, 1758, 5, 44, 0, 0, 1757, 1756, 1, 0, 0, 0, 1757, 1758, 1, 0, 0, 0, 1758, 1759, 1, 0, 0, 0, 1759, 1760, 3, 800, 400, 0, 1760, 1761, 7, 15, 0, 0, 1761, 1762, 5, 77, 0, 0, 1762, 1763, 5, 78, 0, 0, 1763, 1873, 1, 0, 0, 0, 1764, 1766, 5, 138, 0, 0, 1765, 1767, 5, 44, 0, 0, 1766, 1765, 1, 0, 0, 0, 1766, 1767, 1, 0, 0, 0, 1767, 1768, 1, 0, 0, 0, 1768, 1769, 3, 800, 400, 0, 1769, 1770, 5, 191, 0, 0, 1770, 1772, 5, 437, 0, 0, 1771, 1773, 3, 422, 211, 0, 1772, 1771, 1, 0, 0, 0, 1772, 1773, 1, 0, 0, 0, 1773, 1873, 1, 0, 0, 0, 1774, 1776, 5, 138, 0, 0, 1775, 1777, 5, 44, 0, 0, 1776, 1775, 1, 0, 0, 0, 1776, 1777, 1, 0, 0, 0, 1777, 1778, 1, 0, 0, 0, 1778, 1779, 3, 800, 400, 0, 1779, 1780, 5, 333, 0, 0, 1780, 1781, 5, 342, 0, 0, 1781, 1782, 3, 812, 406, 0, 1782, 1873, 1, 0, 0, 0, 1783, 1785, 5, 138, 0, 0, 1784, 1786, 5, 44, 0, 0, 1785, 1784, 1, 0, 0, 0, 1785, 1786, 1, 0, 0, 0, 1786, 1787, 1, 0, 0, 0, 1787, 1789, 3, 800, 400, 0, 1788, 1783, 1, 0, 0, 0, 1788, 1789, 1, 0, 0, 0, 1789, 1790, 1, 0, 0, 0, 1790, 1791, 7, 16, 0, 0, 1791, 1873, 3, 100, 50, 0, 1792, 1794, 5, 138, 0, 0, 1793, 1795, 5, 44, 0, 0, 1794, 1793, 1, 0, 0, 0, 1794, 1795, 1, 0, 0, 0, 1795, 1796, 1, 0, 0, 0, 1796, 1797, 3, 800, 400, 0, 1797, 1798, 5, 333, 0, 0, 1798, 1799, 5, 345, 0, 0, 1799, 1800, 3, 818, 409, 0, 1800, 1873, 1, 0, 0, 0, 1801, 1803, 5, 138, 0, 0, 1802, 1804, 5, 44, 0, 0, 1803, 1802, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1805, 1, 0, 0, 0, 1805, 1806, 3, 800, 400, 0, 1806, 1807, 5, 133, 0, 0, 1807, 1808, 5, 438, 0, 0, 1808, 1809, 3, 138, 69, 0, 1809, 1810, 5, 36, 0, 0, 1810, 1819, 5, 219, 0, 0, 1811, 1813, 5, 2, 0, 0, 1812, 1814, 3, 200, 100, 0, 1813, 1812, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1813, 1, 0, 0, 0, 1815, 1816, 1, 0, 0, 0, 1816, 1817, 1, 0, 0, 0, 1817, 1818, 5, 3, 0, 0, 1818, 1820, 1, 0, 0, 0, 1819, 1811, 1, 0, 0, 0, 1819, 1820, 1, 0, 0, 0, 1820, 1873, 1, 0, 0, 0, 1821, 1823, 5, 138, 0, 0, 1822, 1824, 5, 44, 0, 0, 1823, 1822, 1, 0, 0, 0, 1823, 1824, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1839, 3, 800, 400, 0, 1826, 1831, 5, 314, 0, 0, 1827, 1829, 5, 105, 0, 0, 1828, 1827, 1, 0, 0, 0, 1828, 1829, 1, 0, 0, 0, 1829, 1830, 1, 0, 0, 0, 1830, 1832, 3, 202, 101, 0, 1831, 1828, 1, 0, 0, 0, 1831, 1832, 1, 0, 0, 0, 1832, 1840, 1, 0, 0, 0, 1833, 1837, 5, 333, 0, 0, 1834, 1838, 3, 200, 100, 0, 1835, 1836, 5, 438, 0, 0, 1836, 1838, 3, 138, 69, 0, 1837, 1834, 1, 0, 0, 0, 1837, 1835, 1, 0, 0, 0, 1838, 1840, 1, 0, 0, 0, 1839, 1826, 1, 0, 0, 0, 1839, 1833, 1, 0, 0, 0, 1840, 1841, 1, 0, 0, 0, 1841, 1839, 1, 0, 0, 0, 1841, 1842, 1, 0, 0, 0, 1842, 1873, 1, 0, 0, 0, 1843, 1845, 5, 138, 0, 0, 1844, 1846, 5, 44, 0, 0, 1845, 1844, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 1847, 1, 0, 0, 0, 1847, 1848, 3, 800, 400, 0, 1848, 1849, 5, 191, 0, 0, 1849, 1851, 5, 219, 0, 0, 1850, 1852, 3, 422, 211, 0, 1851, 1850, 1, 0, 0, 0, 1851, 1852, 1, 0, 0, 0, 1852, 1873, 1, 0, 0, 0, 1853, 1855, 5, 138, 0, 0, 1854, 1856, 5, 44, 0, 0, 1855, 1854, 1, 0, 0, 0, 1855, 1856, 1, 0, 0, 0, 1856, 1857, 1, 0, 0, 0, 1857, 1860, 3, 800, 400, 0, 1858, 1859, 5, 333, 0, 0, 1859, 1861, 5, 174, 0, 0, 1860, 1858, 1, 0, 0, 0, 1860, 1861, 1, 0, 0, 0, 1861, 1862, 1, 0, 0, 0, 1862, 1863, 5, 360, 0, 0, 1863, 1865, 3, 652, 326, 0, 1864, 1866, 3, 98, 49, 0, 1865, 1864, 1, 0, 0, 0, 1865, 1866, 1, 0, 0, 0, 1866, 1869, 1, 0, 0, 0, 1867, 1868, 5, 100, 0, 0, 1868, 1870, 3, 674, 337, 0, 1869, 1867, 1, 0, 0, 0, 1869, 1870, 1, 0, 0, 0, 1870, 1873, 1, 0, 0, 0, 1871, 1873, 3, 222, 111, 0, 1872, 1639, 1, 0, 0, 0, 1872, 1645, 1, 0, 0, 0, 1872, 1654, 1, 0, 0, 0, 1872, 1657, 1, 0, 0, 0, 1872, 1666, 1, 0, 0, 0, 1872, 1669, 1, 0, 0, 0, 1872, 1672, 1, 0, 0, 0, 1872, 1674, 1, 0, 0, 0, 1872, 1679, 1, 0, 0, 0, 1872, 1686, 1, 0, 0, 0, 1872, 1690, 1, 0, 0, 0, 1872, 1694, 1, 0, 0, 0, 1872, 1698, 1, 0, 0, 0, 1872, 1700, 1, 0, 0, 0, 1872, 1702, 1, 0, 0, 0, 1872, 1705, 1, 0, 0, 0, 1872, 1708, 1, 0, 0, 0, 1872, 1722, 1, 0, 0, 0, 1872, 1727, 1, 0, 0, 0, 1872, 1738, 1, 0, 0, 0, 1872, 1746, 1, 0, 0, 0, 1872, 1755, 1, 0, 0, 0, 1872, 1764, 1, 0, 0, 0, 1872, 1774, 1, 0, 0, 0, 1872, 1788, 1, 0, 0, 0, 1872, 1792, 1, 0, 0, 0, 1872, 1801, 1, 0, 0, 0, 1872, 1821, 1, 0, 0, 0, 1872, 1843, 1, 0, 0, 0, 1872, 1853, 1, 0, 0, 0, 1872, 1871, 1, 0, 0, 0, 1873, 93, 1, 0, 0, 0, 1874, 1875, 5, 333, 0, 0, 1875, 1876, 5, 53, 0, 0, 1876, 1880, 3, 674, 337, 0, 1877, 1878, 5, 191, 0, 0, 1878, 1880, 5, 53, 0, 0, 1879, 1874, 1, 0, 0, 0, 1879, 1877, 1, 0, 0, 0, 1880, 95, 1, 0, 0, 0, 1881, 1882, 7, 17, 0, 0, 1882, 97, 1, 0, 0, 0, 1883, 1884, 5, 43, 0, 0, 1884, 1885, 3, 316, 158, 0, 1885, 99, 1, 0, 0, 0, 1886, 1887, 5, 2, 0, 0, 1887, 1892, 3, 104, 52, 0, 1888, 1889, 5, 6, 0, 0, 1889, 1891, 3, 104, 52, 0, 1890, 1888, 1, 0, 0, 0, 1891, 1894, 1, 0, 0, 0, 1892, 1890, 1, 0, 0, 0, 1892, 1893, 1, 0, 0, 0, 1893, 1895, 1, 0, 0, 0, 1894, 1892, 1, 0, 0, 0, 1895, 1896, 5, 3, 0, 0, 1896, 101, 1, 0, 0, 0, 1897, 1898, 5, 105, 0, 0, 1898, 1899, 3, 100, 50, 0, 1899, 103, 1, 0, 0, 0, 1900, 1905, 3, 824, 412, 0, 1901, 1902, 5, 10, 0, 0, 1902, 1906, 3, 288, 144, 0, 1903, 1904, 5, 11, 0, 0, 1904, 1906, 3, 286, 143, 0, 1905, 1901, 1, 0, 0, 0, 1905, 1903, 1, 0, 0, 0, 1905, 1906, 1, 0, 0, 0, 1906, 105, 1, 0, 0, 0, 1907, 1908, 5, 62, 0, 0, 1908, 1909, 5, 422, 0, 0, 1909, 1910, 5, 105, 0, 0, 1910, 1911, 5, 2, 0, 0, 1911, 1912, 3, 822, 411, 0, 1912, 1919, 5, 571, 0, 0, 1913, 1914, 5, 6, 0, 0, 1914, 1915, 3, 822, 411, 0, 1915, 1916, 5, 571, 0, 0, 1916, 1918, 1, 0, 0, 0, 1917, 1913, 1, 0, 0, 0, 1918, 1921, 1, 0, 0, 0, 1919, 1917, 1, 0, 0, 0, 1919, 1920, 1, 0, 0, 0, 1920, 1922, 1, 0, 0, 0, 1921, 1919, 1, 0, 0, 0, 1922, 1923, 5, 3, 0, 0, 1923, 1937, 1, 0, 0, 0, 1924, 1925, 5, 62, 0, 0, 1925, 1926, 5, 422, 0, 0, 1926, 1927, 5, 68, 0, 0, 1927, 1937, 3, 534, 267, 0, 1928, 1929, 5, 62, 0, 0, 1929, 1930, 5, 422, 0, 0, 1930, 1931, 5, 64, 0, 0, 1931, 1932, 3, 534, 267, 0, 1932, 1933, 5, 94, 0, 0, 1933, 1934, 3, 534, 267, 0, 1934, 1937, 1, 0, 0, 0, 1935, 1937, 5, 53, 0, 0, 1936, 1907, 1, 0, 0, 0, 1936, 1924, 1, 0, 0, 0, 1936, 1928, 1, 0, 0, 0, 1936, 1935, 1, 0, 0, 0, 1937, 107, 1, 0, 0, 0, 1938, 1939, 5, 138, 0, 0, 1939, 1940, 5, 360, 0, 0, 1940, 1941, 3, 316, 158, 0, 1941, 1946, 3, 110, 55, 0, 1942, 1943, 5, 6, 0, 0, 1943, 1945, 3, 110, 55, 0, 1944, 1942, 1, 0, 0, 0, 1945, 1948, 1, 0, 0, 0, 1946, 1944, 1, 0, 0, 0, 1946, 1947, 1, 0, 0, 0, 1947, 109, 1, 0, 0, 0, 1948, 1946, 1, 0, 0, 0, 1949, 1950, 5, 133, 0, 0, 1950, 1951, 5, 143, 0, 0, 1951, 1953, 3, 644, 322, 0, 1952, 1954, 3, 96, 48, 0, 1953, 1952, 1, 0, 0, 0, 1953, 1954, 1, 0, 0, 0, 1954, 1980, 1, 0, 0, 0, 1955, 1956, 5, 191, 0, 0, 1956, 1958, 5, 143, 0, 0, 1957, 1959, 3, 422, 211, 0, 1958, 1957, 1, 0, 0, 0, 1958, 1959, 1, 0, 0, 0, 1959, 1960, 1, 0, 0, 0, 1960, 1962, 3, 818, 409, 0, 1961, 1963, 3, 96, 48, 0, 1962, 1961, 1, 0, 0, 0, 1962, 1963, 1, 0, 0, 0, 1963, 1980, 1, 0, 0, 0, 1964, 1965, 5, 138, 0, 0, 1965, 1966, 5, 143, 0, 0, 1966, 1969, 3, 818, 409, 0, 1967, 1968, 5, 333, 0, 0, 1968, 1970, 5, 174, 0, 0, 1969, 1967, 1, 0, 0, 0, 1969, 1970, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 1972, 5, 360, 0, 0, 1972, 1974, 3, 652, 326, 0, 1973, 1975, 3, 98, 49, 0, 1974, 1973, 1, 0, 0, 0, 1974, 1975, 1, 0, 0, 0, 1975, 1977, 1, 0, 0, 0, 1976, 1978, 3, 96, 48, 0, 1977, 1976, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 1980, 1, 0, 0, 0, 1979, 1949, 1, 0, 0, 0, 1979, 1955, 1, 0, 0, 0, 1979, 1964, 1, 0, 0, 0, 1980, 111, 1, 0, 0, 0, 1981, 1984, 5, 157, 0, 0, 1982, 1985, 3, 818, 409, 0, 1983, 1985, 5, 30, 0, 0, 1984, 1982, 1, 0, 0, 0, 1984, 1983, 1, 0, 0, 0, 1985, 113, 1, 0, 0, 0, 1986, 1988, 5, 169, 0, 0, 1987, 1989, 5, 107, 0, 0, 1988, 1987, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1992, 3, 774, 387, 0, 1991, 1993, 3, 144, 72, 0, 1992, 1991, 1, 0, 0, 0, 1992, 1993, 1, 0, 0, 0, 1993, 1994, 1, 0, 0, 0, 1994, 1996, 7, 18, 0, 0, 1995, 1997, 5, 297, 0, 0, 1996, 1995, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 2001, 1, 0, 0, 0, 1998, 2002, 3, 808, 404, 0, 1999, 2002, 5, 343, 0, 0, 2000, 2002, 5, 344, 0, 0, 2001, 1998, 1, 0, 0, 0, 2001, 1999, 1, 0, 0, 0, 2001, 2000, 1, 0, 0, 0, 2002, 2008, 1, 0, 0, 0, 2003, 2005, 5, 100, 0, 0, 2004, 2003, 1, 0, 0, 0, 2004, 2005, 1, 0, 0, 0, 2005, 2006, 1, 0, 0, 0, 2006, 2007, 5, 184, 0, 0, 2007, 2009, 3, 808, 404, 0, 2008, 2004, 1, 0, 0, 0, 2008, 2009, 1, 0, 0, 0, 2009, 2011, 1, 0, 0, 0, 2010, 2012, 5, 105, 0, 0, 2011, 2010, 1, 0, 0, 0, 2011, 2012, 1, 0, 0, 0, 2012, 2013, 1, 0, 0, 0, 2013, 2015, 3, 116, 58, 0, 2014, 2016, 3, 638, 319, 0, 2015, 2014, 1, 0, 0, 0, 2015, 2016, 1, 0, 0, 0, 2016, 2036, 1, 0, 0, 0, 2017, 2018, 5, 169, 0, 0, 2018, 2019, 5, 2, 0, 0, 2019, 2020, 3, 530, 265, 0, 2020, 2021, 5, 3, 0, 0, 2021, 2023, 5, 94, 0, 0, 2022, 2024, 5, 297, 0, 0, 2023, 2022, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2028, 1, 0, 0, 0, 2025, 2029, 3, 808, 404, 0, 2026, 2029, 5, 343, 0, 0, 2027, 2029, 5, 344, 0, 0, 2028, 2025, 1, 0, 0, 0, 2028, 2026, 1, 0, 0, 0, 2028, 2027, 1, 0, 0, 0, 2029, 2031, 1, 0, 0, 0, 2030, 2032, 5, 105, 0, 0, 2031, 2030, 1, 0, 0, 0, 2031, 2032, 1, 0, 0, 0, 2032, 2033, 1, 0, 0, 0, 2033, 2034, 3, 116, 58, 0, 2034, 2036, 1, 0, 0, 0, 2035, 1986, 1, 0, 0, 0, 2035, 2017, 1, 0, 0, 0, 2036, 115, 1, 0, 0, 0, 2037, 2061, 5, 107, 0, 0, 2038, 2061, 5, 112, 0, 0, 2039, 2041, 7, 19, 0, 0, 2040, 2042, 5, 36, 0, 0, 2041, 2040, 1, 0, 0, 0, 2041, 2042, 1, 0, 0, 0, 2042, 2043, 1, 0, 0, 0, 2043, 2061, 3, 808, 404, 0, 2044, 2061, 5, 171, 0, 0, 2045, 2061, 5, 216, 0, 0, 2046, 2047, 5, 209, 0, 0, 2047, 2050, 5, 298, 0, 0, 2048, 2051, 3, 148, 74, 0, 2049, 2051, 5, 9, 0, 0, 2050, 2048, 1, 0, 0, 0, 2050, 2049, 1, 0, 0, 0, 2051, 2061, 1, 0, 0, 0, 2052, 2054, 5, 209, 0, 0, 2053, 2055, 5, 77, 0, 0, 2054, 2053, 1, 0, 0, 0, 2054, 2055, 1, 0, 0, 0, 2055, 2056, 1, 0, 0, 0, 2056, 2057, 5, 78, 0, 0, 2057, 2061, 3, 148, 74, 0, 2058, 2059, 5, 194, 0, 0, 2059, 2061, 3, 808, 404, 0, 2060, 2037, 1, 0, 0, 0, 2060, 2038, 1, 0, 0, 0, 2060, 2039, 1, 0, 0, 0, 2060, 2044, 1, 0, 0, 0, 2060, 2045, 1, 0, 0, 0, 2060, 2046, 1, 0, 0, 0, 2060, 2052, 1, 0, 0, 0, 2060, 2058, 1, 0, 0, 0, 2061, 2064, 1, 0, 0, 0, 2062, 2060, 1, 0, 0, 0, 2062, 2063, 1, 0, 0, 0, 2063, 2077, 1, 0, 0, 0, 2064, 2062, 1, 0, 0, 0, 2065, 2066, 5, 2, 0, 0, 2066, 2071, 3, 118, 59, 0, 2067, 2068, 5, 6, 0, 0, 2068, 2070, 3, 118, 59, 0, 2069, 2067, 1, 0, 0, 0, 2070, 2073, 1, 0, 0, 0, 2071, 2069, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2074, 1, 0, 0, 0, 2073, 2071, 1, 0, 0, 0, 2074, 2075, 5, 3, 0, 0, 2075, 2077, 1, 0, 0, 0, 2076, 2062, 1, 0, 0, 0, 2076, 2065, 1, 0, 0, 0, 2077, 117, 1, 0, 0, 0, 2078, 2093, 3, 824, 412, 0, 2079, 2094, 3, 54, 27, 0, 2080, 2094, 3, 202, 101, 0, 2081, 2094, 5, 9, 0, 0, 2082, 2083, 5, 2, 0, 0, 2083, 2088, 3, 52, 26, 0, 2084, 2085, 5, 6, 0, 0, 2085, 2087, 3, 52, 26, 0, 2086, 2084, 1, 0, 0, 0, 2087, 2090, 1, 0, 0, 0, 2088, 2086, 1, 0, 0, 0, 2088, 2089, 1, 0, 0, 0, 2089, 2091, 1, 0, 0, 0, 2090, 2088, 1, 0, 0, 0, 2091, 2092, 5, 3, 0, 0, 2092, 2094, 1, 0, 0, 0, 2093, 2079, 1, 0, 0, 0, 2093, 2080, 1, 0, 0, 0, 2093, 2081, 1, 0, 0, 0, 2093, 2082, 1, 0, 0, 0, 2093, 2094, 1, 0, 0, 0, 2094, 119, 1, 0, 0, 0, 2095, 2097, 5, 46, 0, 0, 2096, 2098, 3, 122, 61, 0, 2097, 2096, 1, 0, 0, 0, 2097, 2098, 1, 0, 0, 0, 2098, 2099, 1, 0, 0, 0, 2099, 2101, 5, 92, 0, 0, 2100, 2102, 3, 294, 147, 0, 2101, 2100, 1, 0, 0, 0, 2101, 2102, 1, 0, 0, 0, 2102, 2103, 1, 0, 0, 0, 2103, 2169, 3, 772, 386, 0, 2104, 2106, 5, 2, 0, 0, 2105, 2107, 3, 126, 63, 0, 2106, 2105, 1, 0, 0, 0, 2106, 2107, 1, 0, 0, 0, 2107, 2108, 1, 0, 0, 0, 2108, 2110, 5, 3, 0, 0, 2109, 2111, 3, 164, 82, 0, 2110, 2109, 1, 0, 0, 0, 2110, 2111, 1, 0, 0, 0, 2111, 2113, 1, 0, 0, 0, 2112, 2114, 3, 166, 83, 0, 2113, 2112, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2116, 1, 0, 0, 0, 2115, 2117, 3, 170, 85, 0, 2116, 2115, 1, 0, 0, 0, 2116, 2117, 1, 0, 0, 0, 2117, 2119, 1, 0, 0, 0, 2118, 2120, 3, 172, 86, 0, 2119, 2118, 1, 0, 0, 0, 2119, 2120, 1, 0, 0, 0, 2120, 2122, 1, 0, 0, 0, 2121, 2123, 3, 174, 87, 0, 2122, 2121, 1, 0, 0, 0, 2122, 2123, 1, 0, 0, 0, 2123, 2125, 1, 0, 0, 0, 2124, 2126, 3, 176, 88, 0, 2125, 2124, 1, 0, 0, 0, 2125, 2126, 1, 0, 0, 0, 2126, 2170, 1, 0, 0, 0, 2127, 2128, 5, 275, 0, 0, 2128, 2130, 3, 316, 158, 0, 2129, 2131, 3, 124, 62, 0, 2130, 2129, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2133, 1, 0, 0, 0, 2132, 2134, 3, 166, 83, 0, 2133, 2132, 1, 0, 0, 0, 2133, 2134, 1, 0, 0, 0, 2134, 2136, 1, 0, 0, 0, 2135, 2137, 3, 170, 85, 0, 2136, 2135, 1, 0, 0, 0, 2136, 2137, 1, 0, 0, 0, 2137, 2139, 1, 0, 0, 0, 2138, 2140, 3, 172, 86, 0, 2139, 2138, 1, 0, 0, 0, 2139, 2140, 1, 0, 0, 0, 2140, 2142, 1, 0, 0, 0, 2141, 2143, 3, 174, 87, 0, 2142, 2141, 1, 0, 0, 0, 2142, 2143, 1, 0, 0, 0, 2143, 2145, 1, 0, 0, 0, 2144, 2146, 3, 176, 88, 0, 2145, 2144, 1, 0, 0, 0, 2145, 2146, 1, 0, 0, 0, 2146, 2170, 1, 0, 0, 0, 2147, 2148, 5, 285, 0, 0, 2148, 2149, 5, 275, 0, 0, 2149, 2151, 3, 780, 390, 0, 2150, 2152, 3, 124, 62, 0, 2151, 2150, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2153, 1, 0, 0, 0, 2153, 2155, 3, 106, 53, 0, 2154, 2156, 3, 166, 83, 0, 2155, 2154, 1, 0, 0, 0, 2155, 2156, 1, 0, 0, 0, 2156, 2158, 1, 0, 0, 0, 2157, 2159, 3, 170, 85, 0, 2158, 2157, 1, 0, 0, 0, 2158, 2159, 1, 0, 0, 0, 2159, 2161, 1, 0, 0, 0, 2160, 2162, 3, 172, 86, 0, 2161, 2160, 1, 0, 0, 0, 2161, 2162, 1, 0, 0, 0, 2162, 2164, 1, 0, 0, 0, 2163, 2165, 3, 174, 87, 0, 2164, 2163, 1, 0, 0, 0, 2164, 2165, 1, 0, 0, 0, 2165, 2167, 1, 0, 0, 0, 2166, 2168, 3, 176, 88, 0, 2167, 2166, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2170, 1, 0, 0, 0, 2169, 2104, 1, 0, 0, 0, 2169, 2127, 1, 0, 0, 0, 2169, 2147, 1, 0, 0, 0, 2170, 121, 1, 0, 0, 0, 2171, 2177, 5, 354, 0, 0, 2172, 2177, 5, 352, 0, 0, 2173, 2174, 7, 20, 0, 0, 2174, 2177, 7, 21, 0, 0, 2175, 2177, 5, 367, 0, 0, 2176, 2171, 1, 0, 0, 0, 2176, 2172, 1, 0, 0, 0, 2176, 2173, 1, 0, 0, 0, 2176, 2175, 1, 0, 0, 0, 2177, 123, 1, 0, 0, 0, 2178, 2179, 5, 2, 0, 0, 2179, 2184, 3, 130, 65, 0, 2180, 2181, 5, 6, 0, 0, 2181, 2183, 3, 130, 65, 0, 2182, 2180, 1, 0, 0, 0, 2183, 2186, 1, 0, 0, 0, 2184, 2182, 1, 0, 0, 0, 2184, 2185, 1, 0, 0, 0, 2185, 2187, 1, 0, 0, 0, 2186, 2184, 1, 0, 0, 0, 2187, 2188, 5, 3, 0, 0, 2188, 125, 1, 0, 0, 0, 2189, 2194, 3, 128, 64, 0, 2190, 2191, 5, 6, 0, 0, 2191, 2193, 3, 128, 64, 0, 2192, 2190, 1, 0, 0, 0, 2193, 2196, 1, 0, 0, 0, 2194, 2192, 1, 0, 0, 0, 2194, 2195, 1, 0, 0, 0, 2195, 127, 1, 0, 0, 0, 2196, 2194, 1, 0, 0, 0, 2197, 2198, 5, 45, 0, 0, 2198, 2200, 3, 818, 409, 0, 2199, 2197, 1, 0, 0, 0, 2199, 2200, 1, 0, 0, 0, 2200, 2201, 1, 0, 0, 0, 2201, 2213, 3, 142, 71, 0, 2202, 2213, 3, 132, 66, 0, 2203, 2204, 5, 120, 0, 0, 2204, 2209, 3, 780, 390, 0, 2205, 2206, 7, 22, 0, 0, 2206, 2208, 3, 140, 70, 0, 2207, 2205, 1, 0, 0, 0, 2208, 2211, 1, 0, 0, 0, 2209, 2207, 1, 0, 0, 0, 2209, 2210, 1, 0, 0, 0, 2210, 2213, 1, 0, 0, 0, 2211, 2209, 1, 0, 0, 0, 2212, 2199, 1, 0, 0, 0, 2212, 2202, 1, 0, 0, 0, 2212, 2203, 1, 0, 0, 0, 2213, 129, 1, 0, 0, 0, 2214, 2217, 3, 802, 401, 0, 2215, 2216, 5, 105, 0, 0, 2216, 2218, 5, 280, 0, 0, 2217, 2215, 1, 0, 0, 0, 2217, 2218, 1, 0, 0, 0, 2218, 2222, 1, 0, 0, 0, 2219, 2221, 3, 134, 67, 0, 2220, 2219, 1, 0, 0, 0, 2221, 2224, 1, 0, 0, 0, 2222, 2220, 1, 0, 0, 0, 2222, 2223, 1, 0, 0, 0, 2223, 2231, 1, 0, 0, 0, 2224, 2222, 1, 0, 0, 0, 2225, 2226, 5, 45, 0, 0, 2226, 2228, 3, 818, 409, 0, 2227, 2225, 1, 0, 0, 0, 2227, 2228, 1, 0, 0, 0, 2228, 2229, 1, 0, 0, 0, 2229, 2231, 3, 142, 71, 0, 2230, 2214, 1, 0, 0, 0, 2230, 2227, 1, 0, 0, 0, 2231, 131, 1, 0, 0, 0, 2232, 2233, 3, 802, 401, 0, 2233, 2235, 3, 652, 326, 0, 2234, 2236, 3, 220, 110, 0, 2235, 2234, 1, 0, 0, 0, 2235, 2236, 1, 0, 0, 0, 2236, 2246, 1, 0, 0, 0, 2237, 2244, 5, 345, 0, 0, 2238, 2245, 5, 544, 0, 0, 2239, 2245, 5, 205, 0, 0, 2240, 2245, 5, 545, 0, 0, 2241, 2245, 5, 546, 0, 0, 2242, 2245, 5, 53, 0, 0, 2243, 2245, 3, 818, 409, 0, 2244, 2238, 1, 0, 0, 0, 2244, 2239, 1, 0, 0, 0, 2244, 2240, 1, 0, 0, 0, 2244, 2241, 1, 0, 0, 0, 2244, 2242, 1, 0, 0, 0, 2244, 2243, 1, 0, 0, 0, 2245, 2247, 1, 0, 0, 0, 2246, 2237, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2250, 1, 0, 0, 0, 2248, 2249, 5, 543, 0, 0, 2249, 2251, 3, 818, 409, 0, 2250, 2248, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2253, 1, 0, 0, 0, 2252, 2254, 3, 98, 49, 0, 2253, 2252, 1, 0, 0, 0, 2253, 2254, 1, 0, 0, 0, 2254, 2257, 1, 0, 0, 0, 2255, 2256, 5, 105, 0, 0, 2256, 2258, 5, 280, 0, 0, 2257, 2255, 1, 0, 0, 0, 2257, 2258, 1, 0, 0, 0, 2258, 2262, 1, 0, 0, 0, 2259, 2261, 3, 134, 67, 0, 2260, 2259, 1, 0, 0, 0, 2261, 2264, 1, 0, 0, 0, 2262, 2260, 1, 0, 0, 0, 2262, 2263, 1, 0, 0, 0, 2263, 133, 1, 0, 0, 0, 2264, 2262, 1, 0, 0, 0, 2265, 2266, 5, 45, 0, 0, 2266, 2268, 3, 818, 409, 0, 2267, 2265, 1, 0, 0, 0, 2267, 2268, 1, 0, 0, 0, 2268, 2269, 1, 0, 0, 0, 2269, 2274, 3, 136, 68, 0, 2270, 2272, 5, 77, 0, 0, 2271, 2270, 1, 0, 0, 0, 2271, 2272, 1, 0, 0, 0, 2272, 2273, 1, 0, 0, 0, 2273, 2275, 5, 54, 0, 0, 2274, 2271, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2278, 1, 0, 0, 0, 2276, 2277, 5, 69, 0, 0, 2277, 2279, 7, 9, 0, 0, 2278, 2276, 1, 0, 0, 0, 2278, 2279, 1, 0, 0, 0, 2279, 135, 1, 0, 0, 0, 2280, 2282, 5, 77, 0, 0, 2281, 2280, 1, 0, 0, 0, 2281, 2282, 1, 0, 0, 0, 2282, 2283, 1, 0, 0, 0, 2283, 2361, 5, 78, 0, 0, 2284, 2286, 5, 98, 0, 0, 2285, 2287, 3, 400, 200, 0, 2286, 2285, 1, 0, 0, 0, 2286, 2287, 1, 0, 0, 0, 2287, 2289, 1, 0, 0, 0, 2288, 2290, 3, 178, 89, 0, 2289, 2288, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2361, 1, 0, 0, 0, 2291, 2297, 5, 98, 0, 0, 2292, 2294, 5, 273, 0, 0, 2293, 2295, 5, 77, 0, 0, 2294, 2293, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2296, 1, 0, 0, 0, 2296, 2298, 5, 56, 0, 0, 2297, 2292, 1, 0, 0, 0, 2297, 2298, 1, 0, 0, 0, 2298, 2301, 1, 0, 0, 0, 2299, 2300, 5, 441, 0, 0, 2300, 2302, 3, 360, 180, 0, 2301, 2299, 1, 0, 0, 0, 2301, 2302, 1, 0, 0, 0, 2302, 2304, 1, 0, 0, 0, 2303, 2305, 3, 572, 286, 0, 2304, 2303, 1, 0, 0, 0, 2304, 2305, 1, 0, 0, 0, 2305, 2307, 1, 0, 0, 0, 2306, 2308, 3, 178, 89, 0, 2307, 2306, 1, 0, 0, 0, 2307, 2308, 1, 0, 0, 0, 2308, 2361, 1, 0, 0, 0, 2309, 2310, 5, 85, 0, 0, 2310, 2312, 5, 245, 0, 0, 2311, 2313, 3, 400, 200, 0, 2312, 2311, 1, 0, 0, 0, 2312, 2313, 1, 0, 0, 0, 2313, 2315, 1, 0, 0, 0, 2314, 2316, 3, 178, 89, 0, 2315, 2314, 1, 0, 0, 0, 2315, 2316, 1, 0, 0, 0, 2316, 2361, 1, 0, 0, 0, 2317, 2318, 5, 42, 0, 0, 2318, 2319, 5, 2, 0, 0, 2319, 2320, 3, 674, 337, 0, 2320, 2323, 5, 3, 0, 0, 2321, 2322, 5, 269, 0, 0, 2322, 2324, 5, 228, 0, 0, 2323, 2321, 1, 0, 0, 0, 2323, 2324, 1, 0, 0, 0, 2324, 2361, 1, 0, 0, 0, 2325, 2326, 5, 53, 0, 0, 2326, 2361, 3, 682, 341, 0, 2327, 2328, 5, 438, 0, 0, 2328, 2329, 3, 138, 69, 0, 2329, 2346, 5, 36, 0, 0, 2330, 2339, 5, 219, 0, 0, 2331, 2333, 5, 2, 0, 0, 2332, 2334, 3, 200, 100, 0, 2333, 2332, 1, 0, 0, 0, 2334, 2335, 1, 0, 0, 0, 2335, 2333, 1, 0, 0, 0, 2335, 2336, 1, 0, 0, 0, 2336, 2337, 1, 0, 0, 0, 2337, 2338, 5, 3, 0, 0, 2338, 2340, 1, 0, 0, 0, 2339, 2331, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2347, 1, 0, 0, 0, 2341, 2342, 5, 2, 0, 0, 2342, 2343, 3, 674, 337, 0, 2343, 2344, 5, 3, 0, 0, 2344, 2345, 5, 440, 0, 0, 2345, 2347, 1, 0, 0, 0, 2346, 2330, 1, 0, 0, 0, 2346, 2341, 1, 0, 0, 0, 2347, 2361, 1, 0, 0, 0, 2348, 2349, 5, 86, 0, 0, 2349, 2351, 3, 780, 390, 0, 2350, 2352, 3, 144, 72, 0, 2351, 2350, 1, 0, 0, 0, 2351, 2352, 1, 0, 0, 0, 2352, 2354, 1, 0, 0, 0, 2353, 2355, 3, 152, 76, 0, 2354, 2353, 1, 0, 0, 0, 2354, 2355, 1, 0, 0, 0, 2355, 2357, 1, 0, 0, 0, 2356, 2358, 3, 156, 78, 0, 2357, 2356, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2361, 1, 0, 0, 0, 2359, 2361, 3, 98, 49, 0, 2360, 2281, 1, 0, 0, 0, 2360, 2284, 1, 0, 0, 0, 2360, 2291, 1, 0, 0, 0, 2360, 2309, 1, 0, 0, 0, 2360, 2317, 1, 0, 0, 0, 2360, 2325, 1, 0, 0, 0, 2360, 2327, 1, 0, 0, 0, 2360, 2348, 1, 0, 0, 0, 2360, 2359, 1, 0, 0, 0, 2361, 137, 1, 0, 0, 0, 2362, 2366, 5, 139, 0, 0, 2363, 2364, 5, 147, 0, 0, 2364, 2366, 5, 53, 0, 0, 2365, 2362, 1, 0, 0, 0, 2365, 2363, 1, 0, 0, 0, 2366, 139, 1, 0, 0, 0, 2367, 2368, 7, 23, 0, 0, 2368, 141, 1, 0, 0, 0, 2369, 2370, 5, 42, 0, 0, 2370, 2371, 5, 2, 0, 0, 2371, 2372, 3, 674, 337, 0, 2372, 2376, 5, 3, 0, 0, 2373, 2375, 3, 272, 136, 0, 2374, 2373, 1, 0, 0, 0, 2375, 2378, 1, 0, 0, 0, 2376, 2374, 1, 0, 0, 0, 2376, 2377, 1, 0, 0, 0, 2377, 2466, 1, 0, 0, 0, 2378, 2376, 1, 0, 0, 0, 2379, 2383, 5, 98, 0, 0, 2380, 2381, 5, 85, 0, 0, 2381, 2383, 5, 245, 0, 0, 2382, 2379, 1, 0, 0, 0, 2382, 2380, 1, 0, 0, 0, 2383, 2407, 1, 0, 0, 0, 2384, 2386, 3, 144, 72, 0, 2385, 2387, 3, 150, 75, 0, 2386, 2385, 1, 0, 0, 0, 2386, 2387, 1, 0, 0, 0, 2387, 2389, 1, 0, 0, 0, 2388, 2390, 3, 400, 200, 0, 2389, 2388, 1, 0, 0, 0, 2389, 2390, 1, 0, 0, 0, 2390, 2392, 1, 0, 0, 0, 2391, 2393, 3, 178, 89, 0, 2392, 2391, 1, 0, 0, 0, 2392, 2393, 1, 0, 0, 0, 2393, 2397, 1, 0, 0, 0, 2394, 2396, 3, 272, 136, 0, 2395, 2394, 1, 0, 0, 0, 2396, 2399, 1, 0, 0, 0, 2397, 2395, 1, 0, 0, 0, 2397, 2398, 1, 0, 0, 0, 2398, 2408, 1, 0, 0, 0, 2399, 2397, 1, 0, 0, 0, 2400, 2404, 3, 180, 90, 0, 2401, 2403, 3, 272, 136, 0, 2402, 2401, 1, 0, 0, 0, 2403, 2406, 1, 0, 0, 0, 2404, 2402, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2408, 1, 0, 0, 0, 2406, 2404, 1, 0, 0, 0, 2407, 2384, 1, 0, 0, 0, 2407, 2400, 1, 0, 0, 0, 2408, 2466, 1, 0, 0, 0, 2409, 2411, 5, 199, 0, 0, 2410, 2412, 3, 170, 85, 0, 2411, 2410, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2413, 1, 0, 0, 0, 2413, 2414, 5, 2, 0, 0, 2414, 2419, 3, 154, 77, 0, 2415, 2416, 5, 6, 0, 0, 2416, 2418, 3, 154, 77, 0, 2417, 2415, 1, 0, 0, 0, 2418, 2421, 1, 0, 0, 0, 2419, 2417, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2422, 1, 0, 0, 0, 2421, 2419, 1, 0, 0, 0, 2422, 2424, 5, 3, 0, 0, 2423, 2425, 3, 150, 75, 0, 2424, 2423, 1, 0, 0, 0, 2424, 2425, 1, 0, 0, 0, 2425, 2427, 1, 0, 0, 0, 2426, 2428, 3, 400, 200, 0, 2427, 2426, 1, 0, 0, 0, 2427, 2428, 1, 0, 0, 0, 2428, 2430, 1, 0, 0, 0, 2429, 2431, 3, 178, 89, 0, 2430, 2429, 1, 0, 0, 0, 2430, 2431, 1, 0, 0, 0, 2431, 2437, 1, 0, 0, 0, 2432, 2433, 5, 103, 0, 0, 2433, 2434, 5, 2, 0, 0, 2434, 2435, 3, 674, 337, 0, 2435, 2436, 5, 3, 0, 0, 2436, 2438, 1, 0, 0, 0, 2437, 2432, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2442, 1, 0, 0, 0, 2439, 2441, 3, 272, 136, 0, 2440, 2439, 1, 0, 0, 0, 2441, 2444, 1, 0, 0, 0, 2442, 2440, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2466, 1, 0, 0, 0, 2444, 2442, 1, 0, 0, 0, 2445, 2446, 5, 63, 0, 0, 2446, 2447, 5, 245, 0, 0, 2447, 2448, 3, 144, 72, 0, 2448, 2449, 5, 86, 0, 0, 2449, 2451, 3, 780, 390, 0, 2450, 2452, 3, 144, 72, 0, 2451, 2450, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2454, 1, 0, 0, 0, 2453, 2455, 3, 152, 76, 0, 2454, 2453, 1, 0, 0, 0, 2454, 2455, 1, 0, 0, 0, 2455, 2457, 1, 0, 0, 0, 2456, 2458, 3, 156, 78, 0, 2457, 2456, 1, 0, 0, 0, 2457, 2458, 1, 0, 0, 0, 2458, 2462, 1, 0, 0, 0, 2459, 2461, 3, 272, 136, 0, 2460, 2459, 1, 0, 0, 0, 2461, 2464, 1, 0, 0, 0, 2462, 2460, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2466, 1, 0, 0, 0, 2464, 2462, 1, 0, 0, 0, 2465, 2369, 1, 0, 0, 0, 2465, 2382, 1, 0, 0, 0, 2465, 2409, 1, 0, 0, 0, 2465, 2445, 1, 0, 0, 0, 2466, 143, 1, 0, 0, 0, 2467, 2468, 5, 2, 0, 0, 2468, 2469, 3, 148, 74, 0, 2469, 2470, 5, 3, 0, 0, 2470, 145, 1, 0, 0, 0, 2471, 2472, 5, 2, 0, 0, 2472, 2477, 3, 802, 401, 0, 2473, 2474, 5, 6, 0, 0, 2474, 2476, 3, 802, 401, 0, 2475, 2473, 1, 0, 0, 0, 2476, 2479, 1, 0, 0, 0, 2477, 2475, 1, 0, 0, 0, 2477, 2478, 1, 0, 0, 0, 2478, 2480, 1, 0, 0, 0, 2479, 2477, 1, 0, 0, 0, 2480, 2481, 5, 3, 0, 0, 2481, 147, 1, 0, 0, 0, 2482, 2487, 3, 800, 400, 0, 2483, 2484, 5, 6, 0, 0, 2484, 2486, 3, 800, 400, 0, 2485, 2483, 1, 0, 0, 0, 2486, 2489, 1, 0, 0, 0, 2487, 2485, 1, 0, 0, 0, 2487, 2488, 1, 0, 0, 0, 2488, 149, 1, 0, 0, 0, 2489, 2487, 1, 0, 0, 0, 2490, 2491, 5, 441, 0, 0, 2491, 2492, 3, 144, 72, 0, 2492, 151, 1, 0, 0, 0, 2493, 2494, 5, 258, 0, 0, 2494, 2495, 7, 24, 0, 0, 2495, 153, 1, 0, 0, 0, 2496, 2497, 3, 362, 181, 0, 2497, 2504, 5, 105, 0, 0, 2498, 2505, 3, 414, 207, 0, 2499, 2500, 5, 278, 0, 0, 2500, 2501, 5, 2, 0, 0, 2501, 2502, 3, 414, 207, 0, 2502, 2503, 5, 3, 0, 0, 2503, 2505, 1, 0, 0, 0, 2504, 2498, 1, 0, 0, 0, 2504, 2499, 1, 0, 0, 0, 2505, 155, 1, 0, 0, 0, 2506, 2508, 3, 158, 79, 0, 2507, 2509, 3, 160, 80, 0, 2508, 2507, 1, 0, 0, 0, 2508, 2509, 1, 0, 0, 0, 2509, 2515, 1, 0, 0, 0, 2510, 2512, 3, 160, 80, 0, 2511, 2513, 3, 158, 79, 0, 2512, 2511, 1, 0, 0, 0, 2512, 2513, 1, 0, 0, 0, 2513, 2515, 1, 0, 0, 0, 2514, 2506, 1, 0, 0, 0, 2514, 2510, 1, 0, 0, 0, 2515, 157, 1, 0, 0, 0, 2516, 2517, 5, 80, 0, 0, 2517, 2518, 5, 369, 0, 0, 2518, 2519, 3, 162, 81, 0, 2519, 159, 1, 0, 0, 0, 2520, 2521, 5, 80, 0, 0, 2521, 2522, 5, 182, 0, 0, 2522, 2523, 3, 162, 81, 0, 2523, 161, 1, 0, 0, 0, 2524, 2525, 5, 269, 0, 0, 2525, 2534, 5, 132, 0, 0, 2526, 2534, 5, 315, 0, 0, 2527, 2534, 5, 150, 0, 0, 2528, 2529, 5, 333, 0, 0, 2529, 2531, 7, 25, 0, 0, 2530, 2532, 3, 148, 74, 0, 2531, 2530, 1, 0, 0, 0, 2531, 2532, 1, 0, 0, 0, 2532, 2534, 1, 0, 0, 0, 2533, 2524, 1, 0, 0, 0, 2533, 2526, 1, 0, 0, 0, 2533, 2527, 1, 0, 0, 0, 2533, 2528, 1, 0, 0, 0, 2534, 163, 1, 0, 0, 0, 2535, 2536, 5, 238, 0, 0, 2536, 2537, 5, 2, 0, 0, 2537, 2538, 3, 760, 380, 0, 2538, 2539, 5, 3, 0, 0, 2539, 165, 1, 0, 0, 0, 2540, 2541, 5, 285, 0, 0, 2541, 2542, 5, 147, 0, 0, 2542, 2543, 3, 818, 409, 0, 2543, 2544, 5, 2, 0, 0, 2544, 2549, 3, 168, 84, 0, 2545, 2546, 5, 6, 0, 0, 2546, 2548, 3, 168, 84, 0, 2547, 2545, 1, 0, 0, 0, 2548, 2551, 1, 0, 0, 0, 2549, 2547, 1, 0, 0, 0, 2549, 2550, 1, 0, 0, 0, 2550, 2552, 1, 0, 0, 0, 2551, 2549, 1, 0, 0, 0, 2552, 2553, 5, 3, 0, 0, 2553, 167, 1, 0, 0, 0, 2554, 2561, 3, 800, 400, 0, 2555, 2561, 3, 688, 344, 0, 2556, 2557, 5, 2, 0, 0, 2557, 2558, 3, 674, 337, 0, 2558, 2559, 5, 3, 0, 0, 2559, 2561, 1, 0, 0, 0, 2560, 2554, 1, 0, 0, 0, 2560, 2555, 1, 0, 0, 0, 2560, 2556, 1, 0, 0, 0, 2561, 2563, 1, 0, 0, 0, 2562, 2564, 3, 98, 49, 0, 2563, 2562, 1, 0, 0, 0, 2563, 2564, 1, 0, 0, 0, 2564, 2566, 1, 0, 0, 0, 2565, 2567, 3, 316, 158, 0, 2566, 2565, 1, 0, 0, 0, 2566, 2567, 1, 0, 0, 0, 2567, 169, 1, 0, 0, 0, 2568, 2569, 5, 100, 0, 0, 2569, 2570, 3, 818, 409, 0, 2570, 171, 1, 0, 0, 0, 2571, 2572, 5, 105, 0, 0, 2572, 2576, 3, 100, 50, 0, 2573, 2574, 7, 26, 0, 0, 2574, 2576, 5, 277, 0, 0, 2575, 2571, 1, 0, 0, 0, 2575, 2573, 1, 0, 0, 0, 2576, 173, 1, 0, 0, 0, 2577, 2578, 5, 80, 0, 0, 2578, 2584, 5, 161, 0, 0, 2579, 2585, 5, 191, 0, 0, 2580, 2581, 5, 182, 0, 0, 2581, 2585, 5, 320, 0, 0, 2582, 2583, 5, 292, 0, 0, 2583, 2585, 5, 320, 0, 0, 2584, 2579, 1, 0, 0, 0, 2584, 2580, 1, 0, 0, 0, 2584, 2582, 1, 0, 0, 0, 2585, 175, 1, 0, 0, 0, 2586, 2587, 5, 351, 0, 0, 2587, 2588, 3, 770, 385, 0, 2588, 177, 1, 0, 0, 0, 2589, 2590, 5, 100, 0, 0, 2590, 2591, 5, 226, 0, 0, 2591, 2592, 3, 176, 88, 0, 2592, 179, 1, 0, 0, 0, 2593, 2594, 5, 100, 0, 0, 2594, 2595, 5, 226, 0, 0, 2595, 2596, 3, 818, 409, 0, 2596, 181, 1, 0, 0, 0, 2597, 2598, 5, 46, 0, 0, 2598, 2603, 5, 342, 0, 0, 2599, 2601, 3, 294, 147, 0, 2600, 2599, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2602, 1, 0, 0, 0, 2602, 2604, 3, 316, 158, 0, 2603, 2600, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2606, 1, 0, 0, 0, 2605, 2607, 3, 144, 72, 0, 2606, 2605, 1, 0, 0, 0, 2606, 2607, 1, 0, 0, 0, 2607, 2608, 1, 0, 0, 0, 2608, 2618, 5, 80, 0, 0, 2609, 2614, 3, 732, 366, 0, 2610, 2611, 5, 6, 0, 0, 2611, 2613, 3, 732, 366, 0, 2612, 2610, 1, 0, 0, 0, 2613, 2616, 1, 0, 0, 0, 2614, 2612, 1, 0, 0, 0, 2614, 2615, 1, 0, 0, 0, 2615, 2619, 1, 0, 0, 0, 2616, 2614, 1, 0, 0, 0, 2617, 2619, 3, 730, 365, 0, 2618, 2609, 1, 0, 0, 0, 2618, 2617, 1, 0, 0, 0, 2619, 2620, 1, 0, 0, 0, 2620, 2621, 3, 610, 305, 0, 2621, 183, 1, 0, 0, 0, 2622, 2623, 5, 138, 0, 0, 2623, 2625, 5, 342, 0, 0, 2624, 2626, 3, 422, 211, 0, 2625, 2624, 1, 0, 0, 0, 2625, 2626, 1, 0, 0, 0, 2626, 2627, 1, 0, 0, 0, 2627, 2628, 3, 316, 158, 0, 2628, 2629, 5, 333, 0, 0, 2629, 2630, 5, 342, 0, 0, 2630, 2631, 3, 812, 406, 0, 2631, 185, 1, 0, 0, 0, 2632, 2634, 5, 46, 0, 0, 2633, 2635, 3, 122, 61, 0, 2634, 2633, 1, 0, 0, 0, 2634, 2635, 1, 0, 0, 0, 2635, 2636, 1, 0, 0, 0, 2636, 2638, 5, 92, 0, 0, 2637, 2639, 3, 294, 147, 0, 2638, 2637, 1, 0, 0, 0, 2638, 2639, 1, 0, 0, 0, 2639, 2640, 1, 0, 0, 0, 2640, 2641, 3, 188, 94, 0, 2641, 2642, 5, 36, 0, 0, 2642, 2644, 3, 560, 280, 0, 2643, 2645, 3, 190, 95, 0, 2644, 2643, 1, 0, 0, 0, 2644, 2645, 1, 0, 0, 0, 2645, 187, 1, 0, 0, 0, 2646, 2648, 3, 772, 386, 0, 2647, 2649, 3, 146, 73, 0, 2648, 2647, 1, 0, 0, 0, 2648, 2649, 1, 0, 0, 0, 2649, 2651, 1, 0, 0, 0, 2650, 2652, 3, 170, 85, 0, 2651, 2650, 1, 0, 0, 0, 2651, 2652, 1, 0, 0, 0, 2652, 2654, 1, 0, 0, 0, 2653, 2655, 3, 172, 86, 0, 2654, 2653, 1, 0, 0, 0, 2654, 2655, 1, 0, 0, 0, 2655, 2657, 1, 0, 0, 0, 2656, 2658, 3, 174, 87, 0, 2657, 2656, 1, 0, 0, 0, 2657, 2658, 1, 0, 0, 0, 2658, 2660, 1, 0, 0, 0, 2659, 2661, 3, 176, 88, 0, 2660, 2659, 1, 0, 0, 0, 2660, 2661, 1, 0, 0, 0, 2661, 189, 1, 0, 0, 0, 2662, 2666, 5, 105, 0, 0, 2663, 2667, 5, 174, 0, 0, 2664, 2665, 5, 269, 0, 0, 2665, 2667, 5, 174, 0, 0, 2666, 2663, 1, 0, 0, 0, 2666, 2664, 1, 0, 0, 0, 2667, 191, 1, 0, 0, 0, 2668, 2670, 5, 46, 0, 0, 2669, 2671, 5, 367, 0, 0, 2670, 2669, 1, 0, 0, 0, 2670, 2671, 1, 0, 0, 0, 2671, 2672, 1, 0, 0, 0, 2672, 2673, 5, 259, 0, 0, 2673, 2675, 5, 376, 0, 0, 2674, 2676, 3, 294, 147, 0, 2675, 2674, 1, 0, 0, 0, 2675, 2676, 1, 0, 0, 0, 2676, 2677, 1, 0, 0, 0, 2677, 2679, 3, 776, 388, 0, 2678, 2680, 3, 146, 73, 0, 2679, 2678, 1, 0, 0, 0, 2679, 2680, 1, 0, 0, 0, 2680, 2682, 1, 0, 0, 0, 2681, 2683, 3, 170, 85, 0, 2682, 2681, 1, 0, 0, 0, 2682, 2683, 1, 0, 0, 0, 2683, 2685, 1, 0, 0, 0, 2684, 2686, 3, 102, 51, 0, 2685, 2684, 1, 0, 0, 0, 2685, 2686, 1, 0, 0, 0, 2686, 2688, 1, 0, 0, 0, 2687, 2689, 3, 176, 88, 0, 2688, 2687, 1, 0, 0, 0, 2688, 2689, 1, 0, 0, 0, 2689, 2690, 1, 0, 0, 0, 2690, 2691, 5, 36, 0, 0, 2691, 2693, 3, 560, 280, 0, 2692, 2694, 3, 190, 95, 0, 2693, 2692, 1, 0, 0, 0, 2693, 2694, 1, 0, 0, 0, 2694, 193, 1, 0, 0, 0, 2695, 2696, 5, 305, 0, 0, 2696, 2697, 5, 259, 0, 0, 2697, 2699, 5, 376, 0, 0, 2698, 2700, 5, 109, 0, 0, 2699, 2698, 1, 0, 0, 0, 2699, 2700, 1, 0, 0, 0, 2700, 2701, 1, 0, 0, 0, 2701, 2703, 3, 778, 389, 0, 2702, 2704, 3, 190, 95, 0, 2703, 2702, 1, 0, 0, 0, 2703, 2704, 1, 0, 0, 0, 2704, 195, 1, 0, 0, 0, 2705, 2707, 5, 46, 0, 0, 2706, 2708, 3, 122, 61, 0, 2707, 2706, 1, 0, 0, 0, 2707, 2708, 1, 0, 0, 0, 2708, 2709, 1, 0, 0, 0, 2709, 2711, 5, 328, 0, 0, 2710, 2712, 3, 294, 147, 0, 2711, 2710, 1, 0, 0, 0, 2711, 2712, 1, 0, 0, 0, 2712, 2713, 1, 0, 0, 0, 2713, 2719, 3, 780, 390, 0, 2714, 2716, 3, 200, 100, 0, 2715, 2714, 1, 0, 0, 0, 2716, 2717, 1, 0, 0, 0, 2717, 2715, 1, 0, 0, 0, 2717, 2718, 1, 0, 0, 0, 2718, 2720, 1, 0, 0, 0, 2719, 2715, 1, 0, 0, 0, 2719, 2720, 1, 0, 0, 0, 2720, 197, 1, 0, 0, 0, 2721, 2722, 5, 138, 0, 0, 2722, 2724, 5, 328, 0, 0, 2723, 2725, 3, 422, 211, 0, 2724, 2723, 1, 0, 0, 0, 2724, 2725, 1, 0, 0, 0, 2725, 2726, 1, 0, 0, 0, 2726, 2728, 3, 780, 390, 0, 2727, 2729, 3, 200, 100, 0, 2728, 2727, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 2728, 1, 0, 0, 0, 2730, 2731, 1, 0, 0, 0, 2731, 199, 1, 0, 0, 0, 2732, 2733, 5, 36, 0, 0, 2733, 2766, 3, 654, 327, 0, 2734, 2736, 5, 148, 0, 0, 2735, 2737, 3, 202, 101, 0, 2736, 2735, 1, 0, 0, 0, 2736, 2737, 1, 0, 0, 0, 2737, 2766, 1, 0, 0, 0, 2738, 2740, 5, 225, 0, 0, 2739, 2741, 5, 147, 0, 0, 2740, 2739, 1, 0, 0, 0, 2740, 2741, 1, 0, 0, 0, 2741, 2742, 1, 0, 0, 0, 2742, 2766, 3, 202, 101, 0, 2743, 2744, 7, 27, 0, 0, 2744, 2766, 3, 202, 101, 0, 2745, 2746, 5, 269, 0, 0, 2746, 2766, 7, 28, 0, 0, 2747, 2748, 5, 281, 0, 0, 2748, 2749, 5, 147, 0, 0, 2749, 2766, 3, 800, 400, 0, 2750, 2751, 5, 328, 0, 0, 2751, 2752, 5, 266, 0, 0, 2752, 2766, 3, 316, 158, 0, 2753, 2755, 5, 340, 0, 0, 2754, 2756, 5, 105, 0, 0, 2755, 2754, 1, 0, 0, 0, 2755, 2756, 1, 0, 0, 0, 2756, 2757, 1, 0, 0, 0, 2757, 2766, 3, 202, 101, 0, 2758, 2760, 5, 314, 0, 0, 2759, 2761, 5, 105, 0, 0, 2760, 2759, 1, 0, 0, 0, 2760, 2761, 1, 0, 0, 0, 2761, 2763, 1, 0, 0, 0, 2762, 2764, 3, 202, 101, 0, 2763, 2762, 1, 0, 0, 0, 2763, 2764, 1, 0, 0, 0, 2764, 2766, 1, 0, 0, 0, 2765, 2732, 1, 0, 0, 0, 2765, 2734, 1, 0, 0, 0, 2765, 2738, 1, 0, 0, 0, 2765, 2743, 1, 0, 0, 0, 2765, 2745, 1, 0, 0, 0, 2765, 2747, 1, 0, 0, 0, 2765, 2750, 1, 0, 0, 0, 2765, 2753, 1, 0, 0, 0, 2765, 2758, 1, 0, 0, 0, 2766, 201, 1, 0, 0, 0, 2767, 2769, 7, 29, 0, 0, 2768, 2767, 1, 0, 0, 0, 2768, 2769, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2773, 5, 573, 0, 0, 2771, 2773, 3, 812, 406, 0, 2772, 2768, 1, 0, 0, 0, 2772, 2771, 1, 0, 0, 0, 2773, 203, 1, 0, 0, 0, 2774, 2776, 5, 46, 0, 0, 2775, 2777, 3, 366, 183, 0, 2776, 2775, 1, 0, 0, 0, 2776, 2777, 1, 0, 0, 0, 2777, 2779, 1, 0, 0, 0, 2778, 2780, 5, 359, 0, 0, 2779, 2778, 1, 0, 0, 0, 2779, 2780, 1, 0, 0, 0, 2780, 2782, 1, 0, 0, 0, 2781, 2783, 5, 295, 0, 0, 2782, 2781, 1, 0, 0, 0, 2782, 2783, 1, 0, 0, 0, 2783, 2784, 1, 0, 0, 0, 2784, 2785, 5, 247, 0, 0, 2785, 2798, 3, 818, 409, 0, 2786, 2787, 5, 215, 0, 0, 2787, 2790, 3, 316, 158, 0, 2788, 2789, 5, 239, 0, 0, 2789, 2791, 3, 316, 158, 0, 2790, 2788, 1, 0, 0, 0, 2790, 2791, 1, 0, 0, 0, 2791, 2796, 1, 0, 0, 0, 2792, 2793, 5, 373, 0, 0, 2793, 2797, 3, 316, 158, 0, 2794, 2795, 5, 269, 0, 0, 2795, 2797, 5, 373, 0, 0, 2796, 2792, 1, 0, 0, 0, 2796, 2794, 1, 0, 0, 0, 2796, 2797, 1, 0, 0, 0, 2797, 2799, 1, 0, 0, 0, 2798, 2786, 1, 0, 0, 0, 2798, 2799, 1, 0, 0, 0, 2799, 205, 1, 0, 0, 0, 2800, 2801, 5, 46, 0, 0, 2801, 2804, 3, 176, 88, 0, 2802, 2803, 5, 282, 0, 0, 2803, 2805, 3, 814, 407, 0, 2804, 2802, 1, 0, 0, 0, 2804, 2805, 1, 0, 0, 0, 2805, 2806, 1, 0, 0, 0, 2806, 2807, 5, 255, 0, 0, 2807, 2809, 3, 808, 404, 0, 2808, 2810, 3, 102, 51, 0, 2809, 2808, 1, 0, 0, 0, 2809, 2810, 1, 0, 0, 0, 2810, 207, 1, 0, 0, 0, 2811, 2812, 5, 46, 0, 0, 2812, 2814, 5, 204, 0, 0, 2813, 2815, 3, 294, 147, 0, 2814, 2813, 1, 0, 0, 0, 2814, 2815, 1, 0, 0, 0, 2815, 2816, 1, 0, 0, 0, 2816, 2818, 3, 818, 409, 0, 2817, 2819, 5, 105, 0, 0, 2818, 2817, 1, 0, 0, 0, 2818, 2819, 1, 0, 0, 0, 2819, 2827, 1, 0, 0, 0, 2820, 2821, 5, 323, 0, 0, 2821, 2826, 3, 790, 395, 0, 2822, 2823, 7, 30, 0, 0, 2823, 2826, 3, 58, 29, 0, 2824, 2826, 5, 150, 0, 0, 2825, 2820, 1, 0, 0, 0, 2825, 2822, 1, 0, 0, 0, 2825, 2824, 1, 0, 0, 0, 2826, 2829, 1, 0, 0, 0, 2827, 2825, 1, 0, 0, 0, 2827, 2828, 1, 0, 0, 0, 2828, 209, 1, 0, 0, 0, 2829, 2827, 1, 0, 0, 0, 2830, 2831, 5, 138, 0, 0, 2831, 2832, 5, 204, 0, 0, 2832, 2833, 3, 818, 409, 0, 2833, 2838, 5, 369, 0, 0, 2834, 2835, 5, 94, 0, 0, 2835, 2837, 3, 58, 29, 0, 2836, 2834, 1, 0, 0, 0, 2837, 2840, 1, 0, 0, 0, 2838, 2836, 1, 0, 0, 0, 2838, 2839, 1, 0, 0, 0, 2839, 211, 1, 0, 0, 0, 2840, 2838, 1, 0, 0, 0, 2841, 2842, 5, 138, 0, 0, 2842, 2843, 5, 204, 0, 0, 2843, 2844, 3, 818, 409, 0, 2844, 2877, 7, 6, 0, 0, 2845, 2846, 5, 443, 0, 0, 2846, 2847, 5, 62, 0, 0, 2847, 2848, 3, 652, 326, 0, 2848, 2849, 5, 247, 0, 0, 2849, 2850, 3, 818, 409, 0, 2850, 2878, 1, 0, 0, 0, 2851, 2852, 5, 442, 0, 0, 2852, 2878, 3, 374, 187, 0, 2853, 2854, 5, 296, 0, 0, 2854, 2878, 3, 378, 189, 0, 2855, 2856, 5, 278, 0, 0, 2856, 2857, 7, 31, 0, 0, 2857, 2858, 3, 316, 158, 0, 2858, 2859, 3, 170, 85, 0, 2859, 2878, 1, 0, 0, 0, 2860, 2861, 5, 278, 0, 0, 2861, 2878, 3, 416, 208, 0, 2862, 2863, 5, 211, 0, 0, 2863, 2878, 3, 382, 191, 0, 2864, 2865, 7, 32, 0, 0, 2865, 2878, 3, 652, 326, 0, 2866, 2867, 5, 41, 0, 0, 2867, 2868, 5, 2, 0, 0, 2868, 2869, 3, 652, 326, 0, 2869, 2870, 5, 36, 0, 0, 2870, 2871, 3, 652, 326, 0, 2871, 2872, 5, 3, 0, 0, 2872, 2878, 1, 0, 0, 0, 2873, 2874, 5, 136, 0, 0, 2874, 2878, 3, 394, 197, 0, 2875, 2878, 3, 312, 156, 0, 2876, 2878, 3, 310, 155, 0, 2877, 2845, 1, 0, 0, 0, 2877, 2851, 1, 0, 0, 0, 2877, 2853, 1, 0, 0, 0, 2877, 2855, 1, 0, 0, 0, 2877, 2860, 1, 0, 0, 0, 2877, 2862, 1, 0, 0, 0, 2877, 2864, 1, 0, 0, 0, 2877, 2866, 1, 0, 0, 0, 2877, 2873, 1, 0, 0, 0, 2877, 2875, 1, 0, 0, 0, 2877, 2876, 1, 0, 0, 0, 2878, 213, 1, 0, 0, 0, 2879, 2880, 5, 46, 0, 0, 2880, 2881, 5, 63, 0, 0, 2881, 2882, 5, 174, 0, 0, 2882, 2883, 5, 381, 0, 0, 2883, 2889, 3, 818, 409, 0, 2884, 2886, 3, 216, 108, 0, 2885, 2884, 1, 0, 0, 0, 2886, 2887, 1, 0, 0, 0, 2887, 2885, 1, 0, 0, 0, 2887, 2888, 1, 0, 0, 0, 2888, 2890, 1, 0, 0, 0, 2889, 2885, 1, 0, 0, 0, 2889, 2890, 1, 0, 0, 0, 2890, 2892, 1, 0, 0, 0, 2891, 2893, 3, 220, 110, 0, 2892, 2891, 1, 0, 0, 0, 2892, 2893, 1, 0, 0, 0, 2893, 215, 1, 0, 0, 0, 2894, 2896, 7, 33, 0, 0, 2895, 2897, 3, 316, 158, 0, 2896, 2895, 1, 0, 0, 0, 2896, 2897, 1, 0, 0, 0, 2897, 2901, 1, 0, 0, 0, 2898, 2899, 5, 269, 0, 0, 2899, 2901, 7, 33, 0, 0, 2900, 2894, 1, 0, 0, 0, 2900, 2898, 1, 0, 0, 0, 2901, 217, 1, 0, 0, 0, 2902, 2903, 5, 138, 0, 0, 2903, 2904, 5, 63, 0, 0, 2904, 2905, 5, 174, 0, 0, 2905, 2906, 5, 381, 0, 0, 2906, 2920, 3, 818, 409, 0, 2907, 2909, 3, 216, 108, 0, 2908, 2907, 1, 0, 0, 0, 2909, 2910, 1, 0, 0, 0, 2910, 2908, 1, 0, 0, 0, 2910, 2911, 1, 0, 0, 0, 2911, 2913, 1, 0, 0, 0, 2912, 2908, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2914, 1, 0, 0, 0, 2914, 2921, 3, 222, 111, 0, 2915, 2917, 3, 216, 108, 0, 2916, 2915, 1, 0, 0, 0, 2917, 2918, 1, 0, 0, 0, 2918, 2916, 1, 0, 0, 0, 2918, 2919, 1, 0, 0, 0, 2919, 2921, 1, 0, 0, 0, 2920, 2912, 1, 0, 0, 0, 2920, 2916, 1, 0, 0, 0, 2921, 219, 1, 0, 0, 0, 2922, 2923, 5, 280, 0, 0, 2923, 2924, 5, 2, 0, 0, 2924, 2929, 3, 226, 113, 0, 2925, 2926, 5, 6, 0, 0, 2926, 2928, 3, 226, 113, 0, 2927, 2925, 1, 0, 0, 0, 2928, 2931, 1, 0, 0, 0, 2929, 2927, 1, 0, 0, 0, 2929, 2930, 1, 0, 0, 0, 2930, 2932, 1, 0, 0, 0, 2931, 2929, 1, 0, 0, 0, 2932, 2933, 5, 3, 0, 0, 2933, 221, 1, 0, 0, 0, 2934, 2935, 5, 280, 0, 0, 2935, 2936, 5, 2, 0, 0, 2936, 2941, 3, 224, 112, 0, 2937, 2938, 5, 6, 0, 0, 2938, 2940, 3, 224, 112, 0, 2939, 2937, 1, 0, 0, 0, 2940, 2943, 1, 0, 0, 0, 2941, 2939, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 2944, 1, 0, 0, 0, 2943, 2941, 1, 0, 0, 0, 2944, 2945, 5, 3, 0, 0, 2945, 223, 1, 0, 0, 0, 2946, 2947, 7, 34, 0, 0, 2947, 2948, 3, 226, 113, 0, 2948, 225, 1, 0, 0, 0, 2949, 2950, 3, 824, 412, 0, 2950, 2951, 3, 808, 404, 0, 2951, 227, 1, 0, 0, 0, 2952, 2953, 5, 46, 0, 0, 2953, 2955, 5, 331, 0, 0, 2954, 2956, 3, 294, 147, 0, 2955, 2954, 1, 0, 0, 0, 2955, 2956, 1, 0, 0, 0, 2956, 2957, 1, 0, 0, 0, 2957, 2960, 3, 818, 409, 0, 2958, 2959, 5, 360, 0, 0, 2959, 2961, 3, 808, 404, 0, 2960, 2958, 1, 0, 0, 0, 2960, 2961, 1, 0, 0, 0, 2961, 2963, 1, 0, 0, 0, 2962, 2964, 3, 230, 115, 0, 2963, 2962, 1, 0, 0, 0, 2963, 2964, 1, 0, 0, 0, 2964, 2965, 1, 0, 0, 0, 2965, 2966, 5, 63, 0, 0, 2966, 2967, 5, 174, 0, 0, 2967, 2968, 5, 381, 0, 0, 2968, 2970, 3, 818, 409, 0, 2969, 2971, 3, 220, 110, 0, 2970, 2969, 1, 0, 0, 0, 2970, 2971, 1, 0, 0, 0, 2971, 229, 1, 0, 0, 0, 2972, 2975, 5, 375, 0, 0, 2973, 2976, 3, 808, 404, 0, 2974, 2976, 5, 78, 0, 0, 2975, 2973, 1, 0, 0, 0, 2975, 2974, 1, 0, 0, 0, 2976, 231, 1, 0, 0, 0, 2977, 2978, 5, 138, 0, 0, 2978, 2979, 5, 331, 0, 0, 2979, 2985, 3, 818, 409, 0, 2980, 2986, 3, 222, 111, 0, 2981, 2983, 3, 230, 115, 0, 2982, 2984, 3, 222, 111, 0, 2983, 2982, 1, 0, 0, 0, 2983, 2984, 1, 0, 0, 0, 2984, 2986, 1, 0, 0, 0, 2985, 2980, 1, 0, 0, 0, 2985, 2981, 1, 0, 0, 0, 2986, 233, 1, 0, 0, 0, 2987, 2988, 5, 46, 0, 0, 2988, 2989, 5, 63, 0, 0, 2989, 2991, 5, 92, 0, 0, 2990, 2992, 3, 294, 147, 0, 2991, 2990, 1, 0, 0, 0, 2991, 2992, 1, 0, 0, 0, 2992, 2993, 1, 0, 0, 0, 2993, 2994, 3, 772, 386, 0, 2994, 2996, 5, 2, 0, 0, 2995, 2997, 3, 126, 63, 0, 2996, 2995, 1, 0, 0, 0, 2996, 2997, 1, 0, 0, 0, 2997, 2998, 1, 0, 0, 0, 2998, 3000, 5, 3, 0, 0, 2999, 3001, 3, 164, 82, 0, 3000, 2999, 1, 0, 0, 0, 3000, 3001, 1, 0, 0, 0, 3001, 3002, 1, 0, 0, 0, 3002, 3003, 5, 331, 0, 0, 3003, 3005, 3, 818, 409, 0, 3004, 3006, 3, 220, 110, 0, 3005, 3004, 1, 0, 0, 0, 3005, 3006, 1, 0, 0, 0, 3006, 3027, 1, 0, 0, 0, 3007, 3008, 5, 46, 0, 0, 3008, 3009, 5, 63, 0, 0, 3009, 3011, 5, 92, 0, 0, 3010, 3012, 3, 294, 147, 0, 3011, 3010, 1, 0, 0, 0, 3011, 3012, 1, 0, 0, 0, 3012, 3013, 1, 0, 0, 0, 3013, 3014, 3, 772, 386, 0, 3014, 3015, 5, 285, 0, 0, 3015, 3016, 5, 275, 0, 0, 3016, 3018, 3, 774, 387, 0, 3017, 3019, 3, 124, 62, 0, 3018, 3017, 1, 0, 0, 0, 3018, 3019, 1, 0, 0, 0, 3019, 3020, 1, 0, 0, 0, 3020, 3021, 3, 106, 53, 0, 3021, 3022, 5, 331, 0, 0, 3022, 3024, 3, 818, 409, 0, 3023, 3025, 3, 220, 110, 0, 3024, 3023, 1, 0, 0, 0, 3024, 3025, 1, 0, 0, 0, 3025, 3027, 1, 0, 0, 0, 3026, 2987, 1, 0, 0, 0, 3026, 3007, 1, 0, 0, 0, 3027, 235, 1, 0, 0, 0, 3028, 3029, 5, 444, 0, 0, 3029, 3030, 5, 63, 0, 0, 3030, 3031, 5, 323, 0, 0, 3031, 3041, 3, 790, 395, 0, 3032, 3033, 5, 74, 0, 0, 3033, 3036, 5, 94, 0, 0, 3034, 3036, 5, 59, 0, 0, 3035, 3032, 1, 0, 0, 0, 3035, 3034, 1, 0, 0, 0, 3036, 3037, 1, 0, 0, 0, 3037, 3038, 5, 2, 0, 0, 3038, 3039, 3, 628, 314, 0, 3039, 3040, 5, 3, 0, 0, 3040, 3042, 1, 0, 0, 0, 3041, 3035, 1, 0, 0, 0, 3041, 3042, 1, 0, 0, 0, 3042, 3043, 1, 0, 0, 0, 3043, 3044, 5, 64, 0, 0, 3044, 3045, 5, 331, 0, 0, 3045, 3046, 3, 818, 409, 0, 3046, 3047, 5, 71, 0, 0, 3047, 3049, 3, 818, 409, 0, 3048, 3050, 3, 220, 110, 0, 3049, 3048, 1, 0, 0, 0, 3049, 3050, 1, 0, 0, 0, 3050, 237, 1, 0, 0, 0, 3051, 3052, 5, 46, 0, 0, 3052, 3053, 5, 99, 0, 0, 3053, 3055, 5, 257, 0, 0, 3054, 3056, 3, 294, 147, 0, 3055, 3054, 1, 0, 0, 0, 3055, 3056, 1, 0, 0, 0, 3056, 3057, 1, 0, 0, 0, 3057, 3060, 5, 62, 0, 0, 3058, 3061, 3, 814, 407, 0, 3059, 3061, 5, 99, 0, 0, 3060, 3058, 1, 0, 0, 0, 3060, 3059, 1, 0, 0, 0, 3061, 3062, 1, 0, 0, 0, 3062, 3063, 5, 331, 0, 0, 3063, 3065, 3, 818, 409, 0, 3064, 3066, 3, 220, 110, 0, 3065, 3064, 1, 0, 0, 0, 3065, 3066, 1, 0, 0, 0, 3066, 239, 1, 0, 0, 0, 3067, 3068, 5, 138, 0, 0, 3068, 3069, 5, 99, 0, 0, 3069, 3070, 5, 257, 0, 0, 3070, 3073, 5, 62, 0, 0, 3071, 3074, 3, 814, 407, 0, 3072, 3074, 5, 99, 0, 0, 3073, 3071, 1, 0, 0, 0, 3073, 3072, 1, 0, 0, 0, 3074, 3075, 1, 0, 0, 0, 3075, 3076, 5, 331, 0, 0, 3076, 3077, 3, 818, 409, 0, 3077, 3078, 3, 222, 111, 0, 3078, 241, 1, 0, 0, 0, 3079, 3080, 5, 46, 0, 0, 3080, 3081, 5, 445, 0, 0, 3081, 3082, 3, 818, 409, 0, 3082, 3083, 5, 80, 0, 0, 3083, 3090, 3, 780, 390, 0, 3084, 3088, 5, 36, 0, 0, 3085, 3089, 5, 541, 0, 0, 3086, 3089, 5, 542, 0, 0, 3087, 3089, 3, 826, 413, 0, 3088, 3085, 1, 0, 0, 0, 3088, 3086, 1, 0, 0, 0, 3088, 3087, 1, 0, 0, 0, 3089, 3091, 1, 0, 0, 0, 3090, 3084, 1, 0, 0, 0, 3090, 3091, 1, 0, 0, 0, 3091, 3094, 1, 0, 0, 0, 3092, 3093, 5, 62, 0, 0, 3093, 3095, 7, 35, 0, 0, 3094, 3092, 1, 0, 0, 0, 3094, 3095, 1, 0, 0, 0, 3095, 3098, 1, 0, 0, 0, 3096, 3097, 5, 94, 0, 0, 3097, 3099, 3, 816, 408, 0, 3098, 3096, 1, 0, 0, 0, 3098, 3099, 1, 0, 0, 0, 3099, 3101, 1, 0, 0, 0, 3100, 3102, 3, 250, 125, 0, 3101, 3100, 1, 0, 0, 0, 3101, 3102, 1, 0, 0, 0, 3102, 3104, 1, 0, 0, 0, 3103, 3105, 3, 252, 126, 0, 3104, 3103, 1, 0, 0, 0, 3104, 3105, 1, 0, 0, 0, 3105, 243, 1, 0, 0, 0, 3106, 3107, 5, 138, 0, 0, 3107, 3108, 5, 445, 0, 0, 3108, 3109, 3, 818, 409, 0, 3109, 3110, 5, 80, 0, 0, 3110, 3113, 3, 780, 390, 0, 3111, 3112, 5, 94, 0, 0, 3112, 3114, 3, 816, 408, 0, 3113, 3111, 1, 0, 0, 0, 3113, 3114, 1, 0, 0, 0, 3114, 3116, 1, 0, 0, 0, 3115, 3117, 3, 250, 125, 0, 3116, 3115, 1, 0, 0, 0, 3116, 3117, 1, 0, 0, 0, 3117, 3119, 1, 0, 0, 0, 3118, 3120, 3, 252, 126, 0, 3119, 3118, 1, 0, 0, 0, 3119, 3120, 1, 0, 0, 0, 3120, 245, 1, 0, 0, 0, 3121, 3122, 5, 138, 0, 0, 3122, 3123, 5, 296, 0, 0, 3123, 3125, 3, 796, 398, 0, 3124, 3126, 3, 368, 184, 0, 3125, 3124, 1, 0, 0, 0, 3125, 3126, 1, 0, 0, 0, 3126, 3153, 1, 0, 0, 0, 3127, 3131, 3, 248, 124, 0, 3128, 3130, 3, 248, 124, 0, 3129, 3128, 1, 0, 0, 0, 3130, 3133, 1, 0, 0, 0, 3131, 3129, 1, 0, 0, 0, 3131, 3132, 1, 0, 0, 0, 3132, 3135, 1, 0, 0, 0, 3133, 3131, 1, 0, 0, 0, 3134, 3136, 5, 315, 0, 0, 3135, 3134, 1, 0, 0, 0, 3135, 3136, 1, 0, 0, 0, 3136, 3154, 1, 0, 0, 0, 3137, 3138, 5, 309, 0, 0, 3138, 3139, 5, 94, 0, 0, 3139, 3154, 3, 798, 399, 0, 3140, 3141, 5, 282, 0, 0, 3141, 3142, 5, 94, 0, 0, 3142, 3154, 3, 814, 407, 0, 3143, 3144, 5, 333, 0, 0, 3144, 3145, 5, 323, 0, 0, 3145, 3154, 3, 32, 16, 0, 3146, 3148, 5, 269, 0, 0, 3147, 3146, 1, 0, 0, 0, 3147, 3148, 1, 0, 0, 0, 3148, 3149, 1, 0, 0, 0, 3149, 3150, 5, 462, 0, 0, 3150, 3151, 5, 80, 0, 0, 3151, 3152, 5, 204, 0, 0, 3152, 3154, 3, 818, 409, 0, 3153, 3127, 1, 0, 0, 0, 3153, 3137, 1, 0, 0, 0, 3153, 3140, 1, 0, 0, 0, 3153, 3143, 1, 0, 0, 0, 3153, 3147, 1, 0, 0, 0, 3154, 247, 1, 0, 0, 0, 3155, 3157, 5, 205, 0, 0, 3156, 3155, 1, 0, 0, 0, 3156, 3157, 1, 0, 0, 0, 3157, 3158, 1, 0, 0, 0, 3158, 3159, 5, 327, 0, 0, 3159, 3166, 5, 243, 0, 0, 3160, 3162, 5, 205, 0, 0, 3161, 3160, 1, 0, 0, 0, 3161, 3162, 1, 0, 0, 0, 3162, 3163, 1, 0, 0, 0, 3163, 3164, 5, 327, 0, 0, 3164, 3166, 5, 181, 0, 0, 3165, 3156, 1, 0, 0, 0, 3165, 3161, 1, 0, 0, 0, 3166, 3185, 1, 0, 0, 0, 3167, 3168, 5, 333, 0, 0, 3168, 3169, 3, 818, 409, 0, 3169, 3172, 7, 36, 0, 0, 3170, 3173, 3, 818, 409, 0, 3171, 3173, 5, 53, 0, 0, 3172, 3170, 1, 0, 0, 0, 3172, 3171, 1, 0, 0, 0, 3173, 3185, 1, 0, 0, 0, 3174, 3175, 5, 333, 0, 0, 3175, 3176, 3, 818, 409, 0, 3176, 3177, 5, 64, 0, 0, 3177, 3178, 5, 434, 0, 0, 3178, 3185, 1, 0, 0, 0, 3179, 3182, 5, 313, 0, 0, 3180, 3183, 3, 818, 409, 0, 3181, 3183, 5, 30, 0, 0, 3182, 3180, 1, 0, 0, 0, 3182, 3181, 1, 0, 0, 0, 3183, 3185, 1, 0, 0, 0, 3184, 3165, 1, 0, 0, 0, 3184, 3167, 1, 0, 0, 0, 3184, 3174, 1, 0, 0, 0, 3184, 3179, 1, 0, 0, 0, 3185, 249, 1, 0, 0, 0, 3186, 3187, 5, 100, 0, 0, 3187, 3188, 5, 2, 0, 0, 3188, 3189, 3, 674, 337, 0, 3189, 3190, 5, 3, 0, 0, 3190, 251, 1, 0, 0, 0, 3191, 3192, 5, 105, 0, 0, 3192, 3193, 5, 42, 0, 0, 3193, 3194, 5, 2, 0, 0, 3194, 3195, 3, 674, 337, 0, 3195, 3196, 5, 3, 0, 0, 3196, 253, 1, 0, 0, 0, 3197, 3198, 5, 46, 0, 0, 3198, 3199, 5, 131, 0, 0, 3199, 3200, 5, 446, 0, 0, 3200, 3201, 3, 818, 409, 0, 3201, 3202, 5, 360, 0, 0, 3202, 3203, 7, 37, 0, 0, 3203, 3204, 5, 215, 0, 0, 3204, 3205, 3, 316, 158, 0, 3205, 255, 1, 0, 0, 0, 3206, 3208, 5, 46, 0, 0, 3207, 3209, 3, 366, 183, 0, 3208, 3207, 1, 0, 0, 0, 3208, 3209, 1, 0, 0, 0, 3209, 3210, 1, 0, 0, 0, 3210, 3211, 5, 357, 0, 0, 3211, 3212, 3, 818, 409, 0, 3212, 3213, 3, 258, 129, 0, 3213, 3214, 3, 260, 130, 0, 3214, 3215, 5, 80, 0, 0, 3215, 3227, 3, 774, 387, 0, 3216, 3223, 5, 447, 0, 0, 3217, 3218, 7, 38, 0, 0, 3218, 3220, 7, 39, 0, 0, 3219, 3221, 5, 36, 0, 0, 3220, 3219, 1, 0, 0, 0, 3220, 3221, 1, 0, 0, 0, 3221, 3222, 1, 0, 0, 0, 3222, 3224, 3, 818, 409, 0, 3223, 3217, 1, 0, 0, 0, 3224, 3225, 1, 0, 0, 0, 3225, 3223, 1, 0, 0, 0, 3225, 3226, 1, 0, 0, 0, 3226, 3228, 1, 0, 0, 0, 3227, 3216, 1, 0, 0, 0, 3227, 3228, 1, 0, 0, 0, 3228, 3234, 1, 0, 0, 0, 3229, 3231, 5, 62, 0, 0, 3230, 3232, 5, 192, 0, 0, 3231, 3230, 1, 0, 0, 0, 3231, 3232, 1, 0, 0, 0, 3232, 3233, 1, 0, 0, 0, 3233, 3235, 7, 40, 0, 0, 3234, 3229, 1, 0, 0, 0, 3234, 3235, 1, 0, 0, 0, 3235, 3237, 1, 0, 0, 0, 3236, 3238, 3, 264, 132, 0, 3237, 3236, 1, 0, 0, 0, 3237, 3238, 1, 0, 0, 0, 3238, 3239, 1, 0, 0, 0, 3239, 3240, 5, 202, 0, 0, 3240, 3241, 3, 266, 133, 0, 3241, 3242, 5, 2, 0, 0, 3242, 3243, 3, 268, 134, 0, 3243, 3244, 5, 3, 0, 0, 3244, 3285, 1, 0, 0, 0, 3245, 3247, 5, 46, 0, 0, 3246, 3248, 3, 366, 183, 0, 3247, 3246, 1, 0, 0, 0, 3247, 3248, 1, 0, 0, 0, 3248, 3250, 1, 0, 0, 0, 3249, 3251, 5, 45, 0, 0, 3250, 3249, 1, 0, 0, 0, 3250, 3251, 1, 0, 0, 0, 3251, 3252, 1, 0, 0, 0, 3252, 3253, 5, 357, 0, 0, 3253, 3254, 3, 818, 409, 0, 3254, 3255, 3, 258, 129, 0, 3255, 3256, 3, 260, 130, 0, 3256, 3257, 5, 80, 0, 0, 3257, 3260, 3, 774, 387, 0, 3258, 3259, 5, 64, 0, 0, 3259, 3261, 3, 780, 390, 0, 3260, 3258, 1, 0, 0, 0, 3260, 3261, 1, 0, 0, 0, 3261, 3265, 1, 0, 0, 0, 3262, 3264, 3, 272, 136, 0, 3263, 3262, 1, 0, 0, 0, 3264, 3267, 1, 0, 0, 0, 3265, 3263, 1, 0, 0, 0, 3265, 3266, 1, 0, 0, 0, 3266, 3273, 1, 0, 0, 0, 3267, 3265, 1, 0, 0, 0, 3268, 3270, 5, 62, 0, 0, 3269, 3271, 5, 192, 0, 0, 3270, 3269, 1, 0, 0, 0, 3270, 3271, 1, 0, 0, 0, 3271, 3272, 1, 0, 0, 0, 3272, 3274, 7, 40, 0, 0, 3273, 3268, 1, 0, 0, 0, 3273, 3274, 1, 0, 0, 0, 3274, 3276, 1, 0, 0, 0, 3275, 3277, 3, 264, 132, 0, 3276, 3275, 1, 0, 0, 0, 3276, 3277, 1, 0, 0, 0, 3277, 3278, 1, 0, 0, 0, 3278, 3279, 5, 202, 0, 0, 3279, 3280, 3, 266, 133, 0, 3280, 3281, 5, 2, 0, 0, 3281, 3282, 3, 268, 134, 0, 3282, 3283, 5, 3, 0, 0, 3283, 3285, 1, 0, 0, 0, 3284, 3206, 1, 0, 0, 0, 3284, 3245, 1, 0, 0, 0, 3285, 257, 1, 0, 0, 0, 3286, 3291, 5, 145, 0, 0, 3287, 3291, 5, 135, 0, 0, 3288, 3289, 5, 242, 0, 0, 3289, 3291, 5, 275, 0, 0, 3290, 3286, 1, 0, 0, 0, 3290, 3287, 1, 0, 0, 0, 3290, 3288, 1, 0, 0, 0, 3291, 259, 1, 0, 0, 0, 3292, 3297, 3, 262, 131, 0, 3293, 3294, 5, 82, 0, 0, 3294, 3296, 3, 262, 131, 0, 3295, 3293, 1, 0, 0, 0, 3296, 3299, 1, 0, 0, 0, 3297, 3295, 1, 0, 0, 0, 3297, 3298, 1, 0, 0, 0, 3298, 261, 1, 0, 0, 0, 3299, 3297, 1, 0, 0, 0, 3300, 3309, 5, 241, 0, 0, 3301, 3309, 5, 182, 0, 0, 3302, 3305, 5, 369, 0, 0, 3303, 3304, 5, 275, 0, 0, 3304, 3306, 3, 148, 74, 0, 3305, 3303, 1, 0, 0, 0, 3305, 3306, 1, 0, 0, 0, 3306, 3309, 1, 0, 0, 0, 3307, 3309, 5, 358, 0, 0, 3308, 3300, 1, 0, 0, 0, 3308, 3301, 1, 0, 0, 0, 3308, 3302, 1, 0, 0, 0, 3308, 3307, 1, 0, 0, 0, 3309, 263, 1, 0, 0, 0, 3310, 3311, 5, 102, 0, 0, 3311, 3312, 5, 2, 0, 0, 3312, 3313, 3, 674, 337, 0, 3313, 3314, 5, 3, 0, 0, 3314, 265, 1, 0, 0, 0, 3315, 3316, 5, 211, 0, 0, 3316, 3320, 3, 806, 403, 0, 3317, 3318, 5, 296, 0, 0, 3318, 3320, 3, 796, 398, 0, 3319, 3315, 1, 0, 0, 0, 3319, 3317, 1, 0, 0, 0, 3320, 267, 1, 0, 0, 0, 3321, 3324, 3, 270, 135, 0, 3322, 3324, 1, 0, 0, 0, 3323, 3321, 1, 0, 0, 0, 3323, 3322, 1, 0, 0, 0, 3324, 3329, 1, 0, 0, 0, 3325, 3326, 5, 6, 0, 0, 3326, 3328, 3, 270, 135, 0, 3327, 3325, 1, 0, 0, 0, 3328, 3331, 1, 0, 0, 0, 3329, 3327, 1, 0, 0, 0, 3329, 3330, 1, 0, 0, 0, 3330, 269, 1, 0, 0, 0, 3331, 3329, 1, 0, 0, 0, 3332, 3337, 5, 571, 0, 0, 3333, 3337, 5, 573, 0, 0, 3334, 3337, 3, 808, 404, 0, 3335, 3337, 3, 824, 412, 0, 3336, 3332, 1, 0, 0, 0, 3336, 3333, 1, 0, 0, 0, 3336, 3334, 1, 0, 0, 0, 3336, 3335, 1, 0, 0, 0, 3337, 271, 1, 0, 0, 0, 3338, 3340, 5, 77, 0, 0, 3339, 3338, 1, 0, 0, 0, 3339, 3340, 1, 0, 0, 0, 3340, 3341, 1, 0, 0, 0, 3341, 3349, 5, 54, 0, 0, 3342, 3343, 5, 69, 0, 0, 3343, 3349, 7, 9, 0, 0, 3344, 3345, 5, 77, 0, 0, 3345, 3349, 5, 371, 0, 0, 3346, 3347, 5, 269, 0, 0, 3347, 3349, 5, 228, 0, 0, 3348, 3339, 1, 0, 0, 0, 3348, 3342, 1, 0, 0, 0, 3348, 3344, 1, 0, 0, 0, 3348, 3346, 1, 0, 0, 0, 3349, 273, 1, 0, 0, 0, 3350, 3351, 5, 46, 0, 0, 3351, 3352, 5, 198, 0, 0, 3352, 3353, 5, 357, 0, 0, 3353, 3354, 3, 818, 409, 0, 3354, 3355, 5, 80, 0, 0, 3355, 3365, 3, 824, 412, 0, 3356, 3357, 5, 102, 0, 0, 3357, 3362, 3, 276, 138, 0, 3358, 3359, 5, 33, 0, 0, 3359, 3361, 3, 276, 138, 0, 3360, 3358, 1, 0, 0, 0, 3361, 3364, 1, 0, 0, 0, 3362, 3360, 1, 0, 0, 0, 3362, 3363, 1, 0, 0, 0, 3363, 3366, 1, 0, 0, 0, 3364, 3362, 1, 0, 0, 0, 3365, 3356, 1, 0, 0, 0, 3365, 3366, 1, 0, 0, 0, 3366, 3367, 1, 0, 0, 0, 3367, 3368, 5, 202, 0, 0, 3368, 3369, 3, 266, 133, 0, 3369, 3370, 5, 2, 0, 0, 3370, 3371, 5, 3, 0, 0, 3371, 275, 1, 0, 0, 0, 3372, 3373, 3, 818, 409, 0, 3373, 3374, 5, 68, 0, 0, 3374, 3375, 5, 2, 0, 0, 3375, 3379, 3, 808, 404, 0, 3376, 3378, 3, 462, 231, 0, 3377, 3376, 1, 0, 0, 0, 3378, 3381, 1, 0, 0, 0, 3379, 3377, 1, 0, 0, 0, 3379, 3380, 1, 0, 0, 0, 3380, 3382, 1, 0, 0, 0, 3381, 3379, 1, 0, 0, 0, 3382, 3383, 5, 3, 0, 0, 3383, 277, 1, 0, 0, 0, 3384, 3385, 5, 138, 0, 0, 3385, 3386, 5, 198, 0, 0, 3386, 3387, 5, 357, 0, 0, 3387, 3393, 3, 818, 409, 0, 3388, 3390, 5, 193, 0, 0, 3389, 3391, 7, 14, 0, 0, 3390, 3389, 1, 0, 0, 0, 3390, 3391, 1, 0, 0, 0, 3391, 3394, 1, 0, 0, 0, 3392, 3394, 5, 186, 0, 0, 3393, 3388, 1, 0, 0, 0, 3393, 3392, 1, 0, 0, 0, 3394, 279, 1, 0, 0, 0, 3395, 3396, 5, 46, 0, 0, 3396, 3397, 5, 140, 0, 0, 3397, 3398, 3, 316, 158, 0, 3398, 3399, 5, 42, 0, 0, 3399, 3400, 5, 2, 0, 0, 3400, 3401, 3, 674, 337, 0, 3401, 3405, 5, 3, 0, 0, 3402, 3404, 3, 272, 136, 0, 3403, 3402, 1, 0, 0, 0, 3404, 3407, 1, 0, 0, 0, 3405, 3403, 1, 0, 0, 0, 3405, 3406, 1, 0, 0, 0, 3406, 281, 1, 0, 0, 0, 3407, 3405, 1, 0, 0, 0, 3408, 3410, 5, 46, 0, 0, 3409, 3411, 3, 366, 183, 0, 3410, 3409, 1, 0, 0, 0, 3410, 3411, 1, 0, 0, 0, 3411, 3412, 1, 0, 0, 0, 3412, 3413, 5, 136, 0, 0, 3413, 3428, 3, 806, 403, 0, 3414, 3415, 3, 392, 196, 0, 3415, 3416, 3, 284, 142, 0, 3416, 3429, 1, 0, 0, 0, 3417, 3418, 5, 2, 0, 0, 3418, 3423, 3, 290, 145, 0, 3419, 3420, 5, 6, 0, 0, 3420, 3422, 3, 290, 145, 0, 3421, 3419, 1, 0, 0, 0, 3422, 3425, 1, 0, 0, 0, 3423, 3421, 1, 0, 0, 0, 3423, 3424, 1, 0, 0, 0, 3424, 3426, 1, 0, 0, 0, 3425, 3423, 1, 0, 0, 0, 3426, 3427, 5, 3, 0, 0, 3427, 3429, 1, 0, 0, 0, 3428, 3414, 1, 0, 0, 0, 3428, 3417, 1, 0, 0, 0, 3429, 3487, 1, 0, 0, 0, 3430, 3431, 5, 46, 0, 0, 3431, 3432, 5, 278, 0, 0, 3432, 3433, 3, 414, 207, 0, 3433, 3434, 3, 284, 142, 0, 3434, 3487, 1, 0, 0, 0, 3435, 3436, 5, 46, 0, 0, 3436, 3437, 5, 360, 0, 0, 3437, 3438, 3, 316, 158, 0, 3438, 3456, 5, 36, 0, 0, 3439, 3441, 5, 2, 0, 0, 3440, 3442, 3, 642, 321, 0, 3441, 3440, 1, 0, 0, 0, 3441, 3442, 1, 0, 0, 0, 3442, 3443, 1, 0, 0, 0, 3443, 3457, 5, 3, 0, 0, 3444, 3445, 5, 196, 0, 0, 3445, 3453, 5, 2, 0, 0, 3446, 3450, 3, 808, 404, 0, 3447, 3449, 3, 462, 231, 0, 3448, 3447, 1, 0, 0, 0, 3449, 3452, 1, 0, 0, 0, 3450, 3448, 1, 0, 0, 0, 3450, 3451, 1, 0, 0, 0, 3451, 3454, 1, 0, 0, 0, 3452, 3450, 1, 0, 0, 0, 3453, 3446, 1, 0, 0, 0, 3453, 3454, 1, 0, 0, 0, 3454, 3455, 1, 0, 0, 0, 3455, 3457, 5, 3, 0, 0, 3456, 3439, 1, 0, 0, 0, 3456, 3444, 1, 0, 0, 0, 3457, 3487, 1, 0, 0, 0, 3458, 3459, 5, 46, 0, 0, 3459, 3460, 5, 360, 0, 0, 3460, 3466, 3, 316, 158, 0, 3461, 3462, 5, 36, 0, 0, 3462, 3464, 5, 299, 0, 0, 3463, 3461, 1, 0, 0, 0, 3463, 3464, 1, 0, 0, 0, 3464, 3465, 1, 0, 0, 0, 3465, 3467, 3, 284, 142, 0, 3466, 3463, 1, 0, 0, 0, 3466, 3467, 1, 0, 0, 0, 3467, 3487, 1, 0, 0, 0, 3468, 3469, 5, 46, 0, 0, 3469, 3470, 5, 355, 0, 0, 3470, 3471, 5, 325, 0, 0, 3471, 3472, 7, 41, 0, 0, 3472, 3473, 3, 316, 158, 0, 3473, 3474, 3, 284, 142, 0, 3474, 3487, 1, 0, 0, 0, 3475, 3476, 5, 46, 0, 0, 3476, 3478, 5, 108, 0, 0, 3477, 3479, 3, 294, 147, 0, 3478, 3477, 1, 0, 0, 0, 3478, 3479, 1, 0, 0, 0, 3479, 3480, 1, 0, 0, 0, 3480, 3484, 3, 316, 158, 0, 3481, 3485, 3, 284, 142, 0, 3482, 3483, 5, 64, 0, 0, 3483, 3485, 3, 316, 158, 0, 3484, 3481, 1, 0, 0, 0, 3484, 3482, 1, 0, 0, 0, 3485, 3487, 1, 0, 0, 0, 3486, 3408, 1, 0, 0, 0, 3486, 3430, 1, 0, 0, 0, 3486, 3435, 1, 0, 0, 0, 3486, 3458, 1, 0, 0, 0, 3486, 3468, 1, 0, 0, 0, 3486, 3475, 1, 0, 0, 0, 3487, 283, 1, 0, 0, 0, 3488, 3489, 5, 2, 0, 0, 3489, 3494, 3, 286, 143, 0, 3490, 3491, 5, 6, 0, 0, 3491, 3493, 3, 286, 143, 0, 3492, 3490, 1, 0, 0, 0, 3493, 3496, 1, 0, 0, 0, 3494, 3492, 1, 0, 0, 0, 3494, 3495, 1, 0, 0, 0, 3495, 3497, 1, 0, 0, 0, 3496, 3494, 1, 0, 0, 0, 3497, 3498, 5, 3, 0, 0, 3498, 285, 1, 0, 0, 0, 3499, 3502, 3, 824, 412, 0, 3500, 3501, 5, 10, 0, 0, 3501, 3503, 3, 288, 144, 0, 3502, 3500, 1, 0, 0, 0, 3502, 3503, 1, 0, 0, 0, 3503, 287, 1, 0, 0, 0, 3504, 3511, 3, 388, 194, 0, 3505, 3511, 3, 834, 417, 0, 3506, 3511, 3, 726, 363, 0, 3507, 3511, 3, 202, 101, 0, 3508, 3511, 3, 808, 404, 0, 3509, 3511, 5, 407, 0, 0, 3510, 3504, 1, 0, 0, 0, 3510, 3505, 1, 0, 0, 0, 3510, 3506, 1, 0, 0, 0, 3510, 3507, 1, 0, 0, 0, 3510, 3508, 1, 0, 0, 0, 3510, 3509, 1, 0, 0, 0, 3511, 289, 1, 0, 0, 0, 3512, 3513, 3, 826, 413, 0, 3513, 3514, 5, 10, 0, 0, 3514, 3515, 3, 288, 144, 0, 3515, 291, 1, 0, 0, 0, 3516, 3517, 5, 138, 0, 0, 3517, 3518, 5, 360, 0, 0, 3518, 3519, 3, 316, 158, 0, 3519, 3520, 5, 133, 0, 0, 3520, 3522, 5, 450, 0, 0, 3521, 3523, 3, 294, 147, 0, 3522, 3521, 1, 0, 0, 0, 3522, 3523, 1, 0, 0, 0, 3523, 3524, 1, 0, 0, 0, 3524, 3527, 3, 808, 404, 0, 3525, 3526, 7, 42, 0, 0, 3526, 3528, 3, 808, 404, 0, 3527, 3525, 1, 0, 0, 0, 3527, 3528, 1, 0, 0, 0, 3528, 3539, 1, 0, 0, 0, 3529, 3530, 5, 138, 0, 0, 3530, 3531, 5, 360, 0, 0, 3531, 3532, 3, 316, 158, 0, 3532, 3533, 5, 309, 0, 0, 3533, 3534, 5, 450, 0, 0, 3534, 3535, 3, 808, 404, 0, 3535, 3536, 5, 94, 0, 0, 3536, 3537, 3, 808, 404, 0, 3537, 3539, 1, 0, 0, 0, 3538, 3516, 1, 0, 0, 0, 3538, 3529, 1, 0, 0, 0, 3539, 293, 1, 0, 0, 0, 3540, 3541, 5, 220, 0, 0, 3541, 3542, 5, 77, 0, 0, 3542, 3543, 5, 396, 0, 0, 3543, 295, 1, 0, 0, 0, 3544, 3545, 5, 46, 0, 0, 3545, 3546, 5, 278, 0, 0, 3546, 3547, 5, 156, 0, 0, 3547, 3549, 3, 316, 158, 0, 3548, 3550, 5, 53, 0, 0, 3549, 3548, 1, 0, 0, 0, 3549, 3550, 1, 0, 0, 0, 3550, 3551, 1, 0, 0, 0, 3551, 3552, 5, 62, 0, 0, 3552, 3553, 5, 360, 0, 0, 3553, 3554, 3, 652, 326, 0, 3554, 3557, 3, 170, 85, 0, 3555, 3556, 5, 206, 0, 0, 3556, 3558, 3, 316, 158, 0, 3557, 3555, 1, 0, 0, 0, 3557, 3558, 1, 0, 0, 0, 3558, 3559, 1, 0, 0, 0, 3559, 3560, 5, 36, 0, 0, 3560, 3565, 3, 298, 149, 0, 3561, 3562, 5, 6, 0, 0, 3562, 3564, 3, 298, 149, 0, 3563, 3561, 1, 0, 0, 0, 3564, 3567, 1, 0, 0, 0, 3565, 3563, 1, 0, 0, 0, 3565, 3566, 1, 0, 0, 0, 3566, 297, 1, 0, 0, 0, 3567, 3565, 1, 0, 0, 0, 3568, 3569, 5, 278, 0, 0, 3569, 3570, 5, 571, 0, 0, 3570, 3572, 3, 414, 207, 0, 3571, 3573, 3, 412, 206, 0, 3572, 3571, 1, 0, 0, 0, 3572, 3573, 1, 0, 0, 0, 3573, 3581, 1, 0, 0, 0, 3574, 3579, 5, 62, 0, 0, 3575, 3580, 5, 325, 0, 0, 3576, 3577, 5, 83, 0, 0, 3577, 3578, 5, 147, 0, 0, 3578, 3580, 3, 316, 158, 0, 3579, 3575, 1, 0, 0, 0, 3579, 3576, 1, 0, 0, 0, 3580, 3582, 1, 0, 0, 0, 3581, 3574, 1, 0, 0, 0, 3581, 3582, 1, 0, 0, 0, 3582, 3584, 1, 0, 0, 0, 3583, 3585, 5, 302, 0, 0, 3584, 3583, 1, 0, 0, 0, 3584, 3585, 1, 0, 0, 0, 3585, 3595, 1, 0, 0, 0, 3586, 3587, 5, 211, 0, 0, 3587, 3589, 5, 571, 0, 0, 3588, 3590, 3, 528, 264, 0, 3589, 3588, 1, 0, 0, 0, 3589, 3590, 1, 0, 0, 0, 3590, 3591, 1, 0, 0, 0, 3591, 3595, 3, 382, 191, 0, 3592, 3593, 5, 345, 0, 0, 3593, 3595, 3, 652, 326, 0, 3594, 3568, 1, 0, 0, 0, 3594, 3586, 1, 0, 0, 0, 3594, 3592, 1, 0, 0, 0, 3595, 299, 1, 0, 0, 0, 3596, 3597, 5, 46, 0, 0, 3597, 3598, 5, 278, 0, 0, 3598, 3599, 5, 206, 0, 0, 3599, 3600, 3, 316, 158, 0, 3600, 3601, 3, 170, 85, 0, 3601, 301, 1, 0, 0, 0, 3602, 3603, 5, 138, 0, 0, 3603, 3604, 5, 278, 0, 0, 3604, 3605, 5, 206, 0, 0, 3605, 3606, 3, 316, 158, 0, 3606, 3625, 3, 170, 85, 0, 3607, 3608, 5, 133, 0, 0, 3608, 3613, 3, 298, 149, 0, 3609, 3610, 5, 6, 0, 0, 3610, 3612, 3, 298, 149, 0, 3611, 3609, 1, 0, 0, 0, 3612, 3615, 1, 0, 0, 0, 3613, 3611, 1, 0, 0, 0, 3613, 3614, 1, 0, 0, 0, 3614, 3626, 1, 0, 0, 0, 3615, 3613, 1, 0, 0, 0, 3616, 3617, 5, 191, 0, 0, 3617, 3622, 3, 304, 152, 0, 3618, 3619, 5, 6, 0, 0, 3619, 3621, 3, 304, 152, 0, 3620, 3618, 1, 0, 0, 0, 3621, 3624, 1, 0, 0, 0, 3622, 3620, 1, 0, 0, 0, 3622, 3623, 1, 0, 0, 0, 3623, 3626, 1, 0, 0, 0, 3624, 3622, 1, 0, 0, 0, 3625, 3607, 1, 0, 0, 0, 3625, 3616, 1, 0, 0, 0, 3626, 303, 1, 0, 0, 0, 3627, 3628, 7, 43, 0, 0, 3628, 3629, 5, 571, 0, 0, 3629, 3630, 3, 528, 264, 0, 3630, 305, 1, 0, 0, 0, 3631, 3632, 5, 301, 0, 0, 3632, 3633, 5, 281, 0, 0, 3633, 3634, 5, 147, 0, 0, 3634, 3635, 3, 816, 408, 0, 3635, 3636, 5, 94, 0, 0, 3636, 3637, 3, 814, 407, 0, 3637, 307, 1, 0, 0, 0, 3638, 3661, 5, 191, 0, 0, 3639, 3662, 5, 328, 0, 0, 3640, 3662, 5, 226, 0, 0, 3641, 3662, 5, 108, 0, 0, 3642, 3662, 5, 168, 0, 0, 3643, 3662, 5, 342, 0, 0, 3644, 3662, 5, 452, 0, 0, 3645, 3662, 5, 331, 0, 0, 3646, 3647, 5, 131, 0, 0, 3647, 3662, 5, 446, 0, 0, 3648, 3649, 5, 198, 0, 0, 3649, 3662, 5, 357, 0, 0, 3650, 3662, 5, 204, 0, 0, 3651, 3653, 5, 295, 0, 0, 3652, 3651, 1, 0, 0, 0, 3652, 3653, 1, 0, 0, 0, 3653, 3654, 1, 0, 0, 0, 3654, 3662, 5, 247, 0, 0, 3655, 3656, 5, 63, 0, 0, 3656, 3657, 5, 174, 0, 0, 3657, 3662, 5, 381, 0, 0, 3658, 3659, 5, 355, 0, 0, 3659, 3660, 5, 325, 0, 0, 3660, 3662, 7, 41, 0, 0, 3661, 3639, 1, 0, 0, 0, 3661, 3640, 1, 0, 0, 0, 3661, 3641, 1, 0, 0, 0, 3661, 3642, 1, 0, 0, 0, 3661, 3643, 1, 0, 0, 0, 3661, 3644, 1, 0, 0, 0, 3661, 3645, 1, 0, 0, 0, 3661, 3646, 1, 0, 0, 0, 3661, 3648, 1, 0, 0, 0, 3661, 3650, 1, 0, 0, 0, 3661, 3652, 1, 0, 0, 0, 3661, 3655, 1, 0, 0, 0, 3661, 3658, 1, 0, 0, 0, 3662, 3664, 1, 0, 0, 0, 3663, 3665, 3, 422, 211, 0, 3664, 3663, 1, 0, 0, 0, 3664, 3665, 1, 0, 0, 0, 3665, 3666, 1, 0, 0, 0, 3666, 3668, 3, 784, 392, 0, 3667, 3669, 3, 96, 48, 0, 3668, 3667, 1, 0, 0, 0, 3668, 3669, 1, 0, 0, 0, 3669, 3846, 1, 0, 0, 0, 3670, 3672, 5, 191, 0, 0, 3671, 3673, 5, 259, 0, 0, 3672, 3671, 1, 0, 0, 0, 3672, 3673, 1, 0, 0, 0, 3673, 3674, 1, 0, 0, 0, 3674, 3676, 5, 376, 0, 0, 3675, 3677, 3, 422, 211, 0, 3676, 3675, 1, 0, 0, 0, 3676, 3677, 1, 0, 0, 0, 3677, 3678, 1, 0, 0, 0, 3678, 3683, 3, 778, 389, 0, 3679, 3680, 5, 6, 0, 0, 3680, 3682, 3, 778, 389, 0, 3681, 3679, 1, 0, 0, 0, 3682, 3685, 1, 0, 0, 0, 3683, 3681, 1, 0, 0, 0, 3683, 3684, 1, 0, 0, 0, 3684, 3687, 1, 0, 0, 0, 3685, 3683, 1, 0, 0, 0, 3686, 3688, 3, 96, 48, 0, 3687, 3686, 1, 0, 0, 0, 3687, 3688, 1, 0, 0, 0, 3688, 3846, 1, 0, 0, 0, 3689, 3691, 5, 191, 0, 0, 3690, 3692, 5, 63, 0, 0, 3691, 3690, 1, 0, 0, 0, 3691, 3692, 1, 0, 0, 0, 3692, 3693, 1, 0, 0, 0, 3693, 3695, 5, 92, 0, 0, 3694, 3696, 3, 422, 211, 0, 3695, 3694, 1, 0, 0, 0, 3695, 3696, 1, 0, 0, 0, 3696, 3697, 1, 0, 0, 0, 3697, 3699, 3, 762, 381, 0, 3698, 3700, 3, 96, 48, 0, 3699, 3698, 1, 0, 0, 0, 3699, 3700, 1, 0, 0, 0, 3700, 3846, 1, 0, 0, 0, 3701, 3702, 5, 191, 0, 0, 3702, 3704, 5, 323, 0, 0, 3703, 3705, 3, 422, 211, 0, 3704, 3703, 1, 0, 0, 0, 3704, 3705, 1, 0, 0, 0, 3705, 3706, 1, 0, 0, 0, 3706, 3708, 3, 764, 382, 0, 3707, 3709, 3, 96, 48, 0, 3708, 3707, 1, 0, 0, 0, 3708, 3709, 1, 0, 0, 0, 3709, 3846, 1, 0, 0, 0, 3710, 3711, 5, 191, 0, 0, 3711, 3713, 7, 44, 0, 0, 3712, 3714, 3, 422, 211, 0, 3713, 3712, 1, 0, 0, 0, 3713, 3714, 1, 0, 0, 0, 3714, 3715, 1, 0, 0, 0, 3715, 3716, 3, 818, 409, 0, 3716, 3717, 5, 80, 0, 0, 3717, 3719, 3, 316, 158, 0, 3718, 3720, 3, 96, 48, 0, 3719, 3718, 1, 0, 0, 0, 3719, 3720, 1, 0, 0, 0, 3720, 3846, 1, 0, 0, 0, 3721, 3722, 5, 191, 0, 0, 3722, 3724, 7, 32, 0, 0, 3723, 3725, 3, 422, 211, 0, 3724, 3723, 1, 0, 0, 0, 3724, 3725, 1, 0, 0, 0, 3725, 3726, 1, 0, 0, 0, 3726, 3731, 3, 652, 326, 0, 3727, 3728, 5, 6, 0, 0, 3728, 3730, 3, 652, 326, 0, 3729, 3727, 1, 0, 0, 0, 3730, 3733, 1, 0, 0, 0, 3731, 3729, 1, 0, 0, 0, 3731, 3732, 1, 0, 0, 0, 3732, 3735, 1, 0, 0, 0, 3733, 3731, 1, 0, 0, 0, 3734, 3736, 3, 96, 48, 0, 3735, 3734, 1, 0, 0, 0, 3735, 3736, 1, 0, 0, 0, 3736, 3846, 1, 0, 0, 0, 3737, 3738, 5, 191, 0, 0, 3738, 3739, 5, 226, 0, 0, 3739, 3741, 5, 109, 0, 0, 3740, 3742, 3, 422, 211, 0, 3741, 3740, 1, 0, 0, 0, 3741, 3742, 1, 0, 0, 0, 3742, 3743, 1, 0, 0, 0, 3743, 3745, 3, 314, 157, 0, 3744, 3746, 3, 96, 48, 0, 3745, 3744, 1, 0, 0, 0, 3745, 3746, 1, 0, 0, 0, 3746, 3846, 1, 0, 0, 0, 3747, 3748, 5, 191, 0, 0, 3748, 3750, 5, 41, 0, 0, 3749, 3751, 3, 422, 211, 0, 3750, 3749, 1, 0, 0, 0, 3750, 3751, 1, 0, 0, 0, 3751, 3752, 1, 0, 0, 0, 3752, 3753, 5, 2, 0, 0, 3753, 3754, 3, 652, 326, 0, 3754, 3755, 5, 36, 0, 0, 3755, 3756, 3, 652, 326, 0, 3756, 3758, 5, 3, 0, 0, 3757, 3759, 3, 96, 48, 0, 3758, 3757, 1, 0, 0, 0, 3758, 3759, 1, 0, 0, 0, 3759, 3846, 1, 0, 0, 0, 3760, 3761, 5, 191, 0, 0, 3761, 3762, 5, 278, 0, 0, 3762, 3764, 7, 31, 0, 0, 3763, 3765, 3, 422, 211, 0, 3764, 3763, 1, 0, 0, 0, 3764, 3765, 1, 0, 0, 0, 3765, 3766, 1, 0, 0, 0, 3766, 3767, 3, 316, 158, 0, 3767, 3769, 3, 170, 85, 0, 3768, 3770, 3, 96, 48, 0, 3769, 3768, 1, 0, 0, 0, 3769, 3770, 1, 0, 0, 0, 3770, 3846, 1, 0, 0, 0, 3771, 3772, 5, 191, 0, 0, 3772, 3773, 5, 281, 0, 0, 3773, 3774, 5, 147, 0, 0, 3774, 3776, 3, 816, 408, 0, 3775, 3777, 3, 96, 48, 0, 3776, 3775, 1, 0, 0, 0, 3776, 3777, 1, 0, 0, 0, 3777, 3846, 1, 0, 0, 0, 3778, 3779, 5, 191, 0, 0, 3779, 3781, 5, 451, 0, 0, 3780, 3782, 3, 422, 211, 0, 3781, 3780, 1, 0, 0, 0, 3781, 3782, 1, 0, 0, 0, 3782, 3783, 1, 0, 0, 0, 3783, 3785, 3, 818, 409, 0, 3784, 3786, 3, 96, 48, 0, 3785, 3784, 1, 0, 0, 0, 3785, 3786, 1, 0, 0, 0, 3786, 3846, 1, 0, 0, 0, 3787, 3788, 5, 191, 0, 0, 3788, 3790, 5, 351, 0, 0, 3789, 3791, 3, 422, 211, 0, 3790, 3789, 1, 0, 0, 0, 3790, 3791, 1, 0, 0, 0, 3791, 3792, 1, 0, 0, 0, 3792, 3846, 3, 770, 385, 0, 3793, 3794, 5, 191, 0, 0, 3794, 3796, 5, 443, 0, 0, 3795, 3797, 3, 422, 211, 0, 3796, 3795, 1, 0, 0, 0, 3796, 3797, 1, 0, 0, 0, 3797, 3798, 1, 0, 0, 0, 3798, 3799, 5, 62, 0, 0, 3799, 3800, 3, 652, 326, 0, 3800, 3801, 5, 247, 0, 0, 3801, 3803, 3, 818, 409, 0, 3802, 3804, 3, 96, 48, 0, 3803, 3802, 1, 0, 0, 0, 3803, 3804, 1, 0, 0, 0, 3804, 3846, 1, 0, 0, 0, 3805, 3806, 5, 191, 0, 0, 3806, 3808, 7, 45, 0, 0, 3807, 3809, 3, 422, 211, 0, 3808, 3807, 1, 0, 0, 0, 3808, 3809, 1, 0, 0, 0, 3809, 3810, 1, 0, 0, 0, 3810, 3846, 3, 816, 408, 0, 3811, 3812, 5, 191, 0, 0, 3812, 3813, 5, 99, 0, 0, 3813, 3815, 5, 257, 0, 0, 3814, 3816, 3, 422, 211, 0, 3815, 3814, 1, 0, 0, 0, 3815, 3816, 1, 0, 0, 0, 3816, 3817, 1, 0, 0, 0, 3817, 3820, 5, 62, 0, 0, 3818, 3821, 3, 814, 407, 0, 3819, 3821, 5, 99, 0, 0, 3820, 3818, 1, 0, 0, 0, 3820, 3819, 1, 0, 0, 0, 3821, 3822, 1, 0, 0, 0, 3822, 3823, 5, 331, 0, 0, 3823, 3846, 3, 818, 409, 0, 3824, 3825, 5, 191, 0, 0, 3825, 3827, 5, 175, 0, 0, 3826, 3828, 3, 422, 211, 0, 3827, 3826, 1, 0, 0, 0, 3827, 3828, 1, 0, 0, 0, 3828, 3829, 1, 0, 0, 0, 3829, 3843, 3, 788, 394, 0, 3830, 3832, 5, 105, 0, 0, 3831, 3830, 1, 0, 0, 0, 3831, 3832, 1, 0, 0, 0, 3832, 3833, 1, 0, 0, 0, 3833, 3834, 5, 2, 0, 0, 3834, 3839, 5, 209, 0, 0, 3835, 3836, 5, 6, 0, 0, 3836, 3838, 5, 209, 0, 0, 3837, 3835, 1, 0, 0, 0, 3838, 3841, 1, 0, 0, 0, 3839, 3837, 1, 0, 0, 0, 3839, 3840, 1, 0, 0, 0, 3840, 3842, 1, 0, 0, 0, 3841, 3839, 1, 0, 0, 0, 3842, 3844, 5, 3, 0, 0, 3843, 3831, 1, 0, 0, 0, 3843, 3844, 1, 0, 0, 0, 3844, 3846, 1, 0, 0, 0, 3845, 3638, 1, 0, 0, 0, 3845, 3670, 1, 0, 0, 0, 3845, 3689, 1, 0, 0, 0, 3845, 3701, 1, 0, 0, 0, 3845, 3710, 1, 0, 0, 0, 3845, 3721, 1, 0, 0, 0, 3845, 3737, 1, 0, 0, 0, 3845, 3747, 1, 0, 0, 0, 3845, 3760, 1, 0, 0, 0, 3845, 3771, 1, 0, 0, 0, 3845, 3778, 1, 0, 0, 0, 3845, 3787, 1, 0, 0, 0, 3845, 3793, 1, 0, 0, 0, 3845, 3805, 1, 0, 0, 0, 3845, 3811, 1, 0, 0, 0, 3845, 3824, 1, 0, 0, 0, 3846, 309, 1, 0, 0, 0, 3847, 3849, 5, 63, 0, 0, 3848, 3847, 1, 0, 0, 0, 3848, 3849, 1, 0, 0, 0, 3849, 3850, 1, 0, 0, 0, 3850, 3851, 5, 92, 0, 0, 3851, 3864, 3, 774, 387, 0, 3852, 3854, 5, 259, 0, 0, 3853, 3852, 1, 0, 0, 0, 3853, 3854, 1, 0, 0, 0, 3854, 3855, 1, 0, 0, 0, 3855, 3856, 5, 376, 0, 0, 3856, 3864, 3, 778, 389, 0, 3857, 3858, 7, 46, 0, 0, 3858, 3864, 3, 316, 158, 0, 3859, 3860, 5, 355, 0, 0, 3860, 3861, 5, 325, 0, 0, 3861, 3862, 7, 41, 0, 0, 3862, 3864, 3, 316, 158, 0, 3863, 3848, 1, 0, 0, 0, 3863, 3853, 1, 0, 0, 0, 3863, 3857, 1, 0, 0, 0, 3863, 3859, 1, 0, 0, 0, 3864, 311, 1, 0, 0, 0, 3865, 3866, 5, 198, 0, 0, 3866, 3882, 5, 357, 0, 0, 3867, 3868, 5, 131, 0, 0, 3868, 3882, 5, 446, 0, 0, 3869, 3882, 5, 204, 0, 0, 3870, 3882, 5, 452, 0, 0, 3871, 3882, 5, 331, 0, 0, 3872, 3882, 5, 318, 0, 0, 3873, 3882, 5, 451, 0, 0, 3874, 3875, 5, 63, 0, 0, 3875, 3876, 5, 174, 0, 0, 3876, 3882, 5, 381, 0, 0, 3877, 3879, 5, 295, 0, 0, 3878, 3877, 1, 0, 0, 0, 3878, 3879, 1, 0, 0, 0, 3879, 3880, 1, 0, 0, 0, 3880, 3882, 5, 247, 0, 0, 3881, 3865, 1, 0, 0, 0, 3881, 3867, 1, 0, 0, 0, 3881, 3869, 1, 0, 0, 0, 3881, 3870, 1, 0, 0, 0, 3881, 3871, 1, 0, 0, 0, 3881, 3872, 1, 0, 0, 0, 3881, 3873, 1, 0, 0, 0, 3881, 3874, 1, 0, 0, 0, 3881, 3878, 1, 0, 0, 0, 3882, 3883, 1, 0, 0, 0, 3883, 3890, 3, 818, 409, 0, 3884, 3885, 5, 323, 0, 0, 3885, 3890, 3, 790, 395, 0, 3886, 3887, 5, 175, 0, 0, 3887, 3890, 3, 788, 394, 0, 3888, 3890, 3, 176, 88, 0, 3889, 3881, 1, 0, 0, 0, 3889, 3884, 1, 0, 0, 0, 3889, 3886, 1, 0, 0, 0, 3889, 3888, 1, 0, 0, 0, 3890, 313, 1, 0, 0, 0, 3891, 3896, 3, 316, 158, 0, 3892, 3893, 5, 6, 0, 0, 3893, 3895, 3, 316, 158, 0, 3894, 3892, 1, 0, 0, 0, 3895, 3898, 1, 0, 0, 0, 3896, 3894, 1, 0, 0, 0, 3896, 3897, 1, 0, 0, 0, 3897, 315, 1, 0, 0, 0, 3898, 3896, 1, 0, 0, 0, 3899, 3901, 3, 818, 409, 0, 3900, 3902, 3, 318, 159, 0, 3901, 3900, 1, 0, 0, 0, 3901, 3902, 1, 0, 0, 0, 3902, 317, 1, 0, 0, 0, 3903, 3904, 5, 11, 0, 0, 3904, 3906, 3, 824, 412, 0, 3905, 3903, 1, 0, 0, 0, 3906, 3907, 1, 0, 0, 0, 3907, 3905, 1, 0, 0, 0, 3907, 3908, 1, 0, 0, 0, 3908, 319, 1, 0, 0, 0, 3909, 3911, 5, 358, 0, 0, 3910, 3912, 5, 92, 0, 0, 3911, 3910, 1, 0, 0, 0, 3911, 3912, 1, 0, 0, 0, 3912, 3913, 1, 0, 0, 0, 3913, 3918, 3, 322, 161, 0, 3914, 3915, 5, 6, 0, 0, 3915, 3917, 3, 322, 161, 0, 3916, 3914, 1, 0, 0, 0, 3917, 3920, 1, 0, 0, 0, 3918, 3916, 1, 0, 0, 0, 3918, 3919, 1, 0, 0, 0, 3919, 3923, 1, 0, 0, 0, 3920, 3918, 1, 0, 0, 0, 3921, 3922, 7, 47, 0, 0, 3922, 3924, 5, 219, 0, 0, 3923, 3921, 1, 0, 0, 0, 3923, 3924, 1, 0, 0, 0, 3924, 3926, 1, 0, 0, 0, 3925, 3927, 3, 96, 48, 0, 3926, 3925, 1, 0, 0, 0, 3926, 3927, 1, 0, 0, 0, 3927, 321, 1, 0, 0, 0, 3928, 3930, 5, 81, 0, 0, 3929, 3928, 1, 0, 0, 0, 3929, 3930, 1, 0, 0, 0, 3930, 3931, 1, 0, 0, 0, 3931, 3933, 3, 774, 387, 0, 3932, 3934, 5, 9, 0, 0, 3933, 3932, 1, 0, 0, 0, 3933, 3934, 1, 0, 0, 0, 3934, 323, 1, 0, 0, 0, 3935, 3936, 5, 159, 0, 0, 3936, 3995, 5, 80, 0, 0, 3937, 3996, 3, 310, 155, 0, 3938, 3996, 3, 312, 156, 0, 3939, 3940, 5, 44, 0, 0, 3940, 3942, 3, 818, 409, 0, 3941, 3943, 3, 318, 159, 0, 3942, 3941, 1, 0, 0, 0, 3942, 3943, 1, 0, 0, 0, 3943, 3944, 1, 0, 0, 0, 3944, 3945, 5, 11, 0, 0, 3945, 3946, 3, 800, 400, 0, 3946, 3996, 1, 0, 0, 0, 3947, 3948, 7, 32, 0, 0, 3948, 3996, 3, 652, 326, 0, 3949, 3950, 5, 136, 0, 0, 3950, 3996, 3, 394, 197, 0, 3951, 3952, 5, 211, 0, 0, 3952, 3996, 3, 382, 191, 0, 3953, 3954, 5, 278, 0, 0, 3954, 3996, 3, 416, 208, 0, 3955, 3956, 5, 45, 0, 0, 3956, 3957, 3, 818, 409, 0, 3957, 3963, 5, 80, 0, 0, 3958, 3964, 3, 774, 387, 0, 3959, 3961, 5, 189, 0, 0, 3960, 3959, 1, 0, 0, 0, 3960, 3961, 1, 0, 0, 0, 3961, 3962, 1, 0, 0, 0, 3962, 3964, 3, 316, 158, 0, 3963, 3958, 1, 0, 0, 0, 3963, 3960, 1, 0, 0, 0, 3964, 3996, 1, 0, 0, 0, 3965, 3966, 7, 44, 0, 0, 3966, 3967, 3, 818, 409, 0, 3967, 3968, 5, 80, 0, 0, 3968, 3969, 3, 316, 158, 0, 3969, 3996, 1, 0, 0, 0, 3970, 3971, 5, 296, 0, 0, 3971, 3996, 3, 378, 189, 0, 3972, 3973, 5, 442, 0, 0, 3973, 3996, 3, 374, 187, 0, 3974, 3975, 5, 443, 0, 0, 3975, 3976, 5, 62, 0, 0, 3976, 3977, 3, 652, 326, 0, 3977, 3978, 5, 247, 0, 0, 3978, 3979, 3, 818, 409, 0, 3979, 3996, 1, 0, 0, 0, 3980, 3981, 5, 278, 0, 0, 3981, 3982, 7, 31, 0, 0, 3982, 3983, 3, 316, 158, 0, 3983, 3984, 3, 170, 85, 0, 3984, 3996, 1, 0, 0, 0, 3985, 3986, 5, 248, 0, 0, 3986, 3987, 5, 274, 0, 0, 3987, 3996, 3, 202, 101, 0, 3988, 3989, 5, 41, 0, 0, 3989, 3990, 5, 2, 0, 0, 3990, 3991, 3, 652, 326, 0, 3991, 3992, 5, 36, 0, 0, 3992, 3993, 3, 652, 326, 0, 3993, 3994, 5, 3, 0, 0, 3994, 3996, 1, 0, 0, 0, 3995, 3937, 1, 0, 0, 0, 3995, 3938, 1, 0, 0, 0, 3995, 3939, 1, 0, 0, 0, 3995, 3947, 1, 0, 0, 0, 3995, 3949, 1, 0, 0, 0, 3995, 3951, 1, 0, 0, 0, 3995, 3953, 1, 0, 0, 0, 3995, 3955, 1, 0, 0, 0, 3995, 3965, 1, 0, 0, 0, 3995, 3970, 1, 0, 0, 0, 3995, 3972, 1, 0, 0, 0, 3995, 3974, 1, 0, 0, 0, 3995, 3980, 1, 0, 0, 0, 3995, 3985, 1, 0, 0, 0, 3995, 3988, 1, 0, 0, 0, 3996, 3997, 1, 0, 0, 0, 3997, 4000, 5, 116, 0, 0, 3998, 4001, 3, 808, 404, 0, 3999, 4001, 5, 78, 0, 0, 4000, 3998, 1, 0, 0, 0, 4000, 3999, 1, 0, 0, 0, 4001, 325, 1, 0, 0, 0, 4002, 4003, 5, 327, 0, 0, 4003, 4006, 5, 246, 0, 0, 4004, 4005, 5, 62, 0, 0, 4005, 4007, 3, 58, 29, 0, 4006, 4004, 1, 0, 0, 0, 4006, 4007, 1, 0, 0, 0, 4007, 4008, 1, 0, 0, 0, 4008, 4026, 5, 80, 0, 0, 4009, 4010, 7, 32, 0, 0, 4010, 4027, 3, 652, 326, 0, 4011, 4012, 5, 136, 0, 0, 4012, 4027, 3, 394, 197, 0, 4013, 4014, 5, 44, 0, 0, 4014, 4027, 3, 800, 400, 0, 4015, 4016, 5, 211, 0, 0, 4016, 4027, 3, 382, 191, 0, 4017, 4018, 5, 248, 0, 0, 4018, 4019, 5, 274, 0, 0, 4019, 4027, 3, 202, 101, 0, 4020, 4021, 5, 296, 0, 0, 4021, 4027, 3, 378, 189, 0, 4022, 4023, 5, 442, 0, 0, 4023, 4027, 3, 374, 187, 0, 4024, 4027, 3, 310, 155, 0, 4025, 4027, 3, 312, 156, 0, 4026, 4009, 1, 0, 0, 0, 4026, 4011, 1, 0, 0, 0, 4026, 4013, 1, 0, 0, 0, 4026, 4015, 1, 0, 0, 0, 4026, 4017, 1, 0, 0, 0, 4026, 4020, 1, 0, 0, 0, 4026, 4022, 1, 0, 0, 0, 4026, 4024, 1, 0, 0, 0, 4026, 4025, 1, 0, 0, 0, 4027, 4028, 1, 0, 0, 0, 4028, 4031, 5, 116, 0, 0, 4029, 4032, 3, 808, 404, 0, 4030, 4032, 5, 78, 0, 0, 4031, 4029, 1, 0, 0, 0, 4031, 4030, 1, 0, 0, 0, 4032, 327, 1, 0, 0, 0, 4033, 4034, 7, 48, 0, 0, 4034, 4035, 3, 330, 165, 0, 4035, 329, 1, 0, 0, 0, 4036, 4038, 7, 49, 0, 0, 4037, 4036, 1, 0, 0, 0, 4037, 4038, 1, 0, 0, 0, 4038, 4040, 1, 0, 0, 0, 4039, 4041, 3, 332, 166, 0, 4040, 4039, 1, 0, 0, 0, 4040, 4041, 1, 0, 0, 0, 4041, 4042, 1, 0, 0, 0, 4042, 4080, 3, 818, 409, 0, 4043, 4045, 7, 50, 0, 0, 4044, 4043, 1, 0, 0, 0, 4044, 4045, 1, 0, 0, 0, 4045, 4046, 1, 0, 0, 0, 4046, 4048, 3, 812, 406, 0, 4047, 4049, 3, 332, 166, 0, 4048, 4047, 1, 0, 0, 0, 4048, 4049, 1, 0, 0, 0, 4049, 4050, 1, 0, 0, 0, 4050, 4051, 3, 818, 409, 0, 4051, 4080, 1, 0, 0, 0, 4052, 4054, 5, 210, 0, 0, 4053, 4055, 3, 812, 406, 0, 4054, 4053, 1, 0, 0, 0, 4054, 4055, 1, 0, 0, 0, 4055, 4057, 1, 0, 0, 0, 4056, 4058, 3, 332, 166, 0, 4057, 4056, 1, 0, 0, 0, 4057, 4058, 1, 0, 0, 0, 4058, 4059, 1, 0, 0, 0, 4059, 4080, 3, 818, 409, 0, 4060, 4062, 5, 210, 0, 0, 4061, 4060, 1, 0, 0, 0, 4061, 4062, 1, 0, 0, 0, 4062, 4063, 1, 0, 0, 0, 4063, 4065, 5, 30, 0, 0, 4064, 4066, 3, 332, 166, 0, 4065, 4064, 1, 0, 0, 0, 4065, 4066, 1, 0, 0, 0, 4066, 4067, 1, 0, 0, 0, 4067, 4080, 3, 818, 409, 0, 4068, 4073, 5, 144, 0, 0, 4069, 4071, 5, 30, 0, 0, 4070, 4069, 1, 0, 0, 0, 4070, 4071, 1, 0, 0, 0, 4071, 4074, 1, 0, 0, 0, 4072, 4074, 3, 812, 406, 0, 4073, 4070, 1, 0, 0, 0, 4073, 4072, 1, 0, 0, 0, 4074, 4076, 1, 0, 0, 0, 4075, 4077, 3, 332, 166, 0, 4076, 4075, 1, 0, 0, 0, 4076, 4077, 1, 0, 0, 0, 4077, 4078, 1, 0, 0, 0, 4078, 4080, 3, 818, 409, 0, 4079, 4037, 1, 0, 0, 0, 4079, 4044, 1, 0, 0, 0, 4079, 4052, 1, 0, 0, 0, 4079, 4061, 1, 0, 0, 0, 4079, 4068, 1, 0, 0, 0, 4080, 331, 1, 0, 0, 0, 4081, 4082, 7, 51, 0, 0, 4082, 333, 1, 0, 0, 0, 4083, 4084, 5, 65, 0, 0, 4084, 4085, 3, 338, 169, 0, 4085, 4086, 5, 80, 0, 0, 4086, 4087, 3, 344, 172, 0, 4087, 4088, 5, 94, 0, 0, 4088, 4092, 3, 346, 173, 0, 4089, 4090, 5, 105, 0, 0, 4090, 4091, 5, 65, 0, 0, 4091, 4093, 5, 279, 0, 0, 4092, 4089, 1, 0, 0, 0, 4092, 4093, 1, 0, 0, 0, 4093, 335, 1, 0, 0, 0, 4094, 4098, 5, 317, 0, 0, 4095, 4096, 5, 65, 0, 0, 4096, 4097, 5, 279, 0, 0, 4097, 4099, 5, 62, 0, 0, 4098, 4095, 1, 0, 0, 0, 4098, 4099, 1, 0, 0, 0, 4099, 4100, 1, 0, 0, 0, 4100, 4101, 3, 338, 169, 0, 4101, 4102, 5, 80, 0, 0, 4102, 4103, 3, 344, 172, 0, 4103, 4104, 5, 64, 0, 0, 4104, 4106, 3, 346, 173, 0, 4105, 4107, 3, 96, 48, 0, 4106, 4105, 1, 0, 0, 0, 4106, 4107, 1, 0, 0, 0, 4107, 337, 1, 0, 0, 0, 4108, 4113, 3, 342, 171, 0, 4109, 4110, 5, 6, 0, 0, 4110, 4112, 3, 342, 171, 0, 4111, 4109, 1, 0, 0, 0, 4112, 4115, 1, 0, 0, 0, 4113, 4111, 1, 0, 0, 0, 4113, 4114, 1, 0, 0, 0, 4114, 4132, 1, 0, 0, 0, 4115, 4113, 1, 0, 0, 0, 4116, 4118, 5, 30, 0, 0, 4117, 4119, 5, 294, 0, 0, 4118, 4117, 1, 0, 0, 0, 4118, 4119, 1, 0, 0, 0, 4119, 4121, 1, 0, 0, 0, 4120, 4122, 3, 144, 72, 0, 4121, 4120, 1, 0, 0, 0, 4121, 4122, 1, 0, 0, 0, 4122, 4132, 1, 0, 0, 0, 4123, 4128, 3, 340, 170, 0, 4124, 4125, 5, 6, 0, 0, 4125, 4127, 3, 340, 170, 0, 4126, 4124, 1, 0, 0, 0, 4127, 4130, 1, 0, 0, 0, 4128, 4126, 1, 0, 0, 0, 4128, 4129, 1, 0, 0, 0, 4129, 4132, 1, 0, 0, 0, 4130, 4128, 1, 0, 0, 0, 4131, 4108, 1, 0, 0, 0, 4131, 4116, 1, 0, 0, 0, 4131, 4123, 1, 0, 0, 0, 4132, 339, 1, 0, 0, 0, 4133, 4134, 7, 52, 0, 0, 4134, 341, 1, 0, 0, 0, 4135, 4140, 5, 88, 0, 0, 4136, 4140, 5, 86, 0, 0, 4137, 4140, 5, 46, 0, 0, 4138, 4140, 3, 818, 409, 0, 4139, 4135, 1, 0, 0, 0, 4139, 4136, 1, 0, 0, 0, 4139, 4137, 1, 0, 0, 0, 4139, 4138, 1, 0, 0, 0, 4140, 4142, 1, 0, 0, 0, 4141, 4143, 3, 144, 72, 0, 4142, 4141, 1, 0, 0, 0, 4142, 4143, 1, 0, 0, 0, 4143, 343, 1, 0, 0, 0, 4144, 4145, 5, 92, 0, 0, 4145, 4190, 3, 762, 381, 0, 4146, 4148, 5, 328, 0, 0, 4147, 4146, 1, 0, 0, 0, 4147, 4148, 1, 0, 0, 0, 4148, 4149, 1, 0, 0, 0, 4149, 4190, 3, 760, 380, 0, 4150, 4154, 5, 63, 0, 0, 4151, 4152, 5, 174, 0, 0, 4152, 4155, 5, 381, 0, 0, 4153, 4155, 5, 331, 0, 0, 4154, 4151, 1, 0, 0, 0, 4154, 4153, 1, 0, 0, 0, 4155, 4158, 1, 0, 0, 0, 4156, 4158, 5, 247, 0, 0, 4157, 4150, 1, 0, 0, 0, 4157, 4156, 1, 0, 0, 0, 4158, 4159, 1, 0, 0, 0, 4159, 4190, 3, 784, 392, 0, 4160, 4161, 5, 211, 0, 0, 4161, 4190, 3, 380, 190, 0, 4162, 4163, 5, 296, 0, 0, 4163, 4190, 3, 376, 188, 0, 4164, 4165, 5, 442, 0, 0, 4165, 4190, 3, 372, 186, 0, 4166, 4167, 5, 175, 0, 0, 4167, 4190, 3, 766, 383, 0, 4168, 4169, 7, 32, 0, 0, 4169, 4190, 3, 314, 157, 0, 4170, 4171, 5, 248, 0, 0, 4171, 4172, 5, 274, 0, 0, 4172, 4177, 3, 202, 101, 0, 4173, 4174, 5, 6, 0, 0, 4174, 4176, 3, 202, 101, 0, 4175, 4173, 1, 0, 0, 0, 4176, 4179, 1, 0, 0, 0, 4177, 4175, 1, 0, 0, 0, 4177, 4178, 1, 0, 0, 0, 4178, 4190, 1, 0, 0, 0, 4179, 4177, 1, 0, 0, 0, 4180, 4181, 5, 323, 0, 0, 4181, 4190, 3, 764, 382, 0, 4182, 4183, 5, 351, 0, 0, 4183, 4190, 3, 782, 391, 0, 4184, 4185, 5, 30, 0, 0, 4185, 4186, 7, 53, 0, 0, 4186, 4187, 5, 68, 0, 0, 4187, 4188, 5, 323, 0, 0, 4188, 4190, 3, 764, 382, 0, 4189, 4144, 1, 0, 0, 0, 4189, 4147, 1, 0, 0, 0, 4189, 4157, 1, 0, 0, 0, 4189, 4160, 1, 0, 0, 0, 4189, 4162, 1, 0, 0, 0, 4189, 4164, 1, 0, 0, 0, 4189, 4166, 1, 0, 0, 0, 4189, 4168, 1, 0, 0, 0, 4189, 4170, 1, 0, 0, 0, 4189, 4180, 1, 0, 0, 0, 4189, 4182, 1, 0, 0, 0, 4189, 4184, 1, 0, 0, 0, 4190, 345, 1, 0, 0, 0, 4191, 4193, 5, 66, 0, 0, 4192, 4191, 1, 0, 0, 0, 4192, 4193, 1, 0, 0, 0, 4193, 4194, 1, 0, 0, 0, 4194, 4195, 3, 814, 407, 0, 4195, 4203, 1, 0, 0, 0, 4196, 4198, 5, 6, 0, 0, 4197, 4199, 5, 66, 0, 0, 4198, 4197, 1, 0, 0, 0, 4198, 4199, 1, 0, 0, 0, 4199, 4200, 1, 0, 0, 0, 4200, 4202, 3, 814, 407, 0, 4201, 4196, 1, 0, 0, 0, 4202, 4205, 1, 0, 0, 0, 4203, 4201, 1, 0, 0, 0, 4203, 4204, 1, 0, 0, 0, 4204, 347, 1, 0, 0, 0, 4205, 4203, 1, 0, 0, 0, 4206, 4207, 5, 65, 0, 0, 4207, 4212, 3, 342, 171, 0, 4208, 4209, 5, 6, 0, 0, 4209, 4211, 3, 342, 171, 0, 4210, 4208, 1, 0, 0, 0, 4211, 4214, 1, 0, 0, 0, 4212, 4210, 1, 0, 0, 0, 4212, 4213, 1, 0, 0, 0, 4213, 4215, 1, 0, 0, 0, 4214, 4212, 1, 0, 0, 0, 4215, 4216, 5, 94, 0, 0, 4216, 4220, 3, 816, 408, 0, 4217, 4218, 5, 105, 0, 0, 4218, 4219, 5, 134, 0, 0, 4219, 4221, 5, 279, 0, 0, 4220, 4217, 1, 0, 0, 0, 4220, 4221, 1, 0, 0, 0, 4221, 4225, 1, 0, 0, 0, 4222, 4223, 5, 214, 0, 0, 4223, 4224, 5, 147, 0, 0, 4224, 4226, 3, 814, 407, 0, 4225, 4222, 1, 0, 0, 0, 4225, 4226, 1, 0, 0, 0, 4226, 349, 1, 0, 0, 0, 4227, 4231, 5, 317, 0, 0, 4228, 4229, 5, 134, 0, 0, 4229, 4230, 5, 279, 0, 0, 4230, 4232, 5, 62, 0, 0, 4231, 4228, 1, 0, 0, 0, 4231, 4232, 1, 0, 0, 0, 4232, 4233, 1, 0, 0, 0, 4233, 4238, 3, 342, 171, 0, 4234, 4235, 5, 6, 0, 0, 4235, 4237, 3, 342, 171, 0, 4236, 4234, 1, 0, 0, 0, 4237, 4240, 1, 0, 0, 0, 4238, 4236, 1, 0, 0, 0, 4238, 4239, 1, 0, 0, 0, 4239, 4241, 1, 0, 0, 0, 4240, 4238, 1, 0, 0, 0, 4241, 4242, 5, 64, 0, 0, 4242, 4246, 3, 816, 408, 0, 4243, 4244, 5, 214, 0, 0, 4244, 4245, 5, 147, 0, 0, 4245, 4247, 3, 814, 407, 0, 4246, 4243, 1, 0, 0, 0, 4246, 4247, 1, 0, 0, 0, 4247, 4249, 1, 0, 0, 0, 4248, 4250, 3, 96, 48, 0, 4249, 4248, 1, 0, 0, 0, 4249, 4250, 1, 0, 0, 0, 4250, 351, 1, 0, 0, 0, 4251, 4252, 5, 138, 0, 0, 4252, 4253, 5, 53, 0, 0, 4253, 4262, 5, 294, 0, 0, 4254, 4255, 5, 68, 0, 0, 4255, 4256, 5, 323, 0, 0, 4256, 4261, 3, 764, 382, 0, 4257, 4258, 5, 62, 0, 0, 4258, 4259, 7, 2, 0, 0, 4259, 4261, 3, 816, 408, 0, 4260, 4254, 1, 0, 0, 0, 4260, 4257, 1, 0, 0, 0, 4261, 4264, 1, 0, 0, 0, 4262, 4260, 1, 0, 0, 0, 4262, 4263, 1, 0, 0, 0, 4263, 4265, 1, 0, 0, 0, 4264, 4262, 1, 0, 0, 0, 4265, 4266, 3, 354, 177, 0, 4266, 353, 1, 0, 0, 0, 4267, 4268, 5, 65, 0, 0, 4268, 4269, 3, 338, 169, 0, 4269, 4270, 5, 80, 0, 0, 4270, 4271, 3, 356, 178, 0, 4271, 4272, 5, 94, 0, 0, 4272, 4276, 3, 346, 173, 0, 4273, 4274, 5, 105, 0, 0, 4274, 4275, 5, 65, 0, 0, 4275, 4277, 5, 279, 0, 0, 4276, 4273, 1, 0, 0, 0, 4276, 4277, 1, 0, 0, 0, 4277, 4293, 1, 0, 0, 0, 4278, 4282, 5, 317, 0, 0, 4279, 4280, 5, 65, 0, 0, 4280, 4281, 5, 279, 0, 0, 4281, 4283, 5, 62, 0, 0, 4282, 4279, 1, 0, 0, 0, 4282, 4283, 1, 0, 0, 0, 4283, 4284, 1, 0, 0, 0, 4284, 4285, 3, 338, 169, 0, 4285, 4286, 5, 80, 0, 0, 4286, 4287, 3, 356, 178, 0, 4287, 4288, 5, 64, 0, 0, 4288, 4290, 3, 346, 173, 0, 4289, 4291, 3, 96, 48, 0, 4290, 4289, 1, 0, 0, 0, 4290, 4291, 1, 0, 0, 0, 4291, 4293, 1, 0, 0, 0, 4292, 4267, 1, 0, 0, 0, 4292, 4278, 1, 0, 0, 0, 4293, 355, 1, 0, 0, 0, 4294, 4295, 7, 54, 0, 0, 4295, 357, 1, 0, 0, 0, 4296, 4298, 5, 46, 0, 0, 4297, 4299, 5, 98, 0, 0, 4298, 4297, 1, 0, 0, 0, 4298, 4299, 1, 0, 0, 0, 4299, 4300, 1, 0, 0, 0, 4300, 4302, 5, 226, 0, 0, 4301, 4303, 5, 109, 0, 0, 4302, 4301, 1, 0, 0, 0, 4302, 4303, 1, 0, 0, 0, 4303, 4305, 1, 0, 0, 0, 4304, 4306, 3, 294, 147, 0, 4305, 4304, 1, 0, 0, 0, 4305, 4306, 1, 0, 0, 0, 4306, 4308, 1, 0, 0, 0, 4307, 4309, 3, 818, 409, 0, 4308, 4307, 1, 0, 0, 0, 4308, 4309, 1, 0, 0, 0, 4309, 4310, 1, 0, 0, 0, 4310, 4311, 5, 80, 0, 0, 4311, 4313, 3, 624, 312, 0, 4312, 4314, 3, 170, 85, 0, 4313, 4312, 1, 0, 0, 0, 4313, 4314, 1, 0, 0, 0, 4314, 4315, 1, 0, 0, 0, 4315, 4318, 3, 360, 180, 0, 4316, 4317, 5, 441, 0, 0, 4317, 4319, 3, 360, 180, 0, 4318, 4316, 1, 0, 0, 0, 4318, 4319, 1, 0, 0, 0, 4319, 4325, 1, 0, 0, 0, 4320, 4322, 5, 273, 0, 0, 4321, 4323, 5, 77, 0, 0, 4322, 4321, 1, 0, 0, 0, 4322, 4323, 1, 0, 0, 0, 4323, 4324, 1, 0, 0, 0, 4324, 4326, 5, 56, 0, 0, 4325, 4320, 1, 0, 0, 0, 4325, 4326, 1, 0, 0, 0, 4326, 4328, 1, 0, 0, 0, 4327, 4329, 3, 102, 51, 0, 4328, 4327, 1, 0, 0, 0, 4328, 4329, 1, 0, 0, 0, 4329, 4331, 1, 0, 0, 0, 4330, 4332, 3, 176, 88, 0, 4331, 4330, 1, 0, 0, 0, 4331, 4332, 1, 0, 0, 0, 4332, 4334, 1, 0, 0, 0, 4333, 4335, 3, 638, 319, 0, 4334, 4333, 1, 0, 0, 0, 4334, 4335, 1, 0, 0, 0, 4335, 359, 1, 0, 0, 0, 4336, 4337, 5, 2, 0, 0, 4337, 4342, 3, 362, 181, 0, 4338, 4339, 5, 6, 0, 0, 4339, 4341, 3, 362, 181, 0, 4340, 4338, 1, 0, 0, 0, 4341, 4344, 1, 0, 0, 0, 4342, 4340, 1, 0, 0, 0, 4342, 4343, 1, 0, 0, 0, 4343, 4345, 1, 0, 0, 0, 4344, 4342, 1, 0, 0, 0, 4345, 4346, 5, 3, 0, 0, 4346, 361, 1, 0, 0, 0, 4347, 4354, 3, 800, 400, 0, 4348, 4354, 3, 688, 344, 0, 4349, 4350, 5, 2, 0, 0, 4350, 4351, 3, 674, 337, 0, 4351, 4352, 5, 3, 0, 0, 4352, 4354, 1, 0, 0, 0, 4353, 4347, 1, 0, 0, 0, 4353, 4348, 1, 0, 0, 0, 4353, 4349, 1, 0, 0, 0, 4354, 4356, 1, 0, 0, 0, 4355, 4357, 3, 98, 49, 0, 4356, 4355, 1, 0, 0, 0, 4356, 4357, 1, 0, 0, 0, 4357, 4364, 1, 0, 0, 0, 4358, 4360, 3, 316, 158, 0, 4359, 4358, 1, 0, 0, 0, 4359, 4360, 1, 0, 0, 0, 4360, 4365, 1, 0, 0, 0, 4361, 4362, 3, 316, 158, 0, 4362, 4363, 3, 100, 50, 0, 4363, 4365, 1, 0, 0, 0, 4364, 4359, 1, 0, 0, 0, 4364, 4361, 1, 0, 0, 0, 4365, 4367, 1, 0, 0, 0, 4366, 4368, 7, 55, 0, 0, 4367, 4366, 1, 0, 0, 0, 4367, 4368, 1, 0, 0, 0, 4368, 4371, 1, 0, 0, 0, 4369, 4370, 5, 273, 0, 0, 4370, 4372, 7, 56, 0, 0, 4371, 4369, 1, 0, 0, 0, 4371, 4372, 1, 0, 0, 0, 4372, 363, 1, 0, 0, 0, 4373, 4375, 5, 46, 0, 0, 4374, 4376, 3, 366, 183, 0, 4375, 4374, 1, 0, 0, 0, 4375, 4376, 1, 0, 0, 0, 4376, 4381, 1, 0, 0, 0, 4377, 4378, 5, 211, 0, 0, 4378, 4382, 3, 804, 402, 0, 4379, 4380, 5, 296, 0, 0, 4380, 4382, 3, 798, 399, 0, 4381, 4377, 1, 0, 0, 0, 4381, 4379, 1, 0, 0, 0, 4382, 4383, 1, 0, 0, 0, 4383, 4392, 5, 2, 0, 0, 4384, 4389, 3, 390, 195, 0, 4385, 4386, 5, 6, 0, 0, 4386, 4388, 3, 390, 195, 0, 4387, 4385, 1, 0, 0, 0, 4388, 4391, 1, 0, 0, 0, 4389, 4387, 1, 0, 0, 0, 4389, 4390, 1, 0, 0, 0, 4390, 4393, 1, 0, 0, 0, 4391, 4389, 1, 0, 0, 0, 4392, 4384, 1, 0, 0, 0, 4392, 4393, 1, 0, 0, 0, 4393, 4394, 1, 0, 0, 0, 4394, 4395, 5, 3, 0, 0, 4395, 4412, 1, 0, 0, 0, 4396, 4410, 5, 316, 0, 0, 4397, 4411, 3, 388, 194, 0, 4398, 4399, 5, 92, 0, 0, 4399, 4400, 5, 2, 0, 0, 4400, 4405, 3, 402, 201, 0, 4401, 4402, 5, 6, 0, 0, 4402, 4404, 3, 402, 201, 0, 4403, 4401, 1, 0, 0, 0, 4404, 4407, 1, 0, 0, 0, 4405, 4403, 1, 0, 0, 0, 4405, 4406, 1, 0, 0, 0, 4406, 4408, 1, 0, 0, 0, 4407, 4405, 1, 0, 0, 0, 4408, 4409, 5, 3, 0, 0, 4409, 4411, 1, 0, 0, 0, 4410, 4397, 1, 0, 0, 0, 4410, 4398, 1, 0, 0, 0, 4411, 4413, 1, 0, 0, 0, 4412, 4396, 1, 0, 0, 0, 4412, 4413, 1, 0, 0, 0, 4413, 4415, 1, 0, 0, 0, 4414, 4416, 3, 398, 199, 0, 4415, 4414, 1, 0, 0, 0, 4416, 4417, 1, 0, 0, 0, 4417, 4415, 1, 0, 0, 0, 4417, 4418, 1, 0, 0, 0, 4418, 4424, 1, 0, 0, 0, 4419, 4420, 5, 105, 0, 0, 4420, 4421, 5, 2, 0, 0, 4421, 4422, 3, 784, 392, 0, 4422, 4423, 5, 3, 0, 0, 4423, 4425, 1, 0, 0, 0, 4424, 4419, 1, 0, 0, 0, 4424, 4425, 1, 0, 0, 0, 4425, 365, 1, 0, 0, 0, 4426, 4427, 5, 82, 0, 0, 4427, 4428, 5, 311, 0, 0, 4428, 367, 1, 0, 0, 0, 4429, 4431, 5, 2, 0, 0, 4430, 4432, 3, 370, 185, 0, 4431, 4430, 1, 0, 0, 0, 4431, 4432, 1, 0, 0, 0, 4432, 4433, 1, 0, 0, 0, 4433, 4434, 5, 3, 0, 0, 4434, 369, 1, 0, 0, 0, 4435, 4440, 3, 384, 192, 0, 4436, 4437, 5, 6, 0, 0, 4437, 4439, 3, 384, 192, 0, 4438, 4436, 1, 0, 0, 0, 4439, 4442, 1, 0, 0, 0, 4440, 4438, 1, 0, 0, 0, 4440, 4441, 1, 0, 0, 0, 4441, 371, 1, 0, 0, 0, 4442, 4440, 1, 0, 0, 0, 4443, 4448, 3, 374, 187, 0, 4444, 4445, 5, 6, 0, 0, 4445, 4447, 3, 374, 187, 0, 4446, 4444, 1, 0, 0, 0, 4447, 4450, 1, 0, 0, 0, 4448, 4446, 1, 0, 0, 0, 4448, 4449, 1, 0, 0, 0, 4449, 373, 1, 0, 0, 0, 4450, 4448, 1, 0, 0, 0, 4451, 4452, 3, 794, 397, 0, 4452, 4453, 3, 368, 184, 0, 4453, 4457, 1, 0, 0, 0, 4454, 4457, 3, 832, 416, 0, 4455, 4457, 3, 780, 390, 0, 4456, 4451, 1, 0, 0, 0, 4456, 4454, 1, 0, 0, 0, 4456, 4455, 1, 0, 0, 0, 4457, 375, 1, 0, 0, 0, 4458, 4463, 3, 378, 189, 0, 4459, 4460, 5, 6, 0, 0, 4460, 4462, 3, 378, 189, 0, 4461, 4459, 1, 0, 0, 0, 4462, 4465, 1, 0, 0, 0, 4463, 4461, 1, 0, 0, 0, 4463, 4464, 1, 0, 0, 0, 4464, 377, 1, 0, 0, 0, 4465, 4463, 1, 0, 0, 0, 4466, 4467, 3, 796, 398, 0, 4467, 4468, 3, 368, 184, 0, 4468, 4472, 1, 0, 0, 0, 4469, 4472, 3, 832, 416, 0, 4470, 4472, 3, 780, 390, 0, 4471, 4466, 1, 0, 0, 0, 4471, 4469, 1, 0, 0, 0, 4471, 4470, 1, 0, 0, 0, 4472, 379, 1, 0, 0, 0, 4473, 4478, 3, 382, 191, 0, 4474, 4475, 5, 6, 0, 0, 4475, 4477, 3, 382, 191, 0, 4476, 4474, 1, 0, 0, 0, 4477, 4480, 1, 0, 0, 0, 4478, 4476, 1, 0, 0, 0, 4478, 4479, 1, 0, 0, 0, 4479, 381, 1, 0, 0, 0, 4480, 4478, 1, 0, 0, 0, 4481, 4482, 3, 806, 403, 0, 4482, 4483, 3, 368, 184, 0, 4483, 4487, 1, 0, 0, 0, 4484, 4487, 3, 832, 416, 0, 4485, 4487, 3, 780, 390, 0, 4486, 4481, 1, 0, 0, 0, 4486, 4484, 1, 0, 0, 0, 4486, 4485, 1, 0, 0, 0, 4487, 383, 1, 0, 0, 0, 4488, 4490, 3, 386, 193, 0, 4489, 4491, 3, 820, 410, 0, 4490, 4489, 1, 0, 0, 0, 4490, 4491, 1, 0, 0, 0, 4491, 4497, 1, 0, 0, 0, 4492, 4494, 3, 820, 410, 0, 4493, 4495, 3, 386, 193, 0, 4494, 4493, 1, 0, 0, 0, 4494, 4495, 1, 0, 0, 0, 4495, 4497, 1, 0, 0, 0, 4496, 4488, 1, 0, 0, 0, 4496, 4492, 1, 0, 0, 0, 4496, 4497, 1, 0, 0, 0, 4497, 4498, 1, 0, 0, 0, 4498, 4499, 3, 388, 194, 0, 4499, 385, 1, 0, 0, 0, 4500, 4502, 5, 68, 0, 0, 4501, 4503, 5, 453, 0, 0, 4502, 4501, 1, 0, 0, 0, 4502, 4503, 1, 0, 0, 0, 4503, 4508, 1, 0, 0, 0, 4504, 4508, 5, 453, 0, 0, 4505, 4508, 5, 400, 0, 0, 4506, 4508, 5, 101, 0, 0, 4507, 4500, 1, 0, 0, 0, 4507, 4504, 1, 0, 0, 0, 4507, 4505, 1, 0, 0, 0, 4507, 4506, 1, 0, 0, 0, 4508, 387, 1, 0, 0, 0, 4509, 4519, 3, 652, 326, 0, 4510, 4512, 5, 415, 0, 0, 4511, 4510, 1, 0, 0, 0, 4511, 4512, 1, 0, 0, 0, 4512, 4513, 1, 0, 0, 0, 4513, 4514, 3, 820, 410, 0, 4514, 4515, 3, 318, 159, 0, 4515, 4516, 5, 27, 0, 0, 4516, 4517, 5, 360, 0, 0, 4517, 4519, 1, 0, 0, 0, 4518, 4509, 1, 0, 0, 0, 4518, 4511, 1, 0, 0, 0, 4519, 389, 1, 0, 0, 0, 4520, 4523, 3, 384, 192, 0, 4521, 4522, 7, 57, 0, 0, 4522, 4524, 3, 674, 337, 0, 4523, 4521, 1, 0, 0, 0, 4523, 4524, 1, 0, 0, 0, 4524, 391, 1, 0, 0, 0, 4525, 4535, 5, 2, 0, 0, 4526, 4536, 5, 9, 0, 0, 4527, 4529, 3, 370, 185, 0, 4528, 4527, 1, 0, 0, 0, 4528, 4529, 1, 0, 0, 0, 4529, 4533, 1, 0, 0, 0, 4530, 4531, 5, 83, 0, 0, 4531, 4532, 5, 147, 0, 0, 4532, 4534, 3, 370, 185, 0, 4533, 4530, 1, 0, 0, 0, 4533, 4534, 1, 0, 0, 0, 4534, 4536, 1, 0, 0, 0, 4535, 4526, 1, 0, 0, 0, 4535, 4528, 1, 0, 0, 0, 4536, 4537, 1, 0, 0, 0, 4537, 4538, 5, 3, 0, 0, 4538, 393, 1, 0, 0, 0, 4539, 4540, 3, 806, 403, 0, 4540, 4541, 3, 392, 196, 0, 4541, 395, 1, 0, 0, 0, 4542, 4543, 5, 316, 0, 0, 4543, 4546, 5, 78, 0, 0, 4544, 4546, 5, 149, 0, 0, 4545, 4542, 1, 0, 0, 0, 4545, 4544, 1, 0, 0, 0, 4546, 4547, 1, 0, 0, 0, 4547, 4548, 5, 80, 0, 0, 4548, 4549, 5, 78, 0, 0, 4549, 4572, 5, 458, 0, 0, 4550, 4572, 5, 346, 0, 0, 4551, 4572, 5, 222, 0, 0, 4552, 4572, 5, 338, 0, 0, 4553, 4572, 5, 377, 0, 0, 4554, 4556, 5, 205, 0, 0, 4555, 4554, 1, 0, 0, 0, 4555, 4556, 1, 0, 0, 0, 4556, 4557, 1, 0, 0, 0, 4557, 4558, 5, 327, 0, 0, 4558, 4572, 7, 58, 0, 0, 4559, 4572, 5, 250, 0, 0, 4560, 4561, 5, 77, 0, 0, 4561, 4572, 5, 250, 0, 0, 4562, 4563, 7, 59, 0, 0, 4563, 4572, 3, 202, 101, 0, 4564, 4565, 5, 459, 0, 0, 4565, 4572, 3, 316, 158, 0, 4566, 4567, 5, 333, 0, 0, 4567, 4572, 3, 42, 21, 0, 4568, 4572, 3, 60, 30, 0, 4569, 4570, 5, 460, 0, 0, 4570, 4572, 3, 818, 409, 0, 4571, 4545, 1, 0, 0, 0, 4571, 4550, 1, 0, 0, 0, 4571, 4551, 1, 0, 0, 0, 4571, 4552, 1, 0, 0, 0, 4571, 4553, 1, 0, 0, 0, 4571, 4555, 1, 0, 0, 0, 4571, 4559, 1, 0, 0, 0, 4571, 4560, 1, 0, 0, 0, 4571, 4562, 1, 0, 0, 0, 4571, 4564, 1, 0, 0, 0, 4571, 4566, 1, 0, 0, 0, 4571, 4568, 1, 0, 0, 0, 4571, 4569, 1, 0, 0, 0, 4572, 397, 1, 0, 0, 0, 4573, 4574, 5, 36, 0, 0, 4574, 4575, 3, 808, 404, 0, 4575, 4576, 3, 462, 231, 0, 4576, 4609, 1, 0, 0, 0, 4577, 4578, 5, 247, 0, 0, 4578, 4609, 3, 58, 29, 0, 4579, 4580, 5, 443, 0, 0, 4580, 4581, 5, 62, 0, 0, 4581, 4582, 5, 360, 0, 0, 4582, 4589, 3, 652, 326, 0, 4583, 4584, 5, 6, 0, 0, 4584, 4585, 5, 62, 0, 0, 4585, 4586, 5, 360, 0, 0, 4586, 4588, 3, 652, 326, 0, 4587, 4583, 1, 0, 0, 0, 4588, 4591, 1, 0, 0, 0, 4589, 4587, 1, 0, 0, 0, 4589, 4590, 1, 0, 0, 0, 4590, 4609, 1, 0, 0, 0, 4591, 4589, 1, 0, 0, 0, 4592, 4609, 5, 104, 0, 0, 4593, 4594, 5, 333, 0, 0, 4594, 4601, 3, 818, 409, 0, 4595, 4596, 5, 94, 0, 0, 4596, 4602, 3, 818, 409, 0, 4597, 4598, 5, 10, 0, 0, 4598, 4602, 3, 818, 409, 0, 4599, 4600, 5, 64, 0, 0, 4600, 4602, 5, 434, 0, 0, 4601, 4595, 1, 0, 0, 0, 4601, 4597, 1, 0, 0, 0, 4601, 4599, 1, 0, 0, 0, 4602, 4609, 1, 0, 0, 0, 4603, 4604, 5, 36, 0, 0, 4604, 4609, 3, 818, 409, 0, 4605, 4609, 3, 4, 2, 0, 4606, 4609, 3, 396, 198, 0, 4607, 4609, 3, 818, 409, 0, 4608, 4573, 1, 0, 0, 0, 4608, 4577, 1, 0, 0, 0, 4608, 4579, 1, 0, 0, 0, 4608, 4592, 1, 0, 0, 0, 4608, 4593, 1, 0, 0, 0, 4608, 4603, 1, 0, 0, 0, 4608, 4605, 1, 0, 0, 0, 4608, 4606, 1, 0, 0, 0, 4608, 4607, 1, 0, 0, 0, 4609, 399, 1, 0, 0, 0, 4610, 4611, 5, 105, 0, 0, 4611, 4612, 3, 284, 142, 0, 4612, 401, 1, 0, 0, 0, 4613, 4614, 3, 800, 400, 0, 4614, 4615, 3, 388, 194, 0, 4615, 403, 1, 0, 0, 0, 4616, 4623, 5, 138, 0, 0, 4617, 4618, 5, 211, 0, 0, 4618, 4624, 3, 382, 191, 0, 4619, 4620, 5, 296, 0, 0, 4620, 4624, 3, 378, 189, 0, 4621, 4622, 5, 442, 0, 0, 4622, 4624, 3, 374, 187, 0, 4623, 4617, 1, 0, 0, 0, 4623, 4619, 1, 0, 0, 0, 4623, 4621, 1, 0, 0, 0, 4624, 4626, 1, 0, 0, 0, 4625, 4627, 3, 396, 198, 0, 4626, 4625, 1, 0, 0, 0, 4627, 4628, 1, 0, 0, 0, 4628, 4626, 1, 0, 0, 0, 4628, 4629, 1, 0, 0, 0, 4629, 4631, 1, 0, 0, 0, 4630, 4632, 5, 315, 0, 0, 4631, 4630, 1, 0, 0, 0, 4631, 4632, 1, 0, 0, 0, 4632, 405, 1, 0, 0, 0, 4633, 4649, 5, 191, 0, 0, 4634, 4636, 5, 211, 0, 0, 4635, 4637, 3, 422, 211, 0, 4636, 4635, 1, 0, 0, 0, 4636, 4637, 1, 0, 0, 0, 4637, 4638, 1, 0, 0, 0, 4638, 4650, 3, 380, 190, 0, 4639, 4641, 5, 296, 0, 0, 4640, 4642, 3, 422, 211, 0, 4641, 4640, 1, 0, 0, 0, 4641, 4642, 1, 0, 0, 0, 4642, 4643, 1, 0, 0, 0, 4643, 4650, 3, 376, 188, 0, 4644, 4646, 5, 442, 0, 0, 4645, 4647, 3, 422, 211, 0, 4646, 4645, 1, 0, 0, 0, 4646, 4647, 1, 0, 0, 0, 4647, 4648, 1, 0, 0, 0, 4648, 4650, 3, 372, 186, 0, 4649, 4634, 1, 0, 0, 0, 4649, 4639, 1, 0, 0, 0, 4649, 4644, 1, 0, 0, 0, 4650, 4652, 1, 0, 0, 0, 4651, 4653, 3, 96, 48, 0, 4652, 4651, 1, 0, 0, 0, 4652, 4653, 1, 0, 0, 0, 4653, 407, 1, 0, 0, 0, 4654, 4655, 5, 191, 0, 0, 4655, 4657, 5, 136, 0, 0, 4656, 4658, 3, 422, 211, 0, 4657, 4656, 1, 0, 0, 0, 4657, 4658, 1, 0, 0, 0, 4658, 4659, 1, 0, 0, 0, 4659, 4664, 3, 394, 197, 0, 4660, 4661, 5, 6, 0, 0, 4661, 4663, 3, 394, 197, 0, 4662, 4660, 1, 0, 0, 0, 4663, 4666, 1, 0, 0, 0, 4664, 4662, 1, 0, 0, 0, 4664, 4665, 1, 0, 0, 0, 4665, 4668, 1, 0, 0, 0, 4666, 4664, 1, 0, 0, 0, 4667, 4669, 3, 96, 48, 0, 4668, 4667, 1, 0, 0, 0, 4668, 4669, 1, 0, 0, 0, 4669, 409, 1, 0, 0, 0, 4670, 4671, 5, 191, 0, 0, 4671, 4673, 5, 278, 0, 0, 4672, 4674, 3, 422, 211, 0, 4673, 4672, 1, 0, 0, 0, 4673, 4674, 1, 0, 0, 0, 4674, 4675, 1, 0, 0, 0, 4675, 4680, 3, 416, 208, 0, 4676, 4677, 5, 6, 0, 0, 4677, 4679, 3, 416, 208, 0, 4678, 4676, 1, 0, 0, 0, 4679, 4682, 1, 0, 0, 0, 4680, 4678, 1, 0, 0, 0, 4680, 4681, 1, 0, 0, 0, 4681, 4684, 1, 0, 0, 0, 4682, 4680, 1, 0, 0, 0, 4683, 4685, 3, 96, 48, 0, 4684, 4683, 1, 0, 0, 0, 4684, 4685, 1, 0, 0, 0, 4685, 411, 1, 0, 0, 0, 4686, 4699, 5, 2, 0, 0, 4687, 4690, 3, 652, 326, 0, 4688, 4689, 5, 6, 0, 0, 4689, 4691, 3, 652, 326, 0, 4690, 4688, 1, 0, 0, 0, 4690, 4691, 1, 0, 0, 0, 4691, 4700, 1, 0, 0, 0, 4692, 4693, 5, 407, 0, 0, 4693, 4694, 5, 6, 0, 0, 4694, 4700, 3, 652, 326, 0, 4695, 4696, 3, 652, 326, 0, 4696, 4697, 5, 6, 0, 0, 4697, 4698, 5, 407, 0, 0, 4698, 4700, 1, 0, 0, 0, 4699, 4687, 1, 0, 0, 0, 4699, 4692, 1, 0, 0, 0, 4699, 4695, 1, 0, 0, 0, 4700, 4701, 1, 0, 0, 0, 4701, 4702, 5, 3, 0, 0, 4702, 413, 1, 0, 0, 0, 4703, 4704, 3, 818, 409, 0, 4704, 4705, 5, 11, 0, 0, 4705, 4707, 1, 0, 0, 0, 4706, 4703, 1, 0, 0, 0, 4707, 4710, 1, 0, 0, 0, 4708, 4706, 1, 0, 0, 0, 4708, 4709, 1, 0, 0, 0, 4709, 4711, 1, 0, 0, 0, 4710, 4708, 1, 0, 0, 0, 4711, 4712, 3, 720, 360, 0, 4712, 415, 1, 0, 0, 0, 4713, 4714, 3, 414, 207, 0, 4714, 4715, 3, 412, 206, 0, 4715, 417, 1, 0, 0, 0, 4716, 4720, 5, 57, 0, 0, 4717, 4721, 3, 808, 404, 0, 4718, 4719, 5, 247, 0, 0, 4719, 4721, 3, 58, 29, 0, 4720, 4717, 1, 0, 0, 0, 4720, 4718, 1, 0, 0, 0, 4721, 4722, 1, 0, 0, 0, 4722, 4720, 1, 0, 0, 0, 4722, 4723, 1, 0, 0, 0, 4723, 419, 1, 0, 0, 0, 4724, 4725, 5, 46, 0, 0, 4725, 4726, 5, 41, 0, 0, 4726, 4727, 5, 2, 0, 0, 4727, 4728, 3, 652, 326, 0, 4728, 4729, 5, 36, 0, 0, 4729, 4730, 3, 652, 326, 0, 4730, 4747, 5, 3, 0, 0, 4731, 4732, 5, 379, 0, 0, 4732, 4735, 5, 211, 0, 0, 4733, 4734, 5, 36, 0, 0, 4734, 4736, 7, 60, 0, 0, 4735, 4733, 1, 0, 0, 0, 4735, 4736, 1, 0, 0, 0, 4736, 4748, 1, 0, 0, 0, 4737, 4741, 5, 105, 0, 0, 4738, 4739, 5, 211, 0, 0, 4739, 4742, 3, 382, 191, 0, 4740, 4742, 5, 400, 0, 0, 4741, 4738, 1, 0, 0, 0, 4741, 4740, 1, 0, 0, 0, 4742, 4745, 1, 0, 0, 0, 4743, 4744, 5, 36, 0, 0, 4744, 4746, 7, 60, 0, 0, 4745, 4743, 1, 0, 0, 0, 4745, 4746, 1, 0, 0, 0, 4746, 4748, 1, 0, 0, 0, 4747, 4731, 1, 0, 0, 0, 4747, 4737, 1, 0, 0, 0, 4748, 421, 1, 0, 0, 0, 4749, 4750, 5, 220, 0, 0, 4750, 4751, 5, 396, 0, 0, 4751, 423, 1, 0, 0, 0, 4752, 4754, 5, 46, 0, 0, 4753, 4755, 3, 366, 183, 0, 4754, 4753, 1, 0, 0, 0, 4754, 4755, 1, 0, 0, 0, 4755, 4756, 1, 0, 0, 0, 4756, 4757, 5, 443, 0, 0, 4757, 4758, 5, 62, 0, 0, 4758, 4759, 3, 652, 326, 0, 4759, 4760, 5, 247, 0, 0, 4760, 4761, 3, 818, 409, 0, 4761, 4776, 5, 2, 0, 0, 4762, 4763, 5, 64, 0, 0, 4763, 4767, 3, 426, 213, 0, 4764, 4765, 5, 6, 0, 0, 4765, 4766, 5, 94, 0, 0, 4766, 4768, 3, 426, 213, 0, 4767, 4764, 1, 0, 0, 0, 4767, 4768, 1, 0, 0, 0, 4768, 4777, 1, 0, 0, 0, 4769, 4770, 5, 94, 0, 0, 4770, 4774, 3, 426, 213, 0, 4771, 4772, 5, 6, 0, 0, 4772, 4773, 5, 64, 0, 0, 4773, 4775, 3, 426, 213, 0, 4774, 4771, 1, 0, 0, 0, 4774, 4775, 1, 0, 0, 0, 4775, 4777, 1, 0, 0, 0, 4776, 4762, 1, 0, 0, 0, 4776, 4769, 1, 0, 0, 0, 4777, 4778, 1, 0, 0, 0, 4778, 4779, 5, 3, 0, 0, 4779, 425, 1, 0, 0, 0, 4780, 4781, 5, 461, 0, 0, 4781, 4782, 5, 105, 0, 0, 4782, 4783, 5, 211, 0, 0, 4783, 4784, 3, 382, 191, 0, 4784, 427, 1, 0, 0, 0, 4785, 4796, 5, 306, 0, 0, 4786, 4787, 5, 2, 0, 0, 4787, 4792, 5, 128, 0, 0, 4788, 4789, 5, 6, 0, 0, 4789, 4791, 5, 128, 0, 0, 4790, 4788, 1, 0, 0, 0, 4791, 4794, 1, 0, 0, 0, 4792, 4790, 1, 0, 0, 0, 4792, 4793, 1, 0, 0, 0, 4793, 4795, 1, 0, 0, 0, 4794, 4792, 1, 0, 0, 0, 4795, 4797, 5, 3, 0, 0, 4796, 4786, 1, 0, 0, 0, 4796, 4797, 1, 0, 0, 0, 4797, 4823, 1, 0, 0, 0, 4798, 4800, 5, 226, 0, 0, 4799, 4801, 5, 109, 0, 0, 4800, 4799, 1, 0, 0, 0, 4800, 4801, 1, 0, 0, 0, 4801, 4802, 1, 0, 0, 0, 4802, 4824, 3, 780, 390, 0, 4803, 4805, 5, 92, 0, 0, 4804, 4806, 5, 109, 0, 0, 4805, 4804, 1, 0, 0, 0, 4805, 4806, 1, 0, 0, 0, 4806, 4807, 1, 0, 0, 0, 4807, 4824, 3, 774, 387, 0, 4808, 4810, 5, 323, 0, 0, 4809, 4811, 5, 109, 0, 0, 4810, 4809, 1, 0, 0, 0, 4810, 4811, 1, 0, 0, 0, 4811, 4812, 1, 0, 0, 0, 4812, 4824, 3, 790, 395, 0, 4813, 4815, 5, 349, 0, 0, 4814, 4816, 5, 109, 0, 0, 4815, 4814, 1, 0, 0, 0, 4815, 4816, 1, 0, 0, 0, 4816, 4817, 1, 0, 0, 0, 4817, 4824, 3, 818, 409, 0, 4818, 4820, 5, 175, 0, 0, 4819, 4821, 5, 109, 0, 0, 4820, 4819, 1, 0, 0, 0, 4820, 4821, 1, 0, 0, 0, 4821, 4822, 1, 0, 0, 0, 4822, 4824, 3, 788, 394, 0, 4823, 4798, 1, 0, 0, 0, 4823, 4803, 1, 0, 0, 0, 4823, 4808, 1, 0, 0, 0, 4823, 4813, 1, 0, 0, 0, 4823, 4818, 1, 0, 0, 0, 4824, 429, 1, 0, 0, 0, 4825, 4826, 5, 138, 0, 0, 4826, 4827, 3, 176, 88, 0, 4827, 4828, 7, 16, 0, 0, 4828, 4829, 3, 100, 50, 0, 4829, 431, 1, 0, 0, 0, 4830, 4835, 5, 138, 0, 0, 4831, 4832, 5, 136, 0, 0, 4832, 4836, 3, 394, 197, 0, 4833, 4834, 5, 442, 0, 0, 4834, 4836, 3, 374, 187, 0, 4835, 4831, 1, 0, 0, 0, 4835, 4833, 1, 0, 0, 0, 4836, 4837, 1, 0, 0, 0, 4837, 4838, 5, 309, 0, 0, 4838, 4839, 5, 94, 0, 0, 4839, 4840, 3, 818, 409, 0, 4840, 5038, 1, 0, 0, 0, 4841, 4842, 5, 138, 0, 0, 4842, 4843, 5, 175, 0, 0, 4843, 4844, 3, 788, 394, 0, 4844, 4845, 5, 309, 0, 0, 4845, 4846, 5, 94, 0, 0, 4846, 4847, 3, 786, 393, 0, 4847, 5038, 1, 0, 0, 0, 4848, 4849, 5, 138, 0, 0, 4849, 4850, 7, 61, 0, 0, 4850, 4851, 3, 316, 158, 0, 4851, 4852, 5, 309, 0, 0, 4852, 4853, 5, 94, 0, 0, 4853, 4854, 3, 818, 409, 0, 4854, 5038, 1, 0, 0, 0, 4855, 4856, 5, 138, 0, 0, 4856, 4857, 5, 211, 0, 0, 4857, 4858, 3, 382, 191, 0, 4858, 4859, 5, 309, 0, 0, 4859, 4860, 5, 94, 0, 0, 4860, 4861, 3, 804, 402, 0, 4861, 5038, 1, 0, 0, 0, 4862, 4863, 5, 138, 0, 0, 4863, 4864, 5, 278, 0, 0, 4864, 4865, 7, 31, 0, 0, 4865, 4866, 3, 316, 158, 0, 4866, 4867, 3, 170, 85, 0, 4867, 4868, 5, 309, 0, 0, 4868, 4869, 5, 94, 0, 0, 4869, 4870, 3, 818, 409, 0, 4870, 5038, 1, 0, 0, 0, 4871, 4872, 5, 138, 0, 0, 4872, 4873, 5, 296, 0, 0, 4873, 4874, 3, 378, 189, 0, 4874, 4875, 5, 309, 0, 0, 4875, 4876, 5, 94, 0, 0, 4876, 4877, 3, 798, 399, 0, 4877, 5038, 1, 0, 0, 0, 4878, 4879, 5, 138, 0, 0, 4879, 4880, 5, 323, 0, 0, 4880, 4881, 3, 790, 395, 0, 4881, 4882, 5, 309, 0, 0, 4882, 4883, 5, 94, 0, 0, 4883, 4884, 3, 32, 16, 0, 4884, 5038, 1, 0, 0, 0, 4885, 4886, 5, 138, 0, 0, 4886, 4888, 7, 62, 0, 0, 4887, 4889, 3, 422, 211, 0, 4888, 4887, 1, 0, 0, 0, 4888, 4889, 1, 0, 0, 0, 4889, 4890, 1, 0, 0, 0, 4890, 4891, 3, 780, 390, 0, 4891, 4892, 5, 309, 0, 0, 4892, 4893, 5, 94, 0, 0, 4893, 4894, 3, 818, 409, 0, 4894, 5038, 1, 0, 0, 0, 4895, 4897, 5, 138, 0, 0, 4896, 4898, 5, 259, 0, 0, 4897, 4896, 1, 0, 0, 0, 4897, 4898, 1, 0, 0, 0, 4898, 4899, 1, 0, 0, 0, 4899, 4901, 5, 376, 0, 0, 4900, 4902, 3, 422, 211, 0, 4901, 4900, 1, 0, 0, 0, 4901, 4902, 1, 0, 0, 0, 4902, 4903, 1, 0, 0, 0, 4903, 4904, 3, 778, 389, 0, 4904, 4905, 5, 309, 0, 0, 4905, 4906, 5, 94, 0, 0, 4906, 4907, 3, 776, 388, 0, 4907, 5038, 1, 0, 0, 0, 4908, 4910, 5, 138, 0, 0, 4909, 4911, 5, 63, 0, 0, 4910, 4909, 1, 0, 0, 0, 4910, 4911, 1, 0, 0, 0, 4911, 4912, 1, 0, 0, 0, 4912, 4914, 5, 92, 0, 0, 4913, 4915, 3, 422, 211, 0, 4914, 4913, 1, 0, 0, 0, 4914, 4915, 1, 0, 0, 0, 4915, 4916, 1, 0, 0, 0, 4916, 4917, 3, 624, 312, 0, 4917, 4918, 5, 309, 0, 0, 4918, 4919, 5, 94, 0, 0, 4919, 4920, 3, 772, 386, 0, 4920, 5038, 1, 0, 0, 0, 4921, 4946, 5, 138, 0, 0, 4922, 4924, 5, 63, 0, 0, 4923, 4922, 1, 0, 0, 0, 4923, 4924, 1, 0, 0, 0, 4924, 4925, 1, 0, 0, 0, 4925, 4927, 5, 92, 0, 0, 4926, 4928, 3, 422, 211, 0, 4927, 4926, 1, 0, 0, 0, 4927, 4928, 1, 0, 0, 0, 4928, 4929, 1, 0, 0, 0, 4929, 4930, 3, 624, 312, 0, 4930, 4932, 5, 309, 0, 0, 4931, 4933, 5, 44, 0, 0, 4932, 4931, 1, 0, 0, 0, 4932, 4933, 1, 0, 0, 0, 4933, 4947, 1, 0, 0, 0, 4934, 4936, 5, 259, 0, 0, 4935, 4934, 1, 0, 0, 0, 4935, 4936, 1, 0, 0, 0, 4936, 4937, 1, 0, 0, 0, 4937, 4939, 5, 376, 0, 0, 4938, 4940, 3, 422, 211, 0, 4939, 4938, 1, 0, 0, 0, 4939, 4940, 1, 0, 0, 0, 4940, 4941, 1, 0, 0, 0, 4941, 4942, 3, 778, 389, 0, 4942, 4944, 5, 309, 0, 0, 4943, 4945, 5, 44, 0, 0, 4944, 4943, 1, 0, 0, 0, 4944, 4945, 1, 0, 0, 0, 4945, 4947, 1, 0, 0, 0, 4946, 4923, 1, 0, 0, 0, 4946, 4935, 1, 0, 0, 0, 4947, 4948, 1, 0, 0, 0, 4948, 4949, 3, 800, 400, 0, 4949, 4950, 5, 94, 0, 0, 4950, 4951, 3, 802, 401, 0, 4951, 5038, 1, 0, 0, 0, 4952, 4960, 5, 138, 0, 0, 4953, 4955, 5, 92, 0, 0, 4954, 4956, 3, 422, 211, 0, 4955, 4954, 1, 0, 0, 0, 4955, 4956, 1, 0, 0, 0, 4956, 4957, 1, 0, 0, 0, 4957, 4961, 3, 624, 312, 0, 4958, 4959, 5, 189, 0, 0, 4959, 4961, 3, 316, 158, 0, 4960, 4953, 1, 0, 0, 0, 4960, 4958, 1, 0, 0, 0, 4961, 4962, 1, 0, 0, 0, 4962, 4963, 5, 309, 0, 0, 4963, 4964, 5, 45, 0, 0, 4964, 4965, 3, 818, 409, 0, 4965, 4966, 5, 94, 0, 0, 4966, 4967, 3, 818, 409, 0, 4967, 5038, 1, 0, 0, 0, 4968, 4975, 5, 138, 0, 0, 4969, 4971, 5, 445, 0, 0, 4970, 4972, 3, 422, 211, 0, 4971, 4970, 1, 0, 0, 0, 4971, 4972, 1, 0, 0, 0, 4972, 4976, 1, 0, 0, 0, 4973, 4976, 5, 321, 0, 0, 4974, 4976, 5, 357, 0, 0, 4975, 4969, 1, 0, 0, 0, 4975, 4973, 1, 0, 0, 0, 4975, 4974, 1, 0, 0, 0, 4976, 4977, 1, 0, 0, 0, 4977, 4978, 3, 818, 409, 0, 4978, 4979, 5, 80, 0, 0, 4979, 4980, 3, 780, 390, 0, 4980, 4981, 5, 309, 0, 0, 4981, 4982, 5, 94, 0, 0, 4982, 4983, 3, 818, 409, 0, 4983, 5038, 1, 0, 0, 0, 4984, 4997, 5, 138, 0, 0, 4985, 4986, 5, 63, 0, 0, 4986, 4987, 5, 174, 0, 0, 4987, 4998, 5, 381, 0, 0, 4988, 4990, 5, 295, 0, 0, 4989, 4988, 1, 0, 0, 0, 4989, 4990, 1, 0, 0, 0, 4990, 4991, 1, 0, 0, 0, 4991, 4998, 5, 247, 0, 0, 4992, 4998, 5, 452, 0, 0, 4993, 4998, 5, 331, 0, 0, 4994, 4998, 5, 451, 0, 0, 4995, 4996, 5, 198, 0, 0, 4996, 4998, 5, 357, 0, 0, 4997, 4985, 1, 0, 0, 0, 4997, 4989, 1, 0, 0, 0, 4997, 4992, 1, 0, 0, 0, 4997, 4993, 1, 0, 0, 0, 4997, 4994, 1, 0, 0, 0, 4997, 4995, 1, 0, 0, 0, 4998, 4999, 1, 0, 0, 0, 4999, 5000, 3, 818, 409, 0, 5000, 5001, 5, 309, 0, 0, 5001, 5002, 5, 94, 0, 0, 5002, 5003, 3, 818, 409, 0, 5003, 5038, 1, 0, 0, 0, 5004, 5005, 5, 138, 0, 0, 5005, 5006, 7, 45, 0, 0, 5006, 5007, 3, 814, 407, 0, 5007, 5008, 5, 309, 0, 0, 5008, 5009, 5, 94, 0, 0, 5009, 5010, 3, 814, 407, 0, 5010, 5038, 1, 0, 0, 0, 5011, 5012, 5, 138, 0, 0, 5012, 5013, 3, 176, 88, 0, 5013, 5014, 5, 309, 0, 0, 5014, 5015, 5, 94, 0, 0, 5015, 5016, 3, 768, 384, 0, 5016, 5038, 1, 0, 0, 0, 5017, 5018, 5, 138, 0, 0, 5018, 5019, 5, 355, 0, 0, 5019, 5020, 5, 325, 0, 0, 5020, 5021, 7, 41, 0, 0, 5021, 5022, 3, 316, 158, 0, 5022, 5023, 5, 309, 0, 0, 5023, 5024, 5, 94, 0, 0, 5024, 5025, 3, 818, 409, 0, 5025, 5038, 1, 0, 0, 0, 5026, 5027, 5, 138, 0, 0, 5027, 5028, 5, 360, 0, 0, 5028, 5029, 3, 316, 158, 0, 5029, 5030, 5, 309, 0, 0, 5030, 5031, 5, 143, 0, 0, 5031, 5032, 3, 818, 409, 0, 5032, 5033, 5, 94, 0, 0, 5033, 5035, 3, 818, 409, 0, 5034, 5036, 3, 96, 48, 0, 5035, 5034, 1, 0, 0, 0, 5035, 5036, 1, 0, 0, 0, 5036, 5038, 1, 0, 0, 0, 5037, 4830, 1, 0, 0, 0, 5037, 4841, 1, 0, 0, 0, 5037, 4848, 1, 0, 0, 0, 5037, 4855, 1, 0, 0, 0, 5037, 4862, 1, 0, 0, 0, 5037, 4871, 1, 0, 0, 0, 5037, 4878, 1, 0, 0, 0, 5037, 4885, 1, 0, 0, 0, 5037, 4895, 1, 0, 0, 0, 5037, 4908, 1, 0, 0, 0, 5037, 4921, 1, 0, 0, 0, 5037, 4952, 1, 0, 0, 0, 5037, 4968, 1, 0, 0, 0, 5037, 4984, 1, 0, 0, 0, 5037, 5004, 1, 0, 0, 0, 5037, 5011, 1, 0, 0, 0, 5037, 5017, 1, 0, 0, 0, 5037, 5026, 1, 0, 0, 0, 5038, 433, 1, 0, 0, 0, 5039, 5056, 5, 138, 0, 0, 5040, 5041, 5, 211, 0, 0, 5041, 5057, 3, 382, 191, 0, 5042, 5043, 5, 296, 0, 0, 5043, 5057, 3, 378, 189, 0, 5044, 5045, 5, 442, 0, 0, 5045, 5057, 3, 374, 187, 0, 5046, 5047, 5, 357, 0, 0, 5047, 5048, 3, 818, 409, 0, 5048, 5049, 5, 80, 0, 0, 5049, 5050, 3, 780, 390, 0, 5050, 5057, 1, 0, 0, 0, 5051, 5052, 5, 259, 0, 0, 5052, 5053, 5, 376, 0, 0, 5053, 5057, 3, 778, 389, 0, 5054, 5055, 5, 226, 0, 0, 5055, 5057, 3, 780, 390, 0, 5056, 5040, 1, 0, 0, 0, 5056, 5042, 1, 0, 0, 0, 5056, 5044, 1, 0, 0, 0, 5056, 5046, 1, 0, 0, 0, 5056, 5051, 1, 0, 0, 0, 5056, 5054, 1, 0, 0, 0, 5057, 5059, 1, 0, 0, 0, 5058, 5060, 5, 269, 0, 0, 5059, 5058, 1, 0, 0, 0, 5059, 5060, 1, 0, 0, 0, 5060, 5061, 1, 0, 0, 0, 5061, 5062, 5, 462, 0, 0, 5062, 5063, 5, 80, 0, 0, 5063, 5064, 5, 204, 0, 0, 5064, 5065, 3, 818, 409, 0, 5065, 435, 1, 0, 0, 0, 5066, 5105, 5, 138, 0, 0, 5067, 5068, 5, 136, 0, 0, 5068, 5106, 3, 394, 197, 0, 5069, 5070, 5, 204, 0, 0, 5070, 5106, 3, 818, 409, 0, 5071, 5072, 5, 211, 0, 0, 5072, 5106, 3, 382, 191, 0, 5073, 5074, 5, 278, 0, 0, 5074, 5106, 3, 416, 208, 0, 5075, 5076, 5, 278, 0, 0, 5076, 5077, 7, 31, 0, 0, 5077, 5078, 3, 316, 158, 0, 5078, 5079, 3, 170, 85, 0, 5079, 5106, 1, 0, 0, 0, 5080, 5081, 5, 296, 0, 0, 5081, 5106, 3, 378, 189, 0, 5082, 5083, 5, 442, 0, 0, 5083, 5106, 3, 374, 187, 0, 5084, 5086, 5, 328, 0, 0, 5085, 5087, 3, 422, 211, 0, 5086, 5085, 1, 0, 0, 0, 5086, 5087, 1, 0, 0, 0, 5087, 5088, 1, 0, 0, 0, 5088, 5106, 3, 780, 390, 0, 5089, 5091, 5, 259, 0, 0, 5090, 5089, 1, 0, 0, 0, 5090, 5091, 1, 0, 0, 0, 5091, 5092, 1, 0, 0, 0, 5092, 5094, 5, 376, 0, 0, 5093, 5095, 3, 422, 211, 0, 5094, 5093, 1, 0, 0, 0, 5094, 5095, 1, 0, 0, 0, 5095, 5096, 1, 0, 0, 0, 5096, 5106, 3, 778, 389, 0, 5097, 5099, 5, 63, 0, 0, 5098, 5097, 1, 0, 0, 0, 5098, 5099, 1, 0, 0, 0, 5099, 5100, 1, 0, 0, 0, 5100, 5102, 5, 92, 0, 0, 5101, 5103, 3, 422, 211, 0, 5102, 5101, 1, 0, 0, 0, 5102, 5103, 1, 0, 0, 0, 5103, 5104, 1, 0, 0, 0, 5104, 5106, 3, 624, 312, 0, 5105, 5067, 1, 0, 0, 0, 5105, 5069, 1, 0, 0, 0, 5105, 5071, 1, 0, 0, 0, 5105, 5073, 1, 0, 0, 0, 5105, 5075, 1, 0, 0, 0, 5105, 5080, 1, 0, 0, 0, 5105, 5082, 1, 0, 0, 0, 5105, 5084, 1, 0, 0, 0, 5105, 5090, 1, 0, 0, 0, 5105, 5098, 1, 0, 0, 0, 5106, 5107, 1, 0, 0, 0, 5107, 5108, 5, 333, 0, 0, 5108, 5109, 5, 323, 0, 0, 5109, 5110, 3, 790, 395, 0, 5110, 5128, 1, 0, 0, 0, 5111, 5120, 5, 138, 0, 0, 5112, 5113, 5, 355, 0, 0, 5113, 5114, 5, 325, 0, 0, 5114, 5121, 7, 41, 0, 0, 5115, 5121, 5, 108, 0, 0, 5116, 5121, 5, 168, 0, 0, 5117, 5121, 5, 189, 0, 0, 5118, 5121, 5, 342, 0, 0, 5119, 5121, 5, 360, 0, 0, 5120, 5112, 1, 0, 0, 0, 5120, 5115, 1, 0, 0, 0, 5120, 5116, 1, 0, 0, 0, 5120, 5117, 1, 0, 0, 0, 5120, 5118, 1, 0, 0, 0, 5120, 5119, 1, 0, 0, 0, 5121, 5122, 1, 0, 0, 0, 5122, 5123, 3, 316, 158, 0, 5123, 5124, 5, 333, 0, 0, 5124, 5125, 5, 323, 0, 0, 5125, 5126, 3, 790, 395, 0, 5126, 5128, 1, 0, 0, 0, 5127, 5066, 1, 0, 0, 0, 5127, 5111, 1, 0, 0, 0, 5128, 437, 1, 0, 0, 0, 5129, 5130, 5, 138, 0, 0, 5130, 5131, 5, 278, 0, 0, 5131, 5132, 3, 416, 208, 0, 5132, 5133, 5, 333, 0, 0, 5133, 5134, 3, 440, 220, 0, 5134, 439, 1, 0, 0, 0, 5135, 5136, 5, 2, 0, 0, 5136, 5141, 3, 442, 221, 0, 5137, 5138, 5, 6, 0, 0, 5138, 5140, 3, 442, 221, 0, 5139, 5137, 1, 0, 0, 0, 5140, 5143, 1, 0, 0, 0, 5141, 5139, 1, 0, 0, 0, 5141, 5142, 1, 0, 0, 0, 5142, 5144, 1, 0, 0, 0, 5143, 5141, 1, 0, 0, 0, 5144, 5145, 5, 3, 0, 0, 5145, 441, 1, 0, 0, 0, 5146, 5147, 3, 824, 412, 0, 5147, 5154, 5, 10, 0, 0, 5148, 5155, 5, 407, 0, 0, 5149, 5155, 3, 388, 194, 0, 5150, 5155, 3, 834, 417, 0, 5151, 5155, 3, 726, 363, 0, 5152, 5155, 3, 202, 101, 0, 5153, 5155, 3, 808, 404, 0, 5154, 5148, 1, 0, 0, 0, 5154, 5149, 1, 0, 0, 0, 5154, 5150, 1, 0, 0, 0, 5154, 5151, 1, 0, 0, 0, 5154, 5152, 1, 0, 0, 0, 5154, 5153, 1, 0, 0, 0, 5155, 443, 1, 0, 0, 0, 5156, 5157, 5, 138, 0, 0, 5157, 5158, 5, 360, 0, 0, 5158, 5159, 3, 316, 158, 0, 5159, 5160, 5, 333, 0, 0, 5160, 5161, 3, 440, 220, 0, 5161, 445, 1, 0, 0, 0, 5162, 5163, 5, 138, 0, 0, 5163, 5164, 5, 278, 0, 0, 5164, 5165, 7, 31, 0, 0, 5165, 5166, 3, 316, 158, 0, 5166, 5167, 3, 170, 85, 0, 5167, 5168, 5, 282, 0, 0, 5168, 5169, 5, 94, 0, 0, 5169, 5170, 3, 814, 407, 0, 5170, 5237, 1, 0, 0, 0, 5171, 5198, 5, 138, 0, 0, 5172, 5173, 5, 136, 0, 0, 5173, 5199, 3, 394, 197, 0, 5174, 5175, 5, 175, 0, 0, 5175, 5199, 3, 788, 394, 0, 5176, 5177, 5, 211, 0, 0, 5177, 5199, 3, 382, 191, 0, 5178, 5180, 5, 295, 0, 0, 5179, 5178, 1, 0, 0, 0, 5179, 5180, 1, 0, 0, 0, 5180, 5181, 1, 0, 0, 0, 5181, 5182, 5, 247, 0, 0, 5182, 5199, 3, 818, 409, 0, 5183, 5184, 5, 248, 0, 0, 5184, 5185, 5, 274, 0, 0, 5185, 5199, 3, 202, 101, 0, 5186, 5187, 5, 248, 0, 0, 5187, 5188, 5, 274, 0, 0, 5188, 5199, 3, 202, 101, 0, 5189, 5190, 5, 278, 0, 0, 5190, 5199, 3, 416, 208, 0, 5191, 5192, 5, 296, 0, 0, 5192, 5199, 3, 378, 189, 0, 5193, 5194, 5, 442, 0, 0, 5194, 5199, 3, 374, 187, 0, 5195, 5196, 5, 323, 0, 0, 5196, 5199, 3, 790, 395, 0, 5197, 5199, 3, 176, 88, 0, 5198, 5172, 1, 0, 0, 0, 5198, 5174, 1, 0, 0, 0, 5198, 5176, 1, 0, 0, 0, 5198, 5179, 1, 0, 0, 0, 5198, 5183, 1, 0, 0, 0, 5198, 5186, 1, 0, 0, 0, 5198, 5189, 1, 0, 0, 0, 5198, 5191, 1, 0, 0, 0, 5198, 5193, 1, 0, 0, 0, 5198, 5195, 1, 0, 0, 0, 5198, 5197, 1, 0, 0, 0, 5199, 5200, 1, 0, 0, 0, 5200, 5201, 5, 282, 0, 0, 5201, 5202, 5, 94, 0, 0, 5202, 5203, 3, 814, 407, 0, 5203, 5237, 1, 0, 0, 0, 5204, 5213, 5, 138, 0, 0, 5205, 5206, 5, 355, 0, 0, 5206, 5207, 5, 325, 0, 0, 5207, 5214, 7, 63, 0, 0, 5208, 5214, 5, 108, 0, 0, 5209, 5214, 5, 168, 0, 0, 5210, 5214, 5, 189, 0, 0, 5211, 5214, 5, 360, 0, 0, 5212, 5214, 5, 342, 0, 0, 5213, 5205, 1, 0, 0, 0, 5213, 5208, 1, 0, 0, 0, 5213, 5209, 1, 0, 0, 0, 5213, 5210, 1, 0, 0, 0, 5213, 5211, 1, 0, 0, 0, 5213, 5212, 1, 0, 0, 0, 5214, 5215, 1, 0, 0, 0, 5215, 5216, 3, 316, 158, 0, 5216, 5217, 5, 282, 0, 0, 5217, 5218, 5, 94, 0, 0, 5218, 5219, 3, 814, 407, 0, 5219, 5237, 1, 0, 0, 0, 5220, 5229, 5, 138, 0, 0, 5221, 5230, 5, 331, 0, 0, 5222, 5223, 5, 63, 0, 0, 5223, 5224, 5, 174, 0, 0, 5224, 5230, 5, 381, 0, 0, 5225, 5226, 5, 198, 0, 0, 5226, 5230, 5, 357, 0, 0, 5227, 5230, 5, 452, 0, 0, 5228, 5230, 5, 451, 0, 0, 5229, 5221, 1, 0, 0, 0, 5229, 5222, 1, 0, 0, 0, 5229, 5225, 1, 0, 0, 0, 5229, 5227, 1, 0, 0, 0, 5229, 5228, 1, 0, 0, 0, 5230, 5231, 1, 0, 0, 0, 5231, 5232, 3, 818, 409, 0, 5232, 5233, 5, 282, 0, 0, 5233, 5234, 5, 94, 0, 0, 5234, 5235, 3, 814, 407, 0, 5235, 5237, 1, 0, 0, 0, 5236, 5162, 1, 0, 0, 0, 5236, 5171, 1, 0, 0, 0, 5236, 5204, 1, 0, 0, 0, 5236, 5220, 1, 0, 0, 0, 5237, 447, 1, 0, 0, 0, 5238, 5239, 5, 46, 0, 0, 5239, 5240, 5, 452, 0, 0, 5240, 5247, 3, 818, 409, 0, 5241, 5242, 5, 62, 0, 0, 5242, 5243, 5, 92, 0, 0, 5243, 5248, 3, 628, 314, 0, 5244, 5245, 5, 62, 0, 0, 5245, 5246, 5, 30, 0, 0, 5246, 5248, 5, 350, 0, 0, 5247, 5241, 1, 0, 0, 0, 5247, 5244, 1, 0, 0, 0, 5247, 5248, 1, 0, 0, 0, 5248, 5250, 1, 0, 0, 0, 5249, 5251, 3, 400, 200, 0, 5250, 5249, 1, 0, 0, 0, 5250, 5251, 1, 0, 0, 0, 5251, 449, 1, 0, 0, 0, 5252, 5253, 5, 138, 0, 0, 5253, 5254, 5, 452, 0, 0, 5254, 5272, 3, 818, 409, 0, 5255, 5256, 5, 282, 0, 0, 5256, 5257, 5, 94, 0, 0, 5257, 5273, 3, 814, 407, 0, 5258, 5259, 5, 333, 0, 0, 5259, 5273, 3, 284, 142, 0, 5260, 5261, 5, 309, 0, 0, 5261, 5262, 5, 94, 0, 0, 5262, 5273, 3, 818, 409, 0, 5263, 5264, 7, 34, 0, 0, 5264, 5269, 3, 626, 313, 0, 5265, 5266, 5, 6, 0, 0, 5266, 5268, 3, 626, 313, 0, 5267, 5265, 1, 0, 0, 0, 5268, 5271, 1, 0, 0, 0, 5269, 5267, 1, 0, 0, 0, 5269, 5270, 1, 0, 0, 0, 5270, 5273, 1, 0, 0, 0, 5271, 5269, 1, 0, 0, 0, 5272, 5255, 1, 0, 0, 0, 5272, 5258, 1, 0, 0, 0, 5272, 5260, 1, 0, 0, 0, 5272, 5263, 1, 0, 0, 0, 5273, 451, 1, 0, 0, 0, 5274, 5275, 5, 46, 0, 0, 5275, 5276, 5, 451, 0, 0, 5276, 5277, 3, 818, 409, 0, 5277, 5278, 5, 164, 0, 0, 5278, 5279, 3, 808, 404, 0, 5279, 5280, 5, 452, 0, 0, 5280, 5285, 3, 824, 412, 0, 5281, 5282, 5, 6, 0, 0, 5282, 5284, 3, 824, 412, 0, 5283, 5281, 1, 0, 0, 0, 5284, 5287, 1, 0, 0, 0, 5285, 5283, 1, 0, 0, 0, 5285, 5286, 1, 0, 0, 0, 5286, 5289, 1, 0, 0, 0, 5287, 5285, 1, 0, 0, 0, 5288, 5290, 3, 400, 200, 0, 5289, 5288, 1, 0, 0, 0, 5289, 5290, 1, 0, 0, 0, 5290, 453, 1, 0, 0, 0, 5291, 5292, 5, 138, 0, 0, 5292, 5293, 5, 451, 0, 0, 5293, 5294, 3, 818, 409, 0, 5294, 5295, 5, 333, 0, 0, 5295, 5296, 3, 284, 142, 0, 5296, 5348, 1, 0, 0, 0, 5297, 5298, 5, 138, 0, 0, 5298, 5299, 5, 451, 0, 0, 5299, 5300, 3, 818, 409, 0, 5300, 5301, 5, 164, 0, 0, 5301, 5302, 3, 808, 404, 0, 5302, 5348, 1, 0, 0, 0, 5303, 5304, 5, 138, 0, 0, 5304, 5305, 5, 451, 0, 0, 5305, 5306, 3, 818, 409, 0, 5306, 5307, 5, 305, 0, 0, 5307, 5309, 5, 452, 0, 0, 5308, 5310, 3, 400, 200, 0, 5309, 5308, 1, 0, 0, 0, 5309, 5310, 1, 0, 0, 0, 5310, 5348, 1, 0, 0, 0, 5311, 5312, 5, 138, 0, 0, 5312, 5313, 5, 451, 0, 0, 5313, 5314, 3, 818, 409, 0, 5314, 5315, 7, 34, 0, 0, 5315, 5316, 5, 452, 0, 0, 5316, 5321, 3, 824, 412, 0, 5317, 5318, 5, 6, 0, 0, 5318, 5320, 3, 824, 412, 0, 5319, 5317, 1, 0, 0, 0, 5320, 5323, 1, 0, 0, 0, 5321, 5319, 1, 0, 0, 0, 5321, 5322, 1, 0, 0, 0, 5322, 5325, 1, 0, 0, 0, 5323, 5321, 1, 0, 0, 0, 5324, 5326, 3, 400, 200, 0, 5325, 5324, 1, 0, 0, 0, 5325, 5326, 1, 0, 0, 0, 5326, 5348, 1, 0, 0, 0, 5327, 5328, 5, 138, 0, 0, 5328, 5329, 5, 451, 0, 0, 5329, 5330, 3, 818, 409, 0, 5330, 5331, 7, 64, 0, 0, 5331, 5348, 1, 0, 0, 0, 5332, 5333, 5, 138, 0, 0, 5333, 5334, 5, 451, 0, 0, 5334, 5335, 3, 818, 409, 0, 5335, 5336, 5, 465, 0, 0, 5336, 5337, 5, 2, 0, 0, 5337, 5338, 3, 290, 145, 0, 5338, 5339, 5, 3, 0, 0, 5339, 5348, 1, 0, 0, 0, 5340, 5341, 5, 138, 0, 0, 5341, 5342, 5, 451, 0, 0, 5342, 5343, 3, 818, 409, 0, 5343, 5344, 5, 282, 0, 0, 5344, 5345, 5, 94, 0, 0, 5345, 5346, 3, 814, 407, 0, 5346, 5348, 1, 0, 0, 0, 5347, 5291, 1, 0, 0, 0, 5347, 5297, 1, 0, 0, 0, 5347, 5303, 1, 0, 0, 0, 5347, 5311, 1, 0, 0, 0, 5347, 5327, 1, 0, 0, 0, 5347, 5332, 1, 0, 0, 0, 5347, 5340, 1, 0, 0, 0, 5348, 455, 1, 0, 0, 0, 5349, 5351, 5, 46, 0, 0, 5350, 5352, 3, 366, 183, 0, 5351, 5350, 1, 0, 0, 0, 5351, 5352, 1, 0, 0, 0, 5352, 5353, 1, 0, 0, 0, 5353, 5354, 5, 321, 0, 0, 5354, 5355, 3, 818, 409, 0, 5355, 5356, 5, 36, 0, 0, 5356, 5357, 5, 80, 0, 0, 5357, 5358, 7, 65, 0, 0, 5358, 5359, 5, 94, 0, 0, 5359, 5361, 3, 780, 390, 0, 5360, 5362, 3, 638, 319, 0, 5361, 5360, 1, 0, 0, 0, 5361, 5362, 1, 0, 0, 0, 5362, 5363, 1, 0, 0, 0, 5363, 5365, 5, 57, 0, 0, 5364, 5366, 7, 66, 0, 0, 5365, 5364, 1, 0, 0, 0, 5365, 5366, 1, 0, 0, 0, 5366, 5383, 1, 0, 0, 0, 5367, 5384, 5, 270, 0, 0, 5368, 5384, 3, 458, 229, 0, 5369, 5371, 5, 2, 0, 0, 5370, 5372, 3, 458, 229, 0, 5371, 5370, 1, 0, 0, 0, 5371, 5372, 1, 0, 0, 0, 5372, 5379, 1, 0, 0, 0, 5373, 5375, 5, 7, 0, 0, 5374, 5376, 3, 458, 229, 0, 5375, 5374, 1, 0, 0, 0, 5375, 5376, 1, 0, 0, 0, 5376, 5378, 1, 0, 0, 0, 5377, 5373, 1, 0, 0, 0, 5378, 5381, 1, 0, 0, 0, 5379, 5377, 1, 0, 0, 0, 5379, 5380, 1, 0, 0, 0, 5380, 5382, 1, 0, 0, 0, 5381, 5379, 1, 0, 0, 0, 5382, 5384, 5, 3, 0, 0, 5383, 5367, 1, 0, 0, 0, 5383, 5368, 1, 0, 0, 0, 5383, 5369, 1, 0, 0, 0, 5384, 457, 1, 0, 0, 0, 5385, 5391, 3, 560, 280, 0, 5386, 5391, 3, 538, 269, 0, 5387, 5391, 3, 552, 276, 0, 5388, 5391, 3, 548, 274, 0, 5389, 5391, 3, 460, 230, 0, 5390, 5385, 1, 0, 0, 0, 5390, 5386, 1, 0, 0, 0, 5390, 5387, 1, 0, 0, 0, 5390, 5388, 1, 0, 0, 0, 5390, 5389, 1, 0, 0, 0, 5391, 459, 1, 0, 0, 0, 5392, 5393, 5, 271, 0, 0, 5393, 5395, 3, 818, 409, 0, 5394, 5396, 3, 462, 231, 0, 5395, 5394, 1, 0, 0, 0, 5395, 5396, 1, 0, 0, 0, 5396, 461, 1, 0, 0, 0, 5397, 5398, 5, 6, 0, 0, 5398, 5399, 3, 808, 404, 0, 5399, 463, 1, 0, 0, 0, 5400, 5401, 5, 252, 0, 0, 5401, 5402, 3, 818, 409, 0, 5402, 465, 1, 0, 0, 0, 5403, 5406, 5, 366, 0, 0, 5404, 5407, 3, 818, 409, 0, 5405, 5407, 5, 9, 0, 0, 5406, 5404, 1, 0, 0, 0, 5406, 5405, 1, 0, 0, 0, 5407, 467, 1, 0, 0, 0, 5408, 5410, 5, 146, 0, 0, 5409, 5411, 3, 470, 235, 0, 5410, 5409, 1, 0, 0, 0, 5410, 5411, 1, 0, 0, 0, 5411, 5413, 1, 0, 0, 0, 5412, 5414, 3, 474, 237, 0, 5413, 5412, 1, 0, 0, 0, 5413, 5414, 1, 0, 0, 0, 5414, 5454, 1, 0, 0, 0, 5415, 5416, 5, 340, 0, 0, 5416, 5418, 5, 356, 0, 0, 5417, 5419, 3, 474, 237, 0, 5418, 5417, 1, 0, 0, 0, 5418, 5419, 1, 0, 0, 0, 5419, 5454, 1, 0, 0, 0, 5420, 5421, 5, 322, 0, 0, 5421, 5454, 3, 818, 409, 0, 5422, 5424, 5, 308, 0, 0, 5423, 5425, 5, 322, 0, 0, 5424, 5423, 1, 0, 0, 0, 5424, 5425, 1, 0, 0, 0, 5425, 5426, 1, 0, 0, 0, 5426, 5454, 3, 818, 409, 0, 5427, 5428, 5, 290, 0, 0, 5428, 5429, 5, 356, 0, 0, 5429, 5454, 3, 808, 404, 0, 5430, 5431, 7, 67, 0, 0, 5431, 5432, 5, 291, 0, 0, 5432, 5454, 3, 808, 404, 0, 5433, 5435, 7, 68, 0, 0, 5434, 5436, 3, 470, 235, 0, 5435, 5434, 1, 0, 0, 0, 5435, 5436, 1, 0, 0, 0, 5436, 5442, 1, 0, 0, 0, 5437, 5439, 5, 33, 0, 0, 5438, 5440, 5, 269, 0, 0, 5439, 5438, 1, 0, 0, 0, 5439, 5440, 1, 0, 0, 0, 5440, 5441, 1, 0, 0, 0, 5441, 5443, 5, 153, 0, 0, 5442, 5437, 1, 0, 0, 0, 5442, 5443, 1, 0, 0, 0, 5443, 5454, 1, 0, 0, 0, 5444, 5446, 5, 319, 0, 0, 5445, 5447, 3, 470, 235, 0, 5446, 5445, 1, 0, 0, 0, 5446, 5447, 1, 0, 0, 0, 5447, 5448, 1, 0, 0, 0, 5448, 5450, 5, 94, 0, 0, 5449, 5451, 5, 322, 0, 0, 5450, 5449, 1, 0, 0, 0, 5450, 5451, 1, 0, 0, 0, 5451, 5452, 1, 0, 0, 0, 5452, 5454, 3, 818, 409, 0, 5453, 5408, 1, 0, 0, 0, 5453, 5415, 1, 0, 0, 0, 5453, 5420, 1, 0, 0, 0, 5453, 5422, 1, 0, 0, 0, 5453, 5427, 1, 0, 0, 0, 5453, 5430, 1, 0, 0, 0, 5453, 5433, 1, 0, 0, 0, 5453, 5444, 1, 0, 0, 0, 5454, 469, 1, 0, 0, 0, 5455, 5456, 7, 69, 0, 0, 5456, 471, 1, 0, 0, 0, 5457, 5458, 5, 244, 0, 0, 5458, 5459, 5, 251, 0, 0, 5459, 5467, 3, 50, 25, 0, 5460, 5461, 5, 300, 0, 0, 5461, 5467, 7, 70, 0, 0, 5462, 5464, 5, 77, 0, 0, 5463, 5462, 1, 0, 0, 0, 5463, 5464, 1, 0, 0, 0, 5464, 5465, 1, 0, 0, 0, 5465, 5467, 5, 54, 0, 0, 5466, 5457, 1, 0, 0, 0, 5466, 5460, 1, 0, 0, 0, 5466, 5463, 1, 0, 0, 0, 5467, 473, 1, 0, 0, 0, 5468, 5475, 3, 472, 236, 0, 5469, 5471, 5, 6, 0, 0, 5470, 5469, 1, 0, 0, 0, 5470, 5471, 1, 0, 0, 0, 5471, 5472, 1, 0, 0, 0, 5472, 5474, 3, 472, 236, 0, 5473, 5470, 1, 0, 0, 0, 5474, 5477, 1, 0, 0, 0, 5475, 5473, 1, 0, 0, 0, 5475, 5476, 1, 0, 0, 0, 5476, 475, 1, 0, 0, 0, 5477, 5475, 1, 0, 0, 0, 5478, 5481, 5, 46, 0, 0, 5479, 5480, 5, 82, 0, 0, 5480, 5482, 5, 311, 0, 0, 5481, 5479, 1, 0, 0, 0, 5481, 5482, 1, 0, 0, 0, 5482, 5484, 1, 0, 0, 0, 5483, 5485, 3, 122, 61, 0, 5484, 5483, 1, 0, 0, 0, 5484, 5485, 1, 0, 0, 0, 5485, 5501, 1, 0, 0, 0, 5486, 5487, 5, 376, 0, 0, 5487, 5489, 3, 776, 388, 0, 5488, 5490, 3, 146, 73, 0, 5489, 5488, 1, 0, 0, 0, 5489, 5490, 1, 0, 0, 0, 5490, 5492, 1, 0, 0, 0, 5491, 5493, 3, 102, 51, 0, 5492, 5491, 1, 0, 0, 0, 5492, 5493, 1, 0, 0, 0, 5493, 5502, 1, 0, 0, 0, 5494, 5495, 5, 303, 0, 0, 5495, 5496, 5, 376, 0, 0, 5496, 5497, 3, 776, 388, 0, 5497, 5499, 3, 144, 72, 0, 5498, 5500, 3, 102, 51, 0, 5499, 5498, 1, 0, 0, 0, 5499, 5500, 1, 0, 0, 0, 5500, 5502, 1, 0, 0, 0, 5501, 5486, 1, 0, 0, 0, 5501, 5494, 1, 0, 0, 0, 5502, 5503, 1, 0, 0, 0, 5503, 5504, 5, 36, 0, 0, 5504, 5511, 3, 560, 280, 0, 5505, 5507, 5, 105, 0, 0, 5506, 5508, 7, 71, 0, 0, 5507, 5506, 1, 0, 0, 0, 5507, 5508, 1, 0, 0, 0, 5508, 5509, 1, 0, 0, 0, 5509, 5510, 5, 42, 0, 0, 5510, 5512, 5, 279, 0, 0, 5511, 5505, 1, 0, 0, 0, 5511, 5512, 1, 0, 0, 0, 5512, 477, 1, 0, 0, 0, 5513, 5514, 5, 253, 0, 0, 5514, 5515, 3, 808, 404, 0, 5515, 479, 1, 0, 0, 0, 5516, 5517, 5, 46, 0, 0, 5517, 5518, 5, 175, 0, 0, 5518, 5520, 3, 786, 393, 0, 5519, 5521, 5, 105, 0, 0, 5520, 5519, 1, 0, 0, 0, 5520, 5521, 1, 0, 0, 0, 5521, 5527, 1, 0, 0, 0, 5522, 5524, 3, 482, 241, 0, 5523, 5522, 1, 0, 0, 0, 5524, 5525, 1, 0, 0, 0, 5525, 5523, 1, 0, 0, 0, 5525, 5526, 1, 0, 0, 0, 5526, 5528, 1, 0, 0, 0, 5527, 5523, 1, 0, 0, 0, 5527, 5528, 1, 0, 0, 0, 5528, 481, 1, 0, 0, 0, 5529, 5530, 5, 164, 0, 0, 5530, 5538, 5, 74, 0, 0, 5531, 5538, 5, 194, 0, 0, 5532, 5538, 5, 255, 0, 0, 5533, 5538, 5, 282, 0, 0, 5534, 5538, 5, 351, 0, 0, 5535, 5538, 5, 353, 0, 0, 5536, 5538, 3, 826, 413, 0, 5537, 5529, 1, 0, 0, 0, 5537, 5531, 1, 0, 0, 0, 5537, 5532, 1, 0, 0, 0, 5537, 5533, 1, 0, 0, 0, 5537, 5534, 1, 0, 0, 0, 5537, 5535, 1, 0, 0, 0, 5537, 5536, 1, 0, 0, 0, 5538, 5540, 1, 0, 0, 0, 5539, 5541, 5, 10, 0, 0, 5540, 5539, 1, 0, 0, 0, 5540, 5541, 1, 0, 0, 0, 5541, 5545, 1, 0, 0, 0, 5542, 5546, 3, 812, 406, 0, 5543, 5546, 3, 54, 27, 0, 5544, 5546, 5, 53, 0, 0, 5545, 5542, 1, 0, 0, 0, 5545, 5543, 1, 0, 0, 0, 5545, 5544, 1, 0, 0, 0, 5546, 483, 1, 0, 0, 0, 5547, 5548, 5, 138, 0, 0, 5548, 5549, 5, 175, 0, 0, 5549, 5565, 3, 788, 394, 0, 5550, 5551, 5, 333, 0, 0, 5551, 5552, 5, 351, 0, 0, 5552, 5554, 3, 768, 384, 0, 5553, 5550, 1, 0, 0, 0, 5553, 5554, 1, 0, 0, 0, 5554, 5566, 1, 0, 0, 0, 5555, 5557, 5, 105, 0, 0, 5556, 5555, 1, 0, 0, 0, 5556, 5557, 1, 0, 0, 0, 5557, 5559, 1, 0, 0, 0, 5558, 5560, 3, 482, 241, 0, 5559, 5558, 1, 0, 0, 0, 5560, 5561, 1, 0, 0, 0, 5561, 5559, 1, 0, 0, 0, 5561, 5562, 1, 0, 0, 0, 5562, 5564, 1, 0, 0, 0, 5563, 5556, 1, 0, 0, 0, 5563, 5564, 1, 0, 0, 0, 5564, 5566, 1, 0, 0, 0, 5565, 5553, 1, 0, 0, 0, 5565, 5563, 1, 0, 0, 0, 5566, 485, 1, 0, 0, 0, 5567, 5568, 5, 138, 0, 0, 5568, 5569, 5, 175, 0, 0, 5569, 5571, 3, 788, 394, 0, 5570, 5572, 3, 64, 32, 0, 5571, 5570, 1, 0, 0, 0, 5571, 5572, 1, 0, 0, 0, 5572, 487, 1, 0, 0, 0, 5573, 5574, 5, 138, 0, 0, 5574, 5575, 5, 108, 0, 0, 5575, 5576, 3, 316, 158, 0, 5576, 5577, 5, 305, 0, 0, 5577, 5578, 5, 375, 0, 0, 5578, 489, 1, 0, 0, 0, 5579, 5580, 5, 138, 0, 0, 5580, 5581, 5, 349, 0, 0, 5581, 5582, 7, 16, 0, 0, 5582, 5583, 3, 40, 20, 0, 5583, 491, 1, 0, 0, 0, 5584, 5585, 5, 46, 0, 0, 5585, 5586, 5, 189, 0, 0, 5586, 5588, 3, 316, 158, 0, 5587, 5589, 5, 36, 0, 0, 5588, 5587, 1, 0, 0, 0, 5588, 5589, 1, 0, 0, 0, 5589, 5590, 1, 0, 0, 0, 5590, 5594, 3, 652, 326, 0, 5591, 5593, 3, 134, 67, 0, 5592, 5591, 1, 0, 0, 0, 5593, 5596, 1, 0, 0, 0, 5594, 5592, 1, 0, 0, 0, 5594, 5595, 1, 0, 0, 0, 5595, 493, 1, 0, 0, 0, 5596, 5594, 1, 0, 0, 0, 5597, 5598, 5, 138, 0, 0, 5598, 5599, 5, 189, 0, 0, 5599, 5622, 3, 316, 158, 0, 5600, 5623, 3, 94, 47, 0, 5601, 5602, 7, 15, 0, 0, 5602, 5603, 5, 77, 0, 0, 5603, 5623, 5, 78, 0, 0, 5604, 5607, 5, 133, 0, 0, 5605, 5606, 5, 45, 0, 0, 5606, 5608, 3, 818, 409, 0, 5607, 5605, 1, 0, 0, 0, 5607, 5608, 1, 0, 0, 0, 5608, 5609, 1, 0, 0, 0, 5609, 5623, 3, 142, 71, 0, 5610, 5611, 5, 191, 0, 0, 5611, 5613, 5, 45, 0, 0, 5612, 5614, 3, 422, 211, 0, 5613, 5612, 1, 0, 0, 0, 5613, 5614, 1, 0, 0, 0, 5614, 5615, 1, 0, 0, 0, 5615, 5617, 3, 818, 409, 0, 5616, 5618, 3, 96, 48, 0, 5617, 5616, 1, 0, 0, 0, 5617, 5618, 1, 0, 0, 0, 5618, 5623, 1, 0, 0, 0, 5619, 5620, 5, 372, 0, 0, 5620, 5621, 5, 45, 0, 0, 5621, 5623, 3, 818, 409, 0, 5622, 5600, 1, 0, 0, 0, 5622, 5601, 1, 0, 0, 0, 5622, 5604, 1, 0, 0, 0, 5622, 5610, 1, 0, 0, 0, 5622, 5619, 1, 0, 0, 0, 5623, 495, 1, 0, 0, 0, 5624, 5625, 5, 138, 0, 0, 5625, 5626, 5, 355, 0, 0, 5626, 5627, 5, 325, 0, 0, 5627, 5628, 5, 185, 0, 0, 5628, 5629, 3, 316, 158, 0, 5629, 5630, 3, 284, 142, 0, 5630, 497, 1, 0, 0, 0, 5631, 5632, 5, 138, 0, 0, 5632, 5633, 5, 355, 0, 0, 5633, 5634, 5, 325, 0, 0, 5634, 5635, 5, 163, 0, 0, 5635, 5636, 3, 316, 158, 0, 5636, 5637, 7, 72, 0, 0, 5637, 5638, 5, 257, 0, 0, 5638, 5639, 5, 62, 0, 0, 5639, 5640, 3, 784, 392, 0, 5640, 5641, 5, 105, 0, 0, 5641, 5642, 3, 314, 157, 0, 5642, 5673, 1, 0, 0, 0, 5643, 5644, 5, 138, 0, 0, 5644, 5645, 5, 355, 0, 0, 5645, 5646, 5, 325, 0, 0, 5646, 5647, 5, 163, 0, 0, 5647, 5648, 3, 316, 158, 0, 5648, 5649, 5, 138, 0, 0, 5649, 5652, 5, 257, 0, 0, 5650, 5651, 5, 62, 0, 0, 5651, 5653, 3, 784, 392, 0, 5652, 5650, 1, 0, 0, 0, 5652, 5653, 1, 0, 0, 0, 5653, 5654, 1, 0, 0, 0, 5654, 5655, 5, 311, 0, 0, 5655, 5656, 3, 316, 158, 0, 5656, 5657, 5, 105, 0, 0, 5657, 5658, 3, 316, 158, 0, 5658, 5673, 1, 0, 0, 0, 5659, 5660, 5, 138, 0, 0, 5660, 5661, 5, 355, 0, 0, 5661, 5662, 5, 325, 0, 0, 5662, 5663, 5, 163, 0, 0, 5663, 5664, 3, 316, 158, 0, 5664, 5665, 5, 191, 0, 0, 5665, 5667, 5, 257, 0, 0, 5666, 5668, 3, 422, 211, 0, 5667, 5666, 1, 0, 0, 0, 5667, 5668, 1, 0, 0, 0, 5668, 5669, 1, 0, 0, 0, 5669, 5670, 5, 62, 0, 0, 5670, 5671, 3, 784, 392, 0, 5671, 5673, 1, 0, 0, 0, 5672, 5631, 1, 0, 0, 0, 5672, 5643, 1, 0, 0, 0, 5672, 5659, 1, 0, 0, 0, 5673, 499, 1, 0, 0, 0, 5674, 5676, 5, 46, 0, 0, 5675, 5677, 5, 53, 0, 0, 5676, 5675, 1, 0, 0, 0, 5676, 5677, 1, 0, 0, 0, 5677, 5678, 1, 0, 0, 0, 5678, 5679, 5, 168, 0, 0, 5679, 5680, 3, 316, 158, 0, 5680, 5681, 5, 62, 0, 0, 5681, 5682, 3, 808, 404, 0, 5682, 5683, 5, 94, 0, 0, 5683, 5684, 3, 808, 404, 0, 5684, 5685, 5, 64, 0, 0, 5685, 5686, 3, 316, 158, 0, 5686, 501, 1, 0, 0, 0, 5687, 5689, 5, 158, 0, 0, 5688, 5690, 3, 514, 257, 0, 5689, 5688, 1, 0, 0, 0, 5689, 5690, 1, 0, 0, 0, 5690, 5695, 1, 0, 0, 0, 5691, 5693, 3, 774, 387, 0, 5692, 5694, 3, 170, 85, 0, 5693, 5692, 1, 0, 0, 0, 5693, 5694, 1, 0, 0, 0, 5694, 5696, 1, 0, 0, 0, 5695, 5691, 1, 0, 0, 0, 5695, 5696, 1, 0, 0, 0, 5696, 5713, 1, 0, 0, 0, 5697, 5698, 5, 158, 0, 0, 5698, 5699, 5, 2, 0, 0, 5699, 5704, 3, 514, 257, 0, 5700, 5701, 5, 6, 0, 0, 5701, 5703, 3, 514, 257, 0, 5702, 5700, 1, 0, 0, 0, 5703, 5706, 1, 0, 0, 0, 5704, 5702, 1, 0, 0, 0, 5704, 5705, 1, 0, 0, 0, 5705, 5707, 1, 0, 0, 0, 5706, 5704, 1, 0, 0, 0, 5707, 5708, 5, 3, 0, 0, 5708, 5710, 3, 774, 387, 0, 5709, 5711, 3, 170, 85, 0, 5710, 5709, 1, 0, 0, 0, 5710, 5711, 1, 0, 0, 0, 5711, 5713, 1, 0, 0, 0, 5712, 5687, 1, 0, 0, 0, 5712, 5697, 1, 0, 0, 0, 5713, 503, 1, 0, 0, 0, 5714, 5730, 5, 370, 0, 0, 5715, 5717, 5, 113, 0, 0, 5716, 5715, 1, 0, 0, 0, 5716, 5717, 1, 0, 0, 0, 5717, 5719, 1, 0, 0, 0, 5718, 5720, 5, 112, 0, 0, 5719, 5718, 1, 0, 0, 0, 5719, 5720, 1, 0, 0, 0, 5720, 5722, 1, 0, 0, 0, 5721, 5723, 3, 514, 257, 0, 5722, 5721, 1, 0, 0, 0, 5722, 5723, 1, 0, 0, 0, 5723, 5725, 1, 0, 0, 0, 5724, 5726, 3, 508, 254, 0, 5725, 5724, 1, 0, 0, 0, 5725, 5726, 1, 0, 0, 0, 5726, 5731, 1, 0, 0, 0, 5727, 5729, 3, 524, 262, 0, 5728, 5727, 1, 0, 0, 0, 5728, 5729, 1, 0, 0, 0, 5729, 5731, 1, 0, 0, 0, 5730, 5716, 1, 0, 0, 0, 5730, 5728, 1, 0, 0, 0, 5731, 5733, 1, 0, 0, 0, 5732, 5734, 3, 518, 259, 0, 5733, 5732, 1, 0, 0, 0, 5733, 5734, 1, 0, 0, 0, 5734, 505, 1, 0, 0, 0, 5735, 5750, 3, 508, 254, 0, 5736, 5738, 3, 514, 257, 0, 5737, 5736, 1, 0, 0, 0, 5737, 5738, 1, 0, 0, 0, 5738, 5751, 1, 0, 0, 0, 5739, 5740, 5, 2, 0, 0, 5740, 5745, 3, 512, 256, 0, 5741, 5742, 5, 6, 0, 0, 5742, 5744, 3, 512, 256, 0, 5743, 5741, 1, 0, 0, 0, 5744, 5747, 1, 0, 0, 0, 5745, 5743, 1, 0, 0, 0, 5745, 5746, 1, 0, 0, 0, 5746, 5748, 1, 0, 0, 0, 5747, 5745, 1, 0, 0, 0, 5748, 5749, 5, 3, 0, 0, 5749, 5751, 1, 0, 0, 0, 5750, 5737, 1, 0, 0, 0, 5750, 5739, 1, 0, 0, 0, 5751, 5753, 1, 0, 0, 0, 5752, 5754, 3, 518, 259, 0, 5753, 5752, 1, 0, 0, 0, 5753, 5754, 1, 0, 0, 0, 5754, 507, 1, 0, 0, 0, 5755, 5756, 7, 73, 0, 0, 5756, 509, 1, 0, 0, 0, 5757, 5760, 3, 822, 411, 0, 5758, 5760, 3, 508, 254, 0, 5759, 5757, 1, 0, 0, 0, 5759, 5758, 1, 0, 0, 0, 5760, 5763, 1, 0, 0, 0, 5761, 5764, 3, 54, 27, 0, 5762, 5764, 3, 202, 101, 0, 5763, 5761, 1, 0, 0, 0, 5763, 5762, 1, 0, 0, 0, 5763, 5764, 1, 0, 0, 0, 5764, 511, 1, 0, 0, 0, 5765, 5767, 7, 74, 0, 0, 5766, 5768, 7, 75, 0, 0, 5767, 5766, 1, 0, 0, 0, 5767, 5768, 1, 0, 0, 0, 5768, 5775, 1, 0, 0, 0, 5769, 5772, 5, 548, 0, 0, 5770, 5773, 3, 202, 101, 0, 5771, 5773, 3, 808, 404, 0, 5772, 5770, 1, 0, 0, 0, 5772, 5771, 1, 0, 0, 0, 5773, 5775, 1, 0, 0, 0, 5774, 5765, 1, 0, 0, 0, 5774, 5769, 1, 0, 0, 0, 5775, 513, 1, 0, 0, 0, 5776, 5778, 5, 128, 0, 0, 5777, 5779, 7, 75, 0, 0, 5778, 5777, 1, 0, 0, 0, 5778, 5779, 1, 0, 0, 0, 5779, 515, 1, 0, 0, 0, 5780, 5782, 3, 774, 387, 0, 5781, 5783, 3, 144, 72, 0, 5782, 5781, 1, 0, 0, 0, 5782, 5783, 1, 0, 0, 0, 5783, 517, 1, 0, 0, 0, 5784, 5789, 3, 516, 258, 0, 5785, 5786, 5, 6, 0, 0, 5786, 5788, 3, 516, 258, 0, 5787, 5785, 1, 0, 0, 0, 5788, 5791, 1, 0, 0, 0, 5789, 5787, 1, 0, 0, 0, 5789, 5790, 1, 0, 0, 0, 5790, 519, 1, 0, 0, 0, 5791, 5789, 1, 0, 0, 0, 5792, 5803, 5, 203, 0, 0, 5793, 5804, 3, 524, 262, 0, 5794, 5796, 5, 128, 0, 0, 5795, 5794, 1, 0, 0, 0, 5795, 5796, 1, 0, 0, 0, 5796, 5804, 1, 0, 0, 0, 5797, 5799, 3, 508, 254, 0, 5798, 5800, 3, 514, 257, 0, 5799, 5798, 1, 0, 0, 0, 5799, 5800, 1, 0, 0, 0, 5800, 5802, 1, 0, 0, 0, 5801, 5797, 1, 0, 0, 0, 5801, 5802, 1, 0, 0, 0, 5802, 5804, 1, 0, 0, 0, 5803, 5793, 1, 0, 0, 0, 5803, 5795, 1, 0, 0, 0, 5803, 5801, 1, 0, 0, 0, 5804, 5805, 1, 0, 0, 0, 5805, 5806, 3, 522, 261, 0, 5806, 521, 1, 0, 0, 0, 5807, 5817, 3, 560, 280, 0, 5808, 5817, 3, 538, 269, 0, 5809, 5817, 3, 552, 276, 0, 5810, 5817, 3, 548, 274, 0, 5811, 5817, 3, 558, 279, 0, 5812, 5817, 3, 186, 93, 0, 5813, 5817, 3, 192, 96, 0, 5814, 5817, 3, 194, 97, 0, 5815, 5817, 3, 532, 266, 0, 5816, 5807, 1, 0, 0, 0, 5816, 5808, 1, 0, 0, 0, 5816, 5809, 1, 0, 0, 0, 5816, 5810, 1, 0, 0, 0, 5816, 5811, 1, 0, 0, 0, 5816, 5812, 1, 0, 0, 0, 5816, 5813, 1, 0, 0, 0, 5816, 5814, 1, 0, 0, 0, 5816, 5815, 1, 0, 0, 0, 5817, 523, 1, 0, 0, 0, 5818, 5819, 5, 2, 0, 0, 5819, 5824, 3, 510, 255, 0, 5820, 5821, 5, 6, 0, 0, 5821, 5823, 3, 510, 255, 0, 5822, 5820, 1, 0, 0, 0, 5823, 5826, 1, 0, 0, 0, 5824, 5822, 1, 0, 0, 0, 5824, 5825, 1, 0, 0, 0, 5825, 5827, 1, 0, 0, 0, 5826, 5824, 1, 0, 0, 0, 5827, 5828, 5, 3, 0, 0, 5828, 525, 1, 0, 0, 0, 5829, 5830, 5, 290, 0, 0, 5830, 5832, 3, 818, 409, 0, 5831, 5833, 3, 528, 264, 0, 5832, 5831, 1, 0, 0, 0, 5832, 5833, 1, 0, 0, 0, 5833, 5834, 1, 0, 0, 0, 5834, 5835, 5, 36, 0, 0, 5835, 5836, 3, 530, 265, 0, 5836, 527, 1, 0, 0, 0, 5837, 5838, 5, 2, 0, 0, 5838, 5843, 3, 652, 326, 0, 5839, 5840, 5, 6, 0, 0, 5840, 5842, 3, 652, 326, 0, 5841, 5839, 1, 0, 0, 0, 5842, 5845, 1, 0, 0, 0, 5843, 5841, 1, 0, 0, 0, 5843, 5844, 1, 0, 0, 0, 5844, 5846, 1, 0, 0, 0, 5845, 5843, 1, 0, 0, 0, 5846, 5847, 5, 3, 0, 0, 5847, 529, 1, 0, 0, 0, 5848, 5853, 3, 560, 280, 0, 5849, 5853, 3, 538, 269, 0, 5850, 5853, 3, 552, 276, 0, 5851, 5853, 3, 548, 274, 0, 5852, 5848, 1, 0, 0, 0, 5852, 5849, 1, 0, 0, 0, 5852, 5850, 1, 0, 0, 0, 5852, 5851, 1, 0, 0, 0, 5853, 531, 1, 0, 0, 0, 5854, 5855, 5, 202, 0, 0, 5855, 5857, 3, 818, 409, 0, 5856, 5858, 3, 534, 267, 0, 5857, 5856, 1, 0, 0, 0, 5857, 5858, 1, 0, 0, 0, 5858, 5878, 1, 0, 0, 0, 5859, 5861, 5, 46, 0, 0, 5860, 5862, 3, 122, 61, 0, 5861, 5860, 1, 0, 0, 0, 5861, 5862, 1, 0, 0, 0, 5862, 5863, 1, 0, 0, 0, 5863, 5865, 5, 92, 0, 0, 5864, 5866, 3, 294, 147, 0, 5865, 5864, 1, 0, 0, 0, 5865, 5866, 1, 0, 0, 0, 5866, 5867, 1, 0, 0, 0, 5867, 5868, 3, 188, 94, 0, 5868, 5869, 5, 36, 0, 0, 5869, 5870, 5, 202, 0, 0, 5870, 5872, 3, 818, 409, 0, 5871, 5873, 3, 534, 267, 0, 5872, 5871, 1, 0, 0, 0, 5872, 5873, 1, 0, 0, 0, 5873, 5875, 1, 0, 0, 0, 5874, 5876, 3, 190, 95, 0, 5875, 5874, 1, 0, 0, 0, 5875, 5876, 1, 0, 0, 0, 5876, 5878, 1, 0, 0, 0, 5877, 5854, 1, 0, 0, 0, 5877, 5859, 1, 0, 0, 0, 5878, 533, 1, 0, 0, 0, 5879, 5880, 5, 2, 0, 0, 5880, 5881, 3, 730, 365, 0, 5881, 5882, 5, 3, 0, 0, 5882, 535, 1, 0, 0, 0, 5883, 5885, 5, 177, 0, 0, 5884, 5886, 5, 290, 0, 0, 5885, 5884, 1, 0, 0, 0, 5885, 5886, 1, 0, 0, 0, 5886, 5889, 1, 0, 0, 0, 5887, 5890, 3, 818, 409, 0, 5888, 5890, 5, 30, 0, 0, 5889, 5887, 1, 0, 0, 0, 5889, 5888, 1, 0, 0, 0, 5890, 537, 1, 0, 0, 0, 5891, 5893, 3, 572, 286, 0, 5892, 5891, 1, 0, 0, 0, 5892, 5893, 1, 0, 0, 0, 5893, 5894, 1, 0, 0, 0, 5894, 5895, 5, 241, 0, 0, 5895, 5896, 5, 71, 0, 0, 5896, 5899, 3, 774, 387, 0, 5897, 5898, 5, 36, 0, 0, 5898, 5900, 3, 818, 409, 0, 5899, 5897, 1, 0, 0, 0, 5899, 5900, 1, 0, 0, 0, 5900, 5901, 1, 0, 0, 0, 5901, 5923, 3, 540, 270, 0, 5902, 5903, 5, 80, 0, 0, 5903, 5911, 5, 464, 0, 0, 5904, 5906, 3, 360, 180, 0, 5905, 5907, 3, 638, 319, 0, 5906, 5905, 1, 0, 0, 0, 5906, 5907, 1, 0, 0, 0, 5907, 5912, 1, 0, 0, 0, 5908, 5909, 5, 80, 0, 0, 5909, 5910, 5, 45, 0, 0, 5910, 5912, 3, 818, 409, 0, 5911, 5904, 1, 0, 0, 0, 5911, 5908, 1, 0, 0, 0, 5911, 5912, 1, 0, 0, 0, 5912, 5913, 1, 0, 0, 0, 5913, 5921, 5, 57, 0, 0, 5914, 5915, 5, 369, 0, 0, 5915, 5916, 5, 333, 0, 0, 5916, 5918, 3, 554, 277, 0, 5917, 5919, 3, 638, 319, 0, 5918, 5917, 1, 0, 0, 0, 5918, 5919, 1, 0, 0, 0, 5919, 5922, 1, 0, 0, 0, 5920, 5922, 5, 270, 0, 0, 5921, 5914, 1, 0, 0, 0, 5921, 5920, 1, 0, 0, 0, 5922, 5924, 1, 0, 0, 0, 5923, 5902, 1, 0, 0, 0, 5923, 5924, 1, 0, 0, 0, 5924, 5926, 1, 0, 0, 0, 5925, 5927, 3, 546, 273, 0, 5926, 5925, 1, 0, 0, 0, 5926, 5927, 1, 0, 0, 0, 5927, 539, 1, 0, 0, 0, 5928, 5929, 5, 2, 0, 0, 5929, 5930, 3, 542, 271, 0, 5930, 5931, 5, 3, 0, 0, 5931, 5933, 1, 0, 0, 0, 5932, 5928, 1, 0, 0, 0, 5932, 5933, 1, 0, 0, 0, 5933, 5937, 1, 0, 0, 0, 5934, 5935, 5, 463, 0, 0, 5935, 5936, 7, 76, 0, 0, 5936, 5938, 5, 450, 0, 0, 5937, 5934, 1, 0, 0, 0, 5937, 5938, 1, 0, 0, 0, 5938, 5941, 1, 0, 0, 0, 5939, 5942, 3, 910, 455, 0, 5940, 5942, 3, 560, 280, 0, 5941, 5939, 1, 0, 0, 0, 5941, 5940, 1, 0, 0, 0, 5942, 541, 1, 0, 0, 0, 5943, 5948, 3, 544, 272, 0, 5944, 5945, 5, 6, 0, 0, 5945, 5947, 3, 544, 272, 0, 5946, 5944, 1, 0, 0, 0, 5947, 5950, 1, 0, 0, 0, 5948, 5946, 1, 0, 0, 0, 5948, 5949, 1, 0, 0, 0, 5949, 543, 1, 0, 0, 0, 5950, 5948, 1, 0, 0, 0, 5951, 5952, 3, 800, 400, 0, 5952, 5953, 3, 754, 377, 0, 5953, 545, 1, 0, 0, 0, 5954, 5955, 5, 87, 0, 0, 5955, 5956, 3, 756, 378, 0, 5956, 547, 1, 0, 0, 0, 5957, 5959, 3, 572, 286, 0, 5958, 5957, 1, 0, 0, 0, 5958, 5959, 1, 0, 0, 0, 5959, 5960, 1, 0, 0, 0, 5960, 5961, 5, 182, 0, 0, 5961, 5962, 5, 64, 0, 0, 5962, 5965, 3, 630, 315, 0, 5963, 5964, 5, 100, 0, 0, 5964, 5966, 3, 612, 306, 0, 5965, 5963, 1, 0, 0, 0, 5965, 5966, 1, 0, 0, 0, 5966, 5968, 1, 0, 0, 0, 5967, 5969, 3, 640, 320, 0, 5968, 5967, 1, 0, 0, 0, 5968, 5969, 1, 0, 0, 0, 5969, 5971, 1, 0, 0, 0, 5970, 5972, 3, 546, 273, 0, 5971, 5970, 1, 0, 0, 0, 5971, 5972, 1, 0, 0, 0, 5972, 549, 1, 0, 0, 0, 5973, 5975, 5, 256, 0, 0, 5974, 5976, 5, 92, 0, 0, 5975, 5974, 1, 0, 0, 0, 5975, 5976, 1, 0, 0, 0, 5976, 5977, 1, 0, 0, 0, 5977, 5992, 3, 628, 314, 0, 5978, 5989, 5, 68, 0, 0, 5979, 5980, 7, 77, 0, 0, 5980, 5990, 7, 78, 0, 0, 5981, 5986, 5, 334, 0, 0, 5982, 5983, 5, 369, 0, 0, 5983, 5987, 5, 201, 0, 0, 5984, 5985, 5, 414, 0, 0, 5985, 5987, 5, 201, 0, 0, 5986, 5982, 1, 0, 0, 0, 5986, 5984, 1, 0, 0, 0, 5986, 5987, 1, 0, 0, 0, 5987, 5990, 1, 0, 0, 0, 5988, 5990, 5, 201, 0, 0, 5989, 5979, 1, 0, 0, 0, 5989, 5981, 1, 0, 0, 0, 5989, 5988, 1, 0, 0, 0, 5990, 5991, 1, 0, 0, 0, 5991, 5993, 5, 263, 0, 0, 5992, 5978, 1, 0, 0, 0, 5992, 5993, 1, 0, 0, 0, 5993, 5995, 1, 0, 0, 0, 5994, 5996, 5, 272, 0, 0, 5995, 5994, 1, 0, 0, 0, 5995, 5996, 1, 0, 0, 0, 5996, 551, 1, 0, 0, 0, 5997, 5999, 3, 572, 286, 0, 5998, 5997, 1, 0, 0, 0, 5998, 5999, 1, 0, 0, 0, 5999, 6000, 1, 0, 0, 0, 6000, 6001, 5, 369, 0, 0, 6001, 6002, 3, 630, 315, 0, 6002, 6003, 5, 333, 0, 0, 6003, 6005, 3, 554, 277, 0, 6004, 6006, 3, 610, 305, 0, 6005, 6004, 1, 0, 0, 0, 6005, 6006, 1, 0, 0, 0, 6006, 6008, 1, 0, 0, 0, 6007, 6009, 3, 640, 320, 0, 6008, 6007, 1, 0, 0, 0, 6008, 6009, 1, 0, 0, 0, 6009, 6011, 1, 0, 0, 0, 6010, 6012, 3, 546, 273, 0, 6011, 6010, 1, 0, 0, 0, 6011, 6012, 1, 0, 0, 0, 6012, 553, 1, 0, 0, 0, 6013, 6018, 3, 556, 278, 0, 6014, 6015, 5, 6, 0, 0, 6015, 6017, 3, 556, 278, 0, 6016, 6014, 1, 0, 0, 0, 6017, 6020, 1, 0, 0, 0, 6018, 6016, 1, 0, 0, 0, 6018, 6019, 1, 0, 0, 0, 6019, 555, 1, 0, 0, 0, 6020, 6018, 1, 0, 0, 0, 6021, 6022, 3, 544, 272, 0, 6022, 6023, 5, 10, 0, 0, 6023, 6024, 3, 674, 337, 0, 6024, 6040, 1, 0, 0, 0, 6025, 6026, 5, 2, 0, 0, 6026, 6027, 3, 542, 271, 0, 6027, 6028, 5, 3, 0, 0, 6028, 6037, 5, 10, 0, 0, 6029, 6031, 5, 414, 0, 0, 6030, 6029, 1, 0, 0, 0, 6030, 6031, 1, 0, 0, 0, 6031, 6032, 1, 0, 0, 0, 6032, 6038, 3, 674, 337, 0, 6033, 6034, 5, 2, 0, 0, 6034, 6035, 3, 566, 283, 0, 6035, 6036, 5, 3, 0, 0, 6036, 6038, 1, 0, 0, 0, 6037, 6030, 1, 0, 0, 0, 6037, 6033, 1, 0, 0, 0, 6038, 6040, 1, 0, 0, 0, 6039, 6021, 1, 0, 0, 0, 6039, 6025, 1, 0, 0, 0, 6040, 557, 1, 0, 0, 0, 6041, 6042, 5, 178, 0, 0, 6042, 6051, 3, 818, 409, 0, 6043, 6045, 5, 269, 0, 0, 6044, 6043, 1, 0, 0, 0, 6044, 6045, 1, 0, 0, 0, 6045, 6046, 1, 0, 0, 0, 6046, 6050, 5, 324, 0, 0, 6047, 6050, 5, 107, 0, 0, 6048, 6050, 5, 240, 0, 0, 6049, 6044, 1, 0, 0, 0, 6049, 6047, 1, 0, 0, 0, 6049, 6048, 1, 0, 0, 0, 6050, 6053, 1, 0, 0, 0, 6051, 6049, 1, 0, 0, 0, 6051, 6052, 1, 0, 0, 0, 6052, 6054, 1, 0, 0, 0, 6053, 6051, 1, 0, 0, 0, 6054, 6057, 5, 172, 0, 0, 6055, 6056, 7, 26, 0, 0, 6056, 6058, 5, 217, 0, 0, 6057, 6055, 1, 0, 0, 0, 6057, 6058, 1, 0, 0, 0, 6058, 6059, 1, 0, 0, 0, 6059, 6060, 5, 62, 0, 0, 6060, 6061, 3, 560, 280, 0, 6061, 559, 1, 0, 0, 0, 6062, 6065, 3, 564, 282, 0, 6063, 6065, 3, 562, 281, 0, 6064, 6062, 1, 0, 0, 0, 6064, 6063, 1, 0, 0, 0, 6065, 561, 1, 0, 0, 0, 6066, 6069, 5, 2, 0, 0, 6067, 6070, 3, 564, 282, 0, 6068, 6070, 3, 562, 281, 0, 6069, 6067, 1, 0, 0, 0, 6069, 6068, 1, 0, 0, 0, 6070, 6071, 1, 0, 0, 0, 6071, 6072, 5, 3, 0, 0, 6072, 563, 1, 0, 0, 0, 6073, 6075, 3, 572, 286, 0, 6074, 6073, 1, 0, 0, 0, 6074, 6075, 1, 0, 0, 0, 6075, 6076, 1, 0, 0, 0, 6076, 6078, 3, 566, 283, 0, 6077, 6079, 3, 586, 293, 0, 6078, 6077, 1, 0, 0, 0, 6078, 6079, 1, 0, 0, 0, 6079, 6088, 1, 0, 0, 0, 6080, 6082, 3, 606, 303, 0, 6081, 6083, 3, 590, 295, 0, 6082, 6081, 1, 0, 0, 0, 6082, 6083, 1, 0, 0, 0, 6083, 6089, 1, 0, 0, 0, 6084, 6086, 3, 590, 295, 0, 6085, 6087, 3, 606, 303, 0, 6086, 6085, 1, 0, 0, 0, 6086, 6087, 1, 0, 0, 0, 6087, 6089, 1, 0, 0, 0, 6088, 6080, 1, 0, 0, 0, 6088, 6084, 1, 0, 0, 0, 6088, 6089, 1, 0, 0, 0, 6089, 565, 1, 0, 0, 0, 6090, 6093, 3, 568, 284, 0, 6091, 6093, 3, 562, 281, 0, 6092, 6090, 1, 0, 0, 0, 6092, 6091, 1, 0, 0, 0, 6093, 567, 1, 0, 0, 0, 6094, 6104, 5, 88, 0, 0, 6095, 6097, 5, 30, 0, 0, 6096, 6095, 1, 0, 0, 0, 6096, 6097, 1, 0, 0, 0, 6097, 6099, 1, 0, 0, 0, 6098, 6100, 3, 580, 290, 0, 6099, 6098, 1, 0, 0, 0, 6099, 6100, 1, 0, 0, 0, 6100, 6105, 1, 0, 0, 0, 6101, 6103, 3, 584, 292, 0, 6102, 6101, 1, 0, 0, 0, 6102, 6103, 1, 0, 0, 0, 6103, 6105, 1, 0, 0, 0, 6104, 6096, 1, 0, 0, 0, 6104, 6102, 1, 0, 0, 0, 6105, 6106, 1, 0, 0, 0, 6106, 6117, 3, 930, 465, 0, 6107, 6117, 3, 608, 304, 0, 6108, 6109, 5, 92, 0, 0, 6109, 6117, 3, 624, 312, 0, 6110, 6111, 3, 562, 281, 0, 6111, 6114, 3, 570, 285, 0, 6112, 6115, 3, 568, 284, 0, 6113, 6115, 3, 562, 281, 0, 6114, 6112, 1, 0, 0, 0, 6114, 6113, 1, 0, 0, 0, 6115, 6117, 1, 0, 0, 0, 6116, 6094, 1, 0, 0, 0, 6116, 6107, 1, 0, 0, 0, 6116, 6108, 1, 0, 0, 0, 6116, 6110, 1, 0, 0, 0, 6117, 6125, 1, 0, 0, 0, 6118, 6121, 3, 570, 285, 0, 6119, 6122, 3, 568, 284, 0, 6120, 6122, 3, 562, 281, 0, 6121, 6119, 1, 0, 0, 0, 6121, 6120, 1, 0, 0, 0, 6122, 6124, 1, 0, 0, 0, 6123, 6118, 1, 0, 0, 0, 6124, 6127, 1, 0, 0, 0, 6125, 6123, 1, 0, 0, 0, 6125, 6126, 1, 0, 0, 0, 6126, 569, 1, 0, 0, 0, 6127, 6125, 1, 0, 0, 0, 6128, 6130, 7, 79, 0, 0, 6129, 6131, 7, 80, 0, 0, 6130, 6129, 1, 0, 0, 0, 6130, 6131, 1, 0, 0, 0, 6131, 571, 1, 0, 0, 0, 6132, 6134, 5, 105, 0, 0, 6133, 6135, 5, 303, 0, 0, 6134, 6133, 1, 0, 0, 0, 6134, 6135, 1, 0, 0, 0, 6135, 6136, 1, 0, 0, 0, 6136, 6141, 3, 574, 287, 0, 6137, 6138, 5, 6, 0, 0, 6138, 6140, 3, 574, 287, 0, 6139, 6137, 1, 0, 0, 0, 6140, 6143, 1, 0, 0, 0, 6141, 6139, 1, 0, 0, 0, 6141, 6142, 1, 0, 0, 0, 6142, 573, 1, 0, 0, 0, 6143, 6141, 1, 0, 0, 0, 6144, 6146, 3, 818, 409, 0, 6145, 6147, 3, 144, 72, 0, 6146, 6145, 1, 0, 0, 0, 6146, 6147, 1, 0, 0, 0, 6147, 6148, 1, 0, 0, 0, 6148, 6153, 5, 36, 0, 0, 6149, 6151, 5, 77, 0, 0, 6150, 6149, 1, 0, 0, 0, 6150, 6151, 1, 0, 0, 0, 6151, 6152, 1, 0, 0, 0, 6152, 6154, 5, 259, 0, 0, 6153, 6150, 1, 0, 0, 0, 6153, 6154, 1, 0, 0, 0, 6154, 6155, 1, 0, 0, 0, 6155, 6156, 5, 2, 0, 0, 6156, 6157, 3, 530, 265, 0, 6157, 6159, 5, 3, 0, 0, 6158, 6160, 3, 576, 288, 0, 6159, 6158, 1, 0, 0, 0, 6159, 6160, 1, 0, 0, 0, 6160, 6162, 1, 0, 0, 0, 6161, 6163, 3, 578, 289, 0, 6162, 6161, 1, 0, 0, 0, 6162, 6163, 1, 0, 0, 0, 6163, 575, 1, 0, 0, 0, 6164, 6165, 5, 325, 0, 0, 6165, 6166, 7, 81, 0, 0, 6166, 6167, 5, 207, 0, 0, 6167, 6168, 5, 147, 0, 0, 6168, 6169, 3, 148, 74, 0, 6169, 6170, 5, 333, 0, 0, 6170, 6171, 3, 800, 400, 0, 6171, 577, 1, 0, 0, 0, 6172, 6173, 5, 173, 0, 0, 6173, 6174, 3, 148, 74, 0, 6174, 6175, 5, 333, 0, 0, 6175, 6181, 3, 800, 400, 0, 6176, 6177, 5, 94, 0, 0, 6177, 6178, 3, 818, 409, 0, 6178, 6179, 5, 53, 0, 0, 6179, 6180, 3, 818, 409, 0, 6180, 6182, 1, 0, 0, 0, 6181, 6176, 1, 0, 0, 0, 6181, 6182, 1, 0, 0, 0, 6182, 6183, 1, 0, 0, 0, 6183, 6184, 5, 100, 0, 0, 6184, 6185, 3, 800, 400, 0, 6185, 579, 1, 0, 0, 0, 6186, 6192, 5, 71, 0, 0, 6187, 6189, 5, 346, 0, 0, 6188, 6187, 1, 0, 0, 0, 6188, 6189, 1, 0, 0, 0, 6189, 6190, 1, 0, 0, 0, 6190, 6193, 3, 582, 291, 0, 6191, 6193, 3, 730, 365, 0, 6192, 6188, 1, 0, 0, 0, 6192, 6191, 1, 0, 0, 0, 6193, 581, 1, 0, 0, 0, 6194, 6196, 7, 20, 0, 0, 6195, 6194, 1, 0, 0, 0, 6195, 6196, 1, 0, 0, 0, 6196, 6197, 1, 0, 0, 0, 6197, 6199, 7, 21, 0, 0, 6198, 6200, 5, 92, 0, 0, 6199, 6198, 1, 0, 0, 0, 6199, 6200, 1, 0, 0, 0, 6200, 6201, 1, 0, 0, 0, 6201, 6210, 3, 772, 386, 0, 6202, 6204, 5, 367, 0, 0, 6203, 6202, 1, 0, 0, 0, 6203, 6204, 1, 0, 0, 0, 6204, 6206, 1, 0, 0, 0, 6205, 6207, 5, 92, 0, 0, 6206, 6205, 1, 0, 0, 0, 6206, 6207, 1, 0, 0, 0, 6207, 6208, 1, 0, 0, 0, 6208, 6210, 3, 772, 386, 0, 6209, 6195, 1, 0, 0, 0, 6209, 6203, 1, 0, 0, 0, 6210, 583, 1, 0, 0, 0, 6211, 6214, 5, 56, 0, 0, 6212, 6213, 5, 80, 0, 0, 6213, 6215, 3, 534, 267, 0, 6214, 6212, 1, 0, 0, 0, 6214, 6215, 1, 0, 0, 0, 6215, 585, 1, 0, 0, 0, 6216, 6217, 5, 83, 0, 0, 6217, 6218, 5, 147, 0, 0, 6218, 6223, 3, 588, 294, 0, 6219, 6220, 5, 6, 0, 0, 6220, 6222, 3, 588, 294, 0, 6221, 6219, 1, 0, 0, 0, 6222, 6225, 1, 0, 0, 0, 6223, 6221, 1, 0, 0, 0, 6223, 6224, 1, 0, 0, 0, 6224, 587, 1, 0, 0, 0, 6225, 6223, 1, 0, 0, 0, 6226, 6230, 3, 734, 367, 0, 6227, 6228, 5, 100, 0, 0, 6228, 6231, 3, 726, 363, 0, 6229, 6231, 7, 55, 0, 0, 6230, 6227, 1, 0, 0, 0, 6230, 6229, 1, 0, 0, 0, 6230, 6231, 1, 0, 0, 0, 6231, 6234, 1, 0, 0, 0, 6232, 6233, 5, 273, 0, 0, 6233, 6235, 7, 56, 0, 0, 6234, 6232, 1, 0, 0, 0, 6234, 6235, 1, 0, 0, 0, 6235, 589, 1, 0, 0, 0, 6236, 6238, 3, 596, 298, 0, 6237, 6239, 3, 594, 297, 0, 6238, 6237, 1, 0, 0, 0, 6238, 6239, 1, 0, 0, 0, 6239, 6248, 1, 0, 0, 0, 6240, 6243, 3, 592, 296, 0, 6241, 6243, 3, 594, 297, 0, 6242, 6240, 1, 0, 0, 0, 6242, 6241, 1, 0, 0, 0, 6243, 6245, 1, 0, 0, 0, 6244, 6246, 3, 596, 298, 0, 6245, 6244, 1, 0, 0, 0, 6245, 6246, 1, 0, 0, 0, 6246, 6248, 1, 0, 0, 0, 6247, 6236, 1, 0, 0, 0, 6247, 6242, 1, 0, 0, 0, 6248, 591, 1, 0, 0, 0, 6249, 6252, 5, 74, 0, 0, 6250, 6253, 3, 674, 337, 0, 6251, 6253, 5, 30, 0, 0, 6252, 6250, 1, 0, 0, 0, 6252, 6251, 1, 0, 0, 0, 6253, 6256, 1, 0, 0, 0, 6254, 6255, 5, 6, 0, 0, 6255, 6257, 3, 674, 337, 0, 6256, 6254, 1, 0, 0, 0, 6256, 6257, 1, 0, 0, 0, 6257, 593, 1, 0, 0, 0, 6258, 6259, 5, 61, 0, 0, 6259, 6261, 7, 82, 0, 0, 6260, 6262, 3, 598, 299, 0, 6261, 6260, 1, 0, 0, 0, 6261, 6262, 1, 0, 0, 0, 6262, 6263, 1, 0, 0, 0, 6263, 6267, 7, 83, 0, 0, 6264, 6268, 5, 81, 0, 0, 6265, 6266, 5, 105, 0, 0, 6266, 6268, 5, 467, 0, 0, 6267, 6264, 1, 0, 0, 0, 6267, 6265, 1, 0, 0, 0, 6268, 595, 1, 0, 0, 0, 6269, 6274, 5, 79, 0, 0, 6270, 6271, 3, 598, 299, 0, 6271, 6272, 7, 83, 0, 0, 6272, 6275, 1, 0, 0, 0, 6273, 6275, 3, 674, 337, 0, 6274, 6270, 1, 0, 0, 0, 6274, 6273, 1, 0, 0, 0, 6275, 597, 1, 0, 0, 0, 6276, 6277, 7, 29, 0, 0, 6277, 6280, 7, 84, 0, 0, 6278, 6280, 3, 682, 341, 0, 6279, 6276, 1, 0, 0, 0, 6279, 6278, 1, 0, 0, 0, 6280, 599, 1, 0, 0, 0, 6281, 6282, 5, 66, 0, 0, 6282, 6284, 5, 147, 0, 0, 6283, 6285, 7, 80, 0, 0, 6284, 6283, 1, 0, 0, 0, 6284, 6285, 1, 0, 0, 0, 6285, 6286, 1, 0, 0, 0, 6286, 6287, 3, 602, 301, 0, 6287, 601, 1, 0, 0, 0, 6288, 6293, 3, 604, 302, 0, 6289, 6290, 5, 6, 0, 0, 6290, 6292, 3, 604, 302, 0, 6291, 6289, 1, 0, 0, 0, 6292, 6295, 1, 0, 0, 0, 6293, 6291, 1, 0, 0, 0, 6293, 6294, 1, 0, 0, 0, 6294, 603, 1, 0, 0, 0, 6295, 6293, 1, 0, 0, 0, 6296, 6320, 3, 734, 367, 0, 6297, 6298, 5, 2, 0, 0, 6298, 6320, 5, 3, 0, 0, 6299, 6301, 7, 85, 0, 0, 6300, 6299, 1, 0, 0, 0, 6300, 6301, 1, 0, 0, 0, 6301, 6302, 1, 0, 0, 0, 6302, 6303, 5, 2, 0, 0, 6303, 6308, 3, 734, 367, 0, 6304, 6305, 5, 6, 0, 0, 6305, 6307, 3, 734, 367, 0, 6306, 6304, 1, 0, 0, 0, 6307, 6310, 1, 0, 0, 0, 6308, 6306, 1, 0, 0, 0, 6308, 6309, 1, 0, 0, 0, 6309, 6311, 1, 0, 0, 0, 6310, 6308, 1, 0, 0, 0, 6311, 6312, 5, 3, 0, 0, 6312, 6320, 1, 0, 0, 0, 6313, 6314, 5, 470, 0, 0, 6314, 6315, 5, 471, 0, 0, 6315, 6316, 5, 2, 0, 0, 6316, 6317, 3, 602, 301, 0, 6317, 6318, 5, 3, 0, 0, 6318, 6320, 1, 0, 0, 0, 6319, 6296, 1, 0, 0, 0, 6319, 6297, 1, 0, 0, 0, 6319, 6300, 1, 0, 0, 0, 6319, 6313, 1, 0, 0, 0, 6320, 605, 1, 0, 0, 0, 6321, 6331, 5, 62, 0, 0, 6322, 6323, 5, 269, 0, 0, 6323, 6325, 5, 245, 0, 0, 6324, 6322, 1, 0, 0, 0, 6324, 6325, 1, 0, 0, 0, 6325, 6326, 1, 0, 0, 0, 6326, 6332, 5, 369, 0, 0, 6327, 6329, 5, 245, 0, 0, 6328, 6327, 1, 0, 0, 0, 6328, 6329, 1, 0, 0, 0, 6329, 6330, 1, 0, 0, 0, 6330, 6332, 5, 334, 0, 0, 6331, 6324, 1, 0, 0, 0, 6331, 6328, 1, 0, 0, 0, 6332, 6335, 1, 0, 0, 0, 6333, 6334, 5, 275, 0, 0, 6334, 6336, 3, 760, 380, 0, 6335, 6333, 1, 0, 0, 0, 6335, 6336, 1, 0, 0, 0, 6336, 6340, 1, 0, 0, 0, 6337, 6341, 5, 272, 0, 0, 6338, 6339, 5, 465, 0, 0, 6339, 6341, 5, 466, 0, 0, 6340, 6337, 1, 0, 0, 0, 6340, 6338, 1, 0, 0, 0, 6340, 6341, 1, 0, 0, 0, 6341, 6343, 1, 0, 0, 0, 6342, 6321, 1, 0, 0, 0, 6343, 6344, 1, 0, 0, 0, 6344, 6342, 1, 0, 0, 0, 6344, 6345, 1, 0, 0, 0, 6345, 6350, 1, 0, 0, 0, 6346, 6347, 5, 62, 0, 0, 6347, 6348, 5, 300, 0, 0, 6348, 6350, 5, 81, 0, 0, 6349, 6342, 1, 0, 0, 0, 6349, 6346, 1, 0, 0, 0, 6350, 607, 1, 0, 0, 0, 6351, 6352, 5, 422, 0, 0, 6352, 6357, 3, 534, 267, 0, 6353, 6354, 5, 6, 0, 0, 6354, 6356, 3, 534, 267, 0, 6355, 6353, 1, 0, 0, 0, 6356, 6359, 1, 0, 0, 0, 6357, 6355, 1, 0, 0, 0, 6357, 6358, 1, 0, 0, 0, 6358, 609, 1, 0, 0, 0, 6359, 6357, 1, 0, 0, 0, 6360, 6361, 5, 64, 0, 0, 6361, 6362, 3, 612, 306, 0, 6362, 611, 1, 0, 0, 0, 6363, 6368, 3, 614, 307, 0, 6364, 6365, 5, 6, 0, 0, 6365, 6367, 3, 614, 307, 0, 6366, 6364, 1, 0, 0, 0, 6367, 6370, 1, 0, 0, 0, 6368, 6366, 1, 0, 0, 0, 6368, 6369, 1, 0, 0, 0, 6369, 613, 1, 0, 0, 0, 6370, 6368, 1, 0, 0, 0, 6371, 6386, 3, 624, 312, 0, 6372, 6374, 5, 81, 0, 0, 6373, 6372, 1, 0, 0, 0, 6373, 6374, 1, 0, 0, 0, 6374, 6375, 1, 0, 0, 0, 6375, 6377, 3, 778, 389, 0, 6376, 6378, 5, 9, 0, 0, 6377, 6376, 1, 0, 0, 0, 6377, 6378, 1, 0, 0, 0, 6378, 6380, 1, 0, 0, 0, 6379, 6381, 3, 148, 74, 0, 6380, 6379, 1, 0, 0, 0, 6380, 6381, 1, 0, 0, 0, 6381, 6383, 1, 0, 0, 0, 6382, 6384, 3, 638, 319, 0, 6383, 6382, 1, 0, 0, 0, 6383, 6384, 1, 0, 0, 0, 6384, 6386, 1, 0, 0, 0, 6385, 6371, 1, 0, 0, 0, 6385, 6373, 1, 0, 0, 0, 6386, 6388, 1, 0, 0, 0, 6387, 6389, 3, 616, 308, 0, 6388, 6387, 1, 0, 0, 0, 6388, 6389, 1, 0, 0, 0, 6389, 6391, 1, 0, 0, 0, 6390, 6392, 3, 632, 316, 0, 6391, 6390, 1, 0, 0, 0, 6391, 6392, 1, 0, 0, 0, 6392, 6435, 1, 0, 0, 0, 6393, 6395, 5, 72, 0, 0, 6394, 6393, 1, 0, 0, 0, 6394, 6395, 1, 0, 0, 0, 6395, 6408, 1, 0, 0, 0, 6396, 6398, 3, 646, 323, 0, 6397, 6399, 3, 616, 308, 0, 6398, 6397, 1, 0, 0, 0, 6398, 6399, 1, 0, 0, 0, 6399, 6409, 1, 0, 0, 0, 6400, 6402, 3, 634, 317, 0, 6401, 6403, 3, 618, 309, 0, 6402, 6401, 1, 0, 0, 0, 6402, 6403, 1, 0, 0, 0, 6403, 6409, 1, 0, 0, 0, 6404, 6406, 3, 562, 281, 0, 6405, 6407, 3, 616, 308, 0, 6406, 6405, 1, 0, 0, 0, 6406, 6407, 1, 0, 0, 0, 6407, 6409, 1, 0, 0, 0, 6408, 6396, 1, 0, 0, 0, 6408, 6400, 1, 0, 0, 0, 6408, 6404, 1, 0, 0, 0, 6409, 6435, 1, 0, 0, 0, 6410, 6411, 5, 2, 0, 0, 6411, 6428, 3, 614, 307, 0, 6412, 6413, 5, 110, 0, 0, 6413, 6414, 5, 118, 0, 0, 6414, 6429, 3, 614, 307, 0, 6415, 6417, 5, 121, 0, 0, 6416, 6418, 3, 620, 310, 0, 6417, 6416, 1, 0, 0, 0, 6417, 6418, 1, 0, 0, 0, 6418, 6419, 1, 0, 0, 0, 6419, 6420, 5, 118, 0, 0, 6420, 6429, 3, 614, 307, 0, 6421, 6423, 3, 620, 310, 0, 6422, 6421, 1, 0, 0, 0, 6422, 6423, 1, 0, 0, 0, 6423, 6424, 1, 0, 0, 0, 6424, 6425, 5, 118, 0, 0, 6425, 6426, 3, 614, 307, 0, 6426, 6427, 3, 622, 311, 0, 6427, 6429, 1, 0, 0, 0, 6428, 6412, 1, 0, 0, 0, 6428, 6415, 1, 0, 0, 0, 6428, 6422, 1, 0, 0, 0, 6428, 6429, 1, 0, 0, 0, 6429, 6430, 1, 0, 0, 0, 6430, 6432, 5, 3, 0, 0, 6431, 6433, 3, 616, 308, 0, 6432, 6431, 1, 0, 0, 0, 6432, 6433, 1, 0, 0, 0, 6433, 6435, 1, 0, 0, 0, 6434, 6385, 1, 0, 0, 0, 6434, 6394, 1, 0, 0, 0, 6434, 6410, 1, 0, 0, 0, 6435, 6454, 1, 0, 0, 0, 6436, 6437, 5, 110, 0, 0, 6437, 6438, 5, 118, 0, 0, 6438, 6453, 3, 614, 307, 0, 6439, 6441, 5, 121, 0, 0, 6440, 6442, 3, 620, 310, 0, 6441, 6440, 1, 0, 0, 0, 6441, 6442, 1, 0, 0, 0, 6442, 6443, 1, 0, 0, 0, 6443, 6444, 5, 118, 0, 0, 6444, 6453, 3, 614, 307, 0, 6445, 6447, 3, 620, 310, 0, 6446, 6445, 1, 0, 0, 0, 6446, 6447, 1, 0, 0, 0, 6447, 6448, 1, 0, 0, 0, 6448, 6449, 5, 118, 0, 0, 6449, 6450, 3, 614, 307, 0, 6450, 6451, 3, 622, 311, 0, 6451, 6453, 1, 0, 0, 0, 6452, 6436, 1, 0, 0, 0, 6452, 6439, 1, 0, 0, 0, 6452, 6446, 1, 0, 0, 0, 6453, 6456, 1, 0, 0, 0, 6454, 6452, 1, 0, 0, 0, 6454, 6455, 1, 0, 0, 0, 6455, 615, 1, 0, 0, 0, 6456, 6454, 1, 0, 0, 0, 6457, 6459, 5, 36, 0, 0, 6458, 6457, 1, 0, 0, 0, 6458, 6459, 1, 0, 0, 0, 6459, 6460, 1, 0, 0, 0, 6460, 6465, 3, 818, 409, 0, 6461, 6462, 5, 2, 0, 0, 6462, 6463, 3, 784, 392, 0, 6463, 6464, 5, 3, 0, 0, 6464, 6466, 1, 0, 0, 0, 6465, 6461, 1, 0, 0, 0, 6465, 6466, 1, 0, 0, 0, 6466, 617, 1, 0, 0, 0, 6467, 6480, 3, 616, 308, 0, 6468, 6470, 5, 36, 0, 0, 6469, 6471, 3, 818, 409, 0, 6470, 6469, 1, 0, 0, 0, 6470, 6471, 1, 0, 0, 0, 6471, 6474, 1, 0, 0, 0, 6472, 6474, 3, 818, 409, 0, 6473, 6468, 1, 0, 0, 0, 6473, 6472, 1, 0, 0, 0, 6474, 6475, 1, 0, 0, 0, 6475, 6476, 5, 2, 0, 0, 6476, 6477, 3, 642, 321, 0, 6477, 6478, 5, 3, 0, 0, 6478, 6480, 1, 0, 0, 0, 6479, 6467, 1, 0, 0, 0, 6479, 6473, 1, 0, 0, 0, 6480, 619, 1, 0, 0, 0, 6481, 6483, 7, 86, 0, 0, 6482, 6484, 5, 123, 0, 0, 6483, 6482, 1, 0, 0, 0, 6483, 6484, 1, 0, 0, 0, 6484, 621, 1, 0, 0, 0, 6485, 6486, 5, 100, 0, 0, 6486, 6490, 3, 144, 72, 0, 6487, 6488, 5, 80, 0, 0, 6488, 6490, 3, 674, 337, 0, 6489, 6485, 1, 0, 0, 0, 6489, 6487, 1, 0, 0, 0, 6490, 623, 1, 0, 0, 0, 6491, 6507, 3, 322, 161, 0, 6492, 6498, 5, 81, 0, 0, 6493, 6499, 3, 774, 387, 0, 6494, 6495, 5, 2, 0, 0, 6495, 6496, 3, 774, 387, 0, 6496, 6497, 5, 3, 0, 0, 6497, 6499, 1, 0, 0, 0, 6498, 6493, 1, 0, 0, 0, 6498, 6494, 1, 0, 0, 0, 6499, 6507, 1, 0, 0, 0, 6500, 6501, 5, 68, 0, 0, 6501, 6504, 5, 323, 0, 0, 6502, 6505, 3, 790, 395, 0, 6503, 6505, 5, 111, 0, 0, 6504, 6502, 1, 0, 0, 0, 6504, 6503, 1, 0, 0, 0, 6505, 6507, 1, 0, 0, 0, 6506, 6491, 1, 0, 0, 0, 6506, 6492, 1, 0, 0, 0, 6506, 6500, 1, 0, 0, 0, 6507, 625, 1, 0, 0, 0, 6508, 6509, 5, 92, 0, 0, 6509, 6511, 3, 322, 161, 0, 6510, 6512, 3, 144, 72, 0, 6511, 6510, 1, 0, 0, 0, 6511, 6512, 1, 0, 0, 0, 6512, 6514, 1, 0, 0, 0, 6513, 6515, 3, 638, 319, 0, 6514, 6513, 1, 0, 0, 0, 6514, 6515, 1, 0, 0, 0, 6515, 6533, 1, 0, 0, 0, 6516, 6517, 5, 92, 0, 0, 6517, 6523, 5, 81, 0, 0, 6518, 6524, 3, 774, 387, 0, 6519, 6520, 5, 2, 0, 0, 6520, 6521, 3, 774, 387, 0, 6521, 6522, 5, 3, 0, 0, 6522, 6524, 1, 0, 0, 0, 6523, 6518, 1, 0, 0, 0, 6523, 6519, 1, 0, 0, 0, 6524, 6533, 1, 0, 0, 0, 6525, 6526, 5, 350, 0, 0, 6526, 6527, 5, 68, 0, 0, 6527, 6530, 5, 323, 0, 0, 6528, 6531, 3, 790, 395, 0, 6529, 6531, 5, 111, 0, 0, 6530, 6528, 1, 0, 0, 0, 6530, 6529, 1, 0, 0, 0, 6531, 6533, 1, 0, 0, 0, 6532, 6508, 1, 0, 0, 0, 6532, 6516, 1, 0, 0, 0, 6532, 6525, 1, 0, 0, 0, 6533, 627, 1, 0, 0, 0, 6534, 6539, 3, 624, 312, 0, 6535, 6536, 5, 6, 0, 0, 6536, 6538, 3, 624, 312, 0, 6537, 6535, 1, 0, 0, 0, 6538, 6541, 1, 0, 0, 0, 6539, 6537, 1, 0, 0, 0, 6539, 6540, 1, 0, 0, 0, 6540, 629, 1, 0, 0, 0, 6541, 6539, 1, 0, 0, 0, 6542, 6547, 3, 624, 312, 0, 6543, 6545, 5, 36, 0, 0, 6544, 6543, 1, 0, 0, 0, 6544, 6545, 1, 0, 0, 0, 6545, 6546, 1, 0, 0, 0, 6546, 6548, 3, 818, 409, 0, 6547, 6544, 1, 0, 0, 0, 6547, 6548, 1, 0, 0, 0, 6548, 631, 1, 0, 0, 0, 6549, 6550, 5, 472, 0, 0, 6550, 6551, 3, 806, 403, 0, 6551, 6557, 3, 534, 267, 0, 6552, 6553, 5, 310, 0, 0, 6553, 6554, 5, 2, 0, 0, 6554, 6555, 3, 674, 337, 0, 6555, 6556, 5, 3, 0, 0, 6556, 6558, 1, 0, 0, 0, 6557, 6552, 1, 0, 0, 0, 6557, 6558, 1, 0, 0, 0, 6558, 633, 1, 0, 0, 0, 6559, 6574, 3, 688, 344, 0, 6560, 6561, 5, 320, 0, 0, 6561, 6562, 5, 64, 0, 0, 6562, 6563, 5, 2, 0, 0, 6563, 6568, 3, 636, 318, 0, 6564, 6565, 5, 6, 0, 0, 6565, 6567, 3, 636, 318, 0, 6566, 6564, 1, 0, 0, 0, 6567, 6570, 1, 0, 0, 0, 6568, 6566, 1, 0, 0, 0, 6568, 6569, 1, 0, 0, 0, 6569, 6571, 1, 0, 0, 0, 6570, 6568, 1, 0, 0, 0, 6571, 6572, 5, 3, 0, 0, 6572, 6574, 1, 0, 0, 0, 6573, 6559, 1, 0, 0, 0, 6573, 6560, 1, 0, 0, 0, 6574, 6577, 1, 0, 0, 0, 6575, 6576, 5, 105, 0, 0, 6576, 6578, 5, 473, 0, 0, 6577, 6575, 1, 0, 0, 0, 6577, 6578, 1, 0, 0, 0, 6578, 635, 1, 0, 0, 0, 6579, 6585, 3, 688, 344, 0, 6580, 6581, 5, 36, 0, 0, 6581, 6582, 5, 2, 0, 0, 6582, 6583, 3, 642, 321, 0, 6583, 6584, 5, 3, 0, 0, 6584, 6586, 1, 0, 0, 0, 6585, 6580, 1, 0, 0, 0, 6585, 6586, 1, 0, 0, 0, 6586, 637, 1, 0, 0, 0, 6587, 6588, 5, 103, 0, 0, 6588, 6589, 3, 734, 367, 0, 6589, 639, 1, 0, 0, 0, 6590, 6595, 5, 103, 0, 0, 6591, 6592, 5, 434, 0, 0, 6592, 6593, 5, 275, 0, 0, 6593, 6596, 3, 818, 409, 0, 6594, 6596, 3, 674, 337, 0, 6595, 6591, 1, 0, 0, 0, 6595, 6594, 1, 0, 0, 0, 6596, 641, 1, 0, 0, 0, 6597, 6602, 3, 644, 322, 0, 6598, 6599, 5, 6, 0, 0, 6599, 6601, 3, 644, 322, 0, 6600, 6598, 1, 0, 0, 0, 6601, 6604, 1, 0, 0, 0, 6602, 6600, 1, 0, 0, 0, 6602, 6603, 1, 0, 0, 0, 6603, 643, 1, 0, 0, 0, 6604, 6602, 1, 0, 0, 0, 6605, 6606, 3, 818, 409, 0, 6606, 6608, 3, 652, 326, 0, 6607, 6609, 3, 98, 49, 0, 6608, 6607, 1, 0, 0, 0, 6608, 6609, 1, 0, 0, 0, 6609, 645, 1, 0, 0, 0, 6610, 6611, 5, 474, 0, 0, 6611, 6625, 5, 2, 0, 0, 6612, 6613, 5, 476, 0, 0, 6613, 6614, 5, 2, 0, 0, 6614, 6619, 3, 650, 325, 0, 6615, 6616, 5, 6, 0, 0, 6616, 6618, 3, 650, 325, 0, 6617, 6615, 1, 0, 0, 0, 6618, 6621, 1, 0, 0, 0, 6619, 6617, 1, 0, 0, 0, 6619, 6620, 1, 0, 0, 0, 6620, 6622, 1, 0, 0, 0, 6621, 6619, 1, 0, 0, 0, 6622, 6623, 5, 3, 0, 0, 6623, 6624, 5, 6, 0, 0, 6624, 6626, 1, 0, 0, 0, 6625, 6612, 1, 0, 0, 0, 6625, 6626, 1, 0, 0, 0, 6626, 6627, 1, 0, 0, 0, 6627, 6628, 3, 682, 341, 0, 6628, 6629, 3, 698, 349, 0, 6629, 6630, 5, 475, 0, 0, 6630, 6635, 3, 648, 324, 0, 6631, 6632, 5, 6, 0, 0, 6632, 6634, 3, 648, 324, 0, 6633, 6631, 1, 0, 0, 0, 6634, 6637, 1, 0, 0, 0, 6635, 6633, 1, 0, 0, 0, 6635, 6636, 1, 0, 0, 0, 6636, 6638, 1, 0, 0, 0, 6637, 6635, 1, 0, 0, 0, 6638, 6639, 5, 3, 0, 0, 6639, 647, 1, 0, 0, 0, 6640, 6659, 3, 818, 409, 0, 6641, 6655, 3, 652, 326, 0, 6642, 6645, 5, 53, 0, 0, 6643, 6645, 3, 826, 413, 0, 6644, 6642, 1, 0, 0, 0, 6644, 6643, 1, 0, 0, 0, 6645, 6646, 1, 0, 0, 0, 6646, 6652, 3, 674, 337, 0, 6647, 6649, 5, 77, 0, 0, 6648, 6647, 1, 0, 0, 0, 6648, 6649, 1, 0, 0, 0, 6649, 6650, 1, 0, 0, 0, 6650, 6652, 5, 78, 0, 0, 6651, 6644, 1, 0, 0, 0, 6651, 6648, 1, 0, 0, 0, 6652, 6653, 1, 0, 0, 0, 6653, 6651, 1, 0, 0, 0, 6653, 6654, 1, 0, 0, 0, 6654, 6656, 1, 0, 0, 0, 6655, 6651, 1, 0, 0, 0, 6655, 6656, 1, 0, 0, 0, 6656, 6660, 1, 0, 0, 0, 6657, 6658, 5, 62, 0, 0, 6658, 6660, 5, 473, 0, 0, 6659, 6641, 1, 0, 0, 0, 6659, 6657, 1, 0, 0, 0, 6660, 649, 1, 0, 0, 0, 6661, 6662, 3, 682, 341, 0, 6662, 6663, 5, 36, 0, 0, 6663, 6664, 3, 824, 412, 0, 6664, 6668, 1, 0, 0, 0, 6665, 6666, 5, 53, 0, 0, 6666, 6668, 3, 682, 341, 0, 6667, 6661, 1, 0, 0, 0, 6667, 6665, 1, 0, 0, 0, 6668, 651, 1, 0, 0, 0, 6669, 6671, 5, 415, 0, 0, 6670, 6669, 1, 0, 0, 0, 6670, 6671, 1, 0, 0, 0, 6671, 6672, 1, 0, 0, 0, 6672, 6689, 3, 654, 327, 0, 6673, 6675, 5, 4, 0, 0, 6674, 6676, 5, 571, 0, 0, 6675, 6674, 1, 0, 0, 0, 6675, 6676, 1, 0, 0, 0, 6676, 6677, 1, 0, 0, 0, 6677, 6679, 5, 5, 0, 0, 6678, 6673, 1, 0, 0, 0, 6679, 6682, 1, 0, 0, 0, 6680, 6678, 1, 0, 0, 0, 6680, 6681, 1, 0, 0, 0, 6681, 6690, 1, 0, 0, 0, 6682, 6680, 1, 0, 0, 0, 6683, 6687, 5, 35, 0, 0, 6684, 6685, 5, 4, 0, 0, 6685, 6686, 5, 571, 0, 0, 6686, 6688, 5, 5, 0, 0, 6687, 6684, 1, 0, 0, 0, 6687, 6688, 1, 0, 0, 0, 6688, 6690, 1, 0, 0, 0, 6689, 6680, 1, 0, 0, 0, 6689, 6683, 1, 0, 0, 0, 6690, 6696, 1, 0, 0, 0, 6691, 6692, 3, 780, 390, 0, 6692, 6693, 5, 27, 0, 0, 6693, 6694, 7, 87, 0, 0, 6694, 6696, 1, 0, 0, 0, 6695, 6670, 1, 0, 0, 0, 6695, 6691, 1, 0, 0, 0, 6696, 653, 1, 0, 0, 0, 6697, 6699, 3, 820, 410, 0, 6698, 6700, 3, 318, 159, 0, 6699, 6698, 1, 0, 0, 0, 6699, 6700, 1, 0, 0, 0, 6700, 6702, 1, 0, 0, 0, 6701, 6703, 3, 534, 267, 0, 6702, 6701, 1, 0, 0, 0, 6702, 6703, 1, 0, 0, 0, 6703, 6713, 1, 0, 0, 0, 6704, 6713, 3, 656, 328, 0, 6705, 6710, 5, 403, 0, 0, 6706, 6708, 3, 668, 334, 0, 6707, 6706, 1, 0, 0, 0, 6707, 6708, 1, 0, 0, 0, 6708, 6711, 1, 0, 0, 0, 6709, 6711, 3, 660, 330, 0, 6710, 6707, 1, 0, 0, 0, 6710, 6709, 1, 0, 0, 0, 6711, 6713, 1, 0, 0, 0, 6712, 6697, 1, 0, 0, 0, 6712, 6704, 1, 0, 0, 0, 6712, 6705, 1, 0, 0, 0, 6713, 655, 1, 0, 0, 0, 6714, 6719, 3, 658, 329, 0, 6715, 6719, 3, 662, 331, 0, 6716, 6719, 3, 664, 332, 0, 6717, 6719, 3, 666, 333, 0, 6718, 6714, 1, 0, 0, 0, 6718, 6715, 1, 0, 0, 0, 6718, 6716, 1, 0, 0, 0, 6718, 6717, 1, 0, 0, 0, 6719, 657, 1, 0, 0, 0, 6720, 6737, 5, 401, 0, 0, 6721, 6737, 5, 402, 0, 0, 6722, 6737, 5, 416, 0, 0, 6723, 6737, 5, 388, 0, 0, 6724, 6737, 5, 413, 0, 0, 6725, 6727, 5, 398, 0, 0, 6726, 6728, 3, 660, 330, 0, 6727, 6726, 1, 0, 0, 0, 6727, 6728, 1, 0, 0, 0, 6728, 6737, 1, 0, 0, 0, 6729, 6730, 5, 190, 0, 0, 6730, 6737, 5, 412, 0, 0, 6731, 6733, 7, 88, 0, 0, 6732, 6734, 3, 534, 267, 0, 6733, 6732, 1, 0, 0, 0, 6733, 6734, 1, 0, 0, 0, 6734, 6737, 1, 0, 0, 0, 6735, 6737, 5, 390, 0, 0, 6736, 6720, 1, 0, 0, 0, 6736, 6721, 1, 0, 0, 0, 6736, 6722, 1, 0, 0, 0, 6736, 6723, 1, 0, 0, 0, 6736, 6724, 1, 0, 0, 0, 6736, 6725, 1, 0, 0, 0, 6736, 6729, 1, 0, 0, 0, 6736, 6731, 1, 0, 0, 0, 6736, 6735, 1, 0, 0, 0, 6737, 659, 1, 0, 0, 0, 6738, 6739, 5, 2, 0, 0, 6739, 6740, 5, 571, 0, 0, 6740, 6741, 5, 3, 0, 0, 6741, 661, 1, 0, 0, 0, 6742, 6744, 5, 389, 0, 0, 6743, 6745, 5, 374, 0, 0, 6744, 6743, 1, 0, 0, 0, 6744, 6745, 1, 0, 0, 0, 6745, 6747, 1, 0, 0, 0, 6746, 6748, 3, 534, 267, 0, 6747, 6746, 1, 0, 0, 0, 6747, 6748, 1, 0, 0, 0, 6748, 663, 1, 0, 0, 0, 6749, 6751, 7, 89, 0, 0, 6750, 6752, 5, 374, 0, 0, 6751, 6750, 1, 0, 0, 0, 6751, 6752, 1, 0, 0, 0, 6752, 6760, 1, 0, 0, 0, 6753, 6760, 5, 423, 0, 0, 6754, 6755, 5, 405, 0, 0, 6755, 6757, 7, 90, 0, 0, 6756, 6758, 5, 374, 0, 0, 6757, 6756, 1, 0, 0, 0, 6757, 6758, 1, 0, 0, 0, 6758, 6760, 1, 0, 0, 0, 6759, 6749, 1, 0, 0, 0, 6759, 6753, 1, 0, 0, 0, 6759, 6754, 1, 0, 0, 0, 6760, 6762, 1, 0, 0, 0, 6761, 6763, 3, 660, 330, 0, 6762, 6761, 1, 0, 0, 0, 6762, 6763, 1, 0, 0, 0, 6763, 665, 1, 0, 0, 0, 6764, 6766, 7, 91, 0, 0, 6765, 6767, 3, 660, 330, 0, 6766, 6765, 1, 0, 0, 0, 6766, 6767, 1, 0, 0, 0, 6767, 6771, 1, 0, 0, 0, 6768, 6769, 7, 26, 0, 0, 6769, 6770, 5, 418, 0, 0, 6770, 6772, 5, 386, 0, 0, 6771, 6768, 1, 0, 0, 0, 6771, 6772, 1, 0, 0, 0, 6772, 667, 1, 0, 0, 0, 6773, 6803, 5, 264, 0, 0, 6774, 6803, 3, 670, 335, 0, 6775, 6778, 5, 384, 0, 0, 6776, 6777, 5, 94, 0, 0, 6777, 6779, 5, 264, 0, 0, 6778, 6776, 1, 0, 0, 0, 6778, 6779, 1, 0, 0, 0, 6779, 6803, 1, 0, 0, 0, 6780, 6787, 5, 176, 0, 0, 6781, 6785, 5, 94, 0, 0, 6782, 6786, 5, 218, 0, 0, 6783, 6786, 5, 261, 0, 0, 6784, 6786, 3, 670, 335, 0, 6785, 6782, 1, 0, 0, 0, 6785, 6783, 1, 0, 0, 0, 6785, 6784, 1, 0, 0, 0, 6786, 6788, 1, 0, 0, 0, 6787, 6781, 1, 0, 0, 0, 6787, 6788, 1, 0, 0, 0, 6788, 6803, 1, 0, 0, 0, 6789, 6795, 5, 218, 0, 0, 6790, 6793, 5, 94, 0, 0, 6791, 6794, 5, 261, 0, 0, 6792, 6794, 3, 670, 335, 0, 6793, 6791, 1, 0, 0, 0, 6793, 6792, 1, 0, 0, 0, 6794, 6796, 1, 0, 0, 0, 6795, 6790, 1, 0, 0, 0, 6795, 6796, 1, 0, 0, 0, 6796, 6803, 1, 0, 0, 0, 6797, 6800, 5, 261, 0, 0, 6798, 6799, 5, 94, 0, 0, 6799, 6801, 3, 670, 335, 0, 6800, 6798, 1, 0, 0, 0, 6800, 6801, 1, 0, 0, 0, 6801, 6803, 1, 0, 0, 0, 6802, 6773, 1, 0, 0, 0, 6802, 6774, 1, 0, 0, 0, 6802, 6775, 1, 0, 0, 0, 6802, 6780, 1, 0, 0, 0, 6802, 6789, 1, 0, 0, 0, 6802, 6797, 1, 0, 0, 0, 6803, 669, 1, 0, 0, 0, 6804, 6806, 5, 326, 0, 0, 6805, 6807, 3, 660, 330, 0, 6806, 6805, 1, 0, 0, 0, 6806, 6807, 1, 0, 0, 0, 6807, 671, 1, 0, 0, 0, 6808, 6809, 7, 92, 0, 0, 6809, 673, 1, 0, 0, 0, 6810, 6811, 3, 676, 338, 0, 6811, 675, 1, 0, 0, 0, 6812, 6813, 6, 338, -1, 0, 6813, 6815, 3, 680, 340, 0, 6814, 6816, 3, 678, 339, 0, 6815, 6814, 1, 0, 0, 0, 6815, 6816, 1, 0, 0, 0, 6816, 6820, 1, 0, 0, 0, 6817, 6818, 5, 77, 0, 0, 6818, 6820, 3, 676, 338, 3, 6819, 6812, 1, 0, 0, 0, 6819, 6817, 1, 0, 0, 0, 6820, 6829, 1, 0, 0, 0, 6821, 6822, 10, 2, 0, 0, 6822, 6823, 5, 33, 0, 0, 6823, 6828, 3, 676, 338, 3, 6824, 6825, 10, 1, 0, 0, 6825, 6826, 5, 82, 0, 0, 6826, 6828, 3, 676, 338, 2, 6827, 6821, 1, 0, 0, 0, 6827, 6824, 1, 0, 0, 0, 6828, 6831, 1, 0, 0, 0, 6829, 6827, 1, 0, 0, 0, 6829, 6830, 1, 0, 0, 0, 6830, 677, 1, 0, 0, 0, 6831, 6829, 1, 0, 0, 0, 6832, 6833, 3, 672, 336, 0, 6833, 6834, 3, 680, 340, 0, 6834, 6904, 1, 0, 0, 0, 6835, 6836, 3, 672, 336, 0, 6836, 6837, 3, 728, 364, 0, 6837, 6843, 3, 718, 359, 0, 6838, 6844, 3, 562, 281, 0, 6839, 6840, 5, 2, 0, 0, 6840, 6841, 3, 674, 337, 0, 6841, 6842, 5, 3, 0, 0, 6842, 6844, 1, 0, 0, 0, 6843, 6838, 1, 0, 0, 0, 6843, 6839, 1, 0, 0, 0, 6844, 6904, 1, 0, 0, 0, 6845, 6847, 5, 77, 0, 0, 6846, 6845, 1, 0, 0, 0, 6846, 6847, 1, 0, 0, 0, 6847, 6848, 1, 0, 0, 0, 6848, 6849, 5, 387, 0, 0, 6849, 6850, 3, 680, 340, 0, 6850, 6851, 5, 33, 0, 0, 6851, 6852, 3, 680, 340, 0, 6852, 6904, 1, 0, 0, 0, 6853, 6855, 5, 77, 0, 0, 6854, 6853, 1, 0, 0, 0, 6854, 6855, 1, 0, 0, 0, 6855, 6856, 1, 0, 0, 0, 6856, 6857, 5, 68, 0, 0, 6857, 6858, 5, 2, 0, 0, 6858, 6863, 3, 674, 337, 0, 6859, 6860, 5, 6, 0, 0, 6860, 6862, 3, 674, 337, 0, 6861, 6859, 1, 0, 0, 0, 6862, 6865, 1, 0, 0, 0, 6863, 6861, 1, 0, 0, 0, 6863, 6864, 1, 0, 0, 0, 6864, 6866, 1, 0, 0, 0, 6865, 6863, 1, 0, 0, 0, 6866, 6867, 5, 3, 0, 0, 6867, 6904, 1, 0, 0, 0, 6868, 6870, 5, 77, 0, 0, 6869, 6868, 1, 0, 0, 0, 6869, 6870, 1, 0, 0, 0, 6870, 6871, 1, 0, 0, 0, 6871, 6872, 5, 68, 0, 0, 6872, 6904, 3, 562, 281, 0, 6873, 6875, 5, 77, 0, 0, 6874, 6873, 1, 0, 0, 0, 6874, 6875, 1, 0, 0, 0, 6875, 6884, 1, 0, 0, 0, 6876, 6885, 5, 120, 0, 0, 6877, 6885, 5, 114, 0, 0, 6878, 6879, 5, 127, 0, 0, 6879, 6885, 5, 94, 0, 0, 6880, 6882, 5, 387, 0, 0, 6881, 6883, 5, 91, 0, 0, 6882, 6881, 1, 0, 0, 0, 6882, 6883, 1, 0, 0, 0, 6883, 6885, 1, 0, 0, 0, 6884, 6876, 1, 0, 0, 0, 6884, 6877, 1, 0, 0, 0, 6884, 6878, 1, 0, 0, 0, 6884, 6880, 1, 0, 0, 0, 6885, 6886, 1, 0, 0, 0, 6886, 6889, 3, 680, 340, 0, 6887, 6888, 5, 197, 0, 0, 6888, 6890, 3, 680, 340, 0, 6889, 6887, 1, 0, 0, 0, 6889, 6890, 1, 0, 0, 0, 6890, 6904, 1, 0, 0, 0, 6891, 6893, 5, 116, 0, 0, 6892, 6894, 5, 77, 0, 0, 6893, 6892, 1, 0, 0, 0, 6893, 6894, 1, 0, 0, 0, 6894, 6895, 1, 0, 0, 0, 6895, 6904, 5, 78, 0, 0, 6896, 6898, 5, 116, 0, 0, 6897, 6899, 5, 77, 0, 0, 6898, 6897, 1, 0, 0, 0, 6898, 6899, 1, 0, 0, 0, 6899, 6900, 1, 0, 0, 0, 6900, 6901, 5, 56, 0, 0, 6901, 6902, 5, 64, 0, 0, 6902, 6904, 3, 680, 340, 0, 6903, 6832, 1, 0, 0, 0, 6903, 6835, 1, 0, 0, 0, 6903, 6846, 1, 0, 0, 0, 6903, 6854, 1, 0, 0, 0, 6903, 6869, 1, 0, 0, 0, 6903, 6874, 1, 0, 0, 0, 6903, 6891, 1, 0, 0, 0, 6903, 6896, 1, 0, 0, 0, 6904, 679, 1, 0, 0, 0, 6905, 6906, 6, 340, -1, 0, 6906, 6910, 3, 682, 341, 0, 6907, 6908, 7, 29, 0, 0, 6908, 6910, 3, 680, 340, 4, 6909, 6905, 1, 0, 0, 0, 6909, 6907, 1, 0, 0, 0, 6910, 6927, 1, 0, 0, 0, 6911, 6912, 10, 3, 0, 0, 6912, 6913, 7, 93, 0, 0, 6913, 6926, 3, 680, 340, 4, 6914, 6915, 10, 2, 0, 0, 6915, 6916, 7, 29, 0, 0, 6916, 6926, 3, 680, 340, 3, 6917, 6918, 10, 1, 0, 0, 6918, 6919, 5, 15, 0, 0, 6919, 6926, 3, 680, 340, 2, 6920, 6921, 10, 5, 0, 0, 6921, 6922, 5, 142, 0, 0, 6922, 6923, 5, 418, 0, 0, 6923, 6924, 5, 386, 0, 0, 6924, 6926, 3, 674, 337, 0, 6925, 6911, 1, 0, 0, 0, 6925, 6914, 1, 0, 0, 0, 6925, 6917, 1, 0, 0, 0, 6925, 6920, 1, 0, 0, 0, 6926, 6929, 1, 0, 0, 0, 6927, 6925, 1, 0, 0, 0, 6927, 6928, 1, 0, 0, 0, 6928, 681, 1, 0, 0, 0, 6929, 6927, 1, 0, 0, 0, 6930, 6931, 6, 341, -1, 0, 6931, 6932, 7, 94, 0, 0, 6932, 7019, 3, 562, 281, 0, 6933, 6936, 5, 35, 0, 0, 6934, 6937, 3, 562, 281, 0, 6935, 6937, 3, 740, 370, 0, 6936, 6934, 1, 0, 0, 0, 6936, 6935, 1, 0, 0, 0, 6937, 7019, 1, 0, 0, 0, 6938, 6939, 5, 28, 0, 0, 6939, 7019, 3, 754, 377, 0, 6940, 6941, 5, 470, 0, 0, 6941, 7019, 3, 534, 267, 0, 6942, 7019, 5, 571, 0, 0, 6943, 7019, 5, 573, 0, 0, 6944, 7019, 5, 563, 0, 0, 6945, 7019, 5, 567, 0, 0, 6946, 6956, 3, 806, 403, 0, 6947, 6957, 3, 808, 404, 0, 6948, 6949, 5, 2, 0, 0, 6949, 6951, 3, 736, 368, 0, 6950, 6952, 3, 586, 293, 0, 6951, 6950, 1, 0, 0, 0, 6951, 6952, 1, 0, 0, 0, 6952, 6953, 1, 0, 0, 0, 6953, 6954, 5, 3, 0, 0, 6954, 6955, 3, 808, 404, 0, 6955, 6957, 1, 0, 0, 0, 6956, 6947, 1, 0, 0, 0, 6956, 6948, 1, 0, 0, 0, 6957, 7019, 1, 0, 0, 0, 6958, 6960, 3, 656, 328, 0, 6959, 6958, 1, 0, 0, 0, 6959, 6960, 1, 0, 0, 0, 6960, 6961, 1, 0, 0, 0, 6961, 7019, 3, 808, 404, 0, 6962, 6970, 5, 403, 0, 0, 6963, 6965, 3, 808, 404, 0, 6964, 6966, 3, 668, 334, 0, 6965, 6964, 1, 0, 0, 0, 6965, 6966, 1, 0, 0, 0, 6966, 6971, 1, 0, 0, 0, 6967, 6968, 3, 660, 330, 0, 6968, 6969, 3, 808, 404, 0, 6969, 6971, 1, 0, 0, 0, 6970, 6963, 1, 0, 0, 0, 6970, 6967, 1, 0, 0, 0, 6971, 7019, 1, 0, 0, 0, 6972, 7019, 5, 96, 0, 0, 6973, 7019, 5, 60, 0, 0, 6974, 7019, 5, 78, 0, 0, 6975, 7019, 5, 574, 0, 0, 6976, 6977, 5, 2, 0, 0, 6977, 6978, 3, 674, 337, 0, 6978, 6979, 5, 3, 0, 0, 6979, 6980, 3, 754, 377, 0, 6980, 7019, 1, 0, 0, 0, 6981, 6983, 5, 40, 0, 0, 6982, 6984, 3, 674, 337, 0, 6983, 6982, 1, 0, 0, 0, 6983, 6984, 1, 0, 0, 0, 6984, 6986, 1, 0, 0, 0, 6985, 6987, 3, 748, 374, 0, 6986, 6985, 1, 0, 0, 0, 6987, 6988, 1, 0, 0, 0, 6988, 6986, 1, 0, 0, 0, 6988, 6989, 1, 0, 0, 0, 6989, 6992, 1, 0, 0, 0, 6990, 6991, 5, 58, 0, 0, 6991, 6993, 3, 674, 337, 0, 6992, 6990, 1, 0, 0, 0, 6992, 6993, 1, 0, 0, 0, 6993, 6994, 1, 0, 0, 0, 6994, 6995, 5, 454, 0, 0, 6995, 7019, 1, 0, 0, 0, 6996, 7019, 3, 686, 343, 0, 6997, 6999, 3, 562, 281, 0, 6998, 7000, 3, 752, 376, 0, 6999, 6998, 1, 0, 0, 0, 6999, 7000, 1, 0, 0, 0, 7000, 7019, 1, 0, 0, 0, 7001, 7019, 3, 716, 358, 0, 7002, 7003, 5, 2, 0, 0, 7003, 7004, 3, 674, 337, 0, 7004, 7005, 5, 6, 0, 0, 7005, 7006, 3, 730, 365, 0, 7006, 7007, 5, 3, 0, 0, 7007, 7019, 1, 0, 0, 0, 7008, 7009, 3, 714, 357, 0, 7009, 7010, 5, 125, 0, 0, 7010, 7011, 3, 714, 357, 0, 7011, 7019, 1, 0, 0, 0, 7012, 7019, 3, 780, 390, 0, 7013, 7014, 7, 29, 0, 0, 7014, 7019, 3, 682, 341, 5, 7015, 7016, 3, 724, 362, 0, 7016, 7017, 3, 682, 341, 2, 7017, 7019, 1, 0, 0, 0, 7018, 6930, 1, 0, 0, 0, 7018, 6933, 1, 0, 0, 0, 7018, 6938, 1, 0, 0, 0, 7018, 6940, 1, 0, 0, 0, 7018, 6942, 1, 0, 0, 0, 7018, 6943, 1, 0, 0, 0, 7018, 6944, 1, 0, 0, 0, 7018, 6945, 1, 0, 0, 0, 7018, 6946, 1, 0, 0, 0, 7018, 6959, 1, 0, 0, 0, 7018, 6962, 1, 0, 0, 0, 7018, 6972, 1, 0, 0, 0, 7018, 6973, 1, 0, 0, 0, 7018, 6974, 1, 0, 0, 0, 7018, 6975, 1, 0, 0, 0, 7018, 6976, 1, 0, 0, 0, 7018, 6981, 1, 0, 0, 0, 7018, 6996, 1, 0, 0, 0, 7018, 6997, 1, 0, 0, 0, 7018, 7001, 1, 0, 0, 0, 7018, 7002, 1, 0, 0, 0, 7018, 7008, 1, 0, 0, 0, 7018, 7012, 1, 0, 0, 0, 7018, 7013, 1, 0, 0, 0, 7018, 7015, 1, 0, 0, 0, 7019, 7047, 1, 0, 0, 0, 7020, 7021, 10, 3, 0, 0, 7021, 7022, 3, 722, 361, 0, 7022, 7023, 3, 682, 341, 4, 7023, 7046, 1, 0, 0, 0, 7024, 7025, 10, 6, 0, 0, 7025, 7026, 5, 26, 0, 0, 7026, 7046, 3, 652, 326, 0, 7027, 7028, 10, 4, 0, 0, 7028, 7030, 3, 724, 362, 0, 7029, 7031, 3, 682, 341, 0, 7030, 7029, 1, 0, 0, 0, 7030, 7031, 1, 0, 0, 0, 7031, 7046, 1, 0, 0, 0, 7032, 7033, 10, 1, 0, 0, 7033, 7035, 5, 116, 0, 0, 7034, 7036, 5, 77, 0, 0, 7035, 7034, 1, 0, 0, 0, 7035, 7036, 1, 0, 0, 0, 7036, 7043, 1, 0, 0, 0, 7037, 7038, 5, 56, 0, 0, 7038, 7039, 5, 64, 0, 0, 7039, 7044, 3, 682, 341, 0, 7040, 7041, 5, 275, 0, 0, 7041, 7044, 3, 528, 264, 0, 7042, 7044, 5, 188, 0, 0, 7043, 7037, 1, 0, 0, 0, 7043, 7040, 1, 0, 0, 0, 7043, 7042, 1, 0, 0, 0, 7044, 7046, 1, 0, 0, 0, 7045, 7020, 1, 0, 0, 0, 7045, 7024, 1, 0, 0, 0, 7045, 7027, 1, 0, 0, 0, 7045, 7032, 1, 0, 0, 0, 7046, 7049, 1, 0, 0, 0, 7047, 7045, 1, 0, 0, 0, 7047, 7048, 1, 0, 0, 0, 7048, 683, 1, 0, 0, 0, 7049, 7047, 1, 0, 0, 0, 7050, 7076, 3, 806, 403, 0, 7051, 7073, 5, 2, 0, 0, 7052, 7056, 3, 736, 368, 0, 7053, 7054, 5, 6, 0, 0, 7054, 7055, 5, 101, 0, 0, 7055, 7057, 3, 738, 369, 0, 7056, 7053, 1, 0, 0, 0, 7056, 7057, 1, 0, 0, 0, 7057, 7059, 1, 0, 0, 0, 7058, 7060, 3, 586, 293, 0, 7059, 7058, 1, 0, 0, 0, 7059, 7060, 1, 0, 0, 0, 7060, 7074, 1, 0, 0, 0, 7061, 7062, 5, 101, 0, 0, 7062, 7064, 3, 738, 369, 0, 7063, 7065, 3, 586, 293, 0, 7064, 7063, 1, 0, 0, 0, 7064, 7065, 1, 0, 0, 0, 7065, 7074, 1, 0, 0, 0, 7066, 7067, 7, 80, 0, 0, 7067, 7069, 3, 736, 368, 0, 7068, 7070, 3, 586, 293, 0, 7069, 7068, 1, 0, 0, 0, 7069, 7070, 1, 0, 0, 0, 7070, 7074, 1, 0, 0, 0, 7071, 7074, 5, 9, 0, 0, 7072, 7074, 1, 0, 0, 0, 7073, 7052, 1, 0, 0, 0, 7073, 7061, 1, 0, 0, 0, 7073, 7066, 1, 0, 0, 0, 7073, 7071, 1, 0, 0, 0, 7073, 7072, 1, 0, 0, 0, 7074, 7075, 1, 0, 0, 0, 7075, 7077, 5, 3, 0, 0, 7076, 7051, 1, 0, 0, 0, 7076, 7077, 1, 0, 0, 0, 7077, 685, 1, 0, 0, 0, 7078, 7085, 3, 684, 342, 0, 7079, 7080, 5, 479, 0, 0, 7080, 7081, 5, 66, 0, 0, 7081, 7082, 5, 2, 0, 0, 7082, 7083, 3, 586, 293, 0, 7083, 7084, 5, 3, 0, 0, 7084, 7086, 1, 0, 0, 0, 7085, 7079, 1, 0, 0, 0, 7085, 7086, 1, 0, 0, 0, 7086, 7093, 1, 0, 0, 0, 7087, 7088, 5, 480, 0, 0, 7088, 7089, 5, 2, 0, 0, 7089, 7090, 5, 103, 0, 0, 7090, 7091, 3, 674, 337, 0, 7091, 7092, 5, 3, 0, 0, 7092, 7094, 1, 0, 0, 0, 7093, 7087, 1, 0, 0, 0, 7093, 7094, 1, 0, 0, 0, 7094, 7100, 1, 0, 0, 0, 7095, 7098, 5, 124, 0, 0, 7096, 7099, 3, 708, 354, 0, 7097, 7099, 3, 818, 409, 0, 7098, 7096, 1, 0, 0, 0, 7098, 7097, 1, 0, 0, 0, 7099, 7101, 1, 0, 0, 0, 7100, 7095, 1, 0, 0, 0, 7100, 7101, 1, 0, 0, 0, 7101, 7104, 1, 0, 0, 0, 7102, 7104, 3, 690, 345, 0, 7103, 7078, 1, 0, 0, 0, 7103, 7102, 1, 0, 0, 0, 7104, 687, 1, 0, 0, 0, 7105, 7108, 3, 684, 342, 0, 7106, 7108, 3, 690, 345, 0, 7107, 7105, 1, 0, 0, 0, 7107, 7106, 1, 0, 0, 0, 7108, 689, 1, 0, 0, 0, 7109, 7110, 5, 108, 0, 0, 7110, 7111, 5, 62, 0, 0, 7111, 7112, 5, 2, 0, 0, 7112, 7113, 3, 674, 337, 0, 7113, 7114, 5, 3, 0, 0, 7114, 7284, 1, 0, 0, 0, 7115, 7284, 5, 48, 0, 0, 7116, 7118, 7, 95, 0, 0, 7117, 7119, 3, 660, 330, 0, 7118, 7117, 1, 0, 0, 0, 7118, 7119, 1, 0, 0, 0, 7119, 7284, 1, 0, 0, 0, 7120, 7284, 5, 49, 0, 0, 7121, 7284, 5, 52, 0, 0, 7122, 7284, 5, 89, 0, 0, 7123, 7284, 5, 99, 0, 0, 7124, 7284, 5, 47, 0, 0, 7125, 7284, 5, 111, 0, 0, 7126, 7127, 7, 96, 0, 0, 7127, 7128, 5, 2, 0, 0, 7128, 7129, 3, 674, 337, 0, 7129, 7130, 5, 36, 0, 0, 7130, 7131, 3, 652, 326, 0, 7131, 7132, 5, 3, 0, 0, 7132, 7284, 1, 0, 0, 0, 7133, 7134, 5, 397, 0, 0, 7134, 7139, 5, 2, 0, 0, 7135, 7136, 3, 742, 371, 0, 7136, 7137, 5, 64, 0, 0, 7137, 7138, 3, 674, 337, 0, 7138, 7140, 1, 0, 0, 0, 7139, 7135, 1, 0, 0, 0, 7139, 7140, 1, 0, 0, 0, 7140, 7141, 1, 0, 0, 0, 7141, 7284, 5, 3, 0, 0, 7142, 7143, 5, 489, 0, 0, 7143, 7144, 5, 2, 0, 0, 7144, 7147, 3, 674, 337, 0, 7145, 7146, 5, 6, 0, 0, 7146, 7148, 3, 744, 372, 0, 7147, 7145, 1, 0, 0, 0, 7147, 7148, 1, 0, 0, 0, 7148, 7149, 1, 0, 0, 0, 7149, 7150, 5, 3, 0, 0, 7150, 7284, 1, 0, 0, 0, 7151, 7152, 5, 410, 0, 0, 7152, 7153, 5, 2, 0, 0, 7153, 7154, 3, 674, 337, 0, 7154, 7155, 5, 84, 0, 0, 7155, 7156, 3, 674, 337, 0, 7156, 7157, 5, 64, 0, 0, 7157, 7160, 3, 674, 337, 0, 7158, 7159, 5, 62, 0, 0, 7159, 7161, 3, 674, 337, 0, 7160, 7158, 1, 0, 0, 0, 7160, 7161, 1, 0, 0, 0, 7161, 7162, 1, 0, 0, 0, 7162, 7163, 5, 3, 0, 0, 7163, 7284, 1, 0, 0, 0, 7164, 7165, 5, 411, 0, 0, 7165, 7170, 5, 2, 0, 0, 7166, 7167, 3, 682, 341, 0, 7167, 7168, 5, 68, 0, 0, 7168, 7169, 3, 682, 341, 0, 7169, 7171, 1, 0, 0, 0, 7170, 7166, 1, 0, 0, 0, 7170, 7171, 1, 0, 0, 0, 7171, 7172, 1, 0, 0, 0, 7172, 7284, 5, 3, 0, 0, 7173, 7174, 5, 417, 0, 0, 7174, 7176, 5, 2, 0, 0, 7175, 7177, 3, 746, 373, 0, 7176, 7175, 1, 0, 0, 0, 7176, 7177, 1, 0, 0, 0, 7177, 7178, 1, 0, 0, 0, 7178, 7284, 5, 3, 0, 0, 7179, 7180, 5, 421, 0, 0, 7180, 7182, 5, 2, 0, 0, 7181, 7183, 7, 97, 0, 0, 7182, 7181, 1, 0, 0, 0, 7182, 7183, 1, 0, 0, 0, 7183, 7188, 1, 0, 0, 0, 7184, 7186, 3, 674, 337, 0, 7185, 7184, 1, 0, 0, 0, 7185, 7186, 1, 0, 0, 0, 7186, 7187, 1, 0, 0, 0, 7187, 7189, 5, 64, 0, 0, 7188, 7185, 1, 0, 0, 0, 7188, 7189, 1, 0, 0, 0, 7189, 7190, 1, 0, 0, 0, 7190, 7191, 3, 730, 365, 0, 7191, 7192, 1, 0, 0, 0, 7192, 7193, 5, 3, 0, 0, 7193, 7284, 1, 0, 0, 0, 7194, 7195, 5, 408, 0, 0, 7195, 7196, 5, 2, 0, 0, 7196, 7197, 3, 674, 337, 0, 7197, 7198, 5, 6, 0, 0, 7198, 7199, 3, 674, 337, 0, 7199, 7200, 5, 3, 0, 0, 7200, 7284, 1, 0, 0, 0, 7201, 7202, 7, 98, 0, 0, 7202, 7284, 3, 534, 267, 0, 7203, 7204, 5, 426, 0, 0, 7204, 7205, 5, 2, 0, 0, 7205, 7206, 5, 266, 0, 0, 7206, 7216, 3, 824, 412, 0, 7207, 7214, 5, 6, 0, 0, 7208, 7209, 5, 424, 0, 0, 7209, 7210, 5, 2, 0, 0, 7210, 7211, 3, 692, 346, 0, 7211, 7212, 5, 3, 0, 0, 7212, 7215, 1, 0, 0, 0, 7213, 7215, 3, 730, 365, 0, 7214, 7208, 1, 0, 0, 0, 7214, 7213, 1, 0, 0, 0, 7215, 7217, 1, 0, 0, 0, 7216, 7207, 1, 0, 0, 0, 7216, 7217, 1, 0, 0, 0, 7217, 7218, 1, 0, 0, 0, 7218, 7219, 5, 3, 0, 0, 7219, 7284, 1, 0, 0, 0, 7220, 7221, 5, 427, 0, 0, 7221, 7222, 5, 2, 0, 0, 7222, 7223, 3, 682, 341, 0, 7223, 7224, 3, 698, 349, 0, 7224, 7225, 5, 3, 0, 0, 7225, 7284, 1, 0, 0, 0, 7226, 7227, 5, 428, 0, 0, 7227, 7228, 5, 2, 0, 0, 7228, 7229, 3, 692, 346, 0, 7229, 7230, 5, 3, 0, 0, 7230, 7284, 1, 0, 0, 0, 7231, 7232, 5, 429, 0, 0, 7232, 7233, 5, 2, 0, 0, 7233, 7234, 3, 696, 348, 0, 7234, 7237, 3, 674, 337, 0, 7235, 7236, 7, 99, 0, 0, 7236, 7238, 5, 378, 0, 0, 7237, 7235, 1, 0, 0, 0, 7237, 7238, 1, 0, 0, 0, 7238, 7239, 1, 0, 0, 0, 7239, 7240, 5, 3, 0, 0, 7240, 7284, 1, 0, 0, 0, 7241, 7242, 5, 430, 0, 0, 7242, 7243, 5, 2, 0, 0, 7243, 7244, 5, 266, 0, 0, 7244, 7247, 3, 824, 412, 0, 7245, 7246, 5, 6, 0, 0, 7246, 7248, 3, 674, 337, 0, 7247, 7245, 1, 0, 0, 0, 7247, 7248, 1, 0, 0, 0, 7248, 7249, 1, 0, 0, 0, 7249, 7250, 5, 3, 0, 0, 7250, 7284, 1, 0, 0, 0, 7251, 7252, 5, 431, 0, 0, 7252, 7253, 5, 2, 0, 0, 7253, 7254, 5, 383, 0, 0, 7254, 7255, 3, 674, 337, 0, 7255, 7256, 5, 6, 0, 0, 7256, 7260, 5, 375, 0, 0, 7257, 7258, 5, 269, 0, 0, 7258, 7261, 5, 450, 0, 0, 7259, 7261, 3, 674, 337, 0, 7260, 7257, 1, 0, 0, 0, 7260, 7259, 1, 0, 0, 0, 7261, 7271, 1, 0, 0, 0, 7262, 7263, 5, 6, 0, 0, 7263, 7269, 5, 339, 0, 0, 7264, 7266, 5, 269, 0, 0, 7265, 7264, 1, 0, 0, 0, 7265, 7266, 1, 0, 0, 0, 7266, 7267, 1, 0, 0, 0, 7267, 7270, 5, 450, 0, 0, 7268, 7270, 5, 385, 0, 0, 7269, 7265, 1, 0, 0, 0, 7269, 7268, 1, 0, 0, 0, 7270, 7272, 1, 0, 0, 0, 7271, 7262, 1, 0, 0, 0, 7271, 7272, 1, 0, 0, 0, 7272, 7273, 1, 0, 0, 0, 7273, 7274, 5, 3, 0, 0, 7274, 7284, 1, 0, 0, 0, 7275, 7276, 5, 432, 0, 0, 7276, 7277, 5, 2, 0, 0, 7277, 7278, 3, 696, 348, 0, 7278, 7279, 3, 674, 337, 0, 7279, 7280, 5, 36, 0, 0, 7280, 7281, 3, 654, 327, 0, 7281, 7282, 5, 3, 0, 0, 7282, 7284, 1, 0, 0, 0, 7283, 7109, 1, 0, 0, 0, 7283, 7115, 1, 0, 0, 0, 7283, 7116, 1, 0, 0, 0, 7283, 7120, 1, 0, 0, 0, 7283, 7121, 1, 0, 0, 0, 7283, 7122, 1, 0, 0, 0, 7283, 7123, 1, 0, 0, 0, 7283, 7124, 1, 0, 0, 0, 7283, 7125, 1, 0, 0, 0, 7283, 7126, 1, 0, 0, 0, 7283, 7133, 1, 0, 0, 0, 7283, 7142, 1, 0, 0, 0, 7283, 7151, 1, 0, 0, 0, 7283, 7164, 1, 0, 0, 0, 7283, 7173, 1, 0, 0, 0, 7283, 7179, 1, 0, 0, 0, 7283, 7194, 1, 0, 0, 0, 7283, 7201, 1, 0, 0, 0, 7283, 7203, 1, 0, 0, 0, 7283, 7220, 1, 0, 0, 0, 7283, 7226, 1, 0, 0, 0, 7283, 7231, 1, 0, 0, 0, 7283, 7241, 1, 0, 0, 0, 7283, 7251, 1, 0, 0, 0, 7283, 7275, 1, 0, 0, 0, 7284, 691, 1, 0, 0, 0, 7285, 7290, 3, 694, 347, 0, 7286, 7287, 5, 6, 0, 0, 7287, 7289, 3, 694, 347, 0, 7288, 7286, 1, 0, 0, 0, 7289, 7292, 1, 0, 0, 0, 7290, 7288, 1, 0, 0, 0, 7290, 7291, 1, 0, 0, 0, 7291, 693, 1, 0, 0, 0, 7292, 7290, 1, 0, 0, 0, 7293, 7296, 3, 674, 337, 0, 7294, 7295, 5, 36, 0, 0, 7295, 7297, 3, 824, 412, 0, 7296, 7294, 1, 0, 0, 0, 7296, 7297, 1, 0, 0, 0, 7297, 695, 1, 0, 0, 0, 7298, 7299, 7, 100, 0, 0, 7299, 697, 1, 0, 0, 0, 7300, 7302, 5, 286, 0, 0, 7301, 7303, 3, 700, 350, 0, 7302, 7301, 1, 0, 0, 0, 7302, 7303, 1, 0, 0, 0, 7303, 7304, 1, 0, 0, 0, 7304, 7306, 3, 682, 341, 0, 7305, 7307, 3, 700, 350, 0, 7306, 7305, 1, 0, 0, 0, 7306, 7307, 1, 0, 0, 0, 7307, 699, 1, 0, 0, 0, 7308, 7309, 5, 147, 0, 0, 7309, 7310, 7, 101, 0, 0, 7310, 701, 1, 0, 0, 0, 7311, 7312, 5, 104, 0, 0, 7312, 7317, 3, 704, 352, 0, 7313, 7314, 5, 6, 0, 0, 7314, 7316, 3, 704, 352, 0, 7315, 7313, 1, 0, 0, 0, 7316, 7319, 1, 0, 0, 0, 7317, 7315, 1, 0, 0, 0, 7317, 7318, 1, 0, 0, 0, 7318, 703, 1, 0, 0, 0, 7319, 7317, 1, 0, 0, 0, 7320, 7321, 3, 818, 409, 0, 7321, 7322, 5, 36, 0, 0, 7322, 7323, 3, 708, 354, 0, 7323, 705, 1, 0, 0, 0, 7324, 7327, 5, 124, 0, 0, 7325, 7328, 3, 708, 354, 0, 7326, 7328, 3, 818, 409, 0, 7327, 7325, 1, 0, 0, 0, 7327, 7326, 1, 0, 0, 0, 7328, 707, 1, 0, 0, 0, 7329, 7331, 5, 2, 0, 0, 7330, 7332, 3, 818, 409, 0, 7331, 7330, 1, 0, 0, 0, 7331, 7332, 1, 0, 0, 0, 7332, 7336, 1, 0, 0, 0, 7333, 7334, 5, 285, 0, 0, 7334, 7335, 5, 147, 0, 0, 7335, 7337, 3, 730, 365, 0, 7336, 7333, 1, 0, 0, 0, 7336, 7337, 1, 0, 0, 0, 7337, 7339, 1, 0, 0, 0, 7338, 7340, 3, 586, 293, 0, 7339, 7338, 1, 0, 0, 0, 7339, 7340, 1, 0, 0, 0, 7340, 7342, 1, 0, 0, 0, 7341, 7343, 3, 710, 355, 0, 7342, 7341, 1, 0, 0, 0, 7342, 7343, 1, 0, 0, 0, 7343, 7344, 1, 0, 0, 0, 7344, 7345, 5, 3, 0, 0, 7345, 709, 1, 0, 0, 0, 7346, 7351, 7, 102, 0, 0, 7347, 7348, 5, 387, 0, 0, 7348, 7349, 3, 712, 356, 0, 7349, 7350, 5, 33, 0, 0, 7350, 7352, 1, 0, 0, 0, 7351, 7347, 1, 0, 0, 0, 7351, 7352, 1, 0, 0, 0, 7352, 7353, 1, 0, 0, 0, 7353, 7354, 3, 712, 356, 0, 7354, 7364, 1, 0, 0, 0, 7355, 7362, 5, 199, 0, 0, 7356, 7357, 5, 434, 0, 0, 7357, 7363, 5, 414, 0, 0, 7358, 7363, 5, 66, 0, 0, 7359, 7363, 5, 467, 0, 0, 7360, 7361, 5, 269, 0, 0, 7361, 7363, 5, 482, 0, 0, 7362, 7356, 1, 0, 0, 0, 7362, 7358, 1, 0, 0, 0, 7362, 7359, 1, 0, 0, 0, 7362, 7360, 1, 0, 0, 0, 7363, 7365, 1, 0, 0, 0, 7364, 7355, 1, 0, 0, 0, 7364, 7365, 1, 0, 0, 0, 7365, 711, 1, 0, 0, 0, 7366, 7369, 5, 362, 0, 0, 7367, 7369, 3, 674, 337, 0, 7368, 7366, 1, 0, 0, 0, 7368, 7367, 1, 0, 0, 0, 7369, 7370, 1, 0, 0, 0, 7370, 7374, 7, 103, 0, 0, 7371, 7372, 5, 434, 0, 0, 7372, 7374, 5, 414, 0, 0, 7373, 7368, 1, 0, 0, 0, 7373, 7371, 1, 0, 0, 0, 7374, 713, 1, 0, 0, 0, 7375, 7383, 3, 716, 358, 0, 7376, 7377, 5, 2, 0, 0, 7377, 7378, 3, 730, 365, 0, 7378, 7379, 5, 6, 0, 0, 7379, 7380, 3, 674, 337, 0, 7380, 7381, 5, 3, 0, 0, 7381, 7383, 1, 0, 0, 0, 7382, 7375, 1, 0, 0, 0, 7382, 7376, 1, 0, 0, 0, 7383, 715, 1, 0, 0, 0, 7384, 7385, 5, 414, 0, 0, 7385, 7387, 5, 2, 0, 0, 7386, 7388, 3, 730, 365, 0, 7387, 7386, 1, 0, 0, 0, 7387, 7388, 1, 0, 0, 0, 7388, 7389, 1, 0, 0, 0, 7389, 7390, 5, 3, 0, 0, 7390, 717, 1, 0, 0, 0, 7391, 7392, 7, 104, 0, 0, 7392, 719, 1, 0, 0, 0, 7393, 7396, 5, 29, 0, 0, 7394, 7396, 3, 722, 361, 0, 7395, 7393, 1, 0, 0, 0, 7395, 7394, 1, 0, 0, 0, 7396, 721, 1, 0, 0, 0, 7397, 7398, 7, 105, 0, 0, 7398, 723, 1, 0, 0, 0, 7399, 7406, 5, 29, 0, 0, 7400, 7401, 5, 278, 0, 0, 7401, 7402, 5, 2, 0, 0, 7402, 7403, 3, 414, 207, 0, 7403, 7404, 5, 3, 0, 0, 7404, 7406, 1, 0, 0, 0, 7405, 7399, 1, 0, 0, 0, 7405, 7400, 1, 0, 0, 0, 7406, 725, 1, 0, 0, 0, 7407, 7414, 3, 720, 360, 0, 7408, 7409, 5, 278, 0, 0, 7409, 7410, 5, 2, 0, 0, 7410, 7411, 3, 414, 207, 0, 7411, 7412, 5, 3, 0, 0, 7412, 7414, 1, 0, 0, 0, 7413, 7407, 1, 0, 0, 0, 7413, 7408, 1, 0, 0, 0, 7414, 727, 1, 0, 0, 0, 7415, 7421, 3, 726, 363, 0, 7416, 7418, 5, 77, 0, 0, 7417, 7416, 1, 0, 0, 0, 7417, 7418, 1, 0, 0, 0, 7418, 7419, 1, 0, 0, 0, 7419, 7421, 7, 106, 0, 0, 7420, 7415, 1, 0, 0, 0, 7420, 7417, 1, 0, 0, 0, 7421, 729, 1, 0, 0, 0, 7422, 7427, 3, 674, 337, 0, 7423, 7424, 5, 6, 0, 0, 7424, 7426, 3, 674, 337, 0, 7425, 7423, 1, 0, 0, 0, 7426, 7429, 1, 0, 0, 0, 7427, 7425, 1, 0, 0, 0, 7427, 7428, 1, 0, 0, 0, 7428, 731, 1, 0, 0, 0, 7429, 7427, 1, 0, 0, 0, 7430, 7431, 5, 2, 0, 0, 7431, 7432, 3, 674, 337, 0, 7432, 7433, 5, 3, 0, 0, 7433, 7436, 1, 0, 0, 0, 7434, 7436, 3, 800, 400, 0, 7435, 7430, 1, 0, 0, 0, 7435, 7434, 1, 0, 0, 0, 7436, 733, 1, 0, 0, 0, 7437, 7440, 3, 674, 337, 0, 7438, 7440, 3, 800, 400, 0, 7439, 7437, 1, 0, 0, 0, 7439, 7438, 1, 0, 0, 0, 7440, 735, 1, 0, 0, 0, 7441, 7446, 3, 738, 369, 0, 7442, 7443, 5, 6, 0, 0, 7443, 7445, 3, 738, 369, 0, 7444, 7442, 1, 0, 0, 0, 7445, 7448, 1, 0, 0, 0, 7446, 7444, 1, 0, 0, 0, 7446, 7447, 1, 0, 0, 0, 7447, 737, 1, 0, 0, 0, 7448, 7446, 1, 0, 0, 0, 7449, 7455, 3, 674, 337, 0, 7450, 7451, 3, 820, 410, 0, 7451, 7452, 7, 107, 0, 0, 7452, 7453, 3, 674, 337, 0, 7453, 7455, 1, 0, 0, 0, 7454, 7449, 1, 0, 0, 0, 7454, 7450, 1, 0, 0, 0, 7455, 739, 1, 0, 0, 0, 7456, 7466, 5, 4, 0, 0, 7457, 7467, 3, 730, 365, 0, 7458, 7463, 3, 740, 370, 0, 7459, 7460, 5, 6, 0, 0, 7460, 7462, 3, 740, 370, 0, 7461, 7459, 1, 0, 0, 0, 7462, 7465, 1, 0, 0, 0, 7463, 7461, 1, 0, 0, 0, 7463, 7464, 1, 0, 0, 0, 7464, 7467, 1, 0, 0, 0, 7465, 7463, 1, 0, 0, 0, 7466, 7457, 1, 0, 0, 0, 7466, 7458, 1, 0, 0, 0, 7466, 7467, 1, 0, 0, 0, 7467, 7468, 1, 0, 0, 0, 7468, 7469, 5, 5, 0, 0, 7469, 741, 1, 0, 0, 0, 7470, 7479, 3, 826, 413, 0, 7471, 7479, 5, 384, 0, 0, 7472, 7479, 5, 264, 0, 0, 7473, 7479, 5, 176, 0, 0, 7474, 7479, 5, 218, 0, 0, 7475, 7479, 5, 261, 0, 0, 7476, 7479, 5, 326, 0, 0, 7477, 7479, 3, 808, 404, 0, 7478, 7470, 1, 0, 0, 0, 7478, 7471, 1, 0, 0, 0, 7478, 7472, 1, 0, 0, 0, 7478, 7473, 1, 0, 0, 0, 7478, 7474, 1, 0, 0, 0, 7478, 7475, 1, 0, 0, 0, 7478, 7476, 1, 0, 0, 0, 7478, 7477, 1, 0, 0, 0, 7479, 743, 1, 0, 0, 0, 7480, 7481, 7, 108, 0, 0, 7481, 745, 1, 0, 0, 0, 7482, 7483, 3, 674, 337, 0, 7483, 7484, 5, 64, 0, 0, 7484, 7487, 3, 674, 337, 0, 7485, 7486, 5, 62, 0, 0, 7486, 7488, 3, 674, 337, 0, 7487, 7485, 1, 0, 0, 0, 7487, 7488, 1, 0, 0, 0, 7488, 7504, 1, 0, 0, 0, 7489, 7490, 3, 674, 337, 0, 7490, 7491, 5, 62, 0, 0, 7491, 7494, 3, 674, 337, 0, 7492, 7493, 5, 64, 0, 0, 7493, 7495, 3, 674, 337, 0, 7494, 7492, 1, 0, 0, 0, 7494, 7495, 1, 0, 0, 0, 7495, 7504, 1, 0, 0, 0, 7496, 7497, 3, 674, 337, 0, 7497, 7498, 5, 127, 0, 0, 7498, 7499, 3, 674, 337, 0, 7499, 7500, 5, 197, 0, 0, 7500, 7501, 3, 674, 337, 0, 7501, 7504, 1, 0, 0, 0, 7502, 7504, 3, 730, 365, 0, 7503, 7482, 1, 0, 0, 0, 7503, 7489, 1, 0, 0, 0, 7503, 7496, 1, 0, 0, 0, 7503, 7502, 1, 0, 0, 0, 7504, 747, 1, 0, 0, 0, 7505, 7506, 5, 102, 0, 0, 7506, 7507, 3, 674, 337, 0, 7507, 7508, 5, 93, 0, 0, 7508, 7509, 3, 674, 337, 0, 7509, 749, 1, 0, 0, 0, 7510, 7513, 5, 11, 0, 0, 7511, 7514, 3, 824, 412, 0, 7512, 7514, 5, 9, 0, 0, 7513, 7511, 1, 0, 0, 0, 7513, 7512, 1, 0, 0, 0, 7514, 7528, 1, 0, 0, 0, 7515, 7524, 5, 4, 0, 0, 7516, 7525, 3, 674, 337, 0, 7517, 7519, 3, 674, 337, 0, 7518, 7517, 1, 0, 0, 0, 7518, 7519, 1, 0, 0, 0, 7519, 7520, 1, 0, 0, 0, 7520, 7522, 5, 8, 0, 0, 7521, 7523, 3, 674, 337, 0, 7522, 7521, 1, 0, 0, 0, 7522, 7523, 1, 0, 0, 0, 7523, 7525, 1, 0, 0, 0, 7524, 7516, 1, 0, 0, 0, 7524, 7518, 1, 0, 0, 0, 7525, 7526, 1, 0, 0, 0, 7526, 7528, 5, 5, 0, 0, 7527, 7510, 1, 0, 0, 0, 7527, 7515, 1, 0, 0, 0, 7528, 751, 1, 0, 0, 0, 7529, 7531, 3, 750, 375, 0, 7530, 7529, 1, 0, 0, 0, 7531, 7532, 1, 0, 0, 0, 7532, 7530, 1, 0, 0, 0, 7532, 7533, 1, 0, 0, 0, 7533, 753, 1, 0, 0, 0, 7534, 7536, 3, 750, 375, 0, 7535, 7534, 1, 0, 0, 0, 7536, 7539, 1, 0, 0, 0, 7537, 7535, 1, 0, 0, 0, 7537, 7538, 1, 0, 0, 0, 7538, 755, 1, 0, 0, 0, 7539, 7537, 1, 0, 0, 0, 7540, 7545, 3, 758, 379, 0, 7541, 7542, 5, 6, 0, 0, 7542, 7544, 3, 758, 379, 0, 7543, 7541, 1, 0, 0, 0, 7544, 7547, 1, 0, 0, 0, 7545, 7543, 1, 0, 0, 0, 7545, 7546, 1, 0, 0, 0, 7546, 757, 1, 0, 0, 0, 7547, 7545, 1, 0, 0, 0, 7548, 7553, 3, 734, 367, 0, 7549, 7550, 5, 36, 0, 0, 7550, 7554, 3, 824, 412, 0, 7551, 7554, 3, 826, 413, 0, 7552, 7554, 1, 0, 0, 0, 7553, 7549, 1, 0, 0, 0, 7553, 7551, 1, 0, 0, 0, 7553, 7552, 1, 0, 0, 0, 7554, 7557, 1, 0, 0, 0, 7555, 7557, 5, 9, 0, 0, 7556, 7548, 1, 0, 0, 0, 7556, 7555, 1, 0, 0, 0, 7557, 759, 1, 0, 0, 0, 7558, 7563, 3, 780, 390, 0, 7559, 7560, 5, 6, 0, 0, 7560, 7562, 3, 780, 390, 0, 7561, 7559, 1, 0, 0, 0, 7562, 7565, 1, 0, 0, 0, 7563, 7561, 1, 0, 0, 0, 7563, 7564, 1, 0, 0, 0, 7564, 761, 1, 0, 0, 0, 7565, 7563, 1, 0, 0, 0, 7566, 7571, 3, 774, 387, 0, 7567, 7568, 5, 6, 0, 0, 7568, 7570, 3, 774, 387, 0, 7569, 7567, 1, 0, 0, 0, 7570, 7573, 1, 0, 0, 0, 7571, 7569, 1, 0, 0, 0, 7571, 7572, 1, 0, 0, 0, 7572, 763, 1, 0, 0, 0, 7573, 7571, 1, 0, 0, 0, 7574, 7579, 3, 790, 395, 0, 7575, 7576, 5, 6, 0, 0, 7576, 7578, 3, 790, 395, 0, 7577, 7575, 1, 0, 0, 0, 7578, 7581, 1, 0, 0, 0, 7579, 7577, 1, 0, 0, 0, 7579, 7580, 1, 0, 0, 0, 7580, 765, 1, 0, 0, 0, 7581, 7579, 1, 0, 0, 0, 7582, 7587, 3, 788, 394, 0, 7583, 7584, 5, 6, 0, 0, 7584, 7586, 3, 788, 394, 0, 7585, 7583, 1, 0, 0, 0, 7586, 7589, 1, 0, 0, 0, 7587, 7585, 1, 0, 0, 0, 7587, 7588, 1, 0, 0, 0, 7588, 767, 1, 0, 0, 0, 7589, 7587, 1, 0, 0, 0, 7590, 7591, 3, 780, 390, 0, 7591, 769, 1, 0, 0, 0, 7592, 7593, 3, 780, 390, 0, 7593, 771, 1, 0, 0, 0, 7594, 7595, 3, 780, 390, 0, 7595, 773, 1, 0, 0, 0, 7596, 7597, 3, 780, 390, 0, 7597, 775, 1, 0, 0, 0, 7598, 7599, 3, 780, 390, 0, 7599, 777, 1, 0, 0, 0, 7600, 7601, 3, 316, 158, 0, 7601, 779, 1, 0, 0, 0, 7602, 7604, 3, 818, 409, 0, 7603, 7605, 3, 752, 376, 0, 7604, 7603, 1, 0, 0, 0, 7604, 7605, 1, 0, 0, 0, 7605, 781, 1, 0, 0, 0, 7606, 7611, 3, 770, 385, 0, 7607, 7608, 5, 6, 0, 0, 7608, 7610, 3, 770, 385, 0, 7609, 7607, 1, 0, 0, 0, 7610, 7613, 1, 0, 0, 0, 7611, 7609, 1, 0, 0, 0, 7611, 7612, 1, 0, 0, 0, 7612, 783, 1, 0, 0, 0, 7613, 7611, 1, 0, 0, 0, 7614, 7619, 3, 818, 409, 0, 7615, 7616, 5, 6, 0, 0, 7616, 7618, 3, 818, 409, 0, 7617, 7615, 1, 0, 0, 0, 7618, 7621, 1, 0, 0, 0, 7619, 7617, 1, 0, 0, 0, 7619, 7620, 1, 0, 0, 0, 7620, 785, 1, 0, 0, 0, 7621, 7619, 1, 0, 0, 0, 7622, 7623, 3, 316, 158, 0, 7623, 787, 1, 0, 0, 0, 7624, 7625, 3, 316, 158, 0, 7625, 789, 1, 0, 0, 0, 7626, 7627, 3, 316, 158, 0, 7627, 791, 1, 0, 0, 0, 7628, 7629, 3, 818, 409, 0, 7629, 793, 1, 0, 0, 0, 7630, 7631, 3, 818, 409, 0, 7631, 795, 1, 0, 0, 0, 7632, 7637, 3, 820, 410, 0, 7633, 7634, 3, 818, 409, 0, 7634, 7635, 3, 752, 376, 0, 7635, 7637, 1, 0, 0, 0, 7636, 7632, 1, 0, 0, 0, 7636, 7633, 1, 0, 0, 0, 7637, 797, 1, 0, 0, 0, 7638, 7643, 3, 820, 410, 0, 7639, 7640, 3, 818, 409, 0, 7640, 7641, 3, 752, 376, 0, 7641, 7643, 1, 0, 0, 0, 7642, 7638, 1, 0, 0, 0, 7642, 7639, 1, 0, 0, 0, 7643, 799, 1, 0, 0, 0, 7644, 7645, 3, 818, 409, 0, 7645, 7646, 3, 754, 377, 0, 7646, 7649, 1, 0, 0, 0, 7647, 7649, 4, 400, 10, 0, 7648, 7644, 1, 0, 0, 0, 7648, 7647, 1, 0, 0, 0, 7649, 801, 1, 0, 0, 0, 7650, 7651, 3, 818, 409, 0, 7651, 803, 1, 0, 0, 0, 7652, 7657, 3, 820, 410, 0, 7653, 7654, 3, 818, 409, 0, 7654, 7655, 3, 752, 376, 0, 7655, 7657, 1, 0, 0, 0, 7656, 7652, 1, 0, 0, 0, 7656, 7653, 1, 0, 0, 0, 7657, 805, 1, 0, 0, 0, 7658, 7663, 3, 820, 410, 0, 7659, 7660, 3, 818, 409, 0, 7660, 7661, 3, 752, 376, 0, 7661, 7663, 1, 0, 0, 0, 7662, 7658, 1, 0, 0, 0, 7662, 7659, 1, 0, 0, 0, 7663, 807, 1, 0, 0, 0, 7664, 7667, 3, 810, 405, 0, 7665, 7666, 5, 487, 0, 0, 7666, 7668, 3, 810, 405, 0, 7667, 7665, 1, 0, 0, 0, 7667, 7668, 1, 0, 0, 0, 7668, 809, 1, 0, 0, 0, 7669, 7681, 5, 558, 0, 0, 7670, 7681, 5, 560, 0, 0, 7671, 7675, 5, 562, 0, 0, 7672, 7674, 5, 588, 0, 0, 7673, 7672, 1, 0, 0, 0, 7674, 7677, 1, 0, 0, 0, 7675, 7673, 1, 0, 0, 0, 7675, 7676, 1, 0, 0, 0, 7676, 7678, 1, 0, 0, 0, 7677, 7675, 1, 0, 0, 0, 7678, 7681, 5, 589, 0, 0, 7679, 7681, 5, 584, 0, 0, 7680, 7669, 1, 0, 0, 0, 7680, 7670, 1, 0, 0, 0, 7680, 7671, 1, 0, 0, 0, 7680, 7679, 1, 0, 0, 0, 7681, 811, 1, 0, 0, 0, 7682, 7684, 7, 29, 0, 0, 7683, 7682, 1, 0, 0, 0, 7683, 7684, 1, 0, 0, 0, 7684, 7685, 1, 0, 0, 0, 7685, 7686, 5, 571, 0, 0, 7686, 813, 1, 0, 0, 0, 7687, 7693, 3, 822, 411, 0, 7688, 7693, 5, 52, 0, 0, 7689, 7693, 5, 49, 0, 0, 7690, 7693, 5, 89, 0, 0, 7691, 7693, 5, 524, 0, 0, 7692, 7687, 1, 0, 0, 0, 7692, 7688, 1, 0, 0, 0, 7692, 7689, 1, 0, 0, 0, 7692, 7690, 1, 0, 0, 0, 7692, 7691, 1, 0, 0, 0, 7693, 815, 1, 0, 0, 0, 7694, 7699, 3, 814, 407, 0, 7695, 7696, 5, 6, 0, 0, 7696, 7698, 3, 814, 407, 0, 7697, 7695, 1, 0, 0, 0, 7698, 7701, 1, 0, 0, 0, 7699, 7697, 1, 0, 0, 0, 7699, 7700, 1, 0, 0, 0, 7700, 817, 1, 0, 0, 0, 7701, 7699, 1, 0, 0, 0, 7702, 7705, 3, 826, 413, 0, 7703, 7705, 3, 830, 415, 0, 7704, 7702, 1, 0, 0, 0, 7704, 7703, 1, 0, 0, 0, 7705, 819, 1, 0, 0, 0, 7706, 7709, 3, 826, 413, 0, 7707, 7709, 3, 832, 416, 0, 7708, 7706, 1, 0, 0, 0, 7708, 7707, 1, 0, 0, 0, 7709, 821, 1, 0, 0, 0, 7710, 7714, 3, 826, 413, 0, 7711, 7714, 3, 830, 415, 0, 7712, 7714, 3, 832, 416, 0, 7713, 7710, 1, 0, 0, 0, 7713, 7711, 1, 0, 0, 0, 7713, 7712, 1, 0, 0, 0, 7714, 823, 1, 0, 0, 0, 7715, 7720, 3, 826, 413, 0, 7716, 7720, 3, 830, 415, 0, 7717, 7720, 3, 832, 416, 0, 7718, 7720, 3, 834, 417, 0, 7719, 7715, 1, 0, 0, 0, 7719, 7716, 1, 0, 0, 0, 7719, 7717, 1, 0, 0, 0, 7719, 7718, 1, 0, 0, 0, 7720, 825, 1, 0, 0, 0, 7721, 7724, 5, 549, 0, 0, 7722, 7723, 5, 487, 0, 0, 7723, 7725, 3, 810, 405, 0, 7724, 7722, 1, 0, 0, 0, 7724, 7725, 1, 0, 0, 0, 7725, 7733, 1, 0, 0, 0, 7726, 7733, 3, 808, 404, 0, 7727, 7733, 5, 550, 0, 0, 7728, 7733, 5, 554, 0, 0, 7729, 7733, 5, 574, 0, 0, 7730, 7733, 5, 575, 0, 0, 7731, 7733, 3, 828, 414, 0, 7732, 7721, 1, 0, 0, 0, 7732, 7726, 1, 0, 0, 0, 7732, 7727, 1, 0, 0, 0, 7732, 7728, 1, 0, 0, 0, 7732, 7729, 1, 0, 0, 0, 7732, 7730, 1, 0, 0, 0, 7732, 7731, 1, 0, 0, 0, 7733, 827, 1, 0, 0, 0, 7734, 7735, 7, 109, 0, 0, 7735, 829, 1, 0, 0, 0, 7736, 7788, 5, 387, 0, 0, 7737, 7788, 5, 388, 0, 0, 7738, 7788, 3, 662, 331, 0, 7739, 7788, 5, 390, 0, 0, 7740, 7788, 5, 391, 0, 0, 7741, 7788, 3, 664, 332, 0, 7742, 7788, 5, 393, 0, 0, 7743, 7788, 5, 394, 0, 0, 7744, 7788, 5, 395, 0, 0, 7745, 7788, 5, 396, 0, 0, 7746, 7788, 5, 397, 0, 0, 7747, 7788, 5, 398, 0, 0, 7748, 7788, 5, 399, 0, 0, 7749, 7788, 5, 470, 0, 0, 7750, 7788, 5, 400, 0, 0, 7751, 7788, 5, 401, 0, 0, 7752, 7788, 5, 402, 0, 0, 7753, 7788, 5, 403, 0, 0, 7754, 7788, 5, 404, 0, 0, 7755, 7788, 5, 405, 0, 0, 7756, 7788, 5, 406, 0, 0, 7757, 7788, 5, 407, 0, 0, 7758, 7788, 5, 489, 0, 0, 7759, 7788, 5, 408, 0, 0, 7760, 7788, 3, 658, 329, 0, 7761, 7788, 5, 453, 0, 0, 7762, 7788, 5, 410, 0, 0, 7763, 7788, 5, 411, 0, 0, 7764, 7788, 5, 412, 0, 0, 7765, 7788, 5, 413, 0, 0, 7766, 7788, 5, 414, 0, 0, 7767, 7788, 5, 415, 0, 0, 7768, 7788, 5, 416, 0, 0, 7769, 7788, 5, 417, 0, 0, 7770, 7788, 5, 418, 0, 0, 7771, 7788, 5, 419, 0, 0, 7772, 7788, 5, 420, 0, 0, 7773, 7788, 5, 421, 0, 0, 7774, 7788, 5, 422, 0, 0, 7775, 7788, 5, 423, 0, 0, 7776, 7788, 5, 424, 0, 0, 7777, 7788, 5, 425, 0, 0, 7778, 7788, 5, 426, 0, 0, 7779, 7788, 5, 427, 0, 0, 7780, 7788, 5, 428, 0, 0, 7781, 7788, 5, 476, 0, 0, 7782, 7788, 5, 429, 0, 0, 7783, 7788, 5, 430, 0, 0, 7784, 7788, 5, 431, 0, 0, 7785, 7788, 5, 432, 0, 0, 7786, 7788, 5, 474, 0, 0, 7787, 7736, 1, 0, 0, 0, 7787, 7737, 1, 0, 0, 0, 7787, 7738, 1, 0, 0, 0, 7787, 7739, 1, 0, 0, 0, 7787, 7740, 1, 0, 0, 0, 7787, 7741, 1, 0, 0, 0, 7787, 7742, 1, 0, 0, 0, 7787, 7743, 1, 0, 0, 0, 7787, 7744, 1, 0, 0, 0, 7787, 7745, 1, 0, 0, 0, 7787, 7746, 1, 0, 0, 0, 7787, 7747, 1, 0, 0, 0, 7787, 7748, 1, 0, 0, 0, 7787, 7749, 1, 0, 0, 0, 7787, 7750, 1, 0, 0, 0, 7787, 7751, 1, 0, 0, 0, 7787, 7752, 1, 0, 0, 0, 7787, 7753, 1, 0, 0, 0, 7787, 7754, 1, 0, 0, 0, 7787, 7755, 1, 0, 0, 0, 7787, 7756, 1, 0, 0, 0, 7787, 7757, 1, 0, 0, 0, 7787, 7758, 1, 0, 0, 0, 7787, 7759, 1, 0, 0, 0, 7787, 7760, 1, 0, 0, 0, 7787, 7761, 1, 0, 0, 0, 7787, 7762, 1, 0, 0, 0, 7787, 7763, 1, 0, 0, 0, 7787, 7764, 1, 0, 0, 0, 7787, 7765, 1, 0, 0, 0, 7787, 7766, 1, 0, 0, 0, 7787, 7767, 1, 0, 0, 0, 7787, 7768, 1, 0, 0, 0, 7787, 7769, 1, 0, 0, 0, 7787, 7770, 1, 0, 0, 0, 7787, 7771, 1, 0, 0, 0, 7787, 7772, 1, 0, 0, 0, 7787, 7773, 1, 0, 0, 0, 7787, 7774, 1, 0, 0, 0, 7787, 7775, 1, 0, 0, 0, 7787, 7776, 1, 0, 0, 0, 7787, 7777, 1, 0, 0, 0, 7787, 7778, 1, 0, 0, 0, 7787, 7779, 1, 0, 0, 0, 7787, 7780, 1, 0, 0, 0, 7787, 7781, 1, 0, 0, 0, 7787, 7782, 1, 0, 0, 0, 7787, 7783, 1, 0, 0, 0, 7787, 7784, 1, 0, 0, 0, 7787, 7785, 1, 0, 0, 0, 7787, 7786, 1, 0, 0, 0, 7788, 831, 1, 0, 0, 0, 7789, 7790, 7, 110, 0, 0, 7790, 833, 1, 0, 0, 0, 7791, 7792, 7, 111, 0, 0, 7792, 835, 1, 0, 0, 0, 7793, 7795, 3, 838, 419, 0, 7794, 7793, 1, 0, 0, 0, 7794, 7795, 1, 0, 0, 0, 7795, 7806, 1, 0, 0, 0, 7796, 7804, 5, 178, 0, 0, 7797, 7801, 3, 840, 420, 0, 7798, 7801, 5, 178, 0, 0, 7799, 7801, 3, 838, 419, 0, 7800, 7797, 1, 0, 0, 0, 7800, 7798, 1, 0, 0, 0, 7800, 7799, 1, 0, 0, 0, 7801, 7802, 1, 0, 0, 0, 7802, 7800, 1, 0, 0, 0, 7802, 7803, 1, 0, 0, 0, 7803, 7805, 1, 0, 0, 0, 7804, 7800, 1, 0, 0, 0, 7804, 7805, 1, 0, 0, 0, 7805, 7807, 1, 0, 0, 0, 7806, 7796, 1, 0, 0, 0, 7806, 7807, 1, 0, 0, 0, 7807, 7808, 1, 0, 0, 0, 7808, 7812, 5, 146, 0, 0, 7809, 7811, 3, 846, 423, 0, 7810, 7809, 1, 0, 0, 0, 7811, 7814, 1, 0, 0, 0, 7812, 7810, 1, 0, 0, 0, 7812, 7813, 1, 0, 0, 0, 7813, 7816, 1, 0, 0, 0, 7814, 7812, 1, 0, 0, 0, 7815, 7817, 3, 924, 462, 0, 7816, 7815, 1, 0, 0, 0, 7816, 7817, 1, 0, 0, 0, 7817, 7818, 1, 0, 0, 0, 7818, 7820, 5, 454, 0, 0, 7819, 7821, 3, 928, 464, 0, 7820, 7819, 1, 0, 0, 0, 7820, 7821, 1, 0, 0, 0, 7821, 837, 1, 0, 0, 0, 7822, 7823, 5, 18, 0, 0, 7823, 7824, 3, 928, 464, 0, 7824, 7825, 5, 19, 0, 0, 7825, 839, 1, 0, 0, 0, 7826, 7873, 3, 928, 464, 0, 7827, 7828, 5, 496, 0, 0, 7828, 7831, 5, 62, 0, 0, 7829, 7832, 5, 28, 0, 0, 7830, 7832, 3, 818, 409, 0, 7831, 7829, 1, 0, 0, 0, 7831, 7830, 1, 0, 0, 0, 7832, 7874, 1, 0, 0, 0, 7833, 7835, 5, 497, 0, 0, 7834, 7833, 1, 0, 0, 0, 7834, 7835, 1, 0, 0, 0, 7835, 7836, 1, 0, 0, 0, 7836, 7838, 3, 652, 326, 0, 7837, 7839, 3, 98, 49, 0, 7838, 7837, 1, 0, 0, 0, 7838, 7839, 1, 0, 0, 0, 7839, 7842, 1, 0, 0, 0, 7840, 7841, 5, 77, 0, 0, 7841, 7843, 5, 78, 0, 0, 7842, 7840, 1, 0, 0, 0, 7842, 7843, 1, 0, 0, 0, 7843, 7849, 1, 0, 0, 0, 7844, 7847, 3, 844, 422, 0, 7845, 7847, 5, 53, 0, 0, 7846, 7844, 1, 0, 0, 0, 7846, 7845, 1, 0, 0, 0, 7847, 7848, 1, 0, 0, 0, 7848, 7850, 3, 930, 465, 0, 7849, 7846, 1, 0, 0, 0, 7849, 7850, 1, 0, 0, 0, 7850, 7874, 1, 0, 0, 0, 7851, 7853, 5, 269, 0, 0, 7852, 7851, 1, 0, 0, 0, 7852, 7853, 1, 0, 0, 0, 7853, 7854, 1, 0, 0, 0, 7854, 7856, 5, 324, 0, 0, 7855, 7852, 1, 0, 0, 0, 7855, 7856, 1, 0, 0, 0, 7856, 7857, 1, 0, 0, 0, 7857, 7869, 5, 172, 0, 0, 7858, 7859, 5, 2, 0, 0, 7859, 7864, 3, 842, 421, 0, 7860, 7861, 5, 6, 0, 0, 7861, 7863, 3, 842, 421, 0, 7862, 7860, 1, 0, 0, 0, 7863, 7866, 1, 0, 0, 0, 7864, 7862, 1, 0, 0, 0, 7864, 7865, 1, 0, 0, 0, 7865, 7867, 1, 0, 0, 0, 7866, 7864, 1, 0, 0, 0, 7867, 7868, 5, 3, 0, 0, 7868, 7870, 1, 0, 0, 0, 7869, 7858, 1, 0, 0, 0, 7869, 7870, 1, 0, 0, 0, 7870, 7871, 1, 0, 0, 0, 7871, 7872, 7, 112, 0, 0, 7872, 7874, 3, 560, 280, 0, 7873, 7827, 1, 0, 0, 0, 7873, 7834, 1, 0, 0, 0, 7873, 7855, 1, 0, 0, 0, 7874, 7875, 1, 0, 0, 0, 7875, 7876, 5, 7, 0, 0, 7876, 841, 1, 0, 0, 0, 7877, 7878, 3, 928, 464, 0, 7878, 7879, 3, 652, 326, 0, 7879, 843, 1, 0, 0, 0, 7880, 7881, 7, 113, 0, 0, 7881, 845, 1, 0, 0, 0, 7882, 7883, 3, 836, 418, 0, 7883, 7884, 5, 7, 0, 0, 7884, 7907, 1, 0, 0, 0, 7885, 7907, 3, 874, 437, 0, 7886, 7907, 3, 876, 438, 0, 7887, 7907, 3, 852, 426, 0, 7888, 7907, 3, 860, 430, 0, 7889, 7907, 3, 864, 432, 0, 7890, 7907, 3, 866, 433, 0, 7891, 7907, 3, 870, 435, 0, 7892, 7907, 3, 872, 436, 0, 7893, 7907, 3, 880, 440, 0, 7894, 7907, 3, 884, 442, 0, 7895, 7907, 3, 886, 443, 0, 7896, 7907, 3, 848, 424, 0, 7897, 7907, 3, 850, 425, 0, 7898, 7907, 3, 854, 427, 0, 7899, 7907, 3, 890, 445, 0, 7900, 7907, 3, 894, 447, 0, 7901, 7907, 3, 898, 449, 0, 7902, 7907, 3, 914, 457, 0, 7903, 7907, 3, 916, 458, 0, 7904, 7907, 3, 918, 459, 0, 7905, 7907, 3, 920, 460, 0, 7906, 7882, 1, 0, 0, 0, 7906, 7885, 1, 0, 0, 0, 7906, 7886, 1, 0, 0, 0, 7906, 7887, 1, 0, 0, 0, 7906, 7888, 1, 0, 0, 0, 7906, 7889, 1, 0, 0, 0, 7906, 7890, 1, 0, 0, 0, 7906, 7891, 1, 0, 0, 0, 7906, 7892, 1, 0, 0, 0, 7906, 7893, 1, 0, 0, 0, 7906, 7894, 1, 0, 0, 0, 7906, 7895, 1, 0, 0, 0, 7906, 7896, 1, 0, 0, 0, 7906, 7897, 1, 0, 0, 0, 7906, 7898, 1, 0, 0, 0, 7906, 7899, 1, 0, 0, 0, 7906, 7900, 1, 0, 0, 0, 7906, 7901, 1, 0, 0, 0, 7906, 7902, 1, 0, 0, 0, 7906, 7903, 1, 0, 0, 0, 7906, 7904, 1, 0, 0, 0, 7906, 7905, 1, 0, 0, 0, 7907, 847, 1, 0, 0, 0, 7908, 7909, 5, 498, 0, 0, 7909, 7910, 3, 930, 465, 0, 7910, 7911, 5, 7, 0, 0, 7911, 849, 1, 0, 0, 0, 7912, 7913, 5, 433, 0, 0, 7913, 7920, 3, 928, 464, 0, 7914, 7916, 5, 2, 0, 0, 7915, 7917, 3, 730, 365, 0, 7916, 7915, 1, 0, 0, 0, 7916, 7917, 1, 0, 0, 0, 7917, 7918, 1, 0, 0, 0, 7918, 7919, 5, 3, 0, 0, 7919, 7921, 5, 7, 0, 0, 7920, 7914, 1, 0, 0, 0, 7920, 7921, 1, 0, 0, 0, 7921, 7932, 1, 0, 0, 0, 7922, 7923, 5, 57, 0, 0, 7923, 7924, 3, 928, 464, 0, 7924, 7926, 5, 2, 0, 0, 7925, 7927, 3, 730, 365, 0, 7926, 7925, 1, 0, 0, 0, 7926, 7927, 1, 0, 0, 0, 7927, 7928, 1, 0, 0, 0, 7928, 7929, 5, 3, 0, 0, 7929, 7930, 5, 7, 0, 0, 7930, 7932, 1, 0, 0, 0, 7931, 7912, 1, 0, 0, 0, 7931, 7922, 1, 0, 0, 0, 7932, 851, 1, 0, 0, 0, 7933, 7934, 3, 858, 429, 0, 7934, 7935, 3, 844, 422, 0, 7935, 7936, 3, 930, 465, 0, 7936, 7937, 5, 7, 0, 0, 7937, 853, 1, 0, 0, 0, 7938, 7940, 5, 499, 0, 0, 7939, 7941, 7, 114, 0, 0, 7940, 7939, 1, 0, 0, 0, 7940, 7941, 1, 0, 0, 0, 7941, 7942, 1, 0, 0, 0, 7942, 7943, 5, 500, 0, 0, 7943, 7948, 3, 856, 428, 0, 7944, 7945, 5, 6, 0, 0, 7945, 7947, 3, 856, 428, 0, 7946, 7944, 1, 0, 0, 0, 7947, 7950, 1, 0, 0, 0, 7948, 7946, 1, 0, 0, 0, 7948, 7949, 1, 0, 0, 0, 7949, 7951, 1, 0, 0, 0, 7950, 7948, 1, 0, 0, 0, 7951, 7952, 5, 7, 0, 0, 7952, 855, 1, 0, 0, 0, 7953, 7954, 3, 858, 429, 0, 7954, 7955, 3, 844, 422, 0, 7955, 7956, 3, 818, 409, 0, 7956, 857, 1, 0, 0, 0, 7957, 7960, 3, 316, 158, 0, 7958, 7960, 5, 28, 0, 0, 7959, 7957, 1, 0, 0, 0, 7959, 7958, 1, 0, 0, 0, 7960, 7967, 1, 0, 0, 0, 7961, 7962, 5, 4, 0, 0, 7962, 7963, 3, 674, 337, 0, 7963, 7964, 5, 5, 0, 0, 7964, 7966, 1, 0, 0, 0, 7965, 7961, 1, 0, 0, 0, 7966, 7969, 1, 0, 0, 0, 7967, 7965, 1, 0, 0, 0, 7967, 7968, 1, 0, 0, 0, 7968, 859, 1, 0, 0, 0, 7969, 7967, 1, 0, 0, 0, 7970, 7971, 5, 220, 0, 0, 7971, 7972, 3, 930, 465, 0, 7972, 7976, 5, 93, 0, 0, 7973, 7975, 3, 846, 423, 0, 7974, 7973, 1, 0, 0, 0, 7975, 7978, 1, 0, 0, 0, 7976, 7974, 1, 0, 0, 0, 7976, 7977, 1, 0, 0, 0, 7977, 7990, 1, 0, 0, 0, 7978, 7976, 1, 0, 0, 0, 7979, 7980, 5, 502, 0, 0, 7980, 7981, 3, 674, 337, 0, 7981, 7985, 5, 93, 0, 0, 7982, 7984, 3, 846, 423, 0, 7983, 7982, 1, 0, 0, 0, 7984, 7987, 1, 0, 0, 0, 7985, 7983, 1, 0, 0, 0, 7985, 7986, 1, 0, 0, 0, 7986, 7989, 1, 0, 0, 0, 7987, 7985, 1, 0, 0, 0, 7988, 7979, 1, 0, 0, 0, 7989, 7992, 1, 0, 0, 0, 7990, 7988, 1, 0, 0, 0, 7990, 7991, 1, 0, 0, 0, 7991, 7994, 1, 0, 0, 0, 7992, 7990, 1, 0, 0, 0, 7993, 7995, 3, 862, 431, 0, 7994, 7993, 1, 0, 0, 0, 7994, 7995, 1, 0, 0, 0, 7995, 7996, 1, 0, 0, 0, 7996, 7997, 5, 454, 0, 0, 7997, 7998, 5, 220, 0, 0, 7998, 7999, 5, 7, 0, 0, 7999, 861, 1, 0, 0, 0, 8000, 8004, 5, 58, 0, 0, 8001, 8003, 3, 846, 423, 0, 8002, 8001, 1, 0, 0, 0, 8003, 8006, 1, 0, 0, 0, 8004, 8002, 1, 0, 0, 0, 8004, 8005, 1, 0, 0, 0, 8005, 863, 1, 0, 0, 0, 8006, 8004, 1, 0, 0, 0, 8007, 8009, 5, 40, 0, 0, 8008, 8010, 3, 930, 465, 0, 8009, 8008, 1, 0, 0, 0, 8009, 8010, 1, 0, 0, 0, 8010, 8020, 1, 0, 0, 0, 8011, 8012, 5, 102, 0, 0, 8012, 8013, 3, 730, 365, 0, 8013, 8017, 5, 93, 0, 0, 8014, 8016, 3, 846, 423, 0, 8015, 8014, 1, 0, 0, 0, 8016, 8019, 1, 0, 0, 0, 8017, 8015, 1, 0, 0, 0, 8017, 8018, 1, 0, 0, 0, 8018, 8021, 1, 0, 0, 0, 8019, 8017, 1, 0, 0, 0, 8020, 8011, 1, 0, 0, 0, 8021, 8022, 1, 0, 0, 0, 8022, 8020, 1, 0, 0, 0, 8022, 8023, 1, 0, 0, 0, 8023, 8025, 1, 0, 0, 0, 8024, 8026, 3, 862, 431, 0, 8025, 8024, 1, 0, 0, 0, 8025, 8026, 1, 0, 0, 0, 8026, 8027, 1, 0, 0, 0, 8027, 8028, 5, 454, 0, 0, 8028, 8029, 5, 40, 0, 0, 8029, 8030, 5, 7, 0, 0, 8030, 865, 1, 0, 0, 0, 8031, 8033, 3, 838, 419, 0, 8032, 8031, 1, 0, 0, 0, 8032, 8033, 1, 0, 0, 0, 8033, 8038, 1, 0, 0, 0, 8034, 8035, 5, 503, 0, 0, 8035, 8039, 3, 674, 337, 0, 8036, 8037, 5, 62, 0, 0, 8037, 8039, 3, 868, 434, 0, 8038, 8034, 1, 0, 0, 0, 8038, 8036, 1, 0, 0, 0, 8038, 8039, 1, 0, 0, 0, 8039, 8040, 1, 0, 0, 0, 8040, 8041, 3, 882, 441, 0, 8041, 867, 1, 0, 0, 0, 8042, 8043, 3, 314, 157, 0, 8043, 8066, 5, 68, 0, 0, 8044, 8046, 3, 818, 409, 0, 8045, 8047, 3, 534, 267, 0, 8046, 8045, 1, 0, 0, 0, 8046, 8047, 1, 0, 0, 0, 8047, 8067, 1, 0, 0, 0, 8048, 8067, 3, 560, 280, 0, 8049, 8067, 3, 520, 260, 0, 8050, 8051, 5, 202, 0, 0, 8051, 8054, 3, 674, 337, 0, 8052, 8053, 5, 100, 0, 0, 8053, 8055, 3, 730, 365, 0, 8054, 8052, 1, 0, 0, 0, 8054, 8055, 1, 0, 0, 0, 8055, 8067, 1, 0, 0, 0, 8056, 8058, 5, 504, 0, 0, 8057, 8056, 1, 0, 0, 0, 8057, 8058, 1, 0, 0, 0, 8058, 8059, 1, 0, 0, 0, 8059, 8060, 3, 674, 337, 0, 8060, 8061, 5, 24, 0, 0, 8061, 8064, 3, 674, 337, 0, 8062, 8063, 5, 147, 0, 0, 8063, 8065, 3, 674, 337, 0, 8064, 8062, 1, 0, 0, 0, 8064, 8065, 1, 0, 0, 0, 8065, 8067, 1, 0, 0, 0, 8066, 8044, 1, 0, 0, 0, 8066, 8048, 1, 0, 0, 0, 8066, 8049, 1, 0, 0, 0, 8066, 8050, 1, 0, 0, 0, 8066, 8057, 1, 0, 0, 0, 8067, 869, 1, 0, 0, 0, 8068, 8070, 3, 838, 419, 0, 8069, 8068, 1, 0, 0, 0, 8069, 8070, 1, 0, 0, 0, 8070, 8071, 1, 0, 0, 0, 8071, 8072, 5, 505, 0, 0, 8072, 8075, 3, 314, 157, 0, 8073, 8074, 5, 506, 0, 0, 8074, 8076, 5, 571, 0, 0, 8075, 8073, 1, 0, 0, 0, 8075, 8076, 1, 0, 0, 0, 8076, 8077, 1, 0, 0, 0, 8077, 8078, 5, 68, 0, 0, 8078, 8079, 5, 35, 0, 0, 8079, 8080, 3, 674, 337, 0, 8080, 8081, 3, 882, 441, 0, 8081, 871, 1, 0, 0, 0, 8082, 8084, 7, 115, 0, 0, 8083, 8085, 3, 928, 464, 0, 8084, 8083, 1, 0, 0, 0, 8084, 8085, 1, 0, 0, 0, 8085, 8088, 1, 0, 0, 0, 8086, 8087, 5, 102, 0, 0, 8087, 8089, 3, 930, 465, 0, 8088, 8086, 1, 0, 0, 0, 8088, 8089, 1, 0, 0, 0, 8089, 8090, 1, 0, 0, 0, 8090, 8091, 5, 7, 0, 0, 8091, 873, 1, 0, 0, 0, 8092, 8107, 5, 508, 0, 0, 8093, 8094, 5, 268, 0, 0, 8094, 8108, 3, 930, 465, 0, 8095, 8102, 5, 509, 0, 0, 8096, 8097, 5, 202, 0, 0, 8097, 8098, 3, 674, 337, 0, 8098, 8099, 5, 100, 0, 0, 8099, 8100, 3, 730, 365, 0, 8100, 8103, 1, 0, 0, 0, 8101, 8103, 3, 560, 280, 0, 8102, 8096, 1, 0, 0, 0, 8102, 8101, 1, 0, 0, 0, 8103, 8108, 1, 0, 0, 0, 8104, 8106, 3, 930, 465, 0, 8105, 8104, 1, 0, 0, 0, 8105, 8106, 1, 0, 0, 0, 8106, 8108, 1, 0, 0, 0, 8107, 8093, 1, 0, 0, 0, 8107, 8095, 1, 0, 0, 0, 8107, 8105, 1, 0, 0, 0, 8108, 8109, 1, 0, 0, 0, 8109, 8110, 5, 7, 0, 0, 8110, 875, 1, 0, 0, 0, 8111, 8141, 5, 510, 0, 0, 8112, 8114, 7, 116, 0, 0, 8113, 8112, 1, 0, 0, 0, 8113, 8114, 1, 0, 0, 0, 8114, 8127, 1, 0, 0, 0, 8115, 8128, 3, 826, 413, 0, 8116, 8117, 5, 511, 0, 0, 8117, 8128, 3, 808, 404, 0, 8118, 8125, 3, 808, 404, 0, 8119, 8120, 5, 6, 0, 0, 8120, 8122, 3, 674, 337, 0, 8121, 8119, 1, 0, 0, 0, 8122, 8123, 1, 0, 0, 0, 8123, 8121, 1, 0, 0, 0, 8123, 8124, 1, 0, 0, 0, 8124, 8126, 1, 0, 0, 0, 8125, 8121, 1, 0, 0, 0, 8125, 8126, 1, 0, 0, 0, 8126, 8128, 1, 0, 0, 0, 8127, 8115, 1, 0, 0, 0, 8127, 8116, 1, 0, 0, 0, 8127, 8118, 1, 0, 0, 0, 8127, 8128, 1, 0, 0, 0, 8128, 8138, 1, 0, 0, 0, 8129, 8130, 5, 100, 0, 0, 8130, 8135, 3, 878, 439, 0, 8131, 8132, 5, 6, 0, 0, 8132, 8134, 3, 878, 439, 0, 8133, 8131, 1, 0, 0, 0, 8134, 8137, 1, 0, 0, 0, 8135, 8133, 1, 0, 0, 0, 8135, 8136, 1, 0, 0, 0, 8136, 8139, 1, 0, 0, 0, 8137, 8135, 1, 0, 0, 0, 8138, 8129, 1, 0, 0, 0, 8138, 8139, 1, 0, 0, 0, 8139, 8140, 1, 0, 0, 0, 8140, 8142, 5, 7, 0, 0, 8141, 8113, 1, 0, 0, 0, 8141, 8142, 1, 0, 0, 0, 8142, 877, 1, 0, 0, 0, 8143, 8144, 3, 826, 413, 0, 8144, 8145, 5, 10, 0, 0, 8145, 8146, 3, 674, 337, 0, 8146, 879, 1, 0, 0, 0, 8147, 8148, 5, 518, 0, 0, 8148, 8151, 3, 930, 465, 0, 8149, 8150, 5, 6, 0, 0, 8150, 8152, 3, 930, 465, 0, 8151, 8149, 1, 0, 0, 0, 8151, 8152, 1, 0, 0, 0, 8152, 8153, 1, 0, 0, 0, 8153, 8154, 5, 7, 0, 0, 8154, 881, 1, 0, 0, 0, 8155, 8159, 5, 519, 0, 0, 8156, 8158, 3, 846, 423, 0, 8157, 8156, 1, 0, 0, 0, 8158, 8161, 1, 0, 0, 0, 8159, 8157, 1, 0, 0, 0, 8159, 8160, 1, 0, 0, 0, 8160, 8162, 1, 0, 0, 0, 8161, 8159, 1, 0, 0, 0, 8162, 8163, 5, 454, 0, 0, 8163, 8165, 5, 519, 0, 0, 8164, 8166, 3, 928, 464, 0, 8165, 8164, 1, 0, 0, 0, 8165, 8166, 1, 0, 0, 0, 8166, 8167, 1, 0, 0, 0, 8167, 8168, 5, 7, 0, 0, 8168, 883, 1, 0, 0, 0, 8169, 8171, 3, 4, 2, 0, 8170, 8172, 3, 888, 444, 0, 8171, 8170, 1, 0, 0, 0, 8171, 8172, 1, 0, 0, 0, 8172, 8173, 1, 0, 0, 0, 8173, 8174, 5, 7, 0, 0, 8174, 885, 1, 0, 0, 0, 8175, 8176, 5, 202, 0, 0, 8176, 8192, 3, 674, 337, 0, 8177, 8179, 3, 888, 444, 0, 8178, 8177, 1, 0, 0, 0, 8178, 8179, 1, 0, 0, 0, 8179, 8182, 1, 0, 0, 0, 8180, 8181, 5, 100, 0, 0, 8181, 8183, 3, 730, 365, 0, 8182, 8180, 1, 0, 0, 0, 8182, 8183, 1, 0, 0, 0, 8183, 8193, 1, 0, 0, 0, 8184, 8185, 5, 100, 0, 0, 8185, 8187, 3, 730, 365, 0, 8186, 8184, 1, 0, 0, 0, 8186, 8187, 1, 0, 0, 0, 8187, 8189, 1, 0, 0, 0, 8188, 8190, 3, 888, 444, 0, 8189, 8188, 1, 0, 0, 0, 8189, 8190, 1, 0, 0, 0, 8190, 8193, 1, 0, 0, 0, 8191, 8193, 1, 0, 0, 0, 8192, 8178, 1, 0, 0, 0, 8192, 8186, 1, 0, 0, 0, 8192, 8191, 1, 0, 0, 0, 8193, 8194, 1, 0, 0, 0, 8194, 8195, 5, 7, 0, 0, 8195, 887, 1, 0, 0, 0, 8196, 8198, 5, 71, 0, 0, 8197, 8199, 5, 346, 0, 0, 8198, 8197, 1, 0, 0, 0, 8198, 8199, 1, 0, 0, 0, 8199, 8200, 1, 0, 0, 0, 8200, 8201, 3, 730, 365, 0, 8201, 889, 1, 0, 0, 0, 8202, 8234, 5, 520, 0, 0, 8203, 8208, 3, 922, 461, 0, 8204, 8206, 5, 269, 0, 0, 8205, 8204, 1, 0, 0, 0, 8205, 8206, 1, 0, 0, 0, 8206, 8207, 1, 0, 0, 0, 8207, 8209, 5, 324, 0, 0, 8208, 8205, 1, 0, 0, 0, 8208, 8209, 1, 0, 0, 0, 8209, 8210, 1, 0, 0, 0, 8210, 8218, 5, 62, 0, 0, 8211, 8219, 3, 560, 280, 0, 8212, 8213, 5, 202, 0, 0, 8213, 8216, 3, 930, 465, 0, 8214, 8215, 5, 100, 0, 0, 8215, 8217, 3, 730, 365, 0, 8216, 8214, 1, 0, 0, 0, 8216, 8217, 1, 0, 0, 0, 8217, 8219, 1, 0, 0, 0, 8218, 8211, 1, 0, 0, 0, 8218, 8212, 1, 0, 0, 0, 8219, 8235, 1, 0, 0, 0, 8220, 8232, 3, 818, 409, 0, 8221, 8222, 5, 2, 0, 0, 8222, 8227, 3, 892, 446, 0, 8223, 8224, 5, 6, 0, 0, 8224, 8226, 3, 892, 446, 0, 8225, 8223, 1, 0, 0, 0, 8226, 8229, 1, 0, 0, 0, 8227, 8225, 1, 0, 0, 0, 8227, 8228, 1, 0, 0, 0, 8228, 8230, 1, 0, 0, 0, 8229, 8227, 1, 0, 0, 0, 8230, 8231, 5, 3, 0, 0, 8231, 8233, 1, 0, 0, 0, 8232, 8221, 1, 0, 0, 0, 8232, 8233, 1, 0, 0, 0, 8233, 8235, 1, 0, 0, 0, 8234, 8203, 1, 0, 0, 0, 8234, 8220, 1, 0, 0, 0, 8235, 8236, 1, 0, 0, 0, 8236, 8237, 5, 7, 0, 0, 8237, 891, 1, 0, 0, 0, 8238, 8239, 3, 818, 409, 0, 8239, 8240, 5, 20, 0, 0, 8240, 8242, 1, 0, 0, 0, 8241, 8238, 1, 0, 0, 0, 8241, 8242, 1, 0, 0, 0, 8242, 8243, 1, 0, 0, 0, 8243, 8244, 3, 674, 337, 0, 8244, 893, 1, 0, 0, 0, 8245, 8247, 5, 61, 0, 0, 8246, 8248, 3, 896, 448, 0, 8247, 8246, 1, 0, 0, 0, 8247, 8248, 1, 0, 0, 0, 8248, 8250, 1, 0, 0, 0, 8249, 8251, 3, 332, 166, 0, 8250, 8249, 1, 0, 0, 0, 8250, 8251, 1, 0, 0, 0, 8251, 8252, 1, 0, 0, 0, 8252, 8253, 3, 922, 461, 0, 8253, 8254, 5, 71, 0, 0, 8254, 8255, 3, 730, 365, 0, 8255, 8256, 5, 7, 0, 0, 8256, 895, 1, 0, 0, 0, 8257, 8272, 5, 268, 0, 0, 8258, 8272, 5, 293, 0, 0, 8259, 8272, 5, 207, 0, 0, 8260, 8272, 5, 249, 0, 0, 8261, 8263, 7, 50, 0, 0, 8262, 8261, 1, 0, 0, 0, 8262, 8263, 1, 0, 0, 0, 8263, 8264, 1, 0, 0, 0, 8264, 8272, 3, 674, 337, 0, 8265, 8272, 5, 30, 0, 0, 8266, 8269, 7, 117, 0, 0, 8267, 8270, 3, 674, 337, 0, 8268, 8270, 5, 30, 0, 0, 8269, 8267, 1, 0, 0, 0, 8269, 8268, 1, 0, 0, 0, 8269, 8270, 1, 0, 0, 0, 8270, 8272, 1, 0, 0, 0, 8271, 8257, 1, 0, 0, 0, 8271, 8258, 1, 0, 0, 0, 8271, 8259, 1, 0, 0, 0, 8271, 8260, 1, 0, 0, 0, 8271, 8262, 1, 0, 0, 0, 8271, 8265, 1, 0, 0, 0, 8271, 8266, 1, 0, 0, 0, 8272, 897, 1, 0, 0, 0, 8273, 8275, 5, 265, 0, 0, 8274, 8276, 3, 896, 448, 0, 8275, 8274, 1, 0, 0, 0, 8275, 8276, 1, 0, 0, 0, 8276, 8277, 1, 0, 0, 0, 8277, 8278, 3, 922, 461, 0, 8278, 8279, 5, 7, 0, 0, 8279, 899, 1, 0, 0, 0, 8280, 8282, 3, 572, 286, 0, 8281, 8280, 1, 0, 0, 0, 8281, 8282, 1, 0, 0, 0, 8282, 8283, 1, 0, 0, 0, 8283, 8284, 5, 525, 0, 0, 8284, 8286, 5, 71, 0, 0, 8285, 8287, 5, 81, 0, 0, 8286, 8285, 1, 0, 0, 0, 8286, 8287, 1, 0, 0, 0, 8287, 8288, 1, 0, 0, 0, 8288, 8290, 3, 774, 387, 0, 8289, 8291, 5, 9, 0, 0, 8290, 8289, 1, 0, 0, 0, 8290, 8291, 1, 0, 0, 0, 8291, 8296, 1, 0, 0, 0, 8292, 8294, 5, 36, 0, 0, 8293, 8292, 1, 0, 0, 0, 8293, 8294, 1, 0, 0, 0, 8294, 8295, 1, 0, 0, 0, 8295, 8297, 3, 818, 409, 0, 8296, 8293, 1, 0, 0, 0, 8296, 8297, 1, 0, 0, 0, 8297, 8298, 1, 0, 0, 0, 8298, 8299, 5, 100, 0, 0, 8299, 8300, 3, 902, 451, 0, 8300, 8301, 5, 80, 0, 0, 8301, 8303, 3, 674, 337, 0, 8302, 8304, 3, 904, 452, 0, 8303, 8302, 1, 0, 0, 0, 8304, 8305, 1, 0, 0, 0, 8305, 8303, 1, 0, 0, 0, 8305, 8306, 1, 0, 0, 0, 8306, 901, 1, 0, 0, 0, 8307, 8309, 5, 81, 0, 0, 8308, 8307, 1, 0, 0, 0, 8308, 8309, 1, 0, 0, 0, 8309, 8310, 1, 0, 0, 0, 8310, 8312, 3, 774, 387, 0, 8311, 8313, 5, 9, 0, 0, 8312, 8311, 1, 0, 0, 0, 8312, 8313, 1, 0, 0, 0, 8313, 8319, 1, 0, 0, 0, 8314, 8317, 3, 564, 282, 0, 8315, 8317, 3, 608, 304, 0, 8316, 8314, 1, 0, 0, 0, 8316, 8315, 1, 0, 0, 0, 8317, 8319, 1, 0, 0, 0, 8318, 8308, 1, 0, 0, 0, 8318, 8316, 1, 0, 0, 0, 8319, 8324, 1, 0, 0, 0, 8320, 8322, 5, 36, 0, 0, 8321, 8320, 1, 0, 0, 0, 8321, 8322, 1, 0, 0, 0, 8322, 8323, 1, 0, 0, 0, 8323, 8325, 3, 818, 409, 0, 8324, 8321, 1, 0, 0, 0, 8324, 8325, 1, 0, 0, 0, 8325, 903, 1, 0, 0, 0, 8326, 8327, 5, 102, 0, 0, 8327, 8330, 5, 526, 0, 0, 8328, 8329, 5, 33, 0, 0, 8329, 8331, 3, 674, 337, 0, 8330, 8328, 1, 0, 0, 0, 8330, 8331, 1, 0, 0, 0, 8331, 8332, 1, 0, 0, 0, 8332, 8337, 5, 93, 0, 0, 8333, 8338, 3, 908, 454, 0, 8334, 8338, 5, 182, 0, 0, 8335, 8336, 5, 57, 0, 0, 8336, 8338, 5, 270, 0, 0, 8337, 8333, 1, 0, 0, 0, 8337, 8334, 1, 0, 0, 0, 8337, 8335, 1, 0, 0, 0, 8338, 8353, 1, 0, 0, 0, 8339, 8340, 5, 102, 0, 0, 8340, 8341, 5, 77, 0, 0, 8341, 8344, 5, 526, 0, 0, 8342, 8343, 5, 33, 0, 0, 8343, 8345, 3, 674, 337, 0, 8344, 8342, 1, 0, 0, 0, 8344, 8345, 1, 0, 0, 0, 8345, 8346, 1, 0, 0, 0, 8346, 8350, 5, 93, 0, 0, 8347, 8351, 3, 906, 453, 0, 8348, 8349, 5, 57, 0, 0, 8349, 8351, 5, 270, 0, 0, 8350, 8347, 1, 0, 0, 0, 8350, 8348, 1, 0, 0, 0, 8351, 8353, 1, 0, 0, 0, 8352, 8326, 1, 0, 0, 0, 8352, 8339, 1, 0, 0, 0, 8353, 905, 1, 0, 0, 0, 8354, 8356, 5, 241, 0, 0, 8355, 8357, 3, 144, 72, 0, 8356, 8355, 1, 0, 0, 0, 8356, 8357, 1, 0, 0, 0, 8357, 8361, 1, 0, 0, 0, 8358, 8359, 5, 463, 0, 0, 8359, 8360, 7, 76, 0, 0, 8360, 8362, 5, 450, 0, 0, 8361, 8358, 1, 0, 0, 0, 8361, 8362, 1, 0, 0, 0, 8362, 8363, 1, 0, 0, 0, 8363, 8364, 3, 910, 455, 0, 8364, 907, 1, 0, 0, 0, 8365, 8366, 5, 369, 0, 0, 8366, 8384, 5, 333, 0, 0, 8367, 8368, 3, 800, 400, 0, 8368, 8369, 5, 10, 0, 0, 8369, 8370, 3, 912, 456, 0, 8370, 8385, 1, 0, 0, 0, 8371, 8372, 3, 144, 72, 0, 8372, 8373, 5, 10, 0, 0, 8373, 8374, 5, 2, 0, 0, 8374, 8379, 3, 912, 456, 0, 8375, 8376, 5, 6, 0, 0, 8376, 8378, 3, 912, 456, 0, 8377, 8375, 1, 0, 0, 0, 8378, 8381, 1, 0, 0, 0, 8379, 8377, 1, 0, 0, 0, 8379, 8380, 1, 0, 0, 0, 8380, 8382, 1, 0, 0, 0, 8381, 8379, 1, 0, 0, 0, 8382, 8383, 5, 3, 0, 0, 8383, 8385, 1, 0, 0, 0, 8384, 8367, 1, 0, 0, 0, 8384, 8371, 1, 0, 0, 0, 8385, 8386, 1, 0, 0, 0, 8386, 8384, 1, 0, 0, 0, 8386, 8387, 1, 0, 0, 0, 8387, 909, 1, 0, 0, 0, 8388, 8389, 5, 422, 0, 0, 8389, 8390, 5, 2, 0, 0, 8390, 8395, 3, 912, 456, 0, 8391, 8392, 5, 6, 0, 0, 8392, 8394, 3, 912, 456, 0, 8393, 8391, 1, 0, 0, 0, 8394, 8397, 1, 0, 0, 0, 8395, 8393, 1, 0, 0, 0, 8395, 8396, 1, 0, 0, 0, 8396, 8398, 1, 0, 0, 0, 8397, 8395, 1, 0, 0, 0, 8398, 8399, 5, 3, 0, 0, 8399, 8403, 1, 0, 0, 0, 8400, 8401, 5, 53, 0, 0, 8401, 8403, 5, 422, 0, 0, 8402, 8388, 1, 0, 0, 0, 8402, 8400, 1, 0, 0, 0, 8403, 911, 1, 0, 0, 0, 8404, 8407, 3, 588, 294, 0, 8405, 8407, 5, 53, 0, 0, 8406, 8404, 1, 0, 0, 0, 8406, 8405, 1, 0, 0, 0, 8407, 913, 1, 0, 0, 0, 8408, 8409, 5, 157, 0, 0, 8409, 8410, 3, 922, 461, 0, 8410, 8411, 5, 7, 0, 0, 8411, 915, 1, 0, 0, 0, 8412, 8413, 5, 78, 0, 0, 8413, 8414, 5, 7, 0, 0, 8414, 917, 1, 0, 0, 0, 8415, 8421, 7, 67, 0, 0, 8416, 8418, 5, 33, 0, 0, 8417, 8419, 5, 269, 0, 0, 8418, 8417, 1, 0, 0, 0, 8418, 8419, 1, 0, 0, 0, 8419, 8420, 1, 0, 0, 0, 8420, 8422, 5, 153, 0, 0, 8421, 8416, 1, 0, 0, 0, 8421, 8422, 1, 0, 0, 0, 8422, 8423, 1, 0, 0, 0, 8423, 8424, 5, 7, 0, 0, 8424, 919, 1, 0, 0, 0, 8425, 8426, 5, 333, 0, 0, 8426, 8427, 3, 316, 158, 0, 8427, 8428, 5, 94, 0, 0, 8428, 8429, 5, 53, 0, 0, 8429, 8430, 5, 7, 0, 0, 8430, 8438, 1, 0, 0, 0, 8431, 8434, 5, 313, 0, 0, 8432, 8435, 3, 316, 158, 0, 8433, 8435, 5, 30, 0, 0, 8434, 8432, 1, 0, 0, 0, 8434, 8433, 1, 0, 0, 0, 8435, 8436, 1, 0, 0, 0, 8436, 8438, 5, 7, 0, 0, 8437, 8425, 1, 0, 0, 0, 8437, 8431, 1, 0, 0, 0, 8438, 921, 1, 0, 0, 0, 8439, 8442, 3, 818, 409, 0, 8440, 8442, 5, 28, 0, 0, 8441, 8439, 1, 0, 0, 0, 8441, 8440, 1, 0, 0, 0, 8442, 923, 1, 0, 0, 0, 8443, 8460, 5, 517, 0, 0, 8444, 8445, 5, 102, 0, 0, 8445, 8450, 3, 926, 463, 0, 8446, 8447, 5, 82, 0, 0, 8447, 8449, 3, 926, 463, 0, 8448, 8446, 1, 0, 0, 0, 8449, 8452, 1, 0, 0, 0, 8450, 8448, 1, 0, 0, 0, 8450, 8451, 1, 0, 0, 0, 8451, 8453, 1, 0, 0, 0, 8452, 8450, 1, 0, 0, 0, 8453, 8457, 5, 93, 0, 0, 8454, 8456, 3, 846, 423, 0, 8455, 8454, 1, 0, 0, 0, 8456, 8459, 1, 0, 0, 0, 8457, 8455, 1, 0, 0, 0, 8457, 8458, 1, 0, 0, 0, 8458, 8461, 1, 0, 0, 0, 8459, 8457, 1, 0, 0, 0, 8460, 8444, 1, 0, 0, 0, 8461, 8462, 1, 0, 0, 0, 8462, 8460, 1, 0, 0, 0, 8462, 8463, 1, 0, 0, 0, 8463, 925, 1, 0, 0, 0, 8464, 8468, 3, 928, 464, 0, 8465, 8466, 5, 511, 0, 0, 8466, 8468, 3, 808, 404, 0, 8467, 8464, 1, 0, 0, 0, 8467, 8465, 1, 0, 0, 0, 8468, 927, 1, 0, 0, 0, 8469, 8472, 3, 818, 409, 0, 8470, 8472, 3, 828, 414, 0, 8471, 8469, 1, 0, 0, 0, 8471, 8470, 1, 0, 0, 0, 8472, 929, 1, 0, 0, 0, 8473, 8475, 3, 756, 378, 0, 8474, 8473, 1, 0, 0, 0, 8474, 8475, 1, 0, 0, 0, 8475, 8477, 1, 0, 0, 0, 8476, 8478, 3, 580, 290, 0, 8477, 8476, 1, 0, 0, 0, 8477, 8478, 1, 0, 0, 0, 8478, 8480, 1, 0, 0, 0, 8479, 8481, 3, 610, 305, 0, 8480, 8479, 1, 0, 0, 0, 8480, 8481, 1, 0, 0, 0, 8481, 8483, 1, 0, 0, 0, 8482, 8484, 3, 638, 319, 0, 8483, 8482, 1, 0, 0, 0, 8483, 8484, 1, 0, 0, 0, 8484, 8486, 1, 0, 0, 0, 8485, 8487, 3, 600, 300, 0, 8486, 8485, 1, 0, 0, 0, 8486, 8487, 1, 0, 0, 0, 8487, 8490, 1, 0, 0, 0, 8488, 8489, 5, 67, 0, 0, 8489, 8491, 3, 674, 337, 0, 8490, 8488, 1, 0, 0, 0, 8490, 8491, 1, 0, 0, 0, 8491, 8493, 1, 0, 0, 0, 8492, 8494, 3, 702, 351, 0, 8493, 8492, 1, 0, 0, 0, 8493, 8494, 1, 0, 0, 0, 8494, 931, 1, 0, 0, 0, 1188, 935, 942, 1062, 1064, 1073, 1078, 1084, 1119, 1129, 1135, 1140, 1147, 1152, 1159, 1170, 1178, 1182, 1194, 1200, 1206, 1210, 1215, 1219, 1232, 1242, 1244, 1250, 1255, 1268, 1271, 1276, 1281, 1292, 1296, 1308, 1312, 1315, 1319, 1331, 1349, 1356, 1364, 1369, 1376, 1384, 1390, 1398, 1406, 1410, 1424, 1429, 1434, 1446, 1452, 1464, 1469, 1479, 1485, 1490, 1498, 1503, 1510, 1515, 1520, 1530, 1535, 1540, 1547, 1551, 1565, 1571, 1577, 1582, 1589, 1601, 1609, 1617, 1633, 1642, 1651, 1660, 1664, 1676, 1684, 1694, 1714, 1719, 1722, 1729, 1732, 1736, 1740, 1743, 1748, 1753, 1757, 1766, 1772, 1776, 1785, 1788, 1794, 1803, 1815, 1819, 1823, 1828, 1831, 1837, 1839, 1841, 1845, 1851, 1855, 1860, 1865, 1869, 1872, 1879, 1892, 1905, 1919, 1936, 1946, 1953, 1958, 1962, 1969, 1974, 1977, 1979, 1984, 1988, 1992, 1996, 2001, 2004, 2008, 2011, 2015, 2023, 2028, 2031, 2035, 2041, 2050, 2054, 2060, 2062, 2071, 2076, 2088, 2093, 2097, 2101, 2106, 2110, 2113, 2116, 2119, 2122, 2125, 2130, 2133, 2136, 2139, 2142, 2145, 2151, 2155, 2158, 2161, 2164, 2167, 2169, 2176, 2184, 2194, 2199, 2209, 2212, 2217, 2222, 2227, 2230, 2235, 2244, 2246, 2250, 2253, 2257, 2262, 2267, 2271, 2274, 2278, 2281, 2286, 2289, 2294, 2297, 2301, 2304, 2307, 2312, 2315, 2323, 2335, 2339, 2346, 2351, 2354, 2357, 2360, 2365, 2376, 2382, 2386, 2389, 2392, 2397, 2404, 2407, 2411, 2419, 2424, 2427, 2430, 2437, 2442, 2451, 2454, 2457, 2462, 2465, 2477, 2487, 2504, 2508, 2512, 2514, 2531, 2533, 2549, 2560, 2563, 2566, 2575, 2584, 2600, 2603, 2606, 2614, 2618, 2625, 2634, 2638, 2644, 2648, 2651, 2654, 2657, 2660, 2666, 2670, 2675, 2679, 2682, 2685, 2688, 2693, 2699, 2703, 2707, 2711, 2717, 2719, 2724, 2730, 2736, 2740, 2755, 2760, 2763, 2765, 2768, 2772, 2776, 2779, 2782, 2790, 2796, 2798, 2804, 2809, 2814, 2818, 2825, 2827, 2838, 2877, 2887, 2889, 2892, 2896, 2900, 2910, 2912, 2918, 2920, 2929, 2941, 2955, 2960, 2963, 2970, 2975, 2983, 2985, 2991, 2996, 3000, 3005, 3011, 3018, 3024, 3026, 3035, 3041, 3049, 3055, 3060, 3065, 3073, 3088, 3090, 3094, 3098, 3101, 3104, 3113, 3116, 3119, 3125, 3131, 3135, 3147, 3153, 3156, 3161, 3165, 3172, 3182, 3184, 3208, 3220, 3225, 3227, 3231, 3234, 3237, 3247, 3250, 3260, 3265, 3270, 3273, 3276, 3284, 3290, 3297, 3305, 3308, 3319, 3323, 3329, 3336, 3339, 3348, 3362, 3365, 3379, 3390, 3393, 3405, 3410, 3423, 3428, 3441, 3450, 3453, 3456, 3463, 3466, 3478, 3484, 3486, 3494, 3502, 3510, 3522, 3527, 3538, 3549, 3557, 3565, 3572, 3579, 3581, 3584, 3589, 3594, 3613, 3622, 3625, 3652, 3661, 3664, 3668, 3672, 3676, 3683, 3687, 3691, 3695, 3699, 3704, 3708, 3713, 3719, 3724, 3731, 3735, 3741, 3745, 3750, 3758, 3764, 3769, 3776, 3781, 3785, 3790, 3796, 3803, 3808, 3815, 3820, 3827, 3831, 3839, 3843, 3845, 3848, 3853, 3863, 3878, 3881, 3889, 3896, 3901, 3907, 3911, 3918, 3923, 3926, 3929, 3933, 3942, 3960, 3963, 3995, 4000, 4006, 4026, 4031, 4037, 4040, 4044, 4048, 4054, 4057, 4061, 4065, 4070, 4073, 4076, 4079, 4092, 4098, 4106, 4113, 4118, 4121, 4128, 4131, 4139, 4142, 4147, 4154, 4157, 4177, 4189, 4192, 4198, 4203, 4212, 4220, 4225, 4231, 4238, 4246, 4249, 4260, 4262, 4276, 4282, 4290, 4292, 4298, 4302, 4305, 4308, 4313, 4318, 4322, 4325, 4328, 4331, 4334, 4342, 4353, 4356, 4359, 4364, 4367, 4371, 4375, 4381, 4389, 4392, 4405, 4410, 4412, 4417, 4424, 4431, 4440, 4448, 4456, 4463, 4471, 4478, 4486, 4490, 4494, 4496, 4502, 4507, 4511, 4518, 4523, 4528, 4533, 4535, 4545, 4555, 4571, 4589, 4601, 4608, 4623, 4628, 4631, 4636, 4641, 4646, 4649, 4652, 4657, 4664, 4668, 4673, 4680, 4684, 4690, 4699, 4708, 4720, 4722, 4735, 4741, 4745, 4747, 4754, 4767, 4774, 4776, 4792, 4796, 4800, 4805, 4810, 4815, 4820, 4823, 4835, 4888, 4897, 4901, 4910, 4914, 4923, 4927, 4932, 4935, 4939, 4944, 4946, 4955, 4960, 4971, 4975, 4989, 4997, 5035, 5037, 5056, 5059, 5086, 5090, 5094, 5098, 5102, 5105, 5120, 5127, 5141, 5154, 5179, 5198, 5213, 5229, 5236, 5247, 5250, 5269, 5272, 5285, 5289, 5309, 5321, 5325, 5347, 5351, 5361, 5365, 5371, 5375, 5379, 5383, 5390, 5395, 5406, 5410, 5413, 5418, 5424, 5435, 5439, 5442, 5446, 5450, 5453, 5463, 5466, 5470, 5475, 5481, 5484, 5489, 5492, 5499, 5501, 5507, 5511, 5520, 5525, 5527, 5537, 5540, 5545, 5553, 5556, 5561, 5563, 5565, 5571, 5588, 5594, 5607, 5613, 5617, 5622, 5652, 5667, 5672, 5676, 5689, 5693, 5695, 5704, 5710, 5712, 5716, 5719, 5722, 5725, 5728, 5730, 5733, 5737, 5745, 5750, 5753, 5759, 5763, 5767, 5772, 5774, 5778, 5782, 5789, 5795, 5799, 5801, 5803, 5816, 5824, 5832, 5843, 5852, 5857, 5861, 5865, 5872, 5875, 5877, 5885, 5889, 5892, 5899, 5906, 5911, 5918, 5921, 5923, 5926, 5932, 5937, 5941, 5948, 5958, 5965, 5968, 5971, 5975, 5986, 5989, 5992, 5995, 5998, 6005, 6008, 6011, 6018, 6030, 6037, 6039, 6044, 6049, 6051, 6057, 6064, 6069, 6074, 6078, 6082, 6086, 6088, 6092, 6096, 6099, 6102, 6104, 6114, 6116, 6121, 6125, 6130, 6134, 6141, 6146, 6150, 6153, 6159, 6162, 6181, 6188, 6192, 6195, 6199, 6203, 6206, 6209, 6214, 6223, 6230, 6234, 6238, 6242, 6245, 6247, 6252, 6256, 6261, 6267, 6274, 6279, 6284, 6293, 6300, 6308, 6319, 6324, 6328, 6331, 6335, 6340, 6344, 6349, 6357, 6368, 6373, 6377, 6380, 6383, 6385, 6388, 6391, 6394, 6398, 6402, 6406, 6408, 6417, 6422, 6428, 6432, 6434, 6441, 6446, 6452, 6454, 6458, 6465, 6470, 6473, 6479, 6483, 6489, 6498, 6504, 6506, 6511, 6514, 6523, 6530, 6532, 6539, 6544, 6547, 6557, 6568, 6573, 6577, 6585, 6595, 6602, 6608, 6619, 6625, 6635, 6644, 6648, 6651, 6653, 6655, 6659, 6667, 6670, 6675, 6680, 6687, 6689, 6695, 6699, 6702, 6707, 6710, 6712, 6718, 6727, 6733, 6736, 6744, 6747, 6751, 6757, 6759, 6762, 6766, 6771, 6778, 6785, 6787, 6793, 6795, 6800, 6802, 6806, 6815, 6819, 6827, 6829, 6843, 6846, 6854, 6863, 6869, 6874, 6882, 6884, 6889, 6893, 6898, 6903, 6909, 6925, 6927, 6936, 6951, 6956, 6959, 6965, 6970, 6983, 6988, 6992, 6999, 7018, 7030, 7035, 7043, 7045, 7047, 7056, 7059, 7064, 7069, 7073, 7076, 7085, 7093, 7098, 7100, 7103, 7107, 7118, 7139, 7147, 7160, 7170, 7176, 7182, 7185, 7188, 7214, 7216, 7237, 7247, 7260, 7265, 7269, 7271, 7283, 7290, 7296, 7302, 7306, 7317, 7327, 7331, 7336, 7339, 7342, 7351, 7362, 7364, 7368, 7373, 7382, 7387, 7395, 7405, 7413, 7417, 7420, 7427, 7435, 7439, 7446, 7454, 7463, 7466, 7478, 7487, 7494, 7503, 7513, 7518, 7522, 7524, 7527, 7532, 7537, 7545, 7553, 7556, 7563, 7571, 7579, 7587, 7604, 7611, 7619, 7636, 7642, 7648, 7656, 7662, 7667, 7675, 7680, 7683, 7692, 7699, 7704, 7708, 7713, 7719, 7724, 7732, 7787, 7794, 7800, 7802, 7804, 7806, 7812, 7816, 7820, 7831, 7834, 7838, 7842, 7846, 7849, 7852, 7855, 7864, 7869, 7873, 7906, 7916, 7920, 7926, 7931, 7940, 7948, 7959, 7967, 7976, 7985, 7990, 7994, 8004, 8009, 8017, 8022, 8025, 8032, 8038, 8046, 8054, 8057, 8064, 8066, 8069, 8075, 8084, 8088, 8102, 8105, 8107, 8113, 8123, 8125, 8127, 8135, 8138, 8141, 8151, 8159, 8165, 8171, 8178, 8182, 8186, 8189, 8192, 8198, 8205, 8208, 8216, 8218, 8227, 8232, 8234, 8241, 8247, 8250, 8262, 8269, 8271, 8275, 8281, 8286, 8290, 8293, 8296, 8305, 8308, 8312, 8316, 8318, 8321, 8324, 8330, 8337, 8344, 8350, 8352, 8356, 8361, 8379, 8384, 8386, 8395, 8402, 8406, 8418, 8421, 8434, 8437, 8441, 8450, 8457, 8462, 8467, 8471, 8474, 8477, 8480, 8483, 8486, 8490, 8493] \ No newline at end of file diff --git a/src/lib/postgresql/PostgreSqlParser.ts b/src/lib/postgresql/PostgreSqlParser.ts index 908f2837..4b81fb75 100644 --- a/src/lib/postgresql/PostgreSqlParser.ts +++ b/src/lib/postgresql/PostgreSqlParser.ts @@ -1072,8 +1072,7 @@ export class PostgreSqlParser extends SQLParserBase { public static readonly RULE_exception_sect = 462; public static readonly RULE_proc_condition = 463; public static readonly RULE_any_identifier = 464; - public static readonly RULE_plsql_unreserved_keyword = 465; - public static readonly RULE_sql_expression = 466; + public static readonly RULE_sql_expression = 465; public static readonly literalNames = [ null, "'$'", "'('", "')'", "'['", "']'", "','", "';'", "':'", "'*'", @@ -1421,8 +1420,7 @@ export class PostgreSqlParser extends SQLParserBase { "stmt_move", "mergestmt", "data_source", "merge_when_clause", "merge_insert", "merge_update", "default_values_or_values", "exprofdefault", "stmt_close", "stmt_null", "stmt_commit_or_rollback", "stmt_set", "cursor_variable", - "exception_sect", "proc_condition", "any_identifier", "plsql_unreserved_keyword", - "sql_expression", + "exception_sect", "proc_condition", "any_identifier", "sql_expression", ]; public get grammarFileName(): string { return "PostgreSqlParser.g4"; } @@ -1446,21 +1444,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 937; + this.state = 935; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 2 || _la === 31 || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 570441729) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 142606337) !== 0) || _la === 105 || _la === 129 || ((((_la - 138)) & ~0x1F) === 0 && ((1 << (_la - 138)) & 2159673601) !== 0) || ((((_la - 177)) & ~0x1F) === 0 && ((1 << (_la - 177)) & 100680739) !== 0) || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 1090557953) !== 0) || ((((_la - 290)) & ~0x1F) === 0 && ((1 << (_la - 290)) & 679839745) !== 0) || ((((_la - 322)) & ~0x1F) === 0 && ((1 << (_la - 322)) & 272417) !== 0) || ((((_la - 358)) & ~0x1F) === 0 && ((1 << (_la - 358)) & 6401) !== 0) || ((((_la - 422)) & ~0x1F) === 0 && ((1 << (_la - 422)) & 4196353) !== 0) || _la === 454 || _la === 525 || _la === 581) { { { - this.state = 934; + this.state = 932; this.singleStmt(); } } - this.state = 939; + this.state = 937; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 940; + this.state = 938; this.match(PostgreSqlParser.EOF); } } @@ -1485,14 +1483,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 942; + this.state = 940; this.stmt(); - this.state = 944; + this.state = 942; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 7) { { - this.state = 943; + this.state = 941; this.match(PostgreSqlParser.SEMI); } } @@ -1518,832 +1516,832 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 4, PostgreSqlParser.RULE_stmt); let _la: number; try { - this.state = 1066; + this.state = 1064; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 3, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 946; + this.state = 944; this.altereventtrigstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 947; + this.state = 945; this.altercollationstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 948; + this.state = 946; this.alterdatabasestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 949; + this.state = 947; this.alterdatabasesetstmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 950; + this.state = 948; this.alterdefaultprivilegesstmt(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 951; + this.state = 949; this.alterdomainstmt(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 952; + this.state = 950; this.alterenumstmt(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 953; + this.state = 951; this.alterextensionstmt(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 954; + this.state = 952; this.alterextensioncontentsstmt(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 955; + this.state = 953; this.alterfdwstmt(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 956; + this.state = 954; this.alterforeignserverstmt(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 957; + this.state = 955; this.alterfunctionstmt(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 958; + this.state = 956; this.altergroupstmt(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 959; + this.state = 957; this.alterobjectdependsstmt(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 960; + this.state = 958; this.alterobjectschemastmt(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 961; + this.state = 959; this.alterownerstmt(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 962; + this.state = 960; this.alteroperatorstmt(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 963; + this.state = 961; this.altertypestmt(); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 964; + this.state = 962; this.alterpolicystmt(); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 965; + this.state = 963; this.alterprocedurestmt(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 966; + this.state = 964; this.alterseqstmt(); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 967; + this.state = 965; this.altersystemstmt(); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 968; + this.state = 966; this.altertablestmt(); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 969; + this.state = 967; this.altertblspcstmt(); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 970; + this.state = 968; this.altercompositetypestmt(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 971; + this.state = 969; this.alterpublicationstmt(); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 972; + this.state = 970; this.alterrolesetstmt(); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 973; + this.state = 971; this.alterroutinestmt(); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 974; + this.state = 972; this.alterrolestmt(); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 975; + this.state = 973; this.altersubscriptionstmt(); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 976; + this.state = 974; this.alterstatsstmt(); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 977; + this.state = 975; this.altertsconfigurationstmt(); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 978; + this.state = 976; this.altertsdictionarystmt(); } break; case 34: this.enterOuterAlt(localContext, 34); { - this.state = 979; + this.state = 977; this.alterusermappingstmt(); } break; case 35: this.enterOuterAlt(localContext, 35); { - this.state = 980; + this.state = 978; this.analyzestmt(); } break; case 36: this.enterOuterAlt(localContext, 36); { - this.state = 981; + this.state = 979; this.callstmt(); } break; case 37: this.enterOuterAlt(localContext, 37); { - this.state = 982; + this.state = 980; this.checkpointstmt(); } break; case 38: this.enterOuterAlt(localContext, 38); { - this.state = 983; + this.state = 981; this.closeportalstmt(); } break; case 39: this.enterOuterAlt(localContext, 39); { - this.state = 984; + this.state = 982; this.clusterstmt(); } break; case 40: this.enterOuterAlt(localContext, 40); { - this.state = 985; + this.state = 983; this.commentstmt(); } break; case 41: this.enterOuterAlt(localContext, 41); { - this.state = 986; + this.state = 984; this.constraintssetstmt(); } break; case 42: this.enterOuterAlt(localContext, 42); { - this.state = 987; + this.state = 985; this.copystmt(); } break; case 43: this.enterOuterAlt(localContext, 43); { - this.state = 988; + this.state = 986; this.createamstmt(); } break; case 44: this.enterOuterAlt(localContext, 44); { - this.state = 989; + this.state = 987; this.createasstmt(); } break; case 45: this.enterOuterAlt(localContext, 45); { - this.state = 990; + this.state = 988; this.createassertionstmt(); } break; case 46: this.enterOuterAlt(localContext, 46); { - this.state = 991; + this.state = 989; this.createcaststmt(); } break; case 47: this.enterOuterAlt(localContext, 47); { - this.state = 992; + this.state = 990; this.createconversionstmt(); } break; case 48: this.enterOuterAlt(localContext, 48); { - this.state = 993; + this.state = 991; this.createdomainstmt(); } break; case 49: this.enterOuterAlt(localContext, 49); { - this.state = 994; + this.state = 992; this.createextensionstmt(); } break; case 50: this.enterOuterAlt(localContext, 50); { - this.state = 995; + this.state = 993; this.createfdwstmt(); } break; case 51: this.enterOuterAlt(localContext, 51); { - this.state = 996; + this.state = 994; this.createforeignserverstmt(); } break; case 52: this.enterOuterAlt(localContext, 52); { - this.state = 997; + this.state = 995; this.createforeigntablestmt(); } break; case 53: this.enterOuterAlt(localContext, 53); { - this.state = 998; + this.state = 996; this.createfunctionstmt(); } break; case 54: this.enterOuterAlt(localContext, 54); { - this.state = 999; + this.state = 997; this.creategroupstmt(); } break; case 55: this.enterOuterAlt(localContext, 55); { - this.state = 1000; + this.state = 998; this.creatematviewstmt(); } break; case 56: this.enterOuterAlt(localContext, 56); { - this.state = 1001; + this.state = 999; this.createopclassstmt(); } break; case 57: this.enterOuterAlt(localContext, 57); { - this.state = 1002; + this.state = 1000; this.createopfamilystmt(); } break; case 58: this.enterOuterAlt(localContext, 58); { - this.state = 1003; + this.state = 1001; this.createpublicationstmt(); } break; case 59: this.enterOuterAlt(localContext, 59); { - this.state = 1004; + this.state = 1002; this.alteropfamilystmt(); } break; case 60: this.enterOuterAlt(localContext, 60); { - this.state = 1005; + this.state = 1003; this.createpolicystmt(); } break; case 61: this.enterOuterAlt(localContext, 61); { - this.state = 1006; + this.state = 1004; this.createplangstmt(); } break; case 62: this.enterOuterAlt(localContext, 62); { - this.state = 1007; + this.state = 1005; this.createschemastmt(); } break; case 63: this.enterOuterAlt(localContext, 63); { - this.state = 1008; + this.state = 1006; this.createseqstmt(); } break; case 64: this.enterOuterAlt(localContext, 64); { - this.state = 1009; + this.state = 1007; this.createstmt(); } break; case 65: this.enterOuterAlt(localContext, 65); { - this.state = 1010; + this.state = 1008; this.createsubscriptionstmt(); } break; case 66: this.enterOuterAlt(localContext, 66); { - this.state = 1011; + this.state = 1009; this.createstatsstmt(); } break; case 67: this.enterOuterAlt(localContext, 67); { - this.state = 1012; + this.state = 1010; this.createtablespacestmt(); } break; case 68: this.enterOuterAlt(localContext, 68); { - this.state = 1013; + this.state = 1011; this.createtransformstmt(); } break; case 69: this.enterOuterAlt(localContext, 69); { - this.state = 1014; + this.state = 1012; this.createtrigstmt(); } break; case 70: this.enterOuterAlt(localContext, 70); { - this.state = 1015; + this.state = 1013; this.createeventtrigstmt(); } break; case 71: this.enterOuterAlt(localContext, 71); { - this.state = 1016; + this.state = 1014; this.createrolestmt(); } break; case 72: this.enterOuterAlt(localContext, 72); { - this.state = 1017; + this.state = 1015; this.createuserstmt(); } break; case 73: this.enterOuterAlt(localContext, 73); { - this.state = 1018; + this.state = 1016; this.createusermappingstmt(); } break; case 74: this.enterOuterAlt(localContext, 74); { - this.state = 1019; + this.state = 1017; this.createdbstmt(); } break; case 75: this.enterOuterAlt(localContext, 75); { - this.state = 1020; + this.state = 1018; this.deallocatestmt(); } break; case 76: this.enterOuterAlt(localContext, 76); { - this.state = 1021; + this.state = 1019; this.declarecursorstmt(); } break; case 77: this.enterOuterAlt(localContext, 77); { - this.state = 1022; + this.state = 1020; this.definestmt(); } break; case 78: this.enterOuterAlt(localContext, 78); { - this.state = 1023; + this.state = 1021; this.deletestmt(); } break; case 79: this.enterOuterAlt(localContext, 79); { - this.state = 1024; + this.state = 1022; this.discardstmt(); } break; case 80: this.enterOuterAlt(localContext, 80); { - this.state = 1025; + this.state = 1023; this.dostmt(); } break; case 81: this.enterOuterAlt(localContext, 81); { - this.state = 1026; + this.state = 1024; this.dropstmt(); } break; case 82: this.enterOuterAlt(localContext, 82); { - this.state = 1027; + this.state = 1025; this.executestmt(); } break; case 83: this.enterOuterAlt(localContext, 83); { - this.state = 1028; + this.state = 1026; this.explainstmt(); } break; case 84: this.enterOuterAlt(localContext, 84); { - this.state = 1029; + this.state = 1027; this.fetchstmt(); } break; case 85: this.enterOuterAlt(localContext, 85); { - this.state = 1030; + this.state = 1028; this.grantstmt(); } break; case 86: this.enterOuterAlt(localContext, 86); { - this.state = 1031; + this.state = 1029; this.grantrolestmt(); } break; case 87: this.enterOuterAlt(localContext, 87); { - this.state = 1032; + this.state = 1030; this.mergestmt(); } break; case 88: this.enterOuterAlt(localContext, 88); { - this.state = 1033; + this.state = 1031; this.importforeignschemastmt(); } break; case 89: this.enterOuterAlt(localContext, 89); { - this.state = 1034; + this.state = 1032; this.indexstmt(); } break; case 90: this.enterOuterAlt(localContext, 90); { - this.state = 1035; + this.state = 1033; this.insertstmt(); } break; case 91: this.enterOuterAlt(localContext, 91); { - this.state = 1036; + this.state = 1034; this.listenstmt(); } break; case 92: this.enterOuterAlt(localContext, 92); { - this.state = 1037; + this.state = 1035; this.refreshmatviewstmt(); } break; case 93: this.enterOuterAlt(localContext, 93); { - this.state = 1038; + this.state = 1036; this.loadstmt(); } break; case 94: this.enterOuterAlt(localContext, 94); { - this.state = 1039; + this.state = 1037; this.lockstmt(); } break; case 95: this.enterOuterAlt(localContext, 95); { - this.state = 1040; + this.state = 1038; this.notifystmt(); } break; case 96: this.enterOuterAlt(localContext, 96); { - this.state = 1041; + this.state = 1039; this.preparestmt(); } break; case 97: this.enterOuterAlt(localContext, 97); { - this.state = 1042; + this.state = 1040; this.reassignownedstmt(); } break; case 98: this.enterOuterAlt(localContext, 98); { - this.state = 1043; + this.state = 1041; this.reindexstmt(); } break; case 99: this.enterOuterAlt(localContext, 99); { - this.state = 1044; + this.state = 1042; this.removeaggrstmt(); } break; case 100: this.enterOuterAlt(localContext, 100); { - this.state = 1045; + this.state = 1043; this.removefuncstmt(); } break; case 101: this.enterOuterAlt(localContext, 101); { - this.state = 1046; + this.state = 1044; this.removeoperstmt(); } break; case 102: this.enterOuterAlt(localContext, 102); { - this.state = 1047; + this.state = 1045; this.renamestmt(); } break; case 103: this.enterOuterAlt(localContext, 103); { - this.state = 1048; + this.state = 1046; this.revokestmt(); } break; case 104: this.enterOuterAlt(localContext, 104); { - this.state = 1049; + this.state = 1047; this.revokerolestmt(); } break; case 105: this.enterOuterAlt(localContext, 105); { - this.state = 1050; + this.state = 1048; this.rulestmt(); } break; case 106: this.enterOuterAlt(localContext, 106); { - this.state = 1051; + this.state = 1049; this.seclabelstmt(); } break; case 107: this.enterOuterAlt(localContext, 107); { - this.state = 1052; + this.state = 1050; this.selectstmt(); } break; case 108: this.enterOuterAlt(localContext, 108); { - this.state = 1053; + this.state = 1051; this.transactionstmt(); } break; case 109: this.enterOuterAlt(localContext, 109); { - this.state = 1054; + this.state = 1052; this.truncatestmt(); } break; case 110: this.enterOuterAlt(localContext, 110); { - this.state = 1055; + this.state = 1053; this.unlistenstmt(); } break; case 111: this.enterOuterAlt(localContext, 111); { - this.state = 1056; + this.state = 1054; this.updatestmt(); } break; case 112: this.enterOuterAlt(localContext, 112); { - this.state = 1057; + this.state = 1055; this.vacuumstmt(); } break; case 113: this.enterOuterAlt(localContext, 113); { - this.state = 1058; + this.state = 1056; this.variableresetstmt(); } break; case 114: this.enterOuterAlt(localContext, 114); { - this.state = 1059; + this.state = 1057; this.variablesetstmt(); } break; case 115: this.enterOuterAlt(localContext, 115); { - this.state = 1060; + this.state = 1058; this.variableshowstmt(); } break; case 116: this.enterOuterAlt(localContext, 116); { - this.state = 1061; + this.state = 1059; this.viewstmt(); } break; case 117: this.enterOuterAlt(localContext, 117); { - this.state = 1062; + this.state = 1060; this.match(PostgreSqlParser.MetaCommand); - this.state = 1064; + this.state = 1062; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 582) { { - this.state = 1063; + this.state = 1061; this.match(PostgreSqlParser.EndMetaCommand); } } @@ -2372,9 +2370,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1068; + this.state = 1066; this.match(PostgreSqlParser.KW_CALL); - this.state = 1069; + this.state = 1067; this.func_application(); } } @@ -2399,35 +2397,35 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1071; + this.state = 1069; this.match(PostgreSqlParser.KW_CREATE); - this.state = 1072; + this.state = 1070; this.match(PostgreSqlParser.KW_ROLE); - this.state = 1073; + this.state = 1071; this.rolespec(); - this.state = 1075; + this.state = 1073; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 4, this.context) ) { case 1: { - this.state = 1074; + this.state = 1072; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1080; + this.state = 1078; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 5, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1077; + this.state = 1075; this.createoptroleelem(); } } } - this.state = 1082; + this.state = 1080; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 5, this.context); } @@ -2452,15 +2450,15 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 10, PostgreSqlParser.RULE_alteroptroleelem); let _la: number; try { - this.state = 1121; + this.state = 1119; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_PASSWORD: + switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context) ) { + case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1083; + this.state = 1081; this.match(PostgreSqlParser.KW_PASSWORD); - this.state = 1086; + this.state = 1084; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -2468,13 +2466,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1084; + this.state = 1082; this.sconst(); } break; case PostgreSqlParser.KW_NULL: { - this.state = 1085; + this.state = 1083; this.match(PostgreSqlParser.KW_NULL); } break; @@ -2483,11 +2481,10 @@ export class PostgreSqlParser extends SQLParserBase { } } break; - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_UNENCRYPTED: + case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1088; + this.state = 1086; _la = this.tokenStream.LA(1); if(!(_la === 195 || _la === 364)) { this.errorHandler.recoverInline(this); @@ -2496,152 +2493,152 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1089; + this.state = 1087; this.match(PostgreSqlParser.KW_PASSWORD); - this.state = 1090; + this.state = 1088; this.sconst(); } break; - case PostgreSqlParser.KW_INHERIT: + case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1091; + this.state = 1089; this.match(PostgreSqlParser.KW_INHERIT); } break; - case PostgreSqlParser.KW_NOINHERIT: + case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1092; + this.state = 1090; this.match(PostgreSqlParser.KW_NOINHERIT); } break; - case PostgreSqlParser.KW_CREATEUSER: + case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1093; + this.state = 1091; this.match(PostgreSqlParser.KW_CREATEUSER); } break; - case PostgreSqlParser.KW_NOCREATEUSER: + case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1094; + this.state = 1092; this.match(PostgreSqlParser.KW_NOCREATEUSER); } break; - case PostgreSqlParser.KW_CREATEROLE: + case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1095; + this.state = 1093; this.match(PostgreSqlParser.KW_CREATEROLE); } break; - case PostgreSqlParser.KW_NOCREATEROLE: + case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1096; + this.state = 1094; this.match(PostgreSqlParser.KW_NOCREATEROLE); } break; - case PostgreSqlParser.KW_CREATEDB: + case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1097; + this.state = 1095; this.match(PostgreSqlParser.KW_CREATEDB); } break; - case PostgreSqlParser.KW_NOCREATEDB: + case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1098; + this.state = 1096; this.match(PostgreSqlParser.KW_NOCREATEDB); } break; - case PostgreSqlParser.KW_SUPERUSER: + case 11: this.enterOuterAlt(localContext, 11); { - this.state = 1099; + this.state = 1097; this.match(PostgreSqlParser.KW_SUPERUSER); } break; - case PostgreSqlParser.KW_NOSUPERUSER: + case 12: this.enterOuterAlt(localContext, 12); { - this.state = 1100; + this.state = 1098; this.match(PostgreSqlParser.KW_NOSUPERUSER); } break; - case PostgreSqlParser.KW_LOGIN: + case 13: this.enterOuterAlt(localContext, 13); { - this.state = 1101; + this.state = 1099; this.match(PostgreSqlParser.KW_LOGIN); } break; - case PostgreSqlParser.KW_NOLOGIN: + case 14: this.enterOuterAlt(localContext, 14); { - this.state = 1102; + this.state = 1100; this.match(PostgreSqlParser.KW_NOLOGIN); } break; - case PostgreSqlParser.KW_REPLICATION: + case 15: this.enterOuterAlt(localContext, 15); { - this.state = 1103; + this.state = 1101; this.match(PostgreSqlParser.KW_REPLICATION); } break; - case PostgreSqlParser.KW_NOREPLICATION: + case 16: this.enterOuterAlt(localContext, 16); { - this.state = 1104; + this.state = 1102; this.match(PostgreSqlParser.KW_NOREPLICATION); } break; - case PostgreSqlParser.KW_BYPASSRLS: + case 17: this.enterOuterAlt(localContext, 17); { - this.state = 1105; + this.state = 1103; this.match(PostgreSqlParser.KW_BYPASSRLS); } break; - case PostgreSqlParser.KW_NOBYPASSRLS: + case 18: this.enterOuterAlt(localContext, 18); { - this.state = 1106; + this.state = 1104; this.match(PostgreSqlParser.KW_NOBYPASSRLS); } break; - case PostgreSqlParser.KW_CONNECTION: + case 19: this.enterOuterAlt(localContext, 19); { - this.state = 1107; + this.state = 1105; this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 1108; + this.state = 1106; this.match(PostgreSqlParser.KW_LIMIT); - this.state = 1109; + this.state = 1107; this.signediconst(); } break; - case PostgreSqlParser.KW_VALID: + case 20: this.enterOuterAlt(localContext, 20); { - this.state = 1110; + this.state = 1108; this.match(PostgreSqlParser.KW_VALID); - this.state = 1111; + this.state = 1109; this.match(PostgreSqlParser.KW_UNTIL); - this.state = 1112; + this.state = 1110; this.sconst(); } break; - case PostgreSqlParser.KW_IN: + case 21: this.enterOuterAlt(localContext, 21); { - this.state = 1113; + this.state = 1111; this.match(PostgreSqlParser.KW_IN); - this.state = 1114; + this.state = 1112; _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2650,15 +2647,14 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1115; + this.state = 1113; this.name_list(); } break; - case PostgreSqlParser.KW_USER: - case PostgreSqlParser.KW_ROLE: + case 22: this.enterOuterAlt(localContext, 22); { - this.state = 1116; + this.state = 1114; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2667,99 +2663,26 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1117; + this.state = 1115; this.role_list(); } break; - case PostgreSqlParser.KW_ADMIN: + case 23: this.enterOuterAlt(localContext, 23); { - this.state = 1118; + this.state = 1116; this.match(PostgreSqlParser.KW_ADMIN); - this.state = 1119; + this.state = 1117; this.name_list(); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: + case 24: this.enterOuterAlt(localContext, 24); { - this.state = 1120; + this.state = 1118; this.identifier(); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -2781,29 +2704,29 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 12, PostgreSqlParser.RULE_createoptroleelem); let _la: number; try { - this.state = 1131; + this.state = 1129; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 8, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1123; + this.state = 1121; this.alteroptroleelem(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1124; + this.state = 1122; this.match(PostgreSqlParser.KW_SYSID); - this.state = 1125; + this.state = 1123; this.match(PostgreSqlParser.Integral); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1126; + this.state = 1124; _la = this.tokenStream.LA(1); if(!(_la === 134 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2812,16 +2735,16 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1127; + this.state = 1125; this.role_list(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1128; + this.state = 1126; this.match(PostgreSqlParser.KW_IN); - this.state = 1129; + this.state = 1127; _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2830,7 +2753,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1130; + this.state = 1128; this.role_list(); } break; @@ -2857,35 +2780,35 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1133; + this.state = 1131; this.match(PostgreSqlParser.KW_CREATE); - this.state = 1134; + this.state = 1132; this.match(PostgreSqlParser.KW_USER); - this.state = 1135; + this.state = 1133; this.rolespec(); - this.state = 1137; + this.state = 1135; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { case 1: { - this.state = 1136; + this.state = 1134; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1142; + this.state = 1140; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1139; + this.state = 1137; this.createoptroleelem(); } } } - this.state = 1144; + this.state = 1142; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 10, this.context); } @@ -2913,9 +2836,9 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1145; + this.state = 1143; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1146; + this.state = 1144; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2924,31 +2847,31 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1147; + this.state = 1145; this.rolespec(); - this.state = 1149; + this.state = 1147; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 11, this.context) ) { case 1: { - this.state = 1148; + this.state = 1146; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1154; + this.state = 1152; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 12, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1151; + this.state = 1149; this.alteroptroleelem(); } } } - this.state = 1156; + this.state = 1154; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 12, this.context); } @@ -2975,9 +2898,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1157; + this.state = 1155; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1158; + this.state = 1156; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -2986,24 +2909,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1161; + this.state = 1159; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: { - this.state = 1159; + this.state = 1157; this.match(PostgreSqlParser.KW_ALL); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_ROLE: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_SESSION_USER: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: @@ -3420,20 +3337,20 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1160; + this.state = 1158; this.rolespec(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 1163; + this.state = 1161; this.match(PostgreSqlParser.KW_IN); - this.state = 1164; + this.state = 1162; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 1165; + this.state = 1163; this.database_name(); - this.state = 1166; + this.state = 1164; this.setresetclause(); } } @@ -3458,23 +3375,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1168; + this.state = 1166; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1169; + this.state = 1167; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 1170; + this.state = 1168; this.routine_name(); - this.state = 1172; + this.state = 1170; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 1171; + this.state = 1169; this.func_args(); } } - this.state = 1174; + this.state = 1172; this.alter_routine_cluase(); } } @@ -3498,36 +3415,36 @@ export class PostgreSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 1202; + this.state = 1200; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 18, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1176; + this.state = 1174; this.routine_action(); - this.state = 1180; + this.state = 1178; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 15, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1177; + this.state = 1175; this.routine_action(); } } } - this.state = 1182; + this.state = 1180; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 15, this.context); } - this.state = 1184; + this.state = 1182; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 16, this.context) ) { case 1: { - this.state = 1183; + this.state = 1181; this.match(PostgreSqlParser.KW_RESTRICT); } break; @@ -3537,56 +3454,56 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1186; + this.state = 1184; this.match(PostgreSqlParser.KW_RENAME); - this.state = 1187; + this.state = 1185; this.match(PostgreSqlParser.KW_TO); - this.state = 1188; + this.state = 1186; this.routine_name_create(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1189; + this.state = 1187; this.match(PostgreSqlParser.KW_OWNER); - this.state = 1190; + this.state = 1188; this.match(PostgreSqlParser.KW_TO); - this.state = 1191; + this.state = 1189; this.rolespec(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1192; + this.state = 1190; this.match(PostgreSqlParser.KW_SET); - this.state = 1193; + this.state = 1191; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 1194; + this.state = 1192; this.schema_name_create(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1196; + this.state = 1194; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 1195; + this.state = 1193; this.match(PostgreSqlParser.KW_NO); } } - this.state = 1198; + this.state = 1196; this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 1199; + this.state = 1197; this.match(PostgreSqlParser.KW_ON); - this.state = 1200; + this.state = 1198; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 1201; + this.state = 1199; this.colid(); } break; @@ -3611,86 +3528,86 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 24, PostgreSqlParser.RULE_routine_action); let _la: number; try { - this.state = 1246; + this.state = 1244; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 25, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1204; + this.state = 1202; this.match(PostgreSqlParser.KW_IMMUTABLE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1205; + this.state = 1203; this.match(PostgreSqlParser.KW_STABLE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1206; + this.state = 1204; this.match(PostgreSqlParser.KW_VOLATILE); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1208; + this.state = 1206; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 1207; + this.state = 1205; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 1210; + this.state = 1208; this.match(PostgreSqlParser.KW_LEAKPROOF); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1221; + this.state = 1219; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 22, this.context) ) { case 1: { - this.state = 1212; + this.state = 1210; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 1211; + this.state = 1209; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 1214; + this.state = 1212; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 1215; + this.state = 1213; this.match(PostgreSqlParser.KW_INVOKER); } break; case 2: { - this.state = 1217; + this.state = 1215; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 1216; + this.state = 1214; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 1219; + this.state = 1217; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 1220; + this.state = 1218; this.match(PostgreSqlParser.KW_DEFINER); } break; @@ -3700,9 +3617,9 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1223; + this.state = 1221; this.match(PostgreSqlParser.KW_PARALLEL); - this.state = 1224; + this.state = 1222; _la = this.tokenStream.LA(1); if(!(((((_la - 529)) & ~0x1F) === 0 && ((1 << (_la - 529)) & 7) !== 0))) { this.errorHandler.recoverInline(this); @@ -3716,29 +3633,29 @@ export class PostgreSqlParser extends SQLParserBase { case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1225; + this.state = 1223; this.match(PostgreSqlParser.KW_COST); - this.state = 1226; + this.state = 1224; this.collabel(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1227; + this.state = 1225; this.match(PostgreSqlParser.KW_ROWS); - this.state = 1228; + this.state = 1226; this.colid(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1229; + this.state = 1227; this.match(PostgreSqlParser.KW_SET); - this.state = 1230; + this.state = 1228; this.colid(); - this.state = 1231; + this.state = 1229; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 94)) { this.errorHandler.recoverInline(this); @@ -3747,18 +3664,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1234; + this.state = 1232; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 23, this.context) ) { case 1: { - this.state = 1232; + this.state = 1230; this.colid(); } break; case 2: { - this.state = 1233; + this.state = 1231; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -3768,31 +3685,25 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1236; + this.state = 1234; this.match(PostgreSqlParser.KW_SET); - this.state = 1237; + this.state = 1235; this.colid(); - this.state = 1238; + this.state = 1236; this.match(PostgreSqlParser.KW_FROM); - this.state = 1239; + this.state = 1237; this.match(PostgreSqlParser.KW_CURRENT); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 1241; + this.state = 1239; this.match(PostgreSqlParser.KW_RESET); - this.state = 1244; + this.state = 1242; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -4174,6 +4085,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -4186,13 +4098,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1242; + this.state = 1240; this.colid(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 1243; + this.state = 1241; this.match(PostgreSqlParser.KW_ALL); } break; @@ -4224,35 +4136,35 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1248; + this.state = 1246; this.match(PostgreSqlParser.KW_CREATE); - this.state = 1249; + this.state = 1247; this.match(PostgreSqlParser.KW_GROUP); - this.state = 1250; + this.state = 1248; this.rolespec(); - this.state = 1252; + this.state = 1250; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { case 1: { - this.state = 1251; + this.state = 1249; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 1257; + this.state = 1255; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1254; + this.state = 1252; this.createoptroleelem(); } } } - this.state = 1259; + this.state = 1257; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 27, this.context); } @@ -4279,13 +4191,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1260; + this.state = 1258; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1261; + this.state = 1259; this.match(PostgreSqlParser.KW_GROUP); - this.state = 1262; + this.state = 1260; this.rolespec(); - this.state = 1263; + this.state = 1261; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 191)) { this.errorHandler.recoverInline(this); @@ -4294,9 +4206,9 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1264; + this.state = 1262; this.match(PostgreSqlParser.KW_USER); - this.state = 1265; + this.state = 1263; this.role_list(); } } @@ -4322,61 +4234,61 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1267; + this.state = 1265; this.match(PostgreSqlParser.KW_CREATE); - this.state = 1268; + this.state = 1266; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 1270; + this.state = 1268; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context) ) { case 1: { - this.state = 1269; + this.state = 1267; this.opt_if_not_exists(); } break; } - this.state = 1278; + this.state = 1276; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context) ) { case 1: { - this.state = 1273; + this.state = 1271; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 1272; + this.state = 1270; this.schema_name_create(); } } - this.state = 1275; + this.state = 1273; this.match(PostgreSqlParser.KW_AUTHORIZATION); - this.state = 1276; + this.state = 1274; this.rolespec(); } break; case 2: { - this.state = 1277; + this.state = 1275; this.schema_name_create(); } break; } - this.state = 1283; + this.state = 1281; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 31, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1280; + this.state = 1278; this.schema_stmt(); } } } - this.state = 1285; + this.state = 1283; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 31, this.context); } @@ -4403,7 +4315,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new SchemaNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1286; + this.state = 1284; this.any_name(); } } @@ -4425,48 +4337,48 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Schema_stmtContext(this.context, this.state); this.enterRule(localContext, 34, PostgreSqlParser.RULE_schema_stmt); try { - this.state = 1294; + this.state = 1292; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1288; + this.state = 1286; this.createstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1289; + this.state = 1287; this.indexstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1290; + this.state = 1288; this.createseqstmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1291; + this.state = 1289; this.createtrigstmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1292; + this.state = 1290; this.grantstmt(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1293; + this.state = 1291; this.viewstmt(); } break; @@ -4493,14 +4405,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1296; + this.state = 1294; this.match(PostgreSqlParser.KW_SET); - this.state = 1298; + this.state = 1296; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context) ) { case 1: { - this.state = 1297; + this.state = 1295; _la = this.tokenStream.LA(1); if(!(_la === 254 || _la === 332)) { this.errorHandler.recoverInline(this); @@ -4512,7 +4424,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 1300; + this.state = 1298; this.set_rest(); } } @@ -4534,37 +4446,37 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Set_restContext(this.context, this.state); this.enterRule(localContext, 38, PostgreSqlParser.RULE_set_rest); try { - this.state = 1310; + this.state = 1308; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1302; + this.state = 1300; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 1303; + this.state = 1301; this.transaction_mode_list(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1304; + this.state = 1302; this.match(PostgreSqlParser.KW_SESSION); - this.state = 1305; + this.state = 1303; this.match(PostgreSqlParser.KW_CHARACTERISTICS); - this.state = 1306; + this.state = 1304; this.match(PostgreSqlParser.KW_AS); - this.state = 1307; + this.state = 1305; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 1308; + this.state = 1306; this.transaction_mode_list(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1309; + this.state = 1307; this.set_rest_more(); } break; @@ -4591,22 +4503,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1314; + this.state = 1312; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: { - this.state = 1312; + this.state = 1310; this.match(PostgreSqlParser.KW_ALL); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -4988,6 +4894,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -5000,19 +4907,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1313; + this.state = 1311; this.var_name(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 1317; + this.state = 1315; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10 || _la === 94) { { - this.state = 1316; + this.state = 1314; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 94)) { this.errorHandler.recoverInline(this); @@ -5024,18 +4931,18 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 1321; + this.state = 1319; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 37, this.context) ) { case 1: { - this.state = 1319; + this.state = 1317; this.match(PostgreSqlParser.KW_DEFAULT); } break; case 2: { - this.state = 1320; + this.state = 1318; this.var_list(); } break; @@ -5060,55 +4967,55 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Set_rest_moreContext(this.context, this.state); this.enterRule(localContext, 42, PostgreSqlParser.RULE_set_rest_more); try { - this.state = 1351; + this.state = 1349; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 39, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1323; + this.state = 1321; this.match(PostgreSqlParser.KW_TIME); - this.state = 1324; + this.state = 1322; this.match(PostgreSqlParser.KW_ZONE); - this.state = 1325; + this.state = 1323; this.zone_value(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1326; + this.state = 1324; this.match(PostgreSqlParser.KW_CATALOG); - this.state = 1327; + this.state = 1325; this.sconst(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1328; + this.state = 1326; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 1329; + this.state = 1327; this.schema_name(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1330; + this.state = 1328; this.match(PostgreSqlParser.KW_NAMES); - this.state = 1333; + this.state = 1331; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 38, this.context) ) { case 1: { - this.state = 1331; + this.state = 1329; this.sconst(); } break; case 2: { - this.state = 1332; + this.state = 1330; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -5118,60 +5025,60 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1335; + this.state = 1333; this.match(PostgreSqlParser.KW_ROLE); - this.state = 1336; + this.state = 1334; this.nonreservedword_or_sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1337; + this.state = 1335; this.match(PostgreSqlParser.KW_SESSION); - this.state = 1338; + this.state = 1336; this.match(PostgreSqlParser.KW_AUTHORIZATION); - this.state = 1339; + this.state = 1337; this.nonreservedword_or_sconst(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1340; + this.state = 1338; this.match(PostgreSqlParser.KW_XML); - this.state = 1341; + this.state = 1339; this.match(PostgreSqlParser.KW_OPTION); - this.state = 1342; + this.state = 1340; this.document_or_content(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1343; + this.state = 1341; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 1344; + this.state = 1342; this.match(PostgreSqlParser.KW_SNAPSHOT); - this.state = 1345; + this.state = 1343; this.sconst(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1346; + this.state = 1344; this.var_name(); - this.state = 1347; + this.state = 1345; this.match(PostgreSqlParser.KW_FROM); - this.state = 1348; + this.state = 1346; this.match(PostgreSqlParser.KW_CURRENT); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1350; + this.state = 1348; this.generic_set(); } break; @@ -5198,21 +5105,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1353; + this.state = 1351; this.colid(); - this.state = 1358; + this.state = 1356; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 11) { { { - this.state = 1354; + this.state = 1352; this.match(PostgreSqlParser.DOT); - this.state = 1355; + this.state = 1353; this.colid(); } } - this.state = 1360; + this.state = 1358; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -5239,21 +5146,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1361; + this.state = 1359; this.var_value(); - this.state = 1366; + this.state = 1364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1362; + this.state = 1360; this.match(PostgreSqlParser.COMMA); - this.state = 1363; + this.state = 1361; this.var_value(); } } - this.state = 1368; + this.state = 1366; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -5277,17 +5184,11 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Var_valueContext(this.context, this.state); this.enterRule(localContext, 48, PostgreSqlParser.RULE_var_value); try { - this.state = 1371; + this.state = 1369; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_ON: case PostgreSqlParser.KW_TRUE: case PostgreSqlParser.KW_AUTHORIZATION: @@ -5692,6 +5593,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -5705,7 +5607,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 1); { - this.state = 1369; + this.state = 1367; this.opt_boolean_or_string(); } break; @@ -5715,7 +5617,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Numeric: this.enterOuterAlt(localContext, 2); { - this.state = 1370; + this.state = 1368; this.numericonly(); } break; @@ -5742,15 +5644,15 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 50, PostgreSqlParser.RULE_iso_level); let _la: number; try { - this.state = 1378; + this.state = 1376; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_READ: this.enterOuterAlt(localContext, 1); { - this.state = 1373; + this.state = 1371; this.match(PostgreSqlParser.KW_READ); - this.state = 1374; + this.state = 1372; _la = this.tokenStream.LA(1); if(!(_la === 162 || _la === 363)) { this.errorHandler.recoverInline(this); @@ -5764,16 +5666,16 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_REPEATABLE: this.enterOuterAlt(localContext, 2); { - this.state = 1375; + this.state = 1373; this.match(PostgreSqlParser.KW_REPEATABLE); - this.state = 1376; + this.state = 1374; this.match(PostgreSqlParser.KW_READ); } break; case PostgreSqlParser.KW_SERIALIZABLE: this.enterOuterAlt(localContext, 3); { - this.state = 1377; + this.state = 1375; this.match(PostgreSqlParser.KW_SERIALIZABLE); } break; @@ -5799,48 +5701,48 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Opt_boolean_or_string_columnContext(this.context, this.state); this.enterRule(localContext, 52, PostgreSqlParser.RULE_opt_boolean_or_string_column); try { - this.state = 1386; + this.state = 1384; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1380; + this.state = 1378; this.match(PostgreSqlParser.KW_TRUE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1381; + this.state = 1379; this.match(PostgreSqlParser.KW_FALSE); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1382; + this.state = 1380; this.match(PostgreSqlParser.KW_ON); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1383; + this.state = 1381; this.column_name(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1384; + this.state = 1382; this.type_func_name_keyword(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1385; + this.state = 1383; this.sconst(); } break; @@ -5864,37 +5766,31 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Opt_boolean_or_stringContext(this.context, this.state); this.enterRule(localContext, 54, PostgreSqlParser.RULE_opt_boolean_or_string); try { - this.state = 1392; + this.state = 1390; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TRUE: this.enterOuterAlt(localContext, 1); { - this.state = 1388; + this.state = 1386; this.match(PostgreSqlParser.KW_TRUE); } break; case PostgreSqlParser.KW_FALSE: this.enterOuterAlt(localContext, 2); { - this.state = 1389; + this.state = 1387; this.match(PostgreSqlParser.KW_FALSE); } break; case PostgreSqlParser.KW_ON: this.enterOuterAlt(localContext, 3); { - this.state = 1390; + this.state = 1388; this.match(PostgreSqlParser.KW_ON); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: case PostgreSqlParser.KW_COLLATION: @@ -6297,6 +6193,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -6310,7 +6207,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 4); { - this.state = 1391; + this.state = 1389; this.nonreservedword_or_sconst(); } break; @@ -6336,43 +6233,43 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Zone_valueContext(this.context, this.state); this.enterRule(localContext, 56, PostgreSqlParser.RULE_zone_value); try { - this.state = 1408; + this.state = 1406; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1394; + this.state = 1392; this.sconst(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1395; + this.state = 1393; this.match(PostgreSqlParser.KW_DEFAULT); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1396; + this.state = 1394; this.identifier(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1397; + this.state = 1395; this.match(PostgreSqlParser.KW_INTERVAL); - this.state = 1398; + this.state = 1396; this.sconst(); - this.state = 1400; + this.state = 1398; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 46, this.context) ) { case 1: { - this.state = 1399; + this.state = 1397; this.opt_interval(); } break; @@ -6382,25 +6279,25 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1402; + this.state = 1400; this.match(PostgreSqlParser.KW_INTERVAL); - this.state = 1403; + this.state = 1401; this.opt_float(); - this.state = 1404; + this.state = 1402; this.sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1406; + this.state = 1404; this.numericonly(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1407; + this.state = 1405; this.match(PostgreSqlParser.KW_LOCAL); } break; @@ -6424,20 +6321,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Nonreservedword_or_sconstContext(this.context, this.state); this.enterRule(localContext, 58, PostgreSqlParser.RULE_nonreservedword_or_sconst); try { - this.state = 1412; + this.state = 1410; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1410; + this.state = 1408; this.nonreservedword(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1411; + this.state = 1409; this.sconst(); } break; @@ -6463,9 +6360,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1414; + this.state = 1412; this.match(PostgreSqlParser.KW_RESET); - this.state = 1415; + this.state = 1413; this.reset_rest(); } } @@ -6487,49 +6384,49 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Reset_restContext(this.context, this.state); this.enterRule(localContext, 62, PostgreSqlParser.RULE_reset_rest); try { - this.state = 1426; + this.state = 1424; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1417; + this.state = 1415; this.match(PostgreSqlParser.KW_TIME); - this.state = 1418; + this.state = 1416; this.match(PostgreSqlParser.KW_ZONE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1419; + this.state = 1417; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 1420; + this.state = 1418; this.match(PostgreSqlParser.KW_ISOLATION); - this.state = 1421; + this.state = 1419; this.match(PostgreSqlParser.KW_LEVEL); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1422; + this.state = 1420; this.match(PostgreSqlParser.KW_SESSION); - this.state = 1423; + this.state = 1421; this.match(PostgreSqlParser.KW_AUTHORIZATION); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1424; + this.state = 1422; this.match(PostgreSqlParser.KW_ALL); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1425; + this.state = 1423; this.var_name(); } break; @@ -6553,22 +6450,22 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new SetresetclauseContext(this.context, this.state); this.enterRule(localContext, 64, PostgreSqlParser.RULE_setresetclause); try { - this.state = 1431; + this.state = 1429; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 1); { - this.state = 1428; + this.state = 1426; this.match(PostgreSqlParser.KW_SET); - this.state = 1429; + this.state = 1427; this.set_rest(); } break; case PostgreSqlParser.KW_RESET: this.enterOuterAlt(localContext, 2); { - this.state = 1430; + this.state = 1428; this.variableresetstmt(); } break; @@ -6594,22 +6491,22 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new FunctionsetresetclauseContext(this.context, this.state); this.enterRule(localContext, 66, PostgreSqlParser.RULE_functionsetresetclause); try { - this.state = 1436; + this.state = 1434; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 1); { - this.state = 1433; + this.state = 1431; this.match(PostgreSqlParser.KW_SET); - this.state = 1434; + this.state = 1432; this.set_rest_more(); } break; case PostgreSqlParser.KW_RESET: this.enterOuterAlt(localContext, 2); { - this.state = 1435; + this.state = 1433; this.variableresetstmt(); } break; @@ -6637,46 +6534,46 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1438; + this.state = 1436; this.match(PostgreSqlParser.KW_SHOW); - this.state = 1448; + this.state = 1446; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 52, this.context) ) { case 1: { - this.state = 1439; + this.state = 1437; this.var_name(); } break; case 2: { - this.state = 1440; + this.state = 1438; this.match(PostgreSqlParser.KW_TIME); - this.state = 1441; + this.state = 1439; this.match(PostgreSqlParser.KW_ZONE); } break; case 3: { - this.state = 1442; + this.state = 1440; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 1443; + this.state = 1441; this.match(PostgreSqlParser.KW_ISOLATION); - this.state = 1444; + this.state = 1442; this.match(PostgreSqlParser.KW_LEVEL); } break; case 4: { - this.state = 1445; + this.state = 1443; this.match(PostgreSqlParser.KW_SESSION); - this.state = 1446; + this.state = 1444; this.match(PostgreSqlParser.KW_AUTHORIZATION); } break; case 5: { - this.state = 1447; + this.state = 1445; this.match(PostgreSqlParser.KW_ALL); } break; @@ -6704,26 +6601,20 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1450; + this.state = 1448; this.match(PostgreSqlParser.KW_SET); - this.state = 1451; + this.state = 1449; this.match(PostgreSqlParser.KW_CONSTRAINTS); - this.state = 1454; + this.state = 1452; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: { - this.state = 1452; + this.state = 1450; this.match(PostgreSqlParser.KW_ALL); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -7105,6 +6996,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -7117,14 +7009,14 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1453; + this.state = 1451; this.qualified_name_list(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 1456; + this.state = 1454; _la = this.tokenStream.LA(1); if(!(_la === 180 || _la === 221)) { this.errorHandler.recoverInline(this); @@ -7155,7 +7047,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1458; + this.state = 1456; this.match(PostgreSqlParser.KW_CHECKPOINT); } } @@ -7180,9 +7072,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1460; + this.state = 1458; this.match(PostgreSqlParser.KW_DISCARD); - this.state = 1461; + this.state = 1459; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 288 || ((((_la - 329)) & ~0x1F) === 0 && ((1 << (_la - 329)) & 41943041) !== 0))) { this.errorHandler.recoverInline(this); @@ -7212,29 +7104,29 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 76, PostgreSqlParser.RULE_altertablestmt); let _la: number; try { - this.state = 1584; + this.state = 1582; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1463; + this.state = 1461; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1464; + this.state = 1462; this.match(PostgreSqlParser.KW_TABLE); - this.state = 1466; + this.state = 1464; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 54, this.context) ) { case 1: { - this.state = 1465; + this.state = 1463; this.opt_if_exists(); } break; } - this.state = 1468; + this.state = 1466; this.relation_expr(); - this.state = 1471; + this.state = 1469; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NOT: @@ -7255,14 +7147,14 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_SET: case PostgreSqlParser.KW_VALIDATE: { - this.state = 1469; + this.state = 1467; this.alter_table_cmds(); } break; case PostgreSqlParser.KW_ATTACH: case PostgreSqlParser.KW_DETACH: { - this.state = 1470; + this.state = 1468; this.partition_cmd(); } break; @@ -7274,42 +7166,42 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1473; + this.state = 1471; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1474; + this.state = 1472; this.match(PostgreSqlParser.KW_TABLE); - this.state = 1475; + this.state = 1473; this.match(PostgreSqlParser.KW_ALL); - this.state = 1476; + this.state = 1474; this.match(PostgreSqlParser.KW_IN); - this.state = 1477; + this.state = 1475; this.opttablespace(); - this.state = 1481; + this.state = 1479; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 281) { { - this.state = 1478; + this.state = 1476; this.match(PostgreSqlParser.KW_OWNED); - this.state = 1479; + this.state = 1477; this.match(PostgreSqlParser.KW_BY); - this.state = 1480; + this.state = 1478; this.role_list(); } } - this.state = 1483; + this.state = 1481; this.match(PostgreSqlParser.KW_SET); - this.state = 1484; + this.state = 1482; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 1485; + this.state = 1483; this.tablespace_name_create(); - this.state = 1487; + this.state = 1485; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 57, this.context) ) { case 1: { - this.state = 1486; + this.state = 1484; this.match(PostgreSqlParser.KW_NOWAIT); } break; @@ -7319,40 +7211,40 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1489; + this.state = 1487; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1490; + this.state = 1488; this.match(PostgreSqlParser.KW_TABLE); - this.state = 1492; + this.state = 1490; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context) ) { case 1: { - this.state = 1491; + this.state = 1489; this.opt_if_exists(); } break; } - this.state = 1494; + this.state = 1492; this.table_name(); - this.state = 1495; + this.state = 1493; this.index_partition_cmd(); - this.state = 1500; + this.state = 1498; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOR: { - this.state = 1496; + this.state = 1494; this.match(PostgreSqlParser.KW_FOR); - this.state = 1497; + this.state = 1495; this.match(PostgreSqlParser.KW_VALUES); - this.state = 1498; + this.state = 1496; this.partition_bound_spec(); } break; case PostgreSqlParser.KW_DEFAULT: { - this.state = 1499; + this.state = 1497; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -7364,34 +7256,34 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1502; + this.state = 1500; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1503; + this.state = 1501; this.match(PostgreSqlParser.KW_TABLE); - this.state = 1505; + this.state = 1503; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 60, this.context) ) { case 1: { - this.state = 1504; + this.state = 1502; this.opt_if_exists(); } break; } - this.state = 1507; + this.state = 1505; this.table_name(); - this.state = 1508; + this.state = 1506; this.match(PostgreSqlParser.KW_DETACH); - this.state = 1509; + this.state = 1507; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 1510; + this.state = 1508; this.qualified_name(); - this.state = 1512; + this.state = 1510; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109 || _la === 532) { { - this.state = 1511; + this.state = 1509; _la = this.tokenStream.LA(1); if(!(_la === 109 || _la === 532)) { this.errorHandler.recoverInline(this); @@ -7408,23 +7300,23 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1514; + this.state = 1512; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1515; + this.state = 1513; this.match(PostgreSqlParser.KW_INDEX); - this.state = 1517; + this.state = 1515; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context) ) { case 1: { - this.state = 1516; + this.state = 1514; this.opt_if_exists(); } break; } - this.state = 1519; + this.state = 1517; this.qualified_name(); - this.state = 1522; + this.state = 1520; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NOT: @@ -7445,13 +7337,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_SET: case PostgreSqlParser.KW_VALIDATE: { - this.state = 1520; + this.state = 1518; this.alter_table_cmds(); } break; case PostgreSqlParser.KW_ATTACH: { - this.state = 1521; + this.state = 1519; this.index_partition_cmd(); } break; @@ -7463,40 +7355,40 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1524; + this.state = 1522; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1525; + this.state = 1523; this.match(PostgreSqlParser.KW_INDEX); - this.state = 1526; + this.state = 1524; this.match(PostgreSqlParser.KW_ALL); - this.state = 1527; + this.state = 1525; this.match(PostgreSqlParser.KW_IN); - this.state = 1528; + this.state = 1526; this.opttablespace(); - this.state = 1532; + this.state = 1530; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 281) { { - this.state = 1529; + this.state = 1527; this.match(PostgreSqlParser.KW_OWNED); - this.state = 1530; + this.state = 1528; this.match(PostgreSqlParser.KW_BY); - this.state = 1531; + this.state = 1529; this.role_list(); } } - this.state = 1534; + this.state = 1532; this.match(PostgreSqlParser.KW_SET); - this.state = 1535; + this.state = 1533; this.opttablespace(); - this.state = 1537; + this.state = 1535; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context) ) { case 1: { - this.state = 1536; + this.state = 1534; this.match(PostgreSqlParser.KW_NOWAIT); } break; @@ -7506,100 +7398,100 @@ export class PostgreSqlParser extends SQLParserBase { case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1539; + this.state = 1537; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1540; + this.state = 1538; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 1542; + this.state = 1540; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) { case 1: { - this.state = 1541; + this.state = 1539; this.opt_if_exists(); } break; } - this.state = 1544; + this.state = 1542; this.qualified_name(); - this.state = 1545; + this.state = 1543; this.alter_table_cmds(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1547; + this.state = 1545; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1549; + this.state = 1547; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 1548; + this.state = 1546; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 1551; + this.state = 1549; this.match(PostgreSqlParser.KW_VIEW); - this.state = 1553; + this.state = 1551; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 68, this.context) ) { case 1: { - this.state = 1552; + this.state = 1550; this.opt_if_exists(); } break; } - this.state = 1555; + this.state = 1553; this.view_name(); - this.state = 1556; + this.state = 1554; this.alter_table_cmds(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1558; + this.state = 1556; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1559; + this.state = 1557; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 1560; + this.state = 1558; this.match(PostgreSqlParser.KW_VIEW); - this.state = 1561; + this.state = 1559; this.match(PostgreSqlParser.KW_ALL); - this.state = 1562; + this.state = 1560; this.match(PostgreSqlParser.KW_IN); - this.state = 1563; + this.state = 1561; this.opttablespace(); - this.state = 1567; + this.state = 1565; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 281) { { - this.state = 1564; + this.state = 1562; this.match(PostgreSqlParser.KW_OWNED); - this.state = 1565; + this.state = 1563; this.match(PostgreSqlParser.KW_BY); - this.state = 1566; + this.state = 1564; this.role_list(); } } - this.state = 1569; + this.state = 1567; this.match(PostgreSqlParser.KW_SET); - this.state = 1570; + this.state = 1568; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 1571; + this.state = 1569; this.tablespace_name_create(); - this.state = 1573; + this.state = 1571; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 70, this.context) ) { case 1: { - this.state = 1572; + this.state = 1570; this.match(PostgreSqlParser.KW_NOWAIT); } break; @@ -7609,25 +7501,25 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1575; + this.state = 1573; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1576; + this.state = 1574; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 1577; + this.state = 1575; this.match(PostgreSqlParser.KW_TABLE); - this.state = 1579; + this.state = 1577; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 71, this.context) ) { case 1: { - this.state = 1578; + this.state = 1576; this.opt_if_exists(); } break; } - this.state = 1581; + this.state = 1579; this.relation_expr(); - this.state = 1582; + this.state = 1580; this.alter_table_cmds(); } break; @@ -7654,21 +7546,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1586; + this.state = 1584; this.alter_table_cmd(); - this.state = 1591; + this.state = 1589; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1587; + this.state = 1585; this.match(PostgreSqlParser.COMMA); - this.state = 1588; + this.state = 1586; this.alter_table_cmd(); } } - this.state = 1593; + this.state = 1591; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -7692,37 +7584,37 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Partition_bound_specContext(this.context, this.state); this.enterRule(localContext, 80, PostgreSqlParser.RULE_partition_bound_spec); try { - this.state = 1603; + this.state = 1601; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IN: this.enterOuterAlt(localContext, 1); { - this.state = 1594; + this.state = 1592; this.match(PostgreSqlParser.KW_IN); - this.state = 1595; + this.state = 1593; this.execute_param_clause(); } break; case PostgreSqlParser.KW_FROM: this.enterOuterAlt(localContext, 2); { - this.state = 1596; + this.state = 1594; this.match(PostgreSqlParser.KW_FROM); - this.state = 1597; + this.state = 1595; this.partition_bound_cluase(); - this.state = 1598; + this.state = 1596; this.match(PostgreSqlParser.KW_TO); - this.state = 1599; + this.state = 1597; this.partition_bound_cluase(); } break; case PostgreSqlParser.KW_WITH: this.enterOuterAlt(localContext, 3); { - this.state = 1601; + this.state = 1599; this.match(PostgreSqlParser.KW_WITH); - this.state = 1602; + this.state = 1600; this.partition_with_cluase(); } break; @@ -7751,27 +7643,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1605; + this.state = 1603; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 1606; + this.state = 1604; this.partition_bound_choose(); - this.state = 1611; + this.state = 1609; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1607; + this.state = 1605; this.match(PostgreSqlParser.COMMA); - this.state = 1608; + this.state = 1606; this.partition_bound_choose(); } } - this.state = 1613; + this.state = 1611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1614; + this.state = 1612; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -7793,27 +7685,27 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Partition_bound_chooseContext(this.context, this.state); this.enterRule(localContext, 84, PostgreSqlParser.RULE_partition_bound_choose); try { - this.state = 1619; + this.state = 1617; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: this.enterOuterAlt(localContext, 1); { - this.state = 1616; + this.state = 1614; this.execute_param_clause(); } break; case PostgreSqlParser.KW_MINVALUE: this.enterOuterAlt(localContext, 2); { - this.state = 1617; + this.state = 1615; this.match(PostgreSqlParser.KW_MINVALUE); } break; case PostgreSqlParser.KW_MAXVALUE: this.enterOuterAlt(localContext, 3); { - this.state = 1618; + this.state = 1616; this.match(PostgreSqlParser.KW_MAXVALUE); } break; @@ -7841,19 +7733,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1621; + this.state = 1619; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 1622; + this.state = 1620; this.match(PostgreSqlParser.KW_MODULUS); - this.state = 1623; + this.state = 1621; this.numericonly(); - this.state = 1624; + this.state = 1622; this.match(PostgreSqlParser.COMMA); - this.state = 1625; + this.state = 1623; this.match(PostgreSqlParser.KW_REMAINDER); - this.state = 1626; + this.state = 1624; this.numericonly(); - this.state = 1627; + this.state = 1625; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -7875,26 +7767,26 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Partition_cmdContext(this.context, this.state); this.enterRule(localContext, 88, PostgreSqlParser.RULE_partition_cmd); try { - this.state = 1635; + this.state = 1633; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ATTACH: this.enterOuterAlt(localContext, 1); { - this.state = 1629; + this.state = 1627; this.index_partition_cmd(); - this.state = 1630; + this.state = 1628; this.partitionboundspec(); } break; case PostgreSqlParser.KW_DETACH: this.enterOuterAlt(localContext, 2); { - this.state = 1632; + this.state = 1630; this.match(PostgreSqlParser.KW_DETACH); - this.state = 1633; + this.state = 1631; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 1634; + this.state = 1632; this.qualified_name(); } break; @@ -7922,11 +7814,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1637; + this.state = 1635; this.match(PostgreSqlParser.KW_ATTACH); - this.state = 1638; + this.state = 1636; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 1639; + this.state = 1637; this.qualified_name(); } } @@ -7950,52 +7842,52 @@ export class PostgreSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 1874; + this.state = 1872; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 117, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1641; + this.state = 1639; this.match(PostgreSqlParser.KW_ADD); - this.state = 1644; + this.state = 1642; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 1642; + this.state = 1640; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 1643; + this.state = 1641; this.colid(); } } - this.state = 1646; + this.state = 1644; this.constraintelem(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1647; + this.state = 1645; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1648; + this.state = 1646; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 1649; + this.state = 1647; this.colid(); - this.state = 1653; + this.state = 1651; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 79, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1650; + this.state = 1648; this.constraintattributeElem(); } } } - this.state = 1655; + this.state = 1653; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 79, this.context); } @@ -8004,39 +7896,39 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1656; + this.state = 1654; this.match(PostgreSqlParser.KW_VALIDATE); - this.state = 1657; + this.state = 1655; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 1658; + this.state = 1656; this.colid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1659; + this.state = 1657; this.match(PostgreSqlParser.KW_DROP); - this.state = 1660; + this.state = 1658; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 1662; + this.state = 1660; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 80, this.context) ) { case 1: { - this.state = 1661; + this.state = 1659; this.opt_if_exists(); } break; } - this.state = 1664; + this.state = 1662; this.colid(); - this.state = 1666; + this.state = 1664; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 81, this.context) ) { case 1: { - this.state = 1665; + this.state = 1663; this.opt_drop_behavior(); } break; @@ -8046,11 +7938,11 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1668; + this.state = 1666; this.match(PostgreSqlParser.KW_SET); - this.state = 1669; + this.state = 1667; this.match(PostgreSqlParser.KW_WITHOUT); - this.state = 1670; + this.state = 1668; _la = this.tokenStream.LA(1); if(!(_la === 158 || _la === 277)) { this.errorHandler.recoverInline(this); @@ -8064,20 +7956,20 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 1671; + this.state = 1669; this.match(PostgreSqlParser.KW_CLUSTER); - this.state = 1672; + this.state = 1670; this.match(PostgreSqlParser.KW_ON); - this.state = 1673; + this.state = 1671; this.colid(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 1674; + this.state = 1672; this.match(PostgreSqlParser.KW_SET); - this.state = 1675; + this.state = 1673; _la = this.tokenStream.LA(1); if(!(_la === 367 || _la === 439)) { this.errorHandler.recoverInline(this); @@ -8091,14 +7983,14 @@ export class PostgreSqlParser extends SQLParserBase { case 8: this.enterOuterAlt(localContext, 8); { - this.state = 1676; + this.state = 1674; this.match(PostgreSqlParser.KW_ENABLE); - this.state = 1678; + this.state = 1676; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 139 || _la === 312) { { - this.state = 1677; + this.state = 1675; _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 312)) { this.errorHandler.recoverInline(this); @@ -8110,39 +8002,33 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 1680; + this.state = 1678; this.match(PostgreSqlParser.KW_TRIGGER); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 1681; + this.state = 1679; this.match(PostgreSqlParser.KW_DISABLE); - this.state = 1682; + this.state = 1680; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 1686; + this.state = 1684; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: { - this.state = 1683; + this.state = 1681; this.match(PostgreSqlParser.KW_ALL); } break; case PostgreSqlParser.KW_USER: { - this.state = 1684; + this.state = 1682; this.match(PostgreSqlParser.KW_USER); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -8524,6 +8410,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -8536,7 +8423,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1685; + this.state = 1683; this.colid(); } break; @@ -8548,9 +8435,9 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 1688; + this.state = 1686; this.match(PostgreSqlParser.KW_ENABLE); - this.state = 1689; + this.state = 1687; _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 312)) { this.errorHandler.recoverInline(this); @@ -8559,113 +8446,113 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1690; + this.state = 1688; this.match(PostgreSqlParser.KW_RULE); - this.state = 1691; + this.state = 1689; this.colid(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 1692; + this.state = 1690; this.match(PostgreSqlParser.KW_DISABLE); - this.state = 1693; + this.state = 1691; this.match(PostgreSqlParser.KW_RULE); - this.state = 1694; + this.state = 1692; this.colid(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 1696; + this.state = 1694; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 1695; + this.state = 1693; this.match(PostgreSqlParser.KW_NO); } } - this.state = 1698; + this.state = 1696; this.match(PostgreSqlParser.KW_INHERIT); - this.state = 1699; + this.state = 1697; this.qualified_name(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 1700; + this.state = 1698; this.match(PostgreSqlParser.KW_OF); - this.state = 1701; + this.state = 1699; this.any_name(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 1702; + this.state = 1700; this.match(PostgreSqlParser.KW_NOT); - this.state = 1703; + this.state = 1701; this.match(PostgreSqlParser.KW_OF); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 1704; + this.state = 1702; this.match(PostgreSqlParser.KW_OWNER); - this.state = 1705; + this.state = 1703; this.match(PostgreSqlParser.KW_TO); - this.state = 1706; + this.state = 1704; this.rolespec(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 1707; + this.state = 1705; this.match(PostgreSqlParser.KW_SET); - this.state = 1708; + this.state = 1706; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 1709; + this.state = 1707; this.tablespace_name_create(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 1710; + this.state = 1708; this.match(PostgreSqlParser.KW_REPLICA); - this.state = 1711; + this.state = 1709; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 1716; + this.state = 1714; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NOTHING: { - this.state = 1712; + this.state = 1710; this.match(PostgreSqlParser.KW_NOTHING); } break; case PostgreSqlParser.KW_FULL: { - this.state = 1713; + this.state = 1711; this.match(PostgreSqlParser.KW_FULL); } break; case PostgreSqlParser.KW_DEFAULT: { - this.state = 1714; + this.state = 1712; this.match(PostgreSqlParser.KW_DEFAULT); } break; case PostgreSqlParser.KW_USING: { - this.state = 1715; + this.state = 1713; this.existingindex(); } break; @@ -8677,18 +8564,18 @@ export class PostgreSqlParser extends SQLParserBase { case 18: this.enterOuterAlt(localContext, 18); { - this.state = 1724; + this.state = 1722; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ENABLE: { - this.state = 1718; + this.state = 1716; this.match(PostgreSqlParser.KW_ENABLE); } break; case PostgreSqlParser.KW_DISABLE: { - this.state = 1719; + this.state = 1717; this.match(PostgreSqlParser.KW_DISABLE); } break; @@ -8696,17 +8583,17 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_NO: { { - this.state = 1721; + this.state = 1719; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 1720; + this.state = 1718; this.match(PostgreSqlParser.KW_NO); } } - this.state = 1723; + this.state = 1721; this.match(PostgreSqlParser.KW_FORCE); } } @@ -8714,47 +8601,47 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 1726; + this.state = 1724; this.match(PostgreSqlParser.KW_ROW); - this.state = 1727; + this.state = 1725; this.match(PostgreSqlParser.KW_LEVEL); - this.state = 1728; + this.state = 1726; this.match(PostgreSqlParser.KW_SECURITY); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 1729; + this.state = 1727; this.match(PostgreSqlParser.KW_DROP); - this.state = 1731; + this.state = 1729; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 88, this.context) ) { case 1: { - this.state = 1730; + this.state = 1728; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1734; + this.state = 1732; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 89, this.context) ) { case 1: { - this.state = 1733; + this.state = 1731; this.opt_if_exists(); } break; } - this.state = 1736; + this.state = 1734; this.column_name(); - this.state = 1738; + this.state = 1736; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 90, this.context) ) { case 1: { - this.state = 1737; + this.state = 1735; this.opt_drop_behavior(); } break; @@ -8764,62 +8651,62 @@ export class PostgreSqlParser extends SQLParserBase { case 20: this.enterOuterAlt(localContext, 20); { - this.state = 1740; + this.state = 1738; this.match(PostgreSqlParser.KW_ADD); - this.state = 1742; + this.state = 1740; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 44) { { - this.state = 1741; + this.state = 1739; this.match(PostgreSqlParser.KW_COLUMN); } } - this.state = 1745; + this.state = 1743; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 92, this.context) ) { case 1: { - this.state = 1744; + this.state = 1742; this.opt_if_not_exists(); } break; } - this.state = 1747; + this.state = 1745; this.column_def(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 1748; + this.state = 1746; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1750; + this.state = 1748; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 93, this.context) ) { case 1: { - this.state = 1749; + this.state = 1747; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1752; + this.state = 1750; this.column_name(); - this.state = 1755; + this.state = 1753; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DROP: case PostgreSqlParser.KW_SET: { - this.state = 1753; + this.state = 1751; this.alter_column_default(); } break; case PostgreSqlParser.KW_OPTIONS: { - this.state = 1754; + this.state = 1752; this.alter_generic_options(); } break; @@ -8831,21 +8718,21 @@ export class PostgreSqlParser extends SQLParserBase { case 22: this.enterOuterAlt(localContext, 22); { - this.state = 1757; + this.state = 1755; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1759; + this.state = 1757; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 95, this.context) ) { case 1: { - this.state = 1758; + this.state = 1756; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1761; + this.state = 1759; this.column_name(); - this.state = 1762; + this.state = 1760; _la = this.tokenStream.LA(1); if(!(_la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -8854,39 +8741,39 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1763; + this.state = 1761; this.match(PostgreSqlParser.KW_NOT); - this.state = 1764; + this.state = 1762; this.match(PostgreSqlParser.KW_NULL); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 1766; + this.state = 1764; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1768; + this.state = 1766; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 96, this.context) ) { case 1: { - this.state = 1767; + this.state = 1765; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1770; + this.state = 1768; this.column_name(); - this.state = 1771; + this.state = 1769; this.match(PostgreSqlParser.KW_DROP); - this.state = 1772; + this.state = 1770; this.match(PostgreSqlParser.KW_EXPRESSION); - this.state = 1774; + this.state = 1772; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 97, this.context) ) { case 1: { - this.state = 1773; + this.state = 1771; this.opt_if_exists(); } break; @@ -8896,54 +8783,54 @@ export class PostgreSqlParser extends SQLParserBase { case 24: this.enterOuterAlt(localContext, 24); { - this.state = 1776; + this.state = 1774; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1778; + this.state = 1776; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 98, this.context) ) { case 1: { - this.state = 1777; + this.state = 1775; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1780; + this.state = 1778; this.column_name(); - this.state = 1781; + this.state = 1779; this.match(PostgreSqlParser.KW_SET); - this.state = 1782; + this.state = 1780; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 1783; + this.state = 1781; this.signediconst(); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 1790; + this.state = 1788; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 138) { { - this.state = 1785; + this.state = 1783; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1787; + this.state = 1785; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 99, this.context) ) { case 1: { - this.state = 1786; + this.state = 1784; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1789; + this.state = 1787; this.column_name(); } } - this.state = 1792; + this.state = 1790; _la = this.tokenStream.LA(1); if(!(_la === 313 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -8952,84 +8839,84 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1793; + this.state = 1791; this.reloptions(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 1794; + this.state = 1792; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1796; + this.state = 1794; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 101, this.context) ) { case 1: { - this.state = 1795; + this.state = 1793; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1798; + this.state = 1796; this.column_name(); - this.state = 1799; + this.state = 1797; this.match(PostgreSqlParser.KW_SET); - this.state = 1800; + this.state = 1798; this.match(PostgreSqlParser.KW_STORAGE); - this.state = 1801; + this.state = 1799; this.colid(); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 1803; + this.state = 1801; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1805; + this.state = 1803; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 102, this.context) ) { case 1: { - this.state = 1804; + this.state = 1802; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1807; + this.state = 1805; this.column_name(); - this.state = 1808; + this.state = 1806; this.match(PostgreSqlParser.KW_ADD); - this.state = 1809; + this.state = 1807; this.match(PostgreSqlParser.KW_GENERATED); - this.state = 1810; + this.state = 1808; this.generated_when(); - this.state = 1811; + this.state = 1809; this.match(PostgreSqlParser.KW_AS); - this.state = 1812; + this.state = 1810; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 1821; + this.state = 1819; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 104, this.context) ) { case 1: { - this.state = 1813; + this.state = 1811; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 1815; + this.state = 1813; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 1814; + this.state = 1812; this.seqoptelem(); } } - this.state = 1817; + this.state = 1815; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 36 || _la === 148 || _la === 225 || ((((_la - 260)) & ~0x1F) === 0 && ((1 << (_la - 260)) & 2097669) !== 0) || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & 67125249) !== 0)); - this.state = 1819; + this.state = 1817; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -9039,50 +8926,50 @@ export class PostgreSqlParser extends SQLParserBase { case 28: this.enterOuterAlt(localContext, 28); { - this.state = 1823; + this.state = 1821; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1825; + this.state = 1823; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 105, this.context) ) { case 1: { - this.state = 1824; + this.state = 1822; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1827; + this.state = 1825; this.column_name(); - this.state = 1841; + this.state = 1839; this.errorHandler.sync(this); alternative = 1; do { switch (alternative) { case 1: { - this.state = 1841; + this.state = 1839; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_RESTART: { - this.state = 1828; + this.state = 1826; this.match(PostgreSqlParser.KW_RESTART); - this.state = 1833; + this.state = 1831; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 107, this.context) ) { case 1: { - this.state = 1830; + this.state = 1828; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 1829; + this.state = 1827; this.match(PostgreSqlParser.KW_WITH); } } - this.state = 1832; + this.state = 1830; this.numericonly(); } break; @@ -9091,9 +8978,9 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_SET: { - this.state = 1835; + this.state = 1833; this.match(PostgreSqlParser.KW_SET); - this.state = 1839; + this.state = 1837; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AS: @@ -9107,15 +8994,15 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_SEQUENCE: case PostgreSqlParser.KW_START: { - this.state = 1836; + this.state = 1834; this.seqoptelem(); } break; case PostgreSqlParser.KW_GENERATED: { - this.state = 1837; + this.state = 1835; this.match(PostgreSqlParser.KW_GENERATED); - this.state = 1838; + this.state = 1836; this.generated_when(); } break; @@ -9132,7 +9019,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 1843; + this.state = 1841; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 110, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -9141,30 +9028,30 @@ export class PostgreSqlParser extends SQLParserBase { case 29: this.enterOuterAlt(localContext, 29); { - this.state = 1845; + this.state = 1843; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1847; + this.state = 1845; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 111, this.context) ) { case 1: { - this.state = 1846; + this.state = 1844; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1849; + this.state = 1847; this.column_name(); - this.state = 1850; + this.state = 1848; this.match(PostgreSqlParser.KW_DROP); - this.state = 1851; + this.state = 1849; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 1853; + this.state = 1851; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 112, this.context) ) { case 1: { - this.state = 1852; + this.state = 1850; this.opt_if_exists(); } break; @@ -9174,54 +9061,54 @@ export class PostgreSqlParser extends SQLParserBase { case 30: this.enterOuterAlt(localContext, 30); { - this.state = 1855; + this.state = 1853; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1857; + this.state = 1855; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 113, this.context) ) { case 1: { - this.state = 1856; + this.state = 1854; this.match(PostgreSqlParser.KW_COLUMN); } break; } - this.state = 1859; + this.state = 1857; this.column_name(); - this.state = 1862; + this.state = 1860; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 333) { { - this.state = 1860; + this.state = 1858; this.match(PostgreSqlParser.KW_SET); - this.state = 1861; + this.state = 1859; this.match(PostgreSqlParser.KW_DATA); } } - this.state = 1864; + this.state = 1862; this.match(PostgreSqlParser.KW_TYPE); - this.state = 1865; + this.state = 1863; this.typename(); - this.state = 1867; + this.state = 1865; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 115, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 43) { { - this.state = 1866; + this.state = 1864; this.opt_collate_clause(); } - break; } - this.state = 1871; + + this.state = 1869; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 1869; + this.state = 1867; this.match(PostgreSqlParser.KW_USING); - this.state = 1870; + this.state = 1868; this.expression(); } } @@ -9231,7 +9118,7 @@ export class PostgreSqlParser extends SQLParserBase { case 31: this.enterOuterAlt(localContext, 31); { - this.state = 1873; + this.state = 1871; this.alter_generic_options(); } break; @@ -9255,26 +9142,26 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Alter_column_defaultContext(this.context, this.state); this.enterRule(localContext, 94, PostgreSqlParser.RULE_alter_column_default); try { - this.state = 1881; + this.state = 1879; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 1); { - this.state = 1876; + this.state = 1874; this.match(PostgreSqlParser.KW_SET); - this.state = 1877; + this.state = 1875; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 1878; + this.state = 1876; this.expression(); } break; case PostgreSqlParser.KW_DROP: this.enterOuterAlt(localContext, 2); { - this.state = 1879; + this.state = 1877; this.match(PostgreSqlParser.KW_DROP); - this.state = 1880; + this.state = 1878; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -9303,7 +9190,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1883; + this.state = 1881; _la = this.tokenStream.LA(1); if(!(_la === 150 || _la === 315)) { this.errorHandler.recoverInline(this); @@ -9334,9 +9221,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1885; + this.state = 1883; this.match(PostgreSqlParser.KW_COLLATE); - this.state = 1886; + this.state = 1884; this.any_name(); } } @@ -9361,27 +9248,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1888; + this.state = 1886; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 1889; + this.state = 1887; this.reloption_elem(); - this.state = 1894; + this.state = 1892; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1890; + this.state = 1888; this.match(PostgreSqlParser.COMMA); - this.state = 1891; + this.state = 1889; this.reloption_elem(); } } - this.state = 1896; + this.state = 1894; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1897; + this.state = 1895; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -9405,9 +9292,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1899; + this.state = 1897; this.match(PostgreSqlParser.KW_WITH); - this.state = 1900; + this.state = 1898; this.reloptions(); } } @@ -9431,24 +9318,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1902; + this.state = 1900; this.collabel(); - this.state = 1907; + this.state = 1905; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.EQUAL: { - this.state = 1903; + this.state = 1901; this.match(PostgreSqlParser.EQUAL); - this.state = 1904; + this.state = 1902; this.def_arg(); } break; case PostgreSqlParser.DOT: { - this.state = 1905; + this.state = 1903; this.match(PostgreSqlParser.DOT); - this.state = 1906; + this.state = 1904; this.def_elem(); } break; @@ -9479,82 +9366,82 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 106, PostgreSqlParser.RULE_partitionboundspec); let _la: number; try { - this.state = 1938; + this.state = 1936; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 122, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1909; + this.state = 1907; this.match(PostgreSqlParser.KW_FOR); - this.state = 1910; + this.state = 1908; this.match(PostgreSqlParser.KW_VALUES); - this.state = 1911; + this.state = 1909; this.match(PostgreSqlParser.KW_WITH); - this.state = 1912; + this.state = 1910; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 1913; + this.state = 1911; this.nonreservedword(); - this.state = 1914; + this.state = 1912; this.match(PostgreSqlParser.Integral); - this.state = 1921; + this.state = 1919; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1915; + this.state = 1913; this.match(PostgreSqlParser.COMMA); { - this.state = 1916; + this.state = 1914; this.nonreservedword(); - this.state = 1917; + this.state = 1915; this.match(PostgreSqlParser.Integral); } } } - this.state = 1923; + this.state = 1921; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1924; + this.state = 1922; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1926; + this.state = 1924; this.match(PostgreSqlParser.KW_FOR); - this.state = 1927; + this.state = 1925; this.match(PostgreSqlParser.KW_VALUES); - this.state = 1928; + this.state = 1926; this.match(PostgreSqlParser.KW_IN); - this.state = 1929; + this.state = 1927; this.execute_param_clause(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1930; + this.state = 1928; this.match(PostgreSqlParser.KW_FOR); - this.state = 1931; + this.state = 1929; this.match(PostgreSqlParser.KW_VALUES); - this.state = 1932; + this.state = 1930; this.match(PostgreSqlParser.KW_FROM); - this.state = 1933; + this.state = 1931; this.execute_param_clause(); - this.state = 1934; + this.state = 1932; this.match(PostgreSqlParser.KW_TO); - this.state = 1935; + this.state = 1933; this.execute_param_clause(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1937; + this.state = 1935; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -9581,27 +9468,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1940; + this.state = 1938; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1941; + this.state = 1939; this.match(PostgreSqlParser.KW_TYPE); - this.state = 1942; + this.state = 1940; this.any_name(); - this.state = 1943; + this.state = 1941; this.alter_type_cmd(); - this.state = 1948; + this.state = 1946; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 1944; + this.state = 1942; this.match(PostgreSqlParser.COMMA); - this.state = 1945; + this.state = 1943; this.alter_type_cmd(); } } - this.state = 1950; + this.state = 1948; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9626,24 +9513,24 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 110, PostgreSqlParser.RULE_alter_type_cmd); let _la: number; try { - this.state = 1981; + this.state = 1979; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ADD: this.enterOuterAlt(localContext, 1); { - this.state = 1951; + this.state = 1949; this.match(PostgreSqlParser.KW_ADD); - this.state = 1952; + this.state = 1950; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 1953; + this.state = 1951; this.tablefuncelement(); - this.state = 1955; + this.state = 1953; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 124, this.context) ) { case 1: { - this.state = 1954; + this.state = 1952; this.opt_drop_behavior(); } break; @@ -9653,28 +9540,28 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DROP: this.enterOuterAlt(localContext, 2); { - this.state = 1957; + this.state = 1955; this.match(PostgreSqlParser.KW_DROP); - this.state = 1958; + this.state = 1956; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 1960; + this.state = 1958; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 125, this.context) ) { case 1: { - this.state = 1959; + this.state = 1957; this.opt_if_exists(); } break; } - this.state = 1962; + this.state = 1960; this.colid(); - this.state = 1964; + this.state = 1962; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 126, this.context) ) { case 1: { - this.state = 1963; + this.state = 1961; this.opt_drop_behavior(); } break; @@ -9684,44 +9571,44 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_ALTER: this.enterOuterAlt(localContext, 3); { - this.state = 1966; + this.state = 1964; this.match(PostgreSqlParser.KW_ALTER); - this.state = 1967; + this.state = 1965; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 1968; + this.state = 1966; this.colid(); - this.state = 1971; + this.state = 1969; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 333) { { - this.state = 1969; + this.state = 1967; this.match(PostgreSqlParser.KW_SET); - this.state = 1970; + this.state = 1968; this.match(PostgreSqlParser.KW_DATA); } } - this.state = 1973; + this.state = 1971; this.match(PostgreSqlParser.KW_TYPE); - this.state = 1974; + this.state = 1972; this.typename(); - this.state = 1976; + this.state = 1974; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 128, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 43) { { - this.state = 1975; + this.state = 1973; this.opt_collate_clause(); } - break; } - this.state = 1979; + + this.state = 1977; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 129, this.context) ) { case 1: { - this.state = 1978; + this.state = 1976; this.opt_drop_behavior(); } break; @@ -9752,18 +9639,12 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 1983; + this.state = 1981; this.match(PostgreSqlParser.KW_CLOSE); - this.state = 1986; + this.state = 1984; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -10145,6 +10026,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -10157,13 +10039,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 1984; + this.state = 1982; this.colid(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 1985; + this.state = 1983; this.match(PostgreSqlParser.KW_ALL); } break; @@ -10191,37 +10073,37 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 114, PostgreSqlParser.RULE_copystmt); let _la: number; try { - this.state = 2037; + this.state = 2035; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 143, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1988; + this.state = 1986; this.match(PostgreSqlParser.KW_COPY); - this.state = 1990; + this.state = 1988; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 107) { { - this.state = 1989; + this.state = 1987; this.match(PostgreSqlParser.KW_BINARY); } } - this.state = 1992; + this.state = 1990; this.table_name(); - this.state = 1994; + this.state = 1992; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 1993; + this.state = 1991; this.opt_column_list(); } } - this.state = 1996; + this.state = 1994; _la = this.tokenStream.LA(1); if(!(_la === 64 || _la === 94)) { this.errorHandler.recoverInline(this); @@ -10230,17 +10112,17 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1998; + this.state = 1996; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 297) { { - this.state = 1997; + this.state = 1995; this.match(PostgreSqlParser.KW_PROGRAM); } } - this.state = 2003; + this.state = 2001; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -10248,65 +10130,65 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2000; + this.state = 1998; this.sconst(); } break; case PostgreSqlParser.KW_STDIN: { - this.state = 2001; + this.state = 1999; this.match(PostgreSqlParser.KW_STDIN); } break; case PostgreSqlParser.KW_STDOUT: { - this.state = 2002; + this.state = 2000; this.match(PostgreSqlParser.KW_STDOUT); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2010; + this.state = 2008; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 137, this.context) ) { case 1: { - this.state = 2006; + this.state = 2004; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2005; + this.state = 2003; this.match(PostgreSqlParser.KW_USING); } } - this.state = 2008; + this.state = 2006; this.match(PostgreSqlParser.KW_DELIMITERS); - this.state = 2009; + this.state = 2007; this.sconst(); } break; } - this.state = 2013; + this.state = 2011; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 138, this.context) ) { case 1: { - this.state = 2012; + this.state = 2010; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 2015; + this.state = 2013; this.copy_options(); - this.state = 2017; + this.state = 2015; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 2016; + this.state = 2014; this.where_clause(); } } @@ -10316,27 +10198,27 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2019; + this.state = 2017; this.match(PostgreSqlParser.KW_COPY); - this.state = 2020; + this.state = 2018; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2021; + this.state = 2019; this.preparablestmt(); - this.state = 2022; + this.state = 2020; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2023; + this.state = 2021; this.match(PostgreSqlParser.KW_TO); - this.state = 2025; + this.state = 2023; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 297) { { - this.state = 2024; + this.state = 2022; this.match(PostgreSqlParser.KW_PROGRAM); } } - this.state = 2030; + this.state = 2028; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -10344,36 +10226,36 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2027; + this.state = 2025; this.sconst(); } break; case PostgreSqlParser.KW_STDIN: { - this.state = 2028; + this.state = 2026; this.match(PostgreSqlParser.KW_STDIN); } break; case PostgreSqlParser.KW_STDOUT: { - this.state = 2029; + this.state = 2027; this.match(PostgreSqlParser.KW_STDOUT); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 2033; + this.state = 2031; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 142, this.context) ) { case 1: { - this.state = 2032; + this.state = 2030; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 2035; + this.state = 2033; this.copy_options(); } break; @@ -10399,36 +10281,36 @@ export class PostgreSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 2078; + this.state = 2076; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 150, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2064; + this.state = 2062; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 148, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 2062; + this.state = 2060; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 147, this.context) ) { case 1: { - this.state = 2039; + this.state = 2037; this.match(PostgreSqlParser.KW_BINARY); } break; case 2: { - this.state = 2040; + this.state = 2038; this.match(PostgreSqlParser.KW_FREEZE); } break; case 3: { - this.state = 2041; + this.state = 2039; _la = this.tokenStream.LA(1); if(!(_la === 78 || _la === 183 || _la === 197 || _la === 298)) { this.errorHandler.recoverInline(this); @@ -10437,50 +10319,50 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2043; + this.state = 2041; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 2042; + this.state = 2040; this.match(PostgreSqlParser.KW_AS); } } - this.state = 2045; + this.state = 2043; this.sconst(); } break; case 4: { - this.state = 2046; + this.state = 2044; this.match(PostgreSqlParser.KW_CSV); } break; case 5: { - this.state = 2047; + this.state = 2045; this.match(PostgreSqlParser.KW_HEADER); } break; case 6: { - this.state = 2048; + this.state = 2046; this.match(PostgreSqlParser.KW_FORCE); - this.state = 2049; + this.state = 2047; this.match(PostgreSqlParser.KW_QUOTE); - this.state = 2052; + this.state = 2050; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 145, this.context) ) { case 1: { - this.state = 2050; + this.state = 2048; this.column_list(); } break; case 2: { - this.state = 2051; + this.state = 2049; this.match(PostgreSqlParser.STAR); } break; @@ -10489,36 +10371,36 @@ export class PostgreSqlParser extends SQLParserBase { break; case 7: { - this.state = 2054; + this.state = 2052; this.match(PostgreSqlParser.KW_FORCE); - this.state = 2056; + this.state = 2054; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 2055; + this.state = 2053; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 2058; + this.state = 2056; this.match(PostgreSqlParser.KW_NULL); - this.state = 2059; + this.state = 2057; this.column_list(); } break; case 8: { - this.state = 2060; + this.state = 2058; this.match(PostgreSqlParser.KW_ENCODING); - this.state = 2061; + this.state = 2059; this.sconst(); } break; } } } - this.state = 2066; + this.state = 2064; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 148, this.context); } @@ -10527,27 +10409,27 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2067; + this.state = 2065; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2068; + this.state = 2066; this.copy_generic_opt_elem(); - this.state = 2073; + this.state = 2071; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2069; + this.state = 2067; this.match(PostgreSqlParser.COMMA); - this.state = 2070; + this.state = 2068; this.copy_generic_opt_elem(); } } - this.state = 2075; + this.state = 2073; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2076; + this.state = 2074; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -10574,19 +10456,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2080; + this.state = 2078; this.collabel(); - this.state = 2095; + this.state = 2093; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_ON: case PostgreSqlParser.KW_TRUE: case PostgreSqlParser.KW_AUTHORIZATION: @@ -10991,6 +10867,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -11003,7 +10880,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2081; + this.state = 2079; this.opt_boolean_or_string(); } break; @@ -11012,39 +10889,39 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Integral: case PostgreSqlParser.Numeric: { - this.state = 2082; + this.state = 2080; this.numericonly(); } break; case PostgreSqlParser.STAR: { - this.state = 2083; + this.state = 2081; this.match(PostgreSqlParser.STAR); } break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 2084; + this.state = 2082; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2085; + this.state = 2083; this.opt_boolean_or_string_column(); - this.state = 2090; + this.state = 2088; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2086; + this.state = 2084; this.match(PostgreSqlParser.COMMA); - this.state = 2087; + this.state = 2085; this.opt_boolean_or_string_column(); } } - this.state = 2092; + this.state = 2090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2093; + this.state = 2091; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -11078,107 +10955,107 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ColumnCreateTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2097; + this.state = 2095; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2099; + this.state = 2097; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 2098; + this.state = 2096; this.opttemp(); } } - this.state = 2101; + this.state = 2099; this.match(PostgreSqlParser.KW_TABLE); - this.state = 2103; + this.state = 2101; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 154, this.context) ) { case 1: { - this.state = 2102; + this.state = 2100; this.opt_if_not_exists(); } break; } - this.state = 2105; + this.state = 2103; this.table_name_create(); - this.state = 2171; + this.state = 2169; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 2106; + this.state = 2104; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2108; + this.state = 2106; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1360008709) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 24575) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2099209) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 286719) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 2107; + this.state = 2105; this.tableelementlist(); } } - this.state = 2110; + this.state = 2108; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2112; + this.state = 2110; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 156, this.context) ) { case 1: { - this.state = 2111; + this.state = 2109; this.optinherit(); } break; } - this.state = 2115; + this.state = 2113; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 157, this.context) ) { case 1: { - this.state = 2114; + this.state = 2112; this.partitionspec(); } break; } - this.state = 2118; + this.state = 2116; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2117; + this.state = 2115; this.table_access_method_clause(); } } - this.state = 2121; + this.state = 2119; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 159, this.context) ) { case 1: { - this.state = 2120; + this.state = 2118; this.optwith(); } break; } - this.state = 2124; + this.state = 2122; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2123; + this.state = 2121; this.oncommitoption(); } } - this.state = 2127; + this.state = 2125; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { case 1: { - this.state = 2126; + this.state = 2124; this.opttablespace(); } break; @@ -11187,66 +11064,66 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_OF: { - this.state = 2129; + this.state = 2127; this.match(PostgreSqlParser.KW_OF); - this.state = 2130; + this.state = 2128; this.any_name(); - this.state = 2132; + this.state = 2130; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 162, this.context) ) { case 1: { - this.state = 2131; + this.state = 2129; this.opttypedtableelementlist(); } break; } - this.state = 2135; + this.state = 2133; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 163, this.context) ) { case 1: { - this.state = 2134; + this.state = 2132; this.partitionspec(); } break; } - this.state = 2138; + this.state = 2136; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2137; + this.state = 2135; this.table_access_method_clause(); } } - this.state = 2141; + this.state = 2139; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 165, this.context) ) { case 1: { - this.state = 2140; + this.state = 2138; this.optwith(); } break; } - this.state = 2144; + this.state = 2142; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2143; + this.state = 2141; this.oncommitoption(); } } - this.state = 2147; + this.state = 2145; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 167, this.context) ) { case 1: { - this.state = 2146; + this.state = 2144; this.opttablespace(); } break; @@ -11255,70 +11132,70 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_PARTITION: { - this.state = 2149; + this.state = 2147; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 2150; + this.state = 2148; this.match(PostgreSqlParser.KW_OF); - this.state = 2151; + this.state = 2149; this.qualified_name(); - this.state = 2153; + this.state = 2151; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 2152; + this.state = 2150; this.opttypedtableelementlist(); } } - this.state = 2155; + this.state = 2153; this.partitionboundspec(); - this.state = 2157; + this.state = 2155; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 169, this.context) ) { case 1: { - this.state = 2156; + this.state = 2154; this.partitionspec(); } break; } - this.state = 2160; + this.state = 2158; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2159; + this.state = 2157; this.table_access_method_clause(); } } - this.state = 2163; + this.state = 2161; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 171, this.context) ) { case 1: { - this.state = 2162; + this.state = 2160; this.optwith(); } break; } - this.state = 2166; + this.state = 2164; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2165; + this.state = 2163; this.oncommitoption(); } } - this.state = 2169; + this.state = 2167; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 173, this.context) ) { case 1: { - this.state = 2168; + this.state = 2166; this.opttablespace(); } break; @@ -11349,20 +11226,20 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 122, PostgreSqlParser.RULE_opttemp); let _la: number; try { - this.state = 2178; + this.state = 2176; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TEMPORARY: this.enterOuterAlt(localContext, 1); { - this.state = 2173; + this.state = 2171; this.match(PostgreSqlParser.KW_TEMPORARY); } break; case PostgreSqlParser.KW_TEMP: this.enterOuterAlt(localContext, 2); { - this.state = 2174; + this.state = 2172; this.match(PostgreSqlParser.KW_TEMP); } break; @@ -11370,7 +11247,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LOCAL: this.enterOuterAlt(localContext, 3); { - this.state = 2175; + this.state = 2173; _la = this.tokenStream.LA(1); if(!(_la === 213 || _la === 254)) { this.errorHandler.recoverInline(this); @@ -11379,7 +11256,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2176; + this.state = 2174; _la = this.tokenStream.LA(1); if(!(_la === 352 || _la === 354)) { this.errorHandler.recoverInline(this); @@ -11393,7 +11270,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_UNLOGGED: this.enterOuterAlt(localContext, 4); { - this.state = 2177; + this.state = 2175; this.match(PostgreSqlParser.KW_UNLOGGED); } break; @@ -11422,27 +11299,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2180; + this.state = 2178; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2181; + this.state = 2179; this.typedtableelement(); - this.state = 2186; + this.state = 2184; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2182; + this.state = 2180; this.match(PostgreSqlParser.COMMA); - this.state = 2183; + this.state = 2181; this.typedtableelement(); } } - this.state = 2188; + this.state = 2186; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2189; + this.state = 2187; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -11467,21 +11344,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2191; + this.state = 2189; this.tableelement(); - this.state = 2196; + this.state = 2194; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2192; + this.state = 2190; this.match(PostgreSqlParser.COMMA); - this.state = 2193; + this.state = 2191; this.tableelement(); } } - this.state = 2198; + this.state = 2196; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -11506,30 +11383,49 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 128, PostgreSqlParser.RULE_tableelement); let _la: number; try { - this.state = 2214; + this.state = 2212; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 180, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { this.state = 2199; - this.column_def(); + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 45) { + { + this.state = 2197; + this.match(PostgreSqlParser.KW_CONSTRAINT); + this.state = 2198; + this.colid(); + } + } + + this.state = 2201; + this.constraintelem(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2200; + this.state = 2202; + this.column_def(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 2203; this.match(PostgreSqlParser.KW_LIKE); - this.state = 2201; + this.state = 2204; this.qualified_name(); - this.state = 2206; + this.state = 2209; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 200 || _la === 224) { { { - this.state = 2202; + this.state = 2205; _la = this.tokenStream.LA(1); if(!(_la === 200 || _la === 224)) { this.errorHandler.recoverInline(this); @@ -11538,35 +11434,16 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2203; + this.state = 2206; this.tablelikeoption(); } } - this.state = 2208; + this.state = 2211; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 2211; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 45) { - { - this.state = 2209; - this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 2210; - this.colid(); - } - } - - this.state = 2213; - this.constraintelem(); - } - break; } } catch (re) { @@ -11588,37 +11465,37 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 130, PostgreSqlParser.RULE_typedtableelement); let _la: number; try { - this.state = 2232; + this.state = 2230; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 184, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2216; + this.state = 2214; this.column_name_create(); - this.state = 2219; + this.state = 2217; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 2217; + this.state = 2215; this.match(PostgreSqlParser.KW_WITH); - this.state = 2218; + this.state = 2216; this.match(PostgreSqlParser.KW_OPTIONS); } } - this.state = 2224; + this.state = 2222; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2059) !== 0) || ((((_la - 77)) & ~0x1F) === 0 && ((1 << (_la - 77)) & 2097923) !== 0) || _la === 438) { { { - this.state = 2221; + this.state = 2219; this.colconstraint(); } } - this.state = 2226; + this.state = 2224; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -11627,19 +11504,19 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2229; + this.state = 2227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 2227; + this.state = 2225; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 2228; + this.state = 2226; this.colid(); } } - this.state = 2231; + this.state = 2229; this.constraintelem(); } break; @@ -11667,63 +11544,63 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2234; + this.state = 2232; this.column_name_create(); - this.state = 2235; + this.state = 2233; this.typename(); - this.state = 2237; + this.state = 2235; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 185, this.context) ) { case 1: { - this.state = 2236; + this.state = 2234; this.create_generic_options(); } break; } - this.state = 2248; + this.state = 2246; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { case 1: { - this.state = 2239; + this.state = 2237; this.match(PostgreSqlParser.KW_STORAGE); - this.state = 2246; + this.state = 2244; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 186, this.context) ) { case 1: { - this.state = 2240; + this.state = 2238; this.match(PostgreSqlParser.KW_PLAIN); } break; case 2: { - this.state = 2241; + this.state = 2239; this.match(PostgreSqlParser.KW_EXTERNAL); } break; case 3: { - this.state = 2242; + this.state = 2240; this.match(PostgreSqlParser.KW_EXTENDED); } break; case 4: { - this.state = 2243; + this.state = 2241; this.match(PostgreSqlParser.KW_MAIN); } break; case 5: { - this.state = 2244; + this.state = 2242; this.match(PostgreSqlParser.KW_DEFAULT); } break; case 6: { - this.state = 2245; + this.state = 2243; this.colid(); } break; @@ -11731,53 +11608,53 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 2252; + this.state = 2250; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 543) { { - this.state = 2250; + this.state = 2248; this.match(PostgreSqlParser.KW_COMPRESSION); - this.state = 2251; + this.state = 2249; this.colid(); } } - this.state = 2255; + this.state = 2253; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 189, this.context) ) { case 1: { - this.state = 2254; + this.state = 2252; this.opt_collate_clause(); } break; } - this.state = 2259; + this.state = 2257; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 190, this.context) ) { case 1: { - this.state = 2257; + this.state = 2255; this.match(PostgreSqlParser.KW_WITH); - this.state = 2258; + this.state = 2256; this.match(PostgreSqlParser.KW_OPTIONS); } break; } - this.state = 2264; + this.state = 2262; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 191, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2261; + this.state = 2259; this.colconstraint(); } } } - this.state = 2266; + this.state = 2264; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 191, this.context); } @@ -11804,48 +11681,48 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2269; + this.state = 2267; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 2267; + this.state = 2265; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 2268; + this.state = 2266; this.colid(); } } - this.state = 2271; + this.state = 2269; this.colconstraintelem(); - this.state = 2276; + this.state = 2274; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 194, this.context) ) { case 1: { - this.state = 2273; + this.state = 2271; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 2272; + this.state = 2270; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 2275; + this.state = 2273; this.match(PostgreSqlParser.KW_DEFERRABLE); } break; } - this.state = 2280; + this.state = 2278; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 69) { { - this.state = 2278; + this.state = 2276; this.match(PostgreSqlParser.KW_INITIALLY); - this.state = 2279; + this.state = 2277; _la = this.tokenStream.LA(1); if(!(_la === 180 || _la === 221)) { this.errorHandler.recoverInline(this); @@ -11878,47 +11755,47 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 136, PostgreSqlParser.RULE_colconstraintelem); let _la: number; try { - this.state = 2362; + this.state = 2360; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 213, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2283; + this.state = 2281; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 2282; + this.state = 2280; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 2285; + this.state = 2283; this.match(PostgreSqlParser.KW_NULL); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2286; + this.state = 2284; this.match(PostgreSqlParser.KW_UNIQUE); - this.state = 2288; + this.state = 2286; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 197, this.context) ) { case 1: { - this.state = 2287; + this.state = 2285; this.opt_definition(); } break; } - this.state = 2291; + this.state = 2289; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2290; + this.state = 2288; this.optconstablespace(); } } @@ -11928,59 +11805,59 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 2293; + this.state = 2291; this.match(PostgreSqlParser.KW_UNIQUE); - this.state = 2299; + this.state = 2297; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 200, this.context) ) { case 1: { - this.state = 2294; + this.state = 2292; this.match(PostgreSqlParser.KW_NULLS); - this.state = 2296; + this.state = 2294; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 2295; + this.state = 2293; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 2298; + this.state = 2296; this.match(PostgreSqlParser.KW_DISTINCT); } break; } { - this.state = 2303; + this.state = 2301; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 201, this.context) ) { case 1: { - this.state = 2301; + this.state = 2299; this.match(PostgreSqlParser.KW_INCLUDE); - this.state = 2302; + this.state = 2300; this.index_params(); } break; } - this.state = 2306; + this.state = 2304; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 202, this.context) ) { case 1: { - this.state = 2305; + this.state = 2303; this.with_clause(); } break; } - this.state = 2309; + this.state = 2307; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2308; + this.state = 2306; this.optconstablespace(); } } @@ -11991,26 +11868,26 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 2311; + this.state = 2309; this.match(PostgreSqlParser.KW_PRIMARY); - this.state = 2312; + this.state = 2310; this.match(PostgreSqlParser.KW_KEY); - this.state = 2314; + this.state = 2312; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 204, this.context) ) { case 1: { - this.state = 2313; + this.state = 2311; this.opt_definition(); } break; } - this.state = 2317; + this.state = 2315; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2316; + this.state = 2314; this.optconstablespace(); } } @@ -12020,22 +11897,22 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 2319; + this.state = 2317; this.match(PostgreSqlParser.KW_CHECK); - this.state = 2320; + this.state = 2318; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2321; + this.state = 2319; this.expression(); - this.state = 2322; + this.state = 2320; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2325; + this.state = 2323; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 206, this.context) ) { case 1: { - this.state = 2323; + this.state = 2321; this.match(PostgreSqlParser.KW_NO); - this.state = 2324; + this.state = 2322; this.match(PostgreSqlParser.KW_INHERIT); } break; @@ -12045,50 +11922,50 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 2327; + this.state = 2325; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 2328; + this.state = 2326; this.primaryExpression(0); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 2329; + this.state = 2327; this.match(PostgreSqlParser.KW_GENERATED); - this.state = 2330; + this.state = 2328; this.generated_when(); - this.state = 2331; + this.state = 2329; this.match(PostgreSqlParser.KW_AS); - this.state = 2348; + this.state = 2346; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IDENTITY: { - this.state = 2332; + this.state = 2330; this.match(PostgreSqlParser.KW_IDENTITY); - this.state = 2341; + this.state = 2339; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 208, this.context) ) { case 1: { - this.state = 2333; + this.state = 2331; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2335; + this.state = 2333; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2334; + this.state = 2332; this.seqoptelem(); } } - this.state = 2337; + this.state = 2335; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 36 || _la === 148 || _la === 225 || ((((_la - 260)) & ~0x1F) === 0 && ((1 << (_la - 260)) & 2097669) !== 0) || ((((_la - 314)) & ~0x1F) === 0 && ((1 << (_la - 314)) & 67125249) !== 0)); - this.state = 2339; + this.state = 2337; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -12097,13 +11974,13 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 2343; + this.state = 2341; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2344; + this.state = 2342; this.expression(); - this.state = 2345; + this.state = 2343; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2346; + this.state = 2344; this.match(PostgreSqlParser.KW_STORED); } break; @@ -12115,36 +11992,36 @@ export class PostgreSqlParser extends SQLParserBase { case 8: this.enterOuterAlt(localContext, 8); { - this.state = 2350; + this.state = 2348; this.match(PostgreSqlParser.KW_REFERENCES); - this.state = 2351; + this.state = 2349; this.qualified_name(); - this.state = 2353; + this.state = 2351; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { case 1: { - this.state = 2352; + this.state = 2350; this.opt_column_list(); } break; } - this.state = 2356; + this.state = 2354; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { case 1: { - this.state = 2355; + this.state = 2353; this.key_match(); } break; } - this.state = 2359; + this.state = 2357; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2358; + this.state = 2356; this.key_actions(); } } @@ -12154,7 +12031,7 @@ export class PostgreSqlParser extends SQLParserBase { case 9: this.enterOuterAlt(localContext, 9); { - this.state = 2361; + this.state = 2359; this.opt_collate_clause(); } break; @@ -12178,22 +12055,22 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Generated_whenContext(this.context, this.state); this.enterRule(localContext, 138, PostgreSqlParser.RULE_generated_when); try { - this.state = 2367; + this.state = 2365; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALWAYS: this.enterOuterAlt(localContext, 1); { - this.state = 2364; + this.state = 2362; this.match(PostgreSqlParser.KW_ALWAYS); } break; case PostgreSqlParser.KW_BY: this.enterOuterAlt(localContext, 2); { - this.state = 2365; + this.state = 2363; this.match(PostgreSqlParser.KW_BY); - this.state = 2366; + this.state = 2364; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -12222,7 +12099,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2369; + this.state = 2367; _la = this.tokenStream.LA(1); if(!(_la === 30 || ((((_la - 160)) & ~0x1F) === 0 && ((1 << (_la - 160)) & 524321) !== 0) || _la === 219 || _la === 227 || _la === 342 || _la === 345 || _la === 438)) { this.errorHandler.recoverInline(this); @@ -12253,33 +12130,33 @@ export class PostgreSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 2467; + this.state = 2465; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CHECK: this.enterOuterAlt(localContext, 1); { - this.state = 2371; + this.state = 2369; this.match(PostgreSqlParser.KW_CHECK); - this.state = 2372; + this.state = 2370; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2373; + this.state = 2371; this.expression(); - this.state = 2374; + this.state = 2372; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2378; + this.state = 2376; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 215, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2375; + this.state = 2373; this.constraintattributeElem(); } } } - this.state = 2380; + this.state = 2378; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 215, this.context); } @@ -12289,21 +12166,21 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_UNIQUE: this.enterOuterAlt(localContext, 2); { - this.state = 2384; + this.state = 2382; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_UNIQUE: { - this.state = 2381; + this.state = 2379; this.match(PostgreSqlParser.KW_UNIQUE); } break; case PostgreSqlParser.KW_PRIMARY: { { - this.state = 2382; + this.state = 2380; this.match(PostgreSqlParser.KW_PRIMARY); - this.state = 2383; + this.state = 2381; this.match(PostgreSqlParser.KW_KEY); } } @@ -12311,56 +12188,56 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2409; + this.state = 2407; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 2386; + this.state = 2384; this.opt_column_list(); - this.state = 2388; + this.state = 2386; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 217, this.context) ) { case 1: { - this.state = 2387; + this.state = 2385; this.opt_c_include(); } break; } - this.state = 2391; + this.state = 2389; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 218, this.context) ) { case 1: { - this.state = 2390; + this.state = 2388; this.opt_definition(); } break; } - this.state = 2394; + this.state = 2392; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2393; + this.state = 2391; this.optconstablespace(); } } - this.state = 2399; + this.state = 2397; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 220, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2396; + this.state = 2394; this.constraintattributeElem(); } } } - this.state = 2401; + this.state = 2399; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 220, this.context); } @@ -12368,21 +12245,21 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_USING: { - this.state = 2402; + this.state = 2400; this.existingindex(); - this.state = 2406; + this.state = 2404; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 221, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2403; + this.state = 2401; this.constraintattributeElem(); } } } - this.state = 2408; + this.state = 2406; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 221, this.context); } @@ -12396,99 +12273,99 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCLUDE: this.enterOuterAlt(localContext, 3); { - this.state = 2411; + this.state = 2409; this.match(PostgreSqlParser.KW_EXCLUDE); - this.state = 2413; + this.state = 2411; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2412; + this.state = 2410; this.table_access_method_clause(); } } - this.state = 2415; + this.state = 2413; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2416; + this.state = 2414; this.exclusionconstraintelem(); - this.state = 2421; + this.state = 2419; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2417; + this.state = 2415; this.match(PostgreSqlParser.COMMA); - this.state = 2418; + this.state = 2416; this.exclusionconstraintelem(); } } - this.state = 2423; + this.state = 2421; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2424; + this.state = 2422; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 2426; + this.state = 2424; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 225, this.context) ) { case 1: { - this.state = 2425; + this.state = 2423; this.opt_c_include(); } break; } - this.state = 2429; + this.state = 2427; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 226, this.context) ) { case 1: { - this.state = 2428; + this.state = 2426; this.opt_definition(); } break; } - this.state = 2432; + this.state = 2430; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2431; + this.state = 2429; this.optconstablespace(); } } - this.state = 2439; + this.state = 2437; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 2434; + this.state = 2432; this.match(PostgreSqlParser.KW_WHERE); - this.state = 2435; + this.state = 2433; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2436; + this.state = 2434; this.expression(); - this.state = 2437; + this.state = 2435; this.match(PostgreSqlParser.CLOSE_PAREN); } } - this.state = 2444; + this.state = 2442; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 229, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2441; + this.state = 2439; this.constraintattributeElem(); } } } - this.state = 2446; + this.state = 2444; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 229, this.context); } @@ -12497,59 +12374,59 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_FOREIGN: this.enterOuterAlt(localContext, 4); { - this.state = 2447; + this.state = 2445; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2448; + this.state = 2446; this.match(PostgreSqlParser.KW_KEY); - this.state = 2449; + this.state = 2447; this.opt_column_list(); - this.state = 2450; + this.state = 2448; this.match(PostgreSqlParser.KW_REFERENCES); - this.state = 2451; + this.state = 2449; this.qualified_name(); - this.state = 2453; + this.state = 2451; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { case 1: { - this.state = 2452; + this.state = 2450; this.opt_column_list(); } break; } - this.state = 2456; + this.state = 2454; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { case 1: { - this.state = 2455; + this.state = 2453; this.key_match(); } break; } - this.state = 2459; + this.state = 2457; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2458; + this.state = 2456; this.key_actions(); } } - this.state = 2464; + this.state = 2462; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2461; + this.state = 2459; this.constraintattributeElem(); } } } - this.state = 2466; + this.state = 2464; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); } @@ -12579,11 +12456,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2469; + this.state = 2467; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2470; + this.state = 2468; this.column_list(); - this.state = 2471; + this.state = 2469; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -12608,27 +12485,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2473; + this.state = 2471; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2474; + this.state = 2472; this.column_name_create(); - this.state = 2479; + this.state = 2477; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2475; + this.state = 2473; this.match(PostgreSqlParser.COMMA); - this.state = 2476; + this.state = 2474; this.column_name_create(); } } - this.state = 2481; + this.state = 2479; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2482; + this.state = 2480; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -12653,23 +12530,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2484; + this.state = 2482; this.column_name(); - this.state = 2489; + this.state = 2487; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 236, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 2485; + this.state = 2483; this.match(PostgreSqlParser.COMMA); - this.state = 2486; + this.state = 2484; this.column_name(); } } } - this.state = 2491; + this.state = 2489; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 236, this.context); } @@ -12695,9 +12572,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2492; + this.state = 2490; this.match(PostgreSqlParser.KW_INCLUDE); - this.state = 2493; + this.state = 2491; this.opt_column_list(); } } @@ -12722,9 +12599,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2495; + this.state = 2493; this.match(PostgreSqlParser.KW_MATCH); - this.state = 2496; + this.state = 2494; _la = this.tokenStream.LA(1); if(!(_la === 113 || _la === 284 || _la === 336)) { this.errorHandler.recoverInline(this); @@ -12755,28 +12632,28 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2498; + this.state = 2496; this.index_elem(); - this.state = 2499; + this.state = 2497; this.match(PostgreSqlParser.KW_WITH); - this.state = 2506; + this.state = 2504; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { case 1: { - this.state = 2500; + this.state = 2498; this.any_operator(); } break; case 2: { - this.state = 2501; + this.state = 2499; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 2502; + this.state = 2500; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2503; + this.state = 2501; this.any_operator(); - this.state = 2504; + this.state = 2502; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -12802,20 +12679,20 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 156, PostgreSqlParser.RULE_key_actions); let _la: number; try { - this.state = 2516; + this.state = 2514; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 240, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2508; + this.state = 2506; this.key_update(); - this.state = 2510; + this.state = 2508; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2509; + this.state = 2507; this.key_delete(); } } @@ -12825,14 +12702,14 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2512; + this.state = 2510; this.key_delete(); - this.state = 2514; + this.state = 2512; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2513; + this.state = 2511; this.key_update(); } } @@ -12861,11 +12738,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2518; + this.state = 2516; this.match(PostgreSqlParser.KW_ON); - this.state = 2519; + this.state = 2517; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 2520; + this.state = 2518; this.key_action(); } } @@ -12889,11 +12766,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2522; + this.state = 2520; this.match(PostgreSqlParser.KW_ON); - this.state = 2523; + this.state = 2521; this.match(PostgreSqlParser.KW_DELETE); - this.state = 2524; + this.state = 2522; this.key_action(); } } @@ -12916,38 +12793,38 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 162, PostgreSqlParser.RULE_key_action); let _la: number; try { - this.state = 2535; + this.state = 2533; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NO: this.enterOuterAlt(localContext, 1); { - this.state = 2526; + this.state = 2524; this.match(PostgreSqlParser.KW_NO); - this.state = 2527; + this.state = 2525; this.match(PostgreSqlParser.KW_ACTION); } break; case PostgreSqlParser.KW_RESTRICT: this.enterOuterAlt(localContext, 2); { - this.state = 2528; + this.state = 2526; this.match(PostgreSqlParser.KW_RESTRICT); } break; case PostgreSqlParser.KW_CASCADE: this.enterOuterAlt(localContext, 3); { - this.state = 2529; + this.state = 2527; this.match(PostgreSqlParser.KW_CASCADE); } break; case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 4); { - this.state = 2530; + this.state = 2528; this.match(PostgreSqlParser.KW_SET); - this.state = 2531; + this.state = 2529; _la = this.tokenStream.LA(1); if(!(_la === 53 || _la === 78)) { this.errorHandler.recoverInline(this); @@ -12956,12 +12833,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2533; + this.state = 2531; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 241, this.context) ) { case 1: { - this.state = 2532; + this.state = 2530; this.column_list(); } break; @@ -12992,13 +12869,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2537; + this.state = 2535; this.match(PostgreSqlParser.KW_INHERITS); - this.state = 2538; + this.state = 2536; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2539; + this.state = 2537; this.qualified_name_list(); - this.state = 2540; + this.state = 2538; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -13023,33 +12900,33 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2542; + this.state = 2540; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 2543; + this.state = 2541; this.match(PostgreSqlParser.KW_BY); - this.state = 2544; + this.state = 2542; this.colid(); - this.state = 2545; + this.state = 2543; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2546; + this.state = 2544; this.part_elem(); - this.state = 2551; + this.state = 2549; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2547; + this.state = 2545; this.match(PostgreSqlParser.COMMA); - this.state = 2548; + this.state = 2546; this.part_elem(); } } - this.state = 2553; + this.state = 2551; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2554; + this.state = 2552; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -13074,50 +12951,50 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2562; + this.state = 2560; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { case 1: { - this.state = 2556; + this.state = 2554; this.column_name(); } break; case 2: { - this.state = 2557; + this.state = 2555; this.func_expr_windowless(); } break; case 3: { { - this.state = 2558; + this.state = 2556; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2559; + this.state = 2557; this.expression(); - this.state = 2560; + this.state = 2558; this.match(PostgreSqlParser.CLOSE_PAREN); } } break; } - this.state = 2565; + this.state = 2563; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 245, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 43) { { - this.state = 2564; + this.state = 2562; this.opt_collate_clause(); } - break; } - this.state = 2568; + + this.state = 2566; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 2567; + this.state = 2565; this.any_name(); } } @@ -13144,9 +13021,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2570; + this.state = 2568; this.match(PostgreSqlParser.KW_USING); - this.state = 2571; + this.state = 2569; this.colid(); } } @@ -13169,22 +13046,22 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 172, PostgreSqlParser.RULE_optwith); let _la: number; try { - this.state = 2577; + this.state = 2575; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2573; + this.state = 2571; this.match(PostgreSqlParser.KW_WITH); - this.state = 2574; + this.state = 2572; this.reloptions(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2575; + this.state = 2573; _la = this.tokenStream.LA(1); if(!(_la === 105 || _la === 379)) { this.errorHandler.recoverInline(this); @@ -13193,7 +13070,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2576; + this.state = 2574; this.match(PostgreSqlParser.KW_OIDS); } break; @@ -13219,32 +13096,32 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2579; + this.state = 2577; this.match(PostgreSqlParser.KW_ON); - this.state = 2580; + this.state = 2578; this.match(PostgreSqlParser.KW_COMMIT); - this.state = 2586; + this.state = 2584; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DROP: { - this.state = 2581; + this.state = 2579; this.match(PostgreSqlParser.KW_DROP); } break; case PostgreSqlParser.KW_DELETE: { - this.state = 2582; + this.state = 2580; this.match(PostgreSqlParser.KW_DELETE); - this.state = 2583; + this.state = 2581; this.match(PostgreSqlParser.KW_ROWS); } break; case PostgreSqlParser.KW_PRESERVE: { - this.state = 2584; + this.state = 2582; this.match(PostgreSqlParser.KW_PRESERVE); - this.state = 2585; + this.state = 2583; this.match(PostgreSqlParser.KW_ROWS); } break; @@ -13273,9 +13150,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2588; + this.state = 2586; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 2589; + this.state = 2587; this.tablespace_name(); } } @@ -13299,11 +13176,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2591; + this.state = 2589; this.match(PostgreSqlParser.KW_USING); - this.state = 2592; + this.state = 2590; this.match(PostgreSqlParser.KW_INDEX); - this.state = 2593; + this.state = 2591; this.opttablespace(); } } @@ -13327,11 +13204,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2595; + this.state = 2593; this.match(PostgreSqlParser.KW_USING); - this.state = 2596; + this.state = 2594; this.match(PostgreSqlParser.KW_INDEX); - this.state = 2597; + this.state = 2595; this.colid(); } } @@ -13356,62 +13233,62 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2599; + this.state = 2597; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2600; + this.state = 2598; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 2605; + this.state = 2603; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 2602; + this.state = 2600; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 249, this.context) ) { case 1: { - this.state = 2601; + this.state = 2599; this.opt_if_not_exists(); } break; } - this.state = 2604; + this.state = 2602; this.any_name(); } } - this.state = 2608; + this.state = 2606; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 2607; + this.state = 2605; this.opt_column_list(); } } - this.state = 2610; + this.state = 2608; this.match(PostgreSqlParser.KW_ON); - this.state = 2620; + this.state = 2618; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 253, this.context) ) { case 1: { - this.state = 2611; + this.state = 2609; this.column_expr(); - this.state = 2616; + this.state = 2614; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2612; + this.state = 2610; this.match(PostgreSqlParser.COMMA); - this.state = 2613; + this.state = 2611; this.column_expr(); } } - this.state = 2618; + this.state = 2616; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -13419,12 +13296,12 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 2619; + this.state = 2617; this.expr_list(); } break; } - this.state = 2622; + this.state = 2620; this.from_clause(); } } @@ -13448,27 +13325,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2624; + this.state = 2622; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2625; + this.state = 2623; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 2627; + this.state = 2625; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 254, this.context) ) { case 1: { - this.state = 2626; + this.state = 2624; this.opt_if_exists(); } break; } - this.state = 2629; + this.state = 2627; this.any_name(); - this.state = 2630; + this.state = 2628; this.match(PostgreSqlParser.KW_SET); - this.state = 2631; + this.state = 2629; this.match(PostgreSqlParser.KW_STATISTICS); - this.state = 2632; + this.state = 2630; this.signediconst(); } } @@ -13494,42 +13371,42 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new QueryCreateTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2634; + this.state = 2632; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2636; + this.state = 2634; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 2635; + this.state = 2633; this.opttemp(); } } - this.state = 2638; + this.state = 2636; this.match(PostgreSqlParser.KW_TABLE); - this.state = 2640; + this.state = 2638; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 256, this.context) ) { case 1: { - this.state = 2639; + this.state = 2637; this.opt_if_not_exists(); } break; } - this.state = 2642; + this.state = 2640; this.create_as_target(); - this.state = 2643; + this.state = 2641; this.match(PostgreSqlParser.KW_AS); - this.state = 2644; + this.state = 2642; this.selectstmt(); - this.state = 2646; + this.state = 2644; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 257, this.context) ) { case 1: { - this.state = 2645; + this.state = 2643; this.opt_with_data(); } break; @@ -13557,54 +13434,54 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2648; + this.state = 2646; this.table_name_create(); - this.state = 2650; + this.state = 2648; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 2649; + this.state = 2647; this.opt_column_list_create(); } } - this.state = 2653; + this.state = 2651; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2652; + this.state = 2650; this.table_access_method_clause(); } } - this.state = 2656; + this.state = 2654; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105 || _la === 379) { { - this.state = 2655; + this.state = 2653; this.optwith(); } } - this.state = 2659; + this.state = 2657; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 2658; + this.state = 2656; this.oncommitoption(); } } - this.state = 2662; + this.state = 2660; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 351) { { - this.state = 2661; + this.state = 2659; this.opttablespace(); } } @@ -13631,22 +13508,22 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2664; + this.state = 2662; this.match(PostgreSqlParser.KW_WITH); - this.state = 2668; + this.state = 2666; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DATA: { - this.state = 2665; + this.state = 2663; this.match(PostgreSqlParser.KW_DATA); } break; case PostgreSqlParser.KW_NO: { - this.state = 2666; + this.state = 2664; this.match(PostgreSqlParser.KW_NO); - this.state = 2667; + this.state = 2665; this.match(PostgreSqlParser.KW_DATA); } break; @@ -13677,84 +13554,84 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new CreateMaterializedViewContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2670; + this.state = 2668; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2672; + this.state = 2670; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 367) { { - this.state = 2671; + this.state = 2669; this.match(PostgreSqlParser.KW_UNLOGGED); } } - this.state = 2674; + this.state = 2672; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 2675; + this.state = 2673; this.match(PostgreSqlParser.KW_VIEW); - this.state = 2677; + this.state = 2675; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 265, this.context) ) { case 1: { - this.state = 2676; + this.state = 2674; this.opt_if_not_exists(); } break; } - this.state = 2679; + this.state = 2677; this.view_name_create(); - this.state = 2681; + this.state = 2679; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 2680; + this.state = 2678; this.opt_column_list_create(); } } - this.state = 2684; + this.state = 2682; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 2683; + this.state = 2681; this.table_access_method_clause(); } } - this.state = 2687; + this.state = 2685; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 2686; + this.state = 2684; this.opt_reloptions(); } } - this.state = 2690; + this.state = 2688; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 351) { { - this.state = 2689; + this.state = 2687; this.opttablespace(); } } - this.state = 2692; + this.state = 2690; this.match(PostgreSqlParser.KW_AS); - this.state = 2693; + this.state = 2691; this.selectstmt(); - this.state = 2695; + this.state = 2693; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 270, this.context) ) { case 1: { - this.state = 2694; + this.state = 2692; this.opt_with_data(); } break; @@ -13782,30 +13659,30 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2697; + this.state = 2695; this.match(PostgreSqlParser.KW_REFRESH); - this.state = 2698; + this.state = 2696; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 2699; + this.state = 2697; this.match(PostgreSqlParser.KW_VIEW); - this.state = 2701; + this.state = 2699; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 2700; + this.state = 2698; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 2703; + this.state = 2701; this.view_name(); - this.state = 2705; + this.state = 2703; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 272, this.context) ) { case 1: { - this.state = 2704; + this.state = 2702; this.opt_with_data(); } break; @@ -13834,38 +13711,38 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2707; + this.state = 2705; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2709; + this.state = 2707; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 2708; + this.state = 2706; this.opttemp(); } } - this.state = 2711; + this.state = 2709; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 2713; + this.state = 2711; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { case 1: { - this.state = 2712; + this.state = 2710; this.opt_if_not_exists(); } break; } - this.state = 2715; + this.state = 2713; this.qualified_name(); - this.state = 2721; + this.state = 2719; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 276, this.context) ) { case 1: { - this.state = 2717; + this.state = 2715; this.errorHandler.sync(this); alternative = 1; do { @@ -13873,7 +13750,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 2716; + this.state = 2714; this.seqoptelem(); } } @@ -13881,7 +13758,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2719; + this.state = 2717; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 275, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -13911,23 +13788,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2723; + this.state = 2721; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2724; + this.state = 2722; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 2726; + this.state = 2724; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 277, this.context) ) { case 1: { - this.state = 2725; + this.state = 2723; this.opt_if_exists(); } break; } - this.state = 2728; + this.state = 2726; this.qualified_name(); - this.state = 2730; + this.state = 2728; this.errorHandler.sync(this); alternative = 1; do { @@ -13935,7 +13812,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 2729; + this.state = 2727; this.seqoptelem(); } } @@ -13943,7 +13820,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2732; + this.state = 2730; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 278, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -13968,29 +13845,29 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 200, PostgreSqlParser.RULE_seqoptelem); let _la: number; try { - this.state = 2767; + this.state = 2765; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AS: this.enterOuterAlt(localContext, 1); { - this.state = 2734; + this.state = 2732; this.match(PostgreSqlParser.KW_AS); - this.state = 2735; + this.state = 2733; this.simpletypename(); } break; case PostgreSqlParser.KW_CACHE: this.enterOuterAlt(localContext, 2); { - this.state = 2736; + this.state = 2734; this.match(PostgreSqlParser.KW_CACHE); - this.state = 2738; + this.state = 2736; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13 || _la === 571 || _la === 573) { { - this.state = 2737; + this.state = 2735; this.numericonly(); } } @@ -14000,19 +13877,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_INCREMENT: this.enterOuterAlt(localContext, 3); { - this.state = 2740; + this.state = 2738; this.match(PostgreSqlParser.KW_INCREMENT); - this.state = 2742; + this.state = 2740; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 2741; + this.state = 2739; this.match(PostgreSqlParser.KW_BY); } } - this.state = 2744; + this.state = 2742; this.numericonly(); } break; @@ -14020,7 +13897,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_MINVALUE: this.enterOuterAlt(localContext, 4); { - this.state = 2745; + this.state = 2743; _la = this.tokenStream.LA(1); if(!(_la === 260 || _la === 262)) { this.errorHandler.recoverInline(this); @@ -14029,16 +13906,16 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2746; + this.state = 2744; this.numericonly(); } break; case PostgreSqlParser.KW_NO: this.enterOuterAlt(localContext, 5); { - this.state = 2747; + this.state = 2745; this.match(PostgreSqlParser.KW_NO); - this.state = 2748; + this.state = 2746; _la = this.tokenStream.LA(1); if(!(_la === 173 || _la === 260 || _la === 262)) { this.errorHandler.recoverInline(this); @@ -14052,65 +13929,65 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_OWNED: this.enterOuterAlt(localContext, 6); { - this.state = 2749; + this.state = 2747; this.match(PostgreSqlParser.KW_OWNED); - this.state = 2750; + this.state = 2748; this.match(PostgreSqlParser.KW_BY); - this.state = 2751; + this.state = 2749; this.column_name(); } break; case PostgreSqlParser.KW_SEQUENCE: this.enterOuterAlt(localContext, 7); { - this.state = 2752; + this.state = 2750; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 2753; + this.state = 2751; this.match(PostgreSqlParser.KW_NAME); - this.state = 2754; + this.state = 2752; this.any_name(); } break; case PostgreSqlParser.KW_START: this.enterOuterAlt(localContext, 8); { - this.state = 2755; + this.state = 2753; this.match(PostgreSqlParser.KW_START); - this.state = 2757; + this.state = 2755; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 2756; + this.state = 2754; this.match(PostgreSqlParser.KW_WITH); } } - this.state = 2759; + this.state = 2757; this.numericonly(); } break; case PostgreSqlParser.KW_RESTART: this.enterOuterAlt(localContext, 9); { - this.state = 2760; + this.state = 2758; this.match(PostgreSqlParser.KW_RESTART); - this.state = 2762; + this.state = 2760; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 282, this.context) ) { case 1: { - this.state = 2761; + this.state = 2759; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 2765; + this.state = 2763; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13 || _la === 571 || _la === 573) { { - this.state = 2764; + this.state = 2762; this.numericonly(); } } @@ -14140,18 +14017,18 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 202, PostgreSqlParser.RULE_numericonly); let _la: number; try { - this.state = 2774; + this.state = 2772; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 286, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 2770; + this.state = 2768; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13) { { - this.state = 2769; + this.state = 2767; _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { this.errorHandler.recoverInline(this); @@ -14163,14 +14040,14 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 2772; + this.state = 2770; this.match(PostgreSqlParser.Numeric); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 2773; + this.state = 2771; this.signediconst(); } break; @@ -14197,79 +14074,79 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2776; + this.state = 2774; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2778; + this.state = 2776; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 2777; + this.state = 2775; this.opt_or_replace(); } } - this.state = 2781; + this.state = 2779; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 359) { { - this.state = 2780; + this.state = 2778; this.match(PostgreSqlParser.KW_TRUSTED); } } - this.state = 2784; + this.state = 2782; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 2783; + this.state = 2781; this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 2786; + this.state = 2784; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 2787; + this.state = 2785; this.colid(); - this.state = 2800; + this.state = 2798; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 292, this.context) ) { case 1: { - this.state = 2788; + this.state = 2786; this.match(PostgreSqlParser.KW_HANDLER); - this.state = 2789; + this.state = 2787; this.any_name(); - this.state = 2792; + this.state = 2790; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 290, this.context) ) { case 1: { - this.state = 2790; + this.state = 2788; this.match(PostgreSqlParser.KW_INLINE); - this.state = 2791; + this.state = 2789; this.any_name(); } break; } - this.state = 2798; + this.state = 2796; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 291, this.context) ) { case 1: { - this.state = 2794; + this.state = 2792; this.match(PostgreSqlParser.KW_VALIDATOR); - this.state = 2795; + this.state = 2793; this.any_name(); } break; case 2: { - this.state = 2796; + this.state = 2794; this.match(PostgreSqlParser.KW_NO); - this.state = 2797; + this.state = 2795; this.match(PostgreSqlParser.KW_VALIDATOR); } break; @@ -14300,32 +14177,32 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2802; + this.state = 2800; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2803; + this.state = 2801; this.opttablespace(); - this.state = 2806; + this.state = 2804; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 282) { { - this.state = 2804; + this.state = 2802; this.match(PostgreSqlParser.KW_OWNER); - this.state = 2805; + this.state = 2803; this.rolespec(); } } - this.state = 2808; + this.state = 2806; this.match(PostgreSqlParser.KW_LOCATION); - this.state = 2809; + this.state = 2807; this.sconst(); - this.state = 2811; + this.state = 2809; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 294, this.context) ) { case 1: { - this.state = 2810; + this.state = 2808; this.opt_reloptions(); } break; @@ -14354,53 +14231,53 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2813; + this.state = 2811; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2814; + this.state = 2812; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 2816; + this.state = 2814; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 295, this.context) ) { case 1: { - this.state = 2815; + this.state = 2813; this.opt_if_not_exists(); } break; } - this.state = 2818; + this.state = 2816; this.colid(); - this.state = 2820; + this.state = 2818; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 296, this.context) ) { case 1: { - this.state = 2819; + this.state = 2817; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 2829; + this.state = 2827; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 298, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 2827; + this.state = 2825; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SCHEMA: { - this.state = 2822; + this.state = 2820; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 2823; + this.state = 2821; this.schema_name(); } break; case PostgreSqlParser.KW_FROM: case PostgreSqlParser.KW_VERSION: { - this.state = 2824; + this.state = 2822; _la = this.tokenStream.LA(1); if(!(_la === 64 || _la === 375)) { this.errorHandler.recoverInline(this); @@ -14409,13 +14286,13 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2825; + this.state = 2823; this.nonreservedword_or_sconst(); } break; case PostgreSqlParser.KW_CASCADE: { - this.state = 2826; + this.state = 2824; this.match(PostgreSqlParser.KW_CASCADE); } break; @@ -14424,7 +14301,7 @@ export class PostgreSqlParser extends SQLParserBase { } } } - this.state = 2831; + this.state = 2829; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 298, this.context); } @@ -14451,27 +14328,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2832; + this.state = 2830; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2833; + this.state = 2831; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 2834; + this.state = 2832; this.colid(); - this.state = 2835; + this.state = 2833; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 2840; + this.state = 2838; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 94) { { { - this.state = 2836; + this.state = 2834; this.match(PostgreSqlParser.KW_TO); - this.state = 2837; + this.state = 2835; this.nonreservedword_or_sconst(); } } - this.state = 2842; + this.state = 2840; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -14498,13 +14375,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2843; + this.state = 2841; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2844; + this.state = 2842; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 2845; + this.state = 2843; this.colid(); - this.state = 2846; + this.state = 2844; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 191)) { this.errorHandler.recoverInline(this); @@ -14513,44 +14390,44 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2879; + this.state = 2877; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 300, this.context) ) { case 1: { - this.state = 2847; + this.state = 2845; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 2848; + this.state = 2846; this.match(PostgreSqlParser.KW_FOR); - this.state = 2849; + this.state = 2847; this.typename(); - this.state = 2850; + this.state = 2848; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 2851; + this.state = 2849; this.colid(); } break; case 2: { - this.state = 2853; + this.state = 2851; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 2854; + this.state = 2852; this.routine_with_argtypes(); } break; case 3: { - this.state = 2855; + this.state = 2853; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 2856; + this.state = 2854; this.procedure_with_argtypes(); } break; case 4: { - this.state = 2857; + this.state = 2855; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 2858; + this.state = 2856; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -14559,31 +14436,31 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2859; + this.state = 2857; this.any_name(); - this.state = 2860; + this.state = 2858; this.table_access_method_clause(); } break; case 5: { - this.state = 2862; + this.state = 2860; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 2863; + this.state = 2861; this.operator_with_argtypes(); } break; case 6: { - this.state = 2864; + this.state = 2862; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 2865; + this.state = 2863; this.function_with_argtypes(); } break; case 7: { - this.state = 2866; + this.state = 2864; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -14592,43 +14469,43 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2867; + this.state = 2865; this.typename(); } break; case 8: { - this.state = 2868; + this.state = 2866; this.match(PostgreSqlParser.KW_CAST); - this.state = 2869; + this.state = 2867; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2870; + this.state = 2868; this.typename(); - this.state = 2871; + this.state = 2869; this.match(PostgreSqlParser.KW_AS); - this.state = 2872; + this.state = 2870; this.typename(); - this.state = 2873; + this.state = 2871; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 9: { - this.state = 2875; + this.state = 2873; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 2876; + this.state = 2874; this.aggregate_with_argtypes(); } break; case 10: { - this.state = 2877; + this.state = 2875; this.object_type_name(); } break; case 11: { - this.state = 2878; + this.state = 2876; this.object_type_any_name(); } break; @@ -14656,22 +14533,22 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2881; + this.state = 2879; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2882; + this.state = 2880; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2883; + this.state = 2881; this.match(PostgreSqlParser.KW_DATA); - this.state = 2884; + this.state = 2882; this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 2885; + this.state = 2883; this.colid(); - this.state = 2891; + this.state = 2889; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 302, this.context) ) { case 1: { - this.state = 2887; + this.state = 2885; this.errorHandler.sync(this); alternative = 1; do { @@ -14679,7 +14556,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 2886; + this.state = 2884; this.fdw_option(); } } @@ -14687,19 +14564,19 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2889; + this.state = 2887; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 301, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); } break; } - this.state = 2894; + this.state = 2892; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 303, this.context) ) { case 1: { - this.state = 2893; + this.state = 2891; this.create_generic_options(); } break; @@ -14725,14 +14602,14 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 216, PostgreSqlParser.RULE_fdw_option); let _la: number; try { - this.state = 2902; + this.state = 2900; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_HANDLER: case PostgreSqlParser.KW_VALIDATOR: this.enterOuterAlt(localContext, 1); { - this.state = 2896; + this.state = 2894; _la = this.tokenStream.LA(1); if(!(_la === 215 || _la === 373)) { this.errorHandler.recoverInline(this); @@ -14741,12 +14618,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2898; + this.state = 2896; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 304, this.context) ) { case 1: { - this.state = 2897; + this.state = 2895; this.any_name(); } break; @@ -14756,9 +14633,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_NO: this.enterOuterAlt(localContext, 2); { - this.state = 2900; + this.state = 2898; this.match(PostgreSqlParser.KW_NO); - this.state = 2901; + this.state = 2899; _la = this.tokenStream.LA(1); if(!(_la === 215 || _la === 373)) { this.errorHandler.recoverInline(this); @@ -14795,50 +14672,50 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2904; + this.state = 2902; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2905; + this.state = 2903; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2906; + this.state = 2904; this.match(PostgreSqlParser.KW_DATA); - this.state = 2907; + this.state = 2905; this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 2908; + this.state = 2906; this.colid(); - this.state = 2922; + this.state = 2920; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 309, this.context) ) { case 1: { - this.state = 2914; + this.state = 2912; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 215 || _la === 269 || _la === 373) { { - this.state = 2910; + this.state = 2908; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 2909; + this.state = 2907; this.fdw_option(); } } - this.state = 2912; + this.state = 2910; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 215 || _la === 269 || _la === 373); } } - this.state = 2916; + this.state = 2914; this.alter_generic_options(); } break; case 2: { - this.state = 2918; + this.state = 2916; this.errorHandler.sync(this); alternative = 1; do { @@ -14846,7 +14723,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 2917; + this.state = 2915; this.fdw_option(); } } @@ -14854,7 +14731,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 2920; + this.state = 2918; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 308, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -14884,29 +14761,29 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2924; + this.state = 2922; this.match(PostgreSqlParser.KW_OPTIONS); - this.state = 2925; + this.state = 2923; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2926; + this.state = 2924; this.generic_option_elem(); - this.state = 2931; + this.state = 2929; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2927; + this.state = 2925; this.match(PostgreSqlParser.COMMA); - this.state = 2928; + this.state = 2926; this.generic_option_elem(); } } - this.state = 2933; + this.state = 2931; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2934; + this.state = 2932; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -14931,29 +14808,29 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2936; + this.state = 2934; this.match(PostgreSqlParser.KW_OPTIONS); - this.state = 2937; + this.state = 2935; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2938; + this.state = 2936; this.alter_generic_option_elem(); - this.state = 2943; + this.state = 2941; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 2939; + this.state = 2937; this.match(PostgreSqlParser.COMMA); - this.state = 2940; + this.state = 2938; this.alter_generic_option_elem(); } } - this.state = 2945; + this.state = 2943; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2946; + this.state = 2944; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -14978,7 +14855,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2948; + this.state = 2946; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -14987,7 +14864,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 2949; + this.state = 2947; this.generic_option_elem(); } } @@ -15011,9 +14888,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2951; + this.state = 2949; this.collabel(); - this.state = 2952; + this.state = 2950; this.sconst(); } } @@ -15038,58 +14915,58 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2954; + this.state = 2952; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2955; + this.state = 2953; this.match(PostgreSqlParser.KW_SERVER); - this.state = 2957; + this.state = 2955; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 312, this.context) ) { case 1: { - this.state = 2956; + this.state = 2954; this.opt_if_not_exists(); } break; } - this.state = 2959; + this.state = 2957; this.colid(); - this.state = 2962; + this.state = 2960; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 360) { { - this.state = 2960; + this.state = 2958; this.match(PostgreSqlParser.KW_TYPE); - this.state = 2961; + this.state = 2959; this.sconst(); } } - this.state = 2965; + this.state = 2963; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 375) { { - this.state = 2964; + this.state = 2962; this.foreign_server_version(); } } - this.state = 2967; + this.state = 2965; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2968; + this.state = 2966; this.match(PostgreSqlParser.KW_DATA); - this.state = 2969; + this.state = 2967; this.match(PostgreSqlParser.KW_WRAPPER); - this.state = 2970; + this.state = 2968; this.colid(); - this.state = 2972; + this.state = 2970; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { case 1: { - this.state = 2971; + this.state = 2969; this.create_generic_options(); } break; @@ -15116,9 +14993,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2974; + this.state = 2972; this.match(PostgreSqlParser.KW_VERSION); - this.state = 2977; + this.state = 2975; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -15126,13 +15003,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 2975; + this.state = 2973; this.sconst(); } break; case PostgreSqlParser.KW_NULL: { - this.state = 2976; + this.state = 2974; this.match(PostgreSqlParser.KW_NULL); } break; @@ -15161,31 +15038,31 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 2979; + this.state = 2977; this.match(PostgreSqlParser.KW_ALTER); - this.state = 2980; + this.state = 2978; this.match(PostgreSqlParser.KW_SERVER); - this.state = 2981; + this.state = 2979; this.colid(); - this.state = 2987; + this.state = 2985; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_OPTIONS: { - this.state = 2982; + this.state = 2980; this.alter_generic_options(); } break; case PostgreSqlParser.KW_VERSION: { - this.state = 2983; + this.state = 2981; this.foreign_server_version(); - this.state = 2985; + this.state = 2983; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 317, this.context) ) { case 1: { - this.state = 2984; + this.state = 2982; this.alter_generic_options(); } break; @@ -15216,65 +15093,65 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 234, PostgreSqlParser.RULE_createforeigntablestmt); let _la: number; try { - this.state = 3028; + this.state = 3026; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 326, this.context) ) { case 1: localContext = new CreateForeignTableContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2989; + this.state = 2987; this.match(PostgreSqlParser.KW_CREATE); - this.state = 2990; + this.state = 2988; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 2991; + this.state = 2989; this.match(PostgreSqlParser.KW_TABLE); - this.state = 2993; + this.state = 2991; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 319, this.context) ) { case 1: { - this.state = 2992; + this.state = 2990; this.opt_if_not_exists(); } break; } - this.state = 2995; + this.state = 2993; this.table_name_create(); - this.state = 2996; + this.state = 2994; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 2998; + this.state = 2996; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1360008709) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 24575) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (((((_la - 42)) & ~0x1F) === 0 && ((1 << (_la - 42)) & 2099209) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2147491841) !== 0) || ((((_la - 120)) & ~0x1F) === 0 && ((1 << (_la - 120)) & 4294966809) !== 0) || ((((_la - 152)) & ~0x1F) === 0 && ((1 << (_la - 152)) & 4294967295) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 4294967295) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290781183) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 4294967295) !== 0) || ((((_la - 280)) & ~0x1F) === 0 && ((1 << (_la - 280)) & 4294967295) !== 0) || ((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 4294967295) !== 0) || ((((_la - 344)) & ~0x1F) === 0 && ((1 << (_la - 344)) & 4294967295) !== 0) || ((((_la - 376)) & ~0x1F) === 0 && ((1 << (_la - 376)) & 4294967295) !== 0) || ((((_la - 408)) & ~0x1F) === 0 && ((1 << (_la - 408)) & 4294967295) !== 0) || ((((_la - 440)) & ~0x1F) === 0 && ((1 << (_la - 440)) & 4294950911) !== 0) || ((((_la - 473)) & ~0x1F) === 0 && ((1 << (_la - 473)) & 3221225471) !== 0) || ((((_la - 506)) & ~0x1F) === 0 && ((1 << (_la - 506)) & 286719) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 2997; + this.state = 2995; this.tableelementlist(); } } - this.state = 3000; + this.state = 2998; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3002; + this.state = 3000; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 238) { { - this.state = 3001; + this.state = 2999; this.optinherit(); } } - this.state = 3004; + this.state = 3002; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3005; + this.state = 3003; this.colid(); - this.state = 3007; + this.state = 3005; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 322, this.context) ) { case 1: { - this.state = 3006; + this.state = 3004; this.create_generic_options(); } break; @@ -15285,52 +15162,52 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new CreatePartitionForeignTableContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 3009; + this.state = 3007; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3010; + this.state = 3008; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3011; + this.state = 3009; this.match(PostgreSqlParser.KW_TABLE); - this.state = 3013; + this.state = 3011; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 323, this.context) ) { case 1: { - this.state = 3012; + this.state = 3010; this.opt_if_not_exists(); } break; } - this.state = 3015; + this.state = 3013; this.table_name_create(); - this.state = 3016; + this.state = 3014; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 3017; + this.state = 3015; this.match(PostgreSqlParser.KW_OF); - this.state = 3018; + this.state = 3016; this.table_name(); - this.state = 3020; + this.state = 3018; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 3019; + this.state = 3017; this.opttypedtableelementlist(); } } - this.state = 3022; + this.state = 3020; this.partitionboundspec(); - this.state = 3023; + this.state = 3021; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3024; + this.state = 3022; this.colid(); - this.state = 3026; + this.state = 3024; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 325, this.context) ) { case 1: { - this.state = 3025; + this.state = 3023; this.create_generic_options(); } break; @@ -15360,64 +15237,64 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3030; + this.state = 3028; this.match(PostgreSqlParser.KW_IMPORT); - this.state = 3031; + this.state = 3029; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3032; + this.state = 3030; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 3033; + this.state = 3031; this.schema_name(); - this.state = 3043; + this.state = 3041; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 59 || _la === 74) { { - this.state = 3037; + this.state = 3035; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_LIMIT: { - this.state = 3034; + this.state = 3032; this.match(PostgreSqlParser.KW_LIMIT); - this.state = 3035; + this.state = 3033; this.match(PostgreSqlParser.KW_TO); } break; case PostgreSqlParser.KW_EXCEPT: { - this.state = 3036; + this.state = 3034; this.match(PostgreSqlParser.KW_EXCEPT); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3039; + this.state = 3037; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3040; + this.state = 3038; this.relation_expr_list(); - this.state = 3041; + this.state = 3039; this.match(PostgreSqlParser.CLOSE_PAREN); } } - this.state = 3045; + this.state = 3043; this.match(PostgreSqlParser.KW_FROM); - this.state = 3046; + this.state = 3044; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3047; + this.state = 3045; this.colid(); - this.state = 3048; + this.state = 3046; this.match(PostgreSqlParser.KW_INTO); - this.state = 3049; + this.state = 3047; this.colid(); - this.state = 3051; + this.state = 3049; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 329, this.context) ) { case 1: { - this.state = 3050; + this.state = 3048; this.create_generic_options(); } break; @@ -15445,36 +15322,30 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3053; + this.state = 3051; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3054; + this.state = 3052; this.match(PostgreSqlParser.KW_USER); - this.state = 3055; + this.state = 3053; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 3057; + this.state = 3055; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 3056; + this.state = 3054; this.opt_if_not_exists(); } } - this.state = 3059; + this.state = 3057; this.match(PostgreSqlParser.KW_FOR); - this.state = 3062; + this.state = 3060; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_ROLE: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_SESSION_USER: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: @@ -15891,29 +15762,29 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3060; + this.state = 3058; this.rolespec(); } break; case PostgreSqlParser.KW_USER: { - this.state = 3061; + this.state = 3059; this.match(PostgreSqlParser.KW_USER); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3064; + this.state = 3062; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3065; + this.state = 3063; this.colid(); - this.state = 3067; + this.state = 3065; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 332, this.context) ) { case 1: { - this.state = 3066; + this.state = 3064; this.create_generic_options(); } break; @@ -15940,26 +15811,20 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3069; + this.state = 3067; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3070; + this.state = 3068; this.match(PostgreSqlParser.KW_USER); - this.state = 3071; + this.state = 3069; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 3072; + this.state = 3070; this.match(PostgreSqlParser.KW_FOR); - this.state = 3075; + this.state = 3073; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_ROLE: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_SESSION_USER: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: @@ -16376,24 +16241,24 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3073; + this.state = 3071; this.rolespec(); } break; case PostgreSqlParser.KW_USER: { - this.state = 3074; + this.state = 3072; this.match(PostgreSqlParser.KW_USER); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3077; + this.state = 3075; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3078; + this.state = 3076; this.colid(); - this.state = 3079; + this.state = 3077; this.alter_generic_options(); } } @@ -16418,73 +16283,341 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3081; + this.state = 3079; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3082; + this.state = 3080; this.match(PostgreSqlParser.KW_POLICY); - this.state = 3083; + this.state = 3081; this.colid(); - this.state = 3084; + this.state = 3082; this.match(PostgreSqlParser.KW_ON); - this.state = 3085; + this.state = 3083; this.qualified_name(); - this.state = 3092; + this.state = 3090; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 335, this.context) ) { case 1: { - this.state = 3086; + this.state = 3084; this.match(PostgreSqlParser.KW_AS); - this.state = 3090; + this.state = 3088; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_PERMISSIVE: { - this.state = 3087; + this.state = 3085; this.match(PostgreSqlParser.KW_PERMISSIVE); } break; case PostgreSqlParser.KW_RESTRICTIVE: { - this.state = 3088; + this.state = 3086; this.match(PostgreSqlParser.KW_RESTRICTIVE); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: case PostgreSqlParser.KW_NEXT: case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: case PostgreSqlParser.KW_SCHEMA: case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: case PostgreSqlParser.KW_CALL: case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_COLUMNS: case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: case PostgreSqlParser.KW_DUMP: case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: case PostgreSqlParser.KW_VARIABLE_CONFLICT: @@ -16513,6 +16646,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: case PostgreSqlParser.QuotedIdentifier: case PostgreSqlParser.UnicodeQuotedIdentifier: @@ -16523,7 +16659,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3089; + this.state = 3087; this.identifier(); } break; @@ -16533,14 +16669,14 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 3096; + this.state = 3094; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 3094; + this.state = 3092; this.match(PostgreSqlParser.KW_FOR); - this.state = 3095; + this.state = 3093; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 88 || _la === 182 || _la === 241 || _la === 369)) { this.errorHandler.recoverInline(this); @@ -16552,34 +16688,34 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 3100; + this.state = 3098; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 94) { { - this.state = 3098; + this.state = 3096; this.match(PostgreSqlParser.KW_TO); - this.state = 3099; + this.state = 3097; this.role_list(); } } - this.state = 3103; + this.state = 3101; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3102; + this.state = 3100; this.rowsecurityoptionalexpr(); } } - this.state = 3106; + this.state = 3104; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 339, this.context) ) { case 1: { - this.state = 3105; + this.state = 3103; this.rowsecurityoptionalwithcheck(); } break; @@ -16607,44 +16743,44 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3108; + this.state = 3106; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3109; + this.state = 3107; this.match(PostgreSqlParser.KW_POLICY); - this.state = 3110; + this.state = 3108; this.colid(); - this.state = 3111; + this.state = 3109; this.match(PostgreSqlParser.KW_ON); - this.state = 3112; + this.state = 3110; this.qualified_name(); - this.state = 3115; + this.state = 3113; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 94) { { - this.state = 3113; + this.state = 3111; this.match(PostgreSqlParser.KW_TO); - this.state = 3114; + this.state = 3112; this.role_list(); } } - this.state = 3118; + this.state = 3116; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 3117; + this.state = 3115; this.rowsecurityoptionalexpr(); } } - this.state = 3121; + this.state = 3119; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 342, this.context) ) { case 1: { - this.state = 3120; + this.state = 3118; this.rowsecurityoptionalwithcheck(); } break; @@ -16673,51 +16809,51 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3123; + this.state = 3121; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3124; + this.state = 3122; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 3125; + this.state = 3123; this.procedure_name(); - this.state = 3127; + this.state = 3125; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 3126; + this.state = 3124; this.func_args(); } } - this.state = 3155; + this.state = 3153; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 347, this.context) ) { case 1: { - this.state = 3129; + this.state = 3127; this.procedure_action(); - this.state = 3133; + this.state = 3131; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 344, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3130; + this.state = 3128; this.procedure_action(); } } } - this.state = 3135; + this.state = 3133; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 344, this.context); } - this.state = 3137; + this.state = 3135; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 345, this.context) ) { case 1: { - this.state = 3136; + this.state = 3134; this.match(PostgreSqlParser.KW_RESTRICT); } break; @@ -16726,53 +16862,53 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 3139; + this.state = 3137; this.match(PostgreSqlParser.KW_RENAME); - this.state = 3140; + this.state = 3138; this.match(PostgreSqlParser.KW_TO); - this.state = 3141; + this.state = 3139; this.procedure_name_create(); } break; case 3: { - this.state = 3142; + this.state = 3140; this.match(PostgreSqlParser.KW_OWNER); - this.state = 3143; + this.state = 3141; this.match(PostgreSqlParser.KW_TO); - this.state = 3144; + this.state = 3142; this.rolespec(); } break; case 4: { - this.state = 3145; + this.state = 3143; this.match(PostgreSqlParser.KW_SET); - this.state = 3146; + this.state = 3144; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 3147; + this.state = 3145; this.schema_name_create(); } break; case 5: { - this.state = 3149; + this.state = 3147; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 3148; + this.state = 3146; this.match(PostgreSqlParser.KW_NO); } } - this.state = 3151; + this.state = 3149; this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 3152; + this.state = 3150; this.match(PostgreSqlParser.KW_ON); - this.state = 3153; + this.state = 3151; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 3154; + this.state = 3152; this.colid(); } break; @@ -16798,48 +16934,48 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 248, PostgreSqlParser.RULE_procedure_action); let _la: number; try { - this.state = 3186; + this.state = 3184; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 353, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3167; + this.state = 3165; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 350, this.context) ) { case 1: { - this.state = 3158; + this.state = 3156; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 3157; + this.state = 3155; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 3160; + this.state = 3158; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 3161; + this.state = 3159; this.match(PostgreSqlParser.KW_INVOKER); } break; case 2: { - this.state = 3163; + this.state = 3161; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 3162; + this.state = 3160; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 3165; + this.state = 3163; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 3166; + this.state = 3164; this.match(PostgreSqlParser.KW_DEFINER); } break; @@ -16849,11 +16985,11 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3169; + this.state = 3167; this.match(PostgreSqlParser.KW_SET); - this.state = 3170; + this.state = 3168; this.colid(); - this.state = 3171; + this.state = 3169; _la = this.tokenStream.LA(1); if(!(_la === 9 || _la === 94)) { this.errorHandler.recoverInline(this); @@ -16862,18 +16998,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3174; + this.state = 3172; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context) ) { case 1: { - this.state = 3172; + this.state = 3170; this.colid(); } break; case 2: { - this.state = 3173; + this.state = 3171; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -16883,31 +17019,25 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3176; + this.state = 3174; this.match(PostgreSqlParser.KW_SET); - this.state = 3177; + this.state = 3175; this.colid(); - this.state = 3178; + this.state = 3176; this.match(PostgreSqlParser.KW_FROM); - this.state = 3179; + this.state = 3177; this.match(PostgreSqlParser.KW_CURRENT); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3181; + this.state = 3179; this.match(PostgreSqlParser.KW_RESET); - this.state = 3184; + this.state = 3182; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -17289,6 +17419,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -17301,13 +17432,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3182; + this.state = 3180; this.colid(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 3183; + this.state = 3181; this.match(PostgreSqlParser.KW_ALL); } break; @@ -17338,13 +17469,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3188; + this.state = 3186; this.match(PostgreSqlParser.KW_USING); - this.state = 3189; + this.state = 3187; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3190; + this.state = 3188; this.expression(); - this.state = 3191; + this.state = 3189; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -17368,15 +17499,15 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3193; + this.state = 3191; this.match(PostgreSqlParser.KW_WITH); - this.state = 3194; + this.state = 3192; this.match(PostgreSqlParser.KW_CHECK); - this.state = 3195; + this.state = 3193; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3196; + this.state = 3194; this.expression(); - this.state = 3197; + this.state = 3195; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -17401,17 +17532,17 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3199; + this.state = 3197; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3200; + this.state = 3198; this.match(PostgreSqlParser.KW_ACCESS); - this.state = 3201; + this.state = 3199; this.match(PostgreSqlParser.KW_METHOD); - this.state = 3202; + this.state = 3200; this.colid(); - this.state = 3203; + this.state = 3201; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3204; + this.state = 3202; _la = this.tokenStream.LA(1); if(!(_la === 92 || _la === 226)) { this.errorHandler.recoverInline(this); @@ -17420,9 +17551,9 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3205; + this.state = 3203; this.match(PostgreSqlParser.KW_HANDLER); - this.state = 3206; + this.state = 3204; this.any_name(); } } @@ -17445,50 +17576,50 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 256, PostgreSqlParser.RULE_createtrigstmt); let _la: number; try { - this.state = 3286; + this.state = 3284; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 368, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3208; + this.state = 3206; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3210; + this.state = 3208; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 3209; + this.state = 3207; this.opt_or_replace(); } } - this.state = 3212; + this.state = 3210; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 3213; + this.state = 3211; this.colid(); - this.state = 3214; + this.state = 3212; this.triggeractiontime(); - this.state = 3215; + this.state = 3213; this.triggerevents(); - this.state = 3216; + this.state = 3214; this.match(PostgreSqlParser.KW_ON); - this.state = 3217; + this.state = 3215; this.table_name(); - this.state = 3229; + this.state = 3227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 447) { { - this.state = 3218; + this.state = 3216; this.match(PostgreSqlParser.KW_REFERENCING); - this.state = 3225; + this.state = 3223; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 3219; + this.state = 3217; _la = this.tokenStream.LA(1); if(!(_la === 448 || _la === 449)) { this.errorHandler.recoverInline(this); @@ -17497,7 +17628,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3220; + this.state = 3218; _la = this.tokenStream.LA(1); if(!(_la === 92 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -17506,45 +17637,45 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3222; + this.state = 3220; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 3221; + this.state = 3219; this.match(PostgreSqlParser.KW_AS); } } - this.state = 3224; + this.state = 3222; this.colid(); } } - this.state = 3227; + this.state = 3225; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 448 || _la === 449); } } - this.state = 3236; + this.state = 3234; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 3231; + this.state = 3229; this.match(PostgreSqlParser.KW_FOR); - this.state = 3233; + this.state = 3231; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3232; + this.state = 3230; this.match(PostgreSqlParser.KW_EACH); } } - this.state = 3235; + this.state = 3233; _la = this.tokenStream.LA(1); if(!(_la === 341 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -17556,109 +17687,109 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 3239; + this.state = 3237; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 102) { { - this.state = 3238; + this.state = 3236; this.triggerwhen(); } } - this.state = 3241; + this.state = 3239; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 3242; + this.state = 3240; this.function_or_procedure(); - this.state = 3243; + this.state = 3241; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3244; + this.state = 3242; this.triggerfuncargs(); - this.state = 3245; + this.state = 3243; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3247; + this.state = 3245; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3249; + this.state = 3247; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 3248; + this.state = 3246; this.opt_or_replace(); } } - this.state = 3252; + this.state = 3250; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 3251; + this.state = 3249; this.match(PostgreSqlParser.KW_CONSTRAINT); } } - this.state = 3254; + this.state = 3252; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 3255; + this.state = 3253; this.colid(); - this.state = 3256; + this.state = 3254; this.triggeractiontime(); - this.state = 3257; + this.state = 3255; this.triggerevents(); - this.state = 3258; + this.state = 3256; this.match(PostgreSqlParser.KW_ON); - this.state = 3259; + this.state = 3257; this.table_name(); - this.state = 3262; + this.state = 3260; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64) { { - this.state = 3260; + this.state = 3258; this.match(PostgreSqlParser.KW_FROM); - this.state = 3261; + this.state = 3259; this.qualified_name(); } } - this.state = 3267; + this.state = 3265; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (((((_la - 54)) & ~0x1F) === 0 && ((1 << (_la - 54)) & 8421377) !== 0) || _la === 269) { { { - this.state = 3264; + this.state = 3262; this.constraintattributeElem(); } } - this.state = 3269; + this.state = 3267; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3275; + this.state = 3273; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 3270; + this.state = 3268; this.match(PostgreSqlParser.KW_FOR); - this.state = 3272; + this.state = 3270; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 192) { { - this.state = 3271; + this.state = 3269; this.match(PostgreSqlParser.KW_EACH); } } - this.state = 3274; + this.state = 3272; _la = this.tokenStream.LA(1); if(!(_la === 341 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -17670,25 +17801,25 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 3278; + this.state = 3276; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 102) { { - this.state = 3277; + this.state = 3275; this.triggerwhen(); } } - this.state = 3280; + this.state = 3278; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 3281; + this.state = 3279; this.function_or_procedure(); - this.state = 3282; + this.state = 3280; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3283; + this.state = 3281; this.triggerfuncargs(); - this.state = 3284; + this.state = 3282; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -17712,29 +17843,29 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new TriggeractiontimeContext(this.context, this.state); this.enterRule(localContext, 258, PostgreSqlParser.RULE_triggeractiontime); try { - this.state = 3292; + this.state = 3290; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_BEFORE: this.enterOuterAlt(localContext, 1); { - this.state = 3288; + this.state = 3286; this.match(PostgreSqlParser.KW_BEFORE); } break; case PostgreSqlParser.KW_AFTER: this.enterOuterAlt(localContext, 2); { - this.state = 3289; + this.state = 3287; this.match(PostgreSqlParser.KW_AFTER); } break; case PostgreSqlParser.KW_INSTEAD: this.enterOuterAlt(localContext, 3); { - this.state = 3290; + this.state = 3288; this.match(PostgreSqlParser.KW_INSTEAD); - this.state = 3291; + this.state = 3289; this.match(PostgreSqlParser.KW_OF); } break; @@ -17763,21 +17894,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3294; + this.state = 3292; this.triggeroneevent(); - this.state = 3299; + this.state = 3297; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 82) { { { - this.state = 3295; + this.state = 3293; this.match(PostgreSqlParser.KW_OR); - this.state = 3296; + this.state = 3294; this.triggeroneevent(); } } - this.state = 3301; + this.state = 3299; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -17802,36 +17933,36 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 262, PostgreSqlParser.RULE_triggeroneevent); let _la: number; try { - this.state = 3310; + this.state = 3308; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_INSERT: this.enterOuterAlt(localContext, 1); { - this.state = 3302; + this.state = 3300; this.match(PostgreSqlParser.KW_INSERT); } break; case PostgreSqlParser.KW_DELETE: this.enterOuterAlt(localContext, 2); { - this.state = 3303; + this.state = 3301; this.match(PostgreSqlParser.KW_DELETE); } break; case PostgreSqlParser.KW_UPDATE: this.enterOuterAlt(localContext, 3); { - this.state = 3304; + this.state = 3302; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 3307; + this.state = 3305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 275) { { - this.state = 3305; + this.state = 3303; this.match(PostgreSqlParser.KW_OF); - this.state = 3306; + this.state = 3304; this.column_list(); } } @@ -17841,7 +17972,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_TRUNCATE: this.enterOuterAlt(localContext, 4); { - this.state = 3309; + this.state = 3307; this.match(PostgreSqlParser.KW_TRUNCATE); } break; @@ -17869,13 +18000,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3312; + this.state = 3310; this.match(PostgreSqlParser.KW_WHEN); - this.state = 3313; + this.state = 3311; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3314; + this.state = 3312; this.expression(); - this.state = 3315; + this.state = 3313; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -17897,24 +18028,24 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Function_or_procedureContext(this.context, this.state); this.enterRule(localContext, 266, PostgreSqlParser.RULE_function_or_procedure); try { - this.state = 3321; + this.state = 3319; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: this.enterOuterAlt(localContext, 1); { - this.state = 3317; + this.state = 3315; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 3318; + this.state = 3316; this.function_name(); } break; case PostgreSqlParser.KW_PROCEDURE: this.enterOuterAlt(localContext, 2); { - this.state = 3319; + this.state = 3317; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 3320; + this.state = 3318; this.procedure_name(); } break; @@ -17943,7 +18074,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3325; + this.state = 3323; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: @@ -18424,6 +18555,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -18438,7 +18570,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3323; + this.state = 3321; this.triggerfuncarg(); } break; @@ -18451,19 +18583,19 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 3331; + this.state = 3329; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3327; + this.state = 3325; this.match(PostgreSqlParser.COMMA); - this.state = 3328; + this.state = 3326; this.triggerfuncarg(); } } - this.state = 3333; + this.state = 3331; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -18487,34 +18619,34 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new TriggerfuncargContext(this.context, this.state); this.enterRule(localContext, 270, PostgreSqlParser.RULE_triggerfuncarg); try { - this.state = 3338; + this.state = 3336; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 376, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3334; + this.state = 3332; this.match(PostgreSqlParser.Integral); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3335; + this.state = 3333; this.match(PostgreSqlParser.Numeric); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3336; + this.state = 3334; this.sconst(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3337; + this.state = 3335; this.collabel(); } break; @@ -18539,32 +18671,32 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 272, PostgreSqlParser.RULE_constraintattributeElem); let _la: number; try { - this.state = 3350; + this.state = 3348; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 378, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3341; + this.state = 3339; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 3340; + this.state = 3338; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 3343; + this.state = 3341; this.match(PostgreSqlParser.KW_DEFERRABLE); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3344; + this.state = 3342; this.match(PostgreSqlParser.KW_INITIALLY); - this.state = 3345; + this.state = 3343; _la = this.tokenStream.LA(1); if(!(_la === 180 || _la === 221)) { this.errorHandler.recoverInline(this); @@ -18578,18 +18710,18 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3346; + this.state = 3344; this.match(PostgreSqlParser.KW_NOT); - this.state = 3347; + this.state = 3345; this.match(PostgreSqlParser.KW_VALID); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3348; + this.state = 3346; this.match(PostgreSqlParser.KW_NO); - this.state = 3349; + this.state = 3347; this.match(PostgreSqlParser.KW_INHERIT); } break; @@ -18616,53 +18748,53 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3352; + this.state = 3350; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3353; + this.state = 3351; this.match(PostgreSqlParser.KW_EVENT); - this.state = 3354; + this.state = 3352; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 3355; + this.state = 3353; this.colid(); - this.state = 3356; + this.state = 3354; this.match(PostgreSqlParser.KW_ON); - this.state = 3357; + this.state = 3355; this.collabel(); - this.state = 3367; + this.state = 3365; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 102) { { - this.state = 3358; + this.state = 3356; this.match(PostgreSqlParser.KW_WHEN); - this.state = 3359; + this.state = 3357; this.event_trigger_when_item(); - this.state = 3364; + this.state = 3362; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 33) { { { - this.state = 3360; + this.state = 3358; this.match(PostgreSqlParser.KW_AND); - this.state = 3361; + this.state = 3359; this.event_trigger_when_item(); } } - this.state = 3366; + this.state = 3364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 3369; + this.state = 3367; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 3370; + this.state = 3368; this.function_or_procedure(); - this.state = 3371; + this.state = 3369; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3372; + this.state = 3370; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -18687,29 +18819,29 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3374; + this.state = 3372; this.colid(); - this.state = 3375; + this.state = 3373; this.match(PostgreSqlParser.KW_IN); - this.state = 3376; + this.state = 3374; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3377; + this.state = 3375; this.sconst(); - this.state = 3381; + this.state = 3379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3378; + this.state = 3376; this.notify_payload(); } } - this.state = 3383; + this.state = 3381; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3384; + this.state = 3382; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -18734,27 +18866,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3386; + this.state = 3384; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3387; + this.state = 3385; this.match(PostgreSqlParser.KW_EVENT); - this.state = 3388; + this.state = 3386; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 3389; + this.state = 3387; this.colid(); - this.state = 3395; + this.state = 3393; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ENABLE: { - this.state = 3390; + this.state = 3388; this.match(PostgreSqlParser.KW_ENABLE); - this.state = 3392; + this.state = 3390; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 382, this.context) ) { case 1: { - this.state = 3391; + this.state = 3389; _la = this.tokenStream.LA(1); if(!(_la === 139 || _la === 312)) { this.errorHandler.recoverInline(this); @@ -18770,7 +18902,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_DISABLE: { - this.state = 3394; + this.state = 3392; this.match(PostgreSqlParser.KW_DISABLE); } break; @@ -18800,33 +18932,33 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3397; + this.state = 3395; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3398; + this.state = 3396; this.match(PostgreSqlParser.KW_ASSERTION); - this.state = 3399; + this.state = 3397; this.any_name(); - this.state = 3400; + this.state = 3398; this.match(PostgreSqlParser.KW_CHECK); - this.state = 3401; + this.state = 3399; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3402; + this.state = 3400; this.expression(); - this.state = 3403; + this.state = 3401; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3407; + this.state = 3405; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 384, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 3404; + this.state = 3402; this.constraintattributeElem(); } } } - this.state = 3409; + this.state = 3407; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 384, this.context); } @@ -18851,64 +18983,64 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 282, PostgreSqlParser.RULE_definestmt); let _la: number; try { - this.state = 3488; + this.state = 3486; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 396, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3410; + this.state = 3408; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3412; + this.state = 3410; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 3411; + this.state = 3409; this.opt_or_replace(); } } - this.state = 3414; + this.state = 3412; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 3415; + this.state = 3413; this.function_name(); - this.state = 3430; + this.state = 3428; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 387, this.context) ) { case 1: { { - this.state = 3416; + this.state = 3414; this.aggr_args(); - this.state = 3417; + this.state = 3415; this.definition(); } } break; case 2: { - this.state = 3419; + this.state = 3417; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3420; + this.state = 3418; this.old_aggr_elem(); - this.state = 3425; + this.state = 3423; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3421; + this.state = 3419; this.match(PostgreSqlParser.COMMA); - this.state = 3422; + this.state = 3420; this.old_aggr_elem(); } } - this.state = 3427; + this.state = 3425; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3428; + this.state = 3426; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -18918,79 +19050,79 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3432; + this.state = 3430; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3433; + this.state = 3431; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3434; + this.state = 3432; this.any_operator(); - this.state = 3435; + this.state = 3433; this.definition(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3437; + this.state = 3435; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3438; + this.state = 3436; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3439; + this.state = 3437; this.any_name(); - this.state = 3440; + this.state = 3438; this.match(PostgreSqlParser.KW_AS); - this.state = 3458; + this.state = 3456; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 3441; + this.state = 3439; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3443; + this.state = 3441; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 3442; + this.state = 3440; this.tablefuncelementlist(); } } - this.state = 3445; + this.state = 3443; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_ENUM: { - this.state = 3446; + this.state = 3444; this.match(PostgreSqlParser.KW_ENUM); - this.state = 3447; + this.state = 3445; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3455; + this.state = 3453; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 558)) & ~0x1F) === 0 && ((1 << (_la - 558)) & 67108885) !== 0)) { { - this.state = 3448; + this.state = 3446; this.sconst(); - this.state = 3452; + this.state = 3450; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3449; + this.state = 3447; this.notify_payload(); } } - this.state = 3454; + this.state = 3452; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 3457; + this.state = 3455; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -19002,30 +19134,30 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3460; + this.state = 3458; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3461; + this.state = 3459; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3462; + this.state = 3460; this.any_name(); - this.state = 3468; + this.state = 3466; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 393, this.context) ) { case 1: { - this.state = 3465; + this.state = 3463; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 3463; + this.state = 3461; this.match(PostgreSqlParser.KW_AS); - this.state = 3464; + this.state = 3462; this.match(PostgreSqlParser.KW_RANGE); } } - this.state = 3467; + this.state = 3465; this.definition(); } break; @@ -19035,13 +19167,13 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3470; + this.state = 3468; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3471; + this.state = 3469; this.match(PostgreSqlParser.KW_TEXT); - this.state = 3472; + this.state = 3470; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 3473; + this.state = 3471; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { this.errorHandler.recoverInline(this); @@ -19050,46 +19182,46 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3474; + this.state = 3472; this.any_name(); - this.state = 3475; + this.state = 3473; this.definition(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3477; + this.state = 3475; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3478; + this.state = 3476; this.match(PostgreSqlParser.KW_COLLATION); - this.state = 3480; + this.state = 3478; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 394, this.context) ) { case 1: { - this.state = 3479; + this.state = 3477; this.opt_if_not_exists(); } break; } - this.state = 3482; + this.state = 3480; this.any_name(); - this.state = 3486; + this.state = 3484; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 3483; + this.state = 3481; this.definition(); } break; case PostgreSqlParser.KW_FROM: { { - this.state = 3484; + this.state = 3482; this.match(PostgreSqlParser.KW_FROM); - this.state = 3485; + this.state = 3483; this.any_name(); } } @@ -19122,27 +19254,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3490; + this.state = 3488; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3491; + this.state = 3489; this.def_elem(); - this.state = 3496; + this.state = 3494; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3492; + this.state = 3490; this.match(PostgreSqlParser.COMMA); - this.state = 3493; + this.state = 3491; this.def_elem(); } } - this.state = 3498; + this.state = 3496; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3499; + this.state = 3497; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -19167,16 +19299,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3501; + this.state = 3499; this.collabel(); - this.state = 3504; + this.state = 3502; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10) { { - this.state = 3502; + this.state = 3500; this.match(PostgreSqlParser.EQUAL); - this.state = 3503; + this.state = 3501; this.def_arg(); } } @@ -19201,48 +19333,48 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Def_argContext(this.context, this.state); this.enterRule(localContext, 288, PostgreSqlParser.RULE_def_arg); try { - this.state = 3512; + this.state = 3510; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 399, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3506; + this.state = 3504; this.func_type(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3507; + this.state = 3505; this.reserved_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3508; + this.state = 3506; this.qual_all_op(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3509; + this.state = 3507; this.numericonly(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3510; + this.state = 3508; this.sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3511; + this.state = 3509; this.match(PostgreSqlParser.KW_NONE); } break; @@ -19268,11 +19400,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3514; + this.state = 3512; this.identifier(); - this.state = 3515; + this.state = 3513; this.match(PostgreSqlParser.EQUAL); - this.state = 3516; + this.state = 3514; this.def_arg(); } } @@ -19295,40 +19427,40 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 292, PostgreSqlParser.RULE_alterenumstmt); let _la: number; try { - this.state = 3540; + this.state = 3538; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 402, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3518; + this.state = 3516; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3519; + this.state = 3517; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3520; + this.state = 3518; this.any_name(); - this.state = 3521; + this.state = 3519; this.match(PostgreSqlParser.KW_ADD); - this.state = 3522; + this.state = 3520; this.match(PostgreSqlParser.KW_VALUE); - this.state = 3524; + this.state = 3522; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 3523; + this.state = 3521; this.opt_if_not_exists(); } } - this.state = 3526; + this.state = 3524; this.sconst(); - this.state = 3529; + this.state = 3527; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 401, this.context) ) { case 1: { - this.state = 3527; + this.state = 3525; _la = this.tokenStream.LA(1); if(!(_la === 135 || _la === 145)) { this.errorHandler.recoverInline(this); @@ -19337,7 +19469,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3528; + this.state = 3526; this.sconst(); } break; @@ -19347,21 +19479,21 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3531; + this.state = 3529; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3532; + this.state = 3530; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3533; + this.state = 3531; this.any_name(); - this.state = 3534; + this.state = 3532; this.match(PostgreSqlParser.KW_RENAME); - this.state = 3535; + this.state = 3533; this.match(PostgreSqlParser.KW_VALUE); - this.state = 3536; + this.state = 3534; this.sconst(); - this.state = 3537; + this.state = 3535; this.match(PostgreSqlParser.KW_TO); - this.state = 3538; + this.state = 3536; this.sconst(); } break; @@ -19387,11 +19519,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3542; + this.state = 3540; this.match(PostgreSqlParser.KW_IF); - this.state = 3543; + this.state = 3541; this.match(PostgreSqlParser.KW_NOT); - this.state = 3544; + this.state = 3542; this.match(PostgreSqlParser.KW_EXISTS); } } @@ -19416,61 +19548,61 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3546; + this.state = 3544; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3547; + this.state = 3545; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3548; + this.state = 3546; this.match(PostgreSqlParser.KW_CLASS); - this.state = 3549; + this.state = 3547; this.any_name(); - this.state = 3551; + this.state = 3549; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 3550; + this.state = 3548; this.match(PostgreSqlParser.KW_DEFAULT); } } - this.state = 3553; + this.state = 3551; this.match(PostgreSqlParser.KW_FOR); - this.state = 3554; + this.state = 3552; this.match(PostgreSqlParser.KW_TYPE); - this.state = 3555; + this.state = 3553; this.typename(); - this.state = 3556; + this.state = 3554; this.table_access_method_clause(); - this.state = 3559; + this.state = 3557; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 206) { { - this.state = 3557; + this.state = 3555; this.match(PostgreSqlParser.KW_FAMILY); - this.state = 3558; + this.state = 3556; this.any_name(); } } - this.state = 3561; + this.state = 3559; this.match(PostgreSqlParser.KW_AS); - this.state = 3562; + this.state = 3560; this.opclass_item(); - this.state = 3567; + this.state = 3565; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3563; + this.state = 3561; this.match(PostgreSqlParser.COMMA); - this.state = 3564; + this.state = 3562; this.opclass_item(); } } - this.state = 3569; + this.state = 3567; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -19495,52 +19627,52 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 298, PostgreSqlParser.RULE_opclass_item); let _la: number; try { - this.state = 3596; + this.state = 3594; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_OPERATOR: this.enterOuterAlt(localContext, 1); { - this.state = 3570; + this.state = 3568; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3571; + this.state = 3569; this.match(PostgreSqlParser.Integral); - this.state = 3572; + this.state = 3570; this.any_operator(); - this.state = 3574; + this.state = 3572; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 406, this.context) ) { case 1: { - this.state = 3573; + this.state = 3571; this.oper_argtypes(); } break; } - this.state = 3583; + this.state = 3581; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 3576; + this.state = 3574; this.match(PostgreSqlParser.KW_FOR); - this.state = 3581; + this.state = 3579; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SEARCH: { - this.state = 3577; + this.state = 3575; this.match(PostgreSqlParser.KW_SEARCH); } break; case PostgreSqlParser.KW_ORDER: { { - this.state = 3578; + this.state = 3576; this.match(PostgreSqlParser.KW_ORDER); - this.state = 3579; + this.state = 3577; this.match(PostgreSqlParser.KW_BY); - this.state = 3580; + this.state = 3578; this.any_name(); } } @@ -19551,12 +19683,12 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 3586; + this.state = 3584; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 409, this.context) ) { case 1: { - this.state = 3585; + this.state = 3583; this.match(PostgreSqlParser.KW_RECHECK); } break; @@ -19566,30 +19698,30 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_FUNCTION: this.enterOuterAlt(localContext, 2); { - this.state = 3588; + this.state = 3586; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 3589; + this.state = 3587; this.match(PostgreSqlParser.Integral); - this.state = 3591; + this.state = 3589; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 3590; + this.state = 3588; this.prep_type_clause(); } } - this.state = 3593; + this.state = 3591; this.function_with_argtypes(); } break; case PostgreSqlParser.KW_STORAGE: this.enterOuterAlt(localContext, 3); { - this.state = 3594; + this.state = 3592; this.match(PostgreSqlParser.KW_STORAGE); - this.state = 3595; + this.state = 3593; this.typename(); } break; @@ -19617,15 +19749,15 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3598; + this.state = 3596; this.match(PostgreSqlParser.KW_CREATE); - this.state = 3599; + this.state = 3597; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3600; + this.state = 3598; this.match(PostgreSqlParser.KW_FAMILY); - this.state = 3601; + this.state = 3599; this.any_name(); - this.state = 3602; + this.state = 3600; this.table_access_method_clause(); } } @@ -19650,38 +19782,38 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3604; + this.state = 3602; this.match(PostgreSqlParser.KW_ALTER); - this.state = 3605; + this.state = 3603; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3606; + this.state = 3604; this.match(PostgreSqlParser.KW_FAMILY); - this.state = 3607; + this.state = 3605; this.any_name(); - this.state = 3608; + this.state = 3606; this.table_access_method_clause(); - this.state = 3627; + this.state = 3625; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ADD: { - this.state = 3609; + this.state = 3607; this.match(PostgreSqlParser.KW_ADD); - this.state = 3610; + this.state = 3608; this.opclass_item(); - this.state = 3615; + this.state = 3613; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3611; + this.state = 3609; this.match(PostgreSqlParser.COMMA); - this.state = 3612; + this.state = 3610; this.opclass_item(); } } - this.state = 3617; + this.state = 3615; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -19689,23 +19821,23 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_DROP: { - this.state = 3618; + this.state = 3616; this.match(PostgreSqlParser.KW_DROP); - this.state = 3619; + this.state = 3617; this.opclass_drop(); - this.state = 3624; + this.state = 3622; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3620; + this.state = 3618; this.match(PostgreSqlParser.COMMA); - this.state = 3621; + this.state = 3619; this.opclass_drop(); } } - this.state = 3626; + this.state = 3624; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -19737,7 +19869,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3629; + this.state = 3627; _la = this.tokenStream.LA(1); if(!(_la === 211 || _la === 278)) { this.errorHandler.recoverInline(this); @@ -19746,9 +19878,9 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3630; + this.state = 3628; this.match(PostgreSqlParser.Integral); - this.state = 3631; + this.state = 3629; this.prep_type_clause(); } } @@ -19772,17 +19904,17 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3633; + this.state = 3631; this.match(PostgreSqlParser.KW_REASSIGN); - this.state = 3634; + this.state = 3632; this.match(PostgreSqlParser.KW_OWNED); - this.state = 3635; + this.state = 3633; this.match(PostgreSqlParser.KW_BY); - this.state = 3636; + this.state = 3634; this.role_list(); - this.state = 3637; + this.state = 3635; this.match(PostgreSqlParser.KW_TO); - this.state = 3638; + this.state = 3636; this.rolespec(); } } @@ -19805,115 +19937,115 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 308, PostgreSqlParser.RULE_dropstmt); let _la: number; try { - this.state = 3847; + this.state = 3845; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 452, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 3640; + this.state = 3638; this.match(PostgreSqlParser.KW_DROP); - this.state = 3663; + this.state = 3661; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SEQUENCE: { - this.state = 3641; + this.state = 3639; this.match(PostgreSqlParser.KW_SEQUENCE); } break; case PostgreSqlParser.KW_INDEX: { - this.state = 3642; + this.state = 3640; this.match(PostgreSqlParser.KW_INDEX); } break; case PostgreSqlParser.KW_COLLATION: { - this.state = 3643; + this.state = 3641; this.match(PostgreSqlParser.KW_COLLATION); } break; case PostgreSqlParser.KW_CONVERSION: { - this.state = 3644; + this.state = 3642; this.match(PostgreSqlParser.KW_CONVERSION); } break; case PostgreSqlParser.KW_STATISTICS: { - this.state = 3645; + this.state = 3643; this.match(PostgreSqlParser.KW_STATISTICS); } break; case PostgreSqlParser.KW_PUBLICATION: { - this.state = 3646; + this.state = 3644; this.match(PostgreSqlParser.KW_PUBLICATION); } break; case PostgreSqlParser.KW_SERVER: { - this.state = 3647; + this.state = 3645; this.match(PostgreSqlParser.KW_SERVER); } break; case PostgreSqlParser.KW_ACCESS: { - this.state = 3648; + this.state = 3646; this.match(PostgreSqlParser.KW_ACCESS); - this.state = 3649; + this.state = 3647; this.match(PostgreSqlParser.KW_METHOD); } break; case PostgreSqlParser.KW_EVENT: { - this.state = 3650; + this.state = 3648; this.match(PostgreSqlParser.KW_EVENT); - this.state = 3651; + this.state = 3649; this.match(PostgreSqlParser.KW_TRIGGER); } break; case PostgreSqlParser.KW_EXTENSION: { - this.state = 3652; + this.state = 3650; this.match(PostgreSqlParser.KW_EXTENSION); } break; case PostgreSqlParser.KW_LANGUAGE: case PostgreSqlParser.KW_PROCEDURAL: { - this.state = 3654; + this.state = 3652; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 3653; + this.state = 3651; this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 3656; + this.state = 3654; this.match(PostgreSqlParser.KW_LANGUAGE); } break; case PostgreSqlParser.KW_FOREIGN: { - this.state = 3657; + this.state = 3655; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3658; + this.state = 3656; this.match(PostgreSqlParser.KW_DATA); - this.state = 3659; + this.state = 3657; this.match(PostgreSqlParser.KW_WRAPPER); } break; case PostgreSqlParser.KW_TEXT: { - this.state = 3660; + this.state = 3658; this.match(PostgreSqlParser.KW_TEXT); - this.state = 3661; + this.state = 3659; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 3662; + this.state = 3660; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { this.errorHandler.recoverInline(this); @@ -19927,24 +20059,24 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 3666; + this.state = 3664; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 417, this.context) ) { case 1: { - this.state = 3665; + this.state = 3663; this.opt_if_exists(); } break; } - this.state = 3668; + this.state = 3666; this.name_list(); - this.state = 3670; + this.state = 3668; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 418, this.context) ) { case 1: { - this.state = 3669; + this.state = 3667; this.opt_drop_behavior(); } break; @@ -19954,54 +20086,54 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 3672; + this.state = 3670; this.match(PostgreSqlParser.KW_DROP); - this.state = 3674; + this.state = 3672; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 3673; + this.state = 3671; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 3676; + this.state = 3674; this.match(PostgreSqlParser.KW_VIEW); - this.state = 3678; + this.state = 3676; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 420, this.context) ) { case 1: { - this.state = 3677; + this.state = 3675; this.opt_if_exists(); } break; } - this.state = 3680; + this.state = 3678; this.view_name(); - this.state = 3685; + this.state = 3683; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3681; + this.state = 3679; this.match(PostgreSqlParser.COMMA); - this.state = 3682; + this.state = 3680; this.view_name(); } } - this.state = 3687; + this.state = 3685; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3689; + this.state = 3687; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 422, this.context) ) { case 1: { - this.state = 3688; + this.state = 3686; this.opt_drop_behavior(); } break; @@ -20011,38 +20143,38 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 3691; + this.state = 3689; this.match(PostgreSqlParser.KW_DROP); - this.state = 3693; + this.state = 3691; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 3692; + this.state = 3690; this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 3695; + this.state = 3693; this.match(PostgreSqlParser.KW_TABLE); - this.state = 3697; + this.state = 3695; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 424, this.context) ) { case 1: { - this.state = 3696; + this.state = 3694; this.opt_if_exists(); } break; } - this.state = 3699; + this.state = 3697; this.table_name_list(); - this.state = 3701; + this.state = 3699; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 425, this.context) ) { case 1: { - this.state = 3700; + this.state = 3698; this.opt_drop_behavior(); } break; @@ -20052,28 +20184,28 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 3703; + this.state = 3701; this.match(PostgreSqlParser.KW_DROP); - this.state = 3704; + this.state = 3702; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 3706; + this.state = 3704; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 426, this.context) ) { case 1: { - this.state = 3705; + this.state = 3703; this.opt_if_exists(); } break; } - this.state = 3708; + this.state = 3706; this.schema_name_list(); - this.state = 3710; + this.state = 3708; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 427, this.context) ) { case 1: { - this.state = 3709; + this.state = 3707; this.opt_drop_behavior(); } break; @@ -20083,9 +20215,9 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 3712; + this.state = 3710; this.match(PostgreSqlParser.KW_DROP); - this.state = 3713; + this.state = 3711; _la = this.tokenStream.LA(1); if(!(_la === 321 || _la === 357 || _la === 445)) { this.errorHandler.recoverInline(this); @@ -20094,28 +20226,28 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3715; + this.state = 3713; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 428, this.context) ) { case 1: { - this.state = 3714; + this.state = 3712; this.opt_if_exists(); } break; } - this.state = 3717; + this.state = 3715; this.colid(); - this.state = 3718; + this.state = 3716; this.match(PostgreSqlParser.KW_ON); - this.state = 3719; + this.state = 3717; this.any_name(); - this.state = 3721; + this.state = 3719; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 429, this.context) ) { case 1: { - this.state = 3720; + this.state = 3718; this.opt_drop_behavior(); } break; @@ -20125,9 +20257,9 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 3723; + this.state = 3721; this.match(PostgreSqlParser.KW_DROP); - this.state = 3724; + this.state = 3722; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -20136,40 +20268,40 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3726; + this.state = 3724; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 430, this.context) ) { case 1: { - this.state = 3725; + this.state = 3723; this.opt_if_exists(); } break; } - this.state = 3728; + this.state = 3726; this.typename(); - this.state = 3733; + this.state = 3731; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3729; + this.state = 3727; this.match(PostgreSqlParser.COMMA); - this.state = 3730; + this.state = 3728; this.typename(); } } - this.state = 3735; + this.state = 3733; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3737; + this.state = 3735; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 432, this.context) ) { case 1: { - this.state = 3736; + this.state = 3734; this.opt_drop_behavior(); } break; @@ -20179,30 +20311,30 @@ export class PostgreSqlParser extends SQLParserBase { case 7: this.enterOuterAlt(localContext, 7); { - this.state = 3739; + this.state = 3737; this.match(PostgreSqlParser.KW_DROP); - this.state = 3740; + this.state = 3738; this.match(PostgreSqlParser.KW_INDEX); - this.state = 3741; + this.state = 3739; this.match(PostgreSqlParser.KW_CONCURRENTLY); - this.state = 3743; + this.state = 3741; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 433, this.context) ) { case 1: { - this.state = 3742; + this.state = 3740; this.opt_if_exists(); } break; } - this.state = 3745; + this.state = 3743; this.any_name_list(); - this.state = 3747; + this.state = 3745; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 434, this.context) ) { case 1: { - this.state = 3746; + this.state = 3744; this.opt_drop_behavior(); } break; @@ -20212,36 +20344,36 @@ export class PostgreSqlParser extends SQLParserBase { case 8: this.enterOuterAlt(localContext, 8); { - this.state = 3749; + this.state = 3747; this.match(PostgreSqlParser.KW_DROP); - this.state = 3750; + this.state = 3748; this.match(PostgreSqlParser.KW_CAST); - this.state = 3752; + this.state = 3750; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 3751; + this.state = 3749; this.opt_if_exists(); } } - this.state = 3754; + this.state = 3752; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3755; + this.state = 3753; this.typename(); - this.state = 3756; + this.state = 3754; this.match(PostgreSqlParser.KW_AS); - this.state = 3757; + this.state = 3755; this.typename(); - this.state = 3758; + this.state = 3756; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 3760; + this.state = 3758; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 436, this.context) ) { case 1: { - this.state = 3759; + this.state = 3757; this.opt_drop_behavior(); } break; @@ -20251,11 +20383,11 @@ export class PostgreSqlParser extends SQLParserBase { case 9: this.enterOuterAlt(localContext, 9); { - this.state = 3762; + this.state = 3760; this.match(PostgreSqlParser.KW_DROP); - this.state = 3763; + this.state = 3761; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3764; + this.state = 3762; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -20264,26 +20396,26 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3766; + this.state = 3764; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 437, this.context) ) { case 1: { - this.state = 3765; + this.state = 3763; this.opt_if_exists(); } break; } - this.state = 3768; + this.state = 3766; this.any_name(); - this.state = 3769; + this.state = 3767; this.table_access_method_clause(); - this.state = 3771; + this.state = 3769; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 438, this.context) ) { case 1: { - this.state = 3770; + this.state = 3768; this.opt_drop_behavior(); } break; @@ -20293,20 +20425,20 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 3773; + this.state = 3771; this.match(PostgreSqlParser.KW_DROP); - this.state = 3774; + this.state = 3772; this.match(PostgreSqlParser.KW_OWNED); - this.state = 3775; + this.state = 3773; this.match(PostgreSqlParser.KW_BY); - this.state = 3776; + this.state = 3774; this.role_list(); - this.state = 3778; + this.state = 3776; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 439, this.context) ) { case 1: { - this.state = 3777; + this.state = 3775; this.opt_drop_behavior(); } break; @@ -20316,28 +20448,28 @@ export class PostgreSqlParser extends SQLParserBase { case 11: this.enterOuterAlt(localContext, 11); { - this.state = 3780; + this.state = 3778; this.match(PostgreSqlParser.KW_DROP); - this.state = 3781; + this.state = 3779; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 3783; + this.state = 3781; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 440, this.context) ) { case 1: { - this.state = 3782; + this.state = 3780; this.opt_if_exists(); } break; } - this.state = 3785; + this.state = 3783; this.colid(); - this.state = 3787; + this.state = 3785; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 441, this.context) ) { case 1: { - this.state = 3786; + this.state = 3784; this.opt_drop_behavior(); } break; @@ -20347,55 +20479,55 @@ export class PostgreSqlParser extends SQLParserBase { case 12: this.enterOuterAlt(localContext, 12); { - this.state = 3789; + this.state = 3787; this.match(PostgreSqlParser.KW_DROP); - this.state = 3790; + this.state = 3788; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 3792; + this.state = 3790; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 442, this.context) ) { case 1: { - this.state = 3791; + this.state = 3789; this.opt_if_exists(); } break; } - this.state = 3794; + this.state = 3792; this.tablespace_name(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 3795; + this.state = 3793; this.match(PostgreSqlParser.KW_DROP); - this.state = 3796; + this.state = 3794; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 3798; + this.state = 3796; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 3797; + this.state = 3795; this.opt_if_exists(); } } - this.state = 3800; + this.state = 3798; this.match(PostgreSqlParser.KW_FOR); - this.state = 3801; + this.state = 3799; this.typename(); - this.state = 3802; + this.state = 3800; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 3803; + this.state = 3801; this.colid(); - this.state = 3805; + this.state = 3803; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 444, this.context) ) { case 1: { - this.state = 3804; + this.state = 3802; this.opt_drop_behavior(); } break; @@ -20405,9 +20537,9 @@ export class PostgreSqlParser extends SQLParserBase { case 14: this.enterOuterAlt(localContext, 14); { - this.state = 3807; + this.state = 3805; this.match(PostgreSqlParser.KW_DROP); - this.state = 3808; + this.state = 3806; _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -20416,53 +20548,47 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3810; + this.state = 3808; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 445, this.context) ) { case 1: { - this.state = 3809; + this.state = 3807; this.opt_if_exists(); } break; } - this.state = 3812; + this.state = 3810; this.role_list(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 3813; + this.state = 3811; this.match(PostgreSqlParser.KW_DROP); - this.state = 3814; + this.state = 3812; this.match(PostgreSqlParser.KW_USER); - this.state = 3815; + this.state = 3813; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 3817; + this.state = 3815; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 3816; + this.state = 3814; this.opt_if_exists(); } } - this.state = 3819; + this.state = 3817; this.match(PostgreSqlParser.KW_FOR); - this.state = 3822; + this.state = 3820; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_ROLE: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_SESSION_USER: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: @@ -20879,81 +21005,81 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 3820; + this.state = 3818; this.rolespec(); } break; case PostgreSqlParser.KW_USER: { - this.state = 3821; + this.state = 3819; this.match(PostgreSqlParser.KW_USER); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3824; + this.state = 3822; this.match(PostgreSqlParser.KW_SERVER); - this.state = 3825; + this.state = 3823; this.colid(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 3826; + this.state = 3824; this.match(PostgreSqlParser.KW_DROP); - this.state = 3827; + this.state = 3825; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 3829; + this.state = 3827; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 448, this.context) ) { case 1: { - this.state = 3828; + this.state = 3826; this.opt_if_exists(); } break; } - this.state = 3831; + this.state = 3829; this.database_name(); - this.state = 3845; + this.state = 3843; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 451, this.context) ) { case 1: { - this.state = 3833; + this.state = 3831; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 3832; + this.state = 3830; this.match(PostgreSqlParser.KW_WITH); } } { - this.state = 3835; + this.state = 3833; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3836; + this.state = 3834; this.match(PostgreSqlParser.KW_FORCE); - this.state = 3841; + this.state = 3839; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3837; + this.state = 3835; this.match(PostgreSqlParser.COMMA); - this.state = 3838; + this.state = 3836; this.match(PostgreSqlParser.KW_FORCE); } } - this.state = 3843; + this.state = 3841; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3844; + this.state = 3842; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -20982,26 +21108,26 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 310, PostgreSqlParser.RULE_object_type_any_name); let _la: number; try { - this.state = 3865; + this.state = 3863; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOREIGN: case PostgreSqlParser.KW_TABLE: this.enterOuterAlt(localContext, 1); { - this.state = 3850; + this.state = 3848; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 3849; + this.state = 3847; this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 3852; + this.state = 3850; this.match(PostgreSqlParser.KW_TABLE); - this.state = 3853; + this.state = 3851; this.table_name(); } break; @@ -21009,19 +21135,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_VIEW: this.enterOuterAlt(localContext, 2); { - this.state = 3855; + this.state = 3853; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 3854; + this.state = 3852; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 3857; + this.state = 3855; this.match(PostgreSqlParser.KW_VIEW); - this.state = 3858; + this.state = 3856; this.view_name(); } break; @@ -21032,7 +21158,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_STATISTICS: this.enterOuterAlt(localContext, 3); { - this.state = 3859; + this.state = 3857; _la = this.tokenStream.LA(1); if(!(_la === 108 || _la === 168 || _la === 226 || _la === 328 || _la === 342)) { this.errorHandler.recoverInline(this); @@ -21041,18 +21167,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3860; + this.state = 3858; this.any_name(); } break; case PostgreSqlParser.KW_TEXT: this.enterOuterAlt(localContext, 4); { - this.state = 3861; + this.state = 3859; this.match(PostgreSqlParser.KW_TEXT); - this.state = 3862; + this.state = 3860; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 3863; + this.state = 3861; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { this.errorHandler.recoverInline(this); @@ -21061,7 +21187,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3864; + this.state = 3862; this.any_name(); } break; @@ -21088,7 +21214,7 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 312, PostgreSqlParser.RULE_object_type_name); let _la: number; try { - this.state = 3891; + this.state = 3889; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOREIGN: @@ -21103,111 +21229,111 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_PUBLICATION: this.enterOuterAlt(localContext, 1); { - this.state = 3883; + this.state = 3881; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_EVENT: { - this.state = 3867; + this.state = 3865; this.match(PostgreSqlParser.KW_EVENT); - this.state = 3868; + this.state = 3866; this.match(PostgreSqlParser.KW_TRIGGER); } break; case PostgreSqlParser.KW_ACCESS: { - this.state = 3869; + this.state = 3867; this.match(PostgreSqlParser.KW_ACCESS); - this.state = 3870; + this.state = 3868; this.match(PostgreSqlParser.KW_METHOD); } break; case PostgreSqlParser.KW_EXTENSION: { - this.state = 3871; + this.state = 3869; this.match(PostgreSqlParser.KW_EXTENSION); } break; case PostgreSqlParser.KW_PUBLICATION: { - this.state = 3872; + this.state = 3870; this.match(PostgreSqlParser.KW_PUBLICATION); } break; case PostgreSqlParser.KW_SERVER: { - this.state = 3873; + this.state = 3871; this.match(PostgreSqlParser.KW_SERVER); } break; case PostgreSqlParser.KW_ROLE: { - this.state = 3874; + this.state = 3872; this.match(PostgreSqlParser.KW_ROLE); } break; case PostgreSqlParser.KW_SUBSCRIPTION: { - this.state = 3875; + this.state = 3873; this.match(PostgreSqlParser.KW_SUBSCRIPTION); } break; case PostgreSqlParser.KW_FOREIGN: { - this.state = 3876; + this.state = 3874; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 3877; + this.state = 3875; this.match(PostgreSqlParser.KW_DATA); - this.state = 3878; + this.state = 3876; this.match(PostgreSqlParser.KW_WRAPPER); } break; case PostgreSqlParser.KW_LANGUAGE: case PostgreSqlParser.KW_PROCEDURAL: { - this.state = 3880; + this.state = 3878; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 3879; + this.state = 3877; this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 3882; + this.state = 3880; this.match(PostgreSqlParser.KW_LANGUAGE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 3885; + this.state = 3883; this.colid(); } break; case PostgreSqlParser.KW_SCHEMA: this.enterOuterAlt(localContext, 2); { - this.state = 3886; + this.state = 3884; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 3887; + this.state = 3885; this.schema_name(); } break; case PostgreSqlParser.KW_DATABASE: this.enterOuterAlt(localContext, 3); { - this.state = 3888; + this.state = 3886; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 3889; + this.state = 3887; this.database_name(); } break; case PostgreSqlParser.KW_TABLESPACE: this.enterOuterAlt(localContext, 4); { - this.state = 3890; + this.state = 3888; this.opttablespace(); } break; @@ -21236,21 +21362,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3893; + this.state = 3891; this.any_name(); - this.state = 3898; + this.state = 3896; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3894; + this.state = 3892; this.match(PostgreSqlParser.COMMA); - this.state = 3895; + this.state = 3893; this.any_name(); } } - this.state = 3900; + this.state = 3898; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -21276,14 +21402,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3901; + this.state = 3899; this.colid(); - this.state = 3903; + this.state = 3901; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { case 1: { - this.state = 3902; + this.state = 3900; this.attrs(); } break; @@ -21311,7 +21437,7 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 3907; + this.state = 3905; this.errorHandler.sync(this); alternative = 1; do { @@ -21319,9 +21445,9 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 3905; + this.state = 3903; this.match(PostgreSqlParser.DOT); - this.state = 3906; + this.state = 3904; this.collabel(); } } @@ -21329,7 +21455,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 3909; + this.state = 3907; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 461, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -21356,42 +21482,42 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3911; + this.state = 3909; this.match(PostgreSqlParser.KW_TRUNCATE); - this.state = 3913; + this.state = 3911; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 92) { { - this.state = 3912; + this.state = 3910; this.match(PostgreSqlParser.KW_TABLE); } } - this.state = 3915; + this.state = 3913; this.truncate_table(); - this.state = 3920; + this.state = 3918; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 3916; + this.state = 3914; this.match(PostgreSqlParser.COMMA); - this.state = 3917; + this.state = 3915; this.truncate_table(); } } - this.state = 3922; + this.state = 3920; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 3925; + this.state = 3923; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { case 1: { - this.state = 3923; + this.state = 3921; _la = this.tokenStream.LA(1); if(!(_la === 167 || _la === 314)) { this.errorHandler.recoverInline(this); @@ -21400,17 +21526,17 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3924; + this.state = 3922; this.match(PostgreSqlParser.KW_IDENTITY); } break; } - this.state = 3928; + this.state = 3926; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context) ) { case 1: { - this.state = 3927; + this.state = 3925; this.opt_drop_behavior(); } break; @@ -21438,24 +21564,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3931; + this.state = 3929; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 81) { { - this.state = 3930; + this.state = 3928; this.match(PostgreSqlParser.KW_ONLY); } } - this.state = 3933; + this.state = 3931; this.table_name(); - this.state = 3935; + this.state = 3933; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 3934; + this.state = 3932; this.match(PostgreSqlParser.STAR); } } @@ -21483,52 +21609,52 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 3937; + this.state = 3935; this.match(PostgreSqlParser.KW_COMMENT); - this.state = 3938; + this.state = 3936; this.match(PostgreSqlParser.KW_ON); - this.state = 3997; + this.state = 3995; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 471, this.context) ) { case 1: { - this.state = 3939; + this.state = 3937; this.object_type_any_name(); } break; case 2: { - this.state = 3940; + this.state = 3938; this.object_type_name(); } break; case 3: { - this.state = 3941; + this.state = 3939; this.match(PostgreSqlParser.KW_COLUMN); { - this.state = 3942; + this.state = 3940; this.colid(); - this.state = 3944; + this.state = 3942; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 468, this.context) ) { case 1: { - this.state = 3943; + this.state = 3941; this.attrs(); } break; } } - this.state = 3946; + this.state = 3944; this.match(PostgreSqlParser.DOT); - this.state = 3947; + this.state = 3945; this.column_name(); } break; case 4: { - this.state = 3949; + this.state = 3947; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -21537,65 +21663,65 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3950; + this.state = 3948; this.typename(); } break; case 5: { - this.state = 3951; + this.state = 3949; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 3952; + this.state = 3950; this.aggregate_with_argtypes(); } break; case 6: { - this.state = 3953; + this.state = 3951; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 3954; + this.state = 3952; this.function_with_argtypes(); } break; case 7: { - this.state = 3955; + this.state = 3953; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3956; + this.state = 3954; this.operator_with_argtypes(); } break; case 8: { - this.state = 3957; + this.state = 3955; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 3958; + this.state = 3956; this.colid(); - this.state = 3959; + this.state = 3957; this.match(PostgreSqlParser.KW_ON); - this.state = 3965; + this.state = 3963; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 470, this.context) ) { case 1: { - this.state = 3960; + this.state = 3958; this.table_name(); } break; case 2: { { - this.state = 3962; + this.state = 3960; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 469, this.context) ) { case 1: { - this.state = 3961; + this.state = 3959; this.match(PostgreSqlParser.KW_DOMAIN); } break; } - this.state = 3964; + this.state = 3962; this.any_name(); } } @@ -21605,7 +21731,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case 9: { - this.state = 3967; + this.state = 3965; _la = this.tokenStream.LA(1); if(!(_la === 321 || _la === 357 || _la === 445)) { this.errorHandler.recoverInline(this); @@ -21614,49 +21740,49 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3968; + this.state = 3966; this.colid(); - this.state = 3969; + this.state = 3967; this.match(PostgreSqlParser.KW_ON); - this.state = 3970; + this.state = 3968; this.any_name(); } break; case 10: { - this.state = 3972; + this.state = 3970; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 3973; + this.state = 3971; this.procedure_with_argtypes(); } break; case 11: { - this.state = 3974; + this.state = 3972; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 3975; + this.state = 3973; this.routine_with_argtypes(); } break; case 12: { - this.state = 3976; + this.state = 3974; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 3977; + this.state = 3975; this.match(PostgreSqlParser.KW_FOR); - this.state = 3978; + this.state = 3976; this.typename(); - this.state = 3979; + this.state = 3977; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 3980; + this.state = 3978; this.colid(); } break; case 13: { - this.state = 3982; + this.state = 3980; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 3983; + this.state = 3981; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -21665,42 +21791,42 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 3984; + this.state = 3982; this.any_name(); - this.state = 3985; + this.state = 3983; this.table_access_method_clause(); } break; case 14: { - this.state = 3987; + this.state = 3985; this.match(PostgreSqlParser.KW_LARGE); - this.state = 3988; + this.state = 3986; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 3989; + this.state = 3987; this.numericonly(); } break; case 15: { - this.state = 3990; + this.state = 3988; this.match(PostgreSqlParser.KW_CAST); - this.state = 3991; + this.state = 3989; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 3992; + this.state = 3990; this.typename(); - this.state = 3993; + this.state = 3991; this.match(PostgreSqlParser.KW_AS); - this.state = 3994; + this.state = 3992; this.typename(); - this.state = 3995; + this.state = 3993; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 3999; + this.state = 3997; this.match(PostgreSqlParser.KW_IS); - this.state = 4002; + this.state = 4000; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -21708,13 +21834,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4000; + this.state = 3998; this.sconst(); } break; case PostgreSqlParser.KW_NULL: { - this.state = 4001; + this.state = 3999; this.match(PostgreSqlParser.KW_NULL); } break; @@ -21744,30 +21870,30 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4004; + this.state = 4002; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 4005; + this.state = 4003; this.match(PostgreSqlParser.KW_LABEL); - this.state = 4008; + this.state = 4006; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 4006; + this.state = 4004; this.match(PostgreSqlParser.KW_FOR); - this.state = 4007; + this.state = 4005; this.nonreservedword_or_sconst(); } } - this.state = 4010; + this.state = 4008; this.match(PostgreSqlParser.KW_ON); - this.state = 4028; + this.state = 4026; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 474, this.context) ) { case 1: { - this.state = 4011; + this.state = 4009; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -21776,76 +21902,76 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4012; + this.state = 4010; this.typename(); } break; case 2: { - this.state = 4013; + this.state = 4011; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 4014; + this.state = 4012; this.aggregate_with_argtypes(); } break; case 3: { - this.state = 4015; + this.state = 4013; this.match(PostgreSqlParser.KW_COLUMN); - this.state = 4016; + this.state = 4014; this.column_name(); } break; case 4: { - this.state = 4017; + this.state = 4015; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4018; + this.state = 4016; this.function_with_argtypes(); } break; case 5: { - this.state = 4019; + this.state = 4017; this.match(PostgreSqlParser.KW_LARGE); - this.state = 4020; + this.state = 4018; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 4021; + this.state = 4019; this.numericonly(); } break; case 6: { - this.state = 4022; + this.state = 4020; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4023; + this.state = 4021; this.procedure_with_argtypes(); } break; case 7: { - this.state = 4024; + this.state = 4022; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 4025; + this.state = 4023; this.routine_with_argtypes(); } break; case 8: { - this.state = 4026; + this.state = 4024; this.object_type_any_name(); } break; case 9: { - this.state = 4027; + this.state = 4025; this.object_type_name(); } break; } - this.state = 4030; + this.state = 4028; this.match(PostgreSqlParser.KW_IS); - this.state = 4033; + this.state = 4031; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -21853,13 +21979,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4031; + this.state = 4029; this.sconst(); } break; case PostgreSqlParser.KW_NULL: { - this.state = 4032; + this.state = 4030; this.match(PostgreSqlParser.KW_NULL); } break; @@ -21889,7 +22015,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4035; + this.state = 4033; _la = this.tokenStream.LA(1); if(!(_la === 61 || _la === 265)) { this.errorHandler.recoverInline(this); @@ -21898,7 +22024,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4036; + this.state = 4034; this.fetch_args(); } } @@ -21921,18 +22047,18 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 330, PostgreSqlParser.RULE_fetch_args); let _la: number; try { - this.state = 4081; + this.state = 4079; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 487, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4039; + this.state = 4037; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 476, this.context) ) { case 1: { - this.state = 4038; + this.state = 4036; _la = this.tokenStream.LA(1); if(!(_la === 207 || _la === 249 || _la === 268 || _la === 293)) { this.errorHandler.recoverInline(this); @@ -21944,29 +22070,29 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 4042; + this.state = 4040; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 4041; + this.state = 4039; this.from_in(); } } - this.state = 4044; + this.state = 4042; this.colid(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4046; + this.state = 4044; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 130 || _la === 307) { { - this.state = 4045; + this.state = 4043; _la = this.tokenStream.LA(1); if(!(_la === 130 || _la === 307)) { this.errorHandler.recoverInline(this); @@ -21978,96 +22104,90 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 4048; + this.state = 4046; this.signediconst(); - this.state = 4050; + this.state = 4048; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 4049; + this.state = 4047; this.from_in(); } } - this.state = 4052; + this.state = 4050; this.colid(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4054; + this.state = 4052; this.match(PostgreSqlParser.KW_FORWARD); - this.state = 4056; + this.state = 4054; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13 || _la === 571) { { - this.state = 4055; + this.state = 4053; this.signediconst(); } } - this.state = 4059; + this.state = 4057; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 4058; + this.state = 4056; this.from_in(); } } - this.state = 4061; + this.state = 4059; this.colid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4063; + this.state = 4061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 210) { { - this.state = 4062; + this.state = 4060; this.match(PostgreSqlParser.KW_FORWARD); } } - this.state = 4065; + this.state = 4063; this.match(PostgreSqlParser.KW_ALL); - this.state = 4067; + this.state = 4065; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 4066; + this.state = 4064; this.from_in(); } } - this.state = 4069; + this.state = 4067; this.colid(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4070; + this.state = 4068; this.match(PostgreSqlParser.KW_BACKWARD); - this.state = 4075; + this.state = 4073; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_FROM: case PostgreSqlParser.KW_IN: case PostgreSqlParser.KW_IS: @@ -22451,6 +22571,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -22463,12 +22584,12 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4072; + this.state = 4070; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 30) { { - this.state = 4071; + this.state = 4069; this.match(PostgreSqlParser.KW_ALL); } } @@ -22479,24 +22600,24 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.Integral: { - this.state = 4074; + this.state = 4072; this.signediconst(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4078; + this.state = 4076; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 4077; + this.state = 4075; this.from_in(); } } - this.state = 4080; + this.state = 4078; this.colid(); } break; @@ -22523,7 +22644,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4083; + this.state = 4081; _la = this.tokenStream.LA(1); if(!(_la === 64 || _la === 68)) { this.errorHandler.recoverInline(this); @@ -22554,28 +22675,28 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4085; + this.state = 4083; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4086; + this.state = 4084; this.privileges(); - this.state = 4087; + this.state = 4085; this.match(PostgreSqlParser.KW_ON); - this.state = 4088; + this.state = 4086; this.privilege_target(); - this.state = 4089; + this.state = 4087; this.match(PostgreSqlParser.KW_TO); - this.state = 4090; + this.state = 4088; this.grantee_list(); - this.state = 4094; + this.state = 4092; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 488, this.context) ) { case 1: { - this.state = 4091; + this.state = 4089; this.match(PostgreSqlParser.KW_WITH); - this.state = 4092; + this.state = 4090; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4093; + this.state = 4091; this.match(PostgreSqlParser.KW_OPTION); } break; @@ -22603,38 +22724,38 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4096; + this.state = 4094; this.match(PostgreSqlParser.KW_REVOKE); - this.state = 4100; + this.state = 4098; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4097; + this.state = 4095; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4098; + this.state = 4096; this.match(PostgreSqlParser.KW_OPTION); - this.state = 4099; + this.state = 4097; this.match(PostgreSqlParser.KW_FOR); } } - this.state = 4102; + this.state = 4100; this.privileges(); - this.state = 4103; + this.state = 4101; this.match(PostgreSqlParser.KW_ON); - this.state = 4104; + this.state = 4102; this.privilege_target(); - this.state = 4105; + this.state = 4103; this.match(PostgreSqlParser.KW_FROM); - this.state = 4106; + this.state = 4104; this.grantee_list(); - this.state = 4108; + this.state = 4106; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 490, this.context) ) { case 1: { - this.state = 4107; + this.state = 4105; this.opt_drop_behavior(); } break; @@ -22660,27 +22781,27 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 338, PostgreSqlParser.RULE_privileges); let _la: number; try { - this.state = 4133; + this.state = 4131; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 495, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4110; + this.state = 4108; this.privilege(); - this.state = 4115; + this.state = 4113; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4111; + this.state = 4109; this.match(PostgreSqlParser.COMMA); - this.state = 4112; + this.state = 4110; this.privilege(); } } - this.state = 4117; + this.state = 4115; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -22689,24 +22810,24 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4118; + this.state = 4116; this.match(PostgreSqlParser.KW_ALL); - this.state = 4120; + this.state = 4118; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 294) { { - this.state = 4119; + this.state = 4117; this.match(PostgreSqlParser.KW_PRIVILEGES); } } - this.state = 4123; + this.state = 4121; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 4122; + this.state = 4120; this.opt_column_list(); } } @@ -22716,21 +22837,21 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4125; + this.state = 4123; this.beforeprivilegeselect(); - this.state = 4130; + this.state = 4128; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4126; + this.state = 4124; this.match(PostgreSqlParser.COMMA); - this.state = 4127; + this.state = 4125; this.beforeprivilegeselect(); } } - this.state = 4132; + this.state = 4130; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -22759,7 +22880,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4135; + this.state = 4133; _la = this.tokenStream.LA(1); if(!(_la === 46 || _la === 88 || _la === 182 || _la === 202 || _la === 241 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 131173) !== 0) || ((((_la - 521)) & ~0x1F) === 0 && ((1 << (_la - 521)) & 7) !== 0))) { this.errorHandler.recoverInline(this); @@ -22791,34 +22912,28 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4141; + this.state = 4139; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SELECT: { - this.state = 4137; + this.state = 4135; this.match(PostgreSqlParser.KW_SELECT); } break; case PostgreSqlParser.KW_REFERENCES: { - this.state = 4138; + this.state = 4136; this.match(PostgreSqlParser.KW_REFERENCES); } break; case PostgreSqlParser.KW_CREATE: { - this.state = 4139; + this.state = 4137; this.match(PostgreSqlParser.KW_CREATE); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -23200,6 +23315,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -23212,19 +23328,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4140; + this.state = 4138; this.colid(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4144; + this.state = 4142; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 4143; + this.state = 4141; this.opt_column_list(); } } @@ -23250,59 +23366,59 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 344, PostgreSqlParser.RULE_privilege_target); let _la: number; try { - this.state = 4191; + this.state = 4189; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 502, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4146; + this.state = 4144; this.match(PostgreSqlParser.KW_TABLE); - this.state = 4147; + this.state = 4145; this.table_name_list(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4149; + this.state = 4147; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 498, this.context) ) { case 1: { - this.state = 4148; + this.state = 4146; this.match(PostgreSqlParser.KW_SEQUENCE); } break; } - this.state = 4151; + this.state = 4149; this.qualified_name_list(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4159; + this.state = 4157; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOREIGN: { - this.state = 4152; + this.state = 4150; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 4156; + this.state = 4154; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DATA: { - this.state = 4153; + this.state = 4151; this.match(PostgreSqlParser.KW_DATA); - this.state = 4154; + this.state = 4152; this.match(PostgreSqlParser.KW_WRAPPER); } break; case PostgreSqlParser.KW_SERVER: { - this.state = 4155; + this.state = 4153; this.match(PostgreSqlParser.KW_SERVER); } break; @@ -23313,57 +23429,57 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_LANGUAGE: { - this.state = 4158; + this.state = 4156; this.match(PostgreSqlParser.KW_LANGUAGE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4161; + this.state = 4159; this.name_list(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4162; + this.state = 4160; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4163; + this.state = 4161; this.function_with_argtypes_list(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4164; + this.state = 4162; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4165; + this.state = 4163; this.procedure_with_argtypes_list(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 4166; + this.state = 4164; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 4167; + this.state = 4165; this.routine_with_argtypes_list(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 4168; + this.state = 4166; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 4169; + this.state = 4167; this.database_nameList(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 4170; + this.state = 4168; _la = this.tokenStream.LA(1); if(!(_la === 189 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -23372,32 +23488,32 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4171; + this.state = 4169; this.any_name_list(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 4172; + this.state = 4170; this.match(PostgreSqlParser.KW_LARGE); - this.state = 4173; + this.state = 4171; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 4174; + this.state = 4172; this.numericonly(); - this.state = 4179; + this.state = 4177; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4175; + this.state = 4173; this.match(PostgreSqlParser.COMMA); - this.state = 4176; + this.state = 4174; this.numericonly(); } } - this.state = 4181; + this.state = 4179; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -23406,27 +23522,27 @@ export class PostgreSqlParser extends SQLParserBase { case 10: this.enterOuterAlt(localContext, 10); { - this.state = 4182; + this.state = 4180; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4183; + this.state = 4181; this.schema_name_list(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 4184; + this.state = 4182; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 4185; + this.state = 4183; this.tablespace_name_list(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 4186; + this.state = 4184; this.match(PostgreSqlParser.KW_ALL); - this.state = 4187; + this.state = 4185; _la = this.tokenStream.LA(1); if(!(_la === 212 || _la === 329 || _la === 350 || _la === 455 || _la === 457)) { this.errorHandler.recoverInline(this); @@ -23435,11 +23551,11 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4188; + this.state = 4186; this.match(PostgreSqlParser.KW_IN); - this.state = 4189; + this.state = 4187; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4190; + this.state = 4188; this.schema_name_list(); } break; @@ -23467,44 +23583,44 @@ export class PostgreSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 1); { { - this.state = 4194; + this.state = 4192; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 66) { { - this.state = 4193; + this.state = 4191; this.match(PostgreSqlParser.KW_GROUP); } } - this.state = 4196; + this.state = 4194; this.rolespec(); } - this.state = 4205; + this.state = 4203; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4198; + this.state = 4196; this.match(PostgreSqlParser.COMMA); { - this.state = 4200; + this.state = 4198; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 66) { { - this.state = 4199; + this.state = 4197; this.match(PostgreSqlParser.KW_GROUP); } } - this.state = 4202; + this.state = 4200; this.rolespec(); } } } - this.state = 4207; + this.state = 4205; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -23531,54 +23647,54 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4208; + this.state = 4206; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4209; + this.state = 4207; this.privilege(); - this.state = 4214; + this.state = 4212; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4210; + this.state = 4208; this.match(PostgreSqlParser.COMMA); - this.state = 4211; + this.state = 4209; this.privilege(); } } - this.state = 4216; + this.state = 4214; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4217; + this.state = 4215; this.match(PostgreSqlParser.KW_TO); - this.state = 4218; + this.state = 4216; this.role_list(); - this.state = 4222; + this.state = 4220; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 507, this.context) ) { case 1: { - this.state = 4219; + this.state = 4217; this.match(PostgreSqlParser.KW_WITH); - this.state = 4220; + this.state = 4218; this.match(PostgreSqlParser.KW_ADMIN); - this.state = 4221; + this.state = 4219; this.match(PostgreSqlParser.KW_OPTION); } break; } - this.state = 4227; + this.state = 4225; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 508, this.context) ) { case 1: { - this.state = 4224; + this.state = 4222; this.match(PostgreSqlParser.KW_GRANTED); - this.state = 4225; + this.state = 4223; this.match(PostgreSqlParser.KW_BY); - this.state = 4226; + this.state = 4224; this.rolespec(); } break; @@ -23606,64 +23722,64 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4229; + this.state = 4227; this.match(PostgreSqlParser.KW_REVOKE); - this.state = 4233; + this.state = 4231; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 509, this.context) ) { case 1: { - this.state = 4230; + this.state = 4228; this.match(PostgreSqlParser.KW_ADMIN); - this.state = 4231; + this.state = 4229; this.match(PostgreSqlParser.KW_OPTION); - this.state = 4232; + this.state = 4230; this.match(PostgreSqlParser.KW_FOR); } break; } - this.state = 4235; + this.state = 4233; this.privilege(); - this.state = 4240; + this.state = 4238; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4236; + this.state = 4234; this.match(PostgreSqlParser.COMMA); - this.state = 4237; + this.state = 4235; this.privilege(); } } - this.state = 4242; + this.state = 4240; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4243; + this.state = 4241; this.match(PostgreSqlParser.KW_FROM); - this.state = 4244; + this.state = 4242; this.role_list(); - this.state = 4248; + this.state = 4246; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 511, this.context) ) { case 1: { - this.state = 4245; + this.state = 4243; this.match(PostgreSqlParser.KW_GRANTED); - this.state = 4246; + this.state = 4244; this.match(PostgreSqlParser.KW_BY); - this.state = 4247; + this.state = 4245; this.rolespec(); } break; } - this.state = 4251; + this.state = 4249; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 512, this.context) ) { case 1: { - this.state = 4250; + this.state = 4248; this.opt_drop_behavior(); } break; @@ -23691,35 +23807,35 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4253; + this.state = 4251; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4254; + this.state = 4252; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 4255; + this.state = 4253; this.match(PostgreSqlParser.KW_PRIVILEGES); - this.state = 4264; + this.state = 4262; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 62 || _la === 68) { { - this.state = 4262; + this.state = 4260; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IN: { - this.state = 4256; + this.state = 4254; this.match(PostgreSqlParser.KW_IN); - this.state = 4257; + this.state = 4255; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4258; + this.state = 4256; this.schema_name_list(); } break; case PostgreSqlParser.KW_FOR: { - this.state = 4259; + this.state = 4257; this.match(PostgreSqlParser.KW_FOR); - this.state = 4260; + this.state = 4258; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -23728,7 +23844,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4261; + this.state = 4259; this.role_list(); } break; @@ -23736,11 +23852,11 @@ export class PostgreSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 4266; + this.state = 4264; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4267; + this.state = 4265; this.defaclaction(); } } @@ -23763,34 +23879,34 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 354, PostgreSqlParser.RULE_defaclaction); let _la: number; try { - this.state = 4294; + this.state = 4292; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_GRANT: this.enterOuterAlt(localContext, 1); { - this.state = 4269; + this.state = 4267; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4270; + this.state = 4268; this.privileges(); - this.state = 4271; + this.state = 4269; this.match(PostgreSqlParser.KW_ON); - this.state = 4272; + this.state = 4270; this.defacl_privilege_target(); - this.state = 4273; + this.state = 4271; this.match(PostgreSqlParser.KW_TO); - this.state = 4274; + this.state = 4272; this.grantee_list(); - this.state = 4278; + this.state = 4276; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 515, this.context) ) { case 1: { - this.state = 4275; + this.state = 4273; this.match(PostgreSqlParser.KW_WITH); - this.state = 4276; + this.state = 4274; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4277; + this.state = 4275; this.match(PostgreSqlParser.KW_OPTION); } break; @@ -23800,38 +23916,38 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_REVOKE: this.enterOuterAlt(localContext, 2); { - this.state = 4280; + this.state = 4278; this.match(PostgreSqlParser.KW_REVOKE); - this.state = 4284; + this.state = 4282; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 65) { { - this.state = 4281; + this.state = 4279; this.match(PostgreSqlParser.KW_GRANT); - this.state = 4282; + this.state = 4280; this.match(PostgreSqlParser.KW_OPTION); - this.state = 4283; + this.state = 4281; this.match(PostgreSqlParser.KW_FOR); } } - this.state = 4286; + this.state = 4284; this.privileges(); - this.state = 4287; + this.state = 4285; this.match(PostgreSqlParser.KW_ON); - this.state = 4288; + this.state = 4286; this.defacl_privilege_target(); - this.state = 4289; + this.state = 4287; this.match(PostgreSqlParser.KW_FROM); - this.state = 4290; + this.state = 4288; this.grantee_list(); - this.state = 4292; + this.state = 4290; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 517, this.context) ) { case 1: { - this.state = 4291; + this.state = 4289; this.opt_drop_behavior(); } break; @@ -23863,7 +23979,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4296; + this.state = 4294; _la = this.tokenStream.LA(1); if(!(_la === 212 || _la === 329 || _la === 350 || _la === 361 || _la === 455 || _la === 456)) { this.errorHandler.recoverInline(this); @@ -23895,126 +24011,126 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4298; + this.state = 4296; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4300; + this.state = 4298; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 98) { { - this.state = 4299; + this.state = 4297; this.match(PostgreSqlParser.KW_UNIQUE); } } - this.state = 4302; + this.state = 4300; this.match(PostgreSqlParser.KW_INDEX); - this.state = 4304; + this.state = 4302; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4303; + this.state = 4301; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4307; + this.state = 4305; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 521, this.context) ) { case 1: { - this.state = 4306; + this.state = 4304; this.opt_if_not_exists(); } break; } - this.state = 4310; + this.state = 4308; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 4309; + this.state = 4307; this.colid(); } } - this.state = 4312; + this.state = 4310; this.match(PostgreSqlParser.KW_ON); - this.state = 4313; + this.state = 4311; this.relation_expr(); - this.state = 4315; + this.state = 4313; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 4314; + this.state = 4312; this.table_access_method_clause(); } } - this.state = 4317; + this.state = 4315; this.index_params(); - this.state = 4320; + this.state = 4318; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 524, this.context) ) { case 1: { - this.state = 4318; + this.state = 4316; this.match(PostgreSqlParser.KW_INCLUDE); - this.state = 4319; + this.state = 4317; this.index_params(); } break; } - this.state = 4327; + this.state = 4325; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 526, this.context) ) { case 1: { - this.state = 4322; + this.state = 4320; this.match(PostgreSqlParser.KW_NULLS); - this.state = 4324; + this.state = 4322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 4323; + this.state = 4321; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 4326; + this.state = 4324; this.match(PostgreSqlParser.KW_DISTINCT); } break; } - this.state = 4330; + this.state = 4328; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 527, this.context) ) { case 1: { - this.state = 4329; + this.state = 4327; this.opt_reloptions(); } break; } - this.state = 4333; + this.state = 4331; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 528, this.context) ) { case 1: { - this.state = 4332; + this.state = 4330; this.opttablespace(); } break; } - this.state = 4336; + this.state = 4334; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 4335; + this.state = 4333; this.where_clause(); } } @@ -24042,27 +24158,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4338; + this.state = 4336; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4339; + this.state = 4337; this.index_elem(); - this.state = 4344; + this.state = 4342; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4340; + this.state = 4338; this.match(PostgreSqlParser.COMMA); - this.state = 4341; + this.state = 4339; this.index_elem(); } } - this.state = 4346; + this.state = 4344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4347; + this.state = 4345; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -24087,53 +24203,53 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4355; + this.state = 4353; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 531, this.context) ) { case 1: { - this.state = 4349; + this.state = 4347; this.column_name(); } break; case 2: { - this.state = 4350; + this.state = 4348; this.func_expr_windowless(); } break; case 3: { - this.state = 4351; + this.state = 4349; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4352; + this.state = 4350; this.expression(); - this.state = 4353; + this.state = 4351; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 4358; + this.state = 4356; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 532, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 43) { { - this.state = 4357; + this.state = 4355; this.opt_collate_clause(); } - break; } - this.state = 4366; + + this.state = 4364; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 534, this.context) ) { case 1: { - this.state = 4361; + this.state = 4359; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 533, this.context) ) { case 1: { - this.state = 4360; + this.state = 4358; this.any_name(); } break; @@ -24142,19 +24258,19 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 4363; + this.state = 4361; this.any_name(); - this.state = 4364; + this.state = 4362; this.reloptions(); } break; } - this.state = 4369; + this.state = 4367; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 37 || _la === 55) { { - this.state = 4368; + this.state = 4366; _la = this.tokenStream.LA(1); if(!(_la === 37 || _la === 55)) { this.errorHandler.recoverInline(this); @@ -24166,14 +24282,14 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 4373; + this.state = 4371; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 273) { { - this.state = 4371; + this.state = 4369; this.match(PostgreSqlParser.KW_NULLS); - this.state = 4372; + this.state = 4370; _la = this.tokenStream.LA(1); if(!(_la === 207 || _la === 249)) { this.errorHandler.recoverInline(this); @@ -24209,34 +24325,34 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4375; + this.state = 4373; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4377; + this.state = 4375; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 4376; + this.state = 4374; this.opt_or_replace(); } } - this.state = 4383; + this.state = 4381; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: { - this.state = 4379; + this.state = 4377; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4380; + this.state = 4378; this.function_name_create(); } break; case PostgreSqlParser.KW_PROCEDURE: { - this.state = 4381; + this.state = 4379; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4382; + this.state = 4380; this.procedure_name_create(); } break; @@ -24244,54 +24360,48 @@ export class PostgreSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } { - this.state = 4385; + this.state = 4383; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4394; + this.state = 4392; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 4386; + this.state = 4384; this.func_arg_with_default(); - this.state = 4391; + this.state = 4389; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4387; + this.state = 4385; this.match(PostgreSqlParser.COMMA); - this.state = 4388; + this.state = 4386; this.func_arg_with_default(); } } - this.state = 4393; + this.state = 4391; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 4396; + this.state = 4394; this.match(PostgreSqlParser.CLOSE_PAREN); } - this.state = 4414; + this.state = 4412; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 543, this.context) ) { case 1: { - this.state = 4398; + this.state = 4396; this.match(PostgreSqlParser.KW_RETURNS); - this.state = 4412; + this.state = 4410; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: case PostgreSqlParser.KW_COLLATION: @@ -24694,6 +24804,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -24706,36 +24817,36 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4399; + this.state = 4397; this.func_type(); } break; case PostgreSqlParser.KW_TABLE: { - this.state = 4400; + this.state = 4398; this.match(PostgreSqlParser.KW_TABLE); { - this.state = 4401; + this.state = 4399; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4402; + this.state = 4400; this.table_func_column(); - this.state = 4407; + this.state = 4405; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4403; + this.state = 4401; this.match(PostgreSqlParser.COMMA); - this.state = 4404; + this.state = 4402; this.table_func_column(); } } - this.state = 4409; + this.state = 4407; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4410; + this.state = 4408; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -24746,7 +24857,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 4417; + this.state = 4415; this.errorHandler.sync(this); alternative = 1; do { @@ -24754,7 +24865,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 4416; + this.state = 4414; this.createfunc_opt_item(); } } @@ -24762,22 +24873,22 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4419; + this.state = 4417; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 544, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 4426; + this.state = 4424; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 545, this.context) ) { case 1: { - this.state = 4421; + this.state = 4419; this.match(PostgreSqlParser.KW_WITH); - this.state = 4422; + this.state = 4420; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4423; + this.state = 4421; this.name_list(); - this.state = 4424; + this.state = 4422; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -24804,9 +24915,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4428; + this.state = 4426; this.match(PostgreSqlParser.KW_OR); - this.state = 4429; + this.state = 4427; this.match(PostgreSqlParser.KW_REPLACE); } } @@ -24831,19 +24942,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4431; + this.state = 4429; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4433; + this.state = 4431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 4432; + this.state = 4430; this.func_args_list(); } } - this.state = 4435; + this.state = 4433; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -24868,21 +24979,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4437; + this.state = 4435; this.func_arg(); - this.state = 4442; + this.state = 4440; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4438; + this.state = 4436; this.match(PostgreSqlParser.COMMA); - this.state = 4439; + this.state = 4437; this.func_arg(); } } - this.state = 4444; + this.state = 4442; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24909,21 +25020,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4445; + this.state = 4443; this.routine_with_argtypes(); - this.state = 4450; + this.state = 4448; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4446; + this.state = 4444; this.match(PostgreSqlParser.COMMA); - this.state = 4447; + this.state = 4445; this.routine_with_argtypes(); } } - this.state = 4452; + this.state = 4450; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -24947,116 +25058,116 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Routine_with_argtypesContext(this.context, this.state); this.enterRule(localContext, 374, PostgreSqlParser.RULE_routine_with_argtypes); try { - this.state = 4458; + this.state = 4456; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 549, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4453; + this.state = 4451; this.routine_name(); + this.state = 4452; + this.func_args(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { this.state = 4454; + this.type_func_name_keyword(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 4455; + this.qualified_name(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext { + let localContext = new Procedure_with_argtypes_listContext(this.context, this.state); + this.enterRule(localContext, 376, PostgreSqlParser.RULE_procedure_with_argtypes_list); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 4458; + this.procedure_with_argtypes(); + this.state = 4463; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 6) { + { + { + this.state = 4459; + this.match(PostgreSqlParser.COMMA); + this.state = 4460; + this.procedure_with_argtypes(); + } + } + this.state = 4465; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public procedure_with_argtypes(): Procedure_with_argtypesContext { + let localContext = new Procedure_with_argtypesContext(this.context, this.state); + this.enterRule(localContext, 378, PostgreSqlParser.RULE_procedure_with_argtypes); + try { + this.state = 4471; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 551, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 4466; + this.procedure_name(); + this.state = 4467; this.func_args(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4456; + this.state = 4469; this.type_func_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4457; - this.qualified_name(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public procedure_with_argtypes_list(): Procedure_with_argtypes_listContext { - let localContext = new Procedure_with_argtypes_listContext(this.context, this.state); - this.enterRule(localContext, 376, PostgreSqlParser.RULE_procedure_with_argtypes_list); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 4460; - this.procedure_with_argtypes(); - this.state = 4465; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 6) { - { - { - this.state = 4461; - this.match(PostgreSqlParser.COMMA); - this.state = 4462; - this.procedure_with_argtypes(); - } - } - this.state = 4467; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public procedure_with_argtypes(): Procedure_with_argtypesContext { - let localContext = new Procedure_with_argtypesContext(this.context, this.state); - this.enterRule(localContext, 378, PostgreSqlParser.RULE_procedure_with_argtypes); - try { - this.state = 4473; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 551, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 4468; - this.procedure_name(); - this.state = 4469; - this.func_args(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 4471; - this.type_func_name_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 4472; + this.state = 4470; this.qualified_name(); } break; @@ -25083,21 +25194,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4475; + this.state = 4473; this.function_with_argtypes(); - this.state = 4480; + this.state = 4478; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4476; + this.state = 4474; this.match(PostgreSqlParser.COMMA); - this.state = 4477; + this.state = 4475; this.function_with_argtypes(); } } - this.state = 4482; + this.state = 4480; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -25121,29 +25232,29 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Function_with_argtypesContext(this.context, this.state); this.enterRule(localContext, 382, PostgreSqlParser.RULE_function_with_argtypes); try { - this.state = 4488; + this.state = 4486; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 553, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4483; + this.state = 4481; this.function_name(); - this.state = 4484; + this.state = 4482; this.func_args(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4486; + this.state = 4484; this.type_func_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4487; + this.state = 4485; this.qualified_name(); } break; @@ -25169,19 +25280,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4498; + this.state = 4496; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 556, this.context) ) { case 1: { - this.state = 4490; + this.state = 4488; this.arg_class(); - this.state = 4492; + this.state = 4490; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 554, this.context) ) { case 1: { - this.state = 4491; + this.state = 4489; this.type_function_name(); } break; @@ -25190,14 +25301,14 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 4494; + this.state = 4492; this.type_function_name(); - this.state = 4496; + this.state = 4494; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 555, this.context) ) { case 1: { - this.state = 4495; + this.state = 4493; this.arg_class(); } break; @@ -25205,7 +25316,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 4500; + this.state = 4498; this.func_type(); } } @@ -25227,20 +25338,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Arg_classContext(this.context, this.state); this.enterRule(localContext, 386, PostgreSqlParser.RULE_arg_class); try { - this.state = 4509; + this.state = 4507; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_IN: this.enterOuterAlt(localContext, 1); { - this.state = 4502; + this.state = 4500; this.match(PostgreSqlParser.KW_IN); - this.state = 4504; + this.state = 4502; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 557, this.context) ) { case 1: { - this.state = 4503; + this.state = 4501; this.match(PostgreSqlParser.KW_OUT); } break; @@ -25250,21 +25361,21 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_OUT: this.enterOuterAlt(localContext, 2); { - this.state = 4506; + this.state = 4504; this.match(PostgreSqlParser.KW_OUT); } break; case PostgreSqlParser.KW_INOUT: this.enterOuterAlt(localContext, 3); { - this.state = 4507; + this.state = 4505; this.match(PostgreSqlParser.KW_INOUT); } break; case PostgreSqlParser.KW_VARIADIC: this.enterOuterAlt(localContext, 4); { - this.state = 4508; + this.state = 4506; this.match(PostgreSqlParser.KW_VARIADIC); } break; @@ -25291,36 +25402,36 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 388, PostgreSqlParser.RULE_func_type); let _la: number; try { - this.state = 4520; + this.state = 4518; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 560, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4511; + this.state = 4509; this.typename(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4513; + this.state = 4511; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 415) { { - this.state = 4512; + this.state = 4510; this.match(PostgreSqlParser.KW_SETOF); } } - this.state = 4515; + this.state = 4513; this.type_function_name(); - this.state = 4516; + this.state = 4514; this.attrs(); - this.state = 4517; + this.state = 4515; this.match(PostgreSqlParser.PERCENT); - this.state = 4518; + this.state = 4516; this.match(PostgreSqlParser.KW_TYPE); } break; @@ -25347,14 +25458,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4522; + this.state = 4520; this.func_arg(); - this.state = 4525; + this.state = 4523; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10 || _la === 53) { { - this.state = 4523; + this.state = 4521; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 53)) { this.errorHandler.recoverInline(this); @@ -25363,7 +25474,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4524; + this.state = 4522; this.expression(); } } @@ -25391,25 +25502,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4527; + this.state = 4525; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4537; + this.state = 4535; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.STAR: { - this.state = 4528; + this.state = 4526; this.match(PostgreSqlParser.STAR); } break; case PostgreSqlParser.CLOSE_PAREN: - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IN: case PostgreSqlParser.KW_ORDER: case PostgreSqlParser.KW_VARIADIC: @@ -25815,6 +25920,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -25827,26 +25933,26 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4530; + this.state = 4528; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || _la === 68 || ((((_la - 101)) & ~0x1F) === 0 && ((1 << (_la - 101)) & 4294967265) !== 0) || ((((_la - 133)) & ~0x1F) === 0 && ((1 << (_la - 133)) & 4294967295) !== 0) || ((((_la - 165)) & ~0x1F) === 0 && ((1 << (_la - 165)) & 4294967295) !== 0) || ((((_la - 197)) & ~0x1F) === 0 && ((1 << (_la - 197)) & 4294967295) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 4529; + this.state = 4527; this.func_args_list(); } } - this.state = 4535; + this.state = 4533; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 4532; + this.state = 4530; this.match(PostgreSqlParser.KW_ORDER); - this.state = 4533; + this.state = 4531; this.match(PostgreSqlParser.KW_BY); - this.state = 4534; + this.state = 4532; this.func_args_list(); } } @@ -25856,7 +25962,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4539; + this.state = 4537; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -25880,9 +25986,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4541; + this.state = 4539; this.function_name(); - this.state = 4542; + this.state = 4540; this.aggr_args(); } } @@ -25905,66 +26011,66 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 396, PostgreSqlParser.RULE_common_func_opt_item); let _la: number; try { - this.state = 4573; + this.state = 4571; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CALLED: case PostgreSqlParser.KW_RETURNS: this.enterOuterAlt(localContext, 1); { - this.state = 4547; + this.state = 4545; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_RETURNS: { - this.state = 4544; + this.state = 4542; this.match(PostgreSqlParser.KW_RETURNS); - this.state = 4545; + this.state = 4543; this.match(PostgreSqlParser.KW_NULL); } break; case PostgreSqlParser.KW_CALLED: { - this.state = 4546; + this.state = 4544; this.match(PostgreSqlParser.KW_CALLED); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4549; + this.state = 4547; this.match(PostgreSqlParser.KW_ON); - this.state = 4550; + this.state = 4548; this.match(PostgreSqlParser.KW_NULL); - this.state = 4551; + this.state = 4549; this.match(PostgreSqlParser.KW_INPUT); } break; case PostgreSqlParser.KW_STRICT: this.enterOuterAlt(localContext, 2); { - this.state = 4552; + this.state = 4550; this.match(PostgreSqlParser.KW_STRICT); } break; case PostgreSqlParser.KW_IMMUTABLE: this.enterOuterAlt(localContext, 3); { - this.state = 4553; + this.state = 4551; this.match(PostgreSqlParser.KW_IMMUTABLE); } break; case PostgreSqlParser.KW_STABLE: this.enterOuterAlt(localContext, 4); { - this.state = 4554; + this.state = 4552; this.match(PostgreSqlParser.KW_STABLE); } break; case PostgreSqlParser.KW_VOLATILE: this.enterOuterAlt(localContext, 5); { - this.state = 4555; + this.state = 4553; this.match(PostgreSqlParser.KW_VOLATILE); } break; @@ -25972,19 +26078,19 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_SECURITY: this.enterOuterAlt(localContext, 6); { - this.state = 4557; + this.state = 4555; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 205) { { - this.state = 4556; + this.state = 4554; this.match(PostgreSqlParser.KW_EXTERNAL); } } - this.state = 4559; + this.state = 4557; this.match(PostgreSqlParser.KW_SECURITY); - this.state = 4560; + this.state = 4558; _la = this.tokenStream.LA(1); if(!(_la === 181 || _la === 243)) { this.errorHandler.recoverInline(this); @@ -25998,16 +26104,16 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LEAKPROOF: this.enterOuterAlt(localContext, 7); { - this.state = 4561; + this.state = 4559; this.match(PostgreSqlParser.KW_LEAKPROOF); } break; case PostgreSqlParser.KW_NOT: this.enterOuterAlt(localContext, 8); { - this.state = 4562; + this.state = 4560; this.match(PostgreSqlParser.KW_NOT); - this.state = 4563; + this.state = 4561; this.match(PostgreSqlParser.KW_LEAKPROOF); } break; @@ -26015,7 +26121,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_ROWS: this.enterOuterAlt(localContext, 9); { - this.state = 4564; + this.state = 4562; _la = this.tokenStream.LA(1); if(!(_la === 170 || _la === 320)) { this.errorHandler.recoverInline(this); @@ -26024,41 +26130,41 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4565; + this.state = 4563; this.numericonly(); } break; case PostgreSqlParser.KW_SUPPORT: this.enterOuterAlt(localContext, 10); { - this.state = 4566; + this.state = 4564; this.match(PostgreSqlParser.KW_SUPPORT); - this.state = 4567; + this.state = 4565; this.any_name(); } break; case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 11); { - this.state = 4568; + this.state = 4566; this.match(PostgreSqlParser.KW_SET); - this.state = 4569; + this.state = 4567; this.set_rest_more(); } break; case PostgreSqlParser.KW_RESET: this.enterOuterAlt(localContext, 12); { - this.state = 4570; + this.state = 4568; this.variableresetstmt(); } break; case PostgreSqlParser.KW_PARALLEL: this.enterOuterAlt(localContext, 13); { - this.state = 4571; + this.state = 4569; this.match(PostgreSqlParser.KW_PARALLEL); - this.state = 4572; + this.state = 4570; this.colid(); } break; @@ -26085,57 +26191,57 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 398, PostgreSqlParser.RULE_createfunc_opt_item); let _la: number; try { - this.state = 4610; + this.state = 4608; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 570, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4575; + this.state = 4573; this.match(PostgreSqlParser.KW_AS); - this.state = 4576; + this.state = 4574; this.sconst(); - this.state = 4577; + this.state = 4575; this.notify_payload(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4579; + this.state = 4577; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 4580; + this.state = 4578; this.nonreservedword_or_sconst(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4581; + this.state = 4579; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 4582; + this.state = 4580; this.match(PostgreSqlParser.KW_FOR); - this.state = 4583; + this.state = 4581; this.match(PostgreSqlParser.KW_TYPE); - this.state = 4584; + this.state = 4582; this.typename(); - this.state = 4591; + this.state = 4589; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4585; + this.state = 4583; this.match(PostgreSqlParser.COMMA); - this.state = 4586; + this.state = 4584; this.match(PostgreSqlParser.KW_FOR); - this.state = 4587; + this.state = 4585; this.match(PostgreSqlParser.KW_TYPE); - this.state = 4588; + this.state = 4586; this.typename(); } } - this.state = 4593; + this.state = 4591; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -26144,41 +26250,41 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4594; + this.state = 4592; this.match(PostgreSqlParser.KW_WINDOW); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4595; + this.state = 4593; this.match(PostgreSqlParser.KW_SET); - this.state = 4596; + this.state = 4594; this.colid(); - this.state = 4603; + this.state = 4601; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TO: { - this.state = 4597; + this.state = 4595; this.match(PostgreSqlParser.KW_TO); - this.state = 4598; + this.state = 4596; this.colid(); } break; case PostgreSqlParser.EQUAL: { - this.state = 4599; + this.state = 4597; this.match(PostgreSqlParser.EQUAL); - this.state = 4600; + this.state = 4598; this.colid(); } break; case PostgreSqlParser.KW_FROM: { - this.state = 4601; + this.state = 4599; this.match(PostgreSqlParser.KW_FROM); - this.state = 4602; + this.state = 4600; this.match(PostgreSqlParser.KW_CURRENT); } break; @@ -26190,30 +26296,30 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 4605; + this.state = 4603; this.match(PostgreSqlParser.KW_AS); - this.state = 4606; + this.state = 4604; this.colid(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 4607; + this.state = 4605; this.stmt(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 4608; + this.state = 4606; this.common_func_opt_item(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 4609; + this.state = 4607; this.colid(); } break; @@ -26239,9 +26345,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4612; + this.state = 4610; this.match(PostgreSqlParser.KW_WITH); - this.state = 4613; + this.state = 4611; this.definition(); } } @@ -26265,9 +26371,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4615; + this.state = 4613; this.column_name(); - this.state = 4616; + this.state = 4614; this.func_type(); } } @@ -26292,39 +26398,39 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4618; + this.state = 4616; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4625; + this.state = 4623; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: { - this.state = 4619; + this.state = 4617; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4620; + this.state = 4618; this.function_with_argtypes(); } break; case PostgreSqlParser.KW_PROCEDURE: { - this.state = 4621; + this.state = 4619; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4622; + this.state = 4620; this.procedure_with_argtypes(); } break; case PostgreSqlParser.KW_ROUTINE: { - this.state = 4623; + this.state = 4621; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 4624; + this.state = 4622; this.routine_with_argtypes(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4628; + this.state = 4626; this.errorHandler.sync(this); alternative = 1; do { @@ -26332,7 +26438,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 4627; + this.state = 4625; this.common_func_opt_item(); } } @@ -26340,16 +26446,16 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4630; + this.state = 4628; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 572, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); - this.state = 4633; + this.state = 4631; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 573, this.context) ) { case 1: { - this.state = 4632; + this.state = 4630; this.match(PostgreSqlParser.KW_RESTRICT); } break; @@ -26376,74 +26482,74 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4635; + this.state = 4633; this.match(PostgreSqlParser.KW_DROP); - this.state = 4651; + this.state = 4649; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: { - this.state = 4636; + this.state = 4634; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4638; + this.state = 4636; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 574, this.context) ) { case 1: { - this.state = 4637; + this.state = 4635; this.opt_if_exists(); } break; } - this.state = 4640; + this.state = 4638; this.function_with_argtypes_list(); } break; case PostgreSqlParser.KW_PROCEDURE: { - this.state = 4641; + this.state = 4639; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4643; + this.state = 4641; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 575, this.context) ) { case 1: { - this.state = 4642; + this.state = 4640; this.opt_if_exists(); } break; } - this.state = 4645; + this.state = 4643; this.procedure_with_argtypes_list(); } break; case PostgreSqlParser.KW_ROUTINE: { - this.state = 4646; + this.state = 4644; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 4648; + this.state = 4646; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 576, this.context) ) { case 1: { - this.state = 4647; + this.state = 4645; this.opt_if_exists(); } break; } - this.state = 4650; + this.state = 4648; this.routine_with_argtypes_list(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4654; + this.state = 4652; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 578, this.context) ) { case 1: { - this.state = 4653; + this.state = 4651; this.opt_drop_behavior(); } break; @@ -26471,46 +26577,46 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4656; + this.state = 4654; this.match(PostgreSqlParser.KW_DROP); - this.state = 4657; + this.state = 4655; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 4659; + this.state = 4657; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 579, this.context) ) { case 1: { - this.state = 4658; + this.state = 4656; this.opt_if_exists(); } break; } { - this.state = 4661; + this.state = 4659; this.aggregate_with_argtypes(); - this.state = 4666; + this.state = 4664; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4662; + this.state = 4660; this.match(PostgreSqlParser.COMMA); - this.state = 4663; + this.state = 4661; this.aggregate_with_argtypes(); } } - this.state = 4668; + this.state = 4666; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 4670; + this.state = 4668; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 581, this.context) ) { case 1: { - this.state = 4669; + this.state = 4667; this.opt_drop_behavior(); } break; @@ -26538,46 +26644,46 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4672; + this.state = 4670; this.match(PostgreSqlParser.KW_DROP); - this.state = 4673; + this.state = 4671; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4675; + this.state = 4673; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 582, this.context) ) { case 1: { - this.state = 4674; + this.state = 4672; this.opt_if_exists(); } break; } { - this.state = 4677; + this.state = 4675; this.operator_with_argtypes(); - this.state = 4682; + this.state = 4680; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4678; + this.state = 4676; this.match(PostgreSqlParser.COMMA); - this.state = 4679; + this.state = 4677; this.operator_with_argtypes(); } } - this.state = 4684; + this.state = 4682; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 4686; + this.state = 4684; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 584, this.context) ) { case 1: { - this.state = 4685; + this.state = 4683; this.opt_drop_behavior(); } break; @@ -26605,23 +26711,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4688; + this.state = 4686; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4701; + this.state = 4699; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 586, this.context) ) { case 1: { - this.state = 4689; + this.state = 4687; this.typename(); - this.state = 4692; + this.state = 4690; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 4690; + this.state = 4688; this.match(PostgreSqlParser.COMMA); - this.state = 4691; + this.state = 4689; this.typename(); } } @@ -26630,26 +26736,26 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 4694; + this.state = 4692; this.match(PostgreSqlParser.KW_NONE); - this.state = 4695; + this.state = 4693; this.match(PostgreSqlParser.COMMA); - this.state = 4696; + this.state = 4694; this.typename(); } break; case 3: { - this.state = 4697; + this.state = 4695; this.typename(); - this.state = 4698; + this.state = 4696; this.match(PostgreSqlParser.COMMA); - this.state = 4699; + this.state = 4697; this.match(PostgreSqlParser.KW_NONE); } break; } - this.state = 4703; + this.state = 4701; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -26674,23 +26780,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4710; + this.state = 4708; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + while (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { { - this.state = 4705; + this.state = 4703; this.colid(); - this.state = 4706; + this.state = 4704; this.match(PostgreSqlParser.DOT); } } - this.state = 4712; + this.state = 4710; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4713; + this.state = 4711; this.all_op(); } } @@ -26714,9 +26820,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4715; + this.state = 4713; this.any_operator(); - this.state = 4716; + this.state = 4714; this.oper_argtypes(); } } @@ -26741,16 +26847,16 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 4718; + this.state = 4716; this.match(PostgreSqlParser.KW_DO); - this.state = 4722; + this.state = 4720; this.errorHandler.sync(this); alternative = 1; do { switch (alternative) { case 1: { - this.state = 4722; + this.state = 4720; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -26758,15 +26864,15 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 4719; + this.state = 4717; this.sconst(); } break; case PostgreSqlParser.KW_LANGUAGE: { - this.state = 4720; + this.state = 4718; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 4721; + this.state = 4719; this.nonreservedword_or_sconst(); } break; @@ -26778,7 +26884,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4724; + this.state = 4722; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 589, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -26805,38 +26911,38 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4726; + this.state = 4724; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4727; + this.state = 4725; this.match(PostgreSqlParser.KW_CAST); - this.state = 4728; + this.state = 4726; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4729; + this.state = 4727; this.typename(); - this.state = 4730; + this.state = 4728; this.match(PostgreSqlParser.KW_AS); - this.state = 4731; + this.state = 4729; this.typename(); - this.state = 4732; + this.state = 4730; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 4749; + this.state = 4747; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_WITHOUT: { { - this.state = 4733; + this.state = 4731; this.match(PostgreSqlParser.KW_WITHOUT); - this.state = 4734; + this.state = 4732; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4737; + this.state = 4735; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 590, this.context) ) { case 1: { - this.state = 4735; + this.state = 4733; this.match(PostgreSqlParser.KW_AS); - this.state = 4736; + this.state = 4734; _la = this.tokenStream.LA(1); if(!(_la === 141 || _la === 223)) { this.errorHandler.recoverInline(this); @@ -26854,36 +26960,36 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_WITH: { { - this.state = 4739; + this.state = 4737; this.match(PostgreSqlParser.KW_WITH); - this.state = 4743; + this.state = 4741; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: { - this.state = 4740; + this.state = 4738; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4741; + this.state = 4739; this.function_with_argtypes(); } break; case PostgreSqlParser.KW_INOUT: { - this.state = 4742; + this.state = 4740; this.match(PostgreSqlParser.KW_INOUT); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4747; + this.state = 4745; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 592, this.context) ) { case 1: { - this.state = 4745; + this.state = 4743; this.match(PostgreSqlParser.KW_AS); - this.state = 4746; + this.state = 4744; _la = this.tokenStream.LA(1); if(!(_la === 141 || _la === 223)) { this.errorHandler.recoverInline(this); @@ -26923,9 +27029,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4751; + this.state = 4749; this.match(PostgreSqlParser.KW_IF); - this.state = 4752; + this.state = 4750; this.match(PostgreSqlParser.KW_EXISTS); } } @@ -26950,49 +27056,49 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4754; + this.state = 4752; this.match(PostgreSqlParser.KW_CREATE); - this.state = 4756; + this.state = 4754; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 4755; + this.state = 4753; this.opt_or_replace(); } } - this.state = 4758; + this.state = 4756; this.match(PostgreSqlParser.KW_TRANSFORM); - this.state = 4759; + this.state = 4757; this.match(PostgreSqlParser.KW_FOR); - this.state = 4760; + this.state = 4758; this.typename(); - this.state = 4761; + this.state = 4759; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 4762; + this.state = 4760; this.colid(); - this.state = 4763; + this.state = 4761; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4778; + this.state = 4776; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FROM: { - this.state = 4764; + this.state = 4762; this.match(PostgreSqlParser.KW_FROM); - this.state = 4765; + this.state = 4763; this.sql_with_function(); - this.state = 4769; + this.state = 4767; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 4766; + this.state = 4764; this.match(PostgreSqlParser.COMMA); - this.state = 4767; + this.state = 4765; this.match(PostgreSqlParser.KW_TO); - this.state = 4768; + this.state = 4766; this.sql_with_function(); } } @@ -27001,20 +27107,20 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_TO: { - this.state = 4771; + this.state = 4769; this.match(PostgreSqlParser.KW_TO); - this.state = 4772; + this.state = 4770; this.sql_with_function(); - this.state = 4776; + this.state = 4774; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 4773; + this.state = 4771; this.match(PostgreSqlParser.COMMA); - this.state = 4774; + this.state = 4772; this.match(PostgreSqlParser.KW_FROM); - this.state = 4775; + this.state = 4773; this.sql_with_function(); } } @@ -27024,7 +27130,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4780; + this.state = 4778; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -27048,13 +27154,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4782; + this.state = 4780; this.match(PostgreSqlParser.KW_SQL); - this.state = 4783; + this.state = 4781; this.match(PostgreSqlParser.KW_WITH); - this.state = 4784; + this.state = 4782; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4785; + this.state = 4783; this.function_with_argtypes(); } } @@ -27079,129 +27185,129 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4787; + this.state = 4785; this.match(PostgreSqlParser.KW_REINDEX); - this.state = 4798; + this.state = 4796; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 4788; + this.state = 4786; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 4789; + this.state = 4787; this.match(PostgreSqlParser.KW_VERBOSE); - this.state = 4794; + this.state = 4792; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 4790; + this.state = 4788; this.match(PostgreSqlParser.COMMA); - this.state = 4791; + this.state = 4789; this.match(PostgreSqlParser.KW_VERBOSE); } } - this.state = 4796; + this.state = 4794; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 4797; + this.state = 4795; this.match(PostgreSqlParser.CLOSE_PAREN); } } { - this.state = 4825; + this.state = 4823; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_INDEX: { - this.state = 4800; + this.state = 4798; this.match(PostgreSqlParser.KW_INDEX); - this.state = 4802; + this.state = 4800; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4801; + this.state = 4799; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4804; + this.state = 4802; this.qualified_name(); } break; case PostgreSqlParser.KW_TABLE: { - this.state = 4805; + this.state = 4803; this.match(PostgreSqlParser.KW_TABLE); - this.state = 4807; + this.state = 4805; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4806; + this.state = 4804; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4809; + this.state = 4807; this.table_name(); } break; case PostgreSqlParser.KW_SCHEMA: { - this.state = 4810; + this.state = 4808; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4812; + this.state = 4810; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4811; + this.state = 4809; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4814; + this.state = 4812; this.schema_name(); } break; case PostgreSqlParser.KW_SYSTEM: { - this.state = 4815; + this.state = 4813; this.match(PostgreSqlParser.KW_SYSTEM); - this.state = 4817; + this.state = 4815; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4816; + this.state = 4814; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4819; + this.state = 4817; this.colid(); } break; case PostgreSqlParser.KW_DATABASE: { - this.state = 4820; + this.state = 4818; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 4822; + this.state = 4820; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 109) { { - this.state = 4821; + this.state = 4819; this.match(PostgreSqlParser.KW_CONCURRENTLY); } } - this.state = 4824; + this.state = 4822; this.database_name(); } break; @@ -27232,11 +27338,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 4827; + this.state = 4825; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4828; + this.state = 4826; this.opttablespace(); - this.state = 4829; + this.state = 4827; _la = this.tokenStream.LA(1); if(!(_la === 313 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -27245,7 +27351,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4830; + this.state = 4828; this.reloptions(); } } @@ -27268,67 +27374,67 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 432, PostgreSqlParser.RULE_renamestmt); let _la: number; try { - this.state = 5039; + this.state = 5037; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 626, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 4832; + this.state = 4830; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4837; + this.state = 4835; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AGGREGATE: { - this.state = 4833; + this.state = 4831; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 4834; + this.state = 4832; this.aggregate_with_argtypes(); } break; case PostgreSqlParser.KW_ROUTINE: { - this.state = 4835; + this.state = 4833; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 4836; + this.state = 4834; this.routine_with_argtypes(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4839; + this.state = 4837; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4840; + this.state = 4838; this.match(PostgreSqlParser.KW_TO); - this.state = 4841; + this.state = 4839; this.colid(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 4843; + this.state = 4841; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4844; + this.state = 4842; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 4845; + this.state = 4843; this.database_name(); - this.state = 4846; + this.state = 4844; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4847; + this.state = 4845; this.match(PostgreSqlParser.KW_TO); - this.state = 4848; + this.state = 4846; this.database_name_create(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 4850; + this.state = 4848; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4851; + this.state = 4849; _la = this.tokenStream.LA(1); if(!(_la === 108 || _la === 168 || _la === 189 || _la === 342 || _la === 360)) { this.errorHandler.recoverInline(this); @@ -27337,41 +27443,41 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4852; + this.state = 4850; this.any_name(); - this.state = 4853; + this.state = 4851; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4854; + this.state = 4852; this.match(PostgreSqlParser.KW_TO); - this.state = 4855; + this.state = 4853; this.colid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 4857; + this.state = 4855; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4858; + this.state = 4856; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 4859; + this.state = 4857; this.function_with_argtypes(); - this.state = 4860; + this.state = 4858; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4861; + this.state = 4859; this.match(PostgreSqlParser.KW_TO); - this.state = 4862; + this.state = 4860; this.function_name_create(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 4864; + this.state = 4862; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4865; + this.state = 4863; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 4866; + this.state = 4864; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -27380,58 +27486,58 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4867; + this.state = 4865; this.any_name(); - this.state = 4868; + this.state = 4866; this.table_access_method_clause(); - this.state = 4869; + this.state = 4867; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4870; + this.state = 4868; this.match(PostgreSqlParser.KW_TO); - this.state = 4871; + this.state = 4869; this.colid(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 4873; + this.state = 4871; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4874; + this.state = 4872; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 4875; + this.state = 4873; this.procedure_with_argtypes(); - this.state = 4876; + this.state = 4874; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4877; + this.state = 4875; this.match(PostgreSqlParser.KW_TO); - this.state = 4878; + this.state = 4876; this.procedure_name_create(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 4880; + this.state = 4878; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4881; + this.state = 4879; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 4882; + this.state = 4880; this.schema_name(); - this.state = 4883; + this.state = 4881; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4884; + this.state = 4882; this.match(PostgreSqlParser.KW_TO); - this.state = 4885; + this.state = 4883; this.schema_name_create(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 4887; + this.state = 4885; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4888; + this.state = 4886; _la = this.tokenStream.LA(1); if(!(_la === 226 || _la === 328)) { this.errorHandler.recoverInline(this); @@ -27440,143 +27546,143 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 4890; + this.state = 4888; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 607, this.context) ) { case 1: { - this.state = 4889; + this.state = 4887; this.opt_if_exists(); } break; } - this.state = 4892; + this.state = 4890; this.qualified_name(); - this.state = 4893; + this.state = 4891; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4894; + this.state = 4892; this.match(PostgreSqlParser.KW_TO); - this.state = 4895; + this.state = 4893; this.colid(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 4897; + this.state = 4895; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4899; + this.state = 4897; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 4898; + this.state = 4896; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 4901; + this.state = 4899; this.match(PostgreSqlParser.KW_VIEW); - this.state = 4903; + this.state = 4901; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 609, this.context) ) { case 1: { - this.state = 4902; + this.state = 4900; this.opt_if_exists(); } break; } - this.state = 4905; + this.state = 4903; this.view_name(); - this.state = 4906; + this.state = 4904; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4907; + this.state = 4905; this.match(PostgreSqlParser.KW_TO); - this.state = 4908; + this.state = 4906; this.view_name_create(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 4910; + this.state = 4908; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4912; + this.state = 4910; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 4911; + this.state = 4909; this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 4914; + this.state = 4912; this.match(PostgreSqlParser.KW_TABLE); - this.state = 4916; + this.state = 4914; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 611, this.context) ) { case 1: { - this.state = 4915; + this.state = 4913; this.opt_if_exists(); } break; } - this.state = 4918; + this.state = 4916; this.relation_expr(); - this.state = 4919; + this.state = 4917; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4920; + this.state = 4918; this.match(PostgreSqlParser.KW_TO); - this.state = 4921; + this.state = 4919; this.table_name_create(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 4923; + this.state = 4921; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4948; + this.state = 4946; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOREIGN: case PostgreSqlParser.KW_TABLE: { - this.state = 4925; + this.state = 4923; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 4924; + this.state = 4922; this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 4927; + this.state = 4925; this.match(PostgreSqlParser.KW_TABLE); - this.state = 4929; + this.state = 4927; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 613, this.context) ) { case 1: { - this.state = 4928; + this.state = 4926; this.opt_if_exists(); } break; } - this.state = 4931; + this.state = 4929; this.relation_expr(); - this.state = 4932; + this.state = 4930; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4934; + this.state = 4932; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 614, this.context) ) { case 1: { - this.state = 4933; + this.state = 4931; this.match(PostgreSqlParser.KW_COLUMN); } break; @@ -27586,38 +27692,38 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_MATERIALIZED: case PostgreSqlParser.KW_VIEW: { - this.state = 4937; + this.state = 4935; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 4936; + this.state = 4934; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 4939; + this.state = 4937; this.match(PostgreSqlParser.KW_VIEW); - this.state = 4941; + this.state = 4939; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 616, this.context) ) { case 1: { - this.state = 4940; + this.state = 4938; this.opt_if_exists(); } break; } - this.state = 4943; + this.state = 4941; this.view_name(); - this.state = 4944; + this.state = 4942; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4946; + this.state = 4944; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 617, this.context) ) { case 1: { - this.state = 4945; + this.state = 4943; this.match(PostgreSqlParser.KW_COLUMN); } break; @@ -27627,82 +27733,82 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 4950; + this.state = 4948; this.column_name(); - this.state = 4951; + this.state = 4949; this.match(PostgreSqlParser.KW_TO); - this.state = 4952; + this.state = 4950; this.column_name_create(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 4954; + this.state = 4952; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4962; + this.state = 4960; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TABLE: { - this.state = 4955; + this.state = 4953; this.match(PostgreSqlParser.KW_TABLE); - this.state = 4957; + this.state = 4955; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 619, this.context) ) { case 1: { - this.state = 4956; + this.state = 4954; this.opt_if_exists(); } break; } - this.state = 4959; + this.state = 4957; this.relation_expr(); } break; case PostgreSqlParser.KW_DOMAIN: { - this.state = 4960; + this.state = 4958; this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 4961; + this.state = 4959; this.any_name(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4964; + this.state = 4962; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4965; + this.state = 4963; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 4966; + this.state = 4964; this.colid(); - this.state = 4967; + this.state = 4965; this.match(PostgreSqlParser.KW_TO); - this.state = 4968; + this.state = 4966; this.colid(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 4970; + this.state = 4968; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4977; + this.state = 4975; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_POLICY: { { - this.state = 4971; + this.state = 4969; this.match(PostgreSqlParser.KW_POLICY); - this.state = 4973; + this.state = 4971; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 621, this.context) ) { case 1: { - this.state = 4972; + this.state = 4970; this.opt_if_exists(); } break; @@ -27712,113 +27818,113 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_RULE: { - this.state = 4975; + this.state = 4973; this.match(PostgreSqlParser.KW_RULE); } break; case PostgreSqlParser.KW_TRIGGER: { - this.state = 4976; + this.state = 4974; this.match(PostgreSqlParser.KW_TRIGGER); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 4979; + this.state = 4977; this.colid(); - this.state = 4980; + this.state = 4978; this.match(PostgreSqlParser.KW_ON); - this.state = 4981; + this.state = 4979; this.qualified_name(); - this.state = 4982; + this.state = 4980; this.match(PostgreSqlParser.KW_RENAME); - this.state = 4983; + this.state = 4981; this.match(PostgreSqlParser.KW_TO); - this.state = 4984; + this.state = 4982; this.colid(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 4986; + this.state = 4984; this.match(PostgreSqlParser.KW_ALTER); - this.state = 4999; + this.state = 4997; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FOREIGN: { - this.state = 4987; + this.state = 4985; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 4988; + this.state = 4986; this.match(PostgreSqlParser.KW_DATA); - this.state = 4989; + this.state = 4987; this.match(PostgreSqlParser.KW_WRAPPER); } break; case PostgreSqlParser.KW_LANGUAGE: case PostgreSqlParser.KW_PROCEDURAL: { - this.state = 4991; + this.state = 4989; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 4990; + this.state = 4988; this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 4993; + this.state = 4991; this.match(PostgreSqlParser.KW_LANGUAGE); } break; case PostgreSqlParser.KW_PUBLICATION: { - this.state = 4994; + this.state = 4992; this.match(PostgreSqlParser.KW_PUBLICATION); } break; case PostgreSqlParser.KW_SERVER: { - this.state = 4995; + this.state = 4993; this.match(PostgreSqlParser.KW_SERVER); } break; case PostgreSqlParser.KW_SUBSCRIPTION: { - this.state = 4996; + this.state = 4994; this.match(PostgreSqlParser.KW_SUBSCRIPTION); } break; case PostgreSqlParser.KW_EVENT: { - this.state = 4997; + this.state = 4995; this.match(PostgreSqlParser.KW_EVENT); - this.state = 4998; + this.state = 4996; this.match(PostgreSqlParser.KW_TRIGGER); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5001; + this.state = 4999; this.colid(); - this.state = 5002; + this.state = 5000; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5003; + this.state = 5001; this.match(PostgreSqlParser.KW_TO); - this.state = 5004; + this.state = 5002; this.colid(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 5006; + this.state = 5004; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5007; + this.state = 5005; _la = this.tokenStream.LA(1); if(!(_la === 66 || _la === 99 || _la === 318)) { this.errorHandler.recoverInline(this); @@ -27827,41 +27933,41 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5008; + this.state = 5006; this.rolespec(); - this.state = 5009; + this.state = 5007; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5010; + this.state = 5008; this.match(PostgreSqlParser.KW_TO); - this.state = 5011; + this.state = 5009; this.rolespec(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 5013; + this.state = 5011; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5014; + this.state = 5012; this.opttablespace(); - this.state = 5015; + this.state = 5013; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5016; + this.state = 5014; this.match(PostgreSqlParser.KW_TO); - this.state = 5017; + this.state = 5015; this.tablespace_name_create(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 5019; + this.state = 5017; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5020; + this.state = 5018; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5021; + this.state = 5019; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5022; + this.state = 5020; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { this.errorHandler.recoverInline(this); @@ -27870,41 +27976,41 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5023; + this.state = 5021; this.any_name(); - this.state = 5024; + this.state = 5022; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5025; + this.state = 5023; this.match(PostgreSqlParser.KW_TO); - this.state = 5026; + this.state = 5024; this.colid(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 5028; + this.state = 5026; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5029; + this.state = 5027; this.match(PostgreSqlParser.KW_TYPE); - this.state = 5030; + this.state = 5028; this.any_name(); - this.state = 5031; + this.state = 5029; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5032; + this.state = 5030; this.match(PostgreSqlParser.KW_ATTRIBUTE); - this.state = 5033; + this.state = 5031; this.colid(); - this.state = 5034; + this.state = 5032; this.match(PostgreSqlParser.KW_TO); - this.state = 5035; + this.state = 5033; this.colid(); - this.state = 5037; + this.state = 5035; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 625, this.context) ) { case 1: { - this.state = 5036; + this.state = 5034; this.opt_drop_behavior(); } break; @@ -27934,85 +28040,85 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5041; + this.state = 5039; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5058; + this.state = 5056; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_FUNCTION: { - this.state = 5042; + this.state = 5040; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 5043; + this.state = 5041; this.function_with_argtypes(); } break; case PostgreSqlParser.KW_PROCEDURE: { - this.state = 5044; + this.state = 5042; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 5045; + this.state = 5043; this.procedure_with_argtypes(); } break; case PostgreSqlParser.KW_ROUTINE: { - this.state = 5046; + this.state = 5044; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 5047; + this.state = 5045; this.routine_with_argtypes(); } break; case PostgreSqlParser.KW_TRIGGER: { - this.state = 5048; + this.state = 5046; this.match(PostgreSqlParser.KW_TRIGGER); - this.state = 5049; + this.state = 5047; this.colid(); - this.state = 5050; + this.state = 5048; this.match(PostgreSqlParser.KW_ON); - this.state = 5051; + this.state = 5049; this.qualified_name(); } break; case PostgreSqlParser.KW_MATERIALIZED: { - this.state = 5053; + this.state = 5051; this.match(PostgreSqlParser.KW_MATERIALIZED); - this.state = 5054; + this.state = 5052; this.match(PostgreSqlParser.KW_VIEW); - this.state = 5055; + this.state = 5053; this.view_name(); } break; case PostgreSqlParser.KW_INDEX: { - this.state = 5056; + this.state = 5054; this.match(PostgreSqlParser.KW_INDEX); - this.state = 5057; + this.state = 5055; this.qualified_name(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5061; + this.state = 5059; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 5060; + this.state = 5058; this.match(PostgreSqlParser.KW_NO); } } - this.state = 5063; + this.state = 5061; this.match(PostgreSqlParser.KW_DEPENDS); - this.state = 5064; + this.state = 5062; this.match(PostgreSqlParser.KW_ON); - this.state = 5065; + this.state = 5063; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 5066; + this.state = 5064; this.colid(); } } @@ -28035,54 +28141,54 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 436, PostgreSqlParser.RULE_alterobjectschemastmt); let _la: number; try { - this.state = 5129; + this.state = 5127; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 636, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5068; + this.state = 5066; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5107; + this.state = 5105; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 634, this.context) ) { case 1: { - this.state = 5069; + this.state = 5067; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 5070; + this.state = 5068; this.aggregate_with_argtypes(); } break; case 2: { - this.state = 5071; + this.state = 5069; this.match(PostgreSqlParser.KW_EXTENSION); - this.state = 5072; + this.state = 5070; this.colid(); } break; case 3: { - this.state = 5073; + this.state = 5071; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 5074; + this.state = 5072; this.function_with_argtypes(); } break; case 4: { - this.state = 5075; + this.state = 5073; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5076; + this.state = 5074; this.operator_with_argtypes(); } break; case 5: { - this.state = 5077; + this.state = 5075; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5078; + this.state = 5076; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -28091,126 +28197,126 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5079; + this.state = 5077; this.any_name(); - this.state = 5080; + this.state = 5078; this.table_access_method_clause(); } break; case 6: { - this.state = 5082; + this.state = 5080; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 5083; + this.state = 5081; this.procedure_with_argtypes(); } break; case 7: { - this.state = 5084; + this.state = 5082; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 5085; + this.state = 5083; this.routine_with_argtypes(); } break; case 8: { - this.state = 5086; + this.state = 5084; this.match(PostgreSqlParser.KW_SEQUENCE); - this.state = 5088; + this.state = 5086; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 629, this.context) ) { case 1: { - this.state = 5087; + this.state = 5085; this.opt_if_exists(); } break; } - this.state = 5090; + this.state = 5088; this.qualified_name(); } break; case 9: { - this.state = 5092; + this.state = 5090; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 259) { { - this.state = 5091; + this.state = 5089; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 5094; + this.state = 5092; this.match(PostgreSqlParser.KW_VIEW); - this.state = 5096; + this.state = 5094; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 631, this.context) ) { case 1: { - this.state = 5095; + this.state = 5093; this.opt_if_exists(); } break; } - this.state = 5098; + this.state = 5096; this.view_name(); } break; case 10: { - this.state = 5100; + this.state = 5098; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 63) { { - this.state = 5099; + this.state = 5097; this.match(PostgreSqlParser.KW_FOREIGN); } } - this.state = 5102; + this.state = 5100; this.match(PostgreSqlParser.KW_TABLE); - this.state = 5104; + this.state = 5102; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 633, this.context) ) { case 1: { - this.state = 5103; + this.state = 5101; this.opt_if_exists(); } break; } - this.state = 5106; + this.state = 5104; this.relation_expr(); } break; } - this.state = 5109; + this.state = 5107; this.match(PostgreSqlParser.KW_SET); - this.state = 5110; + this.state = 5108; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5111; + this.state = 5109; this.schema_name(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5113; + this.state = 5111; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5122; + this.state = 5120; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TEXT: { - this.state = 5114; + this.state = 5112; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5115; + this.state = 5113; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5116; + this.state = 5114; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185 || _la === 283 || _la === 353)) { this.errorHandler.recoverInline(this); @@ -28223,44 +28329,44 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_COLLATION: { - this.state = 5117; + this.state = 5115; this.match(PostgreSqlParser.KW_COLLATION); } break; case PostgreSqlParser.KW_CONVERSION: { - this.state = 5118; + this.state = 5116; this.match(PostgreSqlParser.KW_CONVERSION); } break; case PostgreSqlParser.KW_DOMAIN: { - this.state = 5119; + this.state = 5117; this.match(PostgreSqlParser.KW_DOMAIN); } break; case PostgreSqlParser.KW_STATISTICS: { - this.state = 5120; + this.state = 5118; this.match(PostgreSqlParser.KW_STATISTICS); } break; case PostgreSqlParser.KW_TYPE: { - this.state = 5121; + this.state = 5119; this.match(PostgreSqlParser.KW_TYPE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5124; + this.state = 5122; this.any_name(); - this.state = 5125; + this.state = 5123; this.match(PostgreSqlParser.KW_SET); - this.state = 5126; + this.state = 5124; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5127; + this.state = 5125; this.schema_name(); } break; @@ -28286,15 +28392,15 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5131; + this.state = 5129; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5132; + this.state = 5130; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5133; + this.state = 5131; this.operator_with_argtypes(); - this.state = 5134; + this.state = 5132; this.match(PostgreSqlParser.KW_SET); - this.state = 5135; + this.state = 5133; this.operator_def_list(); } } @@ -28319,27 +28425,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5137; + this.state = 5135; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5138; + this.state = 5136; this.operator_def_elem(); - this.state = 5143; + this.state = 5141; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5139; + this.state = 5137; this.match(PostgreSqlParser.COMMA); - this.state = 5140; + this.state = 5138; this.operator_def_elem(); } } - this.state = 5145; + this.state = 5143; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5146; + this.state = 5144; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -28363,46 +28469,46 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5148; + this.state = 5146; this.collabel(); - this.state = 5149; + this.state = 5147; this.match(PostgreSqlParser.EQUAL); - this.state = 5156; + this.state = 5154; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 638, this.context) ) { case 1: { - this.state = 5150; + this.state = 5148; this.match(PostgreSqlParser.KW_NONE); } break; case 2: { - this.state = 5151; + this.state = 5149; this.func_type(); } break; case 3: { - this.state = 5152; + this.state = 5150; this.reserved_keyword(); } break; case 4: { - this.state = 5153; + this.state = 5151; this.qual_all_op(); } break; case 5: { - this.state = 5154; + this.state = 5152; this.numericonly(); } break; case 6: { - this.state = 5155; + this.state = 5153; this.sconst(); } break; @@ -28429,15 +28535,15 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5158; + this.state = 5156; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5159; + this.state = 5157; this.match(PostgreSqlParser.KW_TYPE); - this.state = 5160; + this.state = 5158; this.any_name(); - this.state = 5161; + this.state = 5159; this.match(PostgreSqlParser.KW_SET); - this.state = 5162; + this.state = 5160; this.operator_def_list(); } } @@ -28460,17 +28566,17 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 446, PostgreSqlParser.RULE_alterownerstmt); let _la: number; try { - this.state = 5238; + this.state = 5236; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 643, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5164; + this.state = 5162; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5165; + this.state = 5163; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5166; + this.state = 5164; _la = this.tokenStream.LA(1); if(!(_la === 156 || _la === 206)) { this.errorHandler.recoverInline(this); @@ -28479,150 +28585,150 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5167; + this.state = 5165; this.any_name(); - this.state = 5168; + this.state = 5166; this.table_access_method_clause(); - this.state = 5169; + this.state = 5167; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5170; + this.state = 5168; this.match(PostgreSqlParser.KW_TO); - this.state = 5171; + this.state = 5169; this.rolespec(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5173; + this.state = 5171; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5200; + this.state = 5198; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 640, this.context) ) { case 1: { - this.state = 5174; + this.state = 5172; this.match(PostgreSqlParser.KW_AGGREGATE); - this.state = 5175; + this.state = 5173; this.aggregate_with_argtypes(); } break; case 2: { - this.state = 5176; + this.state = 5174; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5177; + this.state = 5175; this.database_name(); } break; case 3: { - this.state = 5178; + this.state = 5176; this.match(PostgreSqlParser.KW_FUNCTION); - this.state = 5179; + this.state = 5177; this.function_with_argtypes(); } break; case 4: { - this.state = 5181; + this.state = 5179; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 295) { { - this.state = 5180; + this.state = 5178; this.match(PostgreSqlParser.KW_PROCEDURAL); } } - this.state = 5183; + this.state = 5181; this.match(PostgreSqlParser.KW_LANGUAGE); - this.state = 5184; + this.state = 5182; this.colid(); } break; case 5: { - this.state = 5185; + this.state = 5183; this.match(PostgreSqlParser.KW_LARGE); - this.state = 5186; + this.state = 5184; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 5187; + this.state = 5185; this.numericonly(); } break; case 6: { - this.state = 5188; + this.state = 5186; this.match(PostgreSqlParser.KW_LARGE); - this.state = 5189; + this.state = 5187; this.match(PostgreSqlParser.KW_OBJECT); - this.state = 5190; + this.state = 5188; this.numericonly(); } break; case 7: { - this.state = 5191; + this.state = 5189; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 5192; + this.state = 5190; this.operator_with_argtypes(); } break; case 8: { - this.state = 5193; + this.state = 5191; this.match(PostgreSqlParser.KW_PROCEDURE); - this.state = 5194; + this.state = 5192; this.procedure_with_argtypes(); } break; case 9: { - this.state = 5195; + this.state = 5193; this.match(PostgreSqlParser.KW_ROUTINE); - this.state = 5196; + this.state = 5194; this.routine_with_argtypes(); } break; case 10: { - this.state = 5197; + this.state = 5195; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 5198; + this.state = 5196; this.schema_name(); } break; case 11: { - this.state = 5199; + this.state = 5197; this.opttablespace(); } break; } - this.state = 5202; + this.state = 5200; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5203; + this.state = 5201; this.match(PostgreSqlParser.KW_TO); - this.state = 5204; + this.state = 5202; this.rolespec(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5206; + this.state = 5204; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5215; + this.state = 5213; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_TEXT: { - this.state = 5207; + this.state = 5205; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5208; + this.state = 5206; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5209; + this.state = 5207; _la = this.tokenStream.LA(1); if(!(_la === 163 || _la === 185)) { this.errorHandler.recoverInline(this); @@ -28635,69 +28741,69 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_COLLATION: { - this.state = 5210; + this.state = 5208; this.match(PostgreSqlParser.KW_COLLATION); } break; case PostgreSqlParser.KW_CONVERSION: { - this.state = 5211; + this.state = 5209; this.match(PostgreSqlParser.KW_CONVERSION); } break; case PostgreSqlParser.KW_DOMAIN: { - this.state = 5212; + this.state = 5210; this.match(PostgreSqlParser.KW_DOMAIN); } break; case PostgreSqlParser.KW_TYPE: { - this.state = 5213; + this.state = 5211; this.match(PostgreSqlParser.KW_TYPE); } break; case PostgreSqlParser.KW_STATISTICS: { - this.state = 5214; + this.state = 5212; this.match(PostgreSqlParser.KW_STATISTICS); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5217; + this.state = 5215; this.any_name(); - this.state = 5218; + this.state = 5216; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5219; + this.state = 5217; this.match(PostgreSqlParser.KW_TO); - this.state = 5220; + this.state = 5218; this.rolespec(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5222; + this.state = 5220; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5231; + this.state = 5229; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SERVER: { - this.state = 5223; + this.state = 5221; this.match(PostgreSqlParser.KW_SERVER); } break; case PostgreSqlParser.KW_FOREIGN: { { - this.state = 5224; + this.state = 5222; this.match(PostgreSqlParser.KW_FOREIGN); - this.state = 5225; + this.state = 5223; this.match(PostgreSqlParser.KW_DATA); - this.state = 5226; + this.state = 5224; this.match(PostgreSqlParser.KW_WRAPPER); } } @@ -28705,35 +28811,35 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EVENT: { { - this.state = 5227; + this.state = 5225; this.match(PostgreSqlParser.KW_EVENT); - this.state = 5228; + this.state = 5226; this.match(PostgreSqlParser.KW_TRIGGER); } } break; case PostgreSqlParser.KW_PUBLICATION: { - this.state = 5229; + this.state = 5227; this.match(PostgreSqlParser.KW_PUBLICATION); } break; case PostgreSqlParser.KW_SUBSCRIPTION: { - this.state = 5230; + this.state = 5228; this.match(PostgreSqlParser.KW_SUBSCRIPTION); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5233; + this.state = 5231; this.colid(); - this.state = 5234; + this.state = 5232; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5235; + this.state = 5233; this.match(PostgreSqlParser.KW_TO); - this.state = 5236; + this.state = 5234; this.rolespec(); } break; @@ -28759,42 +28865,42 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5240; + this.state = 5238; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5241; + this.state = 5239; this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 5242; + this.state = 5240; this.colid(); - this.state = 5249; + this.state = 5247; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 644, this.context) ) { case 1: { - this.state = 5243; + this.state = 5241; this.match(PostgreSqlParser.KW_FOR); - this.state = 5244; + this.state = 5242; this.match(PostgreSqlParser.KW_TABLE); - this.state = 5245; + this.state = 5243; this.relation_expr_list(); } break; case 2: { - this.state = 5246; + this.state = 5244; this.match(PostgreSqlParser.KW_FOR); - this.state = 5247; + this.state = 5245; this.match(PostgreSqlParser.KW_ALL); - this.state = 5248; + this.state = 5246; this.match(PostgreSqlParser.KW_TABLES); } break; } - this.state = 5252; + this.state = 5250; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 645, this.context) ) { case 1: { - this.state = 5251; + this.state = 5249; this.opt_definition(); } break; @@ -28822,23 +28928,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5254; + this.state = 5252; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5255; + this.state = 5253; this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 5256; + this.state = 5254; this.colid(); - this.state = 5274; + this.state = 5272; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 647, this.context) ) { case 1: { { - this.state = 5257; + this.state = 5255; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5258; + this.state = 5256; this.match(PostgreSqlParser.KW_TO); - this.state = 5259; + this.state = 5257; this.rolespec(); } } @@ -28846,9 +28952,9 @@ export class PostgreSqlParser extends SQLParserBase { case 2: { { - this.state = 5260; + this.state = 5258; this.match(PostgreSqlParser.KW_SET); - this.state = 5261; + this.state = 5259; this.definition(); } } @@ -28856,18 +28962,18 @@ export class PostgreSqlParser extends SQLParserBase { case 3: { { - this.state = 5262; + this.state = 5260; this.match(PostgreSqlParser.KW_RENAME); - this.state = 5263; + this.state = 5261; this.match(PostgreSqlParser.KW_TO); - this.state = 5264; + this.state = 5262; this.colid(); } } break; case 4: { - this.state = 5265; + this.state = 5263; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -28876,21 +28982,21 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5266; + this.state = 5264; this.publication_relation_expr(); - this.state = 5271; + this.state = 5269; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5267; + this.state = 5265; this.match(PostgreSqlParser.COMMA); - this.state = 5268; + this.state = 5266; this.publication_relation_expr(); } } - this.state = 5273; + this.state = 5271; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -28920,44 +29026,44 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5276; + this.state = 5274; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5277; + this.state = 5275; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5278; + this.state = 5276; this.colid(); - this.state = 5279; + this.state = 5277; this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 5280; + this.state = 5278; this.sconst(); - this.state = 5281; + this.state = 5279; this.match(PostgreSqlParser.KW_PUBLICATION); { - this.state = 5282; + this.state = 5280; this.collabel(); - this.state = 5287; + this.state = 5285; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5283; + this.state = 5281; this.match(PostgreSqlParser.COMMA); - this.state = 5284; + this.state = 5282; this.collabel(); } } - this.state = 5289; + this.state = 5287; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 5291; + this.state = 5289; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 649, this.context) ) { case 1: { - this.state = 5290; + this.state = 5288; this.opt_definition(); } break; @@ -28983,58 +29089,58 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 454, PostgreSqlParser.RULE_altersubscriptionstmt); let _la: number; try { - this.state = 5349; + this.state = 5347; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 653, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5293; + this.state = 5291; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5294; + this.state = 5292; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5295; + this.state = 5293; this.colid(); - this.state = 5296; + this.state = 5294; this.match(PostgreSqlParser.KW_SET); - this.state = 5297; + this.state = 5295; this.definition(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5299; + this.state = 5297; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5300; + this.state = 5298; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5301; + this.state = 5299; this.colid(); - this.state = 5302; + this.state = 5300; this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 5303; + this.state = 5301; this.sconst(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5305; + this.state = 5303; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5306; + this.state = 5304; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5307; + this.state = 5305; this.colid(); - this.state = 5308; + this.state = 5306; this.match(PostgreSqlParser.KW_REFRESH); - this.state = 5309; + this.state = 5307; this.match(PostgreSqlParser.KW_PUBLICATION); - this.state = 5311; + this.state = 5309; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 650, this.context) ) { case 1: { - this.state = 5310; + this.state = 5308; this.opt_definition(); } break; @@ -29044,13 +29150,13 @@ export class PostgreSqlParser extends SQLParserBase { case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5313; + this.state = 5311; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5314; + this.state = 5312; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5315; + this.state = 5313; this.colid(); - this.state = 5316; + this.state = 5314; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -29059,34 +29165,34 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5317; + this.state = 5315; this.match(PostgreSqlParser.KW_PUBLICATION); { - this.state = 5318; + this.state = 5316; this.collabel(); - this.state = 5323; + this.state = 5321; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5319; + this.state = 5317; this.match(PostgreSqlParser.COMMA); - this.state = 5320; + this.state = 5318; this.collabel(); } } - this.state = 5325; + this.state = 5323; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 5327; + this.state = 5325; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 652, this.context) ) { case 1: { - this.state = 5326; + this.state = 5324; this.opt_definition(); } break; @@ -29096,13 +29202,13 @@ export class PostgreSqlParser extends SQLParserBase { case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5329; + this.state = 5327; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5330; + this.state = 5328; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5331; + this.state = 5329; this.colid(); - this.state = 5332; + this.state = 5330; _la = this.tokenStream.LA(1); if(!(_la === 186 || _la === 193)) { this.errorHandler.recoverInline(this); @@ -29116,36 +29222,36 @@ export class PostgreSqlParser extends SQLParserBase { case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5334; + this.state = 5332; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5335; + this.state = 5333; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5336; + this.state = 5334; this.colid(); - this.state = 5337; + this.state = 5335; this.match(PostgreSqlParser.KW_SKIP); - this.state = 5338; + this.state = 5336; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5339; + this.state = 5337; this.old_aggr_elem(); - this.state = 5340; + this.state = 5338; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 5342; + this.state = 5340; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5343; + this.state = 5341; this.match(PostgreSqlParser.KW_SUBSCRIPTION); - this.state = 5344; + this.state = 5342; this.colid(); - this.state = 5345; + this.state = 5343; this.match(PostgreSqlParser.KW_OWNER); - this.state = 5346; + this.state = 5344; this.match(PostgreSqlParser.KW_TO); - this.state = 5347; + this.state = 5345; this.rolespec(); } break; @@ -29172,27 +29278,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5351; + this.state = 5349; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5353; + this.state = 5351; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 5352; + this.state = 5350; this.opt_or_replace(); } } - this.state = 5355; + this.state = 5353; this.match(PostgreSqlParser.KW_RULE); - this.state = 5356; + this.state = 5354; this.colid(); - this.state = 5357; + this.state = 5355; this.match(PostgreSqlParser.KW_AS); - this.state = 5358; + this.state = 5356; this.match(PostgreSqlParser.KW_ON); - this.state = 5359; + this.state = 5357; _la = this.tokenStream.LA(1); if(!(_la === 88 || _la === 182 || _la === 241 || _la === 369)) { this.errorHandler.recoverInline(this); @@ -29201,28 +29307,28 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5360; + this.state = 5358; this.match(PostgreSqlParser.KW_TO); - this.state = 5361; + this.state = 5359; this.qualified_name(); - this.state = 5363; + this.state = 5361; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 5362; + this.state = 5360; this.where_clause(); } } - this.state = 5365; + this.state = 5363; this.match(PostgreSqlParser.KW_DO); - this.state = 5367; + this.state = 5365; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 137 || _la === 242) { { - this.state = 5366; + this.state = 5364; _la = this.tokenStream.LA(1); if(!(_la === 137 || _la === 242)) { this.errorHandler.recoverInline(this); @@ -29234,62 +29340,62 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 5385; + this.state = 5383; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 660, this.context) ) { case 1: { - this.state = 5369; + this.state = 5367; this.match(PostgreSqlParser.KW_NOTHING); } break; case 2: { - this.state = 5370; + this.state = 5368; this.ruleactionstmt(); } break; case 3: { - this.state = 5371; + this.state = 5369; this.match(PostgreSqlParser.OPEN_PAREN); { - this.state = 5373; + this.state = 5371; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2 || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 131089) !== 0) || _la === 182 || _la === 241 || _la === 271 || _la === 369 || _la === 422) { { - this.state = 5372; + this.state = 5370; this.ruleactionstmt(); } } - this.state = 5381; + this.state = 5379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 7) { { { - this.state = 5375; + this.state = 5373; this.match(PostgreSqlParser.SEMI); - this.state = 5377; + this.state = 5375; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2 || ((((_la - 88)) & ~0x1F) === 0 && ((1 << (_la - 88)) & 131089) !== 0) || _la === 182 || _la === 241 || _la === 271 || _la === 369 || _la === 422) { { - this.state = 5376; + this.state = 5374; this.ruleactionstmt(); } } } } - this.state = 5383; + this.state = 5381; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 5384; + this.state = 5382; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -29314,41 +29420,41 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new RuleactionstmtContext(this.context, this.state); this.enterRule(localContext, 458, PostgreSqlParser.RULE_ruleactionstmt); try { - this.state = 5392; + this.state = 5390; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 661, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5387; + this.state = 5385; this.selectstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5388; + this.state = 5386; this.insertstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5389; + this.state = 5387; this.updatestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5390; + this.state = 5388; this.deletestmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5391; + this.state = 5389; this.notifystmt(); } break; @@ -29375,16 +29481,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5394; + this.state = 5392; this.match(PostgreSqlParser.KW_NOTIFY); - this.state = 5395; + this.state = 5393; this.colid(); - this.state = 5397; + this.state = 5395; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 5396; + this.state = 5394; this.notify_payload(); } } @@ -29411,9 +29517,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5399; + this.state = 5397; this.match(PostgreSqlParser.COMMA); - this.state = 5400; + this.state = 5398; this.sconst(); } } @@ -29437,9 +29543,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5402; + this.state = 5400; this.match(PostgreSqlParser.KW_LISTEN); - this.state = 5403; + this.state = 5401; this.colid(); } } @@ -29463,18 +29569,12 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5405; + this.state = 5403; this.match(PostgreSqlParser.KW_UNLISTEN); - this.state = 5408; + this.state = 5406; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -29856,6 +29956,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -29868,13 +29969,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 5406; + this.state = 5404; this.colid(); } break; case PostgreSqlParser.STAR: { - this.state = 5407; + this.state = 5405; this.match(PostgreSqlParser.STAR); } break; @@ -29902,30 +30003,30 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 468, PostgreSqlParser.RULE_transactionstmt); let _la: number; try { - this.state = 5455; + this.state = 5453; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 673, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5410; + this.state = 5408; this.match(PostgreSqlParser.KW_BEGIN); - this.state = 5412; + this.state = 5410; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 664, this.context) ) { case 1: { - this.state = 5411; + this.state = 5409; this.opt_transaction(); } break; } - this.state = 5415; + this.state = 5413; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 665, this.context) ) { case 1: { - this.state = 5414; + this.state = 5412; this.transaction_mode_list(); } break; @@ -29935,16 +30036,16 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5417; + this.state = 5415; this.match(PostgreSqlParser.KW_START); - this.state = 5418; + this.state = 5416; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 5420; + this.state = 5418; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 666, this.context) ) { case 1: { - this.state = 5419; + this.state = 5417; this.transaction_mode_list(); } break; @@ -29954,46 +30055,46 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5422; + this.state = 5420; this.match(PostgreSqlParser.KW_SAVEPOINT); - this.state = 5423; + this.state = 5421; this.colid(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5424; + this.state = 5422; this.match(PostgreSqlParser.KW_RELEASE); - this.state = 5426; + this.state = 5424; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 667, this.context) ) { case 1: { - this.state = 5425; + this.state = 5423; this.match(PostgreSqlParser.KW_SAVEPOINT); } break; } - this.state = 5428; + this.state = 5426; this.colid(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5429; + this.state = 5427; this.match(PostgreSqlParser.KW_PREPARE); - this.state = 5430; + this.state = 5428; this.match(PostgreSqlParser.KW_TRANSACTION); - this.state = 5431; + this.state = 5429; this.sconst(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5432; + this.state = 5430; _la = this.tokenStream.LA(1); if(!(_la === 161 || _la === 319)) { this.errorHandler.recoverInline(this); @@ -30002,16 +30103,16 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5433; + this.state = 5431; this.match(PostgreSqlParser.KW_PREPARED); - this.state = 5434; + this.state = 5432; this.sconst(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 5435; + this.state = 5433; _la = this.tokenStream.LA(1); if(!(_la === 129 || _la === 161 || _la === 319 || _la === 454)) { this.errorHandler.recoverInline(this); @@ -30020,68 +30121,68 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5437; + this.state = 5435; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 668, this.context) ) { case 1: { - this.state = 5436; + this.state = 5434; this.opt_transaction(); } break; } - this.state = 5444; + this.state = 5442; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 670, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 33) { { - this.state = 5439; + this.state = 5437; this.match(PostgreSqlParser.KW_AND); - this.state = 5441; + this.state = 5439; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 5440; + this.state = 5438; this.match(PostgreSqlParser.KW_NO); } } - this.state = 5443; + this.state = 5441; this.match(PostgreSqlParser.KW_CHAIN); } - break; } + } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 5446; + this.state = 5444; this.match(PostgreSqlParser.KW_ROLLBACK); - this.state = 5448; + this.state = 5446; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 356 || _la === 380) { { - this.state = 5447; + this.state = 5445; this.opt_transaction(); } } - this.state = 5450; + this.state = 5448; this.match(PostgreSqlParser.KW_TO); - this.state = 5452; + this.state = 5450; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 672, this.context) ) { case 1: { - this.state = 5451; + this.state = 5449; this.match(PostgreSqlParser.KW_SAVEPOINT); } break; } - this.state = 5454; + this.state = 5452; this.colid(); } break; @@ -30108,7 +30209,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5457; + this.state = 5455; _la = this.tokenStream.LA(1); if(!(_la === 356 || _la === 380)) { this.errorHandler.recoverInline(this); @@ -30138,26 +30239,26 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 472, PostgreSqlParser.RULE_transaction_mode_item); let _la: number; try { - this.state = 5468; + this.state = 5466; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ISOLATION: this.enterOuterAlt(localContext, 1); { - this.state = 5459; + this.state = 5457; this.match(PostgreSqlParser.KW_ISOLATION); - this.state = 5460; + this.state = 5458; this.match(PostgreSqlParser.KW_LEVEL); - this.state = 5461; + this.state = 5459; this.iso_level(); } break; case PostgreSqlParser.KW_READ: this.enterOuterAlt(localContext, 2); { - this.state = 5462; + this.state = 5460; this.match(PostgreSqlParser.KW_READ); - this.state = 5463; + this.state = 5461; _la = this.tokenStream.LA(1); if(!(_la === 81 || _la === 382)) { this.errorHandler.recoverInline(this); @@ -30172,17 +30273,17 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_NOT: this.enterOuterAlt(localContext, 3); { - this.state = 5465; + this.state = 5463; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 5464; + this.state = 5462; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 5467; + this.state = 5465; this.match(PostgreSqlParser.KW_DEFERRABLE); } break; @@ -30212,31 +30313,31 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5470; + this.state = 5468; this.transaction_mode_item(); - this.state = 5477; + this.state = 5475; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 677, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 5472; + this.state = 5470; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 5471; + this.state = 5469; this.match(PostgreSqlParser.COMMA); } } - this.state = 5474; + this.state = 5472; this.transaction_mode_item(); } } } - this.state = 5479; + this.state = 5477; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 677, this.context); } @@ -30264,55 +30365,55 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new CreateViewContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5480; + this.state = 5478; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5483; + this.state = 5481; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 82) { { - this.state = 5481; + this.state = 5479; this.match(PostgreSqlParser.KW_OR); - this.state = 5482; + this.state = 5480; this.match(PostgreSqlParser.KW_REPLACE); } } - this.state = 5486; + this.state = 5484; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 5485; + this.state = 5483; this.opttemp(); } } - this.state = 5503; + this.state = 5501; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_VIEW: { - this.state = 5488; + this.state = 5486; this.match(PostgreSqlParser.KW_VIEW); - this.state = 5489; + this.state = 5487; this.view_name_create(); - this.state = 5491; + this.state = 5489; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 5490; + this.state = 5488; this.opt_column_list_create(); } } - this.state = 5494; + this.state = 5492; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5493; + this.state = 5491; this.opt_reloptions(); } } @@ -30321,20 +30422,20 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_RECURSIVE: { - this.state = 5496; + this.state = 5494; this.match(PostgreSqlParser.KW_RECURSIVE); - this.state = 5497; + this.state = 5495; this.match(PostgreSqlParser.KW_VIEW); - this.state = 5498; + this.state = 5496; this.view_name_create(); - this.state = 5499; + this.state = 5497; this.opt_column_list(); - this.state = 5501; + this.state = 5499; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5500; + this.state = 5498; this.opt_reloptions(); } } @@ -30344,23 +30445,23 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5505; + this.state = 5503; this.match(PostgreSqlParser.KW_AS); - this.state = 5506; + this.state = 5504; this.selectstmt(); - this.state = 5513; + this.state = 5511; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 685, this.context) ) { case 1: { - this.state = 5507; + this.state = 5505; this.match(PostgreSqlParser.KW_WITH); - this.state = 5509; + this.state = 5507; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 151 || _la === 254) { { - this.state = 5508; + this.state = 5506; _la = this.tokenStream.LA(1); if(!(_la === 151 || _la === 254)) { this.errorHandler.recoverInline(this); @@ -30372,9 +30473,9 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 5511; + this.state = 5509; this.match(PostgreSqlParser.KW_CHECK); - this.state = 5512; + this.state = 5510; this.match(PostgreSqlParser.KW_OPTION); } break; @@ -30401,9 +30502,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5515; + this.state = 5513; this.match(PostgreSqlParser.KW_LOAD); - this.state = 5516; + this.state = 5514; this.sconst(); } } @@ -30429,28 +30530,28 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new CreateDatabaseContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5518; + this.state = 5516; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5519; + this.state = 5517; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5520; + this.state = 5518; this.database_name_create(); - this.state = 5522; + this.state = 5520; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 686, this.context) ) { case 1: { - this.state = 5521; + this.state = 5519; this.match(PostgreSqlParser.KW_WITH); } break; } - this.state = 5529; + this.state = 5527; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 688, this.context) ) { case 1: { - this.state = 5525; + this.state = 5523; this.errorHandler.sync(this); alternative = 1; do { @@ -30458,7 +30559,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 5524; + this.state = 5522; this.createdb_opt_item(); } } @@ -30466,7 +30567,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5527; + this.state = 5525; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 687, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -30496,155 +30597,82 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5539; + this.state = 5537; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_CONNECTION: + switch (this.interpreter.adaptivePredict(this.tokenStream, 689, this.context) ) { + case 1: { - this.state = 5531; + this.state = 5529; this.match(PostgreSqlParser.KW_CONNECTION); - this.state = 5532; + this.state = 5530; this.match(PostgreSqlParser.KW_LIMIT); } break; - case PostgreSqlParser.KW_ENCODING: + case 2: { - this.state = 5533; + this.state = 5531; this.match(PostgreSqlParser.KW_ENCODING); } break; - case PostgreSqlParser.KW_LOCATION: + case 3: { - this.state = 5534; + this.state = 5532; this.match(PostgreSqlParser.KW_LOCATION); } break; - case PostgreSqlParser.KW_OWNER: + case 4: { - this.state = 5535; + this.state = 5533; this.match(PostgreSqlParser.KW_OWNER); } break; - case PostgreSqlParser.KW_TABLESPACE: + case 5: { - this.state = 5536; + this.state = 5534; this.match(PostgreSqlParser.KW_TABLESPACE); } break; - case PostgreSqlParser.KW_TEMPLATE: + case 6: { - this.state = 5537; + this.state = 5535; this.match(PostgreSqlParser.KW_TEMPLATE); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: + case 7: { - this.state = 5538; + this.state = 5536; this.identifier(); } break; - default: - throw new antlr.NoViableAltException(this); } - this.state = 5542; + this.state = 5540; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10) { { - this.state = 5541; + this.state = 5539; this.match(PostgreSqlParser.EQUAL); } } - this.state = 5547; + this.state = 5545; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 691, this.context) ) { case 1: { - this.state = 5544; + this.state = 5542; this.signediconst(); } break; case 2: { - this.state = 5545; + this.state = 5543; this.opt_boolean_or_string(); } break; case 3: { - this.state = 5546; + this.state = 5544; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -30673,27 +30701,27 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5549; + this.state = 5547; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5550; + this.state = 5548; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5551; + this.state = 5549; this.database_name(); - this.state = 5567; + this.state = 5565; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 696, this.context) ) { case 1: { - this.state = 5555; + this.state = 5553; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 692, this.context) ) { case 1: { - this.state = 5552; + this.state = 5550; this.match(PostgreSqlParser.KW_SET); - this.state = 5553; + this.state = 5551; this.match(PostgreSqlParser.KW_TABLESPACE); - this.state = 5554; + this.state = 5552; this.tablespace_name_create(); } break; @@ -30702,22 +30730,22 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 5565; + this.state = 5563; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 695, this.context) ) { case 1: { - this.state = 5558; + this.state = 5556; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5557; + this.state = 5555; this.match(PostgreSqlParser.KW_WITH); } } - this.state = 5561; + this.state = 5559; this.errorHandler.sync(this); alternative = 1; do { @@ -30725,7 +30753,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 5560; + this.state = 5558; this.createdb_opt_item(); } } @@ -30733,7 +30761,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 5563; + this.state = 5561; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 694, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -30765,18 +30793,18 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5569; + this.state = 5567; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5570; + this.state = 5568; this.match(PostgreSqlParser.KW_DATABASE); - this.state = 5571; + this.state = 5569; this.database_name(); - this.state = 5573; + this.state = 5571; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 697, this.context) ) { case 1: { - this.state = 5572; + this.state = 5570; this.setresetclause(); } break; @@ -30803,15 +30831,15 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5575; + this.state = 5573; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5576; + this.state = 5574; this.match(PostgreSqlParser.KW_COLLATION); - this.state = 5577; + this.state = 5575; this.any_name(); - this.state = 5578; + this.state = 5576; this.match(PostgreSqlParser.KW_REFRESH); - this.state = 5579; + this.state = 5577; this.match(PostgreSqlParser.KW_VERSION); } } @@ -30836,11 +30864,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5581; + this.state = 5579; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5582; + this.state = 5580; this.match(PostgreSqlParser.KW_SYSTEM); - this.state = 5583; + this.state = 5581; _la = this.tokenStream.LA(1); if(!(_la === 313 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -30849,7 +30877,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5584; + this.state = 5582; this.generic_set(); } } @@ -30875,37 +30903,37 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 5586; + this.state = 5584; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5587; + this.state = 5585; this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 5588; + this.state = 5586; this.any_name(); - this.state = 5590; + this.state = 5588; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 5589; + this.state = 5587; this.match(PostgreSqlParser.KW_AS); } } - this.state = 5592; + this.state = 5590; this.typename(); - this.state = 5596; + this.state = 5594; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 699, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 5593; + this.state = 5591; this.colconstraint(); } } } - this.state = 5598; + this.state = 5596; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 699, this.context); } @@ -30932,24 +30960,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5599; + this.state = 5597; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5600; + this.state = 5598; this.match(PostgreSqlParser.KW_DOMAIN); - this.state = 5601; + this.state = 5599; this.any_name(); - this.state = 5624; + this.state = 5622; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 703, this.context) ) { case 1: { - this.state = 5602; + this.state = 5600; this.alter_column_default(); } break; case 2: { - this.state = 5603; + this.state = 5601; _la = this.tokenStream.LA(1); if(!(_la === 191 || _la === 333)) { this.errorHandler.recoverInline(this); @@ -30958,56 +30986,56 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5604; + this.state = 5602; this.match(PostgreSqlParser.KW_NOT); - this.state = 5605; + this.state = 5603; this.match(PostgreSqlParser.KW_NULL); } break; case 3: { - this.state = 5606; + this.state = 5604; this.match(PostgreSqlParser.KW_ADD); - this.state = 5609; + this.state = 5607; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 45) { { - this.state = 5607; + this.state = 5605; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 5608; + this.state = 5606; this.colid(); } } - this.state = 5611; + this.state = 5609; this.constraintelem(); } break; case 4: { - this.state = 5612; + this.state = 5610; this.match(PostgreSqlParser.KW_DROP); - this.state = 5613; + this.state = 5611; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 5615; + this.state = 5613; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 701, this.context) ) { case 1: { - this.state = 5614; + this.state = 5612; this.opt_if_exists(); } break; } - this.state = 5617; + this.state = 5615; this.colid(); - this.state = 5619; + this.state = 5617; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 702, this.context) ) { case 1: { - this.state = 5618; + this.state = 5616; this.opt_drop_behavior(); } break; @@ -31016,11 +31044,11 @@ export class PostgreSqlParser extends SQLParserBase { break; case 5: { - this.state = 5621; + this.state = 5619; this.match(PostgreSqlParser.KW_VALIDATE); - this.state = 5622; + this.state = 5620; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 5623; + this.state = 5621; this.colid(); } break; @@ -31047,17 +31075,17 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5626; + this.state = 5624; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5627; + this.state = 5625; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5628; + this.state = 5626; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5629; + this.state = 5627; this.match(PostgreSqlParser.KW_DICTIONARY); - this.state = 5630; + this.state = 5628; this.any_name(); - this.state = 5631; + this.state = 5629; this.definition(); } } @@ -31080,23 +31108,23 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 498, PostgreSqlParser.RULE_altertsconfigurationstmt); let _la: number; try { - this.state = 5674; + this.state = 5672; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 706, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5633; + this.state = 5631; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5634; + this.state = 5632; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5635; + this.state = 5633; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5636; + this.state = 5634; this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 5637; + this.state = 5635; this.any_name(); - this.state = 5638; + this.state = 5636; _la = this.tokenStream.LA(1); if(!(_la === 133 || _la === 138)) { this.errorHandler.recoverInline(this); @@ -31105,87 +31133,87 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5639; + this.state = 5637; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 5640; + this.state = 5638; this.match(PostgreSqlParser.KW_FOR); - this.state = 5641; + this.state = 5639; this.name_list(); - this.state = 5642; + this.state = 5640; this.match(PostgreSqlParser.KW_WITH); - this.state = 5643; + this.state = 5641; this.any_name_list(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5645; + this.state = 5643; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5646; + this.state = 5644; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5647; + this.state = 5645; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5648; + this.state = 5646; this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 5649; + this.state = 5647; this.any_name(); - this.state = 5650; + this.state = 5648; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5651; + this.state = 5649; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 5654; + this.state = 5652; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 5652; + this.state = 5650; this.match(PostgreSqlParser.KW_FOR); - this.state = 5653; + this.state = 5651; this.name_list(); } } - this.state = 5656; + this.state = 5654; this.match(PostgreSqlParser.KW_REPLACE); - this.state = 5657; + this.state = 5655; this.any_name(); - this.state = 5658; + this.state = 5656; this.match(PostgreSqlParser.KW_WITH); - this.state = 5659; + this.state = 5657; this.any_name(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5661; + this.state = 5659; this.match(PostgreSqlParser.KW_ALTER); - this.state = 5662; + this.state = 5660; this.match(PostgreSqlParser.KW_TEXT); - this.state = 5663; + this.state = 5661; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 5664; + this.state = 5662; this.match(PostgreSqlParser.KW_CONFIGURATION); - this.state = 5665; + this.state = 5663; this.any_name(); - this.state = 5666; + this.state = 5664; this.match(PostgreSqlParser.KW_DROP); - this.state = 5667; + this.state = 5665; this.match(PostgreSqlParser.KW_MAPPING); - this.state = 5669; + this.state = 5667; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 220) { { - this.state = 5668; + this.state = 5666; this.opt_if_exists(); } } - this.state = 5671; + this.state = 5669; this.match(PostgreSqlParser.KW_FOR); - this.state = 5672; + this.state = 5670; this.name_list(); } break; @@ -31212,33 +31240,33 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5676; + this.state = 5674; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5678; + this.state = 5676; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 53) { { - this.state = 5677; + this.state = 5675; this.match(PostgreSqlParser.KW_DEFAULT); } } - this.state = 5680; + this.state = 5678; this.match(PostgreSqlParser.KW_CONVERSION); - this.state = 5681; + this.state = 5679; this.any_name(); - this.state = 5682; + this.state = 5680; this.match(PostgreSqlParser.KW_FOR); - this.state = 5683; + this.state = 5681; this.sconst(); - this.state = 5684; + this.state = 5682; this.match(PostgreSqlParser.KW_TO); - this.state = 5685; + this.state = 5683; this.sconst(); - this.state = 5686; + this.state = 5684; this.match(PostgreSqlParser.KW_FROM); - this.state = 5687; + this.state = 5685; this.any_name(); } } @@ -31261,37 +31289,37 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 502, PostgreSqlParser.RULE_clusterstmt); let _la: number; try { - this.state = 5714; + this.state = 5712; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 713, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5689; + this.state = 5687; this.match(PostgreSqlParser.KW_CLUSTER); - this.state = 5691; + this.state = 5689; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 128) { { - this.state = 5690; + this.state = 5688; this.opt_verbose(); } } - this.state = 5697; + this.state = 5695; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 710, this.context) ) { case 1: { - this.state = 5693; + this.state = 5691; this.table_name(); - this.state = 5695; + this.state = 5693; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 5694; + this.state = 5692; this.table_access_method_clause(); } } @@ -31304,38 +31332,38 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5699; + this.state = 5697; this.match(PostgreSqlParser.KW_CLUSTER); - this.state = 5700; + this.state = 5698; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5701; + this.state = 5699; this.opt_verbose(); - this.state = 5706; + this.state = 5704; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5702; + this.state = 5700; this.match(PostgreSqlParser.COMMA); - this.state = 5703; + this.state = 5701; this.opt_verbose(); } } - this.state = 5708; + this.state = 5706; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5709; + this.state = 5707; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 5710; + this.state = 5708; this.table_name(); - this.state = 5712; + this.state = 5710; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 5711; + this.state = 5709; this.table_access_method_clause(); } } @@ -31365,50 +31393,50 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5716; + this.state = 5714; this.match(PostgreSqlParser.KW_VACUUM); - this.state = 5732; + this.state = 5730; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 719, this.context) ) { case 1: { { - this.state = 5718; + this.state = 5716; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 113) { { - this.state = 5717; + this.state = 5715; this.match(PostgreSqlParser.KW_FULL); } } - this.state = 5721; + this.state = 5719; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 112) { { - this.state = 5720; + this.state = 5718; this.match(PostgreSqlParser.KW_FREEZE); } } - this.state = 5724; + this.state = 5722; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 128) { { - this.state = 5723; + this.state = 5721; this.opt_verbose(); } } - this.state = 5727; + this.state = 5725; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 717, this.context) ) { case 1: { - this.state = 5726; + this.state = 5724; this.analyze_keyword(); } break; @@ -31418,12 +31446,12 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 5730; + this.state = 5728; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 718, this.context) ) { case 1: { - this.state = 5729; + this.state = 5727; this.explain_option_list(); } break; @@ -31431,12 +31459,12 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 5735; + this.state = 5733; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 720, this.context) ) { case 1: { - this.state = 5734; + this.state = 5732; this.vacuum_relation_list(); } break; @@ -31464,19 +31492,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5737; + this.state = 5735; this.analyze_keyword(); - this.state = 5752; + this.state = 5750; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 723, this.context) ) { case 1: { - this.state = 5739; + this.state = 5737; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 128) { { - this.state = 5738; + this.state = 5736; this.opt_verbose(); } } @@ -31485,37 +31513,37 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 5741; + this.state = 5739; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5742; + this.state = 5740; this.analyze_option_elem(); - this.state = 5747; + this.state = 5745; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5743; + this.state = 5741; this.match(PostgreSqlParser.COMMA); - this.state = 5744; + this.state = 5742; this.analyze_option_elem(); } } - this.state = 5749; + this.state = 5747; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5750; + this.state = 5748; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 5755; + this.state = 5753; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 724, this.context) ) { case 1: { - this.state = 5754; + this.state = 5752; this.vacuum_relation_list(); } break; @@ -31543,7 +31571,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5757; + this.state = 5755; _la = this.tokenStream.LA(1); if(!(_la === 31 || _la === 32)) { this.errorHandler.recoverInline(this); @@ -31574,16 +31602,10 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5761; + this.state = 5759; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: case PostgreSqlParser.KW_COLLATION: @@ -31986,6 +32008,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -31998,31 +32021,25 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 5759; + this.state = 5757; this.nonreservedword(); } break; case PostgreSqlParser.KW_ANALYSE: case PostgreSqlParser.KW_ANALYZE: { - this.state = 5760; + this.state = 5758; this.analyze_keyword(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5765; + this.state = 5763; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_ON: case PostgreSqlParser.KW_TRUE: case PostgreSqlParser.KW_AUTHORIZATION: @@ -32427,6 +32444,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -32439,7 +32457,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 5763; + this.state = 5761; this.opt_boolean_or_string(); } break; @@ -32448,7 +32466,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Integral: case PostgreSqlParser.Numeric: { - this.state = 5764; + this.state = 5762; this.numericonly(); } break; @@ -32479,14 +32497,14 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 512, PostgreSqlParser.RULE_analyze_option_elem); let _la: number; try { - this.state = 5776; + this.state = 5774; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_VERBOSE: case PostgreSqlParser.KW_SKIP_LOCKED: this.enterOuterAlt(localContext, 1); { - this.state = 5767; + this.state = 5765; _la = this.tokenStream.LA(1); if(!(_la === 128 || _la === 547)) { this.errorHandler.recoverInline(this); @@ -32495,12 +32513,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5769; + this.state = 5767; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 60 || _la === 96) { { - this.state = 5768; + this.state = 5766; _la = this.tokenStream.LA(1); if(!(_la === 60 || _la === 96)) { this.errorHandler.recoverInline(this); @@ -32517,9 +32535,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: this.enterOuterAlt(localContext, 2); { - this.state = 5771; + this.state = 5769; this.match(PostgreSqlParser.KW_BUFFER_USAGE_LIMIT); - this.state = 5774; + this.state = 5772; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.PLUS: @@ -32527,7 +32545,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Integral: case PostgreSqlParser.Numeric: { - this.state = 5772; + this.state = 5770; this.numericonly(); } break; @@ -32536,7 +32554,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 5773; + this.state = 5771; this.sconst(); } break; @@ -32570,14 +32588,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5778; + this.state = 5776; this.match(PostgreSqlParser.KW_VERBOSE); - this.state = 5780; + this.state = 5778; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 60 || _la === 96) { { - this.state = 5779; + this.state = 5777; _la = this.tokenStream.LA(1); if(!(_la === 60 || _la === 96)) { this.errorHandler.recoverInline(this); @@ -32611,14 +32629,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5782; + this.state = 5780; this.table_name(); - this.state = 5784; + this.state = 5782; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 731, this.context) ) { case 1: { - this.state = 5783; + this.state = 5781; this.opt_column_list(); } break; @@ -32646,21 +32664,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5786; + this.state = 5784; this.vacuum_relation(); - this.state = 5791; + this.state = 5789; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5787; + this.state = 5785; this.match(PostgreSqlParser.COMMA); - this.state = 5788; + this.state = 5786; this.vacuum_relation(); } } - this.state = 5793; + this.state = 5791; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -32687,25 +32705,25 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5794; + this.state = 5792; this.match(PostgreSqlParser.KW_EXPLAIN); - this.state = 5805; + this.state = 5803; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 736, this.context) ) { case 1: { - this.state = 5795; + this.state = 5793; this.explain_option_list(); } break; case 2: { - this.state = 5797; + this.state = 5795; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 128) { { - this.state = 5796; + this.state = 5794; this.match(PostgreSqlParser.KW_VERBOSE); } } @@ -32714,19 +32732,19 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 5803; + this.state = 5801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 31 || _la === 32) { { - this.state = 5799; + this.state = 5797; this.analyze_keyword(); - this.state = 5801; + this.state = 5799; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 128) { { - this.state = 5800; + this.state = 5798; this.opt_verbose(); } } @@ -32737,7 +32755,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 5807; + this.state = 5805; this.explainablestmt(); } } @@ -32759,69 +32777,69 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new ExplainablestmtContext(this.context, this.state); this.enterRule(localContext, 522, PostgreSqlParser.RULE_explainablestmt); try { - this.state = 5818; + this.state = 5816; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 737, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5809; + this.state = 5807; this.selectstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5810; + this.state = 5808; this.insertstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5811; + this.state = 5809; this.updatestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5812; + this.state = 5810; this.deletestmt(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 5813; + this.state = 5811; this.declarecursorstmt(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 5814; + this.state = 5812; this.createasstmt(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 5815; + this.state = 5813; this.creatematviewstmt(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 5816; + this.state = 5814; this.refreshmatviewstmt(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 5817; + this.state = 5815; this.executestmt(); } break; @@ -32848,27 +32866,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5820; + this.state = 5818; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5821; + this.state = 5819; this.vac_analyze_option_elem(); - this.state = 5826; + this.state = 5824; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5822; + this.state = 5820; this.match(PostgreSqlParser.COMMA); - this.state = 5823; + this.state = 5821; this.vac_analyze_option_elem(); } } - this.state = 5828; + this.state = 5826; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5829; + this.state = 5827; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -32893,23 +32911,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5831; + this.state = 5829; this.match(PostgreSqlParser.KW_PREPARE); - this.state = 5832; + this.state = 5830; this.colid(); - this.state = 5834; + this.state = 5832; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 5833; + this.state = 5831; this.prep_type_clause(); } } - this.state = 5836; + this.state = 5834; this.match(PostgreSqlParser.KW_AS); - this.state = 5837; + this.state = 5835; this.preparablestmt(); } } @@ -32934,27 +32952,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5839; + this.state = 5837; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5840; + this.state = 5838; this.typename(); - this.state = 5845; + this.state = 5843; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5841; + this.state = 5839; this.match(PostgreSqlParser.COMMA); - this.state = 5842; + this.state = 5840; this.typename(); } } - this.state = 5847; + this.state = 5845; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 5848; + this.state = 5846; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -32976,34 +32994,34 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new PreparablestmtContext(this.context, this.state); this.enterRule(localContext, 530, PostgreSqlParser.RULE_preparablestmt); try { - this.state = 5854; + this.state = 5852; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 741, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 5850; + this.state = 5848; this.selectstmt(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 5851; + this.state = 5849; this.insertstmt(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 5852; + this.state = 5850; this.updatestmt(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 5853; + this.state = 5851; this.deletestmt(); } break; @@ -33028,22 +33046,22 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 532, PostgreSqlParser.RULE_executestmt); let _la: number; try { - this.state = 5879; + this.state = 5877; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_EXECUTE: this.enterOuterAlt(localContext, 1); { - this.state = 5856; + this.state = 5854; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 5857; + this.state = 5855; this.colid(); - this.state = 5859; + this.state = 5857; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 742, this.context) ) { case 1: { - this.state = 5858; + this.state = 5856; this.execute_param_clause(); } break; @@ -33053,54 +33071,54 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CREATE: this.enterOuterAlt(localContext, 2); { - this.state = 5861; + this.state = 5859; this.match(PostgreSqlParser.KW_CREATE); - this.state = 5863; + this.state = 5861; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254 || ((((_la - 352)) & ~0x1F) === 0 && ((1 << (_la - 352)) & 32773) !== 0)) { { - this.state = 5862; + this.state = 5860; this.opttemp(); } } - this.state = 5865; + this.state = 5863; this.match(PostgreSqlParser.KW_TABLE); - this.state = 5867; + this.state = 5865; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 744, this.context) ) { case 1: { - this.state = 5866; + this.state = 5864; this.opt_if_not_exists(); } break; } - this.state = 5869; + this.state = 5867; this.create_as_target(); - this.state = 5870; + this.state = 5868; this.match(PostgreSqlParser.KW_AS); - this.state = 5871; + this.state = 5869; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 5872; + this.state = 5870; this.colid(); - this.state = 5874; + this.state = 5872; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 745, this.context) ) { case 1: { - this.state = 5873; + this.state = 5871; this.execute_param_clause(); } break; } - this.state = 5877; + this.state = 5875; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 746, this.context) ) { case 1: { - this.state = 5876; + this.state = 5874; this.opt_with_data(); } break; @@ -33131,11 +33149,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5881; + this.state = 5879; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5882; + this.state = 5880; this.expr_list(); - this.state = 5883; + this.state = 5881; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -33159,28 +33177,22 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5885; + this.state = 5883; this.match(PostgreSqlParser.KW_DEALLOCATE); - this.state = 5887; + this.state = 5885; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 748, this.context) ) { case 1: { - this.state = 5886; + this.state = 5884; this.match(PostgreSqlParser.KW_PREPARE); } break; } - this.state = 5891; + this.state = 5889; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -33562,6 +33574,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -33574,13 +33587,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 5889; + this.state = 5887; this.colid(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 5890; + this.state = 5888; this.match(PostgreSqlParser.KW_ALL); } break; @@ -33611,58 +33624,58 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new InsertStatementContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 5894; + this.state = 5892; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5893; + this.state = 5891; this.with_clause(); } } - this.state = 5896; + this.state = 5894; this.match(PostgreSqlParser.KW_INSERT); - this.state = 5897; + this.state = 5895; this.match(PostgreSqlParser.KW_INTO); - this.state = 5898; + this.state = 5896; this.table_name(); - this.state = 5901; + this.state = 5899; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 5899; + this.state = 5897; this.match(PostgreSqlParser.KW_AS); - this.state = 5900; + this.state = 5898; this.colid(); } } - this.state = 5903; + this.state = 5901; this.insert_rest(); - this.state = 5925; + this.state = 5923; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 80) { { - this.state = 5904; + this.state = 5902; this.match(PostgreSqlParser.KW_ON); - this.state = 5905; + this.state = 5903; this.match(PostgreSqlParser.KW_CONFLICT); - this.state = 5913; + this.state = 5911; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 5906; + this.state = 5904; this.index_params(); - this.state = 5908; + this.state = 5906; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 5907; + this.state = 5905; this.where_clause(); } } @@ -33671,11 +33684,11 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_ON: { - this.state = 5910; + this.state = 5908; this.match(PostgreSqlParser.KW_ON); - this.state = 5911; + this.state = 5909; this.match(PostgreSqlParser.KW_CONSTRAINT); - this.state = 5912; + this.state = 5910; this.colid(); } break; @@ -33684,25 +33697,25 @@ export class PostgreSqlParser extends SQLParserBase { default: break; } - this.state = 5915; + this.state = 5913; this.match(PostgreSqlParser.KW_DO); - this.state = 5923; + this.state = 5921; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_UPDATE: { - this.state = 5916; + this.state = 5914; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 5917; + this.state = 5915; this.match(PostgreSqlParser.KW_SET); - this.state = 5918; + this.state = 5916; this.set_clause_list(); - this.state = 5920; + this.state = 5918; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 5919; + this.state = 5917; this.where_clause(); } } @@ -33711,7 +33724,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_NOTHING: { - this.state = 5922; + this.state = 5920; this.match(PostgreSqlParser.KW_NOTHING); } break; @@ -33721,12 +33734,12 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 5928; + this.state = 5926; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 87) { { - this.state = 5927; + this.state = 5925; this.returning_clause(); } } @@ -33754,28 +33767,28 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5934; + this.state = 5932; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 758, this.context) ) { case 1: { - this.state = 5930; + this.state = 5928; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 5931; + this.state = 5929; this.insert_column_list(); - this.state = 5932; + this.state = 5930; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 5939; + this.state = 5937; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 463) { { - this.state = 5936; + this.state = 5934; this.match(PostgreSqlParser.KW_OVERRIDING); - this.state = 5937; + this.state = 5935; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 349)) { this.errorHandler.recoverInline(this); @@ -33784,23 +33797,23 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5938; + this.state = 5936; this.match(PostgreSqlParser.KW_VALUE); } } - this.state = 5943; + this.state = 5941; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 760, this.context) ) { case 1: { - this.state = 5941; + this.state = 5939; this.default_values_or_values(); } break; case 2: { - this.state = 5942; + this.state = 5940; this.selectstmt(); } break; @@ -33828,21 +33841,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5945; + this.state = 5943; this.insert_column_item(); - this.state = 5950; + this.state = 5948; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 5946; + this.state = 5944; this.match(PostgreSqlParser.COMMA); - this.state = 5947; + this.state = 5945; this.insert_column_item(); } } - this.state = 5952; + this.state = 5950; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -33868,9 +33881,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5953; + this.state = 5951; this.column_name(); - this.state = 5954; + this.state = 5952; this.opt_indirection(); } } @@ -33894,9 +33907,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5956; + this.state = 5954; this.match(PostgreSqlParser.KW_RETURNING); - this.state = 5957; + this.state = 5955; this.target_list(); } } @@ -33921,50 +33934,50 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5960; + this.state = 5958; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5959; + this.state = 5957; this.with_clause(); } } - this.state = 5962; + this.state = 5960; this.match(PostgreSqlParser.KW_DELETE); - this.state = 5963; + this.state = 5961; this.match(PostgreSqlParser.KW_FROM); - this.state = 5964; + this.state = 5962; this.relation_expr_opt_alias(); - this.state = 5967; + this.state = 5965; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 5965; + this.state = 5963; this.match(PostgreSqlParser.KW_USING); - this.state = 5966; + this.state = 5964; this.from_list(); } } - this.state = 5970; + this.state = 5968; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 5969; + this.state = 5967; this.where_or_current_clause(); } } - this.state = 5973; + this.state = 5971; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 87) { { - this.state = 5972; + this.state = 5970; this.returning_clause(); } } @@ -33992,34 +34005,34 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 5975; + this.state = 5973; this.match(PostgreSqlParser.KW_LOCK); - this.state = 5977; + this.state = 5975; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 92) { { - this.state = 5976; + this.state = 5974; this.match(PostgreSqlParser.KW_TABLE); } } - this.state = 5979; + this.state = 5977; this.relation_expr_list(); - this.state = 5994; + this.state = 5992; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 68) { { - this.state = 5980; + this.state = 5978; this.match(PostgreSqlParser.KW_IN); - this.state = 5991; + this.state = 5989; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ACCESS: case PostgreSqlParser.KW_ROW: { - this.state = 5981; + this.state = 5979; _la = this.tokenStream.LA(1); if(!(_la === 131 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -34028,7 +34041,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 5982; + this.state = 5980; _la = this.tokenStream.LA(1); if(!(_la === 201 || _la === 334)) { this.errorHandler.recoverInline(this); @@ -34041,24 +34054,24 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_SHARE: { - this.state = 5983; + this.state = 5981; this.match(PostgreSqlParser.KW_SHARE); - this.state = 5988; + this.state = 5986; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_UPDATE: { - this.state = 5984; + this.state = 5982; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 5985; + this.state = 5983; this.match(PostgreSqlParser.KW_EXCLUSIVE); } break; case PostgreSqlParser.KW_ROW: { - this.state = 5986; + this.state = 5984; this.match(PostgreSqlParser.KW_ROW); - this.state = 5987; + this.state = 5985; this.match(PostgreSqlParser.KW_EXCLUSIVE); } break; @@ -34071,24 +34084,24 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_EXCLUSIVE: { - this.state = 5990; + this.state = 5988; this.match(PostgreSqlParser.KW_EXCLUSIVE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 5993; + this.state = 5991; this.match(PostgreSqlParser.KW_MODE); } } - this.state = 5997; + this.state = 5995; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 770, this.context) ) { case 1: { - this.state = 5996; + this.state = 5994; this.match(PostgreSqlParser.KW_NOWAIT); } break; @@ -34116,50 +34129,50 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6000; + this.state = 5998; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 5999; + this.state = 5997; this.with_clause(); } } - this.state = 6002; + this.state = 6000; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 6003; + this.state = 6001; this.relation_expr_opt_alias(); - this.state = 6004; + this.state = 6002; this.match(PostgreSqlParser.KW_SET); - this.state = 6005; + this.state = 6003; this.set_clause_list(); - this.state = 6007; + this.state = 6005; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64) { { - this.state = 6006; + this.state = 6004; this.from_clause(); } } - this.state = 6010; + this.state = 6008; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 6009; + this.state = 6007; this.where_or_current_clause(); } } - this.state = 6013; + this.state = 6011; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 87) { { - this.state = 6012; + this.state = 6010; this.returning_clause(); } } @@ -34187,21 +34200,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6015; + this.state = 6013; this.set_clause(); - this.state = 6020; + this.state = 6018; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6016; + this.state = 6014; this.match(PostgreSqlParser.COMMA); - this.state = 6017; + this.state = 6015; this.set_clause(); } } - this.state = 6022; + this.state = 6020; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -34225,57 +34238,57 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Set_clauseContext(this.context, this.state); this.enterRule(localContext, 556, PostgreSqlParser.RULE_set_clause); try { - this.state = 6041; + this.state = 6039; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 778, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6023; + this.state = 6021; this.insert_column_item(); - this.state = 6024; + this.state = 6022; this.match(PostgreSqlParser.EQUAL); - this.state = 6025; + this.state = 6023; this.expression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6027; + this.state = 6025; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6028; + this.state = 6026; this.insert_column_list(); - this.state = 6029; + this.state = 6027; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6030; + this.state = 6028; this.match(PostgreSqlParser.EQUAL); - this.state = 6039; + this.state = 6037; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 777, this.context) ) { case 1: { - this.state = 6032; + this.state = 6030; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 776, this.context) ) { case 1: { - this.state = 6031; + this.state = 6029; this.match(PostgreSqlParser.KW_ROW); } break; } - this.state = 6034; + this.state = 6032; this.expression(); } break; case 2: { - this.state = 6035; + this.state = 6033; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6036; + this.state = 6034; this.select_clause(); - this.state = 6037; + this.state = 6035; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -34305,47 +34318,47 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6043; + this.state = 6041; this.match(PostgreSqlParser.KW_DECLARE); - this.state = 6044; + this.state = 6042; this.colid(); { - this.state = 6053; + this.state = 6051; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 107 || _la === 240 || _la === 269 || _la === 324) { { - this.state = 6051; + this.state = 6049; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NO: case PostgreSqlParser.KW_SCROLL: { { - this.state = 6046; + this.state = 6044; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 6045; + this.state = 6043; this.match(PostgreSqlParser.KW_NO); } } - this.state = 6048; + this.state = 6046; this.match(PostgreSqlParser.KW_SCROLL); } } break; case PostgreSqlParser.KW_BINARY: { - this.state = 6049; + this.state = 6047; this.match(PostgreSqlParser.KW_BINARY); } break; case PostgreSqlParser.KW_INSENSITIVE: { - this.state = 6050; + this.state = 6048; this.match(PostgreSqlParser.KW_INSENSITIVE); } break; @@ -34353,19 +34366,19 @@ export class PostgreSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 6055; + this.state = 6053; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 6056; + this.state = 6054; this.match(PostgreSqlParser.KW_CURSOR); - this.state = 6059; + this.state = 6057; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105 || _la === 379) { { - this.state = 6057; + this.state = 6055; _la = this.tokenStream.LA(1); if(!(_la === 105 || _la === 379)) { this.errorHandler.recoverInline(this); @@ -34374,14 +34387,14 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6058; + this.state = 6056; this.match(PostgreSqlParser.KW_HOLD); } } - this.state = 6061; + this.state = 6059; this.match(PostgreSqlParser.KW_FOR); - this.state = 6062; + this.state = 6060; this.selectstmt(); } } @@ -34403,14 +34416,14 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new SelectstmtContext(this.context, this.state); this.enterRule(localContext, 560, PostgreSqlParser.RULE_selectstmt); try { - this.state = 6066; + this.state = 6064; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 783, this.context) ) { case 1: localContext = new SelectStatementContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6064; + this.state = 6062; this.select_no_parens(); } break; @@ -34418,7 +34431,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new SelectStatementContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6065; + this.state = 6063; this.select_with_parens(); } break; @@ -34444,25 +34457,25 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6068; + this.state = 6066; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6071; + this.state = 6069; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 784, this.context) ) { case 1: { - this.state = 6069; + this.state = 6067; this.select_no_parens(); } break; case 2: { - this.state = 6070; + this.state = 6068; this.select_with_parens(); } break; } - this.state = 6073; + this.state = 6071; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -34487,41 +34500,41 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6076; + this.state = 6074; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 6075; + this.state = 6073; this.with_clause(); } } - this.state = 6078; + this.state = 6076; this.select_clause(); - this.state = 6080; + this.state = 6078; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 6079; + this.state = 6077; this.sort_clause(); } } - this.state = 6090; + this.state = 6088; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 789, this.context) ) { case 1: { - this.state = 6082; + this.state = 6080; this.for_locking_clause(); - this.state = 6084; + this.state = 6082; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 787, this.context) ) { case 1: { - this.state = 6083; + this.state = 6081; this.select_limit(); } break; @@ -34530,14 +34543,14 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6086; + this.state = 6084; this.select_limit(); - this.state = 6088; + this.state = 6086; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 6087; + this.state = 6085; this.for_locking_clause(); } } @@ -34565,20 +34578,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Select_clauseContext(this.context, this.state); this.enterRule(localContext, 566, PostgreSqlParser.RULE_select_clause); try { - this.state = 6094; + this.state = 6092; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 790, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6092; + this.state = 6090; this.simple_select(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6093; + this.state = 6091; this.select_with_parens(); } break; @@ -34605,34 +34618,34 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6118; + this.state = 6116; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SELECT: { - this.state = 6096; + this.state = 6094; this.match(PostgreSqlParser.KW_SELECT); - this.state = 6106; + this.state = 6104; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 794, this.context) ) { case 1: { - this.state = 6098; + this.state = 6096; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 791, this.context) ) { case 1: { - this.state = 6097; + this.state = 6095; this.match(PostgreSqlParser.KW_ALL); } break; } - this.state = 6101; + this.state = 6099; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 792, this.context) ) { case 1: { - this.state = 6100; + this.state = 6098; this.into_clause(); } break; @@ -34641,12 +34654,12 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6104; + this.state = 6102; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 793, this.context) ) { case 1: { - this.state = 6103; + this.state = 6101; this.distinct_clause(); } break; @@ -34654,42 +34667,42 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6108; + this.state = 6106; this.sql_expression(); } break; case PostgreSqlParser.KW_VALUES: { - this.state = 6109; + this.state = 6107; this.values_clause(); } break; case PostgreSqlParser.KW_TABLE: { - this.state = 6110; + this.state = 6108; this.match(PostgreSqlParser.KW_TABLE); - this.state = 6111; + this.state = 6109; this.relation_expr(); } break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 6112; + this.state = 6110; this.select_with_parens(); - this.state = 6113; + this.state = 6111; this.set_operator_with_all_or_distinct(); - this.state = 6116; + this.state = 6114; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 795, this.context) ) { case 1: { - this.state = 6114; + this.state = 6112; this.simple_select(); } break; case 2: { - this.state = 6115; + this.state = 6113; this.select_with_parens(); } break; @@ -34699,27 +34712,27 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 6127; + this.state = 6125; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 798, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6120; + this.state = 6118; this.set_operator_with_all_or_distinct(); - this.state = 6123; + this.state = 6121; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 797, this.context) ) { case 1: { - this.state = 6121; + this.state = 6119; this.simple_select(); } break; case 2: { - this.state = 6122; + this.state = 6120; this.select_with_parens(); } break; @@ -34727,7 +34740,7 @@ export class PostgreSqlParser extends SQLParserBase { } } } - this.state = 6129; + this.state = 6127; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 798, this.context); } @@ -34754,7 +34767,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6130; + this.state = 6128; _la = this.tokenStream.LA(1); if(!(_la === 59 || _la === 70 || _la === 97)) { this.errorHandler.recoverInline(this); @@ -34763,12 +34776,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6132; + this.state = 6130; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 30 || _la === 56) { { - this.state = 6131; + this.state = 6129; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 56)) { this.errorHandler.recoverInline(this); @@ -34803,36 +34816,36 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6134; + this.state = 6132; this.match(PostgreSqlParser.KW_WITH); - this.state = 6136; + this.state = 6134; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 800, this.context) ) { case 1: { - this.state = 6135; + this.state = 6133; this.match(PostgreSqlParser.KW_RECURSIVE); } break; } { - this.state = 6138; + this.state = 6136; this.common_table_expr(); - this.state = 6143; + this.state = 6141; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 801, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6139; + this.state = 6137; this.match(PostgreSqlParser.COMMA); - this.state = 6140; + this.state = 6138; this.common_table_expr(); } } } - this.state = 6145; + this.state = 6143; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 801, this.context); } @@ -34860,62 +34873,62 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6146; + this.state = 6144; this.colid(); - this.state = 6148; + this.state = 6146; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 6147; + this.state = 6145; this.opt_column_list(); } } - this.state = 6150; + this.state = 6148; this.match(PostgreSqlParser.KW_AS); - this.state = 6155; + this.state = 6153; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77 || _la === 259) { { - this.state = 6152; + this.state = 6150; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6151; + this.state = 6149; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6154; + this.state = 6152; this.match(PostgreSqlParser.KW_MATERIALIZED); } } - this.state = 6157; + this.state = 6155; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6158; + this.state = 6156; this.preparablestmt(); - this.state = 6159; + this.state = 6157; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6161; + this.state = 6159; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 805, this.context) ) { case 1: { - this.state = 6160; + this.state = 6158; this.search_cluase(); } break; } - this.state = 6164; + this.state = 6162; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 806, this.context) ) { case 1: { - this.state = 6163; + this.state = 6161; this.cycle_cluase(); } break; @@ -34943,9 +34956,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6166; + this.state = 6164; this.match(PostgreSqlParser.KW_SEARCH); - this.state = 6167; + this.state = 6165; _la = this.tokenStream.LA(1); if(!(_la === 527 || _la === 528)) { this.errorHandler.recoverInline(this); @@ -34954,15 +34967,15 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6168; + this.state = 6166; this.match(PostgreSqlParser.KW_FIRST); - this.state = 6169; + this.state = 6167; this.match(PostgreSqlParser.KW_BY); - this.state = 6170; + this.state = 6168; this.column_list(); - this.state = 6171; + this.state = 6169; this.match(PostgreSqlParser.KW_SET); - this.state = 6172; + this.state = 6170; this.column_name(); } } @@ -34987,33 +35000,33 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6174; + this.state = 6172; this.match(PostgreSqlParser.KW_CYCLE); - this.state = 6175; + this.state = 6173; this.column_list(); - this.state = 6176; + this.state = 6174; this.match(PostgreSqlParser.KW_SET); - this.state = 6177; + this.state = 6175; this.column_name(); - this.state = 6183; + this.state = 6181; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 94) { { - this.state = 6178; + this.state = 6176; this.match(PostgreSqlParser.KW_TO); - this.state = 6179; + this.state = 6177; this.colid(); - this.state = 6180; + this.state = 6178; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 6181; + this.state = 6179; this.colid(); } } - this.state = 6185; + this.state = 6183; this.match(PostgreSqlParser.KW_USING); - this.state = 6186; + this.state = 6184; this.column_name(); } } @@ -35037,30 +35050,30 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6188; + this.state = 6186; this.match(PostgreSqlParser.KW_INTO); - this.state = 6194; + this.state = 6192; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 809, this.context) ) { case 1: { - this.state = 6190; + this.state = 6188; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 808, this.context) ) { case 1: { - this.state = 6189; + this.state = 6187; this.match(PostgreSqlParser.KW_STRICT); } break; } - this.state = 6192; + this.state = 6190; this.opttempTableName(); } break; case 2: { - this.state = 6193; + this.state = 6191; this.expr_list(); } break; @@ -35086,18 +35099,18 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 582, PostgreSqlParser.RULE_opttempTableName); let _la: number; try { - this.state = 6211; + this.state = 6209; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 814, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6197; + this.state = 6195; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 213 || _la === 254) { { - this.state = 6196; + this.state = 6194; _la = this.tokenStream.LA(1); if(!(_la === 213 || _la === 254)) { this.errorHandler.recoverInline(this); @@ -35109,7 +35122,7 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 6199; + this.state = 6197; _la = this.tokenStream.LA(1); if(!(_la === 352 || _la === 354)) { this.errorHandler.recoverInline(this); @@ -35118,44 +35131,44 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6201; + this.state = 6199; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 92) { { - this.state = 6200; + this.state = 6198; this.match(PostgreSqlParser.KW_TABLE); } } - this.state = 6203; + this.state = 6201; this.table_name_create(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6205; + this.state = 6203; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 812, this.context) ) { case 1: { - this.state = 6204; + this.state = 6202; this.match(PostgreSqlParser.KW_UNLOGGED); } break; } - this.state = 6208; + this.state = 6206; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 92) { { - this.state = 6207; + this.state = 6205; this.match(PostgreSqlParser.KW_TABLE); } } - this.state = 6210; + this.state = 6208; this.table_name_create(); } break; @@ -35181,16 +35194,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6213; + this.state = 6211; this.match(PostgreSqlParser.KW_DISTINCT); - this.state = 6216; + this.state = 6214; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 815, this.context) ) { case 1: { - this.state = 6214; + this.state = 6212; this.match(PostgreSqlParser.KW_ON); - this.state = 6215; + this.state = 6213; this.execute_param_clause(); } break; @@ -35218,25 +35231,25 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6218; + this.state = 6216; this.match(PostgreSqlParser.KW_ORDER); - this.state = 6219; + this.state = 6217; this.match(PostgreSqlParser.KW_BY); - this.state = 6220; + this.state = 6218; this.sortby(); - this.state = 6225; + this.state = 6223; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6221; + this.state = 6219; this.match(PostgreSqlParser.COMMA); - this.state = 6222; + this.state = 6220; this.sortby(); } } - this.state = 6227; + this.state = 6225; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -35263,22 +35276,22 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6228; + this.state = 6226; this.column_expr_noparen(); - this.state = 6232; + this.state = 6230; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 817, this.context) ) { case 1: { - this.state = 6229; + this.state = 6227; this.match(PostgreSqlParser.KW_USING); - this.state = 6230; + this.state = 6228; this.qual_all_op(); } break; case 2: { - this.state = 6231; + this.state = 6229; _la = this.tokenStream.LA(1); if(!(_la === 37 || _la === 55)) { this.errorHandler.recoverInline(this); @@ -35290,14 +35303,14 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6236; + this.state = 6234; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 818, this.context) ) { case 1: { - this.state = 6234; + this.state = 6232; this.match(PostgreSqlParser.KW_NULLS); - this.state = 6235; + this.state = 6233; _la = this.tokenStream.LA(1); if(!(_la === 207 || _la === 249)) { this.errorHandler.recoverInline(this); @@ -35330,20 +35343,20 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 590, PostgreSqlParser.RULE_select_limit); let _la: number; try { - this.state = 6249; + this.state = 6247; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_OFFSET: this.enterOuterAlt(localContext, 1); { - this.state = 6238; + this.state = 6236; this.offset_clause(); - this.state = 6240; + this.state = 6238; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 819, this.context) ) { case 1: { - this.state = 6239; + this.state = 6237; this.fetch_clause(); } break; @@ -35354,30 +35367,30 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LIMIT: this.enterOuterAlt(localContext, 2); { - this.state = 6244; + this.state = 6242; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_LIMIT: { - this.state = 6242; + this.state = 6240; this.limit_clause(); } break; case PostgreSqlParser.KW_FETCH: { - this.state = 6243; + this.state = 6241; this.fetch_clause(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6247; + this.state = 6245; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 79) { { - this.state = 6246; + this.state = 6244; this.offset_clause(); } } @@ -35409,9 +35422,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6251; + this.state = 6249; this.match(PostgreSqlParser.KW_LIMIT); - this.state = 6254; + this.state = 6252; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: @@ -35419,12 +35432,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.PARAM: case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: case PostgreSqlParser.KW_CASE: case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_CATALOG: case PostgreSqlParser.KW_CURRENT_DATE: case PostgreSqlParser.KW_CURRENT_ROLE: @@ -35432,9 +35442,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CURRENT_TIMESTAMP: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_LOCALTIME: case PostgreSqlParser.KW_LOCALTIMESTAMP: case PostgreSqlParser.KW_NOT: @@ -35845,6 +35853,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -35861,27 +35870,27 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6252; + this.state = 6250; this.expression(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 6253; + this.state = 6251; this.match(PostgreSqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6258; + this.state = 6256; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 6256; + this.state = 6254; this.match(PostgreSqlParser.COMMA); - this.state = 6257; + this.state = 6255; this.expression(); } } @@ -35909,9 +35918,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6260; + this.state = 6258; this.match(PostgreSqlParser.KW_FETCH); - this.state = 6261; + this.state = 6259; _la = this.tokenStream.LA(1); if(!(_la === 207 || _la === 268)) { this.errorHandler.recoverInline(this); @@ -35921,17 +35930,17 @@ export class PostgreSqlParser extends SQLParserBase { this.consume(); } { - this.state = 6263; + this.state = 6261; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 825, this.context) ) { case 1: { - this.state = 6262; + this.state = 6260; this.select_fetch_first_value(); } break; } - this.state = 6265; + this.state = 6263; _la = this.tokenStream.LA(1); if(!(_la === 320 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -35940,20 +35949,20 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6269; + this.state = 6267; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ONLY: { - this.state = 6266; + this.state = 6264; this.match(PostgreSqlParser.KW_ONLY); } break; case PostgreSqlParser.KW_WITH: { - this.state = 6267; + this.state = 6265; this.match(PostgreSqlParser.KW_WITH); - this.state = 6268; + this.state = 6266; this.match(PostgreSqlParser.KW_TIES); } break; @@ -35984,16 +35993,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6271; + this.state = 6269; this.match(PostgreSqlParser.KW_OFFSET); - this.state = 6276; + this.state = 6274; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 827, this.context) ) { case 1: { - this.state = 6272; + this.state = 6270; this.select_fetch_first_value(); - this.state = 6273; + this.state = 6271; _la = this.tokenStream.LA(1); if(!(_la === 320 || _la === 414)) { this.errorHandler.recoverInline(this); @@ -36006,7 +36015,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6275; + this.state = 6273; this.expression(); } break; @@ -36032,13 +36041,13 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 598, PostgreSqlParser.RULE_select_fetch_first_value); let _la: number; try { - this.state = 6281; + this.state = 6279; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 828, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6278; + this.state = 6276; _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { this.errorHandler.recoverInline(this); @@ -36047,7 +36056,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6279; + this.state = 6277; _la = this.tokenStream.LA(1); if(!(_la === 571 || _la === 573)) { this.errorHandler.recoverInline(this); @@ -36061,7 +36070,7 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6280; + this.state = 6278; this.primaryExpression(0); } break; @@ -36088,16 +36097,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6283; + this.state = 6281; this.match(PostgreSqlParser.KW_GROUP); - this.state = 6284; + this.state = 6282; this.match(PostgreSqlParser.KW_BY); - this.state = 6286; + this.state = 6284; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 829, this.context) ) { case 1: { - this.state = 6285; + this.state = 6283; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 56)) { this.errorHandler.recoverInline(this); @@ -36109,7 +36118,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6288; + this.state = 6286; this.group_by_list(); } } @@ -36134,23 +36143,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6290; + this.state = 6288; this.group_by_item(); - this.state = 6295; + this.state = 6293; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 830, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6291; + this.state = 6289; this.match(PostgreSqlParser.COMMA); - this.state = 6292; + this.state = 6290; this.group_by_item(); } } } - this.state = 6297; + this.state = 6295; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 830, this.context); } @@ -36175,34 +36184,34 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 604, PostgreSqlParser.RULE_group_by_item); let _la: number; try { - this.state = 6321; + this.state = 6319; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 833, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6298; + this.state = 6296; this.column_expr_noparen(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6299; + this.state = 6297; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6300; + this.state = 6298; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6302; + this.state = 6300; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 468 || _la === 469) { { - this.state = 6301; + this.state = 6299; _la = this.tokenStream.LA(1); if(!(_la === 468 || _la === 469)) { this.errorHandler.recoverInline(this); @@ -36214,44 +36223,44 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 6304; + this.state = 6302; this.match(PostgreSqlParser.OPEN_PAREN); { - this.state = 6305; + this.state = 6303; this.column_expr_noparen(); - this.state = 6310; + this.state = 6308; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6306; + this.state = 6304; this.match(PostgreSqlParser.COMMA); - this.state = 6307; + this.state = 6305; this.column_expr_noparen(); } } - this.state = 6312; + this.state = 6310; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 6313; + this.state = 6311; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 6315; + this.state = 6313; this.match(PostgreSqlParser.KW_GROUPING); - this.state = 6316; + this.state = 6314; this.match(PostgreSqlParser.KW_SETS); - this.state = 6317; + this.state = 6315; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6318; + this.state = 6316; this.group_by_list(); - this.state = 6319; + this.state = 6317; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -36276,95 +36285,95 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 606, PostgreSqlParser.RULE_for_locking_clause); let _la: number; try { - this.state = 6351; + this.state = 6349; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 840, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6344; + this.state = 6342; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 6323; + this.state = 6321; this.match(PostgreSqlParser.KW_FOR); - this.state = 6333; + this.state = 6331; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NO: case PostgreSqlParser.KW_UPDATE: { - this.state = 6326; + this.state = 6324; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 6324; + this.state = 6322; this.match(PostgreSqlParser.KW_NO); - this.state = 6325; + this.state = 6323; this.match(PostgreSqlParser.KW_KEY); } } - this.state = 6328; + this.state = 6326; this.match(PostgreSqlParser.KW_UPDATE); } break; case PostgreSqlParser.KW_KEY: case PostgreSqlParser.KW_SHARE: { - this.state = 6330; + this.state = 6328; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 245) { { - this.state = 6329; + this.state = 6327; this.match(PostgreSqlParser.KW_KEY); } } - this.state = 6332; + this.state = 6330; this.match(PostgreSqlParser.KW_SHARE); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6337; + this.state = 6335; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 837, this.context) ) { case 1: { - this.state = 6335; + this.state = 6333; this.match(PostgreSqlParser.KW_OF); - this.state = 6336; + this.state = 6334; this.qualified_name_list(); } break; } - this.state = 6342; + this.state = 6340; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 838, this.context) ) { case 1: { - this.state = 6339; + this.state = 6337; this.match(PostgreSqlParser.KW_NOWAIT); } break; case 2: { - this.state = 6340; + this.state = 6338; this.match(PostgreSqlParser.KW_SKIP); - this.state = 6341; + this.state = 6339; this.match(PostgreSqlParser.KW_LOCKED); } break; } } } - this.state = 6346; + this.state = 6344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 62); @@ -36373,11 +36382,11 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6348; + this.state = 6346; this.match(PostgreSqlParser.KW_FOR); - this.state = 6349; + this.state = 6347; this.match(PostgreSqlParser.KW_READ); - this.state = 6350; + this.state = 6348; this.match(PostgreSqlParser.KW_ONLY); } break; @@ -36404,23 +36413,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6353; + this.state = 6351; this.match(PostgreSqlParser.KW_VALUES); - this.state = 6354; + this.state = 6352; this.execute_param_clause(); - this.state = 6359; + this.state = 6357; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6355; + this.state = 6353; this.match(PostgreSqlParser.COMMA); - this.state = 6356; + this.state = 6354; this.execute_param_clause(); } } - this.state = 6361; + this.state = 6359; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -36446,9 +36455,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6362; + this.state = 6360; this.match(PostgreSqlParser.KW_FROM); - this.state = 6363; + this.state = 6361; this.from_list(); } } @@ -36473,23 +36482,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6365; + this.state = 6363; this.table_ref(); - this.state = 6370; + this.state = 6368; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 842, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6366; + this.state = 6364; this.match(PostgreSqlParser.COMMA); - this.state = 6367; + this.state = 6365; this.table_ref(); } } } - this.state = 6372; + this.state = 6370; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 842, this.context); } @@ -36517,61 +36526,61 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6436; + this.state = 6434; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 859, this.context) ) { case 1: { - this.state = 6387; + this.state = 6385; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 847, this.context) ) { case 1: { - this.state = 6373; + this.state = 6371; this.relation_expr(); } break; case 2: { { - this.state = 6375; + this.state = 6373; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 81) { { - this.state = 6374; + this.state = 6372; this.match(PostgreSqlParser.KW_ONLY); } } - this.state = 6377; + this.state = 6375; this.view_name(); - this.state = 6379; + this.state = 6377; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 844, this.context) ) { case 1: { - this.state = 6378; + this.state = 6376; this.match(PostgreSqlParser.STAR); } break; } - this.state = 6382; + this.state = 6380; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 845, this.context) ) { case 1: { - this.state = 6381; + this.state = 6379; this.column_list(); } break; } - this.state = 6385; + this.state = 6383; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 846, this.context) ) { case 1: { - this.state = 6384; + this.state = 6382; this.where_clause(); } break; @@ -36580,22 +36589,22 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6390; + this.state = 6388; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 848, this.context) ) { case 1: { - this.state = 6389; + this.state = 6387; this.alias_clause(); } break; } - this.state = 6393; + this.state = 6391; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 472) { { - this.state = 6392; + this.state = 6390; this.tablesample_clause(); } } @@ -36604,29 +36613,29 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6396; + this.state = 6394; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 72) { { - this.state = 6395; + this.state = 6393; this.match(PostgreSqlParser.KW_LATERAL); } } - this.state = 6410; + this.state = 6408; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 854, this.context) ) { case 1: { - this.state = 6398; + this.state = 6396; this.xmltable(); - this.state = 6400; + this.state = 6398; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 851, this.context) ) { case 1: { - this.state = 6399; + this.state = 6397; this.alias_clause(); } break; @@ -36635,14 +36644,14 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6402; + this.state = 6400; this.func_table(); - this.state = 6404; + this.state = 6402; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 852, this.context) ) { case 1: { - this.state = 6403; + this.state = 6401; this.func_alias_clause(); } break; @@ -36651,14 +36660,14 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 6406; + this.state = 6404; this.select_with_parens(); - this.state = 6408; + this.state = 6406; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 853, this.context) ) { case 1: { - this.state = 6407; + this.state = 6405; this.alias_clause(); } break; @@ -36670,40 +36679,40 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 6412; + this.state = 6410; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6413; + this.state = 6411; this.table_ref(); - this.state = 6430; + this.state = 6428; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CROSS: { - this.state = 6414; + this.state = 6412; this.match(PostgreSqlParser.KW_CROSS); - this.state = 6415; + this.state = 6413; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6416; + this.state = 6414; this.table_ref(); } break; case PostgreSqlParser.KW_NATURAL: { - this.state = 6417; + this.state = 6415; this.match(PostgreSqlParser.KW_NATURAL); - this.state = 6419; + this.state = 6417; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { { - this.state = 6418; + this.state = 6416; this.join_type(); } } - this.state = 6421; + this.state = 6419; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6422; + this.state = 6420; this.table_ref(); } break; @@ -36713,21 +36722,21 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LEFT: case PostgreSqlParser.KW_RIGHT: { - this.state = 6424; + this.state = 6422; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { { - this.state = 6423; + this.state = 6421; this.join_type(); } } - this.state = 6426; + this.state = 6424; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6427; + this.state = 6425; this.table_ref(); - this.state = 6428; + this.state = 6426; this.join_qual(); } break; @@ -36736,14 +36745,14 @@ export class PostgreSqlParser extends SQLParserBase { default: break; } - this.state = 6432; + this.state = 6430; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6434; + this.state = 6432; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 858, this.context) ) { case 1: { - this.state = 6433; + this.state = 6431; this.alias_clause(); } break; @@ -36751,42 +36760,42 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 6456; + this.state = 6454; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 863, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { - this.state = 6454; + this.state = 6452; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CROSS: { - this.state = 6438; + this.state = 6436; this.match(PostgreSqlParser.KW_CROSS); - this.state = 6439; + this.state = 6437; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6440; + this.state = 6438; this.table_ref(); } break; case PostgreSqlParser.KW_NATURAL: { - this.state = 6441; + this.state = 6439; this.match(PostgreSqlParser.KW_NATURAL); - this.state = 6443; + this.state = 6441; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { { - this.state = 6442; + this.state = 6440; this.join_type(); } } - this.state = 6445; + this.state = 6443; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6446; + this.state = 6444; this.table_ref(); } break; @@ -36796,21 +36805,21 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LEFT: case PostgreSqlParser.KW_RIGHT: { - this.state = 6448; + this.state = 6446; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0)) { { - this.state = 6447; + this.state = 6445; this.join_type(); } } - this.state = 6450; + this.state = 6448; this.match(PostgreSqlParser.KW_JOIN); - this.state = 6451; + this.state = 6449; this.table_ref(); - this.state = 6452; + this.state = 6450; this.join_qual(); } break; @@ -36819,7 +36828,7 @@ export class PostgreSqlParser extends SQLParserBase { } } } - this.state = 6458; + this.state = 6456; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 863, this.context); } @@ -36846,28 +36855,28 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6460; + this.state = 6458; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 6459; + this.state = 6457; this.match(PostgreSqlParser.KW_AS); } } - this.state = 6462; + this.state = 6460; this.colid(); - this.state = 6467; + this.state = 6465; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 865, this.context) ) { case 1: { - this.state = 6463; + this.state = 6461; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6464; + this.state = 6462; this.name_list(); - this.state = 6465; + this.state = 6463; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -36893,45 +36902,39 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 618, PostgreSqlParser.RULE_func_alias_clause); let _la: number; try { - this.state = 6481; + this.state = 6479; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 868, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6469; + this.state = 6467; this.alias_clause(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6475; + this.state = 6473; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_AS: { - this.state = 6470; + this.state = 6468; this.match(PostgreSqlParser.KW_AS); - this.state = 6472; + this.state = 6470; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 6471; + this.state = 6469; this.colid(); } } } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -37313,6 +37316,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -37325,18 +37329,18 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6474; + this.state = 6472; this.colid(); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 6477; + this.state = 6475; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6478; + this.state = 6476; this.tablefuncelementlist(); - this.state = 6479; + this.state = 6477; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -37363,7 +37367,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6483; + this.state = 6481; _la = this.tokenStream.LA(1); if(!(((((_la - 113)) & ~0x1F) === 0 && ((1 << (_la - 113)) & 8261) !== 0))) { this.errorHandler.recoverInline(this); @@ -37372,12 +37376,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6485; + this.state = 6483; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 123) { { - this.state = 6484; + this.state = 6482; this.match(PostgreSqlParser.KW_OUTER); } } @@ -37402,24 +37406,24 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Join_qualContext(this.context, this.state); this.enterRule(localContext, 622, PostgreSqlParser.RULE_join_qual); try { - this.state = 6491; + this.state = 6489; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_USING: this.enterOuterAlt(localContext, 1); { - this.state = 6487; + this.state = 6485; this.match(PostgreSqlParser.KW_USING); - this.state = 6488; + this.state = 6486; this.opt_column_list(); } break; case PostgreSqlParser.KW_ON: this.enterOuterAlt(localContext, 2); { - this.state = 6489; + this.state = 6487; this.match(PostgreSqlParser.KW_ON); - this.state = 6490; + this.state = 6488; this.expression(); } break; @@ -37445,31 +37449,25 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Relation_exprContext(this.context, this.state); this.enterRule(localContext, 624, PostgreSqlParser.RULE_relation_expr); try { - this.state = 6508; + this.state = 6506; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 873, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6493; + this.state = 6491; this.truncate_table(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6494; + this.state = 6492; this.match(PostgreSqlParser.KW_ONLY); - this.state = 6500; + this.state = 6498; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -37851,6 +37849,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -37863,17 +37862,17 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6495; + this.state = 6493; this.table_name(); } break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 6496; + this.state = 6494; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6497; + this.state = 6495; this.table_name(); - this.state = 6498; + this.state = 6496; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -37885,20 +37884,14 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6502; + this.state = 6500; this.match(PostgreSqlParser.KW_IN); - this.state = 6503; + this.state = 6501; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 6506; + this.state = 6504; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -38280,6 +38273,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -38292,13 +38286,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6504; + this.state = 6502; this.schema_name(); } break; case PostgreSqlParser.KW_CURRENT_SCHEMA: { - this.state = 6505; + this.state = 6503; this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); } break; @@ -38328,32 +38322,32 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 626, PostgreSqlParser.RULE_publication_relation_expr); let _la: number; try { - this.state = 6534; + this.state = 6532; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 878, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6510; + this.state = 6508; this.match(PostgreSqlParser.KW_TABLE); - this.state = 6511; + this.state = 6509; this.truncate_table(); - this.state = 6513; + this.state = 6511; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 874, this.context) ) { case 1: { - this.state = 6512; + this.state = 6510; this.opt_column_list(); } break; } - this.state = 6516; + this.state = 6514; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 6515; + this.state = 6513; this.where_clause(); } } @@ -38363,20 +38357,14 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6518; + this.state = 6516; this.match(PostgreSqlParser.KW_TABLE); - this.state = 6519; + this.state = 6517; this.match(PostgreSqlParser.KW_ONLY); - this.state = 6525; + this.state = 6523; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -38758,6 +38746,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -38770,17 +38759,17 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6520; + this.state = 6518; this.table_name(); } break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 6521; + this.state = 6519; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6522; + this.state = 6520; this.table_name(); - this.state = 6523; + this.state = 6521; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -38792,22 +38781,16 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6527; + this.state = 6525; this.match(PostgreSqlParser.KW_TABLES); - this.state = 6528; + this.state = 6526; this.match(PostgreSqlParser.KW_IN); - this.state = 6529; + this.state = 6527; this.match(PostgreSqlParser.KW_SCHEMA); - this.state = 6532; + this.state = 6530; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -39189,6 +39172,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -39201,13 +39185,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6530; + this.state = 6528; this.schema_name(); } break; case PostgreSqlParser.KW_CURRENT_SCHEMA: { - this.state = 6531; + this.state = 6529; this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); } break; @@ -39239,21 +39223,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6536; + this.state = 6534; this.relation_expr(); - this.state = 6541; + this.state = 6539; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6537; + this.state = 6535; this.match(PostgreSqlParser.COMMA); - this.state = 6538; + this.state = 6536; this.relation_expr(); } } - this.state = 6543; + this.state = 6541; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -39280,24 +39264,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6544; + this.state = 6542; this.relation_expr(); - this.state = 6549; + this.state = 6547; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 881, this.context) ) { case 1: { - this.state = 6546; + this.state = 6544; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 6545; + this.state = 6543; this.match(PostgreSqlParser.KW_AS); } } - this.state = 6548; + this.state = 6546; this.colid(); } break; @@ -39324,24 +39308,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6551; + this.state = 6549; this.match(PostgreSqlParser.KW_TABLESAMPLE); - this.state = 6552; + this.state = 6550; this.function_name(); - this.state = 6553; + this.state = 6551; this.execute_param_clause(); - this.state = 6559; + this.state = 6557; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 882, this.context) ) { case 1: { - this.state = 6554; + this.state = 6552; this.match(PostgreSqlParser.KW_REPEATABLE); - this.state = 6555; + this.state = 6553; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6556; + this.state = 6554; this.expression(); - this.state = 6557; + this.state = 6555; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -39369,56 +39353,56 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6575; + this.state = 6573; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 884, this.context) ) { case 1: { - this.state = 6561; + this.state = 6559; this.func_expr_windowless(); } break; case 2: { { - this.state = 6562; + this.state = 6560; this.match(PostgreSqlParser.KW_ROWS); - this.state = 6563; + this.state = 6561; this.match(PostgreSqlParser.KW_FROM); - this.state = 6564; + this.state = 6562; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6565; + this.state = 6563; this.rowsfrom_item(); - this.state = 6570; + this.state = 6568; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6566; + this.state = 6564; this.match(PostgreSqlParser.COMMA); - this.state = 6567; + this.state = 6565; this.rowsfrom_item(); } } - this.state = 6572; + this.state = 6570; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 6573; + this.state = 6571; this.match(PostgreSqlParser.CLOSE_PAREN); } } break; } - this.state = 6579; + this.state = 6577; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 885, this.context) ) { case 1: { - this.state = 6577; + this.state = 6575; this.match(PostgreSqlParser.KW_WITH); - this.state = 6578; + this.state = 6576; this.match(PostgreSqlParser.KW_ORDINALITY); } break; @@ -39446,20 +39430,20 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6581; + this.state = 6579; this.func_expr_windowless(); - this.state = 6587; + this.state = 6585; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 6582; + this.state = 6580; this.match(PostgreSqlParser.KW_AS); - this.state = 6583; + this.state = 6581; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6584; + this.state = 6582; this.tablefuncelementlist(); - this.state = 6585; + this.state = 6583; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -39486,9 +39470,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6589; + this.state = 6587; this.match(PostgreSqlParser.KW_WHERE); - this.state = 6590; + this.state = 6588; this.column_expr_noparen(); } } @@ -39512,24 +39496,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6592; + this.state = 6590; this.match(PostgreSqlParser.KW_WHERE); - this.state = 6597; + this.state = 6595; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 887, this.context) ) { case 1: { - this.state = 6593; + this.state = 6591; this.match(PostgreSqlParser.KW_CURRENT); - this.state = 6594; + this.state = 6592; this.match(PostgreSqlParser.KW_OF); - this.state = 6595; + this.state = 6593; this.colid(); } break; case 2: { - this.state = 6596; + this.state = 6594; this.expression(); } break; @@ -39557,21 +39541,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6599; + this.state = 6597; this.tablefuncelement(); - this.state = 6604; + this.state = 6602; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6600; + this.state = 6598; this.match(PostgreSqlParser.COMMA); - this.state = 6601; + this.state = 6599; this.tablefuncelement(); } } - this.state = 6606; + this.state = 6604; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -39594,23 +39578,24 @@ export class PostgreSqlParser extends SQLParserBase { public tablefuncelement(): TablefuncelementContext { let localContext = new TablefuncelementContext(this.context, this.state); this.enterRule(localContext, 644, PostgreSqlParser.RULE_tablefuncelement); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 6607; + this.state = 6605; this.colid(); - this.state = 6608; + this.state = 6606; this.typename(); - this.state = 6610; + this.state = 6608; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 889, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 43) { { - this.state = 6609; + this.state = 6607; this.opt_collate_clause(); } - break; } + } } catch (re) { @@ -39634,71 +39619,71 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6612; + this.state = 6610; this.match(PostgreSqlParser.KW_XMLTABLE); - this.state = 6613; + this.state = 6611; this.match(PostgreSqlParser.OPEN_PAREN); { - this.state = 6627; + this.state = 6625; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 891, this.context) ) { case 1: { - this.state = 6614; + this.state = 6612; this.match(PostgreSqlParser.KW_XMLNAMESPACES); - this.state = 6615; + this.state = 6613; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6616; + this.state = 6614; this.xml_namespace_el(); - this.state = 6621; + this.state = 6619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6617; + this.state = 6615; this.match(PostgreSqlParser.COMMA); - this.state = 6618; + this.state = 6616; this.xml_namespace_el(); } } - this.state = 6623; + this.state = 6621; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 6624; + this.state = 6622; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6625; + this.state = 6623; this.match(PostgreSqlParser.COMMA); } break; } - this.state = 6629; + this.state = 6627; this.primaryExpression(0); - this.state = 6630; + this.state = 6628; this.xmlexists_argument(); - this.state = 6631; + this.state = 6629; this.match(PostgreSqlParser.KW_COLUMNS); - this.state = 6632; + this.state = 6630; this.xmltable_column_el(); - this.state = 6637; + this.state = 6635; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6633; + this.state = 6631; this.match(PostgreSqlParser.COMMA); - this.state = 6634; + this.state = 6632; this.xmltable_column_el(); } } - this.state = 6639; + this.state = 6637; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 6640; + this.state = 6638; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -39723,18 +39708,12 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6642; + this.state = 6640; this.colid(); - this.state = 6661; + this.state = 6659; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_AUTHORIZATION: case PostgreSqlParser.KW_BINARY: case PostgreSqlParser.KW_COLLATION: @@ -40137,6 +40116,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -40149,56 +40129,324 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6643; + this.state = 6641; this.typename(); - this.state = 6657; + this.state = 6655; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 77 || _la === 78 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584) { + if (((((_la - 53)) & ~0x1F) === 0 && ((1 << (_la - 53)) & 50331649) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 32767) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 4278187359) !== 0) || ((((_la - 497)) & ~0x1F) === 0 && ((1 << (_la - 497)) & 146800319) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 6653; + this.state = 6651; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { - this.state = 6653; + this.state = 6651; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: case PostgreSqlParser.KW_NEXT: case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: case PostgreSqlParser.KW_SCHEMA: case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: case PostgreSqlParser.KW_CALL: case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_COLUMNS: case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: case PostgreSqlParser.KW_DUMP: case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: case PostgreSqlParser.KW_VARIABLE_CONFLICT: @@ -40227,6 +40475,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: case PostgreSqlParser.QuotedIdentifier: case PostgreSqlParser.UnicodeQuotedIdentifier: @@ -40237,40 +40488,40 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6646; + this.state = 6644; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 893, this.context) ) { case 1: { - this.state = 6644; + this.state = 6642; this.match(PostgreSqlParser.KW_DEFAULT); } break; case 2: { - this.state = 6645; + this.state = 6643; this.identifier(); } break; } - this.state = 6648; + this.state = 6646; this.expression(); } break; case PostgreSqlParser.KW_NOT: case PostgreSqlParser.KW_NULL: { - this.state = 6650; + this.state = 6648; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6649; + this.state = 6647; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6652; + this.state = 6650; this.match(PostgreSqlParser.KW_NULL); } break; @@ -40278,10 +40529,10 @@ export class PostgreSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } } - this.state = 6655; + this.state = 6653; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || _la === 77 || _la === 78 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584); + } while (((((_la - 53)) & ~0x1F) === 0 && ((1 << (_la - 53)) & 50331649) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 32767) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 4278187359) !== 0) || ((((_la - 497)) & ~0x1F) === 0 && ((1 << (_la - 497)) & 146800319) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584); } } @@ -40289,9 +40540,9 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_FOR: { - this.state = 6659; + this.state = 6657; this.match(PostgreSqlParser.KW_FOR); - this.state = 6660; + this.state = 6658; this.match(PostgreSqlParser.KW_ORDINALITY); } break; @@ -40318,26 +40569,26 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Xml_namespace_elContext(this.context, this.state); this.enterRule(localContext, 650, PostgreSqlParser.RULE_xml_namespace_el); try { - this.state = 6669; + this.state = 6667; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 899, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6663; + this.state = 6661; this.primaryExpression(0); - this.state = 6664; + this.state = 6662; this.match(PostgreSqlParser.KW_AS); - this.state = 6665; + this.state = 6663; this.collabel(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6667; + this.state = 6665; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 6668; + this.state = 6666; this.primaryExpression(0); } break; @@ -40363,55 +40614,55 @@ export class PostgreSqlParser extends SQLParserBase { let _la: number; try { let alternative: number; - this.state = 6697; + this.state = 6695; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 905, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6672; + this.state = 6670; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 415) { { - this.state = 6671; + this.state = 6669; this.match(PostgreSqlParser.KW_SETOF); } } - this.state = 6674; + this.state = 6672; this.simpletypename(); - this.state = 6691; + this.state = 6689; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 904, this.context) ) { case 1: { { - this.state = 6682; + this.state = 6680; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 902, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 6675; + this.state = 6673; this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 6677; + this.state = 6675; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 571) { { - this.state = 6676; + this.state = 6674; this.match(PostgreSqlParser.Integral); } } - this.state = 6679; + this.state = 6677; this.match(PostgreSqlParser.CLOSE_BRACKET); } } } - this.state = 6684; + this.state = 6682; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 902, this.context); } @@ -40420,18 +40671,18 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6685; + this.state = 6683; this.match(PostgreSqlParser.KW_ARRAY); - this.state = 6689; + this.state = 6687; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 903, this.context) ) { case 1: { - this.state = 6686; + this.state = 6684; this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 6687; + this.state = 6685; this.match(PostgreSqlParser.Integral); - this.state = 6688; + this.state = 6686; this.match(PostgreSqlParser.CLOSE_BRACKET); } break; @@ -40444,11 +40695,11 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6693; + this.state = 6691; this.qualified_name(); - this.state = 6694; + this.state = 6692; this.match(PostgreSqlParser.PERCENT); - this.state = 6695; + this.state = 6693; _la = this.tokenStream.LA(1); if(!(_la === 360 || _la === 477)) { this.errorHandler.recoverInline(this); @@ -40479,30 +40730,30 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new SimpletypenameContext(this.context, this.state); this.enterRule(localContext, 654, PostgreSqlParser.RULE_simpletypename); try { - this.state = 6714; + this.state = 6712; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 910, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 6699; + this.state = 6697; this.type_function_name(); - this.state = 6701; + this.state = 6699; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 906, this.context) ) { case 1: { - this.state = 6700; + this.state = 6698; this.attrs(); } break; } - this.state = 6704; + this.state = 6702; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 907, this.context) ) { case 1: { - this.state = 6703; + this.state = 6701; this.execute_param_clause(); } break; @@ -40512,26 +40763,26 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 6706; + this.state = 6704; this.consttypename(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 6707; + this.state = 6705; this.match(PostgreSqlParser.KW_INTERVAL); - this.state = 6712; + this.state = 6710; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 909, this.context) ) { case 1: { - this.state = 6709; + this.state = 6707; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 908, this.context) ) { case 1: { - this.state = 6708; + this.state = 6706; this.opt_interval(); } break; @@ -40540,7 +40791,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 6711; + this.state = 6709; this.opt_float(); } break; @@ -40567,7 +40818,7 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new ConsttypenameContext(this.context, this.state); this.enterRule(localContext, 656, PostgreSqlParser.RULE_consttypename); try { - this.state = 6720; + this.state = 6718; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DOUBLE: @@ -40583,14 +40834,14 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_SMALLINT: this.enterOuterAlt(localContext, 1); { - this.state = 6716; + this.state = 6714; this.numeric(); } break; case PostgreSqlParser.KW_BIT: this.enterOuterAlt(localContext, 2); { - this.state = 6717; + this.state = 6715; this.bit(); } break; @@ -40601,7 +40852,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_VARCHAR: this.enterOuterAlt(localContext, 3); { - this.state = 6718; + this.state = 6716; this.character(); } break; @@ -40609,7 +40860,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_TIMESTAMP: this.enterOuterAlt(localContext, 4); { - this.state = 6719; + this.state = 6717; this.constdatetime(); } break; @@ -40636,55 +40887,55 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 658, PostgreSqlParser.RULE_numeric); let _la: number; try { - this.state = 6738; + this.state = 6736; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_INT: this.enterOuterAlt(localContext, 1); { - this.state = 6722; + this.state = 6720; this.match(PostgreSqlParser.KW_INT); } break; case PostgreSqlParser.KW_INTEGER: this.enterOuterAlt(localContext, 2); { - this.state = 6723; + this.state = 6721; this.match(PostgreSqlParser.KW_INTEGER); } break; case PostgreSqlParser.KW_SMALLINT: this.enterOuterAlt(localContext, 3); { - this.state = 6724; + this.state = 6722; this.match(PostgreSqlParser.KW_SMALLINT); } break; case PostgreSqlParser.KW_BIGINT: this.enterOuterAlt(localContext, 4); { - this.state = 6725; + this.state = 6723; this.match(PostgreSqlParser.KW_BIGINT); } break; case PostgreSqlParser.KW_REAL: this.enterOuterAlt(localContext, 5); { - this.state = 6726; + this.state = 6724; this.match(PostgreSqlParser.KW_REAL); } break; case PostgreSqlParser.KW_FLOAT: this.enterOuterAlt(localContext, 6); { - this.state = 6727; + this.state = 6725; this.match(PostgreSqlParser.KW_FLOAT); - this.state = 6729; + this.state = 6727; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 912, this.context) ) { case 1: { - this.state = 6728; + this.state = 6726; this.opt_float(); } break; @@ -40694,9 +40945,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DOUBLE: this.enterOuterAlt(localContext, 7); { - this.state = 6731; + this.state = 6729; this.match(PostgreSqlParser.KW_DOUBLE); - this.state = 6732; + this.state = 6730; this.match(PostgreSqlParser.KW_PRECISION); } break; @@ -40705,7 +40956,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_NUMERIC: this.enterOuterAlt(localContext, 8); { - this.state = 6733; + this.state = 6731; _la = this.tokenStream.LA(1); if(!(((((_la - 394)) & ~0x1F) === 0 && ((1 << (_la - 394)) & 32771) !== 0))) { this.errorHandler.recoverInline(this); @@ -40714,12 +40965,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6735; + this.state = 6733; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 913, this.context) ) { case 1: { - this.state = 6734; + this.state = 6732; this.execute_param_clause(); } break; @@ -40729,7 +40980,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_BOOLEAN: this.enterOuterAlt(localContext, 9); { - this.state = 6737; + this.state = 6735; this.match(PostgreSqlParser.KW_BOOLEAN); } break; @@ -40757,11 +41008,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6740; + this.state = 6738; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6741; + this.state = 6739; this.match(PostgreSqlParser.Integral); - this.state = 6742; + this.state = 6740; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -40785,24 +41036,24 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6744; + this.state = 6742; this.match(PostgreSqlParser.KW_BIT); - this.state = 6746; + this.state = 6744; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 915, this.context) ) { case 1: { - this.state = 6745; + this.state = 6743; this.match(PostgreSqlParser.KW_VARYING); } break; } - this.state = 6749; + this.state = 6747; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 916, this.context) ) { case 1: { - this.state = 6748; + this.state = 6746; this.execute_param_clause(); } break; @@ -40830,14 +41081,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6761; + this.state = 6759; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CHAR: case PostgreSqlParser.KW_CHARACTER: case PostgreSqlParser.KW_NCHAR: { - this.state = 6751; + this.state = 6749; _la = this.tokenStream.LA(1); if(!(((((_la - 391)) & ~0x1F) === 0 && ((1 << (_la - 391)) & 32771) !== 0))) { this.errorHandler.recoverInline(this); @@ -40846,12 +41097,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6753; + this.state = 6751; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 917, this.context) ) { case 1: { - this.state = 6752; + this.state = 6750; this.match(PostgreSqlParser.KW_VARYING); } break; @@ -40860,15 +41111,15 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_VARCHAR: { - this.state = 6755; + this.state = 6753; this.match(PostgreSqlParser.KW_VARCHAR); } break; case PostgreSqlParser.KW_NATIONAL: { - this.state = 6756; + this.state = 6754; this.match(PostgreSqlParser.KW_NATIONAL); - this.state = 6757; + this.state = 6755; _la = this.tokenStream.LA(1); if(!(_la === 391 || _la === 392)) { this.errorHandler.recoverInline(this); @@ -40877,12 +41128,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6759; + this.state = 6757; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 918, this.context) ) { case 1: { - this.state = 6758; + this.state = 6756; this.match(PostgreSqlParser.KW_VARYING); } break; @@ -40892,12 +41143,12 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 6764; + this.state = 6762; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 920, this.context) ) { case 1: { - this.state = 6763; + this.state = 6761; this.opt_float(); } break; @@ -40925,7 +41176,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6766; + this.state = 6764; _la = this.tokenStream.LA(1); if(!(_la === 418 || _la === 419)) { this.errorHandler.recoverInline(this); @@ -40934,22 +41185,22 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6768; + this.state = 6766; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 921, this.context) ) { case 1: { - this.state = 6767; + this.state = 6765; this.opt_float(); } break; } - this.state = 6773; + this.state = 6771; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 922, this.context) ) { case 1: { - this.state = 6770; + this.state = 6768; _la = this.tokenStream.LA(1); if(!(_la === 105 || _la === 379)) { this.errorHandler.recoverInline(this); @@ -40958,9 +41209,9 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6771; + this.state = 6769; this.match(PostgreSqlParser.KW_TIME); - this.state = 6772; + this.state = 6770; this.match(PostgreSqlParser.KW_ZONE); } break; @@ -40985,36 +41236,36 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Opt_intervalContext(this.context, this.state); this.enterRule(localContext, 668, PostgreSqlParser.RULE_opt_interval); try { - this.state = 6804; + this.state = 6802; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_MONTH: this.enterOuterAlt(localContext, 1); { - this.state = 6775; + this.state = 6773; this.match(PostgreSqlParser.KW_MONTH); } break; case PostgreSqlParser.KW_SECOND: this.enterOuterAlt(localContext, 2); { - this.state = 6776; + this.state = 6774; this.interval_second(); } break; case PostgreSqlParser.KW_YEAR: this.enterOuterAlt(localContext, 3); { - this.state = 6777; + this.state = 6775; this.match(PostgreSqlParser.KW_YEAR); - this.state = 6780; + this.state = 6778; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 923, this.context) ) { case 1: { - this.state = 6778; + this.state = 6776; this.match(PostgreSqlParser.KW_TO); - this.state = 6779; + this.state = 6777; this.match(PostgreSqlParser.KW_MONTH); } break; @@ -41024,33 +41275,33 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DAY: this.enterOuterAlt(localContext, 4); { - this.state = 6782; + this.state = 6780; this.match(PostgreSqlParser.KW_DAY); - this.state = 6789; + this.state = 6787; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 925, this.context) ) { case 1: { - this.state = 6783; + this.state = 6781; this.match(PostgreSqlParser.KW_TO); - this.state = 6787; + this.state = 6785; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_HOUR: { - this.state = 6784; + this.state = 6782; this.match(PostgreSqlParser.KW_HOUR); } break; case PostgreSqlParser.KW_MINUTE: { - this.state = 6785; + this.state = 6783; this.match(PostgreSqlParser.KW_MINUTE); } break; case PostgreSqlParser.KW_SECOND: { - this.state = 6786; + this.state = 6784; this.interval_second(); } break; @@ -41065,27 +41316,27 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_HOUR: this.enterOuterAlt(localContext, 5); { - this.state = 6791; + this.state = 6789; this.match(PostgreSqlParser.KW_HOUR); - this.state = 6797; + this.state = 6795; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 927, this.context) ) { case 1: { - this.state = 6792; + this.state = 6790; this.match(PostgreSqlParser.KW_TO); - this.state = 6795; + this.state = 6793; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_MINUTE: { - this.state = 6793; + this.state = 6791; this.match(PostgreSqlParser.KW_MINUTE); } break; case PostgreSqlParser.KW_SECOND: { - this.state = 6794; + this.state = 6792; this.interval_second(); } break; @@ -41100,16 +41351,16 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_MINUTE: this.enterOuterAlt(localContext, 6); { - this.state = 6799; + this.state = 6797; this.match(PostgreSqlParser.KW_MINUTE); - this.state = 6802; + this.state = 6800; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 928, this.context) ) { case 1: { - this.state = 6800; + this.state = 6798; this.match(PostgreSqlParser.KW_TO); - this.state = 6801; + this.state = 6799; this.interval_second(); } break; @@ -41140,14 +41391,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6806; + this.state = 6804; this.match(PostgreSqlParser.KW_SECOND); - this.state = 6808; + this.state = 6806; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 930, this.context) ) { case 1: { - this.state = 6807; + this.state = 6805; this.opt_float(); } break; @@ -41175,7 +41426,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6810; + this.state = 6808; _la = this.tokenStream.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 44237824) !== 0))) { this.errorHandler.recoverInline(this); @@ -41206,7 +41457,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 6812; + this.state = 6810; this.booleanExpression(0); } } @@ -41242,7 +41493,7 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6821; + this.state = 6819; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: @@ -41250,12 +41501,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.PARAM: case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: case PostgreSqlParser.KW_CASE: case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_CATALOG: case PostgreSqlParser.KW_CURRENT_DATE: case PostgreSqlParser.KW_CURRENT_ROLE: @@ -41263,9 +41511,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CURRENT_TIMESTAMP: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_LOCALTIME: case PostgreSqlParser.KW_LOCALTIMESTAMP: case PostgreSqlParser.KW_NULL: @@ -41675,6 +41921,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -41695,14 +41942,14 @@ export class PostgreSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 6815; + this.state = 6813; (localContext as PredicatedContext)._valueExpression = this.valueExpression(0); - this.state = 6817; + this.state = 6815; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 931, this.context) ) { case 1: { - this.state = 6816; + this.state = 6814; this.predicate((localContext as PredicatedContext)._valueExpression); } break; @@ -41714,9 +41961,9 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new LogicalNotContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 6819; + this.state = 6817; this.match(PostgreSqlParser.KW_NOT); - this.state = 6820; + this.state = 6818; this.booleanExpression(3); } break; @@ -41724,7 +41971,7 @@ export class PostgreSqlParser extends SQLParserBase { throw new antlr.NoViableAltException(this); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 6831; + this.state = 6829; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 934, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { @@ -41734,7 +41981,7 @@ export class PostgreSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 6829; + this.state = 6827; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 933, this.context) ) { case 1: @@ -41742,13 +41989,13 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); (localContext as LogicalBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_booleanExpression); - this.state = 6823; + this.state = 6821; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 6824; + this.state = 6822; (localContext as LogicalBinaryContext)._operator = this.match(PostgreSqlParser.KW_AND); - this.state = 6825; + this.state = 6823; (localContext as LogicalBinaryContext)._right = this.booleanExpression(3); } break; @@ -41757,20 +42004,20 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); (localContext as LogicalBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_booleanExpression); - this.state = 6826; + this.state = 6824; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 6827; + this.state = 6825; (localContext as LogicalBinaryContext)._operator = this.match(PostgreSqlParser.KW_OR); - this.state = 6828; + this.state = 6826; (localContext as LogicalBinaryContext)._right = this.booleanExpression(2); } break; } } } - this.state = 6833; + this.state = 6831; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 934, this.context); } @@ -41795,16 +42042,16 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 678, PostgreSqlParser.RULE_predicate); let _la: number; try { - this.state = 6905; + this.state = 6903; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 946, this.context) ) { case 1: localContext = new ComparisonContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 6834; + this.state = 6832; this.comparisonOperator(); - this.state = 6835; + this.state = 6833; (localContext as ComparisonContext)._right = this.valueExpression(0); } break; @@ -41812,28 +42059,28 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new QuantifiedComparisonContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 6837; + this.state = 6835; this.comparisonOperator(); - this.state = 6838; + this.state = 6836; this.subquery_Op(); - this.state = 6839; + this.state = 6837; this.sub_type(); - this.state = 6845; + this.state = 6843; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 935, this.context) ) { case 1: { - this.state = 6840; + this.state = 6838; this.select_with_parens(); } break; case 2: { - this.state = 6841; + this.state = 6839; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6842; + this.state = 6840; this.expression(); - this.state = 6843; + this.state = 6841; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -41844,23 +42091,23 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new BetweenContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 6848; + this.state = 6846; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6847; + this.state = 6845; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6850; + this.state = 6848; this.match(PostgreSqlParser.KW_BETWEEN); - this.state = 6851; + this.state = 6849; (localContext as BetweenContext)._lower = this.valueExpression(0); - this.state = 6852; + this.state = 6850; this.match(PostgreSqlParser.KW_AND); - this.state = 6853; + this.state = 6851; (localContext as BetweenContext)._upper = this.valueExpression(0); } break; @@ -41868,39 +42115,39 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new InListContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 6856; + this.state = 6854; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6855; + this.state = 6853; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6858; + this.state = 6856; this.match(PostgreSqlParser.KW_IN); - this.state = 6859; + this.state = 6857; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6860; + this.state = 6858; this.expression(); - this.state = 6865; + this.state = 6863; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 6861; + this.state = 6859; this.match(PostgreSqlParser.COMMA); - this.state = 6862; + this.state = 6860; this.expression(); } } - this.state = 6867; + this.state = 6865; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 6868; + this.state = 6866; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -41908,19 +42155,19 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new InSubqueryContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 6871; + this.state = 6869; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6870; + this.state = 6868; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6873; + this.state = 6871; this.match(PostgreSqlParser.KW_IN); - this.state = 6874; + this.state = 6872; this.select_with_parens(); } break; @@ -41928,49 +42175,49 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new LikeContext(localContext); this.enterOuterAlt(localContext, 6); { - this.state = 6876; + this.state = 6874; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6875; + this.state = 6873; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6886; + this.state = 6884; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_LIKE: { - this.state = 6878; + this.state = 6876; this.match(PostgreSqlParser.KW_LIKE); } break; case PostgreSqlParser.KW_ILIKE: { - this.state = 6879; + this.state = 6877; this.match(PostgreSqlParser.KW_ILIKE); } break; case PostgreSqlParser.KW_SIMILAR: { - this.state = 6880; + this.state = 6878; this.match(PostgreSqlParser.KW_SIMILAR); - this.state = 6881; + this.state = 6879; this.match(PostgreSqlParser.KW_TO); } break; case PostgreSqlParser.KW_BETWEEN: { - this.state = 6882; + this.state = 6880; this.match(PostgreSqlParser.KW_BETWEEN); - this.state = 6884; + this.state = 6882; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 91) { { - this.state = 6883; + this.state = 6881; this.match(PostgreSqlParser.KW_SYMMETRIC); } } @@ -41980,16 +42227,16 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 6888; + this.state = 6886; (localContext as LikeContext)._pattern = this.valueExpression(0); - this.state = 6891; + this.state = 6889; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 943, this.context) ) { case 1: { - this.state = 6889; + this.state = 6887; this.match(PostgreSqlParser.KW_ESCAPE); - this.state = 6890; + this.state = 6888; (localContext as LikeContext)._escape = this.valueExpression(0); } break; @@ -42000,19 +42247,19 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new NullPredicateContext(localContext); this.enterOuterAlt(localContext, 7); { - this.state = 6893; + this.state = 6891; this.match(PostgreSqlParser.KW_IS); - this.state = 6895; + this.state = 6893; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6894; + this.state = 6892; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6897; + this.state = 6895; this.match(PostgreSqlParser.KW_NULL); } break; @@ -42020,23 +42267,23 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new DistinctFromContext(localContext); this.enterOuterAlt(localContext, 8); { - this.state = 6898; + this.state = 6896; this.match(PostgreSqlParser.KW_IS); - this.state = 6900; + this.state = 6898; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 6899; + this.state = 6897; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 6902; + this.state = 6900; this.match(PostgreSqlParser.KW_DISTINCT); - this.state = 6903; + this.state = 6901; this.match(PostgreSqlParser.KW_FROM); - this.state = 6904; + this.state = 6902; (localContext as DistinctFromContext)._right = this.valueExpression(0); } break; @@ -42075,7 +42322,7 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 6911; + this.state = 6909; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 947, this.context) ) { case 1: @@ -42084,7 +42331,7 @@ export class PostgreSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 6908; + this.state = 6906; this.primaryExpression(0); } break; @@ -42093,7 +42340,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ArithmeticUnaryContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 6909; + this.state = 6907; (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { @@ -42103,13 +42350,13 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6910; + this.state = 6908; this.valueExpression(4); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 6929; + this.state = 6927; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 949, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { @@ -42119,7 +42366,7 @@ export class PostgreSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 6927; + this.state = 6925; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 948, this.context) ) { case 1: @@ -42127,11 +42374,11 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); - this.state = 6913; + this.state = 6911; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 6914; + this.state = 6912; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 134234624) !== 0))) { @@ -42141,7 +42388,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6915; + this.state = 6913; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(4); } break; @@ -42150,11 +42397,11 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ArithmeticBinaryContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); - this.state = 6916; + this.state = 6914; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 6917; + this.state = 6915; (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { @@ -42164,7 +42411,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6918; + this.state = 6916; (localContext as ArithmeticBinaryContext)._right = this.valueExpression(3); } break; @@ -42173,13 +42420,13 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ConcatenationContext(new ValueExpressionContext(parentContext, parentState)); (localContext as ConcatenationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); - this.state = 6919; + this.state = 6917; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 6920; + this.state = 6918; this.match(PostgreSqlParser.CARET); - this.state = 6921; + this.state = 6919; (localContext as ConcatenationContext)._right = this.valueExpression(2); } break; @@ -42187,24 +42434,24 @@ export class PostgreSqlParser extends SQLParserBase { { localContext = new AtTimeZoneContext(new ValueExpressionContext(parentContext, parentState)); this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_valueExpression); - this.state = 6922; + this.state = 6920; if (!(this.precpred(this.context, 5))) { throw this.createFailedPredicateException("this.precpred(this.context, 5)"); } - this.state = 6923; + this.state = 6921; this.match(PostgreSqlParser.KW_AT); - this.state = 6924; + this.state = 6922; this.match(PostgreSqlParser.KW_TIME); - this.state = 6925; + this.state = 6923; this.match(PostgreSqlParser.KW_ZONE); - this.state = 6926; + this.state = 6924; this.expression(); } break; } } } - this.state = 6931; + this.state = 6929; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 949, this.context); } @@ -42243,12 +42490,12 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7020; + this.state = 7018; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 960, this.context) ) { case 1: { - this.state = 6933; + this.state = 6931; _la = this.tokenStream.LA(1); if(!(_la === 98 || _la === 396)) { this.errorHandler.recoverInline(this); @@ -42257,26 +42504,26 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 6934; + this.state = 6932; this.select_with_parens(); } break; case 2: { - this.state = 6935; + this.state = 6933; this.match(PostgreSqlParser.KW_ARRAY); - this.state = 6938; + this.state = 6936; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 6936; + this.state = 6934; this.select_with_parens(); } break; case PostgreSqlParser.OPEN_BRACKET: { - this.state = 6937; + this.state = 6935; this.array_expr(); } break; @@ -42287,49 +42534,49 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 6940; + this.state = 6938; this.match(PostgreSqlParser.PARAM); - this.state = 6941; + this.state = 6939; this.opt_indirection(); } break; case 4: { - this.state = 6942; + this.state = 6940; this.match(PostgreSqlParser.KW_GROUPING); - this.state = 6943; + this.state = 6941; this.execute_param_clause(); } break; case 5: { - this.state = 6944; + this.state = 6942; this.match(PostgreSqlParser.Integral); } break; case 6: { - this.state = 6945; + this.state = 6943; this.match(PostgreSqlParser.Numeric); } break; case 7: { - this.state = 6946; + this.state = 6944; this.match(PostgreSqlParser.BinaryStringConstant); } break; case 8: { - this.state = 6947; + this.state = 6945; this.match(PostgreSqlParser.HexadecimalStringConstant); } break; case 9: { - this.state = 6948; + this.state = 6946; this.function_name(); - this.state = 6958; + this.state = 6956; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -42337,29 +42584,29 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6949; + this.state = 6947; this.sconst(); } break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 6950; + this.state = 6948; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6951; + this.state = 6949; this.func_arg_list(); - this.state = 6953; + this.state = 6951; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 6952; + this.state = 6950; this.sort_clause(); } } - this.state = 6955; + this.state = 6953; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6956; + this.state = 6954; this.sconst(); } break; @@ -42370,25 +42617,25 @@ export class PostgreSqlParser extends SQLParserBase { break; case 10: { - this.state = 6961; + this.state = 6959; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 190 || ((((_la - 388)) & ~0x1F) === 0 && ((1 << (_la - 388)) & 3525731551) !== 0) || _la === 423) { { - this.state = 6960; + this.state = 6958; this.consttypename(); } } - this.state = 6963; + this.state = 6961; this.sconst(); } break; case 11: { - this.state = 6964; + this.state = 6962; this.match(PostgreSqlParser.KW_INTERVAL); - this.state = 6972; + this.state = 6970; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: @@ -42396,14 +42643,14 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.BeginDollarStringConstant: case PostgreSqlParser.EscapeStringConstant: { - this.state = 6965; + this.state = 6963; this.sconst(); - this.state = 6967; + this.state = 6965; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 954, this.context) ) { case 1: { - this.state = 6966; + this.state = 6964; this.opt_interval(); } break; @@ -42412,9 +42659,9 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.OPEN_PAREN: { - this.state = 6969; + this.state = 6967; this.opt_float(); - this.state = 6970; + this.state = 6968; this.sconst(); } break; @@ -42425,100 +42672,100 @@ export class PostgreSqlParser extends SQLParserBase { break; case 12: { - this.state = 6974; + this.state = 6972; this.match(PostgreSqlParser.KW_TRUE); } break; case 13: { - this.state = 6975; + this.state = 6973; this.match(PostgreSqlParser.KW_FALSE); } break; case 14: { - this.state = 6976; + this.state = 6974; this.match(PostgreSqlParser.KW_NULL); } break; case 15: { - this.state = 6977; + this.state = 6975; this.match(PostgreSqlParser.PLSQLVARIABLENAME); } break; case 16: { - this.state = 6978; + this.state = 6976; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 6979; + this.state = 6977; localContext._a_expr_in_parens = this.expression(); - this.state = 6980; + this.state = 6978; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 6981; + this.state = 6979; this.opt_indirection(); } break; case 17: { - this.state = 6983; + this.state = 6981; this.match(PostgreSqlParser.KW_CASE); - this.state = 6985; + this.state = 6983; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 6984; + this.state = 6982; this.expression(); } } - this.state = 6988; + this.state = 6986; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 6987; + this.state = 6985; this.when_clause(); } } - this.state = 6990; + this.state = 6988; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 102); - this.state = 6994; + this.state = 6992; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 58) { { - this.state = 6992; + this.state = 6990; this.match(PostgreSqlParser.KW_ELSE); - this.state = 6993; + this.state = 6991; this.expression(); } } - this.state = 6996; + this.state = 6994; this.match(PostgreSqlParser.KW_END); } break; case 18: { - this.state = 6998; + this.state = 6996; this.func_expr(); } break; case 19: { - this.state = 6999; + this.state = 6997; this.select_with_parens(); - this.state = 7001; + this.state = 6999; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 959, this.context) ) { case 1: { - this.state = 7000; + this.state = 6998; this.indirection(); } break; @@ -42527,43 +42774,43 @@ export class PostgreSqlParser extends SQLParserBase { break; case 20: { - this.state = 7003; + this.state = 7001; this.explicit_row(); } break; case 21: { - this.state = 7004; + this.state = 7002; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7005; + this.state = 7003; this.expression(); - this.state = 7006; + this.state = 7004; this.match(PostgreSqlParser.COMMA); - this.state = 7007; + this.state = 7005; this.expr_list(); - this.state = 7008; + this.state = 7006; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case 22: { - this.state = 7010; + this.state = 7008; this.row(); - this.state = 7011; + this.state = 7009; this.match(PostgreSqlParser.KW_OVERLAPS); - this.state = 7012; + this.state = 7010; this.row(); } break; case 23: { - this.state = 7014; + this.state = 7012; this.qualified_name(); } break; case 24: { - this.state = 7015; + this.state = 7013; _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { this.errorHandler.recoverInline(this); @@ -42572,21 +42819,21 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7016; + this.state = 7014; this.primaryExpression(5); } break; case 25: { - this.state = 7017; + this.state = 7015; this.qual_op(); - this.state = 7018; + this.state = 7016; this.primaryExpression(2); } break; } this.context!.stop = this.tokenStream.LT(-1); - this.state = 7049; + this.state = 7047; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 965, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { @@ -42596,20 +42843,20 @@ export class PostgreSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 7047; + this.state = 7045; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 964, this.context) ) { case 1: { localContext = new PrimaryExpressionContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); - this.state = 7022; + this.state = 7020; if (!(this.precpred(this.context, 3))) { throw this.createFailedPredicateException("this.precpred(this.context, 3)"); } - this.state = 7023; + this.state = 7021; this.mathop(); - this.state = 7024; + this.state = 7022; this.primaryExpression(4); } break; @@ -42617,13 +42864,13 @@ export class PostgreSqlParser extends SQLParserBase { { localContext = new PrimaryExpressionContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); - this.state = 7026; + this.state = 7024; if (!(this.precpred(this.context, 6))) { throw this.createFailedPredicateException("this.precpred(this.context, 6)"); } - this.state = 7027; + this.state = 7025; this.match(PostgreSqlParser.TYPECAST); - this.state = 7028; + this.state = 7026; this.typename(); } break; @@ -42631,18 +42878,18 @@ export class PostgreSqlParser extends SQLParserBase { { localContext = new PrimaryExpressionContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); - this.state = 7029; + this.state = 7027; if (!(this.precpred(this.context, 4))) { throw this.createFailedPredicateException("this.precpred(this.context, 4)"); } - this.state = 7030; + this.state = 7028; this.qual_op(); - this.state = 7032; + this.state = 7030; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 961, this.context) ) { case 1: { - this.state = 7031; + this.state = 7029; this.primaryExpression(0); } break; @@ -42653,46 +42900,46 @@ export class PostgreSqlParser extends SQLParserBase { { localContext = new PrimaryExpressionContext(parentContext, parentState); this.pushNewRecursionContext(localContext, _startState, PostgreSqlParser.RULE_primaryExpression); - this.state = 7034; + this.state = 7032; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 7035; + this.state = 7033; this.match(PostgreSqlParser.KW_IS); - this.state = 7037; + this.state = 7035; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 7036; + this.state = 7034; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 7045; + this.state = 7043; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_DISTINCT: { - this.state = 7039; + this.state = 7037; this.match(PostgreSqlParser.KW_DISTINCT); - this.state = 7040; + this.state = 7038; this.match(PostgreSqlParser.KW_FROM); - this.state = 7041; + this.state = 7039; this.primaryExpression(0); } break; case PostgreSqlParser.KW_OF: { - this.state = 7042; + this.state = 7040; this.match(PostgreSqlParser.KW_OF); - this.state = 7043; + this.state = 7041; this.prep_type_clause(); } break; case PostgreSqlParser.KW_DOCUMENT: { - this.state = 7044; + this.state = 7042; this.match(PostgreSqlParser.KW_DOCUMENT); } break; @@ -42704,7 +42951,7 @@ export class PostgreSqlParser extends SQLParserBase { } } } - this.state = 7051; + this.state = 7049; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 965, this.context); } @@ -42731,16 +42978,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7052; + this.state = 7050; this.function_name(); - this.state = 7078; + this.state = 7076; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 971, this.context) ) { case 1: { - this.state = 7053; + this.state = 7051; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7075; + this.state = 7073; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: @@ -42748,12 +42995,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.PARAM: case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: case PostgreSqlParser.KW_CASE: case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_CATALOG: case PostgreSqlParser.KW_CURRENT_DATE: case PostgreSqlParser.KW_CURRENT_ROLE: @@ -42761,9 +43005,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CURRENT_TIMESTAMP: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_LOCALTIME: case PostgreSqlParser.KW_LOCALTIMESTAMP: case PostgreSqlParser.KW_NOT: @@ -43174,6 +43416,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -43190,28 +43433,28 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7054; + this.state = 7052; this.func_arg_list(); - this.state = 7058; + this.state = 7056; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 7055; + this.state = 7053; this.match(PostgreSqlParser.COMMA); - this.state = 7056; + this.state = 7054; this.match(PostgreSqlParser.KW_VARIADIC); - this.state = 7057; + this.state = 7055; this.func_arg_expr(); } } - this.state = 7061; + this.state = 7059; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 7060; + this.state = 7058; this.sort_clause(); } } @@ -43220,16 +43463,16 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.KW_VARIADIC: { - this.state = 7063; + this.state = 7061; this.match(PostgreSqlParser.KW_VARIADIC); - this.state = 7064; + this.state = 7062; this.func_arg_expr(); - this.state = 7066; + this.state = 7064; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 7065; + this.state = 7063; this.sort_clause(); } } @@ -43239,7 +43482,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_ALL: case PostgreSqlParser.KW_DISTINCT: { - this.state = 7068; + this.state = 7066; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 56)) { this.errorHandler.recoverInline(this); @@ -43248,14 +43491,14 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7069; + this.state = 7067; this.func_arg_list(); - this.state = 7071; + this.state = 7069; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 7070; + this.state = 7068; this.sort_clause(); } } @@ -43264,7 +43507,7 @@ export class PostgreSqlParser extends SQLParserBase { break; case PostgreSqlParser.STAR: { - this.state = 7073; + this.state = 7071; this.match(PostgreSqlParser.STAR); } break; @@ -43276,7 +43519,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 7077; + this.state = 7075; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -43301,73 +43544,67 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Func_exprContext(this.context, this.state); this.enterRule(localContext, 686, PostgreSqlParser.RULE_func_expr); try { - this.state = 7105; + this.state = 7103; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 976, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7080; + this.state = 7078; this.func_application(); - this.state = 7087; + this.state = 7085; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 972, this.context) ) { case 1: { - this.state = 7081; + this.state = 7079; this.match(PostgreSqlParser.KW_WITHIN); - this.state = 7082; + this.state = 7080; this.match(PostgreSqlParser.KW_GROUP); - this.state = 7083; + this.state = 7081; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7084; + this.state = 7082; this.sort_clause(); - this.state = 7085; + this.state = 7083; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 7095; + this.state = 7093; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 973, this.context) ) { case 1: { - this.state = 7089; + this.state = 7087; this.match(PostgreSqlParser.KW_FILTER); - this.state = 7090; + this.state = 7088; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7091; + this.state = 7089; this.match(PostgreSqlParser.KW_WHERE); - this.state = 7092; + this.state = 7090; this.expression(); - this.state = 7093; + this.state = 7091; this.match(PostgreSqlParser.CLOSE_PAREN); } break; } - this.state = 7102; + this.state = 7100; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 975, this.context) ) { case 1: { - this.state = 7097; + this.state = 7095; this.match(PostgreSqlParser.KW_OVER); - this.state = 7100; + this.state = 7098; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 7098; + this.state = 7096; this.window_specification(); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -43749,6 +43986,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -43761,7 +43999,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7099; + this.state = 7097; this.colid(); } break; @@ -43776,7 +44014,7 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7104; + this.state = 7102; this.func_expr_common_subexpr(); } break; @@ -43800,20 +44038,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Func_expr_windowlessContext(this.context, this.state); this.enterRule(localContext, 688, PostgreSqlParser.RULE_func_expr_windowless); try { - this.state = 7109; + this.state = 7107; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 977, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7107; + this.state = 7105; this.func_application(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7108; + this.state = 7106; this.func_expr_common_subexpr(); } break; @@ -43838,28 +44076,28 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 690, PostgreSqlParser.RULE_func_expr_common_subexpr); let _la: number; try { - this.state = 7285; + this.state = 7283; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_COLLATION: this.enterOuterAlt(localContext, 1); { - this.state = 7111; + this.state = 7109; this.match(PostgreSqlParser.KW_COLLATION); - this.state = 7112; + this.state = 7110; this.match(PostgreSqlParser.KW_FOR); - this.state = 7113; + this.state = 7111; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7114; + this.state = 7112; this.expression(); - this.state = 7115; + this.state = 7113; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_CURRENT_DATE: this.enterOuterAlt(localContext, 2); { - this.state = 7117; + this.state = 7115; this.match(PostgreSqlParser.KW_CURRENT_DATE); } break; @@ -43869,7 +44107,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LOCALTIMESTAMP: this.enterOuterAlt(localContext, 3); { - this.state = 7118; + this.state = 7116; _la = this.tokenStream.LA(1); if(!(((((_la - 50)) & ~0x1F) === 0 && ((1 << (_la - 50)) & 100663299) !== 0))) { this.errorHandler.recoverInline(this); @@ -43878,12 +44116,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7120; + this.state = 7118; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 978, this.context) ) { case 1: { - this.state = 7119; + this.state = 7117; this.opt_float(); } break; @@ -43893,42 +44131,42 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CURRENT_ROLE: this.enterOuterAlt(localContext, 4); { - this.state = 7122; + this.state = 7120; this.match(PostgreSqlParser.KW_CURRENT_ROLE); } break; case PostgreSqlParser.KW_CURRENT_USER: this.enterOuterAlt(localContext, 5); { - this.state = 7123; + this.state = 7121; this.match(PostgreSqlParser.KW_CURRENT_USER); } break; case PostgreSqlParser.KW_SESSION_USER: this.enterOuterAlt(localContext, 6); { - this.state = 7124; + this.state = 7122; this.match(PostgreSqlParser.KW_SESSION_USER); } break; case PostgreSqlParser.KW_USER: this.enterOuterAlt(localContext, 7); { - this.state = 7125; + this.state = 7123; this.match(PostgreSqlParser.KW_USER); } break; case PostgreSqlParser.KW_CURRENT_CATALOG: this.enterOuterAlt(localContext, 8); { - this.state = 7126; + this.state = 7124; this.match(PostgreSqlParser.KW_CURRENT_CATALOG); } break; case PostgreSqlParser.KW_CURRENT_SCHEMA: this.enterOuterAlt(localContext, 9); { - this.state = 7127; + this.state = 7125; this.match(PostgreSqlParser.KW_CURRENT_SCHEMA); } break; @@ -43936,7 +44174,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_TREAT: this.enterOuterAlt(localContext, 10); { - this.state = 7128; + this.state = 7126; _la = this.tokenStream.LA(1); if(!(_la === 41 || _la === 420)) { this.errorHandler.recoverInline(this); @@ -43945,162 +44183,162 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7129; + this.state = 7127; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7130; + this.state = 7128; this.expression(); - this.state = 7131; + this.state = 7129; this.match(PostgreSqlParser.KW_AS); - this.state = 7132; + this.state = 7130; this.typename(); - this.state = 7133; + this.state = 7131; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_EXTRACT: this.enterOuterAlt(localContext, 11); { - this.state = 7135; + this.state = 7133; this.match(PostgreSqlParser.KW_EXTRACT); - this.state = 7136; + this.state = 7134; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7141; + this.state = 7139; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 8929553) !== 0) || ((((_la - 207)) & ~0x1F) === 0 && ((1 << (_la - 207)) & 2057) !== 0) || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 428867841) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1059905) !== 0) || _la === 360 || _la === 384 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0) || ((((_la - 549)) & ~0x1F) === 0 && ((1 << (_la - 549)) & 100674083) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 32767) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 4278187359) !== 0) || ((((_la - 497)) & ~0x1F) === 0 && ((1 << (_la - 497)) & 146800319) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 7137; + this.state = 7135; this.extract_arg(); - this.state = 7138; + this.state = 7136; this.match(PostgreSqlParser.KW_FROM); - this.state = 7139; + this.state = 7137; this.expression(); } } - this.state = 7143; + this.state = 7141; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_NORMALIZE: this.enterOuterAlt(localContext, 12); { - this.state = 7144; + this.state = 7142; this.match(PostgreSqlParser.KW_NORMALIZE); - this.state = 7145; + this.state = 7143; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7146; + this.state = 7144; this.expression(); - this.state = 7149; + this.state = 7147; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 7147; + this.state = 7145; this.match(PostgreSqlParser.COMMA); - this.state = 7148; + this.state = 7146; this.unicode_normal_form(); } } - this.state = 7151; + this.state = 7149; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_OVERLAY: this.enterOuterAlt(localContext, 13); { - this.state = 7153; + this.state = 7151; this.match(PostgreSqlParser.KW_OVERLAY); - this.state = 7154; + this.state = 7152; this.match(PostgreSqlParser.OPEN_PAREN); { - this.state = 7155; + this.state = 7153; this.expression(); - this.state = 7156; + this.state = 7154; this.match(PostgreSqlParser.KW_PLACING); - this.state = 7157; + this.state = 7155; this.expression(); - this.state = 7158; + this.state = 7156; this.match(PostgreSqlParser.KW_FROM); - this.state = 7159; + this.state = 7157; this.expression(); - this.state = 7162; + this.state = 7160; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 7160; + this.state = 7158; this.match(PostgreSqlParser.KW_FOR); - this.state = 7161; + this.state = 7159; this.expression(); } } } - this.state = 7164; + this.state = 7162; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_POSITION: this.enterOuterAlt(localContext, 14); { - this.state = 7166; + this.state = 7164; this.match(PostgreSqlParser.KW_POSITION); - this.state = 7167; + this.state = 7165; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7172; + this.state = 7170; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763019) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763019) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7168; + this.state = 7166; this.primaryExpression(0); - this.state = 7169; + this.state = 7167; this.match(PostgreSqlParser.KW_IN); - this.state = 7170; + this.state = 7168; this.primaryExpression(0); } } - this.state = 7174; + this.state = 7172; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_SUBSTRING: this.enterOuterAlt(localContext, 15); { - this.state = 7175; + this.state = 7173; this.match(PostgreSqlParser.KW_SUBSTRING); - this.state = 7176; + this.state = 7174; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7178; + this.state = 7176; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7177; + this.state = 7175; this.substr_list(); } } - this.state = 7180; + this.state = 7178; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_TRIM: this.enterOuterAlt(localContext, 16); { - this.state = 7181; + this.state = 7179; this.match(PostgreSqlParser.KW_TRIM); - this.state = 7182; + this.state = 7180; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7184; + this.state = 7182; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 39 || _la === 73 || _la === 95) { { - this.state = 7183; + this.state = 7181; _la = this.tokenStream.LA(1); if(!(_la === 39 || _la === 73 || _la === 95)) { this.errorHandler.recoverInline(this); @@ -44113,47 +44351,47 @@ export class PostgreSqlParser extends SQLParserBase { } { - this.state = 7190; + this.state = 7188; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 986, this.context) ) { case 1: { - this.state = 7187; + this.state = 7185; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7186; + this.state = 7184; this.expression(); } } - this.state = 7189; + this.state = 7187; this.match(PostgreSqlParser.KW_FROM); } break; } - this.state = 7192; + this.state = 7190; this.expr_list(); } - this.state = 7194; + this.state = 7192; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_NULLIF: this.enterOuterAlt(localContext, 17); { - this.state = 7196; + this.state = 7194; this.match(PostgreSqlParser.KW_NULLIF); - this.state = 7197; + this.state = 7195; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7198; + this.state = 7196; this.expression(); - this.state = 7199; + this.state = 7197; this.match(PostgreSqlParser.COMMA); - this.state = 7200; + this.state = 7198; this.expression(); - this.state = 7201; + this.state = 7199; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -44163,7 +44401,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_XMLCONCAT: this.enterOuterAlt(localContext, 18); { - this.state = 7203; + this.state = 7201; _la = this.tokenStream.LA(1); if(!(((((_la - 393)) & ~0x1F) === 0 && ((1 << (_la - 393)) & 2113) !== 0) || _la === 425)) { this.errorHandler.recoverInline(this); @@ -44172,48 +44410,48 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7204; + this.state = 7202; this.execute_param_clause(); } break; case PostgreSqlParser.KW_XMLELEMENT: this.enterOuterAlt(localContext, 19); { - this.state = 7205; + this.state = 7203; this.match(PostgreSqlParser.KW_XMLELEMENT); - this.state = 7206; + this.state = 7204; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7207; + this.state = 7205; this.match(PostgreSqlParser.KW_NAME); - this.state = 7208; + this.state = 7206; this.collabel(); - this.state = 7218; + this.state = 7216; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 7209; + this.state = 7207; this.match(PostgreSqlParser.COMMA); - this.state = 7216; + this.state = 7214; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 987, this.context) ) { case 1: { { - this.state = 7210; + this.state = 7208; this.match(PostgreSqlParser.KW_XMLATTRIBUTES); - this.state = 7211; + this.state = 7209; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7212; + this.state = 7210; this.xml_attribute_list(); - this.state = 7213; + this.state = 7211; this.match(PostgreSqlParser.CLOSE_PAREN); } } break; case 2: { - this.state = 7215; + this.state = 7213; this.expr_list(); } break; @@ -44221,55 +44459,55 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 7220; + this.state = 7218; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLEXISTS: this.enterOuterAlt(localContext, 20); { - this.state = 7222; + this.state = 7220; this.match(PostgreSqlParser.KW_XMLEXISTS); - this.state = 7223; + this.state = 7221; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7224; + this.state = 7222; this.primaryExpression(0); - this.state = 7225; + this.state = 7223; this.xmlexists_argument(); - this.state = 7226; + this.state = 7224; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLFOREST: this.enterOuterAlt(localContext, 21); { - this.state = 7228; + this.state = 7226; this.match(PostgreSqlParser.KW_XMLFOREST); - this.state = 7229; + this.state = 7227; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7230; + this.state = 7228; this.xml_attribute_list(); - this.state = 7231; + this.state = 7229; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLPARSE: this.enterOuterAlt(localContext, 22); { - this.state = 7233; + this.state = 7231; this.match(PostgreSqlParser.KW_XMLPARSE); - this.state = 7234; + this.state = 7232; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7235; + this.state = 7233; this.document_or_content(); - this.state = 7236; + this.state = 7234; this.expression(); - this.state = 7239; + this.state = 7237; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 292 || _la === 347) { { - this.state = 7237; + this.state = 7235; _la = this.tokenStream.LA(1); if(!(_la === 292 || _la === 347)) { this.errorHandler.recoverInline(this); @@ -44278,111 +44516,111 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7238; + this.state = 7236; this.match(PostgreSqlParser.KW_WHITESPACE); } } - this.state = 7241; + this.state = 7239; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLPI: this.enterOuterAlt(localContext, 23); { - this.state = 7243; + this.state = 7241; this.match(PostgreSqlParser.KW_XMLPI); - this.state = 7244; + this.state = 7242; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7245; + this.state = 7243; this.match(PostgreSqlParser.KW_NAME); - this.state = 7246; + this.state = 7244; this.collabel(); - this.state = 7249; + this.state = 7247; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 7247; + this.state = 7245; this.match(PostgreSqlParser.COMMA); - this.state = 7248; + this.state = 7246; this.expression(); } } - this.state = 7251; + this.state = 7249; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLROOT: this.enterOuterAlt(localContext, 24); { - this.state = 7253; + this.state = 7251; this.match(PostgreSqlParser.KW_XMLROOT); - this.state = 7254; + this.state = 7252; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7255; + this.state = 7253; this.match(PostgreSqlParser.KW_XML); - this.state = 7256; + this.state = 7254; this.expression(); - this.state = 7257; + this.state = 7255; this.match(PostgreSqlParser.COMMA); - this.state = 7258; + this.state = 7256; this.match(PostgreSqlParser.KW_VERSION); - this.state = 7262; + this.state = 7260; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 991, this.context) ) { case 1: { { - this.state = 7259; + this.state = 7257; this.match(PostgreSqlParser.KW_NO); - this.state = 7260; + this.state = 7258; this.match(PostgreSqlParser.KW_VALUE); } } break; case 2: { - this.state = 7261; + this.state = 7259; this.expression(); } break; } - this.state = 7273; + this.state = 7271; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 7264; + this.state = 7262; this.match(PostgreSqlParser.COMMA); - this.state = 7265; + this.state = 7263; this.match(PostgreSqlParser.KW_STANDALONE); - this.state = 7271; + this.state = 7269; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_NO: case PostgreSqlParser.KW_VALUE: { { - this.state = 7267; + this.state = 7265; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 7266; + this.state = 7264; this.match(PostgreSqlParser.KW_NO); } } - this.state = 7269; + this.state = 7267; this.match(PostgreSqlParser.KW_VALUE); } } break; case PostgreSqlParser.KW_YES: { - this.state = 7270; + this.state = 7268; this.match(PostgreSqlParser.KW_YES); } break; @@ -44392,26 +44630,26 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 7275; + this.state = 7273; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_XMLSERIALIZE: this.enterOuterAlt(localContext, 25); { - this.state = 7277; + this.state = 7275; this.match(PostgreSqlParser.KW_XMLSERIALIZE); - this.state = 7278; + this.state = 7276; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7279; + this.state = 7277; this.document_or_content(); - this.state = 7280; + this.state = 7278; this.expression(); - this.state = 7281; + this.state = 7279; this.match(PostgreSqlParser.KW_AS); - this.state = 7282; + this.state = 7280; this.simpletypename(); - this.state = 7283; + this.state = 7281; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -44440,21 +44678,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7287; + this.state = 7285; this.xml_attribute_el(); - this.state = 7292; + this.state = 7290; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7288; + this.state = 7286; this.match(PostgreSqlParser.COMMA); - this.state = 7289; + this.state = 7287; this.xml_attribute_el(); } } - this.state = 7294; + this.state = 7292; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -44481,16 +44719,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7295; + this.state = 7293; this.expression(); - this.state = 7298; + this.state = 7296; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 7296; + this.state = 7294; this.match(PostgreSqlParser.KW_AS); - this.state = 7297; + this.state = 7295; this.collabel(); } } @@ -44518,7 +44756,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7300; + this.state = 7298; _la = this.tokenStream.LA(1); if(!(_la === 166 || _la === 188)) { this.errorHandler.recoverInline(this); @@ -44550,26 +44788,26 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7302; + this.state = 7300; this.match(PostgreSqlParser.KW_PASSING); - this.state = 7304; + this.state = 7302; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 998, this.context) ) { case 1: { - this.state = 7303; + this.state = 7301; this.xml_passing_mech(); } break; } - this.state = 7306; + this.state = 7304; this.primaryExpression(0); - this.state = 7308; + this.state = 7306; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 7307; + this.state = 7305; this.xml_passing_mech(); } } @@ -44597,9 +44835,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7310; + this.state = 7308; this.match(PostgreSqlParser.KW_BY); - this.state = 7311; + this.state = 7309; _la = this.tokenStream.LA(1); if(!(_la === 304 || _la === 450)) { this.errorHandler.recoverInline(this); @@ -44631,25 +44869,25 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7313; + this.state = 7311; this.match(PostgreSqlParser.KW_WINDOW); - this.state = 7314; + this.state = 7312; this.window_definition(); - this.state = 7319; + this.state = 7317; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1000, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7315; + this.state = 7313; this.match(PostgreSqlParser.COMMA); - this.state = 7316; + this.state = 7314; this.window_definition(); } } } - this.state = 7321; + this.state = 7319; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1000, this.context); } @@ -44675,11 +44913,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7322; + this.state = 7320; this.colid(); - this.state = 7323; + this.state = 7321; this.match(PostgreSqlParser.KW_AS); - this.state = 7324; + this.state = 7322; this.window_specification(); } } @@ -44703,24 +44941,18 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7326; + this.state = 7324; this.match(PostgreSqlParser.KW_OVER); - this.state = 7329; + this.state = 7327; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: { - this.state = 7327; + this.state = 7325; this.window_specification(); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -45102,6 +45334,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -45114,7 +45347,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7328; + this.state = 7326; this.colid(); } break; @@ -45144,53 +45377,53 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7331; + this.state = 7329; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7333; + this.state = 7331; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1002, this.context) ) { case 1: { - this.state = 7332; + this.state = 7330; this.colid(); } break; } - this.state = 7338; + this.state = 7336; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 285) { { - this.state = 7335; + this.state = 7333; this.match(PostgreSqlParser.KW_PARTITION); - this.state = 7336; + this.state = 7334; this.match(PostgreSqlParser.KW_BY); - this.state = 7337; + this.state = 7335; this.expr_list(); } } - this.state = 7341; + this.state = 7339; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 83) { { - this.state = 7340; + this.state = 7338; this.sort_clause(); } } - this.state = 7344; + this.state = 7342; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 299 || _la === 320 || _la === 481) { { - this.state = 7343; + this.state = 7341; this.opt_frame_clause(); } } - this.state = 7346; + this.state = 7344; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -45215,7 +45448,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7348; + this.state = 7346; _la = this.tokenStream.LA(1); if(!(_la === 299 || _la === 320 || _la === 481)) { this.errorHandler.recoverInline(this); @@ -45225,58 +45458,58 @@ export class PostgreSqlParser extends SQLParserBase { this.consume(); } { - this.state = 7353; + this.state = 7351; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1006, this.context) ) { case 1: { - this.state = 7349; + this.state = 7347; this.match(PostgreSqlParser.KW_BETWEEN); - this.state = 7350; + this.state = 7348; this.frame_bound(); - this.state = 7351; + this.state = 7349; this.match(PostgreSqlParser.KW_AND); } break; } - this.state = 7355; + this.state = 7353; this.frame_bound(); } - this.state = 7366; + this.state = 7364; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 199) { { - this.state = 7357; + this.state = 7355; this.match(PostgreSqlParser.KW_EXCLUDE); - this.state = 7364; + this.state = 7362; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CURRENT: { - this.state = 7358; + this.state = 7356; this.match(PostgreSqlParser.KW_CURRENT); - this.state = 7359; + this.state = 7357; this.match(PostgreSqlParser.KW_ROW); } break; case PostgreSqlParser.KW_GROUP: { - this.state = 7360; + this.state = 7358; this.match(PostgreSqlParser.KW_GROUP); } break; case PostgreSqlParser.KW_TIES: { - this.state = 7361; + this.state = 7359; this.match(PostgreSqlParser.KW_TIES); } break; case PostgreSqlParser.KW_NO: { - this.state = 7362; + this.state = 7360; this.match(PostgreSqlParser.KW_NO); - this.state = 7363; + this.state = 7361; this.match(PostgreSqlParser.KW_OTHERS); } break; @@ -45307,29 +45540,29 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 712, PostgreSqlParser.RULE_frame_bound); let _la: number; try { - this.state = 7375; + this.state = 7373; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1010, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7370; + this.state = 7368; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1009, this.context) ) { case 1: { - this.state = 7368; + this.state = 7366; this.match(PostgreSqlParser.KW_UNBOUNDED); } break; case 2: { - this.state = 7369; + this.state = 7367; this.expression(); } break; } - this.state = 7372; + this.state = 7370; _la = this.tokenStream.LA(1); if(!(_la === 208 || _la === 289)) { this.errorHandler.recoverInline(this); @@ -45343,9 +45576,9 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7373; + this.state = 7371; this.match(PostgreSqlParser.KW_CURRENT); - this.state = 7374; + this.state = 7372; this.match(PostgreSqlParser.KW_ROW); } break; @@ -45369,28 +45602,28 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new RowContext(this.context, this.state); this.enterRule(localContext, 714, PostgreSqlParser.RULE_row); try { - this.state = 7384; + this.state = 7382; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ROW: this.enterOuterAlt(localContext, 1); { - this.state = 7377; + this.state = 7375; this.explicit_row(); } break; case PostgreSqlParser.OPEN_PAREN: this.enterOuterAlt(localContext, 2); { - this.state = 7378; + this.state = 7376; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7379; + this.state = 7377; this.expr_list(); - this.state = 7380; + this.state = 7378; this.match(PostgreSqlParser.COMMA); - this.state = 7381; + this.state = 7379; this.expression(); - this.state = 7382; + this.state = 7380; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -45419,21 +45652,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7386; + this.state = 7384; this.match(PostgreSqlParser.KW_ROW); - this.state = 7387; + this.state = 7385; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7389; + this.state = 7387; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7388; + this.state = 7386; this.expr_list(); } } - this.state = 7391; + this.state = 7389; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -45458,7 +45691,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7393; + this.state = 7391; _la = this.tokenStream.LA(1); if(!(_la === 30 || _la === 34 || _la === 90)) { this.errorHandler.recoverInline(this); @@ -45487,13 +45720,13 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new All_opContext(this.context, this.state); this.enterRule(localContext, 720, PostgreSqlParser.RULE_all_op); try { - this.state = 7397; + this.state = 7395; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.Operator: this.enterOuterAlt(localContext, 1); { - this.state = 7395; + this.state = 7393; this.match(PostgreSqlParser.Operator); } break; @@ -45511,7 +45744,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PERCENT: this.enterOuterAlt(localContext, 2); { - this.state = 7396; + this.state = 7394; this.mathop(); } break; @@ -45540,7 +45773,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7399; + this.state = 7397; _la = this.tokenStream.LA(1); if(!((((_la) & ~0x1F) === 0 && ((1 << _la) & 178517504) !== 0))) { this.errorHandler.recoverInline(this); @@ -45569,26 +45802,26 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Qual_opContext(this.context, this.state); this.enterRule(localContext, 724, PostgreSqlParser.RULE_qual_op); try { - this.state = 7407; + this.state = 7405; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.Operator: this.enterOuterAlt(localContext, 1); { - this.state = 7401; + this.state = 7399; this.match(PostgreSqlParser.Operator); } break; case PostgreSqlParser.KW_OPERATOR: this.enterOuterAlt(localContext, 2); { - this.state = 7402; + this.state = 7400; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7403; + this.state = 7401; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7404; + this.state = 7402; this.any_operator(); - this.state = 7405; + this.state = 7403; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -45614,7 +45847,7 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Qual_all_opContext(this.context, this.state); this.enterRule(localContext, 726, PostgreSqlParser.RULE_qual_all_op); try { - this.state = 7415; + this.state = 7413; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.STAR: @@ -45632,20 +45865,20 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.Operator: this.enterOuterAlt(localContext, 1); { - this.state = 7409; + this.state = 7407; this.all_op(); } break; case PostgreSqlParser.KW_OPERATOR: this.enterOuterAlt(localContext, 2); { - this.state = 7410; + this.state = 7408; this.match(PostgreSqlParser.KW_OPERATOR); - this.state = 7411; + this.state = 7409; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7412; + this.state = 7410; this.any_operator(); - this.state = 7413; + this.state = 7411; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -45672,7 +45905,7 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 728, PostgreSqlParser.RULE_subquery_Op); let _la: number; try { - this.state = 7422; + this.state = 7420; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.STAR: @@ -45691,7 +45924,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_OPERATOR: this.enterOuterAlt(localContext, 1); { - this.state = 7417; + this.state = 7415; this.qual_all_op(); } break; @@ -45700,17 +45933,17 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_LIKE: this.enterOuterAlt(localContext, 2); { - this.state = 7419; + this.state = 7417; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 7418; + this.state = 7416; this.match(PostgreSqlParser.KW_NOT); } } - this.state = 7421; + this.state = 7419; _la = this.tokenStream.LA(1); if(!(_la === 114 || _la === 120)) { this.errorHandler.recoverInline(this); @@ -45746,23 +45979,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7424; + this.state = 7422; this.expression(); - this.state = 7429; + this.state = 7427; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7425; + this.state = 7423; this.match(PostgreSqlParser.COMMA); - this.state = 7426; + this.state = 7424; this.expression(); } } } - this.state = 7431; + this.state = 7429; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1018, this.context); } @@ -45786,18 +46019,18 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Column_exprContext(this.context, this.state); this.enterRule(localContext, 732, PostgreSqlParser.RULE_column_expr); try { - this.state = 7437; + this.state = 7435; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1019, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { { - this.state = 7432; + this.state = 7430; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7433; + this.state = 7431; this.expression(); - this.state = 7434; + this.state = 7432; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -45805,7 +46038,7 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7436; + this.state = 7434; this.column_name(); } break; @@ -45829,20 +46062,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Column_expr_noparenContext(this.context, this.state); this.enterRule(localContext, 734, PostgreSqlParser.RULE_column_expr_noparen); try { - this.state = 7441; + this.state = 7439; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1020, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7439; + this.state = 7437; this.expression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7440; + this.state = 7438; this.column_name(); } break; @@ -45869,23 +46102,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7443; + this.state = 7441; this.func_arg_expr(); - this.state = 7448; + this.state = 7446; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1021, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7444; + this.state = 7442; this.match(PostgreSqlParser.COMMA); - this.state = 7445; + this.state = 7443; this.func_arg_expr(); } } } - this.state = 7450; + this.state = 7448; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1021, this.context); } @@ -45910,22 +46143,22 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 738, PostgreSqlParser.RULE_func_arg_expr); let _la: number; try { - this.state = 7456; + this.state = 7454; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1022, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7451; + this.state = 7449; this.expression(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7452; + this.state = 7450; this.type_function_name(); - this.state = 7453; + this.state = 7451; _la = this.tokenStream.LA(1); if(!(_la === 20 || _la === 22)) { this.errorHandler.recoverInline(this); @@ -45934,7 +46167,7 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7454; + this.state = 7452; this.expression(); } break; @@ -45961,9 +46194,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7458; + this.state = 7456; this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 7468; + this.state = 7466; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: @@ -45971,12 +46204,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.MINUS: case PostgreSqlParser.PARAM: case PostgreSqlParser.Operator: - case PostgreSqlParser.KW_AND: case PostgreSqlParser.KW_ARRAY: case PostgreSqlParser.KW_CASE: case PostgreSqlParser.KW_CAST: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_CURRENT_CATALOG: case PostgreSqlParser.KW_CURRENT_DATE: case PostgreSqlParser.KW_CURRENT_ROLE: @@ -45984,9 +46214,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_CURRENT_TIMESTAMP: case PostgreSqlParser.KW_CURRENT_USER: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: case PostgreSqlParser.KW_FALSE: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_LOCALTIME: case PostgreSqlParser.KW_LOCALTIMESTAMP: case PostgreSqlParser.KW_NOT: @@ -46397,6 +46625,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -46413,28 +46642,28 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7459; + this.state = 7457; this.expr_list(); } break; case PostgreSqlParser.OPEN_BRACKET: { { - this.state = 7460; + this.state = 7458; this.array_expr(); - this.state = 7465; + this.state = 7463; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7461; + this.state = 7459; this.match(PostgreSqlParser.COMMA); - this.state = 7462; + this.state = 7460; this.array_expr(); } } - this.state = 7467; + this.state = 7465; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -46446,7 +46675,7 @@ export class PostgreSqlParser extends SQLParserBase { default: break; } - this.state = 7470; + this.state = 7468; this.match(PostgreSqlParser.CLOSE_BRACKET); } } @@ -46468,62 +46697,62 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Extract_argContext(this.context, this.state); this.enterRule(localContext, 742, PostgreSqlParser.RULE_extract_arg); try { - this.state = 7480; + this.state = 7478; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1025, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7472; + this.state = 7470; this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7473; + this.state = 7471; this.match(PostgreSqlParser.KW_YEAR); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7474; + this.state = 7472; this.match(PostgreSqlParser.KW_MONTH); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7475; + this.state = 7473; this.match(PostgreSqlParser.KW_DAY); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7476; + this.state = 7474; this.match(PostgreSqlParser.KW_HOUR); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7477; + this.state = 7475; this.match(PostgreSqlParser.KW_MINUTE); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 7478; + this.state = 7476; this.match(PostgreSqlParser.KW_SECOND); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 7479; + this.state = 7477; this.sconst(); } break; @@ -46550,7 +46779,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7482; + this.state = 7480; _la = this.tokenStream.LA(1); if(!(((((_la - 483)) & ~0x1F) === 0 && ((1 << (_la - 483)) & 15) !== 0))) { this.errorHandler.recoverInline(this); @@ -46580,26 +46809,26 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 746, PostgreSqlParser.RULE_substr_list); let _la: number; try { - this.state = 7505; + this.state = 7503; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1028, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7484; + this.state = 7482; this.expression(); - this.state = 7485; + this.state = 7483; this.match(PostgreSqlParser.KW_FROM); - this.state = 7486; + this.state = 7484; this.expression(); - this.state = 7489; + this.state = 7487; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 62) { { - this.state = 7487; + this.state = 7485; this.match(PostgreSqlParser.KW_FOR); - this.state = 7488; + this.state = 7486; this.expression(); } } @@ -46609,20 +46838,20 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7491; + this.state = 7489; this.expression(); - this.state = 7492; + this.state = 7490; this.match(PostgreSqlParser.KW_FOR); - this.state = 7493; + this.state = 7491; this.expression(); - this.state = 7496; + this.state = 7494; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64) { { - this.state = 7494; + this.state = 7492; this.match(PostgreSqlParser.KW_FROM); - this.state = 7495; + this.state = 7493; this.expression(); } } @@ -46632,22 +46861,22 @@ export class PostgreSqlParser extends SQLParserBase { case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7498; + this.state = 7496; this.expression(); - this.state = 7499; + this.state = 7497; this.match(PostgreSqlParser.KW_SIMILAR); - this.state = 7500; + this.state = 7498; this.expression(); - this.state = 7501; + this.state = 7499; this.match(PostgreSqlParser.KW_ESCAPE); - this.state = 7502; + this.state = 7500; this.expression(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7504; + this.state = 7502; this.expr_list(); } break; @@ -46673,13 +46902,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7507; + this.state = 7505; this.match(PostgreSqlParser.KW_WHEN); - this.state = 7508; + this.state = 7506; this.expression(); - this.state = 7509; + this.state = 7507; this.match(PostgreSqlParser.KW_THEN); - this.state = 7510; + this.state = 7508; this.expression(); } } @@ -46702,15 +46931,15 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 750, PostgreSqlParser.RULE_indirection_el); let _la: number; try { - this.state = 7529; + this.state = 7527; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.DOT: this.enterOuterAlt(localContext, 1); { - this.state = 7512; + this.state = 7510; this.match(PostgreSqlParser.DOT); - this.state = 7515; + this.state = 7513; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_ALL: @@ -47191,6 +47420,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -47203,13 +47433,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7513; + this.state = 7511; this.collabel(); } break; case PostgreSqlParser.STAR: { - this.state = 7514; + this.state = 7512; this.match(PostgreSqlParser.STAR); } break; @@ -47221,37 +47451,37 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.OPEN_BRACKET: this.enterOuterAlt(localContext, 2); { - this.state = 7517; + this.state = 7515; this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 7526; + this.state = 7524; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1032, this.context) ) { case 1: { - this.state = 7518; + this.state = 7516; this.expression(); } break; case 2: { - this.state = 7520; + this.state = 7518; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7519; + this.state = 7517; this.expression(); } } - this.state = 7522; + this.state = 7520; this.match(PostgreSqlParser.COLON); - this.state = 7524; + this.state = 7522; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7523; + this.state = 7521; this.expression(); } } @@ -47259,7 +47489,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 7528; + this.state = 7526; this.match(PostgreSqlParser.CLOSE_BRACKET); } break; @@ -47288,7 +47518,7 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7532; + this.state = 7530; this.errorHandler.sync(this); alternative = 1; do { @@ -47296,7 +47526,7 @@ export class PostgreSqlParser extends SQLParserBase { case 1: { { - this.state = 7531; + this.state = 7529; this.indirection_el(); } } @@ -47304,7 +47534,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 7534; + this.state = 7532; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1034, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -47331,19 +47561,19 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7539; + this.state = 7537; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1035, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7536; + this.state = 7534; this.indirection_el(); } } } - this.state = 7541; + this.state = 7539; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1035, this.context); } @@ -47370,23 +47600,23 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7542; + this.state = 7540; this.target_el(); - this.state = 7547; + this.state = 7545; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1036, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7543; + this.state = 7541; this.match(PostgreSqlParser.COMMA); - this.state = 7544; + this.state = 7542; this.target_el(); } } } - this.state = 7549; + this.state = 7547; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1036, this.context); } @@ -47410,29 +47640,29 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Target_elContext(this.context, this.state); this.enterRule(localContext, 758, PostgreSqlParser.RULE_target_el); try { - this.state = 7558; + this.state = 7556; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1038, this.context) ) { case 1: localContext = new Target_labelContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7550; + this.state = 7548; this.column_expr_noparen(); - this.state = 7555; + this.state = 7553; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1037, this.context) ) { case 1: { - this.state = 7551; + this.state = 7549; this.match(PostgreSqlParser.KW_AS); - this.state = 7552; + this.state = 7550; this.collabel(); } break; case 2: { - this.state = 7553; + this.state = 7551; this.identifier(); } break; @@ -47448,7 +47678,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new Target_starContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7557; + this.state = 7555; this.match(PostgreSqlParser.STAR); } break; @@ -47475,21 +47705,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7560; + this.state = 7558; this.qualified_name(); - this.state = 7565; + this.state = 7563; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7561; + this.state = 7559; this.match(PostgreSqlParser.COMMA); - this.state = 7562; + this.state = 7560; this.qualified_name(); } } - this.state = 7567; + this.state = 7565; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47516,21 +47746,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7568; + this.state = 7566; this.table_name(); - this.state = 7573; + this.state = 7571; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7569; + this.state = 7567; this.match(PostgreSqlParser.COMMA); - this.state = 7570; + this.state = 7568; this.table_name(); } } - this.state = 7575; + this.state = 7573; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47557,21 +47787,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7576; + this.state = 7574; this.schema_name(); - this.state = 7581; + this.state = 7579; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7577; + this.state = 7575; this.match(PostgreSqlParser.COMMA); - this.state = 7578; + this.state = 7576; this.schema_name(); } } - this.state = 7583; + this.state = 7581; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47598,21 +47828,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7584; + this.state = 7582; this.database_name(); - this.state = 7589; + this.state = 7587; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7585; + this.state = 7583; this.match(PostgreSqlParser.COMMA); - this.state = 7586; + this.state = 7584; this.database_name(); } } - this.state = 7591; + this.state = 7589; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47639,7 +47869,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new TablespaceNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7592; + this.state = 7590; this.qualified_name(); } } @@ -47664,7 +47894,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new TablespaceNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7594; + this.state = 7592; this.qualified_name(); } } @@ -47689,7 +47919,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new TableNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7596; + this.state = 7594; this.qualified_name(); } } @@ -47714,7 +47944,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new TableNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7598; + this.state = 7596; this.qualified_name(); } } @@ -47739,7 +47969,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ViewNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7600; + this.state = 7598; this.qualified_name(); } } @@ -47764,7 +47994,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ViewNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7602; + this.state = 7600; this.any_name(); } } @@ -47788,14 +48018,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7604; + this.state = 7602; this.colid(); - this.state = 7606; + this.state = 7604; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1043, this.context) ) { case 1: { - this.state = 7605; + this.state = 7603; this.indirection(); } break; @@ -47823,21 +48053,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7608; + this.state = 7606; this.tablespace_name(); - this.state = 7613; + this.state = 7611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7609; + this.state = 7607; this.match(PostgreSqlParser.COMMA); - this.state = 7610; + this.state = 7608; this.tablespace_name(); } } - this.state = 7615; + this.state = 7613; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47864,21 +48094,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7616; + this.state = 7614; this.colid(); - this.state = 7621; + this.state = 7619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7617; + this.state = 7615; this.match(PostgreSqlParser.COMMA); - this.state = 7618; + this.state = 7616; this.colid(); } } - this.state = 7623; + this.state = 7621; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -47905,7 +48135,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new DatabaseNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7624; + this.state = 7622; this.any_name(); } } @@ -47930,7 +48160,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new DatabaseNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7626; + this.state = 7624; this.any_name(); } } @@ -47955,7 +48185,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new SchemaNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7628; + this.state = 7626; this.any_name(); } } @@ -47980,7 +48210,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new RoutineNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7630; + this.state = 7628; this.colid(); } } @@ -48005,7 +48235,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new RoutineNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7632; + this.state = 7630; this.colid(); } } @@ -48027,14 +48257,14 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Procedure_nameContext(this.context, this.state); this.enterRule(localContext, 796, PostgreSqlParser.RULE_procedure_name); try { - this.state = 7638; + this.state = 7636; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1046, this.context) ) { case 1: localContext = new ProcedureNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7634; + this.state = 7632; this.type_function_name(); } break; @@ -48042,9 +48272,9 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ProcedureNameContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7635; + this.state = 7633; this.colid(); - this.state = 7636; + this.state = 7634; this.indirection(); } break; @@ -48068,14 +48298,14 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Procedure_name_createContext(this.context, this.state); this.enterRule(localContext, 798, PostgreSqlParser.RULE_procedure_name_create); try { - this.state = 7644; + this.state = 7642; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1047, this.context) ) { case 1: localContext = new ProcedureNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7640; + this.state = 7638; this.type_function_name(); } break; @@ -48083,9 +48313,9 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ProcedureNameCreateContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7641; + this.state = 7639; this.colid(); - this.state = 7642; + this.state = 7640; this.indirection(); } break; @@ -48109,16 +48339,16 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Column_nameContext(this.context, this.state); this.enterRule(localContext, 800, PostgreSqlParser.RULE_column_name); try { - this.state = 7650; + this.state = 7648; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1048, this.context) ) { case 1: localContext = new ColumnNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7646; + this.state = 7644; this.colid(); - this.state = 7647; + this.state = 7645; this.opt_indirection(); } break; @@ -48126,7 +48356,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ColumnNameMatchContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7649; + this.state = 7647; if (!(this.shouldMatchEmpty())) { throw this.createFailedPredicateException("this.shouldMatchEmpty()"); } @@ -48155,7 +48385,7 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new ColumnNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7652; + this.state = 7650; this.colid(); } } @@ -48177,14 +48407,14 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Function_name_createContext(this.context, this.state); this.enterRule(localContext, 804, PostgreSqlParser.RULE_function_name_create); try { - this.state = 7658; + this.state = 7656; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1049, this.context) ) { case 1: localContext = new FunctionNameCreateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7654; + this.state = 7652; this.type_function_name(); } break; @@ -48192,9 +48422,9 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new FunctionNameCreateContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7655; + this.state = 7653; this.colid(); - this.state = 7656; + this.state = 7654; this.indirection(); } break; @@ -48218,14 +48448,14 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Function_nameContext(this.context, this.state); this.enterRule(localContext, 806, PostgreSqlParser.RULE_function_name); try { - this.state = 7664; + this.state = 7662; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1050, this.context) ) { case 1: localContext = new FunctionNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 7660; + this.state = 7658; this.type_function_name(); } break; @@ -48233,9 +48463,9 @@ export class PostgreSqlParser extends SQLParserBase { localContext = new FunctionNameContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 7661; + this.state = 7659; this.colid(); - this.state = 7662; + this.state = 7660; this.indirection(); } break; @@ -48261,16 +48491,16 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7666; + this.state = 7664; this.anysconst(); - this.state = 7669; + this.state = 7667; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1051, this.context) ) { case 1: { - this.state = 7667; + this.state = 7665; this.match(PostgreSqlParser.KW_UESCAPE); - this.state = 7668; + this.state = 7666; this.anysconst(); } break; @@ -48296,50 +48526,50 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 810, PostgreSqlParser.RULE_anysconst); let _la: number; try { - this.state = 7682; + this.state = 7680; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.StringConstant: this.enterOuterAlt(localContext, 1); { - this.state = 7671; + this.state = 7669; this.match(PostgreSqlParser.StringConstant); } break; case PostgreSqlParser.UnicodeEscapeStringConstant: this.enterOuterAlt(localContext, 2); { - this.state = 7672; + this.state = 7670; this.match(PostgreSqlParser.UnicodeEscapeStringConstant); } break; case PostgreSqlParser.BeginDollarStringConstant: this.enterOuterAlt(localContext, 3); { - this.state = 7673; + this.state = 7671; this.match(PostgreSqlParser.BeginDollarStringConstant); - this.state = 7677; + this.state = 7675; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 588) { { { - this.state = 7674; + this.state = 7672; this.match(PostgreSqlParser.DollarText); } } - this.state = 7679; + this.state = 7677; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7680; + this.state = 7678; this.match(PostgreSqlParser.EndDollarStringConstant); } break; case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 4); { - this.state = 7681; + this.state = 7679; this.match(PostgreSqlParser.EscapeStringConstant); } break; @@ -48368,12 +48598,12 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7685; + this.state = 7683; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 12 || _la === 13) { { - this.state = 7684; + this.state = 7682; _la = this.tokenStream.LA(1); if(!(_la === 12 || _la === 13)) { this.errorHandler.recoverInline(this); @@ -48385,7 +48615,7 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 7687; + this.state = 7685; this.match(PostgreSqlParser.Integral); } } @@ -48407,465 +48637,44 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new RolespecContext(this.context, this.state); this.enterRule(localContext, 814, PostgreSqlParser.RULE_rolespec); try { - this.state = 7694; + this.state = 7692; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: - case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: - case PostgreSqlParser.KW_AUTHORIZATION: - case PostgreSqlParser.KW_BINARY: - case PostgreSqlParser.KW_COLLATION: - case PostgreSqlParser.KW_CONCURRENTLY: - case PostgreSqlParser.KW_CROSS: - case PostgreSqlParser.KW_CURRENT_SCHEMA: - case PostgreSqlParser.KW_FREEZE: - case PostgreSqlParser.KW_FULL: - case PostgreSqlParser.KW_ILIKE: - case PostgreSqlParser.KW_INNER: - case PostgreSqlParser.KW_IS: - case PostgreSqlParser.KW_ISNULL: - case PostgreSqlParser.KW_JOIN: - case PostgreSqlParser.KW_LEFT: - case PostgreSqlParser.KW_LIKE: - case PostgreSqlParser.KW_NATURAL: - case PostgreSqlParser.KW_NOTNULL: - case PostgreSqlParser.KW_OUTER: - case PostgreSqlParser.KW_OVER: - case PostgreSqlParser.KW_OVERLAPS: - case PostgreSqlParser.KW_RIGHT: - case PostgreSqlParser.KW_SIMILAR: - case PostgreSqlParser.KW_VERBOSE: - case PostgreSqlParser.KW_ABORT: - case PostgreSqlParser.KW_ABSOLUTE: - case PostgreSqlParser.KW_ACCESS: - case PostgreSqlParser.KW_ACTION: - case PostgreSqlParser.KW_ADD: - case PostgreSqlParser.KW_ADMIN: - case PostgreSqlParser.KW_AFTER: - case PostgreSqlParser.KW_AGGREGATE: - case PostgreSqlParser.KW_ALSO: - case PostgreSqlParser.KW_ALTER: - case PostgreSqlParser.KW_ALWAYS: - case PostgreSqlParser.KW_ASSERTION: - case PostgreSqlParser.KW_ASSIGNMENT: - case PostgreSqlParser.KW_AT: - case PostgreSqlParser.KW_ATTRIBUTE: - case PostgreSqlParser.KW_BACKWARD: - case PostgreSqlParser.KW_BEFORE: - case PostgreSqlParser.KW_BEGIN: - case PostgreSqlParser.KW_BY: - case PostgreSqlParser.KW_CACHE: - case PostgreSqlParser.KW_CALLED: - case PostgreSqlParser.KW_CASCADE: - case PostgreSqlParser.KW_CASCADED: - case PostgreSqlParser.KW_CATALOG: - case PostgreSqlParser.KW_CHAIN: - case PostgreSqlParser.KW_CHARACTERISTICS: - case PostgreSqlParser.KW_CHECKPOINT: - case PostgreSqlParser.KW_CLASS: - case PostgreSqlParser.KW_CLOSE: - case PostgreSqlParser.KW_CLUSTER: - case PostgreSqlParser.KW_COMMENT: - case PostgreSqlParser.KW_COMMENTS: - case PostgreSqlParser.KW_COMMIT: - case PostgreSqlParser.KW_COMMITTED: - case PostgreSqlParser.KW_CONFIGURATION: - case PostgreSqlParser.KW_CONNECTION: - case PostgreSqlParser.KW_CONSTRAINTS: - case PostgreSqlParser.KW_CONTENT: - case PostgreSqlParser.KW_CONTINUE: - case PostgreSqlParser.KW_CONVERSION: - case PostgreSqlParser.KW_COPY: - case PostgreSqlParser.KW_COST: - case PostgreSqlParser.KW_CSV: - case PostgreSqlParser.KW_CURSOR: - case PostgreSqlParser.KW_CYCLE: - case PostgreSqlParser.KW_DATA: - case PostgreSqlParser.KW_DATABASE: - case PostgreSqlParser.KW_DAY: - case PostgreSqlParser.KW_DEALLOCATE: - case PostgreSqlParser.KW_DECLARE: - case PostgreSqlParser.KW_DEFAULTS: - case PostgreSqlParser.KW_DEFERRED: - case PostgreSqlParser.KW_DEFINER: - case PostgreSqlParser.KW_DELETE: - case PostgreSqlParser.KW_DELIMITER: - case PostgreSqlParser.KW_DELIMITERS: - case PostgreSqlParser.KW_DICTIONARY: - case PostgreSqlParser.KW_DISABLE: - case PostgreSqlParser.KW_DISCARD: - case PostgreSqlParser.KW_DOCUMENT: - case PostgreSqlParser.KW_DOMAIN: - case PostgreSqlParser.KW_DOUBLE: - case PostgreSqlParser.KW_DROP: - case PostgreSqlParser.KW_EACH: - case PostgreSqlParser.KW_ENABLE: - case PostgreSqlParser.KW_ENCODING: - case PostgreSqlParser.KW_ENCRYPTED: - case PostgreSqlParser.KW_ENUM: - case PostgreSqlParser.KW_ESCAPE: - case PostgreSqlParser.KW_EVENT: - case PostgreSqlParser.KW_EXCLUDE: - case PostgreSqlParser.KW_EXCLUDING: - case PostgreSqlParser.KW_EXCLUSIVE: - case PostgreSqlParser.KW_EXECUTE: - case PostgreSqlParser.KW_EXPLAIN: - case PostgreSqlParser.KW_EXTENSION: - case PostgreSqlParser.KW_EXTERNAL: - case PostgreSqlParser.KW_FAMILY: - case PostgreSqlParser.KW_FIRST: - case PostgreSqlParser.KW_FOLLOWING: - case PostgreSqlParser.KW_FORCE: - case PostgreSqlParser.KW_FORWARD: - case PostgreSqlParser.KW_FUNCTION: - case PostgreSqlParser.KW_FUNCTIONS: - case PostgreSqlParser.KW_GLOBAL: - case PostgreSqlParser.KW_GRANTED: - case PostgreSqlParser.KW_HANDLER: - case PostgreSqlParser.KW_HEADER: - case PostgreSqlParser.KW_HOLD: - case PostgreSqlParser.KW_HOUR: - case PostgreSqlParser.KW_IDENTITY: - case PostgreSqlParser.KW_IF: - case PostgreSqlParser.KW_IMMEDIATE: - case PostgreSqlParser.KW_IMMUTABLE: - case PostgreSqlParser.KW_IMPLICIT: - case PostgreSqlParser.KW_INCLUDING: - case PostgreSqlParser.KW_INCREMENT: - case PostgreSqlParser.KW_INDEX: - case PostgreSqlParser.KW_INDEXES: - case PostgreSqlParser.KW_INHERIT: - case PostgreSqlParser.KW_INHERITS: - case PostgreSqlParser.KW_INLINE: - case PostgreSqlParser.KW_INSENSITIVE: - case PostgreSqlParser.KW_INSERT: - case PostgreSqlParser.KW_INSTEAD: - case PostgreSqlParser.KW_INVOKER: - case PostgreSqlParser.KW_ISOLATION: - case PostgreSqlParser.KW_KEY: - case PostgreSqlParser.KW_LABEL: - case PostgreSqlParser.KW_LANGUAGE: - case PostgreSqlParser.KW_LARGE: - case PostgreSqlParser.KW_LAST: - case PostgreSqlParser.KW_LEAKPROOF: - case PostgreSqlParser.KW_LEVEL: - case PostgreSqlParser.KW_LISTEN: - case PostgreSqlParser.KW_LOAD: - case PostgreSqlParser.KW_LOCAL: - case PostgreSqlParser.KW_LOCATION: - case PostgreSqlParser.KW_LOCK: - case PostgreSqlParser.KW_MAPPING: - case PostgreSqlParser.KW_MATCH: - case PostgreSqlParser.KW_MATERIALIZED: - case PostgreSqlParser.KW_MAXVALUE: - case PostgreSqlParser.KW_MINUTE: - case PostgreSqlParser.KW_MINVALUE: - case PostgreSqlParser.KW_MODE: - case PostgreSqlParser.KW_MONTH: - case PostgreSqlParser.KW_MOVE: - case PostgreSqlParser.KW_NAME: - case PostgreSqlParser.KW_NAMES: - case PostgreSqlParser.KW_NEXT: - case PostgreSqlParser.KW_NO: - case PostgreSqlParser.KW_NOTHING: - case PostgreSqlParser.KW_NOTIFY: - case PostgreSqlParser.KW_NOWAIT: - case PostgreSqlParser.KW_NULLS: - case PostgreSqlParser.KW_OBJECT: - case PostgreSqlParser.KW_OF: - case PostgreSqlParser.KW_OFF: - case PostgreSqlParser.KW_OIDS: - case PostgreSqlParser.KW_OPERATOR: - case PostgreSqlParser.KW_OPTION: - case PostgreSqlParser.KW_OPTIONS: - case PostgreSqlParser.KW_OWNED: - case PostgreSqlParser.KW_OWNER: - case PostgreSqlParser.KW_PARSER: - case PostgreSqlParser.KW_PARTIAL: - case PostgreSqlParser.KW_PARTITION: - case PostgreSqlParser.KW_PASSING: - case PostgreSqlParser.KW_PASSWORD: - case PostgreSqlParser.KW_PLANS: - case PostgreSqlParser.KW_PRECEDING: - case PostgreSqlParser.KW_PREPARE: - case PostgreSqlParser.KW_PREPARED: - case PostgreSqlParser.KW_PRESERVE: - case PostgreSqlParser.KW_PRIOR: - case PostgreSqlParser.KW_PRIVILEGES: - case PostgreSqlParser.KW_PROCEDURAL: - case PostgreSqlParser.KW_PROCEDURE: - case PostgreSqlParser.KW_PROGRAM: - case PostgreSqlParser.KW_QUOTE: - case PostgreSqlParser.KW_RANGE: - case PostgreSqlParser.KW_READ: - case PostgreSqlParser.KW_REASSIGN: - case PostgreSqlParser.KW_RECHECK: - case PostgreSqlParser.KW_RECURSIVE: - case PostgreSqlParser.KW_REF: - case PostgreSqlParser.KW_REFRESH: - case PostgreSqlParser.KW_REINDEX: - case PostgreSqlParser.KW_RELATIVE: - case PostgreSqlParser.KW_RELEASE: - case PostgreSqlParser.KW_RENAME: - case PostgreSqlParser.KW_REPEATABLE: - case PostgreSqlParser.KW_REPLACE: - case PostgreSqlParser.KW_REPLICA: - case PostgreSqlParser.KW_RESET: - case PostgreSqlParser.KW_RESTART: - case PostgreSqlParser.KW_RESTRICT: - case PostgreSqlParser.KW_RETURNS: - case PostgreSqlParser.KW_REVOKE: - case PostgreSqlParser.KW_ROLE: - case PostgreSqlParser.KW_ROLLBACK: - case PostgreSqlParser.KW_ROWS: - case PostgreSqlParser.KW_RULE: - case PostgreSqlParser.KW_SAVEPOINT: - case PostgreSqlParser.KW_SCHEMA: - case PostgreSqlParser.KW_SCROLL: - case PostgreSqlParser.KW_SEARCH: - case PostgreSqlParser.KW_SECOND: - case PostgreSqlParser.KW_SECURITY: - case PostgreSqlParser.KW_SEQUENCE: - case PostgreSqlParser.KW_SEQUENCES: - case PostgreSqlParser.KW_SERIALIZABLE: - case PostgreSqlParser.KW_SERVER: - case PostgreSqlParser.KW_SESSION: - case PostgreSqlParser.KW_SET: - case PostgreSqlParser.KW_SHARE: - case PostgreSqlParser.KW_SHOW: - case PostgreSqlParser.KW_SIMPLE: - case PostgreSqlParser.KW_SNAPSHOT: - case PostgreSqlParser.KW_STABLE: - case PostgreSqlParser.KW_STANDALONE: - case PostgreSqlParser.KW_START: - case PostgreSqlParser.KW_STATEMENT: - case PostgreSqlParser.KW_STATISTICS: - case PostgreSqlParser.KW_STDIN: - case PostgreSqlParser.KW_STDOUT: - case PostgreSqlParser.KW_STORAGE: - case PostgreSqlParser.KW_STRICT: - case PostgreSqlParser.KW_STRIP: - case PostgreSqlParser.KW_SYSID: - case PostgreSqlParser.KW_SYSTEM: - case PostgreSqlParser.KW_TABLES: - case PostgreSqlParser.KW_TABLESPACE: - case PostgreSqlParser.KW_TEMP: - case PostgreSqlParser.KW_TEMPLATE: - case PostgreSqlParser.KW_TEMPORARY: - case PostgreSqlParser.KW_TEXT: - case PostgreSqlParser.KW_TRANSACTION: - case PostgreSqlParser.KW_TRIGGER: - case PostgreSqlParser.KW_TRUNCATE: - case PostgreSqlParser.KW_TRUSTED: - case PostgreSqlParser.KW_TYPE: - case PostgreSqlParser.KW_TYPES: - case PostgreSqlParser.KW_UNBOUNDED: - case PostgreSqlParser.KW_UNCOMMITTED: - case PostgreSqlParser.KW_UNENCRYPTED: - case PostgreSqlParser.KW_UNKNOWN: - case PostgreSqlParser.KW_UNLISTEN: - case PostgreSqlParser.KW_UNLOGGED: - case PostgreSqlParser.KW_UNTIL: - case PostgreSqlParser.KW_UPDATE: - case PostgreSqlParser.KW_VACUUM: - case PostgreSqlParser.KW_VALID: - case PostgreSqlParser.KW_VALIDATE: - case PostgreSqlParser.KW_VALIDATOR: - case PostgreSqlParser.KW_VARYING: - case PostgreSqlParser.KW_VERSION: - case PostgreSqlParser.KW_VIEW: - case PostgreSqlParser.KW_VOLATILE: - case PostgreSqlParser.KW_WHITESPACE: - case PostgreSqlParser.KW_WITHOUT: - case PostgreSqlParser.KW_WORK: - case PostgreSqlParser.KW_WRAPPER: - case PostgreSqlParser.KW_WRITE: - case PostgreSqlParser.KW_XML: - case PostgreSqlParser.KW_YEAR: - case PostgreSqlParser.KW_YES: - case PostgreSqlParser.KW_ZONE: - case PostgreSqlParser.KW_BETWEEN: - case PostgreSqlParser.KW_BIGINT: - case PostgreSqlParser.KW_BIT: - case PostgreSqlParser.KW_BOOLEAN: - case PostgreSqlParser.KW_CHAR: - case PostgreSqlParser.KW_CHARACTER: - case PostgreSqlParser.KW_COALESCE: - case PostgreSqlParser.KW_DEC: - case PostgreSqlParser.KW_DECIMAL: - case PostgreSqlParser.KW_EXISTS: - case PostgreSqlParser.KW_EXTRACT: - case PostgreSqlParser.KW_FLOAT: - case PostgreSqlParser.KW_GREATEST: - case PostgreSqlParser.KW_INOUT: - case PostgreSqlParser.KW_INT: - case PostgreSqlParser.KW_INTEGER: - case PostgreSqlParser.KW_INTERVAL: - case PostgreSqlParser.KW_LEAST: - case PostgreSqlParser.KW_NATIONAL: - case PostgreSqlParser.KW_NCHAR: - case PostgreSqlParser.KW_NONE: - case PostgreSqlParser.KW_NULLIF: - case PostgreSqlParser.KW_NUMERIC: - case PostgreSqlParser.KW_OVERLAY: - case PostgreSqlParser.KW_POSITION: - case PostgreSqlParser.KW_PRECISION: - case PostgreSqlParser.KW_REAL: - case PostgreSqlParser.KW_ROW: - case PostgreSqlParser.KW_SETOF: - case PostgreSqlParser.KW_SMALLINT: - case PostgreSqlParser.KW_SUBSTRING: - case PostgreSqlParser.KW_TIME: - case PostgreSqlParser.KW_TIMESTAMP: - case PostgreSqlParser.KW_TREAT: - case PostgreSqlParser.KW_TRIM: - case PostgreSqlParser.KW_VALUES: - case PostgreSqlParser.KW_VARCHAR: - case PostgreSqlParser.KW_XMLATTRIBUTES: - case PostgreSqlParser.KW_XMLCONCAT: - case PostgreSqlParser.KW_XMLELEMENT: - case PostgreSqlParser.KW_XMLEXISTS: - case PostgreSqlParser.KW_XMLFOREST: - case PostgreSqlParser.KW_XMLPARSE: - case PostgreSqlParser.KW_XMLPI: - case PostgreSqlParser.KW_XMLROOT: - case PostgreSqlParser.KW_XMLSERIALIZE: - case PostgreSqlParser.KW_CALL: - case PostgreSqlParser.KW_CURRENT: - case PostgreSqlParser.KW_ATTACH: - case PostgreSqlParser.KW_DETACH: - case PostgreSqlParser.KW_EXPRESSION: - case PostgreSqlParser.KW_GENERATED: - case PostgreSqlParser.KW_LOGGED: - case PostgreSqlParser.KW_STORED: - case PostgreSqlParser.KW_INCLUDE: - case PostgreSqlParser.KW_ROUTINE: - case PostgreSqlParser.KW_TRANSFORM: - case PostgreSqlParser.KW_IMPORT: - case PostgreSqlParser.KW_POLICY: - case PostgreSqlParser.KW_METHOD: - case PostgreSqlParser.KW_REFERENCING: - case PostgreSqlParser.KW_NEW: - case PostgreSqlParser.KW_OLD: - case PostgreSqlParser.KW_VALUE: - case PostgreSqlParser.KW_SUBSCRIPTION: - case PostgreSqlParser.KW_PUBLICATION: - case PostgreSqlParser.KW_OUT: - case PostgreSqlParser.KW_ROUTINES: - case PostgreSqlParser.KW_SCHEMAS: - case PostgreSqlParser.KW_PROCEDURES: - case PostgreSqlParser.KW_INPUT: - case PostgreSqlParser.KW_SUPPORT: - case PostgreSqlParser.KW_PARALLEL: - case PostgreSqlParser.KW_SQL: - case PostgreSqlParser.KW_DEPENDS: - case PostgreSqlParser.KW_OVERRIDING: - case PostgreSqlParser.KW_CONFLICT: - case PostgreSqlParser.KW_SKIP: - case PostgreSqlParser.KW_LOCKED: - case PostgreSqlParser.KW_TIES: - case PostgreSqlParser.KW_ROLLUP: - case PostgreSqlParser.KW_CUBE: - case PostgreSqlParser.KW_GROUPING: - case PostgreSqlParser.KW_SETS: - case PostgreSqlParser.KW_TABLESAMPLE: - case PostgreSqlParser.KW_ORDINALITY: - case PostgreSqlParser.KW_XMLTABLE: - case PostgreSqlParser.KW_COLUMNS: - case PostgreSqlParser.KW_XMLNAMESPACES: - case PostgreSqlParser.KW_ROWTYPE: - case PostgreSqlParser.KW_NORMALIZED: - case PostgreSqlParser.KW_WITHIN: - case PostgreSqlParser.KW_FILTER: - case PostgreSqlParser.KW_GROUPS: - case PostgreSqlParser.KW_OTHERS: - case PostgreSqlParser.KW_NFC: - case PostgreSqlParser.KW_NFD: - case PostgreSqlParser.KW_NFKC: - case PostgreSqlParser.KW_NFKD: - case PostgreSqlParser.KW_UESCAPE: - case PostgreSqlParser.KW_VIEWS: - case PostgreSqlParser.KW_NORMALIZE: - case PostgreSqlParser.KW_DUMP: - case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: - case PostgreSqlParser.KW_VARIABLE_CONFLICT: - case PostgreSqlParser.KW_ERROR: - case PostgreSqlParser.KW_USE_VARIABLE: - case PostgreSqlParser.KW_USE_COLUMN: - case PostgreSqlParser.KW_ALIAS: - case PostgreSqlParser.KW_CONSTANT: - case PostgreSqlParser.KW_PERFORM: - case PostgreSqlParser.KW_GET: - case PostgreSqlParser.KW_DIAGNOSTICS: - case PostgreSqlParser.KW_STACKED: - case PostgreSqlParser.KW_ELSIF: - case PostgreSqlParser.KW_REVERSE: - case PostgreSqlParser.KW_SLICE: - case PostgreSqlParser.KW_EXIT: - case PostgreSqlParser.KW_RETURN: - case PostgreSqlParser.KW_QUERY: - case PostgreSqlParser.KW_RAISE: - case PostgreSqlParser.KW_SQLSTATE: - case PostgreSqlParser.KW_DEBUG: - case PostgreSqlParser.KW_LOG: - case PostgreSqlParser.KW_INFO: - case PostgreSqlParser.KW_NOTICE: - case PostgreSqlParser.KW_WARNING: - case PostgreSqlParser.KW_EXCEPTION: - case PostgreSqlParser.KW_ASSERT: - case PostgreSqlParser.KW_OPEN: - case PostgreSqlParser.KW_SKIP_LOCKED: - case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: - case PostgreSqlParser.Identifier: - case PostgreSqlParser.QuotedIdentifier: - case PostgreSqlParser.UnicodeQuotedIdentifier: - case PostgreSqlParser.StringConstant: - case PostgreSqlParser.UnicodeEscapeStringConstant: - case PostgreSqlParser.BeginDollarStringConstant: - case PostgreSqlParser.PLSQLVARIABLENAME: - case PostgreSqlParser.PLSQLIDENTIFIER: - case PostgreSqlParser.EscapeStringConstant: + switch (this.interpreter.adaptivePredict(this.tokenStream, 1055, this.context) ) { + case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7689; + this.state = 7687; this.nonreservedword(); } break; - case PostgreSqlParser.KW_CURRENT_USER: + case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7690; + this.state = 7688; this.match(PostgreSqlParser.KW_CURRENT_USER); } break; - case PostgreSqlParser.KW_CURRENT_ROLE: + case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7691; + this.state = 7689; this.match(PostgreSqlParser.KW_CURRENT_ROLE); } break; - case PostgreSqlParser.KW_SESSION_USER: + case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7692; + this.state = 7690; this.match(PostgreSqlParser.KW_SESSION_USER); } break; - case PostgreSqlParser.KW_PUBLIC: + case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7693; + this.state = 7691; this.match(PostgreSqlParser.KW_PUBLIC); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -48889,21 +48698,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7696; + this.state = 7694; this.rolespec(); - this.state = 7701; + this.state = 7699; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7697; + this.state = 7695; this.match(PostgreSqlParser.COMMA); - this.state = 7698; + this.state = 7696; this.rolespec(); } } - this.state = 7703; + this.state = 7701; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -48927,37 +48736,23 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new ColidContext(this.context, this.state); this.enterRule(localContext, 818, PostgreSqlParser.RULE_colid); try { - this.state = 7708; + this.state = 7704; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1057, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7704; + this.state = 7702; this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7705; - this.unreserved_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 7706; + this.state = 7703; this.col_name_keyword(); } break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 7707; - this.plsql_unreserved_keyword(); - } - break; } } catch (re) { @@ -48978,34 +48773,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Type_function_nameContext(this.context, this.state); this.enterRule(localContext, 820, PostgreSqlParser.RULE_type_function_name); try { - this.state = 7714; + this.state = 7708; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1058, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7710; + this.state = 7706; this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7711; - this.unreserved_keyword(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 7712; - this.plsql_unreserved_keyword(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 7713; + this.state = 7707; this.type_func_name_keyword(); } break; @@ -49029,34 +48810,27 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new NonreservedwordContext(this.context, this.state); this.enterRule(localContext, 822, PostgreSqlParser.RULE_nonreservedword); try { - this.state = 7720; + this.state = 7713; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1059, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7716; + this.state = 7710; this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7717; - this.unreserved_keyword(); + this.state = 7711; + this.col_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7718; - this.col_name_keyword(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 7719; + this.state = 7712; this.type_func_name_keyword(); } break; @@ -49080,27 +48854,34 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new CollabelContext(this.context, this.state); this.enterRule(localContext, 824, PostgreSqlParser.RULE_collabel); try { - this.state = 7725; + this.state = 7719; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1060, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7722; - this.nonreservedword(); + this.state = 7715; + this.identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7723; - this.plsql_unreserved_keyword(); + this.state = 7716; + this.col_name_keyword(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7724; + this.state = 7717; + this.type_func_name_keyword(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 7718; this.reserved_keyword(); } break; @@ -49124,22 +48905,22 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new IdentifierContext(this.context, this.state); this.enterRule(localContext, 826, PostgreSqlParser.RULE_identifier); try { - this.state = 7738; + this.state = 7732; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.Identifier: this.enterOuterAlt(localContext, 1); { - this.state = 7727; + this.state = 7721; this.match(PostgreSqlParser.Identifier); - this.state = 7730; + this.state = 7724; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1061, this.context) ) { case 1: { - this.state = 7728; + this.state = 7722; this.match(PostgreSqlParser.KW_UESCAPE); - this.state = 7729; + this.state = 7723; this.anysconst(); } break; @@ -49152,73 +48933,341 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 2); { - this.state = 7732; + this.state = 7726; this.sconst(); } break; case PostgreSqlParser.QuotedIdentifier: this.enterOuterAlt(localContext, 3); { - this.state = 7733; + this.state = 7727; this.match(PostgreSqlParser.QuotedIdentifier); } break; case PostgreSqlParser.UnicodeQuotedIdentifier: this.enterOuterAlt(localContext, 4); { - this.state = 7734; + this.state = 7728; this.match(PostgreSqlParser.UnicodeQuotedIdentifier); } break; case PostgreSqlParser.PLSQLVARIABLENAME: this.enterOuterAlt(localContext, 5); { - this.state = 7735; + this.state = 7729; this.match(PostgreSqlParser.PLSQLVARIABLENAME); } break; case PostgreSqlParser.PLSQLIDENTIFIER: this.enterOuterAlt(localContext, 6); { - this.state = 7736; + this.state = 7730; this.match(PostgreSqlParser.PLSQLIDENTIFIER); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: + case PostgreSqlParser.KW_OVER: + case PostgreSqlParser.KW_ABORT: case PostgreSqlParser.KW_ABSOLUTE: + case PostgreSqlParser.KW_ACCESS: + case PostgreSqlParser.KW_ACTION: + case PostgreSqlParser.KW_ADD: + case PostgreSqlParser.KW_ADMIN: + case PostgreSqlParser.KW_AFTER: + case PostgreSqlParser.KW_AGGREGATE: + case PostgreSqlParser.KW_ALSO: + case PostgreSqlParser.KW_ALTER: + case PostgreSqlParser.KW_ALWAYS: + case PostgreSqlParser.KW_ASSERTION: + case PostgreSqlParser.KW_ASSIGNMENT: + case PostgreSqlParser.KW_AT: + case PostgreSqlParser.KW_ATTRIBUTE: case PostgreSqlParser.KW_BACKWARD: + case PostgreSqlParser.KW_BEFORE: + case PostgreSqlParser.KW_BEGIN: + case PostgreSqlParser.KW_BY: + case PostgreSqlParser.KW_CACHE: + case PostgreSqlParser.KW_CALLED: + case PostgreSqlParser.KW_CASCADE: + case PostgreSqlParser.KW_CASCADED: + case PostgreSqlParser.KW_CATALOG: case PostgreSqlParser.KW_CHAIN: + case PostgreSqlParser.KW_CHARACTERISTICS: + case PostgreSqlParser.KW_CHECKPOINT: + case PostgreSqlParser.KW_CLASS: case PostgreSqlParser.KW_CLOSE: + case PostgreSqlParser.KW_CLUSTER: + case PostgreSqlParser.KW_COMMENT: + case PostgreSqlParser.KW_COMMENTS: case PostgreSqlParser.KW_COMMIT: + case PostgreSqlParser.KW_COMMITTED: + case PostgreSqlParser.KW_CONFIGURATION: + case PostgreSqlParser.KW_CONNECTION: + case PostgreSqlParser.KW_CONSTRAINTS: + case PostgreSqlParser.KW_CONTENT: case PostgreSqlParser.KW_CONTINUE: + case PostgreSqlParser.KW_CONVERSION: + case PostgreSqlParser.KW_COPY: + case PostgreSqlParser.KW_COST: + case PostgreSqlParser.KW_CSV: case PostgreSqlParser.KW_CURSOR: + case PostgreSqlParser.KW_CYCLE: + case PostgreSqlParser.KW_DATA: + case PostgreSqlParser.KW_DATABASE: + case PostgreSqlParser.KW_DAY: + case PostgreSqlParser.KW_DEALLOCATE: + case PostgreSqlParser.KW_DECLARE: + case PostgreSqlParser.KW_DEFAULTS: + case PostgreSqlParser.KW_DEFERRED: + case PostgreSqlParser.KW_DEFINER: + case PostgreSqlParser.KW_DELETE: + case PostgreSqlParser.KW_DELIMITER: + case PostgreSqlParser.KW_DELIMITERS: + case PostgreSqlParser.KW_DICTIONARY: + case PostgreSqlParser.KW_DISABLE: + case PostgreSqlParser.KW_DISCARD: + case PostgreSqlParser.KW_DOCUMENT: + case PostgreSqlParser.KW_DOMAIN: + case PostgreSqlParser.KW_DOUBLE: + case PostgreSqlParser.KW_DROP: + case PostgreSqlParser.KW_EACH: + case PostgreSqlParser.KW_ENABLE: + case PostgreSqlParser.KW_ENCODING: + case PostgreSqlParser.KW_ENCRYPTED: + case PostgreSqlParser.KW_ENUM: + case PostgreSqlParser.KW_ESCAPE: + case PostgreSqlParser.KW_EVENT: + case PostgreSqlParser.KW_EXCLUDE: + case PostgreSqlParser.KW_EXCLUDING: + case PostgreSqlParser.KW_EXCLUSIVE: + case PostgreSqlParser.KW_EXECUTE: + case PostgreSqlParser.KW_EXPLAIN: + case PostgreSqlParser.KW_EXTENSION: + case PostgreSqlParser.KW_EXTERNAL: + case PostgreSqlParser.KW_FAMILY: case PostgreSqlParser.KW_FIRST: + case PostgreSqlParser.KW_FOLLOWING: + case PostgreSqlParser.KW_FORCE: case PostgreSqlParser.KW_FORWARD: + case PostgreSqlParser.KW_FUNCTION: + case PostgreSqlParser.KW_FUNCTIONS: + case PostgreSqlParser.KW_GLOBAL: + case PostgreSqlParser.KW_GRANTED: + case PostgreSqlParser.KW_HANDLER: + case PostgreSqlParser.KW_HEADER: + case PostgreSqlParser.KW_HOLD: + case PostgreSqlParser.KW_HOUR: + case PostgreSqlParser.KW_IDENTITY: + case PostgreSqlParser.KW_IF: + case PostgreSqlParser.KW_IMMEDIATE: + case PostgreSqlParser.KW_IMMUTABLE: + case PostgreSqlParser.KW_IMPLICIT: + case PostgreSqlParser.KW_INCLUDING: + case PostgreSqlParser.KW_INCREMENT: + case PostgreSqlParser.KW_INDEX: + case PostgreSqlParser.KW_INDEXES: + case PostgreSqlParser.KW_INHERIT: + case PostgreSqlParser.KW_INHERITS: + case PostgreSqlParser.KW_INLINE: + case PostgreSqlParser.KW_INSENSITIVE: case PostgreSqlParser.KW_INSERT: + case PostgreSqlParser.KW_INSTEAD: + case PostgreSqlParser.KW_INVOKER: + case PostgreSqlParser.KW_ISOLATION: + case PostgreSqlParser.KW_KEY: + case PostgreSqlParser.KW_LABEL: + case PostgreSqlParser.KW_LANGUAGE: + case PostgreSqlParser.KW_LARGE: case PostgreSqlParser.KW_LAST: + case PostgreSqlParser.KW_LEAKPROOF: + case PostgreSqlParser.KW_LEVEL: + case PostgreSqlParser.KW_LISTEN: + case PostgreSqlParser.KW_LOAD: + case PostgreSqlParser.KW_LOCAL: + case PostgreSqlParser.KW_LOCATION: + case PostgreSqlParser.KW_LOCK: + case PostgreSqlParser.KW_MAPPING: + case PostgreSqlParser.KW_MATCH: + case PostgreSqlParser.KW_MATERIALIZED: + case PostgreSqlParser.KW_MAXVALUE: + case PostgreSqlParser.KW_MINUTE: + case PostgreSqlParser.KW_MINVALUE: + case PostgreSqlParser.KW_MODE: + case PostgreSqlParser.KW_MONTH: case PostgreSqlParser.KW_MOVE: + case PostgreSqlParser.KW_NAME: + case PostgreSqlParser.KW_NAMES: case PostgreSqlParser.KW_NEXT: case PostgreSqlParser.KW_NO: + case PostgreSqlParser.KW_NOTHING: + case PostgreSqlParser.KW_NOTIFY: + case PostgreSqlParser.KW_NOWAIT: + case PostgreSqlParser.KW_NULLS: + case PostgreSqlParser.KW_OBJECT: + case PostgreSqlParser.KW_OF: + case PostgreSqlParser.KW_OFF: + case PostgreSqlParser.KW_OIDS: + case PostgreSqlParser.KW_OPERATOR: case PostgreSqlParser.KW_OPTION: + case PostgreSqlParser.KW_OPTIONS: + case PostgreSqlParser.KW_OWNED: + case PostgreSqlParser.KW_OWNER: + case PostgreSqlParser.KW_PARSER: + case PostgreSqlParser.KW_PARTIAL: + case PostgreSqlParser.KW_PARTITION: + case PostgreSqlParser.KW_PASSING: + case PostgreSqlParser.KW_PASSWORD: + case PostgreSqlParser.KW_PLANS: + case PostgreSqlParser.KW_PRECEDING: + case PostgreSqlParser.KW_PREPARE: + case PostgreSqlParser.KW_PREPARED: + case PostgreSqlParser.KW_PRESERVE: case PostgreSqlParser.KW_PRIOR: + case PostgreSqlParser.KW_PRIVILEGES: + case PostgreSqlParser.KW_PROCEDURAL: + case PostgreSqlParser.KW_PROCEDURE: + case PostgreSqlParser.KW_PROGRAM: + case PostgreSqlParser.KW_QUOTE: + case PostgreSqlParser.KW_RANGE: + case PostgreSqlParser.KW_READ: + case PostgreSqlParser.KW_REASSIGN: + case PostgreSqlParser.KW_RECHECK: + case PostgreSqlParser.KW_RECURSIVE: + case PostgreSqlParser.KW_REF: + case PostgreSqlParser.KW_REFRESH: + case PostgreSqlParser.KW_REINDEX: case PostgreSqlParser.KW_RELATIVE: + case PostgreSqlParser.KW_RELEASE: + case PostgreSqlParser.KW_RENAME: + case PostgreSqlParser.KW_REPEATABLE: + case PostgreSqlParser.KW_REPLACE: + case PostgreSqlParser.KW_REPLICA: case PostgreSqlParser.KW_RESET: + case PostgreSqlParser.KW_RESTART: + case PostgreSqlParser.KW_RESTRICT: + case PostgreSqlParser.KW_RETURNS: + case PostgreSqlParser.KW_REVOKE: + case PostgreSqlParser.KW_ROLE: case PostgreSqlParser.KW_ROLLBACK: + case PostgreSqlParser.KW_ROWS: + case PostgreSqlParser.KW_RULE: + case PostgreSqlParser.KW_SAVEPOINT: case PostgreSqlParser.KW_SCHEMA: case PostgreSqlParser.KW_SCROLL: + case PostgreSqlParser.KW_SEARCH: + case PostgreSqlParser.KW_SECOND: + case PostgreSqlParser.KW_SECURITY: + case PostgreSqlParser.KW_SEQUENCE: + case PostgreSqlParser.KW_SEQUENCES: + case PostgreSqlParser.KW_SERIALIZABLE: + case PostgreSqlParser.KW_SERVER: + case PostgreSqlParser.KW_SESSION: case PostgreSqlParser.KW_SET: + case PostgreSqlParser.KW_SHARE: + case PostgreSqlParser.KW_SHOW: + case PostgreSqlParser.KW_SIMPLE: + case PostgreSqlParser.KW_SNAPSHOT: + case PostgreSqlParser.KW_STABLE: + case PostgreSqlParser.KW_STANDALONE: + case PostgreSqlParser.KW_START: + case PostgreSqlParser.KW_STATEMENT: + case PostgreSqlParser.KW_STATISTICS: + case PostgreSqlParser.KW_STDIN: + case PostgreSqlParser.KW_STDOUT: + case PostgreSqlParser.KW_STORAGE: + case PostgreSqlParser.KW_STRICT: + case PostgreSqlParser.KW_STRIP: + case PostgreSqlParser.KW_SYSID: + case PostgreSqlParser.KW_SYSTEM: + case PostgreSqlParser.KW_TABLES: + case PostgreSqlParser.KW_TABLESPACE: + case PostgreSqlParser.KW_TEMP: + case PostgreSqlParser.KW_TEMPLATE: + case PostgreSqlParser.KW_TEMPORARY: + case PostgreSqlParser.KW_TEXT: + case PostgreSqlParser.KW_TRANSACTION: + case PostgreSqlParser.KW_TRIGGER: + case PostgreSqlParser.KW_TRUNCATE: + case PostgreSqlParser.KW_TRUSTED: case PostgreSqlParser.KW_TYPE: + case PostgreSqlParser.KW_TYPES: + case PostgreSqlParser.KW_UNBOUNDED: + case PostgreSqlParser.KW_UNCOMMITTED: + case PostgreSqlParser.KW_UNENCRYPTED: + case PostgreSqlParser.KW_UNKNOWN: + case PostgreSqlParser.KW_UNLISTEN: + case PostgreSqlParser.KW_UNLOGGED: + case PostgreSqlParser.KW_UNTIL: + case PostgreSqlParser.KW_UPDATE: + case PostgreSqlParser.KW_VACUUM: + case PostgreSqlParser.KW_VALID: + case PostgreSqlParser.KW_VALIDATE: + case PostgreSqlParser.KW_VALIDATOR: + case PostgreSqlParser.KW_VARYING: + case PostgreSqlParser.KW_VERSION: + case PostgreSqlParser.KW_VIEW: + case PostgreSqlParser.KW_VOLATILE: + case PostgreSqlParser.KW_WHITESPACE: + case PostgreSqlParser.KW_WITHOUT: + case PostgreSqlParser.KW_WORK: + case PostgreSqlParser.KW_WRAPPER: + case PostgreSqlParser.KW_WRITE: + case PostgreSqlParser.KW_XML: + case PostgreSqlParser.KW_YEAR: + case PostgreSqlParser.KW_YES: + case PostgreSqlParser.KW_ZONE: case PostgreSqlParser.KW_CALL: case PostgreSqlParser.KW_CURRENT: + case PostgreSqlParser.KW_ATTACH: + case PostgreSqlParser.KW_DETACH: + case PostgreSqlParser.KW_EXPRESSION: + case PostgreSqlParser.KW_GENERATED: + case PostgreSqlParser.KW_LOGGED: + case PostgreSqlParser.KW_STORED: + case PostgreSqlParser.KW_INCLUDE: + case PostgreSqlParser.KW_ROUTINE: + case PostgreSqlParser.KW_TRANSFORM: + case PostgreSqlParser.KW_IMPORT: + case PostgreSqlParser.KW_POLICY: + case PostgreSqlParser.KW_METHOD: + case PostgreSqlParser.KW_REFERENCING: + case PostgreSqlParser.KW_NEW: + case PostgreSqlParser.KW_OLD: + case PostgreSqlParser.KW_VALUE: + case PostgreSqlParser.KW_SUBSCRIPTION: + case PostgreSqlParser.KW_PUBLICATION: + case PostgreSqlParser.KW_ROUTINES: + case PostgreSqlParser.KW_SCHEMAS: + case PostgreSqlParser.KW_PROCEDURES: + case PostgreSqlParser.KW_INPUT: + case PostgreSqlParser.KW_SUPPORT: + case PostgreSqlParser.KW_PARALLEL: + case PostgreSqlParser.KW_SQL: + case PostgreSqlParser.KW_DEPENDS: + case PostgreSqlParser.KW_OVERRIDING: + case PostgreSqlParser.KW_CONFLICT: + case PostgreSqlParser.KW_SKIP: + case PostgreSqlParser.KW_LOCKED: + case PostgreSqlParser.KW_TIES: + case PostgreSqlParser.KW_ROLLUP: + case PostgreSqlParser.KW_CUBE: + case PostgreSqlParser.KW_SETS: + case PostgreSqlParser.KW_ORDINALITY: + case PostgreSqlParser.KW_COLUMNS: case PostgreSqlParser.KW_ROWTYPE: + case PostgreSqlParser.KW_NORMALIZED: + case PostgreSqlParser.KW_WITHIN: + case PostgreSqlParser.KW_FILTER: + case PostgreSqlParser.KW_GROUPS: + case PostgreSqlParser.KW_OTHERS: + case PostgreSqlParser.KW_NFC: + case PostgreSqlParser.KW_NFD: + case PostgreSqlParser.KW_NFKC: + case PostgreSqlParser.KW_NFKD: + case PostgreSqlParser.KW_UESCAPE: + case PostgreSqlParser.KW_VIEWS: case PostgreSqlParser.KW_DUMP: case PostgreSqlParser.KW_PRINT_STRICT_PARAMS: case PostgreSqlParser.KW_VARIABLE_CONFLICT: @@ -49247,10 +49296,13 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: + case PostgreSqlParser.KW_SKIP_LOCKED: + case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: this.enterOuterAlt(localContext, 7); { - this.state = 7737; - this.plsql_unreserved_keyword(); + this.state = 7731; + this.unreserved_keyword(); } break; default: @@ -49278,9 +49330,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7740; + this.state = 7734; _la = this.tokenStream.LA(1); - if(!(((((_la - 124)) & ~0x1F) === 0 && ((1 << (_la - 124)) & 4294967265) !== 0) || ((((_la - 156)) & ~0x1F) === 0 && ((1 << (_la - 156)) & 4294967295) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4294967295) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 4294705663) !== 0) || ((((_la - 252)) & ~0x1F) === 0 && ((1 << (_la - 252)) & 4294967295) !== 0) || ((((_la - 284)) & ~0x1F) === 0 && ((1 << (_la - 284)) & 4294967295) !== 0) || ((((_la - 316)) & ~0x1F) === 0 && ((1 << (_la - 316)) & 4294967295) !== 0) || ((((_la - 348)) & ~0x1F) === 0 && ((1 << (_la - 348)) & 4294967295) !== 0) || ((((_la - 380)) & ~0x1F) === 0 && ((1 << (_la - 380)) & 127) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 16770399) !== 0) || _la === 547 || _la === 548)) { + if(!(_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 32767) !== 0) || ((((_la - 433)) & ~0x1F) === 0 && ((1 << (_la - 433)) & 4291821567) !== 0) || ((((_la - 465)) & ~0x1F) === 0 && ((1 << (_la - 465)) & 4278187359) !== 0) || ((((_la - 497)) & ~0x1F) === 0 && ((1 << (_la - 497)) & 146800319) !== 0) || _la === 547 || _la === 548)) { this.errorHandler.recoverInline(this); } else { @@ -49307,363 +49359,363 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Col_name_keywordContext(this.context, this.state); this.enterRule(localContext, 830, PostgreSqlParser.RULE_col_name_keyword); try { - this.state = 7793; + this.state = 7787; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1063, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7742; + this.state = 7736; this.match(PostgreSqlParser.KW_BETWEEN); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7743; + this.state = 7737; this.match(PostgreSqlParser.KW_BIGINT); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7744; + this.state = 7738; this.bit(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7745; + this.state = 7739; this.match(PostgreSqlParser.KW_BOOLEAN); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7746; + this.state = 7740; this.match(PostgreSqlParser.KW_CHAR); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7747; + this.state = 7741; this.character(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 7748; + this.state = 7742; this.match(PostgreSqlParser.KW_COALESCE); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 7749; + this.state = 7743; this.match(PostgreSqlParser.KW_DEC); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 7750; + this.state = 7744; this.match(PostgreSqlParser.KW_DECIMAL); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 7751; + this.state = 7745; this.match(PostgreSqlParser.KW_EXISTS); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 7752; + this.state = 7746; this.match(PostgreSqlParser.KW_EXTRACT); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 7753; + this.state = 7747; this.match(PostgreSqlParser.KW_FLOAT); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 7754; + this.state = 7748; this.match(PostgreSqlParser.KW_GREATEST); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 7755; + this.state = 7749; this.match(PostgreSqlParser.KW_GROUPING); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 7756; + this.state = 7750; this.match(PostgreSqlParser.KW_INOUT); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 7757; + this.state = 7751; this.match(PostgreSqlParser.KW_INT); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 7758; + this.state = 7752; this.match(PostgreSqlParser.KW_INTEGER); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 7759; + this.state = 7753; this.match(PostgreSqlParser.KW_INTERVAL); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 7760; + this.state = 7754; this.match(PostgreSqlParser.KW_LEAST); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 7761; + this.state = 7755; this.match(PostgreSqlParser.KW_NATIONAL); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 7762; + this.state = 7756; this.match(PostgreSqlParser.KW_NCHAR); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 7763; + this.state = 7757; this.match(PostgreSqlParser.KW_NONE); } break; case 23: this.enterOuterAlt(localContext, 23); { - this.state = 7764; + this.state = 7758; this.match(PostgreSqlParser.KW_NORMALIZE); } break; case 24: this.enterOuterAlt(localContext, 24); { - this.state = 7765; + this.state = 7759; this.match(PostgreSqlParser.KW_NULLIF); } break; case 25: this.enterOuterAlt(localContext, 25); { - this.state = 7766; + this.state = 7760; this.numeric(); } break; case 26: this.enterOuterAlt(localContext, 26); { - this.state = 7767; + this.state = 7761; this.match(PostgreSqlParser.KW_OUT); } break; case 27: this.enterOuterAlt(localContext, 27); { - this.state = 7768; + this.state = 7762; this.match(PostgreSqlParser.KW_OVERLAY); } break; case 28: this.enterOuterAlt(localContext, 28); { - this.state = 7769; + this.state = 7763; this.match(PostgreSqlParser.KW_POSITION); } break; case 29: this.enterOuterAlt(localContext, 29); { - this.state = 7770; + this.state = 7764; this.match(PostgreSqlParser.KW_PRECISION); } break; case 30: this.enterOuterAlt(localContext, 30); { - this.state = 7771; + this.state = 7765; this.match(PostgreSqlParser.KW_REAL); } break; case 31: this.enterOuterAlt(localContext, 31); { - this.state = 7772; + this.state = 7766; this.match(PostgreSqlParser.KW_ROW); } break; case 32: this.enterOuterAlt(localContext, 32); { - this.state = 7773; + this.state = 7767; this.match(PostgreSqlParser.KW_SETOF); } break; case 33: this.enterOuterAlt(localContext, 33); { - this.state = 7774; + this.state = 7768; this.match(PostgreSqlParser.KW_SMALLINT); } break; case 34: this.enterOuterAlt(localContext, 34); { - this.state = 7775; + this.state = 7769; this.match(PostgreSqlParser.KW_SUBSTRING); } break; case 35: this.enterOuterAlt(localContext, 35); { - this.state = 7776; + this.state = 7770; this.match(PostgreSqlParser.KW_TIME); } break; case 36: this.enterOuterAlt(localContext, 36); { - this.state = 7777; + this.state = 7771; this.match(PostgreSqlParser.KW_TIMESTAMP); } break; case 37: this.enterOuterAlt(localContext, 37); { - this.state = 7778; + this.state = 7772; this.match(PostgreSqlParser.KW_TREAT); } break; case 38: this.enterOuterAlt(localContext, 38); { - this.state = 7779; + this.state = 7773; this.match(PostgreSqlParser.KW_TRIM); } break; case 39: this.enterOuterAlt(localContext, 39); { - this.state = 7780; + this.state = 7774; this.match(PostgreSqlParser.KW_VALUES); } break; case 40: this.enterOuterAlt(localContext, 40); { - this.state = 7781; + this.state = 7775; this.match(PostgreSqlParser.KW_VARCHAR); } break; case 41: this.enterOuterAlt(localContext, 41); { - this.state = 7782; + this.state = 7776; this.match(PostgreSqlParser.KW_XMLATTRIBUTES); } break; case 42: this.enterOuterAlt(localContext, 42); { - this.state = 7783; + this.state = 7777; this.match(PostgreSqlParser.KW_XMLCONCAT); } break; case 43: this.enterOuterAlt(localContext, 43); { - this.state = 7784; + this.state = 7778; this.match(PostgreSqlParser.KW_XMLELEMENT); } break; case 44: this.enterOuterAlt(localContext, 44); { - this.state = 7785; + this.state = 7779; this.match(PostgreSqlParser.KW_XMLEXISTS); } break; case 45: this.enterOuterAlt(localContext, 45); { - this.state = 7786; + this.state = 7780; this.match(PostgreSqlParser.KW_XMLFOREST); } break; case 46: this.enterOuterAlt(localContext, 46); { - this.state = 7787; + this.state = 7781; this.match(PostgreSqlParser.KW_XMLNAMESPACES); } break; case 47: this.enterOuterAlt(localContext, 47); { - this.state = 7788; + this.state = 7782; this.match(PostgreSqlParser.KW_XMLPARSE); } break; case 48: this.enterOuterAlt(localContext, 48); { - this.state = 7789; + this.state = 7783; this.match(PostgreSqlParser.KW_XMLPI); } break; case 49: this.enterOuterAlt(localContext, 49); { - this.state = 7790; + this.state = 7784; this.match(PostgreSqlParser.KW_XMLROOT); } break; case 50: this.enterOuterAlt(localContext, 50); { - this.state = 7791; + this.state = 7785; this.match(PostgreSqlParser.KW_XMLSERIALIZE); } break; case 51: this.enterOuterAlt(localContext, 51); { - this.state = 7792; + this.state = 7786; this.match(PostgreSqlParser.KW_XMLTABLE); } break; @@ -49690,7 +49742,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7795; + this.state = 7789; _la = this.tokenStream.LA(1); if(!(((((_la - 106)) & ~0x1F) === 0 && ((1 << (_la - 106)) & 8126463) !== 0) || _la === 472)) { this.errorHandler.recoverInline(this); @@ -49722,7 +49774,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7797; + this.state = 7791; _la = this.tokenStream.LA(1); if(!(((((_la - 30)) & ~0x1F) === 0 && ((1 << (_la - 30)) & 4286578687) !== 0) || ((((_la - 62)) & ~0x1F) === 0 && ((1 << (_la - 62)) & 4294966783) !== 0) || ((((_la - 94)) & ~0x1F) === 0 && ((1 << (_la - 94)) & 4095) !== 0) || _la === 454)) { this.errorHandler.recoverInline(this); @@ -49756,53 +49808,53 @@ export class PostgreSqlParser extends SQLParserBase { this.enterOuterAlt(localContext, 1); { { - this.state = 7800; + this.state = 7794; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 18) { { - this.state = 7799; + this.state = 7793; this.label_decl(); } } - this.state = 7812; + this.state = 7806; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 178) { { - this.state = 7802; + this.state = 7796; this.match(PostgreSqlParser.KW_DECLARE); - this.state = 7810; + this.state = 7804; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1067, this.context) ) { case 1: { - this.state = 7806; + this.state = 7800; this.errorHandler.sync(this); alternative = 1; do { switch (alternative) { case 1: { - this.state = 7806; + this.state = 7800; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1065, this.context) ) { case 1: { - this.state = 7803; + this.state = 7797; this.decl_statement(); } break; case 2: { - this.state = 7804; + this.state = 7798; this.match(PostgreSqlParser.KW_DECLARE); } break; case 3: { - this.state = 7805; + this.state = 7799; this.label_decl(); } break; @@ -49812,7 +49864,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 7808; + this.state = 7802; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1066, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -49823,42 +49875,42 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 7814; + this.state = 7808; this.match(PostgreSqlParser.KW_BEGIN); - this.state = 7818; + this.state = 7812; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1069, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7815; + this.state = 7809; this.proc_stmt(); } } } - this.state = 7820; + this.state = 7814; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1069, this.context); } - this.state = 7822; + this.state = 7816; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 517) { { - this.state = 7821; + this.state = 7815; this.exception_sect(); } } - this.state = 7824; + this.state = 7818; this.match(PostgreSqlParser.KW_END); - this.state = 7826; + this.state = 7820; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 7825; + this.state = 7819; this.any_identifier(); } } @@ -49885,11 +49937,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7828; + this.state = 7822; this.match(PostgreSqlParser.LESS_LESS); - this.state = 7829; + this.state = 7823; this.any_identifier(); - this.state = 7830; + this.state = 7824; this.match(PostgreSqlParser.GREATER_GREATER); } } @@ -49914,33 +49966,27 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7832; + this.state = 7826; this.any_identifier(); - this.state = 7879; + this.state = 7873; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1082, this.context) ) { case 1: { - this.state = 7833; + this.state = 7827; this.match(PostgreSqlParser.KW_ALIAS); - this.state = 7834; + this.state = 7828; this.match(PostgreSqlParser.KW_FOR); - this.state = 7837; + this.state = 7831; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.PARAM: { - this.state = 7835; + this.state = 7829; this.match(PostgreSqlParser.PARAM); } break; - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -50322,6 +50368,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -50334,7 +50381,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7836; + this.state = 7830; this.colid(); } break; @@ -50345,65 +50392,65 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 7840; + this.state = 7834; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1073, this.context) ) { case 1: { - this.state = 7839; + this.state = 7833; this.match(PostgreSqlParser.KW_CONSTANT); } break; } - this.state = 7842; + this.state = 7836; this.typename(); - this.state = 7844; + this.state = 7838; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 43) { { - this.state = 7843; + this.state = 7837; this.opt_collate_clause(); } } - this.state = 7848; + this.state = 7842; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 77) { { - this.state = 7846; + this.state = 7840; this.match(PostgreSqlParser.KW_NOT); - this.state = 7847; + this.state = 7841; this.match(PostgreSqlParser.KW_NULL); } } - this.state = 7855; + this.state = 7849; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 10 || _la === 20 || _la === 53) { { - this.state = 7852; + this.state = 7846; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.EQUAL: case PostgreSqlParser.COLON_EQUALS: { - this.state = 7850; + this.state = 7844; this.assign_operator(); } break; case PostgreSqlParser.KW_DEFAULT: { - this.state = 7851; + this.state = 7845; this.match(PostgreSqlParser.KW_DEFAULT); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 7854; + this.state = 7848; this.sql_expression(); } } @@ -50412,59 +50459,59 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 7861; + this.state = 7855; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269 || _la === 324) { { - this.state = 7858; + this.state = 7852; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 7857; + this.state = 7851; this.match(PostgreSqlParser.KW_NO); } } - this.state = 7860; + this.state = 7854; this.match(PostgreSqlParser.KW_SCROLL); } } - this.state = 7863; + this.state = 7857; this.match(PostgreSqlParser.KW_CURSOR); - this.state = 7875; + this.state = 7869; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 7864; + this.state = 7858; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7865; + this.state = 7859; this.decl_cursor_arg(); - this.state = 7870; + this.state = 7864; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7866; + this.state = 7860; this.match(PostgreSqlParser.COMMA); - this.state = 7867; + this.state = 7861; this.decl_cursor_arg(); } } - this.state = 7872; + this.state = 7866; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 7873; + this.state = 7867; this.match(PostgreSqlParser.CLOSE_PAREN); } } - this.state = 7877; + this.state = 7871; _la = this.tokenStream.LA(1); if(!(_la === 62 || _la === 116)) { this.errorHandler.recoverInline(this); @@ -50473,12 +50520,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 7878; + this.state = 7872; this.selectstmt(); } break; } - this.state = 7881; + this.state = 7875; this.match(PostgreSqlParser.SEMI); } } @@ -50502,9 +50549,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7883; + this.state = 7877; this.any_identifier(); - this.state = 7884; + this.state = 7878; this.typename(); } } @@ -50529,7 +50576,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7886; + this.state = 7880; _la = this.tokenStream.LA(1); if(!(_la === 10 || _la === 20)) { this.errorHandler.recoverInline(this); @@ -50558,162 +50605,162 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Proc_stmtContext(this.context, this.state); this.enterRule(localContext, 846, PostgreSqlParser.RULE_proc_stmt); try { - this.state = 7912; + this.state = 7906; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1083, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 7888; + this.state = 7882; this.pl_block(); - this.state = 7889; + this.state = 7883; this.match(PostgreSqlParser.SEMI); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 7891; + this.state = 7885; this.stmt_return(); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 7892; + this.state = 7886; this.stmt_raise(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 7893; + this.state = 7887; this.stmt_assign(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 7894; + this.state = 7888; this.stmt_if(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 7895; + this.state = 7889; this.stmt_case(); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 7896; + this.state = 7890; this.stmt_loop_while_for(); } break; case 8: this.enterOuterAlt(localContext, 8); { - this.state = 7897; + this.state = 7891; this.stmt_foreach_a(); } break; case 9: this.enterOuterAlt(localContext, 9); { - this.state = 7898; + this.state = 7892; this.stmt_exit(); } break; case 10: this.enterOuterAlt(localContext, 10); { - this.state = 7899; + this.state = 7893; this.stmt_assert(); } break; case 11: this.enterOuterAlt(localContext, 11); { - this.state = 7900; + this.state = 7894; this.stmt_execsql(); } break; case 12: this.enterOuterAlt(localContext, 12); { - this.state = 7901; + this.state = 7895; this.stmt_dynexecute(); } break; case 13: this.enterOuterAlt(localContext, 13); { - this.state = 7902; + this.state = 7896; this.stmt_perform(); } break; case 14: this.enterOuterAlt(localContext, 14); { - this.state = 7903; + this.state = 7897; this.stmt_call(); } break; case 15: this.enterOuterAlt(localContext, 15); { - this.state = 7904; + this.state = 7898; this.stmt_getdiag(); } break; case 16: this.enterOuterAlt(localContext, 16); { - this.state = 7905; + this.state = 7899; this.stmt_open(); } break; case 17: this.enterOuterAlt(localContext, 17); { - this.state = 7906; + this.state = 7900; this.stmt_fetch(); } break; case 18: this.enterOuterAlt(localContext, 18); { - this.state = 7907; + this.state = 7901; this.stmt_move(); } break; case 19: this.enterOuterAlt(localContext, 19); { - this.state = 7908; + this.state = 7902; this.stmt_close(); } break; case 20: this.enterOuterAlt(localContext, 20); { - this.state = 7909; + this.state = 7903; this.stmt_null(); } break; case 21: this.enterOuterAlt(localContext, 21); { - this.state = 7910; + this.state = 7904; this.stmt_commit_or_rollback(); } break; case 22: this.enterOuterAlt(localContext, 22); { - this.state = 7911; + this.state = 7905; this.stmt_set(); } break; @@ -50739,11 +50786,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7914; + this.state = 7908; this.match(PostgreSqlParser.KW_PERFORM); - this.state = 7915; + this.state = 7909; this.sql_expression(); - this.state = 7916; + this.state = 7910; this.match(PostgreSqlParser.SEMI); } } @@ -50766,36 +50813,36 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 850, PostgreSqlParser.RULE_stmt_call); let _la: number; try { - this.state = 7937; + this.state = 7931; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_CALL: this.enterOuterAlt(localContext, 1); { - this.state = 7918; + this.state = 7912; this.match(PostgreSqlParser.KW_CALL); - this.state = 7919; + this.state = 7913; this.any_identifier(); - this.state = 7926; + this.state = 7920; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1085, this.context) ) { case 1: { - this.state = 7920; + this.state = 7914; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7922; + this.state = 7916; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7921; + this.state = 7915; this.expr_list(); } } - this.state = 7924; + this.state = 7918; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 7925; + this.state = 7919; this.match(PostgreSqlParser.SEMI); } break; @@ -50805,25 +50852,25 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_DO: this.enterOuterAlt(localContext, 2); { - this.state = 7928; + this.state = 7922; this.match(PostgreSqlParser.KW_DO); - this.state = 7929; + this.state = 7923; this.any_identifier(); - this.state = 7930; + this.state = 7924; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 7932; + this.state = 7926; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 421516677) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 100660735) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 805318660) !== 0) || ((((_la - 35)) & ~0x1F) === 0 && ((1 << (_la - 35)) & 34074721) !== 0) || ((((_la - 75)) & ~0x1F) === 0 && ((1 << (_la - 75)) & 2174763023) !== 0) || ((((_la - 107)) & ~0x1F) === 0 && ((1 << (_la - 107)) & 4294967295) !== 0) || ((((_la - 139)) & ~0x1F) === 0 && ((1 << (_la - 139)) & 4294967295) !== 0) || ((((_la - 171)) & ~0x1F) === 0 && ((1 << (_la - 171)) & 4294967295) !== 0) || ((((_la - 203)) & ~0x1F) === 0 && ((1 << (_la - 203)) & 67108863) !== 0) || ((((_la - 238)) & ~0x1F) === 0 && ((1 << (_la - 238)) & 4294967295) !== 0) || ((((_la - 270)) & ~0x1F) === 0 && ((1 << (_la - 270)) & 4294967295) !== 0) || ((((_la - 302)) & ~0x1F) === 0 && ((1 << (_la - 302)) & 4294967295) !== 0) || ((((_la - 334)) & ~0x1F) === 0 && ((1 << (_la - 334)) & 4294967295) !== 0) || ((((_la - 366)) & ~0x1F) === 0 && ((1 << (_la - 366)) & 4294967295) !== 0) || ((((_la - 398)) & ~0x1F) === 0 && ((1 << (_la - 398)) & 4294967295) !== 0) || ((((_la - 430)) & ~0x1F) === 0 && ((1 << (_la - 430)) & 4278190079) !== 0) || ((((_la - 462)) & ~0x1F) === 0 && ((1 << (_la - 462)) & 4294967295) !== 0) || ((((_la - 494)) & ~0x1F) === 0 && ((1 << (_la - 494)) & 1174402559) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 487696527) !== 0) || _la === 584) { { - this.state = 7931; + this.state = 7925; this.expr_list(); } } - this.state = 7934; + this.state = 7928; this.match(PostgreSqlParser.CLOSE_PAREN); - this.state = 7935; + this.state = 7929; this.match(PostgreSqlParser.SEMI); } break; @@ -50851,13 +50898,13 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7939; + this.state = 7933; this.assign_var(); - this.state = 7940; + this.state = 7934; this.assign_operator(); - this.state = 7941; + this.state = 7935; this.sql_expression(); - this.state = 7942; + this.state = 7936; this.match(PostgreSqlParser.SEMI); } } @@ -50882,14 +50929,14 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7944; + this.state = 7938; this.match(PostgreSqlParser.KW_GET); - this.state = 7946; + this.state = 7940; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 434 || _la === 501) { { - this.state = 7945; + this.state = 7939; _la = this.tokenStream.LA(1); if(!(_la === 434 || _la === 501)) { this.errorHandler.recoverInline(this); @@ -50901,29 +50948,29 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 7948; + this.state = 7942; this.match(PostgreSqlParser.KW_DIAGNOSTICS); { - this.state = 7949; + this.state = 7943; this.getdiag_list_item(); - this.state = 7954; + this.state = 7948; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 7950; + this.state = 7944; this.match(PostgreSqlParser.COMMA); - this.state = 7951; + this.state = 7945; this.getdiag_list_item(); } } - this.state = 7956; + this.state = 7950; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 7957; + this.state = 7951; this.match(PostgreSqlParser.SEMI); } } @@ -50947,11 +50994,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7959; + this.state = 7953; this.assign_var(); - this.state = 7960; + this.state = 7954; this.assign_operator(); - this.state = 7961; + this.state = 7955; this.colid(); } } @@ -50976,16 +51023,10 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 7965; + this.state = 7959; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -51367,6 +51408,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -51379,34 +51421,34 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 7963; + this.state = 7957; this.any_name(); } break; case PostgreSqlParser.PARAM: { - this.state = 7964; + this.state = 7958; this.match(PostgreSqlParser.PARAM); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 7973; + this.state = 7967; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 4) { { { - this.state = 7967; + this.state = 7961; this.match(PostgreSqlParser.OPEN_BRACKET); - this.state = 7968; + this.state = 7962; this.expression(); - this.state = 7969; + this.state = 7963; this.match(PostgreSqlParser.CLOSE_BRACKET); } } - this.state = 7975; + this.state = 7969; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -51434,79 +51476,79 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 7976; + this.state = 7970; this.match(PostgreSqlParser.KW_IF); - this.state = 7977; + this.state = 7971; this.sql_expression(); - this.state = 7978; + this.state = 7972; this.match(PostgreSqlParser.KW_THEN); - this.state = 7982; + this.state = 7976; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1092, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7979; + this.state = 7973; this.proc_stmt(); } } } - this.state = 7984; + this.state = 7978; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1092, this.context); } { - this.state = 7996; + this.state = 7990; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 502) { { { - this.state = 7985; + this.state = 7979; this.match(PostgreSqlParser.KW_ELSIF); - this.state = 7986; + this.state = 7980; this.expression(); - this.state = 7987; + this.state = 7981; this.match(PostgreSqlParser.KW_THEN); - this.state = 7991; + this.state = 7985; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1093, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 7988; + this.state = 7982; this.proc_stmt(); } } } - this.state = 7993; + this.state = 7987; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1093, this.context); } } } - this.state = 7998; + this.state = 7992; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 8000; + this.state = 7994; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 58) { { - this.state = 7999; + this.state = 7993; this.stmt_else(); } } - this.state = 8002; + this.state = 7996; this.match(PostgreSqlParser.KW_END); - this.state = 8003; + this.state = 7997; this.match(PostgreSqlParser.KW_IF); - this.state = 8004; + this.state = 7998; this.match(PostgreSqlParser.SEMI); } } @@ -51531,21 +51573,21 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8006; + this.state = 8000; this.match(PostgreSqlParser.KW_ELSE); - this.state = 8010; + this.state = 8004; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1096, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 8007; + this.state = 8001; this.proc_stmt(); } } } - this.state = 8012; + this.state = 8006; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1096, this.context); } @@ -51573,67 +51615,67 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8013; + this.state = 8007; this.match(PostgreSqlParser.KW_CASE); - this.state = 8015; + this.state = 8009; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1097, this.context) ) { case 1: { - this.state = 8014; + this.state = 8008; this.sql_expression(); } break; } - this.state = 8026; + this.state = 8020; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 8017; + this.state = 8011; this.match(PostgreSqlParser.KW_WHEN); - this.state = 8018; + this.state = 8012; this.expr_list(); - this.state = 8019; + this.state = 8013; this.match(PostgreSqlParser.KW_THEN); - this.state = 8023; + this.state = 8017; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1098, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 8020; + this.state = 8014; this.proc_stmt(); } } } - this.state = 8025; + this.state = 8019; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1098, this.context); } } } - this.state = 8028; + this.state = 8022; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 102); - this.state = 8031; + this.state = 8025; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 58) { { - this.state = 8030; + this.state = 8024; this.stmt_else(); } } - this.state = 8033; + this.state = 8027; this.match(PostgreSqlParser.KW_END); - this.state = 8034; + this.state = 8028; this.match(PostgreSqlParser.KW_CASE); - this.state = 8035; + this.state = 8029; this.match(PostgreSqlParser.SEMI); } } @@ -51658,25 +51700,25 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8038; + this.state = 8032; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 18) { { - this.state = 8037; + this.state = 8031; this.label_decl(); } } - this.state = 8044; + this.state = 8038; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_WHILE: { { - this.state = 8040; + this.state = 8034; this.match(PostgreSqlParser.KW_WHILE); - this.state = 8041; + this.state = 8035; this.expression(); } } @@ -51684,9 +51726,9 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_FOR: { { - this.state = 8042; + this.state = 8036; this.match(PostgreSqlParser.KW_FOR); - this.state = 8043; + this.state = 8037; this.for_control(); } } @@ -51696,7 +51738,7 @@ export class PostgreSqlParser extends SQLParserBase { default: break; } - this.state = 8046; + this.state = 8040; this.loop_body(); } } @@ -51721,23 +51763,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8048; + this.state = 8042; this.any_name_list(); - this.state = 8049; + this.state = 8043; this.match(PostgreSqlParser.KW_IN); - this.state = 8072; + this.state = 8066; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1107, this.context) ) { case 1: { - this.state = 8050; + this.state = 8044; this.colid(); - this.state = 8052; + this.state = 8046; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 8051; + this.state = 8045; this.execute_param_clause(); } } @@ -51746,30 +51788,30 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 8054; + this.state = 8048; this.selectstmt(); } break; case 3: { - this.state = 8055; + this.state = 8049; this.explainstmt(); } break; case 4: { - this.state = 8056; + this.state = 8050; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 8057; + this.state = 8051; this.expression(); - this.state = 8060; + this.state = 8054; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 8058; + this.state = 8052; this.match(PostgreSqlParser.KW_USING); - this.state = 8059; + this.state = 8053; this.expr_list(); } } @@ -51778,30 +51820,30 @@ export class PostgreSqlParser extends SQLParserBase { break; case 5: { - this.state = 8063; + this.state = 8057; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1105, this.context) ) { case 1: { - this.state = 8062; + this.state = 8056; this.match(PostgreSqlParser.KW_REVERSE); } break; } - this.state = 8065; + this.state = 8059; this.expression(); - this.state = 8066; + this.state = 8060; this.match(PostgreSqlParser.DOT_DOT); - this.state = 8067; + this.state = 8061; this.expression(); - this.state = 8070; + this.state = 8064; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 147) { { - this.state = 8068; + this.state = 8062; this.match(PostgreSqlParser.KW_BY); - this.state = 8069; + this.state = 8063; this.expression(); } } @@ -51832,39 +51874,39 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8075; + this.state = 8069; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 18) { { - this.state = 8074; + this.state = 8068; this.label_decl(); } } - this.state = 8077; + this.state = 8071; this.match(PostgreSqlParser.KW_FOREACH); - this.state = 8078; + this.state = 8072; this.any_name_list(); - this.state = 8081; + this.state = 8075; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 506) { { - this.state = 8079; + this.state = 8073; this.match(PostgreSqlParser.KW_SLICE); - this.state = 8080; + this.state = 8074; this.match(PostgreSqlParser.Integral); } } - this.state = 8083; + this.state = 8077; this.match(PostgreSqlParser.KW_IN); - this.state = 8084; + this.state = 8078; this.match(PostgreSqlParser.KW_ARRAY); - this.state = 8085; + this.state = 8079; this.expression(); - this.state = 8086; + this.state = 8080; this.loop_body(); } } @@ -51889,7 +51931,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8088; + this.state = 8082; _la = this.tokenStream.LA(1); if(!(_la === 167 || _la === 507)) { this.errorHandler.recoverInline(this); @@ -51898,29 +51940,29 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 8090; + this.state = 8084; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 8089; + this.state = 8083; this.any_identifier(); } } - this.state = 8094; + this.state = 8088; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 102) { { - this.state = 8092; + this.state = 8086; this.match(PostgreSqlParser.KW_WHEN); - this.state = 8093; + this.state = 8087; this.sql_expression(); } } - this.state = 8096; + this.state = 8090; this.match(PostgreSqlParser.SEMI); } } @@ -51944,35 +51986,35 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8098; + this.state = 8092; this.match(PostgreSqlParser.KW_RETURN); - this.state = 8113; + this.state = 8107; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1114, this.context) ) { case 1: { - this.state = 8099; + this.state = 8093; this.match(PostgreSqlParser.KW_NEXT); - this.state = 8100; + this.state = 8094; this.sql_expression(); } break; case 2: { - this.state = 8101; + this.state = 8095; this.match(PostgreSqlParser.KW_QUERY); - this.state = 8108; + this.state = 8102; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_EXECUTE: { - this.state = 8102; + this.state = 8096; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 8103; + this.state = 8097; this.expression(); - this.state = 8104; + this.state = 8098; this.match(PostgreSqlParser.KW_USING); - this.state = 8105; + this.state = 8099; this.expr_list(); } break; @@ -51982,7 +52024,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_WITH: case PostgreSqlParser.KW_VALUES: { - this.state = 8107; + this.state = 8101; this.selectstmt(); } break; @@ -51993,12 +52035,12 @@ export class PostgreSqlParser extends SQLParserBase { break; case 3: { - this.state = 8111; + this.state = 8105; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1113, this.context) ) { case 1: { - this.state = 8110; + this.state = 8104; this.sql_expression(); } break; @@ -52006,7 +52048,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8115; + this.state = 8109; this.match(PostgreSqlParser.SEMI); } } @@ -52031,19 +52073,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8117; + this.state = 8111; this.match(PostgreSqlParser.KW_RAISE); - this.state = 8147; + this.state = 8141; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1121, this.context) ) { case 1: { - this.state = 8119; + this.state = 8113; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1115, this.context) ) { case 1: { - this.state = 8118; + this.state = 8112; _la = this.tokenStream.LA(1); if(!(((((_la - 512)) & ~0x1F) === 0 && ((1 << (_la - 512)) & 63) !== 0))) { this.errorHandler.recoverInline(this); @@ -52055,21 +52097,21 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8133; + this.state = 8127; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1118, this.context) ) { case 1: { - this.state = 8121; + this.state = 8115; this.identifier(); } break; case 2: { { - this.state = 8122; + this.state = 8116; this.match(PostgreSqlParser.KW_SQLSTATE); - this.state = 8123; + this.state = 8117; this.sconst(); } } @@ -52077,26 +52119,26 @@ export class PostgreSqlParser extends SQLParserBase { case 3: { { - this.state = 8124; + this.state = 8118; this.sconst(); - this.state = 8131; + this.state = 8125; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 8127; + this.state = 8121; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 8125; + this.state = 8119; this.match(PostgreSqlParser.COMMA); - this.state = 8126; + this.state = 8120; this.expression(); } } - this.state = 8129; + this.state = 8123; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 6); @@ -52107,29 +52149,29 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8144; + this.state = 8138; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 8135; + this.state = 8129; this.match(PostgreSqlParser.KW_USING); { - this.state = 8136; + this.state = 8130; this.opt_raise_using_elem(); - this.state = 8141; + this.state = 8135; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 8137; + this.state = 8131; this.match(PostgreSqlParser.COMMA); - this.state = 8138; + this.state = 8132; this.opt_raise_using_elem(); } } - this.state = 8143; + this.state = 8137; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -52137,7 +52179,7 @@ export class PostgreSqlParser extends SQLParserBase { } } - this.state = 8146; + this.state = 8140; this.match(PostgreSqlParser.SEMI); } break; @@ -52164,11 +52206,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8149; + this.state = 8143; this.identifier(); - this.state = 8150; + this.state = 8144; this.match(PostgreSqlParser.EQUAL); - this.state = 8151; + this.state = 8145; this.expression(); } } @@ -52193,23 +52235,23 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8153; + this.state = 8147; this.match(PostgreSqlParser.KW_ASSERT); - this.state = 8154; + this.state = 8148; this.sql_expression(); - this.state = 8157; + this.state = 8151; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 6) { { - this.state = 8155; + this.state = 8149; this.match(PostgreSqlParser.COMMA); - this.state = 8156; + this.state = 8150; this.sql_expression(); } } - this.state = 8159; + this.state = 8153; this.match(PostgreSqlParser.SEMI); } } @@ -52235,39 +52277,39 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8161; + this.state = 8155; this.match(PostgreSqlParser.KW_LOOP); - this.state = 8165; + this.state = 8159; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1123, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 8162; + this.state = 8156; this.proc_stmt(); } } } - this.state = 8167; + this.state = 8161; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1123, this.context); } - this.state = 8168; + this.state = 8162; this.match(PostgreSqlParser.KW_END); - this.state = 8169; + this.state = 8163; this.match(PostgreSqlParser.KW_LOOP); - this.state = 8171; + this.state = 8165; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 8170; + this.state = 8164; this.any_identifier(); } } - this.state = 8173; + this.state = 8167; this.match(PostgreSqlParser.SEMI); } } @@ -52292,19 +52334,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8175; + this.state = 8169; this.stmt(); - this.state = 8177; + this.state = 8171; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 71) { { - this.state = 8176; + this.state = 8170; this.opt_execute_into(); } } - this.state = 8179; + this.state = 8173; this.match(PostgreSqlParser.SEMI); } } @@ -52329,33 +52371,33 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8181; + this.state = 8175; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 8182; + this.state = 8176; this.expression(); - this.state = 8198; + this.state = 8192; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1130, this.context) ) { case 1: { - this.state = 8184; + this.state = 8178; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 71) { { - this.state = 8183; + this.state = 8177; this.opt_execute_into(); } } - this.state = 8188; + this.state = 8182; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 8186; + this.state = 8180; this.match(PostgreSqlParser.KW_USING); - this.state = 8187; + this.state = 8181; this.expr_list(); } } @@ -52364,24 +52406,24 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 8192; + this.state = 8186; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 8190; + this.state = 8184; this.match(PostgreSqlParser.KW_USING); - this.state = 8191; + this.state = 8185; this.expr_list(); } } - this.state = 8195; + this.state = 8189; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 71) { { - this.state = 8194; + this.state = 8188; this.opt_execute_into(); } } @@ -52394,7 +52436,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8200; + this.state = 8194; this.match(PostgreSqlParser.SEMI); } } @@ -52418,19 +52460,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8202; + this.state = 8196; this.match(PostgreSqlParser.KW_INTO); - this.state = 8204; + this.state = 8198; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1131, this.context) ) { case 1: { - this.state = 8203; + this.state = 8197; this.match(PostgreSqlParser.KW_STRICT); } break; } - this.state = 8206; + this.state = 8200; this.expr_list(); } } @@ -52455,38 +52497,38 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8208; + this.state = 8202; this.match(PostgreSqlParser.KW_OPEN); - this.state = 8240; + this.state = 8234; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1138, this.context) ) { case 1: { - this.state = 8209; + this.state = 8203; this.cursor_variable(); - this.state = 8214; + this.state = 8208; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269 || _la === 324) { { - this.state = 8211; + this.state = 8205; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 8210; + this.state = 8204; this.match(PostgreSqlParser.KW_NO); } } - this.state = 8213; + this.state = 8207; this.match(PostgreSqlParser.KW_SCROLL); } } - this.state = 8216; + this.state = 8210; this.match(PostgreSqlParser.KW_FOR); - this.state = 8224; + this.state = 8218; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.OPEN_PAREN: @@ -52495,24 +52537,24 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_WITH: case PostgreSqlParser.KW_VALUES: { - this.state = 8217; + this.state = 8211; this.selectstmt(); } break; case PostgreSqlParser.KW_EXECUTE: { - this.state = 8218; + this.state = 8212; this.match(PostgreSqlParser.KW_EXECUTE); - this.state = 8219; + this.state = 8213; this.sql_expression(); - this.state = 8222; + this.state = 8216; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 100) { { - this.state = 8220; + this.state = 8214; this.match(PostgreSqlParser.KW_USING); - this.state = 8221; + this.state = 8215; this.expr_list(); } } @@ -52526,36 +52568,36 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 8226; + this.state = 8220; this.colid(); - this.state = 8238; + this.state = 8232; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 8227; + this.state = 8221; this.match(PostgreSqlParser.OPEN_PAREN); { - this.state = 8228; + this.state = 8222; this.opt_open_bound_list_item(); - this.state = 8233; + this.state = 8227; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 8229; + this.state = 8223; this.match(PostgreSqlParser.COMMA); - this.state = 8230; + this.state = 8224; this.opt_open_bound_list_item(); } } - this.state = 8235; + this.state = 8229; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 8236; + this.state = 8230; this.match(PostgreSqlParser.CLOSE_PAREN); } } @@ -52563,7 +52605,7 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8242; + this.state = 8236; this.match(PostgreSqlParser.SEMI); } } @@ -52587,19 +52629,19 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8247; + this.state = 8241; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1139, this.context) ) { case 1: { - this.state = 8244; + this.state = 8238; this.colid(); - this.state = 8245; + this.state = 8239; this.match(PostgreSqlParser.COLON_EQUALS); } break; } - this.state = 8249; + this.state = 8243; this.expression(); } } @@ -52624,35 +52666,35 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8251; + this.state = 8245; this.match(PostgreSqlParser.KW_FETCH); - this.state = 8253; + this.state = 8247; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1140, this.context) ) { case 1: { - this.state = 8252; + this.state = 8246; localContext._direction = this.opt_fetch_direction(); } break; } - this.state = 8256; + this.state = 8250; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64 || _la === 68) { { - this.state = 8255; + this.state = 8249; this.from_in(); } } - this.state = 8258; + this.state = 8252; this.cursor_variable(); - this.state = 8259; + this.state = 8253; this.match(PostgreSqlParser.KW_INTO); - this.state = 8260; + this.state = 8254; this.expr_list(); - this.state = 8261; + this.state = 8255; this.match(PostgreSqlParser.SEMI); } } @@ -52675,46 +52717,46 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 896, PostgreSqlParser.RULE_opt_fetch_direction); let _la: number; try { - this.state = 8277; + this.state = 8271; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1144, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8263; + this.state = 8257; this.match(PostgreSqlParser.KW_NEXT); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8264; + this.state = 8258; this.match(PostgreSqlParser.KW_PRIOR); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 8265; + this.state = 8259; this.match(PostgreSqlParser.KW_FIRST); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 8266; + this.state = 8260; this.match(PostgreSqlParser.KW_LAST); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 8268; + this.state = 8262; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1142, this.context) ) { case 1: { - this.state = 8267; + this.state = 8261; _la = this.tokenStream.LA(1); if(!(_la === 130 || _la === 307)) { this.errorHandler.recoverInline(this); @@ -52726,21 +52768,21 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8270; + this.state = 8264; this.expression(); } break; case 6: this.enterOuterAlt(localContext, 6); { - this.state = 8271; + this.state = 8265; this.match(PostgreSqlParser.KW_ALL); } break; case 7: this.enterOuterAlt(localContext, 7); { - this.state = 8272; + this.state = 8266; _la = this.tokenStream.LA(1); if(!(_la === 144 || _la === 210)) { this.errorHandler.recoverInline(this); @@ -52749,18 +52791,18 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 8275; + this.state = 8269; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1143, this.context) ) { case 1: { - this.state = 8273; + this.state = 8267; this.expression(); } break; case 2: { - this.state = 8274; + this.state = 8268; this.match(PostgreSqlParser.KW_ALL); } break; @@ -52789,21 +52831,21 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8279; + this.state = 8273; this.match(PostgreSqlParser.KW_MOVE); - this.state = 8281; + this.state = 8275; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1145, this.context) ) { case 1: { - this.state = 8280; + this.state = 8274; this.opt_fetch_direction(); } break; } - this.state = 8283; + this.state = 8277; this.cursor_variable(); - this.state = 8284; + this.state = 8278; this.match(PostgreSqlParser.SEMI); } } @@ -52828,81 +52870,81 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8287; + this.state = 8281; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 105) { { - this.state = 8286; + this.state = 8280; this.with_clause(); } } - this.state = 8289; + this.state = 8283; this.match(PostgreSqlParser.KW_MERGE); - this.state = 8290; + this.state = 8284; this.match(PostgreSqlParser.KW_INTO); - this.state = 8292; + this.state = 8286; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 81) { { - this.state = 8291; + this.state = 8285; this.match(PostgreSqlParser.KW_ONLY); } } - this.state = 8294; + this.state = 8288; this.table_name(); - this.state = 8296; + this.state = 8290; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 8295; + this.state = 8289; this.match(PostgreSqlParser.STAR); } } - this.state = 8302; + this.state = 8296; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266381) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 36 || _la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 8299; + this.state = 8293; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 8298; + this.state = 8292; this.match(PostgreSqlParser.KW_AS); } } - this.state = 8301; + this.state = 8295; this.colid(); } } - this.state = 8304; + this.state = 8298; this.match(PostgreSqlParser.KW_USING); - this.state = 8305; + this.state = 8299; this.data_source(); - this.state = 8306; + this.state = 8300; this.match(PostgreSqlParser.KW_ON); - this.state = 8307; + this.state = 8301; this.expression(); - this.state = 8309; + this.state = 8303; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 8308; + this.state = 8302; this.merge_when_clause(); } } - this.state = 8311; + this.state = 8305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 102); @@ -52929,29 +52971,29 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8324; + this.state = 8318; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1155, this.context) ) { case 1: { - this.state = 8314; + this.state = 8308; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 81) { { - this.state = 8313; + this.state = 8307; this.match(PostgreSqlParser.KW_ONLY); } } - this.state = 8316; + this.state = 8310; this.table_name(); - this.state = 8318; + this.state = 8312; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 9) { { - this.state = 8317; + this.state = 8311; this.match(PostgreSqlParser.STAR); } } @@ -52960,18 +53002,18 @@ export class PostgreSqlParser extends SQLParserBase { break; case 2: { - this.state = 8322; + this.state = 8316; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1154, this.context) ) { case 1: { - this.state = 8320; + this.state = 8314; this.select_no_parens(); } break; case 2: { - this.state = 8321; + this.state = 8315; this.values_clause(); } break; @@ -52979,22 +53021,22 @@ export class PostgreSqlParser extends SQLParserBase { } break; } - this.state = 8330; + this.state = 8324; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266381) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 1572823) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { + if (_la === 36 || _la === 53 || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 4294959489) !== 0) || ((((_la - 148)) & ~0x1F) === 0 && ((1 << (_la - 148)) & 4294967295) !== 0) || ((((_la - 180)) & ~0x1F) === 0 && ((1 << (_la - 180)) & 4294967295) !== 0) || ((((_la - 212)) & ~0x1F) === 0 && ((1 << (_la - 212)) & 4227989503) !== 0) || ((((_la - 244)) & ~0x1F) === 0 && ((1 << (_la - 244)) & 4294967295) !== 0) || ((((_la - 276)) & ~0x1F) === 0 && ((1 << (_la - 276)) & 4294967295) !== 0) || ((((_la - 308)) & ~0x1F) === 0 && ((1 << (_la - 308)) & 4294967295) !== 0) || ((((_la - 340)) & ~0x1F) === 0 && ((1 << (_la - 340)) & 4294967295) !== 0) || ((((_la - 372)) & ~0x1F) === 0 && ((1 << (_la - 372)) & 4294967295) !== 0) || ((((_la - 404)) & ~0x1F) === 0 && ((1 << (_la - 404)) & 4294967295) !== 0) || ((((_la - 436)) & ~0x1F) === 0 && ((1 << (_la - 436)) & 4294705151) !== 0) || ((((_la - 468)) & ~0x1F) === 0 && ((1 << (_la - 468)) & 4294967279) !== 0) || ((((_la - 500)) & ~0x1F) === 0 && ((1 << (_la - 500)) & 18350039) !== 0) || ((((_la - 547)) & ~0x1F) === 0 && ((1 << (_la - 547)) & 402696335) !== 0) || _la === 584) { { - this.state = 8327; + this.state = 8321; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 36) { { - this.state = 8326; + this.state = 8320; this.match(PostgreSqlParser.KW_AS); } } - this.state = 8329; + this.state = 8323; this.colid(); } } @@ -53020,50 +53062,50 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 904, PostgreSqlParser.RULE_merge_when_clause); let _la: number; try { - this.state = 8358; + this.state = 8352; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1162, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8332; + this.state = 8326; this.match(PostgreSqlParser.KW_WHEN); - this.state = 8333; + this.state = 8327; this.match(PostgreSqlParser.KW_MATCHED); - this.state = 8336; + this.state = 8330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 33) { { - this.state = 8334; + this.state = 8328; this.match(PostgreSqlParser.KW_AND); - this.state = 8335; + this.state = 8329; this.expression(); } } - this.state = 8338; + this.state = 8332; this.match(PostgreSqlParser.KW_THEN); - this.state = 8343; + this.state = 8337; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_UPDATE: { - this.state = 8339; + this.state = 8333; this.merge_update(); } break; case PostgreSqlParser.KW_DELETE: { - this.state = 8340; + this.state = 8334; this.match(PostgreSqlParser.KW_DELETE); } break; case PostgreSqlParser.KW_DO: { - this.state = 8341; + this.state = 8335; this.match(PostgreSqlParser.KW_DO); - this.state = 8342; + this.state = 8336; this.match(PostgreSqlParser.KW_NOTHING); } break; @@ -53075,40 +53117,40 @@ export class PostgreSqlParser extends SQLParserBase { case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8345; + this.state = 8339; this.match(PostgreSqlParser.KW_WHEN); - this.state = 8346; + this.state = 8340; this.match(PostgreSqlParser.KW_NOT); - this.state = 8347; + this.state = 8341; this.match(PostgreSqlParser.KW_MATCHED); - this.state = 8350; + this.state = 8344; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 33) { { - this.state = 8348; + this.state = 8342; this.match(PostgreSqlParser.KW_AND); - this.state = 8349; + this.state = 8343; this.expression(); } } - this.state = 8352; + this.state = 8346; this.match(PostgreSqlParser.KW_THEN); - this.state = 8356; + this.state = 8350; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_INSERT: { - this.state = 8353; + this.state = 8347; this.merge_insert(); } break; case PostgreSqlParser.KW_DO: { - this.state = 8354; + this.state = 8348; this.match(PostgreSqlParser.KW_DO); - this.state = 8355; + this.state = 8349; this.match(PostgreSqlParser.KW_NOTHING); } break; @@ -53140,26 +53182,26 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8360; + this.state = 8354; this.match(PostgreSqlParser.KW_INSERT); - this.state = 8362; + this.state = 8356; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 2) { { - this.state = 8361; + this.state = 8355; this.opt_column_list(); } } - this.state = 8367; + this.state = 8361; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 463) { { - this.state = 8364; + this.state = 8358; this.match(PostgreSqlParser.KW_OVERRIDING); - this.state = 8365; + this.state = 8359; _la = this.tokenStream.LA(1); if(!(_la === 99 || _la === 349)) { this.errorHandler.recoverInline(this); @@ -53168,12 +53210,12 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 8366; + this.state = 8360; this.match(PostgreSqlParser.KW_VALUE); } } - this.state = 8369; + this.state = 8363; this.default_values_or_values(); } } @@ -53199,57 +53241,57 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8371; + this.state = 8365; this.match(PostgreSqlParser.KW_UPDATE); - this.state = 8372; + this.state = 8366; this.match(PostgreSqlParser.KW_SET); - this.state = 8390; + this.state = 8384; this.errorHandler.sync(this); alternative = 1; do { switch (alternative) { case 1: { - this.state = 8390; + this.state = 8384; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1166, this.context) ) { case 1: { - this.state = 8373; + this.state = 8367; this.column_name(); - this.state = 8374; + this.state = 8368; this.match(PostgreSqlParser.EQUAL); - this.state = 8375; + this.state = 8369; this.exprofdefault(); } break; case 2: { - this.state = 8377; + this.state = 8371; this.opt_column_list(); - this.state = 8378; + this.state = 8372; this.match(PostgreSqlParser.EQUAL); - this.state = 8379; + this.state = 8373; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8380; + this.state = 8374; this.exprofdefault(); - this.state = 8385; + this.state = 8379; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 8381; + this.state = 8375; this.match(PostgreSqlParser.COMMA); - this.state = 8382; + this.state = 8376; this.exprofdefault(); } } - this.state = 8387; + this.state = 8381; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 8388; + this.state = 8382; this.match(PostgreSqlParser.CLOSE_PAREN); } break; @@ -53259,7 +53301,7 @@ export class PostgreSqlParser extends SQLParserBase { default: throw new antlr.NoViableAltException(this); } - this.state = 8392; + this.state = 8386; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1167, this.context); } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); @@ -53284,44 +53326,44 @@ export class PostgreSqlParser extends SQLParserBase { this.enterRule(localContext, 910, PostgreSqlParser.RULE_default_values_or_values); let _la: number; try { - this.state = 8408; + this.state = 8402; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_VALUES: this.enterOuterAlt(localContext, 1); { - this.state = 8394; + this.state = 8388; this.match(PostgreSqlParser.KW_VALUES); - this.state = 8395; + this.state = 8389; this.match(PostgreSqlParser.OPEN_PAREN); - this.state = 8396; + this.state = 8390; this.exprofdefault(); - this.state = 8401; + this.state = 8395; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 6) { { { - this.state = 8397; + this.state = 8391; this.match(PostgreSqlParser.COMMA); - this.state = 8398; + this.state = 8392; this.exprofdefault(); } } - this.state = 8403; + this.state = 8397; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 8404; + this.state = 8398; this.match(PostgreSqlParser.CLOSE_PAREN); } break; case PostgreSqlParser.KW_DEFAULT: this.enterOuterAlt(localContext, 2); { - this.state = 8406; + this.state = 8400; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 8407; + this.state = 8401; this.match(PostgreSqlParser.KW_VALUES); } break; @@ -53347,20 +53389,20 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new ExprofdefaultContext(this.context, this.state); this.enterRule(localContext, 912, PostgreSqlParser.RULE_exprofdefault); try { - this.state = 8412; + this.state = 8406; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1170, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8410; + this.state = 8404; this.sortby(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8411; + this.state = 8405; this.match(PostgreSqlParser.KW_DEFAULT); } break; @@ -53386,11 +53428,11 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8414; + this.state = 8408; this.match(PostgreSqlParser.KW_CLOSE); - this.state = 8415; + this.state = 8409; this.cursor_variable(); - this.state = 8416; + this.state = 8410; this.match(PostgreSqlParser.SEMI); } } @@ -53414,9 +53456,9 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8418; + this.state = 8412; this.match(PostgreSqlParser.KW_NULL); - this.state = 8419; + this.state = 8413; this.match(PostgreSqlParser.SEMI); } } @@ -53441,7 +53483,7 @@ export class PostgreSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 8421; + this.state = 8415; _la = this.tokenStream.LA(1); if(!(_la === 161 || _la === 319)) { this.errorHandler.recoverInline(this); @@ -53450,29 +53492,29 @@ export class PostgreSqlParser extends SQLParserBase { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 8427; + this.state = 8421; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 33) { { - this.state = 8422; + this.state = 8416; this.match(PostgreSqlParser.KW_AND); - this.state = 8424; + this.state = 8418; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 269) { { - this.state = 8423; + this.state = 8417; this.match(PostgreSqlParser.KW_NO); } } - this.state = 8426; + this.state = 8420; this.match(PostgreSqlParser.KW_CHAIN); } } - this.state = 8429; + this.state = 8423; this.match(PostgreSqlParser.SEMI); } } @@ -53494,39 +53536,33 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Stmt_setContext(this.context, this.state); this.enterRule(localContext, 920, PostgreSqlParser.RULE_stmt_set); try { - this.state = 8443; + this.state = 8437; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case PostgreSqlParser.KW_SET: this.enterOuterAlt(localContext, 1); { - this.state = 8431; + this.state = 8425; this.match(PostgreSqlParser.KW_SET); - this.state = 8432; + this.state = 8426; this.any_name(); - this.state = 8433; + this.state = 8427; this.match(PostgreSqlParser.KW_TO); - this.state = 8434; + this.state = 8428; this.match(PostgreSqlParser.KW_DEFAULT); - this.state = 8435; + this.state = 8429; this.match(PostgreSqlParser.SEMI); } break; case PostgreSqlParser.KW_RESET: this.enterOuterAlt(localContext, 2); { - this.state = 8437; + this.state = 8431; this.match(PostgreSqlParser.KW_RESET); - this.state = 8440; + this.state = 8434; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -53908,6 +53944,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -53920,20 +53957,20 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.PLSQLIDENTIFIER: case PostgreSqlParser.EscapeStringConstant: { - this.state = 8438; + this.state = 8432; this.any_name(); } break; case PostgreSqlParser.KW_ALL: { - this.state = 8439; + this.state = 8433; this.match(PostgreSqlParser.KW_ALL); } break; default: throw new antlr.NoViableAltException(this); } - this.state = 8442; + this.state = 8436; this.match(PostgreSqlParser.SEMI); } break; @@ -53959,16 +53996,10 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Cursor_variableContext(this.context, this.state); this.enterRule(localContext, 922, PostgreSqlParser.RULE_cursor_variable); try { - this.state = 8447; + this.state = 8441; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case PostgreSqlParser.KW_AND: - case PostgreSqlParser.KW_ARRAY: - case PostgreSqlParser.KW_COLLATE: - case PostgreSqlParser.KW_CONSTRAINT: case PostgreSqlParser.KW_DEFAULT: - case PostgreSqlParser.KW_DO: - case PostgreSqlParser.KW_FETCH: case PostgreSqlParser.KW_IS: case PostgreSqlParser.KW_OUTER: case PostgreSqlParser.KW_OVER: @@ -54350,6 +54381,7 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.KW_EXCEPTION: case PostgreSqlParser.KW_ASSERT: case PostgreSqlParser.KW_OPEN: + case PostgreSqlParser.KW_PUBLIC: case PostgreSqlParser.KW_SKIP_LOCKED: case PostgreSqlParser.KW_BUFFER_USAGE_LIMIT: case PostgreSqlParser.Identifier: @@ -54363,14 +54395,14 @@ export class PostgreSqlParser extends SQLParserBase { case PostgreSqlParser.EscapeStringConstant: this.enterOuterAlt(localContext, 1); { - this.state = 8445; + this.state = 8439; this.colid(); } break; case PostgreSqlParser.PARAM: this.enterOuterAlt(localContext, 2); { - this.state = 8446; + this.state = 8440; this.match(PostgreSqlParser.PARAM); } break; @@ -54400,57 +54432,57 @@ export class PostgreSqlParser extends SQLParserBase { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 8449; + this.state = 8443; this.match(PostgreSqlParser.KW_EXCEPTION); - this.state = 8466; + this.state = 8460; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 8450; + this.state = 8444; this.match(PostgreSqlParser.KW_WHEN); { - this.state = 8451; + this.state = 8445; this.proc_condition(); - this.state = 8456; + this.state = 8450; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 82) { { { - this.state = 8452; + this.state = 8446; this.match(PostgreSqlParser.KW_OR); - this.state = 8453; + this.state = 8447; this.proc_condition(); } } - this.state = 8458; + this.state = 8452; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } - this.state = 8459; + this.state = 8453; this.match(PostgreSqlParser.KW_THEN); - this.state = 8463; + this.state = 8457; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1177, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 8460; + this.state = 8454; this.proc_stmt(); } } } - this.state = 8465; + this.state = 8459; this.errorHandler.sync(this); alternative = this.interpreter.adaptivePredict(this.tokenStream, 1177, this.context); } } } - this.state = 8468; + this.state = 8462; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } while (_la === 102); @@ -54474,22 +54506,22 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Proc_conditionContext(this.context, this.state); this.enterRule(localContext, 926, PostgreSqlParser.RULE_proc_condition); try { - this.state = 8473; + this.state = 8467; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1179, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8470; + this.state = 8464; this.any_identifier(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8471; + this.state = 8465; this.match(PostgreSqlParser.KW_SQLSTATE); - this.state = 8472; + this.state = 8466; this.sconst(); } break; @@ -54513,21 +54545,21 @@ export class PostgreSqlParser extends SQLParserBase { let localContext = new Any_identifierContext(this.context, this.state); this.enterRule(localContext, 928, PostgreSqlParser.RULE_any_identifier); try { - this.state = 8477; + this.state = 8471; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1180, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 8475; + this.state = 8469; this.colid(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 8476; - this.plsql_unreserved_keyword(); + this.state = 8470; + this.unreserved_keyword(); } break; } @@ -54546,113 +54578,81 @@ export class PostgreSqlParser extends SQLParserBase { } return localContext; } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext { - let localContext = new Plsql_unreserved_keywordContext(this.context, this.state); - this.enterRule(localContext, 930, PostgreSqlParser.RULE_plsql_unreserved_keyword); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 8479; - _la = this.tokenStream.LA(1); - if(!(((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 286266373) !== 0) || ((((_la - 116)) & ~0x1F) === 0 && ((1 << (_la - 116)) & 268451969) !== 0) || ((((_la - 153)) & ~0x1F) === 0 && ((1 << (_la - 153)) & 540945) !== 0) || _la === 207 || _la === 210 || ((((_la - 241)) & ~0x1F) === 0 && ((1 << (_la - 241)) & 419430657) !== 0) || ((((_la - 279)) & ~0x1F) === 0 && ((1 << (_la - 279)) & 268451841) !== 0) || ((((_la - 313)) & ~0x1F) === 0 && ((1 << (_la - 313)) & 1051713) !== 0) || _la === 360 || _la === 433 || _la === 434 || ((((_la - 477)) & ~0x1F) === 0 && ((1 << (_la - 477)) & 3959414785) !== 0) || ((((_la - 509)) & ~0x1F) === 0 && ((1 << (_la - 509)) & 3071) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public sql_expression(): Sql_expressionContext { let localContext = new Sql_expressionContext(this.context, this.state); - this.enterRule(localContext, 932, PostgreSqlParser.RULE_sql_expression); + this.enterRule(localContext, 930, PostgreSqlParser.RULE_sql_expression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 8482; + this.state = 8474; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1181, this.context) ) { case 1: { - this.state = 8481; + this.state = 8473; this.target_list(); } break; } - this.state = 8485; + this.state = 8477; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1182, this.context) ) { case 1: { - this.state = 8484; + this.state = 8476; this.into_clause(); } break; } - this.state = 8488; + this.state = 8480; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 64) { { - this.state = 8487; + this.state = 8479; this.from_clause(); } } - this.state = 8491; + this.state = 8483; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 103) { { - this.state = 8490; + this.state = 8482; this.where_clause(); } } - this.state = 8494; + this.state = 8486; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 66) { { - this.state = 8493; + this.state = 8485; this.group_clause(); } } - this.state = 8498; + this.state = 8490; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 67) { { - this.state = 8496; + this.state = 8488; this.match(PostgreSqlParser.KW_HAVING); - this.state = 8497; + this.state = 8489; this.expression(); } } - this.state = 8501; + this.state = 8493; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 1187, this.context) ) { case 1: { - this.state = 8500; + this.state = 8492; this.window_clause(); } break; @@ -54731,7 +54731,7 @@ export class PostgreSqlParser extends SQLParserBase { } public static readonly _serializedATN: number[] = [ - 4,1,590,8504,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, + 4,1,590,8496,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, @@ -54812,8 +54812,8 @@ export class PostgreSqlParser extends SQLParserBase { 2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450, 7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455, 2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461, - 7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466,7,466, - 1,0,5,0,936,8,0,10,0,12,0,939,9,0,1,0,1,0,1,1,1,1,3,1,945,8,1,1, + 7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,1,0,5,0,934, + 8,0,10,0,12,0,937,9,0,1,0,1,0,1,1,1,1,3,1,943,8,1,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, @@ -54821,803 +54821,802 @@ export class PostgreSqlParser extends SQLParserBase { 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, 2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1, - 2,1,2,1,2,1,2,1,2,1,2,3,2,1065,8,2,3,2,1067,8,2,1,3,1,3,1,3,1,4, - 1,4,1,4,1,4,3,4,1076,8,4,1,4,5,4,1079,8,4,10,4,12,4,1082,9,4,1,5, - 1,5,1,5,3,5,1087,8,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, + 2,1,2,1,2,3,2,1063,8,2,3,2,1065,8,2,1,3,1,3,1,3,1,4,1,4,1,4,1,4, + 3,4,1074,8,4,1,4,5,4,1077,8,4,10,4,12,4,1080,9,4,1,5,1,5,1,5,3,5, + 1085,8,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, 1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5, - 1,5,1,5,1,5,1,5,1,5,1,5,3,5,1122,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6, - 1,6,3,6,1132,8,6,1,7,1,7,1,7,1,7,3,7,1138,8,7,1,7,5,7,1141,8,7,10, - 7,12,7,1144,9,7,1,8,1,8,1,8,1,8,3,8,1150,8,8,1,8,5,8,1153,8,8,10, - 8,12,8,1156,9,8,1,9,1,9,1,9,1,9,3,9,1162,8,9,1,9,1,9,1,9,1,9,1,9, - 1,10,1,10,1,10,1,10,3,10,1173,8,10,1,10,1,10,1,11,1,11,5,11,1179, - 8,11,10,11,12,11,1182,9,11,1,11,3,11,1185,8,11,1,11,1,11,1,11,1, - 11,1,11,1,11,1,11,1,11,1,11,1,11,3,11,1197,8,11,1,11,1,11,1,11,1, - 11,3,11,1203,8,11,1,12,1,12,1,12,1,12,3,12,1209,8,12,1,12,1,12,3, - 12,1213,8,12,1,12,1,12,1,12,3,12,1218,8,12,1,12,1,12,3,12,1222,8, - 12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1235, - 8,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1245,8,12,3,12, - 1247,8,12,1,13,1,13,1,13,1,13,3,13,1253,8,13,1,13,5,13,1256,8,13, - 10,13,12,13,1259,9,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1, - 15,1,15,3,15,1271,8,15,1,15,3,15,1274,8,15,1,15,1,15,1,15,3,15,1279, - 8,15,1,15,5,15,1282,8,15,10,15,12,15,1285,9,15,1,16,1,16,1,17,1, - 17,1,17,1,17,1,17,1,17,3,17,1295,8,17,1,18,1,18,3,18,1299,8,18,1, - 18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,1311,8,19,1, - 20,1,20,3,20,1315,8,20,1,20,3,20,1318,8,20,1,20,1,20,3,20,1322,8, - 20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1334,8, - 21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1, - 21,1,21,1,21,1,21,3,21,1352,8,21,1,22,1,22,1,22,5,22,1357,8,22,10, - 22,12,22,1360,9,22,1,23,1,23,1,23,5,23,1365,8,23,10,23,12,23,1368, - 9,23,1,24,1,24,3,24,1372,8,24,1,25,1,25,1,25,1,25,1,25,3,25,1379, - 8,25,1,26,1,26,1,26,1,26,1,26,1,26,3,26,1387,8,26,1,27,1,27,1,27, - 1,27,3,27,1393,8,27,1,28,1,28,1,28,1,28,1,28,1,28,3,28,1401,8,28, - 1,28,1,28,1,28,1,28,1,28,1,28,3,28,1409,8,28,1,29,1,29,3,29,1413, - 8,29,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31, - 3,31,1427,8,31,1,32,1,32,1,32,3,32,1432,8,32,1,33,1,33,1,33,3,33, - 1437,8,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34, - 1449,8,34,1,35,1,35,1,35,1,35,3,35,1455,8,35,1,35,1,35,1,36,1,36, - 1,37,1,37,1,37,1,38,1,38,1,38,3,38,1467,8,38,1,38,1,38,1,38,3,38, - 1472,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,1482,8,38, - 1,38,1,38,1,38,1,38,3,38,1488,8,38,1,38,1,38,1,38,3,38,1493,8,38, - 1,38,1,38,1,38,1,38,1,38,1,38,3,38,1501,8,38,1,38,1,38,1,38,3,38, - 1506,8,38,1,38,1,38,1,38,1,38,1,38,3,38,1513,8,38,1,38,1,38,1,38, - 3,38,1518,8,38,1,38,1,38,1,38,3,38,1523,8,38,1,38,1,38,1,38,1,38, - 1,38,1,38,1,38,1,38,3,38,1533,8,38,1,38,1,38,1,38,3,38,1538,8,38, - 1,38,1,38,1,38,3,38,1543,8,38,1,38,1,38,1,38,1,38,1,38,3,38,1550, - 8,38,1,38,1,38,3,38,1554,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, - 1,38,1,38,1,38,1,38,1,38,3,38,1568,8,38,1,38,1,38,1,38,1,38,3,38, - 1574,8,38,1,38,1,38,1,38,1,38,3,38,1580,8,38,1,38,1,38,1,38,3,38, - 1585,8,38,1,39,1,39,1,39,5,39,1590,8,39,10,39,12,39,1593,9,39,1, - 40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,1604,8,40,1,41,1, - 41,1,41,1,41,5,41,1610,8,41,10,41,12,41,1613,9,41,1,41,1,41,1,42, - 1,42,1,42,3,42,1620,8,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43, - 1,44,1,44,1,44,1,44,1,44,1,44,3,44,1636,8,44,1,45,1,45,1,45,1,45, - 1,46,1,46,1,46,3,46,1645,8,46,1,46,1,46,1,46,1,46,1,46,5,46,1652, - 8,46,10,46,12,46,1655,9,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1663, - 8,46,1,46,1,46,3,46,1667,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46, - 1,46,1,46,1,46,3,46,1679,8,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46, - 1687,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1697,8,46, + 1,5,1,5,1,5,3,5,1120,8,5,1,6,1,6,1,6,1,6,1,6,1,6,1,6,1,6,3,6,1130, + 8,6,1,7,1,7,1,7,1,7,3,7,1136,8,7,1,7,5,7,1139,8,7,10,7,12,7,1142, + 9,7,1,8,1,8,1,8,1,8,3,8,1148,8,8,1,8,5,8,1151,8,8,10,8,12,8,1154, + 9,8,1,9,1,9,1,9,1,9,3,9,1160,8,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1, + 10,1,10,3,10,1171,8,10,1,10,1,10,1,11,1,11,5,11,1177,8,11,10,11, + 12,11,1180,9,11,1,11,3,11,1183,8,11,1,11,1,11,1,11,1,11,1,11,1,11, + 1,11,1,11,1,11,1,11,3,11,1195,8,11,1,11,1,11,1,11,1,11,3,11,1201, + 8,11,1,12,1,12,1,12,1,12,3,12,1207,8,12,1,12,1,12,3,12,1211,8,12, + 1,12,1,12,1,12,3,12,1216,8,12,1,12,1,12,3,12,1220,8,12,1,12,1,12, + 1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1233,8,12,1,12, + 1,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,1243,8,12,3,12,1245,8,12, + 1,13,1,13,1,13,1,13,3,13,1251,8,13,1,13,5,13,1254,8,13,10,13,12, + 13,1257,9,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,3, + 15,1269,8,15,1,15,3,15,1272,8,15,1,15,1,15,1,15,3,15,1277,8,15,1, + 15,5,15,1280,8,15,10,15,12,15,1283,9,15,1,16,1,16,1,17,1,17,1,17, + 1,17,1,17,1,17,3,17,1293,8,17,1,18,1,18,3,18,1297,8,18,1,18,1,18, + 1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,3,19,1309,8,19,1,20,1,20, + 3,20,1313,8,20,1,20,3,20,1316,8,20,1,20,1,20,3,20,1320,8,20,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1332,8,21,1,21, + 1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21, + 1,21,1,21,3,21,1350,8,21,1,22,1,22,1,22,5,22,1355,8,22,10,22,12, + 22,1358,9,22,1,23,1,23,1,23,5,23,1363,8,23,10,23,12,23,1366,9,23, + 1,24,1,24,3,24,1370,8,24,1,25,1,25,1,25,1,25,1,25,3,25,1377,8,25, + 1,26,1,26,1,26,1,26,1,26,1,26,3,26,1385,8,26,1,27,1,27,1,27,1,27, + 3,27,1391,8,27,1,28,1,28,1,28,1,28,1,28,1,28,3,28,1399,8,28,1,28, + 1,28,1,28,1,28,1,28,1,28,3,28,1407,8,28,1,29,1,29,3,29,1411,8,29, + 1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,3,31, + 1425,8,31,1,32,1,32,1,32,3,32,1430,8,32,1,33,1,33,1,33,3,33,1435, + 8,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,3,34,1447, + 8,34,1,35,1,35,1,35,1,35,3,35,1453,8,35,1,35,1,35,1,36,1,36,1,37, + 1,37,1,37,1,38,1,38,1,38,3,38,1465,8,38,1,38,1,38,1,38,3,38,1470, + 8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,1480,8,38,1,38, + 1,38,1,38,1,38,3,38,1486,8,38,1,38,1,38,1,38,3,38,1491,8,38,1,38, + 1,38,1,38,1,38,1,38,1,38,3,38,1499,8,38,1,38,1,38,1,38,3,38,1504, + 8,38,1,38,1,38,1,38,1,38,1,38,3,38,1511,8,38,1,38,1,38,1,38,3,38, + 1516,8,38,1,38,1,38,1,38,3,38,1521,8,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,3,38,1531,8,38,1,38,1,38,1,38,3,38,1536,8,38,1,38, + 1,38,1,38,3,38,1541,8,38,1,38,1,38,1,38,1,38,1,38,3,38,1548,8,38, + 1,38,1,38,3,38,1552,8,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38, + 1,38,1,38,1,38,1,38,3,38,1566,8,38,1,38,1,38,1,38,1,38,3,38,1572, + 8,38,1,38,1,38,1,38,1,38,3,38,1578,8,38,1,38,1,38,1,38,3,38,1583, + 8,38,1,39,1,39,1,39,5,39,1588,8,39,10,39,12,39,1591,9,39,1,40,1, + 40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,3,40,1602,8,40,1,41,1,41,1, + 41,1,41,5,41,1608,8,41,10,41,12,41,1611,9,41,1,41,1,41,1,42,1,42, + 1,42,3,42,1618,8,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44, + 1,44,1,44,1,44,1,44,1,44,3,44,1634,8,44,1,45,1,45,1,45,1,45,1,46, + 1,46,1,46,3,46,1643,8,46,1,46,1,46,1,46,1,46,1,46,5,46,1650,8,46, + 10,46,12,46,1653,9,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1661,8, + 46,1,46,1,46,3,46,1665,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1, + 46,1,46,1,46,3,46,1677,8,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1685, + 8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1695,8,46,1,46, 1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46, - 1,46,1,46,1,46,1,46,1,46,3,46,1717,8,46,1,46,1,46,1,46,3,46,1722, - 8,46,1,46,3,46,1725,8,46,1,46,1,46,1,46,1,46,1,46,3,46,1732,8,46, - 1,46,3,46,1735,8,46,1,46,1,46,3,46,1739,8,46,1,46,1,46,3,46,1743, - 8,46,1,46,3,46,1746,8,46,1,46,1,46,1,46,3,46,1751,8,46,1,46,1,46, - 1,46,3,46,1756,8,46,1,46,1,46,3,46,1760,8,46,1,46,1,46,1,46,1,46, - 1,46,1,46,1,46,3,46,1769,8,46,1,46,1,46,1,46,1,46,3,46,1775,8,46, - 1,46,1,46,3,46,1779,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46, - 1788,8,46,1,46,3,46,1791,8,46,1,46,1,46,1,46,1,46,3,46,1797,8,46, - 1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1806,8,46,1,46,1,46,1,46, - 1,46,1,46,1,46,1,46,1,46,4,46,1816,8,46,11,46,12,46,1817,1,46,1, - 46,3,46,1822,8,46,1,46,1,46,3,46,1826,8,46,1,46,1,46,1,46,3,46,1831, - 8,46,1,46,3,46,1834,8,46,1,46,1,46,1,46,1,46,3,46,1840,8,46,4,46, - 1842,8,46,11,46,12,46,1843,1,46,1,46,3,46,1848,8,46,1,46,1,46,1, - 46,1,46,3,46,1854,8,46,1,46,1,46,3,46,1858,8,46,1,46,1,46,1,46,3, - 46,1863,8,46,1,46,1,46,1,46,3,46,1868,8,46,1,46,1,46,3,46,1872,8, - 46,1,46,3,46,1875,8,46,1,47,1,47,1,47,1,47,1,47,3,47,1882,8,47,1, - 48,1,48,1,49,1,49,1,49,1,50,1,50,1,50,1,50,5,50,1893,8,50,10,50, - 12,50,1896,9,50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52, - 3,52,1908,8,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53, - 5,53,1920,8,53,10,53,12,53,1923,9,53,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1939,8,53,1,54,1, - 54,1,54,1,54,1,54,1,54,5,54,1947,8,54,10,54,12,54,1950,9,54,1,55, - 1,55,1,55,1,55,3,55,1956,8,55,1,55,1,55,1,55,3,55,1961,8,55,1,55, - 1,55,3,55,1965,8,55,1,55,1,55,1,55,1,55,1,55,3,55,1972,8,55,1,55, - 1,55,1,55,3,55,1977,8,55,1,55,3,55,1980,8,55,3,55,1982,8,55,1,56, - 1,56,1,56,3,56,1987,8,56,1,57,1,57,3,57,1991,8,57,1,57,1,57,3,57, - 1995,8,57,1,57,1,57,3,57,1999,8,57,1,57,1,57,1,57,3,57,2004,8,57, - 1,57,3,57,2007,8,57,1,57,1,57,3,57,2011,8,57,1,57,3,57,2014,8,57, - 1,57,1,57,3,57,2018,8,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,2026, - 8,57,1,57,1,57,1,57,3,57,2031,8,57,1,57,3,57,2034,8,57,1,57,1,57, - 3,57,2038,8,57,1,58,1,58,1,58,1,58,3,58,2044,8,58,1,58,1,58,1,58, - 1,58,1,58,1,58,1,58,3,58,2053,8,58,1,58,1,58,3,58,2057,8,58,1,58, - 1,58,1,58,1,58,5,58,2063,8,58,10,58,12,58,2066,9,58,1,58,1,58,1, - 58,1,58,5,58,2072,8,58,10,58,12,58,2075,9,58,1,58,1,58,3,58,2079, - 8,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,5,59,2089,8,59,10,59, - 12,59,2092,9,59,1,59,1,59,3,59,2096,8,59,1,60,1,60,3,60,2100,8,60, - 1,60,1,60,3,60,2104,8,60,1,60,1,60,1,60,3,60,2109,8,60,1,60,1,60, - 3,60,2113,8,60,1,60,3,60,2116,8,60,1,60,3,60,2119,8,60,1,60,3,60, - 2122,8,60,1,60,3,60,2125,8,60,1,60,3,60,2128,8,60,1,60,1,60,1,60, - 3,60,2133,8,60,1,60,3,60,2136,8,60,1,60,3,60,2139,8,60,1,60,3,60, - 2142,8,60,1,60,3,60,2145,8,60,1,60,3,60,2148,8,60,1,60,1,60,1,60, - 1,60,3,60,2154,8,60,1,60,1,60,3,60,2158,8,60,1,60,3,60,2161,8,60, - 1,60,3,60,2164,8,60,1,60,3,60,2167,8,60,1,60,3,60,2170,8,60,3,60, - 2172,8,60,1,61,1,61,1,61,1,61,1,61,3,61,2179,8,61,1,62,1,62,1,62, - 1,62,5,62,2185,8,62,10,62,12,62,2188,9,62,1,62,1,62,1,63,1,63,1, - 63,5,63,2195,8,63,10,63,12,63,2198,9,63,1,64,1,64,1,64,1,64,1,64, - 5,64,2205,8,64,10,64,12,64,2208,9,64,1,64,1,64,3,64,2212,8,64,1, - 64,3,64,2215,8,64,1,65,1,65,1,65,3,65,2220,8,65,1,65,5,65,2223,8, - 65,10,65,12,65,2226,9,65,1,65,1,65,3,65,2230,8,65,1,65,3,65,2233, - 8,65,1,66,1,66,1,66,3,66,2238,8,66,1,66,1,66,1,66,1,66,1,66,1,66, - 1,66,3,66,2247,8,66,3,66,2249,8,66,1,66,1,66,3,66,2253,8,66,1,66, - 3,66,2256,8,66,1,66,1,66,3,66,2260,8,66,1,66,5,66,2263,8,66,10,66, - 12,66,2266,9,66,1,67,1,67,3,67,2270,8,67,1,67,1,67,3,67,2274,8,67, - 1,67,3,67,2277,8,67,1,67,1,67,3,67,2281,8,67,1,68,3,68,2284,8,68, - 1,68,1,68,1,68,3,68,2289,8,68,1,68,3,68,2292,8,68,1,68,1,68,1,68, - 3,68,2297,8,68,1,68,3,68,2300,8,68,1,68,1,68,3,68,2304,8,68,1,68, - 3,68,2307,8,68,1,68,3,68,2310,8,68,1,68,1,68,1,68,3,68,2315,8,68, - 1,68,3,68,2318,8,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,2326,8,68, - 1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,4,68,2336,8,68,11,68,12, - 68,2337,1,68,1,68,3,68,2342,8,68,1,68,1,68,1,68,1,68,1,68,3,68,2349, - 8,68,1,68,1,68,1,68,3,68,2354,8,68,1,68,3,68,2357,8,68,1,68,3,68, - 2360,8,68,1,68,3,68,2363,8,68,1,69,1,69,1,69,3,69,2368,8,69,1,70, - 1,70,1,71,1,71,1,71,1,71,1,71,5,71,2377,8,71,10,71,12,71,2380,9, - 71,1,71,1,71,1,71,3,71,2385,8,71,1,71,1,71,3,71,2389,8,71,1,71,3, - 71,2392,8,71,1,71,3,71,2395,8,71,1,71,5,71,2398,8,71,10,71,12,71, - 2401,9,71,1,71,1,71,5,71,2405,8,71,10,71,12,71,2408,9,71,3,71,2410, - 8,71,1,71,1,71,3,71,2414,8,71,1,71,1,71,1,71,1,71,5,71,2420,8,71, - 10,71,12,71,2423,9,71,1,71,1,71,3,71,2427,8,71,1,71,3,71,2430,8, - 71,1,71,3,71,2433,8,71,1,71,1,71,1,71,1,71,1,71,3,71,2440,8,71,1, - 71,5,71,2443,8,71,10,71,12,71,2446,9,71,1,71,1,71,1,71,1,71,1,71, - 1,71,3,71,2454,8,71,1,71,3,71,2457,8,71,1,71,3,71,2460,8,71,1,71, - 5,71,2463,8,71,10,71,12,71,2466,9,71,3,71,2468,8,71,1,72,1,72,1, - 72,1,72,1,73,1,73,1,73,1,73,5,73,2478,8,73,10,73,12,73,2481,9,73, - 1,73,1,73,1,74,1,74,1,74,5,74,2488,8,74,10,74,12,74,2491,9,74,1, - 75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, - 77,3,77,2507,8,77,1,78,1,78,3,78,2511,8,78,1,78,1,78,3,78,2515,8, - 78,3,78,2517,8,78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,81,1, - 81,1,81,1,81,1,81,1,81,1,81,3,81,2534,8,81,3,81,2536,8,81,1,82,1, - 82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,5,83,2550,8, - 83,10,83,12,83,2553,9,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84, - 3,84,2563,8,84,1,84,3,84,2566,8,84,1,84,3,84,2569,8,84,1,85,1,85, - 1,85,1,86,1,86,1,86,1,86,3,86,2578,8,86,1,87,1,87,1,87,1,87,1,87, - 1,87,1,87,3,87,2587,8,87,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,90, - 1,90,1,90,1,90,1,91,1,91,1,91,3,91,2603,8,91,1,91,3,91,2606,8,91, - 1,91,3,91,2609,8,91,1,91,1,91,1,91,1,91,5,91,2615,8,91,10,91,12, - 91,2618,9,91,1,91,3,91,2621,8,91,1,91,1,91,1,92,1,92,1,92,3,92,2628, - 8,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,3,93,2637,8,93,1,93,1,93, - 3,93,2641,8,93,1,93,1,93,1,93,1,93,3,93,2647,8,93,1,94,1,94,3,94, - 2651,8,94,1,94,3,94,2654,8,94,1,94,3,94,2657,8,94,1,94,3,94,2660, - 8,94,1,94,3,94,2663,8,94,1,95,1,95,1,95,1,95,3,95,2669,8,95,1,96, - 1,96,3,96,2673,8,96,1,96,1,96,1,96,3,96,2678,8,96,1,96,1,96,3,96, - 2682,8,96,1,96,3,96,2685,8,96,1,96,3,96,2688,8,96,1,96,3,96,2691, - 8,96,1,96,1,96,1,96,3,96,2696,8,96,1,97,1,97,1,97,1,97,3,97,2702, - 8,97,1,97,1,97,3,97,2706,8,97,1,98,1,98,3,98,2710,8,98,1,98,1,98, - 3,98,2714,8,98,1,98,1,98,4,98,2718,8,98,11,98,12,98,2719,3,98,2722, - 8,98,1,99,1,99,1,99,3,99,2727,8,99,1,99,1,99,4,99,2731,8,99,11,99, - 12,99,2732,1,100,1,100,1,100,1,100,3,100,2739,8,100,1,100,1,100, - 3,100,2743,8,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, - 1,100,1,100,1,100,1,100,1,100,3,100,2758,8,100,1,100,1,100,1,100, - 3,100,2763,8,100,1,100,3,100,2766,8,100,3,100,2768,8,100,1,101,3, - 101,2771,8,101,1,101,1,101,3,101,2775,8,101,1,102,1,102,3,102,2779, - 8,102,1,102,3,102,2782,8,102,1,102,3,102,2785,8,102,1,102,1,102, - 1,102,1,102,1,102,1,102,3,102,2793,8,102,1,102,1,102,1,102,1,102, - 3,102,2799,8,102,3,102,2801,8,102,1,103,1,103,1,103,1,103,3,103, - 2807,8,103,1,103,1,103,1,103,3,103,2812,8,103,1,104,1,104,1,104, - 3,104,2817,8,104,1,104,1,104,3,104,2821,8,104,1,104,1,104,1,104, - 1,104,1,104,5,104,2828,8,104,10,104,12,104,2831,9,104,1,105,1,105, - 1,105,1,105,1,105,1,105,5,105,2839,8,105,10,105,12,105,2842,9,105, + 1,46,1,46,1,46,1,46,3,46,1715,8,46,1,46,1,46,1,46,3,46,1720,8,46, + 1,46,3,46,1723,8,46,1,46,1,46,1,46,1,46,1,46,3,46,1730,8,46,1,46, + 3,46,1733,8,46,1,46,1,46,3,46,1737,8,46,1,46,1,46,3,46,1741,8,46, + 1,46,3,46,1744,8,46,1,46,1,46,1,46,3,46,1749,8,46,1,46,1,46,1,46, + 3,46,1754,8,46,1,46,1,46,3,46,1758,8,46,1,46,1,46,1,46,1,46,1,46, + 1,46,1,46,3,46,1767,8,46,1,46,1,46,1,46,1,46,3,46,1773,8,46,1,46, + 1,46,3,46,1777,8,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,3,46,1786, + 8,46,1,46,3,46,1789,8,46,1,46,1,46,1,46,1,46,3,46,1795,8,46,1,46, + 1,46,1,46,1,46,1,46,1,46,1,46,3,46,1804,8,46,1,46,1,46,1,46,1,46, + 1,46,1,46,1,46,1,46,4,46,1814,8,46,11,46,12,46,1815,1,46,1,46,3, + 46,1820,8,46,1,46,1,46,3,46,1824,8,46,1,46,1,46,1,46,3,46,1829,8, + 46,1,46,3,46,1832,8,46,1,46,1,46,1,46,1,46,3,46,1838,8,46,4,46,1840, + 8,46,11,46,12,46,1841,1,46,1,46,3,46,1846,8,46,1,46,1,46,1,46,1, + 46,3,46,1852,8,46,1,46,1,46,3,46,1856,8,46,1,46,1,46,1,46,3,46,1861, + 8,46,1,46,1,46,1,46,3,46,1866,8,46,1,46,1,46,3,46,1870,8,46,1,46, + 3,46,1873,8,46,1,47,1,47,1,47,1,47,1,47,3,47,1880,8,47,1,48,1,48, + 1,49,1,49,1,49,1,50,1,50,1,50,1,50,5,50,1891,8,50,10,50,12,50,1894, + 9,50,1,50,1,50,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,3,52,1906, + 8,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,5,53,1918, + 8,53,10,53,12,53,1921,9,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1, + 53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1937,8,53,1,54,1,54,1,54,1, + 54,1,54,1,54,5,54,1945,8,54,10,54,12,54,1948,9,54,1,55,1,55,1,55, + 1,55,3,55,1954,8,55,1,55,1,55,1,55,3,55,1959,8,55,1,55,1,55,3,55, + 1963,8,55,1,55,1,55,1,55,1,55,1,55,3,55,1970,8,55,1,55,1,55,1,55, + 3,55,1975,8,55,1,55,3,55,1978,8,55,3,55,1980,8,55,1,56,1,56,1,56, + 3,56,1985,8,56,1,57,1,57,3,57,1989,8,57,1,57,1,57,3,57,1993,8,57, + 1,57,1,57,3,57,1997,8,57,1,57,1,57,1,57,3,57,2002,8,57,1,57,3,57, + 2005,8,57,1,57,1,57,3,57,2009,8,57,1,57,3,57,2012,8,57,1,57,1,57, + 3,57,2016,8,57,1,57,1,57,1,57,1,57,1,57,1,57,3,57,2024,8,57,1,57, + 1,57,1,57,3,57,2029,8,57,1,57,3,57,2032,8,57,1,57,1,57,3,57,2036, + 8,57,1,58,1,58,1,58,1,58,3,58,2042,8,58,1,58,1,58,1,58,1,58,1,58, + 1,58,1,58,3,58,2051,8,58,1,58,1,58,3,58,2055,8,58,1,58,1,58,1,58, + 1,58,5,58,2061,8,58,10,58,12,58,2064,9,58,1,58,1,58,1,58,1,58,5, + 58,2070,8,58,10,58,12,58,2073,9,58,1,58,1,58,3,58,2077,8,58,1,59, + 1,59,1,59,1,59,1,59,1,59,1,59,1,59,5,59,2087,8,59,10,59,12,59,2090, + 9,59,1,59,1,59,3,59,2094,8,59,1,60,1,60,3,60,2098,8,60,1,60,1,60, + 3,60,2102,8,60,1,60,1,60,1,60,3,60,2107,8,60,1,60,1,60,3,60,2111, + 8,60,1,60,3,60,2114,8,60,1,60,3,60,2117,8,60,1,60,3,60,2120,8,60, + 1,60,3,60,2123,8,60,1,60,3,60,2126,8,60,1,60,1,60,1,60,3,60,2131, + 8,60,1,60,3,60,2134,8,60,1,60,3,60,2137,8,60,1,60,3,60,2140,8,60, + 1,60,3,60,2143,8,60,1,60,3,60,2146,8,60,1,60,1,60,1,60,1,60,3,60, + 2152,8,60,1,60,1,60,3,60,2156,8,60,1,60,3,60,2159,8,60,1,60,3,60, + 2162,8,60,1,60,3,60,2165,8,60,1,60,3,60,2168,8,60,3,60,2170,8,60, + 1,61,1,61,1,61,1,61,1,61,3,61,2177,8,61,1,62,1,62,1,62,1,62,5,62, + 2183,8,62,10,62,12,62,2186,9,62,1,62,1,62,1,63,1,63,1,63,5,63,2193, + 8,63,10,63,12,63,2196,9,63,1,64,1,64,3,64,2200,8,64,1,64,1,64,1, + 64,1,64,1,64,1,64,5,64,2208,8,64,10,64,12,64,2211,9,64,3,64,2213, + 8,64,1,65,1,65,1,65,3,65,2218,8,65,1,65,5,65,2221,8,65,10,65,12, + 65,2224,9,65,1,65,1,65,3,65,2228,8,65,1,65,3,65,2231,8,65,1,66,1, + 66,1,66,3,66,2236,8,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,2245, + 8,66,3,66,2247,8,66,1,66,1,66,3,66,2251,8,66,1,66,3,66,2254,8,66, + 1,66,1,66,3,66,2258,8,66,1,66,5,66,2261,8,66,10,66,12,66,2264,9, + 66,1,67,1,67,3,67,2268,8,67,1,67,1,67,3,67,2272,8,67,1,67,3,67,2275, + 8,67,1,67,1,67,3,67,2279,8,67,1,68,3,68,2282,8,68,1,68,1,68,1,68, + 3,68,2287,8,68,1,68,3,68,2290,8,68,1,68,1,68,1,68,3,68,2295,8,68, + 1,68,3,68,2298,8,68,1,68,1,68,3,68,2302,8,68,1,68,3,68,2305,8,68, + 1,68,3,68,2308,8,68,1,68,1,68,1,68,3,68,2313,8,68,1,68,3,68,2316, + 8,68,1,68,1,68,1,68,1,68,1,68,1,68,3,68,2324,8,68,1,68,1,68,1,68, + 1,68,1,68,1,68,1,68,1,68,4,68,2334,8,68,11,68,12,68,2335,1,68,1, + 68,3,68,2340,8,68,1,68,1,68,1,68,1,68,1,68,3,68,2347,8,68,1,68,1, + 68,1,68,3,68,2352,8,68,1,68,3,68,2355,8,68,1,68,3,68,2358,8,68,1, + 68,3,68,2361,8,68,1,69,1,69,1,69,3,69,2366,8,69,1,70,1,70,1,71,1, + 71,1,71,1,71,1,71,5,71,2375,8,71,10,71,12,71,2378,9,71,1,71,1,71, + 1,71,3,71,2383,8,71,1,71,1,71,3,71,2387,8,71,1,71,3,71,2390,8,71, + 1,71,3,71,2393,8,71,1,71,5,71,2396,8,71,10,71,12,71,2399,9,71,1, + 71,1,71,5,71,2403,8,71,10,71,12,71,2406,9,71,3,71,2408,8,71,1,71, + 1,71,3,71,2412,8,71,1,71,1,71,1,71,1,71,5,71,2418,8,71,10,71,12, + 71,2421,9,71,1,71,1,71,3,71,2425,8,71,1,71,3,71,2428,8,71,1,71,3, + 71,2431,8,71,1,71,1,71,1,71,1,71,1,71,3,71,2438,8,71,1,71,5,71,2441, + 8,71,10,71,12,71,2444,9,71,1,71,1,71,1,71,1,71,1,71,1,71,3,71,2452, + 8,71,1,71,3,71,2455,8,71,1,71,3,71,2458,8,71,1,71,5,71,2461,8,71, + 10,71,12,71,2464,9,71,3,71,2466,8,71,1,72,1,72,1,72,1,72,1,73,1, + 73,1,73,1,73,5,73,2476,8,73,10,73,12,73,2479,9,73,1,73,1,73,1,74, + 1,74,1,74,5,74,2486,8,74,10,74,12,74,2489,9,74,1,75,1,75,1,75,1, + 76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,3,77,2505,8, + 77,1,78,1,78,3,78,2509,8,78,1,78,1,78,3,78,2513,8,78,3,78,2515,8, + 78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1, + 81,1,81,1,81,3,81,2532,8,81,3,81,2534,8,81,1,82,1,82,1,82,1,82,1, + 82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,5,83,2548,8,83,10,83,12,83, + 2551,9,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,3,84,2561,8,84, + 1,84,3,84,2564,8,84,1,84,3,84,2567,8,84,1,85,1,85,1,85,1,86,1,86, + 1,86,1,86,3,86,2576,8,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,3,87, + 2585,8,87,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90, + 1,91,1,91,1,91,3,91,2601,8,91,1,91,3,91,2604,8,91,1,91,3,91,2607, + 8,91,1,91,1,91,1,91,1,91,5,91,2613,8,91,10,91,12,91,2616,9,91,1, + 91,3,91,2619,8,91,1,91,1,91,1,92,1,92,1,92,3,92,2626,8,92,1,92,1, + 92,1,92,1,92,1,92,1,93,1,93,3,93,2635,8,93,1,93,1,93,3,93,2639,8, + 93,1,93,1,93,1,93,1,93,3,93,2645,8,93,1,94,1,94,3,94,2649,8,94,1, + 94,3,94,2652,8,94,1,94,3,94,2655,8,94,1,94,3,94,2658,8,94,1,94,3, + 94,2661,8,94,1,95,1,95,1,95,1,95,3,95,2667,8,95,1,96,1,96,3,96,2671, + 8,96,1,96,1,96,1,96,3,96,2676,8,96,1,96,1,96,3,96,2680,8,96,1,96, + 3,96,2683,8,96,1,96,3,96,2686,8,96,1,96,3,96,2689,8,96,1,96,1,96, + 1,96,3,96,2694,8,96,1,97,1,97,1,97,1,97,3,97,2700,8,97,1,97,1,97, + 3,97,2704,8,97,1,98,1,98,3,98,2708,8,98,1,98,1,98,3,98,2712,8,98, + 1,98,1,98,4,98,2716,8,98,11,98,12,98,2717,3,98,2720,8,98,1,99,1, + 99,1,99,3,99,2725,8,99,1,99,1,99,4,99,2729,8,99,11,99,12,99,2730, + 1,100,1,100,1,100,1,100,3,100,2737,8,100,1,100,1,100,3,100,2741, + 8,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,1,100,1,100,3,100,2756,8,100,1,100,1,100,1,100,3,100,2761, + 8,100,1,100,3,100,2764,8,100,3,100,2766,8,100,1,101,3,101,2769,8, + 101,1,101,1,101,3,101,2773,8,101,1,102,1,102,3,102,2777,8,102,1, + 102,3,102,2780,8,102,1,102,3,102,2783,8,102,1,102,1,102,1,102,1, + 102,1,102,1,102,3,102,2791,8,102,1,102,1,102,1,102,1,102,3,102,2797, + 8,102,3,102,2799,8,102,1,103,1,103,1,103,1,103,3,103,2805,8,103, + 1,103,1,103,1,103,3,103,2810,8,103,1,104,1,104,1,104,3,104,2815, + 8,104,1,104,1,104,3,104,2819,8,104,1,104,1,104,1,104,1,104,1,104, + 5,104,2826,8,104,10,104,12,104,2829,9,104,1,105,1,105,1,105,1,105, + 1,105,1,105,5,105,2837,8,105,10,105,12,105,2840,9,105,1,106,1,106, 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, 1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106,1,106, - 1,106,1,106,1,106,3,106,2880,8,106,1,107,1,107,1,107,1,107,1,107, - 1,107,4,107,2888,8,107,11,107,12,107,2889,3,107,2892,8,107,1,107, - 3,107,2895,8,107,1,108,1,108,3,108,2899,8,108,1,108,1,108,3,108, - 2903,8,108,1,109,1,109,1,109,1,109,1,109,1,109,4,109,2911,8,109, - 11,109,12,109,2912,3,109,2915,8,109,1,109,1,109,4,109,2919,8,109, - 11,109,12,109,2920,3,109,2923,8,109,1,110,1,110,1,110,1,110,1,110, - 5,110,2930,8,110,10,110,12,110,2933,9,110,1,110,1,110,1,111,1,111, - 1,111,1,111,1,111,5,111,2942,8,111,10,111,12,111,2945,9,111,1,111, - 1,111,1,112,1,112,1,112,1,113,1,113,1,113,1,114,1,114,1,114,3,114, - 2958,8,114,1,114,1,114,1,114,3,114,2963,8,114,1,114,3,114,2966,8, - 114,1,114,1,114,1,114,1,114,1,114,3,114,2973,8,114,1,115,1,115,1, - 115,3,115,2978,8,115,1,116,1,116,1,116,1,116,1,116,1,116,3,116,2986, - 8,116,3,116,2988,8,116,1,117,1,117,1,117,1,117,3,117,2994,8,117, - 1,117,1,117,1,117,3,117,2999,8,117,1,117,1,117,3,117,3003,8,117, - 1,117,1,117,1,117,3,117,3008,8,117,1,117,1,117,1,117,1,117,3,117, - 3014,8,117,1,117,1,117,1,117,1,117,1,117,3,117,3021,8,117,1,117, - 1,117,1,117,1,117,3,117,3027,8,117,3,117,3029,8,117,1,118,1,118, - 1,118,1,118,1,118,1,118,1,118,3,118,3038,8,118,1,118,1,118,1,118, - 1,118,3,118,3044,8,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118, - 3052,8,118,1,119,1,119,1,119,1,119,3,119,3058,8,119,1,119,1,119, - 1,119,3,119,3063,8,119,1,119,1,119,1,119,3,119,3068,8,119,1,120, - 1,120,1,120,1,120,1,120,1,120,3,120,3076,8,120,1,120,1,120,1,120, - 1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,3,121, - 3091,8,121,3,121,3093,8,121,1,121,1,121,3,121,3097,8,121,1,121,1, - 121,3,121,3101,8,121,1,121,3,121,3104,8,121,1,121,3,121,3107,8,121, - 1,122,1,122,1,122,1,122,1,122,1,122,1,122,3,122,3116,8,122,1,122, - 3,122,3119,8,122,1,122,3,122,3122,8,122,1,123,1,123,1,123,1,123, - 3,123,3128,8,123,1,123,1,123,5,123,3132,8,123,10,123,12,123,3135, - 9,123,1,123,3,123,3138,8,123,1,123,1,123,1,123,1,123,1,123,1,123, - 1,123,1,123,1,123,1,123,3,123,3150,8,123,1,123,1,123,1,123,1,123, - 3,123,3156,8,123,1,124,3,124,3159,8,124,1,124,1,124,1,124,3,124, - 3164,8,124,1,124,1,124,3,124,3168,8,124,1,124,1,124,1,124,1,124, - 1,124,3,124,3175,8,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124, - 1,124,3,124,3185,8,124,3,124,3187,8,124,1,125,1,125,1,125,1,125, - 1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127, - 1,127,1,127,1,127,1,127,1,127,1,128,1,128,3,128,3211,8,128,1,128, - 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128,3223, - 8,128,1,128,4,128,3226,8,128,11,128,12,128,3227,3,128,3230,8,128, - 1,128,1,128,3,128,3234,8,128,1,128,3,128,3237,8,128,1,128,3,128, - 3240,8,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128, - 3250,8,128,1,128,3,128,3253,8,128,1,128,1,128,1,128,1,128,1,128, - 1,128,1,128,1,128,3,128,3263,8,128,1,128,5,128,3266,8,128,10,128, - 12,128,3269,9,128,1,128,1,128,3,128,3273,8,128,1,128,3,128,3276, - 8,128,1,128,3,128,3279,8,128,1,128,1,128,1,128,1,128,1,128,1,128, - 3,128,3287,8,128,1,129,1,129,1,129,1,129,3,129,3293,8,129,1,130, - 1,130,1,130,5,130,3298,8,130,10,130,12,130,3301,9,130,1,131,1,131, - 1,131,1,131,1,131,3,131,3308,8,131,1,131,3,131,3311,8,131,1,132, - 1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,3,133,3322,8,133, - 1,134,1,134,3,134,3326,8,134,1,134,1,134,5,134,3330,8,134,10,134, - 12,134,3333,9,134,1,135,1,135,1,135,1,135,3,135,3339,8,135,1,136, - 3,136,3342,8,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,3,136, - 3351,8,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137, - 1,137,5,137,3363,8,137,10,137,12,137,3366,9,137,3,137,3368,8,137, - 1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,5,138, - 3380,8,138,10,138,12,138,3383,9,138,1,138,1,138,1,139,1,139,1,139, - 1,139,1,139,1,139,3,139,3393,8,139,1,139,3,139,3396,8,139,1,140, - 1,140,1,140,1,140,1,140,1,140,1,140,1,140,5,140,3406,8,140,10,140, - 12,140,3409,9,140,1,141,1,141,3,141,3413,8,141,1,141,1,141,1,141, - 1,141,1,141,1,141,1,141,1,141,1,141,5,141,3424,8,141,10,141,12,141, - 3427,9,141,1,141,1,141,3,141,3431,8,141,1,141,1,141,1,141,1,141, - 1,141,1,141,1,141,1,141,1,141,1,141,1,141,3,141,3444,8,141,1,141, - 1,141,1,141,1,141,1,141,5,141,3451,8,141,10,141,12,141,3454,9,141, - 3,141,3456,8,141,1,141,3,141,3459,8,141,1,141,1,141,1,141,1,141, - 1,141,3,141,3466,8,141,1,141,3,141,3469,8,141,1,141,1,141,1,141, - 1,141,1,141,1,141,1,141,1,141,1,141,1,141,3,141,3481,8,141,1,141, - 1,141,1,141,1,141,3,141,3487,8,141,3,141,3489,8,141,1,142,1,142, - 1,142,1,142,5,142,3495,8,142,10,142,12,142,3498,9,142,1,142,1,142, - 1,143,1,143,1,143,3,143,3505,8,143,1,144,1,144,1,144,1,144,1,144, - 1,144,3,144,3513,8,144,1,145,1,145,1,145,1,145,1,146,1,146,1,146, - 1,146,1,146,1,146,3,146,3525,8,146,1,146,1,146,1,146,3,146,3530, - 8,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,3,146, - 3541,8,146,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148, - 3,148,3552,8,148,1,148,1,148,1,148,1,148,1,148,1,148,3,148,3560, - 8,148,1,148,1,148,1,148,1,148,5,148,3566,8,148,10,148,12,148,3569, - 9,148,1,149,1,149,1,149,1,149,3,149,3575,8,149,1,149,1,149,1,149, - 1,149,1,149,3,149,3582,8,149,3,149,3584,8,149,1,149,3,149,3587,8, - 149,1,149,1,149,1,149,3,149,3592,8,149,1,149,1,149,1,149,3,149,3597, - 8,149,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151, - 1,151,1,151,1,151,1,151,1,151,5,151,3614,8,151,10,151,12,151,3617, - 9,151,1,151,1,151,1,151,1,151,5,151,3623,8,151,10,151,12,151,3626, - 9,151,3,151,3628,8,151,1,152,1,152,1,152,1,152,1,153,1,153,1,153, - 1,153,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154, - 1,154,1,154,1,154,1,154,1,154,1,154,1,154,3,154,3655,8,154,1,154, - 1,154,1,154,1,154,1,154,1,154,1,154,3,154,3664,8,154,1,154,3,154, - 3667,8,154,1,154,1,154,3,154,3671,8,154,1,154,1,154,3,154,3675,8, - 154,1,154,1,154,3,154,3679,8,154,1,154,1,154,1,154,5,154,3684,8, - 154,10,154,12,154,3687,9,154,1,154,3,154,3690,8,154,1,154,1,154, - 3,154,3694,8,154,1,154,1,154,3,154,3698,8,154,1,154,1,154,3,154, - 3702,8,154,1,154,1,154,1,154,3,154,3707,8,154,1,154,1,154,3,154, - 3711,8,154,1,154,1,154,1,154,3,154,3716,8,154,1,154,1,154,1,154, - 1,154,3,154,3722,8,154,1,154,1,154,1,154,3,154,3727,8,154,1,154, - 1,154,1,154,5,154,3732,8,154,10,154,12,154,3735,9,154,1,154,3,154, - 3738,8,154,1,154,1,154,1,154,1,154,3,154,3744,8,154,1,154,1,154, - 3,154,3748,8,154,1,154,1,154,1,154,3,154,3753,8,154,1,154,1,154, - 1,154,1,154,1,154,1,154,3,154,3761,8,154,1,154,1,154,1,154,1,154, - 3,154,3767,8,154,1,154,1,154,1,154,3,154,3772,8,154,1,154,1,154, - 1,154,1,154,1,154,3,154,3779,8,154,1,154,1,154,1,154,3,154,3784, - 8,154,1,154,1,154,3,154,3788,8,154,1,154,1,154,1,154,3,154,3793, - 8,154,1,154,1,154,1,154,1,154,3,154,3799,8,154,1,154,1,154,1,154, - 1,154,1,154,3,154,3806,8,154,1,154,1,154,1,154,3,154,3811,8,154, - 1,154,1,154,1,154,1,154,1,154,3,154,3818,8,154,1,154,1,154,1,154, - 3,154,3823,8,154,1,154,1,154,1,154,1,154,1,154,3,154,3830,8,154, - 1,154,1,154,3,154,3834,8,154,1,154,1,154,1,154,1,154,5,154,3840, - 8,154,10,154,12,154,3843,9,154,1,154,3,154,3846,8,154,3,154,3848, - 8,154,1,155,3,155,3851,8,155,1,155,1,155,1,155,3,155,3856,8,155, - 1,155,1,155,1,155,1,155,1,155,1,155,1,155,1,155,3,155,3866,8,155, + 1,106,3,106,2878,8,106,1,107,1,107,1,107,1,107,1,107,1,107,4,107, + 2886,8,107,11,107,12,107,2887,3,107,2890,8,107,1,107,3,107,2893, + 8,107,1,108,1,108,3,108,2897,8,108,1,108,1,108,3,108,2901,8,108, + 1,109,1,109,1,109,1,109,1,109,1,109,4,109,2909,8,109,11,109,12,109, + 2910,3,109,2913,8,109,1,109,1,109,4,109,2917,8,109,11,109,12,109, + 2918,3,109,2921,8,109,1,110,1,110,1,110,1,110,1,110,5,110,2928,8, + 110,10,110,12,110,2931,9,110,1,110,1,110,1,111,1,111,1,111,1,111, + 1,111,5,111,2940,8,111,10,111,12,111,2943,9,111,1,111,1,111,1,112, + 1,112,1,112,1,113,1,113,1,113,1,114,1,114,1,114,3,114,2956,8,114, + 1,114,1,114,1,114,3,114,2961,8,114,1,114,3,114,2964,8,114,1,114, + 1,114,1,114,1,114,1,114,3,114,2971,8,114,1,115,1,115,1,115,3,115, + 2976,8,115,1,116,1,116,1,116,1,116,1,116,1,116,3,116,2984,8,116, + 3,116,2986,8,116,1,117,1,117,1,117,1,117,3,117,2992,8,117,1,117, + 1,117,1,117,3,117,2997,8,117,1,117,1,117,3,117,3001,8,117,1,117, + 1,117,1,117,3,117,3006,8,117,1,117,1,117,1,117,1,117,3,117,3012, + 8,117,1,117,1,117,1,117,1,117,1,117,3,117,3019,8,117,1,117,1,117, + 1,117,1,117,3,117,3025,8,117,3,117,3027,8,117,1,118,1,118,1,118, + 1,118,1,118,1,118,1,118,3,118,3036,8,118,1,118,1,118,1,118,1,118, + 3,118,3042,8,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118,3050, + 8,118,1,119,1,119,1,119,1,119,3,119,3056,8,119,1,119,1,119,1,119, + 3,119,3061,8,119,1,119,1,119,1,119,3,119,3066,8,119,1,120,1,120, + 1,120,1,120,1,120,1,120,3,120,3074,8,120,1,120,1,120,1,120,1,120, + 1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,3,121,3089, + 8,121,3,121,3091,8,121,1,121,1,121,3,121,3095,8,121,1,121,1,121, + 3,121,3099,8,121,1,121,3,121,3102,8,121,1,121,3,121,3105,8,121,1, + 122,1,122,1,122,1,122,1,122,1,122,1,122,3,122,3114,8,122,1,122,3, + 122,3117,8,122,1,122,3,122,3120,8,122,1,123,1,123,1,123,1,123,3, + 123,3126,8,123,1,123,1,123,5,123,3130,8,123,10,123,12,123,3133,9, + 123,1,123,3,123,3136,8,123,1,123,1,123,1,123,1,123,1,123,1,123,1, + 123,1,123,1,123,1,123,3,123,3148,8,123,1,123,1,123,1,123,1,123,3, + 123,3154,8,123,1,124,3,124,3157,8,124,1,124,1,124,1,124,3,124,3162, + 8,124,1,124,1,124,3,124,3166,8,124,1,124,1,124,1,124,1,124,1,124, + 3,124,3173,8,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124, + 3,124,3183,8,124,3,124,3185,8,124,1,125,1,125,1,125,1,125,1,125, + 1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127, + 1,127,1,127,1,127,1,127,1,128,1,128,3,128,3209,8,128,1,128,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128,3221,8,128, + 1,128,4,128,3224,8,128,11,128,12,128,3225,3,128,3228,8,128,1,128, + 1,128,3,128,3232,8,128,1,128,3,128,3235,8,128,1,128,3,128,3238,8, + 128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128,3248,8, + 128,1,128,3,128,3251,8,128,1,128,1,128,1,128,1,128,1,128,1,128,1, + 128,1,128,3,128,3261,8,128,1,128,5,128,3264,8,128,10,128,12,128, + 3267,9,128,1,128,1,128,3,128,3271,8,128,1,128,3,128,3274,8,128,1, + 128,3,128,3277,8,128,1,128,1,128,1,128,1,128,1,128,1,128,3,128,3285, + 8,128,1,129,1,129,1,129,1,129,3,129,3291,8,129,1,130,1,130,1,130, + 5,130,3296,8,130,10,130,12,130,3299,9,130,1,131,1,131,1,131,1,131, + 1,131,3,131,3306,8,131,1,131,3,131,3309,8,131,1,132,1,132,1,132, + 1,132,1,132,1,133,1,133,1,133,1,133,3,133,3320,8,133,1,134,1,134, + 3,134,3324,8,134,1,134,1,134,5,134,3328,8,134,10,134,12,134,3331, + 9,134,1,135,1,135,1,135,1,135,3,135,3337,8,135,1,136,3,136,3340, + 8,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,3,136,3349,8,136, + 1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,5,137, + 3361,8,137,10,137,12,137,3364,9,137,3,137,3366,8,137,1,137,1,137, + 1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,5,138,3378,8,138, + 10,138,12,138,3381,9,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139, + 1,139,3,139,3391,8,139,1,139,3,139,3394,8,139,1,140,1,140,1,140, + 1,140,1,140,1,140,1,140,1,140,5,140,3404,8,140,10,140,12,140,3407, + 9,140,1,141,1,141,3,141,3411,8,141,1,141,1,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,5,141,3422,8,141,10,141,12,141,3425,9,141, + 1,141,1,141,3,141,3429,8,141,1,141,1,141,1,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,1,141,3,141,3442,8,141,1,141,1,141,1,141, + 1,141,1,141,5,141,3449,8,141,10,141,12,141,3452,9,141,3,141,3454, + 8,141,1,141,3,141,3457,8,141,1,141,1,141,1,141,1,141,1,141,3,141, + 3464,8,141,1,141,3,141,3467,8,141,1,141,1,141,1,141,1,141,1,141, + 1,141,1,141,1,141,1,141,1,141,3,141,3479,8,141,1,141,1,141,1,141, + 1,141,3,141,3485,8,141,3,141,3487,8,141,1,142,1,142,1,142,1,142, + 5,142,3493,8,142,10,142,12,142,3496,9,142,1,142,1,142,1,143,1,143, + 1,143,3,143,3503,8,143,1,144,1,144,1,144,1,144,1,144,1,144,3,144, + 3511,8,144,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146, + 1,146,3,146,3523,8,146,1,146,1,146,1,146,3,146,3528,8,146,1,146, + 1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,146,3,146,3539,8,146, + 1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,3,148,3550, + 8,148,1,148,1,148,1,148,1,148,1,148,1,148,3,148,3558,8,148,1,148, + 1,148,1,148,1,148,5,148,3564,8,148,10,148,12,148,3567,9,148,1,149, + 1,149,1,149,1,149,3,149,3573,8,149,1,149,1,149,1,149,1,149,1,149, + 3,149,3580,8,149,3,149,3582,8,149,1,149,3,149,3585,8,149,1,149,1, + 149,1,149,3,149,3590,8,149,1,149,1,149,1,149,3,149,3595,8,149,1, + 150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151, + 1,151,1,151,1,151,1,151,5,151,3612,8,151,10,151,12,151,3615,9,151, + 1,151,1,151,1,151,1,151,5,151,3621,8,151,10,151,12,151,3624,9,151, + 3,151,3626,8,151,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,153, + 1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154, + 1,154,1,154,1,154,1,154,1,154,1,154,3,154,3653,8,154,1,154,1,154, + 1,154,1,154,1,154,1,154,1,154,3,154,3662,8,154,1,154,3,154,3665, + 8,154,1,154,1,154,3,154,3669,8,154,1,154,1,154,3,154,3673,8,154, + 1,154,1,154,3,154,3677,8,154,1,154,1,154,1,154,5,154,3682,8,154, + 10,154,12,154,3685,9,154,1,154,3,154,3688,8,154,1,154,1,154,3,154, + 3692,8,154,1,154,1,154,3,154,3696,8,154,1,154,1,154,3,154,3700,8, + 154,1,154,1,154,1,154,3,154,3705,8,154,1,154,1,154,3,154,3709,8, + 154,1,154,1,154,1,154,3,154,3714,8,154,1,154,1,154,1,154,1,154,3, + 154,3720,8,154,1,154,1,154,1,154,3,154,3725,8,154,1,154,1,154,1, + 154,5,154,3730,8,154,10,154,12,154,3733,9,154,1,154,3,154,3736,8, + 154,1,154,1,154,1,154,1,154,3,154,3742,8,154,1,154,1,154,3,154,3746, + 8,154,1,154,1,154,1,154,3,154,3751,8,154,1,154,1,154,1,154,1,154, + 1,154,1,154,3,154,3759,8,154,1,154,1,154,1,154,1,154,3,154,3765, + 8,154,1,154,1,154,1,154,3,154,3770,8,154,1,154,1,154,1,154,1,154, + 1,154,3,154,3777,8,154,1,154,1,154,1,154,3,154,3782,8,154,1,154, + 1,154,3,154,3786,8,154,1,154,1,154,1,154,3,154,3791,8,154,1,154, + 1,154,1,154,1,154,3,154,3797,8,154,1,154,1,154,1,154,1,154,1,154, + 3,154,3804,8,154,1,154,1,154,1,154,3,154,3809,8,154,1,154,1,154, + 1,154,1,154,1,154,3,154,3816,8,154,1,154,1,154,1,154,3,154,3821, + 8,154,1,154,1,154,1,154,1,154,1,154,3,154,3828,8,154,1,154,1,154, + 3,154,3832,8,154,1,154,1,154,1,154,1,154,5,154,3838,8,154,10,154, + 12,154,3841,9,154,1,154,3,154,3844,8,154,3,154,3846,8,154,1,155, + 3,155,3849,8,155,1,155,1,155,1,155,3,155,3854,8,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,155,3,155,3864,8,155,1,156,1,156, 1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156,1,156, - 1,156,1,156,3,156,3881,8,156,1,156,3,156,3884,8,156,1,156,1,156, - 1,156,1,156,1,156,1,156,3,156,3892,8,156,1,157,1,157,1,157,5,157, - 3897,8,157,10,157,12,157,3900,9,157,1,158,1,158,3,158,3904,8,158, - 1,159,1,159,4,159,3908,8,159,11,159,12,159,3909,1,160,1,160,3,160, - 3914,8,160,1,160,1,160,1,160,5,160,3919,8,160,10,160,12,160,3922, - 9,160,1,160,1,160,3,160,3926,8,160,1,160,3,160,3929,8,160,1,161, - 3,161,3932,8,161,1,161,1,161,3,161,3936,8,161,1,162,1,162,1,162, - 1,162,1,162,1,162,1,162,3,162,3945,8,162,1,162,1,162,1,162,1,162, - 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, - 1,162,3,162,3963,8,162,1,162,3,162,3966,8,162,1,162,1,162,1,162, + 3,156,3879,8,156,1,156,3,156,3882,8,156,1,156,1,156,1,156,1,156, + 1,156,1,156,3,156,3890,8,156,1,157,1,157,1,157,5,157,3895,8,157, + 10,157,12,157,3898,9,157,1,158,1,158,3,158,3902,8,158,1,159,1,159, + 4,159,3906,8,159,11,159,12,159,3907,1,160,1,160,3,160,3912,8,160, + 1,160,1,160,1,160,5,160,3917,8,160,10,160,12,160,3920,9,160,1,160, + 1,160,3,160,3924,8,160,1,160,3,160,3927,8,160,1,161,3,161,3930,8, + 161,1,161,1,161,3,161,3934,8,161,1,162,1,162,1,162,1,162,1,162,1, + 162,1,162,3,162,3943,8,162,1,162,1,162,1,162,1,162,1,162,1,162,1, + 162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,3,162, + 3961,8,162,1,162,3,162,3964,8,162,1,162,1,162,1,162,1,162,1,162, 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162, - 1,162,1,162,1,162,1,162,1,162,3,162,3998,8,162,1,162,1,162,1,162, - 3,162,4003,8,162,1,163,1,163,1,163,1,163,3,163,4009,8,163,1,163, + 1,162,1,162,1,162,3,162,3996,8,162,1,162,1,162,1,162,3,162,4001, + 8,162,1,163,1,163,1,163,1,163,3,163,4007,8,163,1,163,1,163,1,163, 1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163, - 1,163,1,163,1,163,1,163,1,163,1,163,3,163,4029,8,163,1,163,1,163, - 1,163,3,163,4034,8,163,1,164,1,164,1,164,1,165,3,165,4040,8,165, - 1,165,3,165,4043,8,165,1,165,1,165,3,165,4047,8,165,1,165,1,165, - 3,165,4051,8,165,1,165,1,165,1,165,1,165,3,165,4057,8,165,1,165, - 3,165,4060,8,165,1,165,1,165,3,165,4064,8,165,1,165,1,165,3,165, - 4068,8,165,1,165,1,165,1,165,3,165,4073,8,165,1,165,3,165,4076,8, - 165,1,165,3,165,4079,8,165,1,165,3,165,4082,8,165,1,166,1,166,1, - 167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,1,167,3,167,4095,8, - 167,1,168,1,168,1,168,1,168,3,168,4101,8,168,1,168,1,168,1,168,1, - 168,1,168,1,168,3,168,4109,8,168,1,169,1,169,1,169,5,169,4114,8, - 169,10,169,12,169,4117,9,169,1,169,1,169,3,169,4121,8,169,1,169, - 3,169,4124,8,169,1,169,1,169,1,169,5,169,4129,8,169,10,169,12,169, - 4132,9,169,3,169,4134,8,169,1,170,1,170,1,171,1,171,1,171,1,171, - 3,171,4142,8,171,1,171,3,171,4145,8,171,1,172,1,172,1,172,3,172, - 4150,8,172,1,172,1,172,1,172,1,172,1,172,3,172,4157,8,172,1,172, - 3,172,4160,8,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172, - 1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,5,172,4178,8,172, - 10,172,12,172,4181,9,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172, - 1,172,1,172,3,172,4192,8,172,1,173,3,173,4195,8,173,1,173,1,173, - 1,173,1,173,3,173,4201,8,173,1,173,5,173,4204,8,173,10,173,12,173, - 4207,9,173,1,174,1,174,1,174,1,174,5,174,4213,8,174,10,174,12,174, - 4216,9,174,1,174,1,174,1,174,1,174,1,174,3,174,4223,8,174,1,174, - 1,174,1,174,3,174,4228,8,174,1,175,1,175,1,175,1,175,3,175,4234, - 8,175,1,175,1,175,1,175,5,175,4239,8,175,10,175,12,175,4242,9,175, - 1,175,1,175,1,175,1,175,1,175,3,175,4249,8,175,1,175,3,175,4252, - 8,175,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,1,176,5,176, - 4263,8,176,10,176,12,176,4266,9,176,1,176,1,176,1,177,1,177,1,177, - 1,177,1,177,1,177,1,177,1,177,1,177,3,177,4279,8,177,1,177,1,177, - 1,177,1,177,3,177,4285,8,177,1,177,1,177,1,177,1,177,1,177,1,177, - 3,177,4293,8,177,3,177,4295,8,177,1,178,1,178,1,179,1,179,3,179, - 4301,8,179,1,179,1,179,3,179,4305,8,179,1,179,3,179,4308,8,179,1, - 179,3,179,4311,8,179,1,179,1,179,1,179,3,179,4316,8,179,1,179,1, - 179,1,179,3,179,4321,8,179,1,179,1,179,3,179,4325,8,179,1,179,3, - 179,4328,8,179,1,179,3,179,4331,8,179,1,179,3,179,4334,8,179,1,179, - 3,179,4337,8,179,1,180,1,180,1,180,1,180,5,180,4343,8,180,10,180, - 12,180,4346,9,180,1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181, - 3,181,4356,8,181,1,181,3,181,4359,8,181,1,181,3,181,4362,8,181,1, - 181,1,181,1,181,3,181,4367,8,181,1,181,3,181,4370,8,181,1,181,1, - 181,3,181,4374,8,181,1,182,1,182,3,182,4378,8,182,1,182,1,182,1, - 182,1,182,3,182,4384,8,182,1,182,1,182,1,182,1,182,5,182,4390,8, - 182,10,182,12,182,4393,9,182,3,182,4395,8,182,1,182,1,182,1,182, - 1,182,1,182,1,182,1,182,1,182,1,182,5,182,4406,8,182,10,182,12,182, - 4409,9,182,1,182,1,182,3,182,4413,8,182,3,182,4415,8,182,1,182,4, - 182,4418,8,182,11,182,12,182,4419,1,182,1,182,1,182,1,182,1,182, - 3,182,4427,8,182,1,183,1,183,1,183,1,184,1,184,3,184,4434,8,184, - 1,184,1,184,1,185,1,185,1,185,5,185,4441,8,185,10,185,12,185,4444, - 9,185,1,186,1,186,1,186,5,186,4449,8,186,10,186,12,186,4452,9,186, - 1,187,1,187,1,187,1,187,1,187,3,187,4459,8,187,1,188,1,188,1,188, - 5,188,4464,8,188,10,188,12,188,4467,9,188,1,189,1,189,1,189,1,189, - 1,189,3,189,4474,8,189,1,190,1,190,1,190,5,190,4479,8,190,10,190, - 12,190,4482,9,190,1,191,1,191,1,191,1,191,1,191,3,191,4489,8,191, - 1,192,1,192,3,192,4493,8,192,1,192,1,192,3,192,4497,8,192,3,192, - 4499,8,192,1,192,1,192,1,193,1,193,3,193,4505,8,193,1,193,1,193, - 1,193,3,193,4510,8,193,1,194,1,194,3,194,4514,8,194,1,194,1,194, - 1,194,1,194,1,194,3,194,4521,8,194,1,195,1,195,1,195,3,195,4526, - 8,195,1,196,1,196,1,196,3,196,4531,8,196,1,196,1,196,1,196,3,196, - 4536,8,196,3,196,4538,8,196,1,196,1,196,1,197,1,197,1,197,1,198, - 1,198,1,198,3,198,4548,8,198,1,198,1,198,1,198,1,198,1,198,1,198, - 1,198,1,198,3,198,4558,8,198,1,198,1,198,1,198,1,198,1,198,1,198, - 1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,3,198,4574,8,198, - 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199, - 1,199,1,199,1,199,5,199,4590,8,199,10,199,12,199,4593,9,199,1,199, - 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,3,199,4604,8,199, - 1,199,1,199,1,199,1,199,1,199,3,199,4611,8,199,1,200,1,200,1,200, - 1,201,1,201,1,201,1,202,1,202,1,202,1,202,1,202,1,202,1,202,3,202, - 4626,8,202,1,202,4,202,4629,8,202,11,202,12,202,4630,1,202,3,202, - 4634,8,202,1,203,1,203,1,203,3,203,4639,8,203,1,203,1,203,1,203, - 3,203,4644,8,203,1,203,1,203,1,203,3,203,4649,8,203,1,203,3,203, - 4652,8,203,1,203,3,203,4655,8,203,1,204,1,204,1,204,3,204,4660,8, - 204,1,204,1,204,1,204,5,204,4665,8,204,10,204,12,204,4668,9,204, - 1,204,3,204,4671,8,204,1,205,1,205,1,205,3,205,4676,8,205,1,205, - 1,205,1,205,5,205,4681,8,205,10,205,12,205,4684,9,205,1,205,3,205, - 4687,8,205,1,206,1,206,1,206,1,206,3,206,4693,8,206,1,206,1,206, - 1,206,1,206,1,206,1,206,1,206,3,206,4702,8,206,1,206,1,206,1,207, - 1,207,1,207,5,207,4709,8,207,10,207,12,207,4712,9,207,1,207,1,207, - 1,208,1,208,1,208,1,209,1,209,1,209,1,209,4,209,4723,8,209,11,209, - 12,209,4724,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210, - 1,210,1,210,3,210,4738,8,210,1,210,1,210,1,210,1,210,3,210,4744, - 8,210,1,210,1,210,3,210,4748,8,210,3,210,4750,8,210,1,211,1,211, - 1,211,1,212,1,212,3,212,4757,8,212,1,212,1,212,1,212,1,212,1,212, - 1,212,1,212,1,212,1,212,1,212,1,212,3,212,4770,8,212,1,212,1,212, - 1,212,1,212,1,212,3,212,4777,8,212,3,212,4779,8,212,1,212,1,212, - 1,213,1,213,1,213,1,213,1,213,1,214,1,214,1,214,1,214,1,214,5,214, - 4793,8,214,10,214,12,214,4796,9,214,1,214,3,214,4799,8,214,1,214, - 1,214,3,214,4803,8,214,1,214,1,214,1,214,3,214,4808,8,214,1,214, - 1,214,1,214,3,214,4813,8,214,1,214,1,214,1,214,3,214,4818,8,214, - 1,214,1,214,1,214,3,214,4823,8,214,1,214,3,214,4826,8,214,1,215, - 1,215,1,215,1,215,1,215,1,216,1,216,1,216,1,216,1,216,3,216,4838, - 8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,163,1,163,1,163,1,163,3,163,4027,8,163,1,163,1,163,1,163,3,163, + 4032,8,163,1,164,1,164,1,164,1,165,3,165,4038,8,165,1,165,3,165, + 4041,8,165,1,165,1,165,3,165,4045,8,165,1,165,1,165,3,165,4049,8, + 165,1,165,1,165,1,165,1,165,3,165,4055,8,165,1,165,3,165,4058,8, + 165,1,165,1,165,3,165,4062,8,165,1,165,1,165,3,165,4066,8,165,1, + 165,1,165,1,165,3,165,4071,8,165,1,165,3,165,4074,8,165,1,165,3, + 165,4077,8,165,1,165,3,165,4080,8,165,1,166,1,166,1,167,1,167,1, + 167,1,167,1,167,1,167,1,167,1,167,1,167,3,167,4093,8,167,1,168,1, + 168,1,168,1,168,3,168,4099,8,168,1,168,1,168,1,168,1,168,1,168,1, + 168,3,168,4107,8,168,1,169,1,169,1,169,5,169,4112,8,169,10,169,12, + 169,4115,9,169,1,169,1,169,3,169,4119,8,169,1,169,3,169,4122,8,169, + 1,169,1,169,1,169,5,169,4127,8,169,10,169,12,169,4130,9,169,3,169, + 4132,8,169,1,170,1,170,1,171,1,171,1,171,1,171,3,171,4140,8,171, + 1,171,3,171,4143,8,171,1,172,1,172,1,172,3,172,4148,8,172,1,172, + 1,172,1,172,1,172,1,172,3,172,4155,8,172,1,172,3,172,4158,8,172, + 1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172, + 1,172,1,172,1,172,1,172,1,172,5,172,4176,8,172,10,172,12,172,4179, + 9,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,3,172, + 4190,8,172,1,173,3,173,4193,8,173,1,173,1,173,1,173,1,173,3,173, + 4199,8,173,1,173,5,173,4202,8,173,10,173,12,173,4205,9,173,1,174, + 1,174,1,174,1,174,5,174,4211,8,174,10,174,12,174,4214,9,174,1,174, + 1,174,1,174,1,174,1,174,3,174,4221,8,174,1,174,1,174,1,174,3,174, + 4226,8,174,1,175,1,175,1,175,1,175,3,175,4232,8,175,1,175,1,175, + 1,175,5,175,4237,8,175,10,175,12,175,4240,9,175,1,175,1,175,1,175, + 1,175,1,175,3,175,4247,8,175,1,175,3,175,4250,8,175,1,176,1,176, + 1,176,1,176,1,176,1,176,1,176,1,176,1,176,5,176,4261,8,176,10,176, + 12,176,4264,9,176,1,176,1,176,1,177,1,177,1,177,1,177,1,177,1,177, + 1,177,1,177,1,177,3,177,4277,8,177,1,177,1,177,1,177,1,177,3,177, + 4283,8,177,1,177,1,177,1,177,1,177,1,177,1,177,3,177,4291,8,177, + 3,177,4293,8,177,1,178,1,178,1,179,1,179,3,179,4299,8,179,1,179, + 1,179,3,179,4303,8,179,1,179,3,179,4306,8,179,1,179,3,179,4309,8, + 179,1,179,1,179,1,179,3,179,4314,8,179,1,179,1,179,1,179,3,179,4319, + 8,179,1,179,1,179,3,179,4323,8,179,1,179,3,179,4326,8,179,1,179, + 3,179,4329,8,179,1,179,3,179,4332,8,179,1,179,3,179,4335,8,179,1, + 180,1,180,1,180,1,180,5,180,4341,8,180,10,180,12,180,4344,9,180, + 1,180,1,180,1,181,1,181,1,181,1,181,1,181,1,181,3,181,4354,8,181, + 1,181,3,181,4357,8,181,1,181,3,181,4360,8,181,1,181,1,181,1,181, + 3,181,4365,8,181,1,181,3,181,4368,8,181,1,181,1,181,3,181,4372,8, + 181,1,182,1,182,3,182,4376,8,182,1,182,1,182,1,182,1,182,3,182,4382, + 8,182,1,182,1,182,1,182,1,182,5,182,4388,8,182,10,182,12,182,4391, + 9,182,3,182,4393,8,182,1,182,1,182,1,182,1,182,1,182,1,182,1,182, + 1,182,1,182,5,182,4404,8,182,10,182,12,182,4407,9,182,1,182,1,182, + 3,182,4411,8,182,3,182,4413,8,182,1,182,4,182,4416,8,182,11,182, + 12,182,4417,1,182,1,182,1,182,1,182,1,182,3,182,4425,8,182,1,183, + 1,183,1,183,1,184,1,184,3,184,4432,8,184,1,184,1,184,1,185,1,185, + 1,185,5,185,4439,8,185,10,185,12,185,4442,9,185,1,186,1,186,1,186, + 5,186,4447,8,186,10,186,12,186,4450,9,186,1,187,1,187,1,187,1,187, + 1,187,3,187,4457,8,187,1,188,1,188,1,188,5,188,4462,8,188,10,188, + 12,188,4465,9,188,1,189,1,189,1,189,1,189,1,189,3,189,4472,8,189, + 1,190,1,190,1,190,5,190,4477,8,190,10,190,12,190,4480,9,190,1,191, + 1,191,1,191,1,191,1,191,3,191,4487,8,191,1,192,1,192,3,192,4491, + 8,192,1,192,1,192,3,192,4495,8,192,3,192,4497,8,192,1,192,1,192, + 1,193,1,193,3,193,4503,8,193,1,193,1,193,1,193,3,193,4508,8,193, + 1,194,1,194,3,194,4512,8,194,1,194,1,194,1,194,1,194,1,194,3,194, + 4519,8,194,1,195,1,195,1,195,3,195,4524,8,195,1,196,1,196,1,196, + 3,196,4529,8,196,1,196,1,196,1,196,3,196,4534,8,196,3,196,4536,8, + 196,1,196,1,196,1,197,1,197,1,197,1,198,1,198,1,198,3,198,4546,8, + 198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,3,198,4556,8, + 198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198,1,198, + 1,198,1,198,1,198,1,198,3,198,4572,8,198,1,199,1,199,1,199,1,199, + 1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199,5,199, + 4588,8,199,10,199,12,199,4591,9,199,1,199,1,199,1,199,1,199,1,199, + 1,199,1,199,1,199,1,199,3,199,4602,8,199,1,199,1,199,1,199,1,199, + 1,199,3,199,4609,8,199,1,200,1,200,1,200,1,201,1,201,1,201,1,202, + 1,202,1,202,1,202,1,202,1,202,1,202,3,202,4624,8,202,1,202,4,202, + 4627,8,202,11,202,12,202,4628,1,202,3,202,4632,8,202,1,203,1,203, + 1,203,3,203,4637,8,203,1,203,1,203,1,203,3,203,4642,8,203,1,203, + 1,203,1,203,3,203,4647,8,203,1,203,3,203,4650,8,203,1,203,3,203, + 4653,8,203,1,204,1,204,1,204,3,204,4658,8,204,1,204,1,204,1,204, + 5,204,4663,8,204,10,204,12,204,4666,9,204,1,204,3,204,4669,8,204, + 1,205,1,205,1,205,3,205,4674,8,205,1,205,1,205,1,205,5,205,4679, + 8,205,10,205,12,205,4682,9,205,1,205,3,205,4685,8,205,1,206,1,206, + 1,206,1,206,3,206,4691,8,206,1,206,1,206,1,206,1,206,1,206,1,206, + 1,206,3,206,4700,8,206,1,206,1,206,1,207,1,207,1,207,5,207,4707, + 8,207,10,207,12,207,4710,9,207,1,207,1,207,1,208,1,208,1,208,1,209, + 1,209,1,209,1,209,4,209,4721,8,209,11,209,12,209,4722,1,210,1,210, + 1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,210,3,210,4736, + 8,210,1,210,1,210,1,210,1,210,3,210,4742,8,210,1,210,1,210,3,210, + 4746,8,210,3,210,4748,8,210,1,211,1,211,1,211,1,212,1,212,3,212, + 4755,8,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212, + 1,212,1,212,3,212,4768,8,212,1,212,1,212,1,212,1,212,1,212,3,212, + 4775,8,212,3,212,4777,8,212,1,212,1,212,1,213,1,213,1,213,1,213, + 1,213,1,214,1,214,1,214,1,214,1,214,5,214,4791,8,214,10,214,12,214, + 4794,9,214,1,214,3,214,4797,8,214,1,214,1,214,3,214,4801,8,214,1, + 214,1,214,1,214,3,214,4806,8,214,1,214,1,214,1,214,3,214,4811,8, + 214,1,214,1,214,1,214,3,214,4816,8,214,1,214,1,214,1,214,3,214,4821, + 8,214,1,214,3,214,4824,8,214,1,215,1,215,1,215,1,215,1,215,1,216, + 1,216,1,216,1,216,1,216,3,216,4836,8,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,1,216,3,216,4889,8,216,1,216,1,216,1,216,1,216,1,216, + 1,216,1,216,3,216,4898,8,216,1,216,1,216,3,216,4902,8,216,1,216, + 1,216,1,216,1,216,1,216,1,216,1,216,3,216,4911,8,216,1,216,1,216, + 3,216,4915,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216, + 4924,8,216,1,216,1,216,3,216,4928,8,216,1,216,1,216,1,216,3,216, + 4933,8,216,1,216,3,216,4936,8,216,1,216,1,216,3,216,4940,8,216,1, + 216,1,216,1,216,3,216,4945,8,216,3,216,4947,8,216,1,216,1,216,1, + 216,1,216,1,216,1,216,1,216,3,216,4956,8,216,1,216,1,216,1,216,3, + 216,4961,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1, + 216,3,216,4972,8,216,1,216,1,216,3,216,4976,8,216,1,216,1,216,1, + 216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216, + 4990,8,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,4998,8,216, 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,4891,8,216, - 1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,4900,8,216,1,216, - 1,216,3,216,4904,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, - 3,216,4913,8,216,1,216,1,216,3,216,4917,8,216,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,3,216,4926,8,216,1,216,1,216,3,216,4930, - 8,216,1,216,1,216,1,216,3,216,4935,8,216,1,216,3,216,4938,8,216, - 1,216,1,216,3,216,4942,8,216,1,216,1,216,1,216,3,216,4947,8,216, - 3,216,4949,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216, - 4958,8,216,1,216,1,216,1,216,3,216,4963,8,216,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,1,216,1,216,3,216,4974,8,216,1,216,1,216, - 3,216,4978,8,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,3,216,4992,8,216,1,216,1,216,1,216,1,216, - 1,216,1,216,3,216,5000,8,216,1,216,1,216,1,216,1,216,1,216,1,216, 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216, - 1,216,1,216,1,216,1,216,1,216,1,216,1,216,1,216,3,216,5038,8,216, - 3,216,5040,8,216,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217, - 1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,3,217,5059, - 8,217,1,217,3,217,5062,8,217,1,217,1,217,1,217,1,217,1,217,1,218, + 1,216,1,216,1,216,3,216,5036,8,216,3,216,5038,8,216,1,217,1,217, + 1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217,1,217, + 1,217,1,217,1,217,1,217,3,217,5057,8,217,1,217,3,217,5060,8,217, + 1,217,1,217,1,217,1,217,1,217,1,218,1,218,1,218,1,218,1,218,1,218, 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, - 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,3,218,5089,8,218, - 1,218,1,218,3,218,5093,8,218,1,218,1,218,3,218,5097,8,218,1,218, - 1,218,3,218,5101,8,218,1,218,1,218,3,218,5105,8,218,1,218,3,218, - 5108,8,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218, - 1,218,1,218,1,218,1,218,3,218,5123,8,218,1,218,1,218,1,218,1,218, - 1,218,3,218,5130,8,218,1,219,1,219,1,219,1,219,1,219,1,219,1,220, - 1,220,1,220,1,220,5,220,5142,8,220,10,220,12,220,5145,9,220,1,220, - 1,220,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,3,221,5157, - 8,221,1,222,1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223, + 1,218,1,218,1,218,3,218,5087,8,218,1,218,1,218,3,218,5091,8,218, + 1,218,1,218,3,218,5095,8,218,1,218,1,218,3,218,5099,8,218,1,218, + 1,218,3,218,5103,8,218,1,218,3,218,5106,8,218,1,218,1,218,1,218, + 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,3,218, + 5121,8,218,1,218,1,218,1,218,1,218,1,218,3,218,5128,8,218,1,219, + 1,219,1,219,1,219,1,219,1,219,1,220,1,220,1,220,1,220,5,220,5140, + 8,220,10,220,12,220,5143,9,220,1,220,1,220,1,221,1,221,1,221,1,221, + 1,221,1,221,1,221,1,221,3,221,5155,8,221,1,222,1,222,1,222,1,222, + 1,222,1,222,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,3,223,5180,8,223, 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, - 1,223,1,223,3,223,5182,8,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,3,223,5199,8,223,1,223,1,223, 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, - 3,223,5201,8,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, - 1,223,1,223,1,223,1,223,1,223,3,223,5216,8,223,1,223,1,223,1,223, - 1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, - 3,223,5232,8,223,1,223,1,223,1,223,1,223,1,223,3,223,5239,8,223, - 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,3,224,5250, - 8,224,1,224,3,224,5253,8,224,1,225,1,225,1,225,1,225,1,225,1,225, - 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,5,225,5270, - 8,225,10,225,12,225,5273,9,225,3,225,5275,8,225,1,226,1,226,1,226, - 1,226,1,226,1,226,1,226,1,226,1,226,5,226,5286,8,226,10,226,12,226, - 5289,9,226,1,226,3,226,5292,8,226,1,227,1,227,1,227,1,227,1,227, - 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, - 1,227,1,227,3,227,5312,8,227,1,227,1,227,1,227,1,227,1,227,1,227, - 1,227,1,227,5,227,5322,8,227,10,227,12,227,5325,9,227,1,227,3,227, - 5328,8,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, + 3,223,5214,8,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,223,1,223,1,223,1,223,1,223,1,223,3,223,5230,8,223,1,223,1,223, + 1,223,1,223,1,223,3,223,5237,8,223,1,224,1,224,1,224,1,224,1,224, + 1,224,1,224,1,224,1,224,3,224,5248,8,224,1,224,3,224,5251,8,224, + 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225, + 1,225,1,225,1,225,1,225,5,225,5268,8,225,10,225,12,225,5271,9,225, + 3,225,5273,8,225,1,226,1,226,1,226,1,226,1,226,1,226,1,226,1,226, + 1,226,5,226,5284,8,226,10,226,12,226,5287,9,226,1,226,3,226,5290, + 8,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, + 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,3,227,5310,8,227, + 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,5,227,5320,8,227, + 10,227,12,227,5323,9,227,1,227,3,227,5326,8,227,1,227,1,227,1,227, 1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, - 3,227,5350,8,227,1,228,1,228,3,228,5354,8,228,1,228,1,228,1,228, - 1,228,1,228,1,228,1,228,1,228,3,228,5364,8,228,1,228,1,228,3,228, - 5368,8,228,1,228,1,228,1,228,1,228,3,228,5374,8,228,1,228,1,228, - 3,228,5378,8,228,5,228,5380,8,228,10,228,12,228,5383,9,228,1,228, - 3,228,5386,8,228,1,229,1,229,1,229,1,229,1,229,3,229,5393,8,229, - 1,230,1,230,1,230,3,230,5398,8,230,1,231,1,231,1,231,1,232,1,232, - 1,232,1,233,1,233,1,233,3,233,5409,8,233,1,234,1,234,3,234,5413, - 8,234,1,234,3,234,5416,8,234,1,234,1,234,1,234,3,234,5421,8,234, - 1,234,1,234,1,234,1,234,3,234,5427,8,234,1,234,1,234,1,234,1,234, - 1,234,1,234,1,234,1,234,1,234,3,234,5438,8,234,1,234,1,234,3,234, - 5442,8,234,1,234,3,234,5445,8,234,1,234,1,234,3,234,5449,8,234,1, - 234,1,234,3,234,5453,8,234,1,234,3,234,5456,8,234,1,235,1,235,1, - 236,1,236,1,236,1,236,1,236,1,236,3,236,5466,8,236,1,236,3,236,5469, - 8,236,1,237,1,237,3,237,5473,8,237,1,237,5,237,5476,8,237,10,237, - 12,237,5479,9,237,1,238,1,238,1,238,3,238,5484,8,238,1,238,3,238, - 5487,8,238,1,238,1,238,1,238,3,238,5492,8,238,1,238,3,238,5495,8, - 238,1,238,1,238,1,238,1,238,1,238,3,238,5502,8,238,3,238,5504,8, - 238,1,238,1,238,1,238,1,238,3,238,5510,8,238,1,238,1,238,3,238,5514, - 8,238,1,239,1,239,1,239,1,240,1,240,1,240,1,240,3,240,5523,8,240, - 1,240,4,240,5526,8,240,11,240,12,240,5527,3,240,5530,8,240,1,241, - 1,241,1,241,1,241,1,241,1,241,1,241,1,241,3,241,5540,8,241,1,241, - 3,241,5543,8,241,1,241,1,241,1,241,3,241,5548,8,241,1,242,1,242, - 1,242,1,242,1,242,1,242,3,242,5556,8,242,1,242,3,242,5559,8,242, - 1,242,4,242,5562,8,242,11,242,12,242,5563,3,242,5566,8,242,3,242, - 5568,8,242,1,243,1,243,1,243,1,243,3,243,5574,8,243,1,244,1,244, - 1,244,1,244,1,244,1,244,1,245,1,245,1,245,1,245,1,245,1,246,1,246, - 1,246,1,246,3,246,5591,8,246,1,246,1,246,5,246,5595,8,246,10,246, - 12,246,5598,9,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247, - 1,247,1,247,3,247,5610,8,247,1,247,1,247,1,247,1,247,3,247,5616, - 8,247,1,247,1,247,3,247,5620,8,247,1,247,1,247,1,247,3,247,5625, - 8,247,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,249,1,249,1,249, + 1,227,1,227,1,227,1,227,1,227,1,227,3,227,5348,8,227,1,228,1,228, + 3,228,5352,8,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228, + 3,228,5362,8,228,1,228,1,228,3,228,5366,8,228,1,228,1,228,1,228, + 1,228,3,228,5372,8,228,1,228,1,228,3,228,5376,8,228,5,228,5378,8, + 228,10,228,12,228,5381,9,228,1,228,3,228,5384,8,228,1,229,1,229, + 1,229,1,229,1,229,3,229,5391,8,229,1,230,1,230,1,230,3,230,5396, + 8,230,1,231,1,231,1,231,1,232,1,232,1,232,1,233,1,233,1,233,3,233, + 5407,8,233,1,234,1,234,3,234,5411,8,234,1,234,3,234,5414,8,234,1, + 234,1,234,1,234,3,234,5419,8,234,1,234,1,234,1,234,1,234,3,234,5425, + 8,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,3,234, + 5436,8,234,1,234,1,234,3,234,5440,8,234,1,234,3,234,5443,8,234,1, + 234,1,234,3,234,5447,8,234,1,234,1,234,3,234,5451,8,234,1,234,3, + 234,5454,8,234,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,236,3, + 236,5464,8,236,1,236,3,236,5467,8,236,1,237,1,237,3,237,5471,8,237, + 1,237,5,237,5474,8,237,10,237,12,237,5477,9,237,1,238,1,238,1,238, + 3,238,5482,8,238,1,238,3,238,5485,8,238,1,238,1,238,1,238,3,238, + 5490,8,238,1,238,3,238,5493,8,238,1,238,1,238,1,238,1,238,1,238, + 3,238,5500,8,238,3,238,5502,8,238,1,238,1,238,1,238,1,238,3,238, + 5508,8,238,1,238,1,238,3,238,5512,8,238,1,239,1,239,1,239,1,240, + 1,240,1,240,1,240,3,240,5521,8,240,1,240,4,240,5524,8,240,11,240, + 12,240,5525,3,240,5528,8,240,1,241,1,241,1,241,1,241,1,241,1,241, + 1,241,1,241,3,241,5538,8,241,1,241,3,241,5541,8,241,1,241,1,241, + 1,241,3,241,5546,8,241,1,242,1,242,1,242,1,242,1,242,1,242,3,242, + 5554,8,242,1,242,3,242,5557,8,242,1,242,4,242,5560,8,242,11,242, + 12,242,5561,3,242,5564,8,242,3,242,5566,8,242,1,243,1,243,1,243, + 1,243,3,243,5572,8,243,1,244,1,244,1,244,1,244,1,244,1,244,1,245, + 1,245,1,245,1,245,1,245,1,246,1,246,1,246,1,246,3,246,5589,8,246, + 1,246,1,246,5,246,5593,8,246,10,246,12,246,5596,9,246,1,247,1,247, + 1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,247,3,247,5608,8,247, + 1,247,1,247,1,247,1,247,3,247,5614,8,247,1,247,1,247,3,247,5618, + 8,247,1,247,1,247,1,247,3,247,5623,8,247,1,248,1,248,1,248,1,248, + 1,248,1,248,1,248,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249, 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249, - 1,249,1,249,1,249,1,249,1,249,1,249,1,249,3,249,5655,8,249,1,249, - 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249, - 1,249,3,249,5670,8,249,1,249,1,249,1,249,3,249,5675,8,249,1,250, - 1,250,3,250,5679,8,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250, - 1,250,1,250,1,251,1,251,3,251,5692,8,251,1,251,1,251,3,251,5696, - 8,251,3,251,5698,8,251,1,251,1,251,1,251,1,251,1,251,5,251,5705, - 8,251,10,251,12,251,5708,9,251,1,251,1,251,1,251,3,251,5713,8,251, - 3,251,5715,8,251,1,252,1,252,3,252,5719,8,252,1,252,3,252,5722,8, - 252,1,252,3,252,5725,8,252,1,252,3,252,5728,8,252,1,252,3,252,5731, - 8,252,3,252,5733,8,252,1,252,3,252,5736,8,252,1,253,1,253,3,253, - 5740,8,253,1,253,1,253,1,253,1,253,5,253,5746,8,253,10,253,12,253, - 5749,9,253,1,253,1,253,3,253,5753,8,253,1,253,3,253,5756,8,253,1, - 254,1,254,1,255,1,255,3,255,5762,8,255,1,255,1,255,3,255,5766,8, - 255,1,256,1,256,3,256,5770,8,256,1,256,1,256,1,256,3,256,5775,8, - 256,3,256,5777,8,256,1,257,1,257,3,257,5781,8,257,1,258,1,258,3, - 258,5785,8,258,1,259,1,259,1,259,5,259,5790,8,259,10,259,12,259, - 5793,9,259,1,260,1,260,1,260,3,260,5798,8,260,1,260,1,260,3,260, - 5802,8,260,3,260,5804,8,260,3,260,5806,8,260,1,260,1,260,1,261,1, - 261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,3,261,5819,8,261,1, - 262,1,262,1,262,1,262,5,262,5825,8,262,10,262,12,262,5828,9,262, - 1,262,1,262,1,263,1,263,1,263,3,263,5835,8,263,1,263,1,263,1,263, - 1,264,1,264,1,264,1,264,5,264,5844,8,264,10,264,12,264,5847,9,264, - 1,264,1,264,1,265,1,265,1,265,1,265,3,265,5855,8,265,1,266,1,266, - 1,266,3,266,5860,8,266,1,266,1,266,3,266,5864,8,266,1,266,1,266, - 3,266,5868,8,266,1,266,1,266,1,266,1,266,1,266,3,266,5875,8,266, - 1,266,3,266,5878,8,266,3,266,5880,8,266,1,267,1,267,1,267,1,267, - 1,268,1,268,3,268,5888,8,268,1,268,1,268,3,268,5892,8,268,1,269, - 3,269,5895,8,269,1,269,1,269,1,269,1,269,1,269,3,269,5902,8,269, - 1,269,1,269,1,269,1,269,1,269,3,269,5909,8,269,1,269,1,269,1,269, - 3,269,5914,8,269,1,269,1,269,1,269,1,269,1,269,3,269,5921,8,269, - 1,269,3,269,5924,8,269,3,269,5926,8,269,1,269,3,269,5929,8,269,1, - 270,1,270,1,270,1,270,3,270,5935,8,270,1,270,1,270,1,270,3,270,5940, - 8,270,1,270,1,270,3,270,5944,8,270,1,271,1,271,1,271,5,271,5949, - 8,271,10,271,12,271,5952,9,271,1,272,1,272,1,272,1,273,1,273,1,273, - 1,274,3,274,5961,8,274,1,274,1,274,1,274,1,274,1,274,3,274,5968, - 8,274,1,274,3,274,5971,8,274,1,274,3,274,5974,8,274,1,275,1,275, - 3,275,5978,8,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275,1,275, - 1,275,3,275,5989,8,275,1,275,3,275,5992,8,275,1,275,3,275,5995,8, - 275,1,275,3,275,5998,8,275,1,276,3,276,6001,8,276,1,276,1,276,1, - 276,1,276,1,276,3,276,6008,8,276,1,276,3,276,6011,8,276,1,276,3, - 276,6014,8,276,1,277,1,277,1,277,5,277,6019,8,277,10,277,12,277, - 6022,9,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, - 3,278,6033,8,278,1,278,1,278,1,278,1,278,1,278,3,278,6040,8,278, - 3,278,6042,8,278,1,279,1,279,1,279,3,279,6047,8,279,1,279,1,279, - 1,279,5,279,6052,8,279,10,279,12,279,6055,9,279,1,279,1,279,1,279, - 3,279,6060,8,279,1,279,1,279,1,279,1,280,1,280,3,280,6067,8,280, - 1,281,1,281,1,281,3,281,6072,8,281,1,281,1,281,1,282,3,282,6077, - 8,282,1,282,1,282,3,282,6081,8,282,1,282,1,282,3,282,6085,8,282, - 1,282,1,282,3,282,6089,8,282,3,282,6091,8,282,1,283,1,283,3,283, - 6095,8,283,1,284,1,284,3,284,6099,8,284,1,284,3,284,6102,8,284,1, - 284,3,284,6105,8,284,3,284,6107,8,284,1,284,1,284,1,284,1,284,1, - 284,1,284,1,284,1,284,3,284,6117,8,284,3,284,6119,8,284,1,284,1, - 284,1,284,3,284,6124,8,284,5,284,6126,8,284,10,284,12,284,6129,9, - 284,1,285,1,285,3,285,6133,8,285,1,286,1,286,3,286,6137,8,286,1, - 286,1,286,1,286,5,286,6142,8,286,10,286,12,286,6145,9,286,1,287, - 1,287,3,287,6149,8,287,1,287,1,287,3,287,6153,8,287,1,287,3,287, - 6156,8,287,1,287,1,287,1,287,1,287,3,287,6162,8,287,1,287,3,287, - 6165,8,287,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,288,1,289, - 1,289,1,289,1,289,1,289,1,289,1,289,1,289,1,289,3,289,6184,8,289, - 1,289,1,289,1,289,1,290,1,290,3,290,6191,8,290,1,290,1,290,3,290, - 6195,8,290,1,291,3,291,6198,8,291,1,291,1,291,3,291,6202,8,291,1, - 291,1,291,3,291,6206,8,291,1,291,3,291,6209,8,291,1,291,3,291,6212, - 8,291,1,292,1,292,1,292,3,292,6217,8,292,1,293,1,293,1,293,1,293, - 1,293,5,293,6224,8,293,10,293,12,293,6227,9,293,1,294,1,294,1,294, - 1,294,3,294,6233,8,294,1,294,1,294,3,294,6237,8,294,1,295,1,295, - 3,295,6241,8,295,1,295,1,295,3,295,6245,8,295,1,295,3,295,6248,8, - 295,3,295,6250,8,295,1,296,1,296,1,296,3,296,6255,8,296,1,296,1, - 296,3,296,6259,8,296,1,297,1,297,1,297,3,297,6264,8,297,1,297,1, - 297,1,297,1,297,3,297,6270,8,297,1,298,1,298,1,298,1,298,1,298,3, - 298,6277,8,298,1,299,1,299,1,299,3,299,6282,8,299,1,300,1,300,1, - 300,3,300,6287,8,300,1,300,1,300,1,301,1,301,1,301,5,301,6294,8, - 301,10,301,12,301,6297,9,301,1,302,1,302,1,302,1,302,3,302,6303, - 8,302,1,302,1,302,1,302,1,302,5,302,6309,8,302,10,302,12,302,6312, - 9,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,1,302,3,302,6322, - 8,302,1,303,1,303,1,303,3,303,6327,8,303,1,303,1,303,3,303,6331, - 8,303,1,303,3,303,6334,8,303,1,303,1,303,3,303,6338,8,303,1,303, - 1,303,1,303,3,303,6343,8,303,4,303,6345,8,303,11,303,12,303,6346, - 1,303,1,303,1,303,3,303,6352,8,303,1,304,1,304,1,304,1,304,5,304, - 6358,8,304,10,304,12,304,6361,9,304,1,305,1,305,1,305,1,306,1,306, - 1,306,5,306,6369,8,306,10,306,12,306,6372,9,306,1,307,1,307,3,307, - 6376,8,307,1,307,1,307,3,307,6380,8,307,1,307,3,307,6383,8,307,1, - 307,3,307,6386,8,307,3,307,6388,8,307,1,307,3,307,6391,8,307,1,307, - 3,307,6394,8,307,1,307,3,307,6397,8,307,1,307,1,307,3,307,6401,8, - 307,1,307,1,307,3,307,6405,8,307,1,307,1,307,3,307,6409,8,307,3, - 307,6411,8,307,1,307,1,307,1,307,1,307,1,307,1,307,1,307,3,307,6420, - 8,307,1,307,1,307,1,307,3,307,6425,8,307,1,307,1,307,1,307,1,307, - 3,307,6431,8,307,1,307,1,307,3,307,6435,8,307,3,307,6437,8,307,1, - 307,1,307,1,307,1,307,1,307,3,307,6444,8,307,1,307,1,307,1,307,3, - 307,6449,8,307,1,307,1,307,1,307,1,307,5,307,6455,8,307,10,307,12, - 307,6458,9,307,1,308,3,308,6461,8,308,1,308,1,308,1,308,1,308,1, - 308,3,308,6468,8,308,1,309,1,309,1,309,3,309,6473,8,309,1,309,3, - 309,6476,8,309,1,309,1,309,1,309,1,309,3,309,6482,8,309,1,310,1, - 310,3,310,6486,8,310,1,311,1,311,1,311,1,311,3,311,6492,8,311,1, - 312,1,312,1,312,1,312,1,312,1,312,1,312,3,312,6501,8,312,1,312,1, - 312,1,312,1,312,3,312,6507,8,312,3,312,6509,8,312,1,313,1,313,1, - 313,3,313,6514,8,313,1,313,3,313,6517,8,313,1,313,1,313,1,313,1, - 313,1,313,1,313,1,313,3,313,6526,8,313,1,313,1,313,1,313,1,313,1, - 313,3,313,6533,8,313,3,313,6535,8,313,1,314,1,314,1,314,5,314,6540, - 8,314,10,314,12,314,6543,9,314,1,315,1,315,3,315,6547,8,315,1,315, - 3,315,6550,8,315,1,316,1,316,1,316,1,316,1,316,1,316,1,316,1,316, - 3,316,6560,8,316,1,317,1,317,1,317,1,317,1,317,1,317,1,317,5,317, - 6569,8,317,10,317,12,317,6572,9,317,1,317,1,317,3,317,6576,8,317, - 1,317,1,317,3,317,6580,8,317,1,318,1,318,1,318,1,318,1,318,1,318, - 3,318,6588,8,318,1,319,1,319,1,319,1,320,1,320,1,320,1,320,1,320, - 3,320,6598,8,320,1,321,1,321,1,321,5,321,6603,8,321,10,321,12,321, - 6606,9,321,1,322,1,322,1,322,3,322,6611,8,322,1,323,1,323,1,323, - 1,323,1,323,1,323,1,323,5,323,6620,8,323,10,323,12,323,6623,9,323, - 1,323,1,323,1,323,3,323,6628,8,323,1,323,1,323,1,323,1,323,1,323, - 1,323,5,323,6636,8,323,10,323,12,323,6639,9,323,1,323,1,323,1,324, - 1,324,1,324,1,324,3,324,6647,8,324,1,324,1,324,3,324,6651,8,324, - 1,324,4,324,6654,8,324,11,324,12,324,6655,3,324,6658,8,324,1,324, - 1,324,3,324,6662,8,324,1,325,1,325,1,325,1,325,1,325,1,325,3,325, - 6670,8,325,1,326,3,326,6673,8,326,1,326,1,326,1,326,3,326,6678,8, - 326,1,326,5,326,6681,8,326,10,326,12,326,6684,9,326,1,326,1,326, - 1,326,1,326,3,326,6690,8,326,3,326,6692,8,326,1,326,1,326,1,326, - 1,326,3,326,6698,8,326,1,327,1,327,3,327,6702,8,327,1,327,3,327, - 6705,8,327,1,327,1,327,1,327,3,327,6710,8,327,1,327,3,327,6713,8, - 327,3,327,6715,8,327,1,328,1,328,1,328,1,328,3,328,6721,8,328,1, - 329,1,329,1,329,1,329,1,329,1,329,1,329,3,329,6730,8,329,1,329,1, - 329,1,329,1,329,3,329,6736,8,329,1,329,3,329,6739,8,329,1,330,1, - 330,1,330,1,330,1,331,1,331,3,331,6747,8,331,1,331,3,331,6750,8, - 331,1,332,1,332,3,332,6754,8,332,1,332,1,332,1,332,1,332,3,332,6760, - 8,332,3,332,6762,8,332,1,332,3,332,6765,8,332,1,333,1,333,3,333, - 6769,8,333,1,333,1,333,1,333,3,333,6774,8,333,1,334,1,334,1,334, - 1,334,1,334,3,334,6781,8,334,1,334,1,334,1,334,1,334,1,334,3,334, - 6788,8,334,3,334,6790,8,334,1,334,1,334,1,334,1,334,3,334,6796,8, - 334,3,334,6798,8,334,1,334,1,334,1,334,3,334,6803,8,334,3,334,6805, - 8,334,1,335,1,335,3,335,6809,8,335,1,336,1,336,1,337,1,337,1,338, - 1,338,1,338,3,338,6818,8,338,1,338,1,338,3,338,6822,8,338,1,338, - 1,338,1,338,1,338,1,338,1,338,5,338,6830,8,338,10,338,12,338,6833, - 9,338,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339, - 1,339,3,339,6846,8,339,1,339,3,339,6849,8,339,1,339,1,339,1,339, - 1,339,1,339,1,339,3,339,6857,8,339,1,339,1,339,1,339,1,339,1,339, - 5,339,6864,8,339,10,339,12,339,6867,9,339,1,339,1,339,1,339,3,339, - 6872,8,339,1,339,1,339,1,339,3,339,6877,8,339,1,339,1,339,1,339, - 1,339,1,339,1,339,3,339,6885,8,339,3,339,6887,8,339,1,339,1,339, - 1,339,3,339,6892,8,339,1,339,1,339,3,339,6896,8,339,1,339,1,339, - 1,339,3,339,6901,8,339,1,339,1,339,1,339,3,339,6906,8,339,1,340, - 1,340,1,340,1,340,3,340,6912,8,340,1,340,1,340,1,340,1,340,1,340, - 1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,5,340,6928, - 8,340,10,340,12,340,6931,9,340,1,341,1,341,1,341,1,341,1,341,1,341, - 3,341,6939,8,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, - 1,341,1,341,1,341,1,341,1,341,3,341,6954,8,341,1,341,1,341,1,341, - 3,341,6959,8,341,1,341,3,341,6962,8,341,1,341,1,341,1,341,1,341, - 3,341,6968,8,341,1,341,1,341,1,341,3,341,6973,8,341,1,341,1,341, - 1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,3,341,6986, - 8,341,1,341,4,341,6989,8,341,11,341,12,341,6990,1,341,1,341,3,341, - 6995,8,341,1,341,1,341,1,341,1,341,1,341,3,341,7002,8,341,1,341, + 1,249,1,249,3,249,5653,8,249,1,249,1,249,1,249,1,249,1,249,1,249, + 1,249,1,249,1,249,1,249,1,249,1,249,1,249,3,249,5668,8,249,1,249, + 1,249,1,249,3,249,5673,8,249,1,250,1,250,3,250,5677,8,250,1,250, + 1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,250,1,251,1,251,3,251, + 5690,8,251,1,251,1,251,3,251,5694,8,251,3,251,5696,8,251,1,251,1, + 251,1,251,1,251,1,251,5,251,5703,8,251,10,251,12,251,5706,9,251, + 1,251,1,251,1,251,3,251,5711,8,251,3,251,5713,8,251,1,252,1,252, + 3,252,5717,8,252,1,252,3,252,5720,8,252,1,252,3,252,5723,8,252,1, + 252,3,252,5726,8,252,1,252,3,252,5729,8,252,3,252,5731,8,252,1,252, + 3,252,5734,8,252,1,253,1,253,3,253,5738,8,253,1,253,1,253,1,253, + 1,253,5,253,5744,8,253,10,253,12,253,5747,9,253,1,253,1,253,3,253, + 5751,8,253,1,253,3,253,5754,8,253,1,254,1,254,1,255,1,255,3,255, + 5760,8,255,1,255,1,255,3,255,5764,8,255,1,256,1,256,3,256,5768,8, + 256,1,256,1,256,1,256,3,256,5773,8,256,3,256,5775,8,256,1,257,1, + 257,3,257,5779,8,257,1,258,1,258,3,258,5783,8,258,1,259,1,259,1, + 259,5,259,5788,8,259,10,259,12,259,5791,9,259,1,260,1,260,1,260, + 3,260,5796,8,260,1,260,1,260,3,260,5800,8,260,3,260,5802,8,260,3, + 260,5804,8,260,1,260,1,260,1,261,1,261,1,261,1,261,1,261,1,261,1, + 261,1,261,1,261,3,261,5817,8,261,1,262,1,262,1,262,1,262,5,262,5823, + 8,262,10,262,12,262,5826,9,262,1,262,1,262,1,263,1,263,1,263,3,263, + 5833,8,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264,5,264,5842, + 8,264,10,264,12,264,5845,9,264,1,264,1,264,1,265,1,265,1,265,1,265, + 3,265,5853,8,265,1,266,1,266,1,266,3,266,5858,8,266,1,266,1,266, + 3,266,5862,8,266,1,266,1,266,3,266,5866,8,266,1,266,1,266,1,266, + 1,266,1,266,3,266,5873,8,266,1,266,3,266,5876,8,266,3,266,5878,8, + 266,1,267,1,267,1,267,1,267,1,268,1,268,3,268,5886,8,268,1,268,1, + 268,3,268,5890,8,268,1,269,3,269,5893,8,269,1,269,1,269,1,269,1, + 269,1,269,3,269,5900,8,269,1,269,1,269,1,269,1,269,1,269,3,269,5907, + 8,269,1,269,1,269,1,269,3,269,5912,8,269,1,269,1,269,1,269,1,269, + 1,269,3,269,5919,8,269,1,269,3,269,5922,8,269,3,269,5924,8,269,1, + 269,3,269,5927,8,269,1,270,1,270,1,270,1,270,3,270,5933,8,270,1, + 270,1,270,1,270,3,270,5938,8,270,1,270,1,270,3,270,5942,8,270,1, + 271,1,271,1,271,5,271,5947,8,271,10,271,12,271,5950,9,271,1,272, + 1,272,1,272,1,273,1,273,1,273,1,274,3,274,5959,8,274,1,274,1,274, + 1,274,1,274,1,274,3,274,5966,8,274,1,274,3,274,5969,8,274,1,274, + 3,274,5972,8,274,1,275,1,275,3,275,5976,8,275,1,275,1,275,1,275, + 1,275,1,275,1,275,1,275,1,275,1,275,3,275,5987,8,275,1,275,3,275, + 5990,8,275,1,275,3,275,5993,8,275,1,275,3,275,5996,8,275,1,276,3, + 276,5999,8,276,1,276,1,276,1,276,1,276,1,276,3,276,6006,8,276,1, + 276,3,276,6009,8,276,1,276,3,276,6012,8,276,1,277,1,277,1,277,5, + 277,6017,8,277,10,277,12,277,6020,9,277,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,278,1,278,3,278,6031,8,278,1,278,1,278,1,278, + 1,278,1,278,3,278,6038,8,278,3,278,6040,8,278,1,279,1,279,1,279, + 3,279,6045,8,279,1,279,1,279,1,279,5,279,6050,8,279,10,279,12,279, + 6053,9,279,1,279,1,279,1,279,3,279,6058,8,279,1,279,1,279,1,279, + 1,280,1,280,3,280,6065,8,280,1,281,1,281,1,281,3,281,6070,8,281, + 1,281,1,281,1,282,3,282,6075,8,282,1,282,1,282,3,282,6079,8,282, + 1,282,1,282,3,282,6083,8,282,1,282,1,282,3,282,6087,8,282,3,282, + 6089,8,282,1,283,1,283,3,283,6093,8,283,1,284,1,284,3,284,6097,8, + 284,1,284,3,284,6100,8,284,1,284,3,284,6103,8,284,3,284,6105,8,284, + 1,284,1,284,1,284,1,284,1,284,1,284,1,284,1,284,3,284,6115,8,284, + 3,284,6117,8,284,1,284,1,284,1,284,3,284,6122,8,284,5,284,6124,8, + 284,10,284,12,284,6127,9,284,1,285,1,285,3,285,6131,8,285,1,286, + 1,286,3,286,6135,8,286,1,286,1,286,1,286,5,286,6140,8,286,10,286, + 12,286,6143,9,286,1,287,1,287,3,287,6147,8,287,1,287,1,287,3,287, + 6151,8,287,1,287,3,287,6154,8,287,1,287,1,287,1,287,1,287,3,287, + 6160,8,287,1,287,3,287,6163,8,287,1,288,1,288,1,288,1,288,1,288, + 1,288,1,288,1,288,1,289,1,289,1,289,1,289,1,289,1,289,1,289,1,289, + 1,289,3,289,6182,8,289,1,289,1,289,1,289,1,290,1,290,3,290,6189, + 8,290,1,290,1,290,3,290,6193,8,290,1,291,3,291,6196,8,291,1,291, + 1,291,3,291,6200,8,291,1,291,1,291,3,291,6204,8,291,1,291,3,291, + 6207,8,291,1,291,3,291,6210,8,291,1,292,1,292,1,292,3,292,6215,8, + 292,1,293,1,293,1,293,1,293,1,293,5,293,6222,8,293,10,293,12,293, + 6225,9,293,1,294,1,294,1,294,1,294,3,294,6231,8,294,1,294,1,294, + 3,294,6235,8,294,1,295,1,295,3,295,6239,8,295,1,295,1,295,3,295, + 6243,8,295,1,295,3,295,6246,8,295,3,295,6248,8,295,1,296,1,296,1, + 296,3,296,6253,8,296,1,296,1,296,3,296,6257,8,296,1,297,1,297,1, + 297,3,297,6262,8,297,1,297,1,297,1,297,1,297,3,297,6268,8,297,1, + 298,1,298,1,298,1,298,1,298,3,298,6275,8,298,1,299,1,299,1,299,3, + 299,6280,8,299,1,300,1,300,1,300,3,300,6285,8,300,1,300,1,300,1, + 301,1,301,1,301,5,301,6292,8,301,10,301,12,301,6295,9,301,1,302, + 1,302,1,302,1,302,3,302,6301,8,302,1,302,1,302,1,302,1,302,5,302, + 6307,8,302,10,302,12,302,6310,9,302,1,302,1,302,1,302,1,302,1,302, + 1,302,1,302,1,302,3,302,6320,8,302,1,303,1,303,1,303,3,303,6325, + 8,303,1,303,1,303,3,303,6329,8,303,1,303,3,303,6332,8,303,1,303, + 1,303,3,303,6336,8,303,1,303,1,303,1,303,3,303,6341,8,303,4,303, + 6343,8,303,11,303,12,303,6344,1,303,1,303,1,303,3,303,6350,8,303, + 1,304,1,304,1,304,1,304,5,304,6356,8,304,10,304,12,304,6359,9,304, + 1,305,1,305,1,305,1,306,1,306,1,306,5,306,6367,8,306,10,306,12,306, + 6370,9,306,1,307,1,307,3,307,6374,8,307,1,307,1,307,3,307,6378,8, + 307,1,307,3,307,6381,8,307,1,307,3,307,6384,8,307,3,307,6386,8,307, + 1,307,3,307,6389,8,307,1,307,3,307,6392,8,307,1,307,3,307,6395,8, + 307,1,307,1,307,3,307,6399,8,307,1,307,1,307,3,307,6403,8,307,1, + 307,1,307,3,307,6407,8,307,3,307,6409,8,307,1,307,1,307,1,307,1, + 307,1,307,1,307,1,307,3,307,6418,8,307,1,307,1,307,1,307,3,307,6423, + 8,307,1,307,1,307,1,307,1,307,3,307,6429,8,307,1,307,1,307,3,307, + 6433,8,307,3,307,6435,8,307,1,307,1,307,1,307,1,307,1,307,3,307, + 6442,8,307,1,307,1,307,1,307,3,307,6447,8,307,1,307,1,307,1,307, + 1,307,5,307,6453,8,307,10,307,12,307,6456,9,307,1,308,3,308,6459, + 8,308,1,308,1,308,1,308,1,308,1,308,3,308,6466,8,308,1,309,1,309, + 1,309,3,309,6471,8,309,1,309,3,309,6474,8,309,1,309,1,309,1,309, + 1,309,3,309,6480,8,309,1,310,1,310,3,310,6484,8,310,1,311,1,311, + 1,311,1,311,3,311,6490,8,311,1,312,1,312,1,312,1,312,1,312,1,312, + 1,312,3,312,6499,8,312,1,312,1,312,1,312,1,312,3,312,6505,8,312, + 3,312,6507,8,312,1,313,1,313,1,313,3,313,6512,8,313,1,313,3,313, + 6515,8,313,1,313,1,313,1,313,1,313,1,313,1,313,1,313,3,313,6524, + 8,313,1,313,1,313,1,313,1,313,1,313,3,313,6531,8,313,3,313,6533, + 8,313,1,314,1,314,1,314,5,314,6538,8,314,10,314,12,314,6541,9,314, + 1,315,1,315,3,315,6545,8,315,1,315,3,315,6548,8,315,1,316,1,316, + 1,316,1,316,1,316,1,316,1,316,1,316,3,316,6558,8,316,1,317,1,317, + 1,317,1,317,1,317,1,317,1,317,5,317,6567,8,317,10,317,12,317,6570, + 9,317,1,317,1,317,3,317,6574,8,317,1,317,1,317,3,317,6578,8,317, + 1,318,1,318,1,318,1,318,1,318,1,318,3,318,6586,8,318,1,319,1,319, + 1,319,1,320,1,320,1,320,1,320,1,320,3,320,6596,8,320,1,321,1,321, + 1,321,5,321,6601,8,321,10,321,12,321,6604,9,321,1,322,1,322,1,322, + 3,322,6609,8,322,1,323,1,323,1,323,1,323,1,323,1,323,1,323,5,323, + 6618,8,323,10,323,12,323,6621,9,323,1,323,1,323,1,323,3,323,6626, + 8,323,1,323,1,323,1,323,1,323,1,323,1,323,5,323,6634,8,323,10,323, + 12,323,6637,9,323,1,323,1,323,1,324,1,324,1,324,1,324,3,324,6645, + 8,324,1,324,1,324,3,324,6649,8,324,1,324,4,324,6652,8,324,11,324, + 12,324,6653,3,324,6656,8,324,1,324,1,324,3,324,6660,8,324,1,325, + 1,325,1,325,1,325,1,325,1,325,3,325,6668,8,325,1,326,3,326,6671, + 8,326,1,326,1,326,1,326,3,326,6676,8,326,1,326,5,326,6679,8,326, + 10,326,12,326,6682,9,326,1,326,1,326,1,326,1,326,3,326,6688,8,326, + 3,326,6690,8,326,1,326,1,326,1,326,1,326,3,326,6696,8,326,1,327, + 1,327,3,327,6700,8,327,1,327,3,327,6703,8,327,1,327,1,327,1,327, + 3,327,6708,8,327,1,327,3,327,6711,8,327,3,327,6713,8,327,1,328,1, + 328,1,328,1,328,3,328,6719,8,328,1,329,1,329,1,329,1,329,1,329,1, + 329,1,329,3,329,6728,8,329,1,329,1,329,1,329,1,329,3,329,6734,8, + 329,1,329,3,329,6737,8,329,1,330,1,330,1,330,1,330,1,331,1,331,3, + 331,6745,8,331,1,331,3,331,6748,8,331,1,332,1,332,3,332,6752,8,332, + 1,332,1,332,1,332,1,332,3,332,6758,8,332,3,332,6760,8,332,1,332, + 3,332,6763,8,332,1,333,1,333,3,333,6767,8,333,1,333,1,333,1,333, + 3,333,6772,8,333,1,334,1,334,1,334,1,334,1,334,3,334,6779,8,334, + 1,334,1,334,1,334,1,334,1,334,3,334,6786,8,334,3,334,6788,8,334, + 1,334,1,334,1,334,1,334,3,334,6794,8,334,3,334,6796,8,334,1,334, + 1,334,1,334,3,334,6801,8,334,3,334,6803,8,334,1,335,1,335,3,335, + 6807,8,335,1,336,1,336,1,337,1,337,1,338,1,338,1,338,3,338,6816, + 8,338,1,338,1,338,3,338,6820,8,338,1,338,1,338,1,338,1,338,1,338, + 1,338,5,338,6828,8,338,10,338,12,338,6831,9,338,1,339,1,339,1,339, + 1,339,1,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339,6844,8,339, + 1,339,3,339,6847,8,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339, + 6855,8,339,1,339,1,339,1,339,1,339,1,339,5,339,6862,8,339,10,339, + 12,339,6865,9,339,1,339,1,339,1,339,3,339,6870,8,339,1,339,1,339, + 1,339,3,339,6875,8,339,1,339,1,339,1,339,1,339,1,339,1,339,3,339, + 6883,8,339,3,339,6885,8,339,1,339,1,339,1,339,3,339,6890,8,339,1, + 339,1,339,3,339,6894,8,339,1,339,1,339,1,339,3,339,6899,8,339,1, + 339,1,339,1,339,3,339,6904,8,339,1,340,1,340,1,340,1,340,3,340,6910, + 8,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340, + 1,340,1,340,1,340,1,340,5,340,6926,8,340,10,340,12,340,6929,9,340, + 1,341,1,341,1,341,1,341,1,341,1,341,3,341,6937,8,341,1,341,1,341, + 1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, + 3,341,6952,8,341,1,341,1,341,1,341,3,341,6957,8,341,1,341,3,341, + 6960,8,341,1,341,1,341,1,341,1,341,3,341,6966,8,341,1,341,1,341, + 1,341,3,341,6971,8,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, + 1,341,1,341,1,341,1,341,3,341,6984,8,341,1,341,4,341,6987,8,341, + 11,341,12,341,6988,1,341,1,341,3,341,6993,8,341,1,341,1,341,1,341, + 1,341,1,341,3,341,7000,8,341,1,341,1,341,1,341,1,341,1,341,1,341, 1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, - 1,341,1,341,1,341,1,341,1,341,3,341,7021,8,341,1,341,1,341,1,341, - 1,341,1,341,1,341,1,341,1,341,1,341,1,341,3,341,7033,8,341,1,341, - 1,341,1,341,3,341,7038,8,341,1,341,1,341,1,341,1,341,1,341,1,341, - 3,341,7046,8,341,5,341,7048,8,341,10,341,12,341,7051,9,341,1,342, - 1,342,1,342,1,342,1,342,1,342,3,342,7059,8,342,1,342,3,342,7062, - 8,342,1,342,1,342,1,342,3,342,7067,8,342,1,342,1,342,1,342,3,342, - 7072,8,342,1,342,1,342,3,342,7076,8,342,1,342,3,342,7079,8,342,1, - 343,1,343,1,343,1,343,1,343,1,343,1,343,3,343,7088,8,343,1,343,1, - 343,1,343,1,343,1,343,1,343,3,343,7096,8,343,1,343,1,343,1,343,3, - 343,7101,8,343,3,343,7103,8,343,1,343,3,343,7106,8,343,1,344,1,344, - 3,344,7110,8,344,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,3,345,7121,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 3,341,7019,8,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341,1,341, + 1,341,1,341,3,341,7031,8,341,1,341,1,341,1,341,3,341,7036,8,341, + 1,341,1,341,1,341,1,341,1,341,1,341,3,341,7044,8,341,5,341,7046, + 8,341,10,341,12,341,7049,9,341,1,342,1,342,1,342,1,342,1,342,1,342, + 3,342,7057,8,342,1,342,3,342,7060,8,342,1,342,1,342,1,342,3,342, + 7065,8,342,1,342,1,342,1,342,3,342,7070,8,342,1,342,1,342,3,342, + 7074,8,342,1,342,3,342,7077,8,342,1,343,1,343,1,343,1,343,1,343, + 1,343,1,343,3,343,7086,8,343,1,343,1,343,1,343,1,343,1,343,1,343, + 3,343,7094,8,343,1,343,1,343,1,343,3,343,7099,8,343,3,343,7101,8, + 343,1,343,3,343,7104,8,343,1,344,1,344,3,344,7108,8,344,1,345,1, + 345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7119,8,345,1, + 345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7140,8,345, + 1,345,1,345,1,345,1,345,1,345,1,345,3,345,7148,8,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7161, + 8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7171, + 8,345,1,345,1,345,1,345,1,345,3,345,7177,8,345,1,345,1,345,1,345, + 1,345,3,345,7183,8,345,1,345,3,345,7186,8,345,1,345,3,345,7189,8, + 345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,3,345,7142,8,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345, - 7150,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,1,345,3,345,7163,8,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,1,345,3,345,7173,8,345,1,345,1,345,1,345,1,345,3,345,7179, - 8,345,1,345,1,345,1,345,1,345,3,345,7185,8,345,1,345,3,345,7188, - 8,345,1,345,3,345,7191,8,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,1,345,3,345,7215,8,345,3,345,7217,8,345,1,345,1,345, 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7217,8,345,3,345, - 7219,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345, - 7240,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345, - 7250,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, - 1,345,1,345,3,345,7263,8,345,1,345,1,345,1,345,3,345,7268,8,345, - 1,345,1,345,3,345,7272,8,345,3,345,7274,8,345,1,345,1,345,1,345, - 1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7286,8,345,1,346, - 1,346,1,346,5,346,7291,8,346,10,346,12,346,7294,9,346,1,347,1,347, - 1,347,3,347,7299,8,347,1,348,1,348,1,349,1,349,3,349,7305,8,349, - 1,349,1,349,3,349,7309,8,349,1,350,1,350,1,350,1,351,1,351,1,351, - 1,351,5,351,7318,8,351,10,351,12,351,7321,9,351,1,352,1,352,1,352, - 1,352,1,353,1,353,1,353,3,353,7330,8,353,1,354,1,354,3,354,7334, - 8,354,1,354,1,354,1,354,3,354,7339,8,354,1,354,3,354,7342,8,354, - 1,354,3,354,7345,8,354,1,354,1,354,1,355,1,355,1,355,1,355,1,355, - 3,355,7354,8,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,1,355, - 1,355,3,355,7365,8,355,3,355,7367,8,355,1,356,1,356,3,356,7371,8, - 356,1,356,1,356,1,356,3,356,7376,8,356,1,357,1,357,1,357,1,357,1, - 357,1,357,1,357,3,357,7385,8,357,1,358,1,358,1,358,3,358,7390,8, - 358,1,358,1,358,1,359,1,359,1,360,1,360,3,360,7398,8,360,1,361,1, - 361,1,362,1,362,1,362,1,362,1,362,1,362,3,362,7408,8,362,1,363,1, - 363,1,363,1,363,1,363,1,363,3,363,7416,8,363,1,364,1,364,3,364,7420, - 8,364,1,364,3,364,7423,8,364,1,365,1,365,1,365,5,365,7428,8,365, - 10,365,12,365,7431,9,365,1,366,1,366,1,366,1,366,1,366,3,366,7438, - 8,366,1,367,1,367,3,367,7442,8,367,1,368,1,368,1,368,5,368,7447, - 8,368,10,368,12,368,7450,9,368,1,369,1,369,1,369,1,369,1,369,3,369, - 7457,8,369,1,370,1,370,1,370,1,370,1,370,5,370,7464,8,370,10,370, - 12,370,7467,9,370,3,370,7469,8,370,1,370,1,370,1,371,1,371,1,371, - 1,371,1,371,1,371,1,371,1,371,3,371,7481,8,371,1,372,1,372,1,373, - 1,373,1,373,1,373,1,373,3,373,7490,8,373,1,373,1,373,1,373,1,373, - 1,373,3,373,7497,8,373,1,373,1,373,1,373,1,373,1,373,1,373,1,373, - 3,373,7506,8,373,1,374,1,374,1,374,1,374,1,374,1,375,1,375,1,375, - 3,375,7516,8,375,1,375,1,375,1,375,3,375,7521,8,375,1,375,1,375, - 3,375,7525,8,375,3,375,7527,8,375,1,375,3,375,7530,8,375,1,376,4, - 376,7533,8,376,11,376,12,376,7534,1,377,5,377,7538,8,377,10,377, - 12,377,7541,9,377,1,378,1,378,1,378,5,378,7546,8,378,10,378,12,378, - 7549,9,378,1,379,1,379,1,379,1,379,1,379,3,379,7556,8,379,1,379, - 3,379,7559,8,379,1,380,1,380,1,380,5,380,7564,8,380,10,380,12,380, - 7567,9,380,1,381,1,381,1,381,5,381,7572,8,381,10,381,12,381,7575, - 9,381,1,382,1,382,1,382,5,382,7580,8,382,10,382,12,382,7583,9,382, - 1,383,1,383,1,383,5,383,7588,8,383,10,383,12,383,7591,9,383,1,384, - 1,384,1,385,1,385,1,386,1,386,1,387,1,387,1,388,1,388,1,389,1,389, - 1,390,1,390,3,390,7607,8,390,1,391,1,391,1,391,5,391,7612,8,391, - 10,391,12,391,7615,9,391,1,392,1,392,1,392,5,392,7620,8,392,10,392, - 12,392,7623,9,392,1,393,1,393,1,394,1,394,1,395,1,395,1,396,1,396, - 1,397,1,397,1,398,1,398,1,398,1,398,3,398,7639,8,398,1,399,1,399, - 1,399,1,399,3,399,7645,8,399,1,400,1,400,1,400,1,400,3,400,7651, - 8,400,1,401,1,401,1,402,1,402,1,402,1,402,3,402,7659,8,402,1,403, - 1,403,1,403,1,403,3,403,7665,8,403,1,404,1,404,1,404,3,404,7670, - 8,404,1,405,1,405,1,405,1,405,5,405,7676,8,405,10,405,12,405,7679, - 9,405,1,405,1,405,3,405,7683,8,405,1,406,3,406,7686,8,406,1,406, - 1,406,1,407,1,407,1,407,1,407,1,407,3,407,7695,8,407,1,408,1,408, - 1,408,5,408,7700,8,408,10,408,12,408,7703,9,408,1,409,1,409,1,409, - 1,409,3,409,7709,8,409,1,410,1,410,1,410,1,410,3,410,7715,8,410, - 1,411,1,411,1,411,1,411,3,411,7721,8,411,1,412,1,412,1,412,3,412, - 7726,8,412,1,413,1,413,1,413,3,413,7731,8,413,1,413,1,413,1,413, - 1,413,1,413,1,413,3,413,7739,8,413,1,414,1,414,1,415,1,415,1,415, + 1,345,1,345,1,345,1,345,1,345,1,345,3,345,7238,8,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,3,345,7248,8,345,1,345,1,345, + 1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345,3,345,7261, + 8,345,1,345,1,345,1,345,3,345,7266,8,345,1,345,1,345,3,345,7270, + 8,345,3,345,7272,8,345,1,345,1,345,1,345,1,345,1,345,1,345,1,345, + 1,345,1,345,1,345,3,345,7284,8,345,1,346,1,346,1,346,5,346,7289, + 8,346,10,346,12,346,7292,9,346,1,347,1,347,1,347,3,347,7297,8,347, + 1,348,1,348,1,349,1,349,3,349,7303,8,349,1,349,1,349,3,349,7307, + 8,349,1,350,1,350,1,350,1,351,1,351,1,351,1,351,5,351,7316,8,351, + 10,351,12,351,7319,9,351,1,352,1,352,1,352,1,352,1,353,1,353,1,353, + 3,353,7328,8,353,1,354,1,354,3,354,7332,8,354,1,354,1,354,1,354, + 3,354,7337,8,354,1,354,3,354,7340,8,354,1,354,3,354,7343,8,354,1, + 354,1,354,1,355,1,355,1,355,1,355,1,355,3,355,7352,8,355,1,355,1, + 355,1,355,1,355,1,355,1,355,1,355,1,355,1,355,3,355,7363,8,355,3, + 355,7365,8,355,1,356,1,356,3,356,7369,8,356,1,356,1,356,1,356,3, + 356,7374,8,356,1,357,1,357,1,357,1,357,1,357,1,357,1,357,3,357,7383, + 8,357,1,358,1,358,1,358,3,358,7388,8,358,1,358,1,358,1,359,1,359, + 1,360,1,360,3,360,7396,8,360,1,361,1,361,1,362,1,362,1,362,1,362, + 1,362,1,362,3,362,7406,8,362,1,363,1,363,1,363,1,363,1,363,1,363, + 3,363,7414,8,363,1,364,1,364,3,364,7418,8,364,1,364,3,364,7421,8, + 364,1,365,1,365,1,365,5,365,7426,8,365,10,365,12,365,7429,9,365, + 1,366,1,366,1,366,1,366,1,366,3,366,7436,8,366,1,367,1,367,3,367, + 7440,8,367,1,368,1,368,1,368,5,368,7445,8,368,10,368,12,368,7448, + 9,368,1,369,1,369,1,369,1,369,1,369,3,369,7455,8,369,1,370,1,370, + 1,370,1,370,1,370,5,370,7462,8,370,10,370,12,370,7465,9,370,3,370, + 7467,8,370,1,370,1,370,1,371,1,371,1,371,1,371,1,371,1,371,1,371, + 1,371,3,371,7479,8,371,1,372,1,372,1,373,1,373,1,373,1,373,1,373, + 3,373,7488,8,373,1,373,1,373,1,373,1,373,1,373,3,373,7495,8,373, + 1,373,1,373,1,373,1,373,1,373,1,373,1,373,3,373,7504,8,373,1,374, + 1,374,1,374,1,374,1,374,1,375,1,375,1,375,3,375,7514,8,375,1,375, + 1,375,1,375,3,375,7519,8,375,1,375,1,375,3,375,7523,8,375,3,375, + 7525,8,375,1,375,3,375,7528,8,375,1,376,4,376,7531,8,376,11,376, + 12,376,7532,1,377,5,377,7536,8,377,10,377,12,377,7539,9,377,1,378, + 1,378,1,378,5,378,7544,8,378,10,378,12,378,7547,9,378,1,379,1,379, + 1,379,1,379,1,379,3,379,7554,8,379,1,379,3,379,7557,8,379,1,380, + 1,380,1,380,5,380,7562,8,380,10,380,12,380,7565,9,380,1,381,1,381, + 1,381,5,381,7570,8,381,10,381,12,381,7573,9,381,1,382,1,382,1,382, + 5,382,7578,8,382,10,382,12,382,7581,9,382,1,383,1,383,1,383,5,383, + 7586,8,383,10,383,12,383,7589,9,383,1,384,1,384,1,385,1,385,1,386, + 1,386,1,387,1,387,1,388,1,388,1,389,1,389,1,390,1,390,3,390,7605, + 8,390,1,391,1,391,1,391,5,391,7610,8,391,10,391,12,391,7613,9,391, + 1,392,1,392,1,392,5,392,7618,8,392,10,392,12,392,7621,9,392,1,393, + 1,393,1,394,1,394,1,395,1,395,1,396,1,396,1,397,1,397,1,398,1,398, + 1,398,1,398,3,398,7637,8,398,1,399,1,399,1,399,1,399,3,399,7643, + 8,399,1,400,1,400,1,400,1,400,3,400,7649,8,400,1,401,1,401,1,402, + 1,402,1,402,1,402,3,402,7657,8,402,1,403,1,403,1,403,1,403,3,403, + 7663,8,403,1,404,1,404,1,404,3,404,7668,8,404,1,405,1,405,1,405, + 1,405,5,405,7674,8,405,10,405,12,405,7677,9,405,1,405,1,405,3,405, + 7681,8,405,1,406,3,406,7684,8,406,1,406,1,406,1,407,1,407,1,407, + 1,407,1,407,3,407,7693,8,407,1,408,1,408,1,408,5,408,7698,8,408, + 10,408,12,408,7701,9,408,1,409,1,409,3,409,7705,8,409,1,410,1,410, + 3,410,7709,8,410,1,411,1,411,1,411,3,411,7714,8,411,1,412,1,412, + 1,412,1,412,3,412,7720,8,412,1,413,1,413,1,413,3,413,7725,8,413, + 1,413,1,413,1,413,1,413,1,413,1,413,3,413,7733,8,413,1,414,1,414, 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, 1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415,1,415, - 1,415,1,415,1,415,1,415,3,415,7794,8,415,1,416,1,416,1,417,1,417, - 1,418,3,418,7801,8,418,1,418,1,418,1,418,1,418,4,418,7807,8,418, - 11,418,12,418,7808,3,418,7811,8,418,3,418,7813,8,418,1,418,1,418, - 5,418,7817,8,418,10,418,12,418,7820,9,418,1,418,3,418,7823,8,418, - 1,418,1,418,3,418,7827,8,418,1,419,1,419,1,419,1,419,1,420,1,420, - 1,420,1,420,1,420,3,420,7838,8,420,1,420,3,420,7841,8,420,1,420, - 1,420,3,420,7845,8,420,1,420,1,420,3,420,7849,8,420,1,420,1,420, - 3,420,7853,8,420,1,420,3,420,7856,8,420,1,420,3,420,7859,8,420,1, - 420,3,420,7862,8,420,1,420,1,420,1,420,1,420,1,420,5,420,7869,8, - 420,10,420,12,420,7872,9,420,1,420,1,420,3,420,7876,8,420,1,420, - 1,420,3,420,7880,8,420,1,420,1,420,1,421,1,421,1,421,1,422,1,422, + 1,415,1,415,1,415,1,415,1,415,1,415,1,415,3,415,7788,8,415,1,416, + 1,416,1,417,1,417,1,418,3,418,7795,8,418,1,418,1,418,1,418,1,418, + 4,418,7801,8,418,11,418,12,418,7802,3,418,7805,8,418,3,418,7807, + 8,418,1,418,1,418,5,418,7811,8,418,10,418,12,418,7814,9,418,1,418, + 3,418,7817,8,418,1,418,1,418,3,418,7821,8,418,1,419,1,419,1,419, + 1,419,1,420,1,420,1,420,1,420,1,420,3,420,7832,8,420,1,420,3,420, + 7835,8,420,1,420,1,420,3,420,7839,8,420,1,420,1,420,3,420,7843,8, + 420,1,420,1,420,3,420,7847,8,420,1,420,3,420,7850,8,420,1,420,3, + 420,7853,8,420,1,420,3,420,7856,8,420,1,420,1,420,1,420,1,420,1, + 420,5,420,7863,8,420,10,420,12,420,7866,9,420,1,420,1,420,3,420, + 7870,8,420,1,420,1,420,3,420,7874,8,420,1,420,1,420,1,421,1,421, + 1,421,1,422,1,422,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423, 1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423, - 1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423,1,423, - 1,423,1,423,3,423,7913,8,423,1,424,1,424,1,424,1,424,1,425,1,425, - 1,425,1,425,3,425,7923,8,425,1,425,1,425,3,425,7927,8,425,1,425, - 1,425,1,425,1,425,3,425,7933,8,425,1,425,1,425,1,425,3,425,7938, - 8,425,1,426,1,426,1,426,1,426,1,426,1,427,1,427,3,427,7947,8,427, - 1,427,1,427,1,427,1,427,5,427,7953,8,427,10,427,12,427,7956,9,427, - 1,427,1,427,1,428,1,428,1,428,1,428,1,429,1,429,3,429,7966,8,429, - 1,429,1,429,1,429,1,429,5,429,7972,8,429,10,429,12,429,7975,9,429, - 1,430,1,430,1,430,1,430,5,430,7981,8,430,10,430,12,430,7984,9,430, - 1,430,1,430,1,430,1,430,5,430,7990,8,430,10,430,12,430,7993,9,430, - 5,430,7995,8,430,10,430,12,430,7998,9,430,1,430,3,430,8001,8,430, - 1,430,1,430,1,430,1,430,1,431,1,431,5,431,8009,8,431,10,431,12,431, - 8012,9,431,1,432,1,432,3,432,8016,8,432,1,432,1,432,1,432,1,432, - 5,432,8022,8,432,10,432,12,432,8025,9,432,4,432,8027,8,432,11,432, - 12,432,8028,1,432,3,432,8032,8,432,1,432,1,432,1,432,1,432,1,433, - 3,433,8039,8,433,1,433,1,433,1,433,1,433,3,433,8045,8,433,1,433, - 1,433,1,434,1,434,1,434,1,434,3,434,8053,8,434,1,434,1,434,1,434, - 1,434,1,434,1,434,3,434,8061,8,434,1,434,3,434,8064,8,434,1,434, - 1,434,1,434,1,434,1,434,3,434,8071,8,434,3,434,8073,8,434,1,435, - 3,435,8076,8,435,1,435,1,435,1,435,1,435,3,435,8082,8,435,1,435, - 1,435,1,435,1,435,1,435,1,436,1,436,3,436,8091,8,436,1,436,1,436, - 3,436,8095,8,436,1,436,1,436,1,437,1,437,1,437,1,437,1,437,1,437, - 1,437,1,437,1,437,1,437,3,437,8109,8,437,1,437,3,437,8112,8,437, - 3,437,8114,8,437,1,437,1,437,1,438,1,438,3,438,8120,8,438,1,438, - 1,438,1,438,1,438,1,438,1,438,4,438,8128,8,438,11,438,12,438,8129, - 3,438,8132,8,438,3,438,8134,8,438,1,438,1,438,1,438,1,438,5,438, - 8140,8,438,10,438,12,438,8143,9,438,3,438,8145,8,438,1,438,3,438, - 8148,8,438,1,439,1,439,1,439,1,439,1,440,1,440,1,440,1,440,3,440, - 8158,8,440,1,440,1,440,1,441,1,441,5,441,8164,8,441,10,441,12,441, - 8167,9,441,1,441,1,441,1,441,3,441,8172,8,441,1,441,1,441,1,442, - 1,442,3,442,8178,8,442,1,442,1,442,1,443,1,443,1,443,3,443,8185, - 8,443,1,443,1,443,3,443,8189,8,443,1,443,1,443,3,443,8193,8,443, - 1,443,3,443,8196,8,443,1,443,3,443,8199,8,443,1,443,1,443,1,444, - 1,444,3,444,8205,8,444,1,444,1,444,1,445,1,445,1,445,3,445,8212, - 8,445,1,445,3,445,8215,8,445,1,445,1,445,1,445,1,445,1,445,1,445, - 3,445,8223,8,445,3,445,8225,8,445,1,445,1,445,1,445,1,445,1,445, - 5,445,8232,8,445,10,445,12,445,8235,9,445,1,445,1,445,3,445,8239, - 8,445,3,445,8241,8,445,1,445,1,445,1,446,1,446,1,446,3,446,8248, - 8,446,1,446,1,446,1,447,1,447,3,447,8254,8,447,1,447,3,447,8257, - 8,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448,1,448,1,448,1,448, - 3,448,8269,8,448,1,448,1,448,1,448,1,448,1,448,3,448,8276,8,448, - 3,448,8278,8,448,1,449,1,449,3,449,8282,8,449,1,449,1,449,1,449, - 1,450,3,450,8288,8,450,1,450,1,450,1,450,3,450,8293,8,450,1,450, - 1,450,3,450,8297,8,450,1,450,3,450,8300,8,450,1,450,3,450,8303,8, - 450,1,450,1,450,1,450,1,450,1,450,4,450,8310,8,450,11,450,12,450, - 8311,1,451,3,451,8315,8,451,1,451,1,451,3,451,8319,8,451,1,451,1, - 451,3,451,8323,8,451,3,451,8325,8,451,1,451,3,451,8328,8,451,1,451, - 3,451,8331,8,451,1,452,1,452,1,452,1,452,3,452,8337,8,452,1,452, - 1,452,1,452,1,452,1,452,3,452,8344,8,452,1,452,1,452,1,452,1,452, - 1,452,3,452,8351,8,452,1,452,1,452,1,452,1,452,3,452,8357,8,452, - 3,452,8359,8,452,1,453,1,453,3,453,8363,8,453,1,453,1,453,1,453, - 3,453,8368,8,453,1,453,1,453,1,454,1,454,1,454,1,454,1,454,1,454, - 1,454,1,454,1,454,1,454,1,454,1,454,5,454,8384,8,454,10,454,12,454, - 8387,9,454,1,454,1,454,4,454,8391,8,454,11,454,12,454,8392,1,455, - 1,455,1,455,1,455,1,455,5,455,8400,8,455,10,455,12,455,8403,9,455, - 1,455,1,455,1,455,1,455,3,455,8409,8,455,1,456,1,456,3,456,8413, - 8,456,1,457,1,457,1,457,1,457,1,458,1,458,1,458,1,459,1,459,1,459, - 3,459,8425,8,459,1,459,3,459,8428,8,459,1,459,1,459,1,460,1,460, - 1,460,1,460,1,460,1,460,1,460,1,460,1,460,3,460,8441,8,460,1,460, - 3,460,8444,8,460,1,461,1,461,3,461,8448,8,461,1,462,1,462,1,462, - 1,462,1,462,5,462,8455,8,462,10,462,12,462,8458,9,462,1,462,1,462, - 5,462,8462,8,462,10,462,12,462,8465,9,462,4,462,8467,8,462,11,462, - 12,462,8468,1,463,1,463,1,463,3,463,8474,8,463,1,464,1,464,3,464, - 8478,8,464,1,465,1,465,1,466,3,466,8483,8,466,1,466,3,466,8486,8, - 466,1,466,3,466,8489,8,466,1,466,3,466,8492,8,466,1,466,3,466,8495, - 8,466,1,466,1,466,3,466,8499,8,466,1,466,3,466,8502,8,466,1,466, - 0,3,676,680,682,467,0,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,156,158,160,162,164,166,168,170,172,174,176,178, - 180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210, - 212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242, - 244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274, - 276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306, - 308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338, - 340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370, - 372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402, - 404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434, - 436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466, - 468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498, - 500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530, - 532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562, - 564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594, - 596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626, - 628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658, - 660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690, - 692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722, - 724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754, - 756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786, - 788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818, - 820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850, - 852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882, - 884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914, - 916,918,920,922,924,926,928,930,932,0,119,2,0,195,195,364,364,2, + 1,423,1,423,1,423,1,423,1,423,3,423,7907,8,423,1,424,1,424,1,424, + 1,424,1,425,1,425,1,425,1,425,3,425,7917,8,425,1,425,1,425,3,425, + 7921,8,425,1,425,1,425,1,425,1,425,3,425,7927,8,425,1,425,1,425, + 1,425,3,425,7932,8,425,1,426,1,426,1,426,1,426,1,426,1,427,1,427, + 3,427,7941,8,427,1,427,1,427,1,427,1,427,5,427,7947,8,427,10,427, + 12,427,7950,9,427,1,427,1,427,1,428,1,428,1,428,1,428,1,429,1,429, + 3,429,7960,8,429,1,429,1,429,1,429,1,429,5,429,7966,8,429,10,429, + 12,429,7969,9,429,1,430,1,430,1,430,1,430,5,430,7975,8,430,10,430, + 12,430,7978,9,430,1,430,1,430,1,430,1,430,5,430,7984,8,430,10,430, + 12,430,7987,9,430,5,430,7989,8,430,10,430,12,430,7992,9,430,1,430, + 3,430,7995,8,430,1,430,1,430,1,430,1,430,1,431,1,431,5,431,8003, + 8,431,10,431,12,431,8006,9,431,1,432,1,432,3,432,8010,8,432,1,432, + 1,432,1,432,1,432,5,432,8016,8,432,10,432,12,432,8019,9,432,4,432, + 8021,8,432,11,432,12,432,8022,1,432,3,432,8026,8,432,1,432,1,432, + 1,432,1,432,1,433,3,433,8033,8,433,1,433,1,433,1,433,1,433,3,433, + 8039,8,433,1,433,1,433,1,434,1,434,1,434,1,434,3,434,8047,8,434, + 1,434,1,434,1,434,1,434,1,434,1,434,3,434,8055,8,434,1,434,3,434, + 8058,8,434,1,434,1,434,1,434,1,434,1,434,3,434,8065,8,434,3,434, + 8067,8,434,1,435,3,435,8070,8,435,1,435,1,435,1,435,1,435,3,435, + 8076,8,435,1,435,1,435,1,435,1,435,1,435,1,436,1,436,3,436,8085, + 8,436,1,436,1,436,3,436,8089,8,436,1,436,1,436,1,437,1,437,1,437, + 1,437,1,437,1,437,1,437,1,437,1,437,1,437,3,437,8103,8,437,1,437, + 3,437,8106,8,437,3,437,8108,8,437,1,437,1,437,1,438,1,438,3,438, + 8114,8,438,1,438,1,438,1,438,1,438,1,438,1,438,4,438,8122,8,438, + 11,438,12,438,8123,3,438,8126,8,438,3,438,8128,8,438,1,438,1,438, + 1,438,1,438,5,438,8134,8,438,10,438,12,438,8137,9,438,3,438,8139, + 8,438,1,438,3,438,8142,8,438,1,439,1,439,1,439,1,439,1,440,1,440, + 1,440,1,440,3,440,8152,8,440,1,440,1,440,1,441,1,441,5,441,8158, + 8,441,10,441,12,441,8161,9,441,1,441,1,441,1,441,3,441,8166,8,441, + 1,441,1,441,1,442,1,442,3,442,8172,8,442,1,442,1,442,1,443,1,443, + 1,443,3,443,8179,8,443,1,443,1,443,3,443,8183,8,443,1,443,1,443, + 3,443,8187,8,443,1,443,3,443,8190,8,443,1,443,3,443,8193,8,443,1, + 443,1,443,1,444,1,444,3,444,8199,8,444,1,444,1,444,1,445,1,445,1, + 445,3,445,8206,8,445,1,445,3,445,8209,8,445,1,445,1,445,1,445,1, + 445,1,445,1,445,3,445,8217,8,445,3,445,8219,8,445,1,445,1,445,1, + 445,1,445,1,445,5,445,8226,8,445,10,445,12,445,8229,9,445,1,445, + 1,445,3,445,8233,8,445,3,445,8235,8,445,1,445,1,445,1,446,1,446, + 1,446,3,446,8242,8,446,1,446,1,446,1,447,1,447,3,447,8248,8,447, + 1,447,3,447,8251,8,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448, + 1,448,1,448,1,448,3,448,8263,8,448,1,448,1,448,1,448,1,448,1,448, + 3,448,8270,8,448,3,448,8272,8,448,1,449,1,449,3,449,8276,8,449,1, + 449,1,449,1,449,1,450,3,450,8282,8,450,1,450,1,450,1,450,3,450,8287, + 8,450,1,450,1,450,3,450,8291,8,450,1,450,3,450,8294,8,450,1,450, + 3,450,8297,8,450,1,450,1,450,1,450,1,450,1,450,4,450,8304,8,450, + 11,450,12,450,8305,1,451,3,451,8309,8,451,1,451,1,451,3,451,8313, + 8,451,1,451,1,451,3,451,8317,8,451,3,451,8319,8,451,1,451,3,451, + 8322,8,451,1,451,3,451,8325,8,451,1,452,1,452,1,452,1,452,3,452, + 8331,8,452,1,452,1,452,1,452,1,452,1,452,3,452,8338,8,452,1,452, + 1,452,1,452,1,452,1,452,3,452,8345,8,452,1,452,1,452,1,452,1,452, + 3,452,8351,8,452,3,452,8353,8,452,1,453,1,453,3,453,8357,8,453,1, + 453,1,453,1,453,3,453,8362,8,453,1,453,1,453,1,454,1,454,1,454,1, + 454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,1,454,5,454,8378,8, + 454,10,454,12,454,8381,9,454,1,454,1,454,4,454,8385,8,454,11,454, + 12,454,8386,1,455,1,455,1,455,1,455,1,455,5,455,8394,8,455,10,455, + 12,455,8397,9,455,1,455,1,455,1,455,1,455,3,455,8403,8,455,1,456, + 1,456,3,456,8407,8,456,1,457,1,457,1,457,1,457,1,458,1,458,1,458, + 1,459,1,459,1,459,3,459,8419,8,459,1,459,3,459,8422,8,459,1,459, + 1,459,1,460,1,460,1,460,1,460,1,460,1,460,1,460,1,460,1,460,3,460, + 8435,8,460,1,460,3,460,8438,8,460,1,461,1,461,3,461,8442,8,461,1, + 462,1,462,1,462,1,462,1,462,5,462,8449,8,462,10,462,12,462,8452, + 9,462,1,462,1,462,5,462,8456,8,462,10,462,12,462,8459,9,462,4,462, + 8461,8,462,11,462,12,462,8462,1,463,1,463,1,463,3,463,8468,8,463, + 1,464,1,464,3,464,8472,8,464,1,465,3,465,8475,8,465,1,465,3,465, + 8478,8,465,1,465,3,465,8481,8,465,1,465,3,465,8484,8,465,1,465,3, + 465,8487,8,465,1,465,1,465,3,465,8491,8,465,1,465,3,465,8494,8,465, + 1,465,0,3,676,680,682,466,0,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,156,158,160,162,164,166,168,170,172,174,176, + 178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208, + 210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240, + 242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272, + 274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304, + 306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336, + 338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368, + 370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400, + 402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432, + 434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464, + 466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496, + 498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528, + 530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560, + 562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592, + 594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624, + 626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656, + 658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688, + 690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720, + 722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752, + 754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784, + 786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816, + 818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848, + 850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880, + 882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912, + 914,916,918,920,922,924,926,928,930,0,118,2,0,195,195,364,364,2, 0,66,66,318,318,2,0,99,99,318,318,2,0,134,134,318,318,1,0,529,531, 2,0,10,10,94,94,2,0,133,133,191,191,2,0,254,254,332,332,2,0,162, 162,363,363,2,0,180,180,221,221,5,0,30,30,288,288,329,329,352,352, @@ -55655,2985 +55654,2979 @@ export class PostgreSqlParser extends SQLParserBase { 95,4,0,393,393,399,399,404,404,425,425,2,0,292,292,347,347,2,0,166, 166,188,188,2,0,304,304,450,450,3,0,299,299,320,320,481,481,2,0, 208,208,289,289,3,0,30,30,34,34,90,90,6,0,9,10,12,17,21,21,23,23, - 25,25,27,27,2,0,114,114,120,120,2,0,20,20,22,22,1,0,483,486,10,0, - 124,124,129,228,238,386,433,452,455,469,471,471,473,473,475,475, - 478,488,547,548,3,0,106,123,125,128,472,472,4,0,30,52,54,70,72,105, - 454,454,2,0,62,62,116,116,2,0,10,10,20,20,2,0,434,434,501,501,2, - 0,167,167,507,507,1,0,512,517,2,0,144,144,210,210,36,0,33,33,35, - 35,43,43,45,45,53,53,57,57,61,61,116,116,123,123,130,130,144,144, - 153,153,157,157,161,161,167,167,172,172,207,207,210,210,241,241, - 249,249,265,265,268,269,279,279,293,293,307,307,313,313,319,319, - 323,324,333,333,360,360,433,434,477,477,490,502,504,504,506,518, - 520,520,9941,0,937,1,0,0,0,2,942,1,0,0,0,4,1066,1,0,0,0,6,1068,1, - 0,0,0,8,1071,1,0,0,0,10,1121,1,0,0,0,12,1131,1,0,0,0,14,1133,1,0, - 0,0,16,1145,1,0,0,0,18,1157,1,0,0,0,20,1168,1,0,0,0,22,1202,1,0, - 0,0,24,1246,1,0,0,0,26,1248,1,0,0,0,28,1260,1,0,0,0,30,1267,1,0, - 0,0,32,1286,1,0,0,0,34,1294,1,0,0,0,36,1296,1,0,0,0,38,1310,1,0, - 0,0,40,1314,1,0,0,0,42,1351,1,0,0,0,44,1353,1,0,0,0,46,1361,1,0, - 0,0,48,1371,1,0,0,0,50,1378,1,0,0,0,52,1386,1,0,0,0,54,1392,1,0, - 0,0,56,1408,1,0,0,0,58,1412,1,0,0,0,60,1414,1,0,0,0,62,1426,1,0, - 0,0,64,1431,1,0,0,0,66,1436,1,0,0,0,68,1438,1,0,0,0,70,1450,1,0, - 0,0,72,1458,1,0,0,0,74,1460,1,0,0,0,76,1584,1,0,0,0,78,1586,1,0, - 0,0,80,1603,1,0,0,0,82,1605,1,0,0,0,84,1619,1,0,0,0,86,1621,1,0, - 0,0,88,1635,1,0,0,0,90,1637,1,0,0,0,92,1874,1,0,0,0,94,1881,1,0, - 0,0,96,1883,1,0,0,0,98,1885,1,0,0,0,100,1888,1,0,0,0,102,1899,1, - 0,0,0,104,1902,1,0,0,0,106,1938,1,0,0,0,108,1940,1,0,0,0,110,1981, - 1,0,0,0,112,1983,1,0,0,0,114,2037,1,0,0,0,116,2078,1,0,0,0,118,2080, - 1,0,0,0,120,2097,1,0,0,0,122,2178,1,0,0,0,124,2180,1,0,0,0,126,2191, - 1,0,0,0,128,2214,1,0,0,0,130,2232,1,0,0,0,132,2234,1,0,0,0,134,2269, - 1,0,0,0,136,2362,1,0,0,0,138,2367,1,0,0,0,140,2369,1,0,0,0,142,2467, - 1,0,0,0,144,2469,1,0,0,0,146,2473,1,0,0,0,148,2484,1,0,0,0,150,2492, - 1,0,0,0,152,2495,1,0,0,0,154,2498,1,0,0,0,156,2516,1,0,0,0,158,2518, - 1,0,0,0,160,2522,1,0,0,0,162,2535,1,0,0,0,164,2537,1,0,0,0,166,2542, - 1,0,0,0,168,2562,1,0,0,0,170,2570,1,0,0,0,172,2577,1,0,0,0,174,2579, - 1,0,0,0,176,2588,1,0,0,0,178,2591,1,0,0,0,180,2595,1,0,0,0,182,2599, - 1,0,0,0,184,2624,1,0,0,0,186,2634,1,0,0,0,188,2648,1,0,0,0,190,2664, - 1,0,0,0,192,2670,1,0,0,0,194,2697,1,0,0,0,196,2707,1,0,0,0,198,2723, - 1,0,0,0,200,2767,1,0,0,0,202,2774,1,0,0,0,204,2776,1,0,0,0,206,2802, - 1,0,0,0,208,2813,1,0,0,0,210,2832,1,0,0,0,212,2843,1,0,0,0,214,2881, - 1,0,0,0,216,2902,1,0,0,0,218,2904,1,0,0,0,220,2924,1,0,0,0,222,2936, - 1,0,0,0,224,2948,1,0,0,0,226,2951,1,0,0,0,228,2954,1,0,0,0,230,2974, - 1,0,0,0,232,2979,1,0,0,0,234,3028,1,0,0,0,236,3030,1,0,0,0,238,3053, - 1,0,0,0,240,3069,1,0,0,0,242,3081,1,0,0,0,244,3108,1,0,0,0,246,3123, - 1,0,0,0,248,3186,1,0,0,0,250,3188,1,0,0,0,252,3193,1,0,0,0,254,3199, - 1,0,0,0,256,3286,1,0,0,0,258,3292,1,0,0,0,260,3294,1,0,0,0,262,3310, - 1,0,0,0,264,3312,1,0,0,0,266,3321,1,0,0,0,268,3325,1,0,0,0,270,3338, - 1,0,0,0,272,3350,1,0,0,0,274,3352,1,0,0,0,276,3374,1,0,0,0,278,3386, - 1,0,0,0,280,3397,1,0,0,0,282,3488,1,0,0,0,284,3490,1,0,0,0,286,3501, - 1,0,0,0,288,3512,1,0,0,0,290,3514,1,0,0,0,292,3540,1,0,0,0,294,3542, - 1,0,0,0,296,3546,1,0,0,0,298,3596,1,0,0,0,300,3598,1,0,0,0,302,3604, - 1,0,0,0,304,3629,1,0,0,0,306,3633,1,0,0,0,308,3847,1,0,0,0,310,3865, - 1,0,0,0,312,3891,1,0,0,0,314,3893,1,0,0,0,316,3901,1,0,0,0,318,3907, - 1,0,0,0,320,3911,1,0,0,0,322,3931,1,0,0,0,324,3937,1,0,0,0,326,4004, - 1,0,0,0,328,4035,1,0,0,0,330,4081,1,0,0,0,332,4083,1,0,0,0,334,4085, - 1,0,0,0,336,4096,1,0,0,0,338,4133,1,0,0,0,340,4135,1,0,0,0,342,4141, - 1,0,0,0,344,4191,1,0,0,0,346,4194,1,0,0,0,348,4208,1,0,0,0,350,4229, - 1,0,0,0,352,4253,1,0,0,0,354,4294,1,0,0,0,356,4296,1,0,0,0,358,4298, - 1,0,0,0,360,4338,1,0,0,0,362,4355,1,0,0,0,364,4375,1,0,0,0,366,4428, - 1,0,0,0,368,4431,1,0,0,0,370,4437,1,0,0,0,372,4445,1,0,0,0,374,4458, - 1,0,0,0,376,4460,1,0,0,0,378,4473,1,0,0,0,380,4475,1,0,0,0,382,4488, - 1,0,0,0,384,4498,1,0,0,0,386,4509,1,0,0,0,388,4520,1,0,0,0,390,4522, - 1,0,0,0,392,4527,1,0,0,0,394,4541,1,0,0,0,396,4573,1,0,0,0,398,4610, - 1,0,0,0,400,4612,1,0,0,0,402,4615,1,0,0,0,404,4618,1,0,0,0,406,4635, - 1,0,0,0,408,4656,1,0,0,0,410,4672,1,0,0,0,412,4688,1,0,0,0,414,4710, - 1,0,0,0,416,4715,1,0,0,0,418,4718,1,0,0,0,420,4726,1,0,0,0,422,4751, - 1,0,0,0,424,4754,1,0,0,0,426,4782,1,0,0,0,428,4787,1,0,0,0,430,4827, - 1,0,0,0,432,5039,1,0,0,0,434,5041,1,0,0,0,436,5129,1,0,0,0,438,5131, - 1,0,0,0,440,5137,1,0,0,0,442,5148,1,0,0,0,444,5158,1,0,0,0,446,5238, - 1,0,0,0,448,5240,1,0,0,0,450,5254,1,0,0,0,452,5276,1,0,0,0,454,5349, - 1,0,0,0,456,5351,1,0,0,0,458,5392,1,0,0,0,460,5394,1,0,0,0,462,5399, - 1,0,0,0,464,5402,1,0,0,0,466,5405,1,0,0,0,468,5455,1,0,0,0,470,5457, - 1,0,0,0,472,5468,1,0,0,0,474,5470,1,0,0,0,476,5480,1,0,0,0,478,5515, - 1,0,0,0,480,5518,1,0,0,0,482,5539,1,0,0,0,484,5549,1,0,0,0,486,5569, - 1,0,0,0,488,5575,1,0,0,0,490,5581,1,0,0,0,492,5586,1,0,0,0,494,5599, - 1,0,0,0,496,5626,1,0,0,0,498,5674,1,0,0,0,500,5676,1,0,0,0,502,5714, - 1,0,0,0,504,5716,1,0,0,0,506,5737,1,0,0,0,508,5757,1,0,0,0,510,5761, - 1,0,0,0,512,5776,1,0,0,0,514,5778,1,0,0,0,516,5782,1,0,0,0,518,5786, - 1,0,0,0,520,5794,1,0,0,0,522,5818,1,0,0,0,524,5820,1,0,0,0,526,5831, - 1,0,0,0,528,5839,1,0,0,0,530,5854,1,0,0,0,532,5879,1,0,0,0,534,5881, - 1,0,0,0,536,5885,1,0,0,0,538,5894,1,0,0,0,540,5934,1,0,0,0,542,5945, - 1,0,0,0,544,5953,1,0,0,0,546,5956,1,0,0,0,548,5960,1,0,0,0,550,5975, - 1,0,0,0,552,6000,1,0,0,0,554,6015,1,0,0,0,556,6041,1,0,0,0,558,6043, - 1,0,0,0,560,6066,1,0,0,0,562,6068,1,0,0,0,564,6076,1,0,0,0,566,6094, - 1,0,0,0,568,6118,1,0,0,0,570,6130,1,0,0,0,572,6134,1,0,0,0,574,6146, - 1,0,0,0,576,6166,1,0,0,0,578,6174,1,0,0,0,580,6188,1,0,0,0,582,6211, - 1,0,0,0,584,6213,1,0,0,0,586,6218,1,0,0,0,588,6228,1,0,0,0,590,6249, - 1,0,0,0,592,6251,1,0,0,0,594,6260,1,0,0,0,596,6271,1,0,0,0,598,6281, - 1,0,0,0,600,6283,1,0,0,0,602,6290,1,0,0,0,604,6321,1,0,0,0,606,6351, - 1,0,0,0,608,6353,1,0,0,0,610,6362,1,0,0,0,612,6365,1,0,0,0,614,6436, - 1,0,0,0,616,6460,1,0,0,0,618,6481,1,0,0,0,620,6483,1,0,0,0,622,6491, - 1,0,0,0,624,6508,1,0,0,0,626,6534,1,0,0,0,628,6536,1,0,0,0,630,6544, - 1,0,0,0,632,6551,1,0,0,0,634,6575,1,0,0,0,636,6581,1,0,0,0,638,6589, - 1,0,0,0,640,6592,1,0,0,0,642,6599,1,0,0,0,644,6607,1,0,0,0,646,6612, - 1,0,0,0,648,6642,1,0,0,0,650,6669,1,0,0,0,652,6697,1,0,0,0,654,6714, - 1,0,0,0,656,6720,1,0,0,0,658,6738,1,0,0,0,660,6740,1,0,0,0,662,6744, - 1,0,0,0,664,6761,1,0,0,0,666,6766,1,0,0,0,668,6804,1,0,0,0,670,6806, - 1,0,0,0,672,6810,1,0,0,0,674,6812,1,0,0,0,676,6821,1,0,0,0,678,6905, - 1,0,0,0,680,6911,1,0,0,0,682,7020,1,0,0,0,684,7052,1,0,0,0,686,7105, - 1,0,0,0,688,7109,1,0,0,0,690,7285,1,0,0,0,692,7287,1,0,0,0,694,7295, - 1,0,0,0,696,7300,1,0,0,0,698,7302,1,0,0,0,700,7310,1,0,0,0,702,7313, - 1,0,0,0,704,7322,1,0,0,0,706,7326,1,0,0,0,708,7331,1,0,0,0,710,7348, - 1,0,0,0,712,7375,1,0,0,0,714,7384,1,0,0,0,716,7386,1,0,0,0,718,7393, - 1,0,0,0,720,7397,1,0,0,0,722,7399,1,0,0,0,724,7407,1,0,0,0,726,7415, - 1,0,0,0,728,7422,1,0,0,0,730,7424,1,0,0,0,732,7437,1,0,0,0,734,7441, - 1,0,0,0,736,7443,1,0,0,0,738,7456,1,0,0,0,740,7458,1,0,0,0,742,7480, - 1,0,0,0,744,7482,1,0,0,0,746,7505,1,0,0,0,748,7507,1,0,0,0,750,7529, - 1,0,0,0,752,7532,1,0,0,0,754,7539,1,0,0,0,756,7542,1,0,0,0,758,7558, - 1,0,0,0,760,7560,1,0,0,0,762,7568,1,0,0,0,764,7576,1,0,0,0,766,7584, - 1,0,0,0,768,7592,1,0,0,0,770,7594,1,0,0,0,772,7596,1,0,0,0,774,7598, - 1,0,0,0,776,7600,1,0,0,0,778,7602,1,0,0,0,780,7604,1,0,0,0,782,7608, - 1,0,0,0,784,7616,1,0,0,0,786,7624,1,0,0,0,788,7626,1,0,0,0,790,7628, - 1,0,0,0,792,7630,1,0,0,0,794,7632,1,0,0,0,796,7638,1,0,0,0,798,7644, - 1,0,0,0,800,7650,1,0,0,0,802,7652,1,0,0,0,804,7658,1,0,0,0,806,7664, - 1,0,0,0,808,7666,1,0,0,0,810,7682,1,0,0,0,812,7685,1,0,0,0,814,7694, - 1,0,0,0,816,7696,1,0,0,0,818,7708,1,0,0,0,820,7714,1,0,0,0,822,7720, - 1,0,0,0,824,7725,1,0,0,0,826,7738,1,0,0,0,828,7740,1,0,0,0,830,7793, - 1,0,0,0,832,7795,1,0,0,0,834,7797,1,0,0,0,836,7800,1,0,0,0,838,7828, - 1,0,0,0,840,7832,1,0,0,0,842,7883,1,0,0,0,844,7886,1,0,0,0,846,7912, - 1,0,0,0,848,7914,1,0,0,0,850,7937,1,0,0,0,852,7939,1,0,0,0,854,7944, - 1,0,0,0,856,7959,1,0,0,0,858,7965,1,0,0,0,860,7976,1,0,0,0,862,8006, - 1,0,0,0,864,8013,1,0,0,0,866,8038,1,0,0,0,868,8048,1,0,0,0,870,8075, - 1,0,0,0,872,8088,1,0,0,0,874,8098,1,0,0,0,876,8117,1,0,0,0,878,8149, - 1,0,0,0,880,8153,1,0,0,0,882,8161,1,0,0,0,884,8175,1,0,0,0,886,8181, - 1,0,0,0,888,8202,1,0,0,0,890,8208,1,0,0,0,892,8247,1,0,0,0,894,8251, - 1,0,0,0,896,8277,1,0,0,0,898,8279,1,0,0,0,900,8287,1,0,0,0,902,8324, - 1,0,0,0,904,8358,1,0,0,0,906,8360,1,0,0,0,908,8371,1,0,0,0,910,8408, - 1,0,0,0,912,8412,1,0,0,0,914,8414,1,0,0,0,916,8418,1,0,0,0,918,8421, - 1,0,0,0,920,8443,1,0,0,0,922,8447,1,0,0,0,924,8449,1,0,0,0,926,8473, - 1,0,0,0,928,8477,1,0,0,0,930,8479,1,0,0,0,932,8482,1,0,0,0,934,936, - 3,2,1,0,935,934,1,0,0,0,936,939,1,0,0,0,937,935,1,0,0,0,937,938, - 1,0,0,0,938,940,1,0,0,0,939,937,1,0,0,0,940,941,5,0,0,1,941,1,1, - 0,0,0,942,944,3,4,2,0,943,945,5,7,0,0,944,943,1,0,0,0,944,945,1, - 0,0,0,945,3,1,0,0,0,946,1067,3,278,139,0,947,1067,3,488,244,0,948, - 1067,3,484,242,0,949,1067,3,486,243,0,950,1067,3,352,176,0,951,1067, - 3,494,247,0,952,1067,3,292,146,0,953,1067,3,210,105,0,954,1067,3, - 212,106,0,955,1067,3,218,109,0,956,1067,3,232,116,0,957,1067,3,404, - 202,0,958,1067,3,28,14,0,959,1067,3,434,217,0,960,1067,3,436,218, - 0,961,1067,3,446,223,0,962,1067,3,438,219,0,963,1067,3,444,222,0, - 964,1067,3,244,122,0,965,1067,3,246,123,0,966,1067,3,198,99,0,967, - 1067,3,490,245,0,968,1067,3,76,38,0,969,1067,3,430,215,0,970,1067, - 3,108,54,0,971,1067,3,450,225,0,972,1067,3,18,9,0,973,1067,3,20, - 10,0,974,1067,3,16,8,0,975,1067,3,454,227,0,976,1067,3,184,92,0, - 977,1067,3,498,249,0,978,1067,3,496,248,0,979,1067,3,240,120,0,980, - 1067,3,506,253,0,981,1067,3,6,3,0,982,1067,3,72,36,0,983,1067,3, - 112,56,0,984,1067,3,502,251,0,985,1067,3,324,162,0,986,1067,3,70, - 35,0,987,1067,3,114,57,0,988,1067,3,254,127,0,989,1067,3,186,93, - 0,990,1067,3,280,140,0,991,1067,3,420,210,0,992,1067,3,500,250,0, - 993,1067,3,492,246,0,994,1067,3,208,104,0,995,1067,3,214,107,0,996, - 1067,3,228,114,0,997,1067,3,234,117,0,998,1067,3,364,182,0,999,1067, - 3,26,13,0,1000,1067,3,192,96,0,1001,1067,3,296,148,0,1002,1067,3, - 300,150,0,1003,1067,3,448,224,0,1004,1067,3,302,151,0,1005,1067, - 3,242,121,0,1006,1067,3,204,102,0,1007,1067,3,30,15,0,1008,1067, - 3,196,98,0,1009,1067,3,120,60,0,1010,1067,3,452,226,0,1011,1067, - 3,182,91,0,1012,1067,3,206,103,0,1013,1067,3,424,212,0,1014,1067, - 3,256,128,0,1015,1067,3,274,137,0,1016,1067,3,8,4,0,1017,1067,3, - 14,7,0,1018,1067,3,238,119,0,1019,1067,3,480,240,0,1020,1067,3,536, - 268,0,1021,1067,3,558,279,0,1022,1067,3,282,141,0,1023,1067,3,548, - 274,0,1024,1067,3,74,37,0,1025,1067,3,418,209,0,1026,1067,3,308, - 154,0,1027,1067,3,532,266,0,1028,1067,3,520,260,0,1029,1067,3,328, - 164,0,1030,1067,3,334,167,0,1031,1067,3,348,174,0,1032,1067,3,900, - 450,0,1033,1067,3,236,118,0,1034,1067,3,358,179,0,1035,1067,3,538, - 269,0,1036,1067,3,464,232,0,1037,1067,3,194,97,0,1038,1067,3,478, - 239,0,1039,1067,3,550,275,0,1040,1067,3,460,230,0,1041,1067,3,526, - 263,0,1042,1067,3,306,153,0,1043,1067,3,428,214,0,1044,1067,3,408, - 204,0,1045,1067,3,406,203,0,1046,1067,3,410,205,0,1047,1067,3,432, - 216,0,1048,1067,3,336,168,0,1049,1067,3,350,175,0,1050,1067,3,456, - 228,0,1051,1067,3,326,163,0,1052,1067,3,560,280,0,1053,1067,3,468, - 234,0,1054,1067,3,320,160,0,1055,1067,3,466,233,0,1056,1067,3,552, - 276,0,1057,1067,3,504,252,0,1058,1067,3,60,30,0,1059,1067,3,36,18, - 0,1060,1067,3,68,34,0,1061,1067,3,476,238,0,1062,1064,5,581,0,0, - 1063,1065,5,582,0,0,1064,1063,1,0,0,0,1064,1065,1,0,0,0,1065,1067, - 1,0,0,0,1066,946,1,0,0,0,1066,947,1,0,0,0,1066,948,1,0,0,0,1066, - 949,1,0,0,0,1066,950,1,0,0,0,1066,951,1,0,0,0,1066,952,1,0,0,0,1066, - 953,1,0,0,0,1066,954,1,0,0,0,1066,955,1,0,0,0,1066,956,1,0,0,0,1066, - 957,1,0,0,0,1066,958,1,0,0,0,1066,959,1,0,0,0,1066,960,1,0,0,0,1066, - 961,1,0,0,0,1066,962,1,0,0,0,1066,963,1,0,0,0,1066,964,1,0,0,0,1066, - 965,1,0,0,0,1066,966,1,0,0,0,1066,967,1,0,0,0,1066,968,1,0,0,0,1066, - 969,1,0,0,0,1066,970,1,0,0,0,1066,971,1,0,0,0,1066,972,1,0,0,0,1066, - 973,1,0,0,0,1066,974,1,0,0,0,1066,975,1,0,0,0,1066,976,1,0,0,0,1066, - 977,1,0,0,0,1066,978,1,0,0,0,1066,979,1,0,0,0,1066,980,1,0,0,0,1066, - 981,1,0,0,0,1066,982,1,0,0,0,1066,983,1,0,0,0,1066,984,1,0,0,0,1066, - 985,1,0,0,0,1066,986,1,0,0,0,1066,987,1,0,0,0,1066,988,1,0,0,0,1066, - 989,1,0,0,0,1066,990,1,0,0,0,1066,991,1,0,0,0,1066,992,1,0,0,0,1066, - 993,1,0,0,0,1066,994,1,0,0,0,1066,995,1,0,0,0,1066,996,1,0,0,0,1066, - 997,1,0,0,0,1066,998,1,0,0,0,1066,999,1,0,0,0,1066,1000,1,0,0,0, - 1066,1001,1,0,0,0,1066,1002,1,0,0,0,1066,1003,1,0,0,0,1066,1004, - 1,0,0,0,1066,1005,1,0,0,0,1066,1006,1,0,0,0,1066,1007,1,0,0,0,1066, - 1008,1,0,0,0,1066,1009,1,0,0,0,1066,1010,1,0,0,0,1066,1011,1,0,0, - 0,1066,1012,1,0,0,0,1066,1013,1,0,0,0,1066,1014,1,0,0,0,1066,1015, - 1,0,0,0,1066,1016,1,0,0,0,1066,1017,1,0,0,0,1066,1018,1,0,0,0,1066, - 1019,1,0,0,0,1066,1020,1,0,0,0,1066,1021,1,0,0,0,1066,1022,1,0,0, - 0,1066,1023,1,0,0,0,1066,1024,1,0,0,0,1066,1025,1,0,0,0,1066,1026, - 1,0,0,0,1066,1027,1,0,0,0,1066,1028,1,0,0,0,1066,1029,1,0,0,0,1066, - 1030,1,0,0,0,1066,1031,1,0,0,0,1066,1032,1,0,0,0,1066,1033,1,0,0, - 0,1066,1034,1,0,0,0,1066,1035,1,0,0,0,1066,1036,1,0,0,0,1066,1037, - 1,0,0,0,1066,1038,1,0,0,0,1066,1039,1,0,0,0,1066,1040,1,0,0,0,1066, - 1041,1,0,0,0,1066,1042,1,0,0,0,1066,1043,1,0,0,0,1066,1044,1,0,0, - 0,1066,1045,1,0,0,0,1066,1046,1,0,0,0,1066,1047,1,0,0,0,1066,1048, - 1,0,0,0,1066,1049,1,0,0,0,1066,1050,1,0,0,0,1066,1051,1,0,0,0,1066, - 1052,1,0,0,0,1066,1053,1,0,0,0,1066,1054,1,0,0,0,1066,1055,1,0,0, - 0,1066,1056,1,0,0,0,1066,1057,1,0,0,0,1066,1058,1,0,0,0,1066,1059, - 1,0,0,0,1066,1060,1,0,0,0,1066,1061,1,0,0,0,1066,1062,1,0,0,0,1067, - 5,1,0,0,0,1068,1069,5,433,0,0,1069,1070,3,684,342,0,1070,7,1,0,0, - 0,1071,1072,5,46,0,0,1072,1073,5,318,0,0,1073,1075,3,814,407,0,1074, - 1076,5,105,0,0,1075,1074,1,0,0,0,1075,1076,1,0,0,0,1076,1080,1,0, - 0,0,1077,1079,3,12,6,0,1078,1077,1,0,0,0,1079,1082,1,0,0,0,1080, - 1078,1,0,0,0,1080,1081,1,0,0,0,1081,9,1,0,0,0,1082,1080,1,0,0,0, - 1083,1086,5,287,0,0,1084,1087,3,808,404,0,1085,1087,5,78,0,0,1086, - 1084,1,0,0,0,1086,1085,1,0,0,0,1087,1122,1,0,0,0,1088,1089,7,0,0, - 0,1089,1090,5,287,0,0,1090,1122,3,808,404,0,1091,1122,5,228,0,0, - 1092,1122,5,229,0,0,1093,1122,5,236,0,0,1094,1122,5,237,0,0,1095, - 1122,5,234,0,0,1096,1122,5,235,0,0,1097,1122,5,232,0,0,1098,1122, - 5,233,0,0,1099,1122,5,230,0,0,1100,1122,5,231,0,0,1101,1122,5,535, - 0,0,1102,1122,5,536,0,0,1103,1122,5,537,0,0,1104,1122,5,538,0,0, - 1105,1122,5,539,0,0,1106,1122,5,540,0,0,1107,1108,5,164,0,0,1108, - 1109,5,74,0,0,1109,1122,3,812,406,0,1110,1111,5,371,0,0,1111,1112, - 5,368,0,0,1112,1122,3,808,404,0,1113,1114,5,68,0,0,1114,1115,7,1, - 0,0,1115,1122,3,784,392,0,1116,1117,7,2,0,0,1117,1122,3,816,408, - 0,1118,1119,5,134,0,0,1119,1122,3,784,392,0,1120,1122,3,826,413, - 0,1121,1083,1,0,0,0,1121,1088,1,0,0,0,1121,1091,1,0,0,0,1121,1092, - 1,0,0,0,1121,1093,1,0,0,0,1121,1094,1,0,0,0,1121,1095,1,0,0,0,1121, - 1096,1,0,0,0,1121,1097,1,0,0,0,1121,1098,1,0,0,0,1121,1099,1,0,0, - 0,1121,1100,1,0,0,0,1121,1101,1,0,0,0,1121,1102,1,0,0,0,1121,1103, - 1,0,0,0,1121,1104,1,0,0,0,1121,1105,1,0,0,0,1121,1106,1,0,0,0,1121, - 1107,1,0,0,0,1121,1110,1,0,0,0,1121,1113,1,0,0,0,1121,1116,1,0,0, - 0,1121,1118,1,0,0,0,1121,1120,1,0,0,0,1122,11,1,0,0,0,1123,1132, - 3,10,5,0,1124,1125,5,348,0,0,1125,1132,5,571,0,0,1126,1127,7,3,0, - 0,1127,1132,3,816,408,0,1128,1129,5,68,0,0,1129,1130,7,1,0,0,1130, - 1132,3,816,408,0,1131,1123,1,0,0,0,1131,1124,1,0,0,0,1131,1126,1, - 0,0,0,1131,1128,1,0,0,0,1132,13,1,0,0,0,1133,1134,5,46,0,0,1134, - 1135,5,99,0,0,1135,1137,3,814,407,0,1136,1138,5,105,0,0,1137,1136, - 1,0,0,0,1137,1138,1,0,0,0,1138,1142,1,0,0,0,1139,1141,3,12,6,0,1140, - 1139,1,0,0,0,1141,1144,1,0,0,0,1142,1140,1,0,0,0,1142,1143,1,0,0, - 0,1143,15,1,0,0,0,1144,1142,1,0,0,0,1145,1146,5,138,0,0,1146,1147, - 7,2,0,0,1147,1149,3,814,407,0,1148,1150,5,105,0,0,1149,1148,1,0, - 0,0,1149,1150,1,0,0,0,1150,1154,1,0,0,0,1151,1153,3,10,5,0,1152, - 1151,1,0,0,0,1153,1156,1,0,0,0,1154,1152,1,0,0,0,1154,1155,1,0,0, - 0,1155,17,1,0,0,0,1156,1154,1,0,0,0,1157,1158,5,138,0,0,1158,1161, - 7,2,0,0,1159,1162,5,30,0,0,1160,1162,3,814,407,0,1161,1159,1,0,0, - 0,1161,1160,1,0,0,0,1162,1163,1,0,0,0,1163,1164,5,68,0,0,1164,1165, - 5,175,0,0,1165,1166,3,788,394,0,1166,1167,3,64,32,0,1167,19,1,0, - 0,0,1168,1169,5,138,0,0,1169,1170,5,442,0,0,1170,1172,3,794,397, - 0,1171,1173,3,368,184,0,1172,1171,1,0,0,0,1172,1173,1,0,0,0,1173, - 1174,1,0,0,0,1174,1175,3,22,11,0,1175,21,1,0,0,0,1176,1180,3,24, - 12,0,1177,1179,3,24,12,0,1178,1177,1,0,0,0,1179,1182,1,0,0,0,1180, - 1178,1,0,0,0,1180,1181,1,0,0,0,1181,1184,1,0,0,0,1182,1180,1,0,0, - 0,1183,1185,5,315,0,0,1184,1183,1,0,0,0,1184,1185,1,0,0,0,1185,1203, - 1,0,0,0,1186,1187,5,309,0,0,1187,1188,5,94,0,0,1188,1203,3,792,396, - 0,1189,1190,5,282,0,0,1190,1191,5,94,0,0,1191,1203,3,814,407,0,1192, - 1193,5,333,0,0,1193,1194,5,323,0,0,1194,1203,3,32,16,0,1195,1197, - 5,269,0,0,1196,1195,1,0,0,0,1196,1197,1,0,0,0,1197,1198,1,0,0,0, - 1198,1199,5,462,0,0,1199,1200,5,80,0,0,1200,1201,5,204,0,0,1201, - 1203,3,818,409,0,1202,1176,1,0,0,0,1202,1186,1,0,0,0,1202,1189,1, - 0,0,0,1202,1192,1,0,0,0,1202,1196,1,0,0,0,1203,23,1,0,0,0,1204,1247, - 5,222,0,0,1205,1247,5,338,0,0,1206,1247,5,377,0,0,1207,1209,5,77, - 0,0,1208,1207,1,0,0,0,1208,1209,1,0,0,0,1209,1210,1,0,0,0,1210,1247, - 5,250,0,0,1211,1213,5,205,0,0,1212,1211,1,0,0,0,1212,1213,1,0,0, - 0,1213,1214,1,0,0,0,1214,1215,5,327,0,0,1215,1222,5,243,0,0,1216, - 1218,5,205,0,0,1217,1216,1,0,0,0,1217,1218,1,0,0,0,1218,1219,1,0, - 0,0,1219,1220,5,327,0,0,1220,1222,5,181,0,0,1221,1212,1,0,0,0,1221, - 1217,1,0,0,0,1222,1247,1,0,0,0,1223,1224,5,460,0,0,1224,1247,7,4, - 0,0,1225,1226,5,170,0,0,1226,1247,3,824,412,0,1227,1228,5,320,0, - 0,1228,1247,3,818,409,0,1229,1230,5,333,0,0,1230,1231,3,818,409, - 0,1231,1234,7,5,0,0,1232,1235,3,818,409,0,1233,1235,5,53,0,0,1234, - 1232,1,0,0,0,1234,1233,1,0,0,0,1235,1247,1,0,0,0,1236,1237,5,333, - 0,0,1237,1238,3,818,409,0,1238,1239,5,64,0,0,1239,1240,5,434,0,0, - 1240,1247,1,0,0,0,1241,1244,5,313,0,0,1242,1245,3,818,409,0,1243, - 1245,5,30,0,0,1244,1242,1,0,0,0,1244,1243,1,0,0,0,1245,1247,1,0, - 0,0,1246,1204,1,0,0,0,1246,1205,1,0,0,0,1246,1206,1,0,0,0,1246,1208, - 1,0,0,0,1246,1221,1,0,0,0,1246,1223,1,0,0,0,1246,1225,1,0,0,0,1246, - 1227,1,0,0,0,1246,1229,1,0,0,0,1246,1236,1,0,0,0,1246,1241,1,0,0, - 0,1247,25,1,0,0,0,1248,1249,5,46,0,0,1249,1250,5,66,0,0,1250,1252, - 3,814,407,0,1251,1253,5,105,0,0,1252,1251,1,0,0,0,1252,1253,1,0, - 0,0,1253,1257,1,0,0,0,1254,1256,3,12,6,0,1255,1254,1,0,0,0,1256, - 1259,1,0,0,0,1257,1255,1,0,0,0,1257,1258,1,0,0,0,1258,27,1,0,0,0, - 1259,1257,1,0,0,0,1260,1261,5,138,0,0,1261,1262,5,66,0,0,1262,1263, - 3,814,407,0,1263,1264,7,6,0,0,1264,1265,5,99,0,0,1265,1266,3,816, - 408,0,1266,29,1,0,0,0,1267,1268,5,46,0,0,1268,1270,5,323,0,0,1269, - 1271,3,294,147,0,1270,1269,1,0,0,0,1270,1271,1,0,0,0,1271,1278,1, - 0,0,0,1272,1274,3,32,16,0,1273,1272,1,0,0,0,1273,1274,1,0,0,0,1274, - 1275,1,0,0,0,1275,1276,5,106,0,0,1276,1279,3,814,407,0,1277,1279, - 3,32,16,0,1278,1273,1,0,0,0,1278,1277,1,0,0,0,1279,1283,1,0,0,0, - 1280,1282,3,34,17,0,1281,1280,1,0,0,0,1282,1285,1,0,0,0,1283,1281, - 1,0,0,0,1283,1284,1,0,0,0,1284,31,1,0,0,0,1285,1283,1,0,0,0,1286, - 1287,3,316,158,0,1287,33,1,0,0,0,1288,1295,3,120,60,0,1289,1295, - 3,358,179,0,1290,1295,3,196,98,0,1291,1295,3,256,128,0,1292,1295, - 3,334,167,0,1293,1295,3,476,238,0,1294,1288,1,0,0,0,1294,1289,1, - 0,0,0,1294,1290,1,0,0,0,1294,1291,1,0,0,0,1294,1292,1,0,0,0,1294, - 1293,1,0,0,0,1295,35,1,0,0,0,1296,1298,5,333,0,0,1297,1299,7,7,0, - 0,1298,1297,1,0,0,0,1298,1299,1,0,0,0,1299,1300,1,0,0,0,1300,1301, - 3,38,19,0,1301,37,1,0,0,0,1302,1303,5,356,0,0,1303,1311,3,474,237, - 0,1304,1305,5,332,0,0,1305,1306,5,154,0,0,1306,1307,5,36,0,0,1307, - 1308,5,356,0,0,1308,1311,3,474,237,0,1309,1311,3,42,21,0,1310,1302, - 1,0,0,0,1310,1304,1,0,0,0,1310,1309,1,0,0,0,1311,39,1,0,0,0,1312, - 1315,5,30,0,0,1313,1315,3,44,22,0,1314,1312,1,0,0,0,1314,1313,1, - 0,0,0,1315,1317,1,0,0,0,1316,1318,7,5,0,0,1317,1316,1,0,0,0,1317, - 1318,1,0,0,0,1318,1321,1,0,0,0,1319,1322,5,53,0,0,1320,1322,3,46, - 23,0,1321,1319,1,0,0,0,1321,1320,1,0,0,0,1321,1322,1,0,0,0,1322, - 41,1,0,0,0,1323,1324,5,418,0,0,1324,1325,5,386,0,0,1325,1352,3,56, - 28,0,1326,1327,5,152,0,0,1327,1352,3,808,404,0,1328,1329,5,323,0, - 0,1329,1352,3,790,395,0,1330,1333,5,267,0,0,1331,1334,3,808,404, - 0,1332,1334,5,53,0,0,1333,1331,1,0,0,0,1333,1332,1,0,0,0,1333,1334, - 1,0,0,0,1334,1352,1,0,0,0,1335,1336,5,318,0,0,1336,1352,3,58,29, - 0,1337,1338,5,332,0,0,1338,1339,5,106,0,0,1339,1352,3,58,29,0,1340, - 1341,5,383,0,0,1341,1342,5,279,0,0,1342,1352,3,696,348,0,1343,1344, - 5,356,0,0,1344,1345,5,337,0,0,1345,1352,3,808,404,0,1346,1347,3, - 44,22,0,1347,1348,5,64,0,0,1348,1349,5,434,0,0,1349,1352,1,0,0,0, - 1350,1352,3,40,20,0,1351,1323,1,0,0,0,1351,1326,1,0,0,0,1351,1328, - 1,0,0,0,1351,1330,1,0,0,0,1351,1335,1,0,0,0,1351,1337,1,0,0,0,1351, - 1340,1,0,0,0,1351,1343,1,0,0,0,1351,1346,1,0,0,0,1351,1350,1,0,0, - 0,1352,43,1,0,0,0,1353,1358,3,818,409,0,1354,1355,5,11,0,0,1355, - 1357,3,818,409,0,1356,1354,1,0,0,0,1357,1360,1,0,0,0,1358,1356,1, - 0,0,0,1358,1359,1,0,0,0,1359,45,1,0,0,0,1360,1358,1,0,0,0,1361,1366, - 3,48,24,0,1362,1363,5,6,0,0,1363,1365,3,48,24,0,1364,1362,1,0,0, - 0,1365,1368,1,0,0,0,1366,1364,1,0,0,0,1366,1367,1,0,0,0,1367,47, - 1,0,0,0,1368,1366,1,0,0,0,1369,1372,3,54,27,0,1370,1372,3,202,101, - 0,1371,1369,1,0,0,0,1371,1370,1,0,0,0,1372,49,1,0,0,0,1373,1374, - 5,300,0,0,1374,1379,7,8,0,0,1375,1376,5,310,0,0,1376,1379,5,300, - 0,0,1377,1379,5,330,0,0,1378,1373,1,0,0,0,1378,1375,1,0,0,0,1378, - 1377,1,0,0,0,1379,51,1,0,0,0,1380,1387,5,96,0,0,1381,1387,5,60,0, - 0,1382,1387,5,80,0,0,1383,1387,3,800,400,0,1384,1387,3,832,416,0, - 1385,1387,3,808,404,0,1386,1380,1,0,0,0,1386,1381,1,0,0,0,1386,1382, - 1,0,0,0,1386,1383,1,0,0,0,1386,1384,1,0,0,0,1386,1385,1,0,0,0,1387, - 53,1,0,0,0,1388,1393,5,96,0,0,1389,1393,5,60,0,0,1390,1393,5,80, - 0,0,1391,1393,3,58,29,0,1392,1388,1,0,0,0,1392,1389,1,0,0,0,1392, - 1390,1,0,0,0,1392,1391,1,0,0,0,1393,55,1,0,0,0,1394,1409,3,808,404, - 0,1395,1409,5,53,0,0,1396,1409,3,826,413,0,1397,1398,5,403,0,0,1398, - 1400,3,808,404,0,1399,1401,3,668,334,0,1400,1399,1,0,0,0,1400,1401, - 1,0,0,0,1401,1409,1,0,0,0,1402,1403,5,403,0,0,1403,1404,3,660,330, - 0,1404,1405,3,808,404,0,1405,1409,1,0,0,0,1406,1409,3,202,101,0, - 1407,1409,5,254,0,0,1408,1394,1,0,0,0,1408,1395,1,0,0,0,1408,1396, - 1,0,0,0,1408,1397,1,0,0,0,1408,1402,1,0,0,0,1408,1406,1,0,0,0,1408, - 1407,1,0,0,0,1409,57,1,0,0,0,1410,1413,3,822,411,0,1411,1413,3,808, - 404,0,1412,1410,1,0,0,0,1412,1411,1,0,0,0,1413,59,1,0,0,0,1414,1415, - 5,313,0,0,1415,1416,3,62,31,0,1416,61,1,0,0,0,1417,1418,5,418,0, - 0,1418,1427,5,386,0,0,1419,1420,5,356,0,0,1420,1421,5,244,0,0,1421, - 1427,5,251,0,0,1422,1423,5,332,0,0,1423,1427,5,106,0,0,1424,1427, - 5,30,0,0,1425,1427,3,44,22,0,1426,1417,1,0,0,0,1426,1419,1,0,0,0, - 1426,1422,1,0,0,0,1426,1424,1,0,0,0,1426,1425,1,0,0,0,1427,63,1, - 0,0,0,1428,1429,5,333,0,0,1429,1432,3,38,19,0,1430,1432,3,60,30, - 0,1431,1428,1,0,0,0,1431,1430,1,0,0,0,1432,65,1,0,0,0,1433,1434, - 5,333,0,0,1434,1437,3,42,21,0,1435,1437,3,60,30,0,1436,1433,1,0, - 0,0,1436,1435,1,0,0,0,1437,67,1,0,0,0,1438,1448,5,335,0,0,1439,1449, - 3,44,22,0,1440,1441,5,418,0,0,1441,1449,5,386,0,0,1442,1443,5,356, - 0,0,1443,1444,5,244,0,0,1444,1449,5,251,0,0,1445,1446,5,332,0,0, - 1446,1449,5,106,0,0,1447,1449,5,30,0,0,1448,1439,1,0,0,0,1448,1440, - 1,0,0,0,1448,1442,1,0,0,0,1448,1445,1,0,0,0,1448,1447,1,0,0,0,1449, - 69,1,0,0,0,1450,1451,5,333,0,0,1451,1454,5,165,0,0,1452,1455,5,30, - 0,0,1453,1455,3,760,380,0,1454,1452,1,0,0,0,1454,1453,1,0,0,0,1455, - 1456,1,0,0,0,1456,1457,7,9,0,0,1457,71,1,0,0,0,1458,1459,5,155,0, - 0,1459,73,1,0,0,0,1460,1461,5,187,0,0,1461,1462,7,10,0,0,1462,75, - 1,0,0,0,1463,1464,5,138,0,0,1464,1466,5,92,0,0,1465,1467,3,422,211, - 0,1466,1465,1,0,0,0,1466,1467,1,0,0,0,1467,1468,1,0,0,0,1468,1471, - 3,624,312,0,1469,1472,3,78,39,0,1470,1472,3,88,44,0,1471,1469,1, - 0,0,0,1471,1470,1,0,0,0,1472,1585,1,0,0,0,1473,1474,5,138,0,0,1474, - 1475,5,92,0,0,1475,1476,5,30,0,0,1476,1477,5,68,0,0,1477,1481,3, - 176,88,0,1478,1479,5,281,0,0,1479,1480,5,147,0,0,1480,1482,3,816, - 408,0,1481,1478,1,0,0,0,1481,1482,1,0,0,0,1482,1483,1,0,0,0,1483, - 1484,5,333,0,0,1484,1485,5,351,0,0,1485,1487,3,768,384,0,1486,1488, - 5,272,0,0,1487,1486,1,0,0,0,1487,1488,1,0,0,0,1488,1585,1,0,0,0, - 1489,1490,5,138,0,0,1490,1492,5,92,0,0,1491,1493,3,422,211,0,1492, - 1491,1,0,0,0,1492,1493,1,0,0,0,1493,1494,1,0,0,0,1494,1495,3,774, - 387,0,1495,1500,3,90,45,0,1496,1497,5,62,0,0,1497,1498,5,422,0,0, - 1498,1501,3,80,40,0,1499,1501,5,53,0,0,1500,1496,1,0,0,0,1500,1499, - 1,0,0,0,1501,1585,1,0,0,0,1502,1503,5,138,0,0,1503,1505,5,92,0,0, - 1504,1506,3,422,211,0,1505,1504,1,0,0,0,1505,1506,1,0,0,0,1506,1507, - 1,0,0,0,1507,1508,3,774,387,0,1508,1509,5,436,0,0,1509,1510,5,285, - 0,0,1510,1512,3,780,390,0,1511,1513,7,11,0,0,1512,1511,1,0,0,0,1512, - 1513,1,0,0,0,1513,1585,1,0,0,0,1514,1515,5,138,0,0,1515,1517,5,226, - 0,0,1516,1518,3,422,211,0,1517,1516,1,0,0,0,1517,1518,1,0,0,0,1518, - 1519,1,0,0,0,1519,1522,3,780,390,0,1520,1523,3,78,39,0,1521,1523, - 3,90,45,0,1522,1520,1,0,0,0,1522,1521,1,0,0,0,1523,1585,1,0,0,0, - 1524,1525,5,138,0,0,1525,1526,5,226,0,0,1526,1527,5,30,0,0,1527, - 1528,5,68,0,0,1528,1532,3,176,88,0,1529,1530,5,281,0,0,1530,1531, - 5,147,0,0,1531,1533,3,816,408,0,1532,1529,1,0,0,0,1532,1533,1,0, - 0,0,1533,1534,1,0,0,0,1534,1535,5,333,0,0,1535,1537,3,176,88,0,1536, - 1538,5,272,0,0,1537,1536,1,0,0,0,1537,1538,1,0,0,0,1538,1585,1,0, - 0,0,1539,1540,5,138,0,0,1540,1542,5,328,0,0,1541,1543,3,422,211, - 0,1542,1541,1,0,0,0,1542,1543,1,0,0,0,1543,1544,1,0,0,0,1544,1545, - 3,780,390,0,1545,1546,3,78,39,0,1546,1585,1,0,0,0,1547,1549,5,138, - 0,0,1548,1550,5,259,0,0,1549,1548,1,0,0,0,1549,1550,1,0,0,0,1550, - 1551,1,0,0,0,1551,1553,5,376,0,0,1552,1554,3,422,211,0,1553,1552, - 1,0,0,0,1553,1554,1,0,0,0,1554,1555,1,0,0,0,1555,1556,3,778,389, - 0,1556,1557,3,78,39,0,1557,1585,1,0,0,0,1558,1559,5,138,0,0,1559, - 1560,5,259,0,0,1560,1561,5,376,0,0,1561,1562,5,30,0,0,1562,1563, - 5,68,0,0,1563,1567,3,176,88,0,1564,1565,5,281,0,0,1565,1566,5,147, - 0,0,1566,1568,3,816,408,0,1567,1564,1,0,0,0,1567,1568,1,0,0,0,1568, - 1569,1,0,0,0,1569,1570,5,333,0,0,1570,1571,5,351,0,0,1571,1573,3, - 768,384,0,1572,1574,5,272,0,0,1573,1572,1,0,0,0,1573,1574,1,0,0, - 0,1574,1585,1,0,0,0,1575,1576,5,138,0,0,1576,1577,5,63,0,0,1577, - 1579,5,92,0,0,1578,1580,3,422,211,0,1579,1578,1,0,0,0,1579,1580, - 1,0,0,0,1580,1581,1,0,0,0,1581,1582,3,624,312,0,1582,1583,3,78,39, - 0,1583,1585,1,0,0,0,1584,1463,1,0,0,0,1584,1473,1,0,0,0,1584,1489, - 1,0,0,0,1584,1502,1,0,0,0,1584,1514,1,0,0,0,1584,1524,1,0,0,0,1584, - 1539,1,0,0,0,1584,1547,1,0,0,0,1584,1558,1,0,0,0,1584,1575,1,0,0, - 0,1585,77,1,0,0,0,1586,1591,3,92,46,0,1587,1588,5,6,0,0,1588,1590, - 3,92,46,0,1589,1587,1,0,0,0,1590,1593,1,0,0,0,1591,1589,1,0,0,0, - 1591,1592,1,0,0,0,1592,79,1,0,0,0,1593,1591,1,0,0,0,1594,1595,5, - 68,0,0,1595,1604,3,534,267,0,1596,1597,5,64,0,0,1597,1598,3,82,41, - 0,1598,1599,5,94,0,0,1599,1600,3,82,41,0,1600,1604,1,0,0,0,1601, - 1602,5,105,0,0,1602,1604,3,86,43,0,1603,1594,1,0,0,0,1603,1596,1, - 0,0,0,1603,1601,1,0,0,0,1604,81,1,0,0,0,1605,1606,5,2,0,0,1606,1611, - 3,84,42,0,1607,1608,5,6,0,0,1608,1610,3,84,42,0,1609,1607,1,0,0, - 0,1610,1613,1,0,0,0,1611,1609,1,0,0,0,1611,1612,1,0,0,0,1612,1614, - 1,0,0,0,1613,1611,1,0,0,0,1614,1615,5,3,0,0,1615,83,1,0,0,0,1616, - 1620,3,534,267,0,1617,1620,5,262,0,0,1618,1620,5,260,0,0,1619,1616, - 1,0,0,0,1619,1617,1,0,0,0,1619,1618,1,0,0,0,1620,85,1,0,0,0,1621, - 1622,5,2,0,0,1622,1623,5,533,0,0,1623,1624,3,202,101,0,1624,1625, - 5,6,0,0,1625,1626,5,534,0,0,1626,1627,3,202,101,0,1627,1628,5,3, - 0,0,1628,87,1,0,0,0,1629,1630,3,90,45,0,1630,1631,3,106,53,0,1631, - 1636,1,0,0,0,1632,1633,5,436,0,0,1633,1634,5,285,0,0,1634,1636,3, - 780,390,0,1635,1629,1,0,0,0,1635,1632,1,0,0,0,1636,89,1,0,0,0,1637, - 1638,5,435,0,0,1638,1639,5,285,0,0,1639,1640,3,780,390,0,1640,91, - 1,0,0,0,1641,1644,5,133,0,0,1642,1643,5,45,0,0,1643,1645,3,818,409, - 0,1644,1642,1,0,0,0,1644,1645,1,0,0,0,1645,1646,1,0,0,0,1646,1875, - 3,142,71,0,1647,1648,5,138,0,0,1648,1649,5,45,0,0,1649,1653,3,818, - 409,0,1650,1652,3,272,136,0,1651,1650,1,0,0,0,1652,1655,1,0,0,0, - 1653,1651,1,0,0,0,1653,1654,1,0,0,0,1654,1875,1,0,0,0,1655,1653, - 1,0,0,0,1656,1657,5,372,0,0,1657,1658,5,45,0,0,1658,1875,3,818,409, - 0,1659,1660,5,191,0,0,1660,1662,5,45,0,0,1661,1663,3,422,211,0,1662, - 1661,1,0,0,0,1662,1663,1,0,0,0,1663,1664,1,0,0,0,1664,1666,3,818, - 409,0,1665,1667,3,96,48,0,1666,1665,1,0,0,0,1666,1667,1,0,0,0,1667, - 1875,1,0,0,0,1668,1669,5,333,0,0,1669,1670,5,379,0,0,1670,1875,7, - 12,0,0,1671,1672,5,158,0,0,1672,1673,5,80,0,0,1673,1875,3,818,409, - 0,1674,1675,5,333,0,0,1675,1875,7,13,0,0,1676,1678,5,193,0,0,1677, - 1679,7,14,0,0,1678,1677,1,0,0,0,1678,1679,1,0,0,0,1679,1680,1,0, - 0,0,1680,1875,5,357,0,0,1681,1682,5,186,0,0,1682,1686,5,357,0,0, - 1683,1687,5,30,0,0,1684,1687,5,99,0,0,1685,1687,3,818,409,0,1686, - 1683,1,0,0,0,1686,1684,1,0,0,0,1686,1685,1,0,0,0,1687,1875,1,0,0, - 0,1688,1689,5,193,0,0,1689,1690,7,14,0,0,1690,1691,5,321,0,0,1691, - 1875,3,818,409,0,1692,1693,5,186,0,0,1693,1694,5,321,0,0,1694,1875, - 3,818,409,0,1695,1697,5,269,0,0,1696,1695,1,0,0,0,1696,1697,1,0, - 0,0,1697,1698,1,0,0,0,1698,1699,5,228,0,0,1699,1875,3,780,390,0, - 1700,1701,5,275,0,0,1701,1875,3,316,158,0,1702,1703,5,77,0,0,1703, - 1875,5,275,0,0,1704,1705,5,282,0,0,1705,1706,5,94,0,0,1706,1875, - 3,814,407,0,1707,1708,5,333,0,0,1708,1709,5,351,0,0,1709,1875,3, - 768,384,0,1710,1711,5,312,0,0,1711,1716,5,219,0,0,1712,1717,5,270, - 0,0,1713,1717,5,113,0,0,1714,1717,5,53,0,0,1715,1717,3,180,90,0, - 1716,1712,1,0,0,0,1716,1713,1,0,0,0,1716,1714,1,0,0,0,1716,1715, - 1,0,0,0,1717,1875,1,0,0,0,1718,1725,5,193,0,0,1719,1725,5,186,0, - 0,1720,1722,5,269,0,0,1721,1720,1,0,0,0,1721,1722,1,0,0,0,1722,1723, - 1,0,0,0,1723,1725,5,209,0,0,1724,1718,1,0,0,0,1724,1719,1,0,0,0, - 1724,1721,1,0,0,0,1725,1726,1,0,0,0,1726,1727,5,414,0,0,1727,1728, - 5,251,0,0,1728,1875,5,327,0,0,1729,1731,5,191,0,0,1730,1732,5,44, - 0,0,1731,1730,1,0,0,0,1731,1732,1,0,0,0,1732,1734,1,0,0,0,1733,1735, - 3,422,211,0,1734,1733,1,0,0,0,1734,1735,1,0,0,0,1735,1736,1,0,0, - 0,1736,1738,3,800,400,0,1737,1739,3,96,48,0,1738,1737,1,0,0,0,1738, - 1739,1,0,0,0,1739,1875,1,0,0,0,1740,1742,5,133,0,0,1741,1743,5,44, - 0,0,1742,1741,1,0,0,0,1742,1743,1,0,0,0,1743,1745,1,0,0,0,1744,1746, - 3,294,147,0,1745,1744,1,0,0,0,1745,1746,1,0,0,0,1746,1747,1,0,0, - 0,1747,1875,3,132,66,0,1748,1750,5,138,0,0,1749,1751,5,44,0,0,1750, - 1749,1,0,0,0,1750,1751,1,0,0,0,1751,1752,1,0,0,0,1752,1755,3,800, - 400,0,1753,1756,3,94,47,0,1754,1756,3,222,111,0,1755,1753,1,0,0, - 0,1755,1754,1,0,0,0,1756,1875,1,0,0,0,1757,1759,5,138,0,0,1758,1760, - 5,44,0,0,1759,1758,1,0,0,0,1759,1760,1,0,0,0,1760,1761,1,0,0,0,1761, - 1762,3,800,400,0,1762,1763,7,15,0,0,1763,1764,5,77,0,0,1764,1765, - 5,78,0,0,1765,1875,1,0,0,0,1766,1768,5,138,0,0,1767,1769,5,44,0, - 0,1768,1767,1,0,0,0,1768,1769,1,0,0,0,1769,1770,1,0,0,0,1770,1771, - 3,800,400,0,1771,1772,5,191,0,0,1772,1774,5,437,0,0,1773,1775,3, - 422,211,0,1774,1773,1,0,0,0,1774,1775,1,0,0,0,1775,1875,1,0,0,0, - 1776,1778,5,138,0,0,1777,1779,5,44,0,0,1778,1777,1,0,0,0,1778,1779, - 1,0,0,0,1779,1780,1,0,0,0,1780,1781,3,800,400,0,1781,1782,5,333, - 0,0,1782,1783,5,342,0,0,1783,1784,3,812,406,0,1784,1875,1,0,0,0, - 1785,1787,5,138,0,0,1786,1788,5,44,0,0,1787,1786,1,0,0,0,1787,1788, - 1,0,0,0,1788,1789,1,0,0,0,1789,1791,3,800,400,0,1790,1785,1,0,0, - 0,1790,1791,1,0,0,0,1791,1792,1,0,0,0,1792,1793,7,16,0,0,1793,1875, - 3,100,50,0,1794,1796,5,138,0,0,1795,1797,5,44,0,0,1796,1795,1,0, - 0,0,1796,1797,1,0,0,0,1797,1798,1,0,0,0,1798,1799,3,800,400,0,1799, - 1800,5,333,0,0,1800,1801,5,345,0,0,1801,1802,3,818,409,0,1802,1875, - 1,0,0,0,1803,1805,5,138,0,0,1804,1806,5,44,0,0,1805,1804,1,0,0,0, - 1805,1806,1,0,0,0,1806,1807,1,0,0,0,1807,1808,3,800,400,0,1808,1809, - 5,133,0,0,1809,1810,5,438,0,0,1810,1811,3,138,69,0,1811,1812,5,36, - 0,0,1812,1821,5,219,0,0,1813,1815,5,2,0,0,1814,1816,3,200,100,0, - 1815,1814,1,0,0,0,1816,1817,1,0,0,0,1817,1815,1,0,0,0,1817,1818, - 1,0,0,0,1818,1819,1,0,0,0,1819,1820,5,3,0,0,1820,1822,1,0,0,0,1821, - 1813,1,0,0,0,1821,1822,1,0,0,0,1822,1875,1,0,0,0,1823,1825,5,138, - 0,0,1824,1826,5,44,0,0,1825,1824,1,0,0,0,1825,1826,1,0,0,0,1826, - 1827,1,0,0,0,1827,1841,3,800,400,0,1828,1833,5,314,0,0,1829,1831, - 5,105,0,0,1830,1829,1,0,0,0,1830,1831,1,0,0,0,1831,1832,1,0,0,0, - 1832,1834,3,202,101,0,1833,1830,1,0,0,0,1833,1834,1,0,0,0,1834,1842, - 1,0,0,0,1835,1839,5,333,0,0,1836,1840,3,200,100,0,1837,1838,5,438, - 0,0,1838,1840,3,138,69,0,1839,1836,1,0,0,0,1839,1837,1,0,0,0,1840, - 1842,1,0,0,0,1841,1828,1,0,0,0,1841,1835,1,0,0,0,1842,1843,1,0,0, - 0,1843,1841,1,0,0,0,1843,1844,1,0,0,0,1844,1875,1,0,0,0,1845,1847, - 5,138,0,0,1846,1848,5,44,0,0,1847,1846,1,0,0,0,1847,1848,1,0,0,0, - 1848,1849,1,0,0,0,1849,1850,3,800,400,0,1850,1851,5,191,0,0,1851, - 1853,5,219,0,0,1852,1854,3,422,211,0,1853,1852,1,0,0,0,1853,1854, - 1,0,0,0,1854,1875,1,0,0,0,1855,1857,5,138,0,0,1856,1858,5,44,0,0, - 1857,1856,1,0,0,0,1857,1858,1,0,0,0,1858,1859,1,0,0,0,1859,1862, - 3,800,400,0,1860,1861,5,333,0,0,1861,1863,5,174,0,0,1862,1860,1, - 0,0,0,1862,1863,1,0,0,0,1863,1864,1,0,0,0,1864,1865,5,360,0,0,1865, - 1867,3,652,326,0,1866,1868,3,98,49,0,1867,1866,1,0,0,0,1867,1868, - 1,0,0,0,1868,1871,1,0,0,0,1869,1870,5,100,0,0,1870,1872,3,674,337, - 0,1871,1869,1,0,0,0,1871,1872,1,0,0,0,1872,1875,1,0,0,0,1873,1875, - 3,222,111,0,1874,1641,1,0,0,0,1874,1647,1,0,0,0,1874,1656,1,0,0, - 0,1874,1659,1,0,0,0,1874,1668,1,0,0,0,1874,1671,1,0,0,0,1874,1674, - 1,0,0,0,1874,1676,1,0,0,0,1874,1681,1,0,0,0,1874,1688,1,0,0,0,1874, - 1692,1,0,0,0,1874,1696,1,0,0,0,1874,1700,1,0,0,0,1874,1702,1,0,0, - 0,1874,1704,1,0,0,0,1874,1707,1,0,0,0,1874,1710,1,0,0,0,1874,1724, - 1,0,0,0,1874,1729,1,0,0,0,1874,1740,1,0,0,0,1874,1748,1,0,0,0,1874, - 1757,1,0,0,0,1874,1766,1,0,0,0,1874,1776,1,0,0,0,1874,1790,1,0,0, - 0,1874,1794,1,0,0,0,1874,1803,1,0,0,0,1874,1823,1,0,0,0,1874,1845, - 1,0,0,0,1874,1855,1,0,0,0,1874,1873,1,0,0,0,1875,93,1,0,0,0,1876, - 1877,5,333,0,0,1877,1878,5,53,0,0,1878,1882,3,674,337,0,1879,1880, - 5,191,0,0,1880,1882,5,53,0,0,1881,1876,1,0,0,0,1881,1879,1,0,0,0, - 1882,95,1,0,0,0,1883,1884,7,17,0,0,1884,97,1,0,0,0,1885,1886,5,43, - 0,0,1886,1887,3,316,158,0,1887,99,1,0,0,0,1888,1889,5,2,0,0,1889, - 1894,3,104,52,0,1890,1891,5,6,0,0,1891,1893,3,104,52,0,1892,1890, - 1,0,0,0,1893,1896,1,0,0,0,1894,1892,1,0,0,0,1894,1895,1,0,0,0,1895, - 1897,1,0,0,0,1896,1894,1,0,0,0,1897,1898,5,3,0,0,1898,101,1,0,0, - 0,1899,1900,5,105,0,0,1900,1901,3,100,50,0,1901,103,1,0,0,0,1902, - 1907,3,824,412,0,1903,1904,5,10,0,0,1904,1908,3,288,144,0,1905,1906, - 5,11,0,0,1906,1908,3,286,143,0,1907,1903,1,0,0,0,1907,1905,1,0,0, - 0,1907,1908,1,0,0,0,1908,105,1,0,0,0,1909,1910,5,62,0,0,1910,1911, - 5,422,0,0,1911,1912,5,105,0,0,1912,1913,5,2,0,0,1913,1914,3,822, - 411,0,1914,1921,5,571,0,0,1915,1916,5,6,0,0,1916,1917,3,822,411, - 0,1917,1918,5,571,0,0,1918,1920,1,0,0,0,1919,1915,1,0,0,0,1920,1923, - 1,0,0,0,1921,1919,1,0,0,0,1921,1922,1,0,0,0,1922,1924,1,0,0,0,1923, - 1921,1,0,0,0,1924,1925,5,3,0,0,1925,1939,1,0,0,0,1926,1927,5,62, - 0,0,1927,1928,5,422,0,0,1928,1929,5,68,0,0,1929,1939,3,534,267,0, - 1930,1931,5,62,0,0,1931,1932,5,422,0,0,1932,1933,5,64,0,0,1933,1934, - 3,534,267,0,1934,1935,5,94,0,0,1935,1936,3,534,267,0,1936,1939,1, - 0,0,0,1937,1939,5,53,0,0,1938,1909,1,0,0,0,1938,1926,1,0,0,0,1938, - 1930,1,0,0,0,1938,1937,1,0,0,0,1939,107,1,0,0,0,1940,1941,5,138, - 0,0,1941,1942,5,360,0,0,1942,1943,3,316,158,0,1943,1948,3,110,55, - 0,1944,1945,5,6,0,0,1945,1947,3,110,55,0,1946,1944,1,0,0,0,1947, - 1950,1,0,0,0,1948,1946,1,0,0,0,1948,1949,1,0,0,0,1949,109,1,0,0, - 0,1950,1948,1,0,0,0,1951,1952,5,133,0,0,1952,1953,5,143,0,0,1953, - 1955,3,644,322,0,1954,1956,3,96,48,0,1955,1954,1,0,0,0,1955,1956, - 1,0,0,0,1956,1982,1,0,0,0,1957,1958,5,191,0,0,1958,1960,5,143,0, - 0,1959,1961,3,422,211,0,1960,1959,1,0,0,0,1960,1961,1,0,0,0,1961, - 1962,1,0,0,0,1962,1964,3,818,409,0,1963,1965,3,96,48,0,1964,1963, - 1,0,0,0,1964,1965,1,0,0,0,1965,1982,1,0,0,0,1966,1967,5,138,0,0, - 1967,1968,5,143,0,0,1968,1971,3,818,409,0,1969,1970,5,333,0,0,1970, - 1972,5,174,0,0,1971,1969,1,0,0,0,1971,1972,1,0,0,0,1972,1973,1,0, - 0,0,1973,1974,5,360,0,0,1974,1976,3,652,326,0,1975,1977,3,98,49, - 0,1976,1975,1,0,0,0,1976,1977,1,0,0,0,1977,1979,1,0,0,0,1978,1980, - 3,96,48,0,1979,1978,1,0,0,0,1979,1980,1,0,0,0,1980,1982,1,0,0,0, - 1981,1951,1,0,0,0,1981,1957,1,0,0,0,1981,1966,1,0,0,0,1982,111,1, - 0,0,0,1983,1986,5,157,0,0,1984,1987,3,818,409,0,1985,1987,5,30,0, - 0,1986,1984,1,0,0,0,1986,1985,1,0,0,0,1987,113,1,0,0,0,1988,1990, - 5,169,0,0,1989,1991,5,107,0,0,1990,1989,1,0,0,0,1990,1991,1,0,0, - 0,1991,1992,1,0,0,0,1992,1994,3,774,387,0,1993,1995,3,144,72,0,1994, - 1993,1,0,0,0,1994,1995,1,0,0,0,1995,1996,1,0,0,0,1996,1998,7,18, - 0,0,1997,1999,5,297,0,0,1998,1997,1,0,0,0,1998,1999,1,0,0,0,1999, - 2003,1,0,0,0,2000,2004,3,808,404,0,2001,2004,5,343,0,0,2002,2004, - 5,344,0,0,2003,2000,1,0,0,0,2003,2001,1,0,0,0,2003,2002,1,0,0,0, - 2004,2010,1,0,0,0,2005,2007,5,100,0,0,2006,2005,1,0,0,0,2006,2007, - 1,0,0,0,2007,2008,1,0,0,0,2008,2009,5,184,0,0,2009,2011,3,808,404, - 0,2010,2006,1,0,0,0,2010,2011,1,0,0,0,2011,2013,1,0,0,0,2012,2014, - 5,105,0,0,2013,2012,1,0,0,0,2013,2014,1,0,0,0,2014,2015,1,0,0,0, - 2015,2017,3,116,58,0,2016,2018,3,638,319,0,2017,2016,1,0,0,0,2017, - 2018,1,0,0,0,2018,2038,1,0,0,0,2019,2020,5,169,0,0,2020,2021,5,2, - 0,0,2021,2022,3,530,265,0,2022,2023,5,3,0,0,2023,2025,5,94,0,0,2024, - 2026,5,297,0,0,2025,2024,1,0,0,0,2025,2026,1,0,0,0,2026,2030,1,0, - 0,0,2027,2031,3,808,404,0,2028,2031,5,343,0,0,2029,2031,5,344,0, - 0,2030,2027,1,0,0,0,2030,2028,1,0,0,0,2030,2029,1,0,0,0,2031,2033, - 1,0,0,0,2032,2034,5,105,0,0,2033,2032,1,0,0,0,2033,2034,1,0,0,0, - 2034,2035,1,0,0,0,2035,2036,3,116,58,0,2036,2038,1,0,0,0,2037,1988, - 1,0,0,0,2037,2019,1,0,0,0,2038,115,1,0,0,0,2039,2063,5,107,0,0,2040, - 2063,5,112,0,0,2041,2043,7,19,0,0,2042,2044,5,36,0,0,2043,2042,1, - 0,0,0,2043,2044,1,0,0,0,2044,2045,1,0,0,0,2045,2063,3,808,404,0, - 2046,2063,5,171,0,0,2047,2063,5,216,0,0,2048,2049,5,209,0,0,2049, - 2052,5,298,0,0,2050,2053,3,148,74,0,2051,2053,5,9,0,0,2052,2050, - 1,0,0,0,2052,2051,1,0,0,0,2053,2063,1,0,0,0,2054,2056,5,209,0,0, - 2055,2057,5,77,0,0,2056,2055,1,0,0,0,2056,2057,1,0,0,0,2057,2058, - 1,0,0,0,2058,2059,5,78,0,0,2059,2063,3,148,74,0,2060,2061,5,194, - 0,0,2061,2063,3,808,404,0,2062,2039,1,0,0,0,2062,2040,1,0,0,0,2062, - 2041,1,0,0,0,2062,2046,1,0,0,0,2062,2047,1,0,0,0,2062,2048,1,0,0, - 0,2062,2054,1,0,0,0,2062,2060,1,0,0,0,2063,2066,1,0,0,0,2064,2062, - 1,0,0,0,2064,2065,1,0,0,0,2065,2079,1,0,0,0,2066,2064,1,0,0,0,2067, - 2068,5,2,0,0,2068,2073,3,118,59,0,2069,2070,5,6,0,0,2070,2072,3, - 118,59,0,2071,2069,1,0,0,0,2072,2075,1,0,0,0,2073,2071,1,0,0,0,2073, - 2074,1,0,0,0,2074,2076,1,0,0,0,2075,2073,1,0,0,0,2076,2077,5,3,0, - 0,2077,2079,1,0,0,0,2078,2064,1,0,0,0,2078,2067,1,0,0,0,2079,117, - 1,0,0,0,2080,2095,3,824,412,0,2081,2096,3,54,27,0,2082,2096,3,202, - 101,0,2083,2096,5,9,0,0,2084,2085,5,2,0,0,2085,2090,3,52,26,0,2086, - 2087,5,6,0,0,2087,2089,3,52,26,0,2088,2086,1,0,0,0,2089,2092,1,0, - 0,0,2090,2088,1,0,0,0,2090,2091,1,0,0,0,2091,2093,1,0,0,0,2092,2090, - 1,0,0,0,2093,2094,5,3,0,0,2094,2096,1,0,0,0,2095,2081,1,0,0,0,2095, - 2082,1,0,0,0,2095,2083,1,0,0,0,2095,2084,1,0,0,0,2095,2096,1,0,0, - 0,2096,119,1,0,0,0,2097,2099,5,46,0,0,2098,2100,3,122,61,0,2099, - 2098,1,0,0,0,2099,2100,1,0,0,0,2100,2101,1,0,0,0,2101,2103,5,92, - 0,0,2102,2104,3,294,147,0,2103,2102,1,0,0,0,2103,2104,1,0,0,0,2104, - 2105,1,0,0,0,2105,2171,3,772,386,0,2106,2108,5,2,0,0,2107,2109,3, - 126,63,0,2108,2107,1,0,0,0,2108,2109,1,0,0,0,2109,2110,1,0,0,0,2110, - 2112,5,3,0,0,2111,2113,3,164,82,0,2112,2111,1,0,0,0,2112,2113,1, - 0,0,0,2113,2115,1,0,0,0,2114,2116,3,166,83,0,2115,2114,1,0,0,0,2115, - 2116,1,0,0,0,2116,2118,1,0,0,0,2117,2119,3,170,85,0,2118,2117,1, - 0,0,0,2118,2119,1,0,0,0,2119,2121,1,0,0,0,2120,2122,3,172,86,0,2121, - 2120,1,0,0,0,2121,2122,1,0,0,0,2122,2124,1,0,0,0,2123,2125,3,174, - 87,0,2124,2123,1,0,0,0,2124,2125,1,0,0,0,2125,2127,1,0,0,0,2126, - 2128,3,176,88,0,2127,2126,1,0,0,0,2127,2128,1,0,0,0,2128,2172,1, - 0,0,0,2129,2130,5,275,0,0,2130,2132,3,316,158,0,2131,2133,3,124, - 62,0,2132,2131,1,0,0,0,2132,2133,1,0,0,0,2133,2135,1,0,0,0,2134, - 2136,3,166,83,0,2135,2134,1,0,0,0,2135,2136,1,0,0,0,2136,2138,1, - 0,0,0,2137,2139,3,170,85,0,2138,2137,1,0,0,0,2138,2139,1,0,0,0,2139, - 2141,1,0,0,0,2140,2142,3,172,86,0,2141,2140,1,0,0,0,2141,2142,1, - 0,0,0,2142,2144,1,0,0,0,2143,2145,3,174,87,0,2144,2143,1,0,0,0,2144, - 2145,1,0,0,0,2145,2147,1,0,0,0,2146,2148,3,176,88,0,2147,2146,1, - 0,0,0,2147,2148,1,0,0,0,2148,2172,1,0,0,0,2149,2150,5,285,0,0,2150, - 2151,5,275,0,0,2151,2153,3,780,390,0,2152,2154,3,124,62,0,2153,2152, - 1,0,0,0,2153,2154,1,0,0,0,2154,2155,1,0,0,0,2155,2157,3,106,53,0, - 2156,2158,3,166,83,0,2157,2156,1,0,0,0,2157,2158,1,0,0,0,2158,2160, - 1,0,0,0,2159,2161,3,170,85,0,2160,2159,1,0,0,0,2160,2161,1,0,0,0, - 2161,2163,1,0,0,0,2162,2164,3,172,86,0,2163,2162,1,0,0,0,2163,2164, - 1,0,0,0,2164,2166,1,0,0,0,2165,2167,3,174,87,0,2166,2165,1,0,0,0, - 2166,2167,1,0,0,0,2167,2169,1,0,0,0,2168,2170,3,176,88,0,2169,2168, - 1,0,0,0,2169,2170,1,0,0,0,2170,2172,1,0,0,0,2171,2106,1,0,0,0,2171, - 2129,1,0,0,0,2171,2149,1,0,0,0,2172,121,1,0,0,0,2173,2179,5,354, - 0,0,2174,2179,5,352,0,0,2175,2176,7,20,0,0,2176,2179,7,21,0,0,2177, - 2179,5,367,0,0,2178,2173,1,0,0,0,2178,2174,1,0,0,0,2178,2175,1,0, - 0,0,2178,2177,1,0,0,0,2179,123,1,0,0,0,2180,2181,5,2,0,0,2181,2186, - 3,130,65,0,2182,2183,5,6,0,0,2183,2185,3,130,65,0,2184,2182,1,0, - 0,0,2185,2188,1,0,0,0,2186,2184,1,0,0,0,2186,2187,1,0,0,0,2187,2189, - 1,0,0,0,2188,2186,1,0,0,0,2189,2190,5,3,0,0,2190,125,1,0,0,0,2191, - 2196,3,128,64,0,2192,2193,5,6,0,0,2193,2195,3,128,64,0,2194,2192, - 1,0,0,0,2195,2198,1,0,0,0,2196,2194,1,0,0,0,2196,2197,1,0,0,0,2197, - 127,1,0,0,0,2198,2196,1,0,0,0,2199,2215,3,132,66,0,2200,2201,5,120, - 0,0,2201,2206,3,780,390,0,2202,2203,7,22,0,0,2203,2205,3,140,70, - 0,2204,2202,1,0,0,0,2205,2208,1,0,0,0,2206,2204,1,0,0,0,2206,2207, - 1,0,0,0,2207,2215,1,0,0,0,2208,2206,1,0,0,0,2209,2210,5,45,0,0,2210, - 2212,3,818,409,0,2211,2209,1,0,0,0,2211,2212,1,0,0,0,2212,2213,1, - 0,0,0,2213,2215,3,142,71,0,2214,2199,1,0,0,0,2214,2200,1,0,0,0,2214, - 2211,1,0,0,0,2215,129,1,0,0,0,2216,2219,3,802,401,0,2217,2218,5, - 105,0,0,2218,2220,5,280,0,0,2219,2217,1,0,0,0,2219,2220,1,0,0,0, - 2220,2224,1,0,0,0,2221,2223,3,134,67,0,2222,2221,1,0,0,0,2223,2226, - 1,0,0,0,2224,2222,1,0,0,0,2224,2225,1,0,0,0,2225,2233,1,0,0,0,2226, - 2224,1,0,0,0,2227,2228,5,45,0,0,2228,2230,3,818,409,0,2229,2227, - 1,0,0,0,2229,2230,1,0,0,0,2230,2231,1,0,0,0,2231,2233,3,142,71,0, - 2232,2216,1,0,0,0,2232,2229,1,0,0,0,2233,131,1,0,0,0,2234,2235,3, - 802,401,0,2235,2237,3,652,326,0,2236,2238,3,220,110,0,2237,2236, - 1,0,0,0,2237,2238,1,0,0,0,2238,2248,1,0,0,0,2239,2246,5,345,0,0, - 2240,2247,5,544,0,0,2241,2247,5,205,0,0,2242,2247,5,545,0,0,2243, - 2247,5,546,0,0,2244,2247,5,53,0,0,2245,2247,3,818,409,0,2246,2240, - 1,0,0,0,2246,2241,1,0,0,0,2246,2242,1,0,0,0,2246,2243,1,0,0,0,2246, - 2244,1,0,0,0,2246,2245,1,0,0,0,2247,2249,1,0,0,0,2248,2239,1,0,0, - 0,2248,2249,1,0,0,0,2249,2252,1,0,0,0,2250,2251,5,543,0,0,2251,2253, - 3,818,409,0,2252,2250,1,0,0,0,2252,2253,1,0,0,0,2253,2255,1,0,0, - 0,2254,2256,3,98,49,0,2255,2254,1,0,0,0,2255,2256,1,0,0,0,2256,2259, - 1,0,0,0,2257,2258,5,105,0,0,2258,2260,5,280,0,0,2259,2257,1,0,0, - 0,2259,2260,1,0,0,0,2260,2264,1,0,0,0,2261,2263,3,134,67,0,2262, - 2261,1,0,0,0,2263,2266,1,0,0,0,2264,2262,1,0,0,0,2264,2265,1,0,0, - 0,2265,133,1,0,0,0,2266,2264,1,0,0,0,2267,2268,5,45,0,0,2268,2270, - 3,818,409,0,2269,2267,1,0,0,0,2269,2270,1,0,0,0,2270,2271,1,0,0, - 0,2271,2276,3,136,68,0,2272,2274,5,77,0,0,2273,2272,1,0,0,0,2273, - 2274,1,0,0,0,2274,2275,1,0,0,0,2275,2277,5,54,0,0,2276,2273,1,0, - 0,0,2276,2277,1,0,0,0,2277,2280,1,0,0,0,2278,2279,5,69,0,0,2279, - 2281,7,9,0,0,2280,2278,1,0,0,0,2280,2281,1,0,0,0,2281,135,1,0,0, - 0,2282,2284,5,77,0,0,2283,2282,1,0,0,0,2283,2284,1,0,0,0,2284,2285, - 1,0,0,0,2285,2363,5,78,0,0,2286,2288,5,98,0,0,2287,2289,3,400,200, - 0,2288,2287,1,0,0,0,2288,2289,1,0,0,0,2289,2291,1,0,0,0,2290,2292, - 3,178,89,0,2291,2290,1,0,0,0,2291,2292,1,0,0,0,2292,2363,1,0,0,0, - 2293,2299,5,98,0,0,2294,2296,5,273,0,0,2295,2297,5,77,0,0,2296,2295, - 1,0,0,0,2296,2297,1,0,0,0,2297,2298,1,0,0,0,2298,2300,5,56,0,0,2299, - 2294,1,0,0,0,2299,2300,1,0,0,0,2300,2303,1,0,0,0,2301,2302,5,441, - 0,0,2302,2304,3,360,180,0,2303,2301,1,0,0,0,2303,2304,1,0,0,0,2304, - 2306,1,0,0,0,2305,2307,3,572,286,0,2306,2305,1,0,0,0,2306,2307,1, - 0,0,0,2307,2309,1,0,0,0,2308,2310,3,178,89,0,2309,2308,1,0,0,0,2309, - 2310,1,0,0,0,2310,2363,1,0,0,0,2311,2312,5,85,0,0,2312,2314,5,245, - 0,0,2313,2315,3,400,200,0,2314,2313,1,0,0,0,2314,2315,1,0,0,0,2315, - 2317,1,0,0,0,2316,2318,3,178,89,0,2317,2316,1,0,0,0,2317,2318,1, - 0,0,0,2318,2363,1,0,0,0,2319,2320,5,42,0,0,2320,2321,5,2,0,0,2321, - 2322,3,674,337,0,2322,2325,5,3,0,0,2323,2324,5,269,0,0,2324,2326, - 5,228,0,0,2325,2323,1,0,0,0,2325,2326,1,0,0,0,2326,2363,1,0,0,0, - 2327,2328,5,53,0,0,2328,2363,3,682,341,0,2329,2330,5,438,0,0,2330, - 2331,3,138,69,0,2331,2348,5,36,0,0,2332,2341,5,219,0,0,2333,2335, - 5,2,0,0,2334,2336,3,200,100,0,2335,2334,1,0,0,0,2336,2337,1,0,0, - 0,2337,2335,1,0,0,0,2337,2338,1,0,0,0,2338,2339,1,0,0,0,2339,2340, - 5,3,0,0,2340,2342,1,0,0,0,2341,2333,1,0,0,0,2341,2342,1,0,0,0,2342, - 2349,1,0,0,0,2343,2344,5,2,0,0,2344,2345,3,674,337,0,2345,2346,5, - 3,0,0,2346,2347,5,440,0,0,2347,2349,1,0,0,0,2348,2332,1,0,0,0,2348, - 2343,1,0,0,0,2349,2363,1,0,0,0,2350,2351,5,86,0,0,2351,2353,3,780, - 390,0,2352,2354,3,144,72,0,2353,2352,1,0,0,0,2353,2354,1,0,0,0,2354, - 2356,1,0,0,0,2355,2357,3,152,76,0,2356,2355,1,0,0,0,2356,2357,1, - 0,0,0,2357,2359,1,0,0,0,2358,2360,3,156,78,0,2359,2358,1,0,0,0,2359, - 2360,1,0,0,0,2360,2363,1,0,0,0,2361,2363,3,98,49,0,2362,2283,1,0, - 0,0,2362,2286,1,0,0,0,2362,2293,1,0,0,0,2362,2311,1,0,0,0,2362,2319, - 1,0,0,0,2362,2327,1,0,0,0,2362,2329,1,0,0,0,2362,2350,1,0,0,0,2362, - 2361,1,0,0,0,2363,137,1,0,0,0,2364,2368,5,139,0,0,2365,2366,5,147, - 0,0,2366,2368,5,53,0,0,2367,2364,1,0,0,0,2367,2365,1,0,0,0,2368, - 139,1,0,0,0,2369,2370,7,23,0,0,2370,141,1,0,0,0,2371,2372,5,42,0, - 0,2372,2373,5,2,0,0,2373,2374,3,674,337,0,2374,2378,5,3,0,0,2375, - 2377,3,272,136,0,2376,2375,1,0,0,0,2377,2380,1,0,0,0,2378,2376,1, - 0,0,0,2378,2379,1,0,0,0,2379,2468,1,0,0,0,2380,2378,1,0,0,0,2381, - 2385,5,98,0,0,2382,2383,5,85,0,0,2383,2385,5,245,0,0,2384,2381,1, - 0,0,0,2384,2382,1,0,0,0,2385,2409,1,0,0,0,2386,2388,3,144,72,0,2387, - 2389,3,150,75,0,2388,2387,1,0,0,0,2388,2389,1,0,0,0,2389,2391,1, - 0,0,0,2390,2392,3,400,200,0,2391,2390,1,0,0,0,2391,2392,1,0,0,0, - 2392,2394,1,0,0,0,2393,2395,3,178,89,0,2394,2393,1,0,0,0,2394,2395, - 1,0,0,0,2395,2399,1,0,0,0,2396,2398,3,272,136,0,2397,2396,1,0,0, - 0,2398,2401,1,0,0,0,2399,2397,1,0,0,0,2399,2400,1,0,0,0,2400,2410, - 1,0,0,0,2401,2399,1,0,0,0,2402,2406,3,180,90,0,2403,2405,3,272,136, - 0,2404,2403,1,0,0,0,2405,2408,1,0,0,0,2406,2404,1,0,0,0,2406,2407, - 1,0,0,0,2407,2410,1,0,0,0,2408,2406,1,0,0,0,2409,2386,1,0,0,0,2409, - 2402,1,0,0,0,2410,2468,1,0,0,0,2411,2413,5,199,0,0,2412,2414,3,170, - 85,0,2413,2412,1,0,0,0,2413,2414,1,0,0,0,2414,2415,1,0,0,0,2415, - 2416,5,2,0,0,2416,2421,3,154,77,0,2417,2418,5,6,0,0,2418,2420,3, - 154,77,0,2419,2417,1,0,0,0,2420,2423,1,0,0,0,2421,2419,1,0,0,0,2421, - 2422,1,0,0,0,2422,2424,1,0,0,0,2423,2421,1,0,0,0,2424,2426,5,3,0, - 0,2425,2427,3,150,75,0,2426,2425,1,0,0,0,2426,2427,1,0,0,0,2427, - 2429,1,0,0,0,2428,2430,3,400,200,0,2429,2428,1,0,0,0,2429,2430,1, - 0,0,0,2430,2432,1,0,0,0,2431,2433,3,178,89,0,2432,2431,1,0,0,0,2432, - 2433,1,0,0,0,2433,2439,1,0,0,0,2434,2435,5,103,0,0,2435,2436,5,2, - 0,0,2436,2437,3,674,337,0,2437,2438,5,3,0,0,2438,2440,1,0,0,0,2439, - 2434,1,0,0,0,2439,2440,1,0,0,0,2440,2444,1,0,0,0,2441,2443,3,272, - 136,0,2442,2441,1,0,0,0,2443,2446,1,0,0,0,2444,2442,1,0,0,0,2444, - 2445,1,0,0,0,2445,2468,1,0,0,0,2446,2444,1,0,0,0,2447,2448,5,63, - 0,0,2448,2449,5,245,0,0,2449,2450,3,144,72,0,2450,2451,5,86,0,0, - 2451,2453,3,780,390,0,2452,2454,3,144,72,0,2453,2452,1,0,0,0,2453, - 2454,1,0,0,0,2454,2456,1,0,0,0,2455,2457,3,152,76,0,2456,2455,1, - 0,0,0,2456,2457,1,0,0,0,2457,2459,1,0,0,0,2458,2460,3,156,78,0,2459, - 2458,1,0,0,0,2459,2460,1,0,0,0,2460,2464,1,0,0,0,2461,2463,3,272, - 136,0,2462,2461,1,0,0,0,2463,2466,1,0,0,0,2464,2462,1,0,0,0,2464, - 2465,1,0,0,0,2465,2468,1,0,0,0,2466,2464,1,0,0,0,2467,2371,1,0,0, - 0,2467,2384,1,0,0,0,2467,2411,1,0,0,0,2467,2447,1,0,0,0,2468,143, - 1,0,0,0,2469,2470,5,2,0,0,2470,2471,3,148,74,0,2471,2472,5,3,0,0, - 2472,145,1,0,0,0,2473,2474,5,2,0,0,2474,2479,3,802,401,0,2475,2476, - 5,6,0,0,2476,2478,3,802,401,0,2477,2475,1,0,0,0,2478,2481,1,0,0, - 0,2479,2477,1,0,0,0,2479,2480,1,0,0,0,2480,2482,1,0,0,0,2481,2479, - 1,0,0,0,2482,2483,5,3,0,0,2483,147,1,0,0,0,2484,2489,3,800,400,0, - 2485,2486,5,6,0,0,2486,2488,3,800,400,0,2487,2485,1,0,0,0,2488,2491, - 1,0,0,0,2489,2487,1,0,0,0,2489,2490,1,0,0,0,2490,149,1,0,0,0,2491, - 2489,1,0,0,0,2492,2493,5,441,0,0,2493,2494,3,144,72,0,2494,151,1, - 0,0,0,2495,2496,5,258,0,0,2496,2497,7,24,0,0,2497,153,1,0,0,0,2498, - 2499,3,362,181,0,2499,2506,5,105,0,0,2500,2507,3,414,207,0,2501, - 2502,5,278,0,0,2502,2503,5,2,0,0,2503,2504,3,414,207,0,2504,2505, - 5,3,0,0,2505,2507,1,0,0,0,2506,2500,1,0,0,0,2506,2501,1,0,0,0,2507, - 155,1,0,0,0,2508,2510,3,158,79,0,2509,2511,3,160,80,0,2510,2509, - 1,0,0,0,2510,2511,1,0,0,0,2511,2517,1,0,0,0,2512,2514,3,160,80,0, - 2513,2515,3,158,79,0,2514,2513,1,0,0,0,2514,2515,1,0,0,0,2515,2517, - 1,0,0,0,2516,2508,1,0,0,0,2516,2512,1,0,0,0,2517,157,1,0,0,0,2518, - 2519,5,80,0,0,2519,2520,5,369,0,0,2520,2521,3,162,81,0,2521,159, - 1,0,0,0,2522,2523,5,80,0,0,2523,2524,5,182,0,0,2524,2525,3,162,81, - 0,2525,161,1,0,0,0,2526,2527,5,269,0,0,2527,2536,5,132,0,0,2528, - 2536,5,315,0,0,2529,2536,5,150,0,0,2530,2531,5,333,0,0,2531,2533, - 7,25,0,0,2532,2534,3,148,74,0,2533,2532,1,0,0,0,2533,2534,1,0,0, - 0,2534,2536,1,0,0,0,2535,2526,1,0,0,0,2535,2528,1,0,0,0,2535,2529, - 1,0,0,0,2535,2530,1,0,0,0,2536,163,1,0,0,0,2537,2538,5,238,0,0,2538, - 2539,5,2,0,0,2539,2540,3,760,380,0,2540,2541,5,3,0,0,2541,165,1, - 0,0,0,2542,2543,5,285,0,0,2543,2544,5,147,0,0,2544,2545,3,818,409, - 0,2545,2546,5,2,0,0,2546,2551,3,168,84,0,2547,2548,5,6,0,0,2548, - 2550,3,168,84,0,2549,2547,1,0,0,0,2550,2553,1,0,0,0,2551,2549,1, - 0,0,0,2551,2552,1,0,0,0,2552,2554,1,0,0,0,2553,2551,1,0,0,0,2554, - 2555,5,3,0,0,2555,167,1,0,0,0,2556,2563,3,800,400,0,2557,2563,3, - 688,344,0,2558,2559,5,2,0,0,2559,2560,3,674,337,0,2560,2561,5,3, - 0,0,2561,2563,1,0,0,0,2562,2556,1,0,0,0,2562,2557,1,0,0,0,2562,2558, - 1,0,0,0,2563,2565,1,0,0,0,2564,2566,3,98,49,0,2565,2564,1,0,0,0, - 2565,2566,1,0,0,0,2566,2568,1,0,0,0,2567,2569,3,316,158,0,2568,2567, - 1,0,0,0,2568,2569,1,0,0,0,2569,169,1,0,0,0,2570,2571,5,100,0,0,2571, - 2572,3,818,409,0,2572,171,1,0,0,0,2573,2574,5,105,0,0,2574,2578, - 3,100,50,0,2575,2576,7,26,0,0,2576,2578,5,277,0,0,2577,2573,1,0, - 0,0,2577,2575,1,0,0,0,2578,173,1,0,0,0,2579,2580,5,80,0,0,2580,2586, - 5,161,0,0,2581,2587,5,191,0,0,2582,2583,5,182,0,0,2583,2587,5,320, - 0,0,2584,2585,5,292,0,0,2585,2587,5,320,0,0,2586,2581,1,0,0,0,2586, - 2582,1,0,0,0,2586,2584,1,0,0,0,2587,175,1,0,0,0,2588,2589,5,351, - 0,0,2589,2590,3,770,385,0,2590,177,1,0,0,0,2591,2592,5,100,0,0,2592, - 2593,5,226,0,0,2593,2594,3,176,88,0,2594,179,1,0,0,0,2595,2596,5, - 100,0,0,2596,2597,5,226,0,0,2597,2598,3,818,409,0,2598,181,1,0,0, - 0,2599,2600,5,46,0,0,2600,2605,5,342,0,0,2601,2603,3,294,147,0,2602, - 2601,1,0,0,0,2602,2603,1,0,0,0,2603,2604,1,0,0,0,2604,2606,3,316, - 158,0,2605,2602,1,0,0,0,2605,2606,1,0,0,0,2606,2608,1,0,0,0,2607, - 2609,3,144,72,0,2608,2607,1,0,0,0,2608,2609,1,0,0,0,2609,2610,1, - 0,0,0,2610,2620,5,80,0,0,2611,2616,3,732,366,0,2612,2613,5,6,0,0, - 2613,2615,3,732,366,0,2614,2612,1,0,0,0,2615,2618,1,0,0,0,2616,2614, - 1,0,0,0,2616,2617,1,0,0,0,2617,2621,1,0,0,0,2618,2616,1,0,0,0,2619, - 2621,3,730,365,0,2620,2611,1,0,0,0,2620,2619,1,0,0,0,2621,2622,1, - 0,0,0,2622,2623,3,610,305,0,2623,183,1,0,0,0,2624,2625,5,138,0,0, - 2625,2627,5,342,0,0,2626,2628,3,422,211,0,2627,2626,1,0,0,0,2627, - 2628,1,0,0,0,2628,2629,1,0,0,0,2629,2630,3,316,158,0,2630,2631,5, - 333,0,0,2631,2632,5,342,0,0,2632,2633,3,812,406,0,2633,185,1,0,0, - 0,2634,2636,5,46,0,0,2635,2637,3,122,61,0,2636,2635,1,0,0,0,2636, - 2637,1,0,0,0,2637,2638,1,0,0,0,2638,2640,5,92,0,0,2639,2641,3,294, - 147,0,2640,2639,1,0,0,0,2640,2641,1,0,0,0,2641,2642,1,0,0,0,2642, - 2643,3,188,94,0,2643,2644,5,36,0,0,2644,2646,3,560,280,0,2645,2647, - 3,190,95,0,2646,2645,1,0,0,0,2646,2647,1,0,0,0,2647,187,1,0,0,0, - 2648,2650,3,772,386,0,2649,2651,3,146,73,0,2650,2649,1,0,0,0,2650, - 2651,1,0,0,0,2651,2653,1,0,0,0,2652,2654,3,170,85,0,2653,2652,1, - 0,0,0,2653,2654,1,0,0,0,2654,2656,1,0,0,0,2655,2657,3,172,86,0,2656, - 2655,1,0,0,0,2656,2657,1,0,0,0,2657,2659,1,0,0,0,2658,2660,3,174, - 87,0,2659,2658,1,0,0,0,2659,2660,1,0,0,0,2660,2662,1,0,0,0,2661, - 2663,3,176,88,0,2662,2661,1,0,0,0,2662,2663,1,0,0,0,2663,189,1,0, - 0,0,2664,2668,5,105,0,0,2665,2669,5,174,0,0,2666,2667,5,269,0,0, - 2667,2669,5,174,0,0,2668,2665,1,0,0,0,2668,2666,1,0,0,0,2669,191, - 1,0,0,0,2670,2672,5,46,0,0,2671,2673,5,367,0,0,2672,2671,1,0,0,0, - 2672,2673,1,0,0,0,2673,2674,1,0,0,0,2674,2675,5,259,0,0,2675,2677, - 5,376,0,0,2676,2678,3,294,147,0,2677,2676,1,0,0,0,2677,2678,1,0, - 0,0,2678,2679,1,0,0,0,2679,2681,3,776,388,0,2680,2682,3,146,73,0, - 2681,2680,1,0,0,0,2681,2682,1,0,0,0,2682,2684,1,0,0,0,2683,2685, - 3,170,85,0,2684,2683,1,0,0,0,2684,2685,1,0,0,0,2685,2687,1,0,0,0, - 2686,2688,3,102,51,0,2687,2686,1,0,0,0,2687,2688,1,0,0,0,2688,2690, - 1,0,0,0,2689,2691,3,176,88,0,2690,2689,1,0,0,0,2690,2691,1,0,0,0, - 2691,2692,1,0,0,0,2692,2693,5,36,0,0,2693,2695,3,560,280,0,2694, - 2696,3,190,95,0,2695,2694,1,0,0,0,2695,2696,1,0,0,0,2696,193,1,0, - 0,0,2697,2698,5,305,0,0,2698,2699,5,259,0,0,2699,2701,5,376,0,0, - 2700,2702,5,109,0,0,2701,2700,1,0,0,0,2701,2702,1,0,0,0,2702,2703, - 1,0,0,0,2703,2705,3,778,389,0,2704,2706,3,190,95,0,2705,2704,1,0, - 0,0,2705,2706,1,0,0,0,2706,195,1,0,0,0,2707,2709,5,46,0,0,2708,2710, - 3,122,61,0,2709,2708,1,0,0,0,2709,2710,1,0,0,0,2710,2711,1,0,0,0, - 2711,2713,5,328,0,0,2712,2714,3,294,147,0,2713,2712,1,0,0,0,2713, - 2714,1,0,0,0,2714,2715,1,0,0,0,2715,2721,3,780,390,0,2716,2718,3, - 200,100,0,2717,2716,1,0,0,0,2718,2719,1,0,0,0,2719,2717,1,0,0,0, - 2719,2720,1,0,0,0,2720,2722,1,0,0,0,2721,2717,1,0,0,0,2721,2722, - 1,0,0,0,2722,197,1,0,0,0,2723,2724,5,138,0,0,2724,2726,5,328,0,0, - 2725,2727,3,422,211,0,2726,2725,1,0,0,0,2726,2727,1,0,0,0,2727,2728, - 1,0,0,0,2728,2730,3,780,390,0,2729,2731,3,200,100,0,2730,2729,1, - 0,0,0,2731,2732,1,0,0,0,2732,2730,1,0,0,0,2732,2733,1,0,0,0,2733, - 199,1,0,0,0,2734,2735,5,36,0,0,2735,2768,3,654,327,0,2736,2738,5, - 148,0,0,2737,2739,3,202,101,0,2738,2737,1,0,0,0,2738,2739,1,0,0, - 0,2739,2768,1,0,0,0,2740,2742,5,225,0,0,2741,2743,5,147,0,0,2742, - 2741,1,0,0,0,2742,2743,1,0,0,0,2743,2744,1,0,0,0,2744,2768,3,202, - 101,0,2745,2746,7,27,0,0,2746,2768,3,202,101,0,2747,2748,5,269,0, - 0,2748,2768,7,28,0,0,2749,2750,5,281,0,0,2750,2751,5,147,0,0,2751, - 2768,3,800,400,0,2752,2753,5,328,0,0,2753,2754,5,266,0,0,2754,2768, - 3,316,158,0,2755,2757,5,340,0,0,2756,2758,5,105,0,0,2757,2756,1, - 0,0,0,2757,2758,1,0,0,0,2758,2759,1,0,0,0,2759,2768,3,202,101,0, - 2760,2762,5,314,0,0,2761,2763,5,105,0,0,2762,2761,1,0,0,0,2762,2763, - 1,0,0,0,2763,2765,1,0,0,0,2764,2766,3,202,101,0,2765,2764,1,0,0, - 0,2765,2766,1,0,0,0,2766,2768,1,0,0,0,2767,2734,1,0,0,0,2767,2736, - 1,0,0,0,2767,2740,1,0,0,0,2767,2745,1,0,0,0,2767,2747,1,0,0,0,2767, - 2749,1,0,0,0,2767,2752,1,0,0,0,2767,2755,1,0,0,0,2767,2760,1,0,0, - 0,2768,201,1,0,0,0,2769,2771,7,29,0,0,2770,2769,1,0,0,0,2770,2771, - 1,0,0,0,2771,2772,1,0,0,0,2772,2775,5,573,0,0,2773,2775,3,812,406, - 0,2774,2770,1,0,0,0,2774,2773,1,0,0,0,2775,203,1,0,0,0,2776,2778, - 5,46,0,0,2777,2779,3,366,183,0,2778,2777,1,0,0,0,2778,2779,1,0,0, - 0,2779,2781,1,0,0,0,2780,2782,5,359,0,0,2781,2780,1,0,0,0,2781,2782, - 1,0,0,0,2782,2784,1,0,0,0,2783,2785,5,295,0,0,2784,2783,1,0,0,0, - 2784,2785,1,0,0,0,2785,2786,1,0,0,0,2786,2787,5,247,0,0,2787,2800, - 3,818,409,0,2788,2789,5,215,0,0,2789,2792,3,316,158,0,2790,2791, - 5,239,0,0,2791,2793,3,316,158,0,2792,2790,1,0,0,0,2792,2793,1,0, - 0,0,2793,2798,1,0,0,0,2794,2795,5,373,0,0,2795,2799,3,316,158,0, - 2796,2797,5,269,0,0,2797,2799,5,373,0,0,2798,2794,1,0,0,0,2798,2796, - 1,0,0,0,2798,2799,1,0,0,0,2799,2801,1,0,0,0,2800,2788,1,0,0,0,2800, - 2801,1,0,0,0,2801,205,1,0,0,0,2802,2803,5,46,0,0,2803,2806,3,176, - 88,0,2804,2805,5,282,0,0,2805,2807,3,814,407,0,2806,2804,1,0,0,0, - 2806,2807,1,0,0,0,2807,2808,1,0,0,0,2808,2809,5,255,0,0,2809,2811, - 3,808,404,0,2810,2812,3,102,51,0,2811,2810,1,0,0,0,2811,2812,1,0, - 0,0,2812,207,1,0,0,0,2813,2814,5,46,0,0,2814,2816,5,204,0,0,2815, - 2817,3,294,147,0,2816,2815,1,0,0,0,2816,2817,1,0,0,0,2817,2818,1, - 0,0,0,2818,2820,3,818,409,0,2819,2821,5,105,0,0,2820,2819,1,0,0, - 0,2820,2821,1,0,0,0,2821,2829,1,0,0,0,2822,2823,5,323,0,0,2823,2828, - 3,790,395,0,2824,2825,7,30,0,0,2825,2828,3,58,29,0,2826,2828,5,150, - 0,0,2827,2822,1,0,0,0,2827,2824,1,0,0,0,2827,2826,1,0,0,0,2828,2831, - 1,0,0,0,2829,2827,1,0,0,0,2829,2830,1,0,0,0,2830,209,1,0,0,0,2831, - 2829,1,0,0,0,2832,2833,5,138,0,0,2833,2834,5,204,0,0,2834,2835,3, - 818,409,0,2835,2840,5,369,0,0,2836,2837,5,94,0,0,2837,2839,3,58, - 29,0,2838,2836,1,0,0,0,2839,2842,1,0,0,0,2840,2838,1,0,0,0,2840, - 2841,1,0,0,0,2841,211,1,0,0,0,2842,2840,1,0,0,0,2843,2844,5,138, - 0,0,2844,2845,5,204,0,0,2845,2846,3,818,409,0,2846,2879,7,6,0,0, - 2847,2848,5,443,0,0,2848,2849,5,62,0,0,2849,2850,3,652,326,0,2850, - 2851,5,247,0,0,2851,2852,3,818,409,0,2852,2880,1,0,0,0,2853,2854, - 5,442,0,0,2854,2880,3,374,187,0,2855,2856,5,296,0,0,2856,2880,3, - 378,189,0,2857,2858,5,278,0,0,2858,2859,7,31,0,0,2859,2860,3,316, - 158,0,2860,2861,3,170,85,0,2861,2880,1,0,0,0,2862,2863,5,278,0,0, - 2863,2880,3,416,208,0,2864,2865,5,211,0,0,2865,2880,3,382,191,0, - 2866,2867,7,32,0,0,2867,2880,3,652,326,0,2868,2869,5,41,0,0,2869, - 2870,5,2,0,0,2870,2871,3,652,326,0,2871,2872,5,36,0,0,2872,2873, - 3,652,326,0,2873,2874,5,3,0,0,2874,2880,1,0,0,0,2875,2876,5,136, - 0,0,2876,2880,3,394,197,0,2877,2880,3,312,156,0,2878,2880,3,310, - 155,0,2879,2847,1,0,0,0,2879,2853,1,0,0,0,2879,2855,1,0,0,0,2879, - 2857,1,0,0,0,2879,2862,1,0,0,0,2879,2864,1,0,0,0,2879,2866,1,0,0, - 0,2879,2868,1,0,0,0,2879,2875,1,0,0,0,2879,2877,1,0,0,0,2879,2878, - 1,0,0,0,2880,213,1,0,0,0,2881,2882,5,46,0,0,2882,2883,5,63,0,0,2883, - 2884,5,174,0,0,2884,2885,5,381,0,0,2885,2891,3,818,409,0,2886,2888, - 3,216,108,0,2887,2886,1,0,0,0,2888,2889,1,0,0,0,2889,2887,1,0,0, - 0,2889,2890,1,0,0,0,2890,2892,1,0,0,0,2891,2887,1,0,0,0,2891,2892, - 1,0,0,0,2892,2894,1,0,0,0,2893,2895,3,220,110,0,2894,2893,1,0,0, - 0,2894,2895,1,0,0,0,2895,215,1,0,0,0,2896,2898,7,33,0,0,2897,2899, - 3,316,158,0,2898,2897,1,0,0,0,2898,2899,1,0,0,0,2899,2903,1,0,0, - 0,2900,2901,5,269,0,0,2901,2903,7,33,0,0,2902,2896,1,0,0,0,2902, - 2900,1,0,0,0,2903,217,1,0,0,0,2904,2905,5,138,0,0,2905,2906,5,63, - 0,0,2906,2907,5,174,0,0,2907,2908,5,381,0,0,2908,2922,3,818,409, - 0,2909,2911,3,216,108,0,2910,2909,1,0,0,0,2911,2912,1,0,0,0,2912, - 2910,1,0,0,0,2912,2913,1,0,0,0,2913,2915,1,0,0,0,2914,2910,1,0,0, - 0,2914,2915,1,0,0,0,2915,2916,1,0,0,0,2916,2923,3,222,111,0,2917, - 2919,3,216,108,0,2918,2917,1,0,0,0,2919,2920,1,0,0,0,2920,2918,1, - 0,0,0,2920,2921,1,0,0,0,2921,2923,1,0,0,0,2922,2914,1,0,0,0,2922, - 2918,1,0,0,0,2923,219,1,0,0,0,2924,2925,5,280,0,0,2925,2926,5,2, - 0,0,2926,2931,3,226,113,0,2927,2928,5,6,0,0,2928,2930,3,226,113, - 0,2929,2927,1,0,0,0,2930,2933,1,0,0,0,2931,2929,1,0,0,0,2931,2932, - 1,0,0,0,2932,2934,1,0,0,0,2933,2931,1,0,0,0,2934,2935,5,3,0,0,2935, - 221,1,0,0,0,2936,2937,5,280,0,0,2937,2938,5,2,0,0,2938,2943,3,224, - 112,0,2939,2940,5,6,0,0,2940,2942,3,224,112,0,2941,2939,1,0,0,0, - 2942,2945,1,0,0,0,2943,2941,1,0,0,0,2943,2944,1,0,0,0,2944,2946, - 1,0,0,0,2945,2943,1,0,0,0,2946,2947,5,3,0,0,2947,223,1,0,0,0,2948, - 2949,7,34,0,0,2949,2950,3,226,113,0,2950,225,1,0,0,0,2951,2952,3, - 824,412,0,2952,2953,3,808,404,0,2953,227,1,0,0,0,2954,2955,5,46, - 0,0,2955,2957,5,331,0,0,2956,2958,3,294,147,0,2957,2956,1,0,0,0, - 2957,2958,1,0,0,0,2958,2959,1,0,0,0,2959,2962,3,818,409,0,2960,2961, - 5,360,0,0,2961,2963,3,808,404,0,2962,2960,1,0,0,0,2962,2963,1,0, - 0,0,2963,2965,1,0,0,0,2964,2966,3,230,115,0,2965,2964,1,0,0,0,2965, - 2966,1,0,0,0,2966,2967,1,0,0,0,2967,2968,5,63,0,0,2968,2969,5,174, - 0,0,2969,2970,5,381,0,0,2970,2972,3,818,409,0,2971,2973,3,220,110, - 0,2972,2971,1,0,0,0,2972,2973,1,0,0,0,2973,229,1,0,0,0,2974,2977, - 5,375,0,0,2975,2978,3,808,404,0,2976,2978,5,78,0,0,2977,2975,1,0, - 0,0,2977,2976,1,0,0,0,2978,231,1,0,0,0,2979,2980,5,138,0,0,2980, - 2981,5,331,0,0,2981,2987,3,818,409,0,2982,2988,3,222,111,0,2983, - 2985,3,230,115,0,2984,2986,3,222,111,0,2985,2984,1,0,0,0,2985,2986, - 1,0,0,0,2986,2988,1,0,0,0,2987,2982,1,0,0,0,2987,2983,1,0,0,0,2988, - 233,1,0,0,0,2989,2990,5,46,0,0,2990,2991,5,63,0,0,2991,2993,5,92, - 0,0,2992,2994,3,294,147,0,2993,2992,1,0,0,0,2993,2994,1,0,0,0,2994, - 2995,1,0,0,0,2995,2996,3,772,386,0,2996,2998,5,2,0,0,2997,2999,3, - 126,63,0,2998,2997,1,0,0,0,2998,2999,1,0,0,0,2999,3000,1,0,0,0,3000, - 3002,5,3,0,0,3001,3003,3,164,82,0,3002,3001,1,0,0,0,3002,3003,1, - 0,0,0,3003,3004,1,0,0,0,3004,3005,5,331,0,0,3005,3007,3,818,409, - 0,3006,3008,3,220,110,0,3007,3006,1,0,0,0,3007,3008,1,0,0,0,3008, - 3029,1,0,0,0,3009,3010,5,46,0,0,3010,3011,5,63,0,0,3011,3013,5,92, - 0,0,3012,3014,3,294,147,0,3013,3012,1,0,0,0,3013,3014,1,0,0,0,3014, - 3015,1,0,0,0,3015,3016,3,772,386,0,3016,3017,5,285,0,0,3017,3018, - 5,275,0,0,3018,3020,3,774,387,0,3019,3021,3,124,62,0,3020,3019,1, - 0,0,0,3020,3021,1,0,0,0,3021,3022,1,0,0,0,3022,3023,3,106,53,0,3023, - 3024,5,331,0,0,3024,3026,3,818,409,0,3025,3027,3,220,110,0,3026, - 3025,1,0,0,0,3026,3027,1,0,0,0,3027,3029,1,0,0,0,3028,2989,1,0,0, - 0,3028,3009,1,0,0,0,3029,235,1,0,0,0,3030,3031,5,444,0,0,3031,3032, - 5,63,0,0,3032,3033,5,323,0,0,3033,3043,3,790,395,0,3034,3035,5,74, - 0,0,3035,3038,5,94,0,0,3036,3038,5,59,0,0,3037,3034,1,0,0,0,3037, - 3036,1,0,0,0,3038,3039,1,0,0,0,3039,3040,5,2,0,0,3040,3041,3,628, - 314,0,3041,3042,5,3,0,0,3042,3044,1,0,0,0,3043,3037,1,0,0,0,3043, - 3044,1,0,0,0,3044,3045,1,0,0,0,3045,3046,5,64,0,0,3046,3047,5,331, - 0,0,3047,3048,3,818,409,0,3048,3049,5,71,0,0,3049,3051,3,818,409, - 0,3050,3052,3,220,110,0,3051,3050,1,0,0,0,3051,3052,1,0,0,0,3052, - 237,1,0,0,0,3053,3054,5,46,0,0,3054,3055,5,99,0,0,3055,3057,5,257, - 0,0,3056,3058,3,294,147,0,3057,3056,1,0,0,0,3057,3058,1,0,0,0,3058, - 3059,1,0,0,0,3059,3062,5,62,0,0,3060,3063,3,814,407,0,3061,3063, - 5,99,0,0,3062,3060,1,0,0,0,3062,3061,1,0,0,0,3063,3064,1,0,0,0,3064, - 3065,5,331,0,0,3065,3067,3,818,409,0,3066,3068,3,220,110,0,3067, - 3066,1,0,0,0,3067,3068,1,0,0,0,3068,239,1,0,0,0,3069,3070,5,138, - 0,0,3070,3071,5,99,0,0,3071,3072,5,257,0,0,3072,3075,5,62,0,0,3073, - 3076,3,814,407,0,3074,3076,5,99,0,0,3075,3073,1,0,0,0,3075,3074, - 1,0,0,0,3076,3077,1,0,0,0,3077,3078,5,331,0,0,3078,3079,3,818,409, - 0,3079,3080,3,222,111,0,3080,241,1,0,0,0,3081,3082,5,46,0,0,3082, - 3083,5,445,0,0,3083,3084,3,818,409,0,3084,3085,5,80,0,0,3085,3092, - 3,780,390,0,3086,3090,5,36,0,0,3087,3091,5,541,0,0,3088,3091,5,542, - 0,0,3089,3091,3,826,413,0,3090,3087,1,0,0,0,3090,3088,1,0,0,0,3090, - 3089,1,0,0,0,3091,3093,1,0,0,0,3092,3086,1,0,0,0,3092,3093,1,0,0, - 0,3093,3096,1,0,0,0,3094,3095,5,62,0,0,3095,3097,7,35,0,0,3096,3094, - 1,0,0,0,3096,3097,1,0,0,0,3097,3100,1,0,0,0,3098,3099,5,94,0,0,3099, - 3101,3,816,408,0,3100,3098,1,0,0,0,3100,3101,1,0,0,0,3101,3103,1, - 0,0,0,3102,3104,3,250,125,0,3103,3102,1,0,0,0,3103,3104,1,0,0,0, - 3104,3106,1,0,0,0,3105,3107,3,252,126,0,3106,3105,1,0,0,0,3106,3107, - 1,0,0,0,3107,243,1,0,0,0,3108,3109,5,138,0,0,3109,3110,5,445,0,0, - 3110,3111,3,818,409,0,3111,3112,5,80,0,0,3112,3115,3,780,390,0,3113, - 3114,5,94,0,0,3114,3116,3,816,408,0,3115,3113,1,0,0,0,3115,3116, - 1,0,0,0,3116,3118,1,0,0,0,3117,3119,3,250,125,0,3118,3117,1,0,0, - 0,3118,3119,1,0,0,0,3119,3121,1,0,0,0,3120,3122,3,252,126,0,3121, - 3120,1,0,0,0,3121,3122,1,0,0,0,3122,245,1,0,0,0,3123,3124,5,138, - 0,0,3124,3125,5,296,0,0,3125,3127,3,796,398,0,3126,3128,3,368,184, - 0,3127,3126,1,0,0,0,3127,3128,1,0,0,0,3128,3155,1,0,0,0,3129,3133, - 3,248,124,0,3130,3132,3,248,124,0,3131,3130,1,0,0,0,3132,3135,1, - 0,0,0,3133,3131,1,0,0,0,3133,3134,1,0,0,0,3134,3137,1,0,0,0,3135, - 3133,1,0,0,0,3136,3138,5,315,0,0,3137,3136,1,0,0,0,3137,3138,1,0, - 0,0,3138,3156,1,0,0,0,3139,3140,5,309,0,0,3140,3141,5,94,0,0,3141, - 3156,3,798,399,0,3142,3143,5,282,0,0,3143,3144,5,94,0,0,3144,3156, - 3,814,407,0,3145,3146,5,333,0,0,3146,3147,5,323,0,0,3147,3156,3, - 32,16,0,3148,3150,5,269,0,0,3149,3148,1,0,0,0,3149,3150,1,0,0,0, - 3150,3151,1,0,0,0,3151,3152,5,462,0,0,3152,3153,5,80,0,0,3153,3154, - 5,204,0,0,3154,3156,3,818,409,0,3155,3129,1,0,0,0,3155,3139,1,0, - 0,0,3155,3142,1,0,0,0,3155,3145,1,0,0,0,3155,3149,1,0,0,0,3156,247, - 1,0,0,0,3157,3159,5,205,0,0,3158,3157,1,0,0,0,3158,3159,1,0,0,0, - 3159,3160,1,0,0,0,3160,3161,5,327,0,0,3161,3168,5,243,0,0,3162,3164, - 5,205,0,0,3163,3162,1,0,0,0,3163,3164,1,0,0,0,3164,3165,1,0,0,0, - 3165,3166,5,327,0,0,3166,3168,5,181,0,0,3167,3158,1,0,0,0,3167,3163, - 1,0,0,0,3168,3187,1,0,0,0,3169,3170,5,333,0,0,3170,3171,3,818,409, - 0,3171,3174,7,36,0,0,3172,3175,3,818,409,0,3173,3175,5,53,0,0,3174, - 3172,1,0,0,0,3174,3173,1,0,0,0,3175,3187,1,0,0,0,3176,3177,5,333, - 0,0,3177,3178,3,818,409,0,3178,3179,5,64,0,0,3179,3180,5,434,0,0, - 3180,3187,1,0,0,0,3181,3184,5,313,0,0,3182,3185,3,818,409,0,3183, - 3185,5,30,0,0,3184,3182,1,0,0,0,3184,3183,1,0,0,0,3185,3187,1,0, - 0,0,3186,3167,1,0,0,0,3186,3169,1,0,0,0,3186,3176,1,0,0,0,3186,3181, - 1,0,0,0,3187,249,1,0,0,0,3188,3189,5,100,0,0,3189,3190,5,2,0,0,3190, - 3191,3,674,337,0,3191,3192,5,3,0,0,3192,251,1,0,0,0,3193,3194,5, - 105,0,0,3194,3195,5,42,0,0,3195,3196,5,2,0,0,3196,3197,3,674,337, - 0,3197,3198,5,3,0,0,3198,253,1,0,0,0,3199,3200,5,46,0,0,3200,3201, - 5,131,0,0,3201,3202,5,446,0,0,3202,3203,3,818,409,0,3203,3204,5, - 360,0,0,3204,3205,7,37,0,0,3205,3206,5,215,0,0,3206,3207,3,316,158, - 0,3207,255,1,0,0,0,3208,3210,5,46,0,0,3209,3211,3,366,183,0,3210, - 3209,1,0,0,0,3210,3211,1,0,0,0,3211,3212,1,0,0,0,3212,3213,5,357, - 0,0,3213,3214,3,818,409,0,3214,3215,3,258,129,0,3215,3216,3,260, - 130,0,3216,3217,5,80,0,0,3217,3229,3,774,387,0,3218,3225,5,447,0, - 0,3219,3220,7,38,0,0,3220,3222,7,39,0,0,3221,3223,5,36,0,0,3222, - 3221,1,0,0,0,3222,3223,1,0,0,0,3223,3224,1,0,0,0,3224,3226,3,818, - 409,0,3225,3219,1,0,0,0,3226,3227,1,0,0,0,3227,3225,1,0,0,0,3227, - 3228,1,0,0,0,3228,3230,1,0,0,0,3229,3218,1,0,0,0,3229,3230,1,0,0, - 0,3230,3236,1,0,0,0,3231,3233,5,62,0,0,3232,3234,5,192,0,0,3233, - 3232,1,0,0,0,3233,3234,1,0,0,0,3234,3235,1,0,0,0,3235,3237,7,40, - 0,0,3236,3231,1,0,0,0,3236,3237,1,0,0,0,3237,3239,1,0,0,0,3238,3240, - 3,264,132,0,3239,3238,1,0,0,0,3239,3240,1,0,0,0,3240,3241,1,0,0, - 0,3241,3242,5,202,0,0,3242,3243,3,266,133,0,3243,3244,5,2,0,0,3244, - 3245,3,268,134,0,3245,3246,5,3,0,0,3246,3287,1,0,0,0,3247,3249,5, - 46,0,0,3248,3250,3,366,183,0,3249,3248,1,0,0,0,3249,3250,1,0,0,0, - 3250,3252,1,0,0,0,3251,3253,5,45,0,0,3252,3251,1,0,0,0,3252,3253, - 1,0,0,0,3253,3254,1,0,0,0,3254,3255,5,357,0,0,3255,3256,3,818,409, - 0,3256,3257,3,258,129,0,3257,3258,3,260,130,0,3258,3259,5,80,0,0, - 3259,3262,3,774,387,0,3260,3261,5,64,0,0,3261,3263,3,780,390,0,3262, - 3260,1,0,0,0,3262,3263,1,0,0,0,3263,3267,1,0,0,0,3264,3266,3,272, - 136,0,3265,3264,1,0,0,0,3266,3269,1,0,0,0,3267,3265,1,0,0,0,3267, - 3268,1,0,0,0,3268,3275,1,0,0,0,3269,3267,1,0,0,0,3270,3272,5,62, - 0,0,3271,3273,5,192,0,0,3272,3271,1,0,0,0,3272,3273,1,0,0,0,3273, - 3274,1,0,0,0,3274,3276,7,40,0,0,3275,3270,1,0,0,0,3275,3276,1,0, - 0,0,3276,3278,1,0,0,0,3277,3279,3,264,132,0,3278,3277,1,0,0,0,3278, - 3279,1,0,0,0,3279,3280,1,0,0,0,3280,3281,5,202,0,0,3281,3282,3,266, - 133,0,3282,3283,5,2,0,0,3283,3284,3,268,134,0,3284,3285,5,3,0,0, - 3285,3287,1,0,0,0,3286,3208,1,0,0,0,3286,3247,1,0,0,0,3287,257,1, - 0,0,0,3288,3293,5,145,0,0,3289,3293,5,135,0,0,3290,3291,5,242,0, - 0,3291,3293,5,275,0,0,3292,3288,1,0,0,0,3292,3289,1,0,0,0,3292,3290, - 1,0,0,0,3293,259,1,0,0,0,3294,3299,3,262,131,0,3295,3296,5,82,0, - 0,3296,3298,3,262,131,0,3297,3295,1,0,0,0,3298,3301,1,0,0,0,3299, - 3297,1,0,0,0,3299,3300,1,0,0,0,3300,261,1,0,0,0,3301,3299,1,0,0, - 0,3302,3311,5,241,0,0,3303,3311,5,182,0,0,3304,3307,5,369,0,0,3305, - 3306,5,275,0,0,3306,3308,3,148,74,0,3307,3305,1,0,0,0,3307,3308, - 1,0,0,0,3308,3311,1,0,0,0,3309,3311,5,358,0,0,3310,3302,1,0,0,0, - 3310,3303,1,0,0,0,3310,3304,1,0,0,0,3310,3309,1,0,0,0,3311,263,1, - 0,0,0,3312,3313,5,102,0,0,3313,3314,5,2,0,0,3314,3315,3,674,337, - 0,3315,3316,5,3,0,0,3316,265,1,0,0,0,3317,3318,5,211,0,0,3318,3322, - 3,806,403,0,3319,3320,5,296,0,0,3320,3322,3,796,398,0,3321,3317, - 1,0,0,0,3321,3319,1,0,0,0,3322,267,1,0,0,0,3323,3326,3,270,135,0, - 3324,3326,1,0,0,0,3325,3323,1,0,0,0,3325,3324,1,0,0,0,3326,3331, - 1,0,0,0,3327,3328,5,6,0,0,3328,3330,3,270,135,0,3329,3327,1,0,0, - 0,3330,3333,1,0,0,0,3331,3329,1,0,0,0,3331,3332,1,0,0,0,3332,269, - 1,0,0,0,3333,3331,1,0,0,0,3334,3339,5,571,0,0,3335,3339,5,573,0, - 0,3336,3339,3,808,404,0,3337,3339,3,824,412,0,3338,3334,1,0,0,0, - 3338,3335,1,0,0,0,3338,3336,1,0,0,0,3338,3337,1,0,0,0,3339,271,1, - 0,0,0,3340,3342,5,77,0,0,3341,3340,1,0,0,0,3341,3342,1,0,0,0,3342, - 3343,1,0,0,0,3343,3351,5,54,0,0,3344,3345,5,69,0,0,3345,3351,7,9, - 0,0,3346,3347,5,77,0,0,3347,3351,5,371,0,0,3348,3349,5,269,0,0,3349, - 3351,5,228,0,0,3350,3341,1,0,0,0,3350,3344,1,0,0,0,3350,3346,1,0, - 0,0,3350,3348,1,0,0,0,3351,273,1,0,0,0,3352,3353,5,46,0,0,3353,3354, - 5,198,0,0,3354,3355,5,357,0,0,3355,3356,3,818,409,0,3356,3357,5, - 80,0,0,3357,3367,3,824,412,0,3358,3359,5,102,0,0,3359,3364,3,276, - 138,0,3360,3361,5,33,0,0,3361,3363,3,276,138,0,3362,3360,1,0,0,0, - 3363,3366,1,0,0,0,3364,3362,1,0,0,0,3364,3365,1,0,0,0,3365,3368, - 1,0,0,0,3366,3364,1,0,0,0,3367,3358,1,0,0,0,3367,3368,1,0,0,0,3368, - 3369,1,0,0,0,3369,3370,5,202,0,0,3370,3371,3,266,133,0,3371,3372, - 5,2,0,0,3372,3373,5,3,0,0,3373,275,1,0,0,0,3374,3375,3,818,409,0, - 3375,3376,5,68,0,0,3376,3377,5,2,0,0,3377,3381,3,808,404,0,3378, - 3380,3,462,231,0,3379,3378,1,0,0,0,3380,3383,1,0,0,0,3381,3379,1, - 0,0,0,3381,3382,1,0,0,0,3382,3384,1,0,0,0,3383,3381,1,0,0,0,3384, - 3385,5,3,0,0,3385,277,1,0,0,0,3386,3387,5,138,0,0,3387,3388,5,198, - 0,0,3388,3389,5,357,0,0,3389,3395,3,818,409,0,3390,3392,5,193,0, - 0,3391,3393,7,14,0,0,3392,3391,1,0,0,0,3392,3393,1,0,0,0,3393,3396, - 1,0,0,0,3394,3396,5,186,0,0,3395,3390,1,0,0,0,3395,3394,1,0,0,0, - 3396,279,1,0,0,0,3397,3398,5,46,0,0,3398,3399,5,140,0,0,3399,3400, - 3,316,158,0,3400,3401,5,42,0,0,3401,3402,5,2,0,0,3402,3403,3,674, - 337,0,3403,3407,5,3,0,0,3404,3406,3,272,136,0,3405,3404,1,0,0,0, - 3406,3409,1,0,0,0,3407,3405,1,0,0,0,3407,3408,1,0,0,0,3408,281,1, - 0,0,0,3409,3407,1,0,0,0,3410,3412,5,46,0,0,3411,3413,3,366,183,0, - 3412,3411,1,0,0,0,3412,3413,1,0,0,0,3413,3414,1,0,0,0,3414,3415, - 5,136,0,0,3415,3430,3,806,403,0,3416,3417,3,392,196,0,3417,3418, - 3,284,142,0,3418,3431,1,0,0,0,3419,3420,5,2,0,0,3420,3425,3,290, - 145,0,3421,3422,5,6,0,0,3422,3424,3,290,145,0,3423,3421,1,0,0,0, - 3424,3427,1,0,0,0,3425,3423,1,0,0,0,3425,3426,1,0,0,0,3426,3428, - 1,0,0,0,3427,3425,1,0,0,0,3428,3429,5,3,0,0,3429,3431,1,0,0,0,3430, - 3416,1,0,0,0,3430,3419,1,0,0,0,3431,3489,1,0,0,0,3432,3433,5,46, - 0,0,3433,3434,5,278,0,0,3434,3435,3,414,207,0,3435,3436,3,284,142, - 0,3436,3489,1,0,0,0,3437,3438,5,46,0,0,3438,3439,5,360,0,0,3439, - 3440,3,316,158,0,3440,3458,5,36,0,0,3441,3443,5,2,0,0,3442,3444, - 3,642,321,0,3443,3442,1,0,0,0,3443,3444,1,0,0,0,3444,3445,1,0,0, - 0,3445,3459,5,3,0,0,3446,3447,5,196,0,0,3447,3455,5,2,0,0,3448,3452, - 3,808,404,0,3449,3451,3,462,231,0,3450,3449,1,0,0,0,3451,3454,1, - 0,0,0,3452,3450,1,0,0,0,3452,3453,1,0,0,0,3453,3456,1,0,0,0,3454, - 3452,1,0,0,0,3455,3448,1,0,0,0,3455,3456,1,0,0,0,3456,3457,1,0,0, - 0,3457,3459,5,3,0,0,3458,3441,1,0,0,0,3458,3446,1,0,0,0,3459,3489, - 1,0,0,0,3460,3461,5,46,0,0,3461,3462,5,360,0,0,3462,3468,3,316,158, - 0,3463,3464,5,36,0,0,3464,3466,5,299,0,0,3465,3463,1,0,0,0,3465, - 3466,1,0,0,0,3466,3467,1,0,0,0,3467,3469,3,284,142,0,3468,3465,1, - 0,0,0,3468,3469,1,0,0,0,3469,3489,1,0,0,0,3470,3471,5,46,0,0,3471, - 3472,5,355,0,0,3472,3473,5,325,0,0,3473,3474,7,41,0,0,3474,3475, - 3,316,158,0,3475,3476,3,284,142,0,3476,3489,1,0,0,0,3477,3478,5, - 46,0,0,3478,3480,5,108,0,0,3479,3481,3,294,147,0,3480,3479,1,0,0, - 0,3480,3481,1,0,0,0,3481,3482,1,0,0,0,3482,3486,3,316,158,0,3483, - 3487,3,284,142,0,3484,3485,5,64,0,0,3485,3487,3,316,158,0,3486,3483, - 1,0,0,0,3486,3484,1,0,0,0,3487,3489,1,0,0,0,3488,3410,1,0,0,0,3488, - 3432,1,0,0,0,3488,3437,1,0,0,0,3488,3460,1,0,0,0,3488,3470,1,0,0, - 0,3488,3477,1,0,0,0,3489,283,1,0,0,0,3490,3491,5,2,0,0,3491,3496, - 3,286,143,0,3492,3493,5,6,0,0,3493,3495,3,286,143,0,3494,3492,1, - 0,0,0,3495,3498,1,0,0,0,3496,3494,1,0,0,0,3496,3497,1,0,0,0,3497, - 3499,1,0,0,0,3498,3496,1,0,0,0,3499,3500,5,3,0,0,3500,285,1,0,0, - 0,3501,3504,3,824,412,0,3502,3503,5,10,0,0,3503,3505,3,288,144,0, - 3504,3502,1,0,0,0,3504,3505,1,0,0,0,3505,287,1,0,0,0,3506,3513,3, - 388,194,0,3507,3513,3,834,417,0,3508,3513,3,726,363,0,3509,3513, - 3,202,101,0,3510,3513,3,808,404,0,3511,3513,5,407,0,0,3512,3506, - 1,0,0,0,3512,3507,1,0,0,0,3512,3508,1,0,0,0,3512,3509,1,0,0,0,3512, - 3510,1,0,0,0,3512,3511,1,0,0,0,3513,289,1,0,0,0,3514,3515,3,826, - 413,0,3515,3516,5,10,0,0,3516,3517,3,288,144,0,3517,291,1,0,0,0, - 3518,3519,5,138,0,0,3519,3520,5,360,0,0,3520,3521,3,316,158,0,3521, - 3522,5,133,0,0,3522,3524,5,450,0,0,3523,3525,3,294,147,0,3524,3523, - 1,0,0,0,3524,3525,1,0,0,0,3525,3526,1,0,0,0,3526,3529,3,808,404, - 0,3527,3528,7,42,0,0,3528,3530,3,808,404,0,3529,3527,1,0,0,0,3529, - 3530,1,0,0,0,3530,3541,1,0,0,0,3531,3532,5,138,0,0,3532,3533,5,360, - 0,0,3533,3534,3,316,158,0,3534,3535,5,309,0,0,3535,3536,5,450,0, - 0,3536,3537,3,808,404,0,3537,3538,5,94,0,0,3538,3539,3,808,404,0, - 3539,3541,1,0,0,0,3540,3518,1,0,0,0,3540,3531,1,0,0,0,3541,293,1, - 0,0,0,3542,3543,5,220,0,0,3543,3544,5,77,0,0,3544,3545,5,396,0,0, - 3545,295,1,0,0,0,3546,3547,5,46,0,0,3547,3548,5,278,0,0,3548,3549, - 5,156,0,0,3549,3551,3,316,158,0,3550,3552,5,53,0,0,3551,3550,1,0, - 0,0,3551,3552,1,0,0,0,3552,3553,1,0,0,0,3553,3554,5,62,0,0,3554, - 3555,5,360,0,0,3555,3556,3,652,326,0,3556,3559,3,170,85,0,3557,3558, - 5,206,0,0,3558,3560,3,316,158,0,3559,3557,1,0,0,0,3559,3560,1,0, - 0,0,3560,3561,1,0,0,0,3561,3562,5,36,0,0,3562,3567,3,298,149,0,3563, - 3564,5,6,0,0,3564,3566,3,298,149,0,3565,3563,1,0,0,0,3566,3569,1, - 0,0,0,3567,3565,1,0,0,0,3567,3568,1,0,0,0,3568,297,1,0,0,0,3569, - 3567,1,0,0,0,3570,3571,5,278,0,0,3571,3572,5,571,0,0,3572,3574,3, - 414,207,0,3573,3575,3,412,206,0,3574,3573,1,0,0,0,3574,3575,1,0, - 0,0,3575,3583,1,0,0,0,3576,3581,5,62,0,0,3577,3582,5,325,0,0,3578, - 3579,5,83,0,0,3579,3580,5,147,0,0,3580,3582,3,316,158,0,3581,3577, - 1,0,0,0,3581,3578,1,0,0,0,3582,3584,1,0,0,0,3583,3576,1,0,0,0,3583, - 3584,1,0,0,0,3584,3586,1,0,0,0,3585,3587,5,302,0,0,3586,3585,1,0, - 0,0,3586,3587,1,0,0,0,3587,3597,1,0,0,0,3588,3589,5,211,0,0,3589, - 3591,5,571,0,0,3590,3592,3,528,264,0,3591,3590,1,0,0,0,3591,3592, - 1,0,0,0,3592,3593,1,0,0,0,3593,3597,3,382,191,0,3594,3595,5,345, - 0,0,3595,3597,3,652,326,0,3596,3570,1,0,0,0,3596,3588,1,0,0,0,3596, - 3594,1,0,0,0,3597,299,1,0,0,0,3598,3599,5,46,0,0,3599,3600,5,278, - 0,0,3600,3601,5,206,0,0,3601,3602,3,316,158,0,3602,3603,3,170,85, - 0,3603,301,1,0,0,0,3604,3605,5,138,0,0,3605,3606,5,278,0,0,3606, - 3607,5,206,0,0,3607,3608,3,316,158,0,3608,3627,3,170,85,0,3609,3610, - 5,133,0,0,3610,3615,3,298,149,0,3611,3612,5,6,0,0,3612,3614,3,298, - 149,0,3613,3611,1,0,0,0,3614,3617,1,0,0,0,3615,3613,1,0,0,0,3615, - 3616,1,0,0,0,3616,3628,1,0,0,0,3617,3615,1,0,0,0,3618,3619,5,191, - 0,0,3619,3624,3,304,152,0,3620,3621,5,6,0,0,3621,3623,3,304,152, - 0,3622,3620,1,0,0,0,3623,3626,1,0,0,0,3624,3622,1,0,0,0,3624,3625, - 1,0,0,0,3625,3628,1,0,0,0,3626,3624,1,0,0,0,3627,3609,1,0,0,0,3627, - 3618,1,0,0,0,3628,303,1,0,0,0,3629,3630,7,43,0,0,3630,3631,5,571, - 0,0,3631,3632,3,528,264,0,3632,305,1,0,0,0,3633,3634,5,301,0,0,3634, - 3635,5,281,0,0,3635,3636,5,147,0,0,3636,3637,3,816,408,0,3637,3638, - 5,94,0,0,3638,3639,3,814,407,0,3639,307,1,0,0,0,3640,3663,5,191, - 0,0,3641,3664,5,328,0,0,3642,3664,5,226,0,0,3643,3664,5,108,0,0, - 3644,3664,5,168,0,0,3645,3664,5,342,0,0,3646,3664,5,452,0,0,3647, - 3664,5,331,0,0,3648,3649,5,131,0,0,3649,3664,5,446,0,0,3650,3651, - 5,198,0,0,3651,3664,5,357,0,0,3652,3664,5,204,0,0,3653,3655,5,295, - 0,0,3654,3653,1,0,0,0,3654,3655,1,0,0,0,3655,3656,1,0,0,0,3656,3664, - 5,247,0,0,3657,3658,5,63,0,0,3658,3659,5,174,0,0,3659,3664,5,381, - 0,0,3660,3661,5,355,0,0,3661,3662,5,325,0,0,3662,3664,7,41,0,0,3663, - 3641,1,0,0,0,3663,3642,1,0,0,0,3663,3643,1,0,0,0,3663,3644,1,0,0, - 0,3663,3645,1,0,0,0,3663,3646,1,0,0,0,3663,3647,1,0,0,0,3663,3648, - 1,0,0,0,3663,3650,1,0,0,0,3663,3652,1,0,0,0,3663,3654,1,0,0,0,3663, - 3657,1,0,0,0,3663,3660,1,0,0,0,3664,3666,1,0,0,0,3665,3667,3,422, - 211,0,3666,3665,1,0,0,0,3666,3667,1,0,0,0,3667,3668,1,0,0,0,3668, - 3670,3,784,392,0,3669,3671,3,96,48,0,3670,3669,1,0,0,0,3670,3671, - 1,0,0,0,3671,3848,1,0,0,0,3672,3674,5,191,0,0,3673,3675,5,259,0, - 0,3674,3673,1,0,0,0,3674,3675,1,0,0,0,3675,3676,1,0,0,0,3676,3678, - 5,376,0,0,3677,3679,3,422,211,0,3678,3677,1,0,0,0,3678,3679,1,0, - 0,0,3679,3680,1,0,0,0,3680,3685,3,778,389,0,3681,3682,5,6,0,0,3682, - 3684,3,778,389,0,3683,3681,1,0,0,0,3684,3687,1,0,0,0,3685,3683,1, - 0,0,0,3685,3686,1,0,0,0,3686,3689,1,0,0,0,3687,3685,1,0,0,0,3688, - 3690,3,96,48,0,3689,3688,1,0,0,0,3689,3690,1,0,0,0,3690,3848,1,0, - 0,0,3691,3693,5,191,0,0,3692,3694,5,63,0,0,3693,3692,1,0,0,0,3693, - 3694,1,0,0,0,3694,3695,1,0,0,0,3695,3697,5,92,0,0,3696,3698,3,422, - 211,0,3697,3696,1,0,0,0,3697,3698,1,0,0,0,3698,3699,1,0,0,0,3699, - 3701,3,762,381,0,3700,3702,3,96,48,0,3701,3700,1,0,0,0,3701,3702, - 1,0,0,0,3702,3848,1,0,0,0,3703,3704,5,191,0,0,3704,3706,5,323,0, - 0,3705,3707,3,422,211,0,3706,3705,1,0,0,0,3706,3707,1,0,0,0,3707, - 3708,1,0,0,0,3708,3710,3,764,382,0,3709,3711,3,96,48,0,3710,3709, - 1,0,0,0,3710,3711,1,0,0,0,3711,3848,1,0,0,0,3712,3713,5,191,0,0, - 3713,3715,7,44,0,0,3714,3716,3,422,211,0,3715,3714,1,0,0,0,3715, - 3716,1,0,0,0,3716,3717,1,0,0,0,3717,3718,3,818,409,0,3718,3719,5, - 80,0,0,3719,3721,3,316,158,0,3720,3722,3,96,48,0,3721,3720,1,0,0, - 0,3721,3722,1,0,0,0,3722,3848,1,0,0,0,3723,3724,5,191,0,0,3724,3726, - 7,32,0,0,3725,3727,3,422,211,0,3726,3725,1,0,0,0,3726,3727,1,0,0, - 0,3727,3728,1,0,0,0,3728,3733,3,652,326,0,3729,3730,5,6,0,0,3730, - 3732,3,652,326,0,3731,3729,1,0,0,0,3732,3735,1,0,0,0,3733,3731,1, - 0,0,0,3733,3734,1,0,0,0,3734,3737,1,0,0,0,3735,3733,1,0,0,0,3736, - 3738,3,96,48,0,3737,3736,1,0,0,0,3737,3738,1,0,0,0,3738,3848,1,0, - 0,0,3739,3740,5,191,0,0,3740,3741,5,226,0,0,3741,3743,5,109,0,0, - 3742,3744,3,422,211,0,3743,3742,1,0,0,0,3743,3744,1,0,0,0,3744,3745, - 1,0,0,0,3745,3747,3,314,157,0,3746,3748,3,96,48,0,3747,3746,1,0, - 0,0,3747,3748,1,0,0,0,3748,3848,1,0,0,0,3749,3750,5,191,0,0,3750, - 3752,5,41,0,0,3751,3753,3,422,211,0,3752,3751,1,0,0,0,3752,3753, - 1,0,0,0,3753,3754,1,0,0,0,3754,3755,5,2,0,0,3755,3756,3,652,326, - 0,3756,3757,5,36,0,0,3757,3758,3,652,326,0,3758,3760,5,3,0,0,3759, - 3761,3,96,48,0,3760,3759,1,0,0,0,3760,3761,1,0,0,0,3761,3848,1,0, - 0,0,3762,3763,5,191,0,0,3763,3764,5,278,0,0,3764,3766,7,31,0,0,3765, - 3767,3,422,211,0,3766,3765,1,0,0,0,3766,3767,1,0,0,0,3767,3768,1, - 0,0,0,3768,3769,3,316,158,0,3769,3771,3,170,85,0,3770,3772,3,96, - 48,0,3771,3770,1,0,0,0,3771,3772,1,0,0,0,3772,3848,1,0,0,0,3773, - 3774,5,191,0,0,3774,3775,5,281,0,0,3775,3776,5,147,0,0,3776,3778, - 3,816,408,0,3777,3779,3,96,48,0,3778,3777,1,0,0,0,3778,3779,1,0, - 0,0,3779,3848,1,0,0,0,3780,3781,5,191,0,0,3781,3783,5,451,0,0,3782, - 3784,3,422,211,0,3783,3782,1,0,0,0,3783,3784,1,0,0,0,3784,3785,1, - 0,0,0,3785,3787,3,818,409,0,3786,3788,3,96,48,0,3787,3786,1,0,0, - 0,3787,3788,1,0,0,0,3788,3848,1,0,0,0,3789,3790,5,191,0,0,3790,3792, - 5,351,0,0,3791,3793,3,422,211,0,3792,3791,1,0,0,0,3792,3793,1,0, - 0,0,3793,3794,1,0,0,0,3794,3848,3,770,385,0,3795,3796,5,191,0,0, - 3796,3798,5,443,0,0,3797,3799,3,422,211,0,3798,3797,1,0,0,0,3798, - 3799,1,0,0,0,3799,3800,1,0,0,0,3800,3801,5,62,0,0,3801,3802,3,652, - 326,0,3802,3803,5,247,0,0,3803,3805,3,818,409,0,3804,3806,3,96,48, - 0,3805,3804,1,0,0,0,3805,3806,1,0,0,0,3806,3848,1,0,0,0,3807,3808, - 5,191,0,0,3808,3810,7,45,0,0,3809,3811,3,422,211,0,3810,3809,1,0, - 0,0,3810,3811,1,0,0,0,3811,3812,1,0,0,0,3812,3848,3,816,408,0,3813, - 3814,5,191,0,0,3814,3815,5,99,0,0,3815,3817,5,257,0,0,3816,3818, - 3,422,211,0,3817,3816,1,0,0,0,3817,3818,1,0,0,0,3818,3819,1,0,0, - 0,3819,3822,5,62,0,0,3820,3823,3,814,407,0,3821,3823,5,99,0,0,3822, - 3820,1,0,0,0,3822,3821,1,0,0,0,3823,3824,1,0,0,0,3824,3825,5,331, - 0,0,3825,3848,3,818,409,0,3826,3827,5,191,0,0,3827,3829,5,175,0, - 0,3828,3830,3,422,211,0,3829,3828,1,0,0,0,3829,3830,1,0,0,0,3830, - 3831,1,0,0,0,3831,3845,3,788,394,0,3832,3834,5,105,0,0,3833,3832, - 1,0,0,0,3833,3834,1,0,0,0,3834,3835,1,0,0,0,3835,3836,5,2,0,0,3836, - 3841,5,209,0,0,3837,3838,5,6,0,0,3838,3840,5,209,0,0,3839,3837,1, - 0,0,0,3840,3843,1,0,0,0,3841,3839,1,0,0,0,3841,3842,1,0,0,0,3842, - 3844,1,0,0,0,3843,3841,1,0,0,0,3844,3846,5,3,0,0,3845,3833,1,0,0, - 0,3845,3846,1,0,0,0,3846,3848,1,0,0,0,3847,3640,1,0,0,0,3847,3672, - 1,0,0,0,3847,3691,1,0,0,0,3847,3703,1,0,0,0,3847,3712,1,0,0,0,3847, - 3723,1,0,0,0,3847,3739,1,0,0,0,3847,3749,1,0,0,0,3847,3762,1,0,0, - 0,3847,3773,1,0,0,0,3847,3780,1,0,0,0,3847,3789,1,0,0,0,3847,3795, - 1,0,0,0,3847,3807,1,0,0,0,3847,3813,1,0,0,0,3847,3826,1,0,0,0,3848, - 309,1,0,0,0,3849,3851,5,63,0,0,3850,3849,1,0,0,0,3850,3851,1,0,0, - 0,3851,3852,1,0,0,0,3852,3853,5,92,0,0,3853,3866,3,774,387,0,3854, - 3856,5,259,0,0,3855,3854,1,0,0,0,3855,3856,1,0,0,0,3856,3857,1,0, - 0,0,3857,3858,5,376,0,0,3858,3866,3,778,389,0,3859,3860,7,46,0,0, - 3860,3866,3,316,158,0,3861,3862,5,355,0,0,3862,3863,5,325,0,0,3863, - 3864,7,41,0,0,3864,3866,3,316,158,0,3865,3850,1,0,0,0,3865,3855, - 1,0,0,0,3865,3859,1,0,0,0,3865,3861,1,0,0,0,3866,311,1,0,0,0,3867, - 3868,5,198,0,0,3868,3884,5,357,0,0,3869,3870,5,131,0,0,3870,3884, - 5,446,0,0,3871,3884,5,204,0,0,3872,3884,5,452,0,0,3873,3884,5,331, - 0,0,3874,3884,5,318,0,0,3875,3884,5,451,0,0,3876,3877,5,63,0,0,3877, - 3878,5,174,0,0,3878,3884,5,381,0,0,3879,3881,5,295,0,0,3880,3879, - 1,0,0,0,3880,3881,1,0,0,0,3881,3882,1,0,0,0,3882,3884,5,247,0,0, - 3883,3867,1,0,0,0,3883,3869,1,0,0,0,3883,3871,1,0,0,0,3883,3872, - 1,0,0,0,3883,3873,1,0,0,0,3883,3874,1,0,0,0,3883,3875,1,0,0,0,3883, - 3876,1,0,0,0,3883,3880,1,0,0,0,3884,3885,1,0,0,0,3885,3892,3,818, - 409,0,3886,3887,5,323,0,0,3887,3892,3,790,395,0,3888,3889,5,175, - 0,0,3889,3892,3,788,394,0,3890,3892,3,176,88,0,3891,3883,1,0,0,0, - 3891,3886,1,0,0,0,3891,3888,1,0,0,0,3891,3890,1,0,0,0,3892,313,1, - 0,0,0,3893,3898,3,316,158,0,3894,3895,5,6,0,0,3895,3897,3,316,158, - 0,3896,3894,1,0,0,0,3897,3900,1,0,0,0,3898,3896,1,0,0,0,3898,3899, - 1,0,0,0,3899,315,1,0,0,0,3900,3898,1,0,0,0,3901,3903,3,818,409,0, - 3902,3904,3,318,159,0,3903,3902,1,0,0,0,3903,3904,1,0,0,0,3904,317, - 1,0,0,0,3905,3906,5,11,0,0,3906,3908,3,824,412,0,3907,3905,1,0,0, - 0,3908,3909,1,0,0,0,3909,3907,1,0,0,0,3909,3910,1,0,0,0,3910,319, - 1,0,0,0,3911,3913,5,358,0,0,3912,3914,5,92,0,0,3913,3912,1,0,0,0, - 3913,3914,1,0,0,0,3914,3915,1,0,0,0,3915,3920,3,322,161,0,3916,3917, - 5,6,0,0,3917,3919,3,322,161,0,3918,3916,1,0,0,0,3919,3922,1,0,0, - 0,3920,3918,1,0,0,0,3920,3921,1,0,0,0,3921,3925,1,0,0,0,3922,3920, - 1,0,0,0,3923,3924,7,47,0,0,3924,3926,5,219,0,0,3925,3923,1,0,0,0, - 3925,3926,1,0,0,0,3926,3928,1,0,0,0,3927,3929,3,96,48,0,3928,3927, - 1,0,0,0,3928,3929,1,0,0,0,3929,321,1,0,0,0,3930,3932,5,81,0,0,3931, - 3930,1,0,0,0,3931,3932,1,0,0,0,3932,3933,1,0,0,0,3933,3935,3,774, - 387,0,3934,3936,5,9,0,0,3935,3934,1,0,0,0,3935,3936,1,0,0,0,3936, - 323,1,0,0,0,3937,3938,5,159,0,0,3938,3997,5,80,0,0,3939,3998,3,310, - 155,0,3940,3998,3,312,156,0,3941,3942,5,44,0,0,3942,3944,3,818,409, - 0,3943,3945,3,318,159,0,3944,3943,1,0,0,0,3944,3945,1,0,0,0,3945, - 3946,1,0,0,0,3946,3947,5,11,0,0,3947,3948,3,800,400,0,3948,3998, - 1,0,0,0,3949,3950,7,32,0,0,3950,3998,3,652,326,0,3951,3952,5,136, - 0,0,3952,3998,3,394,197,0,3953,3954,5,211,0,0,3954,3998,3,382,191, - 0,3955,3956,5,278,0,0,3956,3998,3,416,208,0,3957,3958,5,45,0,0,3958, - 3959,3,818,409,0,3959,3965,5,80,0,0,3960,3966,3,774,387,0,3961,3963, - 5,189,0,0,3962,3961,1,0,0,0,3962,3963,1,0,0,0,3963,3964,1,0,0,0, - 3964,3966,3,316,158,0,3965,3960,1,0,0,0,3965,3962,1,0,0,0,3966,3998, - 1,0,0,0,3967,3968,7,44,0,0,3968,3969,3,818,409,0,3969,3970,5,80, - 0,0,3970,3971,3,316,158,0,3971,3998,1,0,0,0,3972,3973,5,296,0,0, - 3973,3998,3,378,189,0,3974,3975,5,442,0,0,3975,3998,3,374,187,0, - 3976,3977,5,443,0,0,3977,3978,5,62,0,0,3978,3979,3,652,326,0,3979, - 3980,5,247,0,0,3980,3981,3,818,409,0,3981,3998,1,0,0,0,3982,3983, - 5,278,0,0,3983,3984,7,31,0,0,3984,3985,3,316,158,0,3985,3986,3,170, - 85,0,3986,3998,1,0,0,0,3987,3988,5,248,0,0,3988,3989,5,274,0,0,3989, - 3998,3,202,101,0,3990,3991,5,41,0,0,3991,3992,5,2,0,0,3992,3993, - 3,652,326,0,3993,3994,5,36,0,0,3994,3995,3,652,326,0,3995,3996,5, - 3,0,0,3996,3998,1,0,0,0,3997,3939,1,0,0,0,3997,3940,1,0,0,0,3997, - 3941,1,0,0,0,3997,3949,1,0,0,0,3997,3951,1,0,0,0,3997,3953,1,0,0, - 0,3997,3955,1,0,0,0,3997,3957,1,0,0,0,3997,3967,1,0,0,0,3997,3972, - 1,0,0,0,3997,3974,1,0,0,0,3997,3976,1,0,0,0,3997,3982,1,0,0,0,3997, - 3987,1,0,0,0,3997,3990,1,0,0,0,3998,3999,1,0,0,0,3999,4002,5,116, - 0,0,4000,4003,3,808,404,0,4001,4003,5,78,0,0,4002,4000,1,0,0,0,4002, - 4001,1,0,0,0,4003,325,1,0,0,0,4004,4005,5,327,0,0,4005,4008,5,246, - 0,0,4006,4007,5,62,0,0,4007,4009,3,58,29,0,4008,4006,1,0,0,0,4008, - 4009,1,0,0,0,4009,4010,1,0,0,0,4010,4028,5,80,0,0,4011,4012,7,32, - 0,0,4012,4029,3,652,326,0,4013,4014,5,136,0,0,4014,4029,3,394,197, - 0,4015,4016,5,44,0,0,4016,4029,3,800,400,0,4017,4018,5,211,0,0,4018, - 4029,3,382,191,0,4019,4020,5,248,0,0,4020,4021,5,274,0,0,4021,4029, - 3,202,101,0,4022,4023,5,296,0,0,4023,4029,3,378,189,0,4024,4025, - 5,442,0,0,4025,4029,3,374,187,0,4026,4029,3,310,155,0,4027,4029, - 3,312,156,0,4028,4011,1,0,0,0,4028,4013,1,0,0,0,4028,4015,1,0,0, - 0,4028,4017,1,0,0,0,4028,4019,1,0,0,0,4028,4022,1,0,0,0,4028,4024, - 1,0,0,0,4028,4026,1,0,0,0,4028,4027,1,0,0,0,4029,4030,1,0,0,0,4030, - 4033,5,116,0,0,4031,4034,3,808,404,0,4032,4034,5,78,0,0,4033,4031, - 1,0,0,0,4033,4032,1,0,0,0,4034,327,1,0,0,0,4035,4036,7,48,0,0,4036, - 4037,3,330,165,0,4037,329,1,0,0,0,4038,4040,7,49,0,0,4039,4038,1, - 0,0,0,4039,4040,1,0,0,0,4040,4042,1,0,0,0,4041,4043,3,332,166,0, - 4042,4041,1,0,0,0,4042,4043,1,0,0,0,4043,4044,1,0,0,0,4044,4082, - 3,818,409,0,4045,4047,7,50,0,0,4046,4045,1,0,0,0,4046,4047,1,0,0, - 0,4047,4048,1,0,0,0,4048,4050,3,812,406,0,4049,4051,3,332,166,0, - 4050,4049,1,0,0,0,4050,4051,1,0,0,0,4051,4052,1,0,0,0,4052,4053, - 3,818,409,0,4053,4082,1,0,0,0,4054,4056,5,210,0,0,4055,4057,3,812, - 406,0,4056,4055,1,0,0,0,4056,4057,1,0,0,0,4057,4059,1,0,0,0,4058, - 4060,3,332,166,0,4059,4058,1,0,0,0,4059,4060,1,0,0,0,4060,4061,1, - 0,0,0,4061,4082,3,818,409,0,4062,4064,5,210,0,0,4063,4062,1,0,0, - 0,4063,4064,1,0,0,0,4064,4065,1,0,0,0,4065,4067,5,30,0,0,4066,4068, - 3,332,166,0,4067,4066,1,0,0,0,4067,4068,1,0,0,0,4068,4069,1,0,0, - 0,4069,4082,3,818,409,0,4070,4075,5,144,0,0,4071,4073,5,30,0,0,4072, - 4071,1,0,0,0,4072,4073,1,0,0,0,4073,4076,1,0,0,0,4074,4076,3,812, - 406,0,4075,4072,1,0,0,0,4075,4074,1,0,0,0,4076,4078,1,0,0,0,4077, - 4079,3,332,166,0,4078,4077,1,0,0,0,4078,4079,1,0,0,0,4079,4080,1, - 0,0,0,4080,4082,3,818,409,0,4081,4039,1,0,0,0,4081,4046,1,0,0,0, - 4081,4054,1,0,0,0,4081,4063,1,0,0,0,4081,4070,1,0,0,0,4082,331,1, - 0,0,0,4083,4084,7,51,0,0,4084,333,1,0,0,0,4085,4086,5,65,0,0,4086, - 4087,3,338,169,0,4087,4088,5,80,0,0,4088,4089,3,344,172,0,4089,4090, - 5,94,0,0,4090,4094,3,346,173,0,4091,4092,5,105,0,0,4092,4093,5,65, - 0,0,4093,4095,5,279,0,0,4094,4091,1,0,0,0,4094,4095,1,0,0,0,4095, - 335,1,0,0,0,4096,4100,5,317,0,0,4097,4098,5,65,0,0,4098,4099,5,279, - 0,0,4099,4101,5,62,0,0,4100,4097,1,0,0,0,4100,4101,1,0,0,0,4101, - 4102,1,0,0,0,4102,4103,3,338,169,0,4103,4104,5,80,0,0,4104,4105, - 3,344,172,0,4105,4106,5,64,0,0,4106,4108,3,346,173,0,4107,4109,3, - 96,48,0,4108,4107,1,0,0,0,4108,4109,1,0,0,0,4109,337,1,0,0,0,4110, - 4115,3,342,171,0,4111,4112,5,6,0,0,4112,4114,3,342,171,0,4113,4111, - 1,0,0,0,4114,4117,1,0,0,0,4115,4113,1,0,0,0,4115,4116,1,0,0,0,4116, - 4134,1,0,0,0,4117,4115,1,0,0,0,4118,4120,5,30,0,0,4119,4121,5,294, - 0,0,4120,4119,1,0,0,0,4120,4121,1,0,0,0,4121,4123,1,0,0,0,4122,4124, - 3,144,72,0,4123,4122,1,0,0,0,4123,4124,1,0,0,0,4124,4134,1,0,0,0, - 4125,4130,3,340,170,0,4126,4127,5,6,0,0,4127,4129,3,340,170,0,4128, - 4126,1,0,0,0,4129,4132,1,0,0,0,4130,4128,1,0,0,0,4130,4131,1,0,0, - 0,4131,4134,1,0,0,0,4132,4130,1,0,0,0,4133,4110,1,0,0,0,4133,4118, - 1,0,0,0,4133,4125,1,0,0,0,4134,339,1,0,0,0,4135,4136,7,52,0,0,4136, - 341,1,0,0,0,4137,4142,5,88,0,0,4138,4142,5,86,0,0,4139,4142,5,46, - 0,0,4140,4142,3,818,409,0,4141,4137,1,0,0,0,4141,4138,1,0,0,0,4141, - 4139,1,0,0,0,4141,4140,1,0,0,0,4142,4144,1,0,0,0,4143,4145,3,144, - 72,0,4144,4143,1,0,0,0,4144,4145,1,0,0,0,4145,343,1,0,0,0,4146,4147, - 5,92,0,0,4147,4192,3,762,381,0,4148,4150,5,328,0,0,4149,4148,1,0, - 0,0,4149,4150,1,0,0,0,4150,4151,1,0,0,0,4151,4192,3,760,380,0,4152, - 4156,5,63,0,0,4153,4154,5,174,0,0,4154,4157,5,381,0,0,4155,4157, - 5,331,0,0,4156,4153,1,0,0,0,4156,4155,1,0,0,0,4157,4160,1,0,0,0, - 4158,4160,5,247,0,0,4159,4152,1,0,0,0,4159,4158,1,0,0,0,4160,4161, - 1,0,0,0,4161,4192,3,784,392,0,4162,4163,5,211,0,0,4163,4192,3,380, - 190,0,4164,4165,5,296,0,0,4165,4192,3,376,188,0,4166,4167,5,442, - 0,0,4167,4192,3,372,186,0,4168,4169,5,175,0,0,4169,4192,3,766,383, - 0,4170,4171,7,32,0,0,4171,4192,3,314,157,0,4172,4173,5,248,0,0,4173, - 4174,5,274,0,0,4174,4179,3,202,101,0,4175,4176,5,6,0,0,4176,4178, - 3,202,101,0,4177,4175,1,0,0,0,4178,4181,1,0,0,0,4179,4177,1,0,0, - 0,4179,4180,1,0,0,0,4180,4192,1,0,0,0,4181,4179,1,0,0,0,4182,4183, - 5,323,0,0,4183,4192,3,764,382,0,4184,4185,5,351,0,0,4185,4192,3, - 782,391,0,4186,4187,5,30,0,0,4187,4188,7,53,0,0,4188,4189,5,68,0, - 0,4189,4190,5,323,0,0,4190,4192,3,764,382,0,4191,4146,1,0,0,0,4191, - 4149,1,0,0,0,4191,4159,1,0,0,0,4191,4162,1,0,0,0,4191,4164,1,0,0, - 0,4191,4166,1,0,0,0,4191,4168,1,0,0,0,4191,4170,1,0,0,0,4191,4172, - 1,0,0,0,4191,4182,1,0,0,0,4191,4184,1,0,0,0,4191,4186,1,0,0,0,4192, - 345,1,0,0,0,4193,4195,5,66,0,0,4194,4193,1,0,0,0,4194,4195,1,0,0, - 0,4195,4196,1,0,0,0,4196,4197,3,814,407,0,4197,4205,1,0,0,0,4198, - 4200,5,6,0,0,4199,4201,5,66,0,0,4200,4199,1,0,0,0,4200,4201,1,0, - 0,0,4201,4202,1,0,0,0,4202,4204,3,814,407,0,4203,4198,1,0,0,0,4204, - 4207,1,0,0,0,4205,4203,1,0,0,0,4205,4206,1,0,0,0,4206,347,1,0,0, - 0,4207,4205,1,0,0,0,4208,4209,5,65,0,0,4209,4214,3,342,171,0,4210, - 4211,5,6,0,0,4211,4213,3,342,171,0,4212,4210,1,0,0,0,4213,4216,1, - 0,0,0,4214,4212,1,0,0,0,4214,4215,1,0,0,0,4215,4217,1,0,0,0,4216, - 4214,1,0,0,0,4217,4218,5,94,0,0,4218,4222,3,816,408,0,4219,4220, - 5,105,0,0,4220,4221,5,134,0,0,4221,4223,5,279,0,0,4222,4219,1,0, - 0,0,4222,4223,1,0,0,0,4223,4227,1,0,0,0,4224,4225,5,214,0,0,4225, - 4226,5,147,0,0,4226,4228,3,814,407,0,4227,4224,1,0,0,0,4227,4228, - 1,0,0,0,4228,349,1,0,0,0,4229,4233,5,317,0,0,4230,4231,5,134,0,0, - 4231,4232,5,279,0,0,4232,4234,5,62,0,0,4233,4230,1,0,0,0,4233,4234, - 1,0,0,0,4234,4235,1,0,0,0,4235,4240,3,342,171,0,4236,4237,5,6,0, - 0,4237,4239,3,342,171,0,4238,4236,1,0,0,0,4239,4242,1,0,0,0,4240, - 4238,1,0,0,0,4240,4241,1,0,0,0,4241,4243,1,0,0,0,4242,4240,1,0,0, - 0,4243,4244,5,64,0,0,4244,4248,3,816,408,0,4245,4246,5,214,0,0,4246, - 4247,5,147,0,0,4247,4249,3,814,407,0,4248,4245,1,0,0,0,4248,4249, - 1,0,0,0,4249,4251,1,0,0,0,4250,4252,3,96,48,0,4251,4250,1,0,0,0, - 4251,4252,1,0,0,0,4252,351,1,0,0,0,4253,4254,5,138,0,0,4254,4255, - 5,53,0,0,4255,4264,5,294,0,0,4256,4257,5,68,0,0,4257,4258,5,323, - 0,0,4258,4263,3,764,382,0,4259,4260,5,62,0,0,4260,4261,7,2,0,0,4261, - 4263,3,816,408,0,4262,4256,1,0,0,0,4262,4259,1,0,0,0,4263,4266,1, - 0,0,0,4264,4262,1,0,0,0,4264,4265,1,0,0,0,4265,4267,1,0,0,0,4266, - 4264,1,0,0,0,4267,4268,3,354,177,0,4268,353,1,0,0,0,4269,4270,5, - 65,0,0,4270,4271,3,338,169,0,4271,4272,5,80,0,0,4272,4273,3,356, - 178,0,4273,4274,5,94,0,0,4274,4278,3,346,173,0,4275,4276,5,105,0, - 0,4276,4277,5,65,0,0,4277,4279,5,279,0,0,4278,4275,1,0,0,0,4278, - 4279,1,0,0,0,4279,4295,1,0,0,0,4280,4284,5,317,0,0,4281,4282,5,65, - 0,0,4282,4283,5,279,0,0,4283,4285,5,62,0,0,4284,4281,1,0,0,0,4284, - 4285,1,0,0,0,4285,4286,1,0,0,0,4286,4287,3,338,169,0,4287,4288,5, - 80,0,0,4288,4289,3,356,178,0,4289,4290,5,64,0,0,4290,4292,3,346, - 173,0,4291,4293,3,96,48,0,4292,4291,1,0,0,0,4292,4293,1,0,0,0,4293, - 4295,1,0,0,0,4294,4269,1,0,0,0,4294,4280,1,0,0,0,4295,355,1,0,0, - 0,4296,4297,7,54,0,0,4297,357,1,0,0,0,4298,4300,5,46,0,0,4299,4301, - 5,98,0,0,4300,4299,1,0,0,0,4300,4301,1,0,0,0,4301,4302,1,0,0,0,4302, - 4304,5,226,0,0,4303,4305,5,109,0,0,4304,4303,1,0,0,0,4304,4305,1, - 0,0,0,4305,4307,1,0,0,0,4306,4308,3,294,147,0,4307,4306,1,0,0,0, - 4307,4308,1,0,0,0,4308,4310,1,0,0,0,4309,4311,3,818,409,0,4310,4309, - 1,0,0,0,4310,4311,1,0,0,0,4311,4312,1,0,0,0,4312,4313,5,80,0,0,4313, - 4315,3,624,312,0,4314,4316,3,170,85,0,4315,4314,1,0,0,0,4315,4316, - 1,0,0,0,4316,4317,1,0,0,0,4317,4320,3,360,180,0,4318,4319,5,441, - 0,0,4319,4321,3,360,180,0,4320,4318,1,0,0,0,4320,4321,1,0,0,0,4321, - 4327,1,0,0,0,4322,4324,5,273,0,0,4323,4325,5,77,0,0,4324,4323,1, - 0,0,0,4324,4325,1,0,0,0,4325,4326,1,0,0,0,4326,4328,5,56,0,0,4327, - 4322,1,0,0,0,4327,4328,1,0,0,0,4328,4330,1,0,0,0,4329,4331,3,102, - 51,0,4330,4329,1,0,0,0,4330,4331,1,0,0,0,4331,4333,1,0,0,0,4332, - 4334,3,176,88,0,4333,4332,1,0,0,0,4333,4334,1,0,0,0,4334,4336,1, - 0,0,0,4335,4337,3,638,319,0,4336,4335,1,0,0,0,4336,4337,1,0,0,0, - 4337,359,1,0,0,0,4338,4339,5,2,0,0,4339,4344,3,362,181,0,4340,4341, - 5,6,0,0,4341,4343,3,362,181,0,4342,4340,1,0,0,0,4343,4346,1,0,0, - 0,4344,4342,1,0,0,0,4344,4345,1,0,0,0,4345,4347,1,0,0,0,4346,4344, - 1,0,0,0,4347,4348,5,3,0,0,4348,361,1,0,0,0,4349,4356,3,800,400,0, - 4350,4356,3,688,344,0,4351,4352,5,2,0,0,4352,4353,3,674,337,0,4353, - 4354,5,3,0,0,4354,4356,1,0,0,0,4355,4349,1,0,0,0,4355,4350,1,0,0, - 0,4355,4351,1,0,0,0,4356,4358,1,0,0,0,4357,4359,3,98,49,0,4358,4357, - 1,0,0,0,4358,4359,1,0,0,0,4359,4366,1,0,0,0,4360,4362,3,316,158, - 0,4361,4360,1,0,0,0,4361,4362,1,0,0,0,4362,4367,1,0,0,0,4363,4364, - 3,316,158,0,4364,4365,3,100,50,0,4365,4367,1,0,0,0,4366,4361,1,0, - 0,0,4366,4363,1,0,0,0,4367,4369,1,0,0,0,4368,4370,7,55,0,0,4369, - 4368,1,0,0,0,4369,4370,1,0,0,0,4370,4373,1,0,0,0,4371,4372,5,273, - 0,0,4372,4374,7,56,0,0,4373,4371,1,0,0,0,4373,4374,1,0,0,0,4374, - 363,1,0,0,0,4375,4377,5,46,0,0,4376,4378,3,366,183,0,4377,4376,1, - 0,0,0,4377,4378,1,0,0,0,4378,4383,1,0,0,0,4379,4380,5,211,0,0,4380, - 4384,3,804,402,0,4381,4382,5,296,0,0,4382,4384,3,798,399,0,4383, - 4379,1,0,0,0,4383,4381,1,0,0,0,4384,4385,1,0,0,0,4385,4394,5,2,0, - 0,4386,4391,3,390,195,0,4387,4388,5,6,0,0,4388,4390,3,390,195,0, - 4389,4387,1,0,0,0,4390,4393,1,0,0,0,4391,4389,1,0,0,0,4391,4392, - 1,0,0,0,4392,4395,1,0,0,0,4393,4391,1,0,0,0,4394,4386,1,0,0,0,4394, - 4395,1,0,0,0,4395,4396,1,0,0,0,4396,4397,5,3,0,0,4397,4414,1,0,0, - 0,4398,4412,5,316,0,0,4399,4413,3,388,194,0,4400,4401,5,92,0,0,4401, - 4402,5,2,0,0,4402,4407,3,402,201,0,4403,4404,5,6,0,0,4404,4406,3, - 402,201,0,4405,4403,1,0,0,0,4406,4409,1,0,0,0,4407,4405,1,0,0,0, - 4407,4408,1,0,0,0,4408,4410,1,0,0,0,4409,4407,1,0,0,0,4410,4411, - 5,3,0,0,4411,4413,1,0,0,0,4412,4399,1,0,0,0,4412,4400,1,0,0,0,4413, - 4415,1,0,0,0,4414,4398,1,0,0,0,4414,4415,1,0,0,0,4415,4417,1,0,0, - 0,4416,4418,3,398,199,0,4417,4416,1,0,0,0,4418,4419,1,0,0,0,4419, - 4417,1,0,0,0,4419,4420,1,0,0,0,4420,4426,1,0,0,0,4421,4422,5,105, - 0,0,4422,4423,5,2,0,0,4423,4424,3,784,392,0,4424,4425,5,3,0,0,4425, - 4427,1,0,0,0,4426,4421,1,0,0,0,4426,4427,1,0,0,0,4427,365,1,0,0, - 0,4428,4429,5,82,0,0,4429,4430,5,311,0,0,4430,367,1,0,0,0,4431,4433, - 5,2,0,0,4432,4434,3,370,185,0,4433,4432,1,0,0,0,4433,4434,1,0,0, - 0,4434,4435,1,0,0,0,4435,4436,5,3,0,0,4436,369,1,0,0,0,4437,4442, - 3,384,192,0,4438,4439,5,6,0,0,4439,4441,3,384,192,0,4440,4438,1, - 0,0,0,4441,4444,1,0,0,0,4442,4440,1,0,0,0,4442,4443,1,0,0,0,4443, - 371,1,0,0,0,4444,4442,1,0,0,0,4445,4450,3,374,187,0,4446,4447,5, - 6,0,0,4447,4449,3,374,187,0,4448,4446,1,0,0,0,4449,4452,1,0,0,0, - 4450,4448,1,0,0,0,4450,4451,1,0,0,0,4451,373,1,0,0,0,4452,4450,1, - 0,0,0,4453,4454,3,794,397,0,4454,4455,3,368,184,0,4455,4459,1,0, - 0,0,4456,4459,3,832,416,0,4457,4459,3,780,390,0,4458,4453,1,0,0, - 0,4458,4456,1,0,0,0,4458,4457,1,0,0,0,4459,375,1,0,0,0,4460,4465, - 3,378,189,0,4461,4462,5,6,0,0,4462,4464,3,378,189,0,4463,4461,1, - 0,0,0,4464,4467,1,0,0,0,4465,4463,1,0,0,0,4465,4466,1,0,0,0,4466, - 377,1,0,0,0,4467,4465,1,0,0,0,4468,4469,3,796,398,0,4469,4470,3, - 368,184,0,4470,4474,1,0,0,0,4471,4474,3,832,416,0,4472,4474,3,780, - 390,0,4473,4468,1,0,0,0,4473,4471,1,0,0,0,4473,4472,1,0,0,0,4474, - 379,1,0,0,0,4475,4480,3,382,191,0,4476,4477,5,6,0,0,4477,4479,3, - 382,191,0,4478,4476,1,0,0,0,4479,4482,1,0,0,0,4480,4478,1,0,0,0, - 4480,4481,1,0,0,0,4481,381,1,0,0,0,4482,4480,1,0,0,0,4483,4484,3, - 806,403,0,4484,4485,3,368,184,0,4485,4489,1,0,0,0,4486,4489,3,832, - 416,0,4487,4489,3,780,390,0,4488,4483,1,0,0,0,4488,4486,1,0,0,0, - 4488,4487,1,0,0,0,4489,383,1,0,0,0,4490,4492,3,386,193,0,4491,4493, - 3,820,410,0,4492,4491,1,0,0,0,4492,4493,1,0,0,0,4493,4499,1,0,0, - 0,4494,4496,3,820,410,0,4495,4497,3,386,193,0,4496,4495,1,0,0,0, - 4496,4497,1,0,0,0,4497,4499,1,0,0,0,4498,4490,1,0,0,0,4498,4494, - 1,0,0,0,4498,4499,1,0,0,0,4499,4500,1,0,0,0,4500,4501,3,388,194, - 0,4501,385,1,0,0,0,4502,4504,5,68,0,0,4503,4505,5,453,0,0,4504,4503, - 1,0,0,0,4504,4505,1,0,0,0,4505,4510,1,0,0,0,4506,4510,5,453,0,0, - 4507,4510,5,400,0,0,4508,4510,5,101,0,0,4509,4502,1,0,0,0,4509,4506, - 1,0,0,0,4509,4507,1,0,0,0,4509,4508,1,0,0,0,4510,387,1,0,0,0,4511, - 4521,3,652,326,0,4512,4514,5,415,0,0,4513,4512,1,0,0,0,4513,4514, - 1,0,0,0,4514,4515,1,0,0,0,4515,4516,3,820,410,0,4516,4517,3,318, - 159,0,4517,4518,5,27,0,0,4518,4519,5,360,0,0,4519,4521,1,0,0,0,4520, - 4511,1,0,0,0,4520,4513,1,0,0,0,4521,389,1,0,0,0,4522,4525,3,384, - 192,0,4523,4524,7,57,0,0,4524,4526,3,674,337,0,4525,4523,1,0,0,0, - 4525,4526,1,0,0,0,4526,391,1,0,0,0,4527,4537,5,2,0,0,4528,4538,5, - 9,0,0,4529,4531,3,370,185,0,4530,4529,1,0,0,0,4530,4531,1,0,0,0, - 4531,4535,1,0,0,0,4532,4533,5,83,0,0,4533,4534,5,147,0,0,4534,4536, - 3,370,185,0,4535,4532,1,0,0,0,4535,4536,1,0,0,0,4536,4538,1,0,0, - 0,4537,4528,1,0,0,0,4537,4530,1,0,0,0,4538,4539,1,0,0,0,4539,4540, - 5,3,0,0,4540,393,1,0,0,0,4541,4542,3,806,403,0,4542,4543,3,392,196, - 0,4543,395,1,0,0,0,4544,4545,5,316,0,0,4545,4548,5,78,0,0,4546,4548, - 5,149,0,0,4547,4544,1,0,0,0,4547,4546,1,0,0,0,4548,4549,1,0,0,0, - 4549,4550,5,80,0,0,4550,4551,5,78,0,0,4551,4574,5,458,0,0,4552,4574, - 5,346,0,0,4553,4574,5,222,0,0,4554,4574,5,338,0,0,4555,4574,5,377, - 0,0,4556,4558,5,205,0,0,4557,4556,1,0,0,0,4557,4558,1,0,0,0,4558, - 4559,1,0,0,0,4559,4560,5,327,0,0,4560,4574,7,58,0,0,4561,4574,5, - 250,0,0,4562,4563,5,77,0,0,4563,4574,5,250,0,0,4564,4565,7,59,0, - 0,4565,4574,3,202,101,0,4566,4567,5,459,0,0,4567,4574,3,316,158, - 0,4568,4569,5,333,0,0,4569,4574,3,42,21,0,4570,4574,3,60,30,0,4571, - 4572,5,460,0,0,4572,4574,3,818,409,0,4573,4547,1,0,0,0,4573,4552, - 1,0,0,0,4573,4553,1,0,0,0,4573,4554,1,0,0,0,4573,4555,1,0,0,0,4573, - 4557,1,0,0,0,4573,4561,1,0,0,0,4573,4562,1,0,0,0,4573,4564,1,0,0, - 0,4573,4566,1,0,0,0,4573,4568,1,0,0,0,4573,4570,1,0,0,0,4573,4571, - 1,0,0,0,4574,397,1,0,0,0,4575,4576,5,36,0,0,4576,4577,3,808,404, - 0,4577,4578,3,462,231,0,4578,4611,1,0,0,0,4579,4580,5,247,0,0,4580, - 4611,3,58,29,0,4581,4582,5,443,0,0,4582,4583,5,62,0,0,4583,4584, - 5,360,0,0,4584,4591,3,652,326,0,4585,4586,5,6,0,0,4586,4587,5,62, - 0,0,4587,4588,5,360,0,0,4588,4590,3,652,326,0,4589,4585,1,0,0,0, - 4590,4593,1,0,0,0,4591,4589,1,0,0,0,4591,4592,1,0,0,0,4592,4611, - 1,0,0,0,4593,4591,1,0,0,0,4594,4611,5,104,0,0,4595,4596,5,333,0, - 0,4596,4603,3,818,409,0,4597,4598,5,94,0,0,4598,4604,3,818,409,0, - 4599,4600,5,10,0,0,4600,4604,3,818,409,0,4601,4602,5,64,0,0,4602, - 4604,5,434,0,0,4603,4597,1,0,0,0,4603,4599,1,0,0,0,4603,4601,1,0, - 0,0,4604,4611,1,0,0,0,4605,4606,5,36,0,0,4606,4611,3,818,409,0,4607, - 4611,3,4,2,0,4608,4611,3,396,198,0,4609,4611,3,818,409,0,4610,4575, - 1,0,0,0,4610,4579,1,0,0,0,4610,4581,1,0,0,0,4610,4594,1,0,0,0,4610, - 4595,1,0,0,0,4610,4605,1,0,0,0,4610,4607,1,0,0,0,4610,4608,1,0,0, - 0,4610,4609,1,0,0,0,4611,399,1,0,0,0,4612,4613,5,105,0,0,4613,4614, - 3,284,142,0,4614,401,1,0,0,0,4615,4616,3,800,400,0,4616,4617,3,388, - 194,0,4617,403,1,0,0,0,4618,4625,5,138,0,0,4619,4620,5,211,0,0,4620, - 4626,3,382,191,0,4621,4622,5,296,0,0,4622,4626,3,378,189,0,4623, - 4624,5,442,0,0,4624,4626,3,374,187,0,4625,4619,1,0,0,0,4625,4621, - 1,0,0,0,4625,4623,1,0,0,0,4626,4628,1,0,0,0,4627,4629,3,396,198, - 0,4628,4627,1,0,0,0,4629,4630,1,0,0,0,4630,4628,1,0,0,0,4630,4631, - 1,0,0,0,4631,4633,1,0,0,0,4632,4634,5,315,0,0,4633,4632,1,0,0,0, - 4633,4634,1,0,0,0,4634,405,1,0,0,0,4635,4651,5,191,0,0,4636,4638, - 5,211,0,0,4637,4639,3,422,211,0,4638,4637,1,0,0,0,4638,4639,1,0, - 0,0,4639,4640,1,0,0,0,4640,4652,3,380,190,0,4641,4643,5,296,0,0, - 4642,4644,3,422,211,0,4643,4642,1,0,0,0,4643,4644,1,0,0,0,4644,4645, - 1,0,0,0,4645,4652,3,376,188,0,4646,4648,5,442,0,0,4647,4649,3,422, - 211,0,4648,4647,1,0,0,0,4648,4649,1,0,0,0,4649,4650,1,0,0,0,4650, - 4652,3,372,186,0,4651,4636,1,0,0,0,4651,4641,1,0,0,0,4651,4646,1, - 0,0,0,4652,4654,1,0,0,0,4653,4655,3,96,48,0,4654,4653,1,0,0,0,4654, - 4655,1,0,0,0,4655,407,1,0,0,0,4656,4657,5,191,0,0,4657,4659,5,136, - 0,0,4658,4660,3,422,211,0,4659,4658,1,0,0,0,4659,4660,1,0,0,0,4660, - 4661,1,0,0,0,4661,4666,3,394,197,0,4662,4663,5,6,0,0,4663,4665,3, - 394,197,0,4664,4662,1,0,0,0,4665,4668,1,0,0,0,4666,4664,1,0,0,0, - 4666,4667,1,0,0,0,4667,4670,1,0,0,0,4668,4666,1,0,0,0,4669,4671, - 3,96,48,0,4670,4669,1,0,0,0,4670,4671,1,0,0,0,4671,409,1,0,0,0,4672, - 4673,5,191,0,0,4673,4675,5,278,0,0,4674,4676,3,422,211,0,4675,4674, - 1,0,0,0,4675,4676,1,0,0,0,4676,4677,1,0,0,0,4677,4682,3,416,208, - 0,4678,4679,5,6,0,0,4679,4681,3,416,208,0,4680,4678,1,0,0,0,4681, - 4684,1,0,0,0,4682,4680,1,0,0,0,4682,4683,1,0,0,0,4683,4686,1,0,0, - 0,4684,4682,1,0,0,0,4685,4687,3,96,48,0,4686,4685,1,0,0,0,4686,4687, - 1,0,0,0,4687,411,1,0,0,0,4688,4701,5,2,0,0,4689,4692,3,652,326,0, - 4690,4691,5,6,0,0,4691,4693,3,652,326,0,4692,4690,1,0,0,0,4692,4693, - 1,0,0,0,4693,4702,1,0,0,0,4694,4695,5,407,0,0,4695,4696,5,6,0,0, - 4696,4702,3,652,326,0,4697,4698,3,652,326,0,4698,4699,5,6,0,0,4699, - 4700,5,407,0,0,4700,4702,1,0,0,0,4701,4689,1,0,0,0,4701,4694,1,0, - 0,0,4701,4697,1,0,0,0,4702,4703,1,0,0,0,4703,4704,5,3,0,0,4704,413, - 1,0,0,0,4705,4706,3,818,409,0,4706,4707,5,11,0,0,4707,4709,1,0,0, - 0,4708,4705,1,0,0,0,4709,4712,1,0,0,0,4710,4708,1,0,0,0,4710,4711, - 1,0,0,0,4711,4713,1,0,0,0,4712,4710,1,0,0,0,4713,4714,3,720,360, - 0,4714,415,1,0,0,0,4715,4716,3,414,207,0,4716,4717,3,412,206,0,4717, - 417,1,0,0,0,4718,4722,5,57,0,0,4719,4723,3,808,404,0,4720,4721,5, - 247,0,0,4721,4723,3,58,29,0,4722,4719,1,0,0,0,4722,4720,1,0,0,0, - 4723,4724,1,0,0,0,4724,4722,1,0,0,0,4724,4725,1,0,0,0,4725,419,1, - 0,0,0,4726,4727,5,46,0,0,4727,4728,5,41,0,0,4728,4729,5,2,0,0,4729, - 4730,3,652,326,0,4730,4731,5,36,0,0,4731,4732,3,652,326,0,4732,4749, - 5,3,0,0,4733,4734,5,379,0,0,4734,4737,5,211,0,0,4735,4736,5,36,0, - 0,4736,4738,7,60,0,0,4737,4735,1,0,0,0,4737,4738,1,0,0,0,4738,4750, - 1,0,0,0,4739,4743,5,105,0,0,4740,4741,5,211,0,0,4741,4744,3,382, - 191,0,4742,4744,5,400,0,0,4743,4740,1,0,0,0,4743,4742,1,0,0,0,4744, - 4747,1,0,0,0,4745,4746,5,36,0,0,4746,4748,7,60,0,0,4747,4745,1,0, - 0,0,4747,4748,1,0,0,0,4748,4750,1,0,0,0,4749,4733,1,0,0,0,4749,4739, - 1,0,0,0,4750,421,1,0,0,0,4751,4752,5,220,0,0,4752,4753,5,396,0,0, - 4753,423,1,0,0,0,4754,4756,5,46,0,0,4755,4757,3,366,183,0,4756,4755, - 1,0,0,0,4756,4757,1,0,0,0,4757,4758,1,0,0,0,4758,4759,5,443,0,0, - 4759,4760,5,62,0,0,4760,4761,3,652,326,0,4761,4762,5,247,0,0,4762, - 4763,3,818,409,0,4763,4778,5,2,0,0,4764,4765,5,64,0,0,4765,4769, - 3,426,213,0,4766,4767,5,6,0,0,4767,4768,5,94,0,0,4768,4770,3,426, - 213,0,4769,4766,1,0,0,0,4769,4770,1,0,0,0,4770,4779,1,0,0,0,4771, - 4772,5,94,0,0,4772,4776,3,426,213,0,4773,4774,5,6,0,0,4774,4775, - 5,64,0,0,4775,4777,3,426,213,0,4776,4773,1,0,0,0,4776,4777,1,0,0, - 0,4777,4779,1,0,0,0,4778,4764,1,0,0,0,4778,4771,1,0,0,0,4779,4780, - 1,0,0,0,4780,4781,5,3,0,0,4781,425,1,0,0,0,4782,4783,5,461,0,0,4783, - 4784,5,105,0,0,4784,4785,5,211,0,0,4785,4786,3,382,191,0,4786,427, - 1,0,0,0,4787,4798,5,306,0,0,4788,4789,5,2,0,0,4789,4794,5,128,0, - 0,4790,4791,5,6,0,0,4791,4793,5,128,0,0,4792,4790,1,0,0,0,4793,4796, - 1,0,0,0,4794,4792,1,0,0,0,4794,4795,1,0,0,0,4795,4797,1,0,0,0,4796, - 4794,1,0,0,0,4797,4799,5,3,0,0,4798,4788,1,0,0,0,4798,4799,1,0,0, - 0,4799,4825,1,0,0,0,4800,4802,5,226,0,0,4801,4803,5,109,0,0,4802, - 4801,1,0,0,0,4802,4803,1,0,0,0,4803,4804,1,0,0,0,4804,4826,3,780, - 390,0,4805,4807,5,92,0,0,4806,4808,5,109,0,0,4807,4806,1,0,0,0,4807, - 4808,1,0,0,0,4808,4809,1,0,0,0,4809,4826,3,774,387,0,4810,4812,5, - 323,0,0,4811,4813,5,109,0,0,4812,4811,1,0,0,0,4812,4813,1,0,0,0, - 4813,4814,1,0,0,0,4814,4826,3,790,395,0,4815,4817,5,349,0,0,4816, - 4818,5,109,0,0,4817,4816,1,0,0,0,4817,4818,1,0,0,0,4818,4819,1,0, - 0,0,4819,4826,3,818,409,0,4820,4822,5,175,0,0,4821,4823,5,109,0, - 0,4822,4821,1,0,0,0,4822,4823,1,0,0,0,4823,4824,1,0,0,0,4824,4826, - 3,788,394,0,4825,4800,1,0,0,0,4825,4805,1,0,0,0,4825,4810,1,0,0, - 0,4825,4815,1,0,0,0,4825,4820,1,0,0,0,4826,429,1,0,0,0,4827,4828, - 5,138,0,0,4828,4829,3,176,88,0,4829,4830,7,16,0,0,4830,4831,3,100, - 50,0,4831,431,1,0,0,0,4832,4837,5,138,0,0,4833,4834,5,136,0,0,4834, - 4838,3,394,197,0,4835,4836,5,442,0,0,4836,4838,3,374,187,0,4837, - 4833,1,0,0,0,4837,4835,1,0,0,0,4838,4839,1,0,0,0,4839,4840,5,309, - 0,0,4840,4841,5,94,0,0,4841,4842,3,818,409,0,4842,5040,1,0,0,0,4843, - 4844,5,138,0,0,4844,4845,5,175,0,0,4845,4846,3,788,394,0,4846,4847, - 5,309,0,0,4847,4848,5,94,0,0,4848,4849,3,786,393,0,4849,5040,1,0, - 0,0,4850,4851,5,138,0,0,4851,4852,7,61,0,0,4852,4853,3,316,158,0, - 4853,4854,5,309,0,0,4854,4855,5,94,0,0,4855,4856,3,818,409,0,4856, - 5040,1,0,0,0,4857,4858,5,138,0,0,4858,4859,5,211,0,0,4859,4860,3, - 382,191,0,4860,4861,5,309,0,0,4861,4862,5,94,0,0,4862,4863,3,804, - 402,0,4863,5040,1,0,0,0,4864,4865,5,138,0,0,4865,4866,5,278,0,0, - 4866,4867,7,31,0,0,4867,4868,3,316,158,0,4868,4869,3,170,85,0,4869, - 4870,5,309,0,0,4870,4871,5,94,0,0,4871,4872,3,818,409,0,4872,5040, - 1,0,0,0,4873,4874,5,138,0,0,4874,4875,5,296,0,0,4875,4876,3,378, - 189,0,4876,4877,5,309,0,0,4877,4878,5,94,0,0,4878,4879,3,798,399, - 0,4879,5040,1,0,0,0,4880,4881,5,138,0,0,4881,4882,5,323,0,0,4882, - 4883,3,790,395,0,4883,4884,5,309,0,0,4884,4885,5,94,0,0,4885,4886, - 3,32,16,0,4886,5040,1,0,0,0,4887,4888,5,138,0,0,4888,4890,7,62,0, - 0,4889,4891,3,422,211,0,4890,4889,1,0,0,0,4890,4891,1,0,0,0,4891, - 4892,1,0,0,0,4892,4893,3,780,390,0,4893,4894,5,309,0,0,4894,4895, - 5,94,0,0,4895,4896,3,818,409,0,4896,5040,1,0,0,0,4897,4899,5,138, - 0,0,4898,4900,5,259,0,0,4899,4898,1,0,0,0,4899,4900,1,0,0,0,4900, - 4901,1,0,0,0,4901,4903,5,376,0,0,4902,4904,3,422,211,0,4903,4902, - 1,0,0,0,4903,4904,1,0,0,0,4904,4905,1,0,0,0,4905,4906,3,778,389, - 0,4906,4907,5,309,0,0,4907,4908,5,94,0,0,4908,4909,3,776,388,0,4909, - 5040,1,0,0,0,4910,4912,5,138,0,0,4911,4913,5,63,0,0,4912,4911,1, - 0,0,0,4912,4913,1,0,0,0,4913,4914,1,0,0,0,4914,4916,5,92,0,0,4915, - 4917,3,422,211,0,4916,4915,1,0,0,0,4916,4917,1,0,0,0,4917,4918,1, - 0,0,0,4918,4919,3,624,312,0,4919,4920,5,309,0,0,4920,4921,5,94,0, - 0,4921,4922,3,772,386,0,4922,5040,1,0,0,0,4923,4948,5,138,0,0,4924, - 4926,5,63,0,0,4925,4924,1,0,0,0,4925,4926,1,0,0,0,4926,4927,1,0, - 0,0,4927,4929,5,92,0,0,4928,4930,3,422,211,0,4929,4928,1,0,0,0,4929, - 4930,1,0,0,0,4930,4931,1,0,0,0,4931,4932,3,624,312,0,4932,4934,5, - 309,0,0,4933,4935,5,44,0,0,4934,4933,1,0,0,0,4934,4935,1,0,0,0,4935, - 4949,1,0,0,0,4936,4938,5,259,0,0,4937,4936,1,0,0,0,4937,4938,1,0, - 0,0,4938,4939,1,0,0,0,4939,4941,5,376,0,0,4940,4942,3,422,211,0, - 4941,4940,1,0,0,0,4941,4942,1,0,0,0,4942,4943,1,0,0,0,4943,4944, - 3,778,389,0,4944,4946,5,309,0,0,4945,4947,5,44,0,0,4946,4945,1,0, - 0,0,4946,4947,1,0,0,0,4947,4949,1,0,0,0,4948,4925,1,0,0,0,4948,4937, - 1,0,0,0,4949,4950,1,0,0,0,4950,4951,3,800,400,0,4951,4952,5,94,0, - 0,4952,4953,3,802,401,0,4953,5040,1,0,0,0,4954,4962,5,138,0,0,4955, - 4957,5,92,0,0,4956,4958,3,422,211,0,4957,4956,1,0,0,0,4957,4958, - 1,0,0,0,4958,4959,1,0,0,0,4959,4963,3,624,312,0,4960,4961,5,189, - 0,0,4961,4963,3,316,158,0,4962,4955,1,0,0,0,4962,4960,1,0,0,0,4963, - 4964,1,0,0,0,4964,4965,5,309,0,0,4965,4966,5,45,0,0,4966,4967,3, - 818,409,0,4967,4968,5,94,0,0,4968,4969,3,818,409,0,4969,5040,1,0, - 0,0,4970,4977,5,138,0,0,4971,4973,5,445,0,0,4972,4974,3,422,211, - 0,4973,4972,1,0,0,0,4973,4974,1,0,0,0,4974,4978,1,0,0,0,4975,4978, - 5,321,0,0,4976,4978,5,357,0,0,4977,4971,1,0,0,0,4977,4975,1,0,0, - 0,4977,4976,1,0,0,0,4978,4979,1,0,0,0,4979,4980,3,818,409,0,4980, - 4981,5,80,0,0,4981,4982,3,780,390,0,4982,4983,5,309,0,0,4983,4984, - 5,94,0,0,4984,4985,3,818,409,0,4985,5040,1,0,0,0,4986,4999,5,138, - 0,0,4987,4988,5,63,0,0,4988,4989,5,174,0,0,4989,5000,5,381,0,0,4990, - 4992,5,295,0,0,4991,4990,1,0,0,0,4991,4992,1,0,0,0,4992,4993,1,0, - 0,0,4993,5000,5,247,0,0,4994,5000,5,452,0,0,4995,5000,5,331,0,0, - 4996,5000,5,451,0,0,4997,4998,5,198,0,0,4998,5000,5,357,0,0,4999, - 4987,1,0,0,0,4999,4991,1,0,0,0,4999,4994,1,0,0,0,4999,4995,1,0,0, - 0,4999,4996,1,0,0,0,4999,4997,1,0,0,0,5000,5001,1,0,0,0,5001,5002, - 3,818,409,0,5002,5003,5,309,0,0,5003,5004,5,94,0,0,5004,5005,3,818, - 409,0,5005,5040,1,0,0,0,5006,5007,5,138,0,0,5007,5008,7,45,0,0,5008, - 5009,3,814,407,0,5009,5010,5,309,0,0,5010,5011,5,94,0,0,5011,5012, - 3,814,407,0,5012,5040,1,0,0,0,5013,5014,5,138,0,0,5014,5015,3,176, - 88,0,5015,5016,5,309,0,0,5016,5017,5,94,0,0,5017,5018,3,768,384, - 0,5018,5040,1,0,0,0,5019,5020,5,138,0,0,5020,5021,5,355,0,0,5021, - 5022,5,325,0,0,5022,5023,7,41,0,0,5023,5024,3,316,158,0,5024,5025, - 5,309,0,0,5025,5026,5,94,0,0,5026,5027,3,818,409,0,5027,5040,1,0, - 0,0,5028,5029,5,138,0,0,5029,5030,5,360,0,0,5030,5031,3,316,158, - 0,5031,5032,5,309,0,0,5032,5033,5,143,0,0,5033,5034,3,818,409,0, - 5034,5035,5,94,0,0,5035,5037,3,818,409,0,5036,5038,3,96,48,0,5037, - 5036,1,0,0,0,5037,5038,1,0,0,0,5038,5040,1,0,0,0,5039,4832,1,0,0, - 0,5039,4843,1,0,0,0,5039,4850,1,0,0,0,5039,4857,1,0,0,0,5039,4864, - 1,0,0,0,5039,4873,1,0,0,0,5039,4880,1,0,0,0,5039,4887,1,0,0,0,5039, - 4897,1,0,0,0,5039,4910,1,0,0,0,5039,4923,1,0,0,0,5039,4954,1,0,0, - 0,5039,4970,1,0,0,0,5039,4986,1,0,0,0,5039,5006,1,0,0,0,5039,5013, - 1,0,0,0,5039,5019,1,0,0,0,5039,5028,1,0,0,0,5040,433,1,0,0,0,5041, - 5058,5,138,0,0,5042,5043,5,211,0,0,5043,5059,3,382,191,0,5044,5045, - 5,296,0,0,5045,5059,3,378,189,0,5046,5047,5,442,0,0,5047,5059,3, - 374,187,0,5048,5049,5,357,0,0,5049,5050,3,818,409,0,5050,5051,5, - 80,0,0,5051,5052,3,780,390,0,5052,5059,1,0,0,0,5053,5054,5,259,0, - 0,5054,5055,5,376,0,0,5055,5059,3,778,389,0,5056,5057,5,226,0,0, - 5057,5059,3,780,390,0,5058,5042,1,0,0,0,5058,5044,1,0,0,0,5058,5046, - 1,0,0,0,5058,5048,1,0,0,0,5058,5053,1,0,0,0,5058,5056,1,0,0,0,5059, - 5061,1,0,0,0,5060,5062,5,269,0,0,5061,5060,1,0,0,0,5061,5062,1,0, - 0,0,5062,5063,1,0,0,0,5063,5064,5,462,0,0,5064,5065,5,80,0,0,5065, - 5066,5,204,0,0,5066,5067,3,818,409,0,5067,435,1,0,0,0,5068,5107, - 5,138,0,0,5069,5070,5,136,0,0,5070,5108,3,394,197,0,5071,5072,5, - 204,0,0,5072,5108,3,818,409,0,5073,5074,5,211,0,0,5074,5108,3,382, - 191,0,5075,5076,5,278,0,0,5076,5108,3,416,208,0,5077,5078,5,278, - 0,0,5078,5079,7,31,0,0,5079,5080,3,316,158,0,5080,5081,3,170,85, - 0,5081,5108,1,0,0,0,5082,5083,5,296,0,0,5083,5108,3,378,189,0,5084, - 5085,5,442,0,0,5085,5108,3,374,187,0,5086,5088,5,328,0,0,5087,5089, - 3,422,211,0,5088,5087,1,0,0,0,5088,5089,1,0,0,0,5089,5090,1,0,0, - 0,5090,5108,3,780,390,0,5091,5093,5,259,0,0,5092,5091,1,0,0,0,5092, - 5093,1,0,0,0,5093,5094,1,0,0,0,5094,5096,5,376,0,0,5095,5097,3,422, - 211,0,5096,5095,1,0,0,0,5096,5097,1,0,0,0,5097,5098,1,0,0,0,5098, - 5108,3,778,389,0,5099,5101,5,63,0,0,5100,5099,1,0,0,0,5100,5101, - 1,0,0,0,5101,5102,1,0,0,0,5102,5104,5,92,0,0,5103,5105,3,422,211, - 0,5104,5103,1,0,0,0,5104,5105,1,0,0,0,5105,5106,1,0,0,0,5106,5108, - 3,624,312,0,5107,5069,1,0,0,0,5107,5071,1,0,0,0,5107,5073,1,0,0, - 0,5107,5075,1,0,0,0,5107,5077,1,0,0,0,5107,5082,1,0,0,0,5107,5084, - 1,0,0,0,5107,5086,1,0,0,0,5107,5092,1,0,0,0,5107,5100,1,0,0,0,5108, - 5109,1,0,0,0,5109,5110,5,333,0,0,5110,5111,5,323,0,0,5111,5112,3, - 790,395,0,5112,5130,1,0,0,0,5113,5122,5,138,0,0,5114,5115,5,355, - 0,0,5115,5116,5,325,0,0,5116,5123,7,41,0,0,5117,5123,5,108,0,0,5118, - 5123,5,168,0,0,5119,5123,5,189,0,0,5120,5123,5,342,0,0,5121,5123, - 5,360,0,0,5122,5114,1,0,0,0,5122,5117,1,0,0,0,5122,5118,1,0,0,0, - 5122,5119,1,0,0,0,5122,5120,1,0,0,0,5122,5121,1,0,0,0,5123,5124, - 1,0,0,0,5124,5125,3,316,158,0,5125,5126,5,333,0,0,5126,5127,5,323, - 0,0,5127,5128,3,790,395,0,5128,5130,1,0,0,0,5129,5068,1,0,0,0,5129, - 5113,1,0,0,0,5130,437,1,0,0,0,5131,5132,5,138,0,0,5132,5133,5,278, - 0,0,5133,5134,3,416,208,0,5134,5135,5,333,0,0,5135,5136,3,440,220, - 0,5136,439,1,0,0,0,5137,5138,5,2,0,0,5138,5143,3,442,221,0,5139, - 5140,5,6,0,0,5140,5142,3,442,221,0,5141,5139,1,0,0,0,5142,5145,1, - 0,0,0,5143,5141,1,0,0,0,5143,5144,1,0,0,0,5144,5146,1,0,0,0,5145, - 5143,1,0,0,0,5146,5147,5,3,0,0,5147,441,1,0,0,0,5148,5149,3,824, - 412,0,5149,5156,5,10,0,0,5150,5157,5,407,0,0,5151,5157,3,388,194, - 0,5152,5157,3,834,417,0,5153,5157,3,726,363,0,5154,5157,3,202,101, - 0,5155,5157,3,808,404,0,5156,5150,1,0,0,0,5156,5151,1,0,0,0,5156, - 5152,1,0,0,0,5156,5153,1,0,0,0,5156,5154,1,0,0,0,5156,5155,1,0,0, - 0,5157,443,1,0,0,0,5158,5159,5,138,0,0,5159,5160,5,360,0,0,5160, - 5161,3,316,158,0,5161,5162,5,333,0,0,5162,5163,3,440,220,0,5163, - 445,1,0,0,0,5164,5165,5,138,0,0,5165,5166,5,278,0,0,5166,5167,7, - 31,0,0,5167,5168,3,316,158,0,5168,5169,3,170,85,0,5169,5170,5,282, - 0,0,5170,5171,5,94,0,0,5171,5172,3,814,407,0,5172,5239,1,0,0,0,5173, - 5200,5,138,0,0,5174,5175,5,136,0,0,5175,5201,3,394,197,0,5176,5177, - 5,175,0,0,5177,5201,3,788,394,0,5178,5179,5,211,0,0,5179,5201,3, - 382,191,0,5180,5182,5,295,0,0,5181,5180,1,0,0,0,5181,5182,1,0,0, - 0,5182,5183,1,0,0,0,5183,5184,5,247,0,0,5184,5201,3,818,409,0,5185, - 5186,5,248,0,0,5186,5187,5,274,0,0,5187,5201,3,202,101,0,5188,5189, - 5,248,0,0,5189,5190,5,274,0,0,5190,5201,3,202,101,0,5191,5192,5, - 278,0,0,5192,5201,3,416,208,0,5193,5194,5,296,0,0,5194,5201,3,378, - 189,0,5195,5196,5,442,0,0,5196,5201,3,374,187,0,5197,5198,5,323, - 0,0,5198,5201,3,790,395,0,5199,5201,3,176,88,0,5200,5174,1,0,0,0, - 5200,5176,1,0,0,0,5200,5178,1,0,0,0,5200,5181,1,0,0,0,5200,5185, - 1,0,0,0,5200,5188,1,0,0,0,5200,5191,1,0,0,0,5200,5193,1,0,0,0,5200, - 5195,1,0,0,0,5200,5197,1,0,0,0,5200,5199,1,0,0,0,5201,5202,1,0,0, - 0,5202,5203,5,282,0,0,5203,5204,5,94,0,0,5204,5205,3,814,407,0,5205, - 5239,1,0,0,0,5206,5215,5,138,0,0,5207,5208,5,355,0,0,5208,5209,5, - 325,0,0,5209,5216,7,63,0,0,5210,5216,5,108,0,0,5211,5216,5,168,0, - 0,5212,5216,5,189,0,0,5213,5216,5,360,0,0,5214,5216,5,342,0,0,5215, - 5207,1,0,0,0,5215,5210,1,0,0,0,5215,5211,1,0,0,0,5215,5212,1,0,0, - 0,5215,5213,1,0,0,0,5215,5214,1,0,0,0,5216,5217,1,0,0,0,5217,5218, - 3,316,158,0,5218,5219,5,282,0,0,5219,5220,5,94,0,0,5220,5221,3,814, - 407,0,5221,5239,1,0,0,0,5222,5231,5,138,0,0,5223,5232,5,331,0,0, - 5224,5225,5,63,0,0,5225,5226,5,174,0,0,5226,5232,5,381,0,0,5227, - 5228,5,198,0,0,5228,5232,5,357,0,0,5229,5232,5,452,0,0,5230,5232, - 5,451,0,0,5231,5223,1,0,0,0,5231,5224,1,0,0,0,5231,5227,1,0,0,0, - 5231,5229,1,0,0,0,5231,5230,1,0,0,0,5232,5233,1,0,0,0,5233,5234, - 3,818,409,0,5234,5235,5,282,0,0,5235,5236,5,94,0,0,5236,5237,3,814, - 407,0,5237,5239,1,0,0,0,5238,5164,1,0,0,0,5238,5173,1,0,0,0,5238, - 5206,1,0,0,0,5238,5222,1,0,0,0,5239,447,1,0,0,0,5240,5241,5,46,0, - 0,5241,5242,5,452,0,0,5242,5249,3,818,409,0,5243,5244,5,62,0,0,5244, - 5245,5,92,0,0,5245,5250,3,628,314,0,5246,5247,5,62,0,0,5247,5248, - 5,30,0,0,5248,5250,5,350,0,0,5249,5243,1,0,0,0,5249,5246,1,0,0,0, - 5249,5250,1,0,0,0,5250,5252,1,0,0,0,5251,5253,3,400,200,0,5252,5251, - 1,0,0,0,5252,5253,1,0,0,0,5253,449,1,0,0,0,5254,5255,5,138,0,0,5255, - 5256,5,452,0,0,5256,5274,3,818,409,0,5257,5258,5,282,0,0,5258,5259, - 5,94,0,0,5259,5275,3,814,407,0,5260,5261,5,333,0,0,5261,5275,3,284, - 142,0,5262,5263,5,309,0,0,5263,5264,5,94,0,0,5264,5275,3,818,409, - 0,5265,5266,7,34,0,0,5266,5271,3,626,313,0,5267,5268,5,6,0,0,5268, - 5270,3,626,313,0,5269,5267,1,0,0,0,5270,5273,1,0,0,0,5271,5269,1, - 0,0,0,5271,5272,1,0,0,0,5272,5275,1,0,0,0,5273,5271,1,0,0,0,5274, - 5257,1,0,0,0,5274,5260,1,0,0,0,5274,5262,1,0,0,0,5274,5265,1,0,0, - 0,5275,451,1,0,0,0,5276,5277,5,46,0,0,5277,5278,5,451,0,0,5278,5279, - 3,818,409,0,5279,5280,5,164,0,0,5280,5281,3,808,404,0,5281,5282, - 5,452,0,0,5282,5287,3,824,412,0,5283,5284,5,6,0,0,5284,5286,3,824, - 412,0,5285,5283,1,0,0,0,5286,5289,1,0,0,0,5287,5285,1,0,0,0,5287, - 5288,1,0,0,0,5288,5291,1,0,0,0,5289,5287,1,0,0,0,5290,5292,3,400, - 200,0,5291,5290,1,0,0,0,5291,5292,1,0,0,0,5292,453,1,0,0,0,5293, - 5294,5,138,0,0,5294,5295,5,451,0,0,5295,5296,3,818,409,0,5296,5297, - 5,333,0,0,5297,5298,3,284,142,0,5298,5350,1,0,0,0,5299,5300,5,138, - 0,0,5300,5301,5,451,0,0,5301,5302,3,818,409,0,5302,5303,5,164,0, - 0,5303,5304,3,808,404,0,5304,5350,1,0,0,0,5305,5306,5,138,0,0,5306, - 5307,5,451,0,0,5307,5308,3,818,409,0,5308,5309,5,305,0,0,5309,5311, - 5,452,0,0,5310,5312,3,400,200,0,5311,5310,1,0,0,0,5311,5312,1,0, - 0,0,5312,5350,1,0,0,0,5313,5314,5,138,0,0,5314,5315,5,451,0,0,5315, - 5316,3,818,409,0,5316,5317,7,34,0,0,5317,5318,5,452,0,0,5318,5323, - 3,824,412,0,5319,5320,5,6,0,0,5320,5322,3,824,412,0,5321,5319,1, - 0,0,0,5322,5325,1,0,0,0,5323,5321,1,0,0,0,5323,5324,1,0,0,0,5324, - 5327,1,0,0,0,5325,5323,1,0,0,0,5326,5328,3,400,200,0,5327,5326,1, - 0,0,0,5327,5328,1,0,0,0,5328,5350,1,0,0,0,5329,5330,5,138,0,0,5330, - 5331,5,451,0,0,5331,5332,3,818,409,0,5332,5333,7,64,0,0,5333,5350, - 1,0,0,0,5334,5335,5,138,0,0,5335,5336,5,451,0,0,5336,5337,3,818, - 409,0,5337,5338,5,465,0,0,5338,5339,5,2,0,0,5339,5340,3,290,145, - 0,5340,5341,5,3,0,0,5341,5350,1,0,0,0,5342,5343,5,138,0,0,5343,5344, - 5,451,0,0,5344,5345,3,818,409,0,5345,5346,5,282,0,0,5346,5347,5, - 94,0,0,5347,5348,3,814,407,0,5348,5350,1,0,0,0,5349,5293,1,0,0,0, - 5349,5299,1,0,0,0,5349,5305,1,0,0,0,5349,5313,1,0,0,0,5349,5329, - 1,0,0,0,5349,5334,1,0,0,0,5349,5342,1,0,0,0,5350,455,1,0,0,0,5351, - 5353,5,46,0,0,5352,5354,3,366,183,0,5353,5352,1,0,0,0,5353,5354, - 1,0,0,0,5354,5355,1,0,0,0,5355,5356,5,321,0,0,5356,5357,3,818,409, - 0,5357,5358,5,36,0,0,5358,5359,5,80,0,0,5359,5360,7,65,0,0,5360, - 5361,5,94,0,0,5361,5363,3,780,390,0,5362,5364,3,638,319,0,5363,5362, - 1,0,0,0,5363,5364,1,0,0,0,5364,5365,1,0,0,0,5365,5367,5,57,0,0,5366, - 5368,7,66,0,0,5367,5366,1,0,0,0,5367,5368,1,0,0,0,5368,5385,1,0, - 0,0,5369,5386,5,270,0,0,5370,5386,3,458,229,0,5371,5373,5,2,0,0, - 5372,5374,3,458,229,0,5373,5372,1,0,0,0,5373,5374,1,0,0,0,5374,5381, - 1,0,0,0,5375,5377,5,7,0,0,5376,5378,3,458,229,0,5377,5376,1,0,0, - 0,5377,5378,1,0,0,0,5378,5380,1,0,0,0,5379,5375,1,0,0,0,5380,5383, - 1,0,0,0,5381,5379,1,0,0,0,5381,5382,1,0,0,0,5382,5384,1,0,0,0,5383, - 5381,1,0,0,0,5384,5386,5,3,0,0,5385,5369,1,0,0,0,5385,5370,1,0,0, - 0,5385,5371,1,0,0,0,5386,457,1,0,0,0,5387,5393,3,560,280,0,5388, - 5393,3,538,269,0,5389,5393,3,552,276,0,5390,5393,3,548,274,0,5391, - 5393,3,460,230,0,5392,5387,1,0,0,0,5392,5388,1,0,0,0,5392,5389,1, - 0,0,0,5392,5390,1,0,0,0,5392,5391,1,0,0,0,5393,459,1,0,0,0,5394, - 5395,5,271,0,0,5395,5397,3,818,409,0,5396,5398,3,462,231,0,5397, - 5396,1,0,0,0,5397,5398,1,0,0,0,5398,461,1,0,0,0,5399,5400,5,6,0, - 0,5400,5401,3,808,404,0,5401,463,1,0,0,0,5402,5403,5,252,0,0,5403, - 5404,3,818,409,0,5404,465,1,0,0,0,5405,5408,5,366,0,0,5406,5409, - 3,818,409,0,5407,5409,5,9,0,0,5408,5406,1,0,0,0,5408,5407,1,0,0, - 0,5409,467,1,0,0,0,5410,5412,5,146,0,0,5411,5413,3,470,235,0,5412, - 5411,1,0,0,0,5412,5413,1,0,0,0,5413,5415,1,0,0,0,5414,5416,3,474, - 237,0,5415,5414,1,0,0,0,5415,5416,1,0,0,0,5416,5456,1,0,0,0,5417, - 5418,5,340,0,0,5418,5420,5,356,0,0,5419,5421,3,474,237,0,5420,5419, - 1,0,0,0,5420,5421,1,0,0,0,5421,5456,1,0,0,0,5422,5423,5,322,0,0, - 5423,5456,3,818,409,0,5424,5426,5,308,0,0,5425,5427,5,322,0,0,5426, - 5425,1,0,0,0,5426,5427,1,0,0,0,5427,5428,1,0,0,0,5428,5456,3,818, - 409,0,5429,5430,5,290,0,0,5430,5431,5,356,0,0,5431,5456,3,808,404, - 0,5432,5433,7,67,0,0,5433,5434,5,291,0,0,5434,5456,3,808,404,0,5435, - 5437,7,68,0,0,5436,5438,3,470,235,0,5437,5436,1,0,0,0,5437,5438, - 1,0,0,0,5438,5444,1,0,0,0,5439,5441,5,33,0,0,5440,5442,5,269,0,0, - 5441,5440,1,0,0,0,5441,5442,1,0,0,0,5442,5443,1,0,0,0,5443,5445, - 5,153,0,0,5444,5439,1,0,0,0,5444,5445,1,0,0,0,5445,5456,1,0,0,0, - 5446,5448,5,319,0,0,5447,5449,3,470,235,0,5448,5447,1,0,0,0,5448, - 5449,1,0,0,0,5449,5450,1,0,0,0,5450,5452,5,94,0,0,5451,5453,5,322, - 0,0,5452,5451,1,0,0,0,5452,5453,1,0,0,0,5453,5454,1,0,0,0,5454,5456, - 3,818,409,0,5455,5410,1,0,0,0,5455,5417,1,0,0,0,5455,5422,1,0,0, - 0,5455,5424,1,0,0,0,5455,5429,1,0,0,0,5455,5432,1,0,0,0,5455,5435, - 1,0,0,0,5455,5446,1,0,0,0,5456,469,1,0,0,0,5457,5458,7,69,0,0,5458, - 471,1,0,0,0,5459,5460,5,244,0,0,5460,5461,5,251,0,0,5461,5469,3, - 50,25,0,5462,5463,5,300,0,0,5463,5469,7,70,0,0,5464,5466,5,77,0, - 0,5465,5464,1,0,0,0,5465,5466,1,0,0,0,5466,5467,1,0,0,0,5467,5469, - 5,54,0,0,5468,5459,1,0,0,0,5468,5462,1,0,0,0,5468,5465,1,0,0,0,5469, - 473,1,0,0,0,5470,5477,3,472,236,0,5471,5473,5,6,0,0,5472,5471,1, - 0,0,0,5472,5473,1,0,0,0,5473,5474,1,0,0,0,5474,5476,3,472,236,0, - 5475,5472,1,0,0,0,5476,5479,1,0,0,0,5477,5475,1,0,0,0,5477,5478, - 1,0,0,0,5478,475,1,0,0,0,5479,5477,1,0,0,0,5480,5483,5,46,0,0,5481, - 5482,5,82,0,0,5482,5484,5,311,0,0,5483,5481,1,0,0,0,5483,5484,1, - 0,0,0,5484,5486,1,0,0,0,5485,5487,3,122,61,0,5486,5485,1,0,0,0,5486, - 5487,1,0,0,0,5487,5503,1,0,0,0,5488,5489,5,376,0,0,5489,5491,3,776, - 388,0,5490,5492,3,146,73,0,5491,5490,1,0,0,0,5491,5492,1,0,0,0,5492, - 5494,1,0,0,0,5493,5495,3,102,51,0,5494,5493,1,0,0,0,5494,5495,1, - 0,0,0,5495,5504,1,0,0,0,5496,5497,5,303,0,0,5497,5498,5,376,0,0, - 5498,5499,3,776,388,0,5499,5501,3,144,72,0,5500,5502,3,102,51,0, - 5501,5500,1,0,0,0,5501,5502,1,0,0,0,5502,5504,1,0,0,0,5503,5488, - 1,0,0,0,5503,5496,1,0,0,0,5504,5505,1,0,0,0,5505,5506,5,36,0,0,5506, - 5513,3,560,280,0,5507,5509,5,105,0,0,5508,5510,7,71,0,0,5509,5508, - 1,0,0,0,5509,5510,1,0,0,0,5510,5511,1,0,0,0,5511,5512,5,42,0,0,5512, - 5514,5,279,0,0,5513,5507,1,0,0,0,5513,5514,1,0,0,0,5514,477,1,0, - 0,0,5515,5516,5,253,0,0,5516,5517,3,808,404,0,5517,479,1,0,0,0,5518, - 5519,5,46,0,0,5519,5520,5,175,0,0,5520,5522,3,786,393,0,5521,5523, - 5,105,0,0,5522,5521,1,0,0,0,5522,5523,1,0,0,0,5523,5529,1,0,0,0, - 5524,5526,3,482,241,0,5525,5524,1,0,0,0,5526,5527,1,0,0,0,5527,5525, - 1,0,0,0,5527,5528,1,0,0,0,5528,5530,1,0,0,0,5529,5525,1,0,0,0,5529, - 5530,1,0,0,0,5530,481,1,0,0,0,5531,5532,5,164,0,0,5532,5540,5,74, - 0,0,5533,5540,5,194,0,0,5534,5540,5,255,0,0,5535,5540,5,282,0,0, - 5536,5540,5,351,0,0,5537,5540,5,353,0,0,5538,5540,3,826,413,0,5539, - 5531,1,0,0,0,5539,5533,1,0,0,0,5539,5534,1,0,0,0,5539,5535,1,0,0, - 0,5539,5536,1,0,0,0,5539,5537,1,0,0,0,5539,5538,1,0,0,0,5540,5542, - 1,0,0,0,5541,5543,5,10,0,0,5542,5541,1,0,0,0,5542,5543,1,0,0,0,5543, - 5547,1,0,0,0,5544,5548,3,812,406,0,5545,5548,3,54,27,0,5546,5548, - 5,53,0,0,5547,5544,1,0,0,0,5547,5545,1,0,0,0,5547,5546,1,0,0,0,5548, - 483,1,0,0,0,5549,5550,5,138,0,0,5550,5551,5,175,0,0,5551,5567,3, - 788,394,0,5552,5553,5,333,0,0,5553,5554,5,351,0,0,5554,5556,3,768, - 384,0,5555,5552,1,0,0,0,5555,5556,1,0,0,0,5556,5568,1,0,0,0,5557, - 5559,5,105,0,0,5558,5557,1,0,0,0,5558,5559,1,0,0,0,5559,5561,1,0, - 0,0,5560,5562,3,482,241,0,5561,5560,1,0,0,0,5562,5563,1,0,0,0,5563, - 5561,1,0,0,0,5563,5564,1,0,0,0,5564,5566,1,0,0,0,5565,5558,1,0,0, - 0,5565,5566,1,0,0,0,5566,5568,1,0,0,0,5567,5555,1,0,0,0,5567,5565, - 1,0,0,0,5568,485,1,0,0,0,5569,5570,5,138,0,0,5570,5571,5,175,0,0, - 5571,5573,3,788,394,0,5572,5574,3,64,32,0,5573,5572,1,0,0,0,5573, - 5574,1,0,0,0,5574,487,1,0,0,0,5575,5576,5,138,0,0,5576,5577,5,108, - 0,0,5577,5578,3,316,158,0,5578,5579,5,305,0,0,5579,5580,5,375,0, - 0,5580,489,1,0,0,0,5581,5582,5,138,0,0,5582,5583,5,349,0,0,5583, - 5584,7,16,0,0,5584,5585,3,40,20,0,5585,491,1,0,0,0,5586,5587,5,46, - 0,0,5587,5588,5,189,0,0,5588,5590,3,316,158,0,5589,5591,5,36,0,0, - 5590,5589,1,0,0,0,5590,5591,1,0,0,0,5591,5592,1,0,0,0,5592,5596, - 3,652,326,0,5593,5595,3,134,67,0,5594,5593,1,0,0,0,5595,5598,1,0, - 0,0,5596,5594,1,0,0,0,5596,5597,1,0,0,0,5597,493,1,0,0,0,5598,5596, - 1,0,0,0,5599,5600,5,138,0,0,5600,5601,5,189,0,0,5601,5624,3,316, - 158,0,5602,5625,3,94,47,0,5603,5604,7,15,0,0,5604,5605,5,77,0,0, - 5605,5625,5,78,0,0,5606,5609,5,133,0,0,5607,5608,5,45,0,0,5608,5610, - 3,818,409,0,5609,5607,1,0,0,0,5609,5610,1,0,0,0,5610,5611,1,0,0, - 0,5611,5625,3,142,71,0,5612,5613,5,191,0,0,5613,5615,5,45,0,0,5614, - 5616,3,422,211,0,5615,5614,1,0,0,0,5615,5616,1,0,0,0,5616,5617,1, - 0,0,0,5617,5619,3,818,409,0,5618,5620,3,96,48,0,5619,5618,1,0,0, - 0,5619,5620,1,0,0,0,5620,5625,1,0,0,0,5621,5622,5,372,0,0,5622,5623, - 5,45,0,0,5623,5625,3,818,409,0,5624,5602,1,0,0,0,5624,5603,1,0,0, - 0,5624,5606,1,0,0,0,5624,5612,1,0,0,0,5624,5621,1,0,0,0,5625,495, - 1,0,0,0,5626,5627,5,138,0,0,5627,5628,5,355,0,0,5628,5629,5,325, - 0,0,5629,5630,5,185,0,0,5630,5631,3,316,158,0,5631,5632,3,284,142, - 0,5632,497,1,0,0,0,5633,5634,5,138,0,0,5634,5635,5,355,0,0,5635, - 5636,5,325,0,0,5636,5637,5,163,0,0,5637,5638,3,316,158,0,5638,5639, - 7,72,0,0,5639,5640,5,257,0,0,5640,5641,5,62,0,0,5641,5642,3,784, - 392,0,5642,5643,5,105,0,0,5643,5644,3,314,157,0,5644,5675,1,0,0, - 0,5645,5646,5,138,0,0,5646,5647,5,355,0,0,5647,5648,5,325,0,0,5648, - 5649,5,163,0,0,5649,5650,3,316,158,0,5650,5651,5,138,0,0,5651,5654, - 5,257,0,0,5652,5653,5,62,0,0,5653,5655,3,784,392,0,5654,5652,1,0, - 0,0,5654,5655,1,0,0,0,5655,5656,1,0,0,0,5656,5657,5,311,0,0,5657, - 5658,3,316,158,0,5658,5659,5,105,0,0,5659,5660,3,316,158,0,5660, - 5675,1,0,0,0,5661,5662,5,138,0,0,5662,5663,5,355,0,0,5663,5664,5, - 325,0,0,5664,5665,5,163,0,0,5665,5666,3,316,158,0,5666,5667,5,191, - 0,0,5667,5669,5,257,0,0,5668,5670,3,422,211,0,5669,5668,1,0,0,0, - 5669,5670,1,0,0,0,5670,5671,1,0,0,0,5671,5672,5,62,0,0,5672,5673, - 3,784,392,0,5673,5675,1,0,0,0,5674,5633,1,0,0,0,5674,5645,1,0,0, - 0,5674,5661,1,0,0,0,5675,499,1,0,0,0,5676,5678,5,46,0,0,5677,5679, - 5,53,0,0,5678,5677,1,0,0,0,5678,5679,1,0,0,0,5679,5680,1,0,0,0,5680, - 5681,5,168,0,0,5681,5682,3,316,158,0,5682,5683,5,62,0,0,5683,5684, - 3,808,404,0,5684,5685,5,94,0,0,5685,5686,3,808,404,0,5686,5687,5, - 64,0,0,5687,5688,3,316,158,0,5688,501,1,0,0,0,5689,5691,5,158,0, - 0,5690,5692,3,514,257,0,5691,5690,1,0,0,0,5691,5692,1,0,0,0,5692, - 5697,1,0,0,0,5693,5695,3,774,387,0,5694,5696,3,170,85,0,5695,5694, - 1,0,0,0,5695,5696,1,0,0,0,5696,5698,1,0,0,0,5697,5693,1,0,0,0,5697, - 5698,1,0,0,0,5698,5715,1,0,0,0,5699,5700,5,158,0,0,5700,5701,5,2, - 0,0,5701,5706,3,514,257,0,5702,5703,5,6,0,0,5703,5705,3,514,257, - 0,5704,5702,1,0,0,0,5705,5708,1,0,0,0,5706,5704,1,0,0,0,5706,5707, - 1,0,0,0,5707,5709,1,0,0,0,5708,5706,1,0,0,0,5709,5710,5,3,0,0,5710, - 5712,3,774,387,0,5711,5713,3,170,85,0,5712,5711,1,0,0,0,5712,5713, - 1,0,0,0,5713,5715,1,0,0,0,5714,5689,1,0,0,0,5714,5699,1,0,0,0,5715, - 503,1,0,0,0,5716,5732,5,370,0,0,5717,5719,5,113,0,0,5718,5717,1, - 0,0,0,5718,5719,1,0,0,0,5719,5721,1,0,0,0,5720,5722,5,112,0,0,5721, - 5720,1,0,0,0,5721,5722,1,0,0,0,5722,5724,1,0,0,0,5723,5725,3,514, - 257,0,5724,5723,1,0,0,0,5724,5725,1,0,0,0,5725,5727,1,0,0,0,5726, - 5728,3,508,254,0,5727,5726,1,0,0,0,5727,5728,1,0,0,0,5728,5733,1, - 0,0,0,5729,5731,3,524,262,0,5730,5729,1,0,0,0,5730,5731,1,0,0,0, - 5731,5733,1,0,0,0,5732,5718,1,0,0,0,5732,5730,1,0,0,0,5733,5735, - 1,0,0,0,5734,5736,3,518,259,0,5735,5734,1,0,0,0,5735,5736,1,0,0, - 0,5736,505,1,0,0,0,5737,5752,3,508,254,0,5738,5740,3,514,257,0,5739, - 5738,1,0,0,0,5739,5740,1,0,0,0,5740,5753,1,0,0,0,5741,5742,5,2,0, - 0,5742,5747,3,512,256,0,5743,5744,5,6,0,0,5744,5746,3,512,256,0, - 5745,5743,1,0,0,0,5746,5749,1,0,0,0,5747,5745,1,0,0,0,5747,5748, - 1,0,0,0,5748,5750,1,0,0,0,5749,5747,1,0,0,0,5750,5751,5,3,0,0,5751, - 5753,1,0,0,0,5752,5739,1,0,0,0,5752,5741,1,0,0,0,5753,5755,1,0,0, - 0,5754,5756,3,518,259,0,5755,5754,1,0,0,0,5755,5756,1,0,0,0,5756, - 507,1,0,0,0,5757,5758,7,73,0,0,5758,509,1,0,0,0,5759,5762,3,822, - 411,0,5760,5762,3,508,254,0,5761,5759,1,0,0,0,5761,5760,1,0,0,0, - 5762,5765,1,0,0,0,5763,5766,3,54,27,0,5764,5766,3,202,101,0,5765, - 5763,1,0,0,0,5765,5764,1,0,0,0,5765,5766,1,0,0,0,5766,511,1,0,0, - 0,5767,5769,7,74,0,0,5768,5770,7,75,0,0,5769,5768,1,0,0,0,5769,5770, - 1,0,0,0,5770,5777,1,0,0,0,5771,5774,5,548,0,0,5772,5775,3,202,101, - 0,5773,5775,3,808,404,0,5774,5772,1,0,0,0,5774,5773,1,0,0,0,5775, - 5777,1,0,0,0,5776,5767,1,0,0,0,5776,5771,1,0,0,0,5777,513,1,0,0, - 0,5778,5780,5,128,0,0,5779,5781,7,75,0,0,5780,5779,1,0,0,0,5780, - 5781,1,0,0,0,5781,515,1,0,0,0,5782,5784,3,774,387,0,5783,5785,3, - 144,72,0,5784,5783,1,0,0,0,5784,5785,1,0,0,0,5785,517,1,0,0,0,5786, - 5791,3,516,258,0,5787,5788,5,6,0,0,5788,5790,3,516,258,0,5789,5787, - 1,0,0,0,5790,5793,1,0,0,0,5791,5789,1,0,0,0,5791,5792,1,0,0,0,5792, - 519,1,0,0,0,5793,5791,1,0,0,0,5794,5805,5,203,0,0,5795,5806,3,524, - 262,0,5796,5798,5,128,0,0,5797,5796,1,0,0,0,5797,5798,1,0,0,0,5798, - 5806,1,0,0,0,5799,5801,3,508,254,0,5800,5802,3,514,257,0,5801,5800, - 1,0,0,0,5801,5802,1,0,0,0,5802,5804,1,0,0,0,5803,5799,1,0,0,0,5803, - 5804,1,0,0,0,5804,5806,1,0,0,0,5805,5795,1,0,0,0,5805,5797,1,0,0, - 0,5805,5803,1,0,0,0,5806,5807,1,0,0,0,5807,5808,3,522,261,0,5808, - 521,1,0,0,0,5809,5819,3,560,280,0,5810,5819,3,538,269,0,5811,5819, - 3,552,276,0,5812,5819,3,548,274,0,5813,5819,3,558,279,0,5814,5819, - 3,186,93,0,5815,5819,3,192,96,0,5816,5819,3,194,97,0,5817,5819,3, - 532,266,0,5818,5809,1,0,0,0,5818,5810,1,0,0,0,5818,5811,1,0,0,0, - 5818,5812,1,0,0,0,5818,5813,1,0,0,0,5818,5814,1,0,0,0,5818,5815, - 1,0,0,0,5818,5816,1,0,0,0,5818,5817,1,0,0,0,5819,523,1,0,0,0,5820, - 5821,5,2,0,0,5821,5826,3,510,255,0,5822,5823,5,6,0,0,5823,5825,3, - 510,255,0,5824,5822,1,0,0,0,5825,5828,1,0,0,0,5826,5824,1,0,0,0, - 5826,5827,1,0,0,0,5827,5829,1,0,0,0,5828,5826,1,0,0,0,5829,5830, - 5,3,0,0,5830,525,1,0,0,0,5831,5832,5,290,0,0,5832,5834,3,818,409, - 0,5833,5835,3,528,264,0,5834,5833,1,0,0,0,5834,5835,1,0,0,0,5835, - 5836,1,0,0,0,5836,5837,5,36,0,0,5837,5838,3,530,265,0,5838,527,1, - 0,0,0,5839,5840,5,2,0,0,5840,5845,3,652,326,0,5841,5842,5,6,0,0, - 5842,5844,3,652,326,0,5843,5841,1,0,0,0,5844,5847,1,0,0,0,5845,5843, - 1,0,0,0,5845,5846,1,0,0,0,5846,5848,1,0,0,0,5847,5845,1,0,0,0,5848, - 5849,5,3,0,0,5849,529,1,0,0,0,5850,5855,3,560,280,0,5851,5855,3, - 538,269,0,5852,5855,3,552,276,0,5853,5855,3,548,274,0,5854,5850, - 1,0,0,0,5854,5851,1,0,0,0,5854,5852,1,0,0,0,5854,5853,1,0,0,0,5855, - 531,1,0,0,0,5856,5857,5,202,0,0,5857,5859,3,818,409,0,5858,5860, - 3,534,267,0,5859,5858,1,0,0,0,5859,5860,1,0,0,0,5860,5880,1,0,0, - 0,5861,5863,5,46,0,0,5862,5864,3,122,61,0,5863,5862,1,0,0,0,5863, - 5864,1,0,0,0,5864,5865,1,0,0,0,5865,5867,5,92,0,0,5866,5868,3,294, - 147,0,5867,5866,1,0,0,0,5867,5868,1,0,0,0,5868,5869,1,0,0,0,5869, - 5870,3,188,94,0,5870,5871,5,36,0,0,5871,5872,5,202,0,0,5872,5874, - 3,818,409,0,5873,5875,3,534,267,0,5874,5873,1,0,0,0,5874,5875,1, - 0,0,0,5875,5877,1,0,0,0,5876,5878,3,190,95,0,5877,5876,1,0,0,0,5877, - 5878,1,0,0,0,5878,5880,1,0,0,0,5879,5856,1,0,0,0,5879,5861,1,0,0, - 0,5880,533,1,0,0,0,5881,5882,5,2,0,0,5882,5883,3,730,365,0,5883, - 5884,5,3,0,0,5884,535,1,0,0,0,5885,5887,5,177,0,0,5886,5888,5,290, - 0,0,5887,5886,1,0,0,0,5887,5888,1,0,0,0,5888,5891,1,0,0,0,5889,5892, - 3,818,409,0,5890,5892,5,30,0,0,5891,5889,1,0,0,0,5891,5890,1,0,0, - 0,5892,537,1,0,0,0,5893,5895,3,572,286,0,5894,5893,1,0,0,0,5894, - 5895,1,0,0,0,5895,5896,1,0,0,0,5896,5897,5,241,0,0,5897,5898,5,71, - 0,0,5898,5901,3,774,387,0,5899,5900,5,36,0,0,5900,5902,3,818,409, - 0,5901,5899,1,0,0,0,5901,5902,1,0,0,0,5902,5903,1,0,0,0,5903,5925, - 3,540,270,0,5904,5905,5,80,0,0,5905,5913,5,464,0,0,5906,5908,3,360, - 180,0,5907,5909,3,638,319,0,5908,5907,1,0,0,0,5908,5909,1,0,0,0, - 5909,5914,1,0,0,0,5910,5911,5,80,0,0,5911,5912,5,45,0,0,5912,5914, - 3,818,409,0,5913,5906,1,0,0,0,5913,5910,1,0,0,0,5913,5914,1,0,0, - 0,5914,5915,1,0,0,0,5915,5923,5,57,0,0,5916,5917,5,369,0,0,5917, - 5918,5,333,0,0,5918,5920,3,554,277,0,5919,5921,3,638,319,0,5920, - 5919,1,0,0,0,5920,5921,1,0,0,0,5921,5924,1,0,0,0,5922,5924,5,270, - 0,0,5923,5916,1,0,0,0,5923,5922,1,0,0,0,5924,5926,1,0,0,0,5925,5904, - 1,0,0,0,5925,5926,1,0,0,0,5926,5928,1,0,0,0,5927,5929,3,546,273, - 0,5928,5927,1,0,0,0,5928,5929,1,0,0,0,5929,539,1,0,0,0,5930,5931, - 5,2,0,0,5931,5932,3,542,271,0,5932,5933,5,3,0,0,5933,5935,1,0,0, - 0,5934,5930,1,0,0,0,5934,5935,1,0,0,0,5935,5939,1,0,0,0,5936,5937, - 5,463,0,0,5937,5938,7,76,0,0,5938,5940,5,450,0,0,5939,5936,1,0,0, - 0,5939,5940,1,0,0,0,5940,5943,1,0,0,0,5941,5944,3,910,455,0,5942, - 5944,3,560,280,0,5943,5941,1,0,0,0,5943,5942,1,0,0,0,5944,541,1, - 0,0,0,5945,5950,3,544,272,0,5946,5947,5,6,0,0,5947,5949,3,544,272, - 0,5948,5946,1,0,0,0,5949,5952,1,0,0,0,5950,5948,1,0,0,0,5950,5951, - 1,0,0,0,5951,543,1,0,0,0,5952,5950,1,0,0,0,5953,5954,3,800,400,0, - 5954,5955,3,754,377,0,5955,545,1,0,0,0,5956,5957,5,87,0,0,5957,5958, - 3,756,378,0,5958,547,1,0,0,0,5959,5961,3,572,286,0,5960,5959,1,0, - 0,0,5960,5961,1,0,0,0,5961,5962,1,0,0,0,5962,5963,5,182,0,0,5963, - 5964,5,64,0,0,5964,5967,3,630,315,0,5965,5966,5,100,0,0,5966,5968, - 3,612,306,0,5967,5965,1,0,0,0,5967,5968,1,0,0,0,5968,5970,1,0,0, - 0,5969,5971,3,640,320,0,5970,5969,1,0,0,0,5970,5971,1,0,0,0,5971, - 5973,1,0,0,0,5972,5974,3,546,273,0,5973,5972,1,0,0,0,5973,5974,1, - 0,0,0,5974,549,1,0,0,0,5975,5977,5,256,0,0,5976,5978,5,92,0,0,5977, - 5976,1,0,0,0,5977,5978,1,0,0,0,5978,5979,1,0,0,0,5979,5994,3,628, - 314,0,5980,5991,5,68,0,0,5981,5982,7,77,0,0,5982,5992,7,78,0,0,5983, - 5988,5,334,0,0,5984,5985,5,369,0,0,5985,5989,5,201,0,0,5986,5987, - 5,414,0,0,5987,5989,5,201,0,0,5988,5984,1,0,0,0,5988,5986,1,0,0, - 0,5988,5989,1,0,0,0,5989,5992,1,0,0,0,5990,5992,5,201,0,0,5991,5981, - 1,0,0,0,5991,5983,1,0,0,0,5991,5990,1,0,0,0,5992,5993,1,0,0,0,5993, - 5995,5,263,0,0,5994,5980,1,0,0,0,5994,5995,1,0,0,0,5995,5997,1,0, - 0,0,5996,5998,5,272,0,0,5997,5996,1,0,0,0,5997,5998,1,0,0,0,5998, - 551,1,0,0,0,5999,6001,3,572,286,0,6000,5999,1,0,0,0,6000,6001,1, - 0,0,0,6001,6002,1,0,0,0,6002,6003,5,369,0,0,6003,6004,3,630,315, - 0,6004,6005,5,333,0,0,6005,6007,3,554,277,0,6006,6008,3,610,305, - 0,6007,6006,1,0,0,0,6007,6008,1,0,0,0,6008,6010,1,0,0,0,6009,6011, - 3,640,320,0,6010,6009,1,0,0,0,6010,6011,1,0,0,0,6011,6013,1,0,0, - 0,6012,6014,3,546,273,0,6013,6012,1,0,0,0,6013,6014,1,0,0,0,6014, - 553,1,0,0,0,6015,6020,3,556,278,0,6016,6017,5,6,0,0,6017,6019,3, - 556,278,0,6018,6016,1,0,0,0,6019,6022,1,0,0,0,6020,6018,1,0,0,0, - 6020,6021,1,0,0,0,6021,555,1,0,0,0,6022,6020,1,0,0,0,6023,6024,3, - 544,272,0,6024,6025,5,10,0,0,6025,6026,3,674,337,0,6026,6042,1,0, - 0,0,6027,6028,5,2,0,0,6028,6029,3,542,271,0,6029,6030,5,3,0,0,6030, - 6039,5,10,0,0,6031,6033,5,414,0,0,6032,6031,1,0,0,0,6032,6033,1, - 0,0,0,6033,6034,1,0,0,0,6034,6040,3,674,337,0,6035,6036,5,2,0,0, - 6036,6037,3,566,283,0,6037,6038,5,3,0,0,6038,6040,1,0,0,0,6039,6032, - 1,0,0,0,6039,6035,1,0,0,0,6040,6042,1,0,0,0,6041,6023,1,0,0,0,6041, - 6027,1,0,0,0,6042,557,1,0,0,0,6043,6044,5,178,0,0,6044,6053,3,818, - 409,0,6045,6047,5,269,0,0,6046,6045,1,0,0,0,6046,6047,1,0,0,0,6047, - 6048,1,0,0,0,6048,6052,5,324,0,0,6049,6052,5,107,0,0,6050,6052,5, - 240,0,0,6051,6046,1,0,0,0,6051,6049,1,0,0,0,6051,6050,1,0,0,0,6052, - 6055,1,0,0,0,6053,6051,1,0,0,0,6053,6054,1,0,0,0,6054,6056,1,0,0, - 0,6055,6053,1,0,0,0,6056,6059,5,172,0,0,6057,6058,7,26,0,0,6058, - 6060,5,217,0,0,6059,6057,1,0,0,0,6059,6060,1,0,0,0,6060,6061,1,0, - 0,0,6061,6062,5,62,0,0,6062,6063,3,560,280,0,6063,559,1,0,0,0,6064, - 6067,3,564,282,0,6065,6067,3,562,281,0,6066,6064,1,0,0,0,6066,6065, - 1,0,0,0,6067,561,1,0,0,0,6068,6071,5,2,0,0,6069,6072,3,564,282,0, - 6070,6072,3,562,281,0,6071,6069,1,0,0,0,6071,6070,1,0,0,0,6072,6073, - 1,0,0,0,6073,6074,5,3,0,0,6074,563,1,0,0,0,6075,6077,3,572,286,0, - 6076,6075,1,0,0,0,6076,6077,1,0,0,0,6077,6078,1,0,0,0,6078,6080, - 3,566,283,0,6079,6081,3,586,293,0,6080,6079,1,0,0,0,6080,6081,1, - 0,0,0,6081,6090,1,0,0,0,6082,6084,3,606,303,0,6083,6085,3,590,295, - 0,6084,6083,1,0,0,0,6084,6085,1,0,0,0,6085,6091,1,0,0,0,6086,6088, - 3,590,295,0,6087,6089,3,606,303,0,6088,6087,1,0,0,0,6088,6089,1, - 0,0,0,6089,6091,1,0,0,0,6090,6082,1,0,0,0,6090,6086,1,0,0,0,6090, - 6091,1,0,0,0,6091,565,1,0,0,0,6092,6095,3,568,284,0,6093,6095,3, - 562,281,0,6094,6092,1,0,0,0,6094,6093,1,0,0,0,6095,567,1,0,0,0,6096, - 6106,5,88,0,0,6097,6099,5,30,0,0,6098,6097,1,0,0,0,6098,6099,1,0, - 0,0,6099,6101,1,0,0,0,6100,6102,3,580,290,0,6101,6100,1,0,0,0,6101, - 6102,1,0,0,0,6102,6107,1,0,0,0,6103,6105,3,584,292,0,6104,6103,1, - 0,0,0,6104,6105,1,0,0,0,6105,6107,1,0,0,0,6106,6098,1,0,0,0,6106, - 6104,1,0,0,0,6107,6108,1,0,0,0,6108,6119,3,932,466,0,6109,6119,3, - 608,304,0,6110,6111,5,92,0,0,6111,6119,3,624,312,0,6112,6113,3,562, - 281,0,6113,6116,3,570,285,0,6114,6117,3,568,284,0,6115,6117,3,562, - 281,0,6116,6114,1,0,0,0,6116,6115,1,0,0,0,6117,6119,1,0,0,0,6118, - 6096,1,0,0,0,6118,6109,1,0,0,0,6118,6110,1,0,0,0,6118,6112,1,0,0, - 0,6119,6127,1,0,0,0,6120,6123,3,570,285,0,6121,6124,3,568,284,0, - 6122,6124,3,562,281,0,6123,6121,1,0,0,0,6123,6122,1,0,0,0,6124,6126, - 1,0,0,0,6125,6120,1,0,0,0,6126,6129,1,0,0,0,6127,6125,1,0,0,0,6127, - 6128,1,0,0,0,6128,569,1,0,0,0,6129,6127,1,0,0,0,6130,6132,7,79,0, - 0,6131,6133,7,80,0,0,6132,6131,1,0,0,0,6132,6133,1,0,0,0,6133,571, - 1,0,0,0,6134,6136,5,105,0,0,6135,6137,5,303,0,0,6136,6135,1,0,0, - 0,6136,6137,1,0,0,0,6137,6138,1,0,0,0,6138,6143,3,574,287,0,6139, - 6140,5,6,0,0,6140,6142,3,574,287,0,6141,6139,1,0,0,0,6142,6145,1, - 0,0,0,6143,6141,1,0,0,0,6143,6144,1,0,0,0,6144,573,1,0,0,0,6145, - 6143,1,0,0,0,6146,6148,3,818,409,0,6147,6149,3,144,72,0,6148,6147, - 1,0,0,0,6148,6149,1,0,0,0,6149,6150,1,0,0,0,6150,6155,5,36,0,0,6151, - 6153,5,77,0,0,6152,6151,1,0,0,0,6152,6153,1,0,0,0,6153,6154,1,0, - 0,0,6154,6156,5,259,0,0,6155,6152,1,0,0,0,6155,6156,1,0,0,0,6156, - 6157,1,0,0,0,6157,6158,5,2,0,0,6158,6159,3,530,265,0,6159,6161,5, - 3,0,0,6160,6162,3,576,288,0,6161,6160,1,0,0,0,6161,6162,1,0,0,0, - 6162,6164,1,0,0,0,6163,6165,3,578,289,0,6164,6163,1,0,0,0,6164,6165, - 1,0,0,0,6165,575,1,0,0,0,6166,6167,5,325,0,0,6167,6168,7,81,0,0, - 6168,6169,5,207,0,0,6169,6170,5,147,0,0,6170,6171,3,148,74,0,6171, - 6172,5,333,0,0,6172,6173,3,800,400,0,6173,577,1,0,0,0,6174,6175, - 5,173,0,0,6175,6176,3,148,74,0,6176,6177,5,333,0,0,6177,6183,3,800, - 400,0,6178,6179,5,94,0,0,6179,6180,3,818,409,0,6180,6181,5,53,0, - 0,6181,6182,3,818,409,0,6182,6184,1,0,0,0,6183,6178,1,0,0,0,6183, - 6184,1,0,0,0,6184,6185,1,0,0,0,6185,6186,5,100,0,0,6186,6187,3,800, - 400,0,6187,579,1,0,0,0,6188,6194,5,71,0,0,6189,6191,5,346,0,0,6190, - 6189,1,0,0,0,6190,6191,1,0,0,0,6191,6192,1,0,0,0,6192,6195,3,582, - 291,0,6193,6195,3,730,365,0,6194,6190,1,0,0,0,6194,6193,1,0,0,0, - 6195,581,1,0,0,0,6196,6198,7,20,0,0,6197,6196,1,0,0,0,6197,6198, - 1,0,0,0,6198,6199,1,0,0,0,6199,6201,7,21,0,0,6200,6202,5,92,0,0, - 6201,6200,1,0,0,0,6201,6202,1,0,0,0,6202,6203,1,0,0,0,6203,6212, - 3,772,386,0,6204,6206,5,367,0,0,6205,6204,1,0,0,0,6205,6206,1,0, - 0,0,6206,6208,1,0,0,0,6207,6209,5,92,0,0,6208,6207,1,0,0,0,6208, - 6209,1,0,0,0,6209,6210,1,0,0,0,6210,6212,3,772,386,0,6211,6197,1, - 0,0,0,6211,6205,1,0,0,0,6212,583,1,0,0,0,6213,6216,5,56,0,0,6214, - 6215,5,80,0,0,6215,6217,3,534,267,0,6216,6214,1,0,0,0,6216,6217, - 1,0,0,0,6217,585,1,0,0,0,6218,6219,5,83,0,0,6219,6220,5,147,0,0, - 6220,6225,3,588,294,0,6221,6222,5,6,0,0,6222,6224,3,588,294,0,6223, - 6221,1,0,0,0,6224,6227,1,0,0,0,6225,6223,1,0,0,0,6225,6226,1,0,0, - 0,6226,587,1,0,0,0,6227,6225,1,0,0,0,6228,6232,3,734,367,0,6229, - 6230,5,100,0,0,6230,6233,3,726,363,0,6231,6233,7,55,0,0,6232,6229, - 1,0,0,0,6232,6231,1,0,0,0,6232,6233,1,0,0,0,6233,6236,1,0,0,0,6234, - 6235,5,273,0,0,6235,6237,7,56,0,0,6236,6234,1,0,0,0,6236,6237,1, - 0,0,0,6237,589,1,0,0,0,6238,6240,3,596,298,0,6239,6241,3,594,297, - 0,6240,6239,1,0,0,0,6240,6241,1,0,0,0,6241,6250,1,0,0,0,6242,6245, - 3,592,296,0,6243,6245,3,594,297,0,6244,6242,1,0,0,0,6244,6243,1, - 0,0,0,6245,6247,1,0,0,0,6246,6248,3,596,298,0,6247,6246,1,0,0,0, - 6247,6248,1,0,0,0,6248,6250,1,0,0,0,6249,6238,1,0,0,0,6249,6244, - 1,0,0,0,6250,591,1,0,0,0,6251,6254,5,74,0,0,6252,6255,3,674,337, - 0,6253,6255,5,30,0,0,6254,6252,1,0,0,0,6254,6253,1,0,0,0,6255,6258, - 1,0,0,0,6256,6257,5,6,0,0,6257,6259,3,674,337,0,6258,6256,1,0,0, - 0,6258,6259,1,0,0,0,6259,593,1,0,0,0,6260,6261,5,61,0,0,6261,6263, - 7,82,0,0,6262,6264,3,598,299,0,6263,6262,1,0,0,0,6263,6264,1,0,0, - 0,6264,6265,1,0,0,0,6265,6269,7,83,0,0,6266,6270,5,81,0,0,6267,6268, - 5,105,0,0,6268,6270,5,467,0,0,6269,6266,1,0,0,0,6269,6267,1,0,0, - 0,6270,595,1,0,0,0,6271,6276,5,79,0,0,6272,6273,3,598,299,0,6273, - 6274,7,83,0,0,6274,6277,1,0,0,0,6275,6277,3,674,337,0,6276,6272, - 1,0,0,0,6276,6275,1,0,0,0,6277,597,1,0,0,0,6278,6279,7,29,0,0,6279, - 6282,7,84,0,0,6280,6282,3,682,341,0,6281,6278,1,0,0,0,6281,6280, - 1,0,0,0,6282,599,1,0,0,0,6283,6284,5,66,0,0,6284,6286,5,147,0,0, - 6285,6287,7,80,0,0,6286,6285,1,0,0,0,6286,6287,1,0,0,0,6287,6288, - 1,0,0,0,6288,6289,3,602,301,0,6289,601,1,0,0,0,6290,6295,3,604,302, - 0,6291,6292,5,6,0,0,6292,6294,3,604,302,0,6293,6291,1,0,0,0,6294, - 6297,1,0,0,0,6295,6293,1,0,0,0,6295,6296,1,0,0,0,6296,603,1,0,0, - 0,6297,6295,1,0,0,0,6298,6322,3,734,367,0,6299,6300,5,2,0,0,6300, - 6322,5,3,0,0,6301,6303,7,85,0,0,6302,6301,1,0,0,0,6302,6303,1,0, - 0,0,6303,6304,1,0,0,0,6304,6305,5,2,0,0,6305,6310,3,734,367,0,6306, - 6307,5,6,0,0,6307,6309,3,734,367,0,6308,6306,1,0,0,0,6309,6312,1, - 0,0,0,6310,6308,1,0,0,0,6310,6311,1,0,0,0,6311,6313,1,0,0,0,6312, - 6310,1,0,0,0,6313,6314,5,3,0,0,6314,6322,1,0,0,0,6315,6316,5,470, - 0,0,6316,6317,5,471,0,0,6317,6318,5,2,0,0,6318,6319,3,602,301,0, - 6319,6320,5,3,0,0,6320,6322,1,0,0,0,6321,6298,1,0,0,0,6321,6299, - 1,0,0,0,6321,6302,1,0,0,0,6321,6315,1,0,0,0,6322,605,1,0,0,0,6323, - 6333,5,62,0,0,6324,6325,5,269,0,0,6325,6327,5,245,0,0,6326,6324, - 1,0,0,0,6326,6327,1,0,0,0,6327,6328,1,0,0,0,6328,6334,5,369,0,0, - 6329,6331,5,245,0,0,6330,6329,1,0,0,0,6330,6331,1,0,0,0,6331,6332, - 1,0,0,0,6332,6334,5,334,0,0,6333,6326,1,0,0,0,6333,6330,1,0,0,0, - 6334,6337,1,0,0,0,6335,6336,5,275,0,0,6336,6338,3,760,380,0,6337, - 6335,1,0,0,0,6337,6338,1,0,0,0,6338,6342,1,0,0,0,6339,6343,5,272, - 0,0,6340,6341,5,465,0,0,6341,6343,5,466,0,0,6342,6339,1,0,0,0,6342, - 6340,1,0,0,0,6342,6343,1,0,0,0,6343,6345,1,0,0,0,6344,6323,1,0,0, - 0,6345,6346,1,0,0,0,6346,6344,1,0,0,0,6346,6347,1,0,0,0,6347,6352, - 1,0,0,0,6348,6349,5,62,0,0,6349,6350,5,300,0,0,6350,6352,5,81,0, - 0,6351,6344,1,0,0,0,6351,6348,1,0,0,0,6352,607,1,0,0,0,6353,6354, - 5,422,0,0,6354,6359,3,534,267,0,6355,6356,5,6,0,0,6356,6358,3,534, - 267,0,6357,6355,1,0,0,0,6358,6361,1,0,0,0,6359,6357,1,0,0,0,6359, - 6360,1,0,0,0,6360,609,1,0,0,0,6361,6359,1,0,0,0,6362,6363,5,64,0, - 0,6363,6364,3,612,306,0,6364,611,1,0,0,0,6365,6370,3,614,307,0,6366, - 6367,5,6,0,0,6367,6369,3,614,307,0,6368,6366,1,0,0,0,6369,6372,1, - 0,0,0,6370,6368,1,0,0,0,6370,6371,1,0,0,0,6371,613,1,0,0,0,6372, - 6370,1,0,0,0,6373,6388,3,624,312,0,6374,6376,5,81,0,0,6375,6374, - 1,0,0,0,6375,6376,1,0,0,0,6376,6377,1,0,0,0,6377,6379,3,778,389, - 0,6378,6380,5,9,0,0,6379,6378,1,0,0,0,6379,6380,1,0,0,0,6380,6382, - 1,0,0,0,6381,6383,3,148,74,0,6382,6381,1,0,0,0,6382,6383,1,0,0,0, - 6383,6385,1,0,0,0,6384,6386,3,638,319,0,6385,6384,1,0,0,0,6385,6386, - 1,0,0,0,6386,6388,1,0,0,0,6387,6373,1,0,0,0,6387,6375,1,0,0,0,6388, - 6390,1,0,0,0,6389,6391,3,616,308,0,6390,6389,1,0,0,0,6390,6391,1, - 0,0,0,6391,6393,1,0,0,0,6392,6394,3,632,316,0,6393,6392,1,0,0,0, - 6393,6394,1,0,0,0,6394,6437,1,0,0,0,6395,6397,5,72,0,0,6396,6395, - 1,0,0,0,6396,6397,1,0,0,0,6397,6410,1,0,0,0,6398,6400,3,646,323, - 0,6399,6401,3,616,308,0,6400,6399,1,0,0,0,6400,6401,1,0,0,0,6401, - 6411,1,0,0,0,6402,6404,3,634,317,0,6403,6405,3,618,309,0,6404,6403, - 1,0,0,0,6404,6405,1,0,0,0,6405,6411,1,0,0,0,6406,6408,3,562,281, - 0,6407,6409,3,616,308,0,6408,6407,1,0,0,0,6408,6409,1,0,0,0,6409, - 6411,1,0,0,0,6410,6398,1,0,0,0,6410,6402,1,0,0,0,6410,6406,1,0,0, - 0,6411,6437,1,0,0,0,6412,6413,5,2,0,0,6413,6430,3,614,307,0,6414, - 6415,5,110,0,0,6415,6416,5,118,0,0,6416,6431,3,614,307,0,6417,6419, - 5,121,0,0,6418,6420,3,620,310,0,6419,6418,1,0,0,0,6419,6420,1,0, - 0,0,6420,6421,1,0,0,0,6421,6422,5,118,0,0,6422,6431,3,614,307,0, - 6423,6425,3,620,310,0,6424,6423,1,0,0,0,6424,6425,1,0,0,0,6425,6426, - 1,0,0,0,6426,6427,5,118,0,0,6427,6428,3,614,307,0,6428,6429,3,622, - 311,0,6429,6431,1,0,0,0,6430,6414,1,0,0,0,6430,6417,1,0,0,0,6430, - 6424,1,0,0,0,6430,6431,1,0,0,0,6431,6432,1,0,0,0,6432,6434,5,3,0, - 0,6433,6435,3,616,308,0,6434,6433,1,0,0,0,6434,6435,1,0,0,0,6435, - 6437,1,0,0,0,6436,6387,1,0,0,0,6436,6396,1,0,0,0,6436,6412,1,0,0, - 0,6437,6456,1,0,0,0,6438,6439,5,110,0,0,6439,6440,5,118,0,0,6440, - 6455,3,614,307,0,6441,6443,5,121,0,0,6442,6444,3,620,310,0,6443, - 6442,1,0,0,0,6443,6444,1,0,0,0,6444,6445,1,0,0,0,6445,6446,5,118, - 0,0,6446,6455,3,614,307,0,6447,6449,3,620,310,0,6448,6447,1,0,0, - 0,6448,6449,1,0,0,0,6449,6450,1,0,0,0,6450,6451,5,118,0,0,6451,6452, - 3,614,307,0,6452,6453,3,622,311,0,6453,6455,1,0,0,0,6454,6438,1, - 0,0,0,6454,6441,1,0,0,0,6454,6448,1,0,0,0,6455,6458,1,0,0,0,6456, - 6454,1,0,0,0,6456,6457,1,0,0,0,6457,615,1,0,0,0,6458,6456,1,0,0, - 0,6459,6461,5,36,0,0,6460,6459,1,0,0,0,6460,6461,1,0,0,0,6461,6462, - 1,0,0,0,6462,6467,3,818,409,0,6463,6464,5,2,0,0,6464,6465,3,784, - 392,0,6465,6466,5,3,0,0,6466,6468,1,0,0,0,6467,6463,1,0,0,0,6467, - 6468,1,0,0,0,6468,617,1,0,0,0,6469,6482,3,616,308,0,6470,6472,5, - 36,0,0,6471,6473,3,818,409,0,6472,6471,1,0,0,0,6472,6473,1,0,0,0, - 6473,6476,1,0,0,0,6474,6476,3,818,409,0,6475,6470,1,0,0,0,6475,6474, - 1,0,0,0,6476,6477,1,0,0,0,6477,6478,5,2,0,0,6478,6479,3,642,321, - 0,6479,6480,5,3,0,0,6480,6482,1,0,0,0,6481,6469,1,0,0,0,6481,6475, - 1,0,0,0,6482,619,1,0,0,0,6483,6485,7,86,0,0,6484,6486,5,123,0,0, - 6485,6484,1,0,0,0,6485,6486,1,0,0,0,6486,621,1,0,0,0,6487,6488,5, - 100,0,0,6488,6492,3,144,72,0,6489,6490,5,80,0,0,6490,6492,3,674, - 337,0,6491,6487,1,0,0,0,6491,6489,1,0,0,0,6492,623,1,0,0,0,6493, - 6509,3,322,161,0,6494,6500,5,81,0,0,6495,6501,3,774,387,0,6496,6497, - 5,2,0,0,6497,6498,3,774,387,0,6498,6499,5,3,0,0,6499,6501,1,0,0, - 0,6500,6495,1,0,0,0,6500,6496,1,0,0,0,6501,6509,1,0,0,0,6502,6503, - 5,68,0,0,6503,6506,5,323,0,0,6504,6507,3,790,395,0,6505,6507,5,111, - 0,0,6506,6504,1,0,0,0,6506,6505,1,0,0,0,6507,6509,1,0,0,0,6508,6493, - 1,0,0,0,6508,6494,1,0,0,0,6508,6502,1,0,0,0,6509,625,1,0,0,0,6510, - 6511,5,92,0,0,6511,6513,3,322,161,0,6512,6514,3,144,72,0,6513,6512, - 1,0,0,0,6513,6514,1,0,0,0,6514,6516,1,0,0,0,6515,6517,3,638,319, - 0,6516,6515,1,0,0,0,6516,6517,1,0,0,0,6517,6535,1,0,0,0,6518,6519, - 5,92,0,0,6519,6525,5,81,0,0,6520,6526,3,774,387,0,6521,6522,5,2, - 0,0,6522,6523,3,774,387,0,6523,6524,5,3,0,0,6524,6526,1,0,0,0,6525, - 6520,1,0,0,0,6525,6521,1,0,0,0,6526,6535,1,0,0,0,6527,6528,5,350, - 0,0,6528,6529,5,68,0,0,6529,6532,5,323,0,0,6530,6533,3,790,395,0, - 6531,6533,5,111,0,0,6532,6530,1,0,0,0,6532,6531,1,0,0,0,6533,6535, - 1,0,0,0,6534,6510,1,0,0,0,6534,6518,1,0,0,0,6534,6527,1,0,0,0,6535, - 627,1,0,0,0,6536,6541,3,624,312,0,6537,6538,5,6,0,0,6538,6540,3, - 624,312,0,6539,6537,1,0,0,0,6540,6543,1,0,0,0,6541,6539,1,0,0,0, - 6541,6542,1,0,0,0,6542,629,1,0,0,0,6543,6541,1,0,0,0,6544,6549,3, - 624,312,0,6545,6547,5,36,0,0,6546,6545,1,0,0,0,6546,6547,1,0,0,0, - 6547,6548,1,0,0,0,6548,6550,3,818,409,0,6549,6546,1,0,0,0,6549,6550, - 1,0,0,0,6550,631,1,0,0,0,6551,6552,5,472,0,0,6552,6553,3,806,403, - 0,6553,6559,3,534,267,0,6554,6555,5,310,0,0,6555,6556,5,2,0,0,6556, - 6557,3,674,337,0,6557,6558,5,3,0,0,6558,6560,1,0,0,0,6559,6554,1, - 0,0,0,6559,6560,1,0,0,0,6560,633,1,0,0,0,6561,6576,3,688,344,0,6562, - 6563,5,320,0,0,6563,6564,5,64,0,0,6564,6565,5,2,0,0,6565,6570,3, - 636,318,0,6566,6567,5,6,0,0,6567,6569,3,636,318,0,6568,6566,1,0, - 0,0,6569,6572,1,0,0,0,6570,6568,1,0,0,0,6570,6571,1,0,0,0,6571,6573, - 1,0,0,0,6572,6570,1,0,0,0,6573,6574,5,3,0,0,6574,6576,1,0,0,0,6575, - 6561,1,0,0,0,6575,6562,1,0,0,0,6576,6579,1,0,0,0,6577,6578,5,105, - 0,0,6578,6580,5,473,0,0,6579,6577,1,0,0,0,6579,6580,1,0,0,0,6580, - 635,1,0,0,0,6581,6587,3,688,344,0,6582,6583,5,36,0,0,6583,6584,5, - 2,0,0,6584,6585,3,642,321,0,6585,6586,5,3,0,0,6586,6588,1,0,0,0, - 6587,6582,1,0,0,0,6587,6588,1,0,0,0,6588,637,1,0,0,0,6589,6590,5, - 103,0,0,6590,6591,3,734,367,0,6591,639,1,0,0,0,6592,6597,5,103,0, - 0,6593,6594,5,434,0,0,6594,6595,5,275,0,0,6595,6598,3,818,409,0, - 6596,6598,3,674,337,0,6597,6593,1,0,0,0,6597,6596,1,0,0,0,6598,641, - 1,0,0,0,6599,6604,3,644,322,0,6600,6601,5,6,0,0,6601,6603,3,644, - 322,0,6602,6600,1,0,0,0,6603,6606,1,0,0,0,6604,6602,1,0,0,0,6604, - 6605,1,0,0,0,6605,643,1,0,0,0,6606,6604,1,0,0,0,6607,6608,3,818, - 409,0,6608,6610,3,652,326,0,6609,6611,3,98,49,0,6610,6609,1,0,0, - 0,6610,6611,1,0,0,0,6611,645,1,0,0,0,6612,6613,5,474,0,0,6613,6627, - 5,2,0,0,6614,6615,5,476,0,0,6615,6616,5,2,0,0,6616,6621,3,650,325, - 0,6617,6618,5,6,0,0,6618,6620,3,650,325,0,6619,6617,1,0,0,0,6620, - 6623,1,0,0,0,6621,6619,1,0,0,0,6621,6622,1,0,0,0,6622,6624,1,0,0, - 0,6623,6621,1,0,0,0,6624,6625,5,3,0,0,6625,6626,5,6,0,0,6626,6628, - 1,0,0,0,6627,6614,1,0,0,0,6627,6628,1,0,0,0,6628,6629,1,0,0,0,6629, - 6630,3,682,341,0,6630,6631,3,698,349,0,6631,6632,5,475,0,0,6632, - 6637,3,648,324,0,6633,6634,5,6,0,0,6634,6636,3,648,324,0,6635,6633, - 1,0,0,0,6636,6639,1,0,0,0,6637,6635,1,0,0,0,6637,6638,1,0,0,0,6638, - 6640,1,0,0,0,6639,6637,1,0,0,0,6640,6641,5,3,0,0,6641,647,1,0,0, - 0,6642,6661,3,818,409,0,6643,6657,3,652,326,0,6644,6647,5,53,0,0, - 6645,6647,3,826,413,0,6646,6644,1,0,0,0,6646,6645,1,0,0,0,6647,6648, - 1,0,0,0,6648,6654,3,674,337,0,6649,6651,5,77,0,0,6650,6649,1,0,0, - 0,6650,6651,1,0,0,0,6651,6652,1,0,0,0,6652,6654,5,78,0,0,6653,6646, - 1,0,0,0,6653,6650,1,0,0,0,6654,6655,1,0,0,0,6655,6653,1,0,0,0,6655, - 6656,1,0,0,0,6656,6658,1,0,0,0,6657,6653,1,0,0,0,6657,6658,1,0,0, - 0,6658,6662,1,0,0,0,6659,6660,5,62,0,0,6660,6662,5,473,0,0,6661, - 6643,1,0,0,0,6661,6659,1,0,0,0,6662,649,1,0,0,0,6663,6664,3,682, - 341,0,6664,6665,5,36,0,0,6665,6666,3,824,412,0,6666,6670,1,0,0,0, - 6667,6668,5,53,0,0,6668,6670,3,682,341,0,6669,6663,1,0,0,0,6669, - 6667,1,0,0,0,6670,651,1,0,0,0,6671,6673,5,415,0,0,6672,6671,1,0, - 0,0,6672,6673,1,0,0,0,6673,6674,1,0,0,0,6674,6691,3,654,327,0,6675, - 6677,5,4,0,0,6676,6678,5,571,0,0,6677,6676,1,0,0,0,6677,6678,1,0, - 0,0,6678,6679,1,0,0,0,6679,6681,5,5,0,0,6680,6675,1,0,0,0,6681,6684, - 1,0,0,0,6682,6680,1,0,0,0,6682,6683,1,0,0,0,6683,6692,1,0,0,0,6684, - 6682,1,0,0,0,6685,6689,5,35,0,0,6686,6687,5,4,0,0,6687,6688,5,571, - 0,0,6688,6690,5,5,0,0,6689,6686,1,0,0,0,6689,6690,1,0,0,0,6690,6692, - 1,0,0,0,6691,6682,1,0,0,0,6691,6685,1,0,0,0,6692,6698,1,0,0,0,6693, - 6694,3,780,390,0,6694,6695,5,27,0,0,6695,6696,7,87,0,0,6696,6698, - 1,0,0,0,6697,6672,1,0,0,0,6697,6693,1,0,0,0,6698,653,1,0,0,0,6699, - 6701,3,820,410,0,6700,6702,3,318,159,0,6701,6700,1,0,0,0,6701,6702, - 1,0,0,0,6702,6704,1,0,0,0,6703,6705,3,534,267,0,6704,6703,1,0,0, - 0,6704,6705,1,0,0,0,6705,6715,1,0,0,0,6706,6715,3,656,328,0,6707, - 6712,5,403,0,0,6708,6710,3,668,334,0,6709,6708,1,0,0,0,6709,6710, - 1,0,0,0,6710,6713,1,0,0,0,6711,6713,3,660,330,0,6712,6709,1,0,0, - 0,6712,6711,1,0,0,0,6713,6715,1,0,0,0,6714,6699,1,0,0,0,6714,6706, - 1,0,0,0,6714,6707,1,0,0,0,6715,655,1,0,0,0,6716,6721,3,658,329,0, - 6717,6721,3,662,331,0,6718,6721,3,664,332,0,6719,6721,3,666,333, - 0,6720,6716,1,0,0,0,6720,6717,1,0,0,0,6720,6718,1,0,0,0,6720,6719, - 1,0,0,0,6721,657,1,0,0,0,6722,6739,5,401,0,0,6723,6739,5,402,0,0, - 6724,6739,5,416,0,0,6725,6739,5,388,0,0,6726,6739,5,413,0,0,6727, - 6729,5,398,0,0,6728,6730,3,660,330,0,6729,6728,1,0,0,0,6729,6730, - 1,0,0,0,6730,6739,1,0,0,0,6731,6732,5,190,0,0,6732,6739,5,412,0, - 0,6733,6735,7,88,0,0,6734,6736,3,534,267,0,6735,6734,1,0,0,0,6735, - 6736,1,0,0,0,6736,6739,1,0,0,0,6737,6739,5,390,0,0,6738,6722,1,0, - 0,0,6738,6723,1,0,0,0,6738,6724,1,0,0,0,6738,6725,1,0,0,0,6738,6726, - 1,0,0,0,6738,6727,1,0,0,0,6738,6731,1,0,0,0,6738,6733,1,0,0,0,6738, - 6737,1,0,0,0,6739,659,1,0,0,0,6740,6741,5,2,0,0,6741,6742,5,571, - 0,0,6742,6743,5,3,0,0,6743,661,1,0,0,0,6744,6746,5,389,0,0,6745, - 6747,5,374,0,0,6746,6745,1,0,0,0,6746,6747,1,0,0,0,6747,6749,1,0, - 0,0,6748,6750,3,534,267,0,6749,6748,1,0,0,0,6749,6750,1,0,0,0,6750, - 663,1,0,0,0,6751,6753,7,89,0,0,6752,6754,5,374,0,0,6753,6752,1,0, - 0,0,6753,6754,1,0,0,0,6754,6762,1,0,0,0,6755,6762,5,423,0,0,6756, - 6757,5,405,0,0,6757,6759,7,90,0,0,6758,6760,5,374,0,0,6759,6758, - 1,0,0,0,6759,6760,1,0,0,0,6760,6762,1,0,0,0,6761,6751,1,0,0,0,6761, - 6755,1,0,0,0,6761,6756,1,0,0,0,6762,6764,1,0,0,0,6763,6765,3,660, - 330,0,6764,6763,1,0,0,0,6764,6765,1,0,0,0,6765,665,1,0,0,0,6766, - 6768,7,91,0,0,6767,6769,3,660,330,0,6768,6767,1,0,0,0,6768,6769, - 1,0,0,0,6769,6773,1,0,0,0,6770,6771,7,26,0,0,6771,6772,5,418,0,0, - 6772,6774,5,386,0,0,6773,6770,1,0,0,0,6773,6774,1,0,0,0,6774,667, - 1,0,0,0,6775,6805,5,264,0,0,6776,6805,3,670,335,0,6777,6780,5,384, - 0,0,6778,6779,5,94,0,0,6779,6781,5,264,0,0,6780,6778,1,0,0,0,6780, - 6781,1,0,0,0,6781,6805,1,0,0,0,6782,6789,5,176,0,0,6783,6787,5,94, - 0,0,6784,6788,5,218,0,0,6785,6788,5,261,0,0,6786,6788,3,670,335, - 0,6787,6784,1,0,0,0,6787,6785,1,0,0,0,6787,6786,1,0,0,0,6788,6790, - 1,0,0,0,6789,6783,1,0,0,0,6789,6790,1,0,0,0,6790,6805,1,0,0,0,6791, - 6797,5,218,0,0,6792,6795,5,94,0,0,6793,6796,5,261,0,0,6794,6796, - 3,670,335,0,6795,6793,1,0,0,0,6795,6794,1,0,0,0,6796,6798,1,0,0, - 0,6797,6792,1,0,0,0,6797,6798,1,0,0,0,6798,6805,1,0,0,0,6799,6802, - 5,261,0,0,6800,6801,5,94,0,0,6801,6803,3,670,335,0,6802,6800,1,0, - 0,0,6802,6803,1,0,0,0,6803,6805,1,0,0,0,6804,6775,1,0,0,0,6804,6776, - 1,0,0,0,6804,6777,1,0,0,0,6804,6782,1,0,0,0,6804,6791,1,0,0,0,6804, - 6799,1,0,0,0,6805,669,1,0,0,0,6806,6808,5,326,0,0,6807,6809,3,660, - 330,0,6808,6807,1,0,0,0,6808,6809,1,0,0,0,6809,671,1,0,0,0,6810, - 6811,7,92,0,0,6811,673,1,0,0,0,6812,6813,3,676,338,0,6813,675,1, - 0,0,0,6814,6815,6,338,-1,0,6815,6817,3,680,340,0,6816,6818,3,678, - 339,0,6817,6816,1,0,0,0,6817,6818,1,0,0,0,6818,6822,1,0,0,0,6819, - 6820,5,77,0,0,6820,6822,3,676,338,3,6821,6814,1,0,0,0,6821,6819, - 1,0,0,0,6822,6831,1,0,0,0,6823,6824,10,2,0,0,6824,6825,5,33,0,0, - 6825,6830,3,676,338,3,6826,6827,10,1,0,0,6827,6828,5,82,0,0,6828, - 6830,3,676,338,2,6829,6823,1,0,0,0,6829,6826,1,0,0,0,6830,6833,1, - 0,0,0,6831,6829,1,0,0,0,6831,6832,1,0,0,0,6832,677,1,0,0,0,6833, - 6831,1,0,0,0,6834,6835,3,672,336,0,6835,6836,3,680,340,0,6836,6906, - 1,0,0,0,6837,6838,3,672,336,0,6838,6839,3,728,364,0,6839,6845,3, - 718,359,0,6840,6846,3,562,281,0,6841,6842,5,2,0,0,6842,6843,3,674, - 337,0,6843,6844,5,3,0,0,6844,6846,1,0,0,0,6845,6840,1,0,0,0,6845, - 6841,1,0,0,0,6846,6906,1,0,0,0,6847,6849,5,77,0,0,6848,6847,1,0, - 0,0,6848,6849,1,0,0,0,6849,6850,1,0,0,0,6850,6851,5,387,0,0,6851, - 6852,3,680,340,0,6852,6853,5,33,0,0,6853,6854,3,680,340,0,6854,6906, - 1,0,0,0,6855,6857,5,77,0,0,6856,6855,1,0,0,0,6856,6857,1,0,0,0,6857, - 6858,1,0,0,0,6858,6859,5,68,0,0,6859,6860,5,2,0,0,6860,6865,3,674, - 337,0,6861,6862,5,6,0,0,6862,6864,3,674,337,0,6863,6861,1,0,0,0, - 6864,6867,1,0,0,0,6865,6863,1,0,0,0,6865,6866,1,0,0,0,6866,6868, - 1,0,0,0,6867,6865,1,0,0,0,6868,6869,5,3,0,0,6869,6906,1,0,0,0,6870, - 6872,5,77,0,0,6871,6870,1,0,0,0,6871,6872,1,0,0,0,6872,6873,1,0, - 0,0,6873,6874,5,68,0,0,6874,6906,3,562,281,0,6875,6877,5,77,0,0, - 6876,6875,1,0,0,0,6876,6877,1,0,0,0,6877,6886,1,0,0,0,6878,6887, - 5,120,0,0,6879,6887,5,114,0,0,6880,6881,5,127,0,0,6881,6887,5,94, - 0,0,6882,6884,5,387,0,0,6883,6885,5,91,0,0,6884,6883,1,0,0,0,6884, - 6885,1,0,0,0,6885,6887,1,0,0,0,6886,6878,1,0,0,0,6886,6879,1,0,0, - 0,6886,6880,1,0,0,0,6886,6882,1,0,0,0,6887,6888,1,0,0,0,6888,6891, - 3,680,340,0,6889,6890,5,197,0,0,6890,6892,3,680,340,0,6891,6889, - 1,0,0,0,6891,6892,1,0,0,0,6892,6906,1,0,0,0,6893,6895,5,116,0,0, - 6894,6896,5,77,0,0,6895,6894,1,0,0,0,6895,6896,1,0,0,0,6896,6897, - 1,0,0,0,6897,6906,5,78,0,0,6898,6900,5,116,0,0,6899,6901,5,77,0, - 0,6900,6899,1,0,0,0,6900,6901,1,0,0,0,6901,6902,1,0,0,0,6902,6903, - 5,56,0,0,6903,6904,5,64,0,0,6904,6906,3,680,340,0,6905,6834,1,0, - 0,0,6905,6837,1,0,0,0,6905,6848,1,0,0,0,6905,6856,1,0,0,0,6905,6871, - 1,0,0,0,6905,6876,1,0,0,0,6905,6893,1,0,0,0,6905,6898,1,0,0,0,6906, - 679,1,0,0,0,6907,6908,6,340,-1,0,6908,6912,3,682,341,0,6909,6910, - 7,29,0,0,6910,6912,3,680,340,4,6911,6907,1,0,0,0,6911,6909,1,0,0, - 0,6912,6929,1,0,0,0,6913,6914,10,3,0,0,6914,6915,7,93,0,0,6915,6928, - 3,680,340,4,6916,6917,10,2,0,0,6917,6918,7,29,0,0,6918,6928,3,680, - 340,3,6919,6920,10,1,0,0,6920,6921,5,15,0,0,6921,6928,3,680,340, - 2,6922,6923,10,5,0,0,6923,6924,5,142,0,0,6924,6925,5,418,0,0,6925, - 6926,5,386,0,0,6926,6928,3,674,337,0,6927,6913,1,0,0,0,6927,6916, - 1,0,0,0,6927,6919,1,0,0,0,6927,6922,1,0,0,0,6928,6931,1,0,0,0,6929, - 6927,1,0,0,0,6929,6930,1,0,0,0,6930,681,1,0,0,0,6931,6929,1,0,0, - 0,6932,6933,6,341,-1,0,6933,6934,7,94,0,0,6934,7021,3,562,281,0, - 6935,6938,5,35,0,0,6936,6939,3,562,281,0,6937,6939,3,740,370,0,6938, - 6936,1,0,0,0,6938,6937,1,0,0,0,6939,7021,1,0,0,0,6940,6941,5,28, - 0,0,6941,7021,3,754,377,0,6942,6943,5,470,0,0,6943,7021,3,534,267, - 0,6944,7021,5,571,0,0,6945,7021,5,573,0,0,6946,7021,5,563,0,0,6947, - 7021,5,567,0,0,6948,6958,3,806,403,0,6949,6959,3,808,404,0,6950, - 6951,5,2,0,0,6951,6953,3,736,368,0,6952,6954,3,586,293,0,6953,6952, - 1,0,0,0,6953,6954,1,0,0,0,6954,6955,1,0,0,0,6955,6956,5,3,0,0,6956, - 6957,3,808,404,0,6957,6959,1,0,0,0,6958,6949,1,0,0,0,6958,6950,1, - 0,0,0,6959,7021,1,0,0,0,6960,6962,3,656,328,0,6961,6960,1,0,0,0, - 6961,6962,1,0,0,0,6962,6963,1,0,0,0,6963,7021,3,808,404,0,6964,6972, - 5,403,0,0,6965,6967,3,808,404,0,6966,6968,3,668,334,0,6967,6966, - 1,0,0,0,6967,6968,1,0,0,0,6968,6973,1,0,0,0,6969,6970,3,660,330, - 0,6970,6971,3,808,404,0,6971,6973,1,0,0,0,6972,6965,1,0,0,0,6972, - 6969,1,0,0,0,6973,7021,1,0,0,0,6974,7021,5,96,0,0,6975,7021,5,60, - 0,0,6976,7021,5,78,0,0,6977,7021,5,574,0,0,6978,6979,5,2,0,0,6979, - 6980,3,674,337,0,6980,6981,5,3,0,0,6981,6982,3,754,377,0,6982,7021, - 1,0,0,0,6983,6985,5,40,0,0,6984,6986,3,674,337,0,6985,6984,1,0,0, - 0,6985,6986,1,0,0,0,6986,6988,1,0,0,0,6987,6989,3,748,374,0,6988, - 6987,1,0,0,0,6989,6990,1,0,0,0,6990,6988,1,0,0,0,6990,6991,1,0,0, - 0,6991,6994,1,0,0,0,6992,6993,5,58,0,0,6993,6995,3,674,337,0,6994, - 6992,1,0,0,0,6994,6995,1,0,0,0,6995,6996,1,0,0,0,6996,6997,5,454, - 0,0,6997,7021,1,0,0,0,6998,7021,3,686,343,0,6999,7001,3,562,281, - 0,7000,7002,3,752,376,0,7001,7000,1,0,0,0,7001,7002,1,0,0,0,7002, - 7021,1,0,0,0,7003,7021,3,716,358,0,7004,7005,5,2,0,0,7005,7006,3, - 674,337,0,7006,7007,5,6,0,0,7007,7008,3,730,365,0,7008,7009,5,3, - 0,0,7009,7021,1,0,0,0,7010,7011,3,714,357,0,7011,7012,5,125,0,0, - 7012,7013,3,714,357,0,7013,7021,1,0,0,0,7014,7021,3,780,390,0,7015, - 7016,7,29,0,0,7016,7021,3,682,341,5,7017,7018,3,724,362,0,7018,7019, - 3,682,341,2,7019,7021,1,0,0,0,7020,6932,1,0,0,0,7020,6935,1,0,0, - 0,7020,6940,1,0,0,0,7020,6942,1,0,0,0,7020,6944,1,0,0,0,7020,6945, - 1,0,0,0,7020,6946,1,0,0,0,7020,6947,1,0,0,0,7020,6948,1,0,0,0,7020, - 6961,1,0,0,0,7020,6964,1,0,0,0,7020,6974,1,0,0,0,7020,6975,1,0,0, - 0,7020,6976,1,0,0,0,7020,6977,1,0,0,0,7020,6978,1,0,0,0,7020,6983, - 1,0,0,0,7020,6998,1,0,0,0,7020,6999,1,0,0,0,7020,7003,1,0,0,0,7020, - 7004,1,0,0,0,7020,7010,1,0,0,0,7020,7014,1,0,0,0,7020,7015,1,0,0, - 0,7020,7017,1,0,0,0,7021,7049,1,0,0,0,7022,7023,10,3,0,0,7023,7024, - 3,722,361,0,7024,7025,3,682,341,4,7025,7048,1,0,0,0,7026,7027,10, - 6,0,0,7027,7028,5,26,0,0,7028,7048,3,652,326,0,7029,7030,10,4,0, - 0,7030,7032,3,724,362,0,7031,7033,3,682,341,0,7032,7031,1,0,0,0, - 7032,7033,1,0,0,0,7033,7048,1,0,0,0,7034,7035,10,1,0,0,7035,7037, - 5,116,0,0,7036,7038,5,77,0,0,7037,7036,1,0,0,0,7037,7038,1,0,0,0, - 7038,7045,1,0,0,0,7039,7040,5,56,0,0,7040,7041,5,64,0,0,7041,7046, - 3,682,341,0,7042,7043,5,275,0,0,7043,7046,3,528,264,0,7044,7046, - 5,188,0,0,7045,7039,1,0,0,0,7045,7042,1,0,0,0,7045,7044,1,0,0,0, - 7046,7048,1,0,0,0,7047,7022,1,0,0,0,7047,7026,1,0,0,0,7047,7029, - 1,0,0,0,7047,7034,1,0,0,0,7048,7051,1,0,0,0,7049,7047,1,0,0,0,7049, - 7050,1,0,0,0,7050,683,1,0,0,0,7051,7049,1,0,0,0,7052,7078,3,806, - 403,0,7053,7075,5,2,0,0,7054,7058,3,736,368,0,7055,7056,5,6,0,0, - 7056,7057,5,101,0,0,7057,7059,3,738,369,0,7058,7055,1,0,0,0,7058, - 7059,1,0,0,0,7059,7061,1,0,0,0,7060,7062,3,586,293,0,7061,7060,1, - 0,0,0,7061,7062,1,0,0,0,7062,7076,1,0,0,0,7063,7064,5,101,0,0,7064, - 7066,3,738,369,0,7065,7067,3,586,293,0,7066,7065,1,0,0,0,7066,7067, - 1,0,0,0,7067,7076,1,0,0,0,7068,7069,7,80,0,0,7069,7071,3,736,368, - 0,7070,7072,3,586,293,0,7071,7070,1,0,0,0,7071,7072,1,0,0,0,7072, - 7076,1,0,0,0,7073,7076,5,9,0,0,7074,7076,1,0,0,0,7075,7054,1,0,0, - 0,7075,7063,1,0,0,0,7075,7068,1,0,0,0,7075,7073,1,0,0,0,7075,7074, - 1,0,0,0,7076,7077,1,0,0,0,7077,7079,5,3,0,0,7078,7053,1,0,0,0,7078, - 7079,1,0,0,0,7079,685,1,0,0,0,7080,7087,3,684,342,0,7081,7082,5, - 479,0,0,7082,7083,5,66,0,0,7083,7084,5,2,0,0,7084,7085,3,586,293, - 0,7085,7086,5,3,0,0,7086,7088,1,0,0,0,7087,7081,1,0,0,0,7087,7088, - 1,0,0,0,7088,7095,1,0,0,0,7089,7090,5,480,0,0,7090,7091,5,2,0,0, - 7091,7092,5,103,0,0,7092,7093,3,674,337,0,7093,7094,5,3,0,0,7094, - 7096,1,0,0,0,7095,7089,1,0,0,0,7095,7096,1,0,0,0,7096,7102,1,0,0, - 0,7097,7100,5,124,0,0,7098,7101,3,708,354,0,7099,7101,3,818,409, - 0,7100,7098,1,0,0,0,7100,7099,1,0,0,0,7101,7103,1,0,0,0,7102,7097, - 1,0,0,0,7102,7103,1,0,0,0,7103,7106,1,0,0,0,7104,7106,3,690,345, - 0,7105,7080,1,0,0,0,7105,7104,1,0,0,0,7106,687,1,0,0,0,7107,7110, - 3,684,342,0,7108,7110,3,690,345,0,7109,7107,1,0,0,0,7109,7108,1, - 0,0,0,7110,689,1,0,0,0,7111,7112,5,108,0,0,7112,7113,5,62,0,0,7113, - 7114,5,2,0,0,7114,7115,3,674,337,0,7115,7116,5,3,0,0,7116,7286,1, - 0,0,0,7117,7286,5,48,0,0,7118,7120,7,95,0,0,7119,7121,3,660,330, - 0,7120,7119,1,0,0,0,7120,7121,1,0,0,0,7121,7286,1,0,0,0,7122,7286, - 5,49,0,0,7123,7286,5,52,0,0,7124,7286,5,89,0,0,7125,7286,5,99,0, - 0,7126,7286,5,47,0,0,7127,7286,5,111,0,0,7128,7129,7,96,0,0,7129, - 7130,5,2,0,0,7130,7131,3,674,337,0,7131,7132,5,36,0,0,7132,7133, - 3,652,326,0,7133,7134,5,3,0,0,7134,7286,1,0,0,0,7135,7136,5,397, - 0,0,7136,7141,5,2,0,0,7137,7138,3,742,371,0,7138,7139,5,64,0,0,7139, - 7140,3,674,337,0,7140,7142,1,0,0,0,7141,7137,1,0,0,0,7141,7142,1, - 0,0,0,7142,7143,1,0,0,0,7143,7286,5,3,0,0,7144,7145,5,489,0,0,7145, - 7146,5,2,0,0,7146,7149,3,674,337,0,7147,7148,5,6,0,0,7148,7150,3, - 744,372,0,7149,7147,1,0,0,0,7149,7150,1,0,0,0,7150,7151,1,0,0,0, - 7151,7152,5,3,0,0,7152,7286,1,0,0,0,7153,7154,5,410,0,0,7154,7155, - 5,2,0,0,7155,7156,3,674,337,0,7156,7157,5,84,0,0,7157,7158,3,674, - 337,0,7158,7159,5,64,0,0,7159,7162,3,674,337,0,7160,7161,5,62,0, - 0,7161,7163,3,674,337,0,7162,7160,1,0,0,0,7162,7163,1,0,0,0,7163, - 7164,1,0,0,0,7164,7165,5,3,0,0,7165,7286,1,0,0,0,7166,7167,5,411, - 0,0,7167,7172,5,2,0,0,7168,7169,3,682,341,0,7169,7170,5,68,0,0,7170, - 7171,3,682,341,0,7171,7173,1,0,0,0,7172,7168,1,0,0,0,7172,7173,1, - 0,0,0,7173,7174,1,0,0,0,7174,7286,5,3,0,0,7175,7176,5,417,0,0,7176, - 7178,5,2,0,0,7177,7179,3,746,373,0,7178,7177,1,0,0,0,7178,7179,1, - 0,0,0,7179,7180,1,0,0,0,7180,7286,5,3,0,0,7181,7182,5,421,0,0,7182, - 7184,5,2,0,0,7183,7185,7,97,0,0,7184,7183,1,0,0,0,7184,7185,1,0, - 0,0,7185,7190,1,0,0,0,7186,7188,3,674,337,0,7187,7186,1,0,0,0,7187, - 7188,1,0,0,0,7188,7189,1,0,0,0,7189,7191,5,64,0,0,7190,7187,1,0, - 0,0,7190,7191,1,0,0,0,7191,7192,1,0,0,0,7192,7193,3,730,365,0,7193, - 7194,1,0,0,0,7194,7195,5,3,0,0,7195,7286,1,0,0,0,7196,7197,5,408, - 0,0,7197,7198,5,2,0,0,7198,7199,3,674,337,0,7199,7200,5,6,0,0,7200, - 7201,3,674,337,0,7201,7202,5,3,0,0,7202,7286,1,0,0,0,7203,7204,7, - 98,0,0,7204,7286,3,534,267,0,7205,7206,5,426,0,0,7206,7207,5,2,0, - 0,7207,7208,5,266,0,0,7208,7218,3,824,412,0,7209,7216,5,6,0,0,7210, - 7211,5,424,0,0,7211,7212,5,2,0,0,7212,7213,3,692,346,0,7213,7214, - 5,3,0,0,7214,7217,1,0,0,0,7215,7217,3,730,365,0,7216,7210,1,0,0, - 0,7216,7215,1,0,0,0,7217,7219,1,0,0,0,7218,7209,1,0,0,0,7218,7219, - 1,0,0,0,7219,7220,1,0,0,0,7220,7221,5,3,0,0,7221,7286,1,0,0,0,7222, - 7223,5,427,0,0,7223,7224,5,2,0,0,7224,7225,3,682,341,0,7225,7226, - 3,698,349,0,7226,7227,5,3,0,0,7227,7286,1,0,0,0,7228,7229,5,428, - 0,0,7229,7230,5,2,0,0,7230,7231,3,692,346,0,7231,7232,5,3,0,0,7232, - 7286,1,0,0,0,7233,7234,5,429,0,0,7234,7235,5,2,0,0,7235,7236,3,696, - 348,0,7236,7239,3,674,337,0,7237,7238,7,99,0,0,7238,7240,5,378,0, - 0,7239,7237,1,0,0,0,7239,7240,1,0,0,0,7240,7241,1,0,0,0,7241,7242, - 5,3,0,0,7242,7286,1,0,0,0,7243,7244,5,430,0,0,7244,7245,5,2,0,0, - 7245,7246,5,266,0,0,7246,7249,3,824,412,0,7247,7248,5,6,0,0,7248, - 7250,3,674,337,0,7249,7247,1,0,0,0,7249,7250,1,0,0,0,7250,7251,1, - 0,0,0,7251,7252,5,3,0,0,7252,7286,1,0,0,0,7253,7254,5,431,0,0,7254, - 7255,5,2,0,0,7255,7256,5,383,0,0,7256,7257,3,674,337,0,7257,7258, - 5,6,0,0,7258,7262,5,375,0,0,7259,7260,5,269,0,0,7260,7263,5,450, - 0,0,7261,7263,3,674,337,0,7262,7259,1,0,0,0,7262,7261,1,0,0,0,7263, - 7273,1,0,0,0,7264,7265,5,6,0,0,7265,7271,5,339,0,0,7266,7268,5,269, - 0,0,7267,7266,1,0,0,0,7267,7268,1,0,0,0,7268,7269,1,0,0,0,7269,7272, - 5,450,0,0,7270,7272,5,385,0,0,7271,7267,1,0,0,0,7271,7270,1,0,0, - 0,7272,7274,1,0,0,0,7273,7264,1,0,0,0,7273,7274,1,0,0,0,7274,7275, - 1,0,0,0,7275,7276,5,3,0,0,7276,7286,1,0,0,0,7277,7278,5,432,0,0, - 7278,7279,5,2,0,0,7279,7280,3,696,348,0,7280,7281,3,674,337,0,7281, - 7282,5,36,0,0,7282,7283,3,654,327,0,7283,7284,5,3,0,0,7284,7286, - 1,0,0,0,7285,7111,1,0,0,0,7285,7117,1,0,0,0,7285,7118,1,0,0,0,7285, - 7122,1,0,0,0,7285,7123,1,0,0,0,7285,7124,1,0,0,0,7285,7125,1,0,0, - 0,7285,7126,1,0,0,0,7285,7127,1,0,0,0,7285,7128,1,0,0,0,7285,7135, - 1,0,0,0,7285,7144,1,0,0,0,7285,7153,1,0,0,0,7285,7166,1,0,0,0,7285, - 7175,1,0,0,0,7285,7181,1,0,0,0,7285,7196,1,0,0,0,7285,7203,1,0,0, - 0,7285,7205,1,0,0,0,7285,7222,1,0,0,0,7285,7228,1,0,0,0,7285,7233, - 1,0,0,0,7285,7243,1,0,0,0,7285,7253,1,0,0,0,7285,7277,1,0,0,0,7286, - 691,1,0,0,0,7287,7292,3,694,347,0,7288,7289,5,6,0,0,7289,7291,3, - 694,347,0,7290,7288,1,0,0,0,7291,7294,1,0,0,0,7292,7290,1,0,0,0, - 7292,7293,1,0,0,0,7293,693,1,0,0,0,7294,7292,1,0,0,0,7295,7298,3, - 674,337,0,7296,7297,5,36,0,0,7297,7299,3,824,412,0,7298,7296,1,0, - 0,0,7298,7299,1,0,0,0,7299,695,1,0,0,0,7300,7301,7,100,0,0,7301, - 697,1,0,0,0,7302,7304,5,286,0,0,7303,7305,3,700,350,0,7304,7303, - 1,0,0,0,7304,7305,1,0,0,0,7305,7306,1,0,0,0,7306,7308,3,682,341, - 0,7307,7309,3,700,350,0,7308,7307,1,0,0,0,7308,7309,1,0,0,0,7309, - 699,1,0,0,0,7310,7311,5,147,0,0,7311,7312,7,101,0,0,7312,701,1,0, - 0,0,7313,7314,5,104,0,0,7314,7319,3,704,352,0,7315,7316,5,6,0,0, - 7316,7318,3,704,352,0,7317,7315,1,0,0,0,7318,7321,1,0,0,0,7319,7317, - 1,0,0,0,7319,7320,1,0,0,0,7320,703,1,0,0,0,7321,7319,1,0,0,0,7322, - 7323,3,818,409,0,7323,7324,5,36,0,0,7324,7325,3,708,354,0,7325,705, - 1,0,0,0,7326,7329,5,124,0,0,7327,7330,3,708,354,0,7328,7330,3,818, - 409,0,7329,7327,1,0,0,0,7329,7328,1,0,0,0,7330,707,1,0,0,0,7331, - 7333,5,2,0,0,7332,7334,3,818,409,0,7333,7332,1,0,0,0,7333,7334,1, - 0,0,0,7334,7338,1,0,0,0,7335,7336,5,285,0,0,7336,7337,5,147,0,0, - 7337,7339,3,730,365,0,7338,7335,1,0,0,0,7338,7339,1,0,0,0,7339,7341, - 1,0,0,0,7340,7342,3,586,293,0,7341,7340,1,0,0,0,7341,7342,1,0,0, - 0,7342,7344,1,0,0,0,7343,7345,3,710,355,0,7344,7343,1,0,0,0,7344, - 7345,1,0,0,0,7345,7346,1,0,0,0,7346,7347,5,3,0,0,7347,709,1,0,0, - 0,7348,7353,7,102,0,0,7349,7350,5,387,0,0,7350,7351,3,712,356,0, - 7351,7352,5,33,0,0,7352,7354,1,0,0,0,7353,7349,1,0,0,0,7353,7354, - 1,0,0,0,7354,7355,1,0,0,0,7355,7356,3,712,356,0,7356,7366,1,0,0, - 0,7357,7364,5,199,0,0,7358,7359,5,434,0,0,7359,7365,5,414,0,0,7360, - 7365,5,66,0,0,7361,7365,5,467,0,0,7362,7363,5,269,0,0,7363,7365, - 5,482,0,0,7364,7358,1,0,0,0,7364,7360,1,0,0,0,7364,7361,1,0,0,0, - 7364,7362,1,0,0,0,7365,7367,1,0,0,0,7366,7357,1,0,0,0,7366,7367, - 1,0,0,0,7367,711,1,0,0,0,7368,7371,5,362,0,0,7369,7371,3,674,337, - 0,7370,7368,1,0,0,0,7370,7369,1,0,0,0,7371,7372,1,0,0,0,7372,7376, - 7,103,0,0,7373,7374,5,434,0,0,7374,7376,5,414,0,0,7375,7370,1,0, - 0,0,7375,7373,1,0,0,0,7376,713,1,0,0,0,7377,7385,3,716,358,0,7378, - 7379,5,2,0,0,7379,7380,3,730,365,0,7380,7381,5,6,0,0,7381,7382,3, - 674,337,0,7382,7383,5,3,0,0,7383,7385,1,0,0,0,7384,7377,1,0,0,0, - 7384,7378,1,0,0,0,7385,715,1,0,0,0,7386,7387,5,414,0,0,7387,7389, - 5,2,0,0,7388,7390,3,730,365,0,7389,7388,1,0,0,0,7389,7390,1,0,0, - 0,7390,7391,1,0,0,0,7391,7392,5,3,0,0,7392,717,1,0,0,0,7393,7394, - 7,104,0,0,7394,719,1,0,0,0,7395,7398,5,29,0,0,7396,7398,3,722,361, - 0,7397,7395,1,0,0,0,7397,7396,1,0,0,0,7398,721,1,0,0,0,7399,7400, - 7,105,0,0,7400,723,1,0,0,0,7401,7408,5,29,0,0,7402,7403,5,278,0, - 0,7403,7404,5,2,0,0,7404,7405,3,414,207,0,7405,7406,5,3,0,0,7406, - 7408,1,0,0,0,7407,7401,1,0,0,0,7407,7402,1,0,0,0,7408,725,1,0,0, - 0,7409,7416,3,720,360,0,7410,7411,5,278,0,0,7411,7412,5,2,0,0,7412, - 7413,3,414,207,0,7413,7414,5,3,0,0,7414,7416,1,0,0,0,7415,7409,1, - 0,0,0,7415,7410,1,0,0,0,7416,727,1,0,0,0,7417,7423,3,726,363,0,7418, - 7420,5,77,0,0,7419,7418,1,0,0,0,7419,7420,1,0,0,0,7420,7421,1,0, - 0,0,7421,7423,7,106,0,0,7422,7417,1,0,0,0,7422,7419,1,0,0,0,7423, - 729,1,0,0,0,7424,7429,3,674,337,0,7425,7426,5,6,0,0,7426,7428,3, - 674,337,0,7427,7425,1,0,0,0,7428,7431,1,0,0,0,7429,7427,1,0,0,0, - 7429,7430,1,0,0,0,7430,731,1,0,0,0,7431,7429,1,0,0,0,7432,7433,5, - 2,0,0,7433,7434,3,674,337,0,7434,7435,5,3,0,0,7435,7438,1,0,0,0, - 7436,7438,3,800,400,0,7437,7432,1,0,0,0,7437,7436,1,0,0,0,7438,733, - 1,0,0,0,7439,7442,3,674,337,0,7440,7442,3,800,400,0,7441,7439,1, - 0,0,0,7441,7440,1,0,0,0,7442,735,1,0,0,0,7443,7448,3,738,369,0,7444, - 7445,5,6,0,0,7445,7447,3,738,369,0,7446,7444,1,0,0,0,7447,7450,1, - 0,0,0,7448,7446,1,0,0,0,7448,7449,1,0,0,0,7449,737,1,0,0,0,7450, - 7448,1,0,0,0,7451,7457,3,674,337,0,7452,7453,3,820,410,0,7453,7454, - 7,107,0,0,7454,7455,3,674,337,0,7455,7457,1,0,0,0,7456,7451,1,0, - 0,0,7456,7452,1,0,0,0,7457,739,1,0,0,0,7458,7468,5,4,0,0,7459,7469, - 3,730,365,0,7460,7465,3,740,370,0,7461,7462,5,6,0,0,7462,7464,3, - 740,370,0,7463,7461,1,0,0,0,7464,7467,1,0,0,0,7465,7463,1,0,0,0, - 7465,7466,1,0,0,0,7466,7469,1,0,0,0,7467,7465,1,0,0,0,7468,7459, - 1,0,0,0,7468,7460,1,0,0,0,7468,7469,1,0,0,0,7469,7470,1,0,0,0,7470, - 7471,5,5,0,0,7471,741,1,0,0,0,7472,7481,3,826,413,0,7473,7481,5, - 384,0,0,7474,7481,5,264,0,0,7475,7481,5,176,0,0,7476,7481,5,218, - 0,0,7477,7481,5,261,0,0,7478,7481,5,326,0,0,7479,7481,3,808,404, - 0,7480,7472,1,0,0,0,7480,7473,1,0,0,0,7480,7474,1,0,0,0,7480,7475, - 1,0,0,0,7480,7476,1,0,0,0,7480,7477,1,0,0,0,7480,7478,1,0,0,0,7480, - 7479,1,0,0,0,7481,743,1,0,0,0,7482,7483,7,108,0,0,7483,745,1,0,0, - 0,7484,7485,3,674,337,0,7485,7486,5,64,0,0,7486,7489,3,674,337,0, - 7487,7488,5,62,0,0,7488,7490,3,674,337,0,7489,7487,1,0,0,0,7489, - 7490,1,0,0,0,7490,7506,1,0,0,0,7491,7492,3,674,337,0,7492,7493,5, - 62,0,0,7493,7496,3,674,337,0,7494,7495,5,64,0,0,7495,7497,3,674, - 337,0,7496,7494,1,0,0,0,7496,7497,1,0,0,0,7497,7506,1,0,0,0,7498, - 7499,3,674,337,0,7499,7500,5,127,0,0,7500,7501,3,674,337,0,7501, - 7502,5,197,0,0,7502,7503,3,674,337,0,7503,7506,1,0,0,0,7504,7506, - 3,730,365,0,7505,7484,1,0,0,0,7505,7491,1,0,0,0,7505,7498,1,0,0, - 0,7505,7504,1,0,0,0,7506,747,1,0,0,0,7507,7508,5,102,0,0,7508,7509, - 3,674,337,0,7509,7510,5,93,0,0,7510,7511,3,674,337,0,7511,749,1, - 0,0,0,7512,7515,5,11,0,0,7513,7516,3,824,412,0,7514,7516,5,9,0,0, - 7515,7513,1,0,0,0,7515,7514,1,0,0,0,7516,7530,1,0,0,0,7517,7526, - 5,4,0,0,7518,7527,3,674,337,0,7519,7521,3,674,337,0,7520,7519,1, - 0,0,0,7520,7521,1,0,0,0,7521,7522,1,0,0,0,7522,7524,5,8,0,0,7523, - 7525,3,674,337,0,7524,7523,1,0,0,0,7524,7525,1,0,0,0,7525,7527,1, - 0,0,0,7526,7518,1,0,0,0,7526,7520,1,0,0,0,7527,7528,1,0,0,0,7528, - 7530,5,5,0,0,7529,7512,1,0,0,0,7529,7517,1,0,0,0,7530,751,1,0,0, - 0,7531,7533,3,750,375,0,7532,7531,1,0,0,0,7533,7534,1,0,0,0,7534, - 7532,1,0,0,0,7534,7535,1,0,0,0,7535,753,1,0,0,0,7536,7538,3,750, - 375,0,7537,7536,1,0,0,0,7538,7541,1,0,0,0,7539,7537,1,0,0,0,7539, - 7540,1,0,0,0,7540,755,1,0,0,0,7541,7539,1,0,0,0,7542,7547,3,758, - 379,0,7543,7544,5,6,0,0,7544,7546,3,758,379,0,7545,7543,1,0,0,0, - 7546,7549,1,0,0,0,7547,7545,1,0,0,0,7547,7548,1,0,0,0,7548,757,1, - 0,0,0,7549,7547,1,0,0,0,7550,7555,3,734,367,0,7551,7552,5,36,0,0, - 7552,7556,3,824,412,0,7553,7556,3,826,413,0,7554,7556,1,0,0,0,7555, - 7551,1,0,0,0,7555,7553,1,0,0,0,7555,7554,1,0,0,0,7556,7559,1,0,0, - 0,7557,7559,5,9,0,0,7558,7550,1,0,0,0,7558,7557,1,0,0,0,7559,759, - 1,0,0,0,7560,7565,3,780,390,0,7561,7562,5,6,0,0,7562,7564,3,780, - 390,0,7563,7561,1,0,0,0,7564,7567,1,0,0,0,7565,7563,1,0,0,0,7565, - 7566,1,0,0,0,7566,761,1,0,0,0,7567,7565,1,0,0,0,7568,7573,3,774, - 387,0,7569,7570,5,6,0,0,7570,7572,3,774,387,0,7571,7569,1,0,0,0, - 7572,7575,1,0,0,0,7573,7571,1,0,0,0,7573,7574,1,0,0,0,7574,763,1, - 0,0,0,7575,7573,1,0,0,0,7576,7581,3,790,395,0,7577,7578,5,6,0,0, - 7578,7580,3,790,395,0,7579,7577,1,0,0,0,7580,7583,1,0,0,0,7581,7579, - 1,0,0,0,7581,7582,1,0,0,0,7582,765,1,0,0,0,7583,7581,1,0,0,0,7584, - 7589,3,788,394,0,7585,7586,5,6,0,0,7586,7588,3,788,394,0,7587,7585, - 1,0,0,0,7588,7591,1,0,0,0,7589,7587,1,0,0,0,7589,7590,1,0,0,0,7590, - 767,1,0,0,0,7591,7589,1,0,0,0,7592,7593,3,780,390,0,7593,769,1,0, - 0,0,7594,7595,3,780,390,0,7595,771,1,0,0,0,7596,7597,3,780,390,0, - 7597,773,1,0,0,0,7598,7599,3,780,390,0,7599,775,1,0,0,0,7600,7601, - 3,780,390,0,7601,777,1,0,0,0,7602,7603,3,316,158,0,7603,779,1,0, - 0,0,7604,7606,3,818,409,0,7605,7607,3,752,376,0,7606,7605,1,0,0, - 0,7606,7607,1,0,0,0,7607,781,1,0,0,0,7608,7613,3,770,385,0,7609, - 7610,5,6,0,0,7610,7612,3,770,385,0,7611,7609,1,0,0,0,7612,7615,1, - 0,0,0,7613,7611,1,0,0,0,7613,7614,1,0,0,0,7614,783,1,0,0,0,7615, - 7613,1,0,0,0,7616,7621,3,818,409,0,7617,7618,5,6,0,0,7618,7620,3, - 818,409,0,7619,7617,1,0,0,0,7620,7623,1,0,0,0,7621,7619,1,0,0,0, - 7621,7622,1,0,0,0,7622,785,1,0,0,0,7623,7621,1,0,0,0,7624,7625,3, - 316,158,0,7625,787,1,0,0,0,7626,7627,3,316,158,0,7627,789,1,0,0, - 0,7628,7629,3,316,158,0,7629,791,1,0,0,0,7630,7631,3,818,409,0,7631, - 793,1,0,0,0,7632,7633,3,818,409,0,7633,795,1,0,0,0,7634,7639,3,820, - 410,0,7635,7636,3,818,409,0,7636,7637,3,752,376,0,7637,7639,1,0, - 0,0,7638,7634,1,0,0,0,7638,7635,1,0,0,0,7639,797,1,0,0,0,7640,7645, - 3,820,410,0,7641,7642,3,818,409,0,7642,7643,3,752,376,0,7643,7645, - 1,0,0,0,7644,7640,1,0,0,0,7644,7641,1,0,0,0,7645,799,1,0,0,0,7646, - 7647,3,818,409,0,7647,7648,3,754,377,0,7648,7651,1,0,0,0,7649,7651, - 4,400,10,0,7650,7646,1,0,0,0,7650,7649,1,0,0,0,7651,801,1,0,0,0, - 7652,7653,3,818,409,0,7653,803,1,0,0,0,7654,7659,3,820,410,0,7655, - 7656,3,818,409,0,7656,7657,3,752,376,0,7657,7659,1,0,0,0,7658,7654, - 1,0,0,0,7658,7655,1,0,0,0,7659,805,1,0,0,0,7660,7665,3,820,410,0, - 7661,7662,3,818,409,0,7662,7663,3,752,376,0,7663,7665,1,0,0,0,7664, - 7660,1,0,0,0,7664,7661,1,0,0,0,7665,807,1,0,0,0,7666,7669,3,810, - 405,0,7667,7668,5,487,0,0,7668,7670,3,810,405,0,7669,7667,1,0,0, - 0,7669,7670,1,0,0,0,7670,809,1,0,0,0,7671,7683,5,558,0,0,7672,7683, - 5,560,0,0,7673,7677,5,562,0,0,7674,7676,5,588,0,0,7675,7674,1,0, - 0,0,7676,7679,1,0,0,0,7677,7675,1,0,0,0,7677,7678,1,0,0,0,7678,7680, - 1,0,0,0,7679,7677,1,0,0,0,7680,7683,5,589,0,0,7681,7683,5,584,0, - 0,7682,7671,1,0,0,0,7682,7672,1,0,0,0,7682,7673,1,0,0,0,7682,7681, - 1,0,0,0,7683,811,1,0,0,0,7684,7686,7,29,0,0,7685,7684,1,0,0,0,7685, - 7686,1,0,0,0,7686,7687,1,0,0,0,7687,7688,5,571,0,0,7688,813,1,0, - 0,0,7689,7695,3,822,411,0,7690,7695,5,52,0,0,7691,7695,5,49,0,0, - 7692,7695,5,89,0,0,7693,7695,5,524,0,0,7694,7689,1,0,0,0,7694,7690, - 1,0,0,0,7694,7691,1,0,0,0,7694,7692,1,0,0,0,7694,7693,1,0,0,0,7695, - 815,1,0,0,0,7696,7701,3,814,407,0,7697,7698,5,6,0,0,7698,7700,3, - 814,407,0,7699,7697,1,0,0,0,7700,7703,1,0,0,0,7701,7699,1,0,0,0, - 7701,7702,1,0,0,0,7702,817,1,0,0,0,7703,7701,1,0,0,0,7704,7709,3, - 826,413,0,7705,7709,3,828,414,0,7706,7709,3,830,415,0,7707,7709, - 3,930,465,0,7708,7704,1,0,0,0,7708,7705,1,0,0,0,7708,7706,1,0,0, - 0,7708,7707,1,0,0,0,7709,819,1,0,0,0,7710,7715,3,826,413,0,7711, - 7715,3,828,414,0,7712,7715,3,930,465,0,7713,7715,3,832,416,0,7714, - 7710,1,0,0,0,7714,7711,1,0,0,0,7714,7712,1,0,0,0,7714,7713,1,0,0, - 0,7715,821,1,0,0,0,7716,7721,3,826,413,0,7717,7721,3,828,414,0,7718, - 7721,3,830,415,0,7719,7721,3,832,416,0,7720,7716,1,0,0,0,7720,7717, - 1,0,0,0,7720,7718,1,0,0,0,7720,7719,1,0,0,0,7721,823,1,0,0,0,7722, - 7726,3,822,411,0,7723,7726,3,930,465,0,7724,7726,3,834,417,0,7725, - 7722,1,0,0,0,7725,7723,1,0,0,0,7725,7724,1,0,0,0,7726,825,1,0,0, - 0,7727,7730,5,549,0,0,7728,7729,5,487,0,0,7729,7731,3,810,405,0, - 7730,7728,1,0,0,0,7730,7731,1,0,0,0,7731,7739,1,0,0,0,7732,7739, - 3,808,404,0,7733,7739,5,550,0,0,7734,7739,5,554,0,0,7735,7739,5, - 574,0,0,7736,7739,5,575,0,0,7737,7739,3,930,465,0,7738,7727,1,0, - 0,0,7738,7732,1,0,0,0,7738,7733,1,0,0,0,7738,7734,1,0,0,0,7738,7735, - 1,0,0,0,7738,7736,1,0,0,0,7738,7737,1,0,0,0,7739,827,1,0,0,0,7740, - 7741,7,109,0,0,7741,829,1,0,0,0,7742,7794,5,387,0,0,7743,7794,5, - 388,0,0,7744,7794,3,662,331,0,7745,7794,5,390,0,0,7746,7794,5,391, - 0,0,7747,7794,3,664,332,0,7748,7794,5,393,0,0,7749,7794,5,394,0, - 0,7750,7794,5,395,0,0,7751,7794,5,396,0,0,7752,7794,5,397,0,0,7753, - 7794,5,398,0,0,7754,7794,5,399,0,0,7755,7794,5,470,0,0,7756,7794, - 5,400,0,0,7757,7794,5,401,0,0,7758,7794,5,402,0,0,7759,7794,5,403, - 0,0,7760,7794,5,404,0,0,7761,7794,5,405,0,0,7762,7794,5,406,0,0, - 7763,7794,5,407,0,0,7764,7794,5,489,0,0,7765,7794,5,408,0,0,7766, - 7794,3,658,329,0,7767,7794,5,453,0,0,7768,7794,5,410,0,0,7769,7794, - 5,411,0,0,7770,7794,5,412,0,0,7771,7794,5,413,0,0,7772,7794,5,414, - 0,0,7773,7794,5,415,0,0,7774,7794,5,416,0,0,7775,7794,5,417,0,0, - 7776,7794,5,418,0,0,7777,7794,5,419,0,0,7778,7794,5,420,0,0,7779, - 7794,5,421,0,0,7780,7794,5,422,0,0,7781,7794,5,423,0,0,7782,7794, - 5,424,0,0,7783,7794,5,425,0,0,7784,7794,5,426,0,0,7785,7794,5,427, - 0,0,7786,7794,5,428,0,0,7787,7794,5,476,0,0,7788,7794,5,429,0,0, - 7789,7794,5,430,0,0,7790,7794,5,431,0,0,7791,7794,5,432,0,0,7792, - 7794,5,474,0,0,7793,7742,1,0,0,0,7793,7743,1,0,0,0,7793,7744,1,0, - 0,0,7793,7745,1,0,0,0,7793,7746,1,0,0,0,7793,7747,1,0,0,0,7793,7748, - 1,0,0,0,7793,7749,1,0,0,0,7793,7750,1,0,0,0,7793,7751,1,0,0,0,7793, - 7752,1,0,0,0,7793,7753,1,0,0,0,7793,7754,1,0,0,0,7793,7755,1,0,0, - 0,7793,7756,1,0,0,0,7793,7757,1,0,0,0,7793,7758,1,0,0,0,7793,7759, - 1,0,0,0,7793,7760,1,0,0,0,7793,7761,1,0,0,0,7793,7762,1,0,0,0,7793, - 7763,1,0,0,0,7793,7764,1,0,0,0,7793,7765,1,0,0,0,7793,7766,1,0,0, - 0,7793,7767,1,0,0,0,7793,7768,1,0,0,0,7793,7769,1,0,0,0,7793,7770, - 1,0,0,0,7793,7771,1,0,0,0,7793,7772,1,0,0,0,7793,7773,1,0,0,0,7793, - 7774,1,0,0,0,7793,7775,1,0,0,0,7793,7776,1,0,0,0,7793,7777,1,0,0, - 0,7793,7778,1,0,0,0,7793,7779,1,0,0,0,7793,7780,1,0,0,0,7793,7781, - 1,0,0,0,7793,7782,1,0,0,0,7793,7783,1,0,0,0,7793,7784,1,0,0,0,7793, - 7785,1,0,0,0,7793,7786,1,0,0,0,7793,7787,1,0,0,0,7793,7788,1,0,0, - 0,7793,7789,1,0,0,0,7793,7790,1,0,0,0,7793,7791,1,0,0,0,7793,7792, - 1,0,0,0,7794,831,1,0,0,0,7795,7796,7,110,0,0,7796,833,1,0,0,0,7797, - 7798,7,111,0,0,7798,835,1,0,0,0,7799,7801,3,838,419,0,7800,7799, - 1,0,0,0,7800,7801,1,0,0,0,7801,7812,1,0,0,0,7802,7810,5,178,0,0, - 7803,7807,3,840,420,0,7804,7807,5,178,0,0,7805,7807,3,838,419,0, - 7806,7803,1,0,0,0,7806,7804,1,0,0,0,7806,7805,1,0,0,0,7807,7808, - 1,0,0,0,7808,7806,1,0,0,0,7808,7809,1,0,0,0,7809,7811,1,0,0,0,7810, - 7806,1,0,0,0,7810,7811,1,0,0,0,7811,7813,1,0,0,0,7812,7802,1,0,0, - 0,7812,7813,1,0,0,0,7813,7814,1,0,0,0,7814,7818,5,146,0,0,7815,7817, - 3,846,423,0,7816,7815,1,0,0,0,7817,7820,1,0,0,0,7818,7816,1,0,0, - 0,7818,7819,1,0,0,0,7819,7822,1,0,0,0,7820,7818,1,0,0,0,7821,7823, - 3,924,462,0,7822,7821,1,0,0,0,7822,7823,1,0,0,0,7823,7824,1,0,0, - 0,7824,7826,5,454,0,0,7825,7827,3,928,464,0,7826,7825,1,0,0,0,7826, - 7827,1,0,0,0,7827,837,1,0,0,0,7828,7829,5,18,0,0,7829,7830,3,928, - 464,0,7830,7831,5,19,0,0,7831,839,1,0,0,0,7832,7879,3,928,464,0, - 7833,7834,5,496,0,0,7834,7837,5,62,0,0,7835,7838,5,28,0,0,7836,7838, - 3,818,409,0,7837,7835,1,0,0,0,7837,7836,1,0,0,0,7838,7880,1,0,0, - 0,7839,7841,5,497,0,0,7840,7839,1,0,0,0,7840,7841,1,0,0,0,7841,7842, - 1,0,0,0,7842,7844,3,652,326,0,7843,7845,3,98,49,0,7844,7843,1,0, - 0,0,7844,7845,1,0,0,0,7845,7848,1,0,0,0,7846,7847,5,77,0,0,7847, - 7849,5,78,0,0,7848,7846,1,0,0,0,7848,7849,1,0,0,0,7849,7855,1,0, - 0,0,7850,7853,3,844,422,0,7851,7853,5,53,0,0,7852,7850,1,0,0,0,7852, - 7851,1,0,0,0,7853,7854,1,0,0,0,7854,7856,3,932,466,0,7855,7852,1, - 0,0,0,7855,7856,1,0,0,0,7856,7880,1,0,0,0,7857,7859,5,269,0,0,7858, - 7857,1,0,0,0,7858,7859,1,0,0,0,7859,7860,1,0,0,0,7860,7862,5,324, - 0,0,7861,7858,1,0,0,0,7861,7862,1,0,0,0,7862,7863,1,0,0,0,7863,7875, - 5,172,0,0,7864,7865,5,2,0,0,7865,7870,3,842,421,0,7866,7867,5,6, - 0,0,7867,7869,3,842,421,0,7868,7866,1,0,0,0,7869,7872,1,0,0,0,7870, - 7868,1,0,0,0,7870,7871,1,0,0,0,7871,7873,1,0,0,0,7872,7870,1,0,0, - 0,7873,7874,5,3,0,0,7874,7876,1,0,0,0,7875,7864,1,0,0,0,7875,7876, - 1,0,0,0,7876,7877,1,0,0,0,7877,7878,7,112,0,0,7878,7880,3,560,280, - 0,7879,7833,1,0,0,0,7879,7840,1,0,0,0,7879,7861,1,0,0,0,7880,7881, - 1,0,0,0,7881,7882,5,7,0,0,7882,841,1,0,0,0,7883,7884,3,928,464,0, - 7884,7885,3,652,326,0,7885,843,1,0,0,0,7886,7887,7,113,0,0,7887, - 845,1,0,0,0,7888,7889,3,836,418,0,7889,7890,5,7,0,0,7890,7913,1, - 0,0,0,7891,7913,3,874,437,0,7892,7913,3,876,438,0,7893,7913,3,852, - 426,0,7894,7913,3,860,430,0,7895,7913,3,864,432,0,7896,7913,3,866, - 433,0,7897,7913,3,870,435,0,7898,7913,3,872,436,0,7899,7913,3,880, - 440,0,7900,7913,3,884,442,0,7901,7913,3,886,443,0,7902,7913,3,848, - 424,0,7903,7913,3,850,425,0,7904,7913,3,854,427,0,7905,7913,3,890, - 445,0,7906,7913,3,894,447,0,7907,7913,3,898,449,0,7908,7913,3,914, - 457,0,7909,7913,3,916,458,0,7910,7913,3,918,459,0,7911,7913,3,920, - 460,0,7912,7888,1,0,0,0,7912,7891,1,0,0,0,7912,7892,1,0,0,0,7912, - 7893,1,0,0,0,7912,7894,1,0,0,0,7912,7895,1,0,0,0,7912,7896,1,0,0, - 0,7912,7897,1,0,0,0,7912,7898,1,0,0,0,7912,7899,1,0,0,0,7912,7900, - 1,0,0,0,7912,7901,1,0,0,0,7912,7902,1,0,0,0,7912,7903,1,0,0,0,7912, - 7904,1,0,0,0,7912,7905,1,0,0,0,7912,7906,1,0,0,0,7912,7907,1,0,0, - 0,7912,7908,1,0,0,0,7912,7909,1,0,0,0,7912,7910,1,0,0,0,7912,7911, - 1,0,0,0,7913,847,1,0,0,0,7914,7915,5,498,0,0,7915,7916,3,932,466, - 0,7916,7917,5,7,0,0,7917,849,1,0,0,0,7918,7919,5,433,0,0,7919,7926, - 3,928,464,0,7920,7922,5,2,0,0,7921,7923,3,730,365,0,7922,7921,1, - 0,0,0,7922,7923,1,0,0,0,7923,7924,1,0,0,0,7924,7925,5,3,0,0,7925, - 7927,5,7,0,0,7926,7920,1,0,0,0,7926,7927,1,0,0,0,7927,7938,1,0,0, - 0,7928,7929,5,57,0,0,7929,7930,3,928,464,0,7930,7932,5,2,0,0,7931, - 7933,3,730,365,0,7932,7931,1,0,0,0,7932,7933,1,0,0,0,7933,7934,1, - 0,0,0,7934,7935,5,3,0,0,7935,7936,5,7,0,0,7936,7938,1,0,0,0,7937, - 7918,1,0,0,0,7937,7928,1,0,0,0,7938,851,1,0,0,0,7939,7940,3,858, - 429,0,7940,7941,3,844,422,0,7941,7942,3,932,466,0,7942,7943,5,7, - 0,0,7943,853,1,0,0,0,7944,7946,5,499,0,0,7945,7947,7,114,0,0,7946, - 7945,1,0,0,0,7946,7947,1,0,0,0,7947,7948,1,0,0,0,7948,7949,5,500, - 0,0,7949,7954,3,856,428,0,7950,7951,5,6,0,0,7951,7953,3,856,428, - 0,7952,7950,1,0,0,0,7953,7956,1,0,0,0,7954,7952,1,0,0,0,7954,7955, - 1,0,0,0,7955,7957,1,0,0,0,7956,7954,1,0,0,0,7957,7958,5,7,0,0,7958, - 855,1,0,0,0,7959,7960,3,858,429,0,7960,7961,3,844,422,0,7961,7962, - 3,818,409,0,7962,857,1,0,0,0,7963,7966,3,316,158,0,7964,7966,5,28, - 0,0,7965,7963,1,0,0,0,7965,7964,1,0,0,0,7966,7973,1,0,0,0,7967,7968, - 5,4,0,0,7968,7969,3,674,337,0,7969,7970,5,5,0,0,7970,7972,1,0,0, - 0,7971,7967,1,0,0,0,7972,7975,1,0,0,0,7973,7971,1,0,0,0,7973,7974, - 1,0,0,0,7974,859,1,0,0,0,7975,7973,1,0,0,0,7976,7977,5,220,0,0,7977, - 7978,3,932,466,0,7978,7982,5,93,0,0,7979,7981,3,846,423,0,7980,7979, - 1,0,0,0,7981,7984,1,0,0,0,7982,7980,1,0,0,0,7982,7983,1,0,0,0,7983, - 7996,1,0,0,0,7984,7982,1,0,0,0,7985,7986,5,502,0,0,7986,7987,3,674, - 337,0,7987,7991,5,93,0,0,7988,7990,3,846,423,0,7989,7988,1,0,0,0, - 7990,7993,1,0,0,0,7991,7989,1,0,0,0,7991,7992,1,0,0,0,7992,7995, - 1,0,0,0,7993,7991,1,0,0,0,7994,7985,1,0,0,0,7995,7998,1,0,0,0,7996, - 7994,1,0,0,0,7996,7997,1,0,0,0,7997,8000,1,0,0,0,7998,7996,1,0,0, - 0,7999,8001,3,862,431,0,8000,7999,1,0,0,0,8000,8001,1,0,0,0,8001, - 8002,1,0,0,0,8002,8003,5,454,0,0,8003,8004,5,220,0,0,8004,8005,5, - 7,0,0,8005,861,1,0,0,0,8006,8010,5,58,0,0,8007,8009,3,846,423,0, - 8008,8007,1,0,0,0,8009,8012,1,0,0,0,8010,8008,1,0,0,0,8010,8011, - 1,0,0,0,8011,863,1,0,0,0,8012,8010,1,0,0,0,8013,8015,5,40,0,0,8014, - 8016,3,932,466,0,8015,8014,1,0,0,0,8015,8016,1,0,0,0,8016,8026,1, - 0,0,0,8017,8018,5,102,0,0,8018,8019,3,730,365,0,8019,8023,5,93,0, - 0,8020,8022,3,846,423,0,8021,8020,1,0,0,0,8022,8025,1,0,0,0,8023, - 8021,1,0,0,0,8023,8024,1,0,0,0,8024,8027,1,0,0,0,8025,8023,1,0,0, - 0,8026,8017,1,0,0,0,8027,8028,1,0,0,0,8028,8026,1,0,0,0,8028,8029, - 1,0,0,0,8029,8031,1,0,0,0,8030,8032,3,862,431,0,8031,8030,1,0,0, - 0,8031,8032,1,0,0,0,8032,8033,1,0,0,0,8033,8034,5,454,0,0,8034,8035, - 5,40,0,0,8035,8036,5,7,0,0,8036,865,1,0,0,0,8037,8039,3,838,419, - 0,8038,8037,1,0,0,0,8038,8039,1,0,0,0,8039,8044,1,0,0,0,8040,8041, - 5,503,0,0,8041,8045,3,674,337,0,8042,8043,5,62,0,0,8043,8045,3,868, - 434,0,8044,8040,1,0,0,0,8044,8042,1,0,0,0,8044,8045,1,0,0,0,8045, - 8046,1,0,0,0,8046,8047,3,882,441,0,8047,867,1,0,0,0,8048,8049,3, - 314,157,0,8049,8072,5,68,0,0,8050,8052,3,818,409,0,8051,8053,3,534, - 267,0,8052,8051,1,0,0,0,8052,8053,1,0,0,0,8053,8073,1,0,0,0,8054, - 8073,3,560,280,0,8055,8073,3,520,260,0,8056,8057,5,202,0,0,8057, - 8060,3,674,337,0,8058,8059,5,100,0,0,8059,8061,3,730,365,0,8060, - 8058,1,0,0,0,8060,8061,1,0,0,0,8061,8073,1,0,0,0,8062,8064,5,504, - 0,0,8063,8062,1,0,0,0,8063,8064,1,0,0,0,8064,8065,1,0,0,0,8065,8066, - 3,674,337,0,8066,8067,5,24,0,0,8067,8070,3,674,337,0,8068,8069,5, - 147,0,0,8069,8071,3,674,337,0,8070,8068,1,0,0,0,8070,8071,1,0,0, - 0,8071,8073,1,0,0,0,8072,8050,1,0,0,0,8072,8054,1,0,0,0,8072,8055, - 1,0,0,0,8072,8056,1,0,0,0,8072,8063,1,0,0,0,8073,869,1,0,0,0,8074, - 8076,3,838,419,0,8075,8074,1,0,0,0,8075,8076,1,0,0,0,8076,8077,1, - 0,0,0,8077,8078,5,505,0,0,8078,8081,3,314,157,0,8079,8080,5,506, - 0,0,8080,8082,5,571,0,0,8081,8079,1,0,0,0,8081,8082,1,0,0,0,8082, - 8083,1,0,0,0,8083,8084,5,68,0,0,8084,8085,5,35,0,0,8085,8086,3,674, - 337,0,8086,8087,3,882,441,0,8087,871,1,0,0,0,8088,8090,7,115,0,0, - 8089,8091,3,928,464,0,8090,8089,1,0,0,0,8090,8091,1,0,0,0,8091,8094, - 1,0,0,0,8092,8093,5,102,0,0,8093,8095,3,932,466,0,8094,8092,1,0, - 0,0,8094,8095,1,0,0,0,8095,8096,1,0,0,0,8096,8097,5,7,0,0,8097,873, - 1,0,0,0,8098,8113,5,508,0,0,8099,8100,5,268,0,0,8100,8114,3,932, - 466,0,8101,8108,5,509,0,0,8102,8103,5,202,0,0,8103,8104,3,674,337, - 0,8104,8105,5,100,0,0,8105,8106,3,730,365,0,8106,8109,1,0,0,0,8107, - 8109,3,560,280,0,8108,8102,1,0,0,0,8108,8107,1,0,0,0,8109,8114,1, - 0,0,0,8110,8112,3,932,466,0,8111,8110,1,0,0,0,8111,8112,1,0,0,0, - 8112,8114,1,0,0,0,8113,8099,1,0,0,0,8113,8101,1,0,0,0,8113,8111, - 1,0,0,0,8114,8115,1,0,0,0,8115,8116,5,7,0,0,8116,875,1,0,0,0,8117, - 8147,5,510,0,0,8118,8120,7,116,0,0,8119,8118,1,0,0,0,8119,8120,1, - 0,0,0,8120,8133,1,0,0,0,8121,8134,3,826,413,0,8122,8123,5,511,0, - 0,8123,8134,3,808,404,0,8124,8131,3,808,404,0,8125,8126,5,6,0,0, - 8126,8128,3,674,337,0,8127,8125,1,0,0,0,8128,8129,1,0,0,0,8129,8127, - 1,0,0,0,8129,8130,1,0,0,0,8130,8132,1,0,0,0,8131,8127,1,0,0,0,8131, - 8132,1,0,0,0,8132,8134,1,0,0,0,8133,8121,1,0,0,0,8133,8122,1,0,0, - 0,8133,8124,1,0,0,0,8133,8134,1,0,0,0,8134,8144,1,0,0,0,8135,8136, - 5,100,0,0,8136,8141,3,878,439,0,8137,8138,5,6,0,0,8138,8140,3,878, - 439,0,8139,8137,1,0,0,0,8140,8143,1,0,0,0,8141,8139,1,0,0,0,8141, - 8142,1,0,0,0,8142,8145,1,0,0,0,8143,8141,1,0,0,0,8144,8135,1,0,0, - 0,8144,8145,1,0,0,0,8145,8146,1,0,0,0,8146,8148,5,7,0,0,8147,8119, - 1,0,0,0,8147,8148,1,0,0,0,8148,877,1,0,0,0,8149,8150,3,826,413,0, - 8150,8151,5,10,0,0,8151,8152,3,674,337,0,8152,879,1,0,0,0,8153,8154, - 5,518,0,0,8154,8157,3,932,466,0,8155,8156,5,6,0,0,8156,8158,3,932, - 466,0,8157,8155,1,0,0,0,8157,8158,1,0,0,0,8158,8159,1,0,0,0,8159, - 8160,5,7,0,0,8160,881,1,0,0,0,8161,8165,5,519,0,0,8162,8164,3,846, - 423,0,8163,8162,1,0,0,0,8164,8167,1,0,0,0,8165,8163,1,0,0,0,8165, - 8166,1,0,0,0,8166,8168,1,0,0,0,8167,8165,1,0,0,0,8168,8169,5,454, - 0,0,8169,8171,5,519,0,0,8170,8172,3,928,464,0,8171,8170,1,0,0,0, - 8171,8172,1,0,0,0,8172,8173,1,0,0,0,8173,8174,5,7,0,0,8174,883,1, - 0,0,0,8175,8177,3,4,2,0,8176,8178,3,888,444,0,8177,8176,1,0,0,0, - 8177,8178,1,0,0,0,8178,8179,1,0,0,0,8179,8180,5,7,0,0,8180,885,1, - 0,0,0,8181,8182,5,202,0,0,8182,8198,3,674,337,0,8183,8185,3,888, - 444,0,8184,8183,1,0,0,0,8184,8185,1,0,0,0,8185,8188,1,0,0,0,8186, - 8187,5,100,0,0,8187,8189,3,730,365,0,8188,8186,1,0,0,0,8188,8189, - 1,0,0,0,8189,8199,1,0,0,0,8190,8191,5,100,0,0,8191,8193,3,730,365, - 0,8192,8190,1,0,0,0,8192,8193,1,0,0,0,8193,8195,1,0,0,0,8194,8196, - 3,888,444,0,8195,8194,1,0,0,0,8195,8196,1,0,0,0,8196,8199,1,0,0, - 0,8197,8199,1,0,0,0,8198,8184,1,0,0,0,8198,8192,1,0,0,0,8198,8197, - 1,0,0,0,8199,8200,1,0,0,0,8200,8201,5,7,0,0,8201,887,1,0,0,0,8202, - 8204,5,71,0,0,8203,8205,5,346,0,0,8204,8203,1,0,0,0,8204,8205,1, - 0,0,0,8205,8206,1,0,0,0,8206,8207,3,730,365,0,8207,889,1,0,0,0,8208, - 8240,5,520,0,0,8209,8214,3,922,461,0,8210,8212,5,269,0,0,8211,8210, - 1,0,0,0,8211,8212,1,0,0,0,8212,8213,1,0,0,0,8213,8215,5,324,0,0, - 8214,8211,1,0,0,0,8214,8215,1,0,0,0,8215,8216,1,0,0,0,8216,8224, - 5,62,0,0,8217,8225,3,560,280,0,8218,8219,5,202,0,0,8219,8222,3,932, - 466,0,8220,8221,5,100,0,0,8221,8223,3,730,365,0,8222,8220,1,0,0, - 0,8222,8223,1,0,0,0,8223,8225,1,0,0,0,8224,8217,1,0,0,0,8224,8218, - 1,0,0,0,8225,8241,1,0,0,0,8226,8238,3,818,409,0,8227,8228,5,2,0, - 0,8228,8233,3,892,446,0,8229,8230,5,6,0,0,8230,8232,3,892,446,0, - 8231,8229,1,0,0,0,8232,8235,1,0,0,0,8233,8231,1,0,0,0,8233,8234, - 1,0,0,0,8234,8236,1,0,0,0,8235,8233,1,0,0,0,8236,8237,5,3,0,0,8237, - 8239,1,0,0,0,8238,8227,1,0,0,0,8238,8239,1,0,0,0,8239,8241,1,0,0, - 0,8240,8209,1,0,0,0,8240,8226,1,0,0,0,8241,8242,1,0,0,0,8242,8243, - 5,7,0,0,8243,891,1,0,0,0,8244,8245,3,818,409,0,8245,8246,5,20,0, - 0,8246,8248,1,0,0,0,8247,8244,1,0,0,0,8247,8248,1,0,0,0,8248,8249, - 1,0,0,0,8249,8250,3,674,337,0,8250,893,1,0,0,0,8251,8253,5,61,0, - 0,8252,8254,3,896,448,0,8253,8252,1,0,0,0,8253,8254,1,0,0,0,8254, - 8256,1,0,0,0,8255,8257,3,332,166,0,8256,8255,1,0,0,0,8256,8257,1, - 0,0,0,8257,8258,1,0,0,0,8258,8259,3,922,461,0,8259,8260,5,71,0,0, - 8260,8261,3,730,365,0,8261,8262,5,7,0,0,8262,895,1,0,0,0,8263,8278, - 5,268,0,0,8264,8278,5,293,0,0,8265,8278,5,207,0,0,8266,8278,5,249, - 0,0,8267,8269,7,50,0,0,8268,8267,1,0,0,0,8268,8269,1,0,0,0,8269, - 8270,1,0,0,0,8270,8278,3,674,337,0,8271,8278,5,30,0,0,8272,8275, - 7,117,0,0,8273,8276,3,674,337,0,8274,8276,5,30,0,0,8275,8273,1,0, - 0,0,8275,8274,1,0,0,0,8275,8276,1,0,0,0,8276,8278,1,0,0,0,8277,8263, - 1,0,0,0,8277,8264,1,0,0,0,8277,8265,1,0,0,0,8277,8266,1,0,0,0,8277, - 8268,1,0,0,0,8277,8271,1,0,0,0,8277,8272,1,0,0,0,8278,897,1,0,0, - 0,8279,8281,5,265,0,0,8280,8282,3,896,448,0,8281,8280,1,0,0,0,8281, - 8282,1,0,0,0,8282,8283,1,0,0,0,8283,8284,3,922,461,0,8284,8285,5, - 7,0,0,8285,899,1,0,0,0,8286,8288,3,572,286,0,8287,8286,1,0,0,0,8287, - 8288,1,0,0,0,8288,8289,1,0,0,0,8289,8290,5,525,0,0,8290,8292,5,71, - 0,0,8291,8293,5,81,0,0,8292,8291,1,0,0,0,8292,8293,1,0,0,0,8293, - 8294,1,0,0,0,8294,8296,3,774,387,0,8295,8297,5,9,0,0,8296,8295,1, - 0,0,0,8296,8297,1,0,0,0,8297,8302,1,0,0,0,8298,8300,5,36,0,0,8299, - 8298,1,0,0,0,8299,8300,1,0,0,0,8300,8301,1,0,0,0,8301,8303,3,818, - 409,0,8302,8299,1,0,0,0,8302,8303,1,0,0,0,8303,8304,1,0,0,0,8304, - 8305,5,100,0,0,8305,8306,3,902,451,0,8306,8307,5,80,0,0,8307,8309, - 3,674,337,0,8308,8310,3,904,452,0,8309,8308,1,0,0,0,8310,8311,1, - 0,0,0,8311,8309,1,0,0,0,8311,8312,1,0,0,0,8312,901,1,0,0,0,8313, - 8315,5,81,0,0,8314,8313,1,0,0,0,8314,8315,1,0,0,0,8315,8316,1,0, - 0,0,8316,8318,3,774,387,0,8317,8319,5,9,0,0,8318,8317,1,0,0,0,8318, - 8319,1,0,0,0,8319,8325,1,0,0,0,8320,8323,3,564,282,0,8321,8323,3, - 608,304,0,8322,8320,1,0,0,0,8322,8321,1,0,0,0,8323,8325,1,0,0,0, - 8324,8314,1,0,0,0,8324,8322,1,0,0,0,8325,8330,1,0,0,0,8326,8328, - 5,36,0,0,8327,8326,1,0,0,0,8327,8328,1,0,0,0,8328,8329,1,0,0,0,8329, - 8331,3,818,409,0,8330,8327,1,0,0,0,8330,8331,1,0,0,0,8331,903,1, - 0,0,0,8332,8333,5,102,0,0,8333,8336,5,526,0,0,8334,8335,5,33,0,0, - 8335,8337,3,674,337,0,8336,8334,1,0,0,0,8336,8337,1,0,0,0,8337,8338, - 1,0,0,0,8338,8343,5,93,0,0,8339,8344,3,908,454,0,8340,8344,5,182, - 0,0,8341,8342,5,57,0,0,8342,8344,5,270,0,0,8343,8339,1,0,0,0,8343, - 8340,1,0,0,0,8343,8341,1,0,0,0,8344,8359,1,0,0,0,8345,8346,5,102, - 0,0,8346,8347,5,77,0,0,8347,8350,5,526,0,0,8348,8349,5,33,0,0,8349, - 8351,3,674,337,0,8350,8348,1,0,0,0,8350,8351,1,0,0,0,8351,8352,1, - 0,0,0,8352,8356,5,93,0,0,8353,8357,3,906,453,0,8354,8355,5,57,0, - 0,8355,8357,5,270,0,0,8356,8353,1,0,0,0,8356,8354,1,0,0,0,8357,8359, - 1,0,0,0,8358,8332,1,0,0,0,8358,8345,1,0,0,0,8359,905,1,0,0,0,8360, - 8362,5,241,0,0,8361,8363,3,144,72,0,8362,8361,1,0,0,0,8362,8363, - 1,0,0,0,8363,8367,1,0,0,0,8364,8365,5,463,0,0,8365,8366,7,76,0,0, - 8366,8368,5,450,0,0,8367,8364,1,0,0,0,8367,8368,1,0,0,0,8368,8369, - 1,0,0,0,8369,8370,3,910,455,0,8370,907,1,0,0,0,8371,8372,5,369,0, - 0,8372,8390,5,333,0,0,8373,8374,3,800,400,0,8374,8375,5,10,0,0,8375, - 8376,3,912,456,0,8376,8391,1,0,0,0,8377,8378,3,144,72,0,8378,8379, - 5,10,0,0,8379,8380,5,2,0,0,8380,8385,3,912,456,0,8381,8382,5,6,0, - 0,8382,8384,3,912,456,0,8383,8381,1,0,0,0,8384,8387,1,0,0,0,8385, - 8383,1,0,0,0,8385,8386,1,0,0,0,8386,8388,1,0,0,0,8387,8385,1,0,0, - 0,8388,8389,5,3,0,0,8389,8391,1,0,0,0,8390,8373,1,0,0,0,8390,8377, - 1,0,0,0,8391,8392,1,0,0,0,8392,8390,1,0,0,0,8392,8393,1,0,0,0,8393, - 909,1,0,0,0,8394,8395,5,422,0,0,8395,8396,5,2,0,0,8396,8401,3,912, - 456,0,8397,8398,5,6,0,0,8398,8400,3,912,456,0,8399,8397,1,0,0,0, - 8400,8403,1,0,0,0,8401,8399,1,0,0,0,8401,8402,1,0,0,0,8402,8404, - 1,0,0,0,8403,8401,1,0,0,0,8404,8405,5,3,0,0,8405,8409,1,0,0,0,8406, - 8407,5,53,0,0,8407,8409,5,422,0,0,8408,8394,1,0,0,0,8408,8406,1, - 0,0,0,8409,911,1,0,0,0,8410,8413,3,588,294,0,8411,8413,5,53,0,0, - 8412,8410,1,0,0,0,8412,8411,1,0,0,0,8413,913,1,0,0,0,8414,8415,5, - 157,0,0,8415,8416,3,922,461,0,8416,8417,5,7,0,0,8417,915,1,0,0,0, - 8418,8419,5,78,0,0,8419,8420,5,7,0,0,8420,917,1,0,0,0,8421,8427, - 7,67,0,0,8422,8424,5,33,0,0,8423,8425,5,269,0,0,8424,8423,1,0,0, - 0,8424,8425,1,0,0,0,8425,8426,1,0,0,0,8426,8428,5,153,0,0,8427,8422, - 1,0,0,0,8427,8428,1,0,0,0,8428,8429,1,0,0,0,8429,8430,5,7,0,0,8430, - 919,1,0,0,0,8431,8432,5,333,0,0,8432,8433,3,316,158,0,8433,8434, - 5,94,0,0,8434,8435,5,53,0,0,8435,8436,5,7,0,0,8436,8444,1,0,0,0, - 8437,8440,5,313,0,0,8438,8441,3,316,158,0,8439,8441,5,30,0,0,8440, - 8438,1,0,0,0,8440,8439,1,0,0,0,8441,8442,1,0,0,0,8442,8444,5,7,0, - 0,8443,8431,1,0,0,0,8443,8437,1,0,0,0,8444,921,1,0,0,0,8445,8448, - 3,818,409,0,8446,8448,5,28,0,0,8447,8445,1,0,0,0,8447,8446,1,0,0, - 0,8448,923,1,0,0,0,8449,8466,5,517,0,0,8450,8451,5,102,0,0,8451, - 8456,3,926,463,0,8452,8453,5,82,0,0,8453,8455,3,926,463,0,8454,8452, - 1,0,0,0,8455,8458,1,0,0,0,8456,8454,1,0,0,0,8456,8457,1,0,0,0,8457, - 8459,1,0,0,0,8458,8456,1,0,0,0,8459,8463,5,93,0,0,8460,8462,3,846, - 423,0,8461,8460,1,0,0,0,8462,8465,1,0,0,0,8463,8461,1,0,0,0,8463, - 8464,1,0,0,0,8464,8467,1,0,0,0,8465,8463,1,0,0,0,8466,8450,1,0,0, - 0,8467,8468,1,0,0,0,8468,8466,1,0,0,0,8468,8469,1,0,0,0,8469,925, - 1,0,0,0,8470,8474,3,928,464,0,8471,8472,5,511,0,0,8472,8474,3,808, - 404,0,8473,8470,1,0,0,0,8473,8471,1,0,0,0,8474,927,1,0,0,0,8475, - 8478,3,818,409,0,8476,8478,3,930,465,0,8477,8475,1,0,0,0,8477,8476, - 1,0,0,0,8478,929,1,0,0,0,8479,8480,7,118,0,0,8480,931,1,0,0,0,8481, - 8483,3,756,378,0,8482,8481,1,0,0,0,8482,8483,1,0,0,0,8483,8485,1, - 0,0,0,8484,8486,3,580,290,0,8485,8484,1,0,0,0,8485,8486,1,0,0,0, - 8486,8488,1,0,0,0,8487,8489,3,610,305,0,8488,8487,1,0,0,0,8488,8489, - 1,0,0,0,8489,8491,1,0,0,0,8490,8492,3,638,319,0,8491,8490,1,0,0, - 0,8491,8492,1,0,0,0,8492,8494,1,0,0,0,8493,8495,3,600,300,0,8494, - 8493,1,0,0,0,8494,8495,1,0,0,0,8495,8498,1,0,0,0,8496,8497,5,67, - 0,0,8497,8499,3,674,337,0,8498,8496,1,0,0,0,8498,8499,1,0,0,0,8499, - 8501,1,0,0,0,8500,8502,3,702,351,0,8501,8500,1,0,0,0,8501,8502,1, - 0,0,0,8502,933,1,0,0,0,1188,937,944,1064,1066,1075,1080,1086,1121, - 1131,1137,1142,1149,1154,1161,1172,1180,1184,1196,1202,1208,1212, - 1217,1221,1234,1244,1246,1252,1257,1270,1273,1278,1283,1294,1298, - 1310,1314,1317,1321,1333,1351,1358,1366,1371,1378,1386,1392,1400, - 1408,1412,1426,1431,1436,1448,1454,1466,1471,1481,1487,1492,1500, - 1505,1512,1517,1522,1532,1537,1542,1549,1553,1567,1573,1579,1584, - 1591,1603,1611,1619,1635,1644,1653,1662,1666,1678,1686,1696,1716, - 1721,1724,1731,1734,1738,1742,1745,1750,1755,1759,1768,1774,1778, - 1787,1790,1796,1805,1817,1821,1825,1830,1833,1839,1841,1843,1847, - 1853,1857,1862,1867,1871,1874,1881,1894,1907,1921,1938,1948,1955, - 1960,1964,1971,1976,1979,1981,1986,1990,1994,1998,2003,2006,2010, - 2013,2017,2025,2030,2033,2037,2043,2052,2056,2062,2064,2073,2078, - 2090,2095,2099,2103,2108,2112,2115,2118,2121,2124,2127,2132,2135, - 2138,2141,2144,2147,2153,2157,2160,2163,2166,2169,2171,2178,2186, - 2196,2206,2211,2214,2219,2224,2229,2232,2237,2246,2248,2252,2255, - 2259,2264,2269,2273,2276,2280,2283,2288,2291,2296,2299,2303,2306, - 2309,2314,2317,2325,2337,2341,2348,2353,2356,2359,2362,2367,2378, - 2384,2388,2391,2394,2399,2406,2409,2413,2421,2426,2429,2432,2439, - 2444,2453,2456,2459,2464,2467,2479,2489,2506,2510,2514,2516,2533, - 2535,2551,2562,2565,2568,2577,2586,2602,2605,2608,2616,2620,2627, - 2636,2640,2646,2650,2653,2656,2659,2662,2668,2672,2677,2681,2684, - 2687,2690,2695,2701,2705,2709,2713,2719,2721,2726,2732,2738,2742, - 2757,2762,2765,2767,2770,2774,2778,2781,2784,2792,2798,2800,2806, - 2811,2816,2820,2827,2829,2840,2879,2889,2891,2894,2898,2902,2912, - 2914,2920,2922,2931,2943,2957,2962,2965,2972,2977,2985,2987,2993, - 2998,3002,3007,3013,3020,3026,3028,3037,3043,3051,3057,3062,3067, - 3075,3090,3092,3096,3100,3103,3106,3115,3118,3121,3127,3133,3137, - 3149,3155,3158,3163,3167,3174,3184,3186,3210,3222,3227,3229,3233, - 3236,3239,3249,3252,3262,3267,3272,3275,3278,3286,3292,3299,3307, - 3310,3321,3325,3331,3338,3341,3350,3364,3367,3381,3392,3395,3407, - 3412,3425,3430,3443,3452,3455,3458,3465,3468,3480,3486,3488,3496, - 3504,3512,3524,3529,3540,3551,3559,3567,3574,3581,3583,3586,3591, - 3596,3615,3624,3627,3654,3663,3666,3670,3674,3678,3685,3689,3693, - 3697,3701,3706,3710,3715,3721,3726,3733,3737,3743,3747,3752,3760, - 3766,3771,3778,3783,3787,3792,3798,3805,3810,3817,3822,3829,3833, - 3841,3845,3847,3850,3855,3865,3880,3883,3891,3898,3903,3909,3913, - 3920,3925,3928,3931,3935,3944,3962,3965,3997,4002,4008,4028,4033, - 4039,4042,4046,4050,4056,4059,4063,4067,4072,4075,4078,4081,4094, - 4100,4108,4115,4120,4123,4130,4133,4141,4144,4149,4156,4159,4179, - 4191,4194,4200,4205,4214,4222,4227,4233,4240,4248,4251,4262,4264, - 4278,4284,4292,4294,4300,4304,4307,4310,4315,4320,4324,4327,4330, - 4333,4336,4344,4355,4358,4361,4366,4369,4373,4377,4383,4391,4394, - 4407,4412,4414,4419,4426,4433,4442,4450,4458,4465,4473,4480,4488, - 4492,4496,4498,4504,4509,4513,4520,4525,4530,4535,4537,4547,4557, - 4573,4591,4603,4610,4625,4630,4633,4638,4643,4648,4651,4654,4659, - 4666,4670,4675,4682,4686,4692,4701,4710,4722,4724,4737,4743,4747, - 4749,4756,4769,4776,4778,4794,4798,4802,4807,4812,4817,4822,4825, - 4837,4890,4899,4903,4912,4916,4925,4929,4934,4937,4941,4946,4948, - 4957,4962,4973,4977,4991,4999,5037,5039,5058,5061,5088,5092,5096, - 5100,5104,5107,5122,5129,5143,5156,5181,5200,5215,5231,5238,5249, - 5252,5271,5274,5287,5291,5311,5323,5327,5349,5353,5363,5367,5373, - 5377,5381,5385,5392,5397,5408,5412,5415,5420,5426,5437,5441,5444, - 5448,5452,5455,5465,5468,5472,5477,5483,5486,5491,5494,5501,5503, - 5509,5513,5522,5527,5529,5539,5542,5547,5555,5558,5563,5565,5567, - 5573,5590,5596,5609,5615,5619,5624,5654,5669,5674,5678,5691,5695, - 5697,5706,5712,5714,5718,5721,5724,5727,5730,5732,5735,5739,5747, - 5752,5755,5761,5765,5769,5774,5776,5780,5784,5791,5797,5801,5803, - 5805,5818,5826,5834,5845,5854,5859,5863,5867,5874,5877,5879,5887, - 5891,5894,5901,5908,5913,5920,5923,5925,5928,5934,5939,5943,5950, - 5960,5967,5970,5973,5977,5988,5991,5994,5997,6000,6007,6010,6013, - 6020,6032,6039,6041,6046,6051,6053,6059,6066,6071,6076,6080,6084, - 6088,6090,6094,6098,6101,6104,6106,6116,6118,6123,6127,6132,6136, - 6143,6148,6152,6155,6161,6164,6183,6190,6194,6197,6201,6205,6208, - 6211,6216,6225,6232,6236,6240,6244,6247,6249,6254,6258,6263,6269, - 6276,6281,6286,6295,6302,6310,6321,6326,6330,6333,6337,6342,6346, - 6351,6359,6370,6375,6379,6382,6385,6387,6390,6393,6396,6400,6404, - 6408,6410,6419,6424,6430,6434,6436,6443,6448,6454,6456,6460,6467, - 6472,6475,6481,6485,6491,6500,6506,6508,6513,6516,6525,6532,6534, - 6541,6546,6549,6559,6570,6575,6579,6587,6597,6604,6610,6621,6627, - 6637,6646,6650,6653,6655,6657,6661,6669,6672,6677,6682,6689,6691, - 6697,6701,6704,6709,6712,6714,6720,6729,6735,6738,6746,6749,6753, - 6759,6761,6764,6768,6773,6780,6787,6789,6795,6797,6802,6804,6808, - 6817,6821,6829,6831,6845,6848,6856,6865,6871,6876,6884,6886,6891, - 6895,6900,6905,6911,6927,6929,6938,6953,6958,6961,6967,6972,6985, - 6990,6994,7001,7020,7032,7037,7045,7047,7049,7058,7061,7066,7071, - 7075,7078,7087,7095,7100,7102,7105,7109,7120,7141,7149,7162,7172, - 7178,7184,7187,7190,7216,7218,7239,7249,7262,7267,7271,7273,7285, - 7292,7298,7304,7308,7319,7329,7333,7338,7341,7344,7353,7364,7366, - 7370,7375,7384,7389,7397,7407,7415,7419,7422,7429,7437,7441,7448, - 7456,7465,7468,7480,7489,7496,7505,7515,7520,7524,7526,7529,7534, - 7539,7547,7555,7558,7565,7573,7581,7589,7606,7613,7621,7638,7644, - 7650,7658,7664,7669,7677,7682,7685,7694,7701,7708,7714,7720,7725, - 7730,7738,7793,7800,7806,7808,7810,7812,7818,7822,7826,7837,7840, - 7844,7848,7852,7855,7858,7861,7870,7875,7879,7912,7922,7926,7932, - 7937,7946,7954,7965,7973,7982,7991,7996,8000,8010,8015,8023,8028, - 8031,8038,8044,8052,8060,8063,8070,8072,8075,8081,8090,8094,8108, - 8111,8113,8119,8129,8131,8133,8141,8144,8147,8157,8165,8171,8177, - 8184,8188,8192,8195,8198,8204,8211,8214,8222,8224,8233,8238,8240, - 8247,8253,8256,8268,8275,8277,8281,8287,8292,8296,8299,8302,8311, - 8314,8318,8322,8324,8327,8330,8336,8343,8350,8356,8358,8362,8367, - 8385,8390,8392,8401,8408,8412,8424,8427,8440,8443,8447,8456,8463, - 8468,8473,8477,8482,8485,8488,8491,8494,8498,8501 + 25,25,27,27,2,0,114,114,120,120,2,0,20,20,22,22,1,0,483,486,17,0, + 53,53,116,116,123,124,129,228,238,386,433,452,455,469,471,471,473, + 473,475,475,477,488,490,502,504,504,506,518,520,520,524,524,547, + 548,3,0,106,123,125,128,472,472,4,0,30,52,54,70,72,105,454,454,2, + 0,62,62,116,116,2,0,10,10,20,20,2,0,434,434,501,501,2,0,167,167, + 507,507,1,0,512,517,2,0,144,144,210,210,9930,0,935,1,0,0,0,2,940, + 1,0,0,0,4,1064,1,0,0,0,6,1066,1,0,0,0,8,1069,1,0,0,0,10,1119,1,0, + 0,0,12,1129,1,0,0,0,14,1131,1,0,0,0,16,1143,1,0,0,0,18,1155,1,0, + 0,0,20,1166,1,0,0,0,22,1200,1,0,0,0,24,1244,1,0,0,0,26,1246,1,0, + 0,0,28,1258,1,0,0,0,30,1265,1,0,0,0,32,1284,1,0,0,0,34,1292,1,0, + 0,0,36,1294,1,0,0,0,38,1308,1,0,0,0,40,1312,1,0,0,0,42,1349,1,0, + 0,0,44,1351,1,0,0,0,46,1359,1,0,0,0,48,1369,1,0,0,0,50,1376,1,0, + 0,0,52,1384,1,0,0,0,54,1390,1,0,0,0,56,1406,1,0,0,0,58,1410,1,0, + 0,0,60,1412,1,0,0,0,62,1424,1,0,0,0,64,1429,1,0,0,0,66,1434,1,0, + 0,0,68,1436,1,0,0,0,70,1448,1,0,0,0,72,1456,1,0,0,0,74,1458,1,0, + 0,0,76,1582,1,0,0,0,78,1584,1,0,0,0,80,1601,1,0,0,0,82,1603,1,0, + 0,0,84,1617,1,0,0,0,86,1619,1,0,0,0,88,1633,1,0,0,0,90,1635,1,0, + 0,0,92,1872,1,0,0,0,94,1879,1,0,0,0,96,1881,1,0,0,0,98,1883,1,0, + 0,0,100,1886,1,0,0,0,102,1897,1,0,0,0,104,1900,1,0,0,0,106,1936, + 1,0,0,0,108,1938,1,0,0,0,110,1979,1,0,0,0,112,1981,1,0,0,0,114,2035, + 1,0,0,0,116,2076,1,0,0,0,118,2078,1,0,0,0,120,2095,1,0,0,0,122,2176, + 1,0,0,0,124,2178,1,0,0,0,126,2189,1,0,0,0,128,2212,1,0,0,0,130,2230, + 1,0,0,0,132,2232,1,0,0,0,134,2267,1,0,0,0,136,2360,1,0,0,0,138,2365, + 1,0,0,0,140,2367,1,0,0,0,142,2465,1,0,0,0,144,2467,1,0,0,0,146,2471, + 1,0,0,0,148,2482,1,0,0,0,150,2490,1,0,0,0,152,2493,1,0,0,0,154,2496, + 1,0,0,0,156,2514,1,0,0,0,158,2516,1,0,0,0,160,2520,1,0,0,0,162,2533, + 1,0,0,0,164,2535,1,0,0,0,166,2540,1,0,0,0,168,2560,1,0,0,0,170,2568, + 1,0,0,0,172,2575,1,0,0,0,174,2577,1,0,0,0,176,2586,1,0,0,0,178,2589, + 1,0,0,0,180,2593,1,0,0,0,182,2597,1,0,0,0,184,2622,1,0,0,0,186,2632, + 1,0,0,0,188,2646,1,0,0,0,190,2662,1,0,0,0,192,2668,1,0,0,0,194,2695, + 1,0,0,0,196,2705,1,0,0,0,198,2721,1,0,0,0,200,2765,1,0,0,0,202,2772, + 1,0,0,0,204,2774,1,0,0,0,206,2800,1,0,0,0,208,2811,1,0,0,0,210,2830, + 1,0,0,0,212,2841,1,0,0,0,214,2879,1,0,0,0,216,2900,1,0,0,0,218,2902, + 1,0,0,0,220,2922,1,0,0,0,222,2934,1,0,0,0,224,2946,1,0,0,0,226,2949, + 1,0,0,0,228,2952,1,0,0,0,230,2972,1,0,0,0,232,2977,1,0,0,0,234,3026, + 1,0,0,0,236,3028,1,0,0,0,238,3051,1,0,0,0,240,3067,1,0,0,0,242,3079, + 1,0,0,0,244,3106,1,0,0,0,246,3121,1,0,0,0,248,3184,1,0,0,0,250,3186, + 1,0,0,0,252,3191,1,0,0,0,254,3197,1,0,0,0,256,3284,1,0,0,0,258,3290, + 1,0,0,0,260,3292,1,0,0,0,262,3308,1,0,0,0,264,3310,1,0,0,0,266,3319, + 1,0,0,0,268,3323,1,0,0,0,270,3336,1,0,0,0,272,3348,1,0,0,0,274,3350, + 1,0,0,0,276,3372,1,0,0,0,278,3384,1,0,0,0,280,3395,1,0,0,0,282,3486, + 1,0,0,0,284,3488,1,0,0,0,286,3499,1,0,0,0,288,3510,1,0,0,0,290,3512, + 1,0,0,0,292,3538,1,0,0,0,294,3540,1,0,0,0,296,3544,1,0,0,0,298,3594, + 1,0,0,0,300,3596,1,0,0,0,302,3602,1,0,0,0,304,3627,1,0,0,0,306,3631, + 1,0,0,0,308,3845,1,0,0,0,310,3863,1,0,0,0,312,3889,1,0,0,0,314,3891, + 1,0,0,0,316,3899,1,0,0,0,318,3905,1,0,0,0,320,3909,1,0,0,0,322,3929, + 1,0,0,0,324,3935,1,0,0,0,326,4002,1,0,0,0,328,4033,1,0,0,0,330,4079, + 1,0,0,0,332,4081,1,0,0,0,334,4083,1,0,0,0,336,4094,1,0,0,0,338,4131, + 1,0,0,0,340,4133,1,0,0,0,342,4139,1,0,0,0,344,4189,1,0,0,0,346,4192, + 1,0,0,0,348,4206,1,0,0,0,350,4227,1,0,0,0,352,4251,1,0,0,0,354,4292, + 1,0,0,0,356,4294,1,0,0,0,358,4296,1,0,0,0,360,4336,1,0,0,0,362,4353, + 1,0,0,0,364,4373,1,0,0,0,366,4426,1,0,0,0,368,4429,1,0,0,0,370,4435, + 1,0,0,0,372,4443,1,0,0,0,374,4456,1,0,0,0,376,4458,1,0,0,0,378,4471, + 1,0,0,0,380,4473,1,0,0,0,382,4486,1,0,0,0,384,4496,1,0,0,0,386,4507, + 1,0,0,0,388,4518,1,0,0,0,390,4520,1,0,0,0,392,4525,1,0,0,0,394,4539, + 1,0,0,0,396,4571,1,0,0,0,398,4608,1,0,0,0,400,4610,1,0,0,0,402,4613, + 1,0,0,0,404,4616,1,0,0,0,406,4633,1,0,0,0,408,4654,1,0,0,0,410,4670, + 1,0,0,0,412,4686,1,0,0,0,414,4708,1,0,0,0,416,4713,1,0,0,0,418,4716, + 1,0,0,0,420,4724,1,0,0,0,422,4749,1,0,0,0,424,4752,1,0,0,0,426,4780, + 1,0,0,0,428,4785,1,0,0,0,430,4825,1,0,0,0,432,5037,1,0,0,0,434,5039, + 1,0,0,0,436,5127,1,0,0,0,438,5129,1,0,0,0,440,5135,1,0,0,0,442,5146, + 1,0,0,0,444,5156,1,0,0,0,446,5236,1,0,0,0,448,5238,1,0,0,0,450,5252, + 1,0,0,0,452,5274,1,0,0,0,454,5347,1,0,0,0,456,5349,1,0,0,0,458,5390, + 1,0,0,0,460,5392,1,0,0,0,462,5397,1,0,0,0,464,5400,1,0,0,0,466,5403, + 1,0,0,0,468,5453,1,0,0,0,470,5455,1,0,0,0,472,5466,1,0,0,0,474,5468, + 1,0,0,0,476,5478,1,0,0,0,478,5513,1,0,0,0,480,5516,1,0,0,0,482,5537, + 1,0,0,0,484,5547,1,0,0,0,486,5567,1,0,0,0,488,5573,1,0,0,0,490,5579, + 1,0,0,0,492,5584,1,0,0,0,494,5597,1,0,0,0,496,5624,1,0,0,0,498,5672, + 1,0,0,0,500,5674,1,0,0,0,502,5712,1,0,0,0,504,5714,1,0,0,0,506,5735, + 1,0,0,0,508,5755,1,0,0,0,510,5759,1,0,0,0,512,5774,1,0,0,0,514,5776, + 1,0,0,0,516,5780,1,0,0,0,518,5784,1,0,0,0,520,5792,1,0,0,0,522,5816, + 1,0,0,0,524,5818,1,0,0,0,526,5829,1,0,0,0,528,5837,1,0,0,0,530,5852, + 1,0,0,0,532,5877,1,0,0,0,534,5879,1,0,0,0,536,5883,1,0,0,0,538,5892, + 1,0,0,0,540,5932,1,0,0,0,542,5943,1,0,0,0,544,5951,1,0,0,0,546,5954, + 1,0,0,0,548,5958,1,0,0,0,550,5973,1,0,0,0,552,5998,1,0,0,0,554,6013, + 1,0,0,0,556,6039,1,0,0,0,558,6041,1,0,0,0,560,6064,1,0,0,0,562,6066, + 1,0,0,0,564,6074,1,0,0,0,566,6092,1,0,0,0,568,6116,1,0,0,0,570,6128, + 1,0,0,0,572,6132,1,0,0,0,574,6144,1,0,0,0,576,6164,1,0,0,0,578,6172, + 1,0,0,0,580,6186,1,0,0,0,582,6209,1,0,0,0,584,6211,1,0,0,0,586,6216, + 1,0,0,0,588,6226,1,0,0,0,590,6247,1,0,0,0,592,6249,1,0,0,0,594,6258, + 1,0,0,0,596,6269,1,0,0,0,598,6279,1,0,0,0,600,6281,1,0,0,0,602,6288, + 1,0,0,0,604,6319,1,0,0,0,606,6349,1,0,0,0,608,6351,1,0,0,0,610,6360, + 1,0,0,0,612,6363,1,0,0,0,614,6434,1,0,0,0,616,6458,1,0,0,0,618,6479, + 1,0,0,0,620,6481,1,0,0,0,622,6489,1,0,0,0,624,6506,1,0,0,0,626,6532, + 1,0,0,0,628,6534,1,0,0,0,630,6542,1,0,0,0,632,6549,1,0,0,0,634,6573, + 1,0,0,0,636,6579,1,0,0,0,638,6587,1,0,0,0,640,6590,1,0,0,0,642,6597, + 1,0,0,0,644,6605,1,0,0,0,646,6610,1,0,0,0,648,6640,1,0,0,0,650,6667, + 1,0,0,0,652,6695,1,0,0,0,654,6712,1,0,0,0,656,6718,1,0,0,0,658,6736, + 1,0,0,0,660,6738,1,0,0,0,662,6742,1,0,0,0,664,6759,1,0,0,0,666,6764, + 1,0,0,0,668,6802,1,0,0,0,670,6804,1,0,0,0,672,6808,1,0,0,0,674,6810, + 1,0,0,0,676,6819,1,0,0,0,678,6903,1,0,0,0,680,6909,1,0,0,0,682,7018, + 1,0,0,0,684,7050,1,0,0,0,686,7103,1,0,0,0,688,7107,1,0,0,0,690,7283, + 1,0,0,0,692,7285,1,0,0,0,694,7293,1,0,0,0,696,7298,1,0,0,0,698,7300, + 1,0,0,0,700,7308,1,0,0,0,702,7311,1,0,0,0,704,7320,1,0,0,0,706,7324, + 1,0,0,0,708,7329,1,0,0,0,710,7346,1,0,0,0,712,7373,1,0,0,0,714,7382, + 1,0,0,0,716,7384,1,0,0,0,718,7391,1,0,0,0,720,7395,1,0,0,0,722,7397, + 1,0,0,0,724,7405,1,0,0,0,726,7413,1,0,0,0,728,7420,1,0,0,0,730,7422, + 1,0,0,0,732,7435,1,0,0,0,734,7439,1,0,0,0,736,7441,1,0,0,0,738,7454, + 1,0,0,0,740,7456,1,0,0,0,742,7478,1,0,0,0,744,7480,1,0,0,0,746,7503, + 1,0,0,0,748,7505,1,0,0,0,750,7527,1,0,0,0,752,7530,1,0,0,0,754,7537, + 1,0,0,0,756,7540,1,0,0,0,758,7556,1,0,0,0,760,7558,1,0,0,0,762,7566, + 1,0,0,0,764,7574,1,0,0,0,766,7582,1,0,0,0,768,7590,1,0,0,0,770,7592, + 1,0,0,0,772,7594,1,0,0,0,774,7596,1,0,0,0,776,7598,1,0,0,0,778,7600, + 1,0,0,0,780,7602,1,0,0,0,782,7606,1,0,0,0,784,7614,1,0,0,0,786,7622, + 1,0,0,0,788,7624,1,0,0,0,790,7626,1,0,0,0,792,7628,1,0,0,0,794,7630, + 1,0,0,0,796,7636,1,0,0,0,798,7642,1,0,0,0,800,7648,1,0,0,0,802,7650, + 1,0,0,0,804,7656,1,0,0,0,806,7662,1,0,0,0,808,7664,1,0,0,0,810,7680, + 1,0,0,0,812,7683,1,0,0,0,814,7692,1,0,0,0,816,7694,1,0,0,0,818,7704, + 1,0,0,0,820,7708,1,0,0,0,822,7713,1,0,0,0,824,7719,1,0,0,0,826,7732, + 1,0,0,0,828,7734,1,0,0,0,830,7787,1,0,0,0,832,7789,1,0,0,0,834,7791, + 1,0,0,0,836,7794,1,0,0,0,838,7822,1,0,0,0,840,7826,1,0,0,0,842,7877, + 1,0,0,0,844,7880,1,0,0,0,846,7906,1,0,0,0,848,7908,1,0,0,0,850,7931, + 1,0,0,0,852,7933,1,0,0,0,854,7938,1,0,0,0,856,7953,1,0,0,0,858,7959, + 1,0,0,0,860,7970,1,0,0,0,862,8000,1,0,0,0,864,8007,1,0,0,0,866,8032, + 1,0,0,0,868,8042,1,0,0,0,870,8069,1,0,0,0,872,8082,1,0,0,0,874,8092, + 1,0,0,0,876,8111,1,0,0,0,878,8143,1,0,0,0,880,8147,1,0,0,0,882,8155, + 1,0,0,0,884,8169,1,0,0,0,886,8175,1,0,0,0,888,8196,1,0,0,0,890,8202, + 1,0,0,0,892,8241,1,0,0,0,894,8245,1,0,0,0,896,8271,1,0,0,0,898,8273, + 1,0,0,0,900,8281,1,0,0,0,902,8318,1,0,0,0,904,8352,1,0,0,0,906,8354, + 1,0,0,0,908,8365,1,0,0,0,910,8402,1,0,0,0,912,8406,1,0,0,0,914,8408, + 1,0,0,0,916,8412,1,0,0,0,918,8415,1,0,0,0,920,8437,1,0,0,0,922,8441, + 1,0,0,0,924,8443,1,0,0,0,926,8467,1,0,0,0,928,8471,1,0,0,0,930,8474, + 1,0,0,0,932,934,3,2,1,0,933,932,1,0,0,0,934,937,1,0,0,0,935,933, + 1,0,0,0,935,936,1,0,0,0,936,938,1,0,0,0,937,935,1,0,0,0,938,939, + 5,0,0,1,939,1,1,0,0,0,940,942,3,4,2,0,941,943,5,7,0,0,942,941,1, + 0,0,0,942,943,1,0,0,0,943,3,1,0,0,0,944,1065,3,278,139,0,945,1065, + 3,488,244,0,946,1065,3,484,242,0,947,1065,3,486,243,0,948,1065,3, + 352,176,0,949,1065,3,494,247,0,950,1065,3,292,146,0,951,1065,3,210, + 105,0,952,1065,3,212,106,0,953,1065,3,218,109,0,954,1065,3,232,116, + 0,955,1065,3,404,202,0,956,1065,3,28,14,0,957,1065,3,434,217,0,958, + 1065,3,436,218,0,959,1065,3,446,223,0,960,1065,3,438,219,0,961,1065, + 3,444,222,0,962,1065,3,244,122,0,963,1065,3,246,123,0,964,1065,3, + 198,99,0,965,1065,3,490,245,0,966,1065,3,76,38,0,967,1065,3,430, + 215,0,968,1065,3,108,54,0,969,1065,3,450,225,0,970,1065,3,18,9,0, + 971,1065,3,20,10,0,972,1065,3,16,8,0,973,1065,3,454,227,0,974,1065, + 3,184,92,0,975,1065,3,498,249,0,976,1065,3,496,248,0,977,1065,3, + 240,120,0,978,1065,3,506,253,0,979,1065,3,6,3,0,980,1065,3,72,36, + 0,981,1065,3,112,56,0,982,1065,3,502,251,0,983,1065,3,324,162,0, + 984,1065,3,70,35,0,985,1065,3,114,57,0,986,1065,3,254,127,0,987, + 1065,3,186,93,0,988,1065,3,280,140,0,989,1065,3,420,210,0,990,1065, + 3,500,250,0,991,1065,3,492,246,0,992,1065,3,208,104,0,993,1065,3, + 214,107,0,994,1065,3,228,114,0,995,1065,3,234,117,0,996,1065,3,364, + 182,0,997,1065,3,26,13,0,998,1065,3,192,96,0,999,1065,3,296,148, + 0,1000,1065,3,300,150,0,1001,1065,3,448,224,0,1002,1065,3,302,151, + 0,1003,1065,3,242,121,0,1004,1065,3,204,102,0,1005,1065,3,30,15, + 0,1006,1065,3,196,98,0,1007,1065,3,120,60,0,1008,1065,3,452,226, + 0,1009,1065,3,182,91,0,1010,1065,3,206,103,0,1011,1065,3,424,212, + 0,1012,1065,3,256,128,0,1013,1065,3,274,137,0,1014,1065,3,8,4,0, + 1015,1065,3,14,7,0,1016,1065,3,238,119,0,1017,1065,3,480,240,0,1018, + 1065,3,536,268,0,1019,1065,3,558,279,0,1020,1065,3,282,141,0,1021, + 1065,3,548,274,0,1022,1065,3,74,37,0,1023,1065,3,418,209,0,1024, + 1065,3,308,154,0,1025,1065,3,532,266,0,1026,1065,3,520,260,0,1027, + 1065,3,328,164,0,1028,1065,3,334,167,0,1029,1065,3,348,174,0,1030, + 1065,3,900,450,0,1031,1065,3,236,118,0,1032,1065,3,358,179,0,1033, + 1065,3,538,269,0,1034,1065,3,464,232,0,1035,1065,3,194,97,0,1036, + 1065,3,478,239,0,1037,1065,3,550,275,0,1038,1065,3,460,230,0,1039, + 1065,3,526,263,0,1040,1065,3,306,153,0,1041,1065,3,428,214,0,1042, + 1065,3,408,204,0,1043,1065,3,406,203,0,1044,1065,3,410,205,0,1045, + 1065,3,432,216,0,1046,1065,3,336,168,0,1047,1065,3,350,175,0,1048, + 1065,3,456,228,0,1049,1065,3,326,163,0,1050,1065,3,560,280,0,1051, + 1065,3,468,234,0,1052,1065,3,320,160,0,1053,1065,3,466,233,0,1054, + 1065,3,552,276,0,1055,1065,3,504,252,0,1056,1065,3,60,30,0,1057, + 1065,3,36,18,0,1058,1065,3,68,34,0,1059,1065,3,476,238,0,1060,1062, + 5,581,0,0,1061,1063,5,582,0,0,1062,1061,1,0,0,0,1062,1063,1,0,0, + 0,1063,1065,1,0,0,0,1064,944,1,0,0,0,1064,945,1,0,0,0,1064,946,1, + 0,0,0,1064,947,1,0,0,0,1064,948,1,0,0,0,1064,949,1,0,0,0,1064,950, + 1,0,0,0,1064,951,1,0,0,0,1064,952,1,0,0,0,1064,953,1,0,0,0,1064, + 954,1,0,0,0,1064,955,1,0,0,0,1064,956,1,0,0,0,1064,957,1,0,0,0,1064, + 958,1,0,0,0,1064,959,1,0,0,0,1064,960,1,0,0,0,1064,961,1,0,0,0,1064, + 962,1,0,0,0,1064,963,1,0,0,0,1064,964,1,0,0,0,1064,965,1,0,0,0,1064, + 966,1,0,0,0,1064,967,1,0,0,0,1064,968,1,0,0,0,1064,969,1,0,0,0,1064, + 970,1,0,0,0,1064,971,1,0,0,0,1064,972,1,0,0,0,1064,973,1,0,0,0,1064, + 974,1,0,0,0,1064,975,1,0,0,0,1064,976,1,0,0,0,1064,977,1,0,0,0,1064, + 978,1,0,0,0,1064,979,1,0,0,0,1064,980,1,0,0,0,1064,981,1,0,0,0,1064, + 982,1,0,0,0,1064,983,1,0,0,0,1064,984,1,0,0,0,1064,985,1,0,0,0,1064, + 986,1,0,0,0,1064,987,1,0,0,0,1064,988,1,0,0,0,1064,989,1,0,0,0,1064, + 990,1,0,0,0,1064,991,1,0,0,0,1064,992,1,0,0,0,1064,993,1,0,0,0,1064, + 994,1,0,0,0,1064,995,1,0,0,0,1064,996,1,0,0,0,1064,997,1,0,0,0,1064, + 998,1,0,0,0,1064,999,1,0,0,0,1064,1000,1,0,0,0,1064,1001,1,0,0,0, + 1064,1002,1,0,0,0,1064,1003,1,0,0,0,1064,1004,1,0,0,0,1064,1005, + 1,0,0,0,1064,1006,1,0,0,0,1064,1007,1,0,0,0,1064,1008,1,0,0,0,1064, + 1009,1,0,0,0,1064,1010,1,0,0,0,1064,1011,1,0,0,0,1064,1012,1,0,0, + 0,1064,1013,1,0,0,0,1064,1014,1,0,0,0,1064,1015,1,0,0,0,1064,1016, + 1,0,0,0,1064,1017,1,0,0,0,1064,1018,1,0,0,0,1064,1019,1,0,0,0,1064, + 1020,1,0,0,0,1064,1021,1,0,0,0,1064,1022,1,0,0,0,1064,1023,1,0,0, + 0,1064,1024,1,0,0,0,1064,1025,1,0,0,0,1064,1026,1,0,0,0,1064,1027, + 1,0,0,0,1064,1028,1,0,0,0,1064,1029,1,0,0,0,1064,1030,1,0,0,0,1064, + 1031,1,0,0,0,1064,1032,1,0,0,0,1064,1033,1,0,0,0,1064,1034,1,0,0, + 0,1064,1035,1,0,0,0,1064,1036,1,0,0,0,1064,1037,1,0,0,0,1064,1038, + 1,0,0,0,1064,1039,1,0,0,0,1064,1040,1,0,0,0,1064,1041,1,0,0,0,1064, + 1042,1,0,0,0,1064,1043,1,0,0,0,1064,1044,1,0,0,0,1064,1045,1,0,0, + 0,1064,1046,1,0,0,0,1064,1047,1,0,0,0,1064,1048,1,0,0,0,1064,1049, + 1,0,0,0,1064,1050,1,0,0,0,1064,1051,1,0,0,0,1064,1052,1,0,0,0,1064, + 1053,1,0,0,0,1064,1054,1,0,0,0,1064,1055,1,0,0,0,1064,1056,1,0,0, + 0,1064,1057,1,0,0,0,1064,1058,1,0,0,0,1064,1059,1,0,0,0,1064,1060, + 1,0,0,0,1065,5,1,0,0,0,1066,1067,5,433,0,0,1067,1068,3,684,342,0, + 1068,7,1,0,0,0,1069,1070,5,46,0,0,1070,1071,5,318,0,0,1071,1073, + 3,814,407,0,1072,1074,5,105,0,0,1073,1072,1,0,0,0,1073,1074,1,0, + 0,0,1074,1078,1,0,0,0,1075,1077,3,12,6,0,1076,1075,1,0,0,0,1077, + 1080,1,0,0,0,1078,1076,1,0,0,0,1078,1079,1,0,0,0,1079,9,1,0,0,0, + 1080,1078,1,0,0,0,1081,1084,5,287,0,0,1082,1085,3,808,404,0,1083, + 1085,5,78,0,0,1084,1082,1,0,0,0,1084,1083,1,0,0,0,1085,1120,1,0, + 0,0,1086,1087,7,0,0,0,1087,1088,5,287,0,0,1088,1120,3,808,404,0, + 1089,1120,5,228,0,0,1090,1120,5,229,0,0,1091,1120,5,236,0,0,1092, + 1120,5,237,0,0,1093,1120,5,234,0,0,1094,1120,5,235,0,0,1095,1120, + 5,232,0,0,1096,1120,5,233,0,0,1097,1120,5,230,0,0,1098,1120,5,231, + 0,0,1099,1120,5,535,0,0,1100,1120,5,536,0,0,1101,1120,5,537,0,0, + 1102,1120,5,538,0,0,1103,1120,5,539,0,0,1104,1120,5,540,0,0,1105, + 1106,5,164,0,0,1106,1107,5,74,0,0,1107,1120,3,812,406,0,1108,1109, + 5,371,0,0,1109,1110,5,368,0,0,1110,1120,3,808,404,0,1111,1112,5, + 68,0,0,1112,1113,7,1,0,0,1113,1120,3,784,392,0,1114,1115,7,2,0,0, + 1115,1120,3,816,408,0,1116,1117,5,134,0,0,1117,1120,3,784,392,0, + 1118,1120,3,826,413,0,1119,1081,1,0,0,0,1119,1086,1,0,0,0,1119,1089, + 1,0,0,0,1119,1090,1,0,0,0,1119,1091,1,0,0,0,1119,1092,1,0,0,0,1119, + 1093,1,0,0,0,1119,1094,1,0,0,0,1119,1095,1,0,0,0,1119,1096,1,0,0, + 0,1119,1097,1,0,0,0,1119,1098,1,0,0,0,1119,1099,1,0,0,0,1119,1100, + 1,0,0,0,1119,1101,1,0,0,0,1119,1102,1,0,0,0,1119,1103,1,0,0,0,1119, + 1104,1,0,0,0,1119,1105,1,0,0,0,1119,1108,1,0,0,0,1119,1111,1,0,0, + 0,1119,1114,1,0,0,0,1119,1116,1,0,0,0,1119,1118,1,0,0,0,1120,11, + 1,0,0,0,1121,1130,3,10,5,0,1122,1123,5,348,0,0,1123,1130,5,571,0, + 0,1124,1125,7,3,0,0,1125,1130,3,816,408,0,1126,1127,5,68,0,0,1127, + 1128,7,1,0,0,1128,1130,3,816,408,0,1129,1121,1,0,0,0,1129,1122,1, + 0,0,0,1129,1124,1,0,0,0,1129,1126,1,0,0,0,1130,13,1,0,0,0,1131,1132, + 5,46,0,0,1132,1133,5,99,0,0,1133,1135,3,814,407,0,1134,1136,5,105, + 0,0,1135,1134,1,0,0,0,1135,1136,1,0,0,0,1136,1140,1,0,0,0,1137,1139, + 3,12,6,0,1138,1137,1,0,0,0,1139,1142,1,0,0,0,1140,1138,1,0,0,0,1140, + 1141,1,0,0,0,1141,15,1,0,0,0,1142,1140,1,0,0,0,1143,1144,5,138,0, + 0,1144,1145,7,2,0,0,1145,1147,3,814,407,0,1146,1148,5,105,0,0,1147, + 1146,1,0,0,0,1147,1148,1,0,0,0,1148,1152,1,0,0,0,1149,1151,3,10, + 5,0,1150,1149,1,0,0,0,1151,1154,1,0,0,0,1152,1150,1,0,0,0,1152,1153, + 1,0,0,0,1153,17,1,0,0,0,1154,1152,1,0,0,0,1155,1156,5,138,0,0,1156, + 1159,7,2,0,0,1157,1160,5,30,0,0,1158,1160,3,814,407,0,1159,1157, + 1,0,0,0,1159,1158,1,0,0,0,1160,1161,1,0,0,0,1161,1162,5,68,0,0,1162, + 1163,5,175,0,0,1163,1164,3,788,394,0,1164,1165,3,64,32,0,1165,19, + 1,0,0,0,1166,1167,5,138,0,0,1167,1168,5,442,0,0,1168,1170,3,794, + 397,0,1169,1171,3,368,184,0,1170,1169,1,0,0,0,1170,1171,1,0,0,0, + 1171,1172,1,0,0,0,1172,1173,3,22,11,0,1173,21,1,0,0,0,1174,1178, + 3,24,12,0,1175,1177,3,24,12,0,1176,1175,1,0,0,0,1177,1180,1,0,0, + 0,1178,1176,1,0,0,0,1178,1179,1,0,0,0,1179,1182,1,0,0,0,1180,1178, + 1,0,0,0,1181,1183,5,315,0,0,1182,1181,1,0,0,0,1182,1183,1,0,0,0, + 1183,1201,1,0,0,0,1184,1185,5,309,0,0,1185,1186,5,94,0,0,1186,1201, + 3,792,396,0,1187,1188,5,282,0,0,1188,1189,5,94,0,0,1189,1201,3,814, + 407,0,1190,1191,5,333,0,0,1191,1192,5,323,0,0,1192,1201,3,32,16, + 0,1193,1195,5,269,0,0,1194,1193,1,0,0,0,1194,1195,1,0,0,0,1195,1196, + 1,0,0,0,1196,1197,5,462,0,0,1197,1198,5,80,0,0,1198,1199,5,204,0, + 0,1199,1201,3,818,409,0,1200,1174,1,0,0,0,1200,1184,1,0,0,0,1200, + 1187,1,0,0,0,1200,1190,1,0,0,0,1200,1194,1,0,0,0,1201,23,1,0,0,0, + 1202,1245,5,222,0,0,1203,1245,5,338,0,0,1204,1245,5,377,0,0,1205, + 1207,5,77,0,0,1206,1205,1,0,0,0,1206,1207,1,0,0,0,1207,1208,1,0, + 0,0,1208,1245,5,250,0,0,1209,1211,5,205,0,0,1210,1209,1,0,0,0,1210, + 1211,1,0,0,0,1211,1212,1,0,0,0,1212,1213,5,327,0,0,1213,1220,5,243, + 0,0,1214,1216,5,205,0,0,1215,1214,1,0,0,0,1215,1216,1,0,0,0,1216, + 1217,1,0,0,0,1217,1218,5,327,0,0,1218,1220,5,181,0,0,1219,1210,1, + 0,0,0,1219,1215,1,0,0,0,1220,1245,1,0,0,0,1221,1222,5,460,0,0,1222, + 1245,7,4,0,0,1223,1224,5,170,0,0,1224,1245,3,824,412,0,1225,1226, + 5,320,0,0,1226,1245,3,818,409,0,1227,1228,5,333,0,0,1228,1229,3, + 818,409,0,1229,1232,7,5,0,0,1230,1233,3,818,409,0,1231,1233,5,53, + 0,0,1232,1230,1,0,0,0,1232,1231,1,0,0,0,1233,1245,1,0,0,0,1234,1235, + 5,333,0,0,1235,1236,3,818,409,0,1236,1237,5,64,0,0,1237,1238,5,434, + 0,0,1238,1245,1,0,0,0,1239,1242,5,313,0,0,1240,1243,3,818,409,0, + 1241,1243,5,30,0,0,1242,1240,1,0,0,0,1242,1241,1,0,0,0,1243,1245, + 1,0,0,0,1244,1202,1,0,0,0,1244,1203,1,0,0,0,1244,1204,1,0,0,0,1244, + 1206,1,0,0,0,1244,1219,1,0,0,0,1244,1221,1,0,0,0,1244,1223,1,0,0, + 0,1244,1225,1,0,0,0,1244,1227,1,0,0,0,1244,1234,1,0,0,0,1244,1239, + 1,0,0,0,1245,25,1,0,0,0,1246,1247,5,46,0,0,1247,1248,5,66,0,0,1248, + 1250,3,814,407,0,1249,1251,5,105,0,0,1250,1249,1,0,0,0,1250,1251, + 1,0,0,0,1251,1255,1,0,0,0,1252,1254,3,12,6,0,1253,1252,1,0,0,0,1254, + 1257,1,0,0,0,1255,1253,1,0,0,0,1255,1256,1,0,0,0,1256,27,1,0,0,0, + 1257,1255,1,0,0,0,1258,1259,5,138,0,0,1259,1260,5,66,0,0,1260,1261, + 3,814,407,0,1261,1262,7,6,0,0,1262,1263,5,99,0,0,1263,1264,3,816, + 408,0,1264,29,1,0,0,0,1265,1266,5,46,0,0,1266,1268,5,323,0,0,1267, + 1269,3,294,147,0,1268,1267,1,0,0,0,1268,1269,1,0,0,0,1269,1276,1, + 0,0,0,1270,1272,3,32,16,0,1271,1270,1,0,0,0,1271,1272,1,0,0,0,1272, + 1273,1,0,0,0,1273,1274,5,106,0,0,1274,1277,3,814,407,0,1275,1277, + 3,32,16,0,1276,1271,1,0,0,0,1276,1275,1,0,0,0,1277,1281,1,0,0,0, + 1278,1280,3,34,17,0,1279,1278,1,0,0,0,1280,1283,1,0,0,0,1281,1279, + 1,0,0,0,1281,1282,1,0,0,0,1282,31,1,0,0,0,1283,1281,1,0,0,0,1284, + 1285,3,316,158,0,1285,33,1,0,0,0,1286,1293,3,120,60,0,1287,1293, + 3,358,179,0,1288,1293,3,196,98,0,1289,1293,3,256,128,0,1290,1293, + 3,334,167,0,1291,1293,3,476,238,0,1292,1286,1,0,0,0,1292,1287,1, + 0,0,0,1292,1288,1,0,0,0,1292,1289,1,0,0,0,1292,1290,1,0,0,0,1292, + 1291,1,0,0,0,1293,35,1,0,0,0,1294,1296,5,333,0,0,1295,1297,7,7,0, + 0,1296,1295,1,0,0,0,1296,1297,1,0,0,0,1297,1298,1,0,0,0,1298,1299, + 3,38,19,0,1299,37,1,0,0,0,1300,1301,5,356,0,0,1301,1309,3,474,237, + 0,1302,1303,5,332,0,0,1303,1304,5,154,0,0,1304,1305,5,36,0,0,1305, + 1306,5,356,0,0,1306,1309,3,474,237,0,1307,1309,3,42,21,0,1308,1300, + 1,0,0,0,1308,1302,1,0,0,0,1308,1307,1,0,0,0,1309,39,1,0,0,0,1310, + 1313,5,30,0,0,1311,1313,3,44,22,0,1312,1310,1,0,0,0,1312,1311,1, + 0,0,0,1313,1315,1,0,0,0,1314,1316,7,5,0,0,1315,1314,1,0,0,0,1315, + 1316,1,0,0,0,1316,1319,1,0,0,0,1317,1320,5,53,0,0,1318,1320,3,46, + 23,0,1319,1317,1,0,0,0,1319,1318,1,0,0,0,1319,1320,1,0,0,0,1320, + 41,1,0,0,0,1321,1322,5,418,0,0,1322,1323,5,386,0,0,1323,1350,3,56, + 28,0,1324,1325,5,152,0,0,1325,1350,3,808,404,0,1326,1327,5,323,0, + 0,1327,1350,3,790,395,0,1328,1331,5,267,0,0,1329,1332,3,808,404, + 0,1330,1332,5,53,0,0,1331,1329,1,0,0,0,1331,1330,1,0,0,0,1331,1332, + 1,0,0,0,1332,1350,1,0,0,0,1333,1334,5,318,0,0,1334,1350,3,58,29, + 0,1335,1336,5,332,0,0,1336,1337,5,106,0,0,1337,1350,3,58,29,0,1338, + 1339,5,383,0,0,1339,1340,5,279,0,0,1340,1350,3,696,348,0,1341,1342, + 5,356,0,0,1342,1343,5,337,0,0,1343,1350,3,808,404,0,1344,1345,3, + 44,22,0,1345,1346,5,64,0,0,1346,1347,5,434,0,0,1347,1350,1,0,0,0, + 1348,1350,3,40,20,0,1349,1321,1,0,0,0,1349,1324,1,0,0,0,1349,1326, + 1,0,0,0,1349,1328,1,0,0,0,1349,1333,1,0,0,0,1349,1335,1,0,0,0,1349, + 1338,1,0,0,0,1349,1341,1,0,0,0,1349,1344,1,0,0,0,1349,1348,1,0,0, + 0,1350,43,1,0,0,0,1351,1356,3,818,409,0,1352,1353,5,11,0,0,1353, + 1355,3,818,409,0,1354,1352,1,0,0,0,1355,1358,1,0,0,0,1356,1354,1, + 0,0,0,1356,1357,1,0,0,0,1357,45,1,0,0,0,1358,1356,1,0,0,0,1359,1364, + 3,48,24,0,1360,1361,5,6,0,0,1361,1363,3,48,24,0,1362,1360,1,0,0, + 0,1363,1366,1,0,0,0,1364,1362,1,0,0,0,1364,1365,1,0,0,0,1365,47, + 1,0,0,0,1366,1364,1,0,0,0,1367,1370,3,54,27,0,1368,1370,3,202,101, + 0,1369,1367,1,0,0,0,1369,1368,1,0,0,0,1370,49,1,0,0,0,1371,1372, + 5,300,0,0,1372,1377,7,8,0,0,1373,1374,5,310,0,0,1374,1377,5,300, + 0,0,1375,1377,5,330,0,0,1376,1371,1,0,0,0,1376,1373,1,0,0,0,1376, + 1375,1,0,0,0,1377,51,1,0,0,0,1378,1385,5,96,0,0,1379,1385,5,60,0, + 0,1380,1385,5,80,0,0,1381,1385,3,800,400,0,1382,1385,3,832,416,0, + 1383,1385,3,808,404,0,1384,1378,1,0,0,0,1384,1379,1,0,0,0,1384,1380, + 1,0,0,0,1384,1381,1,0,0,0,1384,1382,1,0,0,0,1384,1383,1,0,0,0,1385, + 53,1,0,0,0,1386,1391,5,96,0,0,1387,1391,5,60,0,0,1388,1391,5,80, + 0,0,1389,1391,3,58,29,0,1390,1386,1,0,0,0,1390,1387,1,0,0,0,1390, + 1388,1,0,0,0,1390,1389,1,0,0,0,1391,55,1,0,0,0,1392,1407,3,808,404, + 0,1393,1407,5,53,0,0,1394,1407,3,826,413,0,1395,1396,5,403,0,0,1396, + 1398,3,808,404,0,1397,1399,3,668,334,0,1398,1397,1,0,0,0,1398,1399, + 1,0,0,0,1399,1407,1,0,0,0,1400,1401,5,403,0,0,1401,1402,3,660,330, + 0,1402,1403,3,808,404,0,1403,1407,1,0,0,0,1404,1407,3,202,101,0, + 1405,1407,5,254,0,0,1406,1392,1,0,0,0,1406,1393,1,0,0,0,1406,1394, + 1,0,0,0,1406,1395,1,0,0,0,1406,1400,1,0,0,0,1406,1404,1,0,0,0,1406, + 1405,1,0,0,0,1407,57,1,0,0,0,1408,1411,3,822,411,0,1409,1411,3,808, + 404,0,1410,1408,1,0,0,0,1410,1409,1,0,0,0,1411,59,1,0,0,0,1412,1413, + 5,313,0,0,1413,1414,3,62,31,0,1414,61,1,0,0,0,1415,1416,5,418,0, + 0,1416,1425,5,386,0,0,1417,1418,5,356,0,0,1418,1419,5,244,0,0,1419, + 1425,5,251,0,0,1420,1421,5,332,0,0,1421,1425,5,106,0,0,1422,1425, + 5,30,0,0,1423,1425,3,44,22,0,1424,1415,1,0,0,0,1424,1417,1,0,0,0, + 1424,1420,1,0,0,0,1424,1422,1,0,0,0,1424,1423,1,0,0,0,1425,63,1, + 0,0,0,1426,1427,5,333,0,0,1427,1430,3,38,19,0,1428,1430,3,60,30, + 0,1429,1426,1,0,0,0,1429,1428,1,0,0,0,1430,65,1,0,0,0,1431,1432, + 5,333,0,0,1432,1435,3,42,21,0,1433,1435,3,60,30,0,1434,1431,1,0, + 0,0,1434,1433,1,0,0,0,1435,67,1,0,0,0,1436,1446,5,335,0,0,1437,1447, + 3,44,22,0,1438,1439,5,418,0,0,1439,1447,5,386,0,0,1440,1441,5,356, + 0,0,1441,1442,5,244,0,0,1442,1447,5,251,0,0,1443,1444,5,332,0,0, + 1444,1447,5,106,0,0,1445,1447,5,30,0,0,1446,1437,1,0,0,0,1446,1438, + 1,0,0,0,1446,1440,1,0,0,0,1446,1443,1,0,0,0,1446,1445,1,0,0,0,1447, + 69,1,0,0,0,1448,1449,5,333,0,0,1449,1452,5,165,0,0,1450,1453,5,30, + 0,0,1451,1453,3,760,380,0,1452,1450,1,0,0,0,1452,1451,1,0,0,0,1453, + 1454,1,0,0,0,1454,1455,7,9,0,0,1455,71,1,0,0,0,1456,1457,5,155,0, + 0,1457,73,1,0,0,0,1458,1459,5,187,0,0,1459,1460,7,10,0,0,1460,75, + 1,0,0,0,1461,1462,5,138,0,0,1462,1464,5,92,0,0,1463,1465,3,422,211, + 0,1464,1463,1,0,0,0,1464,1465,1,0,0,0,1465,1466,1,0,0,0,1466,1469, + 3,624,312,0,1467,1470,3,78,39,0,1468,1470,3,88,44,0,1469,1467,1, + 0,0,0,1469,1468,1,0,0,0,1470,1583,1,0,0,0,1471,1472,5,138,0,0,1472, + 1473,5,92,0,0,1473,1474,5,30,0,0,1474,1475,5,68,0,0,1475,1479,3, + 176,88,0,1476,1477,5,281,0,0,1477,1478,5,147,0,0,1478,1480,3,816, + 408,0,1479,1476,1,0,0,0,1479,1480,1,0,0,0,1480,1481,1,0,0,0,1481, + 1482,5,333,0,0,1482,1483,5,351,0,0,1483,1485,3,768,384,0,1484,1486, + 5,272,0,0,1485,1484,1,0,0,0,1485,1486,1,0,0,0,1486,1583,1,0,0,0, + 1487,1488,5,138,0,0,1488,1490,5,92,0,0,1489,1491,3,422,211,0,1490, + 1489,1,0,0,0,1490,1491,1,0,0,0,1491,1492,1,0,0,0,1492,1493,3,774, + 387,0,1493,1498,3,90,45,0,1494,1495,5,62,0,0,1495,1496,5,422,0,0, + 1496,1499,3,80,40,0,1497,1499,5,53,0,0,1498,1494,1,0,0,0,1498,1497, + 1,0,0,0,1499,1583,1,0,0,0,1500,1501,5,138,0,0,1501,1503,5,92,0,0, + 1502,1504,3,422,211,0,1503,1502,1,0,0,0,1503,1504,1,0,0,0,1504,1505, + 1,0,0,0,1505,1506,3,774,387,0,1506,1507,5,436,0,0,1507,1508,5,285, + 0,0,1508,1510,3,780,390,0,1509,1511,7,11,0,0,1510,1509,1,0,0,0,1510, + 1511,1,0,0,0,1511,1583,1,0,0,0,1512,1513,5,138,0,0,1513,1515,5,226, + 0,0,1514,1516,3,422,211,0,1515,1514,1,0,0,0,1515,1516,1,0,0,0,1516, + 1517,1,0,0,0,1517,1520,3,780,390,0,1518,1521,3,78,39,0,1519,1521, + 3,90,45,0,1520,1518,1,0,0,0,1520,1519,1,0,0,0,1521,1583,1,0,0,0, + 1522,1523,5,138,0,0,1523,1524,5,226,0,0,1524,1525,5,30,0,0,1525, + 1526,5,68,0,0,1526,1530,3,176,88,0,1527,1528,5,281,0,0,1528,1529, + 5,147,0,0,1529,1531,3,816,408,0,1530,1527,1,0,0,0,1530,1531,1,0, + 0,0,1531,1532,1,0,0,0,1532,1533,5,333,0,0,1533,1535,3,176,88,0,1534, + 1536,5,272,0,0,1535,1534,1,0,0,0,1535,1536,1,0,0,0,1536,1583,1,0, + 0,0,1537,1538,5,138,0,0,1538,1540,5,328,0,0,1539,1541,3,422,211, + 0,1540,1539,1,0,0,0,1540,1541,1,0,0,0,1541,1542,1,0,0,0,1542,1543, + 3,780,390,0,1543,1544,3,78,39,0,1544,1583,1,0,0,0,1545,1547,5,138, + 0,0,1546,1548,5,259,0,0,1547,1546,1,0,0,0,1547,1548,1,0,0,0,1548, + 1549,1,0,0,0,1549,1551,5,376,0,0,1550,1552,3,422,211,0,1551,1550, + 1,0,0,0,1551,1552,1,0,0,0,1552,1553,1,0,0,0,1553,1554,3,778,389, + 0,1554,1555,3,78,39,0,1555,1583,1,0,0,0,1556,1557,5,138,0,0,1557, + 1558,5,259,0,0,1558,1559,5,376,0,0,1559,1560,5,30,0,0,1560,1561, + 5,68,0,0,1561,1565,3,176,88,0,1562,1563,5,281,0,0,1563,1564,5,147, + 0,0,1564,1566,3,816,408,0,1565,1562,1,0,0,0,1565,1566,1,0,0,0,1566, + 1567,1,0,0,0,1567,1568,5,333,0,0,1568,1569,5,351,0,0,1569,1571,3, + 768,384,0,1570,1572,5,272,0,0,1571,1570,1,0,0,0,1571,1572,1,0,0, + 0,1572,1583,1,0,0,0,1573,1574,5,138,0,0,1574,1575,5,63,0,0,1575, + 1577,5,92,0,0,1576,1578,3,422,211,0,1577,1576,1,0,0,0,1577,1578, + 1,0,0,0,1578,1579,1,0,0,0,1579,1580,3,624,312,0,1580,1581,3,78,39, + 0,1581,1583,1,0,0,0,1582,1461,1,0,0,0,1582,1471,1,0,0,0,1582,1487, + 1,0,0,0,1582,1500,1,0,0,0,1582,1512,1,0,0,0,1582,1522,1,0,0,0,1582, + 1537,1,0,0,0,1582,1545,1,0,0,0,1582,1556,1,0,0,0,1582,1573,1,0,0, + 0,1583,77,1,0,0,0,1584,1589,3,92,46,0,1585,1586,5,6,0,0,1586,1588, + 3,92,46,0,1587,1585,1,0,0,0,1588,1591,1,0,0,0,1589,1587,1,0,0,0, + 1589,1590,1,0,0,0,1590,79,1,0,0,0,1591,1589,1,0,0,0,1592,1593,5, + 68,0,0,1593,1602,3,534,267,0,1594,1595,5,64,0,0,1595,1596,3,82,41, + 0,1596,1597,5,94,0,0,1597,1598,3,82,41,0,1598,1602,1,0,0,0,1599, + 1600,5,105,0,0,1600,1602,3,86,43,0,1601,1592,1,0,0,0,1601,1594,1, + 0,0,0,1601,1599,1,0,0,0,1602,81,1,0,0,0,1603,1604,5,2,0,0,1604,1609, + 3,84,42,0,1605,1606,5,6,0,0,1606,1608,3,84,42,0,1607,1605,1,0,0, + 0,1608,1611,1,0,0,0,1609,1607,1,0,0,0,1609,1610,1,0,0,0,1610,1612, + 1,0,0,0,1611,1609,1,0,0,0,1612,1613,5,3,0,0,1613,83,1,0,0,0,1614, + 1618,3,534,267,0,1615,1618,5,262,0,0,1616,1618,5,260,0,0,1617,1614, + 1,0,0,0,1617,1615,1,0,0,0,1617,1616,1,0,0,0,1618,85,1,0,0,0,1619, + 1620,5,2,0,0,1620,1621,5,533,0,0,1621,1622,3,202,101,0,1622,1623, + 5,6,0,0,1623,1624,5,534,0,0,1624,1625,3,202,101,0,1625,1626,5,3, + 0,0,1626,87,1,0,0,0,1627,1628,3,90,45,0,1628,1629,3,106,53,0,1629, + 1634,1,0,0,0,1630,1631,5,436,0,0,1631,1632,5,285,0,0,1632,1634,3, + 780,390,0,1633,1627,1,0,0,0,1633,1630,1,0,0,0,1634,89,1,0,0,0,1635, + 1636,5,435,0,0,1636,1637,5,285,0,0,1637,1638,3,780,390,0,1638,91, + 1,0,0,0,1639,1642,5,133,0,0,1640,1641,5,45,0,0,1641,1643,3,818,409, + 0,1642,1640,1,0,0,0,1642,1643,1,0,0,0,1643,1644,1,0,0,0,1644,1873, + 3,142,71,0,1645,1646,5,138,0,0,1646,1647,5,45,0,0,1647,1651,3,818, + 409,0,1648,1650,3,272,136,0,1649,1648,1,0,0,0,1650,1653,1,0,0,0, + 1651,1649,1,0,0,0,1651,1652,1,0,0,0,1652,1873,1,0,0,0,1653,1651, + 1,0,0,0,1654,1655,5,372,0,0,1655,1656,5,45,0,0,1656,1873,3,818,409, + 0,1657,1658,5,191,0,0,1658,1660,5,45,0,0,1659,1661,3,422,211,0,1660, + 1659,1,0,0,0,1660,1661,1,0,0,0,1661,1662,1,0,0,0,1662,1664,3,818, + 409,0,1663,1665,3,96,48,0,1664,1663,1,0,0,0,1664,1665,1,0,0,0,1665, + 1873,1,0,0,0,1666,1667,5,333,0,0,1667,1668,5,379,0,0,1668,1873,7, + 12,0,0,1669,1670,5,158,0,0,1670,1671,5,80,0,0,1671,1873,3,818,409, + 0,1672,1673,5,333,0,0,1673,1873,7,13,0,0,1674,1676,5,193,0,0,1675, + 1677,7,14,0,0,1676,1675,1,0,0,0,1676,1677,1,0,0,0,1677,1678,1,0, + 0,0,1678,1873,5,357,0,0,1679,1680,5,186,0,0,1680,1684,5,357,0,0, + 1681,1685,5,30,0,0,1682,1685,5,99,0,0,1683,1685,3,818,409,0,1684, + 1681,1,0,0,0,1684,1682,1,0,0,0,1684,1683,1,0,0,0,1685,1873,1,0,0, + 0,1686,1687,5,193,0,0,1687,1688,7,14,0,0,1688,1689,5,321,0,0,1689, + 1873,3,818,409,0,1690,1691,5,186,0,0,1691,1692,5,321,0,0,1692,1873, + 3,818,409,0,1693,1695,5,269,0,0,1694,1693,1,0,0,0,1694,1695,1,0, + 0,0,1695,1696,1,0,0,0,1696,1697,5,228,0,0,1697,1873,3,780,390,0, + 1698,1699,5,275,0,0,1699,1873,3,316,158,0,1700,1701,5,77,0,0,1701, + 1873,5,275,0,0,1702,1703,5,282,0,0,1703,1704,5,94,0,0,1704,1873, + 3,814,407,0,1705,1706,5,333,0,0,1706,1707,5,351,0,0,1707,1873,3, + 768,384,0,1708,1709,5,312,0,0,1709,1714,5,219,0,0,1710,1715,5,270, + 0,0,1711,1715,5,113,0,0,1712,1715,5,53,0,0,1713,1715,3,180,90,0, + 1714,1710,1,0,0,0,1714,1711,1,0,0,0,1714,1712,1,0,0,0,1714,1713, + 1,0,0,0,1715,1873,1,0,0,0,1716,1723,5,193,0,0,1717,1723,5,186,0, + 0,1718,1720,5,269,0,0,1719,1718,1,0,0,0,1719,1720,1,0,0,0,1720,1721, + 1,0,0,0,1721,1723,5,209,0,0,1722,1716,1,0,0,0,1722,1717,1,0,0,0, + 1722,1719,1,0,0,0,1723,1724,1,0,0,0,1724,1725,5,414,0,0,1725,1726, + 5,251,0,0,1726,1873,5,327,0,0,1727,1729,5,191,0,0,1728,1730,5,44, + 0,0,1729,1728,1,0,0,0,1729,1730,1,0,0,0,1730,1732,1,0,0,0,1731,1733, + 3,422,211,0,1732,1731,1,0,0,0,1732,1733,1,0,0,0,1733,1734,1,0,0, + 0,1734,1736,3,800,400,0,1735,1737,3,96,48,0,1736,1735,1,0,0,0,1736, + 1737,1,0,0,0,1737,1873,1,0,0,0,1738,1740,5,133,0,0,1739,1741,5,44, + 0,0,1740,1739,1,0,0,0,1740,1741,1,0,0,0,1741,1743,1,0,0,0,1742,1744, + 3,294,147,0,1743,1742,1,0,0,0,1743,1744,1,0,0,0,1744,1745,1,0,0, + 0,1745,1873,3,132,66,0,1746,1748,5,138,0,0,1747,1749,5,44,0,0,1748, + 1747,1,0,0,0,1748,1749,1,0,0,0,1749,1750,1,0,0,0,1750,1753,3,800, + 400,0,1751,1754,3,94,47,0,1752,1754,3,222,111,0,1753,1751,1,0,0, + 0,1753,1752,1,0,0,0,1754,1873,1,0,0,0,1755,1757,5,138,0,0,1756,1758, + 5,44,0,0,1757,1756,1,0,0,0,1757,1758,1,0,0,0,1758,1759,1,0,0,0,1759, + 1760,3,800,400,0,1760,1761,7,15,0,0,1761,1762,5,77,0,0,1762,1763, + 5,78,0,0,1763,1873,1,0,0,0,1764,1766,5,138,0,0,1765,1767,5,44,0, + 0,1766,1765,1,0,0,0,1766,1767,1,0,0,0,1767,1768,1,0,0,0,1768,1769, + 3,800,400,0,1769,1770,5,191,0,0,1770,1772,5,437,0,0,1771,1773,3, + 422,211,0,1772,1771,1,0,0,0,1772,1773,1,0,0,0,1773,1873,1,0,0,0, + 1774,1776,5,138,0,0,1775,1777,5,44,0,0,1776,1775,1,0,0,0,1776,1777, + 1,0,0,0,1777,1778,1,0,0,0,1778,1779,3,800,400,0,1779,1780,5,333, + 0,0,1780,1781,5,342,0,0,1781,1782,3,812,406,0,1782,1873,1,0,0,0, + 1783,1785,5,138,0,0,1784,1786,5,44,0,0,1785,1784,1,0,0,0,1785,1786, + 1,0,0,0,1786,1787,1,0,0,0,1787,1789,3,800,400,0,1788,1783,1,0,0, + 0,1788,1789,1,0,0,0,1789,1790,1,0,0,0,1790,1791,7,16,0,0,1791,1873, + 3,100,50,0,1792,1794,5,138,0,0,1793,1795,5,44,0,0,1794,1793,1,0, + 0,0,1794,1795,1,0,0,0,1795,1796,1,0,0,0,1796,1797,3,800,400,0,1797, + 1798,5,333,0,0,1798,1799,5,345,0,0,1799,1800,3,818,409,0,1800,1873, + 1,0,0,0,1801,1803,5,138,0,0,1802,1804,5,44,0,0,1803,1802,1,0,0,0, + 1803,1804,1,0,0,0,1804,1805,1,0,0,0,1805,1806,3,800,400,0,1806,1807, + 5,133,0,0,1807,1808,5,438,0,0,1808,1809,3,138,69,0,1809,1810,5,36, + 0,0,1810,1819,5,219,0,0,1811,1813,5,2,0,0,1812,1814,3,200,100,0, + 1813,1812,1,0,0,0,1814,1815,1,0,0,0,1815,1813,1,0,0,0,1815,1816, + 1,0,0,0,1816,1817,1,0,0,0,1817,1818,5,3,0,0,1818,1820,1,0,0,0,1819, + 1811,1,0,0,0,1819,1820,1,0,0,0,1820,1873,1,0,0,0,1821,1823,5,138, + 0,0,1822,1824,5,44,0,0,1823,1822,1,0,0,0,1823,1824,1,0,0,0,1824, + 1825,1,0,0,0,1825,1839,3,800,400,0,1826,1831,5,314,0,0,1827,1829, + 5,105,0,0,1828,1827,1,0,0,0,1828,1829,1,0,0,0,1829,1830,1,0,0,0, + 1830,1832,3,202,101,0,1831,1828,1,0,0,0,1831,1832,1,0,0,0,1832,1840, + 1,0,0,0,1833,1837,5,333,0,0,1834,1838,3,200,100,0,1835,1836,5,438, + 0,0,1836,1838,3,138,69,0,1837,1834,1,0,0,0,1837,1835,1,0,0,0,1838, + 1840,1,0,0,0,1839,1826,1,0,0,0,1839,1833,1,0,0,0,1840,1841,1,0,0, + 0,1841,1839,1,0,0,0,1841,1842,1,0,0,0,1842,1873,1,0,0,0,1843,1845, + 5,138,0,0,1844,1846,5,44,0,0,1845,1844,1,0,0,0,1845,1846,1,0,0,0, + 1846,1847,1,0,0,0,1847,1848,3,800,400,0,1848,1849,5,191,0,0,1849, + 1851,5,219,0,0,1850,1852,3,422,211,0,1851,1850,1,0,0,0,1851,1852, + 1,0,0,0,1852,1873,1,0,0,0,1853,1855,5,138,0,0,1854,1856,5,44,0,0, + 1855,1854,1,0,0,0,1855,1856,1,0,0,0,1856,1857,1,0,0,0,1857,1860, + 3,800,400,0,1858,1859,5,333,0,0,1859,1861,5,174,0,0,1860,1858,1, + 0,0,0,1860,1861,1,0,0,0,1861,1862,1,0,0,0,1862,1863,5,360,0,0,1863, + 1865,3,652,326,0,1864,1866,3,98,49,0,1865,1864,1,0,0,0,1865,1866, + 1,0,0,0,1866,1869,1,0,0,0,1867,1868,5,100,0,0,1868,1870,3,674,337, + 0,1869,1867,1,0,0,0,1869,1870,1,0,0,0,1870,1873,1,0,0,0,1871,1873, + 3,222,111,0,1872,1639,1,0,0,0,1872,1645,1,0,0,0,1872,1654,1,0,0, + 0,1872,1657,1,0,0,0,1872,1666,1,0,0,0,1872,1669,1,0,0,0,1872,1672, + 1,0,0,0,1872,1674,1,0,0,0,1872,1679,1,0,0,0,1872,1686,1,0,0,0,1872, + 1690,1,0,0,0,1872,1694,1,0,0,0,1872,1698,1,0,0,0,1872,1700,1,0,0, + 0,1872,1702,1,0,0,0,1872,1705,1,0,0,0,1872,1708,1,0,0,0,1872,1722, + 1,0,0,0,1872,1727,1,0,0,0,1872,1738,1,0,0,0,1872,1746,1,0,0,0,1872, + 1755,1,0,0,0,1872,1764,1,0,0,0,1872,1774,1,0,0,0,1872,1788,1,0,0, + 0,1872,1792,1,0,0,0,1872,1801,1,0,0,0,1872,1821,1,0,0,0,1872,1843, + 1,0,0,0,1872,1853,1,0,0,0,1872,1871,1,0,0,0,1873,93,1,0,0,0,1874, + 1875,5,333,0,0,1875,1876,5,53,0,0,1876,1880,3,674,337,0,1877,1878, + 5,191,0,0,1878,1880,5,53,0,0,1879,1874,1,0,0,0,1879,1877,1,0,0,0, + 1880,95,1,0,0,0,1881,1882,7,17,0,0,1882,97,1,0,0,0,1883,1884,5,43, + 0,0,1884,1885,3,316,158,0,1885,99,1,0,0,0,1886,1887,5,2,0,0,1887, + 1892,3,104,52,0,1888,1889,5,6,0,0,1889,1891,3,104,52,0,1890,1888, + 1,0,0,0,1891,1894,1,0,0,0,1892,1890,1,0,0,0,1892,1893,1,0,0,0,1893, + 1895,1,0,0,0,1894,1892,1,0,0,0,1895,1896,5,3,0,0,1896,101,1,0,0, + 0,1897,1898,5,105,0,0,1898,1899,3,100,50,0,1899,103,1,0,0,0,1900, + 1905,3,824,412,0,1901,1902,5,10,0,0,1902,1906,3,288,144,0,1903,1904, + 5,11,0,0,1904,1906,3,286,143,0,1905,1901,1,0,0,0,1905,1903,1,0,0, + 0,1905,1906,1,0,0,0,1906,105,1,0,0,0,1907,1908,5,62,0,0,1908,1909, + 5,422,0,0,1909,1910,5,105,0,0,1910,1911,5,2,0,0,1911,1912,3,822, + 411,0,1912,1919,5,571,0,0,1913,1914,5,6,0,0,1914,1915,3,822,411, + 0,1915,1916,5,571,0,0,1916,1918,1,0,0,0,1917,1913,1,0,0,0,1918,1921, + 1,0,0,0,1919,1917,1,0,0,0,1919,1920,1,0,0,0,1920,1922,1,0,0,0,1921, + 1919,1,0,0,0,1922,1923,5,3,0,0,1923,1937,1,0,0,0,1924,1925,5,62, + 0,0,1925,1926,5,422,0,0,1926,1927,5,68,0,0,1927,1937,3,534,267,0, + 1928,1929,5,62,0,0,1929,1930,5,422,0,0,1930,1931,5,64,0,0,1931,1932, + 3,534,267,0,1932,1933,5,94,0,0,1933,1934,3,534,267,0,1934,1937,1, + 0,0,0,1935,1937,5,53,0,0,1936,1907,1,0,0,0,1936,1924,1,0,0,0,1936, + 1928,1,0,0,0,1936,1935,1,0,0,0,1937,107,1,0,0,0,1938,1939,5,138, + 0,0,1939,1940,5,360,0,0,1940,1941,3,316,158,0,1941,1946,3,110,55, + 0,1942,1943,5,6,0,0,1943,1945,3,110,55,0,1944,1942,1,0,0,0,1945, + 1948,1,0,0,0,1946,1944,1,0,0,0,1946,1947,1,0,0,0,1947,109,1,0,0, + 0,1948,1946,1,0,0,0,1949,1950,5,133,0,0,1950,1951,5,143,0,0,1951, + 1953,3,644,322,0,1952,1954,3,96,48,0,1953,1952,1,0,0,0,1953,1954, + 1,0,0,0,1954,1980,1,0,0,0,1955,1956,5,191,0,0,1956,1958,5,143,0, + 0,1957,1959,3,422,211,0,1958,1957,1,0,0,0,1958,1959,1,0,0,0,1959, + 1960,1,0,0,0,1960,1962,3,818,409,0,1961,1963,3,96,48,0,1962,1961, + 1,0,0,0,1962,1963,1,0,0,0,1963,1980,1,0,0,0,1964,1965,5,138,0,0, + 1965,1966,5,143,0,0,1966,1969,3,818,409,0,1967,1968,5,333,0,0,1968, + 1970,5,174,0,0,1969,1967,1,0,0,0,1969,1970,1,0,0,0,1970,1971,1,0, + 0,0,1971,1972,5,360,0,0,1972,1974,3,652,326,0,1973,1975,3,98,49, + 0,1974,1973,1,0,0,0,1974,1975,1,0,0,0,1975,1977,1,0,0,0,1976,1978, + 3,96,48,0,1977,1976,1,0,0,0,1977,1978,1,0,0,0,1978,1980,1,0,0,0, + 1979,1949,1,0,0,0,1979,1955,1,0,0,0,1979,1964,1,0,0,0,1980,111,1, + 0,0,0,1981,1984,5,157,0,0,1982,1985,3,818,409,0,1983,1985,5,30,0, + 0,1984,1982,1,0,0,0,1984,1983,1,0,0,0,1985,113,1,0,0,0,1986,1988, + 5,169,0,0,1987,1989,5,107,0,0,1988,1987,1,0,0,0,1988,1989,1,0,0, + 0,1989,1990,1,0,0,0,1990,1992,3,774,387,0,1991,1993,3,144,72,0,1992, + 1991,1,0,0,0,1992,1993,1,0,0,0,1993,1994,1,0,0,0,1994,1996,7,18, + 0,0,1995,1997,5,297,0,0,1996,1995,1,0,0,0,1996,1997,1,0,0,0,1997, + 2001,1,0,0,0,1998,2002,3,808,404,0,1999,2002,5,343,0,0,2000,2002, + 5,344,0,0,2001,1998,1,0,0,0,2001,1999,1,0,0,0,2001,2000,1,0,0,0, + 2002,2008,1,0,0,0,2003,2005,5,100,0,0,2004,2003,1,0,0,0,2004,2005, + 1,0,0,0,2005,2006,1,0,0,0,2006,2007,5,184,0,0,2007,2009,3,808,404, + 0,2008,2004,1,0,0,0,2008,2009,1,0,0,0,2009,2011,1,0,0,0,2010,2012, + 5,105,0,0,2011,2010,1,0,0,0,2011,2012,1,0,0,0,2012,2013,1,0,0,0, + 2013,2015,3,116,58,0,2014,2016,3,638,319,0,2015,2014,1,0,0,0,2015, + 2016,1,0,0,0,2016,2036,1,0,0,0,2017,2018,5,169,0,0,2018,2019,5,2, + 0,0,2019,2020,3,530,265,0,2020,2021,5,3,0,0,2021,2023,5,94,0,0,2022, + 2024,5,297,0,0,2023,2022,1,0,0,0,2023,2024,1,0,0,0,2024,2028,1,0, + 0,0,2025,2029,3,808,404,0,2026,2029,5,343,0,0,2027,2029,5,344,0, + 0,2028,2025,1,0,0,0,2028,2026,1,0,0,0,2028,2027,1,0,0,0,2029,2031, + 1,0,0,0,2030,2032,5,105,0,0,2031,2030,1,0,0,0,2031,2032,1,0,0,0, + 2032,2033,1,0,0,0,2033,2034,3,116,58,0,2034,2036,1,0,0,0,2035,1986, + 1,0,0,0,2035,2017,1,0,0,0,2036,115,1,0,0,0,2037,2061,5,107,0,0,2038, + 2061,5,112,0,0,2039,2041,7,19,0,0,2040,2042,5,36,0,0,2041,2040,1, + 0,0,0,2041,2042,1,0,0,0,2042,2043,1,0,0,0,2043,2061,3,808,404,0, + 2044,2061,5,171,0,0,2045,2061,5,216,0,0,2046,2047,5,209,0,0,2047, + 2050,5,298,0,0,2048,2051,3,148,74,0,2049,2051,5,9,0,0,2050,2048, + 1,0,0,0,2050,2049,1,0,0,0,2051,2061,1,0,0,0,2052,2054,5,209,0,0, + 2053,2055,5,77,0,0,2054,2053,1,0,0,0,2054,2055,1,0,0,0,2055,2056, + 1,0,0,0,2056,2057,5,78,0,0,2057,2061,3,148,74,0,2058,2059,5,194, + 0,0,2059,2061,3,808,404,0,2060,2037,1,0,0,0,2060,2038,1,0,0,0,2060, + 2039,1,0,0,0,2060,2044,1,0,0,0,2060,2045,1,0,0,0,2060,2046,1,0,0, + 0,2060,2052,1,0,0,0,2060,2058,1,0,0,0,2061,2064,1,0,0,0,2062,2060, + 1,0,0,0,2062,2063,1,0,0,0,2063,2077,1,0,0,0,2064,2062,1,0,0,0,2065, + 2066,5,2,0,0,2066,2071,3,118,59,0,2067,2068,5,6,0,0,2068,2070,3, + 118,59,0,2069,2067,1,0,0,0,2070,2073,1,0,0,0,2071,2069,1,0,0,0,2071, + 2072,1,0,0,0,2072,2074,1,0,0,0,2073,2071,1,0,0,0,2074,2075,5,3,0, + 0,2075,2077,1,0,0,0,2076,2062,1,0,0,0,2076,2065,1,0,0,0,2077,117, + 1,0,0,0,2078,2093,3,824,412,0,2079,2094,3,54,27,0,2080,2094,3,202, + 101,0,2081,2094,5,9,0,0,2082,2083,5,2,0,0,2083,2088,3,52,26,0,2084, + 2085,5,6,0,0,2085,2087,3,52,26,0,2086,2084,1,0,0,0,2087,2090,1,0, + 0,0,2088,2086,1,0,0,0,2088,2089,1,0,0,0,2089,2091,1,0,0,0,2090,2088, + 1,0,0,0,2091,2092,5,3,0,0,2092,2094,1,0,0,0,2093,2079,1,0,0,0,2093, + 2080,1,0,0,0,2093,2081,1,0,0,0,2093,2082,1,0,0,0,2093,2094,1,0,0, + 0,2094,119,1,0,0,0,2095,2097,5,46,0,0,2096,2098,3,122,61,0,2097, + 2096,1,0,0,0,2097,2098,1,0,0,0,2098,2099,1,0,0,0,2099,2101,5,92, + 0,0,2100,2102,3,294,147,0,2101,2100,1,0,0,0,2101,2102,1,0,0,0,2102, + 2103,1,0,0,0,2103,2169,3,772,386,0,2104,2106,5,2,0,0,2105,2107,3, + 126,63,0,2106,2105,1,0,0,0,2106,2107,1,0,0,0,2107,2108,1,0,0,0,2108, + 2110,5,3,0,0,2109,2111,3,164,82,0,2110,2109,1,0,0,0,2110,2111,1, + 0,0,0,2111,2113,1,0,0,0,2112,2114,3,166,83,0,2113,2112,1,0,0,0,2113, + 2114,1,0,0,0,2114,2116,1,0,0,0,2115,2117,3,170,85,0,2116,2115,1, + 0,0,0,2116,2117,1,0,0,0,2117,2119,1,0,0,0,2118,2120,3,172,86,0,2119, + 2118,1,0,0,0,2119,2120,1,0,0,0,2120,2122,1,0,0,0,2121,2123,3,174, + 87,0,2122,2121,1,0,0,0,2122,2123,1,0,0,0,2123,2125,1,0,0,0,2124, + 2126,3,176,88,0,2125,2124,1,0,0,0,2125,2126,1,0,0,0,2126,2170,1, + 0,0,0,2127,2128,5,275,0,0,2128,2130,3,316,158,0,2129,2131,3,124, + 62,0,2130,2129,1,0,0,0,2130,2131,1,0,0,0,2131,2133,1,0,0,0,2132, + 2134,3,166,83,0,2133,2132,1,0,0,0,2133,2134,1,0,0,0,2134,2136,1, + 0,0,0,2135,2137,3,170,85,0,2136,2135,1,0,0,0,2136,2137,1,0,0,0,2137, + 2139,1,0,0,0,2138,2140,3,172,86,0,2139,2138,1,0,0,0,2139,2140,1, + 0,0,0,2140,2142,1,0,0,0,2141,2143,3,174,87,0,2142,2141,1,0,0,0,2142, + 2143,1,0,0,0,2143,2145,1,0,0,0,2144,2146,3,176,88,0,2145,2144,1, + 0,0,0,2145,2146,1,0,0,0,2146,2170,1,0,0,0,2147,2148,5,285,0,0,2148, + 2149,5,275,0,0,2149,2151,3,780,390,0,2150,2152,3,124,62,0,2151,2150, + 1,0,0,0,2151,2152,1,0,0,0,2152,2153,1,0,0,0,2153,2155,3,106,53,0, + 2154,2156,3,166,83,0,2155,2154,1,0,0,0,2155,2156,1,0,0,0,2156,2158, + 1,0,0,0,2157,2159,3,170,85,0,2158,2157,1,0,0,0,2158,2159,1,0,0,0, + 2159,2161,1,0,0,0,2160,2162,3,172,86,0,2161,2160,1,0,0,0,2161,2162, + 1,0,0,0,2162,2164,1,0,0,0,2163,2165,3,174,87,0,2164,2163,1,0,0,0, + 2164,2165,1,0,0,0,2165,2167,1,0,0,0,2166,2168,3,176,88,0,2167,2166, + 1,0,0,0,2167,2168,1,0,0,0,2168,2170,1,0,0,0,2169,2104,1,0,0,0,2169, + 2127,1,0,0,0,2169,2147,1,0,0,0,2170,121,1,0,0,0,2171,2177,5,354, + 0,0,2172,2177,5,352,0,0,2173,2174,7,20,0,0,2174,2177,7,21,0,0,2175, + 2177,5,367,0,0,2176,2171,1,0,0,0,2176,2172,1,0,0,0,2176,2173,1,0, + 0,0,2176,2175,1,0,0,0,2177,123,1,0,0,0,2178,2179,5,2,0,0,2179,2184, + 3,130,65,0,2180,2181,5,6,0,0,2181,2183,3,130,65,0,2182,2180,1,0, + 0,0,2183,2186,1,0,0,0,2184,2182,1,0,0,0,2184,2185,1,0,0,0,2185,2187, + 1,0,0,0,2186,2184,1,0,0,0,2187,2188,5,3,0,0,2188,125,1,0,0,0,2189, + 2194,3,128,64,0,2190,2191,5,6,0,0,2191,2193,3,128,64,0,2192,2190, + 1,0,0,0,2193,2196,1,0,0,0,2194,2192,1,0,0,0,2194,2195,1,0,0,0,2195, + 127,1,0,0,0,2196,2194,1,0,0,0,2197,2198,5,45,0,0,2198,2200,3,818, + 409,0,2199,2197,1,0,0,0,2199,2200,1,0,0,0,2200,2201,1,0,0,0,2201, + 2213,3,142,71,0,2202,2213,3,132,66,0,2203,2204,5,120,0,0,2204,2209, + 3,780,390,0,2205,2206,7,22,0,0,2206,2208,3,140,70,0,2207,2205,1, + 0,0,0,2208,2211,1,0,0,0,2209,2207,1,0,0,0,2209,2210,1,0,0,0,2210, + 2213,1,0,0,0,2211,2209,1,0,0,0,2212,2199,1,0,0,0,2212,2202,1,0,0, + 0,2212,2203,1,0,0,0,2213,129,1,0,0,0,2214,2217,3,802,401,0,2215, + 2216,5,105,0,0,2216,2218,5,280,0,0,2217,2215,1,0,0,0,2217,2218,1, + 0,0,0,2218,2222,1,0,0,0,2219,2221,3,134,67,0,2220,2219,1,0,0,0,2221, + 2224,1,0,0,0,2222,2220,1,0,0,0,2222,2223,1,0,0,0,2223,2231,1,0,0, + 0,2224,2222,1,0,0,0,2225,2226,5,45,0,0,2226,2228,3,818,409,0,2227, + 2225,1,0,0,0,2227,2228,1,0,0,0,2228,2229,1,0,0,0,2229,2231,3,142, + 71,0,2230,2214,1,0,0,0,2230,2227,1,0,0,0,2231,131,1,0,0,0,2232,2233, + 3,802,401,0,2233,2235,3,652,326,0,2234,2236,3,220,110,0,2235,2234, + 1,0,0,0,2235,2236,1,0,0,0,2236,2246,1,0,0,0,2237,2244,5,345,0,0, + 2238,2245,5,544,0,0,2239,2245,5,205,0,0,2240,2245,5,545,0,0,2241, + 2245,5,546,0,0,2242,2245,5,53,0,0,2243,2245,3,818,409,0,2244,2238, + 1,0,0,0,2244,2239,1,0,0,0,2244,2240,1,0,0,0,2244,2241,1,0,0,0,2244, + 2242,1,0,0,0,2244,2243,1,0,0,0,2245,2247,1,0,0,0,2246,2237,1,0,0, + 0,2246,2247,1,0,0,0,2247,2250,1,0,0,0,2248,2249,5,543,0,0,2249,2251, + 3,818,409,0,2250,2248,1,0,0,0,2250,2251,1,0,0,0,2251,2253,1,0,0, + 0,2252,2254,3,98,49,0,2253,2252,1,0,0,0,2253,2254,1,0,0,0,2254,2257, + 1,0,0,0,2255,2256,5,105,0,0,2256,2258,5,280,0,0,2257,2255,1,0,0, + 0,2257,2258,1,0,0,0,2258,2262,1,0,0,0,2259,2261,3,134,67,0,2260, + 2259,1,0,0,0,2261,2264,1,0,0,0,2262,2260,1,0,0,0,2262,2263,1,0,0, + 0,2263,133,1,0,0,0,2264,2262,1,0,0,0,2265,2266,5,45,0,0,2266,2268, + 3,818,409,0,2267,2265,1,0,0,0,2267,2268,1,0,0,0,2268,2269,1,0,0, + 0,2269,2274,3,136,68,0,2270,2272,5,77,0,0,2271,2270,1,0,0,0,2271, + 2272,1,0,0,0,2272,2273,1,0,0,0,2273,2275,5,54,0,0,2274,2271,1,0, + 0,0,2274,2275,1,0,0,0,2275,2278,1,0,0,0,2276,2277,5,69,0,0,2277, + 2279,7,9,0,0,2278,2276,1,0,0,0,2278,2279,1,0,0,0,2279,135,1,0,0, + 0,2280,2282,5,77,0,0,2281,2280,1,0,0,0,2281,2282,1,0,0,0,2282,2283, + 1,0,0,0,2283,2361,5,78,0,0,2284,2286,5,98,0,0,2285,2287,3,400,200, + 0,2286,2285,1,0,0,0,2286,2287,1,0,0,0,2287,2289,1,0,0,0,2288,2290, + 3,178,89,0,2289,2288,1,0,0,0,2289,2290,1,0,0,0,2290,2361,1,0,0,0, + 2291,2297,5,98,0,0,2292,2294,5,273,0,0,2293,2295,5,77,0,0,2294,2293, + 1,0,0,0,2294,2295,1,0,0,0,2295,2296,1,0,0,0,2296,2298,5,56,0,0,2297, + 2292,1,0,0,0,2297,2298,1,0,0,0,2298,2301,1,0,0,0,2299,2300,5,441, + 0,0,2300,2302,3,360,180,0,2301,2299,1,0,0,0,2301,2302,1,0,0,0,2302, + 2304,1,0,0,0,2303,2305,3,572,286,0,2304,2303,1,0,0,0,2304,2305,1, + 0,0,0,2305,2307,1,0,0,0,2306,2308,3,178,89,0,2307,2306,1,0,0,0,2307, + 2308,1,0,0,0,2308,2361,1,0,0,0,2309,2310,5,85,0,0,2310,2312,5,245, + 0,0,2311,2313,3,400,200,0,2312,2311,1,0,0,0,2312,2313,1,0,0,0,2313, + 2315,1,0,0,0,2314,2316,3,178,89,0,2315,2314,1,0,0,0,2315,2316,1, + 0,0,0,2316,2361,1,0,0,0,2317,2318,5,42,0,0,2318,2319,5,2,0,0,2319, + 2320,3,674,337,0,2320,2323,5,3,0,0,2321,2322,5,269,0,0,2322,2324, + 5,228,0,0,2323,2321,1,0,0,0,2323,2324,1,0,0,0,2324,2361,1,0,0,0, + 2325,2326,5,53,0,0,2326,2361,3,682,341,0,2327,2328,5,438,0,0,2328, + 2329,3,138,69,0,2329,2346,5,36,0,0,2330,2339,5,219,0,0,2331,2333, + 5,2,0,0,2332,2334,3,200,100,0,2333,2332,1,0,0,0,2334,2335,1,0,0, + 0,2335,2333,1,0,0,0,2335,2336,1,0,0,0,2336,2337,1,0,0,0,2337,2338, + 5,3,0,0,2338,2340,1,0,0,0,2339,2331,1,0,0,0,2339,2340,1,0,0,0,2340, + 2347,1,0,0,0,2341,2342,5,2,0,0,2342,2343,3,674,337,0,2343,2344,5, + 3,0,0,2344,2345,5,440,0,0,2345,2347,1,0,0,0,2346,2330,1,0,0,0,2346, + 2341,1,0,0,0,2347,2361,1,0,0,0,2348,2349,5,86,0,0,2349,2351,3,780, + 390,0,2350,2352,3,144,72,0,2351,2350,1,0,0,0,2351,2352,1,0,0,0,2352, + 2354,1,0,0,0,2353,2355,3,152,76,0,2354,2353,1,0,0,0,2354,2355,1, + 0,0,0,2355,2357,1,0,0,0,2356,2358,3,156,78,0,2357,2356,1,0,0,0,2357, + 2358,1,0,0,0,2358,2361,1,0,0,0,2359,2361,3,98,49,0,2360,2281,1,0, + 0,0,2360,2284,1,0,0,0,2360,2291,1,0,0,0,2360,2309,1,0,0,0,2360,2317, + 1,0,0,0,2360,2325,1,0,0,0,2360,2327,1,0,0,0,2360,2348,1,0,0,0,2360, + 2359,1,0,0,0,2361,137,1,0,0,0,2362,2366,5,139,0,0,2363,2364,5,147, + 0,0,2364,2366,5,53,0,0,2365,2362,1,0,0,0,2365,2363,1,0,0,0,2366, + 139,1,0,0,0,2367,2368,7,23,0,0,2368,141,1,0,0,0,2369,2370,5,42,0, + 0,2370,2371,5,2,0,0,2371,2372,3,674,337,0,2372,2376,5,3,0,0,2373, + 2375,3,272,136,0,2374,2373,1,0,0,0,2375,2378,1,0,0,0,2376,2374,1, + 0,0,0,2376,2377,1,0,0,0,2377,2466,1,0,0,0,2378,2376,1,0,0,0,2379, + 2383,5,98,0,0,2380,2381,5,85,0,0,2381,2383,5,245,0,0,2382,2379,1, + 0,0,0,2382,2380,1,0,0,0,2383,2407,1,0,0,0,2384,2386,3,144,72,0,2385, + 2387,3,150,75,0,2386,2385,1,0,0,0,2386,2387,1,0,0,0,2387,2389,1, + 0,0,0,2388,2390,3,400,200,0,2389,2388,1,0,0,0,2389,2390,1,0,0,0, + 2390,2392,1,0,0,0,2391,2393,3,178,89,0,2392,2391,1,0,0,0,2392,2393, + 1,0,0,0,2393,2397,1,0,0,0,2394,2396,3,272,136,0,2395,2394,1,0,0, + 0,2396,2399,1,0,0,0,2397,2395,1,0,0,0,2397,2398,1,0,0,0,2398,2408, + 1,0,0,0,2399,2397,1,0,0,0,2400,2404,3,180,90,0,2401,2403,3,272,136, + 0,2402,2401,1,0,0,0,2403,2406,1,0,0,0,2404,2402,1,0,0,0,2404,2405, + 1,0,0,0,2405,2408,1,0,0,0,2406,2404,1,0,0,0,2407,2384,1,0,0,0,2407, + 2400,1,0,0,0,2408,2466,1,0,0,0,2409,2411,5,199,0,0,2410,2412,3,170, + 85,0,2411,2410,1,0,0,0,2411,2412,1,0,0,0,2412,2413,1,0,0,0,2413, + 2414,5,2,0,0,2414,2419,3,154,77,0,2415,2416,5,6,0,0,2416,2418,3, + 154,77,0,2417,2415,1,0,0,0,2418,2421,1,0,0,0,2419,2417,1,0,0,0,2419, + 2420,1,0,0,0,2420,2422,1,0,0,0,2421,2419,1,0,0,0,2422,2424,5,3,0, + 0,2423,2425,3,150,75,0,2424,2423,1,0,0,0,2424,2425,1,0,0,0,2425, + 2427,1,0,0,0,2426,2428,3,400,200,0,2427,2426,1,0,0,0,2427,2428,1, + 0,0,0,2428,2430,1,0,0,0,2429,2431,3,178,89,0,2430,2429,1,0,0,0,2430, + 2431,1,0,0,0,2431,2437,1,0,0,0,2432,2433,5,103,0,0,2433,2434,5,2, + 0,0,2434,2435,3,674,337,0,2435,2436,5,3,0,0,2436,2438,1,0,0,0,2437, + 2432,1,0,0,0,2437,2438,1,0,0,0,2438,2442,1,0,0,0,2439,2441,3,272, + 136,0,2440,2439,1,0,0,0,2441,2444,1,0,0,0,2442,2440,1,0,0,0,2442, + 2443,1,0,0,0,2443,2466,1,0,0,0,2444,2442,1,0,0,0,2445,2446,5,63, + 0,0,2446,2447,5,245,0,0,2447,2448,3,144,72,0,2448,2449,5,86,0,0, + 2449,2451,3,780,390,0,2450,2452,3,144,72,0,2451,2450,1,0,0,0,2451, + 2452,1,0,0,0,2452,2454,1,0,0,0,2453,2455,3,152,76,0,2454,2453,1, + 0,0,0,2454,2455,1,0,0,0,2455,2457,1,0,0,0,2456,2458,3,156,78,0,2457, + 2456,1,0,0,0,2457,2458,1,0,0,0,2458,2462,1,0,0,0,2459,2461,3,272, + 136,0,2460,2459,1,0,0,0,2461,2464,1,0,0,0,2462,2460,1,0,0,0,2462, + 2463,1,0,0,0,2463,2466,1,0,0,0,2464,2462,1,0,0,0,2465,2369,1,0,0, + 0,2465,2382,1,0,0,0,2465,2409,1,0,0,0,2465,2445,1,0,0,0,2466,143, + 1,0,0,0,2467,2468,5,2,0,0,2468,2469,3,148,74,0,2469,2470,5,3,0,0, + 2470,145,1,0,0,0,2471,2472,5,2,0,0,2472,2477,3,802,401,0,2473,2474, + 5,6,0,0,2474,2476,3,802,401,0,2475,2473,1,0,0,0,2476,2479,1,0,0, + 0,2477,2475,1,0,0,0,2477,2478,1,0,0,0,2478,2480,1,0,0,0,2479,2477, + 1,0,0,0,2480,2481,5,3,0,0,2481,147,1,0,0,0,2482,2487,3,800,400,0, + 2483,2484,5,6,0,0,2484,2486,3,800,400,0,2485,2483,1,0,0,0,2486,2489, + 1,0,0,0,2487,2485,1,0,0,0,2487,2488,1,0,0,0,2488,149,1,0,0,0,2489, + 2487,1,0,0,0,2490,2491,5,441,0,0,2491,2492,3,144,72,0,2492,151,1, + 0,0,0,2493,2494,5,258,0,0,2494,2495,7,24,0,0,2495,153,1,0,0,0,2496, + 2497,3,362,181,0,2497,2504,5,105,0,0,2498,2505,3,414,207,0,2499, + 2500,5,278,0,0,2500,2501,5,2,0,0,2501,2502,3,414,207,0,2502,2503, + 5,3,0,0,2503,2505,1,0,0,0,2504,2498,1,0,0,0,2504,2499,1,0,0,0,2505, + 155,1,0,0,0,2506,2508,3,158,79,0,2507,2509,3,160,80,0,2508,2507, + 1,0,0,0,2508,2509,1,0,0,0,2509,2515,1,0,0,0,2510,2512,3,160,80,0, + 2511,2513,3,158,79,0,2512,2511,1,0,0,0,2512,2513,1,0,0,0,2513,2515, + 1,0,0,0,2514,2506,1,0,0,0,2514,2510,1,0,0,0,2515,157,1,0,0,0,2516, + 2517,5,80,0,0,2517,2518,5,369,0,0,2518,2519,3,162,81,0,2519,159, + 1,0,0,0,2520,2521,5,80,0,0,2521,2522,5,182,0,0,2522,2523,3,162,81, + 0,2523,161,1,0,0,0,2524,2525,5,269,0,0,2525,2534,5,132,0,0,2526, + 2534,5,315,0,0,2527,2534,5,150,0,0,2528,2529,5,333,0,0,2529,2531, + 7,25,0,0,2530,2532,3,148,74,0,2531,2530,1,0,0,0,2531,2532,1,0,0, + 0,2532,2534,1,0,0,0,2533,2524,1,0,0,0,2533,2526,1,0,0,0,2533,2527, + 1,0,0,0,2533,2528,1,0,0,0,2534,163,1,0,0,0,2535,2536,5,238,0,0,2536, + 2537,5,2,0,0,2537,2538,3,760,380,0,2538,2539,5,3,0,0,2539,165,1, + 0,0,0,2540,2541,5,285,0,0,2541,2542,5,147,0,0,2542,2543,3,818,409, + 0,2543,2544,5,2,0,0,2544,2549,3,168,84,0,2545,2546,5,6,0,0,2546, + 2548,3,168,84,0,2547,2545,1,0,0,0,2548,2551,1,0,0,0,2549,2547,1, + 0,0,0,2549,2550,1,0,0,0,2550,2552,1,0,0,0,2551,2549,1,0,0,0,2552, + 2553,5,3,0,0,2553,167,1,0,0,0,2554,2561,3,800,400,0,2555,2561,3, + 688,344,0,2556,2557,5,2,0,0,2557,2558,3,674,337,0,2558,2559,5,3, + 0,0,2559,2561,1,0,0,0,2560,2554,1,0,0,0,2560,2555,1,0,0,0,2560,2556, + 1,0,0,0,2561,2563,1,0,0,0,2562,2564,3,98,49,0,2563,2562,1,0,0,0, + 2563,2564,1,0,0,0,2564,2566,1,0,0,0,2565,2567,3,316,158,0,2566,2565, + 1,0,0,0,2566,2567,1,0,0,0,2567,169,1,0,0,0,2568,2569,5,100,0,0,2569, + 2570,3,818,409,0,2570,171,1,0,0,0,2571,2572,5,105,0,0,2572,2576, + 3,100,50,0,2573,2574,7,26,0,0,2574,2576,5,277,0,0,2575,2571,1,0, + 0,0,2575,2573,1,0,0,0,2576,173,1,0,0,0,2577,2578,5,80,0,0,2578,2584, + 5,161,0,0,2579,2585,5,191,0,0,2580,2581,5,182,0,0,2581,2585,5,320, + 0,0,2582,2583,5,292,0,0,2583,2585,5,320,0,0,2584,2579,1,0,0,0,2584, + 2580,1,0,0,0,2584,2582,1,0,0,0,2585,175,1,0,0,0,2586,2587,5,351, + 0,0,2587,2588,3,770,385,0,2588,177,1,0,0,0,2589,2590,5,100,0,0,2590, + 2591,5,226,0,0,2591,2592,3,176,88,0,2592,179,1,0,0,0,2593,2594,5, + 100,0,0,2594,2595,5,226,0,0,2595,2596,3,818,409,0,2596,181,1,0,0, + 0,2597,2598,5,46,0,0,2598,2603,5,342,0,0,2599,2601,3,294,147,0,2600, + 2599,1,0,0,0,2600,2601,1,0,0,0,2601,2602,1,0,0,0,2602,2604,3,316, + 158,0,2603,2600,1,0,0,0,2603,2604,1,0,0,0,2604,2606,1,0,0,0,2605, + 2607,3,144,72,0,2606,2605,1,0,0,0,2606,2607,1,0,0,0,2607,2608,1, + 0,0,0,2608,2618,5,80,0,0,2609,2614,3,732,366,0,2610,2611,5,6,0,0, + 2611,2613,3,732,366,0,2612,2610,1,0,0,0,2613,2616,1,0,0,0,2614,2612, + 1,0,0,0,2614,2615,1,0,0,0,2615,2619,1,0,0,0,2616,2614,1,0,0,0,2617, + 2619,3,730,365,0,2618,2609,1,0,0,0,2618,2617,1,0,0,0,2619,2620,1, + 0,0,0,2620,2621,3,610,305,0,2621,183,1,0,0,0,2622,2623,5,138,0,0, + 2623,2625,5,342,0,0,2624,2626,3,422,211,0,2625,2624,1,0,0,0,2625, + 2626,1,0,0,0,2626,2627,1,0,0,0,2627,2628,3,316,158,0,2628,2629,5, + 333,0,0,2629,2630,5,342,0,0,2630,2631,3,812,406,0,2631,185,1,0,0, + 0,2632,2634,5,46,0,0,2633,2635,3,122,61,0,2634,2633,1,0,0,0,2634, + 2635,1,0,0,0,2635,2636,1,0,0,0,2636,2638,5,92,0,0,2637,2639,3,294, + 147,0,2638,2637,1,0,0,0,2638,2639,1,0,0,0,2639,2640,1,0,0,0,2640, + 2641,3,188,94,0,2641,2642,5,36,0,0,2642,2644,3,560,280,0,2643,2645, + 3,190,95,0,2644,2643,1,0,0,0,2644,2645,1,0,0,0,2645,187,1,0,0,0, + 2646,2648,3,772,386,0,2647,2649,3,146,73,0,2648,2647,1,0,0,0,2648, + 2649,1,0,0,0,2649,2651,1,0,0,0,2650,2652,3,170,85,0,2651,2650,1, + 0,0,0,2651,2652,1,0,0,0,2652,2654,1,0,0,0,2653,2655,3,172,86,0,2654, + 2653,1,0,0,0,2654,2655,1,0,0,0,2655,2657,1,0,0,0,2656,2658,3,174, + 87,0,2657,2656,1,0,0,0,2657,2658,1,0,0,0,2658,2660,1,0,0,0,2659, + 2661,3,176,88,0,2660,2659,1,0,0,0,2660,2661,1,0,0,0,2661,189,1,0, + 0,0,2662,2666,5,105,0,0,2663,2667,5,174,0,0,2664,2665,5,269,0,0, + 2665,2667,5,174,0,0,2666,2663,1,0,0,0,2666,2664,1,0,0,0,2667,191, + 1,0,0,0,2668,2670,5,46,0,0,2669,2671,5,367,0,0,2670,2669,1,0,0,0, + 2670,2671,1,0,0,0,2671,2672,1,0,0,0,2672,2673,5,259,0,0,2673,2675, + 5,376,0,0,2674,2676,3,294,147,0,2675,2674,1,0,0,0,2675,2676,1,0, + 0,0,2676,2677,1,0,0,0,2677,2679,3,776,388,0,2678,2680,3,146,73,0, + 2679,2678,1,0,0,0,2679,2680,1,0,0,0,2680,2682,1,0,0,0,2681,2683, + 3,170,85,0,2682,2681,1,0,0,0,2682,2683,1,0,0,0,2683,2685,1,0,0,0, + 2684,2686,3,102,51,0,2685,2684,1,0,0,0,2685,2686,1,0,0,0,2686,2688, + 1,0,0,0,2687,2689,3,176,88,0,2688,2687,1,0,0,0,2688,2689,1,0,0,0, + 2689,2690,1,0,0,0,2690,2691,5,36,0,0,2691,2693,3,560,280,0,2692, + 2694,3,190,95,0,2693,2692,1,0,0,0,2693,2694,1,0,0,0,2694,193,1,0, + 0,0,2695,2696,5,305,0,0,2696,2697,5,259,0,0,2697,2699,5,376,0,0, + 2698,2700,5,109,0,0,2699,2698,1,0,0,0,2699,2700,1,0,0,0,2700,2701, + 1,0,0,0,2701,2703,3,778,389,0,2702,2704,3,190,95,0,2703,2702,1,0, + 0,0,2703,2704,1,0,0,0,2704,195,1,0,0,0,2705,2707,5,46,0,0,2706,2708, + 3,122,61,0,2707,2706,1,0,0,0,2707,2708,1,0,0,0,2708,2709,1,0,0,0, + 2709,2711,5,328,0,0,2710,2712,3,294,147,0,2711,2710,1,0,0,0,2711, + 2712,1,0,0,0,2712,2713,1,0,0,0,2713,2719,3,780,390,0,2714,2716,3, + 200,100,0,2715,2714,1,0,0,0,2716,2717,1,0,0,0,2717,2715,1,0,0,0, + 2717,2718,1,0,0,0,2718,2720,1,0,0,0,2719,2715,1,0,0,0,2719,2720, + 1,0,0,0,2720,197,1,0,0,0,2721,2722,5,138,0,0,2722,2724,5,328,0,0, + 2723,2725,3,422,211,0,2724,2723,1,0,0,0,2724,2725,1,0,0,0,2725,2726, + 1,0,0,0,2726,2728,3,780,390,0,2727,2729,3,200,100,0,2728,2727,1, + 0,0,0,2729,2730,1,0,0,0,2730,2728,1,0,0,0,2730,2731,1,0,0,0,2731, + 199,1,0,0,0,2732,2733,5,36,0,0,2733,2766,3,654,327,0,2734,2736,5, + 148,0,0,2735,2737,3,202,101,0,2736,2735,1,0,0,0,2736,2737,1,0,0, + 0,2737,2766,1,0,0,0,2738,2740,5,225,0,0,2739,2741,5,147,0,0,2740, + 2739,1,0,0,0,2740,2741,1,0,0,0,2741,2742,1,0,0,0,2742,2766,3,202, + 101,0,2743,2744,7,27,0,0,2744,2766,3,202,101,0,2745,2746,5,269,0, + 0,2746,2766,7,28,0,0,2747,2748,5,281,0,0,2748,2749,5,147,0,0,2749, + 2766,3,800,400,0,2750,2751,5,328,0,0,2751,2752,5,266,0,0,2752,2766, + 3,316,158,0,2753,2755,5,340,0,0,2754,2756,5,105,0,0,2755,2754,1, + 0,0,0,2755,2756,1,0,0,0,2756,2757,1,0,0,0,2757,2766,3,202,101,0, + 2758,2760,5,314,0,0,2759,2761,5,105,0,0,2760,2759,1,0,0,0,2760,2761, + 1,0,0,0,2761,2763,1,0,0,0,2762,2764,3,202,101,0,2763,2762,1,0,0, + 0,2763,2764,1,0,0,0,2764,2766,1,0,0,0,2765,2732,1,0,0,0,2765,2734, + 1,0,0,0,2765,2738,1,0,0,0,2765,2743,1,0,0,0,2765,2745,1,0,0,0,2765, + 2747,1,0,0,0,2765,2750,1,0,0,0,2765,2753,1,0,0,0,2765,2758,1,0,0, + 0,2766,201,1,0,0,0,2767,2769,7,29,0,0,2768,2767,1,0,0,0,2768,2769, + 1,0,0,0,2769,2770,1,0,0,0,2770,2773,5,573,0,0,2771,2773,3,812,406, + 0,2772,2768,1,0,0,0,2772,2771,1,0,0,0,2773,203,1,0,0,0,2774,2776, + 5,46,0,0,2775,2777,3,366,183,0,2776,2775,1,0,0,0,2776,2777,1,0,0, + 0,2777,2779,1,0,0,0,2778,2780,5,359,0,0,2779,2778,1,0,0,0,2779,2780, + 1,0,0,0,2780,2782,1,0,0,0,2781,2783,5,295,0,0,2782,2781,1,0,0,0, + 2782,2783,1,0,0,0,2783,2784,1,0,0,0,2784,2785,5,247,0,0,2785,2798, + 3,818,409,0,2786,2787,5,215,0,0,2787,2790,3,316,158,0,2788,2789, + 5,239,0,0,2789,2791,3,316,158,0,2790,2788,1,0,0,0,2790,2791,1,0, + 0,0,2791,2796,1,0,0,0,2792,2793,5,373,0,0,2793,2797,3,316,158,0, + 2794,2795,5,269,0,0,2795,2797,5,373,0,0,2796,2792,1,0,0,0,2796,2794, + 1,0,0,0,2796,2797,1,0,0,0,2797,2799,1,0,0,0,2798,2786,1,0,0,0,2798, + 2799,1,0,0,0,2799,205,1,0,0,0,2800,2801,5,46,0,0,2801,2804,3,176, + 88,0,2802,2803,5,282,0,0,2803,2805,3,814,407,0,2804,2802,1,0,0,0, + 2804,2805,1,0,0,0,2805,2806,1,0,0,0,2806,2807,5,255,0,0,2807,2809, + 3,808,404,0,2808,2810,3,102,51,0,2809,2808,1,0,0,0,2809,2810,1,0, + 0,0,2810,207,1,0,0,0,2811,2812,5,46,0,0,2812,2814,5,204,0,0,2813, + 2815,3,294,147,0,2814,2813,1,0,0,0,2814,2815,1,0,0,0,2815,2816,1, + 0,0,0,2816,2818,3,818,409,0,2817,2819,5,105,0,0,2818,2817,1,0,0, + 0,2818,2819,1,0,0,0,2819,2827,1,0,0,0,2820,2821,5,323,0,0,2821,2826, + 3,790,395,0,2822,2823,7,30,0,0,2823,2826,3,58,29,0,2824,2826,5,150, + 0,0,2825,2820,1,0,0,0,2825,2822,1,0,0,0,2825,2824,1,0,0,0,2826,2829, + 1,0,0,0,2827,2825,1,0,0,0,2827,2828,1,0,0,0,2828,209,1,0,0,0,2829, + 2827,1,0,0,0,2830,2831,5,138,0,0,2831,2832,5,204,0,0,2832,2833,3, + 818,409,0,2833,2838,5,369,0,0,2834,2835,5,94,0,0,2835,2837,3,58, + 29,0,2836,2834,1,0,0,0,2837,2840,1,0,0,0,2838,2836,1,0,0,0,2838, + 2839,1,0,0,0,2839,211,1,0,0,0,2840,2838,1,0,0,0,2841,2842,5,138, + 0,0,2842,2843,5,204,0,0,2843,2844,3,818,409,0,2844,2877,7,6,0,0, + 2845,2846,5,443,0,0,2846,2847,5,62,0,0,2847,2848,3,652,326,0,2848, + 2849,5,247,0,0,2849,2850,3,818,409,0,2850,2878,1,0,0,0,2851,2852, + 5,442,0,0,2852,2878,3,374,187,0,2853,2854,5,296,0,0,2854,2878,3, + 378,189,0,2855,2856,5,278,0,0,2856,2857,7,31,0,0,2857,2858,3,316, + 158,0,2858,2859,3,170,85,0,2859,2878,1,0,0,0,2860,2861,5,278,0,0, + 2861,2878,3,416,208,0,2862,2863,5,211,0,0,2863,2878,3,382,191,0, + 2864,2865,7,32,0,0,2865,2878,3,652,326,0,2866,2867,5,41,0,0,2867, + 2868,5,2,0,0,2868,2869,3,652,326,0,2869,2870,5,36,0,0,2870,2871, + 3,652,326,0,2871,2872,5,3,0,0,2872,2878,1,0,0,0,2873,2874,5,136, + 0,0,2874,2878,3,394,197,0,2875,2878,3,312,156,0,2876,2878,3,310, + 155,0,2877,2845,1,0,0,0,2877,2851,1,0,0,0,2877,2853,1,0,0,0,2877, + 2855,1,0,0,0,2877,2860,1,0,0,0,2877,2862,1,0,0,0,2877,2864,1,0,0, + 0,2877,2866,1,0,0,0,2877,2873,1,0,0,0,2877,2875,1,0,0,0,2877,2876, + 1,0,0,0,2878,213,1,0,0,0,2879,2880,5,46,0,0,2880,2881,5,63,0,0,2881, + 2882,5,174,0,0,2882,2883,5,381,0,0,2883,2889,3,818,409,0,2884,2886, + 3,216,108,0,2885,2884,1,0,0,0,2886,2887,1,0,0,0,2887,2885,1,0,0, + 0,2887,2888,1,0,0,0,2888,2890,1,0,0,0,2889,2885,1,0,0,0,2889,2890, + 1,0,0,0,2890,2892,1,0,0,0,2891,2893,3,220,110,0,2892,2891,1,0,0, + 0,2892,2893,1,0,0,0,2893,215,1,0,0,0,2894,2896,7,33,0,0,2895,2897, + 3,316,158,0,2896,2895,1,0,0,0,2896,2897,1,0,0,0,2897,2901,1,0,0, + 0,2898,2899,5,269,0,0,2899,2901,7,33,0,0,2900,2894,1,0,0,0,2900, + 2898,1,0,0,0,2901,217,1,0,0,0,2902,2903,5,138,0,0,2903,2904,5,63, + 0,0,2904,2905,5,174,0,0,2905,2906,5,381,0,0,2906,2920,3,818,409, + 0,2907,2909,3,216,108,0,2908,2907,1,0,0,0,2909,2910,1,0,0,0,2910, + 2908,1,0,0,0,2910,2911,1,0,0,0,2911,2913,1,0,0,0,2912,2908,1,0,0, + 0,2912,2913,1,0,0,0,2913,2914,1,0,0,0,2914,2921,3,222,111,0,2915, + 2917,3,216,108,0,2916,2915,1,0,0,0,2917,2918,1,0,0,0,2918,2916,1, + 0,0,0,2918,2919,1,0,0,0,2919,2921,1,0,0,0,2920,2912,1,0,0,0,2920, + 2916,1,0,0,0,2921,219,1,0,0,0,2922,2923,5,280,0,0,2923,2924,5,2, + 0,0,2924,2929,3,226,113,0,2925,2926,5,6,0,0,2926,2928,3,226,113, + 0,2927,2925,1,0,0,0,2928,2931,1,0,0,0,2929,2927,1,0,0,0,2929,2930, + 1,0,0,0,2930,2932,1,0,0,0,2931,2929,1,0,0,0,2932,2933,5,3,0,0,2933, + 221,1,0,0,0,2934,2935,5,280,0,0,2935,2936,5,2,0,0,2936,2941,3,224, + 112,0,2937,2938,5,6,0,0,2938,2940,3,224,112,0,2939,2937,1,0,0,0, + 2940,2943,1,0,0,0,2941,2939,1,0,0,0,2941,2942,1,0,0,0,2942,2944, + 1,0,0,0,2943,2941,1,0,0,0,2944,2945,5,3,0,0,2945,223,1,0,0,0,2946, + 2947,7,34,0,0,2947,2948,3,226,113,0,2948,225,1,0,0,0,2949,2950,3, + 824,412,0,2950,2951,3,808,404,0,2951,227,1,0,0,0,2952,2953,5,46, + 0,0,2953,2955,5,331,0,0,2954,2956,3,294,147,0,2955,2954,1,0,0,0, + 2955,2956,1,0,0,0,2956,2957,1,0,0,0,2957,2960,3,818,409,0,2958,2959, + 5,360,0,0,2959,2961,3,808,404,0,2960,2958,1,0,0,0,2960,2961,1,0, + 0,0,2961,2963,1,0,0,0,2962,2964,3,230,115,0,2963,2962,1,0,0,0,2963, + 2964,1,0,0,0,2964,2965,1,0,0,0,2965,2966,5,63,0,0,2966,2967,5,174, + 0,0,2967,2968,5,381,0,0,2968,2970,3,818,409,0,2969,2971,3,220,110, + 0,2970,2969,1,0,0,0,2970,2971,1,0,0,0,2971,229,1,0,0,0,2972,2975, + 5,375,0,0,2973,2976,3,808,404,0,2974,2976,5,78,0,0,2975,2973,1,0, + 0,0,2975,2974,1,0,0,0,2976,231,1,0,0,0,2977,2978,5,138,0,0,2978, + 2979,5,331,0,0,2979,2985,3,818,409,0,2980,2986,3,222,111,0,2981, + 2983,3,230,115,0,2982,2984,3,222,111,0,2983,2982,1,0,0,0,2983,2984, + 1,0,0,0,2984,2986,1,0,0,0,2985,2980,1,0,0,0,2985,2981,1,0,0,0,2986, + 233,1,0,0,0,2987,2988,5,46,0,0,2988,2989,5,63,0,0,2989,2991,5,92, + 0,0,2990,2992,3,294,147,0,2991,2990,1,0,0,0,2991,2992,1,0,0,0,2992, + 2993,1,0,0,0,2993,2994,3,772,386,0,2994,2996,5,2,0,0,2995,2997,3, + 126,63,0,2996,2995,1,0,0,0,2996,2997,1,0,0,0,2997,2998,1,0,0,0,2998, + 3000,5,3,0,0,2999,3001,3,164,82,0,3000,2999,1,0,0,0,3000,3001,1, + 0,0,0,3001,3002,1,0,0,0,3002,3003,5,331,0,0,3003,3005,3,818,409, + 0,3004,3006,3,220,110,0,3005,3004,1,0,0,0,3005,3006,1,0,0,0,3006, + 3027,1,0,0,0,3007,3008,5,46,0,0,3008,3009,5,63,0,0,3009,3011,5,92, + 0,0,3010,3012,3,294,147,0,3011,3010,1,0,0,0,3011,3012,1,0,0,0,3012, + 3013,1,0,0,0,3013,3014,3,772,386,0,3014,3015,5,285,0,0,3015,3016, + 5,275,0,0,3016,3018,3,774,387,0,3017,3019,3,124,62,0,3018,3017,1, + 0,0,0,3018,3019,1,0,0,0,3019,3020,1,0,0,0,3020,3021,3,106,53,0,3021, + 3022,5,331,0,0,3022,3024,3,818,409,0,3023,3025,3,220,110,0,3024, + 3023,1,0,0,0,3024,3025,1,0,0,0,3025,3027,1,0,0,0,3026,2987,1,0,0, + 0,3026,3007,1,0,0,0,3027,235,1,0,0,0,3028,3029,5,444,0,0,3029,3030, + 5,63,0,0,3030,3031,5,323,0,0,3031,3041,3,790,395,0,3032,3033,5,74, + 0,0,3033,3036,5,94,0,0,3034,3036,5,59,0,0,3035,3032,1,0,0,0,3035, + 3034,1,0,0,0,3036,3037,1,0,0,0,3037,3038,5,2,0,0,3038,3039,3,628, + 314,0,3039,3040,5,3,0,0,3040,3042,1,0,0,0,3041,3035,1,0,0,0,3041, + 3042,1,0,0,0,3042,3043,1,0,0,0,3043,3044,5,64,0,0,3044,3045,5,331, + 0,0,3045,3046,3,818,409,0,3046,3047,5,71,0,0,3047,3049,3,818,409, + 0,3048,3050,3,220,110,0,3049,3048,1,0,0,0,3049,3050,1,0,0,0,3050, + 237,1,0,0,0,3051,3052,5,46,0,0,3052,3053,5,99,0,0,3053,3055,5,257, + 0,0,3054,3056,3,294,147,0,3055,3054,1,0,0,0,3055,3056,1,0,0,0,3056, + 3057,1,0,0,0,3057,3060,5,62,0,0,3058,3061,3,814,407,0,3059,3061, + 5,99,0,0,3060,3058,1,0,0,0,3060,3059,1,0,0,0,3061,3062,1,0,0,0,3062, + 3063,5,331,0,0,3063,3065,3,818,409,0,3064,3066,3,220,110,0,3065, + 3064,1,0,0,0,3065,3066,1,0,0,0,3066,239,1,0,0,0,3067,3068,5,138, + 0,0,3068,3069,5,99,0,0,3069,3070,5,257,0,0,3070,3073,5,62,0,0,3071, + 3074,3,814,407,0,3072,3074,5,99,0,0,3073,3071,1,0,0,0,3073,3072, + 1,0,0,0,3074,3075,1,0,0,0,3075,3076,5,331,0,0,3076,3077,3,818,409, + 0,3077,3078,3,222,111,0,3078,241,1,0,0,0,3079,3080,5,46,0,0,3080, + 3081,5,445,0,0,3081,3082,3,818,409,0,3082,3083,5,80,0,0,3083,3090, + 3,780,390,0,3084,3088,5,36,0,0,3085,3089,5,541,0,0,3086,3089,5,542, + 0,0,3087,3089,3,826,413,0,3088,3085,1,0,0,0,3088,3086,1,0,0,0,3088, + 3087,1,0,0,0,3089,3091,1,0,0,0,3090,3084,1,0,0,0,3090,3091,1,0,0, + 0,3091,3094,1,0,0,0,3092,3093,5,62,0,0,3093,3095,7,35,0,0,3094,3092, + 1,0,0,0,3094,3095,1,0,0,0,3095,3098,1,0,0,0,3096,3097,5,94,0,0,3097, + 3099,3,816,408,0,3098,3096,1,0,0,0,3098,3099,1,0,0,0,3099,3101,1, + 0,0,0,3100,3102,3,250,125,0,3101,3100,1,0,0,0,3101,3102,1,0,0,0, + 3102,3104,1,0,0,0,3103,3105,3,252,126,0,3104,3103,1,0,0,0,3104,3105, + 1,0,0,0,3105,243,1,0,0,0,3106,3107,5,138,0,0,3107,3108,5,445,0,0, + 3108,3109,3,818,409,0,3109,3110,5,80,0,0,3110,3113,3,780,390,0,3111, + 3112,5,94,0,0,3112,3114,3,816,408,0,3113,3111,1,0,0,0,3113,3114, + 1,0,0,0,3114,3116,1,0,0,0,3115,3117,3,250,125,0,3116,3115,1,0,0, + 0,3116,3117,1,0,0,0,3117,3119,1,0,0,0,3118,3120,3,252,126,0,3119, + 3118,1,0,0,0,3119,3120,1,0,0,0,3120,245,1,0,0,0,3121,3122,5,138, + 0,0,3122,3123,5,296,0,0,3123,3125,3,796,398,0,3124,3126,3,368,184, + 0,3125,3124,1,0,0,0,3125,3126,1,0,0,0,3126,3153,1,0,0,0,3127,3131, + 3,248,124,0,3128,3130,3,248,124,0,3129,3128,1,0,0,0,3130,3133,1, + 0,0,0,3131,3129,1,0,0,0,3131,3132,1,0,0,0,3132,3135,1,0,0,0,3133, + 3131,1,0,0,0,3134,3136,5,315,0,0,3135,3134,1,0,0,0,3135,3136,1,0, + 0,0,3136,3154,1,0,0,0,3137,3138,5,309,0,0,3138,3139,5,94,0,0,3139, + 3154,3,798,399,0,3140,3141,5,282,0,0,3141,3142,5,94,0,0,3142,3154, + 3,814,407,0,3143,3144,5,333,0,0,3144,3145,5,323,0,0,3145,3154,3, + 32,16,0,3146,3148,5,269,0,0,3147,3146,1,0,0,0,3147,3148,1,0,0,0, + 3148,3149,1,0,0,0,3149,3150,5,462,0,0,3150,3151,5,80,0,0,3151,3152, + 5,204,0,0,3152,3154,3,818,409,0,3153,3127,1,0,0,0,3153,3137,1,0, + 0,0,3153,3140,1,0,0,0,3153,3143,1,0,0,0,3153,3147,1,0,0,0,3154,247, + 1,0,0,0,3155,3157,5,205,0,0,3156,3155,1,0,0,0,3156,3157,1,0,0,0, + 3157,3158,1,0,0,0,3158,3159,5,327,0,0,3159,3166,5,243,0,0,3160,3162, + 5,205,0,0,3161,3160,1,0,0,0,3161,3162,1,0,0,0,3162,3163,1,0,0,0, + 3163,3164,5,327,0,0,3164,3166,5,181,0,0,3165,3156,1,0,0,0,3165,3161, + 1,0,0,0,3166,3185,1,0,0,0,3167,3168,5,333,0,0,3168,3169,3,818,409, + 0,3169,3172,7,36,0,0,3170,3173,3,818,409,0,3171,3173,5,53,0,0,3172, + 3170,1,0,0,0,3172,3171,1,0,0,0,3173,3185,1,0,0,0,3174,3175,5,333, + 0,0,3175,3176,3,818,409,0,3176,3177,5,64,0,0,3177,3178,5,434,0,0, + 3178,3185,1,0,0,0,3179,3182,5,313,0,0,3180,3183,3,818,409,0,3181, + 3183,5,30,0,0,3182,3180,1,0,0,0,3182,3181,1,0,0,0,3183,3185,1,0, + 0,0,3184,3165,1,0,0,0,3184,3167,1,0,0,0,3184,3174,1,0,0,0,3184,3179, + 1,0,0,0,3185,249,1,0,0,0,3186,3187,5,100,0,0,3187,3188,5,2,0,0,3188, + 3189,3,674,337,0,3189,3190,5,3,0,0,3190,251,1,0,0,0,3191,3192,5, + 105,0,0,3192,3193,5,42,0,0,3193,3194,5,2,0,0,3194,3195,3,674,337, + 0,3195,3196,5,3,0,0,3196,253,1,0,0,0,3197,3198,5,46,0,0,3198,3199, + 5,131,0,0,3199,3200,5,446,0,0,3200,3201,3,818,409,0,3201,3202,5, + 360,0,0,3202,3203,7,37,0,0,3203,3204,5,215,0,0,3204,3205,3,316,158, + 0,3205,255,1,0,0,0,3206,3208,5,46,0,0,3207,3209,3,366,183,0,3208, + 3207,1,0,0,0,3208,3209,1,0,0,0,3209,3210,1,0,0,0,3210,3211,5,357, + 0,0,3211,3212,3,818,409,0,3212,3213,3,258,129,0,3213,3214,3,260, + 130,0,3214,3215,5,80,0,0,3215,3227,3,774,387,0,3216,3223,5,447,0, + 0,3217,3218,7,38,0,0,3218,3220,7,39,0,0,3219,3221,5,36,0,0,3220, + 3219,1,0,0,0,3220,3221,1,0,0,0,3221,3222,1,0,0,0,3222,3224,3,818, + 409,0,3223,3217,1,0,0,0,3224,3225,1,0,0,0,3225,3223,1,0,0,0,3225, + 3226,1,0,0,0,3226,3228,1,0,0,0,3227,3216,1,0,0,0,3227,3228,1,0,0, + 0,3228,3234,1,0,0,0,3229,3231,5,62,0,0,3230,3232,5,192,0,0,3231, + 3230,1,0,0,0,3231,3232,1,0,0,0,3232,3233,1,0,0,0,3233,3235,7,40, + 0,0,3234,3229,1,0,0,0,3234,3235,1,0,0,0,3235,3237,1,0,0,0,3236,3238, + 3,264,132,0,3237,3236,1,0,0,0,3237,3238,1,0,0,0,3238,3239,1,0,0, + 0,3239,3240,5,202,0,0,3240,3241,3,266,133,0,3241,3242,5,2,0,0,3242, + 3243,3,268,134,0,3243,3244,5,3,0,0,3244,3285,1,0,0,0,3245,3247,5, + 46,0,0,3246,3248,3,366,183,0,3247,3246,1,0,0,0,3247,3248,1,0,0,0, + 3248,3250,1,0,0,0,3249,3251,5,45,0,0,3250,3249,1,0,0,0,3250,3251, + 1,0,0,0,3251,3252,1,0,0,0,3252,3253,5,357,0,0,3253,3254,3,818,409, + 0,3254,3255,3,258,129,0,3255,3256,3,260,130,0,3256,3257,5,80,0,0, + 3257,3260,3,774,387,0,3258,3259,5,64,0,0,3259,3261,3,780,390,0,3260, + 3258,1,0,0,0,3260,3261,1,0,0,0,3261,3265,1,0,0,0,3262,3264,3,272, + 136,0,3263,3262,1,0,0,0,3264,3267,1,0,0,0,3265,3263,1,0,0,0,3265, + 3266,1,0,0,0,3266,3273,1,0,0,0,3267,3265,1,0,0,0,3268,3270,5,62, + 0,0,3269,3271,5,192,0,0,3270,3269,1,0,0,0,3270,3271,1,0,0,0,3271, + 3272,1,0,0,0,3272,3274,7,40,0,0,3273,3268,1,0,0,0,3273,3274,1,0, + 0,0,3274,3276,1,0,0,0,3275,3277,3,264,132,0,3276,3275,1,0,0,0,3276, + 3277,1,0,0,0,3277,3278,1,0,0,0,3278,3279,5,202,0,0,3279,3280,3,266, + 133,0,3280,3281,5,2,0,0,3281,3282,3,268,134,0,3282,3283,5,3,0,0, + 3283,3285,1,0,0,0,3284,3206,1,0,0,0,3284,3245,1,0,0,0,3285,257,1, + 0,0,0,3286,3291,5,145,0,0,3287,3291,5,135,0,0,3288,3289,5,242,0, + 0,3289,3291,5,275,0,0,3290,3286,1,0,0,0,3290,3287,1,0,0,0,3290,3288, + 1,0,0,0,3291,259,1,0,0,0,3292,3297,3,262,131,0,3293,3294,5,82,0, + 0,3294,3296,3,262,131,0,3295,3293,1,0,0,0,3296,3299,1,0,0,0,3297, + 3295,1,0,0,0,3297,3298,1,0,0,0,3298,261,1,0,0,0,3299,3297,1,0,0, + 0,3300,3309,5,241,0,0,3301,3309,5,182,0,0,3302,3305,5,369,0,0,3303, + 3304,5,275,0,0,3304,3306,3,148,74,0,3305,3303,1,0,0,0,3305,3306, + 1,0,0,0,3306,3309,1,0,0,0,3307,3309,5,358,0,0,3308,3300,1,0,0,0, + 3308,3301,1,0,0,0,3308,3302,1,0,0,0,3308,3307,1,0,0,0,3309,263,1, + 0,0,0,3310,3311,5,102,0,0,3311,3312,5,2,0,0,3312,3313,3,674,337, + 0,3313,3314,5,3,0,0,3314,265,1,0,0,0,3315,3316,5,211,0,0,3316,3320, + 3,806,403,0,3317,3318,5,296,0,0,3318,3320,3,796,398,0,3319,3315, + 1,0,0,0,3319,3317,1,0,0,0,3320,267,1,0,0,0,3321,3324,3,270,135,0, + 3322,3324,1,0,0,0,3323,3321,1,0,0,0,3323,3322,1,0,0,0,3324,3329, + 1,0,0,0,3325,3326,5,6,0,0,3326,3328,3,270,135,0,3327,3325,1,0,0, + 0,3328,3331,1,0,0,0,3329,3327,1,0,0,0,3329,3330,1,0,0,0,3330,269, + 1,0,0,0,3331,3329,1,0,0,0,3332,3337,5,571,0,0,3333,3337,5,573,0, + 0,3334,3337,3,808,404,0,3335,3337,3,824,412,0,3336,3332,1,0,0,0, + 3336,3333,1,0,0,0,3336,3334,1,0,0,0,3336,3335,1,0,0,0,3337,271,1, + 0,0,0,3338,3340,5,77,0,0,3339,3338,1,0,0,0,3339,3340,1,0,0,0,3340, + 3341,1,0,0,0,3341,3349,5,54,0,0,3342,3343,5,69,0,0,3343,3349,7,9, + 0,0,3344,3345,5,77,0,0,3345,3349,5,371,0,0,3346,3347,5,269,0,0,3347, + 3349,5,228,0,0,3348,3339,1,0,0,0,3348,3342,1,0,0,0,3348,3344,1,0, + 0,0,3348,3346,1,0,0,0,3349,273,1,0,0,0,3350,3351,5,46,0,0,3351,3352, + 5,198,0,0,3352,3353,5,357,0,0,3353,3354,3,818,409,0,3354,3355,5, + 80,0,0,3355,3365,3,824,412,0,3356,3357,5,102,0,0,3357,3362,3,276, + 138,0,3358,3359,5,33,0,0,3359,3361,3,276,138,0,3360,3358,1,0,0,0, + 3361,3364,1,0,0,0,3362,3360,1,0,0,0,3362,3363,1,0,0,0,3363,3366, + 1,0,0,0,3364,3362,1,0,0,0,3365,3356,1,0,0,0,3365,3366,1,0,0,0,3366, + 3367,1,0,0,0,3367,3368,5,202,0,0,3368,3369,3,266,133,0,3369,3370, + 5,2,0,0,3370,3371,5,3,0,0,3371,275,1,0,0,0,3372,3373,3,818,409,0, + 3373,3374,5,68,0,0,3374,3375,5,2,0,0,3375,3379,3,808,404,0,3376, + 3378,3,462,231,0,3377,3376,1,0,0,0,3378,3381,1,0,0,0,3379,3377,1, + 0,0,0,3379,3380,1,0,0,0,3380,3382,1,0,0,0,3381,3379,1,0,0,0,3382, + 3383,5,3,0,0,3383,277,1,0,0,0,3384,3385,5,138,0,0,3385,3386,5,198, + 0,0,3386,3387,5,357,0,0,3387,3393,3,818,409,0,3388,3390,5,193,0, + 0,3389,3391,7,14,0,0,3390,3389,1,0,0,0,3390,3391,1,0,0,0,3391,3394, + 1,0,0,0,3392,3394,5,186,0,0,3393,3388,1,0,0,0,3393,3392,1,0,0,0, + 3394,279,1,0,0,0,3395,3396,5,46,0,0,3396,3397,5,140,0,0,3397,3398, + 3,316,158,0,3398,3399,5,42,0,0,3399,3400,5,2,0,0,3400,3401,3,674, + 337,0,3401,3405,5,3,0,0,3402,3404,3,272,136,0,3403,3402,1,0,0,0, + 3404,3407,1,0,0,0,3405,3403,1,0,0,0,3405,3406,1,0,0,0,3406,281,1, + 0,0,0,3407,3405,1,0,0,0,3408,3410,5,46,0,0,3409,3411,3,366,183,0, + 3410,3409,1,0,0,0,3410,3411,1,0,0,0,3411,3412,1,0,0,0,3412,3413, + 5,136,0,0,3413,3428,3,806,403,0,3414,3415,3,392,196,0,3415,3416, + 3,284,142,0,3416,3429,1,0,0,0,3417,3418,5,2,0,0,3418,3423,3,290, + 145,0,3419,3420,5,6,0,0,3420,3422,3,290,145,0,3421,3419,1,0,0,0, + 3422,3425,1,0,0,0,3423,3421,1,0,0,0,3423,3424,1,0,0,0,3424,3426, + 1,0,0,0,3425,3423,1,0,0,0,3426,3427,5,3,0,0,3427,3429,1,0,0,0,3428, + 3414,1,0,0,0,3428,3417,1,0,0,0,3429,3487,1,0,0,0,3430,3431,5,46, + 0,0,3431,3432,5,278,0,0,3432,3433,3,414,207,0,3433,3434,3,284,142, + 0,3434,3487,1,0,0,0,3435,3436,5,46,0,0,3436,3437,5,360,0,0,3437, + 3438,3,316,158,0,3438,3456,5,36,0,0,3439,3441,5,2,0,0,3440,3442, + 3,642,321,0,3441,3440,1,0,0,0,3441,3442,1,0,0,0,3442,3443,1,0,0, + 0,3443,3457,5,3,0,0,3444,3445,5,196,0,0,3445,3453,5,2,0,0,3446,3450, + 3,808,404,0,3447,3449,3,462,231,0,3448,3447,1,0,0,0,3449,3452,1, + 0,0,0,3450,3448,1,0,0,0,3450,3451,1,0,0,0,3451,3454,1,0,0,0,3452, + 3450,1,0,0,0,3453,3446,1,0,0,0,3453,3454,1,0,0,0,3454,3455,1,0,0, + 0,3455,3457,5,3,0,0,3456,3439,1,0,0,0,3456,3444,1,0,0,0,3457,3487, + 1,0,0,0,3458,3459,5,46,0,0,3459,3460,5,360,0,0,3460,3466,3,316,158, + 0,3461,3462,5,36,0,0,3462,3464,5,299,0,0,3463,3461,1,0,0,0,3463, + 3464,1,0,0,0,3464,3465,1,0,0,0,3465,3467,3,284,142,0,3466,3463,1, + 0,0,0,3466,3467,1,0,0,0,3467,3487,1,0,0,0,3468,3469,5,46,0,0,3469, + 3470,5,355,0,0,3470,3471,5,325,0,0,3471,3472,7,41,0,0,3472,3473, + 3,316,158,0,3473,3474,3,284,142,0,3474,3487,1,0,0,0,3475,3476,5, + 46,0,0,3476,3478,5,108,0,0,3477,3479,3,294,147,0,3478,3477,1,0,0, + 0,3478,3479,1,0,0,0,3479,3480,1,0,0,0,3480,3484,3,316,158,0,3481, + 3485,3,284,142,0,3482,3483,5,64,0,0,3483,3485,3,316,158,0,3484,3481, + 1,0,0,0,3484,3482,1,0,0,0,3485,3487,1,0,0,0,3486,3408,1,0,0,0,3486, + 3430,1,0,0,0,3486,3435,1,0,0,0,3486,3458,1,0,0,0,3486,3468,1,0,0, + 0,3486,3475,1,0,0,0,3487,283,1,0,0,0,3488,3489,5,2,0,0,3489,3494, + 3,286,143,0,3490,3491,5,6,0,0,3491,3493,3,286,143,0,3492,3490,1, + 0,0,0,3493,3496,1,0,0,0,3494,3492,1,0,0,0,3494,3495,1,0,0,0,3495, + 3497,1,0,0,0,3496,3494,1,0,0,0,3497,3498,5,3,0,0,3498,285,1,0,0, + 0,3499,3502,3,824,412,0,3500,3501,5,10,0,0,3501,3503,3,288,144,0, + 3502,3500,1,0,0,0,3502,3503,1,0,0,0,3503,287,1,0,0,0,3504,3511,3, + 388,194,0,3505,3511,3,834,417,0,3506,3511,3,726,363,0,3507,3511, + 3,202,101,0,3508,3511,3,808,404,0,3509,3511,5,407,0,0,3510,3504, + 1,0,0,0,3510,3505,1,0,0,0,3510,3506,1,0,0,0,3510,3507,1,0,0,0,3510, + 3508,1,0,0,0,3510,3509,1,0,0,0,3511,289,1,0,0,0,3512,3513,3,826, + 413,0,3513,3514,5,10,0,0,3514,3515,3,288,144,0,3515,291,1,0,0,0, + 3516,3517,5,138,0,0,3517,3518,5,360,0,0,3518,3519,3,316,158,0,3519, + 3520,5,133,0,0,3520,3522,5,450,0,0,3521,3523,3,294,147,0,3522,3521, + 1,0,0,0,3522,3523,1,0,0,0,3523,3524,1,0,0,0,3524,3527,3,808,404, + 0,3525,3526,7,42,0,0,3526,3528,3,808,404,0,3527,3525,1,0,0,0,3527, + 3528,1,0,0,0,3528,3539,1,0,0,0,3529,3530,5,138,0,0,3530,3531,5,360, + 0,0,3531,3532,3,316,158,0,3532,3533,5,309,0,0,3533,3534,5,450,0, + 0,3534,3535,3,808,404,0,3535,3536,5,94,0,0,3536,3537,3,808,404,0, + 3537,3539,1,0,0,0,3538,3516,1,0,0,0,3538,3529,1,0,0,0,3539,293,1, + 0,0,0,3540,3541,5,220,0,0,3541,3542,5,77,0,0,3542,3543,5,396,0,0, + 3543,295,1,0,0,0,3544,3545,5,46,0,0,3545,3546,5,278,0,0,3546,3547, + 5,156,0,0,3547,3549,3,316,158,0,3548,3550,5,53,0,0,3549,3548,1,0, + 0,0,3549,3550,1,0,0,0,3550,3551,1,0,0,0,3551,3552,5,62,0,0,3552, + 3553,5,360,0,0,3553,3554,3,652,326,0,3554,3557,3,170,85,0,3555,3556, + 5,206,0,0,3556,3558,3,316,158,0,3557,3555,1,0,0,0,3557,3558,1,0, + 0,0,3558,3559,1,0,0,0,3559,3560,5,36,0,0,3560,3565,3,298,149,0,3561, + 3562,5,6,0,0,3562,3564,3,298,149,0,3563,3561,1,0,0,0,3564,3567,1, + 0,0,0,3565,3563,1,0,0,0,3565,3566,1,0,0,0,3566,297,1,0,0,0,3567, + 3565,1,0,0,0,3568,3569,5,278,0,0,3569,3570,5,571,0,0,3570,3572,3, + 414,207,0,3571,3573,3,412,206,0,3572,3571,1,0,0,0,3572,3573,1,0, + 0,0,3573,3581,1,0,0,0,3574,3579,5,62,0,0,3575,3580,5,325,0,0,3576, + 3577,5,83,0,0,3577,3578,5,147,0,0,3578,3580,3,316,158,0,3579,3575, + 1,0,0,0,3579,3576,1,0,0,0,3580,3582,1,0,0,0,3581,3574,1,0,0,0,3581, + 3582,1,0,0,0,3582,3584,1,0,0,0,3583,3585,5,302,0,0,3584,3583,1,0, + 0,0,3584,3585,1,0,0,0,3585,3595,1,0,0,0,3586,3587,5,211,0,0,3587, + 3589,5,571,0,0,3588,3590,3,528,264,0,3589,3588,1,0,0,0,3589,3590, + 1,0,0,0,3590,3591,1,0,0,0,3591,3595,3,382,191,0,3592,3593,5,345, + 0,0,3593,3595,3,652,326,0,3594,3568,1,0,0,0,3594,3586,1,0,0,0,3594, + 3592,1,0,0,0,3595,299,1,0,0,0,3596,3597,5,46,0,0,3597,3598,5,278, + 0,0,3598,3599,5,206,0,0,3599,3600,3,316,158,0,3600,3601,3,170,85, + 0,3601,301,1,0,0,0,3602,3603,5,138,0,0,3603,3604,5,278,0,0,3604, + 3605,5,206,0,0,3605,3606,3,316,158,0,3606,3625,3,170,85,0,3607,3608, + 5,133,0,0,3608,3613,3,298,149,0,3609,3610,5,6,0,0,3610,3612,3,298, + 149,0,3611,3609,1,0,0,0,3612,3615,1,0,0,0,3613,3611,1,0,0,0,3613, + 3614,1,0,0,0,3614,3626,1,0,0,0,3615,3613,1,0,0,0,3616,3617,5,191, + 0,0,3617,3622,3,304,152,0,3618,3619,5,6,0,0,3619,3621,3,304,152, + 0,3620,3618,1,0,0,0,3621,3624,1,0,0,0,3622,3620,1,0,0,0,3622,3623, + 1,0,0,0,3623,3626,1,0,0,0,3624,3622,1,0,0,0,3625,3607,1,0,0,0,3625, + 3616,1,0,0,0,3626,303,1,0,0,0,3627,3628,7,43,0,0,3628,3629,5,571, + 0,0,3629,3630,3,528,264,0,3630,305,1,0,0,0,3631,3632,5,301,0,0,3632, + 3633,5,281,0,0,3633,3634,5,147,0,0,3634,3635,3,816,408,0,3635,3636, + 5,94,0,0,3636,3637,3,814,407,0,3637,307,1,0,0,0,3638,3661,5,191, + 0,0,3639,3662,5,328,0,0,3640,3662,5,226,0,0,3641,3662,5,108,0,0, + 3642,3662,5,168,0,0,3643,3662,5,342,0,0,3644,3662,5,452,0,0,3645, + 3662,5,331,0,0,3646,3647,5,131,0,0,3647,3662,5,446,0,0,3648,3649, + 5,198,0,0,3649,3662,5,357,0,0,3650,3662,5,204,0,0,3651,3653,5,295, + 0,0,3652,3651,1,0,0,0,3652,3653,1,0,0,0,3653,3654,1,0,0,0,3654,3662, + 5,247,0,0,3655,3656,5,63,0,0,3656,3657,5,174,0,0,3657,3662,5,381, + 0,0,3658,3659,5,355,0,0,3659,3660,5,325,0,0,3660,3662,7,41,0,0,3661, + 3639,1,0,0,0,3661,3640,1,0,0,0,3661,3641,1,0,0,0,3661,3642,1,0,0, + 0,3661,3643,1,0,0,0,3661,3644,1,0,0,0,3661,3645,1,0,0,0,3661,3646, + 1,0,0,0,3661,3648,1,0,0,0,3661,3650,1,0,0,0,3661,3652,1,0,0,0,3661, + 3655,1,0,0,0,3661,3658,1,0,0,0,3662,3664,1,0,0,0,3663,3665,3,422, + 211,0,3664,3663,1,0,0,0,3664,3665,1,0,0,0,3665,3666,1,0,0,0,3666, + 3668,3,784,392,0,3667,3669,3,96,48,0,3668,3667,1,0,0,0,3668,3669, + 1,0,0,0,3669,3846,1,0,0,0,3670,3672,5,191,0,0,3671,3673,5,259,0, + 0,3672,3671,1,0,0,0,3672,3673,1,0,0,0,3673,3674,1,0,0,0,3674,3676, + 5,376,0,0,3675,3677,3,422,211,0,3676,3675,1,0,0,0,3676,3677,1,0, + 0,0,3677,3678,1,0,0,0,3678,3683,3,778,389,0,3679,3680,5,6,0,0,3680, + 3682,3,778,389,0,3681,3679,1,0,0,0,3682,3685,1,0,0,0,3683,3681,1, + 0,0,0,3683,3684,1,0,0,0,3684,3687,1,0,0,0,3685,3683,1,0,0,0,3686, + 3688,3,96,48,0,3687,3686,1,0,0,0,3687,3688,1,0,0,0,3688,3846,1,0, + 0,0,3689,3691,5,191,0,0,3690,3692,5,63,0,0,3691,3690,1,0,0,0,3691, + 3692,1,0,0,0,3692,3693,1,0,0,0,3693,3695,5,92,0,0,3694,3696,3,422, + 211,0,3695,3694,1,0,0,0,3695,3696,1,0,0,0,3696,3697,1,0,0,0,3697, + 3699,3,762,381,0,3698,3700,3,96,48,0,3699,3698,1,0,0,0,3699,3700, + 1,0,0,0,3700,3846,1,0,0,0,3701,3702,5,191,0,0,3702,3704,5,323,0, + 0,3703,3705,3,422,211,0,3704,3703,1,0,0,0,3704,3705,1,0,0,0,3705, + 3706,1,0,0,0,3706,3708,3,764,382,0,3707,3709,3,96,48,0,3708,3707, + 1,0,0,0,3708,3709,1,0,0,0,3709,3846,1,0,0,0,3710,3711,5,191,0,0, + 3711,3713,7,44,0,0,3712,3714,3,422,211,0,3713,3712,1,0,0,0,3713, + 3714,1,0,0,0,3714,3715,1,0,0,0,3715,3716,3,818,409,0,3716,3717,5, + 80,0,0,3717,3719,3,316,158,0,3718,3720,3,96,48,0,3719,3718,1,0,0, + 0,3719,3720,1,0,0,0,3720,3846,1,0,0,0,3721,3722,5,191,0,0,3722,3724, + 7,32,0,0,3723,3725,3,422,211,0,3724,3723,1,0,0,0,3724,3725,1,0,0, + 0,3725,3726,1,0,0,0,3726,3731,3,652,326,0,3727,3728,5,6,0,0,3728, + 3730,3,652,326,0,3729,3727,1,0,0,0,3730,3733,1,0,0,0,3731,3729,1, + 0,0,0,3731,3732,1,0,0,0,3732,3735,1,0,0,0,3733,3731,1,0,0,0,3734, + 3736,3,96,48,0,3735,3734,1,0,0,0,3735,3736,1,0,0,0,3736,3846,1,0, + 0,0,3737,3738,5,191,0,0,3738,3739,5,226,0,0,3739,3741,5,109,0,0, + 3740,3742,3,422,211,0,3741,3740,1,0,0,0,3741,3742,1,0,0,0,3742,3743, + 1,0,0,0,3743,3745,3,314,157,0,3744,3746,3,96,48,0,3745,3744,1,0, + 0,0,3745,3746,1,0,0,0,3746,3846,1,0,0,0,3747,3748,5,191,0,0,3748, + 3750,5,41,0,0,3749,3751,3,422,211,0,3750,3749,1,0,0,0,3750,3751, + 1,0,0,0,3751,3752,1,0,0,0,3752,3753,5,2,0,0,3753,3754,3,652,326, + 0,3754,3755,5,36,0,0,3755,3756,3,652,326,0,3756,3758,5,3,0,0,3757, + 3759,3,96,48,0,3758,3757,1,0,0,0,3758,3759,1,0,0,0,3759,3846,1,0, + 0,0,3760,3761,5,191,0,0,3761,3762,5,278,0,0,3762,3764,7,31,0,0,3763, + 3765,3,422,211,0,3764,3763,1,0,0,0,3764,3765,1,0,0,0,3765,3766,1, + 0,0,0,3766,3767,3,316,158,0,3767,3769,3,170,85,0,3768,3770,3,96, + 48,0,3769,3768,1,0,0,0,3769,3770,1,0,0,0,3770,3846,1,0,0,0,3771, + 3772,5,191,0,0,3772,3773,5,281,0,0,3773,3774,5,147,0,0,3774,3776, + 3,816,408,0,3775,3777,3,96,48,0,3776,3775,1,0,0,0,3776,3777,1,0, + 0,0,3777,3846,1,0,0,0,3778,3779,5,191,0,0,3779,3781,5,451,0,0,3780, + 3782,3,422,211,0,3781,3780,1,0,0,0,3781,3782,1,0,0,0,3782,3783,1, + 0,0,0,3783,3785,3,818,409,0,3784,3786,3,96,48,0,3785,3784,1,0,0, + 0,3785,3786,1,0,0,0,3786,3846,1,0,0,0,3787,3788,5,191,0,0,3788,3790, + 5,351,0,0,3789,3791,3,422,211,0,3790,3789,1,0,0,0,3790,3791,1,0, + 0,0,3791,3792,1,0,0,0,3792,3846,3,770,385,0,3793,3794,5,191,0,0, + 3794,3796,5,443,0,0,3795,3797,3,422,211,0,3796,3795,1,0,0,0,3796, + 3797,1,0,0,0,3797,3798,1,0,0,0,3798,3799,5,62,0,0,3799,3800,3,652, + 326,0,3800,3801,5,247,0,0,3801,3803,3,818,409,0,3802,3804,3,96,48, + 0,3803,3802,1,0,0,0,3803,3804,1,0,0,0,3804,3846,1,0,0,0,3805,3806, + 5,191,0,0,3806,3808,7,45,0,0,3807,3809,3,422,211,0,3808,3807,1,0, + 0,0,3808,3809,1,0,0,0,3809,3810,1,0,0,0,3810,3846,3,816,408,0,3811, + 3812,5,191,0,0,3812,3813,5,99,0,0,3813,3815,5,257,0,0,3814,3816, + 3,422,211,0,3815,3814,1,0,0,0,3815,3816,1,0,0,0,3816,3817,1,0,0, + 0,3817,3820,5,62,0,0,3818,3821,3,814,407,0,3819,3821,5,99,0,0,3820, + 3818,1,0,0,0,3820,3819,1,0,0,0,3821,3822,1,0,0,0,3822,3823,5,331, + 0,0,3823,3846,3,818,409,0,3824,3825,5,191,0,0,3825,3827,5,175,0, + 0,3826,3828,3,422,211,0,3827,3826,1,0,0,0,3827,3828,1,0,0,0,3828, + 3829,1,0,0,0,3829,3843,3,788,394,0,3830,3832,5,105,0,0,3831,3830, + 1,0,0,0,3831,3832,1,0,0,0,3832,3833,1,0,0,0,3833,3834,5,2,0,0,3834, + 3839,5,209,0,0,3835,3836,5,6,0,0,3836,3838,5,209,0,0,3837,3835,1, + 0,0,0,3838,3841,1,0,0,0,3839,3837,1,0,0,0,3839,3840,1,0,0,0,3840, + 3842,1,0,0,0,3841,3839,1,0,0,0,3842,3844,5,3,0,0,3843,3831,1,0,0, + 0,3843,3844,1,0,0,0,3844,3846,1,0,0,0,3845,3638,1,0,0,0,3845,3670, + 1,0,0,0,3845,3689,1,0,0,0,3845,3701,1,0,0,0,3845,3710,1,0,0,0,3845, + 3721,1,0,0,0,3845,3737,1,0,0,0,3845,3747,1,0,0,0,3845,3760,1,0,0, + 0,3845,3771,1,0,0,0,3845,3778,1,0,0,0,3845,3787,1,0,0,0,3845,3793, + 1,0,0,0,3845,3805,1,0,0,0,3845,3811,1,0,0,0,3845,3824,1,0,0,0,3846, + 309,1,0,0,0,3847,3849,5,63,0,0,3848,3847,1,0,0,0,3848,3849,1,0,0, + 0,3849,3850,1,0,0,0,3850,3851,5,92,0,0,3851,3864,3,774,387,0,3852, + 3854,5,259,0,0,3853,3852,1,0,0,0,3853,3854,1,0,0,0,3854,3855,1,0, + 0,0,3855,3856,5,376,0,0,3856,3864,3,778,389,0,3857,3858,7,46,0,0, + 3858,3864,3,316,158,0,3859,3860,5,355,0,0,3860,3861,5,325,0,0,3861, + 3862,7,41,0,0,3862,3864,3,316,158,0,3863,3848,1,0,0,0,3863,3853, + 1,0,0,0,3863,3857,1,0,0,0,3863,3859,1,0,0,0,3864,311,1,0,0,0,3865, + 3866,5,198,0,0,3866,3882,5,357,0,0,3867,3868,5,131,0,0,3868,3882, + 5,446,0,0,3869,3882,5,204,0,0,3870,3882,5,452,0,0,3871,3882,5,331, + 0,0,3872,3882,5,318,0,0,3873,3882,5,451,0,0,3874,3875,5,63,0,0,3875, + 3876,5,174,0,0,3876,3882,5,381,0,0,3877,3879,5,295,0,0,3878,3877, + 1,0,0,0,3878,3879,1,0,0,0,3879,3880,1,0,0,0,3880,3882,5,247,0,0, + 3881,3865,1,0,0,0,3881,3867,1,0,0,0,3881,3869,1,0,0,0,3881,3870, + 1,0,0,0,3881,3871,1,0,0,0,3881,3872,1,0,0,0,3881,3873,1,0,0,0,3881, + 3874,1,0,0,0,3881,3878,1,0,0,0,3882,3883,1,0,0,0,3883,3890,3,818, + 409,0,3884,3885,5,323,0,0,3885,3890,3,790,395,0,3886,3887,5,175, + 0,0,3887,3890,3,788,394,0,3888,3890,3,176,88,0,3889,3881,1,0,0,0, + 3889,3884,1,0,0,0,3889,3886,1,0,0,0,3889,3888,1,0,0,0,3890,313,1, + 0,0,0,3891,3896,3,316,158,0,3892,3893,5,6,0,0,3893,3895,3,316,158, + 0,3894,3892,1,0,0,0,3895,3898,1,0,0,0,3896,3894,1,0,0,0,3896,3897, + 1,0,0,0,3897,315,1,0,0,0,3898,3896,1,0,0,0,3899,3901,3,818,409,0, + 3900,3902,3,318,159,0,3901,3900,1,0,0,0,3901,3902,1,0,0,0,3902,317, + 1,0,0,0,3903,3904,5,11,0,0,3904,3906,3,824,412,0,3905,3903,1,0,0, + 0,3906,3907,1,0,0,0,3907,3905,1,0,0,0,3907,3908,1,0,0,0,3908,319, + 1,0,0,0,3909,3911,5,358,0,0,3910,3912,5,92,0,0,3911,3910,1,0,0,0, + 3911,3912,1,0,0,0,3912,3913,1,0,0,0,3913,3918,3,322,161,0,3914,3915, + 5,6,0,0,3915,3917,3,322,161,0,3916,3914,1,0,0,0,3917,3920,1,0,0, + 0,3918,3916,1,0,0,0,3918,3919,1,0,0,0,3919,3923,1,0,0,0,3920,3918, + 1,0,0,0,3921,3922,7,47,0,0,3922,3924,5,219,0,0,3923,3921,1,0,0,0, + 3923,3924,1,0,0,0,3924,3926,1,0,0,0,3925,3927,3,96,48,0,3926,3925, + 1,0,0,0,3926,3927,1,0,0,0,3927,321,1,0,0,0,3928,3930,5,81,0,0,3929, + 3928,1,0,0,0,3929,3930,1,0,0,0,3930,3931,1,0,0,0,3931,3933,3,774, + 387,0,3932,3934,5,9,0,0,3933,3932,1,0,0,0,3933,3934,1,0,0,0,3934, + 323,1,0,0,0,3935,3936,5,159,0,0,3936,3995,5,80,0,0,3937,3996,3,310, + 155,0,3938,3996,3,312,156,0,3939,3940,5,44,0,0,3940,3942,3,818,409, + 0,3941,3943,3,318,159,0,3942,3941,1,0,0,0,3942,3943,1,0,0,0,3943, + 3944,1,0,0,0,3944,3945,5,11,0,0,3945,3946,3,800,400,0,3946,3996, + 1,0,0,0,3947,3948,7,32,0,0,3948,3996,3,652,326,0,3949,3950,5,136, + 0,0,3950,3996,3,394,197,0,3951,3952,5,211,0,0,3952,3996,3,382,191, + 0,3953,3954,5,278,0,0,3954,3996,3,416,208,0,3955,3956,5,45,0,0,3956, + 3957,3,818,409,0,3957,3963,5,80,0,0,3958,3964,3,774,387,0,3959,3961, + 5,189,0,0,3960,3959,1,0,0,0,3960,3961,1,0,0,0,3961,3962,1,0,0,0, + 3962,3964,3,316,158,0,3963,3958,1,0,0,0,3963,3960,1,0,0,0,3964,3996, + 1,0,0,0,3965,3966,7,44,0,0,3966,3967,3,818,409,0,3967,3968,5,80, + 0,0,3968,3969,3,316,158,0,3969,3996,1,0,0,0,3970,3971,5,296,0,0, + 3971,3996,3,378,189,0,3972,3973,5,442,0,0,3973,3996,3,374,187,0, + 3974,3975,5,443,0,0,3975,3976,5,62,0,0,3976,3977,3,652,326,0,3977, + 3978,5,247,0,0,3978,3979,3,818,409,0,3979,3996,1,0,0,0,3980,3981, + 5,278,0,0,3981,3982,7,31,0,0,3982,3983,3,316,158,0,3983,3984,3,170, + 85,0,3984,3996,1,0,0,0,3985,3986,5,248,0,0,3986,3987,5,274,0,0,3987, + 3996,3,202,101,0,3988,3989,5,41,0,0,3989,3990,5,2,0,0,3990,3991, + 3,652,326,0,3991,3992,5,36,0,0,3992,3993,3,652,326,0,3993,3994,5, + 3,0,0,3994,3996,1,0,0,0,3995,3937,1,0,0,0,3995,3938,1,0,0,0,3995, + 3939,1,0,0,0,3995,3947,1,0,0,0,3995,3949,1,0,0,0,3995,3951,1,0,0, + 0,3995,3953,1,0,0,0,3995,3955,1,0,0,0,3995,3965,1,0,0,0,3995,3970, + 1,0,0,0,3995,3972,1,0,0,0,3995,3974,1,0,0,0,3995,3980,1,0,0,0,3995, + 3985,1,0,0,0,3995,3988,1,0,0,0,3996,3997,1,0,0,0,3997,4000,5,116, + 0,0,3998,4001,3,808,404,0,3999,4001,5,78,0,0,4000,3998,1,0,0,0,4000, + 3999,1,0,0,0,4001,325,1,0,0,0,4002,4003,5,327,0,0,4003,4006,5,246, + 0,0,4004,4005,5,62,0,0,4005,4007,3,58,29,0,4006,4004,1,0,0,0,4006, + 4007,1,0,0,0,4007,4008,1,0,0,0,4008,4026,5,80,0,0,4009,4010,7,32, + 0,0,4010,4027,3,652,326,0,4011,4012,5,136,0,0,4012,4027,3,394,197, + 0,4013,4014,5,44,0,0,4014,4027,3,800,400,0,4015,4016,5,211,0,0,4016, + 4027,3,382,191,0,4017,4018,5,248,0,0,4018,4019,5,274,0,0,4019,4027, + 3,202,101,0,4020,4021,5,296,0,0,4021,4027,3,378,189,0,4022,4023, + 5,442,0,0,4023,4027,3,374,187,0,4024,4027,3,310,155,0,4025,4027, + 3,312,156,0,4026,4009,1,0,0,0,4026,4011,1,0,0,0,4026,4013,1,0,0, + 0,4026,4015,1,0,0,0,4026,4017,1,0,0,0,4026,4020,1,0,0,0,4026,4022, + 1,0,0,0,4026,4024,1,0,0,0,4026,4025,1,0,0,0,4027,4028,1,0,0,0,4028, + 4031,5,116,0,0,4029,4032,3,808,404,0,4030,4032,5,78,0,0,4031,4029, + 1,0,0,0,4031,4030,1,0,0,0,4032,327,1,0,0,0,4033,4034,7,48,0,0,4034, + 4035,3,330,165,0,4035,329,1,0,0,0,4036,4038,7,49,0,0,4037,4036,1, + 0,0,0,4037,4038,1,0,0,0,4038,4040,1,0,0,0,4039,4041,3,332,166,0, + 4040,4039,1,0,0,0,4040,4041,1,0,0,0,4041,4042,1,0,0,0,4042,4080, + 3,818,409,0,4043,4045,7,50,0,0,4044,4043,1,0,0,0,4044,4045,1,0,0, + 0,4045,4046,1,0,0,0,4046,4048,3,812,406,0,4047,4049,3,332,166,0, + 4048,4047,1,0,0,0,4048,4049,1,0,0,0,4049,4050,1,0,0,0,4050,4051, + 3,818,409,0,4051,4080,1,0,0,0,4052,4054,5,210,0,0,4053,4055,3,812, + 406,0,4054,4053,1,0,0,0,4054,4055,1,0,0,0,4055,4057,1,0,0,0,4056, + 4058,3,332,166,0,4057,4056,1,0,0,0,4057,4058,1,0,0,0,4058,4059,1, + 0,0,0,4059,4080,3,818,409,0,4060,4062,5,210,0,0,4061,4060,1,0,0, + 0,4061,4062,1,0,0,0,4062,4063,1,0,0,0,4063,4065,5,30,0,0,4064,4066, + 3,332,166,0,4065,4064,1,0,0,0,4065,4066,1,0,0,0,4066,4067,1,0,0, + 0,4067,4080,3,818,409,0,4068,4073,5,144,0,0,4069,4071,5,30,0,0,4070, + 4069,1,0,0,0,4070,4071,1,0,0,0,4071,4074,1,0,0,0,4072,4074,3,812, + 406,0,4073,4070,1,0,0,0,4073,4072,1,0,0,0,4074,4076,1,0,0,0,4075, + 4077,3,332,166,0,4076,4075,1,0,0,0,4076,4077,1,0,0,0,4077,4078,1, + 0,0,0,4078,4080,3,818,409,0,4079,4037,1,0,0,0,4079,4044,1,0,0,0, + 4079,4052,1,0,0,0,4079,4061,1,0,0,0,4079,4068,1,0,0,0,4080,331,1, + 0,0,0,4081,4082,7,51,0,0,4082,333,1,0,0,0,4083,4084,5,65,0,0,4084, + 4085,3,338,169,0,4085,4086,5,80,0,0,4086,4087,3,344,172,0,4087,4088, + 5,94,0,0,4088,4092,3,346,173,0,4089,4090,5,105,0,0,4090,4091,5,65, + 0,0,4091,4093,5,279,0,0,4092,4089,1,0,0,0,4092,4093,1,0,0,0,4093, + 335,1,0,0,0,4094,4098,5,317,0,0,4095,4096,5,65,0,0,4096,4097,5,279, + 0,0,4097,4099,5,62,0,0,4098,4095,1,0,0,0,4098,4099,1,0,0,0,4099, + 4100,1,0,0,0,4100,4101,3,338,169,0,4101,4102,5,80,0,0,4102,4103, + 3,344,172,0,4103,4104,5,64,0,0,4104,4106,3,346,173,0,4105,4107,3, + 96,48,0,4106,4105,1,0,0,0,4106,4107,1,0,0,0,4107,337,1,0,0,0,4108, + 4113,3,342,171,0,4109,4110,5,6,0,0,4110,4112,3,342,171,0,4111,4109, + 1,0,0,0,4112,4115,1,0,0,0,4113,4111,1,0,0,0,4113,4114,1,0,0,0,4114, + 4132,1,0,0,0,4115,4113,1,0,0,0,4116,4118,5,30,0,0,4117,4119,5,294, + 0,0,4118,4117,1,0,0,0,4118,4119,1,0,0,0,4119,4121,1,0,0,0,4120,4122, + 3,144,72,0,4121,4120,1,0,0,0,4121,4122,1,0,0,0,4122,4132,1,0,0,0, + 4123,4128,3,340,170,0,4124,4125,5,6,0,0,4125,4127,3,340,170,0,4126, + 4124,1,0,0,0,4127,4130,1,0,0,0,4128,4126,1,0,0,0,4128,4129,1,0,0, + 0,4129,4132,1,0,0,0,4130,4128,1,0,0,0,4131,4108,1,0,0,0,4131,4116, + 1,0,0,0,4131,4123,1,0,0,0,4132,339,1,0,0,0,4133,4134,7,52,0,0,4134, + 341,1,0,0,0,4135,4140,5,88,0,0,4136,4140,5,86,0,0,4137,4140,5,46, + 0,0,4138,4140,3,818,409,0,4139,4135,1,0,0,0,4139,4136,1,0,0,0,4139, + 4137,1,0,0,0,4139,4138,1,0,0,0,4140,4142,1,0,0,0,4141,4143,3,144, + 72,0,4142,4141,1,0,0,0,4142,4143,1,0,0,0,4143,343,1,0,0,0,4144,4145, + 5,92,0,0,4145,4190,3,762,381,0,4146,4148,5,328,0,0,4147,4146,1,0, + 0,0,4147,4148,1,0,0,0,4148,4149,1,0,0,0,4149,4190,3,760,380,0,4150, + 4154,5,63,0,0,4151,4152,5,174,0,0,4152,4155,5,381,0,0,4153,4155, + 5,331,0,0,4154,4151,1,0,0,0,4154,4153,1,0,0,0,4155,4158,1,0,0,0, + 4156,4158,5,247,0,0,4157,4150,1,0,0,0,4157,4156,1,0,0,0,4158,4159, + 1,0,0,0,4159,4190,3,784,392,0,4160,4161,5,211,0,0,4161,4190,3,380, + 190,0,4162,4163,5,296,0,0,4163,4190,3,376,188,0,4164,4165,5,442, + 0,0,4165,4190,3,372,186,0,4166,4167,5,175,0,0,4167,4190,3,766,383, + 0,4168,4169,7,32,0,0,4169,4190,3,314,157,0,4170,4171,5,248,0,0,4171, + 4172,5,274,0,0,4172,4177,3,202,101,0,4173,4174,5,6,0,0,4174,4176, + 3,202,101,0,4175,4173,1,0,0,0,4176,4179,1,0,0,0,4177,4175,1,0,0, + 0,4177,4178,1,0,0,0,4178,4190,1,0,0,0,4179,4177,1,0,0,0,4180,4181, + 5,323,0,0,4181,4190,3,764,382,0,4182,4183,5,351,0,0,4183,4190,3, + 782,391,0,4184,4185,5,30,0,0,4185,4186,7,53,0,0,4186,4187,5,68,0, + 0,4187,4188,5,323,0,0,4188,4190,3,764,382,0,4189,4144,1,0,0,0,4189, + 4147,1,0,0,0,4189,4157,1,0,0,0,4189,4160,1,0,0,0,4189,4162,1,0,0, + 0,4189,4164,1,0,0,0,4189,4166,1,0,0,0,4189,4168,1,0,0,0,4189,4170, + 1,0,0,0,4189,4180,1,0,0,0,4189,4182,1,0,0,0,4189,4184,1,0,0,0,4190, + 345,1,0,0,0,4191,4193,5,66,0,0,4192,4191,1,0,0,0,4192,4193,1,0,0, + 0,4193,4194,1,0,0,0,4194,4195,3,814,407,0,4195,4203,1,0,0,0,4196, + 4198,5,6,0,0,4197,4199,5,66,0,0,4198,4197,1,0,0,0,4198,4199,1,0, + 0,0,4199,4200,1,0,0,0,4200,4202,3,814,407,0,4201,4196,1,0,0,0,4202, + 4205,1,0,0,0,4203,4201,1,0,0,0,4203,4204,1,0,0,0,4204,347,1,0,0, + 0,4205,4203,1,0,0,0,4206,4207,5,65,0,0,4207,4212,3,342,171,0,4208, + 4209,5,6,0,0,4209,4211,3,342,171,0,4210,4208,1,0,0,0,4211,4214,1, + 0,0,0,4212,4210,1,0,0,0,4212,4213,1,0,0,0,4213,4215,1,0,0,0,4214, + 4212,1,0,0,0,4215,4216,5,94,0,0,4216,4220,3,816,408,0,4217,4218, + 5,105,0,0,4218,4219,5,134,0,0,4219,4221,5,279,0,0,4220,4217,1,0, + 0,0,4220,4221,1,0,0,0,4221,4225,1,0,0,0,4222,4223,5,214,0,0,4223, + 4224,5,147,0,0,4224,4226,3,814,407,0,4225,4222,1,0,0,0,4225,4226, + 1,0,0,0,4226,349,1,0,0,0,4227,4231,5,317,0,0,4228,4229,5,134,0,0, + 4229,4230,5,279,0,0,4230,4232,5,62,0,0,4231,4228,1,0,0,0,4231,4232, + 1,0,0,0,4232,4233,1,0,0,0,4233,4238,3,342,171,0,4234,4235,5,6,0, + 0,4235,4237,3,342,171,0,4236,4234,1,0,0,0,4237,4240,1,0,0,0,4238, + 4236,1,0,0,0,4238,4239,1,0,0,0,4239,4241,1,0,0,0,4240,4238,1,0,0, + 0,4241,4242,5,64,0,0,4242,4246,3,816,408,0,4243,4244,5,214,0,0,4244, + 4245,5,147,0,0,4245,4247,3,814,407,0,4246,4243,1,0,0,0,4246,4247, + 1,0,0,0,4247,4249,1,0,0,0,4248,4250,3,96,48,0,4249,4248,1,0,0,0, + 4249,4250,1,0,0,0,4250,351,1,0,0,0,4251,4252,5,138,0,0,4252,4253, + 5,53,0,0,4253,4262,5,294,0,0,4254,4255,5,68,0,0,4255,4256,5,323, + 0,0,4256,4261,3,764,382,0,4257,4258,5,62,0,0,4258,4259,7,2,0,0,4259, + 4261,3,816,408,0,4260,4254,1,0,0,0,4260,4257,1,0,0,0,4261,4264,1, + 0,0,0,4262,4260,1,0,0,0,4262,4263,1,0,0,0,4263,4265,1,0,0,0,4264, + 4262,1,0,0,0,4265,4266,3,354,177,0,4266,353,1,0,0,0,4267,4268,5, + 65,0,0,4268,4269,3,338,169,0,4269,4270,5,80,0,0,4270,4271,3,356, + 178,0,4271,4272,5,94,0,0,4272,4276,3,346,173,0,4273,4274,5,105,0, + 0,4274,4275,5,65,0,0,4275,4277,5,279,0,0,4276,4273,1,0,0,0,4276, + 4277,1,0,0,0,4277,4293,1,0,0,0,4278,4282,5,317,0,0,4279,4280,5,65, + 0,0,4280,4281,5,279,0,0,4281,4283,5,62,0,0,4282,4279,1,0,0,0,4282, + 4283,1,0,0,0,4283,4284,1,0,0,0,4284,4285,3,338,169,0,4285,4286,5, + 80,0,0,4286,4287,3,356,178,0,4287,4288,5,64,0,0,4288,4290,3,346, + 173,0,4289,4291,3,96,48,0,4290,4289,1,0,0,0,4290,4291,1,0,0,0,4291, + 4293,1,0,0,0,4292,4267,1,0,0,0,4292,4278,1,0,0,0,4293,355,1,0,0, + 0,4294,4295,7,54,0,0,4295,357,1,0,0,0,4296,4298,5,46,0,0,4297,4299, + 5,98,0,0,4298,4297,1,0,0,0,4298,4299,1,0,0,0,4299,4300,1,0,0,0,4300, + 4302,5,226,0,0,4301,4303,5,109,0,0,4302,4301,1,0,0,0,4302,4303,1, + 0,0,0,4303,4305,1,0,0,0,4304,4306,3,294,147,0,4305,4304,1,0,0,0, + 4305,4306,1,0,0,0,4306,4308,1,0,0,0,4307,4309,3,818,409,0,4308,4307, + 1,0,0,0,4308,4309,1,0,0,0,4309,4310,1,0,0,0,4310,4311,5,80,0,0,4311, + 4313,3,624,312,0,4312,4314,3,170,85,0,4313,4312,1,0,0,0,4313,4314, + 1,0,0,0,4314,4315,1,0,0,0,4315,4318,3,360,180,0,4316,4317,5,441, + 0,0,4317,4319,3,360,180,0,4318,4316,1,0,0,0,4318,4319,1,0,0,0,4319, + 4325,1,0,0,0,4320,4322,5,273,0,0,4321,4323,5,77,0,0,4322,4321,1, + 0,0,0,4322,4323,1,0,0,0,4323,4324,1,0,0,0,4324,4326,5,56,0,0,4325, + 4320,1,0,0,0,4325,4326,1,0,0,0,4326,4328,1,0,0,0,4327,4329,3,102, + 51,0,4328,4327,1,0,0,0,4328,4329,1,0,0,0,4329,4331,1,0,0,0,4330, + 4332,3,176,88,0,4331,4330,1,0,0,0,4331,4332,1,0,0,0,4332,4334,1, + 0,0,0,4333,4335,3,638,319,0,4334,4333,1,0,0,0,4334,4335,1,0,0,0, + 4335,359,1,0,0,0,4336,4337,5,2,0,0,4337,4342,3,362,181,0,4338,4339, + 5,6,0,0,4339,4341,3,362,181,0,4340,4338,1,0,0,0,4341,4344,1,0,0, + 0,4342,4340,1,0,0,0,4342,4343,1,0,0,0,4343,4345,1,0,0,0,4344,4342, + 1,0,0,0,4345,4346,5,3,0,0,4346,361,1,0,0,0,4347,4354,3,800,400,0, + 4348,4354,3,688,344,0,4349,4350,5,2,0,0,4350,4351,3,674,337,0,4351, + 4352,5,3,0,0,4352,4354,1,0,0,0,4353,4347,1,0,0,0,4353,4348,1,0,0, + 0,4353,4349,1,0,0,0,4354,4356,1,0,0,0,4355,4357,3,98,49,0,4356,4355, + 1,0,0,0,4356,4357,1,0,0,0,4357,4364,1,0,0,0,4358,4360,3,316,158, + 0,4359,4358,1,0,0,0,4359,4360,1,0,0,0,4360,4365,1,0,0,0,4361,4362, + 3,316,158,0,4362,4363,3,100,50,0,4363,4365,1,0,0,0,4364,4359,1,0, + 0,0,4364,4361,1,0,0,0,4365,4367,1,0,0,0,4366,4368,7,55,0,0,4367, + 4366,1,0,0,0,4367,4368,1,0,0,0,4368,4371,1,0,0,0,4369,4370,5,273, + 0,0,4370,4372,7,56,0,0,4371,4369,1,0,0,0,4371,4372,1,0,0,0,4372, + 363,1,0,0,0,4373,4375,5,46,0,0,4374,4376,3,366,183,0,4375,4374,1, + 0,0,0,4375,4376,1,0,0,0,4376,4381,1,0,0,0,4377,4378,5,211,0,0,4378, + 4382,3,804,402,0,4379,4380,5,296,0,0,4380,4382,3,798,399,0,4381, + 4377,1,0,0,0,4381,4379,1,0,0,0,4382,4383,1,0,0,0,4383,4392,5,2,0, + 0,4384,4389,3,390,195,0,4385,4386,5,6,0,0,4386,4388,3,390,195,0, + 4387,4385,1,0,0,0,4388,4391,1,0,0,0,4389,4387,1,0,0,0,4389,4390, + 1,0,0,0,4390,4393,1,0,0,0,4391,4389,1,0,0,0,4392,4384,1,0,0,0,4392, + 4393,1,0,0,0,4393,4394,1,0,0,0,4394,4395,5,3,0,0,4395,4412,1,0,0, + 0,4396,4410,5,316,0,0,4397,4411,3,388,194,0,4398,4399,5,92,0,0,4399, + 4400,5,2,0,0,4400,4405,3,402,201,0,4401,4402,5,6,0,0,4402,4404,3, + 402,201,0,4403,4401,1,0,0,0,4404,4407,1,0,0,0,4405,4403,1,0,0,0, + 4405,4406,1,0,0,0,4406,4408,1,0,0,0,4407,4405,1,0,0,0,4408,4409, + 5,3,0,0,4409,4411,1,0,0,0,4410,4397,1,0,0,0,4410,4398,1,0,0,0,4411, + 4413,1,0,0,0,4412,4396,1,0,0,0,4412,4413,1,0,0,0,4413,4415,1,0,0, + 0,4414,4416,3,398,199,0,4415,4414,1,0,0,0,4416,4417,1,0,0,0,4417, + 4415,1,0,0,0,4417,4418,1,0,0,0,4418,4424,1,0,0,0,4419,4420,5,105, + 0,0,4420,4421,5,2,0,0,4421,4422,3,784,392,0,4422,4423,5,3,0,0,4423, + 4425,1,0,0,0,4424,4419,1,0,0,0,4424,4425,1,0,0,0,4425,365,1,0,0, + 0,4426,4427,5,82,0,0,4427,4428,5,311,0,0,4428,367,1,0,0,0,4429,4431, + 5,2,0,0,4430,4432,3,370,185,0,4431,4430,1,0,0,0,4431,4432,1,0,0, + 0,4432,4433,1,0,0,0,4433,4434,5,3,0,0,4434,369,1,0,0,0,4435,4440, + 3,384,192,0,4436,4437,5,6,0,0,4437,4439,3,384,192,0,4438,4436,1, + 0,0,0,4439,4442,1,0,0,0,4440,4438,1,0,0,0,4440,4441,1,0,0,0,4441, + 371,1,0,0,0,4442,4440,1,0,0,0,4443,4448,3,374,187,0,4444,4445,5, + 6,0,0,4445,4447,3,374,187,0,4446,4444,1,0,0,0,4447,4450,1,0,0,0, + 4448,4446,1,0,0,0,4448,4449,1,0,0,0,4449,373,1,0,0,0,4450,4448,1, + 0,0,0,4451,4452,3,794,397,0,4452,4453,3,368,184,0,4453,4457,1,0, + 0,0,4454,4457,3,832,416,0,4455,4457,3,780,390,0,4456,4451,1,0,0, + 0,4456,4454,1,0,0,0,4456,4455,1,0,0,0,4457,375,1,0,0,0,4458,4463, + 3,378,189,0,4459,4460,5,6,0,0,4460,4462,3,378,189,0,4461,4459,1, + 0,0,0,4462,4465,1,0,0,0,4463,4461,1,0,0,0,4463,4464,1,0,0,0,4464, + 377,1,0,0,0,4465,4463,1,0,0,0,4466,4467,3,796,398,0,4467,4468,3, + 368,184,0,4468,4472,1,0,0,0,4469,4472,3,832,416,0,4470,4472,3,780, + 390,0,4471,4466,1,0,0,0,4471,4469,1,0,0,0,4471,4470,1,0,0,0,4472, + 379,1,0,0,0,4473,4478,3,382,191,0,4474,4475,5,6,0,0,4475,4477,3, + 382,191,0,4476,4474,1,0,0,0,4477,4480,1,0,0,0,4478,4476,1,0,0,0, + 4478,4479,1,0,0,0,4479,381,1,0,0,0,4480,4478,1,0,0,0,4481,4482,3, + 806,403,0,4482,4483,3,368,184,0,4483,4487,1,0,0,0,4484,4487,3,832, + 416,0,4485,4487,3,780,390,0,4486,4481,1,0,0,0,4486,4484,1,0,0,0, + 4486,4485,1,0,0,0,4487,383,1,0,0,0,4488,4490,3,386,193,0,4489,4491, + 3,820,410,0,4490,4489,1,0,0,0,4490,4491,1,0,0,0,4491,4497,1,0,0, + 0,4492,4494,3,820,410,0,4493,4495,3,386,193,0,4494,4493,1,0,0,0, + 4494,4495,1,0,0,0,4495,4497,1,0,0,0,4496,4488,1,0,0,0,4496,4492, + 1,0,0,0,4496,4497,1,0,0,0,4497,4498,1,0,0,0,4498,4499,3,388,194, + 0,4499,385,1,0,0,0,4500,4502,5,68,0,0,4501,4503,5,453,0,0,4502,4501, + 1,0,0,0,4502,4503,1,0,0,0,4503,4508,1,0,0,0,4504,4508,5,453,0,0, + 4505,4508,5,400,0,0,4506,4508,5,101,0,0,4507,4500,1,0,0,0,4507,4504, + 1,0,0,0,4507,4505,1,0,0,0,4507,4506,1,0,0,0,4508,387,1,0,0,0,4509, + 4519,3,652,326,0,4510,4512,5,415,0,0,4511,4510,1,0,0,0,4511,4512, + 1,0,0,0,4512,4513,1,0,0,0,4513,4514,3,820,410,0,4514,4515,3,318, + 159,0,4515,4516,5,27,0,0,4516,4517,5,360,0,0,4517,4519,1,0,0,0,4518, + 4509,1,0,0,0,4518,4511,1,0,0,0,4519,389,1,0,0,0,4520,4523,3,384, + 192,0,4521,4522,7,57,0,0,4522,4524,3,674,337,0,4523,4521,1,0,0,0, + 4523,4524,1,0,0,0,4524,391,1,0,0,0,4525,4535,5,2,0,0,4526,4536,5, + 9,0,0,4527,4529,3,370,185,0,4528,4527,1,0,0,0,4528,4529,1,0,0,0, + 4529,4533,1,0,0,0,4530,4531,5,83,0,0,4531,4532,5,147,0,0,4532,4534, + 3,370,185,0,4533,4530,1,0,0,0,4533,4534,1,0,0,0,4534,4536,1,0,0, + 0,4535,4526,1,0,0,0,4535,4528,1,0,0,0,4536,4537,1,0,0,0,4537,4538, + 5,3,0,0,4538,393,1,0,0,0,4539,4540,3,806,403,0,4540,4541,3,392,196, + 0,4541,395,1,0,0,0,4542,4543,5,316,0,0,4543,4546,5,78,0,0,4544,4546, + 5,149,0,0,4545,4542,1,0,0,0,4545,4544,1,0,0,0,4546,4547,1,0,0,0, + 4547,4548,5,80,0,0,4548,4549,5,78,0,0,4549,4572,5,458,0,0,4550,4572, + 5,346,0,0,4551,4572,5,222,0,0,4552,4572,5,338,0,0,4553,4572,5,377, + 0,0,4554,4556,5,205,0,0,4555,4554,1,0,0,0,4555,4556,1,0,0,0,4556, + 4557,1,0,0,0,4557,4558,5,327,0,0,4558,4572,7,58,0,0,4559,4572,5, + 250,0,0,4560,4561,5,77,0,0,4561,4572,5,250,0,0,4562,4563,7,59,0, + 0,4563,4572,3,202,101,0,4564,4565,5,459,0,0,4565,4572,3,316,158, + 0,4566,4567,5,333,0,0,4567,4572,3,42,21,0,4568,4572,3,60,30,0,4569, + 4570,5,460,0,0,4570,4572,3,818,409,0,4571,4545,1,0,0,0,4571,4550, + 1,0,0,0,4571,4551,1,0,0,0,4571,4552,1,0,0,0,4571,4553,1,0,0,0,4571, + 4555,1,0,0,0,4571,4559,1,0,0,0,4571,4560,1,0,0,0,4571,4562,1,0,0, + 0,4571,4564,1,0,0,0,4571,4566,1,0,0,0,4571,4568,1,0,0,0,4571,4569, + 1,0,0,0,4572,397,1,0,0,0,4573,4574,5,36,0,0,4574,4575,3,808,404, + 0,4575,4576,3,462,231,0,4576,4609,1,0,0,0,4577,4578,5,247,0,0,4578, + 4609,3,58,29,0,4579,4580,5,443,0,0,4580,4581,5,62,0,0,4581,4582, + 5,360,0,0,4582,4589,3,652,326,0,4583,4584,5,6,0,0,4584,4585,5,62, + 0,0,4585,4586,5,360,0,0,4586,4588,3,652,326,0,4587,4583,1,0,0,0, + 4588,4591,1,0,0,0,4589,4587,1,0,0,0,4589,4590,1,0,0,0,4590,4609, + 1,0,0,0,4591,4589,1,0,0,0,4592,4609,5,104,0,0,4593,4594,5,333,0, + 0,4594,4601,3,818,409,0,4595,4596,5,94,0,0,4596,4602,3,818,409,0, + 4597,4598,5,10,0,0,4598,4602,3,818,409,0,4599,4600,5,64,0,0,4600, + 4602,5,434,0,0,4601,4595,1,0,0,0,4601,4597,1,0,0,0,4601,4599,1,0, + 0,0,4602,4609,1,0,0,0,4603,4604,5,36,0,0,4604,4609,3,818,409,0,4605, + 4609,3,4,2,0,4606,4609,3,396,198,0,4607,4609,3,818,409,0,4608,4573, + 1,0,0,0,4608,4577,1,0,0,0,4608,4579,1,0,0,0,4608,4592,1,0,0,0,4608, + 4593,1,0,0,0,4608,4603,1,0,0,0,4608,4605,1,0,0,0,4608,4606,1,0,0, + 0,4608,4607,1,0,0,0,4609,399,1,0,0,0,4610,4611,5,105,0,0,4611,4612, + 3,284,142,0,4612,401,1,0,0,0,4613,4614,3,800,400,0,4614,4615,3,388, + 194,0,4615,403,1,0,0,0,4616,4623,5,138,0,0,4617,4618,5,211,0,0,4618, + 4624,3,382,191,0,4619,4620,5,296,0,0,4620,4624,3,378,189,0,4621, + 4622,5,442,0,0,4622,4624,3,374,187,0,4623,4617,1,0,0,0,4623,4619, + 1,0,0,0,4623,4621,1,0,0,0,4624,4626,1,0,0,0,4625,4627,3,396,198, + 0,4626,4625,1,0,0,0,4627,4628,1,0,0,0,4628,4626,1,0,0,0,4628,4629, + 1,0,0,0,4629,4631,1,0,0,0,4630,4632,5,315,0,0,4631,4630,1,0,0,0, + 4631,4632,1,0,0,0,4632,405,1,0,0,0,4633,4649,5,191,0,0,4634,4636, + 5,211,0,0,4635,4637,3,422,211,0,4636,4635,1,0,0,0,4636,4637,1,0, + 0,0,4637,4638,1,0,0,0,4638,4650,3,380,190,0,4639,4641,5,296,0,0, + 4640,4642,3,422,211,0,4641,4640,1,0,0,0,4641,4642,1,0,0,0,4642,4643, + 1,0,0,0,4643,4650,3,376,188,0,4644,4646,5,442,0,0,4645,4647,3,422, + 211,0,4646,4645,1,0,0,0,4646,4647,1,0,0,0,4647,4648,1,0,0,0,4648, + 4650,3,372,186,0,4649,4634,1,0,0,0,4649,4639,1,0,0,0,4649,4644,1, + 0,0,0,4650,4652,1,0,0,0,4651,4653,3,96,48,0,4652,4651,1,0,0,0,4652, + 4653,1,0,0,0,4653,407,1,0,0,0,4654,4655,5,191,0,0,4655,4657,5,136, + 0,0,4656,4658,3,422,211,0,4657,4656,1,0,0,0,4657,4658,1,0,0,0,4658, + 4659,1,0,0,0,4659,4664,3,394,197,0,4660,4661,5,6,0,0,4661,4663,3, + 394,197,0,4662,4660,1,0,0,0,4663,4666,1,0,0,0,4664,4662,1,0,0,0, + 4664,4665,1,0,0,0,4665,4668,1,0,0,0,4666,4664,1,0,0,0,4667,4669, + 3,96,48,0,4668,4667,1,0,0,0,4668,4669,1,0,0,0,4669,409,1,0,0,0,4670, + 4671,5,191,0,0,4671,4673,5,278,0,0,4672,4674,3,422,211,0,4673,4672, + 1,0,0,0,4673,4674,1,0,0,0,4674,4675,1,0,0,0,4675,4680,3,416,208, + 0,4676,4677,5,6,0,0,4677,4679,3,416,208,0,4678,4676,1,0,0,0,4679, + 4682,1,0,0,0,4680,4678,1,0,0,0,4680,4681,1,0,0,0,4681,4684,1,0,0, + 0,4682,4680,1,0,0,0,4683,4685,3,96,48,0,4684,4683,1,0,0,0,4684,4685, + 1,0,0,0,4685,411,1,0,0,0,4686,4699,5,2,0,0,4687,4690,3,652,326,0, + 4688,4689,5,6,0,0,4689,4691,3,652,326,0,4690,4688,1,0,0,0,4690,4691, + 1,0,0,0,4691,4700,1,0,0,0,4692,4693,5,407,0,0,4693,4694,5,6,0,0, + 4694,4700,3,652,326,0,4695,4696,3,652,326,0,4696,4697,5,6,0,0,4697, + 4698,5,407,0,0,4698,4700,1,0,0,0,4699,4687,1,0,0,0,4699,4692,1,0, + 0,0,4699,4695,1,0,0,0,4700,4701,1,0,0,0,4701,4702,5,3,0,0,4702,413, + 1,0,0,0,4703,4704,3,818,409,0,4704,4705,5,11,0,0,4705,4707,1,0,0, + 0,4706,4703,1,0,0,0,4707,4710,1,0,0,0,4708,4706,1,0,0,0,4708,4709, + 1,0,0,0,4709,4711,1,0,0,0,4710,4708,1,0,0,0,4711,4712,3,720,360, + 0,4712,415,1,0,0,0,4713,4714,3,414,207,0,4714,4715,3,412,206,0,4715, + 417,1,0,0,0,4716,4720,5,57,0,0,4717,4721,3,808,404,0,4718,4719,5, + 247,0,0,4719,4721,3,58,29,0,4720,4717,1,0,0,0,4720,4718,1,0,0,0, + 4721,4722,1,0,0,0,4722,4720,1,0,0,0,4722,4723,1,0,0,0,4723,419,1, + 0,0,0,4724,4725,5,46,0,0,4725,4726,5,41,0,0,4726,4727,5,2,0,0,4727, + 4728,3,652,326,0,4728,4729,5,36,0,0,4729,4730,3,652,326,0,4730,4747, + 5,3,0,0,4731,4732,5,379,0,0,4732,4735,5,211,0,0,4733,4734,5,36,0, + 0,4734,4736,7,60,0,0,4735,4733,1,0,0,0,4735,4736,1,0,0,0,4736,4748, + 1,0,0,0,4737,4741,5,105,0,0,4738,4739,5,211,0,0,4739,4742,3,382, + 191,0,4740,4742,5,400,0,0,4741,4738,1,0,0,0,4741,4740,1,0,0,0,4742, + 4745,1,0,0,0,4743,4744,5,36,0,0,4744,4746,7,60,0,0,4745,4743,1,0, + 0,0,4745,4746,1,0,0,0,4746,4748,1,0,0,0,4747,4731,1,0,0,0,4747,4737, + 1,0,0,0,4748,421,1,0,0,0,4749,4750,5,220,0,0,4750,4751,5,396,0,0, + 4751,423,1,0,0,0,4752,4754,5,46,0,0,4753,4755,3,366,183,0,4754,4753, + 1,0,0,0,4754,4755,1,0,0,0,4755,4756,1,0,0,0,4756,4757,5,443,0,0, + 4757,4758,5,62,0,0,4758,4759,3,652,326,0,4759,4760,5,247,0,0,4760, + 4761,3,818,409,0,4761,4776,5,2,0,0,4762,4763,5,64,0,0,4763,4767, + 3,426,213,0,4764,4765,5,6,0,0,4765,4766,5,94,0,0,4766,4768,3,426, + 213,0,4767,4764,1,0,0,0,4767,4768,1,0,0,0,4768,4777,1,0,0,0,4769, + 4770,5,94,0,0,4770,4774,3,426,213,0,4771,4772,5,6,0,0,4772,4773, + 5,64,0,0,4773,4775,3,426,213,0,4774,4771,1,0,0,0,4774,4775,1,0,0, + 0,4775,4777,1,0,0,0,4776,4762,1,0,0,0,4776,4769,1,0,0,0,4777,4778, + 1,0,0,0,4778,4779,5,3,0,0,4779,425,1,0,0,0,4780,4781,5,461,0,0,4781, + 4782,5,105,0,0,4782,4783,5,211,0,0,4783,4784,3,382,191,0,4784,427, + 1,0,0,0,4785,4796,5,306,0,0,4786,4787,5,2,0,0,4787,4792,5,128,0, + 0,4788,4789,5,6,0,0,4789,4791,5,128,0,0,4790,4788,1,0,0,0,4791,4794, + 1,0,0,0,4792,4790,1,0,0,0,4792,4793,1,0,0,0,4793,4795,1,0,0,0,4794, + 4792,1,0,0,0,4795,4797,5,3,0,0,4796,4786,1,0,0,0,4796,4797,1,0,0, + 0,4797,4823,1,0,0,0,4798,4800,5,226,0,0,4799,4801,5,109,0,0,4800, + 4799,1,0,0,0,4800,4801,1,0,0,0,4801,4802,1,0,0,0,4802,4824,3,780, + 390,0,4803,4805,5,92,0,0,4804,4806,5,109,0,0,4805,4804,1,0,0,0,4805, + 4806,1,0,0,0,4806,4807,1,0,0,0,4807,4824,3,774,387,0,4808,4810,5, + 323,0,0,4809,4811,5,109,0,0,4810,4809,1,0,0,0,4810,4811,1,0,0,0, + 4811,4812,1,0,0,0,4812,4824,3,790,395,0,4813,4815,5,349,0,0,4814, + 4816,5,109,0,0,4815,4814,1,0,0,0,4815,4816,1,0,0,0,4816,4817,1,0, + 0,0,4817,4824,3,818,409,0,4818,4820,5,175,0,0,4819,4821,5,109,0, + 0,4820,4819,1,0,0,0,4820,4821,1,0,0,0,4821,4822,1,0,0,0,4822,4824, + 3,788,394,0,4823,4798,1,0,0,0,4823,4803,1,0,0,0,4823,4808,1,0,0, + 0,4823,4813,1,0,0,0,4823,4818,1,0,0,0,4824,429,1,0,0,0,4825,4826, + 5,138,0,0,4826,4827,3,176,88,0,4827,4828,7,16,0,0,4828,4829,3,100, + 50,0,4829,431,1,0,0,0,4830,4835,5,138,0,0,4831,4832,5,136,0,0,4832, + 4836,3,394,197,0,4833,4834,5,442,0,0,4834,4836,3,374,187,0,4835, + 4831,1,0,0,0,4835,4833,1,0,0,0,4836,4837,1,0,0,0,4837,4838,5,309, + 0,0,4838,4839,5,94,0,0,4839,4840,3,818,409,0,4840,5038,1,0,0,0,4841, + 4842,5,138,0,0,4842,4843,5,175,0,0,4843,4844,3,788,394,0,4844,4845, + 5,309,0,0,4845,4846,5,94,0,0,4846,4847,3,786,393,0,4847,5038,1,0, + 0,0,4848,4849,5,138,0,0,4849,4850,7,61,0,0,4850,4851,3,316,158,0, + 4851,4852,5,309,0,0,4852,4853,5,94,0,0,4853,4854,3,818,409,0,4854, + 5038,1,0,0,0,4855,4856,5,138,0,0,4856,4857,5,211,0,0,4857,4858,3, + 382,191,0,4858,4859,5,309,0,0,4859,4860,5,94,0,0,4860,4861,3,804, + 402,0,4861,5038,1,0,0,0,4862,4863,5,138,0,0,4863,4864,5,278,0,0, + 4864,4865,7,31,0,0,4865,4866,3,316,158,0,4866,4867,3,170,85,0,4867, + 4868,5,309,0,0,4868,4869,5,94,0,0,4869,4870,3,818,409,0,4870,5038, + 1,0,0,0,4871,4872,5,138,0,0,4872,4873,5,296,0,0,4873,4874,3,378, + 189,0,4874,4875,5,309,0,0,4875,4876,5,94,0,0,4876,4877,3,798,399, + 0,4877,5038,1,0,0,0,4878,4879,5,138,0,0,4879,4880,5,323,0,0,4880, + 4881,3,790,395,0,4881,4882,5,309,0,0,4882,4883,5,94,0,0,4883,4884, + 3,32,16,0,4884,5038,1,0,0,0,4885,4886,5,138,0,0,4886,4888,7,62,0, + 0,4887,4889,3,422,211,0,4888,4887,1,0,0,0,4888,4889,1,0,0,0,4889, + 4890,1,0,0,0,4890,4891,3,780,390,0,4891,4892,5,309,0,0,4892,4893, + 5,94,0,0,4893,4894,3,818,409,0,4894,5038,1,0,0,0,4895,4897,5,138, + 0,0,4896,4898,5,259,0,0,4897,4896,1,0,0,0,4897,4898,1,0,0,0,4898, + 4899,1,0,0,0,4899,4901,5,376,0,0,4900,4902,3,422,211,0,4901,4900, + 1,0,0,0,4901,4902,1,0,0,0,4902,4903,1,0,0,0,4903,4904,3,778,389, + 0,4904,4905,5,309,0,0,4905,4906,5,94,0,0,4906,4907,3,776,388,0,4907, + 5038,1,0,0,0,4908,4910,5,138,0,0,4909,4911,5,63,0,0,4910,4909,1, + 0,0,0,4910,4911,1,0,0,0,4911,4912,1,0,0,0,4912,4914,5,92,0,0,4913, + 4915,3,422,211,0,4914,4913,1,0,0,0,4914,4915,1,0,0,0,4915,4916,1, + 0,0,0,4916,4917,3,624,312,0,4917,4918,5,309,0,0,4918,4919,5,94,0, + 0,4919,4920,3,772,386,0,4920,5038,1,0,0,0,4921,4946,5,138,0,0,4922, + 4924,5,63,0,0,4923,4922,1,0,0,0,4923,4924,1,0,0,0,4924,4925,1,0, + 0,0,4925,4927,5,92,0,0,4926,4928,3,422,211,0,4927,4926,1,0,0,0,4927, + 4928,1,0,0,0,4928,4929,1,0,0,0,4929,4930,3,624,312,0,4930,4932,5, + 309,0,0,4931,4933,5,44,0,0,4932,4931,1,0,0,0,4932,4933,1,0,0,0,4933, + 4947,1,0,0,0,4934,4936,5,259,0,0,4935,4934,1,0,0,0,4935,4936,1,0, + 0,0,4936,4937,1,0,0,0,4937,4939,5,376,0,0,4938,4940,3,422,211,0, + 4939,4938,1,0,0,0,4939,4940,1,0,0,0,4940,4941,1,0,0,0,4941,4942, + 3,778,389,0,4942,4944,5,309,0,0,4943,4945,5,44,0,0,4944,4943,1,0, + 0,0,4944,4945,1,0,0,0,4945,4947,1,0,0,0,4946,4923,1,0,0,0,4946,4935, + 1,0,0,0,4947,4948,1,0,0,0,4948,4949,3,800,400,0,4949,4950,5,94,0, + 0,4950,4951,3,802,401,0,4951,5038,1,0,0,0,4952,4960,5,138,0,0,4953, + 4955,5,92,0,0,4954,4956,3,422,211,0,4955,4954,1,0,0,0,4955,4956, + 1,0,0,0,4956,4957,1,0,0,0,4957,4961,3,624,312,0,4958,4959,5,189, + 0,0,4959,4961,3,316,158,0,4960,4953,1,0,0,0,4960,4958,1,0,0,0,4961, + 4962,1,0,0,0,4962,4963,5,309,0,0,4963,4964,5,45,0,0,4964,4965,3, + 818,409,0,4965,4966,5,94,0,0,4966,4967,3,818,409,0,4967,5038,1,0, + 0,0,4968,4975,5,138,0,0,4969,4971,5,445,0,0,4970,4972,3,422,211, + 0,4971,4970,1,0,0,0,4971,4972,1,0,0,0,4972,4976,1,0,0,0,4973,4976, + 5,321,0,0,4974,4976,5,357,0,0,4975,4969,1,0,0,0,4975,4973,1,0,0, + 0,4975,4974,1,0,0,0,4976,4977,1,0,0,0,4977,4978,3,818,409,0,4978, + 4979,5,80,0,0,4979,4980,3,780,390,0,4980,4981,5,309,0,0,4981,4982, + 5,94,0,0,4982,4983,3,818,409,0,4983,5038,1,0,0,0,4984,4997,5,138, + 0,0,4985,4986,5,63,0,0,4986,4987,5,174,0,0,4987,4998,5,381,0,0,4988, + 4990,5,295,0,0,4989,4988,1,0,0,0,4989,4990,1,0,0,0,4990,4991,1,0, + 0,0,4991,4998,5,247,0,0,4992,4998,5,452,0,0,4993,4998,5,331,0,0, + 4994,4998,5,451,0,0,4995,4996,5,198,0,0,4996,4998,5,357,0,0,4997, + 4985,1,0,0,0,4997,4989,1,0,0,0,4997,4992,1,0,0,0,4997,4993,1,0,0, + 0,4997,4994,1,0,0,0,4997,4995,1,0,0,0,4998,4999,1,0,0,0,4999,5000, + 3,818,409,0,5000,5001,5,309,0,0,5001,5002,5,94,0,0,5002,5003,3,818, + 409,0,5003,5038,1,0,0,0,5004,5005,5,138,0,0,5005,5006,7,45,0,0,5006, + 5007,3,814,407,0,5007,5008,5,309,0,0,5008,5009,5,94,0,0,5009,5010, + 3,814,407,0,5010,5038,1,0,0,0,5011,5012,5,138,0,0,5012,5013,3,176, + 88,0,5013,5014,5,309,0,0,5014,5015,5,94,0,0,5015,5016,3,768,384, + 0,5016,5038,1,0,0,0,5017,5018,5,138,0,0,5018,5019,5,355,0,0,5019, + 5020,5,325,0,0,5020,5021,7,41,0,0,5021,5022,3,316,158,0,5022,5023, + 5,309,0,0,5023,5024,5,94,0,0,5024,5025,3,818,409,0,5025,5038,1,0, + 0,0,5026,5027,5,138,0,0,5027,5028,5,360,0,0,5028,5029,3,316,158, + 0,5029,5030,5,309,0,0,5030,5031,5,143,0,0,5031,5032,3,818,409,0, + 5032,5033,5,94,0,0,5033,5035,3,818,409,0,5034,5036,3,96,48,0,5035, + 5034,1,0,0,0,5035,5036,1,0,0,0,5036,5038,1,0,0,0,5037,4830,1,0,0, + 0,5037,4841,1,0,0,0,5037,4848,1,0,0,0,5037,4855,1,0,0,0,5037,4862, + 1,0,0,0,5037,4871,1,0,0,0,5037,4878,1,0,0,0,5037,4885,1,0,0,0,5037, + 4895,1,0,0,0,5037,4908,1,0,0,0,5037,4921,1,0,0,0,5037,4952,1,0,0, + 0,5037,4968,1,0,0,0,5037,4984,1,0,0,0,5037,5004,1,0,0,0,5037,5011, + 1,0,0,0,5037,5017,1,0,0,0,5037,5026,1,0,0,0,5038,433,1,0,0,0,5039, + 5056,5,138,0,0,5040,5041,5,211,0,0,5041,5057,3,382,191,0,5042,5043, + 5,296,0,0,5043,5057,3,378,189,0,5044,5045,5,442,0,0,5045,5057,3, + 374,187,0,5046,5047,5,357,0,0,5047,5048,3,818,409,0,5048,5049,5, + 80,0,0,5049,5050,3,780,390,0,5050,5057,1,0,0,0,5051,5052,5,259,0, + 0,5052,5053,5,376,0,0,5053,5057,3,778,389,0,5054,5055,5,226,0,0, + 5055,5057,3,780,390,0,5056,5040,1,0,0,0,5056,5042,1,0,0,0,5056,5044, + 1,0,0,0,5056,5046,1,0,0,0,5056,5051,1,0,0,0,5056,5054,1,0,0,0,5057, + 5059,1,0,0,0,5058,5060,5,269,0,0,5059,5058,1,0,0,0,5059,5060,1,0, + 0,0,5060,5061,1,0,0,0,5061,5062,5,462,0,0,5062,5063,5,80,0,0,5063, + 5064,5,204,0,0,5064,5065,3,818,409,0,5065,435,1,0,0,0,5066,5105, + 5,138,0,0,5067,5068,5,136,0,0,5068,5106,3,394,197,0,5069,5070,5, + 204,0,0,5070,5106,3,818,409,0,5071,5072,5,211,0,0,5072,5106,3,382, + 191,0,5073,5074,5,278,0,0,5074,5106,3,416,208,0,5075,5076,5,278, + 0,0,5076,5077,7,31,0,0,5077,5078,3,316,158,0,5078,5079,3,170,85, + 0,5079,5106,1,0,0,0,5080,5081,5,296,0,0,5081,5106,3,378,189,0,5082, + 5083,5,442,0,0,5083,5106,3,374,187,0,5084,5086,5,328,0,0,5085,5087, + 3,422,211,0,5086,5085,1,0,0,0,5086,5087,1,0,0,0,5087,5088,1,0,0, + 0,5088,5106,3,780,390,0,5089,5091,5,259,0,0,5090,5089,1,0,0,0,5090, + 5091,1,0,0,0,5091,5092,1,0,0,0,5092,5094,5,376,0,0,5093,5095,3,422, + 211,0,5094,5093,1,0,0,0,5094,5095,1,0,0,0,5095,5096,1,0,0,0,5096, + 5106,3,778,389,0,5097,5099,5,63,0,0,5098,5097,1,0,0,0,5098,5099, + 1,0,0,0,5099,5100,1,0,0,0,5100,5102,5,92,0,0,5101,5103,3,422,211, + 0,5102,5101,1,0,0,0,5102,5103,1,0,0,0,5103,5104,1,0,0,0,5104,5106, + 3,624,312,0,5105,5067,1,0,0,0,5105,5069,1,0,0,0,5105,5071,1,0,0, + 0,5105,5073,1,0,0,0,5105,5075,1,0,0,0,5105,5080,1,0,0,0,5105,5082, + 1,0,0,0,5105,5084,1,0,0,0,5105,5090,1,0,0,0,5105,5098,1,0,0,0,5106, + 5107,1,0,0,0,5107,5108,5,333,0,0,5108,5109,5,323,0,0,5109,5110,3, + 790,395,0,5110,5128,1,0,0,0,5111,5120,5,138,0,0,5112,5113,5,355, + 0,0,5113,5114,5,325,0,0,5114,5121,7,41,0,0,5115,5121,5,108,0,0,5116, + 5121,5,168,0,0,5117,5121,5,189,0,0,5118,5121,5,342,0,0,5119,5121, + 5,360,0,0,5120,5112,1,0,0,0,5120,5115,1,0,0,0,5120,5116,1,0,0,0, + 5120,5117,1,0,0,0,5120,5118,1,0,0,0,5120,5119,1,0,0,0,5121,5122, + 1,0,0,0,5122,5123,3,316,158,0,5123,5124,5,333,0,0,5124,5125,5,323, + 0,0,5125,5126,3,790,395,0,5126,5128,1,0,0,0,5127,5066,1,0,0,0,5127, + 5111,1,0,0,0,5128,437,1,0,0,0,5129,5130,5,138,0,0,5130,5131,5,278, + 0,0,5131,5132,3,416,208,0,5132,5133,5,333,0,0,5133,5134,3,440,220, + 0,5134,439,1,0,0,0,5135,5136,5,2,0,0,5136,5141,3,442,221,0,5137, + 5138,5,6,0,0,5138,5140,3,442,221,0,5139,5137,1,0,0,0,5140,5143,1, + 0,0,0,5141,5139,1,0,0,0,5141,5142,1,0,0,0,5142,5144,1,0,0,0,5143, + 5141,1,0,0,0,5144,5145,5,3,0,0,5145,441,1,0,0,0,5146,5147,3,824, + 412,0,5147,5154,5,10,0,0,5148,5155,5,407,0,0,5149,5155,3,388,194, + 0,5150,5155,3,834,417,0,5151,5155,3,726,363,0,5152,5155,3,202,101, + 0,5153,5155,3,808,404,0,5154,5148,1,0,0,0,5154,5149,1,0,0,0,5154, + 5150,1,0,0,0,5154,5151,1,0,0,0,5154,5152,1,0,0,0,5154,5153,1,0,0, + 0,5155,443,1,0,0,0,5156,5157,5,138,0,0,5157,5158,5,360,0,0,5158, + 5159,3,316,158,0,5159,5160,5,333,0,0,5160,5161,3,440,220,0,5161, + 445,1,0,0,0,5162,5163,5,138,0,0,5163,5164,5,278,0,0,5164,5165,7, + 31,0,0,5165,5166,3,316,158,0,5166,5167,3,170,85,0,5167,5168,5,282, + 0,0,5168,5169,5,94,0,0,5169,5170,3,814,407,0,5170,5237,1,0,0,0,5171, + 5198,5,138,0,0,5172,5173,5,136,0,0,5173,5199,3,394,197,0,5174,5175, + 5,175,0,0,5175,5199,3,788,394,0,5176,5177,5,211,0,0,5177,5199,3, + 382,191,0,5178,5180,5,295,0,0,5179,5178,1,0,0,0,5179,5180,1,0,0, + 0,5180,5181,1,0,0,0,5181,5182,5,247,0,0,5182,5199,3,818,409,0,5183, + 5184,5,248,0,0,5184,5185,5,274,0,0,5185,5199,3,202,101,0,5186,5187, + 5,248,0,0,5187,5188,5,274,0,0,5188,5199,3,202,101,0,5189,5190,5, + 278,0,0,5190,5199,3,416,208,0,5191,5192,5,296,0,0,5192,5199,3,378, + 189,0,5193,5194,5,442,0,0,5194,5199,3,374,187,0,5195,5196,5,323, + 0,0,5196,5199,3,790,395,0,5197,5199,3,176,88,0,5198,5172,1,0,0,0, + 5198,5174,1,0,0,0,5198,5176,1,0,0,0,5198,5179,1,0,0,0,5198,5183, + 1,0,0,0,5198,5186,1,0,0,0,5198,5189,1,0,0,0,5198,5191,1,0,0,0,5198, + 5193,1,0,0,0,5198,5195,1,0,0,0,5198,5197,1,0,0,0,5199,5200,1,0,0, + 0,5200,5201,5,282,0,0,5201,5202,5,94,0,0,5202,5203,3,814,407,0,5203, + 5237,1,0,0,0,5204,5213,5,138,0,0,5205,5206,5,355,0,0,5206,5207,5, + 325,0,0,5207,5214,7,63,0,0,5208,5214,5,108,0,0,5209,5214,5,168,0, + 0,5210,5214,5,189,0,0,5211,5214,5,360,0,0,5212,5214,5,342,0,0,5213, + 5205,1,0,0,0,5213,5208,1,0,0,0,5213,5209,1,0,0,0,5213,5210,1,0,0, + 0,5213,5211,1,0,0,0,5213,5212,1,0,0,0,5214,5215,1,0,0,0,5215,5216, + 3,316,158,0,5216,5217,5,282,0,0,5217,5218,5,94,0,0,5218,5219,3,814, + 407,0,5219,5237,1,0,0,0,5220,5229,5,138,0,0,5221,5230,5,331,0,0, + 5222,5223,5,63,0,0,5223,5224,5,174,0,0,5224,5230,5,381,0,0,5225, + 5226,5,198,0,0,5226,5230,5,357,0,0,5227,5230,5,452,0,0,5228,5230, + 5,451,0,0,5229,5221,1,0,0,0,5229,5222,1,0,0,0,5229,5225,1,0,0,0, + 5229,5227,1,0,0,0,5229,5228,1,0,0,0,5230,5231,1,0,0,0,5231,5232, + 3,818,409,0,5232,5233,5,282,0,0,5233,5234,5,94,0,0,5234,5235,3,814, + 407,0,5235,5237,1,0,0,0,5236,5162,1,0,0,0,5236,5171,1,0,0,0,5236, + 5204,1,0,0,0,5236,5220,1,0,0,0,5237,447,1,0,0,0,5238,5239,5,46,0, + 0,5239,5240,5,452,0,0,5240,5247,3,818,409,0,5241,5242,5,62,0,0,5242, + 5243,5,92,0,0,5243,5248,3,628,314,0,5244,5245,5,62,0,0,5245,5246, + 5,30,0,0,5246,5248,5,350,0,0,5247,5241,1,0,0,0,5247,5244,1,0,0,0, + 5247,5248,1,0,0,0,5248,5250,1,0,0,0,5249,5251,3,400,200,0,5250,5249, + 1,0,0,0,5250,5251,1,0,0,0,5251,449,1,0,0,0,5252,5253,5,138,0,0,5253, + 5254,5,452,0,0,5254,5272,3,818,409,0,5255,5256,5,282,0,0,5256,5257, + 5,94,0,0,5257,5273,3,814,407,0,5258,5259,5,333,0,0,5259,5273,3,284, + 142,0,5260,5261,5,309,0,0,5261,5262,5,94,0,0,5262,5273,3,818,409, + 0,5263,5264,7,34,0,0,5264,5269,3,626,313,0,5265,5266,5,6,0,0,5266, + 5268,3,626,313,0,5267,5265,1,0,0,0,5268,5271,1,0,0,0,5269,5267,1, + 0,0,0,5269,5270,1,0,0,0,5270,5273,1,0,0,0,5271,5269,1,0,0,0,5272, + 5255,1,0,0,0,5272,5258,1,0,0,0,5272,5260,1,0,0,0,5272,5263,1,0,0, + 0,5273,451,1,0,0,0,5274,5275,5,46,0,0,5275,5276,5,451,0,0,5276,5277, + 3,818,409,0,5277,5278,5,164,0,0,5278,5279,3,808,404,0,5279,5280, + 5,452,0,0,5280,5285,3,824,412,0,5281,5282,5,6,0,0,5282,5284,3,824, + 412,0,5283,5281,1,0,0,0,5284,5287,1,0,0,0,5285,5283,1,0,0,0,5285, + 5286,1,0,0,0,5286,5289,1,0,0,0,5287,5285,1,0,0,0,5288,5290,3,400, + 200,0,5289,5288,1,0,0,0,5289,5290,1,0,0,0,5290,453,1,0,0,0,5291, + 5292,5,138,0,0,5292,5293,5,451,0,0,5293,5294,3,818,409,0,5294,5295, + 5,333,0,0,5295,5296,3,284,142,0,5296,5348,1,0,0,0,5297,5298,5,138, + 0,0,5298,5299,5,451,0,0,5299,5300,3,818,409,0,5300,5301,5,164,0, + 0,5301,5302,3,808,404,0,5302,5348,1,0,0,0,5303,5304,5,138,0,0,5304, + 5305,5,451,0,0,5305,5306,3,818,409,0,5306,5307,5,305,0,0,5307,5309, + 5,452,0,0,5308,5310,3,400,200,0,5309,5308,1,0,0,0,5309,5310,1,0, + 0,0,5310,5348,1,0,0,0,5311,5312,5,138,0,0,5312,5313,5,451,0,0,5313, + 5314,3,818,409,0,5314,5315,7,34,0,0,5315,5316,5,452,0,0,5316,5321, + 3,824,412,0,5317,5318,5,6,0,0,5318,5320,3,824,412,0,5319,5317,1, + 0,0,0,5320,5323,1,0,0,0,5321,5319,1,0,0,0,5321,5322,1,0,0,0,5322, + 5325,1,0,0,0,5323,5321,1,0,0,0,5324,5326,3,400,200,0,5325,5324,1, + 0,0,0,5325,5326,1,0,0,0,5326,5348,1,0,0,0,5327,5328,5,138,0,0,5328, + 5329,5,451,0,0,5329,5330,3,818,409,0,5330,5331,7,64,0,0,5331,5348, + 1,0,0,0,5332,5333,5,138,0,0,5333,5334,5,451,0,0,5334,5335,3,818, + 409,0,5335,5336,5,465,0,0,5336,5337,5,2,0,0,5337,5338,3,290,145, + 0,5338,5339,5,3,0,0,5339,5348,1,0,0,0,5340,5341,5,138,0,0,5341,5342, + 5,451,0,0,5342,5343,3,818,409,0,5343,5344,5,282,0,0,5344,5345,5, + 94,0,0,5345,5346,3,814,407,0,5346,5348,1,0,0,0,5347,5291,1,0,0,0, + 5347,5297,1,0,0,0,5347,5303,1,0,0,0,5347,5311,1,0,0,0,5347,5327, + 1,0,0,0,5347,5332,1,0,0,0,5347,5340,1,0,0,0,5348,455,1,0,0,0,5349, + 5351,5,46,0,0,5350,5352,3,366,183,0,5351,5350,1,0,0,0,5351,5352, + 1,0,0,0,5352,5353,1,0,0,0,5353,5354,5,321,0,0,5354,5355,3,818,409, + 0,5355,5356,5,36,0,0,5356,5357,5,80,0,0,5357,5358,7,65,0,0,5358, + 5359,5,94,0,0,5359,5361,3,780,390,0,5360,5362,3,638,319,0,5361,5360, + 1,0,0,0,5361,5362,1,0,0,0,5362,5363,1,0,0,0,5363,5365,5,57,0,0,5364, + 5366,7,66,0,0,5365,5364,1,0,0,0,5365,5366,1,0,0,0,5366,5383,1,0, + 0,0,5367,5384,5,270,0,0,5368,5384,3,458,229,0,5369,5371,5,2,0,0, + 5370,5372,3,458,229,0,5371,5370,1,0,0,0,5371,5372,1,0,0,0,5372,5379, + 1,0,0,0,5373,5375,5,7,0,0,5374,5376,3,458,229,0,5375,5374,1,0,0, + 0,5375,5376,1,0,0,0,5376,5378,1,0,0,0,5377,5373,1,0,0,0,5378,5381, + 1,0,0,0,5379,5377,1,0,0,0,5379,5380,1,0,0,0,5380,5382,1,0,0,0,5381, + 5379,1,0,0,0,5382,5384,5,3,0,0,5383,5367,1,0,0,0,5383,5368,1,0,0, + 0,5383,5369,1,0,0,0,5384,457,1,0,0,0,5385,5391,3,560,280,0,5386, + 5391,3,538,269,0,5387,5391,3,552,276,0,5388,5391,3,548,274,0,5389, + 5391,3,460,230,0,5390,5385,1,0,0,0,5390,5386,1,0,0,0,5390,5387,1, + 0,0,0,5390,5388,1,0,0,0,5390,5389,1,0,0,0,5391,459,1,0,0,0,5392, + 5393,5,271,0,0,5393,5395,3,818,409,0,5394,5396,3,462,231,0,5395, + 5394,1,0,0,0,5395,5396,1,0,0,0,5396,461,1,0,0,0,5397,5398,5,6,0, + 0,5398,5399,3,808,404,0,5399,463,1,0,0,0,5400,5401,5,252,0,0,5401, + 5402,3,818,409,0,5402,465,1,0,0,0,5403,5406,5,366,0,0,5404,5407, + 3,818,409,0,5405,5407,5,9,0,0,5406,5404,1,0,0,0,5406,5405,1,0,0, + 0,5407,467,1,0,0,0,5408,5410,5,146,0,0,5409,5411,3,470,235,0,5410, + 5409,1,0,0,0,5410,5411,1,0,0,0,5411,5413,1,0,0,0,5412,5414,3,474, + 237,0,5413,5412,1,0,0,0,5413,5414,1,0,0,0,5414,5454,1,0,0,0,5415, + 5416,5,340,0,0,5416,5418,5,356,0,0,5417,5419,3,474,237,0,5418,5417, + 1,0,0,0,5418,5419,1,0,0,0,5419,5454,1,0,0,0,5420,5421,5,322,0,0, + 5421,5454,3,818,409,0,5422,5424,5,308,0,0,5423,5425,5,322,0,0,5424, + 5423,1,0,0,0,5424,5425,1,0,0,0,5425,5426,1,0,0,0,5426,5454,3,818, + 409,0,5427,5428,5,290,0,0,5428,5429,5,356,0,0,5429,5454,3,808,404, + 0,5430,5431,7,67,0,0,5431,5432,5,291,0,0,5432,5454,3,808,404,0,5433, + 5435,7,68,0,0,5434,5436,3,470,235,0,5435,5434,1,0,0,0,5435,5436, + 1,0,0,0,5436,5442,1,0,0,0,5437,5439,5,33,0,0,5438,5440,5,269,0,0, + 5439,5438,1,0,0,0,5439,5440,1,0,0,0,5440,5441,1,0,0,0,5441,5443, + 5,153,0,0,5442,5437,1,0,0,0,5442,5443,1,0,0,0,5443,5454,1,0,0,0, + 5444,5446,5,319,0,0,5445,5447,3,470,235,0,5446,5445,1,0,0,0,5446, + 5447,1,0,0,0,5447,5448,1,0,0,0,5448,5450,5,94,0,0,5449,5451,5,322, + 0,0,5450,5449,1,0,0,0,5450,5451,1,0,0,0,5451,5452,1,0,0,0,5452,5454, + 3,818,409,0,5453,5408,1,0,0,0,5453,5415,1,0,0,0,5453,5420,1,0,0, + 0,5453,5422,1,0,0,0,5453,5427,1,0,0,0,5453,5430,1,0,0,0,5453,5433, + 1,0,0,0,5453,5444,1,0,0,0,5454,469,1,0,0,0,5455,5456,7,69,0,0,5456, + 471,1,0,0,0,5457,5458,5,244,0,0,5458,5459,5,251,0,0,5459,5467,3, + 50,25,0,5460,5461,5,300,0,0,5461,5467,7,70,0,0,5462,5464,5,77,0, + 0,5463,5462,1,0,0,0,5463,5464,1,0,0,0,5464,5465,1,0,0,0,5465,5467, + 5,54,0,0,5466,5457,1,0,0,0,5466,5460,1,0,0,0,5466,5463,1,0,0,0,5467, + 473,1,0,0,0,5468,5475,3,472,236,0,5469,5471,5,6,0,0,5470,5469,1, + 0,0,0,5470,5471,1,0,0,0,5471,5472,1,0,0,0,5472,5474,3,472,236,0, + 5473,5470,1,0,0,0,5474,5477,1,0,0,0,5475,5473,1,0,0,0,5475,5476, + 1,0,0,0,5476,475,1,0,0,0,5477,5475,1,0,0,0,5478,5481,5,46,0,0,5479, + 5480,5,82,0,0,5480,5482,5,311,0,0,5481,5479,1,0,0,0,5481,5482,1, + 0,0,0,5482,5484,1,0,0,0,5483,5485,3,122,61,0,5484,5483,1,0,0,0,5484, + 5485,1,0,0,0,5485,5501,1,0,0,0,5486,5487,5,376,0,0,5487,5489,3,776, + 388,0,5488,5490,3,146,73,0,5489,5488,1,0,0,0,5489,5490,1,0,0,0,5490, + 5492,1,0,0,0,5491,5493,3,102,51,0,5492,5491,1,0,0,0,5492,5493,1, + 0,0,0,5493,5502,1,0,0,0,5494,5495,5,303,0,0,5495,5496,5,376,0,0, + 5496,5497,3,776,388,0,5497,5499,3,144,72,0,5498,5500,3,102,51,0, + 5499,5498,1,0,0,0,5499,5500,1,0,0,0,5500,5502,1,0,0,0,5501,5486, + 1,0,0,0,5501,5494,1,0,0,0,5502,5503,1,0,0,0,5503,5504,5,36,0,0,5504, + 5511,3,560,280,0,5505,5507,5,105,0,0,5506,5508,7,71,0,0,5507,5506, + 1,0,0,0,5507,5508,1,0,0,0,5508,5509,1,0,0,0,5509,5510,5,42,0,0,5510, + 5512,5,279,0,0,5511,5505,1,0,0,0,5511,5512,1,0,0,0,5512,477,1,0, + 0,0,5513,5514,5,253,0,0,5514,5515,3,808,404,0,5515,479,1,0,0,0,5516, + 5517,5,46,0,0,5517,5518,5,175,0,0,5518,5520,3,786,393,0,5519,5521, + 5,105,0,0,5520,5519,1,0,0,0,5520,5521,1,0,0,0,5521,5527,1,0,0,0, + 5522,5524,3,482,241,0,5523,5522,1,0,0,0,5524,5525,1,0,0,0,5525,5523, + 1,0,0,0,5525,5526,1,0,0,0,5526,5528,1,0,0,0,5527,5523,1,0,0,0,5527, + 5528,1,0,0,0,5528,481,1,0,0,0,5529,5530,5,164,0,0,5530,5538,5,74, + 0,0,5531,5538,5,194,0,0,5532,5538,5,255,0,0,5533,5538,5,282,0,0, + 5534,5538,5,351,0,0,5535,5538,5,353,0,0,5536,5538,3,826,413,0,5537, + 5529,1,0,0,0,5537,5531,1,0,0,0,5537,5532,1,0,0,0,5537,5533,1,0,0, + 0,5537,5534,1,0,0,0,5537,5535,1,0,0,0,5537,5536,1,0,0,0,5538,5540, + 1,0,0,0,5539,5541,5,10,0,0,5540,5539,1,0,0,0,5540,5541,1,0,0,0,5541, + 5545,1,0,0,0,5542,5546,3,812,406,0,5543,5546,3,54,27,0,5544,5546, + 5,53,0,0,5545,5542,1,0,0,0,5545,5543,1,0,0,0,5545,5544,1,0,0,0,5546, + 483,1,0,0,0,5547,5548,5,138,0,0,5548,5549,5,175,0,0,5549,5565,3, + 788,394,0,5550,5551,5,333,0,0,5551,5552,5,351,0,0,5552,5554,3,768, + 384,0,5553,5550,1,0,0,0,5553,5554,1,0,0,0,5554,5566,1,0,0,0,5555, + 5557,5,105,0,0,5556,5555,1,0,0,0,5556,5557,1,0,0,0,5557,5559,1,0, + 0,0,5558,5560,3,482,241,0,5559,5558,1,0,0,0,5560,5561,1,0,0,0,5561, + 5559,1,0,0,0,5561,5562,1,0,0,0,5562,5564,1,0,0,0,5563,5556,1,0,0, + 0,5563,5564,1,0,0,0,5564,5566,1,0,0,0,5565,5553,1,0,0,0,5565,5563, + 1,0,0,0,5566,485,1,0,0,0,5567,5568,5,138,0,0,5568,5569,5,175,0,0, + 5569,5571,3,788,394,0,5570,5572,3,64,32,0,5571,5570,1,0,0,0,5571, + 5572,1,0,0,0,5572,487,1,0,0,0,5573,5574,5,138,0,0,5574,5575,5,108, + 0,0,5575,5576,3,316,158,0,5576,5577,5,305,0,0,5577,5578,5,375,0, + 0,5578,489,1,0,0,0,5579,5580,5,138,0,0,5580,5581,5,349,0,0,5581, + 5582,7,16,0,0,5582,5583,3,40,20,0,5583,491,1,0,0,0,5584,5585,5,46, + 0,0,5585,5586,5,189,0,0,5586,5588,3,316,158,0,5587,5589,5,36,0,0, + 5588,5587,1,0,0,0,5588,5589,1,0,0,0,5589,5590,1,0,0,0,5590,5594, + 3,652,326,0,5591,5593,3,134,67,0,5592,5591,1,0,0,0,5593,5596,1,0, + 0,0,5594,5592,1,0,0,0,5594,5595,1,0,0,0,5595,493,1,0,0,0,5596,5594, + 1,0,0,0,5597,5598,5,138,0,0,5598,5599,5,189,0,0,5599,5622,3,316, + 158,0,5600,5623,3,94,47,0,5601,5602,7,15,0,0,5602,5603,5,77,0,0, + 5603,5623,5,78,0,0,5604,5607,5,133,0,0,5605,5606,5,45,0,0,5606,5608, + 3,818,409,0,5607,5605,1,0,0,0,5607,5608,1,0,0,0,5608,5609,1,0,0, + 0,5609,5623,3,142,71,0,5610,5611,5,191,0,0,5611,5613,5,45,0,0,5612, + 5614,3,422,211,0,5613,5612,1,0,0,0,5613,5614,1,0,0,0,5614,5615,1, + 0,0,0,5615,5617,3,818,409,0,5616,5618,3,96,48,0,5617,5616,1,0,0, + 0,5617,5618,1,0,0,0,5618,5623,1,0,0,0,5619,5620,5,372,0,0,5620,5621, + 5,45,0,0,5621,5623,3,818,409,0,5622,5600,1,0,0,0,5622,5601,1,0,0, + 0,5622,5604,1,0,0,0,5622,5610,1,0,0,0,5622,5619,1,0,0,0,5623,495, + 1,0,0,0,5624,5625,5,138,0,0,5625,5626,5,355,0,0,5626,5627,5,325, + 0,0,5627,5628,5,185,0,0,5628,5629,3,316,158,0,5629,5630,3,284,142, + 0,5630,497,1,0,0,0,5631,5632,5,138,0,0,5632,5633,5,355,0,0,5633, + 5634,5,325,0,0,5634,5635,5,163,0,0,5635,5636,3,316,158,0,5636,5637, + 7,72,0,0,5637,5638,5,257,0,0,5638,5639,5,62,0,0,5639,5640,3,784, + 392,0,5640,5641,5,105,0,0,5641,5642,3,314,157,0,5642,5673,1,0,0, + 0,5643,5644,5,138,0,0,5644,5645,5,355,0,0,5645,5646,5,325,0,0,5646, + 5647,5,163,0,0,5647,5648,3,316,158,0,5648,5649,5,138,0,0,5649,5652, + 5,257,0,0,5650,5651,5,62,0,0,5651,5653,3,784,392,0,5652,5650,1,0, + 0,0,5652,5653,1,0,0,0,5653,5654,1,0,0,0,5654,5655,5,311,0,0,5655, + 5656,3,316,158,0,5656,5657,5,105,0,0,5657,5658,3,316,158,0,5658, + 5673,1,0,0,0,5659,5660,5,138,0,0,5660,5661,5,355,0,0,5661,5662,5, + 325,0,0,5662,5663,5,163,0,0,5663,5664,3,316,158,0,5664,5665,5,191, + 0,0,5665,5667,5,257,0,0,5666,5668,3,422,211,0,5667,5666,1,0,0,0, + 5667,5668,1,0,0,0,5668,5669,1,0,0,0,5669,5670,5,62,0,0,5670,5671, + 3,784,392,0,5671,5673,1,0,0,0,5672,5631,1,0,0,0,5672,5643,1,0,0, + 0,5672,5659,1,0,0,0,5673,499,1,0,0,0,5674,5676,5,46,0,0,5675,5677, + 5,53,0,0,5676,5675,1,0,0,0,5676,5677,1,0,0,0,5677,5678,1,0,0,0,5678, + 5679,5,168,0,0,5679,5680,3,316,158,0,5680,5681,5,62,0,0,5681,5682, + 3,808,404,0,5682,5683,5,94,0,0,5683,5684,3,808,404,0,5684,5685,5, + 64,0,0,5685,5686,3,316,158,0,5686,501,1,0,0,0,5687,5689,5,158,0, + 0,5688,5690,3,514,257,0,5689,5688,1,0,0,0,5689,5690,1,0,0,0,5690, + 5695,1,0,0,0,5691,5693,3,774,387,0,5692,5694,3,170,85,0,5693,5692, + 1,0,0,0,5693,5694,1,0,0,0,5694,5696,1,0,0,0,5695,5691,1,0,0,0,5695, + 5696,1,0,0,0,5696,5713,1,0,0,0,5697,5698,5,158,0,0,5698,5699,5,2, + 0,0,5699,5704,3,514,257,0,5700,5701,5,6,0,0,5701,5703,3,514,257, + 0,5702,5700,1,0,0,0,5703,5706,1,0,0,0,5704,5702,1,0,0,0,5704,5705, + 1,0,0,0,5705,5707,1,0,0,0,5706,5704,1,0,0,0,5707,5708,5,3,0,0,5708, + 5710,3,774,387,0,5709,5711,3,170,85,0,5710,5709,1,0,0,0,5710,5711, + 1,0,0,0,5711,5713,1,0,0,0,5712,5687,1,0,0,0,5712,5697,1,0,0,0,5713, + 503,1,0,0,0,5714,5730,5,370,0,0,5715,5717,5,113,0,0,5716,5715,1, + 0,0,0,5716,5717,1,0,0,0,5717,5719,1,0,0,0,5718,5720,5,112,0,0,5719, + 5718,1,0,0,0,5719,5720,1,0,0,0,5720,5722,1,0,0,0,5721,5723,3,514, + 257,0,5722,5721,1,0,0,0,5722,5723,1,0,0,0,5723,5725,1,0,0,0,5724, + 5726,3,508,254,0,5725,5724,1,0,0,0,5725,5726,1,0,0,0,5726,5731,1, + 0,0,0,5727,5729,3,524,262,0,5728,5727,1,0,0,0,5728,5729,1,0,0,0, + 5729,5731,1,0,0,0,5730,5716,1,0,0,0,5730,5728,1,0,0,0,5731,5733, + 1,0,0,0,5732,5734,3,518,259,0,5733,5732,1,0,0,0,5733,5734,1,0,0, + 0,5734,505,1,0,0,0,5735,5750,3,508,254,0,5736,5738,3,514,257,0,5737, + 5736,1,0,0,0,5737,5738,1,0,0,0,5738,5751,1,0,0,0,5739,5740,5,2,0, + 0,5740,5745,3,512,256,0,5741,5742,5,6,0,0,5742,5744,3,512,256,0, + 5743,5741,1,0,0,0,5744,5747,1,0,0,0,5745,5743,1,0,0,0,5745,5746, + 1,0,0,0,5746,5748,1,0,0,0,5747,5745,1,0,0,0,5748,5749,5,3,0,0,5749, + 5751,1,0,0,0,5750,5737,1,0,0,0,5750,5739,1,0,0,0,5751,5753,1,0,0, + 0,5752,5754,3,518,259,0,5753,5752,1,0,0,0,5753,5754,1,0,0,0,5754, + 507,1,0,0,0,5755,5756,7,73,0,0,5756,509,1,0,0,0,5757,5760,3,822, + 411,0,5758,5760,3,508,254,0,5759,5757,1,0,0,0,5759,5758,1,0,0,0, + 5760,5763,1,0,0,0,5761,5764,3,54,27,0,5762,5764,3,202,101,0,5763, + 5761,1,0,0,0,5763,5762,1,0,0,0,5763,5764,1,0,0,0,5764,511,1,0,0, + 0,5765,5767,7,74,0,0,5766,5768,7,75,0,0,5767,5766,1,0,0,0,5767,5768, + 1,0,0,0,5768,5775,1,0,0,0,5769,5772,5,548,0,0,5770,5773,3,202,101, + 0,5771,5773,3,808,404,0,5772,5770,1,0,0,0,5772,5771,1,0,0,0,5773, + 5775,1,0,0,0,5774,5765,1,0,0,0,5774,5769,1,0,0,0,5775,513,1,0,0, + 0,5776,5778,5,128,0,0,5777,5779,7,75,0,0,5778,5777,1,0,0,0,5778, + 5779,1,0,0,0,5779,515,1,0,0,0,5780,5782,3,774,387,0,5781,5783,3, + 144,72,0,5782,5781,1,0,0,0,5782,5783,1,0,0,0,5783,517,1,0,0,0,5784, + 5789,3,516,258,0,5785,5786,5,6,0,0,5786,5788,3,516,258,0,5787,5785, + 1,0,0,0,5788,5791,1,0,0,0,5789,5787,1,0,0,0,5789,5790,1,0,0,0,5790, + 519,1,0,0,0,5791,5789,1,0,0,0,5792,5803,5,203,0,0,5793,5804,3,524, + 262,0,5794,5796,5,128,0,0,5795,5794,1,0,0,0,5795,5796,1,0,0,0,5796, + 5804,1,0,0,0,5797,5799,3,508,254,0,5798,5800,3,514,257,0,5799,5798, + 1,0,0,0,5799,5800,1,0,0,0,5800,5802,1,0,0,0,5801,5797,1,0,0,0,5801, + 5802,1,0,0,0,5802,5804,1,0,0,0,5803,5793,1,0,0,0,5803,5795,1,0,0, + 0,5803,5801,1,0,0,0,5804,5805,1,0,0,0,5805,5806,3,522,261,0,5806, + 521,1,0,0,0,5807,5817,3,560,280,0,5808,5817,3,538,269,0,5809,5817, + 3,552,276,0,5810,5817,3,548,274,0,5811,5817,3,558,279,0,5812,5817, + 3,186,93,0,5813,5817,3,192,96,0,5814,5817,3,194,97,0,5815,5817,3, + 532,266,0,5816,5807,1,0,0,0,5816,5808,1,0,0,0,5816,5809,1,0,0,0, + 5816,5810,1,0,0,0,5816,5811,1,0,0,0,5816,5812,1,0,0,0,5816,5813, + 1,0,0,0,5816,5814,1,0,0,0,5816,5815,1,0,0,0,5817,523,1,0,0,0,5818, + 5819,5,2,0,0,5819,5824,3,510,255,0,5820,5821,5,6,0,0,5821,5823,3, + 510,255,0,5822,5820,1,0,0,0,5823,5826,1,0,0,0,5824,5822,1,0,0,0, + 5824,5825,1,0,0,0,5825,5827,1,0,0,0,5826,5824,1,0,0,0,5827,5828, + 5,3,0,0,5828,525,1,0,0,0,5829,5830,5,290,0,0,5830,5832,3,818,409, + 0,5831,5833,3,528,264,0,5832,5831,1,0,0,0,5832,5833,1,0,0,0,5833, + 5834,1,0,0,0,5834,5835,5,36,0,0,5835,5836,3,530,265,0,5836,527,1, + 0,0,0,5837,5838,5,2,0,0,5838,5843,3,652,326,0,5839,5840,5,6,0,0, + 5840,5842,3,652,326,0,5841,5839,1,0,0,0,5842,5845,1,0,0,0,5843,5841, + 1,0,0,0,5843,5844,1,0,0,0,5844,5846,1,0,0,0,5845,5843,1,0,0,0,5846, + 5847,5,3,0,0,5847,529,1,0,0,0,5848,5853,3,560,280,0,5849,5853,3, + 538,269,0,5850,5853,3,552,276,0,5851,5853,3,548,274,0,5852,5848, + 1,0,0,0,5852,5849,1,0,0,0,5852,5850,1,0,0,0,5852,5851,1,0,0,0,5853, + 531,1,0,0,0,5854,5855,5,202,0,0,5855,5857,3,818,409,0,5856,5858, + 3,534,267,0,5857,5856,1,0,0,0,5857,5858,1,0,0,0,5858,5878,1,0,0, + 0,5859,5861,5,46,0,0,5860,5862,3,122,61,0,5861,5860,1,0,0,0,5861, + 5862,1,0,0,0,5862,5863,1,0,0,0,5863,5865,5,92,0,0,5864,5866,3,294, + 147,0,5865,5864,1,0,0,0,5865,5866,1,0,0,0,5866,5867,1,0,0,0,5867, + 5868,3,188,94,0,5868,5869,5,36,0,0,5869,5870,5,202,0,0,5870,5872, + 3,818,409,0,5871,5873,3,534,267,0,5872,5871,1,0,0,0,5872,5873,1, + 0,0,0,5873,5875,1,0,0,0,5874,5876,3,190,95,0,5875,5874,1,0,0,0,5875, + 5876,1,0,0,0,5876,5878,1,0,0,0,5877,5854,1,0,0,0,5877,5859,1,0,0, + 0,5878,533,1,0,0,0,5879,5880,5,2,0,0,5880,5881,3,730,365,0,5881, + 5882,5,3,0,0,5882,535,1,0,0,0,5883,5885,5,177,0,0,5884,5886,5,290, + 0,0,5885,5884,1,0,0,0,5885,5886,1,0,0,0,5886,5889,1,0,0,0,5887,5890, + 3,818,409,0,5888,5890,5,30,0,0,5889,5887,1,0,0,0,5889,5888,1,0,0, + 0,5890,537,1,0,0,0,5891,5893,3,572,286,0,5892,5891,1,0,0,0,5892, + 5893,1,0,0,0,5893,5894,1,0,0,0,5894,5895,5,241,0,0,5895,5896,5,71, + 0,0,5896,5899,3,774,387,0,5897,5898,5,36,0,0,5898,5900,3,818,409, + 0,5899,5897,1,0,0,0,5899,5900,1,0,0,0,5900,5901,1,0,0,0,5901,5923, + 3,540,270,0,5902,5903,5,80,0,0,5903,5911,5,464,0,0,5904,5906,3,360, + 180,0,5905,5907,3,638,319,0,5906,5905,1,0,0,0,5906,5907,1,0,0,0, + 5907,5912,1,0,0,0,5908,5909,5,80,0,0,5909,5910,5,45,0,0,5910,5912, + 3,818,409,0,5911,5904,1,0,0,0,5911,5908,1,0,0,0,5911,5912,1,0,0, + 0,5912,5913,1,0,0,0,5913,5921,5,57,0,0,5914,5915,5,369,0,0,5915, + 5916,5,333,0,0,5916,5918,3,554,277,0,5917,5919,3,638,319,0,5918, + 5917,1,0,0,0,5918,5919,1,0,0,0,5919,5922,1,0,0,0,5920,5922,5,270, + 0,0,5921,5914,1,0,0,0,5921,5920,1,0,0,0,5922,5924,1,0,0,0,5923,5902, + 1,0,0,0,5923,5924,1,0,0,0,5924,5926,1,0,0,0,5925,5927,3,546,273, + 0,5926,5925,1,0,0,0,5926,5927,1,0,0,0,5927,539,1,0,0,0,5928,5929, + 5,2,0,0,5929,5930,3,542,271,0,5930,5931,5,3,0,0,5931,5933,1,0,0, + 0,5932,5928,1,0,0,0,5932,5933,1,0,0,0,5933,5937,1,0,0,0,5934,5935, + 5,463,0,0,5935,5936,7,76,0,0,5936,5938,5,450,0,0,5937,5934,1,0,0, + 0,5937,5938,1,0,0,0,5938,5941,1,0,0,0,5939,5942,3,910,455,0,5940, + 5942,3,560,280,0,5941,5939,1,0,0,0,5941,5940,1,0,0,0,5942,541,1, + 0,0,0,5943,5948,3,544,272,0,5944,5945,5,6,0,0,5945,5947,3,544,272, + 0,5946,5944,1,0,0,0,5947,5950,1,0,0,0,5948,5946,1,0,0,0,5948,5949, + 1,0,0,0,5949,543,1,0,0,0,5950,5948,1,0,0,0,5951,5952,3,800,400,0, + 5952,5953,3,754,377,0,5953,545,1,0,0,0,5954,5955,5,87,0,0,5955,5956, + 3,756,378,0,5956,547,1,0,0,0,5957,5959,3,572,286,0,5958,5957,1,0, + 0,0,5958,5959,1,0,0,0,5959,5960,1,0,0,0,5960,5961,5,182,0,0,5961, + 5962,5,64,0,0,5962,5965,3,630,315,0,5963,5964,5,100,0,0,5964,5966, + 3,612,306,0,5965,5963,1,0,0,0,5965,5966,1,0,0,0,5966,5968,1,0,0, + 0,5967,5969,3,640,320,0,5968,5967,1,0,0,0,5968,5969,1,0,0,0,5969, + 5971,1,0,0,0,5970,5972,3,546,273,0,5971,5970,1,0,0,0,5971,5972,1, + 0,0,0,5972,549,1,0,0,0,5973,5975,5,256,0,0,5974,5976,5,92,0,0,5975, + 5974,1,0,0,0,5975,5976,1,0,0,0,5976,5977,1,0,0,0,5977,5992,3,628, + 314,0,5978,5989,5,68,0,0,5979,5980,7,77,0,0,5980,5990,7,78,0,0,5981, + 5986,5,334,0,0,5982,5983,5,369,0,0,5983,5987,5,201,0,0,5984,5985, + 5,414,0,0,5985,5987,5,201,0,0,5986,5982,1,0,0,0,5986,5984,1,0,0, + 0,5986,5987,1,0,0,0,5987,5990,1,0,0,0,5988,5990,5,201,0,0,5989,5979, + 1,0,0,0,5989,5981,1,0,0,0,5989,5988,1,0,0,0,5990,5991,1,0,0,0,5991, + 5993,5,263,0,0,5992,5978,1,0,0,0,5992,5993,1,0,0,0,5993,5995,1,0, + 0,0,5994,5996,5,272,0,0,5995,5994,1,0,0,0,5995,5996,1,0,0,0,5996, + 551,1,0,0,0,5997,5999,3,572,286,0,5998,5997,1,0,0,0,5998,5999,1, + 0,0,0,5999,6000,1,0,0,0,6000,6001,5,369,0,0,6001,6002,3,630,315, + 0,6002,6003,5,333,0,0,6003,6005,3,554,277,0,6004,6006,3,610,305, + 0,6005,6004,1,0,0,0,6005,6006,1,0,0,0,6006,6008,1,0,0,0,6007,6009, + 3,640,320,0,6008,6007,1,0,0,0,6008,6009,1,0,0,0,6009,6011,1,0,0, + 0,6010,6012,3,546,273,0,6011,6010,1,0,0,0,6011,6012,1,0,0,0,6012, + 553,1,0,0,0,6013,6018,3,556,278,0,6014,6015,5,6,0,0,6015,6017,3, + 556,278,0,6016,6014,1,0,0,0,6017,6020,1,0,0,0,6018,6016,1,0,0,0, + 6018,6019,1,0,0,0,6019,555,1,0,0,0,6020,6018,1,0,0,0,6021,6022,3, + 544,272,0,6022,6023,5,10,0,0,6023,6024,3,674,337,0,6024,6040,1,0, + 0,0,6025,6026,5,2,0,0,6026,6027,3,542,271,0,6027,6028,5,3,0,0,6028, + 6037,5,10,0,0,6029,6031,5,414,0,0,6030,6029,1,0,0,0,6030,6031,1, + 0,0,0,6031,6032,1,0,0,0,6032,6038,3,674,337,0,6033,6034,5,2,0,0, + 6034,6035,3,566,283,0,6035,6036,5,3,0,0,6036,6038,1,0,0,0,6037,6030, + 1,0,0,0,6037,6033,1,0,0,0,6038,6040,1,0,0,0,6039,6021,1,0,0,0,6039, + 6025,1,0,0,0,6040,557,1,0,0,0,6041,6042,5,178,0,0,6042,6051,3,818, + 409,0,6043,6045,5,269,0,0,6044,6043,1,0,0,0,6044,6045,1,0,0,0,6045, + 6046,1,0,0,0,6046,6050,5,324,0,0,6047,6050,5,107,0,0,6048,6050,5, + 240,0,0,6049,6044,1,0,0,0,6049,6047,1,0,0,0,6049,6048,1,0,0,0,6050, + 6053,1,0,0,0,6051,6049,1,0,0,0,6051,6052,1,0,0,0,6052,6054,1,0,0, + 0,6053,6051,1,0,0,0,6054,6057,5,172,0,0,6055,6056,7,26,0,0,6056, + 6058,5,217,0,0,6057,6055,1,0,0,0,6057,6058,1,0,0,0,6058,6059,1,0, + 0,0,6059,6060,5,62,0,0,6060,6061,3,560,280,0,6061,559,1,0,0,0,6062, + 6065,3,564,282,0,6063,6065,3,562,281,0,6064,6062,1,0,0,0,6064,6063, + 1,0,0,0,6065,561,1,0,0,0,6066,6069,5,2,0,0,6067,6070,3,564,282,0, + 6068,6070,3,562,281,0,6069,6067,1,0,0,0,6069,6068,1,0,0,0,6070,6071, + 1,0,0,0,6071,6072,5,3,0,0,6072,563,1,0,0,0,6073,6075,3,572,286,0, + 6074,6073,1,0,0,0,6074,6075,1,0,0,0,6075,6076,1,0,0,0,6076,6078, + 3,566,283,0,6077,6079,3,586,293,0,6078,6077,1,0,0,0,6078,6079,1, + 0,0,0,6079,6088,1,0,0,0,6080,6082,3,606,303,0,6081,6083,3,590,295, + 0,6082,6081,1,0,0,0,6082,6083,1,0,0,0,6083,6089,1,0,0,0,6084,6086, + 3,590,295,0,6085,6087,3,606,303,0,6086,6085,1,0,0,0,6086,6087,1, + 0,0,0,6087,6089,1,0,0,0,6088,6080,1,0,0,0,6088,6084,1,0,0,0,6088, + 6089,1,0,0,0,6089,565,1,0,0,0,6090,6093,3,568,284,0,6091,6093,3, + 562,281,0,6092,6090,1,0,0,0,6092,6091,1,0,0,0,6093,567,1,0,0,0,6094, + 6104,5,88,0,0,6095,6097,5,30,0,0,6096,6095,1,0,0,0,6096,6097,1,0, + 0,0,6097,6099,1,0,0,0,6098,6100,3,580,290,0,6099,6098,1,0,0,0,6099, + 6100,1,0,0,0,6100,6105,1,0,0,0,6101,6103,3,584,292,0,6102,6101,1, + 0,0,0,6102,6103,1,0,0,0,6103,6105,1,0,0,0,6104,6096,1,0,0,0,6104, + 6102,1,0,0,0,6105,6106,1,0,0,0,6106,6117,3,930,465,0,6107,6117,3, + 608,304,0,6108,6109,5,92,0,0,6109,6117,3,624,312,0,6110,6111,3,562, + 281,0,6111,6114,3,570,285,0,6112,6115,3,568,284,0,6113,6115,3,562, + 281,0,6114,6112,1,0,0,0,6114,6113,1,0,0,0,6115,6117,1,0,0,0,6116, + 6094,1,0,0,0,6116,6107,1,0,0,0,6116,6108,1,0,0,0,6116,6110,1,0,0, + 0,6117,6125,1,0,0,0,6118,6121,3,570,285,0,6119,6122,3,568,284,0, + 6120,6122,3,562,281,0,6121,6119,1,0,0,0,6121,6120,1,0,0,0,6122,6124, + 1,0,0,0,6123,6118,1,0,0,0,6124,6127,1,0,0,0,6125,6123,1,0,0,0,6125, + 6126,1,0,0,0,6126,569,1,0,0,0,6127,6125,1,0,0,0,6128,6130,7,79,0, + 0,6129,6131,7,80,0,0,6130,6129,1,0,0,0,6130,6131,1,0,0,0,6131,571, + 1,0,0,0,6132,6134,5,105,0,0,6133,6135,5,303,0,0,6134,6133,1,0,0, + 0,6134,6135,1,0,0,0,6135,6136,1,0,0,0,6136,6141,3,574,287,0,6137, + 6138,5,6,0,0,6138,6140,3,574,287,0,6139,6137,1,0,0,0,6140,6143,1, + 0,0,0,6141,6139,1,0,0,0,6141,6142,1,0,0,0,6142,573,1,0,0,0,6143, + 6141,1,0,0,0,6144,6146,3,818,409,0,6145,6147,3,144,72,0,6146,6145, + 1,0,0,0,6146,6147,1,0,0,0,6147,6148,1,0,0,0,6148,6153,5,36,0,0,6149, + 6151,5,77,0,0,6150,6149,1,0,0,0,6150,6151,1,0,0,0,6151,6152,1,0, + 0,0,6152,6154,5,259,0,0,6153,6150,1,0,0,0,6153,6154,1,0,0,0,6154, + 6155,1,0,0,0,6155,6156,5,2,0,0,6156,6157,3,530,265,0,6157,6159,5, + 3,0,0,6158,6160,3,576,288,0,6159,6158,1,0,0,0,6159,6160,1,0,0,0, + 6160,6162,1,0,0,0,6161,6163,3,578,289,0,6162,6161,1,0,0,0,6162,6163, + 1,0,0,0,6163,575,1,0,0,0,6164,6165,5,325,0,0,6165,6166,7,81,0,0, + 6166,6167,5,207,0,0,6167,6168,5,147,0,0,6168,6169,3,148,74,0,6169, + 6170,5,333,0,0,6170,6171,3,800,400,0,6171,577,1,0,0,0,6172,6173, + 5,173,0,0,6173,6174,3,148,74,0,6174,6175,5,333,0,0,6175,6181,3,800, + 400,0,6176,6177,5,94,0,0,6177,6178,3,818,409,0,6178,6179,5,53,0, + 0,6179,6180,3,818,409,0,6180,6182,1,0,0,0,6181,6176,1,0,0,0,6181, + 6182,1,0,0,0,6182,6183,1,0,0,0,6183,6184,5,100,0,0,6184,6185,3,800, + 400,0,6185,579,1,0,0,0,6186,6192,5,71,0,0,6187,6189,5,346,0,0,6188, + 6187,1,0,0,0,6188,6189,1,0,0,0,6189,6190,1,0,0,0,6190,6193,3,582, + 291,0,6191,6193,3,730,365,0,6192,6188,1,0,0,0,6192,6191,1,0,0,0, + 6193,581,1,0,0,0,6194,6196,7,20,0,0,6195,6194,1,0,0,0,6195,6196, + 1,0,0,0,6196,6197,1,0,0,0,6197,6199,7,21,0,0,6198,6200,5,92,0,0, + 6199,6198,1,0,0,0,6199,6200,1,0,0,0,6200,6201,1,0,0,0,6201,6210, + 3,772,386,0,6202,6204,5,367,0,0,6203,6202,1,0,0,0,6203,6204,1,0, + 0,0,6204,6206,1,0,0,0,6205,6207,5,92,0,0,6206,6205,1,0,0,0,6206, + 6207,1,0,0,0,6207,6208,1,0,0,0,6208,6210,3,772,386,0,6209,6195,1, + 0,0,0,6209,6203,1,0,0,0,6210,583,1,0,0,0,6211,6214,5,56,0,0,6212, + 6213,5,80,0,0,6213,6215,3,534,267,0,6214,6212,1,0,0,0,6214,6215, + 1,0,0,0,6215,585,1,0,0,0,6216,6217,5,83,0,0,6217,6218,5,147,0,0, + 6218,6223,3,588,294,0,6219,6220,5,6,0,0,6220,6222,3,588,294,0,6221, + 6219,1,0,0,0,6222,6225,1,0,0,0,6223,6221,1,0,0,0,6223,6224,1,0,0, + 0,6224,587,1,0,0,0,6225,6223,1,0,0,0,6226,6230,3,734,367,0,6227, + 6228,5,100,0,0,6228,6231,3,726,363,0,6229,6231,7,55,0,0,6230,6227, + 1,0,0,0,6230,6229,1,0,0,0,6230,6231,1,0,0,0,6231,6234,1,0,0,0,6232, + 6233,5,273,0,0,6233,6235,7,56,0,0,6234,6232,1,0,0,0,6234,6235,1, + 0,0,0,6235,589,1,0,0,0,6236,6238,3,596,298,0,6237,6239,3,594,297, + 0,6238,6237,1,0,0,0,6238,6239,1,0,0,0,6239,6248,1,0,0,0,6240,6243, + 3,592,296,0,6241,6243,3,594,297,0,6242,6240,1,0,0,0,6242,6241,1, + 0,0,0,6243,6245,1,0,0,0,6244,6246,3,596,298,0,6245,6244,1,0,0,0, + 6245,6246,1,0,0,0,6246,6248,1,0,0,0,6247,6236,1,0,0,0,6247,6242, + 1,0,0,0,6248,591,1,0,0,0,6249,6252,5,74,0,0,6250,6253,3,674,337, + 0,6251,6253,5,30,0,0,6252,6250,1,0,0,0,6252,6251,1,0,0,0,6253,6256, + 1,0,0,0,6254,6255,5,6,0,0,6255,6257,3,674,337,0,6256,6254,1,0,0, + 0,6256,6257,1,0,0,0,6257,593,1,0,0,0,6258,6259,5,61,0,0,6259,6261, + 7,82,0,0,6260,6262,3,598,299,0,6261,6260,1,0,0,0,6261,6262,1,0,0, + 0,6262,6263,1,0,0,0,6263,6267,7,83,0,0,6264,6268,5,81,0,0,6265,6266, + 5,105,0,0,6266,6268,5,467,0,0,6267,6264,1,0,0,0,6267,6265,1,0,0, + 0,6268,595,1,0,0,0,6269,6274,5,79,0,0,6270,6271,3,598,299,0,6271, + 6272,7,83,0,0,6272,6275,1,0,0,0,6273,6275,3,674,337,0,6274,6270, + 1,0,0,0,6274,6273,1,0,0,0,6275,597,1,0,0,0,6276,6277,7,29,0,0,6277, + 6280,7,84,0,0,6278,6280,3,682,341,0,6279,6276,1,0,0,0,6279,6278, + 1,0,0,0,6280,599,1,0,0,0,6281,6282,5,66,0,0,6282,6284,5,147,0,0, + 6283,6285,7,80,0,0,6284,6283,1,0,0,0,6284,6285,1,0,0,0,6285,6286, + 1,0,0,0,6286,6287,3,602,301,0,6287,601,1,0,0,0,6288,6293,3,604,302, + 0,6289,6290,5,6,0,0,6290,6292,3,604,302,0,6291,6289,1,0,0,0,6292, + 6295,1,0,0,0,6293,6291,1,0,0,0,6293,6294,1,0,0,0,6294,603,1,0,0, + 0,6295,6293,1,0,0,0,6296,6320,3,734,367,0,6297,6298,5,2,0,0,6298, + 6320,5,3,0,0,6299,6301,7,85,0,0,6300,6299,1,0,0,0,6300,6301,1,0, + 0,0,6301,6302,1,0,0,0,6302,6303,5,2,0,0,6303,6308,3,734,367,0,6304, + 6305,5,6,0,0,6305,6307,3,734,367,0,6306,6304,1,0,0,0,6307,6310,1, + 0,0,0,6308,6306,1,0,0,0,6308,6309,1,0,0,0,6309,6311,1,0,0,0,6310, + 6308,1,0,0,0,6311,6312,5,3,0,0,6312,6320,1,0,0,0,6313,6314,5,470, + 0,0,6314,6315,5,471,0,0,6315,6316,5,2,0,0,6316,6317,3,602,301,0, + 6317,6318,5,3,0,0,6318,6320,1,0,0,0,6319,6296,1,0,0,0,6319,6297, + 1,0,0,0,6319,6300,1,0,0,0,6319,6313,1,0,0,0,6320,605,1,0,0,0,6321, + 6331,5,62,0,0,6322,6323,5,269,0,0,6323,6325,5,245,0,0,6324,6322, + 1,0,0,0,6324,6325,1,0,0,0,6325,6326,1,0,0,0,6326,6332,5,369,0,0, + 6327,6329,5,245,0,0,6328,6327,1,0,0,0,6328,6329,1,0,0,0,6329,6330, + 1,0,0,0,6330,6332,5,334,0,0,6331,6324,1,0,0,0,6331,6328,1,0,0,0, + 6332,6335,1,0,0,0,6333,6334,5,275,0,0,6334,6336,3,760,380,0,6335, + 6333,1,0,0,0,6335,6336,1,0,0,0,6336,6340,1,0,0,0,6337,6341,5,272, + 0,0,6338,6339,5,465,0,0,6339,6341,5,466,0,0,6340,6337,1,0,0,0,6340, + 6338,1,0,0,0,6340,6341,1,0,0,0,6341,6343,1,0,0,0,6342,6321,1,0,0, + 0,6343,6344,1,0,0,0,6344,6342,1,0,0,0,6344,6345,1,0,0,0,6345,6350, + 1,0,0,0,6346,6347,5,62,0,0,6347,6348,5,300,0,0,6348,6350,5,81,0, + 0,6349,6342,1,0,0,0,6349,6346,1,0,0,0,6350,607,1,0,0,0,6351,6352, + 5,422,0,0,6352,6357,3,534,267,0,6353,6354,5,6,0,0,6354,6356,3,534, + 267,0,6355,6353,1,0,0,0,6356,6359,1,0,0,0,6357,6355,1,0,0,0,6357, + 6358,1,0,0,0,6358,609,1,0,0,0,6359,6357,1,0,0,0,6360,6361,5,64,0, + 0,6361,6362,3,612,306,0,6362,611,1,0,0,0,6363,6368,3,614,307,0,6364, + 6365,5,6,0,0,6365,6367,3,614,307,0,6366,6364,1,0,0,0,6367,6370,1, + 0,0,0,6368,6366,1,0,0,0,6368,6369,1,0,0,0,6369,613,1,0,0,0,6370, + 6368,1,0,0,0,6371,6386,3,624,312,0,6372,6374,5,81,0,0,6373,6372, + 1,0,0,0,6373,6374,1,0,0,0,6374,6375,1,0,0,0,6375,6377,3,778,389, + 0,6376,6378,5,9,0,0,6377,6376,1,0,0,0,6377,6378,1,0,0,0,6378,6380, + 1,0,0,0,6379,6381,3,148,74,0,6380,6379,1,0,0,0,6380,6381,1,0,0,0, + 6381,6383,1,0,0,0,6382,6384,3,638,319,0,6383,6382,1,0,0,0,6383,6384, + 1,0,0,0,6384,6386,1,0,0,0,6385,6371,1,0,0,0,6385,6373,1,0,0,0,6386, + 6388,1,0,0,0,6387,6389,3,616,308,0,6388,6387,1,0,0,0,6388,6389,1, + 0,0,0,6389,6391,1,0,0,0,6390,6392,3,632,316,0,6391,6390,1,0,0,0, + 6391,6392,1,0,0,0,6392,6435,1,0,0,0,6393,6395,5,72,0,0,6394,6393, + 1,0,0,0,6394,6395,1,0,0,0,6395,6408,1,0,0,0,6396,6398,3,646,323, + 0,6397,6399,3,616,308,0,6398,6397,1,0,0,0,6398,6399,1,0,0,0,6399, + 6409,1,0,0,0,6400,6402,3,634,317,0,6401,6403,3,618,309,0,6402,6401, + 1,0,0,0,6402,6403,1,0,0,0,6403,6409,1,0,0,0,6404,6406,3,562,281, + 0,6405,6407,3,616,308,0,6406,6405,1,0,0,0,6406,6407,1,0,0,0,6407, + 6409,1,0,0,0,6408,6396,1,0,0,0,6408,6400,1,0,0,0,6408,6404,1,0,0, + 0,6409,6435,1,0,0,0,6410,6411,5,2,0,0,6411,6428,3,614,307,0,6412, + 6413,5,110,0,0,6413,6414,5,118,0,0,6414,6429,3,614,307,0,6415,6417, + 5,121,0,0,6416,6418,3,620,310,0,6417,6416,1,0,0,0,6417,6418,1,0, + 0,0,6418,6419,1,0,0,0,6419,6420,5,118,0,0,6420,6429,3,614,307,0, + 6421,6423,3,620,310,0,6422,6421,1,0,0,0,6422,6423,1,0,0,0,6423,6424, + 1,0,0,0,6424,6425,5,118,0,0,6425,6426,3,614,307,0,6426,6427,3,622, + 311,0,6427,6429,1,0,0,0,6428,6412,1,0,0,0,6428,6415,1,0,0,0,6428, + 6422,1,0,0,0,6428,6429,1,0,0,0,6429,6430,1,0,0,0,6430,6432,5,3,0, + 0,6431,6433,3,616,308,0,6432,6431,1,0,0,0,6432,6433,1,0,0,0,6433, + 6435,1,0,0,0,6434,6385,1,0,0,0,6434,6394,1,0,0,0,6434,6410,1,0,0, + 0,6435,6454,1,0,0,0,6436,6437,5,110,0,0,6437,6438,5,118,0,0,6438, + 6453,3,614,307,0,6439,6441,5,121,0,0,6440,6442,3,620,310,0,6441, + 6440,1,0,0,0,6441,6442,1,0,0,0,6442,6443,1,0,0,0,6443,6444,5,118, + 0,0,6444,6453,3,614,307,0,6445,6447,3,620,310,0,6446,6445,1,0,0, + 0,6446,6447,1,0,0,0,6447,6448,1,0,0,0,6448,6449,5,118,0,0,6449,6450, + 3,614,307,0,6450,6451,3,622,311,0,6451,6453,1,0,0,0,6452,6436,1, + 0,0,0,6452,6439,1,0,0,0,6452,6446,1,0,0,0,6453,6456,1,0,0,0,6454, + 6452,1,0,0,0,6454,6455,1,0,0,0,6455,615,1,0,0,0,6456,6454,1,0,0, + 0,6457,6459,5,36,0,0,6458,6457,1,0,0,0,6458,6459,1,0,0,0,6459,6460, + 1,0,0,0,6460,6465,3,818,409,0,6461,6462,5,2,0,0,6462,6463,3,784, + 392,0,6463,6464,5,3,0,0,6464,6466,1,0,0,0,6465,6461,1,0,0,0,6465, + 6466,1,0,0,0,6466,617,1,0,0,0,6467,6480,3,616,308,0,6468,6470,5, + 36,0,0,6469,6471,3,818,409,0,6470,6469,1,0,0,0,6470,6471,1,0,0,0, + 6471,6474,1,0,0,0,6472,6474,3,818,409,0,6473,6468,1,0,0,0,6473,6472, + 1,0,0,0,6474,6475,1,0,0,0,6475,6476,5,2,0,0,6476,6477,3,642,321, + 0,6477,6478,5,3,0,0,6478,6480,1,0,0,0,6479,6467,1,0,0,0,6479,6473, + 1,0,0,0,6480,619,1,0,0,0,6481,6483,7,86,0,0,6482,6484,5,123,0,0, + 6483,6482,1,0,0,0,6483,6484,1,0,0,0,6484,621,1,0,0,0,6485,6486,5, + 100,0,0,6486,6490,3,144,72,0,6487,6488,5,80,0,0,6488,6490,3,674, + 337,0,6489,6485,1,0,0,0,6489,6487,1,0,0,0,6490,623,1,0,0,0,6491, + 6507,3,322,161,0,6492,6498,5,81,0,0,6493,6499,3,774,387,0,6494,6495, + 5,2,0,0,6495,6496,3,774,387,0,6496,6497,5,3,0,0,6497,6499,1,0,0, + 0,6498,6493,1,0,0,0,6498,6494,1,0,0,0,6499,6507,1,0,0,0,6500,6501, + 5,68,0,0,6501,6504,5,323,0,0,6502,6505,3,790,395,0,6503,6505,5,111, + 0,0,6504,6502,1,0,0,0,6504,6503,1,0,0,0,6505,6507,1,0,0,0,6506,6491, + 1,0,0,0,6506,6492,1,0,0,0,6506,6500,1,0,0,0,6507,625,1,0,0,0,6508, + 6509,5,92,0,0,6509,6511,3,322,161,0,6510,6512,3,144,72,0,6511,6510, + 1,0,0,0,6511,6512,1,0,0,0,6512,6514,1,0,0,0,6513,6515,3,638,319, + 0,6514,6513,1,0,0,0,6514,6515,1,0,0,0,6515,6533,1,0,0,0,6516,6517, + 5,92,0,0,6517,6523,5,81,0,0,6518,6524,3,774,387,0,6519,6520,5,2, + 0,0,6520,6521,3,774,387,0,6521,6522,5,3,0,0,6522,6524,1,0,0,0,6523, + 6518,1,0,0,0,6523,6519,1,0,0,0,6524,6533,1,0,0,0,6525,6526,5,350, + 0,0,6526,6527,5,68,0,0,6527,6530,5,323,0,0,6528,6531,3,790,395,0, + 6529,6531,5,111,0,0,6530,6528,1,0,0,0,6530,6529,1,0,0,0,6531,6533, + 1,0,0,0,6532,6508,1,0,0,0,6532,6516,1,0,0,0,6532,6525,1,0,0,0,6533, + 627,1,0,0,0,6534,6539,3,624,312,0,6535,6536,5,6,0,0,6536,6538,3, + 624,312,0,6537,6535,1,0,0,0,6538,6541,1,0,0,0,6539,6537,1,0,0,0, + 6539,6540,1,0,0,0,6540,629,1,0,0,0,6541,6539,1,0,0,0,6542,6547,3, + 624,312,0,6543,6545,5,36,0,0,6544,6543,1,0,0,0,6544,6545,1,0,0,0, + 6545,6546,1,0,0,0,6546,6548,3,818,409,0,6547,6544,1,0,0,0,6547,6548, + 1,0,0,0,6548,631,1,0,0,0,6549,6550,5,472,0,0,6550,6551,3,806,403, + 0,6551,6557,3,534,267,0,6552,6553,5,310,0,0,6553,6554,5,2,0,0,6554, + 6555,3,674,337,0,6555,6556,5,3,0,0,6556,6558,1,0,0,0,6557,6552,1, + 0,0,0,6557,6558,1,0,0,0,6558,633,1,0,0,0,6559,6574,3,688,344,0,6560, + 6561,5,320,0,0,6561,6562,5,64,0,0,6562,6563,5,2,0,0,6563,6568,3, + 636,318,0,6564,6565,5,6,0,0,6565,6567,3,636,318,0,6566,6564,1,0, + 0,0,6567,6570,1,0,0,0,6568,6566,1,0,0,0,6568,6569,1,0,0,0,6569,6571, + 1,0,0,0,6570,6568,1,0,0,0,6571,6572,5,3,0,0,6572,6574,1,0,0,0,6573, + 6559,1,0,0,0,6573,6560,1,0,0,0,6574,6577,1,0,0,0,6575,6576,5,105, + 0,0,6576,6578,5,473,0,0,6577,6575,1,0,0,0,6577,6578,1,0,0,0,6578, + 635,1,0,0,0,6579,6585,3,688,344,0,6580,6581,5,36,0,0,6581,6582,5, + 2,0,0,6582,6583,3,642,321,0,6583,6584,5,3,0,0,6584,6586,1,0,0,0, + 6585,6580,1,0,0,0,6585,6586,1,0,0,0,6586,637,1,0,0,0,6587,6588,5, + 103,0,0,6588,6589,3,734,367,0,6589,639,1,0,0,0,6590,6595,5,103,0, + 0,6591,6592,5,434,0,0,6592,6593,5,275,0,0,6593,6596,3,818,409,0, + 6594,6596,3,674,337,0,6595,6591,1,0,0,0,6595,6594,1,0,0,0,6596,641, + 1,0,0,0,6597,6602,3,644,322,0,6598,6599,5,6,0,0,6599,6601,3,644, + 322,0,6600,6598,1,0,0,0,6601,6604,1,0,0,0,6602,6600,1,0,0,0,6602, + 6603,1,0,0,0,6603,643,1,0,0,0,6604,6602,1,0,0,0,6605,6606,3,818, + 409,0,6606,6608,3,652,326,0,6607,6609,3,98,49,0,6608,6607,1,0,0, + 0,6608,6609,1,0,0,0,6609,645,1,0,0,0,6610,6611,5,474,0,0,6611,6625, + 5,2,0,0,6612,6613,5,476,0,0,6613,6614,5,2,0,0,6614,6619,3,650,325, + 0,6615,6616,5,6,0,0,6616,6618,3,650,325,0,6617,6615,1,0,0,0,6618, + 6621,1,0,0,0,6619,6617,1,0,0,0,6619,6620,1,0,0,0,6620,6622,1,0,0, + 0,6621,6619,1,0,0,0,6622,6623,5,3,0,0,6623,6624,5,6,0,0,6624,6626, + 1,0,0,0,6625,6612,1,0,0,0,6625,6626,1,0,0,0,6626,6627,1,0,0,0,6627, + 6628,3,682,341,0,6628,6629,3,698,349,0,6629,6630,5,475,0,0,6630, + 6635,3,648,324,0,6631,6632,5,6,0,0,6632,6634,3,648,324,0,6633,6631, + 1,0,0,0,6634,6637,1,0,0,0,6635,6633,1,0,0,0,6635,6636,1,0,0,0,6636, + 6638,1,0,0,0,6637,6635,1,0,0,0,6638,6639,5,3,0,0,6639,647,1,0,0, + 0,6640,6659,3,818,409,0,6641,6655,3,652,326,0,6642,6645,5,53,0,0, + 6643,6645,3,826,413,0,6644,6642,1,0,0,0,6644,6643,1,0,0,0,6645,6646, + 1,0,0,0,6646,6652,3,674,337,0,6647,6649,5,77,0,0,6648,6647,1,0,0, + 0,6648,6649,1,0,0,0,6649,6650,1,0,0,0,6650,6652,5,78,0,0,6651,6644, + 1,0,0,0,6651,6648,1,0,0,0,6652,6653,1,0,0,0,6653,6651,1,0,0,0,6653, + 6654,1,0,0,0,6654,6656,1,0,0,0,6655,6651,1,0,0,0,6655,6656,1,0,0, + 0,6656,6660,1,0,0,0,6657,6658,5,62,0,0,6658,6660,5,473,0,0,6659, + 6641,1,0,0,0,6659,6657,1,0,0,0,6660,649,1,0,0,0,6661,6662,3,682, + 341,0,6662,6663,5,36,0,0,6663,6664,3,824,412,0,6664,6668,1,0,0,0, + 6665,6666,5,53,0,0,6666,6668,3,682,341,0,6667,6661,1,0,0,0,6667, + 6665,1,0,0,0,6668,651,1,0,0,0,6669,6671,5,415,0,0,6670,6669,1,0, + 0,0,6670,6671,1,0,0,0,6671,6672,1,0,0,0,6672,6689,3,654,327,0,6673, + 6675,5,4,0,0,6674,6676,5,571,0,0,6675,6674,1,0,0,0,6675,6676,1,0, + 0,0,6676,6677,1,0,0,0,6677,6679,5,5,0,0,6678,6673,1,0,0,0,6679,6682, + 1,0,0,0,6680,6678,1,0,0,0,6680,6681,1,0,0,0,6681,6690,1,0,0,0,6682, + 6680,1,0,0,0,6683,6687,5,35,0,0,6684,6685,5,4,0,0,6685,6686,5,571, + 0,0,6686,6688,5,5,0,0,6687,6684,1,0,0,0,6687,6688,1,0,0,0,6688,6690, + 1,0,0,0,6689,6680,1,0,0,0,6689,6683,1,0,0,0,6690,6696,1,0,0,0,6691, + 6692,3,780,390,0,6692,6693,5,27,0,0,6693,6694,7,87,0,0,6694,6696, + 1,0,0,0,6695,6670,1,0,0,0,6695,6691,1,0,0,0,6696,653,1,0,0,0,6697, + 6699,3,820,410,0,6698,6700,3,318,159,0,6699,6698,1,0,0,0,6699,6700, + 1,0,0,0,6700,6702,1,0,0,0,6701,6703,3,534,267,0,6702,6701,1,0,0, + 0,6702,6703,1,0,0,0,6703,6713,1,0,0,0,6704,6713,3,656,328,0,6705, + 6710,5,403,0,0,6706,6708,3,668,334,0,6707,6706,1,0,0,0,6707,6708, + 1,0,0,0,6708,6711,1,0,0,0,6709,6711,3,660,330,0,6710,6707,1,0,0, + 0,6710,6709,1,0,0,0,6711,6713,1,0,0,0,6712,6697,1,0,0,0,6712,6704, + 1,0,0,0,6712,6705,1,0,0,0,6713,655,1,0,0,0,6714,6719,3,658,329,0, + 6715,6719,3,662,331,0,6716,6719,3,664,332,0,6717,6719,3,666,333, + 0,6718,6714,1,0,0,0,6718,6715,1,0,0,0,6718,6716,1,0,0,0,6718,6717, + 1,0,0,0,6719,657,1,0,0,0,6720,6737,5,401,0,0,6721,6737,5,402,0,0, + 6722,6737,5,416,0,0,6723,6737,5,388,0,0,6724,6737,5,413,0,0,6725, + 6727,5,398,0,0,6726,6728,3,660,330,0,6727,6726,1,0,0,0,6727,6728, + 1,0,0,0,6728,6737,1,0,0,0,6729,6730,5,190,0,0,6730,6737,5,412,0, + 0,6731,6733,7,88,0,0,6732,6734,3,534,267,0,6733,6732,1,0,0,0,6733, + 6734,1,0,0,0,6734,6737,1,0,0,0,6735,6737,5,390,0,0,6736,6720,1,0, + 0,0,6736,6721,1,0,0,0,6736,6722,1,0,0,0,6736,6723,1,0,0,0,6736,6724, + 1,0,0,0,6736,6725,1,0,0,0,6736,6729,1,0,0,0,6736,6731,1,0,0,0,6736, + 6735,1,0,0,0,6737,659,1,0,0,0,6738,6739,5,2,0,0,6739,6740,5,571, + 0,0,6740,6741,5,3,0,0,6741,661,1,0,0,0,6742,6744,5,389,0,0,6743, + 6745,5,374,0,0,6744,6743,1,0,0,0,6744,6745,1,0,0,0,6745,6747,1,0, + 0,0,6746,6748,3,534,267,0,6747,6746,1,0,0,0,6747,6748,1,0,0,0,6748, + 663,1,0,0,0,6749,6751,7,89,0,0,6750,6752,5,374,0,0,6751,6750,1,0, + 0,0,6751,6752,1,0,0,0,6752,6760,1,0,0,0,6753,6760,5,423,0,0,6754, + 6755,5,405,0,0,6755,6757,7,90,0,0,6756,6758,5,374,0,0,6757,6756, + 1,0,0,0,6757,6758,1,0,0,0,6758,6760,1,0,0,0,6759,6749,1,0,0,0,6759, + 6753,1,0,0,0,6759,6754,1,0,0,0,6760,6762,1,0,0,0,6761,6763,3,660, + 330,0,6762,6761,1,0,0,0,6762,6763,1,0,0,0,6763,665,1,0,0,0,6764, + 6766,7,91,0,0,6765,6767,3,660,330,0,6766,6765,1,0,0,0,6766,6767, + 1,0,0,0,6767,6771,1,0,0,0,6768,6769,7,26,0,0,6769,6770,5,418,0,0, + 6770,6772,5,386,0,0,6771,6768,1,0,0,0,6771,6772,1,0,0,0,6772,667, + 1,0,0,0,6773,6803,5,264,0,0,6774,6803,3,670,335,0,6775,6778,5,384, + 0,0,6776,6777,5,94,0,0,6777,6779,5,264,0,0,6778,6776,1,0,0,0,6778, + 6779,1,0,0,0,6779,6803,1,0,0,0,6780,6787,5,176,0,0,6781,6785,5,94, + 0,0,6782,6786,5,218,0,0,6783,6786,5,261,0,0,6784,6786,3,670,335, + 0,6785,6782,1,0,0,0,6785,6783,1,0,0,0,6785,6784,1,0,0,0,6786,6788, + 1,0,0,0,6787,6781,1,0,0,0,6787,6788,1,0,0,0,6788,6803,1,0,0,0,6789, + 6795,5,218,0,0,6790,6793,5,94,0,0,6791,6794,5,261,0,0,6792,6794, + 3,670,335,0,6793,6791,1,0,0,0,6793,6792,1,0,0,0,6794,6796,1,0,0, + 0,6795,6790,1,0,0,0,6795,6796,1,0,0,0,6796,6803,1,0,0,0,6797,6800, + 5,261,0,0,6798,6799,5,94,0,0,6799,6801,3,670,335,0,6800,6798,1,0, + 0,0,6800,6801,1,0,0,0,6801,6803,1,0,0,0,6802,6773,1,0,0,0,6802,6774, + 1,0,0,0,6802,6775,1,0,0,0,6802,6780,1,0,0,0,6802,6789,1,0,0,0,6802, + 6797,1,0,0,0,6803,669,1,0,0,0,6804,6806,5,326,0,0,6805,6807,3,660, + 330,0,6806,6805,1,0,0,0,6806,6807,1,0,0,0,6807,671,1,0,0,0,6808, + 6809,7,92,0,0,6809,673,1,0,0,0,6810,6811,3,676,338,0,6811,675,1, + 0,0,0,6812,6813,6,338,-1,0,6813,6815,3,680,340,0,6814,6816,3,678, + 339,0,6815,6814,1,0,0,0,6815,6816,1,0,0,0,6816,6820,1,0,0,0,6817, + 6818,5,77,0,0,6818,6820,3,676,338,3,6819,6812,1,0,0,0,6819,6817, + 1,0,0,0,6820,6829,1,0,0,0,6821,6822,10,2,0,0,6822,6823,5,33,0,0, + 6823,6828,3,676,338,3,6824,6825,10,1,0,0,6825,6826,5,82,0,0,6826, + 6828,3,676,338,2,6827,6821,1,0,0,0,6827,6824,1,0,0,0,6828,6831,1, + 0,0,0,6829,6827,1,0,0,0,6829,6830,1,0,0,0,6830,677,1,0,0,0,6831, + 6829,1,0,0,0,6832,6833,3,672,336,0,6833,6834,3,680,340,0,6834,6904, + 1,0,0,0,6835,6836,3,672,336,0,6836,6837,3,728,364,0,6837,6843,3, + 718,359,0,6838,6844,3,562,281,0,6839,6840,5,2,0,0,6840,6841,3,674, + 337,0,6841,6842,5,3,0,0,6842,6844,1,0,0,0,6843,6838,1,0,0,0,6843, + 6839,1,0,0,0,6844,6904,1,0,0,0,6845,6847,5,77,0,0,6846,6845,1,0, + 0,0,6846,6847,1,0,0,0,6847,6848,1,0,0,0,6848,6849,5,387,0,0,6849, + 6850,3,680,340,0,6850,6851,5,33,0,0,6851,6852,3,680,340,0,6852,6904, + 1,0,0,0,6853,6855,5,77,0,0,6854,6853,1,0,0,0,6854,6855,1,0,0,0,6855, + 6856,1,0,0,0,6856,6857,5,68,0,0,6857,6858,5,2,0,0,6858,6863,3,674, + 337,0,6859,6860,5,6,0,0,6860,6862,3,674,337,0,6861,6859,1,0,0,0, + 6862,6865,1,0,0,0,6863,6861,1,0,0,0,6863,6864,1,0,0,0,6864,6866, + 1,0,0,0,6865,6863,1,0,0,0,6866,6867,5,3,0,0,6867,6904,1,0,0,0,6868, + 6870,5,77,0,0,6869,6868,1,0,0,0,6869,6870,1,0,0,0,6870,6871,1,0, + 0,0,6871,6872,5,68,0,0,6872,6904,3,562,281,0,6873,6875,5,77,0,0, + 6874,6873,1,0,0,0,6874,6875,1,0,0,0,6875,6884,1,0,0,0,6876,6885, + 5,120,0,0,6877,6885,5,114,0,0,6878,6879,5,127,0,0,6879,6885,5,94, + 0,0,6880,6882,5,387,0,0,6881,6883,5,91,0,0,6882,6881,1,0,0,0,6882, + 6883,1,0,0,0,6883,6885,1,0,0,0,6884,6876,1,0,0,0,6884,6877,1,0,0, + 0,6884,6878,1,0,0,0,6884,6880,1,0,0,0,6885,6886,1,0,0,0,6886,6889, + 3,680,340,0,6887,6888,5,197,0,0,6888,6890,3,680,340,0,6889,6887, + 1,0,0,0,6889,6890,1,0,0,0,6890,6904,1,0,0,0,6891,6893,5,116,0,0, + 6892,6894,5,77,0,0,6893,6892,1,0,0,0,6893,6894,1,0,0,0,6894,6895, + 1,0,0,0,6895,6904,5,78,0,0,6896,6898,5,116,0,0,6897,6899,5,77,0, + 0,6898,6897,1,0,0,0,6898,6899,1,0,0,0,6899,6900,1,0,0,0,6900,6901, + 5,56,0,0,6901,6902,5,64,0,0,6902,6904,3,680,340,0,6903,6832,1,0, + 0,0,6903,6835,1,0,0,0,6903,6846,1,0,0,0,6903,6854,1,0,0,0,6903,6869, + 1,0,0,0,6903,6874,1,0,0,0,6903,6891,1,0,0,0,6903,6896,1,0,0,0,6904, + 679,1,0,0,0,6905,6906,6,340,-1,0,6906,6910,3,682,341,0,6907,6908, + 7,29,0,0,6908,6910,3,680,340,4,6909,6905,1,0,0,0,6909,6907,1,0,0, + 0,6910,6927,1,0,0,0,6911,6912,10,3,0,0,6912,6913,7,93,0,0,6913,6926, + 3,680,340,4,6914,6915,10,2,0,0,6915,6916,7,29,0,0,6916,6926,3,680, + 340,3,6917,6918,10,1,0,0,6918,6919,5,15,0,0,6919,6926,3,680,340, + 2,6920,6921,10,5,0,0,6921,6922,5,142,0,0,6922,6923,5,418,0,0,6923, + 6924,5,386,0,0,6924,6926,3,674,337,0,6925,6911,1,0,0,0,6925,6914, + 1,0,0,0,6925,6917,1,0,0,0,6925,6920,1,0,0,0,6926,6929,1,0,0,0,6927, + 6925,1,0,0,0,6927,6928,1,0,0,0,6928,681,1,0,0,0,6929,6927,1,0,0, + 0,6930,6931,6,341,-1,0,6931,6932,7,94,0,0,6932,7019,3,562,281,0, + 6933,6936,5,35,0,0,6934,6937,3,562,281,0,6935,6937,3,740,370,0,6936, + 6934,1,0,0,0,6936,6935,1,0,0,0,6937,7019,1,0,0,0,6938,6939,5,28, + 0,0,6939,7019,3,754,377,0,6940,6941,5,470,0,0,6941,7019,3,534,267, + 0,6942,7019,5,571,0,0,6943,7019,5,573,0,0,6944,7019,5,563,0,0,6945, + 7019,5,567,0,0,6946,6956,3,806,403,0,6947,6957,3,808,404,0,6948, + 6949,5,2,0,0,6949,6951,3,736,368,0,6950,6952,3,586,293,0,6951,6950, + 1,0,0,0,6951,6952,1,0,0,0,6952,6953,1,0,0,0,6953,6954,5,3,0,0,6954, + 6955,3,808,404,0,6955,6957,1,0,0,0,6956,6947,1,0,0,0,6956,6948,1, + 0,0,0,6957,7019,1,0,0,0,6958,6960,3,656,328,0,6959,6958,1,0,0,0, + 6959,6960,1,0,0,0,6960,6961,1,0,0,0,6961,7019,3,808,404,0,6962,6970, + 5,403,0,0,6963,6965,3,808,404,0,6964,6966,3,668,334,0,6965,6964, + 1,0,0,0,6965,6966,1,0,0,0,6966,6971,1,0,0,0,6967,6968,3,660,330, + 0,6968,6969,3,808,404,0,6969,6971,1,0,0,0,6970,6963,1,0,0,0,6970, + 6967,1,0,0,0,6971,7019,1,0,0,0,6972,7019,5,96,0,0,6973,7019,5,60, + 0,0,6974,7019,5,78,0,0,6975,7019,5,574,0,0,6976,6977,5,2,0,0,6977, + 6978,3,674,337,0,6978,6979,5,3,0,0,6979,6980,3,754,377,0,6980,7019, + 1,0,0,0,6981,6983,5,40,0,0,6982,6984,3,674,337,0,6983,6982,1,0,0, + 0,6983,6984,1,0,0,0,6984,6986,1,0,0,0,6985,6987,3,748,374,0,6986, + 6985,1,0,0,0,6987,6988,1,0,0,0,6988,6986,1,0,0,0,6988,6989,1,0,0, + 0,6989,6992,1,0,0,0,6990,6991,5,58,0,0,6991,6993,3,674,337,0,6992, + 6990,1,0,0,0,6992,6993,1,0,0,0,6993,6994,1,0,0,0,6994,6995,5,454, + 0,0,6995,7019,1,0,0,0,6996,7019,3,686,343,0,6997,6999,3,562,281, + 0,6998,7000,3,752,376,0,6999,6998,1,0,0,0,6999,7000,1,0,0,0,7000, + 7019,1,0,0,0,7001,7019,3,716,358,0,7002,7003,5,2,0,0,7003,7004,3, + 674,337,0,7004,7005,5,6,0,0,7005,7006,3,730,365,0,7006,7007,5,3, + 0,0,7007,7019,1,0,0,0,7008,7009,3,714,357,0,7009,7010,5,125,0,0, + 7010,7011,3,714,357,0,7011,7019,1,0,0,0,7012,7019,3,780,390,0,7013, + 7014,7,29,0,0,7014,7019,3,682,341,5,7015,7016,3,724,362,0,7016,7017, + 3,682,341,2,7017,7019,1,0,0,0,7018,6930,1,0,0,0,7018,6933,1,0,0, + 0,7018,6938,1,0,0,0,7018,6940,1,0,0,0,7018,6942,1,0,0,0,7018,6943, + 1,0,0,0,7018,6944,1,0,0,0,7018,6945,1,0,0,0,7018,6946,1,0,0,0,7018, + 6959,1,0,0,0,7018,6962,1,0,0,0,7018,6972,1,0,0,0,7018,6973,1,0,0, + 0,7018,6974,1,0,0,0,7018,6975,1,0,0,0,7018,6976,1,0,0,0,7018,6981, + 1,0,0,0,7018,6996,1,0,0,0,7018,6997,1,0,0,0,7018,7001,1,0,0,0,7018, + 7002,1,0,0,0,7018,7008,1,0,0,0,7018,7012,1,0,0,0,7018,7013,1,0,0, + 0,7018,7015,1,0,0,0,7019,7047,1,0,0,0,7020,7021,10,3,0,0,7021,7022, + 3,722,361,0,7022,7023,3,682,341,4,7023,7046,1,0,0,0,7024,7025,10, + 6,0,0,7025,7026,5,26,0,0,7026,7046,3,652,326,0,7027,7028,10,4,0, + 0,7028,7030,3,724,362,0,7029,7031,3,682,341,0,7030,7029,1,0,0,0, + 7030,7031,1,0,0,0,7031,7046,1,0,0,0,7032,7033,10,1,0,0,7033,7035, + 5,116,0,0,7034,7036,5,77,0,0,7035,7034,1,0,0,0,7035,7036,1,0,0,0, + 7036,7043,1,0,0,0,7037,7038,5,56,0,0,7038,7039,5,64,0,0,7039,7044, + 3,682,341,0,7040,7041,5,275,0,0,7041,7044,3,528,264,0,7042,7044, + 5,188,0,0,7043,7037,1,0,0,0,7043,7040,1,0,0,0,7043,7042,1,0,0,0, + 7044,7046,1,0,0,0,7045,7020,1,0,0,0,7045,7024,1,0,0,0,7045,7027, + 1,0,0,0,7045,7032,1,0,0,0,7046,7049,1,0,0,0,7047,7045,1,0,0,0,7047, + 7048,1,0,0,0,7048,683,1,0,0,0,7049,7047,1,0,0,0,7050,7076,3,806, + 403,0,7051,7073,5,2,0,0,7052,7056,3,736,368,0,7053,7054,5,6,0,0, + 7054,7055,5,101,0,0,7055,7057,3,738,369,0,7056,7053,1,0,0,0,7056, + 7057,1,0,0,0,7057,7059,1,0,0,0,7058,7060,3,586,293,0,7059,7058,1, + 0,0,0,7059,7060,1,0,0,0,7060,7074,1,0,0,0,7061,7062,5,101,0,0,7062, + 7064,3,738,369,0,7063,7065,3,586,293,0,7064,7063,1,0,0,0,7064,7065, + 1,0,0,0,7065,7074,1,0,0,0,7066,7067,7,80,0,0,7067,7069,3,736,368, + 0,7068,7070,3,586,293,0,7069,7068,1,0,0,0,7069,7070,1,0,0,0,7070, + 7074,1,0,0,0,7071,7074,5,9,0,0,7072,7074,1,0,0,0,7073,7052,1,0,0, + 0,7073,7061,1,0,0,0,7073,7066,1,0,0,0,7073,7071,1,0,0,0,7073,7072, + 1,0,0,0,7074,7075,1,0,0,0,7075,7077,5,3,0,0,7076,7051,1,0,0,0,7076, + 7077,1,0,0,0,7077,685,1,0,0,0,7078,7085,3,684,342,0,7079,7080,5, + 479,0,0,7080,7081,5,66,0,0,7081,7082,5,2,0,0,7082,7083,3,586,293, + 0,7083,7084,5,3,0,0,7084,7086,1,0,0,0,7085,7079,1,0,0,0,7085,7086, + 1,0,0,0,7086,7093,1,0,0,0,7087,7088,5,480,0,0,7088,7089,5,2,0,0, + 7089,7090,5,103,0,0,7090,7091,3,674,337,0,7091,7092,5,3,0,0,7092, + 7094,1,0,0,0,7093,7087,1,0,0,0,7093,7094,1,0,0,0,7094,7100,1,0,0, + 0,7095,7098,5,124,0,0,7096,7099,3,708,354,0,7097,7099,3,818,409, + 0,7098,7096,1,0,0,0,7098,7097,1,0,0,0,7099,7101,1,0,0,0,7100,7095, + 1,0,0,0,7100,7101,1,0,0,0,7101,7104,1,0,0,0,7102,7104,3,690,345, + 0,7103,7078,1,0,0,0,7103,7102,1,0,0,0,7104,687,1,0,0,0,7105,7108, + 3,684,342,0,7106,7108,3,690,345,0,7107,7105,1,0,0,0,7107,7106,1, + 0,0,0,7108,689,1,0,0,0,7109,7110,5,108,0,0,7110,7111,5,62,0,0,7111, + 7112,5,2,0,0,7112,7113,3,674,337,0,7113,7114,5,3,0,0,7114,7284,1, + 0,0,0,7115,7284,5,48,0,0,7116,7118,7,95,0,0,7117,7119,3,660,330, + 0,7118,7117,1,0,0,0,7118,7119,1,0,0,0,7119,7284,1,0,0,0,7120,7284, + 5,49,0,0,7121,7284,5,52,0,0,7122,7284,5,89,0,0,7123,7284,5,99,0, + 0,7124,7284,5,47,0,0,7125,7284,5,111,0,0,7126,7127,7,96,0,0,7127, + 7128,5,2,0,0,7128,7129,3,674,337,0,7129,7130,5,36,0,0,7130,7131, + 3,652,326,0,7131,7132,5,3,0,0,7132,7284,1,0,0,0,7133,7134,5,397, + 0,0,7134,7139,5,2,0,0,7135,7136,3,742,371,0,7136,7137,5,64,0,0,7137, + 7138,3,674,337,0,7138,7140,1,0,0,0,7139,7135,1,0,0,0,7139,7140,1, + 0,0,0,7140,7141,1,0,0,0,7141,7284,5,3,0,0,7142,7143,5,489,0,0,7143, + 7144,5,2,0,0,7144,7147,3,674,337,0,7145,7146,5,6,0,0,7146,7148,3, + 744,372,0,7147,7145,1,0,0,0,7147,7148,1,0,0,0,7148,7149,1,0,0,0, + 7149,7150,5,3,0,0,7150,7284,1,0,0,0,7151,7152,5,410,0,0,7152,7153, + 5,2,0,0,7153,7154,3,674,337,0,7154,7155,5,84,0,0,7155,7156,3,674, + 337,0,7156,7157,5,64,0,0,7157,7160,3,674,337,0,7158,7159,5,62,0, + 0,7159,7161,3,674,337,0,7160,7158,1,0,0,0,7160,7161,1,0,0,0,7161, + 7162,1,0,0,0,7162,7163,5,3,0,0,7163,7284,1,0,0,0,7164,7165,5,411, + 0,0,7165,7170,5,2,0,0,7166,7167,3,682,341,0,7167,7168,5,68,0,0,7168, + 7169,3,682,341,0,7169,7171,1,0,0,0,7170,7166,1,0,0,0,7170,7171,1, + 0,0,0,7171,7172,1,0,0,0,7172,7284,5,3,0,0,7173,7174,5,417,0,0,7174, + 7176,5,2,0,0,7175,7177,3,746,373,0,7176,7175,1,0,0,0,7176,7177,1, + 0,0,0,7177,7178,1,0,0,0,7178,7284,5,3,0,0,7179,7180,5,421,0,0,7180, + 7182,5,2,0,0,7181,7183,7,97,0,0,7182,7181,1,0,0,0,7182,7183,1,0, + 0,0,7183,7188,1,0,0,0,7184,7186,3,674,337,0,7185,7184,1,0,0,0,7185, + 7186,1,0,0,0,7186,7187,1,0,0,0,7187,7189,5,64,0,0,7188,7185,1,0, + 0,0,7188,7189,1,0,0,0,7189,7190,1,0,0,0,7190,7191,3,730,365,0,7191, + 7192,1,0,0,0,7192,7193,5,3,0,0,7193,7284,1,0,0,0,7194,7195,5,408, + 0,0,7195,7196,5,2,0,0,7196,7197,3,674,337,0,7197,7198,5,6,0,0,7198, + 7199,3,674,337,0,7199,7200,5,3,0,0,7200,7284,1,0,0,0,7201,7202,7, + 98,0,0,7202,7284,3,534,267,0,7203,7204,5,426,0,0,7204,7205,5,2,0, + 0,7205,7206,5,266,0,0,7206,7216,3,824,412,0,7207,7214,5,6,0,0,7208, + 7209,5,424,0,0,7209,7210,5,2,0,0,7210,7211,3,692,346,0,7211,7212, + 5,3,0,0,7212,7215,1,0,0,0,7213,7215,3,730,365,0,7214,7208,1,0,0, + 0,7214,7213,1,0,0,0,7215,7217,1,0,0,0,7216,7207,1,0,0,0,7216,7217, + 1,0,0,0,7217,7218,1,0,0,0,7218,7219,5,3,0,0,7219,7284,1,0,0,0,7220, + 7221,5,427,0,0,7221,7222,5,2,0,0,7222,7223,3,682,341,0,7223,7224, + 3,698,349,0,7224,7225,5,3,0,0,7225,7284,1,0,0,0,7226,7227,5,428, + 0,0,7227,7228,5,2,0,0,7228,7229,3,692,346,0,7229,7230,5,3,0,0,7230, + 7284,1,0,0,0,7231,7232,5,429,0,0,7232,7233,5,2,0,0,7233,7234,3,696, + 348,0,7234,7237,3,674,337,0,7235,7236,7,99,0,0,7236,7238,5,378,0, + 0,7237,7235,1,0,0,0,7237,7238,1,0,0,0,7238,7239,1,0,0,0,7239,7240, + 5,3,0,0,7240,7284,1,0,0,0,7241,7242,5,430,0,0,7242,7243,5,2,0,0, + 7243,7244,5,266,0,0,7244,7247,3,824,412,0,7245,7246,5,6,0,0,7246, + 7248,3,674,337,0,7247,7245,1,0,0,0,7247,7248,1,0,0,0,7248,7249,1, + 0,0,0,7249,7250,5,3,0,0,7250,7284,1,0,0,0,7251,7252,5,431,0,0,7252, + 7253,5,2,0,0,7253,7254,5,383,0,0,7254,7255,3,674,337,0,7255,7256, + 5,6,0,0,7256,7260,5,375,0,0,7257,7258,5,269,0,0,7258,7261,5,450, + 0,0,7259,7261,3,674,337,0,7260,7257,1,0,0,0,7260,7259,1,0,0,0,7261, + 7271,1,0,0,0,7262,7263,5,6,0,0,7263,7269,5,339,0,0,7264,7266,5,269, + 0,0,7265,7264,1,0,0,0,7265,7266,1,0,0,0,7266,7267,1,0,0,0,7267,7270, + 5,450,0,0,7268,7270,5,385,0,0,7269,7265,1,0,0,0,7269,7268,1,0,0, + 0,7270,7272,1,0,0,0,7271,7262,1,0,0,0,7271,7272,1,0,0,0,7272,7273, + 1,0,0,0,7273,7274,5,3,0,0,7274,7284,1,0,0,0,7275,7276,5,432,0,0, + 7276,7277,5,2,0,0,7277,7278,3,696,348,0,7278,7279,3,674,337,0,7279, + 7280,5,36,0,0,7280,7281,3,654,327,0,7281,7282,5,3,0,0,7282,7284, + 1,0,0,0,7283,7109,1,0,0,0,7283,7115,1,0,0,0,7283,7116,1,0,0,0,7283, + 7120,1,0,0,0,7283,7121,1,0,0,0,7283,7122,1,0,0,0,7283,7123,1,0,0, + 0,7283,7124,1,0,0,0,7283,7125,1,0,0,0,7283,7126,1,0,0,0,7283,7133, + 1,0,0,0,7283,7142,1,0,0,0,7283,7151,1,0,0,0,7283,7164,1,0,0,0,7283, + 7173,1,0,0,0,7283,7179,1,0,0,0,7283,7194,1,0,0,0,7283,7201,1,0,0, + 0,7283,7203,1,0,0,0,7283,7220,1,0,0,0,7283,7226,1,0,0,0,7283,7231, + 1,0,0,0,7283,7241,1,0,0,0,7283,7251,1,0,0,0,7283,7275,1,0,0,0,7284, + 691,1,0,0,0,7285,7290,3,694,347,0,7286,7287,5,6,0,0,7287,7289,3, + 694,347,0,7288,7286,1,0,0,0,7289,7292,1,0,0,0,7290,7288,1,0,0,0, + 7290,7291,1,0,0,0,7291,693,1,0,0,0,7292,7290,1,0,0,0,7293,7296,3, + 674,337,0,7294,7295,5,36,0,0,7295,7297,3,824,412,0,7296,7294,1,0, + 0,0,7296,7297,1,0,0,0,7297,695,1,0,0,0,7298,7299,7,100,0,0,7299, + 697,1,0,0,0,7300,7302,5,286,0,0,7301,7303,3,700,350,0,7302,7301, + 1,0,0,0,7302,7303,1,0,0,0,7303,7304,1,0,0,0,7304,7306,3,682,341, + 0,7305,7307,3,700,350,0,7306,7305,1,0,0,0,7306,7307,1,0,0,0,7307, + 699,1,0,0,0,7308,7309,5,147,0,0,7309,7310,7,101,0,0,7310,701,1,0, + 0,0,7311,7312,5,104,0,0,7312,7317,3,704,352,0,7313,7314,5,6,0,0, + 7314,7316,3,704,352,0,7315,7313,1,0,0,0,7316,7319,1,0,0,0,7317,7315, + 1,0,0,0,7317,7318,1,0,0,0,7318,703,1,0,0,0,7319,7317,1,0,0,0,7320, + 7321,3,818,409,0,7321,7322,5,36,0,0,7322,7323,3,708,354,0,7323,705, + 1,0,0,0,7324,7327,5,124,0,0,7325,7328,3,708,354,0,7326,7328,3,818, + 409,0,7327,7325,1,0,0,0,7327,7326,1,0,0,0,7328,707,1,0,0,0,7329, + 7331,5,2,0,0,7330,7332,3,818,409,0,7331,7330,1,0,0,0,7331,7332,1, + 0,0,0,7332,7336,1,0,0,0,7333,7334,5,285,0,0,7334,7335,5,147,0,0, + 7335,7337,3,730,365,0,7336,7333,1,0,0,0,7336,7337,1,0,0,0,7337,7339, + 1,0,0,0,7338,7340,3,586,293,0,7339,7338,1,0,0,0,7339,7340,1,0,0, + 0,7340,7342,1,0,0,0,7341,7343,3,710,355,0,7342,7341,1,0,0,0,7342, + 7343,1,0,0,0,7343,7344,1,0,0,0,7344,7345,5,3,0,0,7345,709,1,0,0, + 0,7346,7351,7,102,0,0,7347,7348,5,387,0,0,7348,7349,3,712,356,0, + 7349,7350,5,33,0,0,7350,7352,1,0,0,0,7351,7347,1,0,0,0,7351,7352, + 1,0,0,0,7352,7353,1,0,0,0,7353,7354,3,712,356,0,7354,7364,1,0,0, + 0,7355,7362,5,199,0,0,7356,7357,5,434,0,0,7357,7363,5,414,0,0,7358, + 7363,5,66,0,0,7359,7363,5,467,0,0,7360,7361,5,269,0,0,7361,7363, + 5,482,0,0,7362,7356,1,0,0,0,7362,7358,1,0,0,0,7362,7359,1,0,0,0, + 7362,7360,1,0,0,0,7363,7365,1,0,0,0,7364,7355,1,0,0,0,7364,7365, + 1,0,0,0,7365,711,1,0,0,0,7366,7369,5,362,0,0,7367,7369,3,674,337, + 0,7368,7366,1,0,0,0,7368,7367,1,0,0,0,7369,7370,1,0,0,0,7370,7374, + 7,103,0,0,7371,7372,5,434,0,0,7372,7374,5,414,0,0,7373,7368,1,0, + 0,0,7373,7371,1,0,0,0,7374,713,1,0,0,0,7375,7383,3,716,358,0,7376, + 7377,5,2,0,0,7377,7378,3,730,365,0,7378,7379,5,6,0,0,7379,7380,3, + 674,337,0,7380,7381,5,3,0,0,7381,7383,1,0,0,0,7382,7375,1,0,0,0, + 7382,7376,1,0,0,0,7383,715,1,0,0,0,7384,7385,5,414,0,0,7385,7387, + 5,2,0,0,7386,7388,3,730,365,0,7387,7386,1,0,0,0,7387,7388,1,0,0, + 0,7388,7389,1,0,0,0,7389,7390,5,3,0,0,7390,717,1,0,0,0,7391,7392, + 7,104,0,0,7392,719,1,0,0,0,7393,7396,5,29,0,0,7394,7396,3,722,361, + 0,7395,7393,1,0,0,0,7395,7394,1,0,0,0,7396,721,1,0,0,0,7397,7398, + 7,105,0,0,7398,723,1,0,0,0,7399,7406,5,29,0,0,7400,7401,5,278,0, + 0,7401,7402,5,2,0,0,7402,7403,3,414,207,0,7403,7404,5,3,0,0,7404, + 7406,1,0,0,0,7405,7399,1,0,0,0,7405,7400,1,0,0,0,7406,725,1,0,0, + 0,7407,7414,3,720,360,0,7408,7409,5,278,0,0,7409,7410,5,2,0,0,7410, + 7411,3,414,207,0,7411,7412,5,3,0,0,7412,7414,1,0,0,0,7413,7407,1, + 0,0,0,7413,7408,1,0,0,0,7414,727,1,0,0,0,7415,7421,3,726,363,0,7416, + 7418,5,77,0,0,7417,7416,1,0,0,0,7417,7418,1,0,0,0,7418,7419,1,0, + 0,0,7419,7421,7,106,0,0,7420,7415,1,0,0,0,7420,7417,1,0,0,0,7421, + 729,1,0,0,0,7422,7427,3,674,337,0,7423,7424,5,6,0,0,7424,7426,3, + 674,337,0,7425,7423,1,0,0,0,7426,7429,1,0,0,0,7427,7425,1,0,0,0, + 7427,7428,1,0,0,0,7428,731,1,0,0,0,7429,7427,1,0,0,0,7430,7431,5, + 2,0,0,7431,7432,3,674,337,0,7432,7433,5,3,0,0,7433,7436,1,0,0,0, + 7434,7436,3,800,400,0,7435,7430,1,0,0,0,7435,7434,1,0,0,0,7436,733, + 1,0,0,0,7437,7440,3,674,337,0,7438,7440,3,800,400,0,7439,7437,1, + 0,0,0,7439,7438,1,0,0,0,7440,735,1,0,0,0,7441,7446,3,738,369,0,7442, + 7443,5,6,0,0,7443,7445,3,738,369,0,7444,7442,1,0,0,0,7445,7448,1, + 0,0,0,7446,7444,1,0,0,0,7446,7447,1,0,0,0,7447,737,1,0,0,0,7448, + 7446,1,0,0,0,7449,7455,3,674,337,0,7450,7451,3,820,410,0,7451,7452, + 7,107,0,0,7452,7453,3,674,337,0,7453,7455,1,0,0,0,7454,7449,1,0, + 0,0,7454,7450,1,0,0,0,7455,739,1,0,0,0,7456,7466,5,4,0,0,7457,7467, + 3,730,365,0,7458,7463,3,740,370,0,7459,7460,5,6,0,0,7460,7462,3, + 740,370,0,7461,7459,1,0,0,0,7462,7465,1,0,0,0,7463,7461,1,0,0,0, + 7463,7464,1,0,0,0,7464,7467,1,0,0,0,7465,7463,1,0,0,0,7466,7457, + 1,0,0,0,7466,7458,1,0,0,0,7466,7467,1,0,0,0,7467,7468,1,0,0,0,7468, + 7469,5,5,0,0,7469,741,1,0,0,0,7470,7479,3,826,413,0,7471,7479,5, + 384,0,0,7472,7479,5,264,0,0,7473,7479,5,176,0,0,7474,7479,5,218, + 0,0,7475,7479,5,261,0,0,7476,7479,5,326,0,0,7477,7479,3,808,404, + 0,7478,7470,1,0,0,0,7478,7471,1,0,0,0,7478,7472,1,0,0,0,7478,7473, + 1,0,0,0,7478,7474,1,0,0,0,7478,7475,1,0,0,0,7478,7476,1,0,0,0,7478, + 7477,1,0,0,0,7479,743,1,0,0,0,7480,7481,7,108,0,0,7481,745,1,0,0, + 0,7482,7483,3,674,337,0,7483,7484,5,64,0,0,7484,7487,3,674,337,0, + 7485,7486,5,62,0,0,7486,7488,3,674,337,0,7487,7485,1,0,0,0,7487, + 7488,1,0,0,0,7488,7504,1,0,0,0,7489,7490,3,674,337,0,7490,7491,5, + 62,0,0,7491,7494,3,674,337,0,7492,7493,5,64,0,0,7493,7495,3,674, + 337,0,7494,7492,1,0,0,0,7494,7495,1,0,0,0,7495,7504,1,0,0,0,7496, + 7497,3,674,337,0,7497,7498,5,127,0,0,7498,7499,3,674,337,0,7499, + 7500,5,197,0,0,7500,7501,3,674,337,0,7501,7504,1,0,0,0,7502,7504, + 3,730,365,0,7503,7482,1,0,0,0,7503,7489,1,0,0,0,7503,7496,1,0,0, + 0,7503,7502,1,0,0,0,7504,747,1,0,0,0,7505,7506,5,102,0,0,7506,7507, + 3,674,337,0,7507,7508,5,93,0,0,7508,7509,3,674,337,0,7509,749,1, + 0,0,0,7510,7513,5,11,0,0,7511,7514,3,824,412,0,7512,7514,5,9,0,0, + 7513,7511,1,0,0,0,7513,7512,1,0,0,0,7514,7528,1,0,0,0,7515,7524, + 5,4,0,0,7516,7525,3,674,337,0,7517,7519,3,674,337,0,7518,7517,1, + 0,0,0,7518,7519,1,0,0,0,7519,7520,1,0,0,0,7520,7522,5,8,0,0,7521, + 7523,3,674,337,0,7522,7521,1,0,0,0,7522,7523,1,0,0,0,7523,7525,1, + 0,0,0,7524,7516,1,0,0,0,7524,7518,1,0,0,0,7525,7526,1,0,0,0,7526, + 7528,5,5,0,0,7527,7510,1,0,0,0,7527,7515,1,0,0,0,7528,751,1,0,0, + 0,7529,7531,3,750,375,0,7530,7529,1,0,0,0,7531,7532,1,0,0,0,7532, + 7530,1,0,0,0,7532,7533,1,0,0,0,7533,753,1,0,0,0,7534,7536,3,750, + 375,0,7535,7534,1,0,0,0,7536,7539,1,0,0,0,7537,7535,1,0,0,0,7537, + 7538,1,0,0,0,7538,755,1,0,0,0,7539,7537,1,0,0,0,7540,7545,3,758, + 379,0,7541,7542,5,6,0,0,7542,7544,3,758,379,0,7543,7541,1,0,0,0, + 7544,7547,1,0,0,0,7545,7543,1,0,0,0,7545,7546,1,0,0,0,7546,757,1, + 0,0,0,7547,7545,1,0,0,0,7548,7553,3,734,367,0,7549,7550,5,36,0,0, + 7550,7554,3,824,412,0,7551,7554,3,826,413,0,7552,7554,1,0,0,0,7553, + 7549,1,0,0,0,7553,7551,1,0,0,0,7553,7552,1,0,0,0,7554,7557,1,0,0, + 0,7555,7557,5,9,0,0,7556,7548,1,0,0,0,7556,7555,1,0,0,0,7557,759, + 1,0,0,0,7558,7563,3,780,390,0,7559,7560,5,6,0,0,7560,7562,3,780, + 390,0,7561,7559,1,0,0,0,7562,7565,1,0,0,0,7563,7561,1,0,0,0,7563, + 7564,1,0,0,0,7564,761,1,0,0,0,7565,7563,1,0,0,0,7566,7571,3,774, + 387,0,7567,7568,5,6,0,0,7568,7570,3,774,387,0,7569,7567,1,0,0,0, + 7570,7573,1,0,0,0,7571,7569,1,0,0,0,7571,7572,1,0,0,0,7572,763,1, + 0,0,0,7573,7571,1,0,0,0,7574,7579,3,790,395,0,7575,7576,5,6,0,0, + 7576,7578,3,790,395,0,7577,7575,1,0,0,0,7578,7581,1,0,0,0,7579,7577, + 1,0,0,0,7579,7580,1,0,0,0,7580,765,1,0,0,0,7581,7579,1,0,0,0,7582, + 7587,3,788,394,0,7583,7584,5,6,0,0,7584,7586,3,788,394,0,7585,7583, + 1,0,0,0,7586,7589,1,0,0,0,7587,7585,1,0,0,0,7587,7588,1,0,0,0,7588, + 767,1,0,0,0,7589,7587,1,0,0,0,7590,7591,3,780,390,0,7591,769,1,0, + 0,0,7592,7593,3,780,390,0,7593,771,1,0,0,0,7594,7595,3,780,390,0, + 7595,773,1,0,0,0,7596,7597,3,780,390,0,7597,775,1,0,0,0,7598,7599, + 3,780,390,0,7599,777,1,0,0,0,7600,7601,3,316,158,0,7601,779,1,0, + 0,0,7602,7604,3,818,409,0,7603,7605,3,752,376,0,7604,7603,1,0,0, + 0,7604,7605,1,0,0,0,7605,781,1,0,0,0,7606,7611,3,770,385,0,7607, + 7608,5,6,0,0,7608,7610,3,770,385,0,7609,7607,1,0,0,0,7610,7613,1, + 0,0,0,7611,7609,1,0,0,0,7611,7612,1,0,0,0,7612,783,1,0,0,0,7613, + 7611,1,0,0,0,7614,7619,3,818,409,0,7615,7616,5,6,0,0,7616,7618,3, + 818,409,0,7617,7615,1,0,0,0,7618,7621,1,0,0,0,7619,7617,1,0,0,0, + 7619,7620,1,0,0,0,7620,785,1,0,0,0,7621,7619,1,0,0,0,7622,7623,3, + 316,158,0,7623,787,1,0,0,0,7624,7625,3,316,158,0,7625,789,1,0,0, + 0,7626,7627,3,316,158,0,7627,791,1,0,0,0,7628,7629,3,818,409,0,7629, + 793,1,0,0,0,7630,7631,3,818,409,0,7631,795,1,0,0,0,7632,7637,3,820, + 410,0,7633,7634,3,818,409,0,7634,7635,3,752,376,0,7635,7637,1,0, + 0,0,7636,7632,1,0,0,0,7636,7633,1,0,0,0,7637,797,1,0,0,0,7638,7643, + 3,820,410,0,7639,7640,3,818,409,0,7640,7641,3,752,376,0,7641,7643, + 1,0,0,0,7642,7638,1,0,0,0,7642,7639,1,0,0,0,7643,799,1,0,0,0,7644, + 7645,3,818,409,0,7645,7646,3,754,377,0,7646,7649,1,0,0,0,7647,7649, + 4,400,10,0,7648,7644,1,0,0,0,7648,7647,1,0,0,0,7649,801,1,0,0,0, + 7650,7651,3,818,409,0,7651,803,1,0,0,0,7652,7657,3,820,410,0,7653, + 7654,3,818,409,0,7654,7655,3,752,376,0,7655,7657,1,0,0,0,7656,7652, + 1,0,0,0,7656,7653,1,0,0,0,7657,805,1,0,0,0,7658,7663,3,820,410,0, + 7659,7660,3,818,409,0,7660,7661,3,752,376,0,7661,7663,1,0,0,0,7662, + 7658,1,0,0,0,7662,7659,1,0,0,0,7663,807,1,0,0,0,7664,7667,3,810, + 405,0,7665,7666,5,487,0,0,7666,7668,3,810,405,0,7667,7665,1,0,0, + 0,7667,7668,1,0,0,0,7668,809,1,0,0,0,7669,7681,5,558,0,0,7670,7681, + 5,560,0,0,7671,7675,5,562,0,0,7672,7674,5,588,0,0,7673,7672,1,0, + 0,0,7674,7677,1,0,0,0,7675,7673,1,0,0,0,7675,7676,1,0,0,0,7676,7678, + 1,0,0,0,7677,7675,1,0,0,0,7678,7681,5,589,0,0,7679,7681,5,584,0, + 0,7680,7669,1,0,0,0,7680,7670,1,0,0,0,7680,7671,1,0,0,0,7680,7679, + 1,0,0,0,7681,811,1,0,0,0,7682,7684,7,29,0,0,7683,7682,1,0,0,0,7683, + 7684,1,0,0,0,7684,7685,1,0,0,0,7685,7686,5,571,0,0,7686,813,1,0, + 0,0,7687,7693,3,822,411,0,7688,7693,5,52,0,0,7689,7693,5,49,0,0, + 7690,7693,5,89,0,0,7691,7693,5,524,0,0,7692,7687,1,0,0,0,7692,7688, + 1,0,0,0,7692,7689,1,0,0,0,7692,7690,1,0,0,0,7692,7691,1,0,0,0,7693, + 815,1,0,0,0,7694,7699,3,814,407,0,7695,7696,5,6,0,0,7696,7698,3, + 814,407,0,7697,7695,1,0,0,0,7698,7701,1,0,0,0,7699,7697,1,0,0,0, + 7699,7700,1,0,0,0,7700,817,1,0,0,0,7701,7699,1,0,0,0,7702,7705,3, + 826,413,0,7703,7705,3,830,415,0,7704,7702,1,0,0,0,7704,7703,1,0, + 0,0,7705,819,1,0,0,0,7706,7709,3,826,413,0,7707,7709,3,832,416,0, + 7708,7706,1,0,0,0,7708,7707,1,0,0,0,7709,821,1,0,0,0,7710,7714,3, + 826,413,0,7711,7714,3,830,415,0,7712,7714,3,832,416,0,7713,7710, + 1,0,0,0,7713,7711,1,0,0,0,7713,7712,1,0,0,0,7714,823,1,0,0,0,7715, + 7720,3,826,413,0,7716,7720,3,830,415,0,7717,7720,3,832,416,0,7718, + 7720,3,834,417,0,7719,7715,1,0,0,0,7719,7716,1,0,0,0,7719,7717,1, + 0,0,0,7719,7718,1,0,0,0,7720,825,1,0,0,0,7721,7724,5,549,0,0,7722, + 7723,5,487,0,0,7723,7725,3,810,405,0,7724,7722,1,0,0,0,7724,7725, + 1,0,0,0,7725,7733,1,0,0,0,7726,7733,3,808,404,0,7727,7733,5,550, + 0,0,7728,7733,5,554,0,0,7729,7733,5,574,0,0,7730,7733,5,575,0,0, + 7731,7733,3,828,414,0,7732,7721,1,0,0,0,7732,7726,1,0,0,0,7732,7727, + 1,0,0,0,7732,7728,1,0,0,0,7732,7729,1,0,0,0,7732,7730,1,0,0,0,7732, + 7731,1,0,0,0,7733,827,1,0,0,0,7734,7735,7,109,0,0,7735,829,1,0,0, + 0,7736,7788,5,387,0,0,7737,7788,5,388,0,0,7738,7788,3,662,331,0, + 7739,7788,5,390,0,0,7740,7788,5,391,0,0,7741,7788,3,664,332,0,7742, + 7788,5,393,0,0,7743,7788,5,394,0,0,7744,7788,5,395,0,0,7745,7788, + 5,396,0,0,7746,7788,5,397,0,0,7747,7788,5,398,0,0,7748,7788,5,399, + 0,0,7749,7788,5,470,0,0,7750,7788,5,400,0,0,7751,7788,5,401,0,0, + 7752,7788,5,402,0,0,7753,7788,5,403,0,0,7754,7788,5,404,0,0,7755, + 7788,5,405,0,0,7756,7788,5,406,0,0,7757,7788,5,407,0,0,7758,7788, + 5,489,0,0,7759,7788,5,408,0,0,7760,7788,3,658,329,0,7761,7788,5, + 453,0,0,7762,7788,5,410,0,0,7763,7788,5,411,0,0,7764,7788,5,412, + 0,0,7765,7788,5,413,0,0,7766,7788,5,414,0,0,7767,7788,5,415,0,0, + 7768,7788,5,416,0,0,7769,7788,5,417,0,0,7770,7788,5,418,0,0,7771, + 7788,5,419,0,0,7772,7788,5,420,0,0,7773,7788,5,421,0,0,7774,7788, + 5,422,0,0,7775,7788,5,423,0,0,7776,7788,5,424,0,0,7777,7788,5,425, + 0,0,7778,7788,5,426,0,0,7779,7788,5,427,0,0,7780,7788,5,428,0,0, + 7781,7788,5,476,0,0,7782,7788,5,429,0,0,7783,7788,5,430,0,0,7784, + 7788,5,431,0,0,7785,7788,5,432,0,0,7786,7788,5,474,0,0,7787,7736, + 1,0,0,0,7787,7737,1,0,0,0,7787,7738,1,0,0,0,7787,7739,1,0,0,0,7787, + 7740,1,0,0,0,7787,7741,1,0,0,0,7787,7742,1,0,0,0,7787,7743,1,0,0, + 0,7787,7744,1,0,0,0,7787,7745,1,0,0,0,7787,7746,1,0,0,0,7787,7747, + 1,0,0,0,7787,7748,1,0,0,0,7787,7749,1,0,0,0,7787,7750,1,0,0,0,7787, + 7751,1,0,0,0,7787,7752,1,0,0,0,7787,7753,1,0,0,0,7787,7754,1,0,0, + 0,7787,7755,1,0,0,0,7787,7756,1,0,0,0,7787,7757,1,0,0,0,7787,7758, + 1,0,0,0,7787,7759,1,0,0,0,7787,7760,1,0,0,0,7787,7761,1,0,0,0,7787, + 7762,1,0,0,0,7787,7763,1,0,0,0,7787,7764,1,0,0,0,7787,7765,1,0,0, + 0,7787,7766,1,0,0,0,7787,7767,1,0,0,0,7787,7768,1,0,0,0,7787,7769, + 1,0,0,0,7787,7770,1,0,0,0,7787,7771,1,0,0,0,7787,7772,1,0,0,0,7787, + 7773,1,0,0,0,7787,7774,1,0,0,0,7787,7775,1,0,0,0,7787,7776,1,0,0, + 0,7787,7777,1,0,0,0,7787,7778,1,0,0,0,7787,7779,1,0,0,0,7787,7780, + 1,0,0,0,7787,7781,1,0,0,0,7787,7782,1,0,0,0,7787,7783,1,0,0,0,7787, + 7784,1,0,0,0,7787,7785,1,0,0,0,7787,7786,1,0,0,0,7788,831,1,0,0, + 0,7789,7790,7,110,0,0,7790,833,1,0,0,0,7791,7792,7,111,0,0,7792, + 835,1,0,0,0,7793,7795,3,838,419,0,7794,7793,1,0,0,0,7794,7795,1, + 0,0,0,7795,7806,1,0,0,0,7796,7804,5,178,0,0,7797,7801,3,840,420, + 0,7798,7801,5,178,0,0,7799,7801,3,838,419,0,7800,7797,1,0,0,0,7800, + 7798,1,0,0,0,7800,7799,1,0,0,0,7801,7802,1,0,0,0,7802,7800,1,0,0, + 0,7802,7803,1,0,0,0,7803,7805,1,0,0,0,7804,7800,1,0,0,0,7804,7805, + 1,0,0,0,7805,7807,1,0,0,0,7806,7796,1,0,0,0,7806,7807,1,0,0,0,7807, + 7808,1,0,0,0,7808,7812,5,146,0,0,7809,7811,3,846,423,0,7810,7809, + 1,0,0,0,7811,7814,1,0,0,0,7812,7810,1,0,0,0,7812,7813,1,0,0,0,7813, + 7816,1,0,0,0,7814,7812,1,0,0,0,7815,7817,3,924,462,0,7816,7815,1, + 0,0,0,7816,7817,1,0,0,0,7817,7818,1,0,0,0,7818,7820,5,454,0,0,7819, + 7821,3,928,464,0,7820,7819,1,0,0,0,7820,7821,1,0,0,0,7821,837,1, + 0,0,0,7822,7823,5,18,0,0,7823,7824,3,928,464,0,7824,7825,5,19,0, + 0,7825,839,1,0,0,0,7826,7873,3,928,464,0,7827,7828,5,496,0,0,7828, + 7831,5,62,0,0,7829,7832,5,28,0,0,7830,7832,3,818,409,0,7831,7829, + 1,0,0,0,7831,7830,1,0,0,0,7832,7874,1,0,0,0,7833,7835,5,497,0,0, + 7834,7833,1,0,0,0,7834,7835,1,0,0,0,7835,7836,1,0,0,0,7836,7838, + 3,652,326,0,7837,7839,3,98,49,0,7838,7837,1,0,0,0,7838,7839,1,0, + 0,0,7839,7842,1,0,0,0,7840,7841,5,77,0,0,7841,7843,5,78,0,0,7842, + 7840,1,0,0,0,7842,7843,1,0,0,0,7843,7849,1,0,0,0,7844,7847,3,844, + 422,0,7845,7847,5,53,0,0,7846,7844,1,0,0,0,7846,7845,1,0,0,0,7847, + 7848,1,0,0,0,7848,7850,3,930,465,0,7849,7846,1,0,0,0,7849,7850,1, + 0,0,0,7850,7874,1,0,0,0,7851,7853,5,269,0,0,7852,7851,1,0,0,0,7852, + 7853,1,0,0,0,7853,7854,1,0,0,0,7854,7856,5,324,0,0,7855,7852,1,0, + 0,0,7855,7856,1,0,0,0,7856,7857,1,0,0,0,7857,7869,5,172,0,0,7858, + 7859,5,2,0,0,7859,7864,3,842,421,0,7860,7861,5,6,0,0,7861,7863,3, + 842,421,0,7862,7860,1,0,0,0,7863,7866,1,0,0,0,7864,7862,1,0,0,0, + 7864,7865,1,0,0,0,7865,7867,1,0,0,0,7866,7864,1,0,0,0,7867,7868, + 5,3,0,0,7868,7870,1,0,0,0,7869,7858,1,0,0,0,7869,7870,1,0,0,0,7870, + 7871,1,0,0,0,7871,7872,7,112,0,0,7872,7874,3,560,280,0,7873,7827, + 1,0,0,0,7873,7834,1,0,0,0,7873,7855,1,0,0,0,7874,7875,1,0,0,0,7875, + 7876,5,7,0,0,7876,841,1,0,0,0,7877,7878,3,928,464,0,7878,7879,3, + 652,326,0,7879,843,1,0,0,0,7880,7881,7,113,0,0,7881,845,1,0,0,0, + 7882,7883,3,836,418,0,7883,7884,5,7,0,0,7884,7907,1,0,0,0,7885,7907, + 3,874,437,0,7886,7907,3,876,438,0,7887,7907,3,852,426,0,7888,7907, + 3,860,430,0,7889,7907,3,864,432,0,7890,7907,3,866,433,0,7891,7907, + 3,870,435,0,7892,7907,3,872,436,0,7893,7907,3,880,440,0,7894,7907, + 3,884,442,0,7895,7907,3,886,443,0,7896,7907,3,848,424,0,7897,7907, + 3,850,425,0,7898,7907,3,854,427,0,7899,7907,3,890,445,0,7900,7907, + 3,894,447,0,7901,7907,3,898,449,0,7902,7907,3,914,457,0,7903,7907, + 3,916,458,0,7904,7907,3,918,459,0,7905,7907,3,920,460,0,7906,7882, + 1,0,0,0,7906,7885,1,0,0,0,7906,7886,1,0,0,0,7906,7887,1,0,0,0,7906, + 7888,1,0,0,0,7906,7889,1,0,0,0,7906,7890,1,0,0,0,7906,7891,1,0,0, + 0,7906,7892,1,0,0,0,7906,7893,1,0,0,0,7906,7894,1,0,0,0,7906,7895, + 1,0,0,0,7906,7896,1,0,0,0,7906,7897,1,0,0,0,7906,7898,1,0,0,0,7906, + 7899,1,0,0,0,7906,7900,1,0,0,0,7906,7901,1,0,0,0,7906,7902,1,0,0, + 0,7906,7903,1,0,0,0,7906,7904,1,0,0,0,7906,7905,1,0,0,0,7907,847, + 1,0,0,0,7908,7909,5,498,0,0,7909,7910,3,930,465,0,7910,7911,5,7, + 0,0,7911,849,1,0,0,0,7912,7913,5,433,0,0,7913,7920,3,928,464,0,7914, + 7916,5,2,0,0,7915,7917,3,730,365,0,7916,7915,1,0,0,0,7916,7917,1, + 0,0,0,7917,7918,1,0,0,0,7918,7919,5,3,0,0,7919,7921,5,7,0,0,7920, + 7914,1,0,0,0,7920,7921,1,0,0,0,7921,7932,1,0,0,0,7922,7923,5,57, + 0,0,7923,7924,3,928,464,0,7924,7926,5,2,0,0,7925,7927,3,730,365, + 0,7926,7925,1,0,0,0,7926,7927,1,0,0,0,7927,7928,1,0,0,0,7928,7929, + 5,3,0,0,7929,7930,5,7,0,0,7930,7932,1,0,0,0,7931,7912,1,0,0,0,7931, + 7922,1,0,0,0,7932,851,1,0,0,0,7933,7934,3,858,429,0,7934,7935,3, + 844,422,0,7935,7936,3,930,465,0,7936,7937,5,7,0,0,7937,853,1,0,0, + 0,7938,7940,5,499,0,0,7939,7941,7,114,0,0,7940,7939,1,0,0,0,7940, + 7941,1,0,0,0,7941,7942,1,0,0,0,7942,7943,5,500,0,0,7943,7948,3,856, + 428,0,7944,7945,5,6,0,0,7945,7947,3,856,428,0,7946,7944,1,0,0,0, + 7947,7950,1,0,0,0,7948,7946,1,0,0,0,7948,7949,1,0,0,0,7949,7951, + 1,0,0,0,7950,7948,1,0,0,0,7951,7952,5,7,0,0,7952,855,1,0,0,0,7953, + 7954,3,858,429,0,7954,7955,3,844,422,0,7955,7956,3,818,409,0,7956, + 857,1,0,0,0,7957,7960,3,316,158,0,7958,7960,5,28,0,0,7959,7957,1, + 0,0,0,7959,7958,1,0,0,0,7960,7967,1,0,0,0,7961,7962,5,4,0,0,7962, + 7963,3,674,337,0,7963,7964,5,5,0,0,7964,7966,1,0,0,0,7965,7961,1, + 0,0,0,7966,7969,1,0,0,0,7967,7965,1,0,0,0,7967,7968,1,0,0,0,7968, + 859,1,0,0,0,7969,7967,1,0,0,0,7970,7971,5,220,0,0,7971,7972,3,930, + 465,0,7972,7976,5,93,0,0,7973,7975,3,846,423,0,7974,7973,1,0,0,0, + 7975,7978,1,0,0,0,7976,7974,1,0,0,0,7976,7977,1,0,0,0,7977,7990, + 1,0,0,0,7978,7976,1,0,0,0,7979,7980,5,502,0,0,7980,7981,3,674,337, + 0,7981,7985,5,93,0,0,7982,7984,3,846,423,0,7983,7982,1,0,0,0,7984, + 7987,1,0,0,0,7985,7983,1,0,0,0,7985,7986,1,0,0,0,7986,7989,1,0,0, + 0,7987,7985,1,0,0,0,7988,7979,1,0,0,0,7989,7992,1,0,0,0,7990,7988, + 1,0,0,0,7990,7991,1,0,0,0,7991,7994,1,0,0,0,7992,7990,1,0,0,0,7993, + 7995,3,862,431,0,7994,7993,1,0,0,0,7994,7995,1,0,0,0,7995,7996,1, + 0,0,0,7996,7997,5,454,0,0,7997,7998,5,220,0,0,7998,7999,5,7,0,0, + 7999,861,1,0,0,0,8000,8004,5,58,0,0,8001,8003,3,846,423,0,8002,8001, + 1,0,0,0,8003,8006,1,0,0,0,8004,8002,1,0,0,0,8004,8005,1,0,0,0,8005, + 863,1,0,0,0,8006,8004,1,0,0,0,8007,8009,5,40,0,0,8008,8010,3,930, + 465,0,8009,8008,1,0,0,0,8009,8010,1,0,0,0,8010,8020,1,0,0,0,8011, + 8012,5,102,0,0,8012,8013,3,730,365,0,8013,8017,5,93,0,0,8014,8016, + 3,846,423,0,8015,8014,1,0,0,0,8016,8019,1,0,0,0,8017,8015,1,0,0, + 0,8017,8018,1,0,0,0,8018,8021,1,0,0,0,8019,8017,1,0,0,0,8020,8011, + 1,0,0,0,8021,8022,1,0,0,0,8022,8020,1,0,0,0,8022,8023,1,0,0,0,8023, + 8025,1,0,0,0,8024,8026,3,862,431,0,8025,8024,1,0,0,0,8025,8026,1, + 0,0,0,8026,8027,1,0,0,0,8027,8028,5,454,0,0,8028,8029,5,40,0,0,8029, + 8030,5,7,0,0,8030,865,1,0,0,0,8031,8033,3,838,419,0,8032,8031,1, + 0,0,0,8032,8033,1,0,0,0,8033,8038,1,0,0,0,8034,8035,5,503,0,0,8035, + 8039,3,674,337,0,8036,8037,5,62,0,0,8037,8039,3,868,434,0,8038,8034, + 1,0,0,0,8038,8036,1,0,0,0,8038,8039,1,0,0,0,8039,8040,1,0,0,0,8040, + 8041,3,882,441,0,8041,867,1,0,0,0,8042,8043,3,314,157,0,8043,8066, + 5,68,0,0,8044,8046,3,818,409,0,8045,8047,3,534,267,0,8046,8045,1, + 0,0,0,8046,8047,1,0,0,0,8047,8067,1,0,0,0,8048,8067,3,560,280,0, + 8049,8067,3,520,260,0,8050,8051,5,202,0,0,8051,8054,3,674,337,0, + 8052,8053,5,100,0,0,8053,8055,3,730,365,0,8054,8052,1,0,0,0,8054, + 8055,1,0,0,0,8055,8067,1,0,0,0,8056,8058,5,504,0,0,8057,8056,1,0, + 0,0,8057,8058,1,0,0,0,8058,8059,1,0,0,0,8059,8060,3,674,337,0,8060, + 8061,5,24,0,0,8061,8064,3,674,337,0,8062,8063,5,147,0,0,8063,8065, + 3,674,337,0,8064,8062,1,0,0,0,8064,8065,1,0,0,0,8065,8067,1,0,0, + 0,8066,8044,1,0,0,0,8066,8048,1,0,0,0,8066,8049,1,0,0,0,8066,8050, + 1,0,0,0,8066,8057,1,0,0,0,8067,869,1,0,0,0,8068,8070,3,838,419,0, + 8069,8068,1,0,0,0,8069,8070,1,0,0,0,8070,8071,1,0,0,0,8071,8072, + 5,505,0,0,8072,8075,3,314,157,0,8073,8074,5,506,0,0,8074,8076,5, + 571,0,0,8075,8073,1,0,0,0,8075,8076,1,0,0,0,8076,8077,1,0,0,0,8077, + 8078,5,68,0,0,8078,8079,5,35,0,0,8079,8080,3,674,337,0,8080,8081, + 3,882,441,0,8081,871,1,0,0,0,8082,8084,7,115,0,0,8083,8085,3,928, + 464,0,8084,8083,1,0,0,0,8084,8085,1,0,0,0,8085,8088,1,0,0,0,8086, + 8087,5,102,0,0,8087,8089,3,930,465,0,8088,8086,1,0,0,0,8088,8089, + 1,0,0,0,8089,8090,1,0,0,0,8090,8091,5,7,0,0,8091,873,1,0,0,0,8092, + 8107,5,508,0,0,8093,8094,5,268,0,0,8094,8108,3,930,465,0,8095,8102, + 5,509,0,0,8096,8097,5,202,0,0,8097,8098,3,674,337,0,8098,8099,5, + 100,0,0,8099,8100,3,730,365,0,8100,8103,1,0,0,0,8101,8103,3,560, + 280,0,8102,8096,1,0,0,0,8102,8101,1,0,0,0,8103,8108,1,0,0,0,8104, + 8106,3,930,465,0,8105,8104,1,0,0,0,8105,8106,1,0,0,0,8106,8108,1, + 0,0,0,8107,8093,1,0,0,0,8107,8095,1,0,0,0,8107,8105,1,0,0,0,8108, + 8109,1,0,0,0,8109,8110,5,7,0,0,8110,875,1,0,0,0,8111,8141,5,510, + 0,0,8112,8114,7,116,0,0,8113,8112,1,0,0,0,8113,8114,1,0,0,0,8114, + 8127,1,0,0,0,8115,8128,3,826,413,0,8116,8117,5,511,0,0,8117,8128, + 3,808,404,0,8118,8125,3,808,404,0,8119,8120,5,6,0,0,8120,8122,3, + 674,337,0,8121,8119,1,0,0,0,8122,8123,1,0,0,0,8123,8121,1,0,0,0, + 8123,8124,1,0,0,0,8124,8126,1,0,0,0,8125,8121,1,0,0,0,8125,8126, + 1,0,0,0,8126,8128,1,0,0,0,8127,8115,1,0,0,0,8127,8116,1,0,0,0,8127, + 8118,1,0,0,0,8127,8128,1,0,0,0,8128,8138,1,0,0,0,8129,8130,5,100, + 0,0,8130,8135,3,878,439,0,8131,8132,5,6,0,0,8132,8134,3,878,439, + 0,8133,8131,1,0,0,0,8134,8137,1,0,0,0,8135,8133,1,0,0,0,8135,8136, + 1,0,0,0,8136,8139,1,0,0,0,8137,8135,1,0,0,0,8138,8129,1,0,0,0,8138, + 8139,1,0,0,0,8139,8140,1,0,0,0,8140,8142,5,7,0,0,8141,8113,1,0,0, + 0,8141,8142,1,0,0,0,8142,877,1,0,0,0,8143,8144,3,826,413,0,8144, + 8145,5,10,0,0,8145,8146,3,674,337,0,8146,879,1,0,0,0,8147,8148,5, + 518,0,0,8148,8151,3,930,465,0,8149,8150,5,6,0,0,8150,8152,3,930, + 465,0,8151,8149,1,0,0,0,8151,8152,1,0,0,0,8152,8153,1,0,0,0,8153, + 8154,5,7,0,0,8154,881,1,0,0,0,8155,8159,5,519,0,0,8156,8158,3,846, + 423,0,8157,8156,1,0,0,0,8158,8161,1,0,0,0,8159,8157,1,0,0,0,8159, + 8160,1,0,0,0,8160,8162,1,0,0,0,8161,8159,1,0,0,0,8162,8163,5,454, + 0,0,8163,8165,5,519,0,0,8164,8166,3,928,464,0,8165,8164,1,0,0,0, + 8165,8166,1,0,0,0,8166,8167,1,0,0,0,8167,8168,5,7,0,0,8168,883,1, + 0,0,0,8169,8171,3,4,2,0,8170,8172,3,888,444,0,8171,8170,1,0,0,0, + 8171,8172,1,0,0,0,8172,8173,1,0,0,0,8173,8174,5,7,0,0,8174,885,1, + 0,0,0,8175,8176,5,202,0,0,8176,8192,3,674,337,0,8177,8179,3,888, + 444,0,8178,8177,1,0,0,0,8178,8179,1,0,0,0,8179,8182,1,0,0,0,8180, + 8181,5,100,0,0,8181,8183,3,730,365,0,8182,8180,1,0,0,0,8182,8183, + 1,0,0,0,8183,8193,1,0,0,0,8184,8185,5,100,0,0,8185,8187,3,730,365, + 0,8186,8184,1,0,0,0,8186,8187,1,0,0,0,8187,8189,1,0,0,0,8188,8190, + 3,888,444,0,8189,8188,1,0,0,0,8189,8190,1,0,0,0,8190,8193,1,0,0, + 0,8191,8193,1,0,0,0,8192,8178,1,0,0,0,8192,8186,1,0,0,0,8192,8191, + 1,0,0,0,8193,8194,1,0,0,0,8194,8195,5,7,0,0,8195,887,1,0,0,0,8196, + 8198,5,71,0,0,8197,8199,5,346,0,0,8198,8197,1,0,0,0,8198,8199,1, + 0,0,0,8199,8200,1,0,0,0,8200,8201,3,730,365,0,8201,889,1,0,0,0,8202, + 8234,5,520,0,0,8203,8208,3,922,461,0,8204,8206,5,269,0,0,8205,8204, + 1,0,0,0,8205,8206,1,0,0,0,8206,8207,1,0,0,0,8207,8209,5,324,0,0, + 8208,8205,1,0,0,0,8208,8209,1,0,0,0,8209,8210,1,0,0,0,8210,8218, + 5,62,0,0,8211,8219,3,560,280,0,8212,8213,5,202,0,0,8213,8216,3,930, + 465,0,8214,8215,5,100,0,0,8215,8217,3,730,365,0,8216,8214,1,0,0, + 0,8216,8217,1,0,0,0,8217,8219,1,0,0,0,8218,8211,1,0,0,0,8218,8212, + 1,0,0,0,8219,8235,1,0,0,0,8220,8232,3,818,409,0,8221,8222,5,2,0, + 0,8222,8227,3,892,446,0,8223,8224,5,6,0,0,8224,8226,3,892,446,0, + 8225,8223,1,0,0,0,8226,8229,1,0,0,0,8227,8225,1,0,0,0,8227,8228, + 1,0,0,0,8228,8230,1,0,0,0,8229,8227,1,0,0,0,8230,8231,5,3,0,0,8231, + 8233,1,0,0,0,8232,8221,1,0,0,0,8232,8233,1,0,0,0,8233,8235,1,0,0, + 0,8234,8203,1,0,0,0,8234,8220,1,0,0,0,8235,8236,1,0,0,0,8236,8237, + 5,7,0,0,8237,891,1,0,0,0,8238,8239,3,818,409,0,8239,8240,5,20,0, + 0,8240,8242,1,0,0,0,8241,8238,1,0,0,0,8241,8242,1,0,0,0,8242,8243, + 1,0,0,0,8243,8244,3,674,337,0,8244,893,1,0,0,0,8245,8247,5,61,0, + 0,8246,8248,3,896,448,0,8247,8246,1,0,0,0,8247,8248,1,0,0,0,8248, + 8250,1,0,0,0,8249,8251,3,332,166,0,8250,8249,1,0,0,0,8250,8251,1, + 0,0,0,8251,8252,1,0,0,0,8252,8253,3,922,461,0,8253,8254,5,71,0,0, + 8254,8255,3,730,365,0,8255,8256,5,7,0,0,8256,895,1,0,0,0,8257,8272, + 5,268,0,0,8258,8272,5,293,0,0,8259,8272,5,207,0,0,8260,8272,5,249, + 0,0,8261,8263,7,50,0,0,8262,8261,1,0,0,0,8262,8263,1,0,0,0,8263, + 8264,1,0,0,0,8264,8272,3,674,337,0,8265,8272,5,30,0,0,8266,8269, + 7,117,0,0,8267,8270,3,674,337,0,8268,8270,5,30,0,0,8269,8267,1,0, + 0,0,8269,8268,1,0,0,0,8269,8270,1,0,0,0,8270,8272,1,0,0,0,8271,8257, + 1,0,0,0,8271,8258,1,0,0,0,8271,8259,1,0,0,0,8271,8260,1,0,0,0,8271, + 8262,1,0,0,0,8271,8265,1,0,0,0,8271,8266,1,0,0,0,8272,897,1,0,0, + 0,8273,8275,5,265,0,0,8274,8276,3,896,448,0,8275,8274,1,0,0,0,8275, + 8276,1,0,0,0,8276,8277,1,0,0,0,8277,8278,3,922,461,0,8278,8279,5, + 7,0,0,8279,899,1,0,0,0,8280,8282,3,572,286,0,8281,8280,1,0,0,0,8281, + 8282,1,0,0,0,8282,8283,1,0,0,0,8283,8284,5,525,0,0,8284,8286,5,71, + 0,0,8285,8287,5,81,0,0,8286,8285,1,0,0,0,8286,8287,1,0,0,0,8287, + 8288,1,0,0,0,8288,8290,3,774,387,0,8289,8291,5,9,0,0,8290,8289,1, + 0,0,0,8290,8291,1,0,0,0,8291,8296,1,0,0,0,8292,8294,5,36,0,0,8293, + 8292,1,0,0,0,8293,8294,1,0,0,0,8294,8295,1,0,0,0,8295,8297,3,818, + 409,0,8296,8293,1,0,0,0,8296,8297,1,0,0,0,8297,8298,1,0,0,0,8298, + 8299,5,100,0,0,8299,8300,3,902,451,0,8300,8301,5,80,0,0,8301,8303, + 3,674,337,0,8302,8304,3,904,452,0,8303,8302,1,0,0,0,8304,8305,1, + 0,0,0,8305,8303,1,0,0,0,8305,8306,1,0,0,0,8306,901,1,0,0,0,8307, + 8309,5,81,0,0,8308,8307,1,0,0,0,8308,8309,1,0,0,0,8309,8310,1,0, + 0,0,8310,8312,3,774,387,0,8311,8313,5,9,0,0,8312,8311,1,0,0,0,8312, + 8313,1,0,0,0,8313,8319,1,0,0,0,8314,8317,3,564,282,0,8315,8317,3, + 608,304,0,8316,8314,1,0,0,0,8316,8315,1,0,0,0,8317,8319,1,0,0,0, + 8318,8308,1,0,0,0,8318,8316,1,0,0,0,8319,8324,1,0,0,0,8320,8322, + 5,36,0,0,8321,8320,1,0,0,0,8321,8322,1,0,0,0,8322,8323,1,0,0,0,8323, + 8325,3,818,409,0,8324,8321,1,0,0,0,8324,8325,1,0,0,0,8325,903,1, + 0,0,0,8326,8327,5,102,0,0,8327,8330,5,526,0,0,8328,8329,5,33,0,0, + 8329,8331,3,674,337,0,8330,8328,1,0,0,0,8330,8331,1,0,0,0,8331,8332, + 1,0,0,0,8332,8337,5,93,0,0,8333,8338,3,908,454,0,8334,8338,5,182, + 0,0,8335,8336,5,57,0,0,8336,8338,5,270,0,0,8337,8333,1,0,0,0,8337, + 8334,1,0,0,0,8337,8335,1,0,0,0,8338,8353,1,0,0,0,8339,8340,5,102, + 0,0,8340,8341,5,77,0,0,8341,8344,5,526,0,0,8342,8343,5,33,0,0,8343, + 8345,3,674,337,0,8344,8342,1,0,0,0,8344,8345,1,0,0,0,8345,8346,1, + 0,0,0,8346,8350,5,93,0,0,8347,8351,3,906,453,0,8348,8349,5,57,0, + 0,8349,8351,5,270,0,0,8350,8347,1,0,0,0,8350,8348,1,0,0,0,8351,8353, + 1,0,0,0,8352,8326,1,0,0,0,8352,8339,1,0,0,0,8353,905,1,0,0,0,8354, + 8356,5,241,0,0,8355,8357,3,144,72,0,8356,8355,1,0,0,0,8356,8357, + 1,0,0,0,8357,8361,1,0,0,0,8358,8359,5,463,0,0,8359,8360,7,76,0,0, + 8360,8362,5,450,0,0,8361,8358,1,0,0,0,8361,8362,1,0,0,0,8362,8363, + 1,0,0,0,8363,8364,3,910,455,0,8364,907,1,0,0,0,8365,8366,5,369,0, + 0,8366,8384,5,333,0,0,8367,8368,3,800,400,0,8368,8369,5,10,0,0,8369, + 8370,3,912,456,0,8370,8385,1,0,0,0,8371,8372,3,144,72,0,8372,8373, + 5,10,0,0,8373,8374,5,2,0,0,8374,8379,3,912,456,0,8375,8376,5,6,0, + 0,8376,8378,3,912,456,0,8377,8375,1,0,0,0,8378,8381,1,0,0,0,8379, + 8377,1,0,0,0,8379,8380,1,0,0,0,8380,8382,1,0,0,0,8381,8379,1,0,0, + 0,8382,8383,5,3,0,0,8383,8385,1,0,0,0,8384,8367,1,0,0,0,8384,8371, + 1,0,0,0,8385,8386,1,0,0,0,8386,8384,1,0,0,0,8386,8387,1,0,0,0,8387, + 909,1,0,0,0,8388,8389,5,422,0,0,8389,8390,5,2,0,0,8390,8395,3,912, + 456,0,8391,8392,5,6,0,0,8392,8394,3,912,456,0,8393,8391,1,0,0,0, + 8394,8397,1,0,0,0,8395,8393,1,0,0,0,8395,8396,1,0,0,0,8396,8398, + 1,0,0,0,8397,8395,1,0,0,0,8398,8399,5,3,0,0,8399,8403,1,0,0,0,8400, + 8401,5,53,0,0,8401,8403,5,422,0,0,8402,8388,1,0,0,0,8402,8400,1, + 0,0,0,8403,911,1,0,0,0,8404,8407,3,588,294,0,8405,8407,5,53,0,0, + 8406,8404,1,0,0,0,8406,8405,1,0,0,0,8407,913,1,0,0,0,8408,8409,5, + 157,0,0,8409,8410,3,922,461,0,8410,8411,5,7,0,0,8411,915,1,0,0,0, + 8412,8413,5,78,0,0,8413,8414,5,7,0,0,8414,917,1,0,0,0,8415,8421, + 7,67,0,0,8416,8418,5,33,0,0,8417,8419,5,269,0,0,8418,8417,1,0,0, + 0,8418,8419,1,0,0,0,8419,8420,1,0,0,0,8420,8422,5,153,0,0,8421,8416, + 1,0,0,0,8421,8422,1,0,0,0,8422,8423,1,0,0,0,8423,8424,5,7,0,0,8424, + 919,1,0,0,0,8425,8426,5,333,0,0,8426,8427,3,316,158,0,8427,8428, + 5,94,0,0,8428,8429,5,53,0,0,8429,8430,5,7,0,0,8430,8438,1,0,0,0, + 8431,8434,5,313,0,0,8432,8435,3,316,158,0,8433,8435,5,30,0,0,8434, + 8432,1,0,0,0,8434,8433,1,0,0,0,8435,8436,1,0,0,0,8436,8438,5,7,0, + 0,8437,8425,1,0,0,0,8437,8431,1,0,0,0,8438,921,1,0,0,0,8439,8442, + 3,818,409,0,8440,8442,5,28,0,0,8441,8439,1,0,0,0,8441,8440,1,0,0, + 0,8442,923,1,0,0,0,8443,8460,5,517,0,0,8444,8445,5,102,0,0,8445, + 8450,3,926,463,0,8446,8447,5,82,0,0,8447,8449,3,926,463,0,8448,8446, + 1,0,0,0,8449,8452,1,0,0,0,8450,8448,1,0,0,0,8450,8451,1,0,0,0,8451, + 8453,1,0,0,0,8452,8450,1,0,0,0,8453,8457,5,93,0,0,8454,8456,3,846, + 423,0,8455,8454,1,0,0,0,8456,8459,1,0,0,0,8457,8455,1,0,0,0,8457, + 8458,1,0,0,0,8458,8461,1,0,0,0,8459,8457,1,0,0,0,8460,8444,1,0,0, + 0,8461,8462,1,0,0,0,8462,8460,1,0,0,0,8462,8463,1,0,0,0,8463,925, + 1,0,0,0,8464,8468,3,928,464,0,8465,8466,5,511,0,0,8466,8468,3,808, + 404,0,8467,8464,1,0,0,0,8467,8465,1,0,0,0,8468,927,1,0,0,0,8469, + 8472,3,818,409,0,8470,8472,3,828,414,0,8471,8469,1,0,0,0,8471,8470, + 1,0,0,0,8472,929,1,0,0,0,8473,8475,3,756,378,0,8474,8473,1,0,0,0, + 8474,8475,1,0,0,0,8475,8477,1,0,0,0,8476,8478,3,580,290,0,8477,8476, + 1,0,0,0,8477,8478,1,0,0,0,8478,8480,1,0,0,0,8479,8481,3,610,305, + 0,8480,8479,1,0,0,0,8480,8481,1,0,0,0,8481,8483,1,0,0,0,8482,8484, + 3,638,319,0,8483,8482,1,0,0,0,8483,8484,1,0,0,0,8484,8486,1,0,0, + 0,8485,8487,3,600,300,0,8486,8485,1,0,0,0,8486,8487,1,0,0,0,8487, + 8490,1,0,0,0,8488,8489,5,67,0,0,8489,8491,3,674,337,0,8490,8488, + 1,0,0,0,8490,8491,1,0,0,0,8491,8493,1,0,0,0,8492,8494,3,702,351, + 0,8493,8492,1,0,0,0,8493,8494,1,0,0,0,8494,931,1,0,0,0,1188,935, + 942,1062,1064,1073,1078,1084,1119,1129,1135,1140,1147,1152,1159, + 1170,1178,1182,1194,1200,1206,1210,1215,1219,1232,1242,1244,1250, + 1255,1268,1271,1276,1281,1292,1296,1308,1312,1315,1319,1331,1349, + 1356,1364,1369,1376,1384,1390,1398,1406,1410,1424,1429,1434,1446, + 1452,1464,1469,1479,1485,1490,1498,1503,1510,1515,1520,1530,1535, + 1540,1547,1551,1565,1571,1577,1582,1589,1601,1609,1617,1633,1642, + 1651,1660,1664,1676,1684,1694,1714,1719,1722,1729,1732,1736,1740, + 1743,1748,1753,1757,1766,1772,1776,1785,1788,1794,1803,1815,1819, + 1823,1828,1831,1837,1839,1841,1845,1851,1855,1860,1865,1869,1872, + 1879,1892,1905,1919,1936,1946,1953,1958,1962,1969,1974,1977,1979, + 1984,1988,1992,1996,2001,2004,2008,2011,2015,2023,2028,2031,2035, + 2041,2050,2054,2060,2062,2071,2076,2088,2093,2097,2101,2106,2110, + 2113,2116,2119,2122,2125,2130,2133,2136,2139,2142,2145,2151,2155, + 2158,2161,2164,2167,2169,2176,2184,2194,2199,2209,2212,2217,2222, + 2227,2230,2235,2244,2246,2250,2253,2257,2262,2267,2271,2274,2278, + 2281,2286,2289,2294,2297,2301,2304,2307,2312,2315,2323,2335,2339, + 2346,2351,2354,2357,2360,2365,2376,2382,2386,2389,2392,2397,2404, + 2407,2411,2419,2424,2427,2430,2437,2442,2451,2454,2457,2462,2465, + 2477,2487,2504,2508,2512,2514,2531,2533,2549,2560,2563,2566,2575, + 2584,2600,2603,2606,2614,2618,2625,2634,2638,2644,2648,2651,2654, + 2657,2660,2666,2670,2675,2679,2682,2685,2688,2693,2699,2703,2707, + 2711,2717,2719,2724,2730,2736,2740,2755,2760,2763,2765,2768,2772, + 2776,2779,2782,2790,2796,2798,2804,2809,2814,2818,2825,2827,2838, + 2877,2887,2889,2892,2896,2900,2910,2912,2918,2920,2929,2941,2955, + 2960,2963,2970,2975,2983,2985,2991,2996,3000,3005,3011,3018,3024, + 3026,3035,3041,3049,3055,3060,3065,3073,3088,3090,3094,3098,3101, + 3104,3113,3116,3119,3125,3131,3135,3147,3153,3156,3161,3165,3172, + 3182,3184,3208,3220,3225,3227,3231,3234,3237,3247,3250,3260,3265, + 3270,3273,3276,3284,3290,3297,3305,3308,3319,3323,3329,3336,3339, + 3348,3362,3365,3379,3390,3393,3405,3410,3423,3428,3441,3450,3453, + 3456,3463,3466,3478,3484,3486,3494,3502,3510,3522,3527,3538,3549, + 3557,3565,3572,3579,3581,3584,3589,3594,3613,3622,3625,3652,3661, + 3664,3668,3672,3676,3683,3687,3691,3695,3699,3704,3708,3713,3719, + 3724,3731,3735,3741,3745,3750,3758,3764,3769,3776,3781,3785,3790, + 3796,3803,3808,3815,3820,3827,3831,3839,3843,3845,3848,3853,3863, + 3878,3881,3889,3896,3901,3907,3911,3918,3923,3926,3929,3933,3942, + 3960,3963,3995,4000,4006,4026,4031,4037,4040,4044,4048,4054,4057, + 4061,4065,4070,4073,4076,4079,4092,4098,4106,4113,4118,4121,4128, + 4131,4139,4142,4147,4154,4157,4177,4189,4192,4198,4203,4212,4220, + 4225,4231,4238,4246,4249,4260,4262,4276,4282,4290,4292,4298,4302, + 4305,4308,4313,4318,4322,4325,4328,4331,4334,4342,4353,4356,4359, + 4364,4367,4371,4375,4381,4389,4392,4405,4410,4412,4417,4424,4431, + 4440,4448,4456,4463,4471,4478,4486,4490,4494,4496,4502,4507,4511, + 4518,4523,4528,4533,4535,4545,4555,4571,4589,4601,4608,4623,4628, + 4631,4636,4641,4646,4649,4652,4657,4664,4668,4673,4680,4684,4690, + 4699,4708,4720,4722,4735,4741,4745,4747,4754,4767,4774,4776,4792, + 4796,4800,4805,4810,4815,4820,4823,4835,4888,4897,4901,4910,4914, + 4923,4927,4932,4935,4939,4944,4946,4955,4960,4971,4975,4989,4997, + 5035,5037,5056,5059,5086,5090,5094,5098,5102,5105,5120,5127,5141, + 5154,5179,5198,5213,5229,5236,5247,5250,5269,5272,5285,5289,5309, + 5321,5325,5347,5351,5361,5365,5371,5375,5379,5383,5390,5395,5406, + 5410,5413,5418,5424,5435,5439,5442,5446,5450,5453,5463,5466,5470, + 5475,5481,5484,5489,5492,5499,5501,5507,5511,5520,5525,5527,5537, + 5540,5545,5553,5556,5561,5563,5565,5571,5588,5594,5607,5613,5617, + 5622,5652,5667,5672,5676,5689,5693,5695,5704,5710,5712,5716,5719, + 5722,5725,5728,5730,5733,5737,5745,5750,5753,5759,5763,5767,5772, + 5774,5778,5782,5789,5795,5799,5801,5803,5816,5824,5832,5843,5852, + 5857,5861,5865,5872,5875,5877,5885,5889,5892,5899,5906,5911,5918, + 5921,5923,5926,5932,5937,5941,5948,5958,5965,5968,5971,5975,5986, + 5989,5992,5995,5998,6005,6008,6011,6018,6030,6037,6039,6044,6049, + 6051,6057,6064,6069,6074,6078,6082,6086,6088,6092,6096,6099,6102, + 6104,6114,6116,6121,6125,6130,6134,6141,6146,6150,6153,6159,6162, + 6181,6188,6192,6195,6199,6203,6206,6209,6214,6223,6230,6234,6238, + 6242,6245,6247,6252,6256,6261,6267,6274,6279,6284,6293,6300,6308, + 6319,6324,6328,6331,6335,6340,6344,6349,6357,6368,6373,6377,6380, + 6383,6385,6388,6391,6394,6398,6402,6406,6408,6417,6422,6428,6432, + 6434,6441,6446,6452,6454,6458,6465,6470,6473,6479,6483,6489,6498, + 6504,6506,6511,6514,6523,6530,6532,6539,6544,6547,6557,6568,6573, + 6577,6585,6595,6602,6608,6619,6625,6635,6644,6648,6651,6653,6655, + 6659,6667,6670,6675,6680,6687,6689,6695,6699,6702,6707,6710,6712, + 6718,6727,6733,6736,6744,6747,6751,6757,6759,6762,6766,6771,6778, + 6785,6787,6793,6795,6800,6802,6806,6815,6819,6827,6829,6843,6846, + 6854,6863,6869,6874,6882,6884,6889,6893,6898,6903,6909,6925,6927, + 6936,6951,6956,6959,6965,6970,6983,6988,6992,6999,7018,7030,7035, + 7043,7045,7047,7056,7059,7064,7069,7073,7076,7085,7093,7098,7100, + 7103,7107,7118,7139,7147,7160,7170,7176,7182,7185,7188,7214,7216, + 7237,7247,7260,7265,7269,7271,7283,7290,7296,7302,7306,7317,7327, + 7331,7336,7339,7342,7351,7362,7364,7368,7373,7382,7387,7395,7405, + 7413,7417,7420,7427,7435,7439,7446,7454,7463,7466,7478,7487,7494, + 7503,7513,7518,7522,7524,7527,7532,7537,7545,7553,7556,7563,7571, + 7579,7587,7604,7611,7619,7636,7642,7648,7656,7662,7667,7675,7680, + 7683,7692,7699,7704,7708,7713,7719,7724,7732,7787,7794,7800,7802, + 7804,7806,7812,7816,7820,7831,7834,7838,7842,7846,7849,7852,7855, + 7864,7869,7873,7906,7916,7920,7926,7931,7940,7948,7959,7967,7976, + 7985,7990,7994,8004,8009,8017,8022,8025,8032,8038,8046,8054,8057, + 8064,8066,8069,8075,8084,8088,8102,8105,8107,8113,8123,8125,8127, + 8135,8138,8141,8151,8159,8165,8171,8178,8182,8186,8189,8192,8198, + 8205,8208,8216,8218,8227,8232,8234,8241,8247,8250,8262,8269,8271, + 8275,8281,8286,8290,8293,8296,8305,8308,8312,8316,8318,8321,8324, + 8330,8337,8344,8350,8352,8356,8361,8379,8384,8386,8395,8402,8406, + 8418,8421,8434,8437,8441,8450,8457,8462,8467,8471,8474,8477,8480, + 8483,8486,8490,8493 ]; private static __ATN: antlr.ATN; @@ -62667,6 +62660,15 @@ export class TableelementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } + public constraintelem(): ConstraintelemContext | null { + return this.getRuleContext(0, ConstraintelemContext); + } + public KW_CONSTRAINT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); + } + public colid(): ColidContext | null { + return this.getRuleContext(0, ColidContext); + } public column_def(): Column_defContext | null { return this.getRuleContext(0, Column_defContext); } @@ -62703,15 +62705,6 @@ export class TableelementContext extends antlr.ParserRuleContext { return this.getToken(PostgreSqlParser.KW_EXCLUDING, i); } } - public constraintelem(): ConstraintelemContext | null { - return this.getRuleContext(0, ConstraintelemContext); - } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); - } - public colid(): ColidContext | null { - return this.getRuleContext(0, ColidContext); - } public override get ruleIndex(): number { return PostgreSqlParser.RULE_tableelement; } @@ -82471,15 +82464,9 @@ export class ColidContext extends antlr.ParserRuleContext { public identifier(): IdentifierContext | null { return this.getRuleContext(0, IdentifierContext); } - public unreserved_keyword(): Unreserved_keywordContext | null { - return this.getRuleContext(0, Unreserved_keywordContext); - } public col_name_keyword(): Col_name_keywordContext | null { return this.getRuleContext(0, Col_name_keywordContext); } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); - } public override get ruleIndex(): number { return PostgreSqlParser.RULE_colid; } @@ -82510,12 +82497,6 @@ export class Type_function_nameContext extends antlr.ParserRuleContext { public identifier(): IdentifierContext | null { return this.getRuleContext(0, IdentifierContext); } - public unreserved_keyword(): Unreserved_keywordContext | null { - return this.getRuleContext(0, Unreserved_keywordContext); - } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); - } public type_func_name_keyword(): Type_func_name_keywordContext | null { return this.getRuleContext(0, Type_func_name_keywordContext); } @@ -82549,9 +82530,6 @@ export class NonreservedwordContext extends antlr.ParserRuleContext { public identifier(): IdentifierContext | null { return this.getRuleContext(0, IdentifierContext); } - public unreserved_keyword(): Unreserved_keywordContext | null { - return this.getRuleContext(0, Unreserved_keywordContext); - } public col_name_keyword(): Col_name_keywordContext | null { return this.getRuleContext(0, Col_name_keywordContext); } @@ -82585,11 +82563,14 @@ export class CollabelContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public nonreservedword(): NonreservedwordContext | null { - return this.getRuleContext(0, NonreservedwordContext); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public col_name_keyword(): Col_name_keywordContext | null { + return this.getRuleContext(0, Col_name_keywordContext); } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); + public type_func_name_keyword(): Type_func_name_keywordContext | null { + return this.getRuleContext(0, Type_func_name_keywordContext); } public reserved_keyword(): Reserved_keywordContext | null { return this.getRuleContext(0, Reserved_keywordContext); @@ -82645,8 +82626,8 @@ export class IdentifierContext extends antlr.ParserRuleContext { public PLSQLIDENTIFIER(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.PLSQLIDENTIFIER, 0); } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); + public unreserved_keyword(): Unreserved_keywordContext | null { + return this.getRuleContext(0, Unreserved_keywordContext); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_identifier; @@ -83578,6 +83559,105 @@ export class Unreserved_keywordContext extends antlr.ParserRuleContext { public KW_ZONE(): antlr.TerminalNode | null { return this.getToken(PostgreSqlParser.KW_ZONE, 0); } + public KW_ALIAS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ALIAS, 0); + } + public KW_ASSERT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ASSERT, 0); + } + public KW_CONSTANT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_CONSTANT, 0); + } + public KW_DEBUG(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEBUG, 0); + } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); + } + public KW_DIAGNOSTICS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DIAGNOSTICS, 0); + } + public KW_DUMP(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_DUMP, 0); + } + public KW_ELSIF(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ELSIF, 0); + } + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ERROR, 0); + } + public KW_EXCEPTION(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXCEPTION, 0); + } + public KW_EXIT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_EXIT, 0); + } + public KW_GET(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_GET, 0); + } + public KW_INFO(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_INFO, 0); + } + public KW_IS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_IS, 0); + } + public KW_LOG(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_LOG, 0); + } + public KW_NOTICE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_NOTICE, 0); + } + public KW_OPEN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OPEN, 0); + } + public KW_PUBLIC(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PUBLIC, 0); + } + public KW_PERFORM(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PERFORM, 0); + } + public KW_PRINT_STRICT_PARAMS(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_PRINT_STRICT_PARAMS, 0); + } + public KW_QUERY(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_QUERY, 0); + } + public KW_RAISE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RAISE, 0); + } + public KW_RETURN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_RETURN, 0); + } + public KW_REVERSE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_REVERSE, 0); + } + public KW_ROWTYPE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_ROWTYPE, 0); + } + public KW_SLICE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SLICE, 0); + } + public KW_SQLSTATE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_SQLSTATE, 0); + } + public KW_STACKED(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_STACKED, 0); + } + public KW_USE_COLUMN(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USE_COLUMN, 0); + } + public KW_USE_VARIABLE(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_USE_VARIABLE, 0); + } + public KW_VARIABLE_CONFLICT(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_VARIABLE_CONFLICT, 0); + } + public KW_WARNING(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_WARNING, 0); + } + public KW_OUTER(): antlr.TerminalNode | null { + return this.getToken(PostgreSqlParser.KW_OUTER, 0); + } public override get ruleIndex(): number { return PostgreSqlParser.RULE_unreserved_keyword; } @@ -86606,8 +86686,8 @@ export class Any_identifierContext extends antlr.ParserRuleContext { public colid(): ColidContext | null { return this.getRuleContext(0, ColidContext); } - public plsql_unreserved_keyword(): Plsql_unreserved_keywordContext | null { - return this.getRuleContext(0, Plsql_unreserved_keywordContext); + public unreserved_keyword(): Unreserved_keywordContext | null { + return this.getRuleContext(0, Unreserved_keywordContext); } public override get ruleIndex(): number { return PostgreSqlParser.RULE_any_identifier; @@ -86632,222 +86712,6 @@ export class Any_identifierContext extends antlr.ParserRuleContext { } -export class Plsql_unreserved_keywordContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ABSOLUTE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ABSOLUTE, 0); - } - public KW_ALIAS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ALIAS, 0); - } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_AND, 0); - } - public KW_ARRAY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ARRAY, 0); - } - public KW_ASSERT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ASSERT, 0); - } - public KW_BACKWARD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_BACKWARD, 0); - } - public KW_CALL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CALL, 0); - } - public KW_CHAIN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CHAIN, 0); - } - public KW_CLOSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CLOSE, 0); - } - public KW_COLLATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COLLATE, 0); - } - public KW_COMMIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_COMMIT, 0); - } - public KW_CONSTANT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTANT, 0); - } - public KW_CONSTRAINT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONSTRAINT, 0); - } - public KW_CONTINUE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CONTINUE, 0); - } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURRENT, 0); - } - public KW_CURSOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_CURSOR, 0); - } - public KW_DEBUG(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEBUG, 0); - } - public KW_DEFAULT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DEFAULT, 0); - } - public KW_DIAGNOSTICS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DIAGNOSTICS, 0); - } - public KW_DO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DO, 0); - } - public KW_DUMP(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_DUMP, 0); - } - public KW_ELSIF(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ELSIF, 0); - } - public KW_ERROR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ERROR, 0); - } - public KW_EXCEPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXCEPTION, 0); - } - public KW_EXIT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_EXIT, 0); - } - public KW_FETCH(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FETCH, 0); - } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FIRST, 0); - } - public KW_FORWARD(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_FORWARD, 0); - } - public KW_GET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_GET, 0); - } - public KW_INFO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INFO, 0); - } - public KW_INSERT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_INSERT, 0); - } - public KW_IS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_IS, 0); - } - public KW_LAST(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LAST, 0); - } - public KW_LOG(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_LOG, 0); - } - public KW_MOVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_MOVE, 0); - } - public KW_NEXT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NEXT, 0); - } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NO, 0); - } - public KW_NOTICE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_NOTICE, 0); - } - public KW_OPEN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPEN, 0); - } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OPTION, 0); - } - public KW_PERFORM(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PERFORM, 0); - } - public KW_PRINT_STRICT_PARAMS(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRINT_STRICT_PARAMS, 0); - } - public KW_PRIOR(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_PRIOR, 0); - } - public KW_QUERY(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_QUERY, 0); - } - public KW_RAISE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RAISE, 0); - } - public KW_RELATIVE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RELATIVE, 0); - } - public KW_RESET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RESET, 0); - } - public KW_RETURN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_RETURN, 0); - } - public KW_REVERSE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_REVERSE, 0); - } - public KW_ROLLBACK(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROLLBACK, 0); - } - public KW_ROWTYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_ROWTYPE, 0); - } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCHEMA, 0); - } - public KW_SCROLL(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SCROLL, 0); - } - public KW_SET(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SET, 0); - } - public KW_SLICE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SLICE, 0); - } - public KW_SQLSTATE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_SQLSTATE, 0); - } - public KW_STACKED(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_STACKED, 0); - } - public KW_TYPE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_TYPE, 0); - } - public KW_USE_COLUMN(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USE_COLUMN, 0); - } - public KW_USE_VARIABLE(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_USE_VARIABLE, 0); - } - public KW_VARIABLE_CONFLICT(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_VARIABLE_CONFLICT, 0); - } - public KW_WARNING(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_WARNING, 0); - } - public KW_OUTER(): antlr.TerminalNode | null { - return this.getToken(PostgreSqlParser.KW_OUTER, 0); - } - public override get ruleIndex(): number { - return PostgreSqlParser.RULE_plsql_unreserved_keyword; - } - public override enterRule(listener: PostgreSqlParserListener): void { - if(listener.enterPlsql_unreserved_keyword) { - listener.enterPlsql_unreserved_keyword(this); - } - } - public override exitRule(listener: PostgreSqlParserListener): void { - if(listener.exitPlsql_unreserved_keyword) { - listener.exitPlsql_unreserved_keyword(this); - } - } - public override accept(visitor: PostgreSqlParserVisitor): Result | null { - if (visitor.visitPlsql_unreserved_keyword) { - return visitor.visitPlsql_unreserved_keyword(this); - } else { - return visitor.visitChildren(this); - } - } -} - - export class Sql_expressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); diff --git a/src/lib/postgresql/PostgreSqlParserListener.ts b/src/lib/postgresql/PostgreSqlParserListener.ts index b2e80b98..6d3ec5ef 100644 --- a/src/lib/postgresql/PostgreSqlParserListener.ts +++ b/src/lib/postgresql/PostgreSqlParserListener.ts @@ -489,7 +489,6 @@ import { Cursor_variableContext } from "./PostgreSqlParser.js"; import { Exception_sectContext } from "./PostgreSqlParser.js"; import { Proc_conditionContext } from "./PostgreSqlParser.js"; import { Any_identifierContext } from "./PostgreSqlParser.js"; -import { Plsql_unreserved_keywordContext } from "./PostgreSqlParser.js"; import { Sql_expressionContext } from "./PostgreSqlParser.js"; @@ -5400,16 +5399,6 @@ export class PostgreSqlParserListener implements ParseTreeListener { * @param ctx the parse tree */ exitAny_identifier?: (ctx: Any_identifierContext) => void; - /** - * Enter a parse tree produced by `PostgreSqlParser.plsql_unreserved_keyword`. - * @param ctx the parse tree - */ - enterPlsql_unreserved_keyword?: (ctx: Plsql_unreserved_keywordContext) => void; - /** - * Exit a parse tree produced by `PostgreSqlParser.plsql_unreserved_keyword`. - * @param ctx the parse tree - */ - exitPlsql_unreserved_keyword?: (ctx: Plsql_unreserved_keywordContext) => void; /** * Enter a parse tree produced by `PostgreSqlParser.sql_expression`. * @param ctx the parse tree diff --git a/src/lib/postgresql/PostgreSqlParserVisitor.ts b/src/lib/postgresql/PostgreSqlParserVisitor.ts index fabf31ee..3b4c9e52 100644 --- a/src/lib/postgresql/PostgreSqlParserVisitor.ts +++ b/src/lib/postgresql/PostgreSqlParserVisitor.ts @@ -489,7 +489,6 @@ import { Cursor_variableContext } from "./PostgreSqlParser.js"; import { Exception_sectContext } from "./PostgreSqlParser.js"; import { Proc_conditionContext } from "./PostgreSqlParser.js"; import { Any_identifierContext } from "./PostgreSqlParser.js"; -import { Plsql_unreserved_keywordContext } from "./PostgreSqlParser.js"; import { Sql_expressionContext } from "./PostgreSqlParser.js"; @@ -3433,12 +3432,6 @@ export class PostgreSqlParserVisitor extends AbstractParseTreeVisitor Result; - /** - * Visit a parse tree produced by `PostgreSqlParser.plsql_unreserved_keyword`. - * @param ctx the parse tree - * @return the visitor result - */ - visitPlsql_unreserved_keyword?: (ctx: Plsql_unreserved_keywordContext) => Result; /** * Visit a parse tree produced by `PostgreSqlParser.sql_expression`. * @param ctx the parse tree diff --git a/src/lib/trino/TrinoSql.interp b/src/lib/trino/TrinoSql.interp index 2b47bb1e..4b2b7d8d 100644 --- a/src/lib/trino/TrinoSql.interp +++ b/src/lib/trino/TrinoSql.interp @@ -5,9 +5,11 @@ null ',' '.' 'SKIP' +'=>' '->' '[' ']' +':' '|' '^' '$' @@ -15,7 +17,7 @@ null '-}' '{' '}' -'=>' +'ABSENT' 'ADD' 'ADMIN' 'AFTER' @@ -29,20 +31,27 @@ null 'ASC' 'AT' 'AUTHORIZATION' +'BEGIN' 'BERNOULLI' 'BETWEEN' +'BOTH' 'BY' 'CALL' +'CALLED' 'CASCADE' 'CASE' 'CAST' +'CATALOG' 'CATALOGS' 'COLUMN' 'COLUMNS' 'COMMENT' 'COMMIT' 'COMMITTED' +'CONDITIONAL' 'CONSTRAINT' +'COUNT' +'COPARTITION' 'CREATE' 'CROSS' 'CUBE' @@ -58,20 +67,28 @@ null 'DATA' 'DATE' 'DAY' -'DEFAULT' 'DEALLOCATE' +'DECLARE' +'DEFAULT' +'DEFINE' 'DEFINER' 'DELETE' +'DENY' 'DESC' 'DESCRIBE' -'DEFINE' +'DESCRIPTOR' +'DETERMINISTIC' 'DISTINCT' 'DISTRIBUTED' +'DO' 'DOUBLE' 'DROP' 'ELSE' 'EMPTY' +'ELSEIF' +'ENCODING' 'END' +'ERROR' 'ESCAPE' 'EXCEPT' 'EXCLUDING' @@ -89,11 +106,12 @@ null 'FORMAT' 'FROM' 'FULL' +'FUNCTION' 'FUNCTIONS' +'GRACE' 'GRANT' 'GRANTED' 'GRANTS' -'DENY' 'GRAPHVIZ' 'GROUP' 'GROUPING' @@ -102,6 +120,7 @@ null 'HOUR' 'IF' 'IGNORE' +'IMMEDIATE' 'IN' 'INCLUDING' 'INITIAL' @@ -115,18 +134,33 @@ null 'IO' 'IS' 'ISOLATION' +'ITERATE' 'JOIN' 'JSON' +'JSON_ARRAY' +'JSON_EXISTS' +'JSON_OBJECT' +'JSON_QUERY' +'JSON_TABLE' +'JSON_VALUE' +'KEEP' +'KEY' +'KEYS' +'LANGUAGE' 'LAST' 'LATERAL' +'LEADING' +'LEAVE' 'LEFT' 'LEVEL' 'LIKE' 'LIMIT' +'LISTAGG' 'LOCAL' 'LOCALTIME' 'LOCALTIMESTAMP' 'LOGICAL' +'LOOP' 'MAP' 'MATCH' 'MATCHED' @@ -138,6 +172,7 @@ null 'MINUTE' 'MONTH' 'NATURAL' +'NESTED' 'NEXT' 'NFC' 'NFD' @@ -150,6 +185,8 @@ null 'NULL' 'NULLIF' 'NULLS' +'OBJECT' +'OF' 'OFFSET' 'OMIT' 'ON' @@ -162,29 +199,39 @@ null 'OUTER' 'OUTPUT' 'OVER' +'OVERFLOW' 'PARTITION' 'PARTITIONS' +'PASSING' 'PAST' 'PATH' 'PATTERN' 'PER' +'PERIOD' 'PERMUTE' +'PLAN' 'POSITION' 'PRECEDING' 'PRECISION' 'PREPARE' 'PRIVILEGES' 'PROPERTIES' +'PRUNE' +'QUOTES' 'RANGE' 'READ' 'RECURSIVE' 'REFRESH' 'RENAME' +'REPEAT' 'REPEATABLE' 'REPLACE' 'RESET' 'RESPECT' 'RESTRICT' +'RETURN' +'RETURNING' +'RETURNS' 'REVOKE' 'RIGHT' 'ROLE' @@ -194,6 +241,7 @@ null 'ROW' 'ROWS' 'RUNNING' +'SCALAR' 'SCHEMA' 'SCHEMAS' 'SECOND' @@ -215,36 +263,51 @@ null 'TABLES' 'TABLESAMPLE' 'TEXT' +'STRING' 'THEN' 'TIES' 'TIME' 'TIMESTAMP' 'TO' +'TRAILING' 'TRANSACTION' -'TRUNCATE' +'TRIM' 'TRUE' +'TRUNCATE' 'TRY_CAST' 'TYPE' 'UESCAPE' 'UNBOUNDED' 'UNCOMMITTED' +'UNCONDITIONAL' 'UNION' +'UNIQUE' +'UNKNOWN' 'UNMATCHED' 'UNNEST' +'UNTIL' 'UPDATE' 'USE' 'USER' 'USING' +'UTF16' +'UTF32' +'UTF8' 'VALIDATE' +'VALUE' 'VALUES' 'VERBOSE' +'VERSION' 'VIEW' 'WHEN' 'WHERE' +'WHILE' 'WINDOW' 'WITH' +'WITHIN' 'WITHOUT' 'WORK' +'WRAPPER' 'WRITE' 'YEAR' 'ZONE' @@ -261,6 +324,7 @@ null '%' '||' '?' +';' null null null @@ -271,7 +335,6 @@ null null null null -';' null null null @@ -296,6 +359,8 @@ null null null null +null +KW_ABSENT KW_ADD KW_ADMIN KW_AFTER @@ -309,20 +374,27 @@ KW_AS KW_ASC KW_AT KW_AUTHORIZATION +KW_BEGIN KW_BERNOULLI KW_BETWEEN +KW_BOTH KW_BY KW_CALL +KW_CALLED KW_CASCADE KW_CASE KW_CAST +KW_CATALOG KW_CATALOGS KW_COLUMN KW_COLUMNS KW_COMMENT KW_COMMIT KW_COMMITTED +KW_CONDITIONAL KW_CONSTRAINT +KW_COUNT +KW_COPARTITION KW_CREATE KW_CROSS KW_CUBE @@ -338,20 +410,28 @@ KW_CURRENT_USER KW_DATA KW_DATE KW_DAY -KW_DEFAULT KW_DEALLOCATE +KW_DECLARE +KW_DEFAULT +KW_DEFINE KW_DEFINER KW_DELETE +KW_DENY KW_DESC KW_DESCRIBE -KW_DEFINE +KW_DESCRIPTOR +KW_DETERMINISTIC KW_DISTINCT KW_DISTRIBUTED +KW_DO KW_DOUBLE KW_DROP KW_ELSE KW_EMPTY +KW_ELSEIF +KW_ENCODING KW_END +KW_ERROR KW_ESCAPE KW_EXCEPT KW_EXCLUDING @@ -369,11 +449,12 @@ KW_FOR KW_FORMAT KW_FROM KW_FULL +KW_FUNCTION KW_FUNCTIONS +KW_GRACE KW_GRANT KW_GRANTED KW_GRANTS -KW_DENY KW_GRAPHVIZ KW_GROUP KW_GROUPING @@ -382,6 +463,7 @@ KW_HAVING KW_HOUR KW_IF KW_IGNORE +KW_IMMEDIATE KW_IN KW_INCLUDING KW_INITIAL @@ -395,18 +477,33 @@ KW_INVOKER KW_IO KW_IS KW_ISOLATION +KW_ITERATE KW_JOIN KW_JSON +KW_JSON_ARRAY +KW_JSON_EXISTS +KW_JSON_OBJECT +KW_JSON_QUERY +KW_JSON_TABLE +KW_JSON_VALUE +KW_KEEP +KW_KEY +KW_KEYS +KW_LANGUAGE KW_LAST KW_LATERAL +KW_LEADING +KW_LEAVE KW_LEFT KW_LEVEL KW_LIKE KW_LIMIT +KW_LISTAGG KW_LOCAL KW_LOCALTIME KW_LOCALTIMESTAMP KW_LOGICAL +KW_LOOP KW_MAP KW_MATCH KW_MATCHED @@ -418,6 +515,7 @@ KW_MERGE KW_MINUTE KW_MONTH KW_NATURAL +KW_NESTED KW_NEXT KW_NFC KW_NFD @@ -430,6 +528,8 @@ KW_NOT KW_NULL KW_NULLIF KW_NULLS +KW_OBJECT +KW_OF KW_OFFSET KW_OMIT KW_ON @@ -442,29 +542,39 @@ KW_ORDINALITY KW_OUTER KW_OUTPUT KW_OVER +KW_OVERFLOW KW_PARTITION KW_PARTITIONS +KW_PASSING KW_PAST KW_PATH KW_PATTERN KW_PER +KW_PERIOD KW_PERMUTE +KW_PLAN KW_POSITION KW_PRECEDING KW_PRECISION KW_PREPARE KW_PRIVILEGES KW_PROPERTIES +KW_PRUNE +KW_QUOTES KW_RANGE KW_READ KW_RECURSIVE KW_REFRESH KW_RENAME +KW_REPEAT KW_REPEATABLE KW_REPLACE KW_RESET KW_RESPECT KW_RESTRICT +KW_RETURN +KW_RETURNING +KW_RETURNS KW_REVOKE KW_RIGHT KW_ROLE @@ -474,6 +584,7 @@ KW_ROLLUP KW_ROW KW_ROWS KW_RUNNING +KW_SCALAR KW_SCHEMA KW_SCHEMAS KW_SECOND @@ -495,36 +606,51 @@ KW_TABLE KW_TABLES KW_TABLESAMPLE KW_TEXT +KW_TEXT_STRING KW_THEN KW_TIES KW_TIME KW_TIMESTAMP KW_TO +KW_TRAILING KW_TRANSACTION -KW_TRUNCATE +KW_TRIM KW_TRUE +KW_TRUNCATE KW_TRY_CAST KW_TYPE KW_UESCAPE KW_UNBOUNDED KW_UNCOMMITTED +KW_UNCONDITIONAL KW_UNION +KW_UNIQUE +KW_UNKNOWN KW_UNMATCHED KW_UNNEST +KW_UNTIL KW_UPDATE KW_USE KW_USER KW_USING +KW_UTF16 +KW_UTF32 +KW_UTF8 KW_VALIDATE +KW_VALUE KW_VALUES KW_VERBOSE +KW_VERSION KW_VIEW KW_WHEN KW_WHERE +KW_WHILE KW_WINDOW KW_WITH +KW_WITHIN KW_WITHOUT KW_WORK +KW_WRAPPER KW_WRITE KW_YEAR KW_ZONE @@ -541,6 +667,7 @@ SLASH PERCENT CONCAT QUESTION_MARK +SEMICOLON STRING UNICODE_STRING BINARY_LITERAL @@ -551,7 +678,6 @@ IDENTIFIER DIGIT_IDENTIFIER QUOTED_IDENTIFIER BACKQUOTED_IDENTIFIER -SEMICOLON SIMPLE_COMMENT BRACKETED_COMMENT WS @@ -561,13 +687,15 @@ DELIMITER rule names: program statements -standaloneClause singleStatement standaloneExpression standalonePathSpecification standaloneType standaloneRowPattern +standaloneFunctionSpecification statement +rootQuery +withFunction query with tableElement @@ -598,6 +726,9 @@ joinType joinCriteria sampledRelation sampleType +trimsSpecification +listAggOverflowBehavior +listaggCountIndication patternRecognition measureDefinition rowsPerMatch @@ -610,11 +741,32 @@ columnListCreate columnList columnAliases relationPrimary +jsonTableColumn +jsonTableSpecificPlan +jsonTablePathName +planPrimary +jsonTableDefaultPlan +tableFunctionCall +tableFunctionArgument +tableArgument +tableArgumentRelation +descriptorArgument +descriptorField +copartitionTables expression booleanExpression predicate valueExpression primaryExpression +jsonPathInvocation +jsonValueExpression +jsonRepresentation +jsonArgument +jsonExistsErrorBehavior +jsonValueBehavior +jsonQueryWrapperBehavior +jsonQueryBehavior +jsonObjectMember processingMode nullTreatment string @@ -645,30 +797,46 @@ levelOfIsolation callArgument pathElement pathSpecification +functionSpecification +functionDeclaration +functionSignature +parameterDeclaration +returnsClause +routineCharacteristic +controlStatement +caseStatementWhenClause +elseIfClause +elseClause +variableDeclaration +sqlStatementList privilege +entityKind +grantObject tableOrViewName -tableName +tableRef tableNameCreate -viewName +viewRef viewNameCreate -tablePath -viewPath -schemaName +schemaRef schemaNameCreate -schemaPath -catalogName +catalogRef catalogNameCreate functionName -columnName +functionNameCreate +columnRef columnNameCreate qualifiedName +queryPeriod +rangeType grantor principal roles +privilegeOrRole identifier number +authorizationUser nonReserved atn: -[4, 1, 277, 2607, 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, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 1, 0, 5, 0, 220, 8, 0, 10, 0, 12, 0, 223, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 233, 8, 2, 1, 3, 1, 3, 3, 3, 237, 8, 3, 1, 4, 1, 4, 3, 4, 241, 8, 4, 1, 5, 1, 5, 3, 5, 245, 8, 5, 1, 6, 1, 6, 3, 6, 249, 8, 6, 1, 7, 1, 7, 3, 7, 253, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 263, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 268, 8, 8, 1, 8, 1, 8, 3, 8, 272, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 278, 8, 8, 1, 8, 1, 8, 3, 8, 282, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 303, 8, 8, 1, 8, 1, 8, 3, 8, 307, 8, 8, 1, 8, 1, 8, 3, 8, 311, 8, 8, 1, 8, 1, 8, 3, 8, 315, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 323, 8, 8, 1, 8, 1, 8, 3, 8, 327, 8, 8, 1, 8, 3, 8, 330, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 337, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 344, 8, 8, 10, 8, 12, 8, 347, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 352, 8, 8, 1, 8, 1, 8, 3, 8, 356, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 362, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 369, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 378, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 387, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 401, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 410, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 416, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 423, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 433, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 440, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 448, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 456, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 483, 8, 8, 10, 8, 12, 8, 486, 9, 8, 3, 8, 488, 8, 8, 1, 8, 3, 8, 491, 8, 8, 1, 8, 1, 8, 3, 8, 495, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 501, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 506, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 513, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 518, 8, 8, 1, 8, 1, 8, 3, 8, 522, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 530, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 536, 8, 8, 1, 8, 1, 8, 3, 8, 540, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 554, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 562, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 581, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 604, 8, 8, 10, 8, 12, 8, 607, 9, 8, 3, 8, 609, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 619, 8, 8, 1, 8, 1, 8, 3, 8, 623, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 634, 8, 8, 10, 8, 12, 8, 637, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 642, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 647, 8, 8, 1, 8, 1, 8, 3, 8, 651, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 657, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 664, 8, 8, 10, 8, 12, 8, 667, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 672, 8, 8, 1, 8, 1, 8, 3, 8, 676, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 683, 8, 8, 1, 8, 1, 8, 3, 8, 687, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 693, 8, 8, 10, 8, 12, 8, 696, 9, 8, 1, 8, 1, 8, 3, 8, 700, 8, 8, 1, 8, 1, 8, 3, 8, 704, 8, 8, 1, 8, 1, 8, 3, 8, 708, 8, 8, 1, 8, 3, 8, 711, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 718, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 724, 8, 8, 10, 8, 12, 8, 727, 9, 8, 1, 8, 1, 8, 3, 8, 731, 8, 8, 1, 8, 1, 8, 3, 8, 735, 8, 8, 1, 8, 1, 8, 3, 8, 739, 8, 8, 1, 8, 3, 8, 742, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 751, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 756, 8, 8, 10, 8, 12, 8, 759, 9, 8, 1, 8, 1, 8, 3, 8, 763, 8, 8, 1, 8, 1, 8, 3, 8, 767, 8, 8, 1, 8, 1, 8, 3, 8, 771, 8, 8, 1, 8, 3, 8, 774, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 782, 8, 8, 1, 8, 3, 8, 785, 8, 8, 1, 8, 1, 8, 3, 8, 789, 8, 8, 1, 8, 3, 8, 792, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 798, 8, 8, 10, 8, 12, 8, 801, 9, 8, 1, 8, 1, 8, 3, 8, 805, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 829, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 835, 8, 8, 3, 8, 837, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 843, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 849, 8, 8, 3, 8, 851, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 859, 8, 8, 3, 8, 861, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 867, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 873, 8, 8, 3, 8, 875, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 890, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 895, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 902, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 914, 8, 8, 3, 8, 916, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 924, 8, 8, 3, 8, 926, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 942, 8, 8, 10, 8, 12, 8, 945, 9, 8, 3, 8, 947, 8, 8, 1, 8, 1, 8, 3, 8, 951, 8, 8, 1, 8, 1, 8, 3, 8, 955, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 971, 8, 8, 10, 8, 12, 8, 974, 9, 8, 3, 8, 976, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 992, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1000, 8, 8, 10, 8, 12, 8, 1003, 9, 8, 1, 8, 1, 8, 3, 8, 1007, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1013, 8, 8, 1, 8, 3, 8, 1016, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 4, 8, 1023, 8, 8, 11, 8, 12, 8, 1024, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1037, 8, 8, 1, 9, 3, 9, 1040, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 3, 10, 1046, 8, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1051, 8, 10, 10, 10, 12, 10, 1054, 9, 10, 1, 11, 1, 11, 3, 11, 1058, 8, 11, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 1064, 8, 12, 1, 12, 1, 12, 3, 12, 1068, 8, 12, 1, 12, 1, 12, 3, 12, 1072, 8, 12, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 1078, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 5, 15, 1087, 8, 15, 10, 15, 12, 15, 1090, 9, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 3, 17, 1098, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 1106, 8, 18, 10, 18, 12, 18, 1109, 9, 18, 3, 18, 1111, 8, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1116, 8, 18, 3, 18, 1118, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1125, 8, 18, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 1131, 8, 18, 3, 18, 1133, 8, 18, 1, 19, 1, 19, 3, 19, 1137, 8, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1147, 8, 21, 1, 21, 1, 21, 1, 21, 1, 21, 3, 21, 1153, 8, 21, 1, 21, 5, 21, 1156, 8, 21, 10, 21, 12, 21, 1159, 9, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 1, 22, 5, 22, 1168, 8, 22, 10, 22, 12, 22, 1171, 9, 22, 1, 22, 1, 22, 1, 22, 1, 22, 3, 22, 1177, 8, 22, 1, 23, 1, 23, 3, 23, 1181, 8, 23, 1, 23, 3, 23, 1184, 8, 23, 1, 23, 1, 23, 3, 23, 1188, 8, 23, 1, 24, 1, 24, 3, 24, 1192, 8, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1197, 8, 24, 10, 24, 12, 24, 1200, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1206, 8, 24, 10, 24, 12, 24, 1209, 9, 24, 3, 24, 1211, 8, 24, 1, 24, 1, 24, 3, 24, 1215, 8, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1220, 8, 24, 1, 24, 1, 24, 3, 24, 1224, 8, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1230, 8, 24, 10, 24, 12, 24, 1233, 9, 24, 3, 24, 1235, 8, 24, 1, 25, 3, 25, 1238, 8, 25, 1, 25, 1, 25, 1, 25, 5, 25, 1243, 8, 25, 10, 25, 12, 25, 1246, 9, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1254, 8, 26, 10, 26, 12, 26, 1257, 9, 26, 3, 26, 1259, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1267, 8, 26, 10, 26, 12, 26, 1270, 9, 26, 3, 26, 1272, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1281, 8, 26, 10, 26, 12, 26, 1284, 9, 26, 1, 26, 1, 26, 3, 26, 1288, 8, 26, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 1294, 8, 27, 10, 27, 12, 27, 1297, 9, 27, 3, 27, 1299, 8, 27, 1, 27, 1, 27, 3, 27, 1303, 8, 27, 1, 28, 1, 28, 3, 28, 1307, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 3, 30, 1316, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 1323, 8, 30, 10, 30, 12, 30, 1326, 9, 30, 3, 30, 1328, 8, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 1335, 8, 30, 10, 30, 12, 30, 1338, 9, 30, 3, 30, 1340, 8, 30, 1, 30, 3, 30, 1343, 8, 30, 1, 31, 1, 31, 3, 31, 1347, 8, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 33, 1, 33, 3, 33, 1358, 8, 33, 1, 33, 3, 33, 1361, 8, 33, 1, 33, 3, 33, 1364, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 1371, 8, 33, 1, 33, 3, 33, 1374, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 3, 34, 1393, 8, 34, 5, 34, 1395, 8, 34, 10, 34, 12, 34, 1398, 9, 34, 1, 35, 3, 35, 1401, 8, 35, 1, 35, 1, 35, 3, 35, 1405, 8, 35, 1, 35, 1, 35, 3, 35, 1409, 8, 35, 1, 35, 1, 35, 3, 35, 1413, 8, 35, 3, 35, 1415, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 5, 36, 1424, 8, 36, 10, 36, 12, 36, 1427, 9, 36, 1, 36, 1, 36, 3, 36, 1431, 8, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 3, 37, 1440, 8, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1452, 8, 39, 10, 39, 12, 39, 1455, 9, 39, 3, 39, 1457, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1464, 8, 39, 10, 39, 12, 39, 1467, 9, 39, 3, 39, 1469, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1475, 8, 39, 10, 39, 12, 39, 1478, 9, 39, 3, 39, 1480, 8, 39, 1, 39, 3, 39, 1483, 8, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1488, 8, 39, 1, 39, 3, 39, 1491, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1501, 8, 39, 10, 39, 12, 39, 1504, 9, 39, 3, 39, 1506, 8, 39, 1, 39, 1, 39, 1, 39, 1, 39, 5, 39, 1512, 8, 39, 10, 39, 12, 39, 1515, 9, 39, 1, 39, 1, 39, 3, 39, 1519, 8, 39, 1, 39, 1, 39, 3, 39, 1523, 8, 39, 3, 39, 1525, 8, 39, 3, 39, 1527, 8, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 3, 41, 1542, 8, 41, 3, 41, 1544, 8, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 3, 42, 1555, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 1576, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1584, 8, 44, 10, 44, 12, 44, 1587, 9, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 3, 46, 1597, 8, 46, 1, 46, 1, 46, 3, 46, 1601, 8, 46, 3, 46, 1603, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 1609, 8, 47, 10, 47, 12, 47, 1612, 9, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 5, 48, 1620, 8, 48, 10, 48, 12, 48, 1623, 9, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 1631, 8, 49, 10, 49, 12, 49, 1634, 9, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 5, 50, 1648, 8, 50, 10, 50, 12, 50, 1651, 9, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1656, 8, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 3, 50, 1667, 8, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 3, 52, 1674, 8, 52, 1, 52, 1, 52, 3, 52, 1678, 8, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 1686, 8, 52, 10, 52, 12, 52, 1689, 9, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1701, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1709, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1716, 8, 53, 10, 53, 12, 53, 1719, 9, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1724, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1732, 8, 53, 1, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1738, 8, 53, 1, 53, 1, 53, 3, 53, 1742, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1747, 8, 53, 1, 53, 1, 53, 1, 53, 3, 53, 1752, 8, 53, 1, 54, 1, 54, 1, 54, 1, 54, 3, 54, 1758, 8, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1772, 8, 54, 10, 54, 12, 54, 1775, 9, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 4, 55, 1802, 8, 55, 11, 55, 12, 55, 1803, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1813, 8, 55, 10, 55, 12, 55, 1816, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1825, 8, 55, 1, 55, 3, 55, 1828, 8, 55, 1, 55, 3, 55, 1831, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1836, 8, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1841, 8, 55, 10, 55, 12, 55, 1844, 9, 55, 3, 55, 1846, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1853, 8, 55, 10, 55, 12, 55, 1856, 9, 55, 3, 55, 1858, 8, 55, 1, 55, 1, 55, 3, 55, 1862, 8, 55, 1, 55, 3, 55, 1865, 8, 55, 1, 55, 3, 55, 1868, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1881, 8, 55, 10, 55, 12, 55, 1884, 9, 55, 3, 55, 1886, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 4, 55, 1903, 8, 55, 11, 55, 12, 55, 1904, 1, 55, 1, 55, 3, 55, 1909, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 4, 55, 1915, 8, 55, 11, 55, 12, 55, 1916, 1, 55, 1, 55, 3, 55, 1921, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1944, 8, 55, 10, 55, 12, 55, 1947, 9, 55, 3, 55, 1949, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1958, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1964, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1970, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1976, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1989, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1998, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2018, 8, 55, 10, 55, 12, 55, 2021, 9, 55, 3, 55, 2023, 8, 55, 1, 55, 3, 55, 2026, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 2036, 8, 55, 10, 55, 12, 55, 2039, 9, 55, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 3, 57, 2047, 8, 57, 1, 58, 1, 58, 1, 58, 1, 58, 3, 58, 2053, 8, 58, 3, 58, 2055, 8, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2063, 8, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 63, 1, 63, 3, 63, 2073, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2079, 8, 63, 1, 64, 1, 64, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 2091, 8, 66, 10, 66, 12, 66, 2094, 9, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2102, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2109, 8, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2114, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2121, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2131, 8, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2136, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2143, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 5, 66, 2167, 8, 66, 10, 66, 12, 66, 2170, 9, 66, 1, 66, 1, 66, 3, 66, 2174, 8, 66, 3, 66, 2176, 8, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 2183, 8, 66, 5, 66, 2185, 8, 66, 10, 66, 12, 66, 2188, 9, 66, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 2194, 8, 67, 1, 68, 1, 68, 3, 68, 2198, 8, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2215, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2228, 8, 71, 10, 71, 12, 71, 2231, 9, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2237, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2246, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2254, 8, 71, 10, 71, 12, 71, 2257, 9, 71, 1, 71, 1, 71, 3, 71, 2261, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2268, 8, 71, 10, 71, 12, 71, 2271, 9, 71, 1, 71, 1, 71, 3, 71, 2275, 8, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2283, 8, 72, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2289, 8, 73, 10, 73, 12, 73, 2292, 9, 73, 3, 73, 2294, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2300, 8, 73, 1, 73, 3, 73, 2303, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2310, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2316, 8, 73, 10, 73, 12, 73, 2319, 9, 73, 3, 73, 2321, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2327, 8, 73, 10, 73, 12, 73, 2330, 9, 73, 3, 73, 2332, 8, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 3, 74, 2358, 8, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 3, 75, 2369, 8, 75, 1, 76, 1, 76, 1, 76, 3, 76, 2374, 8, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 5, 76, 2381, 8, 76, 10, 76, 12, 76, 2384, 9, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 5, 77, 2394, 8, 77, 10, 77, 12, 77, 2397, 9, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 3, 77, 2411, 8, 77, 1, 78, 1, 78, 3, 78, 2415, 8, 78, 1, 78, 1, 78, 3, 78, 2419, 8, 78, 1, 78, 1, 78, 3, 78, 2423, 8, 78, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 2429, 8, 78, 1, 78, 1, 78, 3, 78, 2433, 8, 78, 1, 78, 1, 78, 3, 78, 2437, 8, 78, 1, 78, 1, 78, 3, 78, 2441, 8, 78, 3, 78, 2443, 8, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 2453, 8, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2460, 8, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 3, 82, 2469, 8, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 2476, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2483, 8, 84, 1, 85, 1, 85, 1, 85, 5, 85, 2488, 8, 85, 10, 85, 12, 85, 2491, 9, 85, 1, 86, 1, 86, 1, 87, 1, 87, 3, 87, 2497, 8, 87, 1, 88, 1, 88, 1, 89, 1, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2518, 8, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 2531, 8, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 3, 96, 2542, 8, 96, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 3, 100, 2552, 8, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 5, 102, 2559, 8, 102, 10, 102, 12, 102, 2562, 9, 102, 1, 103, 1, 103, 1, 103, 3, 103, 2567, 8, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 2574, 8, 104, 1, 105, 1, 105, 1, 105, 5, 105, 2579, 8, 105, 10, 105, 12, 105, 2582, 9, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 2589, 8, 106, 1, 107, 3, 107, 2592, 8, 107, 1, 107, 1, 107, 3, 107, 2596, 8, 107, 1, 107, 1, 107, 3, 107, 2600, 8, 107, 1, 107, 3, 107, 2603, 8, 107, 1, 108, 1, 108, 1, 108, 0, 7, 42, 68, 104, 108, 110, 132, 152, 109, 0, 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, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 0, 27, 2, 0, 34, 34, 185, 185, 2, 0, 61, 61, 112, 112, 2, 0, 88, 88, 103, 103, 2, 0, 75, 75, 104, 104, 1, 0, 192, 193, 2, 0, 84, 84, 139, 139, 2, 0, 261, 261, 265, 265, 2, 0, 74, 74, 229, 229, 2, 0, 27, 27, 63, 63, 2, 0, 84, 84, 118, 118, 2, 0, 20, 20, 66, 66, 2, 0, 30, 30, 211, 211, 2, 0, 105, 105, 199, 199, 1, 0, 255, 256, 1, 0, 257, 259, 2, 0, 83, 83, 194, 194, 1, 0, 249, 254, 3, 0, 20, 20, 24, 24, 206, 206, 2, 0, 80, 80, 223, 223, 5, 0, 58, 58, 100, 100, 136, 137, 197, 197, 247, 247, 1, 0, 140, 143, 2, 0, 85, 85, 171, 171, 3, 0, 95, 95, 117, 117, 215, 215, 4, 0, 67, 67, 113, 113, 127, 127, 236, 236, 2, 0, 155, 155, 246, 246, 4, 0, 62, 62, 108, 108, 200, 200, 232, 232, 49, 0, 17, 20, 22, 22, 24, 25, 27, 30, 33, 34, 37, 42, 47, 47, 56, 59, 61, 61, 63, 63, 65, 65, 67, 68, 71, 71, 75, 75, 78, 78, 81, 85, 87, 87, 90, 95, 98, 98, 100, 102, 104, 105, 107, 107, 110, 110, 112, 113, 115, 115, 117, 119, 121, 121, 123, 124, 127, 137, 139, 145, 149, 152, 154, 156, 159, 159, 161, 172, 174, 177, 179, 186, 188, 190, 192, 199, 201, 211, 213, 215, 217, 222, 224, 225, 227, 228, 230, 230, 232, 234, 236, 236, 238, 239, 242, 242, 244, 248, 3008, 0, 221, 1, 0, 0, 0, 2, 226, 1, 0, 0, 0, 4, 232, 1, 0, 0, 0, 6, 234, 1, 0, 0, 0, 8, 238, 1, 0, 0, 0, 10, 242, 1, 0, 0, 0, 12, 246, 1, 0, 0, 0, 14, 250, 1, 0, 0, 0, 16, 1036, 1, 0, 0, 0, 18, 1039, 1, 0, 0, 0, 20, 1043, 1, 0, 0, 0, 22, 1057, 1, 0, 0, 0, 24, 1059, 1, 0, 0, 0, 26, 1073, 1, 0, 0, 0, 28, 1079, 1, 0, 0, 0, 30, 1083, 1, 0, 0, 0, 32, 1091, 1, 0, 0, 0, 34, 1097, 1, 0, 0, 0, 36, 1099, 1, 0, 0, 0, 38, 1136, 1, 0, 0, 0, 40, 1138, 1, 0, 0, 0, 42, 1140, 1, 0, 0, 0, 44, 1176, 1, 0, 0, 0, 46, 1180, 1, 0, 0, 0, 48, 1189, 1, 0, 0, 0, 50, 1237, 1, 0, 0, 0, 52, 1287, 1, 0, 0, 0, 54, 1302, 1, 0, 0, 0, 56, 1306, 1, 0, 0, 0, 58, 1308, 1, 0, 0, 0, 60, 1315, 1, 0, 0, 0, 62, 1344, 1, 0, 0, 0, 64, 1353, 1, 0, 0, 0, 66, 1373, 1, 0, 0, 0, 68, 1375, 1, 0, 0, 0, 70, 1414, 1, 0, 0, 0, 72, 1430, 1, 0, 0, 0, 74, 1432, 1, 0, 0, 0, 76, 1441, 1, 0, 0, 0, 78, 1443, 1, 0, 0, 0, 80, 1528, 1, 0, 0, 0, 82, 1543, 1, 0, 0, 0, 84, 1554, 1, 0, 0, 0, 86, 1575, 1, 0, 0, 0, 88, 1577, 1, 0, 0, 0, 90, 1590, 1, 0, 0, 0, 92, 1594, 1, 0, 0, 0, 94, 1604, 1, 0, 0, 0, 96, 1615, 1, 0, 0, 0, 98, 1626, 1, 0, 0, 0, 100, 1666, 1, 0, 0, 0, 102, 1668, 1, 0, 0, 0, 104, 1677, 1, 0, 0, 0, 106, 1751, 1, 0, 0, 0, 108, 1757, 1, 0, 0, 0, 110, 2025, 1, 0, 0, 0, 112, 2040, 1, 0, 0, 0, 114, 2046, 1, 0, 0, 0, 116, 2054, 1, 0, 0, 0, 118, 2062, 1, 0, 0, 0, 120, 2064, 1, 0, 0, 0, 122, 2066, 1, 0, 0, 0, 124, 2068, 1, 0, 0, 0, 126, 2070, 1, 0, 0, 0, 128, 2080, 1, 0, 0, 0, 130, 2082, 1, 0, 0, 0, 132, 2175, 1, 0, 0, 0, 134, 2193, 1, 0, 0, 0, 136, 2197, 1, 0, 0, 0, 138, 2199, 1, 0, 0, 0, 140, 2204, 1, 0, 0, 0, 142, 2274, 1, 0, 0, 0, 144, 2276, 1, 0, 0, 0, 146, 2293, 1, 0, 0, 0, 148, 2357, 1, 0, 0, 0, 150, 2368, 1, 0, 0, 0, 152, 2370, 1, 0, 0, 0, 154, 2410, 1, 0, 0, 0, 156, 2442, 1, 0, 0, 0, 158, 2444, 1, 0, 0, 0, 160, 2452, 1, 0, 0, 0, 162, 2459, 1, 0, 0, 0, 164, 2468, 1, 0, 0, 0, 166, 2475, 1, 0, 0, 0, 168, 2482, 1, 0, 0, 0, 170, 2484, 1, 0, 0, 0, 172, 2492, 1, 0, 0, 0, 174, 2496, 1, 0, 0, 0, 176, 2498, 1, 0, 0, 0, 178, 2500, 1, 0, 0, 0, 180, 2502, 1, 0, 0, 0, 182, 2504, 1, 0, 0, 0, 184, 2517, 1, 0, 0, 0, 186, 2530, 1, 0, 0, 0, 188, 2532, 1, 0, 0, 0, 190, 2534, 1, 0, 0, 0, 192, 2541, 1, 0, 0, 0, 194, 2543, 1, 0, 0, 0, 196, 2545, 1, 0, 0, 0, 198, 2547, 1, 0, 0, 0, 200, 2551, 1, 0, 0, 0, 202, 2553, 1, 0, 0, 0, 204, 2555, 1, 0, 0, 0, 206, 2566, 1, 0, 0, 0, 208, 2573, 1, 0, 0, 0, 210, 2575, 1, 0, 0, 0, 212, 2588, 1, 0, 0, 0, 214, 2602, 1, 0, 0, 0, 216, 2604, 1, 0, 0, 0, 218, 220, 3, 2, 1, 0, 219, 218, 1, 0, 0, 0, 220, 223, 1, 0, 0, 0, 221, 219, 1, 0, 0, 0, 221, 222, 1, 0, 0, 0, 222, 224, 1, 0, 0, 0, 223, 221, 1, 0, 0, 0, 224, 225, 5, 0, 0, 1, 225, 1, 1, 0, 0, 0, 226, 227, 3, 6, 3, 0, 227, 3, 1, 0, 0, 0, 228, 233, 3, 8, 4, 0, 229, 233, 3, 10, 5, 0, 230, 233, 3, 12, 6, 0, 231, 233, 3, 14, 7, 0, 232, 228, 1, 0, 0, 0, 232, 229, 1, 0, 0, 0, 232, 230, 1, 0, 0, 0, 232, 231, 1, 0, 0, 0, 233, 5, 1, 0, 0, 0, 234, 236, 3, 16, 8, 0, 235, 237, 5, 272, 0, 0, 236, 235, 1, 0, 0, 0, 236, 237, 1, 0, 0, 0, 237, 7, 1, 0, 0, 0, 238, 240, 3, 102, 51, 0, 239, 241, 5, 272, 0, 0, 240, 239, 1, 0, 0, 0, 240, 241, 1, 0, 0, 0, 241, 9, 1, 0, 0, 0, 242, 244, 3, 170, 85, 0, 243, 245, 5, 272, 0, 0, 244, 243, 1, 0, 0, 0, 244, 245, 1, 0, 0, 0, 245, 11, 1, 0, 0, 0, 246, 248, 3, 132, 66, 0, 247, 249, 5, 272, 0, 0, 248, 247, 1, 0, 0, 0, 248, 249, 1, 0, 0, 0, 249, 13, 1, 0, 0, 0, 250, 252, 3, 152, 76, 0, 251, 253, 5, 272, 0, 0, 252, 251, 1, 0, 0, 0, 252, 253, 1, 0, 0, 0, 253, 15, 1, 0, 0, 0, 254, 1037, 3, 18, 9, 0, 255, 256, 5, 233, 0, 0, 256, 1037, 3, 188, 94, 0, 257, 258, 5, 44, 0, 0, 258, 262, 5, 195, 0, 0, 259, 260, 5, 101, 0, 0, 260, 261, 5, 147, 0, 0, 261, 263, 5, 77, 0, 0, 262, 259, 1, 0, 0, 0, 262, 263, 1, 0, 0, 0, 263, 264, 1, 0, 0, 0, 264, 267, 3, 190, 95, 0, 265, 266, 5, 29, 0, 0, 266, 268, 3, 208, 104, 0, 267, 265, 1, 0, 0, 0, 267, 268, 1, 0, 0, 0, 268, 271, 1, 0, 0, 0, 269, 270, 5, 243, 0, 0, 270, 272, 3, 28, 14, 0, 271, 269, 1, 0, 0, 0, 271, 272, 1, 0, 0, 0, 272, 1037, 1, 0, 0, 0, 273, 274, 5, 69, 0, 0, 274, 277, 5, 195, 0, 0, 275, 276, 5, 101, 0, 0, 276, 278, 5, 77, 0, 0, 277, 275, 1, 0, 0, 0, 277, 278, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 281, 3, 188, 94, 0, 280, 282, 7, 0, 0, 0, 281, 280, 1, 0, 0, 0, 281, 282, 1, 0, 0, 0, 282, 1037, 1, 0, 0, 0, 283, 284, 5, 21, 0, 0, 284, 285, 5, 195, 0, 0, 285, 286, 3, 188, 94, 0, 286, 287, 5, 180, 0, 0, 287, 288, 5, 220, 0, 0, 288, 289, 3, 190, 95, 0, 289, 1037, 1, 0, 0, 0, 290, 291, 5, 21, 0, 0, 291, 292, 5, 195, 0, 0, 292, 293, 3, 188, 94, 0, 293, 294, 5, 203, 0, 0, 294, 295, 5, 29, 0, 0, 295, 296, 3, 208, 104, 0, 296, 1037, 1, 0, 0, 0, 297, 298, 5, 44, 0, 0, 298, 302, 5, 212, 0, 0, 299, 300, 5, 101, 0, 0, 300, 301, 5, 147, 0, 0, 301, 303, 5, 77, 0, 0, 302, 299, 1, 0, 0, 0, 302, 303, 1, 0, 0, 0, 303, 304, 1, 0, 0, 0, 304, 306, 3, 178, 89, 0, 305, 307, 3, 94, 47, 0, 306, 305, 1, 0, 0, 0, 306, 307, 1, 0, 0, 0, 307, 310, 1, 0, 0, 0, 308, 309, 5, 40, 0, 0, 309, 311, 3, 116, 58, 0, 310, 308, 1, 0, 0, 0, 310, 311, 1, 0, 0, 0, 311, 314, 1, 0, 0, 0, 312, 313, 5, 243, 0, 0, 313, 315, 3, 28, 14, 0, 314, 312, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 322, 5, 26, 0, 0, 317, 323, 3, 18, 9, 0, 318, 319, 5, 1, 0, 0, 319, 320, 3, 18, 9, 0, 320, 321, 5, 2, 0, 0, 321, 323, 1, 0, 0, 0, 322, 317, 1, 0, 0, 0, 322, 318, 1, 0, 0, 0, 323, 329, 1, 0, 0, 0, 324, 326, 5, 243, 0, 0, 325, 327, 5, 144, 0, 0, 326, 325, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 328, 1, 0, 0, 0, 328, 330, 5, 56, 0, 0, 329, 324, 1, 0, 0, 0, 329, 330, 1, 0, 0, 0, 330, 1037, 1, 0, 0, 0, 331, 332, 5, 44, 0, 0, 332, 336, 5, 212, 0, 0, 333, 334, 5, 101, 0, 0, 334, 335, 5, 147, 0, 0, 335, 337, 5, 77, 0, 0, 336, 333, 1, 0, 0, 0, 336, 337, 1, 0, 0, 0, 337, 338, 1, 0, 0, 0, 338, 339, 3, 178, 89, 0, 339, 340, 5, 1, 0, 0, 340, 345, 3, 22, 11, 0, 341, 342, 5, 3, 0, 0, 342, 344, 3, 22, 11, 0, 343, 341, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 351, 5, 2, 0, 0, 349, 350, 5, 40, 0, 0, 350, 352, 3, 116, 58, 0, 351, 349, 1, 0, 0, 0, 351, 352, 1, 0, 0, 0, 352, 355, 1, 0, 0, 0, 353, 354, 5, 243, 0, 0, 354, 356, 3, 28, 14, 0, 355, 353, 1, 0, 0, 0, 355, 356, 1, 0, 0, 0, 356, 1037, 1, 0, 0, 0, 357, 358, 5, 69, 0, 0, 358, 361, 5, 212, 0, 0, 359, 360, 5, 101, 0, 0, 360, 362, 5, 77, 0, 0, 361, 359, 1, 0, 0, 0, 361, 362, 1, 0, 0, 0, 362, 363, 1, 0, 0, 0, 363, 1037, 3, 176, 88, 0, 364, 365, 5, 108, 0, 0, 365, 366, 5, 111, 0, 0, 366, 368, 3, 176, 88, 0, 367, 369, 3, 96, 48, 0, 368, 367, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 370, 1, 0, 0, 0, 370, 371, 3, 18, 9, 0, 371, 1037, 1, 0, 0, 0, 372, 373, 5, 62, 0, 0, 373, 374, 5, 88, 0, 0, 374, 377, 3, 176, 88, 0, 375, 376, 5, 241, 0, 0, 376, 378, 3, 104, 52, 0, 377, 375, 1, 0, 0, 0, 377, 378, 1, 0, 0, 0, 378, 1037, 1, 0, 0, 0, 379, 380, 5, 222, 0, 0, 380, 381, 5, 212, 0, 0, 381, 1037, 3, 176, 88, 0, 382, 383, 5, 21, 0, 0, 383, 386, 5, 212, 0, 0, 384, 385, 5, 101, 0, 0, 385, 387, 5, 77, 0, 0, 386, 384, 1, 0, 0, 0, 386, 387, 1, 0, 0, 0, 387, 388, 1, 0, 0, 0, 388, 389, 3, 176, 88, 0, 389, 390, 5, 180, 0, 0, 390, 391, 5, 220, 0, 0, 391, 392, 3, 178, 89, 0, 392, 1037, 1, 0, 0, 0, 393, 394, 5, 40, 0, 0, 394, 395, 5, 153, 0, 0, 395, 396, 5, 212, 0, 0, 396, 397, 3, 176, 88, 0, 397, 400, 5, 114, 0, 0, 398, 401, 3, 116, 58, 0, 399, 401, 5, 148, 0, 0, 400, 398, 1, 0, 0, 0, 400, 399, 1, 0, 0, 0, 401, 1037, 1, 0, 0, 0, 402, 403, 5, 40, 0, 0, 403, 404, 5, 153, 0, 0, 404, 405, 5, 38, 0, 0, 405, 406, 3, 200, 100, 0, 406, 409, 5, 114, 0, 0, 407, 410, 3, 116, 58, 0, 408, 410, 5, 148, 0, 0, 409, 407, 1, 0, 0, 0, 409, 408, 1, 0, 0, 0, 410, 1037, 1, 0, 0, 0, 411, 412, 5, 21, 0, 0, 412, 415, 5, 212, 0, 0, 413, 414, 5, 101, 0, 0, 414, 416, 5, 77, 0, 0, 415, 413, 1, 0, 0, 0, 415, 416, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 417, 418, 3, 176, 88, 0, 418, 419, 5, 180, 0, 0, 419, 422, 5, 38, 0, 0, 420, 421, 5, 101, 0, 0, 421, 423, 5, 77, 0, 0, 422, 420, 1, 0, 0, 0, 422, 423, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 425, 3, 200, 100, 0, 425, 426, 5, 220, 0, 0, 426, 427, 3, 202, 101, 0, 427, 1037, 1, 0, 0, 0, 428, 429, 5, 21, 0, 0, 429, 432, 5, 212, 0, 0, 430, 431, 5, 101, 0, 0, 431, 433, 5, 77, 0, 0, 432, 430, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 434, 1, 0, 0, 0, 434, 435, 3, 176, 88, 0, 435, 436, 5, 69, 0, 0, 436, 439, 5, 38, 0, 0, 437, 438, 5, 101, 0, 0, 438, 440, 5, 77, 0, 0, 439, 437, 1, 0, 0, 0, 439, 440, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 442, 3, 200, 100, 0, 442, 1037, 1, 0, 0, 0, 443, 444, 5, 21, 0, 0, 444, 447, 5, 212, 0, 0, 445, 446, 5, 101, 0, 0, 446, 448, 5, 77, 0, 0, 447, 445, 1, 0, 0, 0, 447, 448, 1, 0, 0, 0, 448, 449, 1, 0, 0, 0, 449, 450, 3, 176, 88, 0, 450, 451, 5, 17, 0, 0, 451, 455, 5, 38, 0, 0, 452, 453, 5, 101, 0, 0, 453, 454, 5, 147, 0, 0, 454, 456, 5, 77, 0, 0, 455, 452, 1, 0, 0, 0, 455, 456, 1, 0, 0, 0, 456, 457, 1, 0, 0, 0, 457, 458, 3, 24, 12, 0, 458, 1037, 1, 0, 0, 0, 459, 460, 5, 21, 0, 0, 460, 461, 5, 212, 0, 0, 461, 462, 3, 176, 88, 0, 462, 463, 5, 203, 0, 0, 463, 464, 5, 29, 0, 0, 464, 465, 3, 208, 104, 0, 465, 1037, 1, 0, 0, 0, 466, 467, 5, 21, 0, 0, 467, 468, 5, 212, 0, 0, 468, 469, 3, 176, 88, 0, 469, 470, 5, 203, 0, 0, 470, 471, 5, 175, 0, 0, 471, 472, 3, 30, 15, 0, 472, 1037, 1, 0, 0, 0, 473, 474, 5, 21, 0, 0, 474, 475, 5, 212, 0, 0, 475, 476, 3, 176, 88, 0, 476, 477, 5, 76, 0, 0, 477, 490, 3, 212, 106, 0, 478, 487, 5, 1, 0, 0, 479, 484, 3, 166, 83, 0, 480, 481, 5, 3, 0, 0, 481, 483, 3, 166, 83, 0, 482, 480, 1, 0, 0, 0, 483, 486, 1, 0, 0, 0, 484, 482, 1, 0, 0, 0, 484, 485, 1, 0, 0, 0, 485, 488, 1, 0, 0, 0, 486, 484, 1, 0, 0, 0, 487, 479, 1, 0, 0, 0, 487, 488, 1, 0, 0, 0, 488, 489, 1, 0, 0, 0, 489, 491, 5, 2, 0, 0, 490, 478, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 494, 1, 0, 0, 0, 492, 493, 5, 241, 0, 0, 493, 495, 3, 104, 52, 0, 494, 492, 1, 0, 0, 0, 494, 495, 1, 0, 0, 0, 495, 1037, 1, 0, 0, 0, 496, 497, 5, 22, 0, 0, 497, 500, 3, 176, 88, 0, 498, 499, 5, 243, 0, 0, 499, 501, 3, 28, 14, 0, 500, 498, 1, 0, 0, 0, 500, 501, 1, 0, 0, 0, 501, 1037, 1, 0, 0, 0, 502, 505, 5, 44, 0, 0, 503, 504, 5, 157, 0, 0, 504, 506, 5, 182, 0, 0, 505, 503, 1, 0, 0, 0, 505, 506, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 508, 5, 133, 0, 0, 508, 512, 5, 239, 0, 0, 509, 510, 5, 101, 0, 0, 510, 511, 5, 147, 0, 0, 511, 513, 5, 77, 0, 0, 512, 509, 1, 0, 0, 0, 512, 513, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 517, 3, 182, 91, 0, 515, 516, 5, 40, 0, 0, 516, 518, 3, 116, 58, 0, 517, 515, 1, 0, 0, 0, 517, 518, 1, 0, 0, 0, 518, 521, 1, 0, 0, 0, 519, 520, 5, 243, 0, 0, 520, 522, 3, 28, 14, 0, 521, 519, 1, 0, 0, 0, 521, 522, 1, 0, 0, 0, 522, 523, 1, 0, 0, 0, 523, 524, 5, 26, 0, 0, 524, 525, 3, 18, 9, 0, 525, 1037, 1, 0, 0, 0, 526, 529, 5, 44, 0, 0, 527, 528, 5, 157, 0, 0, 528, 530, 5, 182, 0, 0, 529, 527, 1, 0, 0, 0, 529, 530, 1, 0, 0, 0, 530, 531, 1, 0, 0, 0, 531, 532, 5, 239, 0, 0, 532, 535, 3, 182, 91, 0, 533, 534, 5, 40, 0, 0, 534, 536, 3, 116, 58, 0, 535, 533, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 539, 1, 0, 0, 0, 537, 538, 5, 198, 0, 0, 538, 540, 7, 1, 0, 0, 539, 537, 1, 0, 0, 0, 539, 540, 1, 0, 0, 0, 540, 541, 1, 0, 0, 0, 541, 542, 5, 26, 0, 0, 542, 543, 3, 18, 9, 0, 543, 1037, 1, 0, 0, 0, 544, 545, 5, 179, 0, 0, 545, 546, 5, 133, 0, 0, 546, 547, 5, 239, 0, 0, 547, 1037, 3, 180, 90, 0, 548, 549, 5, 69, 0, 0, 549, 550, 5, 133, 0, 0, 550, 553, 5, 239, 0, 0, 551, 552, 5, 101, 0, 0, 552, 554, 5, 77, 0, 0, 553, 551, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 1037, 3, 180, 90, 0, 556, 557, 5, 21, 0, 0, 557, 558, 5, 133, 0, 0, 558, 561, 5, 239, 0, 0, 559, 560, 5, 101, 0, 0, 560, 562, 5, 77, 0, 0, 561, 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 3, 180, 90, 0, 564, 565, 5, 180, 0, 0, 565, 566, 5, 220, 0, 0, 566, 567, 3, 182, 91, 0, 567, 1037, 1, 0, 0, 0, 568, 569, 5, 21, 0, 0, 569, 570, 5, 133, 0, 0, 570, 571, 5, 239, 0, 0, 571, 572, 3, 180, 90, 0, 572, 573, 5, 203, 0, 0, 573, 574, 5, 175, 0, 0, 574, 575, 3, 30, 15, 0, 575, 1037, 1, 0, 0, 0, 576, 577, 5, 69, 0, 0, 577, 580, 5, 239, 0, 0, 578, 579, 5, 101, 0, 0, 579, 581, 5, 77, 0, 0, 580, 578, 1, 0, 0, 0, 580, 581, 1, 0, 0, 0, 581, 582, 1, 0, 0, 0, 582, 1037, 3, 180, 90, 0, 583, 584, 5, 21, 0, 0, 584, 585, 5, 239, 0, 0, 585, 586, 3, 180, 90, 0, 586, 587, 5, 180, 0, 0, 587, 588, 5, 220, 0, 0, 588, 589, 3, 182, 91, 0, 589, 1037, 1, 0, 0, 0, 590, 591, 5, 21, 0, 0, 591, 592, 5, 239, 0, 0, 592, 593, 3, 180, 90, 0, 593, 594, 5, 203, 0, 0, 594, 595, 5, 29, 0, 0, 595, 596, 3, 208, 104, 0, 596, 1037, 1, 0, 0, 0, 597, 598, 5, 33, 0, 0, 598, 599, 3, 198, 99, 0, 599, 608, 5, 1, 0, 0, 600, 605, 3, 166, 83, 0, 601, 602, 5, 3, 0, 0, 602, 604, 3, 166, 83, 0, 603, 601, 1, 0, 0, 0, 604, 607, 1, 0, 0, 0, 605, 603, 1, 0, 0, 0, 605, 606, 1, 0, 0, 0, 606, 609, 1, 0, 0, 0, 607, 605, 1, 0, 0, 0, 608, 600, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 5, 2, 0, 0, 611, 1037, 1, 0, 0, 0, 612, 613, 5, 44, 0, 0, 613, 614, 5, 188, 0, 0, 614, 618, 3, 212, 106, 0, 615, 616, 5, 243, 0, 0, 616, 617, 5, 18, 0, 0, 617, 619, 3, 206, 103, 0, 618, 615, 1, 0, 0, 0, 618, 619, 1, 0, 0, 0, 619, 622, 1, 0, 0, 0, 620, 621, 5, 103, 0, 0, 621, 623, 3, 194, 97, 0, 622, 620, 1, 0, 0, 0, 622, 623, 1, 0, 0, 0, 623, 1037, 1, 0, 0, 0, 624, 625, 5, 69, 0, 0, 625, 626, 5, 188, 0, 0, 626, 1037, 3, 212, 106, 0, 627, 628, 5, 91, 0, 0, 628, 629, 3, 210, 105, 0, 629, 630, 5, 220, 0, 0, 630, 635, 3, 208, 104, 0, 631, 632, 5, 3, 0, 0, 632, 634, 3, 208, 104, 0, 633, 631, 1, 0, 0, 0, 634, 637, 1, 0, 0, 0, 635, 633, 1, 0, 0, 0, 635, 636, 1, 0, 0, 0, 636, 641, 1, 0, 0, 0, 637, 635, 1, 0, 0, 0, 638, 639, 5, 243, 0, 0, 639, 640, 5, 18, 0, 0, 640, 642, 5, 156, 0, 0, 641, 638, 1, 0, 0, 0, 641, 642, 1, 0, 0, 0, 642, 646, 1, 0, 0, 0, 643, 644, 5, 92, 0, 0, 644, 645, 5, 32, 0, 0, 645, 647, 3, 206, 103, 0, 646, 643, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 650, 1, 0, 0, 0, 648, 649, 5, 103, 0, 0, 649, 651, 3, 194, 97, 0, 650, 648, 1, 0, 0, 0, 650, 651, 1, 0, 0, 0, 651, 1037, 1, 0, 0, 0, 652, 656, 5, 186, 0, 0, 653, 654, 5, 18, 0, 0, 654, 655, 5, 156, 0, 0, 655, 657, 5, 86, 0, 0, 656, 653, 1, 0, 0, 0, 656, 657, 1, 0, 0, 0, 657, 658, 1, 0, 0, 0, 658, 659, 3, 210, 105, 0, 659, 660, 5, 88, 0, 0, 660, 665, 3, 208, 104, 0, 661, 662, 5, 3, 0, 0, 662, 664, 3, 208, 104, 0, 663, 661, 1, 0, 0, 0, 664, 667, 1, 0, 0, 0, 665, 663, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 671, 1, 0, 0, 0, 667, 665, 1, 0, 0, 0, 668, 669, 5, 92, 0, 0, 669, 670, 5, 32, 0, 0, 670, 672, 3, 206, 103, 0, 671, 668, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 675, 1, 0, 0, 0, 673, 674, 5, 103, 0, 0, 674, 676, 3, 194, 97, 0, 675, 673, 1, 0, 0, 0, 675, 676, 1, 0, 0, 0, 676, 1037, 1, 0, 0, 0, 677, 678, 5, 203, 0, 0, 678, 682, 5, 188, 0, 0, 679, 683, 5, 20, 0, 0, 680, 683, 5, 145, 0, 0, 681, 683, 3, 212, 106, 0, 682, 679, 1, 0, 0, 0, 682, 680, 1, 0, 0, 0, 682, 681, 1, 0, 0, 0, 683, 686, 1, 0, 0, 0, 684, 685, 5, 103, 0, 0, 685, 687, 3, 194, 97, 0, 686, 684, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 1037, 1, 0, 0, 0, 688, 699, 5, 91, 0, 0, 689, 694, 3, 172, 86, 0, 690, 691, 5, 3, 0, 0, 691, 693, 3, 172, 86, 0, 692, 690, 1, 0, 0, 0, 693, 696, 1, 0, 0, 0, 694, 692, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 700, 1, 0, 0, 0, 696, 694, 1, 0, 0, 0, 697, 698, 5, 20, 0, 0, 698, 700, 5, 174, 0, 0, 699, 689, 1, 0, 0, 0, 699, 697, 1, 0, 0, 0, 700, 701, 1, 0, 0, 0, 701, 710, 5, 153, 0, 0, 702, 704, 5, 195, 0, 0, 703, 702, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 705, 1, 0, 0, 0, 705, 711, 3, 188, 94, 0, 706, 708, 5, 212, 0, 0, 707, 706, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 711, 3, 176, 88, 0, 710, 703, 1, 0, 0, 0, 710, 707, 1, 0, 0, 0, 710, 711, 1, 0, 0, 0, 711, 712, 1, 0, 0, 0, 712, 713, 5, 220, 0, 0, 713, 717, 3, 208, 104, 0, 714, 715, 5, 243, 0, 0, 715, 716, 5, 91, 0, 0, 716, 718, 5, 156, 0, 0, 717, 714, 1, 0, 0, 0, 717, 718, 1, 0, 0, 0, 718, 1037, 1, 0, 0, 0, 719, 730, 5, 94, 0, 0, 720, 725, 3, 172, 86, 0, 721, 722, 5, 3, 0, 0, 722, 724, 3, 172, 86, 0, 723, 721, 1, 0, 0, 0, 724, 727, 1, 0, 0, 0, 725, 723, 1, 0, 0, 0, 725, 726, 1, 0, 0, 0, 726, 731, 1, 0, 0, 0, 727, 725, 1, 0, 0, 0, 728, 729, 5, 20, 0, 0, 729, 731, 5, 174, 0, 0, 730, 720, 1, 0, 0, 0, 730, 728, 1, 0, 0, 0, 731, 732, 1, 0, 0, 0, 732, 741, 5, 153, 0, 0, 733, 735, 5, 195, 0, 0, 734, 733, 1, 0, 0, 0, 734, 735, 1, 0, 0, 0, 735, 736, 1, 0, 0, 0, 736, 742, 3, 188, 94, 0, 737, 739, 5, 212, 0, 0, 738, 737, 1, 0, 0, 0, 738, 739, 1, 0, 0, 0, 739, 740, 1, 0, 0, 0, 740, 742, 3, 176, 88, 0, 741, 734, 1, 0, 0, 0, 741, 738, 1, 0, 0, 0, 742, 743, 1, 0, 0, 0, 743, 744, 5, 220, 0, 0, 744, 745, 3, 208, 104, 0, 745, 1037, 1, 0, 0, 0, 746, 750, 5, 186, 0, 0, 747, 748, 5, 91, 0, 0, 748, 749, 5, 156, 0, 0, 749, 751, 5, 86, 0, 0, 750, 747, 1, 0, 0, 0, 750, 751, 1, 0, 0, 0, 751, 762, 1, 0, 0, 0, 752, 757, 3, 172, 86, 0, 753, 754, 5, 3, 0, 0, 754, 756, 3, 172, 86, 0, 755, 753, 1, 0, 0, 0, 756, 759, 1, 0, 0, 0, 757, 755, 1, 0, 0, 0, 757, 758, 1, 0, 0, 0, 758, 763, 1, 0, 0, 0, 759, 757, 1, 0, 0, 0, 760, 761, 5, 20, 0, 0, 761, 763, 5, 174, 0, 0, 762, 752, 1, 0, 0, 0, 762, 760, 1, 0, 0, 0, 763, 764, 1, 0, 0, 0, 764, 773, 5, 153, 0, 0, 765, 767, 5, 195, 0, 0, 766, 765, 1, 0, 0, 0, 766, 767, 1, 0, 0, 0, 767, 768, 1, 0, 0, 0, 768, 774, 3, 188, 94, 0, 769, 771, 5, 212, 0, 0, 770, 769, 1, 0, 0, 0, 770, 771, 1, 0, 0, 0, 771, 772, 1, 0, 0, 0, 772, 774, 3, 176, 88, 0, 773, 766, 1, 0, 0, 0, 773, 770, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 775, 1, 0, 0, 0, 775, 776, 5, 88, 0, 0, 776, 1037, 3, 208, 104, 0, 777, 778, 5, 205, 0, 0, 778, 784, 5, 93, 0, 0, 779, 781, 5, 153, 0, 0, 780, 782, 5, 212, 0, 0, 781, 780, 1, 0, 0, 0, 781, 782, 1, 0, 0, 0, 782, 783, 1, 0, 0, 0, 783, 785, 3, 176, 88, 0, 784, 779, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 1037, 1, 0, 0, 0, 786, 788, 5, 78, 0, 0, 787, 789, 5, 22, 0, 0, 788, 787, 1, 0, 0, 0, 788, 789, 1, 0, 0, 0, 789, 791, 1, 0, 0, 0, 790, 792, 5, 238, 0, 0, 791, 790, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 804, 1, 0, 0, 0, 793, 794, 5, 1, 0, 0, 794, 799, 3, 160, 80, 0, 795, 796, 5, 3, 0, 0, 796, 798, 3, 160, 80, 0, 797, 795, 1, 0, 0, 0, 798, 801, 1, 0, 0, 0, 799, 797, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 802, 1, 0, 0, 0, 801, 799, 1, 0, 0, 0, 802, 803, 5, 2, 0, 0, 803, 805, 1, 0, 0, 0, 804, 793, 1, 0, 0, 0, 804, 805, 1, 0, 0, 0, 805, 806, 1, 0, 0, 0, 806, 1037, 3, 16, 8, 0, 807, 808, 5, 205, 0, 0, 808, 809, 5, 44, 0, 0, 809, 810, 5, 212, 0, 0, 810, 1037, 3, 176, 88, 0, 811, 812, 5, 205, 0, 0, 812, 813, 5, 44, 0, 0, 813, 814, 5, 195, 0, 0, 814, 1037, 3, 188, 94, 0, 815, 816, 5, 205, 0, 0, 816, 817, 5, 44, 0, 0, 817, 818, 5, 239, 0, 0, 818, 1037, 3, 180, 90, 0, 819, 820, 5, 205, 0, 0, 820, 821, 5, 44, 0, 0, 821, 822, 5, 133, 0, 0, 822, 823, 5, 239, 0, 0, 823, 1037, 3, 180, 90, 0, 824, 825, 5, 205, 0, 0, 825, 828, 5, 213, 0, 0, 826, 827, 7, 2, 0, 0, 827, 829, 3, 188, 94, 0, 828, 826, 1, 0, 0, 0, 828, 829, 1, 0, 0, 0, 829, 836, 1, 0, 0, 0, 830, 831, 5, 122, 0, 0, 831, 834, 3, 116, 58, 0, 832, 833, 5, 73, 0, 0, 833, 835, 3, 116, 58, 0, 834, 832, 1, 0, 0, 0, 834, 835, 1, 0, 0, 0, 835, 837, 1, 0, 0, 0, 836, 830, 1, 0, 0, 0, 836, 837, 1, 0, 0, 0, 837, 1037, 1, 0, 0, 0, 838, 839, 5, 205, 0, 0, 839, 842, 5, 196, 0, 0, 840, 841, 7, 2, 0, 0, 841, 843, 3, 194, 97, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 850, 1, 0, 0, 0, 844, 845, 5, 122, 0, 0, 845, 848, 3, 116, 58, 0, 846, 847, 5, 73, 0, 0, 847, 849, 3, 116, 58, 0, 848, 846, 1, 0, 0, 0, 848, 849, 1, 0, 0, 0, 849, 851, 1, 0, 0, 0, 850, 844, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 1037, 1, 0, 0, 0, 852, 853, 5, 205, 0, 0, 853, 860, 5, 37, 0, 0, 854, 855, 5, 122, 0, 0, 855, 858, 3, 116, 58, 0, 856, 857, 5, 73, 0, 0, 857, 859, 3, 116, 58, 0, 858, 856, 1, 0, 0, 0, 858, 859, 1, 0, 0, 0, 859, 861, 1, 0, 0, 0, 860, 854, 1, 0, 0, 0, 860, 861, 1, 0, 0, 0, 861, 1037, 1, 0, 0, 0, 862, 863, 5, 205, 0, 0, 863, 864, 5, 39, 0, 0, 864, 866, 7, 2, 0, 0, 865, 867, 3, 174, 87, 0, 866, 865, 1, 0, 0, 0, 866, 867, 1, 0, 0, 0, 867, 874, 1, 0, 0, 0, 868, 869, 5, 122, 0, 0, 869, 872, 3, 116, 58, 0, 870, 871, 5, 73, 0, 0, 871, 873, 3, 116, 58, 0, 872, 870, 1, 0, 0, 0, 872, 873, 1, 0, 0, 0, 873, 875, 1, 0, 0, 0, 874, 868, 1, 0, 0, 0, 874, 875, 1, 0, 0, 0, 875, 1037, 1, 0, 0, 0, 876, 877, 5, 205, 0, 0, 877, 878, 5, 208, 0, 0, 878, 879, 5, 86, 0, 0, 879, 1037, 3, 176, 88, 0, 880, 881, 5, 205, 0, 0, 881, 882, 5, 208, 0, 0, 882, 883, 5, 86, 0, 0, 883, 884, 5, 1, 0, 0, 884, 885, 3, 18, 9, 0, 885, 886, 5, 2, 0, 0, 886, 1037, 1, 0, 0, 0, 887, 889, 5, 205, 0, 0, 888, 890, 5, 47, 0, 0, 889, 888, 1, 0, 0, 0, 889, 890, 1, 0, 0, 0, 890, 891, 1, 0, 0, 0, 891, 894, 5, 189, 0, 0, 892, 893, 7, 2, 0, 0, 893, 895, 3, 212, 106, 0, 894, 892, 1, 0, 0, 0, 894, 895, 1, 0, 0, 0, 895, 1037, 1, 0, 0, 0, 896, 897, 5, 205, 0, 0, 897, 898, 5, 188, 0, 0, 898, 901, 5, 93, 0, 0, 899, 900, 7, 2, 0, 0, 900, 902, 3, 212, 106, 0, 901, 899, 1, 0, 0, 0, 901, 902, 1, 0, 0, 0, 902, 1037, 1, 0, 0, 0, 903, 904, 5, 64, 0, 0, 904, 1037, 3, 174, 87, 0, 905, 906, 5, 63, 0, 0, 906, 1037, 3, 174, 87, 0, 907, 908, 5, 205, 0, 0, 908, 915, 5, 90, 0, 0, 909, 910, 5, 122, 0, 0, 910, 913, 3, 116, 58, 0, 911, 912, 5, 73, 0, 0, 912, 914, 3, 116, 58, 0, 913, 911, 1, 0, 0, 0, 913, 914, 1, 0, 0, 0, 914, 916, 1, 0, 0, 0, 915, 909, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 1037, 1, 0, 0, 0, 917, 918, 5, 205, 0, 0, 918, 925, 5, 202, 0, 0, 919, 920, 5, 122, 0, 0, 920, 923, 3, 116, 58, 0, 921, 922, 5, 73, 0, 0, 922, 924, 3, 116, 58, 0, 923, 921, 1, 0, 0, 0, 923, 924, 1, 0, 0, 0, 924, 926, 1, 0, 0, 0, 925, 919, 1, 0, 0, 0, 925, 926, 1, 0, 0, 0, 926, 1037, 1, 0, 0, 0, 927, 928, 5, 203, 0, 0, 928, 929, 5, 202, 0, 0, 929, 930, 3, 204, 102, 0, 930, 931, 5, 249, 0, 0, 931, 932, 3, 102, 51, 0, 932, 1037, 1, 0, 0, 0, 933, 934, 5, 183, 0, 0, 934, 935, 5, 202, 0, 0, 935, 1037, 3, 204, 102, 0, 936, 937, 5, 207, 0, 0, 937, 946, 5, 221, 0, 0, 938, 943, 3, 162, 81, 0, 939, 940, 5, 3, 0, 0, 940, 942, 3, 162, 81, 0, 941, 939, 1, 0, 0, 0, 942, 945, 1, 0, 0, 0, 943, 941, 1, 0, 0, 0, 943, 944, 1, 0, 0, 0, 944, 947, 1, 0, 0, 0, 945, 943, 1, 0, 0, 0, 946, 938, 1, 0, 0, 0, 946, 947, 1, 0, 0, 0, 947, 1037, 1, 0, 0, 0, 948, 950, 5, 41, 0, 0, 949, 951, 5, 245, 0, 0, 950, 949, 1, 0, 0, 0, 950, 951, 1, 0, 0, 0, 951, 1037, 1, 0, 0, 0, 952, 954, 5, 190, 0, 0, 953, 955, 5, 245, 0, 0, 954, 953, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 1037, 1, 0, 0, 0, 956, 957, 5, 173, 0, 0, 957, 958, 3, 212, 106, 0, 958, 959, 5, 88, 0, 0, 959, 960, 3, 16, 8, 0, 960, 1037, 1, 0, 0, 0, 961, 962, 5, 60, 0, 0, 962, 963, 5, 173, 0, 0, 963, 1037, 3, 212, 106, 0, 964, 965, 5, 76, 0, 0, 965, 975, 3, 212, 106, 0, 966, 967, 5, 235, 0, 0, 967, 972, 3, 102, 51, 0, 968, 969, 5, 3, 0, 0, 969, 971, 3, 102, 51, 0, 970, 968, 1, 0, 0, 0, 971, 974, 1, 0, 0, 0, 972, 970, 1, 0, 0, 0, 972, 973, 1, 0, 0, 0, 973, 976, 1, 0, 0, 0, 974, 972, 1, 0, 0, 0, 975, 966, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 1037, 1, 0, 0, 0, 977, 978, 5, 64, 0, 0, 978, 979, 5, 107, 0, 0, 979, 1037, 3, 212, 106, 0, 980, 981, 5, 64, 0, 0, 981, 982, 5, 161, 0, 0, 982, 1037, 3, 212, 106, 0, 983, 984, 5, 203, 0, 0, 984, 985, 5, 166, 0, 0, 985, 1037, 3, 170, 85, 0, 986, 987, 5, 203, 0, 0, 987, 988, 5, 218, 0, 0, 988, 991, 5, 248, 0, 0, 989, 992, 5, 124, 0, 0, 990, 992, 3, 102, 51, 0, 991, 989, 1, 0, 0, 0, 991, 990, 1, 0, 0, 0, 992, 1037, 1, 0, 0, 0, 993, 994, 5, 232, 0, 0, 994, 995, 3, 176, 88, 0, 995, 996, 5, 203, 0, 0, 996, 1001, 3, 158, 79, 0, 997, 998, 5, 3, 0, 0, 998, 1000, 3, 158, 79, 0, 999, 997, 1, 0, 0, 0, 1000, 1003, 1, 0, 0, 0, 1001, 999, 1, 0, 0, 0, 1001, 1002, 1, 0, 0, 0, 1002, 1006, 1, 0, 0, 0, 1003, 1001, 1, 0, 0, 0, 1004, 1005, 5, 241, 0, 0, 1005, 1007, 3, 104, 52, 0, 1006, 1004, 1, 0, 0, 0, 1006, 1007, 1, 0, 0, 0, 1007, 1037, 1, 0, 0, 0, 1008, 1009, 5, 135, 0, 0, 1009, 1010, 5, 111, 0, 0, 1010, 1015, 3, 176, 88, 0, 1011, 1013, 5, 26, 0, 0, 1012, 1011, 1, 0, 0, 0, 1012, 1013, 1, 0, 0, 0, 1013, 1014, 1, 0, 0, 0, 1014, 1016, 3, 212, 106, 0, 1015, 1012, 1, 0, 0, 0, 1015, 1016, 1, 0, 0, 0, 1016, 1017, 1, 0, 0, 0, 1017, 1018, 5, 235, 0, 0, 1018, 1019, 3, 68, 34, 0, 1019, 1020, 5, 153, 0, 0, 1020, 1022, 3, 102, 51, 0, 1021, 1023, 3, 142, 71, 0, 1022, 1021, 1, 0, 0, 0, 1023, 1024, 1, 0, 0, 0, 1024, 1022, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1037, 1, 0, 0, 0, 1026, 1027, 5, 205, 0, 0, 1027, 1028, 5, 40, 0, 0, 1028, 1029, 5, 153, 0, 0, 1029, 1030, 5, 212, 0, 0, 1030, 1037, 3, 176, 88, 0, 1031, 1032, 5, 205, 0, 0, 1032, 1033, 5, 40, 0, 0, 1033, 1034, 5, 153, 0, 0, 1034, 1035, 5, 38, 0, 0, 1035, 1037, 3, 200, 100, 0, 1036, 254, 1, 0, 0, 0, 1036, 255, 1, 0, 0, 0, 1036, 257, 1, 0, 0, 0, 1036, 273, 1, 0, 0, 0, 1036, 283, 1, 0, 0, 0, 1036, 290, 1, 0, 0, 0, 1036, 297, 1, 0, 0, 0, 1036, 331, 1, 0, 0, 0, 1036, 357, 1, 0, 0, 0, 1036, 364, 1, 0, 0, 0, 1036, 372, 1, 0, 0, 0, 1036, 379, 1, 0, 0, 0, 1036, 382, 1, 0, 0, 0, 1036, 393, 1, 0, 0, 0, 1036, 402, 1, 0, 0, 0, 1036, 411, 1, 0, 0, 0, 1036, 428, 1, 0, 0, 0, 1036, 443, 1, 0, 0, 0, 1036, 459, 1, 0, 0, 0, 1036, 466, 1, 0, 0, 0, 1036, 473, 1, 0, 0, 0, 1036, 496, 1, 0, 0, 0, 1036, 502, 1, 0, 0, 0, 1036, 526, 1, 0, 0, 0, 1036, 544, 1, 0, 0, 0, 1036, 548, 1, 0, 0, 0, 1036, 556, 1, 0, 0, 0, 1036, 568, 1, 0, 0, 0, 1036, 576, 1, 0, 0, 0, 1036, 583, 1, 0, 0, 0, 1036, 590, 1, 0, 0, 0, 1036, 597, 1, 0, 0, 0, 1036, 612, 1, 0, 0, 0, 1036, 624, 1, 0, 0, 0, 1036, 627, 1, 0, 0, 0, 1036, 652, 1, 0, 0, 0, 1036, 677, 1, 0, 0, 0, 1036, 688, 1, 0, 0, 0, 1036, 719, 1, 0, 0, 0, 1036, 746, 1, 0, 0, 0, 1036, 777, 1, 0, 0, 0, 1036, 786, 1, 0, 0, 0, 1036, 807, 1, 0, 0, 0, 1036, 811, 1, 0, 0, 0, 1036, 815, 1, 0, 0, 0, 1036, 819, 1, 0, 0, 0, 1036, 824, 1, 0, 0, 0, 1036, 838, 1, 0, 0, 0, 1036, 852, 1, 0, 0, 0, 1036, 862, 1, 0, 0, 0, 1036, 876, 1, 0, 0, 0, 1036, 880, 1, 0, 0, 0, 1036, 887, 1, 0, 0, 0, 1036, 896, 1, 0, 0, 0, 1036, 903, 1, 0, 0, 0, 1036, 905, 1, 0, 0, 0, 1036, 907, 1, 0, 0, 0, 1036, 917, 1, 0, 0, 0, 1036, 927, 1, 0, 0, 0, 1036, 933, 1, 0, 0, 0, 1036, 936, 1, 0, 0, 0, 1036, 948, 1, 0, 0, 0, 1036, 952, 1, 0, 0, 0, 1036, 956, 1, 0, 0, 0, 1036, 961, 1, 0, 0, 0, 1036, 964, 1, 0, 0, 0, 1036, 977, 1, 0, 0, 0, 1036, 980, 1, 0, 0, 0, 1036, 983, 1, 0, 0, 0, 1036, 986, 1, 0, 0, 0, 1036, 993, 1, 0, 0, 0, 1036, 1008, 1, 0, 0, 0, 1036, 1026, 1, 0, 0, 0, 1036, 1031, 1, 0, 0, 0, 1037, 17, 1, 0, 0, 0, 1038, 1040, 3, 20, 10, 0, 1039, 1038, 1, 0, 0, 0, 1039, 1040, 1, 0, 0, 0, 1040, 1041, 1, 0, 0, 0, 1041, 1042, 3, 36, 18, 0, 1042, 19, 1, 0, 0, 0, 1043, 1045, 5, 243, 0, 0, 1044, 1046, 5, 178, 0, 0, 1045, 1044, 1, 0, 0, 0, 1045, 1046, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1052, 3, 62, 31, 0, 1048, 1049, 5, 3, 0, 0, 1049, 1051, 3, 62, 31, 0, 1050, 1048, 1, 0, 0, 0, 1051, 1054, 1, 0, 0, 0, 1052, 1050, 1, 0, 0, 0, 1052, 1053, 1, 0, 0, 0, 1053, 21, 1, 0, 0, 0, 1054, 1052, 1, 0, 0, 0, 1055, 1058, 3, 24, 12, 0, 1056, 1058, 3, 26, 13, 0, 1057, 1055, 1, 0, 0, 0, 1057, 1056, 1, 0, 0, 0, 1058, 23, 1, 0, 0, 0, 1059, 1060, 3, 202, 101, 0, 1060, 1063, 3, 132, 66, 0, 1061, 1062, 5, 147, 0, 0, 1062, 1064, 5, 148, 0, 0, 1063, 1061, 1, 0, 0, 0, 1063, 1064, 1, 0, 0, 0, 1064, 1067, 1, 0, 0, 0, 1065, 1066, 5, 40, 0, 0, 1066, 1068, 3, 116, 58, 0, 1067, 1065, 1, 0, 0, 0, 1067, 1068, 1, 0, 0, 0, 1068, 1071, 1, 0, 0, 0, 1069, 1070, 5, 243, 0, 0, 1070, 1072, 3, 28, 14, 0, 1071, 1069, 1, 0, 0, 0, 1071, 1072, 1, 0, 0, 0, 1072, 25, 1, 0, 0, 0, 1073, 1074, 5, 122, 0, 0, 1074, 1077, 3, 176, 88, 0, 1075, 1076, 7, 3, 0, 0, 1076, 1078, 5, 175, 0, 0, 1077, 1075, 1, 0, 0, 0, 1077, 1078, 1, 0, 0, 0, 1078, 27, 1, 0, 0, 0, 1079, 1080, 5, 1, 0, 0, 1080, 1081, 3, 30, 15, 0, 1081, 1082, 5, 2, 0, 0, 1082, 29, 1, 0, 0, 0, 1083, 1088, 3, 32, 16, 0, 1084, 1085, 5, 3, 0, 0, 1085, 1087, 3, 32, 16, 0, 1086, 1084, 1, 0, 0, 0, 1087, 1090, 1, 0, 0, 0, 1088, 1086, 1, 0, 0, 0, 1088, 1089, 1, 0, 0, 0, 1089, 31, 1, 0, 0, 0, 1090, 1088, 1, 0, 0, 0, 1091, 1092, 3, 212, 106, 0, 1092, 1093, 5, 249, 0, 0, 1093, 1094, 3, 34, 17, 0, 1094, 33, 1, 0, 0, 0, 1095, 1098, 5, 59, 0, 0, 1096, 1098, 3, 102, 51, 0, 1097, 1095, 1, 0, 0, 0, 1097, 1096, 1, 0, 0, 0, 1098, 35, 1, 0, 0, 0, 1099, 1110, 3, 42, 21, 0, 1100, 1101, 5, 158, 0, 0, 1101, 1102, 5, 32, 0, 0, 1102, 1107, 3, 46, 23, 0, 1103, 1104, 5, 3, 0, 0, 1104, 1106, 3, 46, 23, 0, 1105, 1103, 1, 0, 0, 0, 1106, 1109, 1, 0, 0, 0, 1107, 1105, 1, 0, 0, 0, 1107, 1108, 1, 0, 0, 0, 1108, 1111, 1, 0, 0, 0, 1109, 1107, 1, 0, 0, 0, 1110, 1100, 1, 0, 0, 0, 1110, 1111, 1, 0, 0, 0, 1111, 1117, 1, 0, 0, 0, 1112, 1113, 5, 151, 0, 0, 1113, 1115, 3, 40, 20, 0, 1114, 1116, 7, 4, 0, 0, 1115, 1114, 1, 0, 0, 0, 1115, 1116, 1, 0, 0, 0, 1116, 1118, 1, 0, 0, 0, 1117, 1112, 1, 0, 0, 0, 1117, 1118, 1, 0, 0, 0, 1118, 1132, 1, 0, 0, 0, 1119, 1120, 5, 123, 0, 0, 1120, 1133, 3, 38, 19, 0, 1121, 1122, 5, 81, 0, 0, 1122, 1124, 7, 5, 0, 0, 1123, 1125, 3, 40, 20, 0, 1124, 1123, 1, 0, 0, 0, 1124, 1125, 1, 0, 0, 0, 1125, 1126, 1, 0, 0, 0, 1126, 1130, 7, 4, 0, 0, 1127, 1131, 5, 155, 0, 0, 1128, 1129, 5, 243, 0, 0, 1129, 1131, 5, 217, 0, 0, 1130, 1127, 1, 0, 0, 0, 1130, 1128, 1, 0, 0, 0, 1131, 1133, 1, 0, 0, 0, 1132, 1119, 1, 0, 0, 0, 1132, 1121, 1, 0, 0, 0, 1132, 1133, 1, 0, 0, 0, 1133, 37, 1, 0, 0, 0, 1134, 1137, 5, 20, 0, 0, 1135, 1137, 3, 40, 20, 0, 1136, 1134, 1, 0, 0, 0, 1136, 1135, 1, 0, 0, 0, 1137, 39, 1, 0, 0, 0, 1138, 1139, 7, 6, 0, 0, 1139, 41, 1, 0, 0, 0, 1140, 1141, 6, 21, -1, 0, 1141, 1142, 3, 44, 22, 0, 1142, 1157, 1, 0, 0, 0, 1143, 1144, 10, 2, 0, 0, 1144, 1146, 5, 109, 0, 0, 1145, 1147, 3, 64, 32, 0, 1146, 1145, 1, 0, 0, 0, 1146, 1147, 1, 0, 0, 0, 1147, 1148, 1, 0, 0, 0, 1148, 1156, 3, 42, 21, 3, 1149, 1150, 10, 1, 0, 0, 1150, 1152, 7, 7, 0, 0, 1151, 1153, 3, 64, 32, 0, 1152, 1151, 1, 0, 0, 0, 1152, 1153, 1, 0, 0, 0, 1153, 1154, 1, 0, 0, 0, 1154, 1156, 3, 42, 21, 2, 1155, 1143, 1, 0, 0, 0, 1155, 1149, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1157, 1158, 1, 0, 0, 0, 1158, 43, 1, 0, 0, 0, 1159, 1157, 1, 0, 0, 0, 1160, 1177, 3, 48, 24, 0, 1161, 1162, 5, 212, 0, 0, 1162, 1177, 3, 176, 88, 0, 1163, 1164, 5, 237, 0, 0, 1164, 1169, 3, 102, 51, 0, 1165, 1166, 5, 3, 0, 0, 1166, 1168, 3, 102, 51, 0, 1167, 1165, 1, 0, 0, 0, 1168, 1171, 1, 0, 0, 0, 1169, 1167, 1, 0, 0, 0, 1169, 1170, 1, 0, 0, 0, 1170, 1177, 1, 0, 0, 0, 1171, 1169, 1, 0, 0, 0, 1172, 1173, 5, 1, 0, 0, 1173, 1174, 3, 36, 18, 0, 1174, 1175, 5, 2, 0, 0, 1175, 1177, 1, 0, 0, 0, 1176, 1160, 1, 0, 0, 0, 1176, 1161, 1, 0, 0, 0, 1176, 1163, 1, 0, 0, 0, 1176, 1172, 1, 0, 0, 0, 1177, 45, 1, 0, 0, 0, 1178, 1181, 3, 200, 100, 0, 1179, 1181, 3, 102, 51, 0, 1180, 1178, 1, 0, 0, 0, 1180, 1179, 1, 0, 0, 0, 1181, 1183, 1, 0, 0, 0, 1182, 1184, 7, 8, 0, 0, 1183, 1182, 1, 0, 0, 0, 1183, 1184, 1, 0, 0, 0, 1184, 1187, 1, 0, 0, 0, 1185, 1186, 5, 150, 0, 0, 1186, 1188, 7, 9, 0, 0, 1187, 1185, 1, 0, 0, 0, 1187, 1188, 1, 0, 0, 0, 1188, 47, 1, 0, 0, 0, 1189, 1191, 5, 200, 0, 0, 1190, 1192, 3, 64, 32, 0, 1191, 1190, 1, 0, 0, 0, 1191, 1192, 1, 0, 0, 0, 1192, 1193, 1, 0, 0, 0, 1193, 1198, 3, 66, 33, 0, 1194, 1195, 5, 3, 0, 0, 1195, 1197, 3, 66, 33, 0, 1196, 1194, 1, 0, 0, 0, 1197, 1200, 1, 0, 0, 0, 1198, 1196, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 1210, 1, 0, 0, 0, 1200, 1198, 1, 0, 0, 0, 1201, 1202, 5, 88, 0, 0, 1202, 1207, 3, 68, 34, 0, 1203, 1204, 5, 3, 0, 0, 1204, 1206, 3, 68, 34, 0, 1205, 1203, 1, 0, 0, 0, 1206, 1209, 1, 0, 0, 0, 1207, 1205, 1, 0, 0, 0, 1207, 1208, 1, 0, 0, 0, 1208, 1211, 1, 0, 0, 0, 1209, 1207, 1, 0, 0, 0, 1210, 1201, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1214, 1, 0, 0, 0, 1212, 1213, 5, 241, 0, 0, 1213, 1215, 3, 104, 52, 0, 1214, 1212, 1, 0, 0, 0, 1214, 1215, 1, 0, 0, 0, 1215, 1219, 1, 0, 0, 0, 1216, 1217, 5, 96, 0, 0, 1217, 1218, 5, 32, 0, 0, 1218, 1220, 3, 50, 25, 0, 1219, 1216, 1, 0, 0, 0, 1219, 1220, 1, 0, 0, 0, 1220, 1223, 1, 0, 0, 0, 1221, 1222, 5, 99, 0, 0, 1222, 1224, 3, 104, 52, 0, 1223, 1221, 1, 0, 0, 0, 1223, 1224, 1, 0, 0, 0, 1224, 1234, 1, 0, 0, 0, 1225, 1226, 5, 242, 0, 0, 1226, 1231, 3, 58, 29, 0, 1227, 1228, 5, 3, 0, 0, 1228, 1230, 3, 58, 29, 0, 1229, 1227, 1, 0, 0, 0, 1230, 1233, 1, 0, 0, 0, 1231, 1229, 1, 0, 0, 0, 1231, 1232, 1, 0, 0, 0, 1232, 1235, 1, 0, 0, 0, 1233, 1231, 1, 0, 0, 0, 1234, 1225, 1, 0, 0, 0, 1234, 1235, 1, 0, 0, 0, 1235, 49, 1, 0, 0, 0, 1236, 1238, 3, 64, 32, 0, 1237, 1236, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 1, 0, 0, 0, 1239, 1244, 3, 52, 26, 0, 1240, 1241, 5, 3, 0, 0, 1241, 1243, 3, 52, 26, 0, 1242, 1240, 1, 0, 0, 0, 1243, 1246, 1, 0, 0, 0, 1244, 1242, 1, 0, 0, 0, 1244, 1245, 1, 0, 0, 0, 1245, 51, 1, 0, 0, 0, 1246, 1244, 1, 0, 0, 0, 1247, 1288, 3, 54, 27, 0, 1248, 1249, 5, 191, 0, 0, 1249, 1258, 5, 1, 0, 0, 1250, 1255, 3, 56, 28, 0, 1251, 1252, 5, 3, 0, 0, 1252, 1254, 3, 56, 28, 0, 1253, 1251, 1, 0, 0, 0, 1254, 1257, 1, 0, 0, 0, 1255, 1253, 1, 0, 0, 0, 1255, 1256, 1, 0, 0, 0, 1256, 1259, 1, 0, 0, 0, 1257, 1255, 1, 0, 0, 0, 1258, 1250, 1, 0, 0, 0, 1258, 1259, 1, 0, 0, 0, 1259, 1260, 1, 0, 0, 0, 1260, 1288, 5, 2, 0, 0, 1261, 1262, 5, 46, 0, 0, 1262, 1271, 5, 1, 0, 0, 1263, 1268, 3, 56, 28, 0, 1264, 1265, 5, 3, 0, 0, 1265, 1267, 3, 56, 28, 0, 1266, 1264, 1, 0, 0, 0, 1267, 1270, 1, 0, 0, 0, 1268, 1266, 1, 0, 0, 0, 1268, 1269, 1, 0, 0, 0, 1269, 1272, 1, 0, 0, 0, 1270, 1268, 1, 0, 0, 0, 1271, 1263, 1, 0, 0, 0, 1271, 1272, 1, 0, 0, 0, 1272, 1273, 1, 0, 0, 0, 1273, 1288, 5, 2, 0, 0, 1274, 1275, 5, 97, 0, 0, 1275, 1276, 5, 204, 0, 0, 1276, 1277, 5, 1, 0, 0, 1277, 1282, 3, 54, 27, 0, 1278, 1279, 5, 3, 0, 0, 1279, 1281, 3, 54, 27, 0, 1280, 1278, 1, 0, 0, 0, 1281, 1284, 1, 0, 0, 0, 1282, 1280, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 1285, 1, 0, 0, 0, 1284, 1282, 1, 0, 0, 0, 1285, 1286, 5, 2, 0, 0, 1286, 1288, 1, 0, 0, 0, 1287, 1247, 1, 0, 0, 0, 1287, 1248, 1, 0, 0, 0, 1287, 1261, 1, 0, 0, 0, 1287, 1274, 1, 0, 0, 0, 1288, 53, 1, 0, 0, 0, 1289, 1298, 5, 1, 0, 0, 1290, 1295, 3, 56, 28, 0, 1291, 1292, 5, 3, 0, 0, 1292, 1294, 3, 56, 28, 0, 1293, 1291, 1, 0, 0, 0, 1294, 1297, 1, 0, 0, 0, 1295, 1293, 1, 0, 0, 0, 1295, 1296, 1, 0, 0, 0, 1296, 1299, 1, 0, 0, 0, 1297, 1295, 1, 0, 0, 0, 1298, 1290, 1, 0, 0, 0, 1298, 1299, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 1303, 5, 2, 0, 0, 1301, 1303, 3, 56, 28, 0, 1302, 1289, 1, 0, 0, 0, 1302, 1301, 1, 0, 0, 0, 1303, 55, 1, 0, 0, 0, 1304, 1307, 3, 200, 100, 0, 1305, 1307, 3, 102, 51, 0, 1306, 1304, 1, 0, 0, 0, 1306, 1305, 1, 0, 0, 0, 1307, 57, 1, 0, 0, 0, 1308, 1309, 3, 212, 106, 0, 1309, 1310, 5, 26, 0, 0, 1310, 1311, 5, 1, 0, 0, 1311, 1312, 3, 60, 30, 0, 1312, 1313, 5, 2, 0, 0, 1313, 59, 1, 0, 0, 0, 1314, 1316, 3, 212, 106, 0, 1315, 1314, 1, 0, 0, 0, 1315, 1316, 1, 0, 0, 0, 1316, 1327, 1, 0, 0, 0, 1317, 1318, 5, 163, 0, 0, 1318, 1319, 5, 32, 0, 0, 1319, 1324, 3, 102, 51, 0, 1320, 1321, 5, 3, 0, 0, 1321, 1323, 3, 102, 51, 0, 1322, 1320, 1, 0, 0, 0, 1323, 1326, 1, 0, 0, 0, 1324, 1322, 1, 0, 0, 0, 1324, 1325, 1, 0, 0, 0, 1325, 1328, 1, 0, 0, 0, 1326, 1324, 1, 0, 0, 0, 1327, 1317, 1, 0, 0, 0, 1327, 1328, 1, 0, 0, 0, 1328, 1339, 1, 0, 0, 0, 1329, 1330, 5, 158, 0, 0, 1330, 1331, 5, 32, 0, 0, 1331, 1336, 3, 46, 23, 0, 1332, 1333, 5, 3, 0, 0, 1333, 1335, 3, 46, 23, 0, 1334, 1332, 1, 0, 0, 0, 1335, 1338, 1, 0, 0, 0, 1336, 1334, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1340, 1, 0, 0, 0, 1338, 1336, 1, 0, 0, 0, 1339, 1329, 1, 0, 0, 0, 1339, 1340, 1, 0, 0, 0, 1340, 1342, 1, 0, 0, 0, 1341, 1343, 3, 146, 73, 0, 1342, 1341, 1, 0, 0, 0, 1342, 1343, 1, 0, 0, 0, 1343, 61, 1, 0, 0, 0, 1344, 1346, 3, 212, 106, 0, 1345, 1347, 3, 98, 49, 0, 1346, 1345, 1, 0, 0, 0, 1346, 1347, 1, 0, 0, 0, 1347, 1348, 1, 0, 0, 0, 1348, 1349, 5, 26, 0, 0, 1349, 1350, 5, 1, 0, 0, 1350, 1351, 3, 18, 9, 0, 1351, 1352, 5, 2, 0, 0, 1352, 63, 1, 0, 0, 0, 1353, 1354, 7, 10, 0, 0, 1354, 65, 1, 0, 0, 0, 1355, 1358, 3, 200, 100, 0, 1356, 1358, 3, 102, 51, 0, 1357, 1355, 1, 0, 0, 0, 1357, 1356, 1, 0, 0, 0, 1358, 1363, 1, 0, 0, 0, 1359, 1361, 5, 26, 0, 0, 1360, 1359, 1, 0, 0, 0, 1360, 1361, 1, 0, 0, 0, 1361, 1362, 1, 0, 0, 0, 1362, 1364, 3, 212, 106, 0, 1363, 1360, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1374, 1, 0, 0, 0, 1365, 1366, 3, 110, 55, 0, 1366, 1367, 5, 4, 0, 0, 1367, 1370, 5, 257, 0, 0, 1368, 1369, 5, 26, 0, 0, 1369, 1371, 3, 98, 49, 0, 1370, 1368, 1, 0, 0, 0, 1370, 1371, 1, 0, 0, 0, 1371, 1374, 1, 0, 0, 0, 1372, 1374, 5, 257, 0, 0, 1373, 1357, 1, 0, 0, 0, 1373, 1365, 1, 0, 0, 0, 1373, 1372, 1, 0, 0, 0, 1374, 67, 1, 0, 0, 0, 1375, 1376, 6, 34, -1, 0, 1376, 1377, 3, 74, 37, 0, 1377, 1396, 1, 0, 0, 0, 1378, 1392, 10, 2, 0, 0, 1379, 1380, 5, 45, 0, 0, 1380, 1381, 5, 116, 0, 0, 1381, 1393, 3, 74, 37, 0, 1382, 1383, 3, 70, 35, 0, 1383, 1384, 5, 116, 0, 0, 1384, 1385, 3, 68, 34, 0, 1385, 1386, 3, 72, 36, 0, 1386, 1393, 1, 0, 0, 0, 1387, 1388, 5, 138, 0, 0, 1388, 1389, 3, 70, 35, 0, 1389, 1390, 5, 116, 0, 0, 1390, 1391, 3, 74, 37, 0, 1391, 1393, 1, 0, 0, 0, 1392, 1379, 1, 0, 0, 0, 1392, 1382, 1, 0, 0, 0, 1392, 1387, 1, 0, 0, 0, 1393, 1395, 1, 0, 0, 0, 1394, 1378, 1, 0, 0, 0, 1395, 1398, 1, 0, 0, 0, 1396, 1394, 1, 0, 0, 0, 1396, 1397, 1, 0, 0, 0, 1397, 69, 1, 0, 0, 0, 1398, 1396, 1, 0, 0, 0, 1399, 1401, 5, 106, 0, 0, 1400, 1399, 1, 0, 0, 0, 1400, 1401, 1, 0, 0, 0, 1401, 1415, 1, 0, 0, 0, 1402, 1404, 5, 120, 0, 0, 1403, 1405, 5, 160, 0, 0, 1404, 1403, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1415, 1, 0, 0, 0, 1406, 1408, 5, 187, 0, 0, 1407, 1409, 5, 160, 0, 0, 1408, 1407, 1, 0, 0, 0, 1408, 1409, 1, 0, 0, 0, 1409, 1415, 1, 0, 0, 0, 1410, 1412, 5, 89, 0, 0, 1411, 1413, 5, 160, 0, 0, 1412, 1411, 1, 0, 0, 0, 1412, 1413, 1, 0, 0, 0, 1413, 1415, 1, 0, 0, 0, 1414, 1400, 1, 0, 0, 0, 1414, 1402, 1, 0, 0, 0, 1414, 1406, 1, 0, 0, 0, 1414, 1410, 1, 0, 0, 0, 1415, 71, 1, 0, 0, 0, 1416, 1417, 5, 153, 0, 0, 1417, 1431, 3, 104, 52, 0, 1418, 1419, 5, 235, 0, 0, 1419, 1420, 5, 1, 0, 0, 1420, 1425, 3, 212, 106, 0, 1421, 1422, 5, 3, 0, 0, 1422, 1424, 3, 212, 106, 0, 1423, 1421, 1, 0, 0, 0, 1424, 1427, 1, 0, 0, 0, 1425, 1423, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1428, 1, 0, 0, 0, 1427, 1425, 1, 0, 0, 0, 1428, 1429, 5, 2, 0, 0, 1429, 1431, 1, 0, 0, 0, 1430, 1416, 1, 0, 0, 0, 1430, 1418, 1, 0, 0, 0, 1431, 73, 1, 0, 0, 0, 1432, 1439, 3, 78, 39, 0, 1433, 1434, 5, 214, 0, 0, 1434, 1435, 3, 76, 38, 0, 1435, 1436, 5, 1, 0, 0, 1436, 1437, 3, 102, 51, 0, 1437, 1438, 5, 2, 0, 0, 1438, 1440, 1, 0, 0, 0, 1439, 1433, 1, 0, 0, 0, 1439, 1440, 1, 0, 0, 0, 1440, 75, 1, 0, 0, 0, 1441, 1442, 7, 11, 0, 0, 1442, 77, 1, 0, 0, 0, 1443, 1526, 3, 92, 46, 0, 1444, 1445, 5, 132, 0, 0, 1445, 1456, 5, 1, 0, 0, 1446, 1447, 5, 163, 0, 0, 1447, 1448, 5, 32, 0, 0, 1448, 1453, 3, 102, 51, 0, 1449, 1450, 5, 3, 0, 0, 1450, 1452, 3, 102, 51, 0, 1451, 1449, 1, 0, 0, 0, 1452, 1455, 1, 0, 0, 0, 1453, 1451, 1, 0, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1457, 1, 0, 0, 0, 1455, 1453, 1, 0, 0, 0, 1456, 1446, 1, 0, 0, 0, 1456, 1457, 1, 0, 0, 0, 1457, 1468, 1, 0, 0, 0, 1458, 1459, 5, 158, 0, 0, 1459, 1460, 5, 32, 0, 0, 1460, 1465, 3, 46, 23, 0, 1461, 1462, 5, 3, 0, 0, 1462, 1464, 3, 46, 23, 0, 1463, 1461, 1, 0, 0, 0, 1464, 1467, 1, 0, 0, 0, 1465, 1463, 1, 0, 0, 0, 1465, 1466, 1, 0, 0, 0, 1466, 1469, 1, 0, 0, 0, 1467, 1465, 1, 0, 0, 0, 1468, 1458, 1, 0, 0, 0, 1468, 1469, 1, 0, 0, 0, 1469, 1479, 1, 0, 0, 0, 1470, 1471, 5, 134, 0, 0, 1471, 1476, 3, 80, 40, 0, 1472, 1473, 5, 3, 0, 0, 1473, 1475, 3, 80, 40, 0, 1474, 1472, 1, 0, 0, 0, 1475, 1478, 1, 0, 0, 0, 1476, 1474, 1, 0, 0, 0, 1476, 1477, 1, 0, 0, 0, 1477, 1480, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1479, 1470, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1482, 1, 0, 0, 0, 1481, 1483, 3, 82, 41, 0, 1482, 1481, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1487, 1, 0, 0, 0, 1484, 1485, 5, 19, 0, 0, 1485, 1486, 5, 129, 0, 0, 1486, 1488, 3, 86, 43, 0, 1487, 1484, 1, 0, 0, 0, 1487, 1488, 1, 0, 0, 0, 1488, 1490, 1, 0, 0, 0, 1489, 1491, 7, 12, 0, 0, 1490, 1489, 1, 0, 0, 0, 1490, 1491, 1, 0, 0, 0, 1491, 1492, 1, 0, 0, 0, 1492, 1493, 5, 167, 0, 0, 1493, 1494, 5, 1, 0, 0, 1494, 1495, 3, 152, 76, 0, 1495, 1505, 5, 2, 0, 0, 1496, 1497, 5, 209, 0, 0, 1497, 1502, 3, 88, 44, 0, 1498, 1499, 5, 3, 0, 0, 1499, 1501, 3, 88, 44, 0, 1500, 1498, 1, 0, 0, 0, 1501, 1504, 1, 0, 0, 0, 1502, 1500, 1, 0, 0, 0, 1502, 1503, 1, 0, 0, 0, 1503, 1506, 1, 0, 0, 0, 1504, 1502, 1, 0, 0, 0, 1505, 1496, 1, 0, 0, 0, 1505, 1506, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1508, 5, 65, 0, 0, 1508, 1513, 3, 90, 45, 0, 1509, 1510, 5, 3, 0, 0, 1510, 1512, 3, 90, 45, 0, 1511, 1509, 1, 0, 0, 0, 1512, 1515, 1, 0, 0, 0, 1513, 1511, 1, 0, 0, 0, 1513, 1514, 1, 0, 0, 0, 1514, 1516, 1, 0, 0, 0, 1515, 1513, 1, 0, 0, 0, 1516, 1524, 5, 2, 0, 0, 1517, 1519, 5, 26, 0, 0, 1518, 1517, 1, 0, 0, 0, 1518, 1519, 1, 0, 0, 0, 1519, 1520, 1, 0, 0, 0, 1520, 1522, 3, 212, 106, 0, 1521, 1523, 3, 98, 49, 0, 1522, 1521, 1, 0, 0, 0, 1522, 1523, 1, 0, 0, 0, 1523, 1525, 1, 0, 0, 0, 1524, 1518, 1, 0, 0, 0, 1524, 1525, 1, 0, 0, 0, 1525, 1527, 1, 0, 0, 0, 1526, 1444, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 79, 1, 0, 0, 0, 1528, 1529, 3, 102, 51, 0, 1529, 1530, 5, 26, 0, 0, 1530, 1531, 3, 212, 106, 0, 1531, 81, 1, 0, 0, 0, 1532, 1533, 5, 154, 0, 0, 1533, 1534, 5, 192, 0, 0, 1534, 1535, 5, 168, 0, 0, 1535, 1544, 5, 129, 0, 0, 1536, 1537, 5, 20, 0, 0, 1537, 1538, 5, 193, 0, 0, 1538, 1539, 5, 168, 0, 0, 1539, 1541, 5, 129, 0, 0, 1540, 1542, 3, 84, 42, 0, 1541, 1540, 1, 0, 0, 0, 1541, 1542, 1, 0, 0, 0, 1542, 1544, 1, 0, 0, 0, 1543, 1532, 1, 0, 0, 0, 1543, 1536, 1, 0, 0, 0, 1544, 83, 1, 0, 0, 0, 1545, 1546, 5, 205, 0, 0, 1546, 1547, 5, 71, 0, 0, 1547, 1555, 5, 131, 0, 0, 1548, 1549, 5, 152, 0, 0, 1549, 1550, 5, 71, 0, 0, 1550, 1555, 5, 131, 0, 0, 1551, 1552, 5, 243, 0, 0, 1552, 1553, 5, 230, 0, 0, 1553, 1555, 5, 193, 0, 0, 1554, 1545, 1, 0, 0, 0, 1554, 1548, 1, 0, 0, 0, 1554, 1551, 1, 0, 0, 0, 1555, 85, 1, 0, 0, 0, 1556, 1557, 5, 5, 0, 0, 1557, 1558, 5, 220, 0, 0, 1558, 1559, 5, 139, 0, 0, 1559, 1576, 5, 192, 0, 0, 1560, 1561, 5, 5, 0, 0, 1561, 1562, 5, 165, 0, 0, 1562, 1563, 5, 118, 0, 0, 1563, 1576, 5, 192, 0, 0, 1564, 1565, 5, 5, 0, 0, 1565, 1566, 5, 220, 0, 0, 1566, 1567, 5, 84, 0, 0, 1567, 1576, 3, 212, 106, 0, 1568, 1569, 5, 5, 0, 0, 1569, 1570, 5, 220, 0, 0, 1570, 1571, 5, 118, 0, 0, 1571, 1576, 3, 212, 106, 0, 1572, 1573, 5, 5, 0, 0, 1573, 1574, 5, 220, 0, 0, 1574, 1576, 3, 212, 106, 0, 1575, 1556, 1, 0, 0, 0, 1575, 1560, 1, 0, 0, 0, 1575, 1564, 1, 0, 0, 0, 1575, 1568, 1, 0, 0, 0, 1575, 1572, 1, 0, 0, 0, 1576, 87, 1, 0, 0, 0, 1577, 1578, 3, 212, 106, 0, 1578, 1579, 5, 249, 0, 0, 1579, 1580, 5, 1, 0, 0, 1580, 1585, 3, 212, 106, 0, 1581, 1582, 5, 3, 0, 0, 1582, 1584, 3, 212, 106, 0, 1583, 1581, 1, 0, 0, 0, 1584, 1587, 1, 0, 0, 0, 1585, 1583, 1, 0, 0, 0, 1585, 1586, 1, 0, 0, 0, 1586, 1588, 1, 0, 0, 0, 1587, 1585, 1, 0, 0, 0, 1588, 1589, 5, 2, 0, 0, 1589, 89, 1, 0, 0, 0, 1590, 1591, 3, 212, 106, 0, 1591, 1592, 5, 26, 0, 0, 1592, 1593, 3, 102, 51, 0, 1593, 91, 1, 0, 0, 0, 1594, 1602, 3, 100, 50, 0, 1595, 1597, 5, 26, 0, 0, 1596, 1595, 1, 0, 0, 0, 1596, 1597, 1, 0, 0, 0, 1597, 1598, 1, 0, 0, 0, 1598, 1600, 3, 212, 106, 0, 1599, 1601, 3, 98, 49, 0, 1600, 1599, 1, 0, 0, 0, 1600, 1601, 1, 0, 0, 0, 1601, 1603, 1, 0, 0, 0, 1602, 1596, 1, 0, 0, 0, 1602, 1603, 1, 0, 0, 0, 1603, 93, 1, 0, 0, 0, 1604, 1605, 5, 1, 0, 0, 1605, 1610, 3, 202, 101, 0, 1606, 1607, 5, 3, 0, 0, 1607, 1609, 3, 202, 101, 0, 1608, 1606, 1, 0, 0, 0, 1609, 1612, 1, 0, 0, 0, 1610, 1608, 1, 0, 0, 0, 1610, 1611, 1, 0, 0, 0, 1611, 1613, 1, 0, 0, 0, 1612, 1610, 1, 0, 0, 0, 1613, 1614, 5, 2, 0, 0, 1614, 95, 1, 0, 0, 0, 1615, 1616, 5, 1, 0, 0, 1616, 1621, 3, 200, 100, 0, 1617, 1618, 5, 3, 0, 0, 1618, 1620, 3, 200, 100, 0, 1619, 1617, 1, 0, 0, 0, 1620, 1623, 1, 0, 0, 0, 1621, 1619, 1, 0, 0, 0, 1621, 1622, 1, 0, 0, 0, 1622, 1624, 1, 0, 0, 0, 1623, 1621, 1, 0, 0, 0, 1624, 1625, 5, 2, 0, 0, 1625, 97, 1, 0, 0, 0, 1626, 1627, 5, 1, 0, 0, 1627, 1632, 3, 212, 106, 0, 1628, 1629, 5, 3, 0, 0, 1629, 1631, 3, 212, 106, 0, 1630, 1628, 1, 0, 0, 0, 1631, 1634, 1, 0, 0, 0, 1632, 1630, 1, 0, 0, 0, 1632, 1633, 1, 0, 0, 0, 1633, 1635, 1, 0, 0, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1636, 5, 2, 0, 0, 1636, 99, 1, 0, 0, 0, 1637, 1667, 3, 174, 87, 0, 1638, 1639, 5, 1, 0, 0, 1639, 1640, 3, 18, 9, 0, 1640, 1641, 5, 2, 0, 0, 1641, 1667, 1, 0, 0, 0, 1642, 1643, 5, 231, 0, 0, 1643, 1644, 5, 1, 0, 0, 1644, 1649, 3, 102, 51, 0, 1645, 1646, 5, 3, 0, 0, 1646, 1648, 3, 102, 51, 0, 1647, 1645, 1, 0, 0, 0, 1648, 1651, 1, 0, 0, 0, 1649, 1647, 1, 0, 0, 0, 1649, 1650, 1, 0, 0, 0, 1650, 1652, 1, 0, 0, 0, 1651, 1649, 1, 0, 0, 0, 1652, 1655, 5, 2, 0, 0, 1653, 1654, 5, 243, 0, 0, 1654, 1656, 5, 159, 0, 0, 1655, 1653, 1, 0, 0, 0, 1655, 1656, 1, 0, 0, 0, 1656, 1667, 1, 0, 0, 0, 1657, 1658, 5, 119, 0, 0, 1658, 1659, 5, 1, 0, 0, 1659, 1660, 3, 18, 9, 0, 1660, 1661, 5, 2, 0, 0, 1661, 1667, 1, 0, 0, 0, 1662, 1663, 5, 1, 0, 0, 1663, 1664, 3, 68, 34, 0, 1664, 1665, 5, 2, 0, 0, 1665, 1667, 1, 0, 0, 0, 1666, 1637, 1, 0, 0, 0, 1666, 1638, 1, 0, 0, 0, 1666, 1642, 1, 0, 0, 0, 1666, 1657, 1, 0, 0, 0, 1666, 1662, 1, 0, 0, 0, 1667, 101, 1, 0, 0, 0, 1668, 1669, 3, 104, 52, 0, 1669, 103, 1, 0, 0, 0, 1670, 1671, 6, 52, -1, 0, 1671, 1673, 3, 108, 54, 0, 1672, 1674, 3, 106, 53, 0, 1673, 1672, 1, 0, 0, 0, 1673, 1674, 1, 0, 0, 0, 1674, 1678, 1, 0, 0, 0, 1675, 1676, 5, 147, 0, 0, 1676, 1678, 3, 104, 52, 3, 1677, 1670, 1, 0, 0, 0, 1677, 1675, 1, 0, 0, 0, 1678, 1687, 1, 0, 0, 0, 1679, 1680, 10, 2, 0, 0, 1680, 1681, 5, 23, 0, 0, 1681, 1686, 3, 104, 52, 3, 1682, 1683, 10, 1, 0, 0, 1683, 1684, 5, 157, 0, 0, 1684, 1686, 3, 104, 52, 2, 1685, 1679, 1, 0, 0, 0, 1685, 1682, 1, 0, 0, 0, 1686, 1689, 1, 0, 0, 0, 1687, 1685, 1, 0, 0, 0, 1687, 1688, 1, 0, 0, 0, 1688, 105, 1, 0, 0, 0, 1689, 1687, 1, 0, 0, 0, 1690, 1691, 3, 120, 60, 0, 1691, 1692, 3, 108, 54, 0, 1692, 1752, 1, 0, 0, 0, 1693, 1694, 3, 120, 60, 0, 1694, 1695, 3, 122, 61, 0, 1695, 1696, 5, 1, 0, 0, 1696, 1697, 3, 18, 9, 0, 1697, 1698, 5, 2, 0, 0, 1698, 1752, 1, 0, 0, 0, 1699, 1701, 5, 147, 0, 0, 1700, 1699, 1, 0, 0, 0, 1700, 1701, 1, 0, 0, 0, 1701, 1702, 1, 0, 0, 0, 1702, 1703, 5, 31, 0, 0, 1703, 1704, 3, 108, 54, 0, 1704, 1705, 5, 23, 0, 0, 1705, 1706, 3, 108, 54, 0, 1706, 1752, 1, 0, 0, 0, 1707, 1709, 5, 147, 0, 0, 1708, 1707, 1, 0, 0, 0, 1708, 1709, 1, 0, 0, 0, 1709, 1710, 1, 0, 0, 0, 1710, 1711, 5, 103, 0, 0, 1711, 1712, 5, 1, 0, 0, 1712, 1717, 3, 102, 51, 0, 1713, 1714, 5, 3, 0, 0, 1714, 1716, 3, 102, 51, 0, 1715, 1713, 1, 0, 0, 0, 1716, 1719, 1, 0, 0, 0, 1717, 1715, 1, 0, 0, 0, 1717, 1718, 1, 0, 0, 0, 1718, 1720, 1, 0, 0, 0, 1719, 1717, 1, 0, 0, 0, 1720, 1721, 5, 2, 0, 0, 1721, 1752, 1, 0, 0, 0, 1722, 1724, 5, 147, 0, 0, 1723, 1722, 1, 0, 0, 0, 1723, 1724, 1, 0, 0, 0, 1724, 1725, 1, 0, 0, 0, 1725, 1726, 5, 103, 0, 0, 1726, 1727, 5, 1, 0, 0, 1727, 1728, 3, 18, 9, 0, 1728, 1729, 5, 2, 0, 0, 1729, 1752, 1, 0, 0, 0, 1730, 1732, 5, 147, 0, 0, 1731, 1730, 1, 0, 0, 0, 1731, 1732, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1734, 5, 122, 0, 0, 1734, 1737, 3, 108, 54, 0, 1735, 1736, 5, 73, 0, 0, 1736, 1738, 3, 108, 54, 0, 1737, 1735, 1, 0, 0, 0, 1737, 1738, 1, 0, 0, 0, 1738, 1752, 1, 0, 0, 0, 1739, 1741, 5, 114, 0, 0, 1740, 1742, 5, 147, 0, 0, 1741, 1740, 1, 0, 0, 0, 1741, 1742, 1, 0, 0, 0, 1742, 1743, 1, 0, 0, 0, 1743, 1752, 5, 148, 0, 0, 1744, 1746, 5, 114, 0, 0, 1745, 1747, 5, 147, 0, 0, 1746, 1745, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1748, 1, 0, 0, 0, 1748, 1749, 5, 66, 0, 0, 1749, 1750, 5, 88, 0, 0, 1750, 1752, 3, 108, 54, 0, 1751, 1690, 1, 0, 0, 0, 1751, 1693, 1, 0, 0, 0, 1751, 1700, 1, 0, 0, 0, 1751, 1708, 1, 0, 0, 0, 1751, 1723, 1, 0, 0, 0, 1751, 1731, 1, 0, 0, 0, 1751, 1739, 1, 0, 0, 0, 1751, 1744, 1, 0, 0, 0, 1752, 107, 1, 0, 0, 0, 1753, 1754, 6, 54, -1, 0, 1754, 1758, 3, 110, 55, 0, 1755, 1756, 7, 13, 0, 0, 1756, 1758, 3, 108, 54, 4, 1757, 1753, 1, 0, 0, 0, 1757, 1755, 1, 0, 0, 0, 1758, 1773, 1, 0, 0, 0, 1759, 1760, 10, 3, 0, 0, 1760, 1761, 7, 14, 0, 0, 1761, 1772, 3, 108, 54, 4, 1762, 1763, 10, 2, 0, 0, 1763, 1764, 7, 13, 0, 0, 1764, 1772, 3, 108, 54, 3, 1765, 1766, 10, 1, 0, 0, 1766, 1767, 5, 260, 0, 0, 1767, 1772, 3, 108, 54, 2, 1768, 1769, 10, 5, 0, 0, 1769, 1770, 5, 28, 0, 0, 1770, 1772, 3, 118, 59, 0, 1771, 1759, 1, 0, 0, 0, 1771, 1762, 1, 0, 0, 0, 1771, 1765, 1, 0, 0, 0, 1771, 1768, 1, 0, 0, 0, 1772, 1775, 1, 0, 0, 0, 1773, 1771, 1, 0, 0, 0, 1773, 1774, 1, 0, 0, 0, 1774, 109, 1, 0, 0, 0, 1775, 1773, 1, 0, 0, 0, 1776, 1777, 6, 55, -1, 0, 1777, 2026, 5, 148, 0, 0, 1778, 2026, 3, 126, 63, 0, 1779, 1780, 3, 212, 106, 0, 1780, 1781, 3, 116, 58, 0, 1781, 2026, 1, 0, 0, 0, 1782, 1783, 5, 68, 0, 0, 1783, 1784, 5, 172, 0, 0, 1784, 2026, 3, 116, 58, 0, 1785, 2026, 3, 214, 107, 0, 1786, 2026, 3, 124, 62, 0, 1787, 2026, 3, 116, 58, 0, 1788, 2026, 5, 264, 0, 0, 1789, 2026, 5, 261, 0, 0, 1790, 1791, 5, 170, 0, 0, 1791, 1792, 5, 1, 0, 0, 1792, 1793, 3, 108, 54, 0, 1793, 1794, 5, 103, 0, 0, 1794, 1795, 3, 108, 54, 0, 1795, 1796, 5, 2, 0, 0, 1796, 2026, 1, 0, 0, 0, 1797, 1798, 5, 1, 0, 0, 1798, 1801, 3, 102, 51, 0, 1799, 1800, 5, 3, 0, 0, 1800, 1802, 3, 102, 51, 0, 1801, 1799, 1, 0, 0, 0, 1802, 1803, 1, 0, 0, 0, 1803, 1801, 1, 0, 0, 0, 1803, 1804, 1, 0, 0, 0, 1804, 1805, 1, 0, 0, 0, 1805, 1806, 5, 2, 0, 0, 1806, 2026, 1, 0, 0, 0, 1807, 1808, 5, 192, 0, 0, 1808, 1809, 5, 1, 0, 0, 1809, 1814, 3, 102, 51, 0, 1810, 1811, 5, 3, 0, 0, 1811, 1813, 3, 102, 51, 0, 1812, 1810, 1, 0, 0, 0, 1813, 1816, 1, 0, 0, 0, 1814, 1812, 1, 0, 0, 0, 1814, 1815, 1, 0, 0, 0, 1815, 1817, 1, 0, 0, 0, 1816, 1814, 1, 0, 0, 0, 1817, 1818, 5, 2, 0, 0, 1818, 2026, 1, 0, 0, 0, 1819, 1820, 3, 198, 99, 0, 1820, 1821, 5, 1, 0, 0, 1821, 1822, 5, 257, 0, 0, 1822, 1824, 5, 2, 0, 0, 1823, 1825, 3, 140, 70, 0, 1824, 1823, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1827, 1, 0, 0, 0, 1826, 1828, 3, 144, 72, 0, 1827, 1826, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 2026, 1, 0, 0, 0, 1829, 1831, 3, 112, 56, 0, 1830, 1829, 1, 0, 0, 0, 1830, 1831, 1, 0, 0, 0, 1831, 1832, 1, 0, 0, 0, 1832, 1833, 3, 198, 99, 0, 1833, 1845, 5, 1, 0, 0, 1834, 1836, 3, 64, 32, 0, 1835, 1834, 1, 0, 0, 0, 1835, 1836, 1, 0, 0, 0, 1836, 1837, 1, 0, 0, 0, 1837, 1842, 3, 102, 51, 0, 1838, 1839, 5, 3, 0, 0, 1839, 1841, 3, 102, 51, 0, 1840, 1838, 1, 0, 0, 0, 1841, 1844, 1, 0, 0, 0, 1842, 1840, 1, 0, 0, 0, 1842, 1843, 1, 0, 0, 0, 1843, 1846, 1, 0, 0, 0, 1844, 1842, 1, 0, 0, 0, 1845, 1835, 1, 0, 0, 0, 1845, 1846, 1, 0, 0, 0, 1846, 1857, 1, 0, 0, 0, 1847, 1848, 5, 158, 0, 0, 1848, 1849, 5, 32, 0, 0, 1849, 1854, 3, 46, 23, 0, 1850, 1851, 5, 3, 0, 0, 1851, 1853, 3, 46, 23, 0, 1852, 1850, 1, 0, 0, 0, 1853, 1856, 1, 0, 0, 0, 1854, 1852, 1, 0, 0, 0, 1854, 1855, 1, 0, 0, 0, 1855, 1858, 1, 0, 0, 0, 1856, 1854, 1, 0, 0, 0, 1857, 1847, 1, 0, 0, 0, 1857, 1858, 1, 0, 0, 0, 1858, 1859, 1, 0, 0, 0, 1859, 1861, 5, 2, 0, 0, 1860, 1862, 3, 140, 70, 0, 1861, 1860, 1, 0, 0, 0, 1861, 1862, 1, 0, 0, 0, 1862, 1867, 1, 0, 0, 0, 1863, 1865, 3, 114, 57, 0, 1864, 1863, 1, 0, 0, 0, 1864, 1865, 1, 0, 0, 0, 1865, 1866, 1, 0, 0, 0, 1866, 1868, 3, 144, 72, 0, 1867, 1864, 1, 0, 0, 0, 1867, 1868, 1, 0, 0, 0, 1868, 2026, 1, 0, 0, 0, 1869, 1870, 3, 212, 106, 0, 1870, 1871, 3, 144, 72, 0, 1871, 2026, 1, 0, 0, 0, 1872, 1873, 3, 212, 106, 0, 1873, 1874, 5, 6, 0, 0, 1874, 1875, 3, 102, 51, 0, 1875, 2026, 1, 0, 0, 0, 1876, 1885, 5, 1, 0, 0, 1877, 1882, 3, 212, 106, 0, 1878, 1879, 5, 3, 0, 0, 1879, 1881, 3, 212, 106, 0, 1880, 1878, 1, 0, 0, 0, 1881, 1884, 1, 0, 0, 0, 1882, 1880, 1, 0, 0, 0, 1882, 1883, 1, 0, 0, 0, 1883, 1886, 1, 0, 0, 0, 1884, 1882, 1, 0, 0, 0, 1885, 1877, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1887, 1, 0, 0, 0, 1887, 1888, 5, 2, 0, 0, 1888, 1889, 5, 6, 0, 0, 1889, 2026, 3, 102, 51, 0, 1890, 1891, 5, 1, 0, 0, 1891, 1892, 3, 18, 9, 0, 1892, 1893, 5, 2, 0, 0, 1893, 2026, 1, 0, 0, 0, 1894, 1895, 5, 77, 0, 0, 1895, 1896, 5, 1, 0, 0, 1896, 1897, 3, 18, 9, 0, 1897, 1898, 5, 2, 0, 0, 1898, 2026, 1, 0, 0, 0, 1899, 1900, 5, 35, 0, 0, 1900, 1902, 3, 102, 51, 0, 1901, 1903, 3, 138, 69, 0, 1902, 1901, 1, 0, 0, 0, 1903, 1904, 1, 0, 0, 0, 1904, 1902, 1, 0, 0, 0, 1904, 1905, 1, 0, 0, 0, 1905, 1908, 1, 0, 0, 0, 1906, 1907, 5, 70, 0, 0, 1907, 1909, 3, 102, 51, 0, 1908, 1906, 1, 0, 0, 0, 1908, 1909, 1, 0, 0, 0, 1909, 1910, 1, 0, 0, 0, 1910, 1911, 5, 72, 0, 0, 1911, 2026, 1, 0, 0, 0, 1912, 1914, 5, 35, 0, 0, 1913, 1915, 3, 138, 69, 0, 1914, 1913, 1, 0, 0, 0, 1915, 1916, 1, 0, 0, 0, 1916, 1914, 1, 0, 0, 0, 1916, 1917, 1, 0, 0, 0, 1917, 1920, 1, 0, 0, 0, 1918, 1919, 5, 70, 0, 0, 1919, 1921, 3, 102, 51, 0, 1920, 1918, 1, 0, 0, 0, 1920, 1921, 1, 0, 0, 0, 1921, 1922, 1, 0, 0, 0, 1922, 1923, 5, 72, 0, 0, 1923, 2026, 1, 0, 0, 0, 1924, 1925, 5, 36, 0, 0, 1925, 1926, 5, 1, 0, 0, 1926, 1927, 3, 102, 51, 0, 1927, 1928, 5, 26, 0, 0, 1928, 1929, 3, 132, 66, 0, 1929, 1930, 5, 2, 0, 0, 1930, 2026, 1, 0, 0, 0, 1931, 1932, 5, 224, 0, 0, 1932, 1933, 5, 1, 0, 0, 1933, 1934, 3, 102, 51, 0, 1934, 1935, 5, 26, 0, 0, 1935, 1936, 3, 132, 66, 0, 1936, 1937, 5, 2, 0, 0, 1937, 2026, 1, 0, 0, 0, 1938, 1939, 5, 25, 0, 0, 1939, 1948, 5, 7, 0, 0, 1940, 1945, 3, 102, 51, 0, 1941, 1942, 5, 3, 0, 0, 1942, 1944, 3, 102, 51, 0, 1943, 1941, 1, 0, 0, 0, 1944, 1947, 1, 0, 0, 0, 1945, 1943, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1949, 1, 0, 0, 0, 1947, 1945, 1, 0, 0, 0, 1948, 1940, 1, 0, 0, 0, 1948, 1949, 1, 0, 0, 0, 1949, 1950, 1, 0, 0, 0, 1950, 2026, 5, 8, 0, 0, 1951, 2026, 3, 212, 106, 0, 1952, 2026, 5, 49, 0, 0, 1953, 1957, 5, 53, 0, 0, 1954, 1955, 5, 1, 0, 0, 1955, 1956, 5, 265, 0, 0, 1956, 1958, 5, 2, 0, 0, 1957, 1954, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 2026, 1, 0, 0, 0, 1959, 1963, 5, 54, 0, 0, 1960, 1961, 5, 1, 0, 0, 1961, 1962, 5, 265, 0, 0, 1962, 1964, 5, 2, 0, 0, 1963, 1960, 1, 0, 0, 0, 1963, 1964, 1, 0, 0, 0, 1964, 2026, 1, 0, 0, 0, 1965, 1969, 5, 125, 0, 0, 1966, 1967, 5, 1, 0, 0, 1967, 1968, 5, 265, 0, 0, 1968, 1970, 5, 2, 0, 0, 1969, 1966, 1, 0, 0, 0, 1969, 1970, 1, 0, 0, 0, 1970, 2026, 1, 0, 0, 0, 1971, 1975, 5, 126, 0, 0, 1972, 1973, 5, 1, 0, 0, 1973, 1974, 5, 265, 0, 0, 1974, 1976, 5, 2, 0, 0, 1975, 1972, 1, 0, 0, 0, 1975, 1976, 1, 0, 0, 0, 1976, 2026, 1, 0, 0, 0, 1977, 2026, 5, 55, 0, 0, 1978, 2026, 5, 48, 0, 0, 1979, 2026, 5, 52, 0, 0, 1980, 2026, 5, 50, 0, 0, 1981, 1982, 5, 210, 0, 0, 1982, 1983, 5, 1, 0, 0, 1983, 1984, 3, 108, 54, 0, 1984, 1985, 5, 88, 0, 0, 1985, 1988, 3, 108, 54, 0, 1986, 1987, 5, 86, 0, 0, 1987, 1989, 3, 108, 54, 0, 1988, 1986, 1, 0, 0, 0, 1988, 1989, 1, 0, 0, 0, 1989, 1990, 1, 0, 0, 0, 1990, 1991, 5, 2, 0, 0, 1991, 2026, 1, 0, 0, 0, 1992, 1993, 5, 146, 0, 0, 1993, 1994, 5, 1, 0, 0, 1994, 1997, 3, 108, 54, 0, 1995, 1996, 5, 3, 0, 0, 1996, 1998, 3, 130, 65, 0, 1997, 1995, 1, 0, 0, 0, 1997, 1998, 1, 0, 0, 0, 1998, 1999, 1, 0, 0, 0, 1999, 2000, 5, 2, 0, 0, 2000, 2026, 1, 0, 0, 0, 2001, 2002, 5, 79, 0, 0, 2002, 2003, 5, 1, 0, 0, 2003, 2004, 3, 212, 106, 0, 2004, 2005, 5, 88, 0, 0, 2005, 2006, 3, 108, 54, 0, 2006, 2007, 5, 2, 0, 0, 2007, 2026, 1, 0, 0, 0, 2008, 2009, 5, 1, 0, 0, 2009, 2010, 3, 102, 51, 0, 2010, 2011, 5, 2, 0, 0, 2011, 2026, 1, 0, 0, 0, 2012, 2013, 5, 97, 0, 0, 2013, 2022, 5, 1, 0, 0, 2014, 2019, 3, 204, 102, 0, 2015, 2016, 5, 3, 0, 0, 2016, 2018, 3, 204, 102, 0, 2017, 2015, 1, 0, 0, 0, 2018, 2021, 1, 0, 0, 0, 2019, 2017, 1, 0, 0, 0, 2019, 2020, 1, 0, 0, 0, 2020, 2023, 1, 0, 0, 0, 2021, 2019, 1, 0, 0, 0, 2022, 2014, 1, 0, 0, 0, 2022, 2023, 1, 0, 0, 0, 2023, 2024, 1, 0, 0, 0, 2024, 2026, 5, 2, 0, 0, 2025, 1776, 1, 0, 0, 0, 2025, 1778, 1, 0, 0, 0, 2025, 1779, 1, 0, 0, 0, 2025, 1782, 1, 0, 0, 0, 2025, 1785, 1, 0, 0, 0, 2025, 1786, 1, 0, 0, 0, 2025, 1787, 1, 0, 0, 0, 2025, 1788, 1, 0, 0, 0, 2025, 1789, 1, 0, 0, 0, 2025, 1790, 1, 0, 0, 0, 2025, 1797, 1, 0, 0, 0, 2025, 1807, 1, 0, 0, 0, 2025, 1819, 1, 0, 0, 0, 2025, 1830, 1, 0, 0, 0, 2025, 1869, 1, 0, 0, 0, 2025, 1872, 1, 0, 0, 0, 2025, 1876, 1, 0, 0, 0, 2025, 1890, 1, 0, 0, 0, 2025, 1894, 1, 0, 0, 0, 2025, 1899, 1, 0, 0, 0, 2025, 1912, 1, 0, 0, 0, 2025, 1924, 1, 0, 0, 0, 2025, 1931, 1, 0, 0, 0, 2025, 1938, 1, 0, 0, 0, 2025, 1951, 1, 0, 0, 0, 2025, 1952, 1, 0, 0, 0, 2025, 1953, 1, 0, 0, 0, 2025, 1959, 1, 0, 0, 0, 2025, 1965, 1, 0, 0, 0, 2025, 1971, 1, 0, 0, 0, 2025, 1977, 1, 0, 0, 0, 2025, 1978, 1, 0, 0, 0, 2025, 1979, 1, 0, 0, 0, 2025, 1980, 1, 0, 0, 0, 2025, 1981, 1, 0, 0, 0, 2025, 1992, 1, 0, 0, 0, 2025, 2001, 1, 0, 0, 0, 2025, 2008, 1, 0, 0, 0, 2025, 2012, 1, 0, 0, 0, 2026, 2037, 1, 0, 0, 0, 2027, 2028, 10, 17, 0, 0, 2028, 2029, 5, 7, 0, 0, 2029, 2030, 3, 108, 54, 0, 2030, 2031, 5, 8, 0, 0, 2031, 2036, 1, 0, 0, 0, 2032, 2033, 10, 15, 0, 0, 2033, 2034, 5, 4, 0, 0, 2034, 2036, 3, 212, 106, 0, 2035, 2027, 1, 0, 0, 0, 2035, 2032, 1, 0, 0, 0, 2036, 2039, 1, 0, 0, 0, 2037, 2035, 1, 0, 0, 0, 2037, 2038, 1, 0, 0, 0, 2038, 111, 1, 0, 0, 0, 2039, 2037, 1, 0, 0, 0, 2040, 2041, 7, 15, 0, 0, 2041, 113, 1, 0, 0, 0, 2042, 2043, 5, 102, 0, 0, 2043, 2047, 5, 150, 0, 0, 2044, 2045, 5, 184, 0, 0, 2045, 2047, 5, 150, 0, 0, 2046, 2042, 1, 0, 0, 0, 2046, 2044, 1, 0, 0, 0, 2047, 115, 1, 0, 0, 0, 2048, 2055, 5, 262, 0, 0, 2049, 2052, 5, 263, 0, 0, 2050, 2051, 5, 226, 0, 0, 2051, 2053, 5, 262, 0, 0, 2052, 2050, 1, 0, 0, 0, 2052, 2053, 1, 0, 0, 0, 2053, 2055, 1, 0, 0, 0, 2054, 2048, 1, 0, 0, 0, 2054, 2049, 1, 0, 0, 0, 2055, 117, 1, 0, 0, 0, 2056, 2057, 5, 218, 0, 0, 2057, 2058, 5, 248, 0, 0, 2058, 2063, 3, 126, 63, 0, 2059, 2060, 5, 218, 0, 0, 2060, 2061, 5, 248, 0, 0, 2061, 2063, 3, 116, 58, 0, 2062, 2056, 1, 0, 0, 0, 2062, 2059, 1, 0, 0, 0, 2063, 119, 1, 0, 0, 0, 2064, 2065, 7, 16, 0, 0, 2065, 121, 1, 0, 0, 0, 2066, 2067, 7, 17, 0, 0, 2067, 123, 1, 0, 0, 0, 2068, 2069, 7, 18, 0, 0, 2069, 125, 1, 0, 0, 0, 2070, 2072, 5, 110, 0, 0, 2071, 2073, 7, 13, 0, 0, 2072, 2071, 1, 0, 0, 0, 2072, 2073, 1, 0, 0, 0, 2073, 2074, 1, 0, 0, 0, 2074, 2075, 3, 116, 58, 0, 2075, 2078, 3, 128, 64, 0, 2076, 2077, 5, 220, 0, 0, 2077, 2079, 3, 128, 64, 0, 2078, 2076, 1, 0, 0, 0, 2078, 2079, 1, 0, 0, 0, 2079, 127, 1, 0, 0, 0, 2080, 2081, 7, 19, 0, 0, 2081, 129, 1, 0, 0, 0, 2082, 2083, 7, 20, 0, 0, 2083, 131, 1, 0, 0, 0, 2084, 2085, 6, 66, -1, 0, 2085, 2086, 5, 192, 0, 0, 2086, 2087, 5, 1, 0, 0, 2087, 2092, 3, 134, 67, 0, 2088, 2089, 5, 3, 0, 0, 2089, 2091, 3, 134, 67, 0, 2090, 2088, 1, 0, 0, 0, 2091, 2094, 1, 0, 0, 0, 2092, 2090, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2095, 1, 0, 0, 0, 2094, 2092, 1, 0, 0, 0, 2095, 2096, 5, 2, 0, 0, 2096, 2176, 1, 0, 0, 0, 2097, 2098, 5, 110, 0, 0, 2098, 2101, 3, 128, 64, 0, 2099, 2100, 5, 220, 0, 0, 2100, 2102, 3, 128, 64, 0, 2101, 2099, 1, 0, 0, 0, 2101, 2102, 1, 0, 0, 0, 2102, 2176, 1, 0, 0, 0, 2103, 2108, 5, 219, 0, 0, 2104, 2105, 5, 1, 0, 0, 2105, 2106, 3, 136, 68, 0, 2106, 2107, 5, 2, 0, 0, 2107, 2109, 1, 0, 0, 0, 2108, 2104, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2113, 1, 0, 0, 0, 2110, 2111, 5, 244, 0, 0, 2111, 2112, 5, 218, 0, 0, 2112, 2114, 5, 248, 0, 0, 2113, 2110, 1, 0, 0, 0, 2113, 2114, 1, 0, 0, 0, 2114, 2176, 1, 0, 0, 0, 2115, 2120, 5, 219, 0, 0, 2116, 2117, 5, 1, 0, 0, 2117, 2118, 3, 136, 68, 0, 2118, 2119, 5, 2, 0, 0, 2119, 2121, 1, 0, 0, 0, 2120, 2116, 1, 0, 0, 0, 2120, 2121, 1, 0, 0, 0, 2121, 2122, 1, 0, 0, 0, 2122, 2123, 5, 243, 0, 0, 2123, 2124, 5, 218, 0, 0, 2124, 2176, 5, 248, 0, 0, 2125, 2130, 5, 218, 0, 0, 2126, 2127, 5, 1, 0, 0, 2127, 2128, 3, 136, 68, 0, 2128, 2129, 5, 2, 0, 0, 2129, 2131, 1, 0, 0, 0, 2130, 2126, 1, 0, 0, 0, 2130, 2131, 1, 0, 0, 0, 2131, 2135, 1, 0, 0, 0, 2132, 2133, 5, 244, 0, 0, 2133, 2134, 5, 218, 0, 0, 2134, 2136, 5, 248, 0, 0, 2135, 2132, 1, 0, 0, 0, 2135, 2136, 1, 0, 0, 0, 2136, 2176, 1, 0, 0, 0, 2137, 2142, 5, 218, 0, 0, 2138, 2139, 5, 1, 0, 0, 2139, 2140, 3, 136, 68, 0, 2140, 2141, 5, 2, 0, 0, 2141, 2143, 1, 0, 0, 0, 2142, 2138, 1, 0, 0, 0, 2142, 2143, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 2145, 5, 243, 0, 0, 2145, 2146, 5, 218, 0, 0, 2146, 2176, 5, 248, 0, 0, 2147, 2148, 5, 68, 0, 0, 2148, 2176, 5, 172, 0, 0, 2149, 2150, 5, 25, 0, 0, 2150, 2151, 5, 251, 0, 0, 2151, 2152, 3, 132, 66, 0, 2152, 2153, 5, 253, 0, 0, 2153, 2176, 1, 0, 0, 0, 2154, 2155, 5, 128, 0, 0, 2155, 2156, 5, 251, 0, 0, 2156, 2157, 3, 132, 66, 0, 2157, 2158, 5, 3, 0, 0, 2158, 2159, 3, 132, 66, 0, 2159, 2160, 5, 253, 0, 0, 2160, 2176, 1, 0, 0, 0, 2161, 2173, 3, 212, 106, 0, 2162, 2163, 5, 1, 0, 0, 2163, 2168, 3, 136, 68, 0, 2164, 2165, 5, 3, 0, 0, 2165, 2167, 3, 136, 68, 0, 2166, 2164, 1, 0, 0, 0, 2167, 2170, 1, 0, 0, 0, 2168, 2166, 1, 0, 0, 0, 2168, 2169, 1, 0, 0, 0, 2169, 2171, 1, 0, 0, 0, 2170, 2168, 1, 0, 0, 0, 2171, 2172, 5, 2, 0, 0, 2172, 2174, 1, 0, 0, 0, 2173, 2162, 1, 0, 0, 0, 2173, 2174, 1, 0, 0, 0, 2174, 2176, 1, 0, 0, 0, 2175, 2084, 1, 0, 0, 0, 2175, 2097, 1, 0, 0, 0, 2175, 2103, 1, 0, 0, 0, 2175, 2115, 1, 0, 0, 0, 2175, 2125, 1, 0, 0, 0, 2175, 2137, 1, 0, 0, 0, 2175, 2147, 1, 0, 0, 0, 2175, 2149, 1, 0, 0, 0, 2175, 2154, 1, 0, 0, 0, 2175, 2161, 1, 0, 0, 0, 2176, 2186, 1, 0, 0, 0, 2177, 2178, 10, 2, 0, 0, 2178, 2182, 5, 25, 0, 0, 2179, 2180, 5, 7, 0, 0, 2180, 2181, 5, 265, 0, 0, 2181, 2183, 5, 8, 0, 0, 2182, 2179, 1, 0, 0, 0, 2182, 2183, 1, 0, 0, 0, 2183, 2185, 1, 0, 0, 0, 2184, 2177, 1, 0, 0, 0, 2185, 2188, 1, 0, 0, 0, 2186, 2184, 1, 0, 0, 0, 2186, 2187, 1, 0, 0, 0, 2187, 133, 1, 0, 0, 0, 2188, 2186, 1, 0, 0, 0, 2189, 2194, 3, 132, 66, 0, 2190, 2191, 3, 212, 106, 0, 2191, 2192, 3, 132, 66, 0, 2192, 2194, 1, 0, 0, 0, 2193, 2189, 1, 0, 0, 0, 2193, 2190, 1, 0, 0, 0, 2194, 135, 1, 0, 0, 0, 2195, 2198, 5, 265, 0, 0, 2196, 2198, 3, 132, 66, 0, 2197, 2195, 1, 0, 0, 0, 2197, 2196, 1, 0, 0, 0, 2198, 137, 1, 0, 0, 0, 2199, 2200, 5, 240, 0, 0, 2200, 2201, 3, 102, 51, 0, 2201, 2202, 5, 216, 0, 0, 2202, 2203, 3, 102, 51, 0, 2203, 139, 1, 0, 0, 0, 2204, 2205, 5, 82, 0, 0, 2205, 2206, 5, 1, 0, 0, 2206, 2207, 5, 241, 0, 0, 2207, 2208, 3, 104, 52, 0, 2208, 2209, 5, 2, 0, 0, 2209, 141, 1, 0, 0, 0, 2210, 2211, 5, 240, 0, 0, 2211, 2214, 5, 130, 0, 0, 2212, 2213, 5, 23, 0, 0, 2213, 2215, 3, 102, 51, 0, 2214, 2212, 1, 0, 0, 0, 2214, 2215, 1, 0, 0, 0, 2215, 2216, 1, 0, 0, 0, 2216, 2217, 5, 216, 0, 0, 2217, 2218, 5, 232, 0, 0, 2218, 2219, 5, 203, 0, 0, 2219, 2220, 3, 212, 106, 0, 2220, 2221, 5, 249, 0, 0, 2221, 2229, 3, 102, 51, 0, 2222, 2223, 5, 3, 0, 0, 2223, 2224, 3, 212, 106, 0, 2224, 2225, 5, 249, 0, 0, 2225, 2226, 3, 102, 51, 0, 2226, 2228, 1, 0, 0, 0, 2227, 2222, 1, 0, 0, 0, 2228, 2231, 1, 0, 0, 0, 2229, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 2275, 1, 0, 0, 0, 2231, 2229, 1, 0, 0, 0, 2232, 2233, 5, 240, 0, 0, 2233, 2236, 5, 130, 0, 0, 2234, 2235, 5, 23, 0, 0, 2235, 2237, 3, 102, 51, 0, 2236, 2234, 1, 0, 0, 0, 2236, 2237, 1, 0, 0, 0, 2237, 2238, 1, 0, 0, 0, 2238, 2239, 5, 216, 0, 0, 2239, 2275, 5, 62, 0, 0, 2240, 2241, 5, 240, 0, 0, 2241, 2242, 5, 147, 0, 0, 2242, 2245, 5, 130, 0, 0, 2243, 2244, 5, 23, 0, 0, 2244, 2246, 3, 102, 51, 0, 2245, 2243, 1, 0, 0, 0, 2245, 2246, 1, 0, 0, 0, 2246, 2247, 1, 0, 0, 0, 2247, 2248, 5, 216, 0, 0, 2248, 2260, 5, 108, 0, 0, 2249, 2250, 5, 1, 0, 0, 2250, 2255, 3, 212, 106, 0, 2251, 2252, 5, 3, 0, 0, 2252, 2254, 3, 212, 106, 0, 2253, 2251, 1, 0, 0, 0, 2254, 2257, 1, 0, 0, 0, 2255, 2253, 1, 0, 0, 0, 2255, 2256, 1, 0, 0, 0, 2256, 2258, 1, 0, 0, 0, 2257, 2255, 1, 0, 0, 0, 2258, 2259, 5, 2, 0, 0, 2259, 2261, 1, 0, 0, 0, 2260, 2249, 1, 0, 0, 0, 2260, 2261, 1, 0, 0, 0, 2261, 2262, 1, 0, 0, 0, 2262, 2263, 5, 237, 0, 0, 2263, 2264, 5, 1, 0, 0, 2264, 2269, 3, 102, 51, 0, 2265, 2266, 5, 3, 0, 0, 2266, 2268, 3, 102, 51, 0, 2267, 2265, 1, 0, 0, 0, 2268, 2271, 1, 0, 0, 0, 2269, 2267, 1, 0, 0, 0, 2269, 2270, 1, 0, 0, 0, 2270, 2272, 1, 0, 0, 0, 2271, 2269, 1, 0, 0, 0, 2272, 2273, 5, 2, 0, 0, 2273, 2275, 1, 0, 0, 0, 2274, 2210, 1, 0, 0, 0, 2274, 2232, 1, 0, 0, 0, 2274, 2240, 1, 0, 0, 0, 2275, 143, 1, 0, 0, 0, 2276, 2282, 5, 162, 0, 0, 2277, 2283, 3, 212, 106, 0, 2278, 2279, 5, 1, 0, 0, 2279, 2280, 3, 60, 30, 0, 2280, 2281, 5, 2, 0, 0, 2281, 2283, 1, 0, 0, 0, 2282, 2277, 1, 0, 0, 0, 2282, 2278, 1, 0, 0, 0, 2283, 145, 1, 0, 0, 0, 2284, 2285, 5, 134, 0, 0, 2285, 2290, 3, 80, 40, 0, 2286, 2287, 5, 3, 0, 0, 2287, 2289, 3, 80, 40, 0, 2288, 2286, 1, 0, 0, 0, 2289, 2292, 1, 0, 0, 0, 2290, 2288, 1, 0, 0, 0, 2290, 2291, 1, 0, 0, 0, 2291, 2294, 1, 0, 0, 0, 2292, 2290, 1, 0, 0, 0, 2293, 2284, 1, 0, 0, 0, 2293, 2294, 1, 0, 0, 0, 2294, 2295, 1, 0, 0, 0, 2295, 2299, 3, 148, 74, 0, 2296, 2297, 5, 19, 0, 0, 2297, 2298, 5, 129, 0, 0, 2298, 2300, 3, 86, 43, 0, 2299, 2296, 1, 0, 0, 0, 2299, 2300, 1, 0, 0, 0, 2300, 2302, 1, 0, 0, 0, 2301, 2303, 7, 12, 0, 0, 2302, 2301, 1, 0, 0, 0, 2302, 2303, 1, 0, 0, 0, 2303, 2309, 1, 0, 0, 0, 2304, 2305, 5, 167, 0, 0, 2305, 2306, 5, 1, 0, 0, 2306, 2307, 3, 152, 76, 0, 2307, 2308, 5, 2, 0, 0, 2308, 2310, 1, 0, 0, 0, 2309, 2304, 1, 0, 0, 0, 2309, 2310, 1, 0, 0, 0, 2310, 2320, 1, 0, 0, 0, 2311, 2312, 5, 209, 0, 0, 2312, 2317, 3, 88, 44, 0, 2313, 2314, 5, 3, 0, 0, 2314, 2316, 3, 88, 44, 0, 2315, 2313, 1, 0, 0, 0, 2316, 2319, 1, 0, 0, 0, 2317, 2315, 1, 0, 0, 0, 2317, 2318, 1, 0, 0, 0, 2318, 2321, 1, 0, 0, 0, 2319, 2317, 1, 0, 0, 0, 2320, 2311, 1, 0, 0, 0, 2320, 2321, 1, 0, 0, 0, 2321, 2331, 1, 0, 0, 0, 2322, 2323, 5, 65, 0, 0, 2323, 2328, 3, 90, 45, 0, 2324, 2325, 5, 3, 0, 0, 2325, 2327, 3, 90, 45, 0, 2326, 2324, 1, 0, 0, 0, 2327, 2330, 1, 0, 0, 0, 2328, 2326, 1, 0, 0, 0, 2328, 2329, 1, 0, 0, 0, 2329, 2332, 1, 0, 0, 0, 2330, 2328, 1, 0, 0, 0, 2331, 2322, 1, 0, 0, 0, 2331, 2332, 1, 0, 0, 0, 2332, 147, 1, 0, 0, 0, 2333, 2334, 5, 176, 0, 0, 2334, 2358, 3, 150, 75, 0, 2335, 2336, 5, 193, 0, 0, 2336, 2358, 3, 150, 75, 0, 2337, 2338, 5, 98, 0, 0, 2338, 2358, 3, 150, 75, 0, 2339, 2340, 5, 176, 0, 0, 2340, 2341, 5, 31, 0, 0, 2341, 2342, 3, 150, 75, 0, 2342, 2343, 5, 23, 0, 0, 2343, 2344, 3, 150, 75, 0, 2344, 2358, 1, 0, 0, 0, 2345, 2346, 5, 193, 0, 0, 2346, 2347, 5, 31, 0, 0, 2347, 2348, 3, 150, 75, 0, 2348, 2349, 5, 23, 0, 0, 2349, 2350, 3, 150, 75, 0, 2350, 2358, 1, 0, 0, 0, 2351, 2352, 5, 98, 0, 0, 2352, 2353, 5, 31, 0, 0, 2353, 2354, 3, 150, 75, 0, 2354, 2355, 5, 23, 0, 0, 2355, 2356, 3, 150, 75, 0, 2356, 2358, 1, 0, 0, 0, 2357, 2333, 1, 0, 0, 0, 2357, 2335, 1, 0, 0, 0, 2357, 2337, 1, 0, 0, 0, 2357, 2339, 1, 0, 0, 0, 2357, 2345, 1, 0, 0, 0, 2357, 2351, 1, 0, 0, 0, 2358, 149, 1, 0, 0, 0, 2359, 2360, 5, 227, 0, 0, 2360, 2369, 5, 171, 0, 0, 2361, 2362, 5, 227, 0, 0, 2362, 2369, 5, 85, 0, 0, 2363, 2364, 5, 47, 0, 0, 2364, 2369, 5, 192, 0, 0, 2365, 2366, 3, 102, 51, 0, 2366, 2367, 7, 21, 0, 0, 2367, 2369, 1, 0, 0, 0, 2368, 2359, 1, 0, 0, 0, 2368, 2361, 1, 0, 0, 0, 2368, 2363, 1, 0, 0, 0, 2368, 2365, 1, 0, 0, 0, 2369, 151, 1, 0, 0, 0, 2370, 2371, 6, 76, -1, 0, 2371, 2373, 3, 154, 77, 0, 2372, 2374, 3, 156, 78, 0, 2373, 2372, 1, 0, 0, 0, 2373, 2374, 1, 0, 0, 0, 2374, 2382, 1, 0, 0, 0, 2375, 2376, 10, 2, 0, 0, 2376, 2381, 3, 152, 76, 3, 2377, 2378, 10, 1, 0, 0, 2378, 2379, 5, 9, 0, 0, 2379, 2381, 3, 152, 76, 2, 2380, 2375, 1, 0, 0, 0, 2380, 2377, 1, 0, 0, 0, 2381, 2384, 1, 0, 0, 0, 2382, 2380, 1, 0, 0, 0, 2382, 2383, 1, 0, 0, 0, 2383, 153, 1, 0, 0, 0, 2384, 2382, 1, 0, 0, 0, 2385, 2411, 3, 212, 106, 0, 2386, 2387, 5, 1, 0, 0, 2387, 2411, 5, 2, 0, 0, 2388, 2389, 5, 169, 0, 0, 2389, 2390, 5, 1, 0, 0, 2390, 2395, 3, 152, 76, 0, 2391, 2392, 5, 3, 0, 0, 2392, 2394, 3, 152, 76, 0, 2393, 2391, 1, 0, 0, 0, 2394, 2397, 1, 0, 0, 0, 2395, 2393, 1, 0, 0, 0, 2395, 2396, 1, 0, 0, 0, 2396, 2398, 1, 0, 0, 0, 2397, 2395, 1, 0, 0, 0, 2398, 2399, 5, 2, 0, 0, 2399, 2411, 1, 0, 0, 0, 2400, 2401, 5, 1, 0, 0, 2401, 2402, 3, 152, 76, 0, 2402, 2403, 5, 2, 0, 0, 2403, 2411, 1, 0, 0, 0, 2404, 2411, 5, 10, 0, 0, 2405, 2411, 5, 11, 0, 0, 2406, 2407, 5, 12, 0, 0, 2407, 2408, 3, 152, 76, 0, 2408, 2409, 5, 13, 0, 0, 2409, 2411, 1, 0, 0, 0, 2410, 2385, 1, 0, 0, 0, 2410, 2386, 1, 0, 0, 0, 2410, 2388, 1, 0, 0, 0, 2410, 2400, 1, 0, 0, 0, 2410, 2404, 1, 0, 0, 0, 2410, 2405, 1, 0, 0, 0, 2410, 2406, 1, 0, 0, 0, 2411, 155, 1, 0, 0, 0, 2412, 2414, 5, 257, 0, 0, 2413, 2415, 5, 261, 0, 0, 2414, 2413, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2443, 1, 0, 0, 0, 2416, 2418, 5, 255, 0, 0, 2417, 2419, 5, 261, 0, 0, 2418, 2417, 1, 0, 0, 0, 2418, 2419, 1, 0, 0, 0, 2419, 2443, 1, 0, 0, 0, 2420, 2422, 5, 261, 0, 0, 2421, 2423, 5, 261, 0, 0, 2422, 2421, 1, 0, 0, 0, 2422, 2423, 1, 0, 0, 0, 2423, 2443, 1, 0, 0, 0, 2424, 2425, 5, 14, 0, 0, 2425, 2426, 5, 265, 0, 0, 2426, 2428, 5, 15, 0, 0, 2427, 2429, 5, 261, 0, 0, 2428, 2427, 1, 0, 0, 0, 2428, 2429, 1, 0, 0, 0, 2429, 2443, 1, 0, 0, 0, 2430, 2432, 5, 14, 0, 0, 2431, 2433, 5, 265, 0, 0, 2432, 2431, 1, 0, 0, 0, 2432, 2433, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2436, 5, 3, 0, 0, 2435, 2437, 5, 265, 0, 0, 2436, 2435, 1, 0, 0, 0, 2436, 2437, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2440, 5, 15, 0, 0, 2439, 2441, 5, 261, 0, 0, 2440, 2439, 1, 0, 0, 0, 2440, 2441, 1, 0, 0, 0, 2441, 2443, 1, 0, 0, 0, 2442, 2412, 1, 0, 0, 0, 2442, 2416, 1, 0, 0, 0, 2442, 2420, 1, 0, 0, 0, 2442, 2424, 1, 0, 0, 0, 2442, 2430, 1, 0, 0, 0, 2443, 157, 1, 0, 0, 0, 2444, 2445, 3, 212, 106, 0, 2445, 2446, 5, 249, 0, 0, 2446, 2447, 3, 102, 51, 0, 2447, 159, 1, 0, 0, 0, 2448, 2449, 5, 87, 0, 0, 2449, 2453, 7, 22, 0, 0, 2450, 2451, 5, 225, 0, 0, 2451, 2453, 7, 23, 0, 0, 2452, 2448, 1, 0, 0, 0, 2452, 2450, 1, 0, 0, 0, 2453, 161, 1, 0, 0, 0, 2454, 2455, 5, 115, 0, 0, 2455, 2456, 5, 121, 0, 0, 2456, 2460, 3, 164, 82, 0, 2457, 2458, 5, 177, 0, 0, 2458, 2460, 7, 24, 0, 0, 2459, 2454, 1, 0, 0, 0, 2459, 2457, 1, 0, 0, 0, 2460, 163, 1, 0, 0, 0, 2461, 2462, 5, 177, 0, 0, 2462, 2469, 5, 228, 0, 0, 2463, 2464, 5, 177, 0, 0, 2464, 2469, 5, 42, 0, 0, 2465, 2466, 5, 181, 0, 0, 2466, 2469, 5, 177, 0, 0, 2467, 2469, 5, 201, 0, 0, 2468, 2461, 1, 0, 0, 0, 2468, 2463, 1, 0, 0, 0, 2468, 2465, 1, 0, 0, 0, 2468, 2467, 1, 0, 0, 0, 2469, 165, 1, 0, 0, 0, 2470, 2476, 3, 102, 51, 0, 2471, 2472, 3, 212, 106, 0, 2472, 2473, 5, 16, 0, 0, 2473, 2474, 3, 102, 51, 0, 2474, 2476, 1, 0, 0, 0, 2475, 2470, 1, 0, 0, 0, 2475, 2471, 1, 0, 0, 0, 2476, 167, 1, 0, 0, 0, 2477, 2478, 3, 212, 106, 0, 2478, 2479, 5, 4, 0, 0, 2479, 2480, 3, 212, 106, 0, 2480, 2483, 1, 0, 0, 0, 2481, 2483, 3, 212, 106, 0, 2482, 2477, 1, 0, 0, 0, 2482, 2481, 1, 0, 0, 0, 2483, 169, 1, 0, 0, 0, 2484, 2489, 3, 168, 84, 0, 2485, 2486, 5, 3, 0, 0, 2486, 2488, 3, 168, 84, 0, 2487, 2485, 1, 0, 0, 0, 2488, 2491, 1, 0, 0, 0, 2489, 2487, 1, 0, 0, 0, 2489, 2490, 1, 0, 0, 0, 2490, 171, 1, 0, 0, 0, 2491, 2489, 1, 0, 0, 0, 2492, 2493, 7, 25, 0, 0, 2493, 173, 1, 0, 0, 0, 2494, 2497, 3, 176, 88, 0, 2495, 2497, 3, 180, 90, 0, 2496, 2494, 1, 0, 0, 0, 2496, 2495, 1, 0, 0, 0, 2497, 175, 1, 0, 0, 0, 2498, 2499, 3, 184, 92, 0, 2499, 177, 1, 0, 0, 0, 2500, 2501, 3, 184, 92, 0, 2501, 179, 1, 0, 0, 0, 2502, 2503, 3, 186, 93, 0, 2503, 181, 1, 0, 0, 0, 2504, 2505, 3, 186, 93, 0, 2505, 183, 1, 0, 0, 0, 2506, 2518, 3, 212, 106, 0, 2507, 2508, 3, 212, 106, 0, 2508, 2509, 5, 4, 0, 0, 2509, 2510, 3, 212, 106, 0, 2510, 2518, 1, 0, 0, 0, 2511, 2512, 3, 212, 106, 0, 2512, 2513, 5, 4, 0, 0, 2513, 2514, 3, 212, 106, 0, 2514, 2515, 5, 4, 0, 0, 2515, 2516, 3, 212, 106, 0, 2516, 2518, 1, 0, 0, 0, 2517, 2506, 1, 0, 0, 0, 2517, 2507, 1, 0, 0, 0, 2517, 2511, 1, 0, 0, 0, 2518, 185, 1, 0, 0, 0, 2519, 2531, 3, 212, 106, 0, 2520, 2521, 3, 212, 106, 0, 2521, 2522, 5, 4, 0, 0, 2522, 2523, 3, 212, 106, 0, 2523, 2531, 1, 0, 0, 0, 2524, 2525, 3, 212, 106, 0, 2525, 2526, 5, 4, 0, 0, 2526, 2527, 3, 212, 106, 0, 2527, 2528, 5, 4, 0, 0, 2528, 2529, 3, 212, 106, 0, 2529, 2531, 1, 0, 0, 0, 2530, 2519, 1, 0, 0, 0, 2530, 2520, 1, 0, 0, 0, 2530, 2524, 1, 0, 0, 0, 2531, 187, 1, 0, 0, 0, 2532, 2533, 3, 192, 96, 0, 2533, 189, 1, 0, 0, 0, 2534, 2535, 3, 192, 96, 0, 2535, 191, 1, 0, 0, 0, 2536, 2542, 3, 212, 106, 0, 2537, 2538, 3, 212, 106, 0, 2538, 2539, 5, 4, 0, 0, 2539, 2540, 3, 212, 106, 0, 2540, 2542, 1, 0, 0, 0, 2541, 2536, 1, 0, 0, 0, 2541, 2537, 1, 0, 0, 0, 2542, 193, 1, 0, 0, 0, 2543, 2544, 3, 212, 106, 0, 2544, 195, 1, 0, 0, 0, 2545, 2546, 3, 212, 106, 0, 2546, 197, 1, 0, 0, 0, 2547, 2548, 3, 204, 102, 0, 2548, 199, 1, 0, 0, 0, 2549, 2552, 3, 204, 102, 0, 2550, 2552, 4, 100, 14, 0, 2551, 2549, 1, 0, 0, 0, 2551, 2550, 1, 0, 0, 0, 2552, 201, 1, 0, 0, 0, 2553, 2554, 3, 212, 106, 0, 2554, 203, 1, 0, 0, 0, 2555, 2560, 3, 212, 106, 0, 2556, 2557, 5, 4, 0, 0, 2557, 2559, 3, 212, 106, 0, 2558, 2556, 1, 0, 0, 0, 2559, 2562, 1, 0, 0, 0, 2560, 2558, 1, 0, 0, 0, 2560, 2561, 1, 0, 0, 0, 2561, 205, 1, 0, 0, 0, 2562, 2560, 1, 0, 0, 0, 2563, 2567, 3, 208, 104, 0, 2564, 2567, 5, 55, 0, 0, 2565, 2567, 5, 51, 0, 0, 2566, 2563, 1, 0, 0, 0, 2566, 2564, 1, 0, 0, 0, 2566, 2565, 1, 0, 0, 0, 2567, 207, 1, 0, 0, 0, 2568, 2574, 3, 212, 106, 0, 2569, 2570, 5, 234, 0, 0, 2570, 2574, 3, 212, 106, 0, 2571, 2572, 5, 188, 0, 0, 2572, 2574, 3, 212, 106, 0, 2573, 2568, 1, 0, 0, 0, 2573, 2569, 1, 0, 0, 0, 2573, 2571, 1, 0, 0, 0, 2574, 209, 1, 0, 0, 0, 2575, 2580, 3, 212, 106, 0, 2576, 2577, 5, 3, 0, 0, 2577, 2579, 3, 212, 106, 0, 2578, 2576, 1, 0, 0, 0, 2579, 2582, 1, 0, 0, 0, 2580, 2578, 1, 0, 0, 0, 2580, 2581, 1, 0, 0, 0, 2581, 211, 1, 0, 0, 0, 2582, 2580, 1, 0, 0, 0, 2583, 2589, 5, 268, 0, 0, 2584, 2589, 5, 270, 0, 0, 2585, 2589, 3, 216, 108, 0, 2586, 2589, 5, 271, 0, 0, 2587, 2589, 5, 269, 0, 0, 2588, 2583, 1, 0, 0, 0, 2588, 2584, 1, 0, 0, 0, 2588, 2585, 1, 0, 0, 0, 2588, 2586, 1, 0, 0, 0, 2588, 2587, 1, 0, 0, 0, 2589, 213, 1, 0, 0, 0, 2590, 2592, 5, 256, 0, 0, 2591, 2590, 1, 0, 0, 0, 2591, 2592, 1, 0, 0, 0, 2592, 2593, 1, 0, 0, 0, 2593, 2603, 5, 266, 0, 0, 2594, 2596, 5, 256, 0, 0, 2595, 2594, 1, 0, 0, 0, 2595, 2596, 1, 0, 0, 0, 2596, 2597, 1, 0, 0, 0, 2597, 2603, 5, 267, 0, 0, 2598, 2600, 5, 256, 0, 0, 2599, 2598, 1, 0, 0, 0, 2599, 2600, 1, 0, 0, 0, 2600, 2601, 1, 0, 0, 0, 2601, 2603, 5, 265, 0, 0, 2602, 2591, 1, 0, 0, 0, 2602, 2595, 1, 0, 0, 0, 2602, 2599, 1, 0, 0, 0, 2603, 215, 1, 0, 0, 0, 2604, 2605, 7, 26, 0, 0, 2605, 217, 1, 0, 0, 0, 340, 221, 232, 236, 240, 244, 248, 252, 262, 267, 271, 277, 281, 302, 306, 310, 314, 322, 326, 329, 336, 345, 351, 355, 361, 368, 377, 386, 400, 409, 415, 422, 432, 439, 447, 455, 484, 487, 490, 494, 500, 505, 512, 517, 521, 529, 535, 539, 553, 561, 580, 605, 608, 618, 622, 635, 641, 646, 650, 656, 665, 671, 675, 682, 686, 694, 699, 703, 707, 710, 717, 725, 730, 734, 738, 741, 750, 757, 762, 766, 770, 773, 781, 784, 788, 791, 799, 804, 828, 834, 836, 842, 848, 850, 858, 860, 866, 872, 874, 889, 894, 901, 913, 915, 923, 925, 943, 946, 950, 954, 972, 975, 991, 1001, 1006, 1012, 1015, 1024, 1036, 1039, 1045, 1052, 1057, 1063, 1067, 1071, 1077, 1088, 1097, 1107, 1110, 1115, 1117, 1124, 1130, 1132, 1136, 1146, 1152, 1155, 1157, 1169, 1176, 1180, 1183, 1187, 1191, 1198, 1207, 1210, 1214, 1219, 1223, 1231, 1234, 1237, 1244, 1255, 1258, 1268, 1271, 1282, 1287, 1295, 1298, 1302, 1306, 1315, 1324, 1327, 1336, 1339, 1342, 1346, 1357, 1360, 1363, 1370, 1373, 1392, 1396, 1400, 1404, 1408, 1412, 1414, 1425, 1430, 1439, 1453, 1456, 1465, 1468, 1476, 1479, 1482, 1487, 1490, 1502, 1505, 1513, 1518, 1522, 1524, 1526, 1541, 1543, 1554, 1575, 1585, 1596, 1600, 1602, 1610, 1621, 1632, 1649, 1655, 1666, 1673, 1677, 1685, 1687, 1700, 1708, 1717, 1723, 1731, 1737, 1741, 1746, 1751, 1757, 1771, 1773, 1803, 1814, 1824, 1827, 1830, 1835, 1842, 1845, 1854, 1857, 1861, 1864, 1867, 1882, 1885, 1904, 1908, 1916, 1920, 1945, 1948, 1957, 1963, 1969, 1975, 1988, 1997, 2019, 2022, 2025, 2035, 2037, 2046, 2052, 2054, 2062, 2072, 2078, 2092, 2101, 2108, 2113, 2120, 2130, 2135, 2142, 2168, 2173, 2175, 2182, 2186, 2193, 2197, 2214, 2229, 2236, 2245, 2255, 2260, 2269, 2274, 2282, 2290, 2293, 2299, 2302, 2309, 2317, 2320, 2328, 2331, 2357, 2368, 2373, 2380, 2382, 2395, 2410, 2414, 2418, 2422, 2428, 2432, 2436, 2440, 2442, 2452, 2459, 2468, 2475, 2482, 2489, 2496, 2517, 2530, 2541, 2551, 2560, 2566, 2573, 2580, 2588, 2591, 2595, 2599, 2602] \ No newline at end of file +[4, 1, 340, 3690, 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, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 1, 0, 5, 0, 304, 8, 0, 10, 0, 12, 0, 307, 9, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 3, 2, 315, 8, 2, 1, 3, 1, 3, 3, 3, 319, 8, 3, 1, 4, 1, 4, 3, 4, 323, 8, 4, 1, 5, 1, 5, 3, 5, 327, 8, 5, 1, 6, 1, 6, 3, 6, 331, 8, 6, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 344, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 351, 8, 8, 1, 8, 1, 8, 3, 8, 355, 8, 8, 1, 8, 1, 8, 3, 8, 359, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 365, 8, 8, 1, 8, 1, 8, 3, 8, 369, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 376, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 381, 8, 8, 1, 8, 1, 8, 3, 8, 385, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 391, 8, 8, 1, 8, 1, 8, 3, 8, 395, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 414, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 420, 8, 8, 1, 8, 1, 8, 3, 8, 424, 8, 8, 1, 8, 1, 8, 3, 8, 428, 8, 8, 1, 8, 1, 8, 3, 8, 432, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 440, 8, 8, 1, 8, 1, 8, 3, 8, 444, 8, 8, 1, 8, 3, 8, 447, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 452, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 458, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 465, 8, 8, 10, 8, 12, 8, 468, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 473, 8, 8, 1, 8, 1, 8, 3, 8, 477, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 483, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 490, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 499, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 511, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 520, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 529, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 535, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 546, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 554, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 562, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 569, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 579, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 586, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 594, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 609, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 642, 8, 8, 10, 8, 12, 8, 645, 9, 8, 3, 8, 647, 8, 8, 1, 8, 3, 8, 650, 8, 8, 1, 8, 1, 8, 3, 8, 654, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 660, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 665, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 672, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 678, 8, 8, 1, 8, 1, 8, 3, 8, 682, 8, 8, 1, 8, 1, 8, 3, 8, 686, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 694, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 700, 8, 8, 1, 8, 1, 8, 3, 8, 704, 8, 8, 1, 8, 1, 8, 3, 8, 708, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 722, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 730, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 749, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 772, 8, 8, 10, 8, 12, 8, 775, 9, 8, 3, 8, 777, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 784, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 791, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 800, 8, 8, 1, 8, 1, 8, 3, 8, 804, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 811, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 817, 8, 8, 10, 8, 12, 8, 820, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 826, 8, 8, 10, 8, 12, 8, 829, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 834, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 839, 8, 8, 1, 8, 1, 8, 3, 8, 843, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 849, 8, 8, 10, 8, 12, 8, 852, 9, 8, 1, 8, 1, 8, 3, 8, 856, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 865, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 871, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 876, 8, 8, 10, 8, 12, 8, 879, 9, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 885, 8, 8, 10, 8, 12, 8, 888, 9, 8, 1, 8, 1, 8, 1, 8, 3, 8, 893, 8, 8, 1, 8, 1, 8, 3, 8, 897, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 903, 8, 8, 1, 8, 1, 8, 1, 8, 5, 8, 908, 8, 8, 10, 8, 12, 8, 911, 9, 8, 1, 8, 1, 8, 3, 8, 915, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 926, 8, 8, 10, 8, 12, 8, 929, 9, 8, 1, 8, 1, 8, 3, 8, 933, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 945, 8, 8, 1, 8, 1, 8, 3, 8, 949, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 955, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 962, 8, 8, 10, 8, 12, 8, 965, 9, 8, 1, 8, 1, 8, 3, 8, 969, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 975, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1003, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1009, 8, 8, 3, 8, 1011, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1017, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1023, 8, 8, 3, 8, 1025, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1033, 8, 8, 3, 8, 1035, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1045, 8, 8, 3, 8, 1047, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1062, 8, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1067, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1074, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1084, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1090, 8, 8, 3, 8, 1092, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1100, 8, 8, 3, 8, 1102, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1125, 8, 8, 10, 8, 12, 8, 1128, 9, 8, 3, 8, 1130, 8, 8, 1, 8, 1, 8, 3, 8, 1134, 8, 8, 1, 8, 1, 8, 3, 8, 1138, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1154, 8, 8, 10, 8, 12, 8, 1157, 9, 8, 3, 8, 1159, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1168, 8, 8, 10, 8, 12, 8, 1171, 9, 8, 3, 8, 1173, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1189, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 1197, 8, 8, 10, 8, 12, 8, 1200, 9, 8, 1, 8, 1, 8, 3, 8, 1204, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1210, 8, 8, 1, 8, 3, 8, 1213, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 4, 8, 1220, 8, 8, 11, 8, 12, 8, 1221, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 1234, 8, 8, 1, 9, 3, 9, 1237, 8, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 1245, 8, 10, 10, 10, 12, 10, 1248, 9, 10, 1, 11, 3, 11, 1251, 8, 11, 1, 11, 1, 11, 1, 12, 1, 12, 3, 12, 1257, 8, 12, 1, 12, 1, 12, 1, 12, 5, 12, 1262, 8, 12, 10, 12, 12, 12, 1265, 9, 12, 1, 13, 1, 13, 3, 13, 1269, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 3, 14, 1275, 8, 14, 1, 14, 1, 14, 3, 14, 1279, 8, 14, 1, 14, 1, 14, 3, 14, 1283, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 3, 15, 1289, 8, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 5, 17, 1298, 8, 17, 10, 17, 12, 17, 1301, 9, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 3, 19, 1309, 8, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 5, 20, 1317, 8, 20, 10, 20, 12, 20, 1320, 9, 20, 3, 20, 1322, 8, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1327, 8, 20, 3, 20, 1329, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1336, 8, 20, 1, 20, 1, 20, 1, 20, 1, 20, 3, 20, 1342, 8, 20, 3, 20, 1344, 8, 20, 1, 21, 1, 21, 3, 21, 1348, 8, 21, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1358, 8, 23, 1, 23, 1, 23, 1, 23, 1, 23, 3, 23, 1364, 8, 23, 1, 23, 5, 23, 1367, 8, 23, 10, 23, 12, 23, 1370, 9, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 1, 24, 5, 24, 1379, 8, 24, 10, 24, 12, 24, 1382, 9, 24, 1, 24, 1, 24, 1, 24, 1, 24, 3, 24, 1388, 8, 24, 1, 25, 1, 25, 3, 25, 1392, 8, 25, 1, 25, 3, 25, 1395, 8, 25, 1, 25, 1, 25, 3, 25, 1399, 8, 25, 1, 26, 1, 26, 3, 26, 1403, 8, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1408, 8, 26, 10, 26, 12, 26, 1411, 9, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1417, 8, 26, 10, 26, 12, 26, 1420, 9, 26, 3, 26, 1422, 8, 26, 1, 26, 1, 26, 3, 26, 1426, 8, 26, 1, 26, 1, 26, 1, 26, 3, 26, 1431, 8, 26, 1, 26, 1, 26, 3, 26, 1435, 8, 26, 1, 26, 1, 26, 1, 26, 1, 26, 5, 26, 1441, 8, 26, 10, 26, 12, 26, 1444, 9, 26, 3, 26, 1446, 8, 26, 1, 27, 3, 27, 1449, 8, 27, 1, 27, 1, 27, 1, 27, 5, 27, 1454, 8, 27, 10, 27, 12, 27, 1457, 9, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 1465, 8, 28, 10, 28, 12, 28, 1468, 9, 28, 3, 28, 1470, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 1478, 8, 28, 10, 28, 12, 28, 1481, 9, 28, 3, 28, 1483, 8, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 5, 28, 1492, 8, 28, 10, 28, 12, 28, 1495, 9, 28, 1, 28, 1, 28, 3, 28, 1499, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 1505, 8, 29, 10, 29, 12, 29, 1508, 9, 29, 3, 29, 1510, 8, 29, 1, 29, 1, 29, 3, 29, 1514, 8, 29, 1, 30, 1, 30, 3, 30, 1518, 8, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 3, 32, 1527, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1534, 8, 32, 10, 32, 12, 32, 1537, 9, 32, 3, 32, 1539, 8, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 5, 32, 1546, 8, 32, 10, 32, 12, 32, 1549, 9, 32, 3, 32, 1551, 8, 32, 1, 32, 3, 32, 1554, 8, 32, 1, 33, 1, 33, 3, 33, 1558, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 35, 1, 35, 3, 35, 1569, 8, 35, 1, 35, 3, 35, 1572, 8, 35, 1, 35, 3, 35, 1575, 8, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 1582, 8, 35, 1, 35, 3, 35, 1585, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 3, 36, 1604, 8, 36, 5, 36, 1606, 8, 36, 10, 36, 12, 36, 1609, 9, 36, 1, 37, 3, 37, 1612, 8, 37, 1, 37, 1, 37, 3, 37, 1616, 8, 37, 1, 37, 1, 37, 3, 37, 1620, 8, 37, 1, 37, 1, 37, 3, 37, 1624, 8, 37, 3, 37, 1626, 8, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 5, 38, 1635, 8, 38, 10, 38, 12, 38, 1638, 9, 38, 1, 38, 1, 38, 3, 38, 1642, 8, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 3, 39, 1651, 8, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 3, 42, 1660, 8, 42, 1, 42, 3, 42, 1663, 8, 42, 1, 43, 1, 43, 1, 43, 1, 43, 3, 43, 1669, 8, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1679, 8, 44, 10, 44, 12, 44, 1682, 9, 44, 3, 44, 1684, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1691, 8, 44, 10, 44, 12, 44, 1694, 9, 44, 3, 44, 1696, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1702, 8, 44, 10, 44, 12, 44, 1705, 9, 44, 3, 44, 1707, 8, 44, 1, 44, 3, 44, 1710, 8, 44, 1, 44, 1, 44, 1, 44, 3, 44, 1715, 8, 44, 1, 44, 3, 44, 1718, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1728, 8, 44, 10, 44, 12, 44, 1731, 9, 44, 3, 44, 1733, 8, 44, 1, 44, 1, 44, 1, 44, 1, 44, 5, 44, 1739, 8, 44, 10, 44, 12, 44, 1742, 9, 44, 1, 44, 1, 44, 3, 44, 1746, 8, 44, 1, 44, 1, 44, 3, 44, 1750, 8, 44, 3, 44, 1752, 8, 44, 3, 44, 1754, 8, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 1769, 8, 46, 3, 46, 1771, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 1782, 8, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 3, 48, 1803, 8, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 5, 49, 1811, 8, 49, 10, 49, 12, 49, 1814, 9, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 3, 51, 1824, 8, 51, 1, 51, 1, 51, 3, 51, 1828, 8, 51, 3, 51, 1830, 8, 51, 1, 52, 1, 52, 1, 52, 1, 52, 5, 52, 1836, 8, 52, 10, 52, 12, 52, 1839, 9, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 5, 53, 1847, 8, 53, 10, 53, 12, 53, 1850, 9, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 5, 54, 1858, 8, 54, 10, 54, 12, 54, 1861, 9, 54, 1, 54, 1, 54, 1, 55, 1, 55, 3, 55, 1867, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1878, 8, 55, 10, 55, 12, 55, 1881, 9, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1886, 8, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 5, 55, 1910, 8, 55, 10, 55, 12, 55, 1913, 9, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1927, 8, 55, 1, 55, 1, 55, 1, 55, 3, 55, 1932, 8, 55, 1, 55, 1, 55, 3, 55, 1936, 8, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1946, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1952, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1958, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1966, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1971, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1978, 8, 56, 3, 56, 1980, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1986, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 1992, 8, 56, 1, 56, 1, 56, 3, 56, 1996, 8, 56, 1, 56, 1, 56, 1, 56, 3, 56, 2001, 8, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 5, 56, 2008, 8, 56, 10, 56, 12, 56, 2011, 9, 56, 1, 56, 1, 56, 3, 56, 2015, 8, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 2027, 8, 57, 10, 57, 12, 57, 2030, 9, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 5, 57, 2037, 8, 57, 10, 57, 12, 57, 2040, 9, 57, 3, 57, 2042, 8, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 3, 59, 2051, 8, 59, 1, 60, 1, 60, 1, 60, 3, 60, 2056, 8, 60, 1, 60, 1, 60, 1, 60, 3, 60, 2061, 8, 60, 3, 60, 2063, 8, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 2070, 8, 61, 10, 61, 12, 61, 2073, 9, 61, 3, 61, 2075, 8, 61, 1, 61, 1, 61, 1, 61, 1, 61, 5, 61, 2081, 8, 61, 10, 61, 12, 61, 2084, 9, 61, 3, 61, 2086, 8, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 3, 62, 2093, 8, 62, 1, 62, 1, 62, 1, 62, 3, 62, 2098, 8, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 5, 63, 2107, 8, 63, 10, 63, 12, 63, 2110, 9, 63, 3, 63, 2112, 8, 63, 1, 63, 1, 63, 3, 63, 2116, 8, 63, 3, 63, 2118, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2126, 8, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 5, 63, 2134, 8, 63, 10, 63, 12, 63, 2137, 9, 63, 1, 63, 1, 63, 1, 63, 3, 63, 2142, 8, 63, 3, 63, 2144, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2151, 8, 64, 1, 64, 1, 64, 3, 64, 2155, 8, 64, 3, 64, 2157, 8, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 3, 64, 2164, 8, 64, 1, 64, 1, 64, 3, 64, 2168, 8, 64, 3, 64, 2170, 8, 64, 3, 64, 2172, 8, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 5, 65, 2179, 8, 65, 10, 65, 12, 65, 2182, 9, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 2192, 8, 65, 1, 66, 1, 66, 3, 66, 2196, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 5, 67, 2204, 8, 67, 10, 67, 12, 67, 2207, 9, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 3, 69, 2216, 8, 69, 1, 69, 1, 69, 3, 69, 2220, 8, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 5, 69, 2228, 8, 69, 10, 69, 12, 69, 2231, 9, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2243, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2251, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 2258, 8, 70, 10, 70, 12, 70, 2261, 9, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2266, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2274, 8, 70, 1, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2280, 8, 70, 1, 70, 1, 70, 3, 70, 2284, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2289, 8, 70, 1, 70, 1, 70, 1, 70, 3, 70, 2294, 8, 70, 1, 71, 1, 71, 1, 71, 1, 71, 3, 71, 2300, 8, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 5, 71, 2314, 8, 71, 10, 71, 12, 71, 2317, 9, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 4, 72, 2344, 8, 72, 11, 72, 12, 72, 2345, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2355, 8, 72, 10, 72, 12, 72, 2358, 9, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2365, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2370, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2375, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2386, 8, 72, 10, 72, 12, 72, 2389, 9, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2394, 8, 72, 1, 72, 3, 72, 2397, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2404, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2409, 8, 72, 1, 72, 3, 72, 2412, 8, 72, 1, 72, 3, 72, 2415, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2420, 8, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2425, 8, 72, 10, 72, 12, 72, 2428, 9, 72, 3, 72, 2430, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2437, 8, 72, 10, 72, 12, 72, 2440, 9, 72, 3, 72, 2442, 8, 72, 1, 72, 1, 72, 3, 72, 2446, 8, 72, 1, 72, 3, 72, 2449, 8, 72, 1, 72, 3, 72, 2452, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2465, 8, 72, 10, 72, 12, 72, 2468, 9, 72, 3, 72, 2470, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 4, 72, 2487, 8, 72, 11, 72, 12, 72, 2488, 1, 72, 1, 72, 3, 72, 2493, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 4, 72, 2499, 8, 72, 11, 72, 12, 72, 2500, 1, 72, 1, 72, 3, 72, 2505, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2528, 8, 72, 10, 72, 12, 72, 2531, 9, 72, 3, 72, 2533, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2542, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2548, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2554, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2560, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2569, 8, 72, 1, 72, 3, 72, 2572, 8, 72, 1, 72, 3, 72, 2575, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2594, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2603, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2623, 8, 72, 10, 72, 12, 72, 2626, 9, 72, 3, 72, 2628, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2638, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2647, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2653, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2659, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2670, 8, 72, 3, 72, 2672, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2677, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2684, 8, 72, 3, 72, 2686, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2692, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2698, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2707, 8, 72, 10, 72, 12, 72, 2710, 9, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2718, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2723, 8, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2728, 8, 72, 3, 72, 2730, 8, 72, 3, 72, 2732, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2738, 8, 72, 3, 72, 2740, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2748, 8, 72, 10, 72, 12, 72, 2751, 9, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2759, 8, 72, 3, 72, 2761, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 3, 72, 2767, 8, 72, 3, 72, 2769, 8, 72, 1, 72, 3, 72, 2772, 8, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 5, 72, 2782, 8, 72, 10, 72, 12, 72, 2785, 9, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 3, 73, 2792, 8, 73, 1, 73, 1, 73, 1, 73, 1, 73, 5, 73, 2798, 8, 73, 10, 73, 12, 73, 2801, 9, 73, 3, 73, 2803, 8, 73, 1, 74, 1, 74, 1, 74, 3, 74, 2808, 8, 74, 1, 75, 1, 75, 1, 75, 3, 75, 2813, 8, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 3, 78, 2825, 8, 78, 1, 79, 1, 79, 3, 79, 2829, 8, 79, 1, 79, 1, 79, 3, 79, 2833, 8, 79, 1, 79, 3, 79, 2836, 8, 79, 3, 79, 2838, 8, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 3, 80, 2846, 8, 80, 1, 81, 3, 81, 2849, 8, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 3, 81, 2859, 8, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 3, 83, 2867, 8, 83, 1, 84, 1, 84, 1, 84, 1, 84, 3, 84, 2873, 8, 84, 3, 84, 2875, 8, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 3, 85, 2883, 8, 85, 1, 86, 1, 86, 1, 87, 1, 87, 1, 88, 1, 88, 1, 89, 1, 89, 3, 89, 2893, 8, 89, 1, 89, 1, 89, 1, 89, 1, 89, 3, 89, 2899, 8, 89, 1, 90, 1, 90, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 5, 92, 2911, 8, 92, 10, 92, 12, 92, 2914, 9, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2922, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2929, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2934, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2941, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2951, 8, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2956, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 2963, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 5, 92, 2987, 8, 92, 10, 92, 12, 92, 2990, 9, 92, 1, 92, 1, 92, 3, 92, 2994, 8, 92, 3, 92, 2996, 8, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 3, 92, 3003, 8, 92, 5, 92, 3005, 8, 92, 10, 92, 12, 92, 3008, 9, 92, 1, 93, 1, 93, 1, 93, 1, 93, 3, 93, 3014, 8, 93, 1, 94, 1, 94, 3, 94, 3018, 8, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 3035, 8, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 3048, 8, 97, 10, 97, 12, 97, 3051, 9, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 3057, 8, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 3, 97, 3066, 8, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 3074, 8, 97, 10, 97, 12, 97, 3077, 9, 97, 1, 97, 1, 97, 3, 97, 3081, 8, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 5, 97, 3088, 8, 97, 10, 97, 12, 97, 3091, 9, 97, 1, 97, 1, 97, 3, 97, 3095, 8, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 3, 98, 3103, 8, 98, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 3109, 8, 99, 10, 99, 12, 99, 3112, 9, 99, 3, 99, 3114, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3120, 8, 99, 1, 99, 3, 99, 3123, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 3, 99, 3130, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 3136, 8, 99, 10, 99, 12, 99, 3139, 9, 99, 3, 99, 3141, 8, 99, 1, 99, 1, 99, 1, 99, 1, 99, 5, 99, 3147, 8, 99, 10, 99, 12, 99, 3150, 9, 99, 3, 99, 3152, 8, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 3, 100, 3178, 8, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 3, 101, 3189, 8, 101, 1, 102, 1, 102, 1, 102, 3, 102, 3194, 8, 102, 1, 102, 1, 102, 1, 102, 1, 102, 1, 102, 5, 102, 3201, 8, 102, 10, 102, 12, 102, 3204, 9, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 5, 103, 3214, 8, 103, 10, 103, 12, 103, 3217, 9, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 3, 103, 3231, 8, 103, 1, 104, 1, 104, 3, 104, 3235, 8, 104, 1, 104, 1, 104, 3, 104, 3239, 8, 104, 1, 104, 1, 104, 3, 104, 3243, 8, 104, 1, 104, 1, 104, 1, 104, 1, 104, 3, 104, 3249, 8, 104, 1, 104, 1, 104, 3, 104, 3253, 8, 104, 1, 104, 1, 104, 3, 104, 3257, 8, 104, 1, 104, 1, 104, 3, 104, 3261, 8, 104, 3, 104, 3263, 8, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 3, 106, 3273, 8, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 3, 107, 3280, 8, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 3, 108, 3289, 8, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 3, 109, 3296, 8, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 3, 110, 3303, 8, 110, 1, 111, 1, 111, 1, 111, 5, 111, 3308, 8, 111, 10, 111, 12, 111, 3311, 9, 111, 1, 112, 1, 112, 1, 112, 1, 112, 5, 112, 3317, 8, 112, 10, 112, 12, 112, 3320, 9, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 5, 113, 3329, 8, 113, 10, 113, 12, 113, 3332, 9, 113, 3, 113, 3334, 8, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 5, 114, 3343, 8, 114, 10, 114, 12, 114, 3346, 9, 114, 3, 114, 3348, 8, 114, 1, 114, 1, 114, 1, 115, 3, 115, 3353, 8, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 3, 117, 3363, 8, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 3, 117, 3379, 8, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 4, 118, 3391, 8, 118, 11, 118, 12, 118, 3392, 1, 118, 3, 118, 3396, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 4, 118, 3403, 8, 118, 11, 118, 12, 118, 3404, 1, 118, 3, 118, 3408, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 3418, 8, 118, 10, 118, 12, 118, 3421, 9, 118, 1, 118, 3, 118, 3424, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 5, 118, 3437, 8, 118, 10, 118, 12, 118, 3440, 9, 118, 1, 118, 3, 118, 3443, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3449, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3459, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3471, 8, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 3, 118, 3480, 8, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 5, 122, 3499, 8, 122, 10, 122, 12, 122, 3502, 9, 122, 1, 122, 1, 122, 1, 122, 3, 122, 3507, 8, 122, 1, 123, 1, 123, 1, 123, 4, 123, 3512, 8, 123, 11, 123, 12, 123, 3513, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 3, 124, 3522, 8, 124, 1, 125, 1, 125, 1, 125, 3, 125, 3527, 8, 125, 1, 126, 3, 126, 3530, 8, 126, 1, 126, 1, 126, 1, 127, 1, 127, 3, 127, 3536, 8, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 3, 128, 3549, 8, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 3, 129, 3562, 8, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 3, 130, 3575, 8, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 3, 131, 3588, 8, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 3, 132, 3595, 8, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 3, 133, 3602, 8, 133, 1, 134, 1, 134, 1, 135, 1, 135, 1, 136, 1, 136, 1, 137, 1, 137, 1, 138, 1, 138, 3, 138, 3614, 8, 138, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 5, 140, 3621, 8, 140, 10, 140, 12, 140, 3624, 9, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 3, 143, 3637, 8, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 3, 144, 3644, 8, 144, 1, 145, 1, 145, 1, 145, 5, 145, 3649, 8, 145, 10, 145, 12, 145, 3652, 9, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 3, 146, 3661, 8, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 3, 147, 3668, 8, 147, 1, 148, 3, 148, 3671, 8, 148, 1, 148, 1, 148, 3, 148, 3675, 8, 148, 1, 148, 1, 148, 3, 148, 3679, 8, 148, 1, 148, 3, 148, 3682, 8, 148, 1, 149, 1, 149, 3, 149, 3686, 8, 149, 1, 150, 1, 150, 1, 150, 0, 7, 46, 72, 138, 142, 144, 184, 204, 151, 0, 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, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 0, 35, 2, 0, 39, 39, 229, 229, 2, 0, 72, 72, 131, 131, 2, 0, 105, 105, 122, 122, 2, 0, 92, 92, 123, 123, 1, 0, 239, 240, 2, 0, 101, 101, 174, 174, 2, 0, 324, 324, 329, 329, 2, 0, 91, 91, 281, 281, 2, 0, 29, 29, 75, 75, 2, 0, 101, 101, 148, 148, 2, 0, 22, 22, 79, 79, 2, 0, 33, 33, 259, 259, 3, 0, 35, 35, 150, 150, 270, 270, 2, 0, 124, 124, 247, 247, 2, 0, 85, 85, 89, 89, 2, 0, 144, 144, 189, 189, 2, 0, 125, 125, 197, 197, 2, 0, 54, 54, 281, 281, 1, 0, 318, 319, 1, 0, 320, 322, 1, 0, 291, 293, 4, 0, 89, 89, 97, 97, 273, 273, 283, 283, 2, 0, 49, 49, 280, 280, 2, 0, 100, 100, 241, 241, 1, 0, 312, 317, 3, 0, 22, 22, 26, 26, 254, 254, 2, 0, 97, 97, 273, 273, 5, 0, 67, 67, 118, 118, 170, 171, 245, 245, 310, 310, 1, 0, 175, 178, 2, 0, 102, 102, 212, 212, 3, 0, 113, 113, 137, 137, 263, 263, 4, 0, 80, 80, 132, 132, 160, 160, 294, 294, 2, 0, 192, 192, 309, 309, 2, 0, 268, 268, 298, 298, 54, 0, 18, 22, 24, 24, 26, 27, 29, 33, 35, 35, 37, 39, 42, 49, 51, 52, 56, 56, 65, 67, 69, 72, 74, 75, 77, 78, 80, 82, 85, 87, 89, 89, 92, 92, 95, 95, 98, 102, 104, 104, 107, 113, 116, 116, 118, 121, 123, 124, 126, 126, 129, 129, 131, 132, 134, 135, 137, 137, 144, 151, 153, 153, 155, 155, 157, 157, 160, 171, 173, 180, 184, 189, 191, 193, 196, 196, 198, 213, 215, 220, 222, 233, 235, 237, 239, 247, 249, 259, 261, 264, 266, 271, 274, 276, 278, 280, 282, 284, 286, 289, 291, 295, 297, 299, 302, 303, 305, 311, 4245, 0, 305, 1, 0, 0, 0, 2, 310, 1, 0, 0, 0, 4, 312, 1, 0, 0, 0, 6, 316, 1, 0, 0, 0, 8, 320, 1, 0, 0, 0, 10, 324, 1, 0, 0, 0, 12, 328, 1, 0, 0, 0, 14, 332, 1, 0, 0, 0, 16, 1233, 1, 0, 0, 0, 18, 1236, 1, 0, 0, 0, 20, 1240, 1, 0, 0, 0, 22, 1250, 1, 0, 0, 0, 24, 1254, 1, 0, 0, 0, 26, 1268, 1, 0, 0, 0, 28, 1270, 1, 0, 0, 0, 30, 1284, 1, 0, 0, 0, 32, 1290, 1, 0, 0, 0, 34, 1294, 1, 0, 0, 0, 36, 1302, 1, 0, 0, 0, 38, 1308, 1, 0, 0, 0, 40, 1310, 1, 0, 0, 0, 42, 1347, 1, 0, 0, 0, 44, 1349, 1, 0, 0, 0, 46, 1351, 1, 0, 0, 0, 48, 1387, 1, 0, 0, 0, 50, 1391, 1, 0, 0, 0, 52, 1400, 1, 0, 0, 0, 54, 1448, 1, 0, 0, 0, 56, 1498, 1, 0, 0, 0, 58, 1513, 1, 0, 0, 0, 60, 1517, 1, 0, 0, 0, 62, 1519, 1, 0, 0, 0, 64, 1526, 1, 0, 0, 0, 66, 1555, 1, 0, 0, 0, 68, 1564, 1, 0, 0, 0, 70, 1584, 1, 0, 0, 0, 72, 1586, 1, 0, 0, 0, 74, 1625, 1, 0, 0, 0, 76, 1641, 1, 0, 0, 0, 78, 1643, 1, 0, 0, 0, 80, 1652, 1, 0, 0, 0, 82, 1654, 1, 0, 0, 0, 84, 1662, 1, 0, 0, 0, 86, 1668, 1, 0, 0, 0, 88, 1670, 1, 0, 0, 0, 90, 1755, 1, 0, 0, 0, 92, 1770, 1, 0, 0, 0, 94, 1781, 1, 0, 0, 0, 96, 1802, 1, 0, 0, 0, 98, 1804, 1, 0, 0, 0, 100, 1817, 1, 0, 0, 0, 102, 1821, 1, 0, 0, 0, 104, 1831, 1, 0, 0, 0, 106, 1842, 1, 0, 0, 0, 108, 1853, 1, 0, 0, 0, 110, 1935, 1, 0, 0, 0, 112, 2014, 1, 0, 0, 0, 114, 2041, 1, 0, 0, 0, 116, 2043, 1, 0, 0, 0, 118, 2050, 1, 0, 0, 0, 120, 2062, 1, 0, 0, 0, 122, 2064, 1, 0, 0, 0, 124, 2092, 1, 0, 0, 0, 126, 2099, 1, 0, 0, 0, 128, 2171, 1, 0, 0, 0, 130, 2191, 1, 0, 0, 0, 132, 2193, 1, 0, 0, 0, 134, 2197, 1, 0, 0, 0, 136, 2210, 1, 0, 0, 0, 138, 2219, 1, 0, 0, 0, 140, 2293, 1, 0, 0, 0, 142, 2299, 1, 0, 0, 0, 144, 2771, 1, 0, 0, 0, 146, 2786, 1, 0, 0, 0, 148, 2804, 1, 0, 0, 0, 150, 2809, 1, 0, 0, 0, 152, 2814, 1, 0, 0, 0, 154, 2818, 1, 0, 0, 0, 156, 2824, 1, 0, 0, 0, 158, 2837, 1, 0, 0, 0, 160, 2845, 1, 0, 0, 0, 162, 2858, 1, 0, 0, 0, 164, 2860, 1, 0, 0, 0, 166, 2866, 1, 0, 0, 0, 168, 2874, 1, 0, 0, 0, 170, 2882, 1, 0, 0, 0, 172, 2884, 1, 0, 0, 0, 174, 2886, 1, 0, 0, 0, 176, 2888, 1, 0, 0, 0, 178, 2890, 1, 0, 0, 0, 180, 2900, 1, 0, 0, 0, 182, 2902, 1, 0, 0, 0, 184, 2995, 1, 0, 0, 0, 186, 3013, 1, 0, 0, 0, 188, 3017, 1, 0, 0, 0, 190, 3019, 1, 0, 0, 0, 192, 3024, 1, 0, 0, 0, 194, 3094, 1, 0, 0, 0, 196, 3096, 1, 0, 0, 0, 198, 3113, 1, 0, 0, 0, 200, 3177, 1, 0, 0, 0, 202, 3188, 1, 0, 0, 0, 204, 3190, 1, 0, 0, 0, 206, 3230, 1, 0, 0, 0, 208, 3262, 1, 0, 0, 0, 210, 3264, 1, 0, 0, 0, 212, 3272, 1, 0, 0, 0, 214, 3279, 1, 0, 0, 0, 216, 3288, 1, 0, 0, 0, 218, 3295, 1, 0, 0, 0, 220, 3302, 1, 0, 0, 0, 222, 3304, 1, 0, 0, 0, 224, 3312, 1, 0, 0, 0, 226, 3323, 1, 0, 0, 0, 228, 3337, 1, 0, 0, 0, 230, 3352, 1, 0, 0, 0, 232, 3356, 1, 0, 0, 0, 234, 3378, 1, 0, 0, 0, 236, 3479, 1, 0, 0, 0, 238, 3481, 1, 0, 0, 0, 240, 3486, 1, 0, 0, 0, 242, 3491, 1, 0, 0, 0, 244, 3494, 1, 0, 0, 0, 246, 3511, 1, 0, 0, 0, 248, 3521, 1, 0, 0, 0, 250, 3526, 1, 0, 0, 0, 252, 3529, 1, 0, 0, 0, 254, 3535, 1, 0, 0, 0, 256, 3548, 1, 0, 0, 0, 258, 3561, 1, 0, 0, 0, 260, 3574, 1, 0, 0, 0, 262, 3587, 1, 0, 0, 0, 264, 3594, 1, 0, 0, 0, 266, 3601, 1, 0, 0, 0, 268, 3603, 1, 0, 0, 0, 270, 3605, 1, 0, 0, 0, 272, 3607, 1, 0, 0, 0, 274, 3609, 1, 0, 0, 0, 276, 3613, 1, 0, 0, 0, 278, 3615, 1, 0, 0, 0, 280, 3617, 1, 0, 0, 0, 282, 3625, 1, 0, 0, 0, 284, 3631, 1, 0, 0, 0, 286, 3636, 1, 0, 0, 0, 288, 3643, 1, 0, 0, 0, 290, 3645, 1, 0, 0, 0, 292, 3660, 1, 0, 0, 0, 294, 3667, 1, 0, 0, 0, 296, 3681, 1, 0, 0, 0, 298, 3685, 1, 0, 0, 0, 300, 3687, 1, 0, 0, 0, 302, 304, 3, 2, 1, 0, 303, 302, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 308, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 309, 5, 0, 0, 1, 309, 1, 1, 0, 0, 0, 310, 311, 3, 4, 2, 0, 311, 3, 1, 0, 0, 0, 312, 314, 3, 16, 8, 0, 313, 315, 5, 325, 0, 0, 314, 313, 1, 0, 0, 0, 314, 315, 1, 0, 0, 0, 315, 5, 1, 0, 0, 0, 316, 318, 3, 136, 68, 0, 317, 319, 5, 325, 0, 0, 318, 317, 1, 0, 0, 0, 318, 319, 1, 0, 0, 0, 319, 7, 1, 0, 0, 0, 320, 322, 3, 222, 111, 0, 321, 323, 5, 325, 0, 0, 322, 321, 1, 0, 0, 0, 322, 323, 1, 0, 0, 0, 323, 9, 1, 0, 0, 0, 324, 326, 3, 184, 92, 0, 325, 327, 5, 325, 0, 0, 326, 325, 1, 0, 0, 0, 326, 327, 1, 0, 0, 0, 327, 11, 1, 0, 0, 0, 328, 330, 3, 204, 102, 0, 329, 331, 5, 325, 0, 0, 330, 329, 1, 0, 0, 0, 330, 331, 1, 0, 0, 0, 331, 13, 1, 0, 0, 0, 332, 333, 3, 224, 112, 0, 333, 334, 5, 0, 0, 1, 334, 15, 1, 0, 0, 0, 335, 1234, 3, 18, 9, 0, 336, 337, 5, 288, 0, 0, 337, 1234, 3, 264, 132, 0, 338, 339, 5, 53, 0, 0, 339, 343, 5, 42, 0, 0, 340, 341, 5, 119, 0, 0, 341, 342, 5, 182, 0, 0, 342, 344, 5, 94, 0, 0, 343, 340, 1, 0, 0, 0, 343, 344, 1, 0, 0, 0, 344, 345, 1, 0, 0, 0, 345, 346, 3, 270, 135, 0, 346, 347, 5, 290, 0, 0, 347, 350, 3, 294, 147, 0, 348, 349, 5, 46, 0, 0, 349, 351, 3, 168, 84, 0, 350, 348, 1, 0, 0, 0, 350, 351, 1, 0, 0, 0, 351, 354, 1, 0, 0, 0, 352, 353, 5, 31, 0, 0, 353, 355, 3, 288, 144, 0, 354, 352, 1, 0, 0, 0, 354, 355, 1, 0, 0, 0, 355, 358, 1, 0, 0, 0, 356, 357, 5, 304, 0, 0, 357, 359, 3, 32, 16, 0, 358, 356, 1, 0, 0, 0, 358, 359, 1, 0, 0, 0, 359, 1234, 1, 0, 0, 0, 360, 361, 5, 83, 0, 0, 361, 364, 5, 42, 0, 0, 362, 363, 5, 119, 0, 0, 363, 365, 5, 94, 0, 0, 364, 362, 1, 0, 0, 0, 364, 365, 1, 0, 0, 0, 365, 366, 1, 0, 0, 0, 366, 368, 3, 268, 134, 0, 367, 369, 7, 0, 0, 0, 368, 367, 1, 0, 0, 0, 368, 369, 1, 0, 0, 0, 369, 1234, 1, 0, 0, 0, 370, 371, 5, 53, 0, 0, 371, 375, 5, 243, 0, 0, 372, 373, 5, 119, 0, 0, 373, 374, 5, 182, 0, 0, 374, 376, 5, 94, 0, 0, 375, 372, 1, 0, 0, 0, 375, 376, 1, 0, 0, 0, 376, 377, 1, 0, 0, 0, 377, 380, 3, 266, 133, 0, 378, 379, 5, 31, 0, 0, 379, 381, 3, 288, 144, 0, 380, 378, 1, 0, 0, 0, 380, 381, 1, 0, 0, 0, 381, 384, 1, 0, 0, 0, 382, 383, 5, 304, 0, 0, 383, 385, 3, 32, 16, 0, 384, 382, 1, 0, 0, 0, 384, 385, 1, 0, 0, 0, 385, 1234, 1, 0, 0, 0, 386, 387, 5, 83, 0, 0, 387, 390, 5, 243, 0, 0, 388, 389, 5, 119, 0, 0, 389, 391, 5, 94, 0, 0, 390, 388, 1, 0, 0, 0, 390, 391, 1, 0, 0, 0, 391, 392, 1, 0, 0, 0, 392, 394, 3, 264, 132, 0, 393, 395, 7, 0, 0, 0, 394, 393, 1, 0, 0, 0, 394, 395, 1, 0, 0, 0, 395, 1234, 1, 0, 0, 0, 396, 397, 5, 23, 0, 0, 397, 398, 5, 243, 0, 0, 398, 399, 3, 264, 132, 0, 399, 400, 5, 223, 0, 0, 400, 401, 5, 269, 0, 0, 401, 402, 3, 266, 133, 0, 402, 1234, 1, 0, 0, 0, 403, 404, 5, 23, 0, 0, 404, 405, 5, 243, 0, 0, 405, 406, 3, 264, 132, 0, 406, 407, 5, 251, 0, 0, 407, 408, 5, 31, 0, 0, 408, 409, 3, 288, 144, 0, 409, 1234, 1, 0, 0, 0, 410, 413, 5, 53, 0, 0, 411, 412, 5, 194, 0, 0, 412, 414, 5, 226, 0, 0, 413, 411, 1, 0, 0, 0, 413, 414, 1, 0, 0, 0, 414, 415, 1, 0, 0, 0, 415, 419, 5, 260, 0, 0, 416, 417, 5, 119, 0, 0, 417, 418, 5, 182, 0, 0, 418, 420, 5, 94, 0, 0, 419, 416, 1, 0, 0, 0, 419, 420, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 423, 3, 258, 129, 0, 422, 424, 3, 104, 52, 0, 423, 422, 1, 0, 0, 0, 423, 424, 1, 0, 0, 0, 424, 427, 1, 0, 0, 0, 425, 426, 5, 46, 0, 0, 426, 428, 3, 168, 84, 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 430, 5, 304, 0, 0, 430, 432, 3, 32, 16, 0, 431, 429, 1, 0, 0, 0, 431, 432, 1, 0, 0, 0, 432, 433, 1, 0, 0, 0, 433, 439, 5, 28, 0, 0, 434, 440, 3, 18, 9, 0, 435, 436, 5, 1, 0, 0, 436, 437, 3, 18, 9, 0, 437, 438, 5, 2, 0, 0, 438, 440, 1, 0, 0, 0, 439, 434, 1, 0, 0, 0, 439, 435, 1, 0, 0, 0, 440, 446, 1, 0, 0, 0, 441, 443, 5, 304, 0, 0, 442, 444, 5, 179, 0, 0, 443, 442, 1, 0, 0, 0, 443, 444, 1, 0, 0, 0, 444, 445, 1, 0, 0, 0, 445, 447, 5, 65, 0, 0, 446, 441, 1, 0, 0, 0, 446, 447, 1, 0, 0, 0, 447, 1234, 1, 0, 0, 0, 448, 451, 5, 53, 0, 0, 449, 450, 5, 194, 0, 0, 450, 452, 5, 226, 0, 0, 451, 449, 1, 0, 0, 0, 451, 452, 1, 0, 0, 0, 452, 453, 1, 0, 0, 0, 453, 457, 5, 260, 0, 0, 454, 455, 5, 119, 0, 0, 455, 456, 5, 182, 0, 0, 456, 458, 5, 94, 0, 0, 457, 454, 1, 0, 0, 0, 457, 458, 1, 0, 0, 0, 458, 459, 1, 0, 0, 0, 459, 460, 3, 258, 129, 0, 460, 461, 5, 1, 0, 0, 461, 466, 3, 26, 13, 0, 462, 463, 5, 3, 0, 0, 463, 465, 3, 26, 13, 0, 464, 462, 1, 0, 0, 0, 465, 468, 1, 0, 0, 0, 466, 464, 1, 0, 0, 0, 466, 467, 1, 0, 0, 0, 467, 469, 1, 0, 0, 0, 468, 466, 1, 0, 0, 0, 469, 472, 5, 2, 0, 0, 470, 471, 5, 46, 0, 0, 471, 473, 3, 168, 84, 0, 472, 470, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 476, 1, 0, 0, 0, 474, 475, 5, 304, 0, 0, 475, 477, 3, 32, 16, 0, 476, 474, 1, 0, 0, 0, 476, 477, 1, 0, 0, 0, 477, 1234, 1, 0, 0, 0, 478, 479, 5, 83, 0, 0, 479, 482, 5, 260, 0, 0, 480, 481, 5, 119, 0, 0, 481, 483, 5, 94, 0, 0, 482, 480, 1, 0, 0, 0, 482, 483, 1, 0, 0, 0, 483, 484, 1, 0, 0, 0, 484, 1234, 3, 256, 128, 0, 485, 486, 5, 127, 0, 0, 486, 487, 5, 130, 0, 0, 487, 489, 3, 256, 128, 0, 488, 490, 3, 106, 53, 0, 489, 488, 1, 0, 0, 0, 489, 490, 1, 0, 0, 0, 490, 491, 1, 0, 0, 0, 491, 492, 3, 18, 9, 0, 492, 1234, 1, 0, 0, 0, 493, 494, 5, 73, 0, 0, 494, 495, 5, 105, 0, 0, 495, 498, 3, 256, 128, 0, 496, 497, 5, 301, 0, 0, 497, 499, 3, 138, 69, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 1234, 1, 0, 0, 0, 500, 501, 5, 274, 0, 0, 501, 502, 5, 260, 0, 0, 502, 1234, 3, 256, 128, 0, 503, 504, 5, 46, 0, 0, 504, 505, 5, 190, 0, 0, 505, 506, 5, 260, 0, 0, 506, 507, 3, 256, 128, 0, 507, 510, 5, 133, 0, 0, 508, 511, 3, 168, 84, 0, 509, 511, 5, 183, 0, 0, 510, 508, 1, 0, 0, 0, 510, 509, 1, 0, 0, 0, 511, 1234, 1, 0, 0, 0, 512, 513, 5, 46, 0, 0, 513, 514, 5, 190, 0, 0, 514, 515, 5, 299, 0, 0, 515, 516, 3, 260, 130, 0, 516, 519, 5, 133, 0, 0, 517, 520, 3, 168, 84, 0, 518, 520, 5, 183, 0, 0, 519, 517, 1, 0, 0, 0, 519, 518, 1, 0, 0, 0, 520, 1234, 1, 0, 0, 0, 521, 522, 5, 46, 0, 0, 522, 523, 5, 190, 0, 0, 523, 524, 5, 44, 0, 0, 524, 525, 3, 276, 138, 0, 525, 528, 5, 133, 0, 0, 526, 529, 3, 168, 84, 0, 527, 529, 5, 183, 0, 0, 528, 526, 1, 0, 0, 0, 528, 527, 1, 0, 0, 0, 529, 1234, 1, 0, 0, 0, 530, 531, 5, 23, 0, 0, 531, 534, 5, 260, 0, 0, 532, 533, 5, 119, 0, 0, 533, 535, 5, 94, 0, 0, 534, 532, 1, 0, 0, 0, 534, 535, 1, 0, 0, 0, 535, 536, 1, 0, 0, 0, 536, 537, 3, 256, 128, 0, 537, 538, 5, 223, 0, 0, 538, 539, 5, 269, 0, 0, 539, 540, 3, 258, 129, 0, 540, 1234, 1, 0, 0, 0, 541, 542, 5, 23, 0, 0, 542, 545, 5, 260, 0, 0, 543, 544, 5, 119, 0, 0, 544, 546, 5, 94, 0, 0, 545, 543, 1, 0, 0, 0, 545, 546, 1, 0, 0, 0, 546, 547, 1, 0, 0, 0, 547, 548, 3, 256, 128, 0, 548, 549, 5, 19, 0, 0, 549, 553, 5, 44, 0, 0, 550, 551, 5, 119, 0, 0, 551, 552, 5, 182, 0, 0, 552, 554, 5, 94, 0, 0, 553, 550, 1, 0, 0, 0, 553, 554, 1, 0, 0, 0, 554, 555, 1, 0, 0, 0, 555, 556, 3, 28, 14, 0, 556, 1234, 1, 0, 0, 0, 557, 558, 5, 23, 0, 0, 558, 561, 5, 260, 0, 0, 559, 560, 5, 119, 0, 0, 560, 562, 5, 94, 0, 0, 561, 559, 1, 0, 0, 0, 561, 562, 1, 0, 0, 0, 562, 563, 1, 0, 0, 0, 563, 564, 3, 256, 128, 0, 564, 565, 5, 223, 0, 0, 565, 568, 5, 44, 0, 0, 566, 567, 5, 119, 0, 0, 567, 569, 5, 94, 0, 0, 568, 566, 1, 0, 0, 0, 568, 569, 1, 0, 0, 0, 569, 570, 1, 0, 0, 0, 570, 571, 3, 276, 138, 0, 571, 572, 5, 269, 0, 0, 572, 573, 3, 278, 139, 0, 573, 1234, 1, 0, 0, 0, 574, 575, 5, 23, 0, 0, 575, 578, 5, 260, 0, 0, 576, 577, 5, 119, 0, 0, 577, 579, 5, 94, 0, 0, 578, 576, 1, 0, 0, 0, 578, 579, 1, 0, 0, 0, 579, 580, 1, 0, 0, 0, 580, 581, 3, 256, 128, 0, 581, 582, 5, 83, 0, 0, 582, 585, 5, 44, 0, 0, 583, 584, 5, 119, 0, 0, 584, 586, 5, 94, 0, 0, 585, 583, 1, 0, 0, 0, 585, 586, 1, 0, 0, 0, 586, 587, 1, 0, 0, 0, 587, 588, 3, 276, 138, 0, 588, 1234, 1, 0, 0, 0, 589, 590, 5, 23, 0, 0, 590, 593, 5, 260, 0, 0, 591, 592, 5, 119, 0, 0, 592, 594, 5, 94, 0, 0, 593, 591, 1, 0, 0, 0, 593, 594, 1, 0, 0, 0, 594, 595, 1, 0, 0, 0, 595, 596, 3, 256, 128, 0, 596, 597, 5, 23, 0, 0, 597, 598, 5, 44, 0, 0, 598, 599, 3, 276, 138, 0, 599, 600, 5, 251, 0, 0, 600, 601, 5, 65, 0, 0, 601, 602, 5, 276, 0, 0, 602, 603, 3, 184, 92, 0, 603, 1234, 1, 0, 0, 0, 604, 605, 5, 23, 0, 0, 605, 608, 5, 260, 0, 0, 606, 607, 5, 119, 0, 0, 607, 609, 5, 94, 0, 0, 608, 606, 1, 0, 0, 0, 608, 609, 1, 0, 0, 0, 609, 610, 1, 0, 0, 0, 610, 611, 3, 256, 128, 0, 611, 612, 5, 23, 0, 0, 612, 613, 5, 44, 0, 0, 613, 614, 3, 276, 138, 0, 614, 615, 5, 83, 0, 0, 615, 616, 5, 182, 0, 0, 616, 617, 5, 183, 0, 0, 617, 1234, 1, 0, 0, 0, 618, 619, 5, 23, 0, 0, 619, 620, 5, 260, 0, 0, 620, 621, 3, 256, 128, 0, 621, 622, 5, 251, 0, 0, 622, 623, 5, 31, 0, 0, 623, 624, 3, 288, 144, 0, 624, 1234, 1, 0, 0, 0, 625, 626, 5, 23, 0, 0, 626, 627, 5, 260, 0, 0, 627, 628, 3, 256, 128, 0, 628, 629, 5, 251, 0, 0, 629, 630, 5, 216, 0, 0, 630, 631, 3, 34, 17, 0, 631, 1234, 1, 0, 0, 0, 632, 633, 5, 23, 0, 0, 633, 634, 5, 260, 0, 0, 634, 635, 3, 256, 128, 0, 635, 636, 5, 93, 0, 0, 636, 649, 3, 272, 136, 0, 637, 646, 5, 1, 0, 0, 638, 643, 3, 218, 109, 0, 639, 640, 5, 3, 0, 0, 640, 642, 3, 218, 109, 0, 641, 639, 1, 0, 0, 0, 642, 645, 1, 0, 0, 0, 643, 641, 1, 0, 0, 0, 643, 644, 1, 0, 0, 0, 644, 647, 1, 0, 0, 0, 645, 643, 1, 0, 0, 0, 646, 638, 1, 0, 0, 0, 646, 647, 1, 0, 0, 0, 647, 648, 1, 0, 0, 0, 648, 650, 5, 2, 0, 0, 649, 637, 1, 0, 0, 0, 649, 650, 1, 0, 0, 0, 650, 653, 1, 0, 0, 0, 651, 652, 5, 301, 0, 0, 652, 654, 3, 138, 69, 0, 653, 651, 1, 0, 0, 0, 653, 654, 1, 0, 0, 0, 654, 1234, 1, 0, 0, 0, 655, 656, 5, 24, 0, 0, 656, 659, 3, 256, 128, 0, 657, 658, 5, 304, 0, 0, 658, 660, 3, 32, 16, 0, 659, 657, 1, 0, 0, 0, 659, 660, 1, 0, 0, 0, 660, 1234, 1, 0, 0, 0, 661, 664, 5, 53, 0, 0, 662, 663, 5, 194, 0, 0, 663, 665, 5, 226, 0, 0, 664, 662, 1, 0, 0, 0, 664, 665, 1, 0, 0, 0, 665, 666, 1, 0, 0, 0, 666, 667, 5, 167, 0, 0, 667, 671, 5, 299, 0, 0, 668, 669, 5, 119, 0, 0, 669, 670, 5, 182, 0, 0, 670, 672, 5, 94, 0, 0, 671, 668, 1, 0, 0, 0, 671, 672, 1, 0, 0, 0, 672, 673, 1, 0, 0, 0, 673, 677, 3, 262, 131, 0, 674, 675, 5, 109, 0, 0, 675, 676, 5, 208, 0, 0, 676, 678, 3, 178, 89, 0, 677, 674, 1, 0, 0, 0, 677, 678, 1, 0, 0, 0, 678, 681, 1, 0, 0, 0, 679, 680, 5, 46, 0, 0, 680, 682, 3, 168, 84, 0, 681, 679, 1, 0, 0, 0, 681, 682, 1, 0, 0, 0, 682, 685, 1, 0, 0, 0, 683, 684, 5, 304, 0, 0, 684, 686, 3, 32, 16, 0, 685, 683, 1, 0, 0, 0, 685, 686, 1, 0, 0, 0, 686, 687, 1, 0, 0, 0, 687, 688, 5, 28, 0, 0, 688, 689, 3, 18, 9, 0, 689, 1234, 1, 0, 0, 0, 690, 693, 5, 53, 0, 0, 691, 692, 5, 194, 0, 0, 692, 694, 5, 226, 0, 0, 693, 691, 1, 0, 0, 0, 693, 694, 1, 0, 0, 0, 694, 695, 1, 0, 0, 0, 695, 696, 5, 299, 0, 0, 696, 699, 3, 262, 131, 0, 697, 698, 5, 46, 0, 0, 698, 700, 3, 168, 84, 0, 699, 697, 1, 0, 0, 0, 699, 700, 1, 0, 0, 0, 700, 703, 1, 0, 0, 0, 701, 702, 5, 246, 0, 0, 702, 704, 7, 1, 0, 0, 703, 701, 1, 0, 0, 0, 703, 704, 1, 0, 0, 0, 704, 707, 1, 0, 0, 0, 705, 706, 5, 304, 0, 0, 706, 708, 3, 32, 16, 0, 707, 705, 1, 0, 0, 0, 707, 708, 1, 0, 0, 0, 708, 709, 1, 0, 0, 0, 709, 710, 5, 28, 0, 0, 710, 711, 3, 18, 9, 0, 711, 1234, 1, 0, 0, 0, 712, 713, 5, 222, 0, 0, 713, 714, 5, 167, 0, 0, 714, 715, 5, 299, 0, 0, 715, 1234, 3, 260, 130, 0, 716, 717, 5, 83, 0, 0, 717, 718, 5, 167, 0, 0, 718, 721, 5, 299, 0, 0, 719, 720, 5, 119, 0, 0, 720, 722, 5, 94, 0, 0, 721, 719, 1, 0, 0, 0, 721, 722, 1, 0, 0, 0, 722, 723, 1, 0, 0, 0, 723, 1234, 3, 260, 130, 0, 724, 725, 5, 23, 0, 0, 725, 726, 5, 167, 0, 0, 726, 729, 5, 299, 0, 0, 727, 728, 5, 119, 0, 0, 728, 730, 5, 94, 0, 0, 729, 727, 1, 0, 0, 0, 729, 730, 1, 0, 0, 0, 730, 731, 1, 0, 0, 0, 731, 732, 3, 260, 130, 0, 732, 733, 5, 223, 0, 0, 733, 734, 5, 269, 0, 0, 734, 735, 3, 262, 131, 0, 735, 1234, 1, 0, 0, 0, 736, 737, 5, 23, 0, 0, 737, 738, 5, 167, 0, 0, 738, 739, 5, 299, 0, 0, 739, 740, 3, 260, 130, 0, 740, 741, 5, 251, 0, 0, 741, 742, 5, 216, 0, 0, 742, 743, 3, 34, 17, 0, 743, 1234, 1, 0, 0, 0, 744, 745, 5, 83, 0, 0, 745, 748, 5, 299, 0, 0, 746, 747, 5, 119, 0, 0, 747, 749, 5, 94, 0, 0, 748, 746, 1, 0, 0, 0, 748, 749, 1, 0, 0, 0, 749, 750, 1, 0, 0, 0, 750, 1234, 3, 260, 130, 0, 751, 752, 5, 23, 0, 0, 752, 753, 5, 299, 0, 0, 753, 754, 3, 260, 130, 0, 754, 755, 5, 223, 0, 0, 755, 756, 5, 269, 0, 0, 756, 757, 3, 262, 131, 0, 757, 1234, 1, 0, 0, 0, 758, 759, 5, 23, 0, 0, 759, 760, 5, 299, 0, 0, 760, 761, 3, 260, 130, 0, 761, 762, 5, 251, 0, 0, 762, 763, 5, 31, 0, 0, 763, 764, 3, 288, 144, 0, 764, 1234, 1, 0, 0, 0, 765, 766, 5, 37, 0, 0, 766, 767, 3, 272, 136, 0, 767, 776, 5, 1, 0, 0, 768, 773, 3, 218, 109, 0, 769, 770, 5, 3, 0, 0, 770, 772, 3, 218, 109, 0, 771, 769, 1, 0, 0, 0, 772, 775, 1, 0, 0, 0, 773, 771, 1, 0, 0, 0, 773, 774, 1, 0, 0, 0, 774, 777, 1, 0, 0, 0, 775, 773, 1, 0, 0, 0, 776, 768, 1, 0, 0, 0, 776, 777, 1, 0, 0, 0, 777, 778, 1, 0, 0, 0, 778, 779, 5, 2, 0, 0, 779, 1234, 1, 0, 0, 0, 780, 783, 5, 53, 0, 0, 781, 782, 5, 194, 0, 0, 782, 784, 5, 226, 0, 0, 783, 781, 1, 0, 0, 0, 783, 784, 1, 0, 0, 0, 784, 785, 1, 0, 0, 0, 785, 1234, 3, 224, 112, 0, 786, 787, 5, 83, 0, 0, 787, 790, 5, 107, 0, 0, 788, 789, 5, 119, 0, 0, 789, 791, 5, 94, 0, 0, 790, 788, 1, 0, 0, 0, 790, 791, 1, 0, 0, 0, 791, 792, 1, 0, 0, 0, 792, 1234, 3, 228, 114, 0, 793, 794, 5, 53, 0, 0, 794, 795, 5, 235, 0, 0, 795, 799, 3, 294, 147, 0, 796, 797, 5, 304, 0, 0, 797, 798, 5, 20, 0, 0, 798, 800, 3, 286, 143, 0, 799, 796, 1, 0, 0, 0, 799, 800, 1, 0, 0, 0, 800, 803, 1, 0, 0, 0, 801, 802, 5, 122, 0, 0, 802, 804, 3, 268, 134, 0, 803, 801, 1, 0, 0, 0, 803, 804, 1, 0, 0, 0, 804, 1234, 1, 0, 0, 0, 805, 806, 5, 83, 0, 0, 806, 807, 5, 235, 0, 0, 807, 810, 3, 294, 147, 0, 808, 809, 5, 122, 0, 0, 809, 811, 3, 268, 134, 0, 810, 808, 1, 0, 0, 0, 810, 811, 1, 0, 0, 0, 811, 1234, 1, 0, 0, 0, 812, 813, 5, 110, 0, 0, 813, 818, 3, 292, 146, 0, 814, 815, 5, 3, 0, 0, 815, 817, 3, 292, 146, 0, 816, 814, 1, 0, 0, 0, 817, 820, 1, 0, 0, 0, 818, 816, 1, 0, 0, 0, 818, 819, 1, 0, 0, 0, 819, 821, 1, 0, 0, 0, 820, 818, 1, 0, 0, 0, 821, 822, 5, 269, 0, 0, 822, 827, 3, 288, 144, 0, 823, 824, 5, 3, 0, 0, 824, 826, 3, 288, 144, 0, 825, 823, 1, 0, 0, 0, 826, 829, 1, 0, 0, 0, 827, 825, 1, 0, 0, 0, 827, 828, 1, 0, 0, 0, 828, 833, 1, 0, 0, 0, 829, 827, 1, 0, 0, 0, 830, 831, 5, 304, 0, 0, 831, 832, 5, 20, 0, 0, 832, 834, 5, 193, 0, 0, 833, 830, 1, 0, 0, 0, 833, 834, 1, 0, 0, 0, 834, 838, 1, 0, 0, 0, 835, 836, 5, 111, 0, 0, 836, 837, 5, 36, 0, 0, 837, 839, 3, 286, 143, 0, 838, 835, 1, 0, 0, 0, 838, 839, 1, 0, 0, 0, 839, 842, 1, 0, 0, 0, 840, 841, 5, 122, 0, 0, 841, 843, 3, 268, 134, 0, 842, 840, 1, 0, 0, 0, 842, 843, 1, 0, 0, 0, 843, 1234, 1, 0, 0, 0, 844, 855, 5, 110, 0, 0, 845, 850, 3, 292, 146, 0, 846, 847, 5, 3, 0, 0, 847, 849, 3, 292, 146, 0, 848, 846, 1, 0, 0, 0, 849, 852, 1, 0, 0, 0, 850, 848, 1, 0, 0, 0, 850, 851, 1, 0, 0, 0, 851, 856, 1, 0, 0, 0, 852, 850, 1, 0, 0, 0, 853, 854, 5, 22, 0, 0, 854, 856, 5, 215, 0, 0, 855, 845, 1, 0, 0, 0, 855, 853, 1, 0, 0, 0, 856, 857, 1, 0, 0, 0, 857, 858, 5, 190, 0, 0, 858, 859, 3, 252, 126, 0, 859, 860, 5, 269, 0, 0, 860, 864, 3, 288, 144, 0, 861, 862, 5, 304, 0, 0, 862, 863, 5, 110, 0, 0, 863, 865, 5, 193, 0, 0, 864, 861, 1, 0, 0, 0, 864, 865, 1, 0, 0, 0, 865, 1234, 1, 0, 0, 0, 866, 870, 5, 233, 0, 0, 867, 868, 5, 20, 0, 0, 868, 869, 5, 193, 0, 0, 869, 871, 5, 103, 0, 0, 870, 867, 1, 0, 0, 0, 870, 871, 1, 0, 0, 0, 871, 872, 1, 0, 0, 0, 872, 877, 3, 292, 146, 0, 873, 874, 5, 3, 0, 0, 874, 876, 3, 292, 146, 0, 875, 873, 1, 0, 0, 0, 876, 879, 1, 0, 0, 0, 877, 875, 1, 0, 0, 0, 877, 878, 1, 0, 0, 0, 878, 880, 1, 0, 0, 0, 879, 877, 1, 0, 0, 0, 880, 881, 5, 105, 0, 0, 881, 886, 3, 288, 144, 0, 882, 883, 5, 3, 0, 0, 883, 885, 3, 288, 144, 0, 884, 882, 1, 0, 0, 0, 885, 888, 1, 0, 0, 0, 886, 884, 1, 0, 0, 0, 886, 887, 1, 0, 0, 0, 887, 892, 1, 0, 0, 0, 888, 886, 1, 0, 0, 0, 889, 890, 5, 111, 0, 0, 890, 891, 5, 36, 0, 0, 891, 893, 3, 286, 143, 0, 892, 889, 1, 0, 0, 0, 892, 893, 1, 0, 0, 0, 893, 896, 1, 0, 0, 0, 894, 895, 5, 122, 0, 0, 895, 897, 3, 268, 134, 0, 896, 894, 1, 0, 0, 0, 896, 897, 1, 0, 0, 0, 897, 1234, 1, 0, 0, 0, 898, 902, 5, 233, 0, 0, 899, 900, 5, 110, 0, 0, 900, 901, 5, 193, 0, 0, 901, 903, 5, 103, 0, 0, 902, 899, 1, 0, 0, 0, 902, 903, 1, 0, 0, 0, 903, 914, 1, 0, 0, 0, 904, 909, 3, 292, 146, 0, 905, 906, 5, 3, 0, 0, 906, 908, 3, 292, 146, 0, 907, 905, 1, 0, 0, 0, 908, 911, 1, 0, 0, 0, 909, 907, 1, 0, 0, 0, 909, 910, 1, 0, 0, 0, 910, 915, 1, 0, 0, 0, 911, 909, 1, 0, 0, 0, 912, 913, 5, 22, 0, 0, 913, 915, 5, 215, 0, 0, 914, 904, 1, 0, 0, 0, 914, 912, 1, 0, 0, 0, 915, 916, 1, 0, 0, 0, 916, 917, 5, 190, 0, 0, 917, 918, 3, 252, 126, 0, 918, 919, 5, 105, 0, 0, 919, 920, 3, 288, 144, 0, 920, 1234, 1, 0, 0, 0, 921, 932, 5, 74, 0, 0, 922, 927, 3, 248, 124, 0, 923, 924, 5, 3, 0, 0, 924, 926, 3, 248, 124, 0, 925, 923, 1, 0, 0, 0, 926, 929, 1, 0, 0, 0, 927, 925, 1, 0, 0, 0, 927, 928, 1, 0, 0, 0, 928, 933, 1, 0, 0, 0, 929, 927, 1, 0, 0, 0, 930, 931, 5, 22, 0, 0, 931, 933, 5, 215, 0, 0, 932, 922, 1, 0, 0, 0, 932, 930, 1, 0, 0, 0, 933, 934, 1, 0, 0, 0, 934, 935, 5, 190, 0, 0, 935, 936, 3, 252, 126, 0, 936, 937, 5, 269, 0, 0, 937, 938, 3, 288, 144, 0, 938, 1234, 1, 0, 0, 0, 939, 940, 5, 251, 0, 0, 940, 944, 5, 235, 0, 0, 941, 945, 5, 22, 0, 0, 942, 945, 5, 180, 0, 0, 943, 945, 3, 294, 147, 0, 944, 941, 1, 0, 0, 0, 944, 942, 1, 0, 0, 0, 944, 943, 1, 0, 0, 0, 945, 948, 1, 0, 0, 0, 946, 947, 5, 122, 0, 0, 947, 949, 3, 268, 134, 0, 948, 946, 1, 0, 0, 0, 948, 949, 1, 0, 0, 0, 949, 1234, 1, 0, 0, 0, 950, 951, 5, 253, 0, 0, 951, 954, 5, 112, 0, 0, 952, 953, 5, 190, 0, 0, 953, 955, 3, 252, 126, 0, 954, 952, 1, 0, 0, 0, 954, 955, 1, 0, 0, 0, 955, 1234, 1, 0, 0, 0, 956, 968, 5, 95, 0, 0, 957, 958, 5, 1, 0, 0, 958, 963, 3, 212, 106, 0, 959, 960, 5, 3, 0, 0, 960, 962, 3, 212, 106, 0, 961, 959, 1, 0, 0, 0, 962, 965, 1, 0, 0, 0, 963, 961, 1, 0, 0, 0, 963, 964, 1, 0, 0, 0, 964, 966, 1, 0, 0, 0, 965, 963, 1, 0, 0, 0, 966, 967, 5, 2, 0, 0, 967, 969, 1, 0, 0, 0, 968, 957, 1, 0, 0, 0, 968, 969, 1, 0, 0, 0, 969, 970, 1, 0, 0, 0, 970, 1234, 3, 16, 8, 0, 971, 972, 5, 95, 0, 0, 972, 974, 5, 24, 0, 0, 973, 975, 5, 297, 0, 0, 974, 973, 1, 0, 0, 0, 974, 975, 1, 0, 0, 0, 975, 976, 1, 0, 0, 0, 976, 1234, 3, 16, 8, 0, 977, 978, 5, 253, 0, 0, 978, 979, 5, 53, 0, 0, 979, 980, 5, 260, 0, 0, 980, 1234, 3, 256, 128, 0, 981, 982, 5, 253, 0, 0, 982, 983, 5, 53, 0, 0, 983, 984, 5, 243, 0, 0, 984, 1234, 3, 264, 132, 0, 985, 986, 5, 253, 0, 0, 986, 987, 5, 53, 0, 0, 987, 988, 5, 299, 0, 0, 988, 1234, 3, 260, 130, 0, 989, 990, 5, 253, 0, 0, 990, 991, 5, 53, 0, 0, 991, 992, 5, 167, 0, 0, 992, 993, 5, 299, 0, 0, 993, 1234, 3, 260, 130, 0, 994, 995, 5, 253, 0, 0, 995, 996, 5, 53, 0, 0, 996, 997, 5, 107, 0, 0, 997, 1234, 3, 272, 136, 0, 998, 999, 5, 253, 0, 0, 999, 1002, 5, 261, 0, 0, 1000, 1001, 7, 2, 0, 0, 1001, 1003, 3, 264, 132, 0, 1002, 1000, 1, 0, 0, 0, 1002, 1003, 1, 0, 0, 0, 1003, 1010, 1, 0, 0, 0, 1004, 1005, 5, 154, 0, 0, 1005, 1008, 3, 168, 84, 0, 1006, 1007, 5, 90, 0, 0, 1007, 1009, 3, 168, 84, 0, 1008, 1006, 1, 0, 0, 0, 1008, 1009, 1, 0, 0, 0, 1009, 1011, 1, 0, 0, 0, 1010, 1004, 1, 0, 0, 0, 1010, 1011, 1, 0, 0, 0, 1011, 1234, 1, 0, 0, 0, 1012, 1013, 5, 253, 0, 0, 1013, 1016, 5, 244, 0, 0, 1014, 1015, 7, 2, 0, 0, 1015, 1017, 3, 268, 134, 0, 1016, 1014, 1, 0, 0, 0, 1016, 1017, 1, 0, 0, 0, 1017, 1024, 1, 0, 0, 0, 1018, 1019, 5, 154, 0, 0, 1019, 1022, 3, 168, 84, 0, 1020, 1021, 5, 90, 0, 0, 1021, 1023, 3, 168, 84, 0, 1022, 1020, 1, 0, 0, 0, 1022, 1023, 1, 0, 0, 0, 1023, 1025, 1, 0, 0, 0, 1024, 1018, 1, 0, 0, 0, 1024, 1025, 1, 0, 0, 0, 1025, 1234, 1, 0, 0, 0, 1026, 1027, 5, 253, 0, 0, 1027, 1034, 5, 43, 0, 0, 1028, 1029, 5, 154, 0, 0, 1029, 1032, 3, 168, 84, 0, 1030, 1031, 5, 90, 0, 0, 1031, 1033, 3, 168, 84, 0, 1032, 1030, 1, 0, 0, 0, 1032, 1033, 1, 0, 0, 0, 1033, 1035, 1, 0, 0, 0, 1034, 1028, 1, 0, 0, 0, 1034, 1035, 1, 0, 0, 0, 1035, 1234, 1, 0, 0, 0, 1036, 1037, 5, 253, 0, 0, 1037, 1038, 5, 45, 0, 0, 1038, 1039, 7, 2, 0, 0, 1039, 1046, 3, 254, 127, 0, 1040, 1041, 5, 154, 0, 0, 1041, 1044, 3, 168, 84, 0, 1042, 1043, 5, 90, 0, 0, 1043, 1045, 3, 168, 84, 0, 1044, 1042, 1, 0, 0, 0, 1044, 1045, 1, 0, 0, 0, 1045, 1047, 1, 0, 0, 0, 1046, 1040, 1, 0, 0, 0, 1046, 1047, 1, 0, 0, 0, 1047, 1234, 1, 0, 0, 0, 1048, 1049, 5, 253, 0, 0, 1049, 1050, 5, 256, 0, 0, 1050, 1051, 5, 103, 0, 0, 1051, 1234, 3, 254, 127, 0, 1052, 1053, 5, 253, 0, 0, 1053, 1054, 5, 256, 0, 0, 1054, 1055, 5, 103, 0, 0, 1055, 1056, 5, 1, 0, 0, 1056, 1057, 3, 18, 9, 0, 1057, 1058, 5, 2, 0, 0, 1058, 1234, 1, 0, 0, 0, 1059, 1061, 5, 253, 0, 0, 1060, 1062, 5, 56, 0, 0, 1061, 1060, 1, 0, 0, 0, 1061, 1062, 1, 0, 0, 0, 1062, 1063, 1, 0, 0, 0, 1063, 1066, 5, 236, 0, 0, 1064, 1065, 7, 2, 0, 0, 1065, 1067, 3, 268, 134, 0, 1066, 1064, 1, 0, 0, 0, 1066, 1067, 1, 0, 0, 0, 1067, 1234, 1, 0, 0, 0, 1068, 1069, 5, 253, 0, 0, 1069, 1070, 5, 235, 0, 0, 1070, 1073, 5, 112, 0, 0, 1071, 1072, 7, 2, 0, 0, 1072, 1074, 3, 268, 134, 0, 1073, 1071, 1, 0, 0, 0, 1073, 1074, 1, 0, 0, 0, 1074, 1234, 1, 0, 0, 0, 1075, 1076, 5, 76, 0, 0, 1076, 1234, 3, 254, 127, 0, 1077, 1078, 5, 75, 0, 0, 1078, 1234, 3, 254, 127, 0, 1079, 1080, 5, 253, 0, 0, 1080, 1083, 5, 108, 0, 0, 1081, 1082, 7, 2, 0, 0, 1082, 1084, 3, 264, 132, 0, 1083, 1081, 1, 0, 0, 0, 1083, 1084, 1, 0, 0, 0, 1084, 1091, 1, 0, 0, 0, 1085, 1086, 5, 154, 0, 0, 1086, 1089, 3, 168, 84, 0, 1087, 1088, 5, 90, 0, 0, 1088, 1090, 3, 168, 84, 0, 1089, 1087, 1, 0, 0, 0, 1089, 1090, 1, 0, 0, 0, 1090, 1092, 1, 0, 0, 0, 1091, 1085, 1, 0, 0, 0, 1091, 1092, 1, 0, 0, 0, 1092, 1234, 1, 0, 0, 0, 1093, 1094, 5, 253, 0, 0, 1094, 1101, 5, 250, 0, 0, 1095, 1096, 5, 154, 0, 0, 1096, 1099, 3, 168, 84, 0, 1097, 1098, 5, 90, 0, 0, 1098, 1100, 3, 168, 84, 0, 1099, 1097, 1, 0, 0, 0, 1099, 1100, 1, 0, 0, 0, 1100, 1102, 1, 0, 0, 0, 1101, 1095, 1, 0, 0, 0, 1101, 1102, 1, 0, 0, 0, 1102, 1234, 1, 0, 0, 0, 1103, 1104, 5, 251, 0, 0, 1104, 1105, 5, 250, 0, 0, 1105, 1106, 5, 31, 0, 0, 1106, 1234, 3, 298, 149, 0, 1107, 1108, 5, 227, 0, 0, 1108, 1109, 5, 250, 0, 0, 1109, 1234, 5, 31, 0, 0, 1110, 1111, 5, 251, 0, 0, 1111, 1112, 5, 250, 0, 0, 1112, 1113, 3, 280, 140, 0, 1113, 1114, 5, 312, 0, 0, 1114, 1115, 3, 136, 68, 0, 1115, 1234, 1, 0, 0, 0, 1116, 1117, 5, 227, 0, 0, 1117, 1118, 5, 250, 0, 0, 1118, 1234, 3, 280, 140, 0, 1119, 1120, 5, 255, 0, 0, 1120, 1129, 5, 271, 0, 0, 1121, 1126, 3, 214, 107, 0, 1122, 1123, 5, 3, 0, 0, 1123, 1125, 3, 214, 107, 0, 1124, 1122, 1, 0, 0, 0, 1125, 1128, 1, 0, 0, 0, 1126, 1124, 1, 0, 0, 0, 1126, 1127, 1, 0, 0, 0, 1127, 1130, 1, 0, 0, 0, 1128, 1126, 1, 0, 0, 0, 1129, 1121, 1, 0, 0, 0, 1129, 1130, 1, 0, 0, 0, 1130, 1234, 1, 0, 0, 0, 1131, 1133, 5, 47, 0, 0, 1132, 1134, 5, 307, 0, 0, 1133, 1132, 1, 0, 0, 0, 1133, 1134, 1, 0, 0, 0, 1134, 1234, 1, 0, 0, 0, 1135, 1137, 5, 237, 0, 0, 1136, 1138, 5, 307, 0, 0, 1137, 1136, 1, 0, 0, 0, 1137, 1138, 1, 0, 0, 0, 1138, 1234, 1, 0, 0, 0, 1139, 1140, 5, 214, 0, 0, 1140, 1141, 3, 294, 147, 0, 1141, 1142, 5, 105, 0, 0, 1142, 1143, 3, 16, 8, 0, 1143, 1234, 1, 0, 0, 0, 1144, 1145, 5, 68, 0, 0, 1145, 1146, 5, 214, 0, 0, 1146, 1234, 3, 294, 147, 0, 1147, 1148, 5, 93, 0, 0, 1148, 1158, 3, 294, 147, 0, 1149, 1150, 5, 290, 0, 0, 1150, 1155, 3, 136, 68, 0, 1151, 1152, 5, 3, 0, 0, 1152, 1154, 3, 136, 68, 0, 1153, 1151, 1, 0, 0, 0, 1154, 1157, 1, 0, 0, 0, 1155, 1153, 1, 0, 0, 0, 1155, 1156, 1, 0, 0, 0, 1156, 1159, 1, 0, 0, 0, 1157, 1155, 1, 0, 0, 0, 1158, 1149, 1, 0, 0, 0, 1158, 1159, 1, 0, 0, 0, 1159, 1234, 1, 0, 0, 0, 1160, 1161, 5, 93, 0, 0, 1161, 1162, 5, 121, 0, 0, 1162, 1172, 3, 168, 84, 0, 1163, 1164, 5, 290, 0, 0, 1164, 1169, 3, 136, 68, 0, 1165, 1166, 5, 3, 0, 0, 1166, 1168, 3, 136, 68, 0, 1167, 1165, 1, 0, 0, 0, 1168, 1171, 1, 0, 0, 0, 1169, 1167, 1, 0, 0, 0, 1169, 1170, 1, 0, 0, 0, 1170, 1173, 1, 0, 0, 0, 1171, 1169, 1, 0, 0, 0, 1172, 1163, 1, 0, 0, 0, 1172, 1173, 1, 0, 0, 0, 1173, 1234, 1, 0, 0, 0, 1174, 1175, 5, 76, 0, 0, 1175, 1176, 5, 126, 0, 0, 1176, 1234, 3, 294, 147, 0, 1177, 1178, 5, 76, 0, 0, 1178, 1179, 5, 198, 0, 0, 1179, 1234, 3, 294, 147, 0, 1180, 1181, 5, 251, 0, 0, 1181, 1182, 5, 205, 0, 0, 1182, 1234, 3, 222, 111, 0, 1183, 1184, 5, 251, 0, 0, 1184, 1185, 5, 267, 0, 0, 1185, 1188, 5, 311, 0, 0, 1186, 1189, 5, 157, 0, 0, 1187, 1189, 3, 136, 68, 0, 1188, 1186, 1, 0, 0, 0, 1188, 1187, 1, 0, 0, 0, 1189, 1234, 1, 0, 0, 0, 1190, 1191, 5, 287, 0, 0, 1191, 1192, 3, 256, 128, 0, 1192, 1193, 5, 251, 0, 0, 1193, 1198, 3, 210, 105, 0, 1194, 1195, 5, 3, 0, 0, 1195, 1197, 3, 210, 105, 0, 1196, 1194, 1, 0, 0, 0, 1197, 1200, 1, 0, 0, 0, 1198, 1196, 1, 0, 0, 0, 1198, 1199, 1, 0, 0, 0, 1199, 1203, 1, 0, 0, 0, 1200, 1198, 1, 0, 0, 0, 1201, 1202, 5, 301, 0, 0, 1202, 1204, 3, 138, 69, 0, 1203, 1201, 1, 0, 0, 0, 1203, 1204, 1, 0, 0, 0, 1204, 1234, 1, 0, 0, 0, 1205, 1206, 5, 169, 0, 0, 1206, 1207, 5, 130, 0, 0, 1207, 1212, 3, 256, 128, 0, 1208, 1210, 5, 28, 0, 0, 1209, 1208, 1, 0, 0, 0, 1209, 1210, 1, 0, 0, 0, 1210, 1211, 1, 0, 0, 0, 1211, 1213, 3, 294, 147, 0, 1212, 1209, 1, 0, 0, 0, 1212, 1213, 1, 0, 0, 0, 1213, 1214, 1, 0, 0, 0, 1214, 1215, 5, 290, 0, 0, 1215, 1216, 3, 72, 36, 0, 1216, 1217, 5, 190, 0, 0, 1217, 1219, 3, 136, 68, 0, 1218, 1220, 3, 194, 97, 0, 1219, 1218, 1, 0, 0, 0, 1220, 1221, 1, 0, 0, 0, 1221, 1219, 1, 0, 0, 0, 1221, 1222, 1, 0, 0, 0, 1222, 1234, 1, 0, 0, 0, 1223, 1224, 5, 253, 0, 0, 1224, 1225, 5, 46, 0, 0, 1225, 1226, 5, 190, 0, 0, 1226, 1227, 5, 260, 0, 0, 1227, 1234, 3, 256, 128, 0, 1228, 1229, 5, 253, 0, 0, 1229, 1230, 5, 46, 0, 0, 1230, 1231, 5, 190, 0, 0, 1231, 1232, 5, 44, 0, 0, 1232, 1234, 3, 276, 138, 0, 1233, 335, 1, 0, 0, 0, 1233, 336, 1, 0, 0, 0, 1233, 338, 1, 0, 0, 0, 1233, 360, 1, 0, 0, 0, 1233, 370, 1, 0, 0, 0, 1233, 386, 1, 0, 0, 0, 1233, 396, 1, 0, 0, 0, 1233, 403, 1, 0, 0, 0, 1233, 410, 1, 0, 0, 0, 1233, 448, 1, 0, 0, 0, 1233, 478, 1, 0, 0, 0, 1233, 485, 1, 0, 0, 0, 1233, 493, 1, 0, 0, 0, 1233, 500, 1, 0, 0, 0, 1233, 503, 1, 0, 0, 0, 1233, 512, 1, 0, 0, 0, 1233, 521, 1, 0, 0, 0, 1233, 530, 1, 0, 0, 0, 1233, 541, 1, 0, 0, 0, 1233, 557, 1, 0, 0, 0, 1233, 574, 1, 0, 0, 0, 1233, 589, 1, 0, 0, 0, 1233, 604, 1, 0, 0, 0, 1233, 618, 1, 0, 0, 0, 1233, 625, 1, 0, 0, 0, 1233, 632, 1, 0, 0, 0, 1233, 655, 1, 0, 0, 0, 1233, 661, 1, 0, 0, 0, 1233, 690, 1, 0, 0, 0, 1233, 712, 1, 0, 0, 0, 1233, 716, 1, 0, 0, 0, 1233, 724, 1, 0, 0, 0, 1233, 736, 1, 0, 0, 0, 1233, 744, 1, 0, 0, 0, 1233, 751, 1, 0, 0, 0, 1233, 758, 1, 0, 0, 0, 1233, 765, 1, 0, 0, 0, 1233, 780, 1, 0, 0, 0, 1233, 786, 1, 0, 0, 0, 1233, 793, 1, 0, 0, 0, 1233, 805, 1, 0, 0, 0, 1233, 812, 1, 0, 0, 0, 1233, 844, 1, 0, 0, 0, 1233, 866, 1, 0, 0, 0, 1233, 898, 1, 0, 0, 0, 1233, 921, 1, 0, 0, 0, 1233, 939, 1, 0, 0, 0, 1233, 950, 1, 0, 0, 0, 1233, 956, 1, 0, 0, 0, 1233, 971, 1, 0, 0, 0, 1233, 977, 1, 0, 0, 0, 1233, 981, 1, 0, 0, 0, 1233, 985, 1, 0, 0, 0, 1233, 989, 1, 0, 0, 0, 1233, 994, 1, 0, 0, 0, 1233, 998, 1, 0, 0, 0, 1233, 1012, 1, 0, 0, 0, 1233, 1026, 1, 0, 0, 0, 1233, 1036, 1, 0, 0, 0, 1233, 1048, 1, 0, 0, 0, 1233, 1052, 1, 0, 0, 0, 1233, 1059, 1, 0, 0, 0, 1233, 1068, 1, 0, 0, 0, 1233, 1075, 1, 0, 0, 0, 1233, 1077, 1, 0, 0, 0, 1233, 1079, 1, 0, 0, 0, 1233, 1093, 1, 0, 0, 0, 1233, 1103, 1, 0, 0, 0, 1233, 1107, 1, 0, 0, 0, 1233, 1110, 1, 0, 0, 0, 1233, 1116, 1, 0, 0, 0, 1233, 1119, 1, 0, 0, 0, 1233, 1131, 1, 0, 0, 0, 1233, 1135, 1, 0, 0, 0, 1233, 1139, 1, 0, 0, 0, 1233, 1144, 1, 0, 0, 0, 1233, 1147, 1, 0, 0, 0, 1233, 1160, 1, 0, 0, 0, 1233, 1174, 1, 0, 0, 0, 1233, 1177, 1, 0, 0, 0, 1233, 1180, 1, 0, 0, 0, 1233, 1183, 1, 0, 0, 0, 1233, 1190, 1, 0, 0, 0, 1233, 1205, 1, 0, 0, 0, 1233, 1223, 1, 0, 0, 0, 1233, 1228, 1, 0, 0, 0, 1234, 17, 1, 0, 0, 0, 1235, 1237, 3, 20, 10, 0, 1236, 1235, 1, 0, 0, 0, 1236, 1237, 1, 0, 0, 0, 1237, 1238, 1, 0, 0, 0, 1238, 1239, 3, 22, 11, 0, 1239, 19, 1, 0, 0, 0, 1240, 1241, 5, 304, 0, 0, 1241, 1246, 3, 224, 112, 0, 1242, 1243, 5, 3, 0, 0, 1243, 1245, 3, 224, 112, 0, 1244, 1242, 1, 0, 0, 0, 1245, 1248, 1, 0, 0, 0, 1246, 1244, 1, 0, 0, 0, 1246, 1247, 1, 0, 0, 0, 1247, 21, 1, 0, 0, 0, 1248, 1246, 1, 0, 0, 0, 1249, 1251, 3, 24, 12, 0, 1250, 1249, 1, 0, 0, 0, 1250, 1251, 1, 0, 0, 0, 1251, 1252, 1, 0, 0, 0, 1252, 1253, 3, 40, 20, 0, 1253, 23, 1, 0, 0, 0, 1254, 1256, 5, 304, 0, 0, 1255, 1257, 5, 221, 0, 0, 1256, 1255, 1, 0, 0, 0, 1256, 1257, 1, 0, 0, 0, 1257, 1258, 1, 0, 0, 0, 1258, 1263, 3, 66, 33, 0, 1259, 1260, 5, 3, 0, 0, 1260, 1262, 3, 66, 33, 0, 1261, 1259, 1, 0, 0, 0, 1262, 1265, 1, 0, 0, 0, 1263, 1261, 1, 0, 0, 0, 1263, 1264, 1, 0, 0, 0, 1264, 25, 1, 0, 0, 0, 1265, 1263, 1, 0, 0, 0, 1266, 1269, 3, 28, 14, 0, 1267, 1269, 3, 30, 15, 0, 1268, 1266, 1, 0, 0, 0, 1268, 1267, 1, 0, 0, 0, 1269, 27, 1, 0, 0, 0, 1270, 1271, 3, 278, 139, 0, 1271, 1274, 3, 184, 92, 0, 1272, 1273, 5, 182, 0, 0, 1273, 1275, 5, 183, 0, 0, 1274, 1272, 1, 0, 0, 0, 1274, 1275, 1, 0, 0, 0, 1275, 1278, 1, 0, 0, 0, 1276, 1277, 5, 46, 0, 0, 1277, 1279, 3, 168, 84, 0, 1278, 1276, 1, 0, 0, 0, 1278, 1279, 1, 0, 0, 0, 1279, 1282, 1, 0, 0, 0, 1280, 1281, 5, 304, 0, 0, 1281, 1283, 3, 32, 16, 0, 1282, 1280, 1, 0, 0, 0, 1282, 1283, 1, 0, 0, 0, 1283, 29, 1, 0, 0, 0, 1284, 1285, 5, 154, 0, 0, 1285, 1288, 3, 256, 128, 0, 1286, 1287, 7, 3, 0, 0, 1287, 1289, 5, 216, 0, 0, 1288, 1286, 1, 0, 0, 0, 1288, 1289, 1, 0, 0, 0, 1289, 31, 1, 0, 0, 0, 1290, 1291, 5, 1, 0, 0, 1291, 1292, 3, 34, 17, 0, 1292, 1293, 5, 2, 0, 0, 1293, 33, 1, 0, 0, 0, 1294, 1299, 3, 36, 18, 0, 1295, 1296, 5, 3, 0, 0, 1296, 1298, 3, 36, 18, 0, 1297, 1295, 1, 0, 0, 0, 1298, 1301, 1, 0, 0, 0, 1299, 1297, 1, 0, 0, 0, 1299, 1300, 1, 0, 0, 0, 1300, 35, 1, 0, 0, 0, 1301, 1299, 1, 0, 0, 0, 1302, 1303, 3, 294, 147, 0, 1303, 1304, 5, 312, 0, 0, 1304, 1305, 3, 38, 19, 0, 1305, 37, 1, 0, 0, 0, 1306, 1309, 5, 70, 0, 0, 1307, 1309, 3, 136, 68, 0, 1308, 1306, 1, 0, 0, 0, 1308, 1307, 1, 0, 0, 0, 1309, 39, 1, 0, 0, 0, 1310, 1321, 3, 46, 23, 0, 1311, 1312, 5, 195, 0, 0, 1312, 1313, 5, 36, 0, 0, 1313, 1318, 3, 50, 25, 0, 1314, 1315, 5, 3, 0, 0, 1315, 1317, 3, 50, 25, 0, 1316, 1314, 1, 0, 0, 0, 1317, 1320, 1, 0, 0, 0, 1318, 1316, 1, 0, 0, 0, 1318, 1319, 1, 0, 0, 0, 1319, 1322, 1, 0, 0, 0, 1320, 1318, 1, 0, 0, 0, 1321, 1311, 1, 0, 0, 0, 1321, 1322, 1, 0, 0, 0, 1322, 1328, 1, 0, 0, 0, 1323, 1324, 5, 188, 0, 0, 1324, 1326, 3, 44, 22, 0, 1325, 1327, 7, 4, 0, 0, 1326, 1325, 1, 0, 0, 0, 1326, 1327, 1, 0, 0, 0, 1327, 1329, 1, 0, 0, 0, 1328, 1323, 1, 0, 0, 0, 1328, 1329, 1, 0, 0, 0, 1329, 1343, 1, 0, 0, 0, 1330, 1331, 5, 155, 0, 0, 1331, 1344, 3, 42, 21, 0, 1332, 1333, 5, 98, 0, 0, 1333, 1335, 7, 5, 0, 0, 1334, 1336, 3, 44, 22, 0, 1335, 1334, 1, 0, 0, 0, 1335, 1336, 1, 0, 0, 0, 1336, 1337, 1, 0, 0, 0, 1337, 1341, 7, 4, 0, 0, 1338, 1342, 5, 192, 0, 0, 1339, 1340, 5, 304, 0, 0, 1340, 1342, 5, 266, 0, 0, 1341, 1338, 1, 0, 0, 0, 1341, 1339, 1, 0, 0, 0, 1342, 1344, 1, 0, 0, 0, 1343, 1330, 1, 0, 0, 0, 1343, 1332, 1, 0, 0, 0, 1343, 1344, 1, 0, 0, 0, 1344, 41, 1, 0, 0, 0, 1345, 1348, 5, 22, 0, 0, 1346, 1348, 3, 44, 22, 0, 1347, 1345, 1, 0, 0, 0, 1347, 1346, 1, 0, 0, 0, 1348, 43, 1, 0, 0, 0, 1349, 1350, 7, 6, 0, 0, 1350, 45, 1, 0, 0, 0, 1351, 1352, 6, 23, -1, 0, 1352, 1353, 3, 48, 24, 0, 1353, 1368, 1, 0, 0, 0, 1354, 1355, 10, 2, 0, 0, 1355, 1357, 5, 128, 0, 0, 1356, 1358, 3, 68, 34, 0, 1357, 1356, 1, 0, 0, 0, 1357, 1358, 1, 0, 0, 0, 1358, 1359, 1, 0, 0, 0, 1359, 1367, 3, 46, 23, 3, 1360, 1361, 10, 1, 0, 0, 1361, 1363, 7, 7, 0, 0, 1362, 1364, 3, 68, 34, 0, 1363, 1362, 1, 0, 0, 0, 1363, 1364, 1, 0, 0, 0, 1364, 1365, 1, 0, 0, 0, 1365, 1367, 3, 46, 23, 2, 1366, 1354, 1, 0, 0, 0, 1366, 1360, 1, 0, 0, 0, 1367, 1370, 1, 0, 0, 0, 1368, 1366, 1, 0, 0, 0, 1368, 1369, 1, 0, 0, 0, 1369, 47, 1, 0, 0, 0, 1370, 1368, 1, 0, 0, 0, 1371, 1388, 3, 52, 26, 0, 1372, 1373, 5, 260, 0, 0, 1373, 1388, 3, 256, 128, 0, 1374, 1375, 5, 296, 0, 0, 1375, 1380, 3, 136, 68, 0, 1376, 1377, 5, 3, 0, 0, 1377, 1379, 3, 136, 68, 0, 1378, 1376, 1, 0, 0, 0, 1379, 1382, 1, 0, 0, 0, 1380, 1378, 1, 0, 0, 0, 1380, 1381, 1, 0, 0, 0, 1381, 1388, 1, 0, 0, 0, 1382, 1380, 1, 0, 0, 0, 1383, 1384, 5, 1, 0, 0, 1384, 1385, 3, 40, 20, 0, 1385, 1386, 5, 2, 0, 0, 1386, 1388, 1, 0, 0, 0, 1387, 1371, 1, 0, 0, 0, 1387, 1372, 1, 0, 0, 0, 1387, 1374, 1, 0, 0, 0, 1387, 1383, 1, 0, 0, 0, 1388, 49, 1, 0, 0, 0, 1389, 1392, 3, 276, 138, 0, 1390, 1392, 3, 136, 68, 0, 1391, 1389, 1, 0, 0, 0, 1391, 1390, 1, 0, 0, 0, 1392, 1394, 1, 0, 0, 0, 1393, 1395, 7, 8, 0, 0, 1394, 1393, 1, 0, 0, 0, 1394, 1395, 1, 0, 0, 0, 1395, 1398, 1, 0, 0, 0, 1396, 1397, 5, 185, 0, 0, 1397, 1399, 7, 9, 0, 0, 1398, 1396, 1, 0, 0, 0, 1398, 1399, 1, 0, 0, 0, 1399, 51, 1, 0, 0, 0, 1400, 1402, 5, 248, 0, 0, 1401, 1403, 3, 68, 34, 0, 1402, 1401, 1, 0, 0, 0, 1402, 1403, 1, 0, 0, 0, 1403, 1404, 1, 0, 0, 0, 1404, 1409, 3, 70, 35, 0, 1405, 1406, 5, 3, 0, 0, 1406, 1408, 3, 70, 35, 0, 1407, 1405, 1, 0, 0, 0, 1408, 1411, 1, 0, 0, 0, 1409, 1407, 1, 0, 0, 0, 1409, 1410, 1, 0, 0, 0, 1410, 1421, 1, 0, 0, 0, 1411, 1409, 1, 0, 0, 0, 1412, 1413, 5, 105, 0, 0, 1413, 1418, 3, 72, 36, 0, 1414, 1415, 5, 3, 0, 0, 1415, 1417, 3, 72, 36, 0, 1416, 1414, 1, 0, 0, 0, 1417, 1420, 1, 0, 0, 0, 1418, 1416, 1, 0, 0, 0, 1418, 1419, 1, 0, 0, 0, 1419, 1422, 1, 0, 0, 0, 1420, 1418, 1, 0, 0, 0, 1421, 1412, 1, 0, 0, 0, 1421, 1422, 1, 0, 0, 0, 1422, 1425, 1, 0, 0, 0, 1423, 1424, 5, 301, 0, 0, 1424, 1426, 3, 138, 69, 0, 1425, 1423, 1, 0, 0, 0, 1425, 1426, 1, 0, 0, 0, 1426, 1430, 1, 0, 0, 0, 1427, 1428, 5, 114, 0, 0, 1428, 1429, 5, 36, 0, 0, 1429, 1431, 3, 54, 27, 0, 1430, 1427, 1, 0, 0, 0, 1430, 1431, 1, 0, 0, 0, 1431, 1434, 1, 0, 0, 0, 1432, 1433, 5, 117, 0, 0, 1433, 1435, 3, 138, 69, 0, 1434, 1432, 1, 0, 0, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1445, 1, 0, 0, 0, 1436, 1437, 5, 303, 0, 0, 1437, 1442, 3, 62, 31, 0, 1438, 1439, 5, 3, 0, 0, 1439, 1441, 3, 62, 31, 0, 1440, 1438, 1, 0, 0, 0, 1441, 1444, 1, 0, 0, 0, 1442, 1440, 1, 0, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1446, 1, 0, 0, 0, 1444, 1442, 1, 0, 0, 0, 1445, 1436, 1, 0, 0, 0, 1445, 1446, 1, 0, 0, 0, 1446, 53, 1, 0, 0, 0, 1447, 1449, 3, 68, 34, 0, 1448, 1447, 1, 0, 0, 0, 1448, 1449, 1, 0, 0, 0, 1449, 1450, 1, 0, 0, 0, 1450, 1455, 3, 56, 28, 0, 1451, 1452, 5, 3, 0, 0, 1452, 1454, 3, 56, 28, 0, 1453, 1451, 1, 0, 0, 0, 1454, 1457, 1, 0, 0, 0, 1455, 1453, 1, 0, 0, 0, 1455, 1456, 1, 0, 0, 0, 1456, 55, 1, 0, 0, 0, 1457, 1455, 1, 0, 0, 0, 1458, 1499, 3, 58, 29, 0, 1459, 1460, 5, 238, 0, 0, 1460, 1469, 5, 1, 0, 0, 1461, 1466, 3, 58, 29, 0, 1462, 1463, 5, 3, 0, 0, 1463, 1465, 3, 58, 29, 0, 1464, 1462, 1, 0, 0, 0, 1465, 1468, 1, 0, 0, 0, 1466, 1464, 1, 0, 0, 0, 1466, 1467, 1, 0, 0, 0, 1467, 1470, 1, 0, 0, 0, 1468, 1466, 1, 0, 0, 0, 1469, 1461, 1, 0, 0, 0, 1469, 1470, 1, 0, 0, 0, 1470, 1471, 1, 0, 0, 0, 1471, 1499, 5, 2, 0, 0, 1472, 1473, 5, 55, 0, 0, 1473, 1482, 5, 1, 0, 0, 1474, 1479, 3, 58, 29, 0, 1475, 1476, 5, 3, 0, 0, 1476, 1478, 3, 58, 29, 0, 1477, 1475, 1, 0, 0, 0, 1478, 1481, 1, 0, 0, 0, 1479, 1477, 1, 0, 0, 0, 1479, 1480, 1, 0, 0, 0, 1480, 1483, 1, 0, 0, 0, 1481, 1479, 1, 0, 0, 0, 1482, 1474, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1499, 5, 2, 0, 0, 1485, 1486, 5, 115, 0, 0, 1486, 1487, 5, 252, 0, 0, 1487, 1488, 5, 1, 0, 0, 1488, 1493, 3, 58, 29, 0, 1489, 1490, 5, 3, 0, 0, 1490, 1492, 3, 58, 29, 0, 1491, 1489, 1, 0, 0, 0, 1492, 1495, 1, 0, 0, 0, 1493, 1491, 1, 0, 0, 0, 1493, 1494, 1, 0, 0, 0, 1494, 1496, 1, 0, 0, 0, 1495, 1493, 1, 0, 0, 0, 1496, 1497, 5, 2, 0, 0, 1497, 1499, 1, 0, 0, 0, 1498, 1458, 1, 0, 0, 0, 1498, 1459, 1, 0, 0, 0, 1498, 1472, 1, 0, 0, 0, 1498, 1485, 1, 0, 0, 0, 1499, 57, 1, 0, 0, 0, 1500, 1509, 5, 1, 0, 0, 1501, 1506, 3, 60, 30, 0, 1502, 1503, 5, 3, 0, 0, 1503, 1505, 3, 60, 30, 0, 1504, 1502, 1, 0, 0, 0, 1505, 1508, 1, 0, 0, 0, 1506, 1504, 1, 0, 0, 0, 1506, 1507, 1, 0, 0, 0, 1507, 1510, 1, 0, 0, 0, 1508, 1506, 1, 0, 0, 0, 1509, 1501, 1, 0, 0, 0, 1509, 1510, 1, 0, 0, 0, 1510, 1511, 1, 0, 0, 0, 1511, 1514, 5, 2, 0, 0, 1512, 1514, 3, 60, 30, 0, 1513, 1500, 1, 0, 0, 0, 1513, 1512, 1, 0, 0, 0, 1514, 59, 1, 0, 0, 0, 1515, 1518, 3, 276, 138, 0, 1516, 1518, 3, 136, 68, 0, 1517, 1515, 1, 0, 0, 0, 1517, 1516, 1, 0, 0, 0, 1518, 61, 1, 0, 0, 0, 1519, 1520, 3, 294, 147, 0, 1520, 1521, 5, 28, 0, 0, 1521, 1522, 5, 1, 0, 0, 1522, 1523, 3, 64, 32, 0, 1523, 1524, 5, 2, 0, 0, 1524, 63, 1, 0, 0, 0, 1525, 1527, 3, 294, 147, 0, 1526, 1525, 1, 0, 0, 0, 1526, 1527, 1, 0, 0, 0, 1527, 1538, 1, 0, 0, 0, 1528, 1529, 5, 201, 0, 0, 1529, 1530, 5, 36, 0, 0, 1530, 1535, 3, 136, 68, 0, 1531, 1532, 5, 3, 0, 0, 1532, 1534, 3, 136, 68, 0, 1533, 1531, 1, 0, 0, 0, 1534, 1537, 1, 0, 0, 0, 1535, 1533, 1, 0, 0, 0, 1535, 1536, 1, 0, 0, 0, 1536, 1539, 1, 0, 0, 0, 1537, 1535, 1, 0, 0, 0, 1538, 1528, 1, 0, 0, 0, 1538, 1539, 1, 0, 0, 0, 1539, 1550, 1, 0, 0, 0, 1540, 1541, 5, 195, 0, 0, 1541, 1542, 5, 36, 0, 0, 1542, 1547, 3, 50, 25, 0, 1543, 1544, 5, 3, 0, 0, 1544, 1546, 3, 50, 25, 0, 1545, 1543, 1, 0, 0, 0, 1546, 1549, 1, 0, 0, 0, 1547, 1545, 1, 0, 0, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1551, 1, 0, 0, 0, 1549, 1547, 1, 0, 0, 0, 1550, 1540, 1, 0, 0, 0, 1550, 1551, 1, 0, 0, 0, 1551, 1553, 1, 0, 0, 0, 1552, 1554, 3, 198, 99, 0, 1553, 1552, 1, 0, 0, 0, 1553, 1554, 1, 0, 0, 0, 1554, 65, 1, 0, 0, 0, 1555, 1557, 3, 294, 147, 0, 1556, 1558, 3, 108, 54, 0, 1557, 1556, 1, 0, 0, 0, 1557, 1558, 1, 0, 0, 0, 1558, 1559, 1, 0, 0, 0, 1559, 1560, 5, 28, 0, 0, 1560, 1561, 5, 1, 0, 0, 1561, 1562, 3, 22, 11, 0, 1562, 1563, 5, 2, 0, 0, 1563, 67, 1, 0, 0, 0, 1564, 1565, 7, 10, 0, 0, 1565, 69, 1, 0, 0, 0, 1566, 1569, 3, 276, 138, 0, 1567, 1569, 3, 136, 68, 0, 1568, 1566, 1, 0, 0, 0, 1568, 1567, 1, 0, 0, 0, 1569, 1574, 1, 0, 0, 0, 1570, 1572, 5, 28, 0, 0, 1571, 1570, 1, 0, 0, 0, 1571, 1572, 1, 0, 0, 0, 1572, 1573, 1, 0, 0, 0, 1573, 1575, 3, 294, 147, 0, 1574, 1571, 1, 0, 0, 0, 1574, 1575, 1, 0, 0, 0, 1575, 1585, 1, 0, 0, 0, 1576, 1577, 3, 144, 72, 0, 1577, 1578, 5, 4, 0, 0, 1578, 1581, 5, 320, 0, 0, 1579, 1580, 5, 28, 0, 0, 1580, 1582, 3, 108, 54, 0, 1581, 1579, 1, 0, 0, 0, 1581, 1582, 1, 0, 0, 0, 1582, 1585, 1, 0, 0, 0, 1583, 1585, 5, 320, 0, 0, 1584, 1568, 1, 0, 0, 0, 1584, 1576, 1, 0, 0, 0, 1584, 1583, 1, 0, 0, 0, 1585, 71, 1, 0, 0, 0, 1586, 1587, 6, 36, -1, 0, 1587, 1588, 3, 78, 39, 0, 1588, 1607, 1, 0, 0, 0, 1589, 1603, 10, 2, 0, 0, 1590, 1591, 5, 54, 0, 0, 1591, 1592, 5, 136, 0, 0, 1592, 1604, 3, 78, 39, 0, 1593, 1594, 3, 74, 37, 0, 1594, 1595, 5, 136, 0, 0, 1595, 1596, 3, 72, 36, 0, 1596, 1597, 3, 76, 38, 0, 1597, 1604, 1, 0, 0, 0, 1598, 1599, 5, 172, 0, 0, 1599, 1600, 3, 74, 37, 0, 1600, 1601, 5, 136, 0, 0, 1601, 1602, 3, 78, 39, 0, 1602, 1604, 1, 0, 0, 0, 1603, 1590, 1, 0, 0, 0, 1603, 1593, 1, 0, 0, 0, 1603, 1598, 1, 0, 0, 0, 1604, 1606, 1, 0, 0, 0, 1605, 1589, 1, 0, 0, 0, 1606, 1609, 1, 0, 0, 0, 1607, 1605, 1, 0, 0, 0, 1607, 1608, 1, 0, 0, 0, 1608, 73, 1, 0, 0, 0, 1609, 1607, 1, 0, 0, 0, 1610, 1612, 5, 125, 0, 0, 1611, 1610, 1, 0, 0, 0, 1611, 1612, 1, 0, 0, 0, 1612, 1626, 1, 0, 0, 0, 1613, 1615, 5, 152, 0, 0, 1614, 1616, 5, 197, 0, 0, 1615, 1614, 1, 0, 0, 0, 1615, 1616, 1, 0, 0, 0, 1616, 1626, 1, 0, 0, 0, 1617, 1619, 5, 234, 0, 0, 1618, 1620, 5, 197, 0, 0, 1619, 1618, 1, 0, 0, 0, 1619, 1620, 1, 0, 0, 0, 1620, 1626, 1, 0, 0, 0, 1621, 1623, 5, 106, 0, 0, 1622, 1624, 5, 197, 0, 0, 1623, 1622, 1, 0, 0, 0, 1623, 1624, 1, 0, 0, 0, 1624, 1626, 1, 0, 0, 0, 1625, 1611, 1, 0, 0, 0, 1625, 1613, 1, 0, 0, 0, 1625, 1617, 1, 0, 0, 0, 1625, 1621, 1, 0, 0, 0, 1626, 75, 1, 0, 0, 0, 1627, 1628, 5, 190, 0, 0, 1628, 1642, 3, 138, 69, 0, 1629, 1630, 5, 290, 0, 0, 1630, 1631, 5, 1, 0, 0, 1631, 1636, 3, 294, 147, 0, 1632, 1633, 5, 3, 0, 0, 1633, 1635, 3, 294, 147, 0, 1634, 1632, 1, 0, 0, 0, 1635, 1638, 1, 0, 0, 0, 1636, 1634, 1, 0, 0, 0, 1636, 1637, 1, 0, 0, 0, 1637, 1639, 1, 0, 0, 0, 1638, 1636, 1, 0, 0, 0, 1639, 1640, 5, 2, 0, 0, 1640, 1642, 1, 0, 0, 0, 1641, 1627, 1, 0, 0, 0, 1641, 1629, 1, 0, 0, 0, 1642, 77, 1, 0, 0, 0, 1643, 1650, 3, 88, 44, 0, 1644, 1645, 5, 262, 0, 0, 1645, 1646, 3, 80, 40, 0, 1646, 1647, 5, 1, 0, 0, 1647, 1648, 3, 136, 68, 0, 1648, 1649, 5, 2, 0, 0, 1649, 1651, 1, 0, 0, 0, 1650, 1644, 1, 0, 0, 0, 1650, 1651, 1, 0, 0, 0, 1651, 79, 1, 0, 0, 0, 1652, 1653, 7, 11, 0, 0, 1653, 81, 1, 0, 0, 0, 1654, 1655, 7, 12, 0, 0, 1655, 83, 1, 0, 0, 0, 1656, 1663, 5, 89, 0, 0, 1657, 1659, 5, 274, 0, 0, 1658, 1660, 3, 168, 84, 0, 1659, 1658, 1, 0, 0, 0, 1659, 1660, 1, 0, 0, 0, 1660, 1661, 1, 0, 0, 0, 1661, 1663, 3, 86, 43, 0, 1662, 1656, 1, 0, 0, 0, 1662, 1657, 1, 0, 0, 0, 1663, 85, 1, 0, 0, 0, 1664, 1665, 5, 304, 0, 0, 1665, 1669, 5, 51, 0, 0, 1666, 1667, 5, 306, 0, 0, 1667, 1669, 5, 51, 0, 0, 1668, 1664, 1, 0, 0, 0, 1668, 1666, 1, 0, 0, 0, 1669, 87, 1, 0, 0, 0, 1670, 1753, 3, 102, 51, 0, 1671, 1672, 5, 166, 0, 0, 1672, 1683, 5, 1, 0, 0, 1673, 1674, 5, 201, 0, 0, 1674, 1675, 5, 36, 0, 0, 1675, 1680, 3, 136, 68, 0, 1676, 1677, 5, 3, 0, 0, 1677, 1679, 3, 136, 68, 0, 1678, 1676, 1, 0, 0, 0, 1679, 1682, 1, 0, 0, 0, 1680, 1678, 1, 0, 0, 0, 1680, 1681, 1, 0, 0, 0, 1681, 1684, 1, 0, 0, 0, 1682, 1680, 1, 0, 0, 0, 1683, 1673, 1, 0, 0, 0, 1683, 1684, 1, 0, 0, 0, 1684, 1695, 1, 0, 0, 0, 1685, 1686, 5, 195, 0, 0, 1686, 1687, 5, 36, 0, 0, 1687, 1692, 3, 50, 25, 0, 1688, 1689, 5, 3, 0, 0, 1689, 1691, 3, 50, 25, 0, 1690, 1688, 1, 0, 0, 0, 1691, 1694, 1, 0, 0, 0, 1692, 1690, 1, 0, 0, 0, 1692, 1693, 1, 0, 0, 0, 1693, 1696, 1, 0, 0, 0, 1694, 1692, 1, 0, 0, 0, 1695, 1685, 1, 0, 0, 0, 1695, 1696, 1, 0, 0, 0, 1696, 1706, 1, 0, 0, 0, 1697, 1698, 5, 168, 0, 0, 1698, 1703, 3, 90, 45, 0, 1699, 1700, 5, 3, 0, 0, 1700, 1702, 3, 90, 45, 0, 1701, 1699, 1, 0, 0, 0, 1702, 1705, 1, 0, 0, 0, 1703, 1701, 1, 0, 0, 0, 1703, 1704, 1, 0, 0, 0, 1704, 1707, 1, 0, 0, 0, 1705, 1703, 1, 0, 0, 0, 1706, 1697, 1, 0, 0, 0, 1706, 1707, 1, 0, 0, 0, 1707, 1709, 1, 0, 0, 0, 1708, 1710, 3, 92, 46, 0, 1709, 1708, 1, 0, 0, 0, 1709, 1710, 1, 0, 0, 0, 1710, 1714, 1, 0, 0, 0, 1711, 1712, 5, 21, 0, 0, 1712, 1713, 5, 163, 0, 0, 1713, 1715, 3, 96, 48, 0, 1714, 1711, 1, 0, 0, 0, 1714, 1715, 1, 0, 0, 0, 1715, 1717, 1, 0, 0, 0, 1716, 1718, 7, 13, 0, 0, 1717, 1716, 1, 0, 0, 0, 1717, 1718, 1, 0, 0, 0, 1718, 1719, 1, 0, 0, 0, 1719, 1720, 5, 206, 0, 0, 1720, 1721, 5, 1, 0, 0, 1721, 1722, 3, 204, 102, 0, 1722, 1732, 5, 2, 0, 0, 1723, 1724, 5, 257, 0, 0, 1724, 1729, 3, 98, 49, 0, 1725, 1726, 5, 3, 0, 0, 1726, 1728, 3, 98, 49, 0, 1727, 1725, 1, 0, 0, 0, 1728, 1731, 1, 0, 0, 0, 1729, 1727, 1, 0, 0, 0, 1729, 1730, 1, 0, 0, 0, 1730, 1733, 1, 0, 0, 0, 1731, 1729, 1, 0, 0, 0, 1732, 1723, 1, 0, 0, 0, 1732, 1733, 1, 0, 0, 0, 1733, 1734, 1, 0, 0, 0, 1734, 1735, 5, 71, 0, 0, 1735, 1740, 3, 100, 50, 0, 1736, 1737, 5, 3, 0, 0, 1737, 1739, 3, 100, 50, 0, 1738, 1736, 1, 0, 0, 0, 1739, 1742, 1, 0, 0, 0, 1740, 1738, 1, 0, 0, 0, 1740, 1741, 1, 0, 0, 0, 1741, 1743, 1, 0, 0, 0, 1742, 1740, 1, 0, 0, 0, 1743, 1751, 5, 2, 0, 0, 1744, 1746, 5, 28, 0, 0, 1745, 1744, 1, 0, 0, 0, 1745, 1746, 1, 0, 0, 0, 1746, 1747, 1, 0, 0, 0, 1747, 1749, 3, 294, 147, 0, 1748, 1750, 3, 108, 54, 0, 1749, 1748, 1, 0, 0, 0, 1749, 1750, 1, 0, 0, 0, 1750, 1752, 1, 0, 0, 0, 1751, 1745, 1, 0, 0, 0, 1751, 1752, 1, 0, 0, 0, 1752, 1754, 1, 0, 0, 0, 1753, 1671, 1, 0, 0, 0, 1753, 1754, 1, 0, 0, 0, 1754, 89, 1, 0, 0, 0, 1755, 1756, 3, 136, 68, 0, 1756, 1757, 5, 28, 0, 0, 1757, 1758, 3, 294, 147, 0, 1758, 91, 1, 0, 0, 0, 1759, 1760, 5, 191, 0, 0, 1760, 1761, 5, 239, 0, 0, 1761, 1762, 5, 207, 0, 0, 1762, 1771, 5, 163, 0, 0, 1763, 1764, 5, 22, 0, 0, 1764, 1765, 5, 240, 0, 0, 1765, 1766, 5, 207, 0, 0, 1766, 1768, 5, 163, 0, 0, 1767, 1769, 3, 94, 47, 0, 1768, 1767, 1, 0, 0, 0, 1768, 1769, 1, 0, 0, 0, 1769, 1771, 1, 0, 0, 0, 1770, 1759, 1, 0, 0, 0, 1770, 1763, 1, 0, 0, 0, 1771, 93, 1, 0, 0, 0, 1772, 1773, 5, 253, 0, 0, 1773, 1774, 5, 85, 0, 0, 1774, 1782, 5, 165, 0, 0, 1775, 1776, 5, 189, 0, 0, 1776, 1777, 5, 85, 0, 0, 1777, 1782, 5, 165, 0, 0, 1778, 1779, 5, 304, 0, 0, 1779, 1780, 5, 284, 0, 0, 1780, 1782, 5, 240, 0, 0, 1781, 1772, 1, 0, 0, 0, 1781, 1775, 1, 0, 0, 0, 1781, 1778, 1, 0, 0, 0, 1782, 95, 1, 0, 0, 0, 1783, 1784, 5, 5, 0, 0, 1784, 1785, 5, 269, 0, 0, 1785, 1786, 5, 174, 0, 0, 1786, 1803, 5, 239, 0, 0, 1787, 1788, 5, 5, 0, 0, 1788, 1789, 5, 204, 0, 0, 1789, 1790, 5, 148, 0, 0, 1790, 1803, 5, 239, 0, 0, 1791, 1792, 5, 5, 0, 0, 1792, 1793, 5, 269, 0, 0, 1793, 1794, 5, 101, 0, 0, 1794, 1803, 3, 294, 147, 0, 1795, 1796, 5, 5, 0, 0, 1796, 1797, 5, 269, 0, 0, 1797, 1798, 5, 148, 0, 0, 1798, 1803, 3, 294, 147, 0, 1799, 1800, 5, 5, 0, 0, 1800, 1801, 5, 269, 0, 0, 1801, 1803, 3, 294, 147, 0, 1802, 1783, 1, 0, 0, 0, 1802, 1787, 1, 0, 0, 0, 1802, 1791, 1, 0, 0, 0, 1802, 1795, 1, 0, 0, 0, 1802, 1799, 1, 0, 0, 0, 1803, 97, 1, 0, 0, 0, 1804, 1805, 3, 294, 147, 0, 1805, 1806, 5, 312, 0, 0, 1806, 1807, 5, 1, 0, 0, 1807, 1812, 3, 294, 147, 0, 1808, 1809, 5, 3, 0, 0, 1809, 1811, 3, 294, 147, 0, 1810, 1808, 1, 0, 0, 0, 1811, 1814, 1, 0, 0, 0, 1812, 1810, 1, 0, 0, 0, 1812, 1813, 1, 0, 0, 0, 1813, 1815, 1, 0, 0, 0, 1814, 1812, 1, 0, 0, 0, 1815, 1816, 5, 2, 0, 0, 1816, 99, 1, 0, 0, 0, 1817, 1818, 3, 294, 147, 0, 1818, 1819, 5, 28, 0, 0, 1819, 1820, 3, 136, 68, 0, 1820, 101, 1, 0, 0, 0, 1821, 1829, 3, 110, 55, 0, 1822, 1824, 5, 28, 0, 0, 1823, 1822, 1, 0, 0, 0, 1823, 1824, 1, 0, 0, 0, 1824, 1825, 1, 0, 0, 0, 1825, 1827, 3, 294, 147, 0, 1826, 1828, 3, 108, 54, 0, 1827, 1826, 1, 0, 0, 0, 1827, 1828, 1, 0, 0, 0, 1828, 1830, 1, 0, 0, 0, 1829, 1823, 1, 0, 0, 0, 1829, 1830, 1, 0, 0, 0, 1830, 103, 1, 0, 0, 0, 1831, 1832, 5, 1, 0, 0, 1832, 1837, 3, 278, 139, 0, 1833, 1834, 5, 3, 0, 0, 1834, 1836, 3, 278, 139, 0, 1835, 1833, 1, 0, 0, 0, 1836, 1839, 1, 0, 0, 0, 1837, 1835, 1, 0, 0, 0, 1837, 1838, 1, 0, 0, 0, 1838, 1840, 1, 0, 0, 0, 1839, 1837, 1, 0, 0, 0, 1840, 1841, 5, 2, 0, 0, 1841, 105, 1, 0, 0, 0, 1842, 1843, 5, 1, 0, 0, 1843, 1848, 3, 276, 138, 0, 1844, 1845, 5, 3, 0, 0, 1845, 1847, 3, 276, 138, 0, 1846, 1844, 1, 0, 0, 0, 1847, 1850, 1, 0, 0, 0, 1848, 1846, 1, 0, 0, 0, 1848, 1849, 1, 0, 0, 0, 1849, 1851, 1, 0, 0, 0, 1850, 1848, 1, 0, 0, 0, 1851, 1852, 5, 2, 0, 0, 1852, 107, 1, 0, 0, 0, 1853, 1854, 5, 1, 0, 0, 1854, 1859, 3, 294, 147, 0, 1855, 1856, 5, 3, 0, 0, 1856, 1858, 3, 294, 147, 0, 1857, 1855, 1, 0, 0, 0, 1858, 1861, 1, 0, 0, 0, 1859, 1857, 1, 0, 0, 0, 1859, 1860, 1, 0, 0, 0, 1860, 1862, 1, 0, 0, 0, 1861, 1859, 1, 0, 0, 0, 1862, 1863, 5, 2, 0, 0, 1863, 109, 1, 0, 0, 0, 1864, 1866, 3, 254, 127, 0, 1865, 1867, 3, 282, 141, 0, 1866, 1865, 1, 0, 0, 0, 1866, 1867, 1, 0, 0, 0, 1867, 1936, 1, 0, 0, 0, 1868, 1869, 5, 1, 0, 0, 1869, 1870, 3, 22, 11, 0, 1870, 1871, 5, 2, 0, 0, 1871, 1936, 1, 0, 0, 0, 1872, 1873, 5, 285, 0, 0, 1873, 1874, 5, 1, 0, 0, 1874, 1879, 3, 136, 68, 0, 1875, 1876, 5, 3, 0, 0, 1876, 1878, 3, 136, 68, 0, 1877, 1875, 1, 0, 0, 0, 1878, 1881, 1, 0, 0, 0, 1879, 1877, 1, 0, 0, 0, 1879, 1880, 1, 0, 0, 0, 1880, 1882, 1, 0, 0, 0, 1881, 1879, 1, 0, 0, 0, 1882, 1885, 5, 2, 0, 0, 1883, 1884, 5, 304, 0, 0, 1884, 1886, 5, 196, 0, 0, 1885, 1883, 1, 0, 0, 0, 1885, 1886, 1, 0, 0, 0, 1886, 1936, 1, 0, 0, 0, 1887, 1888, 5, 149, 0, 0, 1888, 1889, 5, 1, 0, 0, 1889, 1890, 3, 22, 11, 0, 1890, 1891, 5, 2, 0, 0, 1891, 1936, 1, 0, 0, 0, 1892, 1893, 5, 260, 0, 0, 1893, 1894, 5, 1, 0, 0, 1894, 1895, 3, 122, 61, 0, 1895, 1896, 5, 2, 0, 0, 1896, 1936, 1, 0, 0, 0, 1897, 1898, 5, 1, 0, 0, 1898, 1899, 3, 72, 36, 0, 1899, 1900, 5, 2, 0, 0, 1900, 1936, 1, 0, 0, 0, 1901, 1902, 5, 142, 0, 0, 1902, 1903, 5, 1, 0, 0, 1903, 1904, 3, 146, 73, 0, 1904, 1905, 5, 45, 0, 0, 1905, 1906, 5, 1, 0, 0, 1906, 1911, 3, 112, 56, 0, 1907, 1908, 5, 3, 0, 0, 1908, 1910, 3, 112, 56, 0, 1909, 1907, 1, 0, 0, 0, 1910, 1913, 1, 0, 0, 0, 1911, 1909, 1, 0, 0, 0, 1911, 1912, 1, 0, 0, 0, 1912, 1914, 1, 0, 0, 0, 1913, 1911, 1, 0, 0, 0, 1914, 1926, 5, 2, 0, 0, 1915, 1916, 5, 210, 0, 0, 1916, 1917, 5, 1, 0, 0, 1917, 1918, 3, 114, 57, 0, 1918, 1919, 5, 2, 0, 0, 1919, 1927, 1, 0, 0, 0, 1920, 1921, 5, 210, 0, 0, 1921, 1922, 5, 70, 0, 0, 1922, 1923, 5, 1, 0, 0, 1923, 1924, 3, 120, 60, 0, 1924, 1925, 5, 2, 0, 0, 1925, 1927, 1, 0, 0, 0, 1926, 1915, 1, 0, 0, 0, 1926, 1920, 1, 0, 0, 0, 1926, 1927, 1, 0, 0, 0, 1927, 1931, 1, 0, 0, 0, 1928, 1929, 7, 14, 0, 0, 1929, 1930, 5, 190, 0, 0, 1930, 1932, 5, 89, 0, 0, 1931, 1928, 1, 0, 0, 0, 1931, 1932, 1, 0, 0, 0, 1932, 1933, 1, 0, 0, 0, 1933, 1934, 5, 2, 0, 0, 1934, 1936, 1, 0, 0, 0, 1935, 1864, 1, 0, 0, 0, 1935, 1868, 1, 0, 0, 0, 1935, 1872, 1, 0, 0, 0, 1935, 1887, 1, 0, 0, 0, 1935, 1892, 1, 0, 0, 0, 1935, 1897, 1, 0, 0, 0, 1935, 1901, 1, 0, 0, 0, 1936, 111, 1, 0, 0, 0, 1937, 1938, 3, 294, 147, 0, 1938, 1939, 5, 103, 0, 0, 1939, 1940, 5, 196, 0, 0, 1940, 2015, 1, 0, 0, 0, 1941, 1942, 3, 294, 147, 0, 1942, 1945, 3, 184, 92, 0, 1943, 1944, 5, 205, 0, 0, 1944, 1946, 3, 168, 84, 0, 1945, 1943, 1, 0, 0, 0, 1945, 1946, 1, 0, 0, 0, 1946, 1951, 1, 0, 0, 0, 1947, 1948, 3, 156, 78, 0, 1948, 1949, 5, 190, 0, 0, 1949, 1950, 5, 85, 0, 0, 1950, 1952, 1, 0, 0, 0, 1951, 1947, 1, 0, 0, 0, 1951, 1952, 1, 0, 0, 0, 1952, 1957, 1, 0, 0, 0, 1953, 1954, 3, 156, 78, 0, 1954, 1955, 5, 190, 0, 0, 1955, 1956, 5, 89, 0, 0, 1956, 1958, 1, 0, 0, 0, 1957, 1953, 1, 0, 0, 0, 1957, 1958, 1, 0, 0, 0, 1958, 2015, 1, 0, 0, 0, 1959, 1960, 3, 294, 147, 0, 1960, 1961, 3, 184, 92, 0, 1961, 1962, 5, 104, 0, 0, 1962, 1965, 3, 150, 75, 0, 1963, 1964, 5, 205, 0, 0, 1964, 1966, 3, 168, 84, 0, 1965, 1963, 1, 0, 0, 0, 1965, 1966, 1, 0, 0, 0, 1966, 1970, 1, 0, 0, 0, 1967, 1968, 3, 158, 79, 0, 1968, 1969, 5, 308, 0, 0, 1969, 1971, 1, 0, 0, 0, 1970, 1967, 1, 0, 0, 0, 1970, 1971, 1, 0, 0, 0, 1971, 1979, 1, 0, 0, 0, 1972, 1973, 7, 15, 0, 0, 1973, 1977, 5, 218, 0, 0, 1974, 1975, 5, 190, 0, 0, 1975, 1976, 5, 242, 0, 0, 1976, 1978, 5, 264, 0, 0, 1977, 1974, 1, 0, 0, 0, 1977, 1978, 1, 0, 0, 0, 1978, 1980, 1, 0, 0, 0, 1979, 1972, 1, 0, 0, 0, 1979, 1980, 1, 0, 0, 0, 1980, 1985, 1, 0, 0, 0, 1981, 1982, 3, 160, 80, 0, 1982, 1983, 5, 190, 0, 0, 1983, 1984, 5, 85, 0, 0, 1984, 1986, 1, 0, 0, 0, 1985, 1981, 1, 0, 0, 0, 1985, 1986, 1, 0, 0, 0, 1986, 1991, 1, 0, 0, 0, 1987, 1988, 3, 160, 80, 0, 1988, 1989, 5, 190, 0, 0, 1989, 1990, 5, 89, 0, 0, 1990, 1992, 1, 0, 0, 0, 1991, 1987, 1, 0, 0, 0, 1991, 1992, 1, 0, 0, 0, 1992, 2015, 1, 0, 0, 0, 1993, 1995, 5, 173, 0, 0, 1994, 1996, 5, 205, 0, 0, 1995, 1994, 1, 0, 0, 0, 1995, 1996, 1, 0, 0, 0, 1996, 1997, 1, 0, 0, 0, 1997, 2000, 3, 168, 84, 0, 1998, 1999, 5, 28, 0, 0, 1999, 2001, 3, 294, 147, 0, 2000, 1998, 1, 0, 0, 0, 2000, 2001, 1, 0, 0, 0, 2001, 2002, 1, 0, 0, 0, 2002, 2003, 5, 45, 0, 0, 2003, 2004, 5, 1, 0, 0, 2004, 2009, 3, 112, 56, 0, 2005, 2006, 5, 3, 0, 0, 2006, 2008, 3, 112, 56, 0, 2007, 2005, 1, 0, 0, 0, 2008, 2011, 1, 0, 0, 0, 2009, 2007, 1, 0, 0, 0, 2009, 2010, 1, 0, 0, 0, 2010, 2012, 1, 0, 0, 0, 2011, 2009, 1, 0, 0, 0, 2012, 2013, 5, 2, 0, 0, 2013, 2015, 1, 0, 0, 0, 2014, 1937, 1, 0, 0, 0, 2014, 1941, 1, 0, 0, 0, 2014, 1959, 1, 0, 0, 0, 2014, 1993, 1, 0, 0, 0, 2015, 113, 1, 0, 0, 0, 2016, 2042, 3, 116, 58, 0, 2017, 2018, 3, 116, 58, 0, 2018, 2019, 7, 16, 0, 0, 2019, 2020, 3, 118, 59, 0, 2020, 2042, 1, 0, 0, 0, 2021, 2022, 3, 118, 59, 0, 2022, 2023, 5, 281, 0, 0, 2023, 2028, 3, 118, 59, 0, 2024, 2025, 5, 281, 0, 0, 2025, 2027, 3, 118, 59, 0, 2026, 2024, 1, 0, 0, 0, 2027, 2030, 1, 0, 0, 0, 2028, 2026, 1, 0, 0, 0, 2028, 2029, 1, 0, 0, 0, 2029, 2042, 1, 0, 0, 0, 2030, 2028, 1, 0, 0, 0, 2031, 2032, 3, 118, 59, 0, 2032, 2033, 5, 54, 0, 0, 2033, 2038, 3, 118, 59, 0, 2034, 2035, 5, 54, 0, 0, 2035, 2037, 3, 118, 59, 0, 2036, 2034, 1, 0, 0, 0, 2037, 2040, 1, 0, 0, 0, 2038, 2036, 1, 0, 0, 0, 2038, 2039, 1, 0, 0, 0, 2039, 2042, 1, 0, 0, 0, 2040, 2038, 1, 0, 0, 0, 2041, 2016, 1, 0, 0, 0, 2041, 2017, 1, 0, 0, 0, 2041, 2021, 1, 0, 0, 0, 2041, 2031, 1, 0, 0, 0, 2042, 115, 1, 0, 0, 0, 2043, 2044, 3, 294, 147, 0, 2044, 117, 1, 0, 0, 0, 2045, 2051, 3, 116, 58, 0, 2046, 2047, 5, 1, 0, 0, 2047, 2048, 3, 114, 57, 0, 2048, 2049, 5, 2, 0, 0, 2049, 2051, 1, 0, 0, 0, 2050, 2045, 1, 0, 0, 0, 2050, 2046, 1, 0, 0, 0, 2051, 119, 1, 0, 0, 0, 2052, 2055, 7, 16, 0, 0, 2053, 2054, 5, 3, 0, 0, 2054, 2056, 7, 17, 0, 0, 2055, 2053, 1, 0, 0, 0, 2055, 2056, 1, 0, 0, 0, 2056, 2063, 1, 0, 0, 0, 2057, 2060, 7, 17, 0, 0, 2058, 2059, 5, 3, 0, 0, 2059, 2061, 7, 16, 0, 0, 2060, 2058, 1, 0, 0, 0, 2060, 2061, 1, 0, 0, 0, 2061, 2063, 1, 0, 0, 0, 2062, 2052, 1, 0, 0, 0, 2062, 2057, 1, 0, 0, 0, 2063, 121, 1, 0, 0, 0, 2064, 2065, 3, 272, 136, 0, 2065, 2074, 5, 1, 0, 0, 2066, 2071, 3, 124, 62, 0, 2067, 2068, 5, 3, 0, 0, 2068, 2070, 3, 124, 62, 0, 2069, 2067, 1, 0, 0, 0, 2070, 2073, 1, 0, 0, 0, 2071, 2069, 1, 0, 0, 0, 2071, 2072, 1, 0, 0, 0, 2072, 2075, 1, 0, 0, 0, 2073, 2071, 1, 0, 0, 0, 2074, 2066, 1, 0, 0, 0, 2074, 2075, 1, 0, 0, 0, 2075, 2085, 1, 0, 0, 0, 2076, 2077, 5, 52, 0, 0, 2077, 2082, 3, 134, 67, 0, 2078, 2079, 5, 3, 0, 0, 2079, 2081, 3, 134, 67, 0, 2080, 2078, 1, 0, 0, 0, 2081, 2084, 1, 0, 0, 0, 2082, 2080, 1, 0, 0, 0, 2082, 2083, 1, 0, 0, 0, 2083, 2086, 1, 0, 0, 0, 2084, 2082, 1, 0, 0, 0, 2085, 2076, 1, 0, 0, 0, 2085, 2086, 1, 0, 0, 0, 2086, 2087, 1, 0, 0, 0, 2087, 2088, 5, 2, 0, 0, 2088, 123, 1, 0, 0, 0, 2089, 2090, 3, 294, 147, 0, 2090, 2091, 5, 6, 0, 0, 2091, 2093, 1, 0, 0, 0, 2092, 2089, 1, 0, 0, 0, 2092, 2093, 1, 0, 0, 0, 2093, 2097, 1, 0, 0, 0, 2094, 2098, 3, 126, 63, 0, 2095, 2098, 3, 130, 65, 0, 2096, 2098, 3, 136, 68, 0, 2097, 2094, 1, 0, 0, 0, 2097, 2095, 1, 0, 0, 0, 2097, 2096, 1, 0, 0, 0, 2098, 125, 1, 0, 0, 0, 2099, 2117, 3, 128, 64, 0, 2100, 2101, 5, 201, 0, 0, 2101, 2115, 5, 36, 0, 0, 2102, 2111, 5, 1, 0, 0, 2103, 2108, 3, 136, 68, 0, 2104, 2105, 5, 3, 0, 0, 2105, 2107, 3, 136, 68, 0, 2106, 2104, 1, 0, 0, 0, 2107, 2110, 1, 0, 0, 0, 2108, 2106, 1, 0, 0, 0, 2108, 2109, 1, 0, 0, 0, 2109, 2112, 1, 0, 0, 0, 2110, 2108, 1, 0, 0, 0, 2111, 2103, 1, 0, 0, 0, 2111, 2112, 1, 0, 0, 0, 2112, 2113, 1, 0, 0, 0, 2113, 2116, 5, 2, 0, 0, 2114, 2116, 3, 136, 68, 0, 2115, 2102, 1, 0, 0, 0, 2115, 2114, 1, 0, 0, 0, 2116, 2118, 1, 0, 0, 0, 2117, 2100, 1, 0, 0, 0, 2117, 2118, 1, 0, 0, 0, 2118, 2125, 1, 0, 0, 0, 2119, 2120, 5, 217, 0, 0, 2120, 2121, 5, 300, 0, 0, 2121, 2126, 5, 85, 0, 0, 2122, 2123, 5, 144, 0, 0, 2123, 2124, 5, 300, 0, 0, 2124, 2126, 5, 85, 0, 0, 2125, 2119, 1, 0, 0, 0, 2125, 2122, 1, 0, 0, 0, 2125, 2126, 1, 0, 0, 0, 2126, 2143, 1, 0, 0, 0, 2127, 2128, 5, 195, 0, 0, 2128, 2141, 5, 36, 0, 0, 2129, 2130, 5, 1, 0, 0, 2130, 2135, 3, 50, 25, 0, 2131, 2132, 5, 3, 0, 0, 2132, 2134, 3, 50, 25, 0, 2133, 2131, 1, 0, 0, 0, 2134, 2137, 1, 0, 0, 0, 2135, 2133, 1, 0, 0, 0, 2135, 2136, 1, 0, 0, 0, 2136, 2138, 1, 0, 0, 0, 2137, 2135, 1, 0, 0, 0, 2138, 2139, 5, 2, 0, 0, 2139, 2142, 1, 0, 0, 0, 2140, 2142, 3, 50, 25, 0, 2141, 2129, 1, 0, 0, 0, 2141, 2140, 1, 0, 0, 0, 2142, 2144, 1, 0, 0, 0, 2143, 2127, 1, 0, 0, 0, 2143, 2144, 1, 0, 0, 0, 2144, 127, 1, 0, 0, 0, 2145, 2146, 5, 260, 0, 0, 2146, 2147, 5, 1, 0, 0, 2147, 2148, 3, 256, 128, 0, 2148, 2156, 5, 2, 0, 0, 2149, 2151, 5, 28, 0, 0, 2150, 2149, 1, 0, 0, 0, 2150, 2151, 1, 0, 0, 0, 2151, 2152, 1, 0, 0, 0, 2152, 2154, 3, 294, 147, 0, 2153, 2155, 3, 108, 54, 0, 2154, 2153, 1, 0, 0, 0, 2154, 2155, 1, 0, 0, 0, 2155, 2157, 1, 0, 0, 0, 2156, 2150, 1, 0, 0, 0, 2156, 2157, 1, 0, 0, 0, 2157, 2172, 1, 0, 0, 0, 2158, 2159, 5, 260, 0, 0, 2159, 2160, 5, 1, 0, 0, 2160, 2161, 3, 22, 11, 0, 2161, 2169, 5, 2, 0, 0, 2162, 2164, 5, 28, 0, 0, 2163, 2162, 1, 0, 0, 0, 2163, 2164, 1, 0, 0, 0, 2164, 2165, 1, 0, 0, 0, 2165, 2167, 3, 294, 147, 0, 2166, 2168, 3, 108, 54, 0, 2167, 2166, 1, 0, 0, 0, 2167, 2168, 1, 0, 0, 0, 2168, 2170, 1, 0, 0, 0, 2169, 2163, 1, 0, 0, 0, 2169, 2170, 1, 0, 0, 0, 2170, 2172, 1, 0, 0, 0, 2171, 2145, 1, 0, 0, 0, 2171, 2158, 1, 0, 0, 0, 2172, 129, 1, 0, 0, 0, 2173, 2174, 5, 77, 0, 0, 2174, 2175, 5, 1, 0, 0, 2175, 2180, 3, 132, 66, 0, 2176, 2177, 5, 3, 0, 0, 2177, 2179, 3, 132, 66, 0, 2178, 2176, 1, 0, 0, 0, 2179, 2182, 1, 0, 0, 0, 2180, 2178, 1, 0, 0, 0, 2180, 2181, 1, 0, 0, 0, 2181, 2183, 1, 0, 0, 0, 2182, 2180, 1, 0, 0, 0, 2183, 2184, 5, 2, 0, 0, 2184, 2192, 1, 0, 0, 0, 2185, 2186, 5, 41, 0, 0, 2186, 2187, 5, 1, 0, 0, 2187, 2188, 5, 183, 0, 0, 2188, 2189, 5, 28, 0, 0, 2189, 2190, 5, 77, 0, 0, 2190, 2192, 5, 2, 0, 0, 2191, 2173, 1, 0, 0, 0, 2191, 2185, 1, 0, 0, 0, 2192, 131, 1, 0, 0, 0, 2193, 2195, 3, 294, 147, 0, 2194, 2196, 3, 184, 92, 0, 2195, 2194, 1, 0, 0, 0, 2195, 2196, 1, 0, 0, 0, 2196, 133, 1, 0, 0, 0, 2197, 2198, 5, 1, 0, 0, 2198, 2199, 3, 280, 140, 0, 2199, 2200, 5, 3, 0, 0, 2200, 2205, 3, 280, 140, 0, 2201, 2202, 5, 3, 0, 0, 2202, 2204, 3, 280, 140, 0, 2203, 2201, 1, 0, 0, 0, 2204, 2207, 1, 0, 0, 0, 2205, 2203, 1, 0, 0, 0, 2205, 2206, 1, 0, 0, 0, 2206, 2208, 1, 0, 0, 0, 2207, 2205, 1, 0, 0, 0, 2208, 2209, 5, 2, 0, 0, 2209, 135, 1, 0, 0, 0, 2210, 2211, 3, 138, 69, 0, 2211, 137, 1, 0, 0, 0, 2212, 2213, 6, 69, -1, 0, 2213, 2215, 3, 142, 71, 0, 2214, 2216, 3, 140, 70, 0, 2215, 2214, 1, 0, 0, 0, 2215, 2216, 1, 0, 0, 0, 2216, 2220, 1, 0, 0, 0, 2217, 2218, 5, 182, 0, 0, 2218, 2220, 3, 138, 69, 3, 2219, 2212, 1, 0, 0, 0, 2219, 2217, 1, 0, 0, 0, 2220, 2229, 1, 0, 0, 0, 2221, 2222, 10, 2, 0, 0, 2222, 2223, 5, 25, 0, 0, 2223, 2228, 3, 138, 69, 3, 2224, 2225, 10, 1, 0, 0, 2225, 2226, 5, 194, 0, 0, 2226, 2228, 3, 138, 69, 2, 2227, 2221, 1, 0, 0, 0, 2227, 2224, 1, 0, 0, 0, 2228, 2231, 1, 0, 0, 0, 2229, 2227, 1, 0, 0, 0, 2229, 2230, 1, 0, 0, 0, 2230, 139, 1, 0, 0, 0, 2231, 2229, 1, 0, 0, 0, 2232, 2233, 3, 172, 86, 0, 2233, 2234, 3, 142, 71, 0, 2234, 2294, 1, 0, 0, 0, 2235, 2236, 3, 172, 86, 0, 2236, 2237, 3, 174, 87, 0, 2237, 2238, 5, 1, 0, 0, 2238, 2239, 3, 22, 11, 0, 2239, 2240, 5, 2, 0, 0, 2240, 2294, 1, 0, 0, 0, 2241, 2243, 5, 182, 0, 0, 2242, 2241, 1, 0, 0, 0, 2242, 2243, 1, 0, 0, 0, 2243, 2244, 1, 0, 0, 0, 2244, 2245, 5, 34, 0, 0, 2245, 2246, 3, 142, 71, 0, 2246, 2247, 5, 25, 0, 0, 2247, 2248, 3, 142, 71, 0, 2248, 2294, 1, 0, 0, 0, 2249, 2251, 5, 182, 0, 0, 2250, 2249, 1, 0, 0, 0, 2250, 2251, 1, 0, 0, 0, 2251, 2252, 1, 0, 0, 0, 2252, 2253, 5, 122, 0, 0, 2253, 2254, 5, 1, 0, 0, 2254, 2259, 3, 136, 68, 0, 2255, 2256, 5, 3, 0, 0, 2256, 2258, 3, 136, 68, 0, 2257, 2255, 1, 0, 0, 0, 2258, 2261, 1, 0, 0, 0, 2259, 2257, 1, 0, 0, 0, 2259, 2260, 1, 0, 0, 0, 2260, 2262, 1, 0, 0, 0, 2261, 2259, 1, 0, 0, 0, 2262, 2263, 5, 2, 0, 0, 2263, 2294, 1, 0, 0, 0, 2264, 2266, 5, 182, 0, 0, 2265, 2264, 1, 0, 0, 0, 2265, 2266, 1, 0, 0, 0, 2266, 2267, 1, 0, 0, 0, 2267, 2268, 5, 122, 0, 0, 2268, 2269, 5, 1, 0, 0, 2269, 2270, 3, 22, 11, 0, 2270, 2271, 5, 2, 0, 0, 2271, 2294, 1, 0, 0, 0, 2272, 2274, 5, 182, 0, 0, 2273, 2272, 1, 0, 0, 0, 2273, 2274, 1, 0, 0, 0, 2274, 2275, 1, 0, 0, 0, 2275, 2276, 5, 154, 0, 0, 2276, 2279, 3, 142, 71, 0, 2277, 2278, 5, 90, 0, 0, 2278, 2280, 3, 142, 71, 0, 2279, 2277, 1, 0, 0, 0, 2279, 2280, 1, 0, 0, 0, 2280, 2294, 1, 0, 0, 0, 2281, 2283, 5, 133, 0, 0, 2282, 2284, 5, 182, 0, 0, 2283, 2282, 1, 0, 0, 0, 2283, 2284, 1, 0, 0, 0, 2284, 2285, 1, 0, 0, 0, 2285, 2294, 5, 183, 0, 0, 2286, 2288, 5, 133, 0, 0, 2287, 2289, 5, 182, 0, 0, 2288, 2287, 1, 0, 0, 0, 2288, 2289, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2291, 5, 79, 0, 0, 2291, 2292, 5, 105, 0, 0, 2292, 2294, 3, 142, 71, 0, 2293, 2232, 1, 0, 0, 0, 2293, 2235, 1, 0, 0, 0, 2293, 2242, 1, 0, 0, 0, 2293, 2250, 1, 0, 0, 0, 2293, 2265, 1, 0, 0, 0, 2293, 2273, 1, 0, 0, 0, 2293, 2281, 1, 0, 0, 0, 2293, 2286, 1, 0, 0, 0, 2294, 141, 1, 0, 0, 0, 2295, 2296, 6, 71, -1, 0, 2296, 2300, 3, 144, 72, 0, 2297, 2298, 7, 18, 0, 0, 2298, 2300, 3, 142, 71, 4, 2299, 2295, 1, 0, 0, 0, 2299, 2297, 1, 0, 0, 0, 2300, 2315, 1, 0, 0, 0, 2301, 2302, 10, 3, 0, 0, 2302, 2303, 7, 19, 0, 0, 2303, 2314, 3, 142, 71, 4, 2304, 2305, 10, 2, 0, 0, 2305, 2306, 7, 18, 0, 0, 2306, 2314, 3, 142, 71, 3, 2307, 2308, 10, 1, 0, 0, 2308, 2309, 5, 323, 0, 0, 2309, 2314, 3, 142, 71, 2, 2310, 2311, 10, 5, 0, 0, 2311, 2312, 5, 30, 0, 0, 2312, 2314, 3, 170, 85, 0, 2313, 2301, 1, 0, 0, 0, 2313, 2304, 1, 0, 0, 0, 2313, 2307, 1, 0, 0, 0, 2313, 2310, 1, 0, 0, 0, 2314, 2317, 1, 0, 0, 0, 2315, 2313, 1, 0, 0, 0, 2315, 2316, 1, 0, 0, 0, 2316, 143, 1, 0, 0, 0, 2317, 2315, 1, 0, 0, 0, 2318, 2319, 6, 72, -1, 0, 2319, 2772, 5, 183, 0, 0, 2320, 2772, 3, 178, 89, 0, 2321, 2322, 3, 294, 147, 0, 2322, 2323, 3, 168, 84, 0, 2323, 2772, 1, 0, 0, 0, 2324, 2325, 5, 82, 0, 0, 2325, 2326, 5, 213, 0, 0, 2326, 2772, 3, 168, 84, 0, 2327, 2772, 3, 296, 148, 0, 2328, 2772, 3, 176, 88, 0, 2329, 2772, 3, 168, 84, 0, 2330, 2772, 5, 328, 0, 0, 2331, 2772, 5, 324, 0, 0, 2332, 2333, 5, 211, 0, 0, 2333, 2334, 5, 1, 0, 0, 2334, 2335, 3, 142, 71, 0, 2335, 2336, 5, 122, 0, 0, 2336, 2337, 3, 142, 71, 0, 2337, 2338, 5, 2, 0, 0, 2338, 2772, 1, 0, 0, 0, 2339, 2340, 5, 1, 0, 0, 2340, 2343, 3, 136, 68, 0, 2341, 2342, 5, 3, 0, 0, 2342, 2344, 3, 136, 68, 0, 2343, 2341, 1, 0, 0, 0, 2344, 2345, 1, 0, 0, 0, 2345, 2343, 1, 0, 0, 0, 2345, 2346, 1, 0, 0, 0, 2346, 2347, 1, 0, 0, 0, 2347, 2348, 5, 2, 0, 0, 2348, 2772, 1, 0, 0, 0, 2349, 2350, 5, 239, 0, 0, 2350, 2351, 5, 1, 0, 0, 2351, 2356, 3, 136, 68, 0, 2352, 2353, 5, 3, 0, 0, 2353, 2355, 3, 136, 68, 0, 2354, 2352, 1, 0, 0, 0, 2355, 2358, 1, 0, 0, 0, 2356, 2354, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2359, 1, 0, 0, 0, 2358, 2356, 1, 0, 0, 0, 2359, 2360, 5, 2, 0, 0, 2360, 2772, 1, 0, 0, 0, 2361, 2362, 5, 156, 0, 0, 2362, 2364, 5, 1, 0, 0, 2363, 2365, 3, 68, 34, 0, 2364, 2363, 1, 0, 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2369, 3, 136, 68, 0, 2367, 2368, 5, 3, 0, 0, 2368, 2370, 3, 168, 84, 0, 2369, 2367, 1, 0, 0, 0, 2369, 2370, 1, 0, 0, 0, 2370, 2374, 1, 0, 0, 0, 2371, 2372, 5, 190, 0, 0, 2372, 2373, 5, 200, 0, 0, 2373, 2375, 3, 84, 42, 0, 2374, 2371, 1, 0, 0, 0, 2374, 2375, 1, 0, 0, 0, 2375, 2376, 1, 0, 0, 0, 2376, 2377, 5, 2, 0, 0, 2377, 2378, 5, 305, 0, 0, 2378, 2379, 5, 114, 0, 0, 2379, 2380, 5, 1, 0, 0, 2380, 2381, 5, 195, 0, 0, 2381, 2382, 5, 36, 0, 0, 2382, 2387, 3, 50, 25, 0, 2383, 2384, 5, 3, 0, 0, 2384, 2386, 3, 50, 25, 0, 2385, 2383, 1, 0, 0, 0, 2386, 2389, 1, 0, 0, 0, 2387, 2385, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2390, 1, 0, 0, 0, 2389, 2387, 1, 0, 0, 0, 2390, 2391, 5, 2, 0, 0, 2391, 2393, 1, 0, 0, 0, 2392, 2394, 3, 192, 96, 0, 2393, 2392, 1, 0, 0, 0, 2393, 2394, 1, 0, 0, 0, 2394, 2772, 1, 0, 0, 0, 2395, 2397, 3, 164, 82, 0, 2396, 2395, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2398, 1, 0, 0, 0, 2398, 2399, 3, 272, 136, 0, 2399, 2403, 5, 1, 0, 0, 2400, 2401, 3, 294, 147, 0, 2401, 2402, 5, 4, 0, 0, 2402, 2404, 1, 0, 0, 0, 2403, 2400, 1, 0, 0, 0, 2403, 2404, 1, 0, 0, 0, 2404, 2405, 1, 0, 0, 0, 2405, 2406, 5, 320, 0, 0, 2406, 2408, 5, 2, 0, 0, 2407, 2409, 3, 192, 96, 0, 2408, 2407, 1, 0, 0, 0, 2408, 2409, 1, 0, 0, 0, 2409, 2411, 1, 0, 0, 0, 2410, 2412, 3, 196, 98, 0, 2411, 2410, 1, 0, 0, 0, 2411, 2412, 1, 0, 0, 0, 2412, 2772, 1, 0, 0, 0, 2413, 2415, 3, 164, 82, 0, 2414, 2413, 1, 0, 0, 0, 2414, 2415, 1, 0, 0, 0, 2415, 2416, 1, 0, 0, 0, 2416, 2417, 3, 272, 136, 0, 2417, 2429, 5, 1, 0, 0, 2418, 2420, 3, 68, 34, 0, 2419, 2418, 1, 0, 0, 0, 2419, 2420, 1, 0, 0, 0, 2420, 2421, 1, 0, 0, 0, 2421, 2426, 3, 136, 68, 0, 2422, 2423, 5, 3, 0, 0, 2423, 2425, 3, 136, 68, 0, 2424, 2422, 1, 0, 0, 0, 2425, 2428, 1, 0, 0, 0, 2426, 2424, 1, 0, 0, 0, 2426, 2427, 1, 0, 0, 0, 2427, 2430, 1, 0, 0, 0, 2428, 2426, 1, 0, 0, 0, 2429, 2419, 1, 0, 0, 0, 2429, 2430, 1, 0, 0, 0, 2430, 2441, 1, 0, 0, 0, 2431, 2432, 5, 195, 0, 0, 2432, 2433, 5, 36, 0, 0, 2433, 2438, 3, 50, 25, 0, 2434, 2435, 5, 3, 0, 0, 2435, 2437, 3, 50, 25, 0, 2436, 2434, 1, 0, 0, 0, 2437, 2440, 1, 0, 0, 0, 2438, 2436, 1, 0, 0, 0, 2438, 2439, 1, 0, 0, 0, 2439, 2442, 1, 0, 0, 0, 2440, 2438, 1, 0, 0, 0, 2441, 2431, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2443, 1, 0, 0, 0, 2443, 2445, 5, 2, 0, 0, 2444, 2446, 3, 192, 96, 0, 2445, 2444, 1, 0, 0, 0, 2445, 2446, 1, 0, 0, 0, 2446, 2451, 1, 0, 0, 0, 2447, 2449, 3, 166, 83, 0, 2448, 2447, 1, 0, 0, 0, 2448, 2449, 1, 0, 0, 0, 2449, 2450, 1, 0, 0, 0, 2450, 2452, 3, 196, 98, 0, 2451, 2448, 1, 0, 0, 0, 2451, 2452, 1, 0, 0, 0, 2452, 2772, 1, 0, 0, 0, 2453, 2454, 3, 294, 147, 0, 2454, 2455, 3, 196, 98, 0, 2455, 2772, 1, 0, 0, 0, 2456, 2457, 3, 294, 147, 0, 2457, 2458, 5, 7, 0, 0, 2458, 2459, 3, 136, 68, 0, 2459, 2772, 1, 0, 0, 0, 2460, 2469, 5, 1, 0, 0, 2461, 2466, 3, 294, 147, 0, 2462, 2463, 5, 3, 0, 0, 2463, 2465, 3, 294, 147, 0, 2464, 2462, 1, 0, 0, 0, 2465, 2468, 1, 0, 0, 0, 2466, 2464, 1, 0, 0, 0, 2466, 2467, 1, 0, 0, 0, 2467, 2470, 1, 0, 0, 0, 2468, 2466, 1, 0, 0, 0, 2469, 2461, 1, 0, 0, 0, 2469, 2470, 1, 0, 0, 0, 2470, 2471, 1, 0, 0, 0, 2471, 2472, 5, 2, 0, 0, 2472, 2473, 5, 7, 0, 0, 2473, 2772, 3, 136, 68, 0, 2474, 2475, 5, 1, 0, 0, 2475, 2476, 3, 22, 11, 0, 2476, 2477, 5, 2, 0, 0, 2477, 2772, 1, 0, 0, 0, 2478, 2479, 5, 94, 0, 0, 2479, 2480, 5, 1, 0, 0, 2480, 2481, 3, 22, 11, 0, 2481, 2482, 5, 2, 0, 0, 2482, 2772, 1, 0, 0, 0, 2483, 2484, 5, 40, 0, 0, 2484, 2486, 3, 136, 68, 0, 2485, 2487, 3, 190, 95, 0, 2486, 2485, 1, 0, 0, 0, 2487, 2488, 1, 0, 0, 0, 2488, 2486, 1, 0, 0, 0, 2488, 2489, 1, 0, 0, 0, 2489, 2492, 1, 0, 0, 0, 2490, 2491, 5, 84, 0, 0, 2491, 2493, 3, 136, 68, 0, 2492, 2490, 1, 0, 0, 0, 2492, 2493, 1, 0, 0, 0, 2493, 2494, 1, 0, 0, 0, 2494, 2495, 5, 88, 0, 0, 2495, 2772, 1, 0, 0, 0, 2496, 2498, 5, 40, 0, 0, 2497, 2499, 3, 190, 95, 0, 2498, 2497, 1, 0, 0, 0, 2499, 2500, 1, 0, 0, 0, 2500, 2498, 1, 0, 0, 0, 2500, 2501, 1, 0, 0, 0, 2501, 2504, 1, 0, 0, 0, 2502, 2503, 5, 84, 0, 0, 2503, 2505, 3, 136, 68, 0, 2504, 2502, 1, 0, 0, 0, 2504, 2505, 1, 0, 0, 0, 2505, 2506, 1, 0, 0, 0, 2506, 2507, 5, 88, 0, 0, 2507, 2772, 1, 0, 0, 0, 2508, 2509, 5, 41, 0, 0, 2509, 2510, 5, 1, 0, 0, 2510, 2511, 3, 136, 68, 0, 2511, 2512, 5, 28, 0, 0, 2512, 2513, 3, 184, 92, 0, 2513, 2514, 5, 2, 0, 0, 2514, 2772, 1, 0, 0, 0, 2515, 2516, 5, 275, 0, 0, 2516, 2517, 5, 1, 0, 0, 2517, 2518, 3, 136, 68, 0, 2518, 2519, 5, 28, 0, 0, 2519, 2520, 3, 184, 92, 0, 2520, 2521, 5, 2, 0, 0, 2521, 2772, 1, 0, 0, 0, 2522, 2523, 5, 27, 0, 0, 2523, 2532, 5, 8, 0, 0, 2524, 2529, 3, 136, 68, 0, 2525, 2526, 5, 3, 0, 0, 2526, 2528, 3, 136, 68, 0, 2527, 2525, 1, 0, 0, 0, 2528, 2531, 1, 0, 0, 0, 2529, 2527, 1, 0, 0, 0, 2529, 2530, 1, 0, 0, 0, 2530, 2533, 1, 0, 0, 0, 2531, 2529, 1, 0, 0, 0, 2532, 2524, 1, 0, 0, 0, 2532, 2533, 1, 0, 0, 0, 2533, 2534, 1, 0, 0, 0, 2534, 2772, 5, 9, 0, 0, 2535, 2772, 3, 294, 147, 0, 2536, 2772, 5, 58, 0, 0, 2537, 2541, 5, 62, 0, 0, 2538, 2539, 5, 1, 0, 0, 2539, 2540, 5, 329, 0, 0, 2540, 2542, 5, 2, 0, 0, 2541, 2538, 1, 0, 0, 0, 2541, 2542, 1, 0, 0, 0, 2542, 2772, 1, 0, 0, 0, 2543, 2547, 5, 63, 0, 0, 2544, 2545, 5, 1, 0, 0, 2545, 2546, 5, 329, 0, 0, 2546, 2548, 5, 2, 0, 0, 2547, 2544, 1, 0, 0, 0, 2547, 2548, 1, 0, 0, 0, 2548, 2772, 1, 0, 0, 0, 2549, 2553, 5, 158, 0, 0, 2550, 2551, 5, 1, 0, 0, 2551, 2552, 5, 329, 0, 0, 2552, 2554, 5, 2, 0, 0, 2553, 2550, 1, 0, 0, 0, 2553, 2554, 1, 0, 0, 0, 2554, 2772, 1, 0, 0, 0, 2555, 2559, 5, 159, 0, 0, 2556, 2557, 5, 1, 0, 0, 2557, 2558, 5, 329, 0, 0, 2558, 2560, 5, 2, 0, 0, 2559, 2556, 1, 0, 0, 0, 2559, 2560, 1, 0, 0, 0, 2560, 2772, 1, 0, 0, 0, 2561, 2772, 5, 64, 0, 0, 2562, 2772, 5, 57, 0, 0, 2563, 2772, 5, 61, 0, 0, 2564, 2772, 5, 59, 0, 0, 2565, 2566, 5, 272, 0, 0, 2566, 2574, 5, 1, 0, 0, 2567, 2569, 3, 82, 41, 0, 2568, 2567, 1, 0, 0, 0, 2568, 2569, 1, 0, 0, 0, 2569, 2571, 1, 0, 0, 0, 2570, 2572, 3, 142, 71, 0, 2571, 2570, 1, 0, 0, 0, 2571, 2572, 1, 0, 0, 0, 2572, 2573, 1, 0, 0, 0, 2573, 2575, 5, 105, 0, 0, 2574, 2568, 1, 0, 0, 0, 2574, 2575, 1, 0, 0, 0, 2575, 2576, 1, 0, 0, 0, 2576, 2577, 3, 142, 71, 0, 2577, 2578, 5, 2, 0, 0, 2578, 2772, 1, 0, 0, 0, 2579, 2580, 5, 272, 0, 0, 2580, 2581, 5, 1, 0, 0, 2581, 2582, 3, 142, 71, 0, 2582, 2583, 5, 3, 0, 0, 2583, 2584, 3, 142, 71, 0, 2584, 2585, 5, 2, 0, 0, 2585, 2772, 1, 0, 0, 0, 2586, 2587, 5, 258, 0, 0, 2587, 2588, 5, 1, 0, 0, 2588, 2589, 3, 142, 71, 0, 2589, 2590, 5, 105, 0, 0, 2590, 2593, 3, 142, 71, 0, 2591, 2592, 5, 103, 0, 0, 2592, 2594, 3, 142, 71, 0, 2593, 2591, 1, 0, 0, 0, 2593, 2594, 1, 0, 0, 0, 2594, 2595, 1, 0, 0, 0, 2595, 2596, 5, 2, 0, 0, 2596, 2772, 1, 0, 0, 0, 2597, 2598, 5, 181, 0, 0, 2598, 2599, 5, 1, 0, 0, 2599, 2602, 3, 142, 71, 0, 2600, 2601, 5, 3, 0, 0, 2601, 2603, 3, 182, 91, 0, 2602, 2600, 1, 0, 0, 0, 2602, 2603, 1, 0, 0, 0, 2603, 2604, 1, 0, 0, 0, 2604, 2605, 5, 2, 0, 0, 2605, 2772, 1, 0, 0, 0, 2606, 2607, 5, 96, 0, 0, 2607, 2608, 5, 1, 0, 0, 2608, 2609, 3, 294, 147, 0, 2609, 2610, 5, 105, 0, 0, 2610, 2611, 3, 142, 71, 0, 2611, 2612, 5, 2, 0, 0, 2612, 2772, 1, 0, 0, 0, 2613, 2614, 5, 1, 0, 0, 2614, 2615, 3, 136, 68, 0, 2615, 2616, 5, 2, 0, 0, 2616, 2772, 1, 0, 0, 0, 2617, 2618, 5, 115, 0, 0, 2618, 2627, 5, 1, 0, 0, 2619, 2624, 3, 280, 140, 0, 2620, 2621, 5, 3, 0, 0, 2621, 2623, 3, 280, 140, 0, 2622, 2620, 1, 0, 0, 0, 2623, 2626, 1, 0, 0, 0, 2624, 2622, 1, 0, 0, 0, 2624, 2625, 1, 0, 0, 0, 2625, 2628, 1, 0, 0, 0, 2626, 2624, 1, 0, 0, 0, 2627, 2619, 1, 0, 0, 0, 2627, 2628, 1, 0, 0, 0, 2628, 2629, 1, 0, 0, 0, 2629, 2772, 5, 2, 0, 0, 2630, 2631, 5, 139, 0, 0, 2631, 2632, 5, 1, 0, 0, 2632, 2637, 3, 146, 73, 0, 2633, 2634, 3, 154, 77, 0, 2634, 2635, 5, 190, 0, 0, 2635, 2636, 5, 89, 0, 0, 2636, 2638, 1, 0, 0, 0, 2637, 2633, 1, 0, 0, 0, 2637, 2638, 1, 0, 0, 0, 2638, 2639, 1, 0, 0, 0, 2639, 2640, 5, 2, 0, 0, 2640, 2772, 1, 0, 0, 0, 2641, 2642, 5, 143, 0, 0, 2642, 2643, 5, 1, 0, 0, 2643, 2646, 3, 146, 73, 0, 2644, 2645, 5, 231, 0, 0, 2645, 2647, 3, 184, 92, 0, 2646, 2644, 1, 0, 0, 0, 2646, 2647, 1, 0, 0, 0, 2647, 2652, 1, 0, 0, 0, 2648, 2649, 3, 156, 78, 0, 2649, 2650, 5, 190, 0, 0, 2650, 2651, 5, 85, 0, 0, 2651, 2653, 1, 0, 0, 0, 2652, 2648, 1, 0, 0, 0, 2652, 2653, 1, 0, 0, 0, 2653, 2658, 1, 0, 0, 0, 2654, 2655, 3, 156, 78, 0, 2655, 2656, 5, 190, 0, 0, 2656, 2657, 5, 89, 0, 0, 2657, 2659, 1, 0, 0, 0, 2658, 2654, 1, 0, 0, 0, 2658, 2659, 1, 0, 0, 0, 2659, 2660, 1, 0, 0, 0, 2660, 2661, 5, 2, 0, 0, 2661, 2772, 1, 0, 0, 0, 2662, 2663, 5, 141, 0, 0, 2663, 2664, 5, 1, 0, 0, 2664, 2671, 3, 146, 73, 0, 2665, 2666, 5, 231, 0, 0, 2666, 2669, 3, 184, 92, 0, 2667, 2668, 5, 104, 0, 0, 2668, 2670, 3, 150, 75, 0, 2669, 2667, 1, 0, 0, 0, 2669, 2670, 1, 0, 0, 0, 2670, 2672, 1, 0, 0, 0, 2671, 2665, 1, 0, 0, 0, 2671, 2672, 1, 0, 0, 0, 2672, 2676, 1, 0, 0, 0, 2673, 2674, 3, 158, 79, 0, 2674, 2675, 5, 308, 0, 0, 2675, 2677, 1, 0, 0, 0, 2676, 2673, 1, 0, 0, 0, 2676, 2677, 1, 0, 0, 0, 2677, 2685, 1, 0, 0, 0, 2678, 2679, 7, 15, 0, 0, 2679, 2683, 5, 218, 0, 0, 2680, 2681, 5, 190, 0, 0, 2681, 2682, 5, 242, 0, 0, 2682, 2684, 5, 264, 0, 0, 2683, 2680, 1, 0, 0, 0, 2683, 2684, 1, 0, 0, 0, 2684, 2686, 1, 0, 0, 0, 2685, 2678, 1, 0, 0, 0, 2685, 2686, 1, 0, 0, 0, 2686, 2691, 1, 0, 0, 0, 2687, 2688, 3, 160, 80, 0, 2688, 2689, 5, 190, 0, 0, 2689, 2690, 5, 85, 0, 0, 2690, 2692, 1, 0, 0, 0, 2691, 2687, 1, 0, 0, 0, 2691, 2692, 1, 0, 0, 0, 2692, 2697, 1, 0, 0, 0, 2693, 2694, 3, 160, 80, 0, 2694, 2695, 5, 190, 0, 0, 2695, 2696, 5, 89, 0, 0, 2696, 2698, 1, 0, 0, 0, 2697, 2693, 1, 0, 0, 0, 2697, 2698, 1, 0, 0, 0, 2698, 2699, 1, 0, 0, 0, 2699, 2700, 5, 2, 0, 0, 2700, 2772, 1, 0, 0, 0, 2701, 2702, 5, 140, 0, 0, 2702, 2731, 5, 1, 0, 0, 2703, 2708, 3, 162, 81, 0, 2704, 2705, 5, 3, 0, 0, 2705, 2707, 3, 162, 81, 0, 2706, 2704, 1, 0, 0, 0, 2707, 2710, 1, 0, 0, 0, 2708, 2706, 1, 0, 0, 0, 2708, 2709, 1, 0, 0, 0, 2709, 2717, 1, 0, 0, 0, 2710, 2708, 1, 0, 0, 0, 2711, 2712, 5, 183, 0, 0, 2712, 2713, 5, 190, 0, 0, 2713, 2718, 5, 183, 0, 0, 2714, 2715, 5, 18, 0, 0, 2715, 2716, 5, 190, 0, 0, 2716, 2718, 5, 183, 0, 0, 2717, 2711, 1, 0, 0, 0, 2717, 2714, 1, 0, 0, 0, 2717, 2718, 1, 0, 0, 0, 2718, 2729, 1, 0, 0, 0, 2719, 2720, 5, 304, 0, 0, 2720, 2722, 5, 282, 0, 0, 2721, 2723, 5, 146, 0, 0, 2722, 2721, 1, 0, 0, 0, 2722, 2723, 1, 0, 0, 0, 2723, 2730, 1, 0, 0, 0, 2724, 2725, 5, 306, 0, 0, 2725, 2727, 5, 282, 0, 0, 2726, 2728, 5, 146, 0, 0, 2727, 2726, 1, 0, 0, 0, 2727, 2728, 1, 0, 0, 0, 2728, 2730, 1, 0, 0, 0, 2729, 2719, 1, 0, 0, 0, 2729, 2724, 1, 0, 0, 0, 2729, 2730, 1, 0, 0, 0, 2730, 2732, 1, 0, 0, 0, 2731, 2703, 1, 0, 0, 0, 2731, 2732, 1, 0, 0, 0, 2732, 2739, 1, 0, 0, 0, 2733, 2734, 5, 231, 0, 0, 2734, 2737, 3, 184, 92, 0, 2735, 2736, 5, 104, 0, 0, 2736, 2738, 3, 150, 75, 0, 2737, 2735, 1, 0, 0, 0, 2737, 2738, 1, 0, 0, 0, 2738, 2740, 1, 0, 0, 0, 2739, 2733, 1, 0, 0, 0, 2739, 2740, 1, 0, 0, 0, 2740, 2741, 1, 0, 0, 0, 2741, 2772, 5, 2, 0, 0, 2742, 2743, 5, 138, 0, 0, 2743, 2760, 5, 1, 0, 0, 2744, 2749, 3, 148, 74, 0, 2745, 2746, 5, 3, 0, 0, 2746, 2748, 3, 148, 74, 0, 2747, 2745, 1, 0, 0, 0, 2748, 2751, 1, 0, 0, 0, 2749, 2747, 1, 0, 0, 0, 2749, 2750, 1, 0, 0, 0, 2750, 2758, 1, 0, 0, 0, 2751, 2749, 1, 0, 0, 0, 2752, 2753, 5, 183, 0, 0, 2753, 2754, 5, 190, 0, 0, 2754, 2759, 5, 183, 0, 0, 2755, 2756, 5, 18, 0, 0, 2756, 2757, 5, 190, 0, 0, 2757, 2759, 5, 183, 0, 0, 2758, 2752, 1, 0, 0, 0, 2758, 2755, 1, 0, 0, 0, 2758, 2759, 1, 0, 0, 0, 2759, 2761, 1, 0, 0, 0, 2760, 2744, 1, 0, 0, 0, 2760, 2761, 1, 0, 0, 0, 2761, 2768, 1, 0, 0, 0, 2762, 2763, 5, 231, 0, 0, 2763, 2766, 3, 184, 92, 0, 2764, 2765, 5, 104, 0, 0, 2765, 2767, 3, 150, 75, 0, 2766, 2764, 1, 0, 0, 0, 2766, 2767, 1, 0, 0, 0, 2767, 2769, 1, 0, 0, 0, 2768, 2762, 1, 0, 0, 0, 2768, 2769, 1, 0, 0, 0, 2769, 2770, 1, 0, 0, 0, 2770, 2772, 5, 2, 0, 0, 2771, 2318, 1, 0, 0, 0, 2771, 2320, 1, 0, 0, 0, 2771, 2321, 1, 0, 0, 0, 2771, 2324, 1, 0, 0, 0, 2771, 2327, 1, 0, 0, 0, 2771, 2328, 1, 0, 0, 0, 2771, 2329, 1, 0, 0, 0, 2771, 2330, 1, 0, 0, 0, 2771, 2331, 1, 0, 0, 0, 2771, 2332, 1, 0, 0, 0, 2771, 2339, 1, 0, 0, 0, 2771, 2349, 1, 0, 0, 0, 2771, 2361, 1, 0, 0, 0, 2771, 2396, 1, 0, 0, 0, 2771, 2414, 1, 0, 0, 0, 2771, 2453, 1, 0, 0, 0, 2771, 2456, 1, 0, 0, 0, 2771, 2460, 1, 0, 0, 0, 2771, 2474, 1, 0, 0, 0, 2771, 2478, 1, 0, 0, 0, 2771, 2483, 1, 0, 0, 0, 2771, 2496, 1, 0, 0, 0, 2771, 2508, 1, 0, 0, 0, 2771, 2515, 1, 0, 0, 0, 2771, 2522, 1, 0, 0, 0, 2771, 2535, 1, 0, 0, 0, 2771, 2536, 1, 0, 0, 0, 2771, 2537, 1, 0, 0, 0, 2771, 2543, 1, 0, 0, 0, 2771, 2549, 1, 0, 0, 0, 2771, 2555, 1, 0, 0, 0, 2771, 2561, 1, 0, 0, 0, 2771, 2562, 1, 0, 0, 0, 2771, 2563, 1, 0, 0, 0, 2771, 2564, 1, 0, 0, 0, 2771, 2565, 1, 0, 0, 0, 2771, 2579, 1, 0, 0, 0, 2771, 2586, 1, 0, 0, 0, 2771, 2597, 1, 0, 0, 0, 2771, 2606, 1, 0, 0, 0, 2771, 2613, 1, 0, 0, 0, 2771, 2617, 1, 0, 0, 0, 2771, 2630, 1, 0, 0, 0, 2771, 2641, 1, 0, 0, 0, 2771, 2662, 1, 0, 0, 0, 2771, 2701, 1, 0, 0, 0, 2771, 2742, 1, 0, 0, 0, 2772, 2783, 1, 0, 0, 0, 2773, 2774, 10, 24, 0, 0, 2774, 2775, 5, 8, 0, 0, 2775, 2776, 3, 142, 71, 0, 2776, 2777, 5, 9, 0, 0, 2777, 2782, 1, 0, 0, 0, 2778, 2779, 10, 22, 0, 0, 2779, 2780, 5, 4, 0, 0, 2780, 2782, 3, 294, 147, 0, 2781, 2773, 1, 0, 0, 0, 2781, 2778, 1, 0, 0, 0, 2782, 2785, 1, 0, 0, 0, 2783, 2781, 1, 0, 0, 0, 2783, 2784, 1, 0, 0, 0, 2784, 145, 1, 0, 0, 0, 2785, 2783, 1, 0, 0, 0, 2786, 2787, 3, 148, 74, 0, 2787, 2788, 5, 3, 0, 0, 2788, 2791, 3, 168, 84, 0, 2789, 2790, 5, 28, 0, 0, 2790, 2792, 3, 294, 147, 0, 2791, 2789, 1, 0, 0, 0, 2791, 2792, 1, 0, 0, 0, 2792, 2802, 1, 0, 0, 0, 2793, 2794, 5, 203, 0, 0, 2794, 2799, 3, 152, 76, 0, 2795, 2796, 5, 3, 0, 0, 2796, 2798, 3, 152, 76, 0, 2797, 2795, 1, 0, 0, 0, 2798, 2801, 1, 0, 0, 0, 2799, 2797, 1, 0, 0, 0, 2799, 2800, 1, 0, 0, 0, 2800, 2803, 1, 0, 0, 0, 2801, 2799, 1, 0, 0, 0, 2802, 2793, 1, 0, 0, 0, 2802, 2803, 1, 0, 0, 0, 2803, 147, 1, 0, 0, 0, 2804, 2807, 3, 136, 68, 0, 2805, 2806, 5, 104, 0, 0, 2806, 2808, 3, 150, 75, 0, 2807, 2805, 1, 0, 0, 0, 2807, 2808, 1, 0, 0, 0, 2808, 149, 1, 0, 0, 0, 2809, 2812, 5, 137, 0, 0, 2810, 2811, 5, 87, 0, 0, 2811, 2813, 7, 20, 0, 0, 2812, 2810, 1, 0, 0, 0, 2812, 2813, 1, 0, 0, 0, 2813, 151, 1, 0, 0, 0, 2814, 2815, 3, 148, 74, 0, 2815, 2816, 5, 28, 0, 0, 2816, 2817, 3, 294, 147, 0, 2817, 153, 1, 0, 0, 0, 2818, 2819, 7, 21, 0, 0, 2819, 155, 1, 0, 0, 0, 2820, 2825, 5, 89, 0, 0, 2821, 2825, 5, 183, 0, 0, 2822, 2823, 5, 70, 0, 0, 2823, 2825, 3, 136, 68, 0, 2824, 2820, 1, 0, 0, 0, 2824, 2821, 1, 0, 0, 0, 2824, 2822, 1, 0, 0, 0, 2825, 157, 1, 0, 0, 0, 2826, 2828, 5, 306, 0, 0, 2827, 2829, 5, 27, 0, 0, 2828, 2827, 1, 0, 0, 0, 2828, 2829, 1, 0, 0, 0, 2829, 2838, 1, 0, 0, 0, 2830, 2832, 5, 304, 0, 0, 2831, 2833, 7, 22, 0, 0, 2832, 2831, 1, 0, 0, 0, 2832, 2833, 1, 0, 0, 0, 2833, 2835, 1, 0, 0, 0, 2834, 2836, 5, 27, 0, 0, 2835, 2834, 1, 0, 0, 0, 2835, 2836, 1, 0, 0, 0, 2836, 2838, 1, 0, 0, 0, 2837, 2826, 1, 0, 0, 0, 2837, 2830, 1, 0, 0, 0, 2838, 159, 1, 0, 0, 0, 2839, 2846, 5, 89, 0, 0, 2840, 2846, 5, 183, 0, 0, 2841, 2842, 5, 85, 0, 0, 2842, 2846, 5, 27, 0, 0, 2843, 2844, 5, 85, 0, 0, 2844, 2846, 5, 186, 0, 0, 2845, 2839, 1, 0, 0, 0, 2845, 2840, 1, 0, 0, 0, 2845, 2841, 1, 0, 0, 0, 2845, 2843, 1, 0, 0, 0, 2846, 161, 1, 0, 0, 0, 2847, 2849, 5, 145, 0, 0, 2848, 2847, 1, 0, 0, 0, 2848, 2849, 1, 0, 0, 0, 2849, 2850, 1, 0, 0, 0, 2850, 2851, 3, 136, 68, 0, 2851, 2852, 5, 295, 0, 0, 2852, 2853, 3, 148, 74, 0, 2853, 2859, 1, 0, 0, 0, 2854, 2855, 3, 136, 68, 0, 2855, 2856, 5, 10, 0, 0, 2856, 2857, 3, 148, 74, 0, 2857, 2859, 1, 0, 0, 0, 2858, 2848, 1, 0, 0, 0, 2858, 2854, 1, 0, 0, 0, 2859, 163, 1, 0, 0, 0, 2860, 2861, 7, 23, 0, 0, 2861, 165, 1, 0, 0, 0, 2862, 2863, 5, 120, 0, 0, 2863, 2867, 5, 185, 0, 0, 2864, 2865, 5, 228, 0, 0, 2865, 2867, 5, 185, 0, 0, 2866, 2862, 1, 0, 0, 0, 2866, 2864, 1, 0, 0, 0, 2867, 167, 1, 0, 0, 0, 2868, 2875, 5, 326, 0, 0, 2869, 2872, 5, 327, 0, 0, 2870, 2871, 5, 277, 0, 0, 2871, 2873, 5, 326, 0, 0, 2872, 2870, 1, 0, 0, 0, 2872, 2873, 1, 0, 0, 0, 2873, 2875, 1, 0, 0, 0, 2874, 2868, 1, 0, 0, 0, 2874, 2869, 1, 0, 0, 0, 2875, 169, 1, 0, 0, 0, 2876, 2877, 5, 267, 0, 0, 2877, 2878, 5, 311, 0, 0, 2878, 2883, 3, 178, 89, 0, 2879, 2880, 5, 267, 0, 0, 2880, 2881, 5, 311, 0, 0, 2881, 2883, 3, 168, 84, 0, 2882, 2876, 1, 0, 0, 0, 2882, 2879, 1, 0, 0, 0, 2883, 171, 1, 0, 0, 0, 2884, 2885, 7, 24, 0, 0, 2885, 173, 1, 0, 0, 0, 2886, 2887, 7, 25, 0, 0, 2887, 175, 1, 0, 0, 0, 2888, 2889, 7, 26, 0, 0, 2889, 177, 1, 0, 0, 0, 2890, 2892, 5, 129, 0, 0, 2891, 2893, 7, 18, 0, 0, 2892, 2891, 1, 0, 0, 0, 2892, 2893, 1, 0, 0, 0, 2893, 2894, 1, 0, 0, 0, 2894, 2895, 3, 168, 84, 0, 2895, 2898, 3, 180, 90, 0, 2896, 2897, 5, 269, 0, 0, 2897, 2899, 3, 180, 90, 0, 2898, 2896, 1, 0, 0, 0, 2898, 2899, 1, 0, 0, 0, 2899, 179, 1, 0, 0, 0, 2900, 2901, 7, 27, 0, 0, 2901, 181, 1, 0, 0, 0, 2902, 2903, 7, 28, 0, 0, 2903, 183, 1, 0, 0, 0, 2904, 2905, 6, 92, -1, 0, 2905, 2906, 5, 239, 0, 0, 2906, 2907, 5, 1, 0, 0, 2907, 2912, 3, 186, 93, 0, 2908, 2909, 5, 3, 0, 0, 2909, 2911, 3, 186, 93, 0, 2910, 2908, 1, 0, 0, 0, 2911, 2914, 1, 0, 0, 0, 2912, 2910, 1, 0, 0, 0, 2912, 2913, 1, 0, 0, 0, 2913, 2915, 1, 0, 0, 0, 2914, 2912, 1, 0, 0, 0, 2915, 2916, 5, 2, 0, 0, 2916, 2996, 1, 0, 0, 0, 2917, 2918, 5, 129, 0, 0, 2918, 2921, 3, 180, 90, 0, 2919, 2920, 5, 269, 0, 0, 2920, 2922, 3, 180, 90, 0, 2921, 2919, 1, 0, 0, 0, 2921, 2922, 1, 0, 0, 0, 2922, 2996, 1, 0, 0, 0, 2923, 2928, 5, 268, 0, 0, 2924, 2925, 5, 1, 0, 0, 2925, 2926, 3, 188, 94, 0, 2926, 2927, 5, 2, 0, 0, 2927, 2929, 1, 0, 0, 0, 2928, 2924, 1, 0, 0, 0, 2928, 2929, 1, 0, 0, 0, 2929, 2933, 1, 0, 0, 0, 2930, 2931, 5, 306, 0, 0, 2931, 2932, 5, 267, 0, 0, 2932, 2934, 5, 311, 0, 0, 2933, 2930, 1, 0, 0, 0, 2933, 2934, 1, 0, 0, 0, 2934, 2996, 1, 0, 0, 0, 2935, 2940, 5, 268, 0, 0, 2936, 2937, 5, 1, 0, 0, 2937, 2938, 3, 188, 94, 0, 2938, 2939, 5, 2, 0, 0, 2939, 2941, 1, 0, 0, 0, 2940, 2936, 1, 0, 0, 0, 2940, 2941, 1, 0, 0, 0, 2941, 2942, 1, 0, 0, 0, 2942, 2943, 5, 304, 0, 0, 2943, 2944, 5, 267, 0, 0, 2944, 2996, 5, 311, 0, 0, 2945, 2950, 5, 267, 0, 0, 2946, 2947, 5, 1, 0, 0, 2947, 2948, 3, 188, 94, 0, 2948, 2949, 5, 2, 0, 0, 2949, 2951, 1, 0, 0, 0, 2950, 2946, 1, 0, 0, 0, 2950, 2951, 1, 0, 0, 0, 2951, 2955, 1, 0, 0, 0, 2952, 2953, 5, 306, 0, 0, 2953, 2954, 5, 267, 0, 0, 2954, 2956, 5, 311, 0, 0, 2955, 2952, 1, 0, 0, 0, 2955, 2956, 1, 0, 0, 0, 2956, 2996, 1, 0, 0, 0, 2957, 2962, 5, 267, 0, 0, 2958, 2959, 5, 1, 0, 0, 2959, 2960, 3, 188, 94, 0, 2960, 2961, 5, 2, 0, 0, 2961, 2963, 1, 0, 0, 0, 2962, 2958, 1, 0, 0, 0, 2962, 2963, 1, 0, 0, 0, 2963, 2964, 1, 0, 0, 0, 2964, 2965, 5, 304, 0, 0, 2965, 2966, 5, 267, 0, 0, 2966, 2996, 5, 311, 0, 0, 2967, 2968, 5, 82, 0, 0, 2968, 2996, 5, 213, 0, 0, 2969, 2970, 5, 27, 0, 0, 2970, 2971, 5, 314, 0, 0, 2971, 2972, 3, 184, 92, 0, 2972, 2973, 5, 316, 0, 0, 2973, 2996, 1, 0, 0, 0, 2974, 2975, 5, 162, 0, 0, 2975, 2976, 5, 314, 0, 0, 2976, 2977, 3, 184, 92, 0, 2977, 2978, 5, 3, 0, 0, 2978, 2979, 3, 184, 92, 0, 2979, 2980, 5, 316, 0, 0, 2980, 2996, 1, 0, 0, 0, 2981, 2993, 3, 294, 147, 0, 2982, 2983, 5, 1, 0, 0, 2983, 2988, 3, 188, 94, 0, 2984, 2985, 5, 3, 0, 0, 2985, 2987, 3, 188, 94, 0, 2986, 2984, 1, 0, 0, 0, 2987, 2990, 1, 0, 0, 0, 2988, 2986, 1, 0, 0, 0, 2988, 2989, 1, 0, 0, 0, 2989, 2991, 1, 0, 0, 0, 2990, 2988, 1, 0, 0, 0, 2991, 2992, 5, 2, 0, 0, 2992, 2994, 1, 0, 0, 0, 2993, 2982, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2996, 1, 0, 0, 0, 2995, 2904, 1, 0, 0, 0, 2995, 2917, 1, 0, 0, 0, 2995, 2923, 1, 0, 0, 0, 2995, 2935, 1, 0, 0, 0, 2995, 2945, 1, 0, 0, 0, 2995, 2957, 1, 0, 0, 0, 2995, 2967, 1, 0, 0, 0, 2995, 2969, 1, 0, 0, 0, 2995, 2974, 1, 0, 0, 0, 2995, 2981, 1, 0, 0, 0, 2996, 3006, 1, 0, 0, 0, 2997, 2998, 10, 2, 0, 0, 2998, 3002, 5, 27, 0, 0, 2999, 3000, 5, 8, 0, 0, 3000, 3001, 5, 329, 0, 0, 3001, 3003, 5, 9, 0, 0, 3002, 2999, 1, 0, 0, 0, 3002, 3003, 1, 0, 0, 0, 3003, 3005, 1, 0, 0, 0, 3004, 2997, 1, 0, 0, 0, 3005, 3008, 1, 0, 0, 0, 3006, 3004, 1, 0, 0, 0, 3006, 3007, 1, 0, 0, 0, 3007, 185, 1, 0, 0, 0, 3008, 3006, 1, 0, 0, 0, 3009, 3014, 3, 184, 92, 0, 3010, 3011, 3, 294, 147, 0, 3011, 3012, 3, 184, 92, 0, 3012, 3014, 1, 0, 0, 0, 3013, 3009, 1, 0, 0, 0, 3013, 3010, 1, 0, 0, 0, 3014, 187, 1, 0, 0, 0, 3015, 3018, 5, 329, 0, 0, 3016, 3018, 3, 184, 92, 0, 3017, 3015, 1, 0, 0, 0, 3017, 3016, 1, 0, 0, 0, 3018, 189, 1, 0, 0, 0, 3019, 3020, 5, 300, 0, 0, 3020, 3021, 3, 136, 68, 0, 3021, 3022, 5, 265, 0, 0, 3022, 3023, 3, 136, 68, 0, 3023, 191, 1, 0, 0, 0, 3024, 3025, 5, 99, 0, 0, 3025, 3026, 5, 1, 0, 0, 3026, 3027, 5, 301, 0, 0, 3027, 3028, 3, 138, 69, 0, 3028, 3029, 5, 2, 0, 0, 3029, 193, 1, 0, 0, 0, 3030, 3031, 5, 300, 0, 0, 3031, 3034, 5, 164, 0, 0, 3032, 3033, 5, 25, 0, 0, 3033, 3035, 3, 136, 68, 0, 3034, 3032, 1, 0, 0, 0, 3034, 3035, 1, 0, 0, 0, 3035, 3036, 1, 0, 0, 0, 3036, 3037, 5, 265, 0, 0, 3037, 3038, 5, 287, 0, 0, 3038, 3039, 5, 251, 0, 0, 3039, 3040, 3, 294, 147, 0, 3040, 3041, 5, 312, 0, 0, 3041, 3049, 3, 136, 68, 0, 3042, 3043, 5, 3, 0, 0, 3043, 3044, 3, 294, 147, 0, 3044, 3045, 5, 312, 0, 0, 3045, 3046, 3, 136, 68, 0, 3046, 3048, 1, 0, 0, 0, 3047, 3042, 1, 0, 0, 0, 3048, 3051, 1, 0, 0, 0, 3049, 3047, 1, 0, 0, 0, 3049, 3050, 1, 0, 0, 0, 3050, 3095, 1, 0, 0, 0, 3051, 3049, 1, 0, 0, 0, 3052, 3053, 5, 300, 0, 0, 3053, 3056, 5, 164, 0, 0, 3054, 3055, 5, 25, 0, 0, 3055, 3057, 3, 136, 68, 0, 3056, 3054, 1, 0, 0, 0, 3056, 3057, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3059, 5, 265, 0, 0, 3059, 3095, 5, 73, 0, 0, 3060, 3061, 5, 300, 0, 0, 3061, 3062, 5, 182, 0, 0, 3062, 3065, 5, 164, 0, 0, 3063, 3064, 5, 25, 0, 0, 3064, 3066, 3, 136, 68, 0, 3065, 3063, 1, 0, 0, 0, 3065, 3066, 1, 0, 0, 0, 3066, 3067, 1, 0, 0, 0, 3067, 3068, 5, 265, 0, 0, 3068, 3080, 5, 127, 0, 0, 3069, 3070, 5, 1, 0, 0, 3070, 3075, 3, 294, 147, 0, 3071, 3072, 5, 3, 0, 0, 3072, 3074, 3, 294, 147, 0, 3073, 3071, 1, 0, 0, 0, 3074, 3077, 1, 0, 0, 0, 3075, 3073, 1, 0, 0, 0, 3075, 3076, 1, 0, 0, 0, 3076, 3078, 1, 0, 0, 0, 3077, 3075, 1, 0, 0, 0, 3078, 3079, 5, 2, 0, 0, 3079, 3081, 1, 0, 0, 0, 3080, 3069, 1, 0, 0, 0, 3080, 3081, 1, 0, 0, 0, 3081, 3082, 1, 0, 0, 0, 3082, 3083, 5, 296, 0, 0, 3083, 3084, 5, 1, 0, 0, 3084, 3089, 3, 136, 68, 0, 3085, 3086, 5, 3, 0, 0, 3086, 3088, 3, 136, 68, 0, 3087, 3085, 1, 0, 0, 0, 3088, 3091, 1, 0, 0, 0, 3089, 3087, 1, 0, 0, 0, 3089, 3090, 1, 0, 0, 0, 3090, 3092, 1, 0, 0, 0, 3091, 3089, 1, 0, 0, 0, 3092, 3093, 5, 2, 0, 0, 3093, 3095, 1, 0, 0, 0, 3094, 3030, 1, 0, 0, 0, 3094, 3052, 1, 0, 0, 0, 3094, 3060, 1, 0, 0, 0, 3095, 195, 1, 0, 0, 0, 3096, 3102, 5, 199, 0, 0, 3097, 3103, 3, 294, 147, 0, 3098, 3099, 5, 1, 0, 0, 3099, 3100, 3, 64, 32, 0, 3100, 3101, 5, 2, 0, 0, 3101, 3103, 1, 0, 0, 0, 3102, 3097, 1, 0, 0, 0, 3102, 3098, 1, 0, 0, 0, 3103, 197, 1, 0, 0, 0, 3104, 3105, 5, 168, 0, 0, 3105, 3110, 3, 90, 45, 0, 3106, 3107, 5, 3, 0, 0, 3107, 3109, 3, 90, 45, 0, 3108, 3106, 1, 0, 0, 0, 3109, 3112, 1, 0, 0, 0, 3110, 3108, 1, 0, 0, 0, 3110, 3111, 1, 0, 0, 0, 3111, 3114, 1, 0, 0, 0, 3112, 3110, 1, 0, 0, 0, 3113, 3104, 1, 0, 0, 0, 3113, 3114, 1, 0, 0, 0, 3114, 3115, 1, 0, 0, 0, 3115, 3119, 3, 200, 100, 0, 3116, 3117, 5, 21, 0, 0, 3117, 3118, 5, 163, 0, 0, 3118, 3120, 3, 96, 48, 0, 3119, 3116, 1, 0, 0, 0, 3119, 3120, 1, 0, 0, 0, 3120, 3122, 1, 0, 0, 0, 3121, 3123, 7, 13, 0, 0, 3122, 3121, 1, 0, 0, 0, 3122, 3123, 1, 0, 0, 0, 3123, 3129, 1, 0, 0, 0, 3124, 3125, 5, 206, 0, 0, 3125, 3126, 5, 1, 0, 0, 3126, 3127, 3, 204, 102, 0, 3127, 3128, 5, 2, 0, 0, 3128, 3130, 1, 0, 0, 0, 3129, 3124, 1, 0, 0, 0, 3129, 3130, 1, 0, 0, 0, 3130, 3140, 1, 0, 0, 0, 3131, 3132, 5, 257, 0, 0, 3132, 3137, 3, 98, 49, 0, 3133, 3134, 5, 3, 0, 0, 3134, 3136, 3, 98, 49, 0, 3135, 3133, 1, 0, 0, 0, 3136, 3139, 1, 0, 0, 0, 3137, 3135, 1, 0, 0, 0, 3137, 3138, 1, 0, 0, 0, 3138, 3141, 1, 0, 0, 0, 3139, 3137, 1, 0, 0, 0, 3140, 3131, 1, 0, 0, 0, 3140, 3141, 1, 0, 0, 0, 3141, 3151, 1, 0, 0, 0, 3142, 3143, 5, 71, 0, 0, 3143, 3148, 3, 100, 50, 0, 3144, 3145, 5, 3, 0, 0, 3145, 3147, 3, 100, 50, 0, 3146, 3144, 1, 0, 0, 0, 3147, 3150, 1, 0, 0, 0, 3148, 3146, 1, 0, 0, 0, 3148, 3149, 1, 0, 0, 0, 3149, 3152, 1, 0, 0, 0, 3150, 3148, 1, 0, 0, 0, 3151, 3142, 1, 0, 0, 0, 3151, 3152, 1, 0, 0, 0, 3152, 199, 1, 0, 0, 0, 3153, 3154, 5, 219, 0, 0, 3154, 3178, 3, 202, 101, 0, 3155, 3156, 5, 240, 0, 0, 3156, 3178, 3, 202, 101, 0, 3157, 3158, 5, 116, 0, 0, 3158, 3178, 3, 202, 101, 0, 3159, 3160, 5, 219, 0, 0, 3160, 3161, 5, 34, 0, 0, 3161, 3162, 3, 202, 101, 0, 3162, 3163, 5, 25, 0, 0, 3163, 3164, 3, 202, 101, 0, 3164, 3178, 1, 0, 0, 0, 3165, 3166, 5, 240, 0, 0, 3166, 3167, 5, 34, 0, 0, 3167, 3168, 3, 202, 101, 0, 3168, 3169, 5, 25, 0, 0, 3169, 3170, 3, 202, 101, 0, 3170, 3178, 1, 0, 0, 0, 3171, 3172, 5, 116, 0, 0, 3172, 3173, 5, 34, 0, 0, 3173, 3174, 3, 202, 101, 0, 3174, 3175, 5, 25, 0, 0, 3175, 3176, 3, 202, 101, 0, 3176, 3178, 1, 0, 0, 0, 3177, 3153, 1, 0, 0, 0, 3177, 3155, 1, 0, 0, 0, 3177, 3157, 1, 0, 0, 0, 3177, 3159, 1, 0, 0, 0, 3177, 3165, 1, 0, 0, 0, 3177, 3171, 1, 0, 0, 0, 3178, 201, 1, 0, 0, 0, 3179, 3180, 5, 278, 0, 0, 3180, 3189, 5, 212, 0, 0, 3181, 3182, 5, 278, 0, 0, 3182, 3189, 5, 102, 0, 0, 3183, 3184, 5, 56, 0, 0, 3184, 3189, 5, 239, 0, 0, 3185, 3186, 3, 136, 68, 0, 3186, 3187, 7, 29, 0, 0, 3187, 3189, 1, 0, 0, 0, 3188, 3179, 1, 0, 0, 0, 3188, 3181, 1, 0, 0, 0, 3188, 3183, 1, 0, 0, 0, 3188, 3185, 1, 0, 0, 0, 3189, 203, 1, 0, 0, 0, 3190, 3191, 6, 102, -1, 0, 3191, 3193, 3, 206, 103, 0, 3192, 3194, 3, 208, 104, 0, 3193, 3192, 1, 0, 0, 0, 3193, 3194, 1, 0, 0, 0, 3194, 3202, 1, 0, 0, 0, 3195, 3196, 10, 2, 0, 0, 3196, 3201, 3, 204, 102, 3, 3197, 3198, 10, 1, 0, 0, 3198, 3199, 5, 11, 0, 0, 3199, 3201, 3, 204, 102, 2, 3200, 3195, 1, 0, 0, 0, 3200, 3197, 1, 0, 0, 0, 3201, 3204, 1, 0, 0, 0, 3202, 3200, 1, 0, 0, 0, 3202, 3203, 1, 0, 0, 0, 3203, 205, 1, 0, 0, 0, 3204, 3202, 1, 0, 0, 0, 3205, 3231, 3, 294, 147, 0, 3206, 3207, 5, 1, 0, 0, 3207, 3231, 5, 2, 0, 0, 3208, 3209, 5, 209, 0, 0, 3209, 3210, 5, 1, 0, 0, 3210, 3215, 3, 204, 102, 0, 3211, 3212, 5, 3, 0, 0, 3212, 3214, 3, 204, 102, 0, 3213, 3211, 1, 0, 0, 0, 3214, 3217, 1, 0, 0, 0, 3215, 3213, 1, 0, 0, 0, 3215, 3216, 1, 0, 0, 0, 3216, 3218, 1, 0, 0, 0, 3217, 3215, 1, 0, 0, 0, 3218, 3219, 5, 2, 0, 0, 3219, 3231, 1, 0, 0, 0, 3220, 3221, 5, 1, 0, 0, 3221, 3222, 3, 204, 102, 0, 3222, 3223, 5, 2, 0, 0, 3223, 3231, 1, 0, 0, 0, 3224, 3231, 5, 12, 0, 0, 3225, 3231, 5, 13, 0, 0, 3226, 3227, 5, 14, 0, 0, 3227, 3228, 3, 204, 102, 0, 3228, 3229, 5, 15, 0, 0, 3229, 3231, 1, 0, 0, 0, 3230, 3205, 1, 0, 0, 0, 3230, 3206, 1, 0, 0, 0, 3230, 3208, 1, 0, 0, 0, 3230, 3220, 1, 0, 0, 0, 3230, 3224, 1, 0, 0, 0, 3230, 3225, 1, 0, 0, 0, 3230, 3226, 1, 0, 0, 0, 3231, 207, 1, 0, 0, 0, 3232, 3234, 5, 320, 0, 0, 3233, 3235, 5, 324, 0, 0, 3234, 3233, 1, 0, 0, 0, 3234, 3235, 1, 0, 0, 0, 3235, 3263, 1, 0, 0, 0, 3236, 3238, 5, 318, 0, 0, 3237, 3239, 5, 324, 0, 0, 3238, 3237, 1, 0, 0, 0, 3238, 3239, 1, 0, 0, 0, 3239, 3263, 1, 0, 0, 0, 3240, 3242, 5, 324, 0, 0, 3241, 3243, 5, 324, 0, 0, 3242, 3241, 1, 0, 0, 0, 3242, 3243, 1, 0, 0, 0, 3243, 3263, 1, 0, 0, 0, 3244, 3245, 5, 16, 0, 0, 3245, 3246, 5, 329, 0, 0, 3246, 3248, 5, 17, 0, 0, 3247, 3249, 5, 324, 0, 0, 3248, 3247, 1, 0, 0, 0, 3248, 3249, 1, 0, 0, 0, 3249, 3263, 1, 0, 0, 0, 3250, 3252, 5, 16, 0, 0, 3251, 3253, 5, 329, 0, 0, 3252, 3251, 1, 0, 0, 0, 3252, 3253, 1, 0, 0, 0, 3253, 3254, 1, 0, 0, 0, 3254, 3256, 5, 3, 0, 0, 3255, 3257, 5, 329, 0, 0, 3256, 3255, 1, 0, 0, 0, 3256, 3257, 1, 0, 0, 0, 3257, 3258, 1, 0, 0, 0, 3258, 3260, 5, 17, 0, 0, 3259, 3261, 5, 324, 0, 0, 3260, 3259, 1, 0, 0, 0, 3260, 3261, 1, 0, 0, 0, 3261, 3263, 1, 0, 0, 0, 3262, 3232, 1, 0, 0, 0, 3262, 3236, 1, 0, 0, 0, 3262, 3240, 1, 0, 0, 0, 3262, 3244, 1, 0, 0, 0, 3262, 3250, 1, 0, 0, 0, 3263, 209, 1, 0, 0, 0, 3264, 3265, 3, 294, 147, 0, 3265, 3266, 5, 312, 0, 0, 3266, 3267, 3, 136, 68, 0, 3267, 211, 1, 0, 0, 0, 3268, 3269, 5, 104, 0, 0, 3269, 3273, 7, 30, 0, 0, 3270, 3271, 5, 276, 0, 0, 3271, 3273, 7, 31, 0, 0, 3272, 3268, 1, 0, 0, 0, 3272, 3270, 1, 0, 0, 0, 3273, 213, 1, 0, 0, 0, 3274, 3275, 5, 134, 0, 0, 3275, 3276, 5, 153, 0, 0, 3276, 3280, 3, 216, 108, 0, 3277, 3278, 5, 220, 0, 0, 3278, 3280, 7, 32, 0, 0, 3279, 3274, 1, 0, 0, 0, 3279, 3277, 1, 0, 0, 0, 3280, 215, 1, 0, 0, 0, 3281, 3282, 5, 220, 0, 0, 3282, 3289, 5, 279, 0, 0, 3283, 3284, 5, 220, 0, 0, 3284, 3289, 5, 48, 0, 0, 3285, 3286, 5, 225, 0, 0, 3286, 3289, 5, 220, 0, 0, 3287, 3289, 5, 249, 0, 0, 3288, 3281, 1, 0, 0, 0, 3288, 3283, 1, 0, 0, 0, 3288, 3285, 1, 0, 0, 0, 3288, 3287, 1, 0, 0, 0, 3289, 217, 1, 0, 0, 0, 3290, 3296, 3, 136, 68, 0, 3291, 3292, 3, 294, 147, 0, 3292, 3293, 5, 6, 0, 0, 3293, 3294, 3, 136, 68, 0, 3294, 3296, 1, 0, 0, 0, 3295, 3290, 1, 0, 0, 0, 3295, 3291, 1, 0, 0, 0, 3296, 219, 1, 0, 0, 0, 3297, 3298, 3, 294, 147, 0, 3298, 3299, 5, 4, 0, 0, 3299, 3300, 3, 294, 147, 0, 3300, 3303, 1, 0, 0, 0, 3301, 3303, 3, 294, 147, 0, 3302, 3297, 1, 0, 0, 0, 3302, 3301, 1, 0, 0, 0, 3303, 221, 1, 0, 0, 0, 3304, 3309, 3, 220, 110, 0, 3305, 3306, 5, 3, 0, 0, 3306, 3308, 3, 220, 110, 0, 3307, 3305, 1, 0, 0, 0, 3308, 3311, 1, 0, 0, 0, 3309, 3307, 1, 0, 0, 0, 3309, 3310, 1, 0, 0, 0, 3310, 223, 1, 0, 0, 0, 3311, 3309, 1, 0, 0, 0, 3312, 3313, 5, 107, 0, 0, 3313, 3314, 3, 226, 113, 0, 3314, 3318, 3, 232, 116, 0, 3315, 3317, 3, 234, 117, 0, 3316, 3315, 1, 0, 0, 0, 3317, 3320, 1, 0, 0, 0, 3318, 3316, 1, 0, 0, 0, 3318, 3319, 1, 0, 0, 0, 3319, 3321, 1, 0, 0, 0, 3320, 3318, 1, 0, 0, 0, 3321, 3322, 3, 236, 118, 0, 3322, 225, 1, 0, 0, 0, 3323, 3324, 3, 274, 137, 0, 3324, 3333, 5, 1, 0, 0, 3325, 3330, 3, 230, 115, 0, 3326, 3327, 5, 3, 0, 0, 3327, 3329, 3, 230, 115, 0, 3328, 3326, 1, 0, 0, 0, 3329, 3332, 1, 0, 0, 0, 3330, 3328, 1, 0, 0, 0, 3330, 3331, 1, 0, 0, 0, 3331, 3334, 1, 0, 0, 0, 3332, 3330, 1, 0, 0, 0, 3333, 3325, 1, 0, 0, 0, 3333, 3334, 1, 0, 0, 0, 3334, 3335, 1, 0, 0, 0, 3335, 3336, 5, 2, 0, 0, 3336, 227, 1, 0, 0, 0, 3337, 3338, 3, 272, 136, 0, 3338, 3347, 5, 1, 0, 0, 3339, 3344, 3, 230, 115, 0, 3340, 3341, 5, 3, 0, 0, 3341, 3343, 3, 230, 115, 0, 3342, 3340, 1, 0, 0, 0, 3343, 3346, 1, 0, 0, 0, 3344, 3342, 1, 0, 0, 0, 3344, 3345, 1, 0, 0, 0, 3345, 3348, 1, 0, 0, 0, 3346, 3344, 1, 0, 0, 0, 3347, 3339, 1, 0, 0, 0, 3347, 3348, 1, 0, 0, 0, 3348, 3349, 1, 0, 0, 0, 3349, 3350, 5, 2, 0, 0, 3350, 229, 1, 0, 0, 0, 3351, 3353, 3, 294, 147, 0, 3352, 3351, 1, 0, 0, 0, 3352, 3353, 1, 0, 0, 0, 3353, 3354, 1, 0, 0, 0, 3354, 3355, 3, 184, 92, 0, 3355, 231, 1, 0, 0, 0, 3356, 3357, 5, 232, 0, 0, 3357, 3358, 3, 184, 92, 0, 3358, 233, 1, 0, 0, 0, 3359, 3360, 5, 147, 0, 0, 3360, 3379, 3, 294, 147, 0, 3361, 3363, 5, 182, 0, 0, 3362, 3361, 1, 0, 0, 0, 3362, 3363, 1, 0, 0, 0, 3363, 3364, 1, 0, 0, 0, 3364, 3379, 5, 78, 0, 0, 3365, 3366, 5, 232, 0, 0, 3366, 3367, 5, 183, 0, 0, 3367, 3368, 5, 190, 0, 0, 3368, 3369, 5, 183, 0, 0, 3369, 3379, 5, 126, 0, 0, 3370, 3371, 5, 38, 0, 0, 3371, 3372, 5, 190, 0, 0, 3372, 3373, 5, 183, 0, 0, 3373, 3379, 5, 126, 0, 0, 3374, 3375, 5, 246, 0, 0, 3375, 3379, 7, 1, 0, 0, 3376, 3377, 5, 46, 0, 0, 3377, 3379, 3, 168, 84, 0, 3378, 3359, 1, 0, 0, 0, 3378, 3362, 1, 0, 0, 0, 3378, 3365, 1, 0, 0, 0, 3378, 3370, 1, 0, 0, 0, 3378, 3374, 1, 0, 0, 0, 3378, 3376, 1, 0, 0, 0, 3379, 235, 1, 0, 0, 0, 3380, 3381, 5, 230, 0, 0, 3381, 3480, 3, 142, 71, 0, 3382, 3383, 5, 251, 0, 0, 3383, 3384, 3, 294, 147, 0, 3384, 3385, 5, 312, 0, 0, 3385, 3386, 3, 136, 68, 0, 3386, 3480, 1, 0, 0, 0, 3387, 3388, 5, 40, 0, 0, 3388, 3390, 3, 136, 68, 0, 3389, 3391, 3, 238, 119, 0, 3390, 3389, 1, 0, 0, 0, 3391, 3392, 1, 0, 0, 0, 3392, 3390, 1, 0, 0, 0, 3392, 3393, 1, 0, 0, 0, 3393, 3395, 1, 0, 0, 0, 3394, 3396, 3, 242, 121, 0, 3395, 3394, 1, 0, 0, 0, 3395, 3396, 1, 0, 0, 0, 3396, 3397, 1, 0, 0, 0, 3397, 3398, 5, 88, 0, 0, 3398, 3399, 5, 40, 0, 0, 3399, 3480, 1, 0, 0, 0, 3400, 3402, 5, 40, 0, 0, 3401, 3403, 3, 238, 119, 0, 3402, 3401, 1, 0, 0, 0, 3403, 3404, 1, 0, 0, 0, 3404, 3402, 1, 0, 0, 0, 3404, 3405, 1, 0, 0, 0, 3405, 3407, 1, 0, 0, 0, 3406, 3408, 3, 242, 121, 0, 3407, 3406, 1, 0, 0, 0, 3407, 3408, 1, 0, 0, 0, 3408, 3409, 1, 0, 0, 0, 3409, 3410, 5, 88, 0, 0, 3410, 3411, 5, 40, 0, 0, 3411, 3480, 1, 0, 0, 0, 3412, 3413, 5, 119, 0, 0, 3413, 3414, 3, 136, 68, 0, 3414, 3415, 5, 265, 0, 0, 3415, 3419, 3, 246, 123, 0, 3416, 3418, 3, 240, 120, 0, 3417, 3416, 1, 0, 0, 0, 3418, 3421, 1, 0, 0, 0, 3419, 3417, 1, 0, 0, 0, 3419, 3420, 1, 0, 0, 0, 3420, 3423, 1, 0, 0, 0, 3421, 3419, 1, 0, 0, 0, 3422, 3424, 3, 242, 121, 0, 3423, 3422, 1, 0, 0, 0, 3423, 3424, 1, 0, 0, 0, 3424, 3425, 1, 0, 0, 0, 3425, 3426, 5, 88, 0, 0, 3426, 3427, 5, 119, 0, 0, 3427, 3480, 1, 0, 0, 0, 3428, 3429, 5, 135, 0, 0, 3429, 3480, 3, 294, 147, 0, 3430, 3431, 5, 151, 0, 0, 3431, 3480, 3, 294, 147, 0, 3432, 3438, 5, 32, 0, 0, 3433, 3434, 3, 244, 122, 0, 3434, 3435, 5, 325, 0, 0, 3435, 3437, 1, 0, 0, 0, 3436, 3433, 1, 0, 0, 0, 3437, 3440, 1, 0, 0, 0, 3438, 3436, 1, 0, 0, 0, 3438, 3439, 1, 0, 0, 0, 3439, 3442, 1, 0, 0, 0, 3440, 3438, 1, 0, 0, 0, 3441, 3443, 3, 246, 123, 0, 3442, 3441, 1, 0, 0, 0, 3442, 3443, 1, 0, 0, 0, 3443, 3444, 1, 0, 0, 0, 3444, 3480, 5, 88, 0, 0, 3445, 3446, 3, 294, 147, 0, 3446, 3447, 5, 10, 0, 0, 3447, 3449, 1, 0, 0, 0, 3448, 3445, 1, 0, 0, 0, 3448, 3449, 1, 0, 0, 0, 3449, 3450, 1, 0, 0, 0, 3450, 3451, 5, 161, 0, 0, 3451, 3452, 3, 246, 123, 0, 3452, 3453, 5, 88, 0, 0, 3453, 3454, 5, 161, 0, 0, 3454, 3480, 1, 0, 0, 0, 3455, 3456, 3, 294, 147, 0, 3456, 3457, 5, 10, 0, 0, 3457, 3459, 1, 0, 0, 0, 3458, 3455, 1, 0, 0, 0, 3458, 3459, 1, 0, 0, 0, 3459, 3460, 1, 0, 0, 0, 3460, 3461, 5, 302, 0, 0, 3461, 3462, 3, 136, 68, 0, 3462, 3463, 5, 81, 0, 0, 3463, 3464, 3, 246, 123, 0, 3464, 3465, 5, 88, 0, 0, 3465, 3466, 5, 302, 0, 0, 3466, 3480, 1, 0, 0, 0, 3467, 3468, 3, 294, 147, 0, 3468, 3469, 5, 10, 0, 0, 3469, 3471, 1, 0, 0, 0, 3470, 3467, 1, 0, 0, 0, 3470, 3471, 1, 0, 0, 0, 3471, 3472, 1, 0, 0, 0, 3472, 3473, 5, 224, 0, 0, 3473, 3474, 3, 246, 123, 0, 3474, 3475, 5, 286, 0, 0, 3475, 3476, 3, 136, 68, 0, 3476, 3477, 5, 88, 0, 0, 3477, 3478, 5, 224, 0, 0, 3478, 3480, 1, 0, 0, 0, 3479, 3380, 1, 0, 0, 0, 3479, 3382, 1, 0, 0, 0, 3479, 3387, 1, 0, 0, 0, 3479, 3400, 1, 0, 0, 0, 3479, 3412, 1, 0, 0, 0, 3479, 3428, 1, 0, 0, 0, 3479, 3430, 1, 0, 0, 0, 3479, 3432, 1, 0, 0, 0, 3479, 3448, 1, 0, 0, 0, 3479, 3458, 1, 0, 0, 0, 3479, 3470, 1, 0, 0, 0, 3480, 237, 1, 0, 0, 0, 3481, 3482, 5, 300, 0, 0, 3482, 3483, 3, 136, 68, 0, 3483, 3484, 5, 265, 0, 0, 3484, 3485, 3, 246, 123, 0, 3485, 239, 1, 0, 0, 0, 3486, 3487, 5, 86, 0, 0, 3487, 3488, 3, 136, 68, 0, 3488, 3489, 5, 265, 0, 0, 3489, 3490, 3, 246, 123, 0, 3490, 241, 1, 0, 0, 0, 3491, 3492, 5, 84, 0, 0, 3492, 3493, 3, 246, 123, 0, 3493, 243, 1, 0, 0, 0, 3494, 3495, 5, 69, 0, 0, 3495, 3500, 3, 294, 147, 0, 3496, 3497, 5, 3, 0, 0, 3497, 3499, 3, 294, 147, 0, 3498, 3496, 1, 0, 0, 0, 3499, 3502, 1, 0, 0, 0, 3500, 3498, 1, 0, 0, 0, 3500, 3501, 1, 0, 0, 0, 3501, 3503, 1, 0, 0, 0, 3502, 3500, 1, 0, 0, 0, 3503, 3506, 3, 184, 92, 0, 3504, 3505, 5, 70, 0, 0, 3505, 3507, 3, 142, 71, 0, 3506, 3504, 1, 0, 0, 0, 3506, 3507, 1, 0, 0, 0, 3507, 245, 1, 0, 0, 0, 3508, 3509, 3, 236, 118, 0, 3509, 3510, 5, 325, 0, 0, 3510, 3512, 1, 0, 0, 0, 3511, 3508, 1, 0, 0, 0, 3512, 3513, 1, 0, 0, 0, 3513, 3511, 1, 0, 0, 0, 3513, 3514, 1, 0, 0, 0, 3514, 247, 1, 0, 0, 0, 3515, 3522, 5, 53, 0, 0, 3516, 3522, 5, 248, 0, 0, 3517, 3522, 5, 73, 0, 0, 3518, 3522, 5, 127, 0, 0, 3519, 3522, 5, 287, 0, 0, 3520, 3522, 3, 294, 147, 0, 3521, 3515, 1, 0, 0, 0, 3521, 3516, 1, 0, 0, 0, 3521, 3517, 1, 0, 0, 0, 3521, 3518, 1, 0, 0, 0, 3521, 3519, 1, 0, 0, 0, 3521, 3520, 1, 0, 0, 0, 3522, 249, 1, 0, 0, 0, 3523, 3527, 5, 260, 0, 0, 3524, 3527, 5, 243, 0, 0, 3525, 3527, 3, 294, 147, 0, 3526, 3523, 1, 0, 0, 0, 3526, 3524, 1, 0, 0, 0, 3526, 3525, 1, 0, 0, 0, 3527, 251, 1, 0, 0, 0, 3528, 3530, 3, 250, 125, 0, 3529, 3528, 1, 0, 0, 0, 3529, 3530, 1, 0, 0, 0, 3530, 3531, 1, 0, 0, 0, 3531, 3532, 3, 280, 140, 0, 3532, 253, 1, 0, 0, 0, 3533, 3536, 3, 256, 128, 0, 3534, 3536, 3, 260, 130, 0, 3535, 3533, 1, 0, 0, 0, 3535, 3534, 1, 0, 0, 0, 3536, 255, 1, 0, 0, 0, 3537, 3549, 3, 294, 147, 0, 3538, 3539, 3, 294, 147, 0, 3539, 3540, 5, 4, 0, 0, 3540, 3541, 3, 294, 147, 0, 3541, 3549, 1, 0, 0, 0, 3542, 3543, 3, 294, 147, 0, 3543, 3544, 5, 4, 0, 0, 3544, 3545, 3, 294, 147, 0, 3545, 3546, 5, 4, 0, 0, 3546, 3547, 3, 294, 147, 0, 3547, 3549, 1, 0, 0, 0, 3548, 3537, 1, 0, 0, 0, 3548, 3538, 1, 0, 0, 0, 3548, 3542, 1, 0, 0, 0, 3549, 257, 1, 0, 0, 0, 3550, 3562, 3, 294, 147, 0, 3551, 3552, 3, 294, 147, 0, 3552, 3553, 5, 4, 0, 0, 3553, 3554, 3, 294, 147, 0, 3554, 3562, 1, 0, 0, 0, 3555, 3556, 3, 294, 147, 0, 3556, 3557, 5, 4, 0, 0, 3557, 3558, 3, 294, 147, 0, 3558, 3559, 5, 4, 0, 0, 3559, 3560, 3, 294, 147, 0, 3560, 3562, 1, 0, 0, 0, 3561, 3550, 1, 0, 0, 0, 3561, 3551, 1, 0, 0, 0, 3561, 3555, 1, 0, 0, 0, 3562, 259, 1, 0, 0, 0, 3563, 3575, 3, 294, 147, 0, 3564, 3565, 3, 294, 147, 0, 3565, 3566, 5, 4, 0, 0, 3566, 3567, 3, 294, 147, 0, 3567, 3575, 1, 0, 0, 0, 3568, 3569, 3, 294, 147, 0, 3569, 3570, 5, 4, 0, 0, 3570, 3571, 3, 294, 147, 0, 3571, 3572, 5, 4, 0, 0, 3572, 3573, 3, 294, 147, 0, 3573, 3575, 1, 0, 0, 0, 3574, 3563, 1, 0, 0, 0, 3574, 3564, 1, 0, 0, 0, 3574, 3568, 1, 0, 0, 0, 3575, 261, 1, 0, 0, 0, 3576, 3588, 3, 294, 147, 0, 3577, 3578, 3, 294, 147, 0, 3578, 3579, 5, 4, 0, 0, 3579, 3580, 3, 294, 147, 0, 3580, 3588, 1, 0, 0, 0, 3581, 3582, 3, 294, 147, 0, 3582, 3583, 5, 4, 0, 0, 3583, 3584, 3, 294, 147, 0, 3584, 3585, 5, 4, 0, 0, 3585, 3586, 3, 294, 147, 0, 3586, 3588, 1, 0, 0, 0, 3587, 3576, 1, 0, 0, 0, 3587, 3577, 1, 0, 0, 0, 3587, 3581, 1, 0, 0, 0, 3588, 263, 1, 0, 0, 0, 3589, 3595, 3, 294, 147, 0, 3590, 3591, 3, 294, 147, 0, 3591, 3592, 5, 4, 0, 0, 3592, 3593, 3, 294, 147, 0, 3593, 3595, 1, 0, 0, 0, 3594, 3589, 1, 0, 0, 0, 3594, 3590, 1, 0, 0, 0, 3595, 265, 1, 0, 0, 0, 3596, 3602, 3, 294, 147, 0, 3597, 3598, 3, 294, 147, 0, 3598, 3599, 5, 4, 0, 0, 3599, 3600, 3, 294, 147, 0, 3600, 3602, 1, 0, 0, 0, 3601, 3596, 1, 0, 0, 0, 3601, 3597, 1, 0, 0, 0, 3602, 267, 1, 0, 0, 0, 3603, 3604, 3, 294, 147, 0, 3604, 269, 1, 0, 0, 0, 3605, 3606, 3, 294, 147, 0, 3606, 271, 1, 0, 0, 0, 3607, 3608, 3, 280, 140, 0, 3608, 273, 1, 0, 0, 0, 3609, 3610, 3, 280, 140, 0, 3610, 275, 1, 0, 0, 0, 3611, 3614, 3, 280, 140, 0, 3612, 3614, 4, 138, 14, 0, 3613, 3611, 1, 0, 0, 0, 3613, 3612, 1, 0, 0, 0, 3614, 277, 1, 0, 0, 0, 3615, 3616, 3, 294, 147, 0, 3616, 279, 1, 0, 0, 0, 3617, 3622, 3, 294, 147, 0, 3618, 3619, 5, 4, 0, 0, 3619, 3621, 3, 294, 147, 0, 3620, 3618, 1, 0, 0, 0, 3621, 3624, 1, 0, 0, 0, 3622, 3620, 1, 0, 0, 0, 3622, 3623, 1, 0, 0, 0, 3623, 281, 1, 0, 0, 0, 3624, 3622, 1, 0, 0, 0, 3625, 3626, 5, 103, 0, 0, 3626, 3627, 3, 284, 142, 0, 3627, 3628, 5, 28, 0, 0, 3628, 3629, 5, 187, 0, 0, 3629, 3630, 3, 142, 71, 0, 3630, 283, 1, 0, 0, 0, 3631, 3632, 7, 33, 0, 0, 3632, 285, 1, 0, 0, 0, 3633, 3637, 3, 288, 144, 0, 3634, 3637, 5, 64, 0, 0, 3635, 3637, 5, 60, 0, 0, 3636, 3633, 1, 0, 0, 0, 3636, 3634, 1, 0, 0, 0, 3636, 3635, 1, 0, 0, 0, 3637, 287, 1, 0, 0, 0, 3638, 3644, 3, 294, 147, 0, 3639, 3640, 5, 289, 0, 0, 3640, 3644, 3, 294, 147, 0, 3641, 3642, 5, 235, 0, 0, 3642, 3644, 3, 294, 147, 0, 3643, 3638, 1, 0, 0, 0, 3643, 3639, 1, 0, 0, 0, 3643, 3641, 1, 0, 0, 0, 3644, 289, 1, 0, 0, 0, 3645, 3650, 3, 294, 147, 0, 3646, 3647, 5, 3, 0, 0, 3647, 3649, 3, 294, 147, 0, 3648, 3646, 1, 0, 0, 0, 3649, 3652, 1, 0, 0, 0, 3650, 3648, 1, 0, 0, 0, 3650, 3651, 1, 0, 0, 0, 3651, 291, 1, 0, 0, 0, 3652, 3650, 1, 0, 0, 0, 3653, 3661, 5, 53, 0, 0, 3654, 3661, 5, 248, 0, 0, 3655, 3661, 5, 73, 0, 0, 3656, 3661, 5, 127, 0, 0, 3657, 3661, 5, 287, 0, 0, 3658, 3661, 5, 93, 0, 0, 3659, 3661, 3, 294, 147, 0, 3660, 3653, 1, 0, 0, 0, 3660, 3654, 1, 0, 0, 0, 3660, 3655, 1, 0, 0, 0, 3660, 3656, 1, 0, 0, 0, 3660, 3657, 1, 0, 0, 0, 3660, 3658, 1, 0, 0, 0, 3660, 3659, 1, 0, 0, 0, 3661, 293, 1, 0, 0, 0, 3662, 3668, 5, 332, 0, 0, 3663, 3668, 5, 334, 0, 0, 3664, 3668, 3, 300, 150, 0, 3665, 3668, 5, 335, 0, 0, 3666, 3668, 5, 333, 0, 0, 3667, 3662, 1, 0, 0, 0, 3667, 3663, 1, 0, 0, 0, 3667, 3664, 1, 0, 0, 0, 3667, 3665, 1, 0, 0, 0, 3667, 3666, 1, 0, 0, 0, 3668, 295, 1, 0, 0, 0, 3669, 3671, 5, 319, 0, 0, 3670, 3669, 1, 0, 0, 0, 3670, 3671, 1, 0, 0, 0, 3671, 3672, 1, 0, 0, 0, 3672, 3682, 5, 330, 0, 0, 3673, 3675, 5, 319, 0, 0, 3674, 3673, 1, 0, 0, 0, 3674, 3675, 1, 0, 0, 0, 3675, 3676, 1, 0, 0, 0, 3676, 3682, 5, 331, 0, 0, 3677, 3679, 5, 319, 0, 0, 3678, 3677, 1, 0, 0, 0, 3678, 3679, 1, 0, 0, 0, 3679, 3680, 1, 0, 0, 0, 3680, 3682, 5, 329, 0, 0, 3681, 3670, 1, 0, 0, 0, 3681, 3674, 1, 0, 0, 0, 3681, 3678, 1, 0, 0, 0, 3682, 297, 1, 0, 0, 0, 3683, 3686, 3, 294, 147, 0, 3684, 3686, 3, 168, 84, 0, 3685, 3683, 1, 0, 0, 0, 3685, 3684, 1, 0, 0, 0, 3686, 299, 1, 0, 0, 0, 3687, 3688, 7, 34, 0, 0, 3688, 301, 1, 0, 0, 0, 480, 305, 314, 318, 322, 326, 330, 343, 350, 354, 358, 364, 368, 375, 380, 384, 390, 394, 413, 419, 423, 427, 431, 439, 443, 446, 451, 457, 466, 472, 476, 482, 489, 498, 510, 519, 528, 534, 545, 553, 561, 568, 578, 585, 593, 608, 643, 646, 649, 653, 659, 664, 671, 677, 681, 685, 693, 699, 703, 707, 721, 729, 748, 773, 776, 783, 790, 799, 803, 810, 818, 827, 833, 838, 842, 850, 855, 864, 870, 877, 886, 892, 896, 902, 909, 914, 927, 932, 944, 948, 954, 963, 968, 974, 1002, 1008, 1010, 1016, 1022, 1024, 1032, 1034, 1044, 1046, 1061, 1066, 1073, 1083, 1089, 1091, 1099, 1101, 1126, 1129, 1133, 1137, 1155, 1158, 1169, 1172, 1188, 1198, 1203, 1209, 1212, 1221, 1233, 1236, 1246, 1250, 1256, 1263, 1268, 1274, 1278, 1282, 1288, 1299, 1308, 1318, 1321, 1326, 1328, 1335, 1341, 1343, 1347, 1357, 1363, 1366, 1368, 1380, 1387, 1391, 1394, 1398, 1402, 1409, 1418, 1421, 1425, 1430, 1434, 1442, 1445, 1448, 1455, 1466, 1469, 1479, 1482, 1493, 1498, 1506, 1509, 1513, 1517, 1526, 1535, 1538, 1547, 1550, 1553, 1557, 1568, 1571, 1574, 1581, 1584, 1603, 1607, 1611, 1615, 1619, 1623, 1625, 1636, 1641, 1650, 1659, 1662, 1668, 1680, 1683, 1692, 1695, 1703, 1706, 1709, 1714, 1717, 1729, 1732, 1740, 1745, 1749, 1751, 1753, 1768, 1770, 1781, 1802, 1812, 1823, 1827, 1829, 1837, 1848, 1859, 1866, 1879, 1885, 1911, 1926, 1931, 1935, 1945, 1951, 1957, 1965, 1970, 1977, 1979, 1985, 1991, 1995, 2000, 2009, 2014, 2028, 2038, 2041, 2050, 2055, 2060, 2062, 2071, 2074, 2082, 2085, 2092, 2097, 2108, 2111, 2115, 2117, 2125, 2135, 2141, 2143, 2150, 2154, 2156, 2163, 2167, 2169, 2171, 2180, 2191, 2195, 2205, 2215, 2219, 2227, 2229, 2242, 2250, 2259, 2265, 2273, 2279, 2283, 2288, 2293, 2299, 2313, 2315, 2345, 2356, 2364, 2369, 2374, 2387, 2393, 2396, 2403, 2408, 2411, 2414, 2419, 2426, 2429, 2438, 2441, 2445, 2448, 2451, 2466, 2469, 2488, 2492, 2500, 2504, 2529, 2532, 2541, 2547, 2553, 2559, 2568, 2571, 2574, 2593, 2602, 2624, 2627, 2637, 2646, 2652, 2658, 2669, 2671, 2676, 2683, 2685, 2691, 2697, 2708, 2717, 2722, 2727, 2729, 2731, 2737, 2739, 2749, 2758, 2760, 2766, 2768, 2771, 2781, 2783, 2791, 2799, 2802, 2807, 2812, 2824, 2828, 2832, 2835, 2837, 2845, 2848, 2858, 2866, 2872, 2874, 2882, 2892, 2898, 2912, 2921, 2928, 2933, 2940, 2950, 2955, 2962, 2988, 2993, 2995, 3002, 3006, 3013, 3017, 3034, 3049, 3056, 3065, 3075, 3080, 3089, 3094, 3102, 3110, 3113, 3119, 3122, 3129, 3137, 3140, 3148, 3151, 3177, 3188, 3193, 3200, 3202, 3215, 3230, 3234, 3238, 3242, 3248, 3252, 3256, 3260, 3262, 3272, 3279, 3288, 3295, 3302, 3309, 3318, 3330, 3333, 3344, 3347, 3352, 3362, 3378, 3392, 3395, 3404, 3407, 3419, 3423, 3438, 3442, 3448, 3458, 3470, 3479, 3500, 3506, 3513, 3521, 3526, 3529, 3535, 3548, 3561, 3574, 3587, 3594, 3601, 3613, 3622, 3636, 3643, 3650, 3660, 3667, 3670, 3674, 3678, 3681, 3685] \ No newline at end of file diff --git a/src/lib/trino/TrinoSql.tokens b/src/lib/trino/TrinoSql.tokens index 50a3a1fe..48b31716 100644 --- a/src/lib/trino/TrinoSql.tokens +++ b/src/lib/trino/TrinoSql.tokens @@ -14,525 +14,651 @@ T__12=13 T__13=14 T__14=15 T__15=16 -KW_ADD=17 -KW_ADMIN=18 -KW_AFTER=19 -KW_ALL=20 -KW_ALTER=21 -KW_ANALYZE=22 -KW_AND=23 -KW_ANY=24 -KW_ARRAY=25 -KW_AS=26 -KW_ASC=27 -KW_AT=28 -KW_AUTHORIZATION=29 -KW_BERNOULLI=30 -KW_BETWEEN=31 -KW_BY=32 -KW_CALL=33 -KW_CASCADE=34 -KW_CASE=35 -KW_CAST=36 -KW_CATALOGS=37 -KW_COLUMN=38 -KW_COLUMNS=39 -KW_COMMENT=40 -KW_COMMIT=41 -KW_COMMITTED=42 -KW_CONSTRAINT=43 -KW_CREATE=44 -KW_CROSS=45 -KW_CUBE=46 -KW_CURRENT=47 -KW_CURRENT_CATALOG=48 -KW_CURRENT_DATE=49 -KW_CURRENT_PATH=50 -KW_CURRENT_ROLE=51 -KW_CURRENT_SCHEMA=52 -KW_CURRENT_TIME=53 -KW_CURRENT_TIMESTAMP=54 -KW_CURRENT_USER=55 -KW_DATA=56 -KW_DATE=57 -KW_DAY=58 -KW_DEFAULT=59 -KW_DEALLOCATE=60 -KW_DEFINER=61 -KW_DELETE=62 -KW_DESC=63 -KW_DESCRIBE=64 -KW_DEFINE=65 -KW_DISTINCT=66 -KW_DISTRIBUTED=67 -KW_DOUBLE=68 -KW_DROP=69 -KW_ELSE=70 -KW_EMPTY=71 -KW_END=72 -KW_ESCAPE=73 -KW_EXCEPT=74 -KW_EXCLUDING=75 -KW_EXECUTE=76 -KW_EXISTS=77 -KW_EXPLAIN=78 -KW_EXTRACT=79 -KW_FALSE=80 -KW_FETCH=81 -KW_FILTER=82 -KW_FINAL=83 -KW_FIRST=84 -KW_FOLLOWING=85 -KW_FOR=86 -KW_FORMAT=87 -KW_FROM=88 -KW_FULL=89 -KW_FUNCTIONS=90 -KW_GRANT=91 -KW_GRANTED=92 -KW_GRANTS=93 -KW_DENY=94 -KW_GRAPHVIZ=95 -KW_GROUP=96 -KW_GROUPING=97 -KW_GROUPS=98 -KW_HAVING=99 -KW_HOUR=100 -KW_IF=101 -KW_IGNORE=102 -KW_IN=103 -KW_INCLUDING=104 -KW_INITIAL=105 -KW_INNER=106 -KW_INPUT=107 -KW_INSERT=108 -KW_INTERSECT=109 -KW_INTERVAL=110 -KW_INTO=111 -KW_INVOKER=112 -KW_IO=113 -KW_IS=114 -KW_ISOLATION=115 -KW_JOIN=116 -KW_JSON=117 -KW_LAST=118 -KW_LATERAL=119 -KW_LEFT=120 -KW_LEVEL=121 -KW_LIKE=122 -KW_LIMIT=123 -KW_LOCAL=124 -KW_LOCALTIME=125 -KW_LOCALTIMESTAMP=126 -KW_LOGICAL=127 -KW_MAP=128 -KW_MATCH=129 -KW_MATCHED=130 -KW_MATCHES=131 -KW_MATCH_RECOGNIZE=132 -KW_MATERIALIZED=133 -KW_MEASURES=134 -KW_MERGE=135 -KW_MINUTE=136 -KW_MONTH=137 -KW_NATURAL=138 -KW_NEXT=139 -KW_NFC=140 -KW_NFD=141 -KW_NFKC=142 -KW_NFKD=143 -KW_NO=144 -KW_NONE=145 -KW_NORMALIZE=146 -KW_NOT=147 -KW_NULL=148 -KW_NULLIF=149 -KW_NULLS=150 -KW_OFFSET=151 -KW_OMIT=152 -KW_ON=153 -KW_ONE=154 -KW_ONLY=155 -KW_OPTION=156 -KW_OR=157 -KW_ORDER=158 -KW_ORDINALITY=159 -KW_OUTER=160 -KW_OUTPUT=161 -KW_OVER=162 -KW_PARTITION=163 -KW_PARTITIONS=164 -KW_PAST=165 -KW_PATH=166 -KW_PATTERN=167 -KW_PER=168 -KW_PERMUTE=169 -KW_POSITION=170 -KW_PRECEDING=171 -KW_PRECISION=172 -KW_PREPARE=173 -KW_PRIVILEGES=174 -KW_PROPERTIES=175 -KW_RANGE=176 -KW_READ=177 -KW_RECURSIVE=178 -KW_REFRESH=179 -KW_RENAME=180 -KW_REPEATABLE=181 -KW_REPLACE=182 -KW_RESET=183 -KW_RESPECT=184 -KW_RESTRICT=185 -KW_REVOKE=186 -KW_RIGHT=187 -KW_ROLE=188 -KW_ROLES=189 -KW_ROLLBACK=190 -KW_ROLLUP=191 -KW_ROW=192 -KW_ROWS=193 -KW_RUNNING=194 -KW_SCHEMA=195 -KW_SCHEMAS=196 -KW_SECOND=197 -KW_SECURITY=198 -KW_SEEK=199 -KW_SELECT=200 -KW_SERIALIZABLE=201 -KW_SESSION=202 -KW_SET=203 -KW_SETS=204 -KW_SHOW=205 -KW_SOME=206 -KW_START=207 -KW_STATS=208 -KW_SUBSET=209 -KW_SUBSTRING=210 -KW_SYSTEM=211 -KW_TABLE=212 -KW_TABLES=213 -KW_TABLESAMPLE=214 -KW_TEXT=215 -KW_THEN=216 -KW_TIES=217 -KW_TIME=218 -KW_TIMESTAMP=219 -KW_TO=220 -KW_TRANSACTION=221 -KW_TRUNCATE=222 -KW_TRUE=223 -KW_TRY_CAST=224 -KW_TYPE=225 -KW_UESCAPE=226 -KW_UNBOUNDED=227 -KW_UNCOMMITTED=228 -KW_UNION=229 -KW_UNMATCHED=230 -KW_UNNEST=231 -KW_UPDATE=232 -KW_USE=233 -KW_USER=234 -KW_USING=235 -KW_VALIDATE=236 -KW_VALUES=237 -KW_VERBOSE=238 -KW_VIEW=239 -KW_WHEN=240 -KW_WHERE=241 -KW_WINDOW=242 -KW_WITH=243 -KW_WITHOUT=244 -KW_WORK=245 -KW_WRITE=246 -KW_YEAR=247 -KW_ZONE=248 -EQ=249 -NEQ=250 -LT=251 -LTE=252 -GT=253 -GTE=254 -PLUS=255 -MINUS=256 -ASTERISK=257 -SLASH=258 -PERCENT=259 -CONCAT=260 -QUESTION_MARK=261 -STRING=262 -UNICODE_STRING=263 -BINARY_LITERAL=264 -INTEGER_VALUE=265 -DECIMAL_VALUE=266 -DOUBLE_VALUE=267 -IDENTIFIER=268 -DIGIT_IDENTIFIER=269 -QUOTED_IDENTIFIER=270 -BACKQUOTED_IDENTIFIER=271 -SEMICOLON=272 -SIMPLE_COMMENT=273 -BRACKETED_COMMENT=274 -WS=275 -UNRECOGNIZED=276 -DELIMITER=277 +T__16=17 +KW_ABSENT=18 +KW_ADD=19 +KW_ADMIN=20 +KW_AFTER=21 +KW_ALL=22 +KW_ALTER=23 +KW_ANALYZE=24 +KW_AND=25 +KW_ANY=26 +KW_ARRAY=27 +KW_AS=28 +KW_ASC=29 +KW_AT=30 +KW_AUTHORIZATION=31 +KW_BEGIN=32 +KW_BERNOULLI=33 +KW_BETWEEN=34 +KW_BOTH=35 +KW_BY=36 +KW_CALL=37 +KW_CALLED=38 +KW_CASCADE=39 +KW_CASE=40 +KW_CAST=41 +KW_CATALOG=42 +KW_CATALOGS=43 +KW_COLUMN=44 +KW_COLUMNS=45 +KW_COMMENT=46 +KW_COMMIT=47 +KW_COMMITTED=48 +KW_CONDITIONAL=49 +KW_CONSTRAINT=50 +KW_COUNT=51 +KW_COPARTITION=52 +KW_CREATE=53 +KW_CROSS=54 +KW_CUBE=55 +KW_CURRENT=56 +KW_CURRENT_CATALOG=57 +KW_CURRENT_DATE=58 +KW_CURRENT_PATH=59 +KW_CURRENT_ROLE=60 +KW_CURRENT_SCHEMA=61 +KW_CURRENT_TIME=62 +KW_CURRENT_TIMESTAMP=63 +KW_CURRENT_USER=64 +KW_DATA=65 +KW_DATE=66 +KW_DAY=67 +KW_DEALLOCATE=68 +KW_DECLARE=69 +KW_DEFAULT=70 +KW_DEFINE=71 +KW_DEFINER=72 +KW_DELETE=73 +KW_DENY=74 +KW_DESC=75 +KW_DESCRIBE=76 +KW_DESCRIPTOR=77 +KW_DETERMINISTIC=78 +KW_DISTINCT=79 +KW_DISTRIBUTED=80 +KW_DO=81 +KW_DOUBLE=82 +KW_DROP=83 +KW_ELSE=84 +KW_EMPTY=85 +KW_ELSEIF=86 +KW_ENCODING=87 +KW_END=88 +KW_ERROR=89 +KW_ESCAPE=90 +KW_EXCEPT=91 +KW_EXCLUDING=92 +KW_EXECUTE=93 +KW_EXISTS=94 +KW_EXPLAIN=95 +KW_EXTRACT=96 +KW_FALSE=97 +KW_FETCH=98 +KW_FILTER=99 +KW_FINAL=100 +KW_FIRST=101 +KW_FOLLOWING=102 +KW_FOR=103 +KW_FORMAT=104 +KW_FROM=105 +KW_FULL=106 +KW_FUNCTION=107 +KW_FUNCTIONS=108 +KW_GRACE=109 +KW_GRANT=110 +KW_GRANTED=111 +KW_GRANTS=112 +KW_GRAPHVIZ=113 +KW_GROUP=114 +KW_GROUPING=115 +KW_GROUPS=116 +KW_HAVING=117 +KW_HOUR=118 +KW_IF=119 +KW_IGNORE=120 +KW_IMMEDIATE=121 +KW_IN=122 +KW_INCLUDING=123 +KW_INITIAL=124 +KW_INNER=125 +KW_INPUT=126 +KW_INSERT=127 +KW_INTERSECT=128 +KW_INTERVAL=129 +KW_INTO=130 +KW_INVOKER=131 +KW_IO=132 +KW_IS=133 +KW_ISOLATION=134 +KW_ITERATE=135 +KW_JOIN=136 +KW_JSON=137 +KW_JSON_ARRAY=138 +KW_JSON_EXISTS=139 +KW_JSON_OBJECT=140 +KW_JSON_QUERY=141 +KW_JSON_TABLE=142 +KW_JSON_VALUE=143 +KW_KEEP=144 +KW_KEY=145 +KW_KEYS=146 +KW_LANGUAGE=147 +KW_LAST=148 +KW_LATERAL=149 +KW_LEADING=150 +KW_LEAVE=151 +KW_LEFT=152 +KW_LEVEL=153 +KW_LIKE=154 +KW_LIMIT=155 +KW_LISTAGG=156 +KW_LOCAL=157 +KW_LOCALTIME=158 +KW_LOCALTIMESTAMP=159 +KW_LOGICAL=160 +KW_LOOP=161 +KW_MAP=162 +KW_MATCH=163 +KW_MATCHED=164 +KW_MATCHES=165 +KW_MATCH_RECOGNIZE=166 +KW_MATERIALIZED=167 +KW_MEASURES=168 +KW_MERGE=169 +KW_MINUTE=170 +KW_MONTH=171 +KW_NATURAL=172 +KW_NESTED=173 +KW_NEXT=174 +KW_NFC=175 +KW_NFD=176 +KW_NFKC=177 +KW_NFKD=178 +KW_NO=179 +KW_NONE=180 +KW_NORMALIZE=181 +KW_NOT=182 +KW_NULL=183 +KW_NULLIF=184 +KW_NULLS=185 +KW_OBJECT=186 +KW_OF=187 +KW_OFFSET=188 +KW_OMIT=189 +KW_ON=190 +KW_ONE=191 +KW_ONLY=192 +KW_OPTION=193 +KW_OR=194 +KW_ORDER=195 +KW_ORDINALITY=196 +KW_OUTER=197 +KW_OUTPUT=198 +KW_OVER=199 +KW_OVERFLOW=200 +KW_PARTITION=201 +KW_PARTITIONS=202 +KW_PASSING=203 +KW_PAST=204 +KW_PATH=205 +KW_PATTERN=206 +KW_PER=207 +KW_PERIOD=208 +KW_PERMUTE=209 +KW_PLAN=210 +KW_POSITION=211 +KW_PRECEDING=212 +KW_PRECISION=213 +KW_PREPARE=214 +KW_PRIVILEGES=215 +KW_PROPERTIES=216 +KW_PRUNE=217 +KW_QUOTES=218 +KW_RANGE=219 +KW_READ=220 +KW_RECURSIVE=221 +KW_REFRESH=222 +KW_RENAME=223 +KW_REPEAT=224 +KW_REPEATABLE=225 +KW_REPLACE=226 +KW_RESET=227 +KW_RESPECT=228 +KW_RESTRICT=229 +KW_RETURN=230 +KW_RETURNING=231 +KW_RETURNS=232 +KW_REVOKE=233 +KW_RIGHT=234 +KW_ROLE=235 +KW_ROLES=236 +KW_ROLLBACK=237 +KW_ROLLUP=238 +KW_ROW=239 +KW_ROWS=240 +KW_RUNNING=241 +KW_SCALAR=242 +KW_SCHEMA=243 +KW_SCHEMAS=244 +KW_SECOND=245 +KW_SECURITY=246 +KW_SEEK=247 +KW_SELECT=248 +KW_SERIALIZABLE=249 +KW_SESSION=250 +KW_SET=251 +KW_SETS=252 +KW_SHOW=253 +KW_SOME=254 +KW_START=255 +KW_STATS=256 +KW_SUBSET=257 +KW_SUBSTRING=258 +KW_SYSTEM=259 +KW_TABLE=260 +KW_TABLES=261 +KW_TABLESAMPLE=262 +KW_TEXT=263 +KW_TEXT_STRING=264 +KW_THEN=265 +KW_TIES=266 +KW_TIME=267 +KW_TIMESTAMP=268 +KW_TO=269 +KW_TRAILING=270 +KW_TRANSACTION=271 +KW_TRIM=272 +KW_TRUE=273 +KW_TRUNCATE=274 +KW_TRY_CAST=275 +KW_TYPE=276 +KW_UESCAPE=277 +KW_UNBOUNDED=278 +KW_UNCOMMITTED=279 +KW_UNCONDITIONAL=280 +KW_UNION=281 +KW_UNIQUE=282 +KW_UNKNOWN=283 +KW_UNMATCHED=284 +KW_UNNEST=285 +KW_UNTIL=286 +KW_UPDATE=287 +KW_USE=288 +KW_USER=289 +KW_USING=290 +KW_UTF16=291 +KW_UTF32=292 +KW_UTF8=293 +KW_VALIDATE=294 +KW_VALUE=295 +KW_VALUES=296 +KW_VERBOSE=297 +KW_VERSION=298 +KW_VIEW=299 +KW_WHEN=300 +KW_WHERE=301 +KW_WHILE=302 +KW_WINDOW=303 +KW_WITH=304 +KW_WITHIN=305 +KW_WITHOUT=306 +KW_WORK=307 +KW_WRAPPER=308 +KW_WRITE=309 +KW_YEAR=310 +KW_ZONE=311 +EQ=312 +NEQ=313 +LT=314 +LTE=315 +GT=316 +GTE=317 +PLUS=318 +MINUS=319 +ASTERISK=320 +SLASH=321 +PERCENT=322 +CONCAT=323 +QUESTION_MARK=324 +SEMICOLON=325 +STRING=326 +UNICODE_STRING=327 +BINARY_LITERAL=328 +INTEGER_VALUE=329 +DECIMAL_VALUE=330 +DOUBLE_VALUE=331 +IDENTIFIER=332 +DIGIT_IDENTIFIER=333 +QUOTED_IDENTIFIER=334 +BACKQUOTED_IDENTIFIER=335 +SIMPLE_COMMENT=336 +BRACKETED_COMMENT=337 +WS=338 +UNRECOGNIZED=339 +DELIMITER=340 '('=1 ')'=2 ','=3 '.'=4 'SKIP'=5 -'->'=6 -'['=7 -']'=8 -'|'=9 -'^'=10 -'$'=11 -'{-'=12 -'-}'=13 -'{'=14 -'}'=15 -'=>'=16 -'ADD'=17 -'ADMIN'=18 -'AFTER'=19 -'ALL'=20 -'ALTER'=21 -'ANALYZE'=22 -'AND'=23 -'ANY'=24 -'ARRAY'=25 -'AS'=26 -'ASC'=27 -'AT'=28 -'AUTHORIZATION'=29 -'BERNOULLI'=30 -'BETWEEN'=31 -'BY'=32 -'CALL'=33 -'CASCADE'=34 -'CASE'=35 -'CAST'=36 -'CATALOGS'=37 -'COLUMN'=38 -'COLUMNS'=39 -'COMMENT'=40 -'COMMIT'=41 -'COMMITTED'=42 -'CONSTRAINT'=43 -'CREATE'=44 -'CROSS'=45 -'CUBE'=46 -'CURRENT'=47 -'CURRENT_CATALOG'=48 -'CURRENT_DATE'=49 -'CURRENT_PATH'=50 -'CURRENT_ROLE'=51 -'CURRENT_SCHEMA'=52 -'CURRENT_TIME'=53 -'CURRENT_TIMESTAMP'=54 -'CURRENT_USER'=55 -'DATA'=56 -'DATE'=57 -'DAY'=58 -'DEFAULT'=59 -'DEALLOCATE'=60 -'DEFINER'=61 -'DELETE'=62 -'DESC'=63 -'DESCRIBE'=64 -'DEFINE'=65 -'DISTINCT'=66 -'DISTRIBUTED'=67 -'DOUBLE'=68 -'DROP'=69 -'ELSE'=70 -'EMPTY'=71 -'END'=72 -'ESCAPE'=73 -'EXCEPT'=74 -'EXCLUDING'=75 -'EXECUTE'=76 -'EXISTS'=77 -'EXPLAIN'=78 -'EXTRACT'=79 -'FALSE'=80 -'FETCH'=81 -'FILTER'=82 -'FINAL'=83 -'FIRST'=84 -'FOLLOWING'=85 -'FOR'=86 -'FORMAT'=87 -'FROM'=88 -'FULL'=89 -'FUNCTIONS'=90 -'GRANT'=91 -'GRANTED'=92 -'GRANTS'=93 -'DENY'=94 -'GRAPHVIZ'=95 -'GROUP'=96 -'GROUPING'=97 -'GROUPS'=98 -'HAVING'=99 -'HOUR'=100 -'IF'=101 -'IGNORE'=102 -'IN'=103 -'INCLUDING'=104 -'INITIAL'=105 -'INNER'=106 -'INPUT'=107 -'INSERT'=108 -'INTERSECT'=109 -'INTERVAL'=110 -'INTO'=111 -'INVOKER'=112 -'IO'=113 -'IS'=114 -'ISOLATION'=115 -'JOIN'=116 -'JSON'=117 -'LAST'=118 -'LATERAL'=119 -'LEFT'=120 -'LEVEL'=121 -'LIKE'=122 -'LIMIT'=123 -'LOCAL'=124 -'LOCALTIME'=125 -'LOCALTIMESTAMP'=126 -'LOGICAL'=127 -'MAP'=128 -'MATCH'=129 -'MATCHED'=130 -'MATCHES'=131 -'MATCH_RECOGNIZE'=132 -'MATERIALIZED'=133 -'MEASURES'=134 -'MERGE'=135 -'MINUTE'=136 -'MONTH'=137 -'NATURAL'=138 -'NEXT'=139 -'NFC'=140 -'NFD'=141 -'NFKC'=142 -'NFKD'=143 -'NO'=144 -'NONE'=145 -'NORMALIZE'=146 -'NOT'=147 -'NULL'=148 -'NULLIF'=149 -'NULLS'=150 -'OFFSET'=151 -'OMIT'=152 -'ON'=153 -'ONE'=154 -'ONLY'=155 -'OPTION'=156 -'OR'=157 -'ORDER'=158 -'ORDINALITY'=159 -'OUTER'=160 -'OUTPUT'=161 -'OVER'=162 -'PARTITION'=163 -'PARTITIONS'=164 -'PAST'=165 -'PATH'=166 -'PATTERN'=167 -'PER'=168 -'PERMUTE'=169 -'POSITION'=170 -'PRECEDING'=171 -'PRECISION'=172 -'PREPARE'=173 -'PRIVILEGES'=174 -'PROPERTIES'=175 -'RANGE'=176 -'READ'=177 -'RECURSIVE'=178 -'REFRESH'=179 -'RENAME'=180 -'REPEATABLE'=181 -'REPLACE'=182 -'RESET'=183 -'RESPECT'=184 -'RESTRICT'=185 -'REVOKE'=186 -'RIGHT'=187 -'ROLE'=188 -'ROLES'=189 -'ROLLBACK'=190 -'ROLLUP'=191 -'ROW'=192 -'ROWS'=193 -'RUNNING'=194 -'SCHEMA'=195 -'SCHEMAS'=196 -'SECOND'=197 -'SECURITY'=198 -'SEEK'=199 -'SELECT'=200 -'SERIALIZABLE'=201 -'SESSION'=202 -'SET'=203 -'SETS'=204 -'SHOW'=205 -'SOME'=206 -'START'=207 -'STATS'=208 -'SUBSET'=209 -'SUBSTRING'=210 -'SYSTEM'=211 -'TABLE'=212 -'TABLES'=213 -'TABLESAMPLE'=214 -'TEXT'=215 -'THEN'=216 -'TIES'=217 -'TIME'=218 -'TIMESTAMP'=219 -'TO'=220 -'TRANSACTION'=221 -'TRUNCATE'=222 -'TRUE'=223 -'TRY_CAST'=224 -'TYPE'=225 -'UESCAPE'=226 -'UNBOUNDED'=227 -'UNCOMMITTED'=228 -'UNION'=229 -'UNMATCHED'=230 -'UNNEST'=231 -'UPDATE'=232 -'USE'=233 -'USER'=234 -'USING'=235 -'VALIDATE'=236 -'VALUES'=237 -'VERBOSE'=238 -'VIEW'=239 -'WHEN'=240 -'WHERE'=241 -'WINDOW'=242 -'WITH'=243 -'WITHOUT'=244 -'WORK'=245 -'WRITE'=246 -'YEAR'=247 -'ZONE'=248 -'='=249 -'<'=251 -'<='=252 -'>'=253 -'>='=254 -'+'=255 -'-'=256 -'*'=257 -'/'=258 -'%'=259 -'||'=260 -'?'=261 -';'=272 +'=>'=6 +'->'=7 +'['=8 +']'=9 +':'=10 +'|'=11 +'^'=12 +'$'=13 +'{-'=14 +'-}'=15 +'{'=16 +'}'=17 +'ABSENT'=18 +'ADD'=19 +'ADMIN'=20 +'AFTER'=21 +'ALL'=22 +'ALTER'=23 +'ANALYZE'=24 +'AND'=25 +'ANY'=26 +'ARRAY'=27 +'AS'=28 +'ASC'=29 +'AT'=30 +'AUTHORIZATION'=31 +'BEGIN'=32 +'BERNOULLI'=33 +'BETWEEN'=34 +'BOTH'=35 +'BY'=36 +'CALL'=37 +'CALLED'=38 +'CASCADE'=39 +'CASE'=40 +'CAST'=41 +'CATALOG'=42 +'CATALOGS'=43 +'COLUMN'=44 +'COLUMNS'=45 +'COMMENT'=46 +'COMMIT'=47 +'COMMITTED'=48 +'CONDITIONAL'=49 +'CONSTRAINT'=50 +'COUNT'=51 +'COPARTITION'=52 +'CREATE'=53 +'CROSS'=54 +'CUBE'=55 +'CURRENT'=56 +'CURRENT_CATALOG'=57 +'CURRENT_DATE'=58 +'CURRENT_PATH'=59 +'CURRENT_ROLE'=60 +'CURRENT_SCHEMA'=61 +'CURRENT_TIME'=62 +'CURRENT_TIMESTAMP'=63 +'CURRENT_USER'=64 +'DATA'=65 +'DATE'=66 +'DAY'=67 +'DEALLOCATE'=68 +'DECLARE'=69 +'DEFAULT'=70 +'DEFINE'=71 +'DEFINER'=72 +'DELETE'=73 +'DENY'=74 +'DESC'=75 +'DESCRIBE'=76 +'DESCRIPTOR'=77 +'DETERMINISTIC'=78 +'DISTINCT'=79 +'DISTRIBUTED'=80 +'DO'=81 +'DOUBLE'=82 +'DROP'=83 +'ELSE'=84 +'EMPTY'=85 +'ELSEIF'=86 +'ENCODING'=87 +'END'=88 +'ERROR'=89 +'ESCAPE'=90 +'EXCEPT'=91 +'EXCLUDING'=92 +'EXECUTE'=93 +'EXISTS'=94 +'EXPLAIN'=95 +'EXTRACT'=96 +'FALSE'=97 +'FETCH'=98 +'FILTER'=99 +'FINAL'=100 +'FIRST'=101 +'FOLLOWING'=102 +'FOR'=103 +'FORMAT'=104 +'FROM'=105 +'FULL'=106 +'FUNCTION'=107 +'FUNCTIONS'=108 +'GRACE'=109 +'GRANT'=110 +'GRANTED'=111 +'GRANTS'=112 +'GRAPHVIZ'=113 +'GROUP'=114 +'GROUPING'=115 +'GROUPS'=116 +'HAVING'=117 +'HOUR'=118 +'IF'=119 +'IGNORE'=120 +'IMMEDIATE'=121 +'IN'=122 +'INCLUDING'=123 +'INITIAL'=124 +'INNER'=125 +'INPUT'=126 +'INSERT'=127 +'INTERSECT'=128 +'INTERVAL'=129 +'INTO'=130 +'INVOKER'=131 +'IO'=132 +'IS'=133 +'ISOLATION'=134 +'ITERATE'=135 +'JOIN'=136 +'JSON'=137 +'JSON_ARRAY'=138 +'JSON_EXISTS'=139 +'JSON_OBJECT'=140 +'JSON_QUERY'=141 +'JSON_TABLE'=142 +'JSON_VALUE'=143 +'KEEP'=144 +'KEY'=145 +'KEYS'=146 +'LANGUAGE'=147 +'LAST'=148 +'LATERAL'=149 +'LEADING'=150 +'LEAVE'=151 +'LEFT'=152 +'LEVEL'=153 +'LIKE'=154 +'LIMIT'=155 +'LISTAGG'=156 +'LOCAL'=157 +'LOCALTIME'=158 +'LOCALTIMESTAMP'=159 +'LOGICAL'=160 +'LOOP'=161 +'MAP'=162 +'MATCH'=163 +'MATCHED'=164 +'MATCHES'=165 +'MATCH_RECOGNIZE'=166 +'MATERIALIZED'=167 +'MEASURES'=168 +'MERGE'=169 +'MINUTE'=170 +'MONTH'=171 +'NATURAL'=172 +'NESTED'=173 +'NEXT'=174 +'NFC'=175 +'NFD'=176 +'NFKC'=177 +'NFKD'=178 +'NO'=179 +'NONE'=180 +'NORMALIZE'=181 +'NOT'=182 +'NULL'=183 +'NULLIF'=184 +'NULLS'=185 +'OBJECT'=186 +'OF'=187 +'OFFSET'=188 +'OMIT'=189 +'ON'=190 +'ONE'=191 +'ONLY'=192 +'OPTION'=193 +'OR'=194 +'ORDER'=195 +'ORDINALITY'=196 +'OUTER'=197 +'OUTPUT'=198 +'OVER'=199 +'OVERFLOW'=200 +'PARTITION'=201 +'PARTITIONS'=202 +'PASSING'=203 +'PAST'=204 +'PATH'=205 +'PATTERN'=206 +'PER'=207 +'PERIOD'=208 +'PERMUTE'=209 +'PLAN'=210 +'POSITION'=211 +'PRECEDING'=212 +'PRECISION'=213 +'PREPARE'=214 +'PRIVILEGES'=215 +'PROPERTIES'=216 +'PRUNE'=217 +'QUOTES'=218 +'RANGE'=219 +'READ'=220 +'RECURSIVE'=221 +'REFRESH'=222 +'RENAME'=223 +'REPEAT'=224 +'REPEATABLE'=225 +'REPLACE'=226 +'RESET'=227 +'RESPECT'=228 +'RESTRICT'=229 +'RETURN'=230 +'RETURNING'=231 +'RETURNS'=232 +'REVOKE'=233 +'RIGHT'=234 +'ROLE'=235 +'ROLES'=236 +'ROLLBACK'=237 +'ROLLUP'=238 +'ROW'=239 +'ROWS'=240 +'RUNNING'=241 +'SCALAR'=242 +'SCHEMA'=243 +'SCHEMAS'=244 +'SECOND'=245 +'SECURITY'=246 +'SEEK'=247 +'SELECT'=248 +'SERIALIZABLE'=249 +'SESSION'=250 +'SET'=251 +'SETS'=252 +'SHOW'=253 +'SOME'=254 +'START'=255 +'STATS'=256 +'SUBSET'=257 +'SUBSTRING'=258 +'SYSTEM'=259 +'TABLE'=260 +'TABLES'=261 +'TABLESAMPLE'=262 +'TEXT'=263 +'STRING'=264 +'THEN'=265 +'TIES'=266 +'TIME'=267 +'TIMESTAMP'=268 +'TO'=269 +'TRAILING'=270 +'TRANSACTION'=271 +'TRIM'=272 +'TRUE'=273 +'TRUNCATE'=274 +'TRY_CAST'=275 +'TYPE'=276 +'UESCAPE'=277 +'UNBOUNDED'=278 +'UNCOMMITTED'=279 +'UNCONDITIONAL'=280 +'UNION'=281 +'UNIQUE'=282 +'UNKNOWN'=283 +'UNMATCHED'=284 +'UNNEST'=285 +'UNTIL'=286 +'UPDATE'=287 +'USE'=288 +'USER'=289 +'USING'=290 +'UTF16'=291 +'UTF32'=292 +'UTF8'=293 +'VALIDATE'=294 +'VALUE'=295 +'VALUES'=296 +'VERBOSE'=297 +'VERSION'=298 +'VIEW'=299 +'WHEN'=300 +'WHERE'=301 +'WHILE'=302 +'WINDOW'=303 +'WITH'=304 +'WITHIN'=305 +'WITHOUT'=306 +'WORK'=307 +'WRAPPER'=308 +'WRITE'=309 +'YEAR'=310 +'ZONE'=311 +'='=312 +'<'=314 +'<='=315 +'>'=316 +'>='=317 +'+'=318 +'-'=319 +'*'=320 +'/'=321 +'%'=322 +'||'=323 +'?'=324 +';'=325 diff --git a/src/lib/trino/TrinoSqlLexer.interp b/src/lib/trino/TrinoSqlLexer.interp index 83be15a3..6ba8c438 100644 --- a/src/lib/trino/TrinoSqlLexer.interp +++ b/src/lib/trino/TrinoSqlLexer.interp @@ -5,9 +5,11 @@ null ',' '.' 'SKIP' +'=>' '->' '[' ']' +':' '|' '^' '$' @@ -15,7 +17,7 @@ null '-}' '{' '}' -'=>' +'ABSENT' 'ADD' 'ADMIN' 'AFTER' @@ -29,20 +31,27 @@ null 'ASC' 'AT' 'AUTHORIZATION' +'BEGIN' 'BERNOULLI' 'BETWEEN' +'BOTH' 'BY' 'CALL' +'CALLED' 'CASCADE' 'CASE' 'CAST' +'CATALOG' 'CATALOGS' 'COLUMN' 'COLUMNS' 'COMMENT' 'COMMIT' 'COMMITTED' +'CONDITIONAL' 'CONSTRAINT' +'COUNT' +'COPARTITION' 'CREATE' 'CROSS' 'CUBE' @@ -58,20 +67,28 @@ null 'DATA' 'DATE' 'DAY' -'DEFAULT' 'DEALLOCATE' +'DECLARE' +'DEFAULT' +'DEFINE' 'DEFINER' 'DELETE' +'DENY' 'DESC' 'DESCRIBE' -'DEFINE' +'DESCRIPTOR' +'DETERMINISTIC' 'DISTINCT' 'DISTRIBUTED' +'DO' 'DOUBLE' 'DROP' 'ELSE' 'EMPTY' +'ELSEIF' +'ENCODING' 'END' +'ERROR' 'ESCAPE' 'EXCEPT' 'EXCLUDING' @@ -89,11 +106,12 @@ null 'FORMAT' 'FROM' 'FULL' +'FUNCTION' 'FUNCTIONS' +'GRACE' 'GRANT' 'GRANTED' 'GRANTS' -'DENY' 'GRAPHVIZ' 'GROUP' 'GROUPING' @@ -102,6 +120,7 @@ null 'HOUR' 'IF' 'IGNORE' +'IMMEDIATE' 'IN' 'INCLUDING' 'INITIAL' @@ -115,18 +134,33 @@ null 'IO' 'IS' 'ISOLATION' +'ITERATE' 'JOIN' 'JSON' +'JSON_ARRAY' +'JSON_EXISTS' +'JSON_OBJECT' +'JSON_QUERY' +'JSON_TABLE' +'JSON_VALUE' +'KEEP' +'KEY' +'KEYS' +'LANGUAGE' 'LAST' 'LATERAL' +'LEADING' +'LEAVE' 'LEFT' 'LEVEL' 'LIKE' 'LIMIT' +'LISTAGG' 'LOCAL' 'LOCALTIME' 'LOCALTIMESTAMP' 'LOGICAL' +'LOOP' 'MAP' 'MATCH' 'MATCHED' @@ -138,6 +172,7 @@ null 'MINUTE' 'MONTH' 'NATURAL' +'NESTED' 'NEXT' 'NFC' 'NFD' @@ -150,6 +185,8 @@ null 'NULL' 'NULLIF' 'NULLS' +'OBJECT' +'OF' 'OFFSET' 'OMIT' 'ON' @@ -162,29 +199,39 @@ null 'OUTER' 'OUTPUT' 'OVER' +'OVERFLOW' 'PARTITION' 'PARTITIONS' +'PASSING' 'PAST' 'PATH' 'PATTERN' 'PER' +'PERIOD' 'PERMUTE' +'PLAN' 'POSITION' 'PRECEDING' 'PRECISION' 'PREPARE' 'PRIVILEGES' 'PROPERTIES' +'PRUNE' +'QUOTES' 'RANGE' 'READ' 'RECURSIVE' 'REFRESH' 'RENAME' +'REPEAT' 'REPEATABLE' 'REPLACE' 'RESET' 'RESPECT' 'RESTRICT' +'RETURN' +'RETURNING' +'RETURNS' 'REVOKE' 'RIGHT' 'ROLE' @@ -194,6 +241,7 @@ null 'ROW' 'ROWS' 'RUNNING' +'SCALAR' 'SCHEMA' 'SCHEMAS' 'SECOND' @@ -215,36 +263,51 @@ null 'TABLES' 'TABLESAMPLE' 'TEXT' +'STRING' 'THEN' 'TIES' 'TIME' 'TIMESTAMP' 'TO' +'TRAILING' 'TRANSACTION' -'TRUNCATE' +'TRIM' 'TRUE' +'TRUNCATE' 'TRY_CAST' 'TYPE' 'UESCAPE' 'UNBOUNDED' 'UNCOMMITTED' +'UNCONDITIONAL' 'UNION' +'UNIQUE' +'UNKNOWN' 'UNMATCHED' 'UNNEST' +'UNTIL' 'UPDATE' 'USE' 'USER' 'USING' +'UTF16' +'UTF32' +'UTF8' 'VALIDATE' +'VALUE' 'VALUES' 'VERBOSE' +'VERSION' 'VIEW' 'WHEN' 'WHERE' +'WHILE' 'WINDOW' 'WITH' +'WITHIN' 'WITHOUT' 'WORK' +'WRAPPER' 'WRITE' 'YEAR' 'ZONE' @@ -261,6 +324,7 @@ null '%' '||' '?' +';' null null null @@ -271,7 +335,6 @@ null null null null -';' null null null @@ -295,6 +358,8 @@ null null null null +null +KW_ABSENT KW_ADD KW_ADMIN KW_AFTER @@ -308,20 +373,27 @@ KW_AS KW_ASC KW_AT KW_AUTHORIZATION +KW_BEGIN KW_BERNOULLI KW_BETWEEN +KW_BOTH KW_BY KW_CALL +KW_CALLED KW_CASCADE KW_CASE KW_CAST +KW_CATALOG KW_CATALOGS KW_COLUMN KW_COLUMNS KW_COMMENT KW_COMMIT KW_COMMITTED +KW_CONDITIONAL KW_CONSTRAINT +KW_COUNT +KW_COPARTITION KW_CREATE KW_CROSS KW_CUBE @@ -337,20 +409,28 @@ KW_CURRENT_USER KW_DATA KW_DATE KW_DAY -KW_DEFAULT KW_DEALLOCATE +KW_DECLARE +KW_DEFAULT +KW_DEFINE KW_DEFINER KW_DELETE +KW_DENY KW_DESC KW_DESCRIBE -KW_DEFINE +KW_DESCRIPTOR +KW_DETERMINISTIC KW_DISTINCT KW_DISTRIBUTED +KW_DO KW_DOUBLE KW_DROP KW_ELSE KW_EMPTY +KW_ELSEIF +KW_ENCODING KW_END +KW_ERROR KW_ESCAPE KW_EXCEPT KW_EXCLUDING @@ -368,11 +448,12 @@ KW_FOR KW_FORMAT KW_FROM KW_FULL +KW_FUNCTION KW_FUNCTIONS +KW_GRACE KW_GRANT KW_GRANTED KW_GRANTS -KW_DENY KW_GRAPHVIZ KW_GROUP KW_GROUPING @@ -381,6 +462,7 @@ KW_HAVING KW_HOUR KW_IF KW_IGNORE +KW_IMMEDIATE KW_IN KW_INCLUDING KW_INITIAL @@ -394,18 +476,33 @@ KW_INVOKER KW_IO KW_IS KW_ISOLATION +KW_ITERATE KW_JOIN KW_JSON +KW_JSON_ARRAY +KW_JSON_EXISTS +KW_JSON_OBJECT +KW_JSON_QUERY +KW_JSON_TABLE +KW_JSON_VALUE +KW_KEEP +KW_KEY +KW_KEYS +KW_LANGUAGE KW_LAST KW_LATERAL +KW_LEADING +KW_LEAVE KW_LEFT KW_LEVEL KW_LIKE KW_LIMIT +KW_LISTAGG KW_LOCAL KW_LOCALTIME KW_LOCALTIMESTAMP KW_LOGICAL +KW_LOOP KW_MAP KW_MATCH KW_MATCHED @@ -417,6 +514,7 @@ KW_MERGE KW_MINUTE KW_MONTH KW_NATURAL +KW_NESTED KW_NEXT KW_NFC KW_NFD @@ -429,6 +527,8 @@ KW_NOT KW_NULL KW_NULLIF KW_NULLS +KW_OBJECT +KW_OF KW_OFFSET KW_OMIT KW_ON @@ -441,29 +541,39 @@ KW_ORDINALITY KW_OUTER KW_OUTPUT KW_OVER +KW_OVERFLOW KW_PARTITION KW_PARTITIONS +KW_PASSING KW_PAST KW_PATH KW_PATTERN KW_PER +KW_PERIOD KW_PERMUTE +KW_PLAN KW_POSITION KW_PRECEDING KW_PRECISION KW_PREPARE KW_PRIVILEGES KW_PROPERTIES +KW_PRUNE +KW_QUOTES KW_RANGE KW_READ KW_RECURSIVE KW_REFRESH KW_RENAME +KW_REPEAT KW_REPEATABLE KW_REPLACE KW_RESET KW_RESPECT KW_RESTRICT +KW_RETURN +KW_RETURNING +KW_RETURNS KW_REVOKE KW_RIGHT KW_ROLE @@ -473,6 +583,7 @@ KW_ROLLUP KW_ROW KW_ROWS KW_RUNNING +KW_SCALAR KW_SCHEMA KW_SCHEMAS KW_SECOND @@ -494,36 +605,51 @@ KW_TABLE KW_TABLES KW_TABLESAMPLE KW_TEXT +KW_TEXT_STRING KW_THEN KW_TIES KW_TIME KW_TIMESTAMP KW_TO +KW_TRAILING KW_TRANSACTION -KW_TRUNCATE +KW_TRIM KW_TRUE +KW_TRUNCATE KW_TRY_CAST KW_TYPE KW_UESCAPE KW_UNBOUNDED KW_UNCOMMITTED +KW_UNCONDITIONAL KW_UNION +KW_UNIQUE +KW_UNKNOWN KW_UNMATCHED KW_UNNEST +KW_UNTIL KW_UPDATE KW_USE KW_USER KW_USING +KW_UTF16 +KW_UTF32 +KW_UTF8 KW_VALIDATE +KW_VALUE KW_VALUES KW_VERBOSE +KW_VERSION KW_VIEW KW_WHEN KW_WHERE +KW_WHILE KW_WINDOW KW_WITH +KW_WITHIN KW_WITHOUT KW_WORK +KW_WRAPPER KW_WRITE KW_YEAR KW_ZONE @@ -540,6 +666,7 @@ SLASH PERCENT CONCAT QUESTION_MARK +SEMICOLON STRING UNICODE_STRING BINARY_LITERAL @@ -550,7 +677,6 @@ IDENTIFIER DIGIT_IDENTIFIER QUOTED_IDENTIFIER BACKQUOTED_IDENTIFIER -SEMICOLON SIMPLE_COMMENT BRACKETED_COMMENT WS @@ -573,6 +699,8 @@ T__12 T__13 T__14 T__15 +T__16 +KW_ABSENT KW_ADD KW_ADMIN KW_AFTER @@ -586,20 +714,27 @@ KW_AS KW_ASC KW_AT KW_AUTHORIZATION +KW_BEGIN KW_BERNOULLI KW_BETWEEN +KW_BOTH KW_BY KW_CALL +KW_CALLED KW_CASCADE KW_CASE KW_CAST +KW_CATALOG KW_CATALOGS KW_COLUMN KW_COLUMNS KW_COMMENT KW_COMMIT KW_COMMITTED +KW_CONDITIONAL KW_CONSTRAINT +KW_COUNT +KW_COPARTITION KW_CREATE KW_CROSS KW_CUBE @@ -615,20 +750,28 @@ KW_CURRENT_USER KW_DATA KW_DATE KW_DAY -KW_DEFAULT KW_DEALLOCATE +KW_DECLARE +KW_DEFAULT +KW_DEFINE KW_DEFINER KW_DELETE +KW_DENY KW_DESC KW_DESCRIBE -KW_DEFINE +KW_DESCRIPTOR +KW_DETERMINISTIC KW_DISTINCT KW_DISTRIBUTED +KW_DO KW_DOUBLE KW_DROP KW_ELSE KW_EMPTY +KW_ELSEIF +KW_ENCODING KW_END +KW_ERROR KW_ESCAPE KW_EXCEPT KW_EXCLUDING @@ -646,11 +789,12 @@ KW_FOR KW_FORMAT KW_FROM KW_FULL +KW_FUNCTION KW_FUNCTIONS +KW_GRACE KW_GRANT KW_GRANTED KW_GRANTS -KW_DENY KW_GRAPHVIZ KW_GROUP KW_GROUPING @@ -659,6 +803,7 @@ KW_HAVING KW_HOUR KW_IF KW_IGNORE +KW_IMMEDIATE KW_IN KW_INCLUDING KW_INITIAL @@ -672,18 +817,33 @@ KW_INVOKER KW_IO KW_IS KW_ISOLATION +KW_ITERATE KW_JOIN KW_JSON +KW_JSON_ARRAY +KW_JSON_EXISTS +KW_JSON_OBJECT +KW_JSON_QUERY +KW_JSON_TABLE +KW_JSON_VALUE +KW_KEEP +KW_KEY +KW_KEYS +KW_LANGUAGE KW_LAST KW_LATERAL +KW_LEADING +KW_LEAVE KW_LEFT KW_LEVEL KW_LIKE KW_LIMIT +KW_LISTAGG KW_LOCAL KW_LOCALTIME KW_LOCALTIMESTAMP KW_LOGICAL +KW_LOOP KW_MAP KW_MATCH KW_MATCHED @@ -695,6 +855,7 @@ KW_MERGE KW_MINUTE KW_MONTH KW_NATURAL +KW_NESTED KW_NEXT KW_NFC KW_NFD @@ -707,6 +868,8 @@ KW_NOT KW_NULL KW_NULLIF KW_NULLS +KW_OBJECT +KW_OF KW_OFFSET KW_OMIT KW_ON @@ -719,29 +882,39 @@ KW_ORDINALITY KW_OUTER KW_OUTPUT KW_OVER +KW_OVERFLOW KW_PARTITION KW_PARTITIONS +KW_PASSING KW_PAST KW_PATH KW_PATTERN KW_PER +KW_PERIOD KW_PERMUTE +KW_PLAN KW_POSITION KW_PRECEDING KW_PRECISION KW_PREPARE KW_PRIVILEGES KW_PROPERTIES +KW_PRUNE +KW_QUOTES KW_RANGE KW_READ KW_RECURSIVE KW_REFRESH KW_RENAME +KW_REPEAT KW_REPEATABLE KW_REPLACE KW_RESET KW_RESPECT KW_RESTRICT +KW_RETURN +KW_RETURNING +KW_RETURNS KW_REVOKE KW_RIGHT KW_ROLE @@ -751,6 +924,7 @@ KW_ROLLUP KW_ROW KW_ROWS KW_RUNNING +KW_SCALAR KW_SCHEMA KW_SCHEMAS KW_SECOND @@ -772,36 +946,51 @@ KW_TABLE KW_TABLES KW_TABLESAMPLE KW_TEXT +KW_TEXT_STRING KW_THEN KW_TIES KW_TIME KW_TIMESTAMP KW_TO +KW_TRAILING KW_TRANSACTION -KW_TRUNCATE +KW_TRIM KW_TRUE +KW_TRUNCATE KW_TRY_CAST KW_TYPE KW_UESCAPE KW_UNBOUNDED KW_UNCOMMITTED +KW_UNCONDITIONAL KW_UNION +KW_UNIQUE +KW_UNKNOWN KW_UNMATCHED KW_UNNEST +KW_UNTIL KW_UPDATE KW_USE KW_USER KW_USING +KW_UTF16 +KW_UTF32 +KW_UTF8 KW_VALIDATE +KW_VALUE KW_VALUES KW_VERBOSE +KW_VERSION KW_VIEW KW_WHEN KW_WHERE +KW_WHILE KW_WINDOW KW_WITH +KW_WITHIN KW_WITHOUT KW_WORK +KW_WRAPPER KW_WRITE KW_YEAR KW_ZONE @@ -818,6 +1007,7 @@ SLASH PERCENT CONCAT QUESTION_MARK +SEMICOLON STRING UNICODE_STRING BINARY_LITERAL @@ -828,7 +1018,10 @@ IDENTIFIER DIGIT_IDENTIFIER QUOTED_IDENTIFIER BACKQUOTED_IDENTIFIER -SEMICOLON +DECIMAL_INTEGER +HEXADECIMAL_INTEGER +OCTAL_INTEGER +BINARY_INTEGER EXPONENT DIGIT LETTER @@ -845,4 +1038,4 @@ mode names: DEFAULT_MODE atn: -[4, 0, 276, 2467, 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, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 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, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 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, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 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, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 38, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 39, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 3, 249, 2257, 8, 249, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 255, 1, 255, 1, 256, 1, 256, 1, 257, 1, 257, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 5, 261, 2288, 8, 261, 10, 261, 12, 261, 2291, 9, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 5, 262, 2302, 8, 262, 10, 262, 12, 262, 2305, 9, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 5, 263, 2313, 8, 263, 10, 263, 12, 263, 2316, 9, 263, 1, 263, 1, 263, 1, 264, 4, 264, 2321, 8, 264, 11, 264, 12, 264, 2322, 1, 265, 4, 265, 2326, 8, 265, 11, 265, 12, 265, 2327, 1, 265, 1, 265, 5, 265, 2332, 8, 265, 10, 265, 12, 265, 2335, 9, 265, 1, 265, 1, 265, 4, 265, 2339, 8, 265, 11, 265, 12, 265, 2340, 3, 265, 2343, 8, 265, 1, 266, 4, 266, 2346, 8, 266, 11, 266, 12, 266, 2347, 1, 266, 1, 266, 5, 266, 2352, 8, 266, 10, 266, 12, 266, 2355, 9, 266, 3, 266, 2357, 8, 266, 1, 266, 1, 266, 1, 266, 1, 266, 4, 266, 2363, 8, 266, 11, 266, 12, 266, 2364, 1, 266, 1, 266, 3, 266, 2369, 8, 266, 1, 267, 1, 267, 3, 267, 2373, 8, 267, 1, 267, 1, 267, 1, 267, 5, 267, 2378, 8, 267, 10, 267, 12, 267, 2381, 9, 267, 1, 268, 1, 268, 1, 268, 1, 268, 4, 268, 2387, 8, 268, 11, 268, 12, 268, 2388, 1, 269, 1, 269, 1, 269, 1, 269, 5, 269, 2395, 8, 269, 10, 269, 12, 269, 2398, 9, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 5, 270, 2406, 8, 270, 10, 270, 12, 270, 2409, 9, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 272, 1, 272, 3, 272, 2417, 8, 272, 1, 272, 4, 272, 2420, 8, 272, 11, 272, 12, 272, 2421, 1, 273, 1, 273, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 5, 275, 2432, 8, 275, 10, 275, 12, 275, 2435, 9, 275, 1, 275, 3, 275, 2438, 8, 275, 1, 275, 3, 275, 2441, 8, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 5, 276, 2449, 8, 276, 10, 276, 12, 276, 2452, 9, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 4, 277, 2460, 8, 277, 11, 277, 12, 277, 2461, 1, 277, 1, 277, 1, 278, 1, 278, 1, 2450, 0, 279, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 0, 547, 0, 549, 0, 551, 273, 553, 274, 555, 275, 557, 276, 1, 0, 33, 2, 0, 83, 83, 115, 115, 2, 0, 75, 75, 107, 107, 2, 0, 73, 73, 105, 105, 2, 0, 80, 80, 112, 112, 2, 0, 65, 65, 97, 97, 2, 0, 68, 68, 100, 100, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 70, 70, 102, 102, 2, 0, 84, 84, 116, 116, 2, 0, 69, 69, 101, 101, 2, 0, 82, 82, 114, 114, 2, 0, 76, 76, 108, 108, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 2, 0, 67, 67, 99, 99, 2, 0, 85, 85, 117, 117, 2, 0, 72, 72, 104, 104, 2, 0, 79, 79, 111, 111, 2, 0, 66, 66, 98, 98, 2, 0, 87, 87, 119, 119, 2, 0, 71, 71, 103, 103, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 74, 74, 106, 106, 1, 0, 39, 39, 1, 0, 34, 34, 1, 0, 96, 96, 2, 0, 43, 43, 45, 45, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 2497, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 1, 559, 1, 0, 0, 0, 3, 561, 1, 0, 0, 0, 5, 563, 1, 0, 0, 0, 7, 565, 1, 0, 0, 0, 9, 567, 1, 0, 0, 0, 11, 572, 1, 0, 0, 0, 13, 575, 1, 0, 0, 0, 15, 577, 1, 0, 0, 0, 17, 579, 1, 0, 0, 0, 19, 581, 1, 0, 0, 0, 21, 583, 1, 0, 0, 0, 23, 585, 1, 0, 0, 0, 25, 588, 1, 0, 0, 0, 27, 591, 1, 0, 0, 0, 29, 593, 1, 0, 0, 0, 31, 595, 1, 0, 0, 0, 33, 598, 1, 0, 0, 0, 35, 602, 1, 0, 0, 0, 37, 608, 1, 0, 0, 0, 39, 614, 1, 0, 0, 0, 41, 618, 1, 0, 0, 0, 43, 624, 1, 0, 0, 0, 45, 632, 1, 0, 0, 0, 47, 636, 1, 0, 0, 0, 49, 640, 1, 0, 0, 0, 51, 646, 1, 0, 0, 0, 53, 649, 1, 0, 0, 0, 55, 653, 1, 0, 0, 0, 57, 656, 1, 0, 0, 0, 59, 670, 1, 0, 0, 0, 61, 680, 1, 0, 0, 0, 63, 688, 1, 0, 0, 0, 65, 691, 1, 0, 0, 0, 67, 696, 1, 0, 0, 0, 69, 704, 1, 0, 0, 0, 71, 709, 1, 0, 0, 0, 73, 714, 1, 0, 0, 0, 75, 723, 1, 0, 0, 0, 77, 730, 1, 0, 0, 0, 79, 738, 1, 0, 0, 0, 81, 746, 1, 0, 0, 0, 83, 753, 1, 0, 0, 0, 85, 763, 1, 0, 0, 0, 87, 774, 1, 0, 0, 0, 89, 781, 1, 0, 0, 0, 91, 787, 1, 0, 0, 0, 93, 792, 1, 0, 0, 0, 95, 800, 1, 0, 0, 0, 97, 816, 1, 0, 0, 0, 99, 829, 1, 0, 0, 0, 101, 842, 1, 0, 0, 0, 103, 855, 1, 0, 0, 0, 105, 870, 1, 0, 0, 0, 107, 883, 1, 0, 0, 0, 109, 901, 1, 0, 0, 0, 111, 914, 1, 0, 0, 0, 113, 919, 1, 0, 0, 0, 115, 924, 1, 0, 0, 0, 117, 928, 1, 0, 0, 0, 119, 936, 1, 0, 0, 0, 121, 947, 1, 0, 0, 0, 123, 955, 1, 0, 0, 0, 125, 962, 1, 0, 0, 0, 127, 967, 1, 0, 0, 0, 129, 976, 1, 0, 0, 0, 131, 983, 1, 0, 0, 0, 133, 992, 1, 0, 0, 0, 135, 1004, 1, 0, 0, 0, 137, 1011, 1, 0, 0, 0, 139, 1016, 1, 0, 0, 0, 141, 1021, 1, 0, 0, 0, 143, 1027, 1, 0, 0, 0, 145, 1031, 1, 0, 0, 0, 147, 1038, 1, 0, 0, 0, 149, 1045, 1, 0, 0, 0, 151, 1055, 1, 0, 0, 0, 153, 1063, 1, 0, 0, 0, 155, 1070, 1, 0, 0, 0, 157, 1078, 1, 0, 0, 0, 159, 1086, 1, 0, 0, 0, 161, 1092, 1, 0, 0, 0, 163, 1098, 1, 0, 0, 0, 165, 1105, 1, 0, 0, 0, 167, 1111, 1, 0, 0, 0, 169, 1117, 1, 0, 0, 0, 171, 1127, 1, 0, 0, 0, 173, 1131, 1, 0, 0, 0, 175, 1138, 1, 0, 0, 0, 177, 1143, 1, 0, 0, 0, 179, 1148, 1, 0, 0, 0, 181, 1158, 1, 0, 0, 0, 183, 1164, 1, 0, 0, 0, 185, 1172, 1, 0, 0, 0, 187, 1179, 1, 0, 0, 0, 189, 1184, 1, 0, 0, 0, 191, 1193, 1, 0, 0, 0, 193, 1199, 1, 0, 0, 0, 195, 1208, 1, 0, 0, 0, 197, 1215, 1, 0, 0, 0, 199, 1222, 1, 0, 0, 0, 201, 1227, 1, 0, 0, 0, 203, 1230, 1, 0, 0, 0, 205, 1237, 1, 0, 0, 0, 207, 1240, 1, 0, 0, 0, 209, 1250, 1, 0, 0, 0, 211, 1258, 1, 0, 0, 0, 213, 1264, 1, 0, 0, 0, 215, 1270, 1, 0, 0, 0, 217, 1277, 1, 0, 0, 0, 219, 1287, 1, 0, 0, 0, 221, 1296, 1, 0, 0, 0, 223, 1301, 1, 0, 0, 0, 225, 1309, 1, 0, 0, 0, 227, 1312, 1, 0, 0, 0, 229, 1315, 1, 0, 0, 0, 231, 1325, 1, 0, 0, 0, 233, 1330, 1, 0, 0, 0, 235, 1335, 1, 0, 0, 0, 237, 1340, 1, 0, 0, 0, 239, 1348, 1, 0, 0, 0, 241, 1353, 1, 0, 0, 0, 243, 1359, 1, 0, 0, 0, 245, 1364, 1, 0, 0, 0, 247, 1370, 1, 0, 0, 0, 249, 1376, 1, 0, 0, 0, 251, 1386, 1, 0, 0, 0, 253, 1401, 1, 0, 0, 0, 255, 1409, 1, 0, 0, 0, 257, 1413, 1, 0, 0, 0, 259, 1419, 1, 0, 0, 0, 261, 1427, 1, 0, 0, 0, 263, 1435, 1, 0, 0, 0, 265, 1451, 1, 0, 0, 0, 267, 1464, 1, 0, 0, 0, 269, 1473, 1, 0, 0, 0, 271, 1479, 1, 0, 0, 0, 273, 1486, 1, 0, 0, 0, 275, 1492, 1, 0, 0, 0, 277, 1500, 1, 0, 0, 0, 279, 1505, 1, 0, 0, 0, 281, 1509, 1, 0, 0, 0, 283, 1513, 1, 0, 0, 0, 285, 1518, 1, 0, 0, 0, 287, 1523, 1, 0, 0, 0, 289, 1526, 1, 0, 0, 0, 291, 1531, 1, 0, 0, 0, 293, 1541, 1, 0, 0, 0, 295, 1545, 1, 0, 0, 0, 297, 1550, 1, 0, 0, 0, 299, 1557, 1, 0, 0, 0, 301, 1563, 1, 0, 0, 0, 303, 1570, 1, 0, 0, 0, 305, 1575, 1, 0, 0, 0, 307, 1578, 1, 0, 0, 0, 309, 1582, 1, 0, 0, 0, 311, 1587, 1, 0, 0, 0, 313, 1594, 1, 0, 0, 0, 315, 1597, 1, 0, 0, 0, 317, 1603, 1, 0, 0, 0, 319, 1614, 1, 0, 0, 0, 321, 1620, 1, 0, 0, 0, 323, 1627, 1, 0, 0, 0, 325, 1632, 1, 0, 0, 0, 327, 1642, 1, 0, 0, 0, 329, 1653, 1, 0, 0, 0, 331, 1658, 1, 0, 0, 0, 333, 1663, 1, 0, 0, 0, 335, 1671, 1, 0, 0, 0, 337, 1675, 1, 0, 0, 0, 339, 1683, 1, 0, 0, 0, 341, 1692, 1, 0, 0, 0, 343, 1702, 1, 0, 0, 0, 345, 1712, 1, 0, 0, 0, 347, 1720, 1, 0, 0, 0, 349, 1731, 1, 0, 0, 0, 351, 1742, 1, 0, 0, 0, 353, 1748, 1, 0, 0, 0, 355, 1753, 1, 0, 0, 0, 357, 1763, 1, 0, 0, 0, 359, 1771, 1, 0, 0, 0, 361, 1778, 1, 0, 0, 0, 363, 1789, 1, 0, 0, 0, 365, 1797, 1, 0, 0, 0, 367, 1803, 1, 0, 0, 0, 369, 1811, 1, 0, 0, 0, 371, 1820, 1, 0, 0, 0, 373, 1827, 1, 0, 0, 0, 375, 1833, 1, 0, 0, 0, 377, 1838, 1, 0, 0, 0, 379, 1844, 1, 0, 0, 0, 381, 1853, 1, 0, 0, 0, 383, 1860, 1, 0, 0, 0, 385, 1864, 1, 0, 0, 0, 387, 1869, 1, 0, 0, 0, 389, 1877, 1, 0, 0, 0, 391, 1884, 1, 0, 0, 0, 393, 1892, 1, 0, 0, 0, 395, 1899, 1, 0, 0, 0, 397, 1908, 1, 0, 0, 0, 399, 1913, 1, 0, 0, 0, 401, 1920, 1, 0, 0, 0, 403, 1933, 1, 0, 0, 0, 405, 1941, 1, 0, 0, 0, 407, 1945, 1, 0, 0, 0, 409, 1950, 1, 0, 0, 0, 411, 1955, 1, 0, 0, 0, 413, 1960, 1, 0, 0, 0, 415, 1966, 1, 0, 0, 0, 417, 1972, 1, 0, 0, 0, 419, 1979, 1, 0, 0, 0, 421, 1989, 1, 0, 0, 0, 423, 1996, 1, 0, 0, 0, 425, 2002, 1, 0, 0, 0, 427, 2009, 1, 0, 0, 0, 429, 2021, 1, 0, 0, 0, 431, 2026, 1, 0, 0, 0, 433, 2031, 1, 0, 0, 0, 435, 2036, 1, 0, 0, 0, 437, 2041, 1, 0, 0, 0, 439, 2051, 1, 0, 0, 0, 441, 2054, 1, 0, 0, 0, 443, 2066, 1, 0, 0, 0, 445, 2075, 1, 0, 0, 0, 447, 2080, 1, 0, 0, 0, 449, 2089, 1, 0, 0, 0, 451, 2094, 1, 0, 0, 0, 453, 2102, 1, 0, 0, 0, 455, 2112, 1, 0, 0, 0, 457, 2124, 1, 0, 0, 0, 459, 2130, 1, 0, 0, 0, 461, 2140, 1, 0, 0, 0, 463, 2147, 1, 0, 0, 0, 465, 2154, 1, 0, 0, 0, 467, 2158, 1, 0, 0, 0, 469, 2163, 1, 0, 0, 0, 471, 2169, 1, 0, 0, 0, 473, 2178, 1, 0, 0, 0, 475, 2185, 1, 0, 0, 0, 477, 2193, 1, 0, 0, 0, 479, 2198, 1, 0, 0, 0, 481, 2203, 1, 0, 0, 0, 483, 2209, 1, 0, 0, 0, 485, 2216, 1, 0, 0, 0, 487, 2221, 1, 0, 0, 0, 489, 2229, 1, 0, 0, 0, 491, 2234, 1, 0, 0, 0, 493, 2240, 1, 0, 0, 0, 495, 2245, 1, 0, 0, 0, 497, 2250, 1, 0, 0, 0, 499, 2256, 1, 0, 0, 0, 501, 2258, 1, 0, 0, 0, 503, 2260, 1, 0, 0, 0, 505, 2263, 1, 0, 0, 0, 507, 2265, 1, 0, 0, 0, 509, 2268, 1, 0, 0, 0, 511, 2270, 1, 0, 0, 0, 513, 2272, 1, 0, 0, 0, 515, 2274, 1, 0, 0, 0, 517, 2276, 1, 0, 0, 0, 519, 2278, 1, 0, 0, 0, 521, 2281, 1, 0, 0, 0, 523, 2283, 1, 0, 0, 0, 525, 2294, 1, 0, 0, 0, 527, 2308, 1, 0, 0, 0, 529, 2320, 1, 0, 0, 0, 531, 2342, 1, 0, 0, 0, 533, 2368, 1, 0, 0, 0, 535, 2372, 1, 0, 0, 0, 537, 2382, 1, 0, 0, 0, 539, 2390, 1, 0, 0, 0, 541, 2401, 1, 0, 0, 0, 543, 2412, 1, 0, 0, 0, 545, 2414, 1, 0, 0, 0, 547, 2423, 1, 0, 0, 0, 549, 2425, 1, 0, 0, 0, 551, 2427, 1, 0, 0, 0, 553, 2444, 1, 0, 0, 0, 555, 2459, 1, 0, 0, 0, 557, 2465, 1, 0, 0, 0, 559, 560, 5, 40, 0, 0, 560, 2, 1, 0, 0, 0, 561, 562, 5, 41, 0, 0, 562, 4, 1, 0, 0, 0, 563, 564, 5, 44, 0, 0, 564, 6, 1, 0, 0, 0, 565, 566, 5, 46, 0, 0, 566, 8, 1, 0, 0, 0, 567, 568, 7, 0, 0, 0, 568, 569, 7, 1, 0, 0, 569, 570, 7, 2, 0, 0, 570, 571, 7, 3, 0, 0, 571, 10, 1, 0, 0, 0, 572, 573, 5, 45, 0, 0, 573, 574, 5, 62, 0, 0, 574, 12, 1, 0, 0, 0, 575, 576, 5, 91, 0, 0, 576, 14, 1, 0, 0, 0, 577, 578, 5, 93, 0, 0, 578, 16, 1, 0, 0, 0, 579, 580, 5, 124, 0, 0, 580, 18, 1, 0, 0, 0, 581, 582, 5, 94, 0, 0, 582, 20, 1, 0, 0, 0, 583, 584, 5, 36, 0, 0, 584, 22, 1, 0, 0, 0, 585, 586, 5, 123, 0, 0, 586, 587, 5, 45, 0, 0, 587, 24, 1, 0, 0, 0, 588, 589, 5, 45, 0, 0, 589, 590, 5, 125, 0, 0, 590, 26, 1, 0, 0, 0, 591, 592, 5, 123, 0, 0, 592, 28, 1, 0, 0, 0, 593, 594, 5, 125, 0, 0, 594, 30, 1, 0, 0, 0, 595, 596, 5, 61, 0, 0, 596, 597, 5, 62, 0, 0, 597, 32, 1, 0, 0, 0, 598, 599, 7, 4, 0, 0, 599, 600, 7, 5, 0, 0, 600, 601, 7, 5, 0, 0, 601, 34, 1, 0, 0, 0, 602, 603, 7, 4, 0, 0, 603, 604, 7, 5, 0, 0, 604, 605, 7, 6, 0, 0, 605, 606, 7, 2, 0, 0, 606, 607, 7, 7, 0, 0, 607, 36, 1, 0, 0, 0, 608, 609, 7, 4, 0, 0, 609, 610, 7, 8, 0, 0, 610, 611, 7, 9, 0, 0, 611, 612, 7, 10, 0, 0, 612, 613, 7, 11, 0, 0, 613, 38, 1, 0, 0, 0, 614, 615, 7, 4, 0, 0, 615, 616, 7, 12, 0, 0, 616, 617, 7, 12, 0, 0, 617, 40, 1, 0, 0, 0, 618, 619, 7, 4, 0, 0, 619, 620, 7, 12, 0, 0, 620, 621, 7, 9, 0, 0, 621, 622, 7, 10, 0, 0, 622, 623, 7, 11, 0, 0, 623, 42, 1, 0, 0, 0, 624, 625, 7, 4, 0, 0, 625, 626, 7, 7, 0, 0, 626, 627, 7, 4, 0, 0, 627, 628, 7, 12, 0, 0, 628, 629, 7, 13, 0, 0, 629, 630, 7, 14, 0, 0, 630, 631, 7, 10, 0, 0, 631, 44, 1, 0, 0, 0, 632, 633, 7, 4, 0, 0, 633, 634, 7, 7, 0, 0, 634, 635, 7, 5, 0, 0, 635, 46, 1, 0, 0, 0, 636, 637, 7, 4, 0, 0, 637, 638, 7, 7, 0, 0, 638, 639, 7, 13, 0, 0, 639, 48, 1, 0, 0, 0, 640, 641, 7, 4, 0, 0, 641, 642, 7, 11, 0, 0, 642, 643, 7, 11, 0, 0, 643, 644, 7, 4, 0, 0, 644, 645, 7, 13, 0, 0, 645, 50, 1, 0, 0, 0, 646, 647, 7, 4, 0, 0, 647, 648, 7, 0, 0, 0, 648, 52, 1, 0, 0, 0, 649, 650, 7, 4, 0, 0, 650, 651, 7, 0, 0, 0, 651, 652, 7, 15, 0, 0, 652, 54, 1, 0, 0, 0, 653, 654, 7, 4, 0, 0, 654, 655, 7, 9, 0, 0, 655, 56, 1, 0, 0, 0, 656, 657, 7, 4, 0, 0, 657, 658, 7, 16, 0, 0, 658, 659, 7, 9, 0, 0, 659, 660, 7, 17, 0, 0, 660, 661, 7, 18, 0, 0, 661, 662, 7, 11, 0, 0, 662, 663, 7, 2, 0, 0, 663, 664, 7, 14, 0, 0, 664, 665, 7, 4, 0, 0, 665, 666, 7, 9, 0, 0, 666, 667, 7, 2, 0, 0, 667, 668, 7, 18, 0, 0, 668, 669, 7, 7, 0, 0, 669, 58, 1, 0, 0, 0, 670, 671, 7, 19, 0, 0, 671, 672, 7, 10, 0, 0, 672, 673, 7, 11, 0, 0, 673, 674, 7, 7, 0, 0, 674, 675, 7, 18, 0, 0, 675, 676, 7, 16, 0, 0, 676, 677, 7, 12, 0, 0, 677, 678, 7, 12, 0, 0, 678, 679, 7, 2, 0, 0, 679, 60, 1, 0, 0, 0, 680, 681, 7, 19, 0, 0, 681, 682, 7, 10, 0, 0, 682, 683, 7, 9, 0, 0, 683, 684, 7, 20, 0, 0, 684, 685, 7, 10, 0, 0, 685, 686, 7, 10, 0, 0, 686, 687, 7, 7, 0, 0, 687, 62, 1, 0, 0, 0, 688, 689, 7, 19, 0, 0, 689, 690, 7, 13, 0, 0, 690, 64, 1, 0, 0, 0, 691, 692, 7, 15, 0, 0, 692, 693, 7, 4, 0, 0, 693, 694, 7, 12, 0, 0, 694, 695, 7, 12, 0, 0, 695, 66, 1, 0, 0, 0, 696, 697, 7, 15, 0, 0, 697, 698, 7, 4, 0, 0, 698, 699, 7, 0, 0, 0, 699, 700, 7, 15, 0, 0, 700, 701, 7, 4, 0, 0, 701, 702, 7, 5, 0, 0, 702, 703, 7, 10, 0, 0, 703, 68, 1, 0, 0, 0, 704, 705, 7, 15, 0, 0, 705, 706, 7, 4, 0, 0, 706, 707, 7, 0, 0, 0, 707, 708, 7, 10, 0, 0, 708, 70, 1, 0, 0, 0, 709, 710, 7, 15, 0, 0, 710, 711, 7, 4, 0, 0, 711, 712, 7, 0, 0, 0, 712, 713, 7, 9, 0, 0, 713, 72, 1, 0, 0, 0, 714, 715, 7, 15, 0, 0, 715, 716, 7, 4, 0, 0, 716, 717, 7, 9, 0, 0, 717, 718, 7, 4, 0, 0, 718, 719, 7, 12, 0, 0, 719, 720, 7, 18, 0, 0, 720, 721, 7, 21, 0, 0, 721, 722, 7, 0, 0, 0, 722, 74, 1, 0, 0, 0, 723, 724, 7, 15, 0, 0, 724, 725, 7, 18, 0, 0, 725, 726, 7, 12, 0, 0, 726, 727, 7, 16, 0, 0, 727, 728, 7, 6, 0, 0, 728, 729, 7, 7, 0, 0, 729, 76, 1, 0, 0, 0, 730, 731, 7, 15, 0, 0, 731, 732, 7, 18, 0, 0, 732, 733, 7, 12, 0, 0, 733, 734, 7, 16, 0, 0, 734, 735, 7, 6, 0, 0, 735, 736, 7, 7, 0, 0, 736, 737, 7, 0, 0, 0, 737, 78, 1, 0, 0, 0, 738, 739, 7, 15, 0, 0, 739, 740, 7, 18, 0, 0, 740, 741, 7, 6, 0, 0, 741, 742, 7, 6, 0, 0, 742, 743, 7, 10, 0, 0, 743, 744, 7, 7, 0, 0, 744, 745, 7, 9, 0, 0, 745, 80, 1, 0, 0, 0, 746, 747, 7, 15, 0, 0, 747, 748, 7, 18, 0, 0, 748, 749, 7, 6, 0, 0, 749, 750, 7, 6, 0, 0, 750, 751, 7, 2, 0, 0, 751, 752, 7, 9, 0, 0, 752, 82, 1, 0, 0, 0, 753, 754, 7, 15, 0, 0, 754, 755, 7, 18, 0, 0, 755, 756, 7, 6, 0, 0, 756, 757, 7, 6, 0, 0, 757, 758, 7, 2, 0, 0, 758, 759, 7, 9, 0, 0, 759, 760, 7, 9, 0, 0, 760, 761, 7, 10, 0, 0, 761, 762, 7, 5, 0, 0, 762, 84, 1, 0, 0, 0, 763, 764, 7, 15, 0, 0, 764, 765, 7, 18, 0, 0, 765, 766, 7, 7, 0, 0, 766, 767, 7, 0, 0, 0, 767, 768, 7, 9, 0, 0, 768, 769, 7, 11, 0, 0, 769, 770, 7, 4, 0, 0, 770, 771, 7, 2, 0, 0, 771, 772, 7, 7, 0, 0, 772, 773, 7, 9, 0, 0, 773, 86, 1, 0, 0, 0, 774, 775, 7, 15, 0, 0, 775, 776, 7, 11, 0, 0, 776, 777, 7, 10, 0, 0, 777, 778, 7, 4, 0, 0, 778, 779, 7, 9, 0, 0, 779, 780, 7, 10, 0, 0, 780, 88, 1, 0, 0, 0, 781, 782, 7, 15, 0, 0, 782, 783, 7, 11, 0, 0, 783, 784, 7, 18, 0, 0, 784, 785, 7, 0, 0, 0, 785, 786, 7, 0, 0, 0, 786, 90, 1, 0, 0, 0, 787, 788, 7, 15, 0, 0, 788, 789, 7, 16, 0, 0, 789, 790, 7, 19, 0, 0, 790, 791, 7, 10, 0, 0, 791, 92, 1, 0, 0, 0, 792, 793, 7, 15, 0, 0, 793, 794, 7, 16, 0, 0, 794, 795, 7, 11, 0, 0, 795, 796, 7, 11, 0, 0, 796, 797, 7, 10, 0, 0, 797, 798, 7, 7, 0, 0, 798, 799, 7, 9, 0, 0, 799, 94, 1, 0, 0, 0, 800, 801, 7, 15, 0, 0, 801, 802, 7, 16, 0, 0, 802, 803, 7, 11, 0, 0, 803, 804, 7, 11, 0, 0, 804, 805, 7, 10, 0, 0, 805, 806, 7, 7, 0, 0, 806, 807, 7, 9, 0, 0, 807, 808, 5, 95, 0, 0, 808, 809, 7, 15, 0, 0, 809, 810, 7, 4, 0, 0, 810, 811, 7, 9, 0, 0, 811, 812, 7, 4, 0, 0, 812, 813, 7, 12, 0, 0, 813, 814, 7, 18, 0, 0, 814, 815, 7, 21, 0, 0, 815, 96, 1, 0, 0, 0, 816, 817, 7, 15, 0, 0, 817, 818, 7, 16, 0, 0, 818, 819, 7, 11, 0, 0, 819, 820, 7, 11, 0, 0, 820, 821, 7, 10, 0, 0, 821, 822, 7, 7, 0, 0, 822, 823, 7, 9, 0, 0, 823, 824, 5, 95, 0, 0, 824, 825, 7, 5, 0, 0, 825, 826, 7, 4, 0, 0, 826, 827, 7, 9, 0, 0, 827, 828, 7, 10, 0, 0, 828, 98, 1, 0, 0, 0, 829, 830, 7, 15, 0, 0, 830, 831, 7, 16, 0, 0, 831, 832, 7, 11, 0, 0, 832, 833, 7, 11, 0, 0, 833, 834, 7, 10, 0, 0, 834, 835, 7, 7, 0, 0, 835, 836, 7, 9, 0, 0, 836, 837, 5, 95, 0, 0, 837, 838, 7, 3, 0, 0, 838, 839, 7, 4, 0, 0, 839, 840, 7, 9, 0, 0, 840, 841, 7, 17, 0, 0, 841, 100, 1, 0, 0, 0, 842, 843, 7, 15, 0, 0, 843, 844, 7, 16, 0, 0, 844, 845, 7, 11, 0, 0, 845, 846, 7, 11, 0, 0, 846, 847, 7, 10, 0, 0, 847, 848, 7, 7, 0, 0, 848, 849, 7, 9, 0, 0, 849, 850, 5, 95, 0, 0, 850, 851, 7, 11, 0, 0, 851, 852, 7, 18, 0, 0, 852, 853, 7, 12, 0, 0, 853, 854, 7, 10, 0, 0, 854, 102, 1, 0, 0, 0, 855, 856, 7, 15, 0, 0, 856, 857, 7, 16, 0, 0, 857, 858, 7, 11, 0, 0, 858, 859, 7, 11, 0, 0, 859, 860, 7, 10, 0, 0, 860, 861, 7, 7, 0, 0, 861, 862, 7, 9, 0, 0, 862, 863, 5, 95, 0, 0, 863, 864, 7, 0, 0, 0, 864, 865, 7, 15, 0, 0, 865, 866, 7, 17, 0, 0, 866, 867, 7, 10, 0, 0, 867, 868, 7, 6, 0, 0, 868, 869, 7, 4, 0, 0, 869, 104, 1, 0, 0, 0, 870, 871, 7, 15, 0, 0, 871, 872, 7, 16, 0, 0, 872, 873, 7, 11, 0, 0, 873, 874, 7, 11, 0, 0, 874, 875, 7, 10, 0, 0, 875, 876, 7, 7, 0, 0, 876, 877, 7, 9, 0, 0, 877, 878, 5, 95, 0, 0, 878, 879, 7, 9, 0, 0, 879, 880, 7, 2, 0, 0, 880, 881, 7, 6, 0, 0, 881, 882, 7, 10, 0, 0, 882, 106, 1, 0, 0, 0, 883, 884, 7, 15, 0, 0, 884, 885, 7, 16, 0, 0, 885, 886, 7, 11, 0, 0, 886, 887, 7, 11, 0, 0, 887, 888, 7, 10, 0, 0, 888, 889, 7, 7, 0, 0, 889, 890, 7, 9, 0, 0, 890, 891, 5, 95, 0, 0, 891, 892, 7, 9, 0, 0, 892, 893, 7, 2, 0, 0, 893, 894, 7, 6, 0, 0, 894, 895, 7, 10, 0, 0, 895, 896, 7, 0, 0, 0, 896, 897, 7, 9, 0, 0, 897, 898, 7, 4, 0, 0, 898, 899, 7, 6, 0, 0, 899, 900, 7, 3, 0, 0, 900, 108, 1, 0, 0, 0, 901, 902, 7, 15, 0, 0, 902, 903, 7, 16, 0, 0, 903, 904, 7, 11, 0, 0, 904, 905, 7, 11, 0, 0, 905, 906, 7, 10, 0, 0, 906, 907, 7, 7, 0, 0, 907, 908, 7, 9, 0, 0, 908, 909, 5, 95, 0, 0, 909, 910, 7, 16, 0, 0, 910, 911, 7, 0, 0, 0, 911, 912, 7, 10, 0, 0, 912, 913, 7, 11, 0, 0, 913, 110, 1, 0, 0, 0, 914, 915, 7, 5, 0, 0, 915, 916, 7, 4, 0, 0, 916, 917, 7, 9, 0, 0, 917, 918, 7, 4, 0, 0, 918, 112, 1, 0, 0, 0, 919, 920, 7, 5, 0, 0, 920, 921, 7, 4, 0, 0, 921, 922, 7, 9, 0, 0, 922, 923, 7, 10, 0, 0, 923, 114, 1, 0, 0, 0, 924, 925, 7, 5, 0, 0, 925, 926, 7, 4, 0, 0, 926, 927, 7, 13, 0, 0, 927, 116, 1, 0, 0, 0, 928, 929, 7, 5, 0, 0, 929, 930, 7, 10, 0, 0, 930, 931, 7, 8, 0, 0, 931, 932, 7, 4, 0, 0, 932, 933, 7, 16, 0, 0, 933, 934, 7, 12, 0, 0, 934, 935, 7, 9, 0, 0, 935, 118, 1, 0, 0, 0, 936, 937, 7, 5, 0, 0, 937, 938, 7, 10, 0, 0, 938, 939, 7, 4, 0, 0, 939, 940, 7, 12, 0, 0, 940, 941, 7, 12, 0, 0, 941, 942, 7, 18, 0, 0, 942, 943, 7, 15, 0, 0, 943, 944, 7, 4, 0, 0, 944, 945, 7, 9, 0, 0, 945, 946, 7, 10, 0, 0, 946, 120, 1, 0, 0, 0, 947, 948, 7, 5, 0, 0, 948, 949, 7, 10, 0, 0, 949, 950, 7, 8, 0, 0, 950, 951, 7, 2, 0, 0, 951, 952, 7, 7, 0, 0, 952, 953, 7, 10, 0, 0, 953, 954, 7, 11, 0, 0, 954, 122, 1, 0, 0, 0, 955, 956, 7, 5, 0, 0, 956, 957, 7, 10, 0, 0, 957, 958, 7, 12, 0, 0, 958, 959, 7, 10, 0, 0, 959, 960, 7, 9, 0, 0, 960, 961, 7, 10, 0, 0, 961, 124, 1, 0, 0, 0, 962, 963, 7, 5, 0, 0, 963, 964, 7, 10, 0, 0, 964, 965, 7, 0, 0, 0, 965, 966, 7, 15, 0, 0, 966, 126, 1, 0, 0, 0, 967, 968, 7, 5, 0, 0, 968, 969, 7, 10, 0, 0, 969, 970, 7, 0, 0, 0, 970, 971, 7, 15, 0, 0, 971, 972, 7, 11, 0, 0, 972, 973, 7, 2, 0, 0, 973, 974, 7, 19, 0, 0, 974, 975, 7, 10, 0, 0, 975, 128, 1, 0, 0, 0, 976, 977, 7, 5, 0, 0, 977, 978, 7, 10, 0, 0, 978, 979, 7, 8, 0, 0, 979, 980, 7, 2, 0, 0, 980, 981, 7, 7, 0, 0, 981, 982, 7, 10, 0, 0, 982, 130, 1, 0, 0, 0, 983, 984, 7, 5, 0, 0, 984, 985, 7, 2, 0, 0, 985, 986, 7, 0, 0, 0, 986, 987, 7, 9, 0, 0, 987, 988, 7, 2, 0, 0, 988, 989, 7, 7, 0, 0, 989, 990, 7, 15, 0, 0, 990, 991, 7, 9, 0, 0, 991, 132, 1, 0, 0, 0, 992, 993, 7, 5, 0, 0, 993, 994, 7, 2, 0, 0, 994, 995, 7, 0, 0, 0, 995, 996, 7, 9, 0, 0, 996, 997, 7, 11, 0, 0, 997, 998, 7, 2, 0, 0, 998, 999, 7, 19, 0, 0, 999, 1000, 7, 16, 0, 0, 1000, 1001, 7, 9, 0, 0, 1001, 1002, 7, 10, 0, 0, 1002, 1003, 7, 5, 0, 0, 1003, 134, 1, 0, 0, 0, 1004, 1005, 7, 5, 0, 0, 1005, 1006, 7, 18, 0, 0, 1006, 1007, 7, 16, 0, 0, 1007, 1008, 7, 19, 0, 0, 1008, 1009, 7, 12, 0, 0, 1009, 1010, 7, 10, 0, 0, 1010, 136, 1, 0, 0, 0, 1011, 1012, 7, 5, 0, 0, 1012, 1013, 7, 11, 0, 0, 1013, 1014, 7, 18, 0, 0, 1014, 1015, 7, 3, 0, 0, 1015, 138, 1, 0, 0, 0, 1016, 1017, 7, 10, 0, 0, 1017, 1018, 7, 12, 0, 0, 1018, 1019, 7, 0, 0, 0, 1019, 1020, 7, 10, 0, 0, 1020, 140, 1, 0, 0, 0, 1021, 1022, 7, 10, 0, 0, 1022, 1023, 7, 6, 0, 0, 1023, 1024, 7, 3, 0, 0, 1024, 1025, 7, 9, 0, 0, 1025, 1026, 7, 13, 0, 0, 1026, 142, 1, 0, 0, 0, 1027, 1028, 7, 10, 0, 0, 1028, 1029, 7, 7, 0, 0, 1029, 1030, 7, 5, 0, 0, 1030, 144, 1, 0, 0, 0, 1031, 1032, 7, 10, 0, 0, 1032, 1033, 7, 0, 0, 0, 1033, 1034, 7, 15, 0, 0, 1034, 1035, 7, 4, 0, 0, 1035, 1036, 7, 3, 0, 0, 1036, 1037, 7, 10, 0, 0, 1037, 146, 1, 0, 0, 0, 1038, 1039, 7, 10, 0, 0, 1039, 1040, 7, 22, 0, 0, 1040, 1041, 7, 15, 0, 0, 1041, 1042, 7, 10, 0, 0, 1042, 1043, 7, 3, 0, 0, 1043, 1044, 7, 9, 0, 0, 1044, 148, 1, 0, 0, 0, 1045, 1046, 7, 10, 0, 0, 1046, 1047, 7, 22, 0, 0, 1047, 1048, 7, 15, 0, 0, 1048, 1049, 7, 12, 0, 0, 1049, 1050, 7, 16, 0, 0, 1050, 1051, 7, 5, 0, 0, 1051, 1052, 7, 2, 0, 0, 1052, 1053, 7, 7, 0, 0, 1053, 1054, 7, 21, 0, 0, 1054, 150, 1, 0, 0, 0, 1055, 1056, 7, 10, 0, 0, 1056, 1057, 7, 22, 0, 0, 1057, 1058, 7, 10, 0, 0, 1058, 1059, 7, 15, 0, 0, 1059, 1060, 7, 16, 0, 0, 1060, 1061, 7, 9, 0, 0, 1061, 1062, 7, 10, 0, 0, 1062, 152, 1, 0, 0, 0, 1063, 1064, 7, 10, 0, 0, 1064, 1065, 7, 22, 0, 0, 1065, 1066, 7, 2, 0, 0, 1066, 1067, 7, 0, 0, 0, 1067, 1068, 7, 9, 0, 0, 1068, 1069, 7, 0, 0, 0, 1069, 154, 1, 0, 0, 0, 1070, 1071, 7, 10, 0, 0, 1071, 1072, 7, 22, 0, 0, 1072, 1073, 7, 3, 0, 0, 1073, 1074, 7, 12, 0, 0, 1074, 1075, 7, 4, 0, 0, 1075, 1076, 7, 2, 0, 0, 1076, 1077, 7, 7, 0, 0, 1077, 156, 1, 0, 0, 0, 1078, 1079, 7, 10, 0, 0, 1079, 1080, 7, 22, 0, 0, 1080, 1081, 7, 9, 0, 0, 1081, 1082, 7, 11, 0, 0, 1082, 1083, 7, 4, 0, 0, 1083, 1084, 7, 15, 0, 0, 1084, 1085, 7, 9, 0, 0, 1085, 158, 1, 0, 0, 0, 1086, 1087, 7, 8, 0, 0, 1087, 1088, 7, 4, 0, 0, 1088, 1089, 7, 12, 0, 0, 1089, 1090, 7, 0, 0, 0, 1090, 1091, 7, 10, 0, 0, 1091, 160, 1, 0, 0, 0, 1092, 1093, 7, 8, 0, 0, 1093, 1094, 7, 10, 0, 0, 1094, 1095, 7, 9, 0, 0, 1095, 1096, 7, 15, 0, 0, 1096, 1097, 7, 17, 0, 0, 1097, 162, 1, 0, 0, 0, 1098, 1099, 7, 8, 0, 0, 1099, 1100, 7, 2, 0, 0, 1100, 1101, 7, 12, 0, 0, 1101, 1102, 7, 9, 0, 0, 1102, 1103, 7, 10, 0, 0, 1103, 1104, 7, 11, 0, 0, 1104, 164, 1, 0, 0, 0, 1105, 1106, 7, 8, 0, 0, 1106, 1107, 7, 2, 0, 0, 1107, 1108, 7, 7, 0, 0, 1108, 1109, 7, 4, 0, 0, 1109, 1110, 7, 12, 0, 0, 1110, 166, 1, 0, 0, 0, 1111, 1112, 7, 8, 0, 0, 1112, 1113, 7, 2, 0, 0, 1113, 1114, 7, 11, 0, 0, 1114, 1115, 7, 0, 0, 0, 1115, 1116, 7, 9, 0, 0, 1116, 168, 1, 0, 0, 0, 1117, 1118, 7, 8, 0, 0, 1118, 1119, 7, 18, 0, 0, 1119, 1120, 7, 12, 0, 0, 1120, 1121, 7, 12, 0, 0, 1121, 1122, 7, 18, 0, 0, 1122, 1123, 7, 20, 0, 0, 1123, 1124, 7, 2, 0, 0, 1124, 1125, 7, 7, 0, 0, 1125, 1126, 7, 21, 0, 0, 1126, 170, 1, 0, 0, 0, 1127, 1128, 7, 8, 0, 0, 1128, 1129, 7, 18, 0, 0, 1129, 1130, 7, 11, 0, 0, 1130, 172, 1, 0, 0, 0, 1131, 1132, 7, 8, 0, 0, 1132, 1133, 7, 18, 0, 0, 1133, 1134, 7, 11, 0, 0, 1134, 1135, 7, 6, 0, 0, 1135, 1136, 7, 4, 0, 0, 1136, 1137, 7, 9, 0, 0, 1137, 174, 1, 0, 0, 0, 1138, 1139, 7, 8, 0, 0, 1139, 1140, 7, 11, 0, 0, 1140, 1141, 7, 18, 0, 0, 1141, 1142, 7, 6, 0, 0, 1142, 176, 1, 0, 0, 0, 1143, 1144, 7, 8, 0, 0, 1144, 1145, 7, 16, 0, 0, 1145, 1146, 7, 12, 0, 0, 1146, 1147, 7, 12, 0, 0, 1147, 178, 1, 0, 0, 0, 1148, 1149, 7, 8, 0, 0, 1149, 1150, 7, 16, 0, 0, 1150, 1151, 7, 7, 0, 0, 1151, 1152, 7, 15, 0, 0, 1152, 1153, 7, 9, 0, 0, 1153, 1154, 7, 2, 0, 0, 1154, 1155, 7, 18, 0, 0, 1155, 1156, 7, 7, 0, 0, 1156, 1157, 7, 0, 0, 0, 1157, 180, 1, 0, 0, 0, 1158, 1159, 7, 21, 0, 0, 1159, 1160, 7, 11, 0, 0, 1160, 1161, 7, 4, 0, 0, 1161, 1162, 7, 7, 0, 0, 1162, 1163, 7, 9, 0, 0, 1163, 182, 1, 0, 0, 0, 1164, 1165, 7, 21, 0, 0, 1165, 1166, 7, 11, 0, 0, 1166, 1167, 7, 4, 0, 0, 1167, 1168, 7, 7, 0, 0, 1168, 1169, 7, 9, 0, 0, 1169, 1170, 7, 10, 0, 0, 1170, 1171, 7, 5, 0, 0, 1171, 184, 1, 0, 0, 0, 1172, 1173, 7, 21, 0, 0, 1173, 1174, 7, 11, 0, 0, 1174, 1175, 7, 4, 0, 0, 1175, 1176, 7, 7, 0, 0, 1176, 1177, 7, 9, 0, 0, 1177, 1178, 7, 0, 0, 0, 1178, 186, 1, 0, 0, 0, 1179, 1180, 7, 5, 0, 0, 1180, 1181, 7, 10, 0, 0, 1181, 1182, 7, 7, 0, 0, 1182, 1183, 7, 13, 0, 0, 1183, 188, 1, 0, 0, 0, 1184, 1185, 7, 21, 0, 0, 1185, 1186, 7, 11, 0, 0, 1186, 1187, 7, 4, 0, 0, 1187, 1188, 7, 3, 0, 0, 1188, 1189, 7, 17, 0, 0, 1189, 1190, 7, 23, 0, 0, 1190, 1191, 7, 2, 0, 0, 1191, 1192, 7, 14, 0, 0, 1192, 190, 1, 0, 0, 0, 1193, 1194, 7, 21, 0, 0, 1194, 1195, 7, 11, 0, 0, 1195, 1196, 7, 18, 0, 0, 1196, 1197, 7, 16, 0, 0, 1197, 1198, 7, 3, 0, 0, 1198, 192, 1, 0, 0, 0, 1199, 1200, 7, 21, 0, 0, 1200, 1201, 7, 11, 0, 0, 1201, 1202, 7, 18, 0, 0, 1202, 1203, 7, 16, 0, 0, 1203, 1204, 7, 3, 0, 0, 1204, 1205, 7, 2, 0, 0, 1205, 1206, 7, 7, 0, 0, 1206, 1207, 7, 21, 0, 0, 1207, 194, 1, 0, 0, 0, 1208, 1209, 7, 21, 0, 0, 1209, 1210, 7, 11, 0, 0, 1210, 1211, 7, 18, 0, 0, 1211, 1212, 7, 16, 0, 0, 1212, 1213, 7, 3, 0, 0, 1213, 1214, 7, 0, 0, 0, 1214, 196, 1, 0, 0, 0, 1215, 1216, 7, 17, 0, 0, 1216, 1217, 7, 4, 0, 0, 1217, 1218, 7, 23, 0, 0, 1218, 1219, 7, 2, 0, 0, 1219, 1220, 7, 7, 0, 0, 1220, 1221, 7, 21, 0, 0, 1221, 198, 1, 0, 0, 0, 1222, 1223, 7, 17, 0, 0, 1223, 1224, 7, 18, 0, 0, 1224, 1225, 7, 16, 0, 0, 1225, 1226, 7, 11, 0, 0, 1226, 200, 1, 0, 0, 0, 1227, 1228, 7, 2, 0, 0, 1228, 1229, 7, 8, 0, 0, 1229, 202, 1, 0, 0, 0, 1230, 1231, 7, 2, 0, 0, 1231, 1232, 7, 21, 0, 0, 1232, 1233, 7, 7, 0, 0, 1233, 1234, 7, 18, 0, 0, 1234, 1235, 7, 11, 0, 0, 1235, 1236, 7, 10, 0, 0, 1236, 204, 1, 0, 0, 0, 1237, 1238, 7, 2, 0, 0, 1238, 1239, 7, 7, 0, 0, 1239, 206, 1, 0, 0, 0, 1240, 1241, 7, 2, 0, 0, 1241, 1242, 7, 7, 0, 0, 1242, 1243, 7, 15, 0, 0, 1243, 1244, 7, 12, 0, 0, 1244, 1245, 7, 16, 0, 0, 1245, 1246, 7, 5, 0, 0, 1246, 1247, 7, 2, 0, 0, 1247, 1248, 7, 7, 0, 0, 1248, 1249, 7, 21, 0, 0, 1249, 208, 1, 0, 0, 0, 1250, 1251, 7, 2, 0, 0, 1251, 1252, 7, 7, 0, 0, 1252, 1253, 7, 2, 0, 0, 1253, 1254, 7, 9, 0, 0, 1254, 1255, 7, 2, 0, 0, 1255, 1256, 7, 4, 0, 0, 1256, 1257, 7, 12, 0, 0, 1257, 210, 1, 0, 0, 0, 1258, 1259, 7, 2, 0, 0, 1259, 1260, 7, 7, 0, 0, 1260, 1261, 7, 7, 0, 0, 1261, 1262, 7, 10, 0, 0, 1262, 1263, 7, 11, 0, 0, 1263, 212, 1, 0, 0, 0, 1264, 1265, 7, 2, 0, 0, 1265, 1266, 7, 7, 0, 0, 1266, 1267, 7, 3, 0, 0, 1267, 1268, 7, 16, 0, 0, 1268, 1269, 7, 9, 0, 0, 1269, 214, 1, 0, 0, 0, 1270, 1271, 7, 2, 0, 0, 1271, 1272, 7, 7, 0, 0, 1272, 1273, 7, 0, 0, 0, 1273, 1274, 7, 10, 0, 0, 1274, 1275, 7, 11, 0, 0, 1275, 1276, 7, 9, 0, 0, 1276, 216, 1, 0, 0, 0, 1277, 1278, 7, 2, 0, 0, 1278, 1279, 7, 7, 0, 0, 1279, 1280, 7, 9, 0, 0, 1280, 1281, 7, 10, 0, 0, 1281, 1282, 7, 11, 0, 0, 1282, 1283, 7, 0, 0, 0, 1283, 1284, 7, 10, 0, 0, 1284, 1285, 7, 15, 0, 0, 1285, 1286, 7, 9, 0, 0, 1286, 218, 1, 0, 0, 0, 1287, 1288, 7, 2, 0, 0, 1288, 1289, 7, 7, 0, 0, 1289, 1290, 7, 9, 0, 0, 1290, 1291, 7, 10, 0, 0, 1291, 1292, 7, 11, 0, 0, 1292, 1293, 7, 23, 0, 0, 1293, 1294, 7, 4, 0, 0, 1294, 1295, 7, 12, 0, 0, 1295, 220, 1, 0, 0, 0, 1296, 1297, 7, 2, 0, 0, 1297, 1298, 7, 7, 0, 0, 1298, 1299, 7, 9, 0, 0, 1299, 1300, 7, 18, 0, 0, 1300, 222, 1, 0, 0, 0, 1301, 1302, 7, 2, 0, 0, 1302, 1303, 7, 7, 0, 0, 1303, 1304, 7, 23, 0, 0, 1304, 1305, 7, 18, 0, 0, 1305, 1306, 7, 1, 0, 0, 1306, 1307, 7, 10, 0, 0, 1307, 1308, 7, 11, 0, 0, 1308, 224, 1, 0, 0, 0, 1309, 1310, 7, 2, 0, 0, 1310, 1311, 7, 18, 0, 0, 1311, 226, 1, 0, 0, 0, 1312, 1313, 7, 2, 0, 0, 1313, 1314, 7, 0, 0, 0, 1314, 228, 1, 0, 0, 0, 1315, 1316, 7, 2, 0, 0, 1316, 1317, 7, 0, 0, 0, 1317, 1318, 7, 18, 0, 0, 1318, 1319, 7, 12, 0, 0, 1319, 1320, 7, 4, 0, 0, 1320, 1321, 7, 9, 0, 0, 1321, 1322, 7, 2, 0, 0, 1322, 1323, 7, 18, 0, 0, 1323, 1324, 7, 7, 0, 0, 1324, 230, 1, 0, 0, 0, 1325, 1326, 7, 24, 0, 0, 1326, 1327, 7, 18, 0, 0, 1327, 1328, 7, 2, 0, 0, 1328, 1329, 7, 7, 0, 0, 1329, 232, 1, 0, 0, 0, 1330, 1331, 7, 24, 0, 0, 1331, 1332, 7, 0, 0, 0, 1332, 1333, 7, 18, 0, 0, 1333, 1334, 7, 7, 0, 0, 1334, 234, 1, 0, 0, 0, 1335, 1336, 7, 12, 0, 0, 1336, 1337, 7, 4, 0, 0, 1337, 1338, 7, 0, 0, 0, 1338, 1339, 7, 9, 0, 0, 1339, 236, 1, 0, 0, 0, 1340, 1341, 7, 12, 0, 0, 1341, 1342, 7, 4, 0, 0, 1342, 1343, 7, 9, 0, 0, 1343, 1344, 7, 10, 0, 0, 1344, 1345, 7, 11, 0, 0, 1345, 1346, 7, 4, 0, 0, 1346, 1347, 7, 12, 0, 0, 1347, 238, 1, 0, 0, 0, 1348, 1349, 7, 12, 0, 0, 1349, 1350, 7, 10, 0, 0, 1350, 1351, 7, 8, 0, 0, 1351, 1352, 7, 9, 0, 0, 1352, 240, 1, 0, 0, 0, 1353, 1354, 7, 12, 0, 0, 1354, 1355, 7, 10, 0, 0, 1355, 1356, 7, 23, 0, 0, 1356, 1357, 7, 10, 0, 0, 1357, 1358, 7, 12, 0, 0, 1358, 242, 1, 0, 0, 0, 1359, 1360, 7, 12, 0, 0, 1360, 1361, 7, 2, 0, 0, 1361, 1362, 7, 1, 0, 0, 1362, 1363, 7, 10, 0, 0, 1363, 244, 1, 0, 0, 0, 1364, 1365, 7, 12, 0, 0, 1365, 1366, 7, 2, 0, 0, 1366, 1367, 7, 6, 0, 0, 1367, 1368, 7, 2, 0, 0, 1368, 1369, 7, 9, 0, 0, 1369, 246, 1, 0, 0, 0, 1370, 1371, 7, 12, 0, 0, 1371, 1372, 7, 18, 0, 0, 1372, 1373, 7, 15, 0, 0, 1373, 1374, 7, 4, 0, 0, 1374, 1375, 7, 12, 0, 0, 1375, 248, 1, 0, 0, 0, 1376, 1377, 7, 12, 0, 0, 1377, 1378, 7, 18, 0, 0, 1378, 1379, 7, 15, 0, 0, 1379, 1380, 7, 4, 0, 0, 1380, 1381, 7, 12, 0, 0, 1381, 1382, 7, 9, 0, 0, 1382, 1383, 7, 2, 0, 0, 1383, 1384, 7, 6, 0, 0, 1384, 1385, 7, 10, 0, 0, 1385, 250, 1, 0, 0, 0, 1386, 1387, 7, 12, 0, 0, 1387, 1388, 7, 18, 0, 0, 1388, 1389, 7, 15, 0, 0, 1389, 1390, 7, 4, 0, 0, 1390, 1391, 7, 12, 0, 0, 1391, 1392, 7, 9, 0, 0, 1392, 1393, 7, 2, 0, 0, 1393, 1394, 7, 6, 0, 0, 1394, 1395, 7, 10, 0, 0, 1395, 1396, 7, 0, 0, 0, 1396, 1397, 7, 9, 0, 0, 1397, 1398, 7, 4, 0, 0, 1398, 1399, 7, 6, 0, 0, 1399, 1400, 7, 3, 0, 0, 1400, 252, 1, 0, 0, 0, 1401, 1402, 7, 12, 0, 0, 1402, 1403, 7, 18, 0, 0, 1403, 1404, 7, 21, 0, 0, 1404, 1405, 7, 2, 0, 0, 1405, 1406, 7, 15, 0, 0, 1406, 1407, 7, 4, 0, 0, 1407, 1408, 7, 12, 0, 0, 1408, 254, 1, 0, 0, 0, 1409, 1410, 7, 6, 0, 0, 1410, 1411, 7, 4, 0, 0, 1411, 1412, 7, 3, 0, 0, 1412, 256, 1, 0, 0, 0, 1413, 1414, 7, 6, 0, 0, 1414, 1415, 7, 4, 0, 0, 1415, 1416, 7, 9, 0, 0, 1416, 1417, 7, 15, 0, 0, 1417, 1418, 7, 17, 0, 0, 1418, 258, 1, 0, 0, 0, 1419, 1420, 7, 6, 0, 0, 1420, 1421, 7, 4, 0, 0, 1421, 1422, 7, 9, 0, 0, 1422, 1423, 7, 15, 0, 0, 1423, 1424, 7, 17, 0, 0, 1424, 1425, 7, 10, 0, 0, 1425, 1426, 7, 5, 0, 0, 1426, 260, 1, 0, 0, 0, 1427, 1428, 7, 6, 0, 0, 1428, 1429, 7, 4, 0, 0, 1429, 1430, 7, 9, 0, 0, 1430, 1431, 7, 15, 0, 0, 1431, 1432, 7, 17, 0, 0, 1432, 1433, 7, 10, 0, 0, 1433, 1434, 7, 0, 0, 0, 1434, 262, 1, 0, 0, 0, 1435, 1436, 7, 6, 0, 0, 1436, 1437, 7, 4, 0, 0, 1437, 1438, 7, 9, 0, 0, 1438, 1439, 7, 15, 0, 0, 1439, 1440, 7, 17, 0, 0, 1440, 1441, 5, 95, 0, 0, 1441, 1442, 7, 11, 0, 0, 1442, 1443, 7, 10, 0, 0, 1443, 1444, 7, 15, 0, 0, 1444, 1445, 7, 18, 0, 0, 1445, 1446, 7, 21, 0, 0, 1446, 1447, 7, 7, 0, 0, 1447, 1448, 7, 2, 0, 0, 1448, 1449, 7, 14, 0, 0, 1449, 1450, 7, 10, 0, 0, 1450, 264, 1, 0, 0, 0, 1451, 1452, 7, 6, 0, 0, 1452, 1453, 7, 4, 0, 0, 1453, 1454, 7, 9, 0, 0, 1454, 1455, 7, 10, 0, 0, 1455, 1456, 7, 11, 0, 0, 1456, 1457, 7, 2, 0, 0, 1457, 1458, 7, 4, 0, 0, 1458, 1459, 7, 12, 0, 0, 1459, 1460, 7, 2, 0, 0, 1460, 1461, 7, 14, 0, 0, 1461, 1462, 7, 10, 0, 0, 1462, 1463, 7, 5, 0, 0, 1463, 266, 1, 0, 0, 0, 1464, 1465, 7, 6, 0, 0, 1465, 1466, 7, 10, 0, 0, 1466, 1467, 7, 4, 0, 0, 1467, 1468, 7, 0, 0, 0, 1468, 1469, 7, 16, 0, 0, 1469, 1470, 7, 11, 0, 0, 1470, 1471, 7, 10, 0, 0, 1471, 1472, 7, 0, 0, 0, 1472, 268, 1, 0, 0, 0, 1473, 1474, 7, 6, 0, 0, 1474, 1475, 7, 10, 0, 0, 1475, 1476, 7, 11, 0, 0, 1476, 1477, 7, 21, 0, 0, 1477, 1478, 7, 10, 0, 0, 1478, 270, 1, 0, 0, 0, 1479, 1480, 7, 6, 0, 0, 1480, 1481, 7, 2, 0, 0, 1481, 1482, 7, 7, 0, 0, 1482, 1483, 7, 16, 0, 0, 1483, 1484, 7, 9, 0, 0, 1484, 1485, 7, 10, 0, 0, 1485, 272, 1, 0, 0, 0, 1486, 1487, 7, 6, 0, 0, 1487, 1488, 7, 18, 0, 0, 1488, 1489, 7, 7, 0, 0, 1489, 1490, 7, 9, 0, 0, 1490, 1491, 7, 17, 0, 0, 1491, 274, 1, 0, 0, 0, 1492, 1493, 7, 7, 0, 0, 1493, 1494, 7, 4, 0, 0, 1494, 1495, 7, 9, 0, 0, 1495, 1496, 7, 16, 0, 0, 1496, 1497, 7, 11, 0, 0, 1497, 1498, 7, 4, 0, 0, 1498, 1499, 7, 12, 0, 0, 1499, 276, 1, 0, 0, 0, 1500, 1501, 7, 7, 0, 0, 1501, 1502, 7, 10, 0, 0, 1502, 1503, 7, 22, 0, 0, 1503, 1504, 7, 9, 0, 0, 1504, 278, 1, 0, 0, 0, 1505, 1506, 7, 7, 0, 0, 1506, 1507, 7, 8, 0, 0, 1507, 1508, 7, 15, 0, 0, 1508, 280, 1, 0, 0, 0, 1509, 1510, 7, 7, 0, 0, 1510, 1511, 7, 8, 0, 0, 1511, 1512, 7, 5, 0, 0, 1512, 282, 1, 0, 0, 0, 1513, 1514, 7, 7, 0, 0, 1514, 1515, 7, 8, 0, 0, 1515, 1516, 7, 1, 0, 0, 1516, 1517, 7, 15, 0, 0, 1517, 284, 1, 0, 0, 0, 1518, 1519, 7, 7, 0, 0, 1519, 1520, 7, 8, 0, 0, 1520, 1521, 7, 1, 0, 0, 1521, 1522, 7, 5, 0, 0, 1522, 286, 1, 0, 0, 0, 1523, 1524, 7, 7, 0, 0, 1524, 1525, 7, 18, 0, 0, 1525, 288, 1, 0, 0, 0, 1526, 1527, 7, 7, 0, 0, 1527, 1528, 7, 18, 0, 0, 1528, 1529, 7, 7, 0, 0, 1529, 1530, 7, 10, 0, 0, 1530, 290, 1, 0, 0, 0, 1531, 1532, 7, 7, 0, 0, 1532, 1533, 7, 18, 0, 0, 1533, 1534, 7, 11, 0, 0, 1534, 1535, 7, 6, 0, 0, 1535, 1536, 7, 4, 0, 0, 1536, 1537, 7, 12, 0, 0, 1537, 1538, 7, 2, 0, 0, 1538, 1539, 7, 14, 0, 0, 1539, 1540, 7, 10, 0, 0, 1540, 292, 1, 0, 0, 0, 1541, 1542, 7, 7, 0, 0, 1542, 1543, 7, 18, 0, 0, 1543, 1544, 7, 9, 0, 0, 1544, 294, 1, 0, 0, 0, 1545, 1546, 7, 7, 0, 0, 1546, 1547, 7, 16, 0, 0, 1547, 1548, 7, 12, 0, 0, 1548, 1549, 7, 12, 0, 0, 1549, 296, 1, 0, 0, 0, 1550, 1551, 7, 7, 0, 0, 1551, 1552, 7, 16, 0, 0, 1552, 1553, 7, 12, 0, 0, 1553, 1554, 7, 12, 0, 0, 1554, 1555, 7, 2, 0, 0, 1555, 1556, 7, 8, 0, 0, 1556, 298, 1, 0, 0, 0, 1557, 1558, 7, 7, 0, 0, 1558, 1559, 7, 16, 0, 0, 1559, 1560, 7, 12, 0, 0, 1560, 1561, 7, 12, 0, 0, 1561, 1562, 7, 0, 0, 0, 1562, 300, 1, 0, 0, 0, 1563, 1564, 7, 18, 0, 0, 1564, 1565, 7, 8, 0, 0, 1565, 1566, 7, 8, 0, 0, 1566, 1567, 7, 0, 0, 0, 1567, 1568, 7, 10, 0, 0, 1568, 1569, 7, 9, 0, 0, 1569, 302, 1, 0, 0, 0, 1570, 1571, 7, 18, 0, 0, 1571, 1572, 7, 6, 0, 0, 1572, 1573, 7, 2, 0, 0, 1573, 1574, 7, 9, 0, 0, 1574, 304, 1, 0, 0, 0, 1575, 1576, 7, 18, 0, 0, 1576, 1577, 7, 7, 0, 0, 1577, 306, 1, 0, 0, 0, 1578, 1579, 7, 18, 0, 0, 1579, 1580, 7, 7, 0, 0, 1580, 1581, 7, 10, 0, 0, 1581, 308, 1, 0, 0, 0, 1582, 1583, 7, 18, 0, 0, 1583, 1584, 7, 7, 0, 0, 1584, 1585, 7, 12, 0, 0, 1585, 1586, 7, 13, 0, 0, 1586, 310, 1, 0, 0, 0, 1587, 1588, 7, 18, 0, 0, 1588, 1589, 7, 3, 0, 0, 1589, 1590, 7, 9, 0, 0, 1590, 1591, 7, 2, 0, 0, 1591, 1592, 7, 18, 0, 0, 1592, 1593, 7, 7, 0, 0, 1593, 312, 1, 0, 0, 0, 1594, 1595, 7, 18, 0, 0, 1595, 1596, 7, 11, 0, 0, 1596, 314, 1, 0, 0, 0, 1597, 1598, 7, 18, 0, 0, 1598, 1599, 7, 11, 0, 0, 1599, 1600, 7, 5, 0, 0, 1600, 1601, 7, 10, 0, 0, 1601, 1602, 7, 11, 0, 0, 1602, 316, 1, 0, 0, 0, 1603, 1604, 7, 18, 0, 0, 1604, 1605, 7, 11, 0, 0, 1605, 1606, 7, 5, 0, 0, 1606, 1607, 7, 2, 0, 0, 1607, 1608, 7, 7, 0, 0, 1608, 1609, 7, 4, 0, 0, 1609, 1610, 7, 12, 0, 0, 1610, 1611, 7, 2, 0, 0, 1611, 1612, 7, 9, 0, 0, 1612, 1613, 7, 13, 0, 0, 1613, 318, 1, 0, 0, 0, 1614, 1615, 7, 18, 0, 0, 1615, 1616, 7, 16, 0, 0, 1616, 1617, 7, 9, 0, 0, 1617, 1618, 7, 10, 0, 0, 1618, 1619, 7, 11, 0, 0, 1619, 320, 1, 0, 0, 0, 1620, 1621, 7, 18, 0, 0, 1621, 1622, 7, 16, 0, 0, 1622, 1623, 7, 9, 0, 0, 1623, 1624, 7, 3, 0, 0, 1624, 1625, 7, 16, 0, 0, 1625, 1626, 7, 9, 0, 0, 1626, 322, 1, 0, 0, 0, 1627, 1628, 7, 18, 0, 0, 1628, 1629, 7, 23, 0, 0, 1629, 1630, 7, 10, 0, 0, 1630, 1631, 7, 11, 0, 0, 1631, 324, 1, 0, 0, 0, 1632, 1633, 7, 3, 0, 0, 1633, 1634, 7, 4, 0, 0, 1634, 1635, 7, 11, 0, 0, 1635, 1636, 7, 9, 0, 0, 1636, 1637, 7, 2, 0, 0, 1637, 1638, 7, 9, 0, 0, 1638, 1639, 7, 2, 0, 0, 1639, 1640, 7, 18, 0, 0, 1640, 1641, 7, 7, 0, 0, 1641, 326, 1, 0, 0, 0, 1642, 1643, 7, 3, 0, 0, 1643, 1644, 7, 4, 0, 0, 1644, 1645, 7, 11, 0, 0, 1645, 1646, 7, 9, 0, 0, 1646, 1647, 7, 2, 0, 0, 1647, 1648, 7, 9, 0, 0, 1648, 1649, 7, 2, 0, 0, 1649, 1650, 7, 18, 0, 0, 1650, 1651, 7, 7, 0, 0, 1651, 1652, 7, 0, 0, 0, 1652, 328, 1, 0, 0, 0, 1653, 1654, 7, 3, 0, 0, 1654, 1655, 7, 4, 0, 0, 1655, 1656, 7, 0, 0, 0, 1656, 1657, 7, 9, 0, 0, 1657, 330, 1, 0, 0, 0, 1658, 1659, 7, 3, 0, 0, 1659, 1660, 7, 4, 0, 0, 1660, 1661, 7, 9, 0, 0, 1661, 1662, 7, 17, 0, 0, 1662, 332, 1, 0, 0, 0, 1663, 1664, 7, 3, 0, 0, 1664, 1665, 7, 4, 0, 0, 1665, 1666, 7, 9, 0, 0, 1666, 1667, 7, 9, 0, 0, 1667, 1668, 7, 10, 0, 0, 1668, 1669, 7, 11, 0, 0, 1669, 1670, 7, 7, 0, 0, 1670, 334, 1, 0, 0, 0, 1671, 1672, 7, 3, 0, 0, 1672, 1673, 7, 10, 0, 0, 1673, 1674, 7, 11, 0, 0, 1674, 336, 1, 0, 0, 0, 1675, 1676, 7, 3, 0, 0, 1676, 1677, 7, 10, 0, 0, 1677, 1678, 7, 11, 0, 0, 1678, 1679, 7, 6, 0, 0, 1679, 1680, 7, 16, 0, 0, 1680, 1681, 7, 9, 0, 0, 1681, 1682, 7, 10, 0, 0, 1682, 338, 1, 0, 0, 0, 1683, 1684, 7, 3, 0, 0, 1684, 1685, 7, 18, 0, 0, 1685, 1686, 7, 0, 0, 0, 1686, 1687, 7, 2, 0, 0, 1687, 1688, 7, 9, 0, 0, 1688, 1689, 7, 2, 0, 0, 1689, 1690, 7, 18, 0, 0, 1690, 1691, 7, 7, 0, 0, 1691, 340, 1, 0, 0, 0, 1692, 1693, 7, 3, 0, 0, 1693, 1694, 7, 11, 0, 0, 1694, 1695, 7, 10, 0, 0, 1695, 1696, 7, 15, 0, 0, 1696, 1697, 7, 10, 0, 0, 1697, 1698, 7, 5, 0, 0, 1698, 1699, 7, 2, 0, 0, 1699, 1700, 7, 7, 0, 0, 1700, 1701, 7, 21, 0, 0, 1701, 342, 1, 0, 0, 0, 1702, 1703, 7, 3, 0, 0, 1703, 1704, 7, 11, 0, 0, 1704, 1705, 7, 10, 0, 0, 1705, 1706, 7, 15, 0, 0, 1706, 1707, 7, 2, 0, 0, 1707, 1708, 7, 0, 0, 0, 1708, 1709, 7, 2, 0, 0, 1709, 1710, 7, 18, 0, 0, 1710, 1711, 7, 7, 0, 0, 1711, 344, 1, 0, 0, 0, 1712, 1713, 7, 3, 0, 0, 1713, 1714, 7, 11, 0, 0, 1714, 1715, 7, 10, 0, 0, 1715, 1716, 7, 3, 0, 0, 1716, 1717, 7, 4, 0, 0, 1717, 1718, 7, 11, 0, 0, 1718, 1719, 7, 10, 0, 0, 1719, 346, 1, 0, 0, 0, 1720, 1721, 7, 3, 0, 0, 1721, 1722, 7, 11, 0, 0, 1722, 1723, 7, 2, 0, 0, 1723, 1724, 7, 23, 0, 0, 1724, 1725, 7, 2, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 10, 0, 0, 1727, 1728, 7, 21, 0, 0, 1728, 1729, 7, 10, 0, 0, 1729, 1730, 7, 0, 0, 0, 1730, 348, 1, 0, 0, 0, 1731, 1732, 7, 3, 0, 0, 1732, 1733, 7, 11, 0, 0, 1733, 1734, 7, 18, 0, 0, 1734, 1735, 7, 3, 0, 0, 1735, 1736, 7, 10, 0, 0, 1736, 1737, 7, 11, 0, 0, 1737, 1738, 7, 9, 0, 0, 1738, 1739, 7, 2, 0, 0, 1739, 1740, 7, 10, 0, 0, 1740, 1741, 7, 0, 0, 0, 1741, 350, 1, 0, 0, 0, 1742, 1743, 7, 11, 0, 0, 1743, 1744, 7, 4, 0, 0, 1744, 1745, 7, 7, 0, 0, 1745, 1746, 7, 21, 0, 0, 1746, 1747, 7, 10, 0, 0, 1747, 352, 1, 0, 0, 0, 1748, 1749, 7, 11, 0, 0, 1749, 1750, 7, 10, 0, 0, 1750, 1751, 7, 4, 0, 0, 1751, 1752, 7, 5, 0, 0, 1752, 354, 1, 0, 0, 0, 1753, 1754, 7, 11, 0, 0, 1754, 1755, 7, 10, 0, 0, 1755, 1756, 7, 15, 0, 0, 1756, 1757, 7, 16, 0, 0, 1757, 1758, 7, 11, 0, 0, 1758, 1759, 7, 0, 0, 0, 1759, 1760, 7, 2, 0, 0, 1760, 1761, 7, 23, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 356, 1, 0, 0, 0, 1763, 1764, 7, 11, 0, 0, 1764, 1765, 7, 10, 0, 0, 1765, 1766, 7, 8, 0, 0, 1766, 1767, 7, 11, 0, 0, 1767, 1768, 7, 10, 0, 0, 1768, 1769, 7, 0, 0, 0, 1769, 1770, 7, 17, 0, 0, 1770, 358, 1, 0, 0, 0, 1771, 1772, 7, 11, 0, 0, 1772, 1773, 7, 10, 0, 0, 1773, 1774, 7, 7, 0, 0, 1774, 1775, 7, 4, 0, 0, 1775, 1776, 7, 6, 0, 0, 1776, 1777, 7, 10, 0, 0, 1777, 360, 1, 0, 0, 0, 1778, 1779, 7, 11, 0, 0, 1779, 1780, 7, 10, 0, 0, 1780, 1781, 7, 3, 0, 0, 1781, 1782, 7, 10, 0, 0, 1782, 1783, 7, 4, 0, 0, 1783, 1784, 7, 9, 0, 0, 1784, 1785, 7, 4, 0, 0, 1785, 1786, 7, 19, 0, 0, 1786, 1787, 7, 12, 0, 0, 1787, 1788, 7, 10, 0, 0, 1788, 362, 1, 0, 0, 0, 1789, 1790, 7, 11, 0, 0, 1790, 1791, 7, 10, 0, 0, 1791, 1792, 7, 3, 0, 0, 1792, 1793, 7, 12, 0, 0, 1793, 1794, 7, 4, 0, 0, 1794, 1795, 7, 15, 0, 0, 1795, 1796, 7, 10, 0, 0, 1796, 364, 1, 0, 0, 0, 1797, 1798, 7, 11, 0, 0, 1798, 1799, 7, 10, 0, 0, 1799, 1800, 7, 0, 0, 0, 1800, 1801, 7, 10, 0, 0, 1801, 1802, 7, 9, 0, 0, 1802, 366, 1, 0, 0, 0, 1803, 1804, 7, 11, 0, 0, 1804, 1805, 7, 10, 0, 0, 1805, 1806, 7, 0, 0, 0, 1806, 1807, 7, 3, 0, 0, 1807, 1808, 7, 10, 0, 0, 1808, 1809, 7, 15, 0, 0, 1809, 1810, 7, 9, 0, 0, 1810, 368, 1, 0, 0, 0, 1811, 1812, 7, 11, 0, 0, 1812, 1813, 7, 10, 0, 0, 1813, 1814, 7, 0, 0, 0, 1814, 1815, 7, 9, 0, 0, 1815, 1816, 7, 11, 0, 0, 1816, 1817, 7, 2, 0, 0, 1817, 1818, 7, 15, 0, 0, 1818, 1819, 7, 9, 0, 0, 1819, 370, 1, 0, 0, 0, 1820, 1821, 7, 11, 0, 0, 1821, 1822, 7, 10, 0, 0, 1822, 1823, 7, 23, 0, 0, 1823, 1824, 7, 18, 0, 0, 1824, 1825, 7, 1, 0, 0, 1825, 1826, 7, 10, 0, 0, 1826, 372, 1, 0, 0, 0, 1827, 1828, 7, 11, 0, 0, 1828, 1829, 7, 2, 0, 0, 1829, 1830, 7, 21, 0, 0, 1830, 1831, 7, 17, 0, 0, 1831, 1832, 7, 9, 0, 0, 1832, 374, 1, 0, 0, 0, 1833, 1834, 7, 11, 0, 0, 1834, 1835, 7, 18, 0, 0, 1835, 1836, 7, 12, 0, 0, 1836, 1837, 7, 10, 0, 0, 1837, 376, 1, 0, 0, 0, 1838, 1839, 7, 11, 0, 0, 1839, 1840, 7, 18, 0, 0, 1840, 1841, 7, 12, 0, 0, 1841, 1842, 7, 10, 0, 0, 1842, 1843, 7, 0, 0, 0, 1843, 378, 1, 0, 0, 0, 1844, 1845, 7, 11, 0, 0, 1845, 1846, 7, 18, 0, 0, 1846, 1847, 7, 12, 0, 0, 1847, 1848, 7, 12, 0, 0, 1848, 1849, 7, 19, 0, 0, 1849, 1850, 7, 4, 0, 0, 1850, 1851, 7, 15, 0, 0, 1851, 1852, 7, 1, 0, 0, 1852, 380, 1, 0, 0, 0, 1853, 1854, 7, 11, 0, 0, 1854, 1855, 7, 18, 0, 0, 1855, 1856, 7, 12, 0, 0, 1856, 1857, 7, 12, 0, 0, 1857, 1858, 7, 16, 0, 0, 1858, 1859, 7, 3, 0, 0, 1859, 382, 1, 0, 0, 0, 1860, 1861, 7, 11, 0, 0, 1861, 1862, 7, 18, 0, 0, 1862, 1863, 7, 20, 0, 0, 1863, 384, 1, 0, 0, 0, 1864, 1865, 7, 11, 0, 0, 1865, 1866, 7, 18, 0, 0, 1866, 1867, 7, 20, 0, 0, 1867, 1868, 7, 0, 0, 0, 1868, 386, 1, 0, 0, 0, 1869, 1870, 7, 11, 0, 0, 1870, 1871, 7, 16, 0, 0, 1871, 1872, 7, 7, 0, 0, 1872, 1873, 7, 7, 0, 0, 1873, 1874, 7, 2, 0, 0, 1874, 1875, 7, 7, 0, 0, 1875, 1876, 7, 21, 0, 0, 1876, 388, 1, 0, 0, 0, 1877, 1878, 7, 0, 0, 0, 1878, 1879, 7, 15, 0, 0, 1879, 1880, 7, 17, 0, 0, 1880, 1881, 7, 10, 0, 0, 1881, 1882, 7, 6, 0, 0, 1882, 1883, 7, 4, 0, 0, 1883, 390, 1, 0, 0, 0, 1884, 1885, 7, 0, 0, 0, 1885, 1886, 7, 15, 0, 0, 1886, 1887, 7, 17, 0, 0, 1887, 1888, 7, 10, 0, 0, 1888, 1889, 7, 6, 0, 0, 1889, 1890, 7, 4, 0, 0, 1890, 1891, 7, 0, 0, 0, 1891, 392, 1, 0, 0, 0, 1892, 1893, 7, 0, 0, 0, 1893, 1894, 7, 10, 0, 0, 1894, 1895, 7, 15, 0, 0, 1895, 1896, 7, 18, 0, 0, 1896, 1897, 7, 7, 0, 0, 1897, 1898, 7, 5, 0, 0, 1898, 394, 1, 0, 0, 0, 1899, 1900, 7, 0, 0, 0, 1900, 1901, 7, 10, 0, 0, 1901, 1902, 7, 15, 0, 0, 1902, 1903, 7, 16, 0, 0, 1903, 1904, 7, 11, 0, 0, 1904, 1905, 7, 2, 0, 0, 1905, 1906, 7, 9, 0, 0, 1906, 1907, 7, 13, 0, 0, 1907, 396, 1, 0, 0, 0, 1908, 1909, 7, 0, 0, 0, 1909, 1910, 7, 10, 0, 0, 1910, 1911, 7, 10, 0, 0, 1911, 1912, 7, 1, 0, 0, 1912, 398, 1, 0, 0, 0, 1913, 1914, 7, 0, 0, 0, 1914, 1915, 7, 10, 0, 0, 1915, 1916, 7, 12, 0, 0, 1916, 1917, 7, 10, 0, 0, 1917, 1918, 7, 15, 0, 0, 1918, 1919, 7, 9, 0, 0, 1919, 400, 1, 0, 0, 0, 1920, 1921, 7, 0, 0, 0, 1921, 1922, 7, 10, 0, 0, 1922, 1923, 7, 11, 0, 0, 1923, 1924, 7, 2, 0, 0, 1924, 1925, 7, 4, 0, 0, 1925, 1926, 7, 12, 0, 0, 1926, 1927, 7, 2, 0, 0, 1927, 1928, 7, 14, 0, 0, 1928, 1929, 7, 4, 0, 0, 1929, 1930, 7, 19, 0, 0, 1930, 1931, 7, 12, 0, 0, 1931, 1932, 7, 10, 0, 0, 1932, 402, 1, 0, 0, 0, 1933, 1934, 7, 0, 0, 0, 1934, 1935, 7, 10, 0, 0, 1935, 1936, 7, 0, 0, 0, 1936, 1937, 7, 0, 0, 0, 1937, 1938, 7, 2, 0, 0, 1938, 1939, 7, 18, 0, 0, 1939, 1940, 7, 7, 0, 0, 1940, 404, 1, 0, 0, 0, 1941, 1942, 7, 0, 0, 0, 1942, 1943, 7, 10, 0, 0, 1943, 1944, 7, 9, 0, 0, 1944, 406, 1, 0, 0, 0, 1945, 1946, 7, 0, 0, 0, 1946, 1947, 7, 10, 0, 0, 1947, 1948, 7, 9, 0, 0, 1948, 1949, 7, 0, 0, 0, 1949, 408, 1, 0, 0, 0, 1950, 1951, 7, 0, 0, 0, 1951, 1952, 7, 17, 0, 0, 1952, 1953, 7, 18, 0, 0, 1953, 1954, 7, 20, 0, 0, 1954, 410, 1, 0, 0, 0, 1955, 1956, 7, 0, 0, 0, 1956, 1957, 7, 18, 0, 0, 1957, 1958, 7, 6, 0, 0, 1958, 1959, 7, 10, 0, 0, 1959, 412, 1, 0, 0, 0, 1960, 1961, 7, 0, 0, 0, 1961, 1962, 7, 9, 0, 0, 1962, 1963, 7, 4, 0, 0, 1963, 1964, 7, 11, 0, 0, 1964, 1965, 7, 9, 0, 0, 1965, 414, 1, 0, 0, 0, 1966, 1967, 7, 0, 0, 0, 1967, 1968, 7, 9, 0, 0, 1968, 1969, 7, 4, 0, 0, 1969, 1970, 7, 9, 0, 0, 1970, 1971, 7, 0, 0, 0, 1971, 416, 1, 0, 0, 0, 1972, 1973, 7, 0, 0, 0, 1973, 1974, 7, 16, 0, 0, 1974, 1975, 7, 19, 0, 0, 1975, 1976, 7, 0, 0, 0, 1976, 1977, 7, 10, 0, 0, 1977, 1978, 7, 9, 0, 0, 1978, 418, 1, 0, 0, 0, 1979, 1980, 7, 0, 0, 0, 1980, 1981, 7, 16, 0, 0, 1981, 1982, 7, 19, 0, 0, 1982, 1983, 7, 0, 0, 0, 1983, 1984, 7, 9, 0, 0, 1984, 1985, 7, 11, 0, 0, 1985, 1986, 7, 2, 0, 0, 1986, 1987, 7, 7, 0, 0, 1987, 1988, 7, 21, 0, 0, 1988, 420, 1, 0, 0, 0, 1989, 1990, 7, 0, 0, 0, 1990, 1991, 7, 13, 0, 0, 1991, 1992, 7, 0, 0, 0, 1992, 1993, 7, 9, 0, 0, 1993, 1994, 7, 10, 0, 0, 1994, 1995, 7, 6, 0, 0, 1995, 422, 1, 0, 0, 0, 1996, 1997, 7, 9, 0, 0, 1997, 1998, 7, 4, 0, 0, 1998, 1999, 7, 19, 0, 0, 1999, 2000, 7, 12, 0, 0, 2000, 2001, 7, 10, 0, 0, 2001, 424, 1, 0, 0, 0, 2002, 2003, 7, 9, 0, 0, 2003, 2004, 7, 4, 0, 0, 2004, 2005, 7, 19, 0, 0, 2005, 2006, 7, 12, 0, 0, 2006, 2007, 7, 10, 0, 0, 2007, 2008, 7, 0, 0, 0, 2008, 426, 1, 0, 0, 0, 2009, 2010, 7, 9, 0, 0, 2010, 2011, 7, 4, 0, 0, 2011, 2012, 7, 19, 0, 0, 2012, 2013, 7, 12, 0, 0, 2013, 2014, 7, 10, 0, 0, 2014, 2015, 7, 0, 0, 0, 2015, 2016, 7, 4, 0, 0, 2016, 2017, 7, 6, 0, 0, 2017, 2018, 7, 3, 0, 0, 2018, 2019, 7, 12, 0, 0, 2019, 2020, 7, 10, 0, 0, 2020, 428, 1, 0, 0, 0, 2021, 2022, 7, 9, 0, 0, 2022, 2023, 7, 10, 0, 0, 2023, 2024, 7, 22, 0, 0, 2024, 2025, 7, 9, 0, 0, 2025, 430, 1, 0, 0, 0, 2026, 2027, 7, 9, 0, 0, 2027, 2028, 7, 17, 0, 0, 2028, 2029, 7, 10, 0, 0, 2029, 2030, 7, 7, 0, 0, 2030, 432, 1, 0, 0, 0, 2031, 2032, 7, 9, 0, 0, 2032, 2033, 7, 2, 0, 0, 2033, 2034, 7, 10, 0, 0, 2034, 2035, 7, 0, 0, 0, 2035, 434, 1, 0, 0, 0, 2036, 2037, 7, 9, 0, 0, 2037, 2038, 7, 2, 0, 0, 2038, 2039, 7, 6, 0, 0, 2039, 2040, 7, 10, 0, 0, 2040, 436, 1, 0, 0, 0, 2041, 2042, 7, 9, 0, 0, 2042, 2043, 7, 2, 0, 0, 2043, 2044, 7, 6, 0, 0, 2044, 2045, 7, 10, 0, 0, 2045, 2046, 7, 0, 0, 0, 2046, 2047, 7, 9, 0, 0, 2047, 2048, 7, 4, 0, 0, 2048, 2049, 7, 6, 0, 0, 2049, 2050, 7, 3, 0, 0, 2050, 438, 1, 0, 0, 0, 2051, 2052, 7, 9, 0, 0, 2052, 2053, 7, 18, 0, 0, 2053, 440, 1, 0, 0, 0, 2054, 2055, 7, 9, 0, 0, 2055, 2056, 7, 11, 0, 0, 2056, 2057, 7, 4, 0, 0, 2057, 2058, 7, 7, 0, 0, 2058, 2059, 7, 0, 0, 0, 2059, 2060, 7, 4, 0, 0, 2060, 2061, 7, 15, 0, 0, 2061, 2062, 7, 9, 0, 0, 2062, 2063, 7, 2, 0, 0, 2063, 2064, 7, 18, 0, 0, 2064, 2065, 7, 7, 0, 0, 2065, 442, 1, 0, 0, 0, 2066, 2067, 7, 9, 0, 0, 2067, 2068, 7, 11, 0, 0, 2068, 2069, 7, 16, 0, 0, 2069, 2070, 7, 7, 0, 0, 2070, 2071, 7, 15, 0, 0, 2071, 2072, 7, 4, 0, 0, 2072, 2073, 7, 9, 0, 0, 2073, 2074, 7, 10, 0, 0, 2074, 444, 1, 0, 0, 0, 2075, 2076, 7, 9, 0, 0, 2076, 2077, 7, 11, 0, 0, 2077, 2078, 7, 16, 0, 0, 2078, 2079, 7, 10, 0, 0, 2079, 446, 1, 0, 0, 0, 2080, 2081, 7, 9, 0, 0, 2081, 2082, 7, 11, 0, 0, 2082, 2083, 7, 13, 0, 0, 2083, 2084, 5, 95, 0, 0, 2084, 2085, 7, 15, 0, 0, 2085, 2086, 7, 4, 0, 0, 2086, 2087, 7, 0, 0, 0, 2087, 2088, 7, 9, 0, 0, 2088, 448, 1, 0, 0, 0, 2089, 2090, 7, 9, 0, 0, 2090, 2091, 7, 13, 0, 0, 2091, 2092, 7, 3, 0, 0, 2092, 2093, 7, 10, 0, 0, 2093, 450, 1, 0, 0, 0, 2094, 2095, 7, 16, 0, 0, 2095, 2096, 7, 10, 0, 0, 2096, 2097, 7, 0, 0, 0, 2097, 2098, 7, 15, 0, 0, 2098, 2099, 7, 4, 0, 0, 2099, 2100, 7, 3, 0, 0, 2100, 2101, 7, 10, 0, 0, 2101, 452, 1, 0, 0, 0, 2102, 2103, 7, 16, 0, 0, 2103, 2104, 7, 7, 0, 0, 2104, 2105, 7, 19, 0, 0, 2105, 2106, 7, 18, 0, 0, 2106, 2107, 7, 16, 0, 0, 2107, 2108, 7, 7, 0, 0, 2108, 2109, 7, 5, 0, 0, 2109, 2110, 7, 10, 0, 0, 2110, 2111, 7, 5, 0, 0, 2111, 454, 1, 0, 0, 0, 2112, 2113, 7, 16, 0, 0, 2113, 2114, 7, 7, 0, 0, 2114, 2115, 7, 15, 0, 0, 2115, 2116, 7, 18, 0, 0, 2116, 2117, 7, 6, 0, 0, 2117, 2118, 7, 6, 0, 0, 2118, 2119, 7, 2, 0, 0, 2119, 2120, 7, 9, 0, 0, 2120, 2121, 7, 9, 0, 0, 2121, 2122, 7, 10, 0, 0, 2122, 2123, 7, 5, 0, 0, 2123, 456, 1, 0, 0, 0, 2124, 2125, 7, 16, 0, 0, 2125, 2126, 7, 7, 0, 0, 2126, 2127, 7, 2, 0, 0, 2127, 2128, 7, 18, 0, 0, 2128, 2129, 7, 7, 0, 0, 2129, 458, 1, 0, 0, 0, 2130, 2131, 7, 16, 0, 0, 2131, 2132, 7, 7, 0, 0, 2132, 2133, 7, 6, 0, 0, 2133, 2134, 7, 4, 0, 0, 2134, 2135, 7, 9, 0, 0, 2135, 2136, 7, 15, 0, 0, 2136, 2137, 7, 17, 0, 0, 2137, 2138, 7, 10, 0, 0, 2138, 2139, 7, 5, 0, 0, 2139, 460, 1, 0, 0, 0, 2140, 2141, 7, 16, 0, 0, 2141, 2142, 7, 7, 0, 0, 2142, 2143, 7, 7, 0, 0, 2143, 2144, 7, 10, 0, 0, 2144, 2145, 7, 0, 0, 0, 2145, 2146, 7, 9, 0, 0, 2146, 462, 1, 0, 0, 0, 2147, 2148, 7, 16, 0, 0, 2148, 2149, 7, 3, 0, 0, 2149, 2150, 7, 5, 0, 0, 2150, 2151, 7, 4, 0, 0, 2151, 2152, 7, 9, 0, 0, 2152, 2153, 7, 10, 0, 0, 2153, 464, 1, 0, 0, 0, 2154, 2155, 7, 16, 0, 0, 2155, 2156, 7, 0, 0, 0, 2156, 2157, 7, 10, 0, 0, 2157, 466, 1, 0, 0, 0, 2158, 2159, 7, 16, 0, 0, 2159, 2160, 7, 0, 0, 0, 2160, 2161, 7, 10, 0, 0, 2161, 2162, 7, 11, 0, 0, 2162, 468, 1, 0, 0, 0, 2163, 2164, 7, 16, 0, 0, 2164, 2165, 7, 0, 0, 0, 2165, 2166, 7, 2, 0, 0, 2166, 2167, 7, 7, 0, 0, 2167, 2168, 7, 21, 0, 0, 2168, 470, 1, 0, 0, 0, 2169, 2170, 7, 23, 0, 0, 2170, 2171, 7, 4, 0, 0, 2171, 2172, 7, 12, 0, 0, 2172, 2173, 7, 2, 0, 0, 2173, 2174, 7, 5, 0, 0, 2174, 2175, 7, 4, 0, 0, 2175, 2176, 7, 9, 0, 0, 2176, 2177, 7, 10, 0, 0, 2177, 472, 1, 0, 0, 0, 2178, 2179, 7, 23, 0, 0, 2179, 2180, 7, 4, 0, 0, 2180, 2181, 7, 12, 0, 0, 2181, 2182, 7, 16, 0, 0, 2182, 2183, 7, 10, 0, 0, 2183, 2184, 7, 0, 0, 0, 2184, 474, 1, 0, 0, 0, 2185, 2186, 7, 23, 0, 0, 2186, 2187, 7, 10, 0, 0, 2187, 2188, 7, 11, 0, 0, 2188, 2189, 7, 19, 0, 0, 2189, 2190, 7, 18, 0, 0, 2190, 2191, 7, 0, 0, 0, 2191, 2192, 7, 10, 0, 0, 2192, 476, 1, 0, 0, 0, 2193, 2194, 7, 23, 0, 0, 2194, 2195, 7, 2, 0, 0, 2195, 2196, 7, 10, 0, 0, 2196, 2197, 7, 20, 0, 0, 2197, 478, 1, 0, 0, 0, 2198, 2199, 7, 20, 0, 0, 2199, 2200, 7, 17, 0, 0, 2200, 2201, 7, 10, 0, 0, 2201, 2202, 7, 7, 0, 0, 2202, 480, 1, 0, 0, 0, 2203, 2204, 7, 20, 0, 0, 2204, 2205, 7, 17, 0, 0, 2205, 2206, 7, 10, 0, 0, 2206, 2207, 7, 11, 0, 0, 2207, 2208, 7, 10, 0, 0, 2208, 482, 1, 0, 0, 0, 2209, 2210, 7, 20, 0, 0, 2210, 2211, 7, 2, 0, 0, 2211, 2212, 7, 7, 0, 0, 2212, 2213, 7, 5, 0, 0, 2213, 2214, 7, 18, 0, 0, 2214, 2215, 7, 20, 0, 0, 2215, 484, 1, 0, 0, 0, 2216, 2217, 7, 20, 0, 0, 2217, 2218, 7, 2, 0, 0, 2218, 2219, 7, 9, 0, 0, 2219, 2220, 7, 17, 0, 0, 2220, 486, 1, 0, 0, 0, 2221, 2222, 7, 20, 0, 0, 2222, 2223, 7, 2, 0, 0, 2223, 2224, 7, 9, 0, 0, 2224, 2225, 7, 17, 0, 0, 2225, 2226, 7, 18, 0, 0, 2226, 2227, 7, 16, 0, 0, 2227, 2228, 7, 9, 0, 0, 2228, 488, 1, 0, 0, 0, 2229, 2230, 7, 20, 0, 0, 2230, 2231, 7, 18, 0, 0, 2231, 2232, 7, 11, 0, 0, 2232, 2233, 7, 1, 0, 0, 2233, 490, 1, 0, 0, 0, 2234, 2235, 7, 20, 0, 0, 2235, 2236, 7, 11, 0, 0, 2236, 2237, 7, 2, 0, 0, 2237, 2238, 7, 9, 0, 0, 2238, 2239, 7, 10, 0, 0, 2239, 492, 1, 0, 0, 0, 2240, 2241, 7, 13, 0, 0, 2241, 2242, 7, 10, 0, 0, 2242, 2243, 7, 4, 0, 0, 2243, 2244, 7, 11, 0, 0, 2244, 494, 1, 0, 0, 0, 2245, 2246, 7, 14, 0, 0, 2246, 2247, 7, 18, 0, 0, 2247, 2248, 7, 7, 0, 0, 2248, 2249, 7, 10, 0, 0, 2249, 496, 1, 0, 0, 0, 2250, 2251, 5, 61, 0, 0, 2251, 498, 1, 0, 0, 0, 2252, 2253, 5, 60, 0, 0, 2253, 2257, 5, 62, 0, 0, 2254, 2255, 5, 33, 0, 0, 2255, 2257, 5, 61, 0, 0, 2256, 2252, 1, 0, 0, 0, 2256, 2254, 1, 0, 0, 0, 2257, 500, 1, 0, 0, 0, 2258, 2259, 5, 60, 0, 0, 2259, 502, 1, 0, 0, 0, 2260, 2261, 5, 60, 0, 0, 2261, 2262, 5, 61, 0, 0, 2262, 504, 1, 0, 0, 0, 2263, 2264, 5, 62, 0, 0, 2264, 506, 1, 0, 0, 0, 2265, 2266, 5, 62, 0, 0, 2266, 2267, 5, 61, 0, 0, 2267, 508, 1, 0, 0, 0, 2268, 2269, 5, 43, 0, 0, 2269, 510, 1, 0, 0, 0, 2270, 2271, 5, 45, 0, 0, 2271, 512, 1, 0, 0, 0, 2272, 2273, 5, 42, 0, 0, 2273, 514, 1, 0, 0, 0, 2274, 2275, 5, 47, 0, 0, 2275, 516, 1, 0, 0, 0, 2276, 2277, 5, 37, 0, 0, 2277, 518, 1, 0, 0, 0, 2278, 2279, 5, 124, 0, 0, 2279, 2280, 5, 124, 0, 0, 2280, 520, 1, 0, 0, 0, 2281, 2282, 5, 63, 0, 0, 2282, 522, 1, 0, 0, 0, 2283, 2289, 5, 39, 0, 0, 2284, 2288, 8, 25, 0, 0, 2285, 2286, 5, 39, 0, 0, 2286, 2288, 5, 39, 0, 0, 2287, 2284, 1, 0, 0, 0, 2287, 2285, 1, 0, 0, 0, 2288, 2291, 1, 0, 0, 0, 2289, 2287, 1, 0, 0, 0, 2289, 2290, 1, 0, 0, 0, 2290, 2292, 1, 0, 0, 0, 2291, 2289, 1, 0, 0, 0, 2292, 2293, 5, 39, 0, 0, 2293, 524, 1, 0, 0, 0, 2294, 2295, 7, 16, 0, 0, 2295, 2296, 5, 38, 0, 0, 2296, 2297, 5, 39, 0, 0, 2297, 2303, 1, 0, 0, 0, 2298, 2302, 8, 25, 0, 0, 2299, 2300, 5, 39, 0, 0, 2300, 2302, 5, 39, 0, 0, 2301, 2298, 1, 0, 0, 0, 2301, 2299, 1, 0, 0, 0, 2302, 2305, 1, 0, 0, 0, 2303, 2301, 1, 0, 0, 0, 2303, 2304, 1, 0, 0, 0, 2304, 2306, 1, 0, 0, 0, 2305, 2303, 1, 0, 0, 0, 2306, 2307, 5, 39, 0, 0, 2307, 526, 1, 0, 0, 0, 2308, 2309, 7, 22, 0, 0, 2309, 2310, 5, 39, 0, 0, 2310, 2314, 1, 0, 0, 0, 2311, 2313, 8, 25, 0, 0, 2312, 2311, 1, 0, 0, 0, 2313, 2316, 1, 0, 0, 0, 2314, 2312, 1, 0, 0, 0, 2314, 2315, 1, 0, 0, 0, 2315, 2317, 1, 0, 0, 0, 2316, 2314, 1, 0, 0, 0, 2317, 2318, 5, 39, 0, 0, 2318, 528, 1, 0, 0, 0, 2319, 2321, 3, 547, 273, 0, 2320, 2319, 1, 0, 0, 0, 2321, 2322, 1, 0, 0, 0, 2322, 2320, 1, 0, 0, 0, 2322, 2323, 1, 0, 0, 0, 2323, 530, 1, 0, 0, 0, 2324, 2326, 3, 547, 273, 0, 2325, 2324, 1, 0, 0, 0, 2326, 2327, 1, 0, 0, 0, 2327, 2325, 1, 0, 0, 0, 2327, 2328, 1, 0, 0, 0, 2328, 2329, 1, 0, 0, 0, 2329, 2333, 5, 46, 0, 0, 2330, 2332, 3, 547, 273, 0, 2331, 2330, 1, 0, 0, 0, 2332, 2335, 1, 0, 0, 0, 2333, 2331, 1, 0, 0, 0, 2333, 2334, 1, 0, 0, 0, 2334, 2343, 1, 0, 0, 0, 2335, 2333, 1, 0, 0, 0, 2336, 2338, 5, 46, 0, 0, 2337, 2339, 3, 547, 273, 0, 2338, 2337, 1, 0, 0, 0, 2339, 2340, 1, 0, 0, 0, 2340, 2338, 1, 0, 0, 0, 2340, 2341, 1, 0, 0, 0, 2341, 2343, 1, 0, 0, 0, 2342, 2325, 1, 0, 0, 0, 2342, 2336, 1, 0, 0, 0, 2343, 532, 1, 0, 0, 0, 2344, 2346, 3, 547, 273, 0, 2345, 2344, 1, 0, 0, 0, 2346, 2347, 1, 0, 0, 0, 2347, 2345, 1, 0, 0, 0, 2347, 2348, 1, 0, 0, 0, 2348, 2356, 1, 0, 0, 0, 2349, 2353, 5, 46, 0, 0, 2350, 2352, 3, 547, 273, 0, 2351, 2350, 1, 0, 0, 0, 2352, 2355, 1, 0, 0, 0, 2353, 2351, 1, 0, 0, 0, 2353, 2354, 1, 0, 0, 0, 2354, 2357, 1, 0, 0, 0, 2355, 2353, 1, 0, 0, 0, 2356, 2349, 1, 0, 0, 0, 2356, 2357, 1, 0, 0, 0, 2357, 2358, 1, 0, 0, 0, 2358, 2359, 3, 545, 272, 0, 2359, 2369, 1, 0, 0, 0, 2360, 2362, 5, 46, 0, 0, 2361, 2363, 3, 547, 273, 0, 2362, 2361, 1, 0, 0, 0, 2363, 2364, 1, 0, 0, 0, 2364, 2362, 1, 0, 0, 0, 2364, 2365, 1, 0, 0, 0, 2365, 2366, 1, 0, 0, 0, 2366, 2367, 3, 545, 272, 0, 2367, 2369, 1, 0, 0, 0, 2368, 2345, 1, 0, 0, 0, 2368, 2360, 1, 0, 0, 0, 2369, 534, 1, 0, 0, 0, 2370, 2373, 3, 549, 274, 0, 2371, 2373, 5, 95, 0, 0, 2372, 2370, 1, 0, 0, 0, 2372, 2371, 1, 0, 0, 0, 2373, 2379, 1, 0, 0, 0, 2374, 2378, 3, 549, 274, 0, 2375, 2378, 3, 547, 273, 0, 2376, 2378, 5, 95, 0, 0, 2377, 2374, 1, 0, 0, 0, 2377, 2375, 1, 0, 0, 0, 2377, 2376, 1, 0, 0, 0, 2378, 2381, 1, 0, 0, 0, 2379, 2377, 1, 0, 0, 0, 2379, 2380, 1, 0, 0, 0, 2380, 536, 1, 0, 0, 0, 2381, 2379, 1, 0, 0, 0, 2382, 2386, 3, 547, 273, 0, 2383, 2387, 3, 549, 274, 0, 2384, 2387, 3, 547, 273, 0, 2385, 2387, 5, 95, 0, 0, 2386, 2383, 1, 0, 0, 0, 2386, 2384, 1, 0, 0, 0, 2386, 2385, 1, 0, 0, 0, 2387, 2388, 1, 0, 0, 0, 2388, 2386, 1, 0, 0, 0, 2388, 2389, 1, 0, 0, 0, 2389, 538, 1, 0, 0, 0, 2390, 2396, 5, 34, 0, 0, 2391, 2395, 8, 26, 0, 0, 2392, 2393, 5, 34, 0, 0, 2393, 2395, 5, 34, 0, 0, 2394, 2391, 1, 0, 0, 0, 2394, 2392, 1, 0, 0, 0, 2395, 2398, 1, 0, 0, 0, 2396, 2394, 1, 0, 0, 0, 2396, 2397, 1, 0, 0, 0, 2397, 2399, 1, 0, 0, 0, 2398, 2396, 1, 0, 0, 0, 2399, 2400, 5, 34, 0, 0, 2400, 540, 1, 0, 0, 0, 2401, 2407, 5, 96, 0, 0, 2402, 2406, 8, 27, 0, 0, 2403, 2404, 5, 96, 0, 0, 2404, 2406, 5, 96, 0, 0, 2405, 2402, 1, 0, 0, 0, 2405, 2403, 1, 0, 0, 0, 2406, 2409, 1, 0, 0, 0, 2407, 2405, 1, 0, 0, 0, 2407, 2408, 1, 0, 0, 0, 2408, 2410, 1, 0, 0, 0, 2409, 2407, 1, 0, 0, 0, 2410, 2411, 5, 96, 0, 0, 2411, 542, 1, 0, 0, 0, 2412, 2413, 5, 59, 0, 0, 2413, 544, 1, 0, 0, 0, 2414, 2416, 7, 10, 0, 0, 2415, 2417, 7, 28, 0, 0, 2416, 2415, 1, 0, 0, 0, 2416, 2417, 1, 0, 0, 0, 2417, 2419, 1, 0, 0, 0, 2418, 2420, 3, 547, 273, 0, 2419, 2418, 1, 0, 0, 0, 2420, 2421, 1, 0, 0, 0, 2421, 2419, 1, 0, 0, 0, 2421, 2422, 1, 0, 0, 0, 2422, 546, 1, 0, 0, 0, 2423, 2424, 7, 29, 0, 0, 2424, 548, 1, 0, 0, 0, 2425, 2426, 7, 30, 0, 0, 2426, 550, 1, 0, 0, 0, 2427, 2428, 5, 45, 0, 0, 2428, 2429, 5, 45, 0, 0, 2429, 2433, 1, 0, 0, 0, 2430, 2432, 8, 31, 0, 0, 2431, 2430, 1, 0, 0, 0, 2432, 2435, 1, 0, 0, 0, 2433, 2431, 1, 0, 0, 0, 2433, 2434, 1, 0, 0, 0, 2434, 2437, 1, 0, 0, 0, 2435, 2433, 1, 0, 0, 0, 2436, 2438, 5, 13, 0, 0, 2437, 2436, 1, 0, 0, 0, 2437, 2438, 1, 0, 0, 0, 2438, 2440, 1, 0, 0, 0, 2439, 2441, 5, 10, 0, 0, 2440, 2439, 1, 0, 0, 0, 2440, 2441, 1, 0, 0, 0, 2441, 2442, 1, 0, 0, 0, 2442, 2443, 6, 275, 0, 0, 2443, 552, 1, 0, 0, 0, 2444, 2445, 5, 47, 0, 0, 2445, 2446, 5, 42, 0, 0, 2446, 2450, 1, 0, 0, 0, 2447, 2449, 9, 0, 0, 0, 2448, 2447, 1, 0, 0, 0, 2449, 2452, 1, 0, 0, 0, 2450, 2451, 1, 0, 0, 0, 2450, 2448, 1, 0, 0, 0, 2451, 2453, 1, 0, 0, 0, 2452, 2450, 1, 0, 0, 0, 2453, 2454, 5, 42, 0, 0, 2454, 2455, 5, 47, 0, 0, 2455, 2456, 1, 0, 0, 0, 2456, 2457, 6, 276, 0, 0, 2457, 554, 1, 0, 0, 0, 2458, 2460, 7, 32, 0, 0, 2459, 2458, 1, 0, 0, 0, 2460, 2461, 1, 0, 0, 0, 2461, 2459, 1, 0, 0, 0, 2461, 2462, 1, 0, 0, 0, 2462, 2463, 1, 0, 0, 0, 2463, 2464, 6, 277, 0, 0, 2464, 556, 1, 0, 0, 0, 2465, 2466, 9, 0, 0, 0, 2466, 558, 1, 0, 0, 0, 33, 0, 2256, 2287, 2289, 2301, 2303, 2314, 2322, 2327, 2333, 2340, 2342, 2347, 2353, 2356, 2364, 2368, 2372, 2377, 2379, 2386, 2388, 2394, 2396, 2405, 2407, 2416, 2421, 2433, 2437, 2440, 2450, 2461, 1, 0, 1, 0] \ No newline at end of file +[4, 0, 339, 3117, 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, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 2, 124, 7, 124, 2, 125, 7, 125, 2, 126, 7, 126, 2, 127, 7, 127, 2, 128, 7, 128, 2, 129, 7, 129, 2, 130, 7, 130, 2, 131, 7, 131, 2, 132, 7, 132, 2, 133, 7, 133, 2, 134, 7, 134, 2, 135, 7, 135, 2, 136, 7, 136, 2, 137, 7, 137, 2, 138, 7, 138, 2, 139, 7, 139, 2, 140, 7, 140, 2, 141, 7, 141, 2, 142, 7, 142, 2, 143, 7, 143, 2, 144, 7, 144, 2, 145, 7, 145, 2, 146, 7, 146, 2, 147, 7, 147, 2, 148, 7, 148, 2, 149, 7, 149, 2, 150, 7, 150, 2, 151, 7, 151, 2, 152, 7, 152, 2, 153, 7, 153, 2, 154, 7, 154, 2, 155, 7, 155, 2, 156, 7, 156, 2, 157, 7, 157, 2, 158, 7, 158, 2, 159, 7, 159, 2, 160, 7, 160, 2, 161, 7, 161, 2, 162, 7, 162, 2, 163, 7, 163, 2, 164, 7, 164, 2, 165, 7, 165, 2, 166, 7, 166, 2, 167, 7, 167, 2, 168, 7, 168, 2, 169, 7, 169, 2, 170, 7, 170, 2, 171, 7, 171, 2, 172, 7, 172, 2, 173, 7, 173, 2, 174, 7, 174, 2, 175, 7, 175, 2, 176, 7, 176, 2, 177, 7, 177, 2, 178, 7, 178, 2, 179, 7, 179, 2, 180, 7, 180, 2, 181, 7, 181, 2, 182, 7, 182, 2, 183, 7, 183, 2, 184, 7, 184, 2, 185, 7, 185, 2, 186, 7, 186, 2, 187, 7, 187, 2, 188, 7, 188, 2, 189, 7, 189, 2, 190, 7, 190, 2, 191, 7, 191, 2, 192, 7, 192, 2, 193, 7, 193, 2, 194, 7, 194, 2, 195, 7, 195, 2, 196, 7, 196, 2, 197, 7, 197, 2, 198, 7, 198, 2, 199, 7, 199, 2, 200, 7, 200, 2, 201, 7, 201, 2, 202, 7, 202, 2, 203, 7, 203, 2, 204, 7, 204, 2, 205, 7, 205, 2, 206, 7, 206, 2, 207, 7, 207, 2, 208, 7, 208, 2, 209, 7, 209, 2, 210, 7, 210, 2, 211, 7, 211, 2, 212, 7, 212, 2, 213, 7, 213, 2, 214, 7, 214, 2, 215, 7, 215, 2, 216, 7, 216, 2, 217, 7, 217, 2, 218, 7, 218, 2, 219, 7, 219, 2, 220, 7, 220, 2, 221, 7, 221, 2, 222, 7, 222, 2, 223, 7, 223, 2, 224, 7, 224, 2, 225, 7, 225, 2, 226, 7, 226, 2, 227, 7, 227, 2, 228, 7, 228, 2, 229, 7, 229, 2, 230, 7, 230, 2, 231, 7, 231, 2, 232, 7, 232, 2, 233, 7, 233, 2, 234, 7, 234, 2, 235, 7, 235, 2, 236, 7, 236, 2, 237, 7, 237, 2, 238, 7, 238, 2, 239, 7, 239, 2, 240, 7, 240, 2, 241, 7, 241, 2, 242, 7, 242, 2, 243, 7, 243, 2, 244, 7, 244, 2, 245, 7, 245, 2, 246, 7, 246, 2, 247, 7, 247, 2, 248, 7, 248, 2, 249, 7, 249, 2, 250, 7, 250, 2, 251, 7, 251, 2, 252, 7, 252, 2, 253, 7, 253, 2, 254, 7, 254, 2, 255, 7, 255, 2, 256, 7, 256, 2, 257, 7, 257, 2, 258, 7, 258, 2, 259, 7, 259, 2, 260, 7, 260, 2, 261, 7, 261, 2, 262, 7, 262, 2, 263, 7, 263, 2, 264, 7, 264, 2, 265, 7, 265, 2, 266, 7, 266, 2, 267, 7, 267, 2, 268, 7, 268, 2, 269, 7, 269, 2, 270, 7, 270, 2, 271, 7, 271, 2, 272, 7, 272, 2, 273, 7, 273, 2, 274, 7, 274, 2, 275, 7, 275, 2, 276, 7, 276, 2, 277, 7, 277, 2, 278, 7, 278, 2, 279, 7, 279, 2, 280, 7, 280, 2, 281, 7, 281, 2, 282, 7, 282, 2, 283, 7, 283, 2, 284, 7, 284, 2, 285, 7, 285, 2, 286, 7, 286, 2, 287, 7, 287, 2, 288, 7, 288, 2, 289, 7, 289, 2, 290, 7, 290, 2, 291, 7, 291, 2, 292, 7, 292, 2, 293, 7, 293, 2, 294, 7, 294, 2, 295, 7, 295, 2, 296, 7, 296, 2, 297, 7, 297, 2, 298, 7, 298, 2, 299, 7, 299, 2, 300, 7, 300, 2, 301, 7, 301, 2, 302, 7, 302, 2, 303, 7, 303, 2, 304, 7, 304, 2, 305, 7, 305, 2, 306, 7, 306, 2, 307, 7, 307, 2, 308, 7, 308, 2, 309, 7, 309, 2, 310, 7, 310, 2, 311, 7, 311, 2, 312, 7, 312, 2, 313, 7, 313, 2, 314, 7, 314, 2, 315, 7, 315, 2, 316, 7, 316, 2, 317, 7, 317, 2, 318, 7, 318, 2, 319, 7, 319, 2, 320, 7, 320, 2, 321, 7, 321, 2, 322, 7, 322, 2, 323, 7, 323, 2, 324, 7, 324, 2, 325, 7, 325, 2, 326, 7, 326, 2, 327, 7, 327, 2, 328, 7, 328, 2, 329, 7, 329, 2, 330, 7, 330, 2, 331, 7, 331, 2, 332, 7, 332, 2, 333, 7, 333, 2, 334, 7, 334, 2, 335, 7, 335, 2, 336, 7, 336, 2, 337, 7, 337, 2, 338, 7, 338, 2, 339, 7, 339, 2, 340, 7, 340, 2, 341, 7, 341, 2, 342, 7, 342, 2, 343, 7, 343, 2, 344, 7, 344, 2, 345, 7, 345, 1, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 8, 1, 8, 1, 9, 1, 9, 1, 10, 1, 10, 1, 11, 1, 11, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 19, 1, 20, 1, 20, 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, 22, 1, 23, 1, 23, 1, 23, 1, 23, 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, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 29, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 30, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 38, 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, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 51, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 57, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 58, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 59, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 60, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 1, 80, 1, 80, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 81, 1, 82, 1, 82, 1, 82, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 92, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 93, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 98, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 99, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 100, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 101, 1, 102, 1, 102, 1, 102, 1, 102, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 103, 1, 104, 1, 104, 1, 104, 1, 104, 1, 104, 1, 105, 1, 105, 1, 105, 1, 105, 1, 105, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 106, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 107, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 108, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 109, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 110, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 111, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 112, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 113, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 114, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 115, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 116, 1, 117, 1, 117, 1, 117, 1, 117, 1, 117, 1, 118, 1, 118, 1, 118, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 119, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 120, 1, 121, 1, 121, 1, 121, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 122, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 123, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 124, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 125, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 126, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 127, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 128, 1, 129, 1, 129, 1, 129, 1, 129, 1, 129, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 130, 1, 131, 1, 131, 1, 131, 1, 132, 1, 132, 1, 132, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 133, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 134, 1, 135, 1, 135, 1, 135, 1, 135, 1, 135, 1, 136, 1, 136, 1, 136, 1, 136, 1, 136, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 137, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 138, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 139, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 140, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 141, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 142, 1, 143, 1, 143, 1, 143, 1, 143, 1, 143, 1, 144, 1, 144, 1, 144, 1, 144, 1, 145, 1, 145, 1, 145, 1, 145, 1, 145, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 146, 1, 147, 1, 147, 1, 147, 1, 147, 1, 147, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 148, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 149, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 150, 1, 151, 1, 151, 1, 151, 1, 151, 1, 151, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 152, 1, 153, 1, 153, 1, 153, 1, 153, 1, 153, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 154, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 155, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 156, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 157, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 158, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 159, 1, 160, 1, 160, 1, 160, 1, 160, 1, 160, 1, 161, 1, 161, 1, 161, 1, 161, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 162, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 163, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 164, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 165, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 166, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 167, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 168, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 169, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 170, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 171, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 172, 1, 173, 1, 173, 1, 173, 1, 173, 1, 173, 1, 174, 1, 174, 1, 174, 1, 174, 1, 175, 1, 175, 1, 175, 1, 175, 1, 176, 1, 176, 1, 176, 1, 176, 1, 176, 1, 177, 1, 177, 1, 177, 1, 177, 1, 177, 1, 178, 1, 178, 1, 178, 1, 179, 1, 179, 1, 179, 1, 179, 1, 179, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 180, 1, 181, 1, 181, 1, 181, 1, 181, 1, 182, 1, 182, 1, 182, 1, 182, 1, 182, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 183, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 184, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 185, 1, 186, 1, 186, 1, 186, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 187, 1, 188, 1, 188, 1, 188, 1, 188, 1, 188, 1, 189, 1, 189, 1, 189, 1, 190, 1, 190, 1, 190, 1, 190, 1, 191, 1, 191, 1, 191, 1, 191, 1, 191, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 192, 1, 193, 1, 193, 1, 193, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 194, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 195, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 196, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 197, 1, 198, 1, 198, 1, 198, 1, 198, 1, 198, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 199, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 200, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 201, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 202, 1, 203, 1, 203, 1, 203, 1, 203, 1, 203, 1, 204, 1, 204, 1, 204, 1, 204, 1, 204, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 205, 1, 206, 1, 206, 1, 206, 1, 206, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 207, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 208, 1, 209, 1, 209, 1, 209, 1, 209, 1, 209, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 210, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 211, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 212, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 213, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 214, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 215, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 216, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 217, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 218, 1, 219, 1, 219, 1, 219, 1, 219, 1, 219, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 220, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 221, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 222, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 223, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 224, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 225, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 226, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 227, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 228, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 229, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 230, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 231, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 232, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 233, 1, 234, 1, 234, 1, 234, 1, 234, 1, 234, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 235, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 236, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 237, 1, 238, 1, 238, 1, 238, 1, 238, 1, 239, 1, 239, 1, 239, 1, 239, 1, 239, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 240, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 241, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 242, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 243, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 244, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 245, 1, 246, 1, 246, 1, 246, 1, 246, 1, 246, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 247, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 248, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 249, 1, 250, 1, 250, 1, 250, 1, 250, 1, 251, 1, 251, 1, 251, 1, 251, 1, 251, 1, 252, 1, 252, 1, 252, 1, 252, 1, 252, 1, 253, 1, 253, 1, 253, 1, 253, 1, 253, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 254, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 255, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 256, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 257, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 258, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 259, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 260, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 261, 1, 262, 1, 262, 1, 262, 1, 262, 1, 262, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 263, 1, 264, 1, 264, 1, 264, 1, 264, 1, 264, 1, 265, 1, 265, 1, 265, 1, 265, 1, 265, 1, 266, 1, 266, 1, 266, 1, 266, 1, 266, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 267, 1, 268, 1, 268, 1, 268, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 269, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 270, 1, 271, 1, 271, 1, 271, 1, 271, 1, 271, 1, 272, 1, 272, 1, 272, 1, 272, 1, 272, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 273, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 274, 1, 275, 1, 275, 1, 275, 1, 275, 1, 275, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 276, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 277, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 278, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 279, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 280, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 281, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 282, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 283, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 284, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 285, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 286, 1, 287, 1, 287, 1, 287, 1, 287, 1, 288, 1, 288, 1, 288, 1, 288, 1, 288, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 289, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 290, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 291, 1, 292, 1, 292, 1, 292, 1, 292, 1, 292, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 293, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 294, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 295, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 296, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 297, 1, 298, 1, 298, 1, 298, 1, 298, 1, 298, 1, 299, 1, 299, 1, 299, 1, 299, 1, 299, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 300, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 301, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 302, 1, 303, 1, 303, 1, 303, 1, 303, 1, 303, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 304, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 305, 1, 306, 1, 306, 1, 306, 1, 306, 1, 306, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 307, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 308, 1, 309, 1, 309, 1, 309, 1, 309, 1, 309, 1, 310, 1, 310, 1, 310, 1, 310, 1, 310, 1, 311, 1, 311, 1, 312, 1, 312, 1, 312, 1, 312, 3, 312, 2871, 8, 312, 1, 313, 1, 313, 1, 314, 1, 314, 1, 314, 1, 315, 1, 315, 1, 316, 1, 316, 1, 316, 1, 317, 1, 317, 1, 318, 1, 318, 1, 319, 1, 319, 1, 320, 1, 320, 1, 321, 1, 321, 1, 322, 1, 322, 1, 322, 1, 323, 1, 323, 1, 324, 1, 324, 1, 325, 1, 325, 1, 325, 1, 325, 5, 325, 2904, 8, 325, 10, 325, 12, 325, 2907, 9, 325, 1, 325, 1, 325, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 1, 326, 5, 326, 2918, 8, 326, 10, 326, 12, 326, 2921, 9, 326, 1, 326, 1, 326, 1, 327, 1, 327, 1, 327, 1, 327, 5, 327, 2929, 8, 327, 10, 327, 12, 327, 2932, 9, 327, 1, 327, 1, 327, 1, 328, 1, 328, 1, 328, 1, 328, 3, 328, 2940, 8, 328, 1, 329, 1, 329, 1, 329, 3, 329, 2945, 8, 329, 1, 329, 1, 329, 3, 329, 2949, 8, 329, 1, 330, 4, 330, 2952, 8, 330, 11, 330, 12, 330, 2953, 1, 330, 1, 330, 5, 330, 2958, 8, 330, 10, 330, 12, 330, 2961, 9, 330, 3, 330, 2963, 8, 330, 1, 330, 1, 330, 1, 330, 1, 330, 4, 330, 2969, 8, 330, 11, 330, 12, 330, 2970, 1, 330, 1, 330, 3, 330, 2975, 8, 330, 1, 331, 1, 331, 3, 331, 2979, 8, 331, 1, 331, 1, 331, 1, 331, 5, 331, 2984, 8, 331, 10, 331, 12, 331, 2987, 9, 331, 1, 332, 1, 332, 1, 332, 1, 332, 4, 332, 2993, 8, 332, 11, 332, 12, 332, 2994, 1, 333, 1, 333, 1, 333, 1, 333, 5, 333, 3001, 8, 333, 10, 333, 12, 333, 3004, 9, 333, 1, 333, 1, 333, 1, 334, 1, 334, 1, 334, 1, 334, 5, 334, 3012, 8, 334, 10, 334, 12, 334, 3015, 9, 334, 1, 334, 1, 334, 1, 335, 1, 335, 3, 335, 3021, 8, 335, 1, 335, 5, 335, 3024, 8, 335, 10, 335, 12, 335, 3027, 9, 335, 1, 336, 1, 336, 1, 336, 1, 336, 3, 336, 3033, 8, 336, 1, 336, 1, 336, 3, 336, 3037, 8, 336, 4, 336, 3039, 8, 336, 11, 336, 12, 336, 3040, 1, 337, 1, 337, 1, 337, 1, 337, 3, 337, 3047, 8, 337, 1, 337, 4, 337, 3050, 8, 337, 11, 337, 12, 337, 3051, 1, 338, 1, 338, 1, 338, 1, 338, 3, 338, 3058, 8, 338, 1, 338, 4, 338, 3061, 8, 338, 11, 338, 12, 338, 3062, 1, 339, 1, 339, 3, 339, 3067, 8, 339, 1, 339, 4, 339, 3070, 8, 339, 11, 339, 12, 339, 3071, 1, 340, 1, 340, 1, 341, 1, 341, 1, 342, 1, 342, 1, 342, 1, 342, 5, 342, 3082, 8, 342, 10, 342, 12, 342, 3085, 9, 342, 1, 342, 3, 342, 3088, 8, 342, 1, 342, 3, 342, 3091, 8, 342, 1, 342, 1, 342, 1, 343, 1, 343, 1, 343, 1, 343, 5, 343, 3099, 8, 343, 10, 343, 12, 343, 3102, 9, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 343, 1, 344, 4, 344, 3110, 8, 344, 11, 344, 12, 344, 3111, 1, 344, 1, 344, 1, 345, 1, 345, 1, 3100, 0, 346, 1, 1, 3, 2, 5, 3, 7, 4, 9, 5, 11, 6, 13, 7, 15, 8, 17, 9, 19, 10, 21, 11, 23, 12, 25, 13, 27, 14, 29, 15, 31, 16, 33, 17, 35, 18, 37, 19, 39, 20, 41, 21, 43, 22, 45, 23, 47, 24, 49, 25, 51, 26, 53, 27, 55, 28, 57, 29, 59, 30, 61, 31, 63, 32, 65, 33, 67, 34, 69, 35, 71, 36, 73, 37, 75, 38, 77, 39, 79, 40, 81, 41, 83, 42, 85, 43, 87, 44, 89, 45, 91, 46, 93, 47, 95, 48, 97, 49, 99, 50, 101, 51, 103, 52, 105, 53, 107, 54, 109, 55, 111, 56, 113, 57, 115, 58, 117, 59, 119, 60, 121, 61, 123, 62, 125, 63, 127, 64, 129, 65, 131, 66, 133, 67, 135, 68, 137, 69, 139, 70, 141, 71, 143, 72, 145, 73, 147, 74, 149, 75, 151, 76, 153, 77, 155, 78, 157, 79, 159, 80, 161, 81, 163, 82, 165, 83, 167, 84, 169, 85, 171, 86, 173, 87, 175, 88, 177, 89, 179, 90, 181, 91, 183, 92, 185, 93, 187, 94, 189, 95, 191, 96, 193, 97, 195, 98, 197, 99, 199, 100, 201, 101, 203, 102, 205, 103, 207, 104, 209, 105, 211, 106, 213, 107, 215, 108, 217, 109, 219, 110, 221, 111, 223, 112, 225, 113, 227, 114, 229, 115, 231, 116, 233, 117, 235, 118, 237, 119, 239, 120, 241, 121, 243, 122, 245, 123, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 259, 130, 261, 131, 263, 132, 265, 133, 267, 134, 269, 135, 271, 136, 273, 137, 275, 138, 277, 139, 279, 140, 281, 141, 283, 142, 285, 143, 287, 144, 289, 145, 291, 146, 293, 147, 295, 148, 297, 149, 299, 150, 301, 151, 303, 152, 305, 153, 307, 154, 309, 155, 311, 156, 313, 157, 315, 158, 317, 159, 319, 160, 321, 161, 323, 162, 325, 163, 327, 164, 329, 165, 331, 166, 333, 167, 335, 168, 337, 169, 339, 170, 341, 171, 343, 172, 345, 173, 347, 174, 349, 175, 351, 176, 353, 177, 355, 178, 357, 179, 359, 180, 361, 181, 363, 182, 365, 183, 367, 184, 369, 185, 371, 186, 373, 187, 375, 188, 377, 189, 379, 190, 381, 191, 383, 192, 385, 193, 387, 194, 389, 195, 391, 196, 393, 197, 395, 198, 397, 199, 399, 200, 401, 201, 403, 202, 405, 203, 407, 204, 409, 205, 411, 206, 413, 207, 415, 208, 417, 209, 419, 210, 421, 211, 423, 212, 425, 213, 427, 214, 429, 215, 431, 216, 433, 217, 435, 218, 437, 219, 439, 220, 441, 221, 443, 222, 445, 223, 447, 224, 449, 225, 451, 226, 453, 227, 455, 228, 457, 229, 459, 230, 461, 231, 463, 232, 465, 233, 467, 234, 469, 235, 471, 236, 473, 237, 475, 238, 477, 239, 479, 240, 481, 241, 483, 242, 485, 243, 487, 244, 489, 245, 491, 246, 493, 247, 495, 248, 497, 249, 499, 250, 501, 251, 503, 252, 505, 253, 507, 254, 509, 255, 511, 256, 513, 257, 515, 258, 517, 259, 519, 260, 521, 261, 523, 262, 525, 263, 527, 264, 529, 265, 531, 266, 533, 267, 535, 268, 537, 269, 539, 270, 541, 271, 543, 272, 545, 273, 547, 274, 549, 275, 551, 276, 553, 277, 555, 278, 557, 279, 559, 280, 561, 281, 563, 282, 565, 283, 567, 284, 569, 285, 571, 286, 573, 287, 575, 288, 577, 289, 579, 290, 581, 291, 583, 292, 585, 293, 587, 294, 589, 295, 591, 296, 593, 297, 595, 298, 597, 299, 599, 300, 601, 301, 603, 302, 605, 303, 607, 304, 609, 305, 611, 306, 613, 307, 615, 308, 617, 309, 619, 310, 621, 311, 623, 312, 625, 313, 627, 314, 629, 315, 631, 316, 633, 317, 635, 318, 637, 319, 639, 320, 641, 321, 643, 322, 645, 323, 647, 324, 649, 325, 651, 326, 653, 327, 655, 328, 657, 329, 659, 330, 661, 331, 663, 332, 665, 333, 667, 334, 669, 335, 671, 0, 673, 0, 675, 0, 677, 0, 679, 0, 681, 0, 683, 0, 685, 336, 687, 337, 689, 338, 691, 339, 1, 0, 37, 2, 0, 83, 83, 115, 115, 2, 0, 75, 75, 107, 107, 2, 0, 73, 73, 105, 105, 2, 0, 80, 80, 112, 112, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 69, 69, 101, 101, 2, 0, 78, 78, 110, 110, 2, 0, 84, 84, 116, 116, 2, 0, 68, 68, 100, 100, 2, 0, 77, 77, 109, 109, 2, 0, 70, 70, 102, 102, 2, 0, 82, 82, 114, 114, 2, 0, 76, 76, 108, 108, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 2, 0, 67, 67, 99, 99, 2, 0, 85, 85, 117, 117, 2, 0, 72, 72, 104, 104, 2, 0, 79, 79, 111, 111, 2, 0, 71, 71, 103, 103, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 86, 86, 118, 118, 2, 0, 74, 74, 106, 106, 2, 0, 81, 81, 113, 113, 1, 0, 39, 39, 1, 0, 34, 34, 1, 0, 96, 96, 2, 0, 65, 70, 97, 102, 1, 0, 48, 55, 1, 0, 48, 49, 2, 0, 43, 43, 45, 45, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 3152, 0, 1, 1, 0, 0, 0, 0, 3, 1, 0, 0, 0, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 45, 1, 0, 0, 0, 0, 47, 1, 0, 0, 0, 0, 49, 1, 0, 0, 0, 0, 51, 1, 0, 0, 0, 0, 53, 1, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 57, 1, 0, 0, 0, 0, 59, 1, 0, 0, 0, 0, 61, 1, 0, 0, 0, 0, 63, 1, 0, 0, 0, 0, 65, 1, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 71, 1, 0, 0, 0, 0, 73, 1, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 77, 1, 0, 0, 0, 0, 79, 1, 0, 0, 0, 0, 81, 1, 0, 0, 0, 0, 83, 1, 0, 0, 0, 0, 85, 1, 0, 0, 0, 0, 87, 1, 0, 0, 0, 0, 89, 1, 0, 0, 0, 0, 91, 1, 0, 0, 0, 0, 93, 1, 0, 0, 0, 0, 95, 1, 0, 0, 0, 0, 97, 1, 0, 0, 0, 0, 99, 1, 0, 0, 0, 0, 101, 1, 0, 0, 0, 0, 103, 1, 0, 0, 0, 0, 105, 1, 0, 0, 0, 0, 107, 1, 0, 0, 0, 0, 109, 1, 0, 0, 0, 0, 111, 1, 0, 0, 0, 0, 113, 1, 0, 0, 0, 0, 115, 1, 0, 0, 0, 0, 117, 1, 0, 0, 0, 0, 119, 1, 0, 0, 0, 0, 121, 1, 0, 0, 0, 0, 123, 1, 0, 0, 0, 0, 125, 1, 0, 0, 0, 0, 127, 1, 0, 0, 0, 0, 129, 1, 0, 0, 0, 0, 131, 1, 0, 0, 0, 0, 133, 1, 0, 0, 0, 0, 135, 1, 0, 0, 0, 0, 137, 1, 0, 0, 0, 0, 139, 1, 0, 0, 0, 0, 141, 1, 0, 0, 0, 0, 143, 1, 0, 0, 0, 0, 145, 1, 0, 0, 0, 0, 147, 1, 0, 0, 0, 0, 149, 1, 0, 0, 0, 0, 151, 1, 0, 0, 0, 0, 153, 1, 0, 0, 0, 0, 155, 1, 0, 0, 0, 0, 157, 1, 0, 0, 0, 0, 159, 1, 0, 0, 0, 0, 161, 1, 0, 0, 0, 0, 163, 1, 0, 0, 0, 0, 165, 1, 0, 0, 0, 0, 167, 1, 0, 0, 0, 0, 169, 1, 0, 0, 0, 0, 171, 1, 0, 0, 0, 0, 173, 1, 0, 0, 0, 0, 175, 1, 0, 0, 0, 0, 177, 1, 0, 0, 0, 0, 179, 1, 0, 0, 0, 0, 181, 1, 0, 0, 0, 0, 183, 1, 0, 0, 0, 0, 185, 1, 0, 0, 0, 0, 187, 1, 0, 0, 0, 0, 189, 1, 0, 0, 0, 0, 191, 1, 0, 0, 0, 0, 193, 1, 0, 0, 0, 0, 195, 1, 0, 0, 0, 0, 197, 1, 0, 0, 0, 0, 199, 1, 0, 0, 0, 0, 201, 1, 0, 0, 0, 0, 203, 1, 0, 0, 0, 0, 205, 1, 0, 0, 0, 0, 207, 1, 0, 0, 0, 0, 209, 1, 0, 0, 0, 0, 211, 1, 0, 0, 0, 0, 213, 1, 0, 0, 0, 0, 215, 1, 0, 0, 0, 0, 217, 1, 0, 0, 0, 0, 219, 1, 0, 0, 0, 0, 221, 1, 0, 0, 0, 0, 223, 1, 0, 0, 0, 0, 225, 1, 0, 0, 0, 0, 227, 1, 0, 0, 0, 0, 229, 1, 0, 0, 0, 0, 231, 1, 0, 0, 0, 0, 233, 1, 0, 0, 0, 0, 235, 1, 0, 0, 0, 0, 237, 1, 0, 0, 0, 0, 239, 1, 0, 0, 0, 0, 241, 1, 0, 0, 0, 0, 243, 1, 0, 0, 0, 0, 245, 1, 0, 0, 0, 0, 247, 1, 0, 0, 0, 0, 249, 1, 0, 0, 0, 0, 251, 1, 0, 0, 0, 0, 253, 1, 0, 0, 0, 0, 255, 1, 0, 0, 0, 0, 257, 1, 0, 0, 0, 0, 259, 1, 0, 0, 0, 0, 261, 1, 0, 0, 0, 0, 263, 1, 0, 0, 0, 0, 265, 1, 0, 0, 0, 0, 267, 1, 0, 0, 0, 0, 269, 1, 0, 0, 0, 0, 271, 1, 0, 0, 0, 0, 273, 1, 0, 0, 0, 0, 275, 1, 0, 0, 0, 0, 277, 1, 0, 0, 0, 0, 279, 1, 0, 0, 0, 0, 281, 1, 0, 0, 0, 0, 283, 1, 0, 0, 0, 0, 285, 1, 0, 0, 0, 0, 287, 1, 0, 0, 0, 0, 289, 1, 0, 0, 0, 0, 291, 1, 0, 0, 0, 0, 293, 1, 0, 0, 0, 0, 295, 1, 0, 0, 0, 0, 297, 1, 0, 0, 0, 0, 299, 1, 0, 0, 0, 0, 301, 1, 0, 0, 0, 0, 303, 1, 0, 0, 0, 0, 305, 1, 0, 0, 0, 0, 307, 1, 0, 0, 0, 0, 309, 1, 0, 0, 0, 0, 311, 1, 0, 0, 0, 0, 313, 1, 0, 0, 0, 0, 315, 1, 0, 0, 0, 0, 317, 1, 0, 0, 0, 0, 319, 1, 0, 0, 0, 0, 321, 1, 0, 0, 0, 0, 323, 1, 0, 0, 0, 0, 325, 1, 0, 0, 0, 0, 327, 1, 0, 0, 0, 0, 329, 1, 0, 0, 0, 0, 331, 1, 0, 0, 0, 0, 333, 1, 0, 0, 0, 0, 335, 1, 0, 0, 0, 0, 337, 1, 0, 0, 0, 0, 339, 1, 0, 0, 0, 0, 341, 1, 0, 0, 0, 0, 343, 1, 0, 0, 0, 0, 345, 1, 0, 0, 0, 0, 347, 1, 0, 0, 0, 0, 349, 1, 0, 0, 0, 0, 351, 1, 0, 0, 0, 0, 353, 1, 0, 0, 0, 0, 355, 1, 0, 0, 0, 0, 357, 1, 0, 0, 0, 0, 359, 1, 0, 0, 0, 0, 361, 1, 0, 0, 0, 0, 363, 1, 0, 0, 0, 0, 365, 1, 0, 0, 0, 0, 367, 1, 0, 0, 0, 0, 369, 1, 0, 0, 0, 0, 371, 1, 0, 0, 0, 0, 373, 1, 0, 0, 0, 0, 375, 1, 0, 0, 0, 0, 377, 1, 0, 0, 0, 0, 379, 1, 0, 0, 0, 0, 381, 1, 0, 0, 0, 0, 383, 1, 0, 0, 0, 0, 385, 1, 0, 0, 0, 0, 387, 1, 0, 0, 0, 0, 389, 1, 0, 0, 0, 0, 391, 1, 0, 0, 0, 0, 393, 1, 0, 0, 0, 0, 395, 1, 0, 0, 0, 0, 397, 1, 0, 0, 0, 0, 399, 1, 0, 0, 0, 0, 401, 1, 0, 0, 0, 0, 403, 1, 0, 0, 0, 0, 405, 1, 0, 0, 0, 0, 407, 1, 0, 0, 0, 0, 409, 1, 0, 0, 0, 0, 411, 1, 0, 0, 0, 0, 413, 1, 0, 0, 0, 0, 415, 1, 0, 0, 0, 0, 417, 1, 0, 0, 0, 0, 419, 1, 0, 0, 0, 0, 421, 1, 0, 0, 0, 0, 423, 1, 0, 0, 0, 0, 425, 1, 0, 0, 0, 0, 427, 1, 0, 0, 0, 0, 429, 1, 0, 0, 0, 0, 431, 1, 0, 0, 0, 0, 433, 1, 0, 0, 0, 0, 435, 1, 0, 0, 0, 0, 437, 1, 0, 0, 0, 0, 439, 1, 0, 0, 0, 0, 441, 1, 0, 0, 0, 0, 443, 1, 0, 0, 0, 0, 445, 1, 0, 0, 0, 0, 447, 1, 0, 0, 0, 0, 449, 1, 0, 0, 0, 0, 451, 1, 0, 0, 0, 0, 453, 1, 0, 0, 0, 0, 455, 1, 0, 0, 0, 0, 457, 1, 0, 0, 0, 0, 459, 1, 0, 0, 0, 0, 461, 1, 0, 0, 0, 0, 463, 1, 0, 0, 0, 0, 465, 1, 0, 0, 0, 0, 467, 1, 0, 0, 0, 0, 469, 1, 0, 0, 0, 0, 471, 1, 0, 0, 0, 0, 473, 1, 0, 0, 0, 0, 475, 1, 0, 0, 0, 0, 477, 1, 0, 0, 0, 0, 479, 1, 0, 0, 0, 0, 481, 1, 0, 0, 0, 0, 483, 1, 0, 0, 0, 0, 485, 1, 0, 0, 0, 0, 487, 1, 0, 0, 0, 0, 489, 1, 0, 0, 0, 0, 491, 1, 0, 0, 0, 0, 493, 1, 0, 0, 0, 0, 495, 1, 0, 0, 0, 0, 497, 1, 0, 0, 0, 0, 499, 1, 0, 0, 0, 0, 501, 1, 0, 0, 0, 0, 503, 1, 0, 0, 0, 0, 505, 1, 0, 0, 0, 0, 507, 1, 0, 0, 0, 0, 509, 1, 0, 0, 0, 0, 511, 1, 0, 0, 0, 0, 513, 1, 0, 0, 0, 0, 515, 1, 0, 0, 0, 0, 517, 1, 0, 0, 0, 0, 519, 1, 0, 0, 0, 0, 521, 1, 0, 0, 0, 0, 523, 1, 0, 0, 0, 0, 525, 1, 0, 0, 0, 0, 527, 1, 0, 0, 0, 0, 529, 1, 0, 0, 0, 0, 531, 1, 0, 0, 0, 0, 533, 1, 0, 0, 0, 0, 535, 1, 0, 0, 0, 0, 537, 1, 0, 0, 0, 0, 539, 1, 0, 0, 0, 0, 541, 1, 0, 0, 0, 0, 543, 1, 0, 0, 0, 0, 545, 1, 0, 0, 0, 0, 547, 1, 0, 0, 0, 0, 549, 1, 0, 0, 0, 0, 551, 1, 0, 0, 0, 0, 553, 1, 0, 0, 0, 0, 555, 1, 0, 0, 0, 0, 557, 1, 0, 0, 0, 0, 559, 1, 0, 0, 0, 0, 561, 1, 0, 0, 0, 0, 563, 1, 0, 0, 0, 0, 565, 1, 0, 0, 0, 0, 567, 1, 0, 0, 0, 0, 569, 1, 0, 0, 0, 0, 571, 1, 0, 0, 0, 0, 573, 1, 0, 0, 0, 0, 575, 1, 0, 0, 0, 0, 577, 1, 0, 0, 0, 0, 579, 1, 0, 0, 0, 0, 581, 1, 0, 0, 0, 0, 583, 1, 0, 0, 0, 0, 585, 1, 0, 0, 0, 0, 587, 1, 0, 0, 0, 0, 589, 1, 0, 0, 0, 0, 591, 1, 0, 0, 0, 0, 593, 1, 0, 0, 0, 0, 595, 1, 0, 0, 0, 0, 597, 1, 0, 0, 0, 0, 599, 1, 0, 0, 0, 0, 601, 1, 0, 0, 0, 0, 603, 1, 0, 0, 0, 0, 605, 1, 0, 0, 0, 0, 607, 1, 0, 0, 0, 0, 609, 1, 0, 0, 0, 0, 611, 1, 0, 0, 0, 0, 613, 1, 0, 0, 0, 0, 615, 1, 0, 0, 0, 0, 617, 1, 0, 0, 0, 0, 619, 1, 0, 0, 0, 0, 621, 1, 0, 0, 0, 0, 623, 1, 0, 0, 0, 0, 625, 1, 0, 0, 0, 0, 627, 1, 0, 0, 0, 0, 629, 1, 0, 0, 0, 0, 631, 1, 0, 0, 0, 0, 633, 1, 0, 0, 0, 0, 635, 1, 0, 0, 0, 0, 637, 1, 0, 0, 0, 0, 639, 1, 0, 0, 0, 0, 641, 1, 0, 0, 0, 0, 643, 1, 0, 0, 0, 0, 645, 1, 0, 0, 0, 0, 647, 1, 0, 0, 0, 0, 649, 1, 0, 0, 0, 0, 651, 1, 0, 0, 0, 0, 653, 1, 0, 0, 0, 0, 655, 1, 0, 0, 0, 0, 657, 1, 0, 0, 0, 0, 659, 1, 0, 0, 0, 0, 661, 1, 0, 0, 0, 0, 663, 1, 0, 0, 0, 0, 665, 1, 0, 0, 0, 0, 667, 1, 0, 0, 0, 0, 669, 1, 0, 0, 0, 0, 685, 1, 0, 0, 0, 0, 687, 1, 0, 0, 0, 0, 689, 1, 0, 0, 0, 0, 691, 1, 0, 0, 0, 1, 693, 1, 0, 0, 0, 3, 695, 1, 0, 0, 0, 5, 697, 1, 0, 0, 0, 7, 699, 1, 0, 0, 0, 9, 701, 1, 0, 0, 0, 11, 706, 1, 0, 0, 0, 13, 709, 1, 0, 0, 0, 15, 712, 1, 0, 0, 0, 17, 714, 1, 0, 0, 0, 19, 716, 1, 0, 0, 0, 21, 718, 1, 0, 0, 0, 23, 720, 1, 0, 0, 0, 25, 722, 1, 0, 0, 0, 27, 724, 1, 0, 0, 0, 29, 727, 1, 0, 0, 0, 31, 730, 1, 0, 0, 0, 33, 732, 1, 0, 0, 0, 35, 734, 1, 0, 0, 0, 37, 741, 1, 0, 0, 0, 39, 745, 1, 0, 0, 0, 41, 751, 1, 0, 0, 0, 43, 757, 1, 0, 0, 0, 45, 761, 1, 0, 0, 0, 47, 767, 1, 0, 0, 0, 49, 775, 1, 0, 0, 0, 51, 779, 1, 0, 0, 0, 53, 783, 1, 0, 0, 0, 55, 789, 1, 0, 0, 0, 57, 792, 1, 0, 0, 0, 59, 796, 1, 0, 0, 0, 61, 799, 1, 0, 0, 0, 63, 813, 1, 0, 0, 0, 65, 819, 1, 0, 0, 0, 67, 829, 1, 0, 0, 0, 69, 837, 1, 0, 0, 0, 71, 842, 1, 0, 0, 0, 73, 845, 1, 0, 0, 0, 75, 850, 1, 0, 0, 0, 77, 857, 1, 0, 0, 0, 79, 865, 1, 0, 0, 0, 81, 870, 1, 0, 0, 0, 83, 875, 1, 0, 0, 0, 85, 883, 1, 0, 0, 0, 87, 892, 1, 0, 0, 0, 89, 899, 1, 0, 0, 0, 91, 907, 1, 0, 0, 0, 93, 915, 1, 0, 0, 0, 95, 922, 1, 0, 0, 0, 97, 932, 1, 0, 0, 0, 99, 944, 1, 0, 0, 0, 101, 955, 1, 0, 0, 0, 103, 961, 1, 0, 0, 0, 105, 973, 1, 0, 0, 0, 107, 980, 1, 0, 0, 0, 109, 986, 1, 0, 0, 0, 111, 991, 1, 0, 0, 0, 113, 999, 1, 0, 0, 0, 115, 1015, 1, 0, 0, 0, 117, 1028, 1, 0, 0, 0, 119, 1041, 1, 0, 0, 0, 121, 1054, 1, 0, 0, 0, 123, 1069, 1, 0, 0, 0, 125, 1082, 1, 0, 0, 0, 127, 1100, 1, 0, 0, 0, 129, 1113, 1, 0, 0, 0, 131, 1118, 1, 0, 0, 0, 133, 1123, 1, 0, 0, 0, 135, 1127, 1, 0, 0, 0, 137, 1138, 1, 0, 0, 0, 139, 1146, 1, 0, 0, 0, 141, 1154, 1, 0, 0, 0, 143, 1161, 1, 0, 0, 0, 145, 1169, 1, 0, 0, 0, 147, 1176, 1, 0, 0, 0, 149, 1181, 1, 0, 0, 0, 151, 1186, 1, 0, 0, 0, 153, 1195, 1, 0, 0, 0, 155, 1206, 1, 0, 0, 0, 157, 1220, 1, 0, 0, 0, 159, 1229, 1, 0, 0, 0, 161, 1241, 1, 0, 0, 0, 163, 1244, 1, 0, 0, 0, 165, 1251, 1, 0, 0, 0, 167, 1256, 1, 0, 0, 0, 169, 1261, 1, 0, 0, 0, 171, 1267, 1, 0, 0, 0, 173, 1274, 1, 0, 0, 0, 175, 1283, 1, 0, 0, 0, 177, 1287, 1, 0, 0, 0, 179, 1293, 1, 0, 0, 0, 181, 1300, 1, 0, 0, 0, 183, 1307, 1, 0, 0, 0, 185, 1317, 1, 0, 0, 0, 187, 1325, 1, 0, 0, 0, 189, 1332, 1, 0, 0, 0, 191, 1340, 1, 0, 0, 0, 193, 1348, 1, 0, 0, 0, 195, 1354, 1, 0, 0, 0, 197, 1360, 1, 0, 0, 0, 199, 1367, 1, 0, 0, 0, 201, 1373, 1, 0, 0, 0, 203, 1379, 1, 0, 0, 0, 205, 1389, 1, 0, 0, 0, 207, 1393, 1, 0, 0, 0, 209, 1400, 1, 0, 0, 0, 211, 1405, 1, 0, 0, 0, 213, 1410, 1, 0, 0, 0, 215, 1419, 1, 0, 0, 0, 217, 1429, 1, 0, 0, 0, 219, 1435, 1, 0, 0, 0, 221, 1441, 1, 0, 0, 0, 223, 1449, 1, 0, 0, 0, 225, 1456, 1, 0, 0, 0, 227, 1465, 1, 0, 0, 0, 229, 1471, 1, 0, 0, 0, 231, 1480, 1, 0, 0, 0, 233, 1487, 1, 0, 0, 0, 235, 1494, 1, 0, 0, 0, 237, 1499, 1, 0, 0, 0, 239, 1502, 1, 0, 0, 0, 241, 1509, 1, 0, 0, 0, 243, 1519, 1, 0, 0, 0, 245, 1522, 1, 0, 0, 0, 247, 1532, 1, 0, 0, 0, 249, 1540, 1, 0, 0, 0, 251, 1546, 1, 0, 0, 0, 253, 1552, 1, 0, 0, 0, 255, 1559, 1, 0, 0, 0, 257, 1569, 1, 0, 0, 0, 259, 1578, 1, 0, 0, 0, 261, 1583, 1, 0, 0, 0, 263, 1591, 1, 0, 0, 0, 265, 1594, 1, 0, 0, 0, 267, 1597, 1, 0, 0, 0, 269, 1607, 1, 0, 0, 0, 271, 1615, 1, 0, 0, 0, 273, 1620, 1, 0, 0, 0, 275, 1625, 1, 0, 0, 0, 277, 1636, 1, 0, 0, 0, 279, 1648, 1, 0, 0, 0, 281, 1660, 1, 0, 0, 0, 283, 1671, 1, 0, 0, 0, 285, 1682, 1, 0, 0, 0, 287, 1693, 1, 0, 0, 0, 289, 1698, 1, 0, 0, 0, 291, 1702, 1, 0, 0, 0, 293, 1707, 1, 0, 0, 0, 295, 1716, 1, 0, 0, 0, 297, 1721, 1, 0, 0, 0, 299, 1729, 1, 0, 0, 0, 301, 1737, 1, 0, 0, 0, 303, 1743, 1, 0, 0, 0, 305, 1748, 1, 0, 0, 0, 307, 1754, 1, 0, 0, 0, 309, 1759, 1, 0, 0, 0, 311, 1765, 1, 0, 0, 0, 313, 1773, 1, 0, 0, 0, 315, 1779, 1, 0, 0, 0, 317, 1789, 1, 0, 0, 0, 319, 1804, 1, 0, 0, 0, 321, 1812, 1, 0, 0, 0, 323, 1817, 1, 0, 0, 0, 325, 1821, 1, 0, 0, 0, 327, 1827, 1, 0, 0, 0, 329, 1835, 1, 0, 0, 0, 331, 1843, 1, 0, 0, 0, 333, 1859, 1, 0, 0, 0, 335, 1872, 1, 0, 0, 0, 337, 1881, 1, 0, 0, 0, 339, 1887, 1, 0, 0, 0, 341, 1894, 1, 0, 0, 0, 343, 1900, 1, 0, 0, 0, 345, 1908, 1, 0, 0, 0, 347, 1915, 1, 0, 0, 0, 349, 1920, 1, 0, 0, 0, 351, 1924, 1, 0, 0, 0, 353, 1928, 1, 0, 0, 0, 355, 1933, 1, 0, 0, 0, 357, 1938, 1, 0, 0, 0, 359, 1941, 1, 0, 0, 0, 361, 1946, 1, 0, 0, 0, 363, 1956, 1, 0, 0, 0, 365, 1960, 1, 0, 0, 0, 367, 1965, 1, 0, 0, 0, 369, 1972, 1, 0, 0, 0, 371, 1978, 1, 0, 0, 0, 373, 1985, 1, 0, 0, 0, 375, 1988, 1, 0, 0, 0, 377, 1995, 1, 0, 0, 0, 379, 2000, 1, 0, 0, 0, 381, 2003, 1, 0, 0, 0, 383, 2007, 1, 0, 0, 0, 385, 2012, 1, 0, 0, 0, 387, 2019, 1, 0, 0, 0, 389, 2022, 1, 0, 0, 0, 391, 2028, 1, 0, 0, 0, 393, 2039, 1, 0, 0, 0, 395, 2045, 1, 0, 0, 0, 397, 2052, 1, 0, 0, 0, 399, 2057, 1, 0, 0, 0, 401, 2066, 1, 0, 0, 0, 403, 2076, 1, 0, 0, 0, 405, 2087, 1, 0, 0, 0, 407, 2095, 1, 0, 0, 0, 409, 2100, 1, 0, 0, 0, 411, 2105, 1, 0, 0, 0, 413, 2113, 1, 0, 0, 0, 415, 2117, 1, 0, 0, 0, 417, 2124, 1, 0, 0, 0, 419, 2132, 1, 0, 0, 0, 421, 2137, 1, 0, 0, 0, 423, 2146, 1, 0, 0, 0, 425, 2156, 1, 0, 0, 0, 427, 2166, 1, 0, 0, 0, 429, 2174, 1, 0, 0, 0, 431, 2185, 1, 0, 0, 0, 433, 2196, 1, 0, 0, 0, 435, 2202, 1, 0, 0, 0, 437, 2209, 1, 0, 0, 0, 439, 2215, 1, 0, 0, 0, 441, 2220, 1, 0, 0, 0, 443, 2230, 1, 0, 0, 0, 445, 2238, 1, 0, 0, 0, 447, 2245, 1, 0, 0, 0, 449, 2252, 1, 0, 0, 0, 451, 2263, 1, 0, 0, 0, 453, 2271, 1, 0, 0, 0, 455, 2277, 1, 0, 0, 0, 457, 2285, 1, 0, 0, 0, 459, 2294, 1, 0, 0, 0, 461, 2301, 1, 0, 0, 0, 463, 2311, 1, 0, 0, 0, 465, 2319, 1, 0, 0, 0, 467, 2326, 1, 0, 0, 0, 469, 2332, 1, 0, 0, 0, 471, 2337, 1, 0, 0, 0, 473, 2343, 1, 0, 0, 0, 475, 2352, 1, 0, 0, 0, 477, 2359, 1, 0, 0, 0, 479, 2363, 1, 0, 0, 0, 481, 2368, 1, 0, 0, 0, 483, 2376, 1, 0, 0, 0, 485, 2383, 1, 0, 0, 0, 487, 2390, 1, 0, 0, 0, 489, 2398, 1, 0, 0, 0, 491, 2405, 1, 0, 0, 0, 493, 2414, 1, 0, 0, 0, 495, 2419, 1, 0, 0, 0, 497, 2426, 1, 0, 0, 0, 499, 2439, 1, 0, 0, 0, 501, 2447, 1, 0, 0, 0, 503, 2451, 1, 0, 0, 0, 505, 2456, 1, 0, 0, 0, 507, 2461, 1, 0, 0, 0, 509, 2466, 1, 0, 0, 0, 511, 2472, 1, 0, 0, 0, 513, 2478, 1, 0, 0, 0, 515, 2485, 1, 0, 0, 0, 517, 2495, 1, 0, 0, 0, 519, 2502, 1, 0, 0, 0, 521, 2508, 1, 0, 0, 0, 523, 2515, 1, 0, 0, 0, 525, 2527, 1, 0, 0, 0, 527, 2532, 1, 0, 0, 0, 529, 2539, 1, 0, 0, 0, 531, 2544, 1, 0, 0, 0, 533, 2549, 1, 0, 0, 0, 535, 2554, 1, 0, 0, 0, 537, 2564, 1, 0, 0, 0, 539, 2567, 1, 0, 0, 0, 541, 2576, 1, 0, 0, 0, 543, 2588, 1, 0, 0, 0, 545, 2593, 1, 0, 0, 0, 547, 2598, 1, 0, 0, 0, 549, 2607, 1, 0, 0, 0, 551, 2616, 1, 0, 0, 0, 553, 2621, 1, 0, 0, 0, 555, 2629, 1, 0, 0, 0, 557, 2639, 1, 0, 0, 0, 559, 2651, 1, 0, 0, 0, 561, 2665, 1, 0, 0, 0, 563, 2671, 1, 0, 0, 0, 565, 2678, 1, 0, 0, 0, 567, 2686, 1, 0, 0, 0, 569, 2696, 1, 0, 0, 0, 571, 2703, 1, 0, 0, 0, 573, 2709, 1, 0, 0, 0, 575, 2716, 1, 0, 0, 0, 577, 2720, 1, 0, 0, 0, 579, 2725, 1, 0, 0, 0, 581, 2731, 1, 0, 0, 0, 583, 2737, 1, 0, 0, 0, 585, 2743, 1, 0, 0, 0, 587, 2748, 1, 0, 0, 0, 589, 2757, 1, 0, 0, 0, 591, 2763, 1, 0, 0, 0, 593, 2770, 1, 0, 0, 0, 595, 2778, 1, 0, 0, 0, 597, 2786, 1, 0, 0, 0, 599, 2791, 1, 0, 0, 0, 601, 2796, 1, 0, 0, 0, 603, 2802, 1, 0, 0, 0, 605, 2808, 1, 0, 0, 0, 607, 2815, 1, 0, 0, 0, 609, 2820, 1, 0, 0, 0, 611, 2827, 1, 0, 0, 0, 613, 2835, 1, 0, 0, 0, 615, 2840, 1, 0, 0, 0, 617, 2848, 1, 0, 0, 0, 619, 2854, 1, 0, 0, 0, 621, 2859, 1, 0, 0, 0, 623, 2864, 1, 0, 0, 0, 625, 2870, 1, 0, 0, 0, 627, 2872, 1, 0, 0, 0, 629, 2874, 1, 0, 0, 0, 631, 2877, 1, 0, 0, 0, 633, 2879, 1, 0, 0, 0, 635, 2882, 1, 0, 0, 0, 637, 2884, 1, 0, 0, 0, 639, 2886, 1, 0, 0, 0, 641, 2888, 1, 0, 0, 0, 643, 2890, 1, 0, 0, 0, 645, 2892, 1, 0, 0, 0, 647, 2895, 1, 0, 0, 0, 649, 2897, 1, 0, 0, 0, 651, 2899, 1, 0, 0, 0, 653, 2910, 1, 0, 0, 0, 655, 2924, 1, 0, 0, 0, 657, 2939, 1, 0, 0, 0, 659, 2948, 1, 0, 0, 0, 661, 2974, 1, 0, 0, 0, 663, 2978, 1, 0, 0, 0, 665, 2988, 1, 0, 0, 0, 667, 2996, 1, 0, 0, 0, 669, 3007, 1, 0, 0, 0, 671, 3018, 1, 0, 0, 0, 673, 3028, 1, 0, 0, 0, 675, 3042, 1, 0, 0, 0, 677, 3053, 1, 0, 0, 0, 679, 3064, 1, 0, 0, 0, 681, 3073, 1, 0, 0, 0, 683, 3075, 1, 0, 0, 0, 685, 3077, 1, 0, 0, 0, 687, 3094, 1, 0, 0, 0, 689, 3109, 1, 0, 0, 0, 691, 3115, 1, 0, 0, 0, 693, 694, 5, 40, 0, 0, 694, 2, 1, 0, 0, 0, 695, 696, 5, 41, 0, 0, 696, 4, 1, 0, 0, 0, 697, 698, 5, 44, 0, 0, 698, 6, 1, 0, 0, 0, 699, 700, 5, 46, 0, 0, 700, 8, 1, 0, 0, 0, 701, 702, 7, 0, 0, 0, 702, 703, 7, 1, 0, 0, 703, 704, 7, 2, 0, 0, 704, 705, 7, 3, 0, 0, 705, 10, 1, 0, 0, 0, 706, 707, 5, 61, 0, 0, 707, 708, 5, 62, 0, 0, 708, 12, 1, 0, 0, 0, 709, 710, 5, 45, 0, 0, 710, 711, 5, 62, 0, 0, 711, 14, 1, 0, 0, 0, 712, 713, 5, 91, 0, 0, 713, 16, 1, 0, 0, 0, 714, 715, 5, 93, 0, 0, 715, 18, 1, 0, 0, 0, 716, 717, 5, 58, 0, 0, 717, 20, 1, 0, 0, 0, 718, 719, 5, 124, 0, 0, 719, 22, 1, 0, 0, 0, 720, 721, 5, 94, 0, 0, 721, 24, 1, 0, 0, 0, 722, 723, 5, 36, 0, 0, 723, 26, 1, 0, 0, 0, 724, 725, 5, 123, 0, 0, 725, 726, 5, 45, 0, 0, 726, 28, 1, 0, 0, 0, 727, 728, 5, 45, 0, 0, 728, 729, 5, 125, 0, 0, 729, 30, 1, 0, 0, 0, 730, 731, 5, 123, 0, 0, 731, 32, 1, 0, 0, 0, 732, 733, 5, 125, 0, 0, 733, 34, 1, 0, 0, 0, 734, 735, 7, 4, 0, 0, 735, 736, 7, 5, 0, 0, 736, 737, 7, 0, 0, 0, 737, 738, 7, 6, 0, 0, 738, 739, 7, 7, 0, 0, 739, 740, 7, 8, 0, 0, 740, 36, 1, 0, 0, 0, 741, 742, 7, 4, 0, 0, 742, 743, 7, 9, 0, 0, 743, 744, 7, 9, 0, 0, 744, 38, 1, 0, 0, 0, 745, 746, 7, 4, 0, 0, 746, 747, 7, 9, 0, 0, 747, 748, 7, 10, 0, 0, 748, 749, 7, 2, 0, 0, 749, 750, 7, 7, 0, 0, 750, 40, 1, 0, 0, 0, 751, 752, 7, 4, 0, 0, 752, 753, 7, 11, 0, 0, 753, 754, 7, 8, 0, 0, 754, 755, 7, 6, 0, 0, 755, 756, 7, 12, 0, 0, 756, 42, 1, 0, 0, 0, 757, 758, 7, 4, 0, 0, 758, 759, 7, 13, 0, 0, 759, 760, 7, 13, 0, 0, 760, 44, 1, 0, 0, 0, 761, 762, 7, 4, 0, 0, 762, 763, 7, 13, 0, 0, 763, 764, 7, 8, 0, 0, 764, 765, 7, 6, 0, 0, 765, 766, 7, 12, 0, 0, 766, 46, 1, 0, 0, 0, 767, 768, 7, 4, 0, 0, 768, 769, 7, 7, 0, 0, 769, 770, 7, 4, 0, 0, 770, 771, 7, 13, 0, 0, 771, 772, 7, 14, 0, 0, 772, 773, 7, 15, 0, 0, 773, 774, 7, 6, 0, 0, 774, 48, 1, 0, 0, 0, 775, 776, 7, 4, 0, 0, 776, 777, 7, 7, 0, 0, 777, 778, 7, 9, 0, 0, 778, 50, 1, 0, 0, 0, 779, 780, 7, 4, 0, 0, 780, 781, 7, 7, 0, 0, 781, 782, 7, 14, 0, 0, 782, 52, 1, 0, 0, 0, 783, 784, 7, 4, 0, 0, 784, 785, 7, 12, 0, 0, 785, 786, 7, 12, 0, 0, 786, 787, 7, 4, 0, 0, 787, 788, 7, 14, 0, 0, 788, 54, 1, 0, 0, 0, 789, 790, 7, 4, 0, 0, 790, 791, 7, 0, 0, 0, 791, 56, 1, 0, 0, 0, 792, 793, 7, 4, 0, 0, 793, 794, 7, 0, 0, 0, 794, 795, 7, 16, 0, 0, 795, 58, 1, 0, 0, 0, 796, 797, 7, 4, 0, 0, 797, 798, 7, 8, 0, 0, 798, 60, 1, 0, 0, 0, 799, 800, 7, 4, 0, 0, 800, 801, 7, 17, 0, 0, 801, 802, 7, 8, 0, 0, 802, 803, 7, 18, 0, 0, 803, 804, 7, 19, 0, 0, 804, 805, 7, 12, 0, 0, 805, 806, 7, 2, 0, 0, 806, 807, 7, 15, 0, 0, 807, 808, 7, 4, 0, 0, 808, 809, 7, 8, 0, 0, 809, 810, 7, 2, 0, 0, 810, 811, 7, 19, 0, 0, 811, 812, 7, 7, 0, 0, 812, 62, 1, 0, 0, 0, 813, 814, 7, 5, 0, 0, 814, 815, 7, 6, 0, 0, 815, 816, 7, 20, 0, 0, 816, 817, 7, 2, 0, 0, 817, 818, 7, 7, 0, 0, 818, 64, 1, 0, 0, 0, 819, 820, 7, 5, 0, 0, 820, 821, 7, 6, 0, 0, 821, 822, 7, 12, 0, 0, 822, 823, 7, 7, 0, 0, 823, 824, 7, 19, 0, 0, 824, 825, 7, 17, 0, 0, 825, 826, 7, 13, 0, 0, 826, 827, 7, 13, 0, 0, 827, 828, 7, 2, 0, 0, 828, 66, 1, 0, 0, 0, 829, 830, 7, 5, 0, 0, 830, 831, 7, 6, 0, 0, 831, 832, 7, 8, 0, 0, 832, 833, 7, 21, 0, 0, 833, 834, 7, 6, 0, 0, 834, 835, 7, 6, 0, 0, 835, 836, 7, 7, 0, 0, 836, 68, 1, 0, 0, 0, 837, 838, 7, 5, 0, 0, 838, 839, 7, 19, 0, 0, 839, 840, 7, 8, 0, 0, 840, 841, 7, 18, 0, 0, 841, 70, 1, 0, 0, 0, 842, 843, 7, 5, 0, 0, 843, 844, 7, 14, 0, 0, 844, 72, 1, 0, 0, 0, 845, 846, 7, 16, 0, 0, 846, 847, 7, 4, 0, 0, 847, 848, 7, 13, 0, 0, 848, 849, 7, 13, 0, 0, 849, 74, 1, 0, 0, 0, 850, 851, 7, 16, 0, 0, 851, 852, 7, 4, 0, 0, 852, 853, 7, 13, 0, 0, 853, 854, 7, 13, 0, 0, 854, 855, 7, 6, 0, 0, 855, 856, 7, 9, 0, 0, 856, 76, 1, 0, 0, 0, 857, 858, 7, 16, 0, 0, 858, 859, 7, 4, 0, 0, 859, 860, 7, 0, 0, 0, 860, 861, 7, 16, 0, 0, 861, 862, 7, 4, 0, 0, 862, 863, 7, 9, 0, 0, 863, 864, 7, 6, 0, 0, 864, 78, 1, 0, 0, 0, 865, 866, 7, 16, 0, 0, 866, 867, 7, 4, 0, 0, 867, 868, 7, 0, 0, 0, 868, 869, 7, 6, 0, 0, 869, 80, 1, 0, 0, 0, 870, 871, 7, 16, 0, 0, 871, 872, 7, 4, 0, 0, 872, 873, 7, 0, 0, 0, 873, 874, 7, 8, 0, 0, 874, 82, 1, 0, 0, 0, 875, 876, 7, 16, 0, 0, 876, 877, 7, 4, 0, 0, 877, 878, 7, 8, 0, 0, 878, 879, 7, 4, 0, 0, 879, 880, 7, 13, 0, 0, 880, 881, 7, 19, 0, 0, 881, 882, 7, 20, 0, 0, 882, 84, 1, 0, 0, 0, 883, 884, 7, 16, 0, 0, 884, 885, 7, 4, 0, 0, 885, 886, 7, 8, 0, 0, 886, 887, 7, 4, 0, 0, 887, 888, 7, 13, 0, 0, 888, 889, 7, 19, 0, 0, 889, 890, 7, 20, 0, 0, 890, 891, 7, 0, 0, 0, 891, 86, 1, 0, 0, 0, 892, 893, 7, 16, 0, 0, 893, 894, 7, 19, 0, 0, 894, 895, 7, 13, 0, 0, 895, 896, 7, 17, 0, 0, 896, 897, 7, 10, 0, 0, 897, 898, 7, 7, 0, 0, 898, 88, 1, 0, 0, 0, 899, 900, 7, 16, 0, 0, 900, 901, 7, 19, 0, 0, 901, 902, 7, 13, 0, 0, 902, 903, 7, 17, 0, 0, 903, 904, 7, 10, 0, 0, 904, 905, 7, 7, 0, 0, 905, 906, 7, 0, 0, 0, 906, 90, 1, 0, 0, 0, 907, 908, 7, 16, 0, 0, 908, 909, 7, 19, 0, 0, 909, 910, 7, 10, 0, 0, 910, 911, 7, 10, 0, 0, 911, 912, 7, 6, 0, 0, 912, 913, 7, 7, 0, 0, 913, 914, 7, 8, 0, 0, 914, 92, 1, 0, 0, 0, 915, 916, 7, 16, 0, 0, 916, 917, 7, 19, 0, 0, 917, 918, 7, 10, 0, 0, 918, 919, 7, 10, 0, 0, 919, 920, 7, 2, 0, 0, 920, 921, 7, 8, 0, 0, 921, 94, 1, 0, 0, 0, 922, 923, 7, 16, 0, 0, 923, 924, 7, 19, 0, 0, 924, 925, 7, 10, 0, 0, 925, 926, 7, 10, 0, 0, 926, 927, 7, 2, 0, 0, 927, 928, 7, 8, 0, 0, 928, 929, 7, 8, 0, 0, 929, 930, 7, 6, 0, 0, 930, 931, 7, 9, 0, 0, 931, 96, 1, 0, 0, 0, 932, 933, 7, 16, 0, 0, 933, 934, 7, 19, 0, 0, 934, 935, 7, 7, 0, 0, 935, 936, 7, 9, 0, 0, 936, 937, 7, 2, 0, 0, 937, 938, 7, 8, 0, 0, 938, 939, 7, 2, 0, 0, 939, 940, 7, 19, 0, 0, 940, 941, 7, 7, 0, 0, 941, 942, 7, 4, 0, 0, 942, 943, 7, 13, 0, 0, 943, 98, 1, 0, 0, 0, 944, 945, 7, 16, 0, 0, 945, 946, 7, 19, 0, 0, 946, 947, 7, 7, 0, 0, 947, 948, 7, 0, 0, 0, 948, 949, 7, 8, 0, 0, 949, 950, 7, 12, 0, 0, 950, 951, 7, 4, 0, 0, 951, 952, 7, 2, 0, 0, 952, 953, 7, 7, 0, 0, 953, 954, 7, 8, 0, 0, 954, 100, 1, 0, 0, 0, 955, 956, 7, 16, 0, 0, 956, 957, 7, 19, 0, 0, 957, 958, 7, 17, 0, 0, 958, 959, 7, 7, 0, 0, 959, 960, 7, 8, 0, 0, 960, 102, 1, 0, 0, 0, 961, 962, 7, 16, 0, 0, 962, 963, 7, 19, 0, 0, 963, 964, 7, 3, 0, 0, 964, 965, 7, 4, 0, 0, 965, 966, 7, 12, 0, 0, 966, 967, 7, 8, 0, 0, 967, 968, 7, 2, 0, 0, 968, 969, 7, 8, 0, 0, 969, 970, 7, 2, 0, 0, 970, 971, 7, 19, 0, 0, 971, 972, 7, 7, 0, 0, 972, 104, 1, 0, 0, 0, 973, 974, 7, 16, 0, 0, 974, 975, 7, 12, 0, 0, 975, 976, 7, 6, 0, 0, 976, 977, 7, 4, 0, 0, 977, 978, 7, 8, 0, 0, 978, 979, 7, 6, 0, 0, 979, 106, 1, 0, 0, 0, 980, 981, 7, 16, 0, 0, 981, 982, 7, 12, 0, 0, 982, 983, 7, 19, 0, 0, 983, 984, 7, 0, 0, 0, 984, 985, 7, 0, 0, 0, 985, 108, 1, 0, 0, 0, 986, 987, 7, 16, 0, 0, 987, 988, 7, 17, 0, 0, 988, 989, 7, 5, 0, 0, 989, 990, 7, 6, 0, 0, 990, 110, 1, 0, 0, 0, 991, 992, 7, 16, 0, 0, 992, 993, 7, 17, 0, 0, 993, 994, 7, 12, 0, 0, 994, 995, 7, 12, 0, 0, 995, 996, 7, 6, 0, 0, 996, 997, 7, 7, 0, 0, 997, 998, 7, 8, 0, 0, 998, 112, 1, 0, 0, 0, 999, 1000, 7, 16, 0, 0, 1000, 1001, 7, 17, 0, 0, 1001, 1002, 7, 12, 0, 0, 1002, 1003, 7, 12, 0, 0, 1003, 1004, 7, 6, 0, 0, 1004, 1005, 7, 7, 0, 0, 1005, 1006, 7, 8, 0, 0, 1006, 1007, 5, 95, 0, 0, 1007, 1008, 7, 16, 0, 0, 1008, 1009, 7, 4, 0, 0, 1009, 1010, 7, 8, 0, 0, 1010, 1011, 7, 4, 0, 0, 1011, 1012, 7, 13, 0, 0, 1012, 1013, 7, 19, 0, 0, 1013, 1014, 7, 20, 0, 0, 1014, 114, 1, 0, 0, 0, 1015, 1016, 7, 16, 0, 0, 1016, 1017, 7, 17, 0, 0, 1017, 1018, 7, 12, 0, 0, 1018, 1019, 7, 12, 0, 0, 1019, 1020, 7, 6, 0, 0, 1020, 1021, 7, 7, 0, 0, 1021, 1022, 7, 8, 0, 0, 1022, 1023, 5, 95, 0, 0, 1023, 1024, 7, 9, 0, 0, 1024, 1025, 7, 4, 0, 0, 1025, 1026, 7, 8, 0, 0, 1026, 1027, 7, 6, 0, 0, 1027, 116, 1, 0, 0, 0, 1028, 1029, 7, 16, 0, 0, 1029, 1030, 7, 17, 0, 0, 1030, 1031, 7, 12, 0, 0, 1031, 1032, 7, 12, 0, 0, 1032, 1033, 7, 6, 0, 0, 1033, 1034, 7, 7, 0, 0, 1034, 1035, 7, 8, 0, 0, 1035, 1036, 5, 95, 0, 0, 1036, 1037, 7, 3, 0, 0, 1037, 1038, 7, 4, 0, 0, 1038, 1039, 7, 8, 0, 0, 1039, 1040, 7, 18, 0, 0, 1040, 118, 1, 0, 0, 0, 1041, 1042, 7, 16, 0, 0, 1042, 1043, 7, 17, 0, 0, 1043, 1044, 7, 12, 0, 0, 1044, 1045, 7, 12, 0, 0, 1045, 1046, 7, 6, 0, 0, 1046, 1047, 7, 7, 0, 0, 1047, 1048, 7, 8, 0, 0, 1048, 1049, 5, 95, 0, 0, 1049, 1050, 7, 12, 0, 0, 1050, 1051, 7, 19, 0, 0, 1051, 1052, 7, 13, 0, 0, 1052, 1053, 7, 6, 0, 0, 1053, 120, 1, 0, 0, 0, 1054, 1055, 7, 16, 0, 0, 1055, 1056, 7, 17, 0, 0, 1056, 1057, 7, 12, 0, 0, 1057, 1058, 7, 12, 0, 0, 1058, 1059, 7, 6, 0, 0, 1059, 1060, 7, 7, 0, 0, 1060, 1061, 7, 8, 0, 0, 1061, 1062, 5, 95, 0, 0, 1062, 1063, 7, 0, 0, 0, 1063, 1064, 7, 16, 0, 0, 1064, 1065, 7, 18, 0, 0, 1065, 1066, 7, 6, 0, 0, 1066, 1067, 7, 10, 0, 0, 1067, 1068, 7, 4, 0, 0, 1068, 122, 1, 0, 0, 0, 1069, 1070, 7, 16, 0, 0, 1070, 1071, 7, 17, 0, 0, 1071, 1072, 7, 12, 0, 0, 1072, 1073, 7, 12, 0, 0, 1073, 1074, 7, 6, 0, 0, 1074, 1075, 7, 7, 0, 0, 1075, 1076, 7, 8, 0, 0, 1076, 1077, 5, 95, 0, 0, 1077, 1078, 7, 8, 0, 0, 1078, 1079, 7, 2, 0, 0, 1079, 1080, 7, 10, 0, 0, 1080, 1081, 7, 6, 0, 0, 1081, 124, 1, 0, 0, 0, 1082, 1083, 7, 16, 0, 0, 1083, 1084, 7, 17, 0, 0, 1084, 1085, 7, 12, 0, 0, 1085, 1086, 7, 12, 0, 0, 1086, 1087, 7, 6, 0, 0, 1087, 1088, 7, 7, 0, 0, 1088, 1089, 7, 8, 0, 0, 1089, 1090, 5, 95, 0, 0, 1090, 1091, 7, 8, 0, 0, 1091, 1092, 7, 2, 0, 0, 1092, 1093, 7, 10, 0, 0, 1093, 1094, 7, 6, 0, 0, 1094, 1095, 7, 0, 0, 0, 1095, 1096, 7, 8, 0, 0, 1096, 1097, 7, 4, 0, 0, 1097, 1098, 7, 10, 0, 0, 1098, 1099, 7, 3, 0, 0, 1099, 126, 1, 0, 0, 0, 1100, 1101, 7, 16, 0, 0, 1101, 1102, 7, 17, 0, 0, 1102, 1103, 7, 12, 0, 0, 1103, 1104, 7, 12, 0, 0, 1104, 1105, 7, 6, 0, 0, 1105, 1106, 7, 7, 0, 0, 1106, 1107, 7, 8, 0, 0, 1107, 1108, 5, 95, 0, 0, 1108, 1109, 7, 17, 0, 0, 1109, 1110, 7, 0, 0, 0, 1110, 1111, 7, 6, 0, 0, 1111, 1112, 7, 12, 0, 0, 1112, 128, 1, 0, 0, 0, 1113, 1114, 7, 9, 0, 0, 1114, 1115, 7, 4, 0, 0, 1115, 1116, 7, 8, 0, 0, 1116, 1117, 7, 4, 0, 0, 1117, 130, 1, 0, 0, 0, 1118, 1119, 7, 9, 0, 0, 1119, 1120, 7, 4, 0, 0, 1120, 1121, 7, 8, 0, 0, 1121, 1122, 7, 6, 0, 0, 1122, 132, 1, 0, 0, 0, 1123, 1124, 7, 9, 0, 0, 1124, 1125, 7, 4, 0, 0, 1125, 1126, 7, 14, 0, 0, 1126, 134, 1, 0, 0, 0, 1127, 1128, 7, 9, 0, 0, 1128, 1129, 7, 6, 0, 0, 1129, 1130, 7, 4, 0, 0, 1130, 1131, 7, 13, 0, 0, 1131, 1132, 7, 13, 0, 0, 1132, 1133, 7, 19, 0, 0, 1133, 1134, 7, 16, 0, 0, 1134, 1135, 7, 4, 0, 0, 1135, 1136, 7, 8, 0, 0, 1136, 1137, 7, 6, 0, 0, 1137, 136, 1, 0, 0, 0, 1138, 1139, 7, 9, 0, 0, 1139, 1140, 7, 6, 0, 0, 1140, 1141, 7, 16, 0, 0, 1141, 1142, 7, 13, 0, 0, 1142, 1143, 7, 4, 0, 0, 1143, 1144, 7, 12, 0, 0, 1144, 1145, 7, 6, 0, 0, 1145, 138, 1, 0, 0, 0, 1146, 1147, 7, 9, 0, 0, 1147, 1148, 7, 6, 0, 0, 1148, 1149, 7, 11, 0, 0, 1149, 1150, 7, 4, 0, 0, 1150, 1151, 7, 17, 0, 0, 1151, 1152, 7, 13, 0, 0, 1152, 1153, 7, 8, 0, 0, 1153, 140, 1, 0, 0, 0, 1154, 1155, 7, 9, 0, 0, 1155, 1156, 7, 6, 0, 0, 1156, 1157, 7, 11, 0, 0, 1157, 1158, 7, 2, 0, 0, 1158, 1159, 7, 7, 0, 0, 1159, 1160, 7, 6, 0, 0, 1160, 142, 1, 0, 0, 0, 1161, 1162, 7, 9, 0, 0, 1162, 1163, 7, 6, 0, 0, 1163, 1164, 7, 11, 0, 0, 1164, 1165, 7, 2, 0, 0, 1165, 1166, 7, 7, 0, 0, 1166, 1167, 7, 6, 0, 0, 1167, 1168, 7, 12, 0, 0, 1168, 144, 1, 0, 0, 0, 1169, 1170, 7, 9, 0, 0, 1170, 1171, 7, 6, 0, 0, 1171, 1172, 7, 13, 0, 0, 1172, 1173, 7, 6, 0, 0, 1173, 1174, 7, 8, 0, 0, 1174, 1175, 7, 6, 0, 0, 1175, 146, 1, 0, 0, 0, 1176, 1177, 7, 9, 0, 0, 1177, 1178, 7, 6, 0, 0, 1178, 1179, 7, 7, 0, 0, 1179, 1180, 7, 14, 0, 0, 1180, 148, 1, 0, 0, 0, 1181, 1182, 7, 9, 0, 0, 1182, 1183, 7, 6, 0, 0, 1183, 1184, 7, 0, 0, 0, 1184, 1185, 7, 16, 0, 0, 1185, 150, 1, 0, 0, 0, 1186, 1187, 7, 9, 0, 0, 1187, 1188, 7, 6, 0, 0, 1188, 1189, 7, 0, 0, 0, 1189, 1190, 7, 16, 0, 0, 1190, 1191, 7, 12, 0, 0, 1191, 1192, 7, 2, 0, 0, 1192, 1193, 7, 5, 0, 0, 1193, 1194, 7, 6, 0, 0, 1194, 152, 1, 0, 0, 0, 1195, 1196, 7, 9, 0, 0, 1196, 1197, 7, 6, 0, 0, 1197, 1198, 7, 0, 0, 0, 1198, 1199, 7, 16, 0, 0, 1199, 1200, 7, 12, 0, 0, 1200, 1201, 7, 2, 0, 0, 1201, 1202, 7, 3, 0, 0, 1202, 1203, 7, 8, 0, 0, 1203, 1204, 7, 19, 0, 0, 1204, 1205, 7, 12, 0, 0, 1205, 154, 1, 0, 0, 0, 1206, 1207, 7, 9, 0, 0, 1207, 1208, 7, 6, 0, 0, 1208, 1209, 7, 8, 0, 0, 1209, 1210, 7, 6, 0, 0, 1210, 1211, 7, 12, 0, 0, 1211, 1212, 7, 10, 0, 0, 1212, 1213, 7, 2, 0, 0, 1213, 1214, 7, 7, 0, 0, 1214, 1215, 7, 2, 0, 0, 1215, 1216, 7, 0, 0, 0, 1216, 1217, 7, 8, 0, 0, 1217, 1218, 7, 2, 0, 0, 1218, 1219, 7, 16, 0, 0, 1219, 156, 1, 0, 0, 0, 1220, 1221, 7, 9, 0, 0, 1221, 1222, 7, 2, 0, 0, 1222, 1223, 7, 0, 0, 0, 1223, 1224, 7, 8, 0, 0, 1224, 1225, 7, 2, 0, 0, 1225, 1226, 7, 7, 0, 0, 1226, 1227, 7, 16, 0, 0, 1227, 1228, 7, 8, 0, 0, 1228, 158, 1, 0, 0, 0, 1229, 1230, 7, 9, 0, 0, 1230, 1231, 7, 2, 0, 0, 1231, 1232, 7, 0, 0, 0, 1232, 1233, 7, 8, 0, 0, 1233, 1234, 7, 12, 0, 0, 1234, 1235, 7, 2, 0, 0, 1235, 1236, 7, 5, 0, 0, 1236, 1237, 7, 17, 0, 0, 1237, 1238, 7, 8, 0, 0, 1238, 1239, 7, 6, 0, 0, 1239, 1240, 7, 9, 0, 0, 1240, 160, 1, 0, 0, 0, 1241, 1242, 7, 9, 0, 0, 1242, 1243, 7, 19, 0, 0, 1243, 162, 1, 0, 0, 0, 1244, 1245, 7, 9, 0, 0, 1245, 1246, 7, 19, 0, 0, 1246, 1247, 7, 17, 0, 0, 1247, 1248, 7, 5, 0, 0, 1248, 1249, 7, 13, 0, 0, 1249, 1250, 7, 6, 0, 0, 1250, 164, 1, 0, 0, 0, 1251, 1252, 7, 9, 0, 0, 1252, 1253, 7, 12, 0, 0, 1253, 1254, 7, 19, 0, 0, 1254, 1255, 7, 3, 0, 0, 1255, 166, 1, 0, 0, 0, 1256, 1257, 7, 6, 0, 0, 1257, 1258, 7, 13, 0, 0, 1258, 1259, 7, 0, 0, 0, 1259, 1260, 7, 6, 0, 0, 1260, 168, 1, 0, 0, 0, 1261, 1262, 7, 6, 0, 0, 1262, 1263, 7, 10, 0, 0, 1263, 1264, 7, 3, 0, 0, 1264, 1265, 7, 8, 0, 0, 1265, 1266, 7, 14, 0, 0, 1266, 170, 1, 0, 0, 0, 1267, 1268, 7, 6, 0, 0, 1268, 1269, 7, 13, 0, 0, 1269, 1270, 7, 0, 0, 0, 1270, 1271, 7, 6, 0, 0, 1271, 1272, 7, 2, 0, 0, 1272, 1273, 7, 11, 0, 0, 1273, 172, 1, 0, 0, 0, 1274, 1275, 7, 6, 0, 0, 1275, 1276, 7, 7, 0, 0, 1276, 1277, 7, 16, 0, 0, 1277, 1278, 7, 19, 0, 0, 1278, 1279, 7, 9, 0, 0, 1279, 1280, 7, 2, 0, 0, 1280, 1281, 7, 7, 0, 0, 1281, 1282, 7, 20, 0, 0, 1282, 174, 1, 0, 0, 0, 1283, 1284, 7, 6, 0, 0, 1284, 1285, 7, 7, 0, 0, 1285, 1286, 7, 9, 0, 0, 1286, 176, 1, 0, 0, 0, 1287, 1288, 7, 6, 0, 0, 1288, 1289, 7, 12, 0, 0, 1289, 1290, 7, 12, 0, 0, 1290, 1291, 7, 19, 0, 0, 1291, 1292, 7, 12, 0, 0, 1292, 178, 1, 0, 0, 0, 1293, 1294, 7, 6, 0, 0, 1294, 1295, 7, 0, 0, 0, 1295, 1296, 7, 16, 0, 0, 1296, 1297, 7, 4, 0, 0, 1297, 1298, 7, 3, 0, 0, 1298, 1299, 7, 6, 0, 0, 1299, 180, 1, 0, 0, 0, 1300, 1301, 7, 6, 0, 0, 1301, 1302, 7, 22, 0, 0, 1302, 1303, 7, 16, 0, 0, 1303, 1304, 7, 6, 0, 0, 1304, 1305, 7, 3, 0, 0, 1305, 1306, 7, 8, 0, 0, 1306, 182, 1, 0, 0, 0, 1307, 1308, 7, 6, 0, 0, 1308, 1309, 7, 22, 0, 0, 1309, 1310, 7, 16, 0, 0, 1310, 1311, 7, 13, 0, 0, 1311, 1312, 7, 17, 0, 0, 1312, 1313, 7, 9, 0, 0, 1313, 1314, 7, 2, 0, 0, 1314, 1315, 7, 7, 0, 0, 1315, 1316, 7, 20, 0, 0, 1316, 184, 1, 0, 0, 0, 1317, 1318, 7, 6, 0, 0, 1318, 1319, 7, 22, 0, 0, 1319, 1320, 7, 6, 0, 0, 1320, 1321, 7, 16, 0, 0, 1321, 1322, 7, 17, 0, 0, 1322, 1323, 7, 8, 0, 0, 1323, 1324, 7, 6, 0, 0, 1324, 186, 1, 0, 0, 0, 1325, 1326, 7, 6, 0, 0, 1326, 1327, 7, 22, 0, 0, 1327, 1328, 7, 2, 0, 0, 1328, 1329, 7, 0, 0, 0, 1329, 1330, 7, 8, 0, 0, 1330, 1331, 7, 0, 0, 0, 1331, 188, 1, 0, 0, 0, 1332, 1333, 7, 6, 0, 0, 1333, 1334, 7, 22, 0, 0, 1334, 1335, 7, 3, 0, 0, 1335, 1336, 7, 13, 0, 0, 1336, 1337, 7, 4, 0, 0, 1337, 1338, 7, 2, 0, 0, 1338, 1339, 7, 7, 0, 0, 1339, 190, 1, 0, 0, 0, 1340, 1341, 7, 6, 0, 0, 1341, 1342, 7, 22, 0, 0, 1342, 1343, 7, 8, 0, 0, 1343, 1344, 7, 12, 0, 0, 1344, 1345, 7, 4, 0, 0, 1345, 1346, 7, 16, 0, 0, 1346, 1347, 7, 8, 0, 0, 1347, 192, 1, 0, 0, 0, 1348, 1349, 7, 11, 0, 0, 1349, 1350, 7, 4, 0, 0, 1350, 1351, 7, 13, 0, 0, 1351, 1352, 7, 0, 0, 0, 1352, 1353, 7, 6, 0, 0, 1353, 194, 1, 0, 0, 0, 1354, 1355, 7, 11, 0, 0, 1355, 1356, 7, 6, 0, 0, 1356, 1357, 7, 8, 0, 0, 1357, 1358, 7, 16, 0, 0, 1358, 1359, 7, 18, 0, 0, 1359, 196, 1, 0, 0, 0, 1360, 1361, 7, 11, 0, 0, 1361, 1362, 7, 2, 0, 0, 1362, 1363, 7, 13, 0, 0, 1363, 1364, 7, 8, 0, 0, 1364, 1365, 7, 6, 0, 0, 1365, 1366, 7, 12, 0, 0, 1366, 198, 1, 0, 0, 0, 1367, 1368, 7, 11, 0, 0, 1368, 1369, 7, 2, 0, 0, 1369, 1370, 7, 7, 0, 0, 1370, 1371, 7, 4, 0, 0, 1371, 1372, 7, 13, 0, 0, 1372, 200, 1, 0, 0, 0, 1373, 1374, 7, 11, 0, 0, 1374, 1375, 7, 2, 0, 0, 1375, 1376, 7, 12, 0, 0, 1376, 1377, 7, 0, 0, 0, 1377, 1378, 7, 8, 0, 0, 1378, 202, 1, 0, 0, 0, 1379, 1380, 7, 11, 0, 0, 1380, 1381, 7, 19, 0, 0, 1381, 1382, 7, 13, 0, 0, 1382, 1383, 7, 13, 0, 0, 1383, 1384, 7, 19, 0, 0, 1384, 1385, 7, 21, 0, 0, 1385, 1386, 7, 2, 0, 0, 1386, 1387, 7, 7, 0, 0, 1387, 1388, 7, 20, 0, 0, 1388, 204, 1, 0, 0, 0, 1389, 1390, 7, 11, 0, 0, 1390, 1391, 7, 19, 0, 0, 1391, 1392, 7, 12, 0, 0, 1392, 206, 1, 0, 0, 0, 1393, 1394, 7, 11, 0, 0, 1394, 1395, 7, 19, 0, 0, 1395, 1396, 7, 12, 0, 0, 1396, 1397, 7, 10, 0, 0, 1397, 1398, 7, 4, 0, 0, 1398, 1399, 7, 8, 0, 0, 1399, 208, 1, 0, 0, 0, 1400, 1401, 7, 11, 0, 0, 1401, 1402, 7, 12, 0, 0, 1402, 1403, 7, 19, 0, 0, 1403, 1404, 7, 10, 0, 0, 1404, 210, 1, 0, 0, 0, 1405, 1406, 7, 11, 0, 0, 1406, 1407, 7, 17, 0, 0, 1407, 1408, 7, 13, 0, 0, 1408, 1409, 7, 13, 0, 0, 1409, 212, 1, 0, 0, 0, 1410, 1411, 7, 11, 0, 0, 1411, 1412, 7, 17, 0, 0, 1412, 1413, 7, 7, 0, 0, 1413, 1414, 7, 16, 0, 0, 1414, 1415, 7, 8, 0, 0, 1415, 1416, 7, 2, 0, 0, 1416, 1417, 7, 19, 0, 0, 1417, 1418, 7, 7, 0, 0, 1418, 214, 1, 0, 0, 0, 1419, 1420, 7, 11, 0, 0, 1420, 1421, 7, 17, 0, 0, 1421, 1422, 7, 7, 0, 0, 1422, 1423, 7, 16, 0, 0, 1423, 1424, 7, 8, 0, 0, 1424, 1425, 7, 2, 0, 0, 1425, 1426, 7, 19, 0, 0, 1426, 1427, 7, 7, 0, 0, 1427, 1428, 7, 0, 0, 0, 1428, 216, 1, 0, 0, 0, 1429, 1430, 7, 20, 0, 0, 1430, 1431, 7, 12, 0, 0, 1431, 1432, 7, 4, 0, 0, 1432, 1433, 7, 16, 0, 0, 1433, 1434, 7, 6, 0, 0, 1434, 218, 1, 0, 0, 0, 1435, 1436, 7, 20, 0, 0, 1436, 1437, 7, 12, 0, 0, 1437, 1438, 7, 4, 0, 0, 1438, 1439, 7, 7, 0, 0, 1439, 1440, 7, 8, 0, 0, 1440, 220, 1, 0, 0, 0, 1441, 1442, 7, 20, 0, 0, 1442, 1443, 7, 12, 0, 0, 1443, 1444, 7, 4, 0, 0, 1444, 1445, 7, 7, 0, 0, 1445, 1446, 7, 8, 0, 0, 1446, 1447, 7, 6, 0, 0, 1447, 1448, 7, 9, 0, 0, 1448, 222, 1, 0, 0, 0, 1449, 1450, 7, 20, 0, 0, 1450, 1451, 7, 12, 0, 0, 1451, 1452, 7, 4, 0, 0, 1452, 1453, 7, 7, 0, 0, 1453, 1454, 7, 8, 0, 0, 1454, 1455, 7, 0, 0, 0, 1455, 224, 1, 0, 0, 0, 1456, 1457, 7, 20, 0, 0, 1457, 1458, 7, 12, 0, 0, 1458, 1459, 7, 4, 0, 0, 1459, 1460, 7, 3, 0, 0, 1460, 1461, 7, 18, 0, 0, 1461, 1462, 7, 23, 0, 0, 1462, 1463, 7, 2, 0, 0, 1463, 1464, 7, 15, 0, 0, 1464, 226, 1, 0, 0, 0, 1465, 1466, 7, 20, 0, 0, 1466, 1467, 7, 12, 0, 0, 1467, 1468, 7, 19, 0, 0, 1468, 1469, 7, 17, 0, 0, 1469, 1470, 7, 3, 0, 0, 1470, 228, 1, 0, 0, 0, 1471, 1472, 7, 20, 0, 0, 1472, 1473, 7, 12, 0, 0, 1473, 1474, 7, 19, 0, 0, 1474, 1475, 7, 17, 0, 0, 1475, 1476, 7, 3, 0, 0, 1476, 1477, 7, 2, 0, 0, 1477, 1478, 7, 7, 0, 0, 1478, 1479, 7, 20, 0, 0, 1479, 230, 1, 0, 0, 0, 1480, 1481, 7, 20, 0, 0, 1481, 1482, 7, 12, 0, 0, 1482, 1483, 7, 19, 0, 0, 1483, 1484, 7, 17, 0, 0, 1484, 1485, 7, 3, 0, 0, 1485, 1486, 7, 0, 0, 0, 1486, 232, 1, 0, 0, 0, 1487, 1488, 7, 18, 0, 0, 1488, 1489, 7, 4, 0, 0, 1489, 1490, 7, 23, 0, 0, 1490, 1491, 7, 2, 0, 0, 1491, 1492, 7, 7, 0, 0, 1492, 1493, 7, 20, 0, 0, 1493, 234, 1, 0, 0, 0, 1494, 1495, 7, 18, 0, 0, 1495, 1496, 7, 19, 0, 0, 1496, 1497, 7, 17, 0, 0, 1497, 1498, 7, 12, 0, 0, 1498, 236, 1, 0, 0, 0, 1499, 1500, 7, 2, 0, 0, 1500, 1501, 7, 11, 0, 0, 1501, 238, 1, 0, 0, 0, 1502, 1503, 7, 2, 0, 0, 1503, 1504, 7, 20, 0, 0, 1504, 1505, 7, 7, 0, 0, 1505, 1506, 7, 19, 0, 0, 1506, 1507, 7, 12, 0, 0, 1507, 1508, 7, 6, 0, 0, 1508, 240, 1, 0, 0, 0, 1509, 1510, 7, 2, 0, 0, 1510, 1511, 7, 10, 0, 0, 1511, 1512, 7, 10, 0, 0, 1512, 1513, 7, 6, 0, 0, 1513, 1514, 7, 9, 0, 0, 1514, 1515, 7, 2, 0, 0, 1515, 1516, 7, 4, 0, 0, 1516, 1517, 7, 8, 0, 0, 1517, 1518, 7, 6, 0, 0, 1518, 242, 1, 0, 0, 0, 1519, 1520, 7, 2, 0, 0, 1520, 1521, 7, 7, 0, 0, 1521, 244, 1, 0, 0, 0, 1522, 1523, 7, 2, 0, 0, 1523, 1524, 7, 7, 0, 0, 1524, 1525, 7, 16, 0, 0, 1525, 1526, 7, 13, 0, 0, 1526, 1527, 7, 17, 0, 0, 1527, 1528, 7, 9, 0, 0, 1528, 1529, 7, 2, 0, 0, 1529, 1530, 7, 7, 0, 0, 1530, 1531, 7, 20, 0, 0, 1531, 246, 1, 0, 0, 0, 1532, 1533, 7, 2, 0, 0, 1533, 1534, 7, 7, 0, 0, 1534, 1535, 7, 2, 0, 0, 1535, 1536, 7, 8, 0, 0, 1536, 1537, 7, 2, 0, 0, 1537, 1538, 7, 4, 0, 0, 1538, 1539, 7, 13, 0, 0, 1539, 248, 1, 0, 0, 0, 1540, 1541, 7, 2, 0, 0, 1541, 1542, 7, 7, 0, 0, 1542, 1543, 7, 7, 0, 0, 1543, 1544, 7, 6, 0, 0, 1544, 1545, 7, 12, 0, 0, 1545, 250, 1, 0, 0, 0, 1546, 1547, 7, 2, 0, 0, 1547, 1548, 7, 7, 0, 0, 1548, 1549, 7, 3, 0, 0, 1549, 1550, 7, 17, 0, 0, 1550, 1551, 7, 8, 0, 0, 1551, 252, 1, 0, 0, 0, 1552, 1553, 7, 2, 0, 0, 1553, 1554, 7, 7, 0, 0, 1554, 1555, 7, 0, 0, 0, 1555, 1556, 7, 6, 0, 0, 1556, 1557, 7, 12, 0, 0, 1557, 1558, 7, 8, 0, 0, 1558, 254, 1, 0, 0, 0, 1559, 1560, 7, 2, 0, 0, 1560, 1561, 7, 7, 0, 0, 1561, 1562, 7, 8, 0, 0, 1562, 1563, 7, 6, 0, 0, 1563, 1564, 7, 12, 0, 0, 1564, 1565, 7, 0, 0, 0, 1565, 1566, 7, 6, 0, 0, 1566, 1567, 7, 16, 0, 0, 1567, 1568, 7, 8, 0, 0, 1568, 256, 1, 0, 0, 0, 1569, 1570, 7, 2, 0, 0, 1570, 1571, 7, 7, 0, 0, 1571, 1572, 7, 8, 0, 0, 1572, 1573, 7, 6, 0, 0, 1573, 1574, 7, 12, 0, 0, 1574, 1575, 7, 23, 0, 0, 1575, 1576, 7, 4, 0, 0, 1576, 1577, 7, 13, 0, 0, 1577, 258, 1, 0, 0, 0, 1578, 1579, 7, 2, 0, 0, 1579, 1580, 7, 7, 0, 0, 1580, 1581, 7, 8, 0, 0, 1581, 1582, 7, 19, 0, 0, 1582, 260, 1, 0, 0, 0, 1583, 1584, 7, 2, 0, 0, 1584, 1585, 7, 7, 0, 0, 1585, 1586, 7, 23, 0, 0, 1586, 1587, 7, 19, 0, 0, 1587, 1588, 7, 1, 0, 0, 1588, 1589, 7, 6, 0, 0, 1589, 1590, 7, 12, 0, 0, 1590, 262, 1, 0, 0, 0, 1591, 1592, 7, 2, 0, 0, 1592, 1593, 7, 19, 0, 0, 1593, 264, 1, 0, 0, 0, 1594, 1595, 7, 2, 0, 0, 1595, 1596, 7, 0, 0, 0, 1596, 266, 1, 0, 0, 0, 1597, 1598, 7, 2, 0, 0, 1598, 1599, 7, 0, 0, 0, 1599, 1600, 7, 19, 0, 0, 1600, 1601, 7, 13, 0, 0, 1601, 1602, 7, 4, 0, 0, 1602, 1603, 7, 8, 0, 0, 1603, 1604, 7, 2, 0, 0, 1604, 1605, 7, 19, 0, 0, 1605, 1606, 7, 7, 0, 0, 1606, 268, 1, 0, 0, 0, 1607, 1608, 7, 2, 0, 0, 1608, 1609, 7, 8, 0, 0, 1609, 1610, 7, 6, 0, 0, 1610, 1611, 7, 12, 0, 0, 1611, 1612, 7, 4, 0, 0, 1612, 1613, 7, 8, 0, 0, 1613, 1614, 7, 6, 0, 0, 1614, 270, 1, 0, 0, 0, 1615, 1616, 7, 24, 0, 0, 1616, 1617, 7, 19, 0, 0, 1617, 1618, 7, 2, 0, 0, 1618, 1619, 7, 7, 0, 0, 1619, 272, 1, 0, 0, 0, 1620, 1621, 7, 24, 0, 0, 1621, 1622, 7, 0, 0, 0, 1622, 1623, 7, 19, 0, 0, 1623, 1624, 7, 7, 0, 0, 1624, 274, 1, 0, 0, 0, 1625, 1626, 7, 24, 0, 0, 1626, 1627, 7, 0, 0, 0, 1627, 1628, 7, 19, 0, 0, 1628, 1629, 7, 7, 0, 0, 1629, 1630, 5, 95, 0, 0, 1630, 1631, 7, 4, 0, 0, 1631, 1632, 7, 12, 0, 0, 1632, 1633, 7, 12, 0, 0, 1633, 1634, 7, 4, 0, 0, 1634, 1635, 7, 14, 0, 0, 1635, 276, 1, 0, 0, 0, 1636, 1637, 7, 24, 0, 0, 1637, 1638, 7, 0, 0, 0, 1638, 1639, 7, 19, 0, 0, 1639, 1640, 7, 7, 0, 0, 1640, 1641, 5, 95, 0, 0, 1641, 1642, 7, 6, 0, 0, 1642, 1643, 7, 22, 0, 0, 1643, 1644, 7, 2, 0, 0, 1644, 1645, 7, 0, 0, 0, 1645, 1646, 7, 8, 0, 0, 1646, 1647, 7, 0, 0, 0, 1647, 278, 1, 0, 0, 0, 1648, 1649, 7, 24, 0, 0, 1649, 1650, 7, 0, 0, 0, 1650, 1651, 7, 19, 0, 0, 1651, 1652, 7, 7, 0, 0, 1652, 1653, 5, 95, 0, 0, 1653, 1654, 7, 19, 0, 0, 1654, 1655, 7, 5, 0, 0, 1655, 1656, 7, 24, 0, 0, 1656, 1657, 7, 6, 0, 0, 1657, 1658, 7, 16, 0, 0, 1658, 1659, 7, 8, 0, 0, 1659, 280, 1, 0, 0, 0, 1660, 1661, 7, 24, 0, 0, 1661, 1662, 7, 0, 0, 0, 1662, 1663, 7, 19, 0, 0, 1663, 1664, 7, 7, 0, 0, 1664, 1665, 5, 95, 0, 0, 1665, 1666, 7, 25, 0, 0, 1666, 1667, 7, 17, 0, 0, 1667, 1668, 7, 6, 0, 0, 1668, 1669, 7, 12, 0, 0, 1669, 1670, 7, 14, 0, 0, 1670, 282, 1, 0, 0, 0, 1671, 1672, 7, 24, 0, 0, 1672, 1673, 7, 0, 0, 0, 1673, 1674, 7, 19, 0, 0, 1674, 1675, 7, 7, 0, 0, 1675, 1676, 5, 95, 0, 0, 1676, 1677, 7, 8, 0, 0, 1677, 1678, 7, 4, 0, 0, 1678, 1679, 7, 5, 0, 0, 1679, 1680, 7, 13, 0, 0, 1680, 1681, 7, 6, 0, 0, 1681, 284, 1, 0, 0, 0, 1682, 1683, 7, 24, 0, 0, 1683, 1684, 7, 0, 0, 0, 1684, 1685, 7, 19, 0, 0, 1685, 1686, 7, 7, 0, 0, 1686, 1687, 5, 95, 0, 0, 1687, 1688, 7, 23, 0, 0, 1688, 1689, 7, 4, 0, 0, 1689, 1690, 7, 13, 0, 0, 1690, 1691, 7, 17, 0, 0, 1691, 1692, 7, 6, 0, 0, 1692, 286, 1, 0, 0, 0, 1693, 1694, 7, 1, 0, 0, 1694, 1695, 7, 6, 0, 0, 1695, 1696, 7, 6, 0, 0, 1696, 1697, 7, 3, 0, 0, 1697, 288, 1, 0, 0, 0, 1698, 1699, 7, 1, 0, 0, 1699, 1700, 7, 6, 0, 0, 1700, 1701, 7, 14, 0, 0, 1701, 290, 1, 0, 0, 0, 1702, 1703, 7, 1, 0, 0, 1703, 1704, 7, 6, 0, 0, 1704, 1705, 7, 14, 0, 0, 1705, 1706, 7, 0, 0, 0, 1706, 292, 1, 0, 0, 0, 1707, 1708, 7, 13, 0, 0, 1708, 1709, 7, 4, 0, 0, 1709, 1710, 7, 7, 0, 0, 1710, 1711, 7, 20, 0, 0, 1711, 1712, 7, 17, 0, 0, 1712, 1713, 7, 4, 0, 0, 1713, 1714, 7, 20, 0, 0, 1714, 1715, 7, 6, 0, 0, 1715, 294, 1, 0, 0, 0, 1716, 1717, 7, 13, 0, 0, 1717, 1718, 7, 4, 0, 0, 1718, 1719, 7, 0, 0, 0, 1719, 1720, 7, 8, 0, 0, 1720, 296, 1, 0, 0, 0, 1721, 1722, 7, 13, 0, 0, 1722, 1723, 7, 4, 0, 0, 1723, 1724, 7, 8, 0, 0, 1724, 1725, 7, 6, 0, 0, 1725, 1726, 7, 12, 0, 0, 1726, 1727, 7, 4, 0, 0, 1727, 1728, 7, 13, 0, 0, 1728, 298, 1, 0, 0, 0, 1729, 1730, 7, 13, 0, 0, 1730, 1731, 7, 6, 0, 0, 1731, 1732, 7, 4, 0, 0, 1732, 1733, 7, 9, 0, 0, 1733, 1734, 7, 2, 0, 0, 1734, 1735, 7, 7, 0, 0, 1735, 1736, 7, 20, 0, 0, 1736, 300, 1, 0, 0, 0, 1737, 1738, 7, 13, 0, 0, 1738, 1739, 7, 6, 0, 0, 1739, 1740, 7, 4, 0, 0, 1740, 1741, 7, 23, 0, 0, 1741, 1742, 7, 6, 0, 0, 1742, 302, 1, 0, 0, 0, 1743, 1744, 7, 13, 0, 0, 1744, 1745, 7, 6, 0, 0, 1745, 1746, 7, 11, 0, 0, 1746, 1747, 7, 8, 0, 0, 1747, 304, 1, 0, 0, 0, 1748, 1749, 7, 13, 0, 0, 1749, 1750, 7, 6, 0, 0, 1750, 1751, 7, 23, 0, 0, 1751, 1752, 7, 6, 0, 0, 1752, 1753, 7, 13, 0, 0, 1753, 306, 1, 0, 0, 0, 1754, 1755, 7, 13, 0, 0, 1755, 1756, 7, 2, 0, 0, 1756, 1757, 7, 1, 0, 0, 1757, 1758, 7, 6, 0, 0, 1758, 308, 1, 0, 0, 0, 1759, 1760, 7, 13, 0, 0, 1760, 1761, 7, 2, 0, 0, 1761, 1762, 7, 10, 0, 0, 1762, 1763, 7, 2, 0, 0, 1763, 1764, 7, 8, 0, 0, 1764, 310, 1, 0, 0, 0, 1765, 1766, 7, 13, 0, 0, 1766, 1767, 7, 2, 0, 0, 1767, 1768, 7, 0, 0, 0, 1768, 1769, 7, 8, 0, 0, 1769, 1770, 7, 4, 0, 0, 1770, 1771, 7, 20, 0, 0, 1771, 1772, 7, 20, 0, 0, 1772, 312, 1, 0, 0, 0, 1773, 1774, 7, 13, 0, 0, 1774, 1775, 7, 19, 0, 0, 1775, 1776, 7, 16, 0, 0, 1776, 1777, 7, 4, 0, 0, 1777, 1778, 7, 13, 0, 0, 1778, 314, 1, 0, 0, 0, 1779, 1780, 7, 13, 0, 0, 1780, 1781, 7, 19, 0, 0, 1781, 1782, 7, 16, 0, 0, 1782, 1783, 7, 4, 0, 0, 1783, 1784, 7, 13, 0, 0, 1784, 1785, 7, 8, 0, 0, 1785, 1786, 7, 2, 0, 0, 1786, 1787, 7, 10, 0, 0, 1787, 1788, 7, 6, 0, 0, 1788, 316, 1, 0, 0, 0, 1789, 1790, 7, 13, 0, 0, 1790, 1791, 7, 19, 0, 0, 1791, 1792, 7, 16, 0, 0, 1792, 1793, 7, 4, 0, 0, 1793, 1794, 7, 13, 0, 0, 1794, 1795, 7, 8, 0, 0, 1795, 1796, 7, 2, 0, 0, 1796, 1797, 7, 10, 0, 0, 1797, 1798, 7, 6, 0, 0, 1798, 1799, 7, 0, 0, 0, 1799, 1800, 7, 8, 0, 0, 1800, 1801, 7, 4, 0, 0, 1801, 1802, 7, 10, 0, 0, 1802, 1803, 7, 3, 0, 0, 1803, 318, 1, 0, 0, 0, 1804, 1805, 7, 13, 0, 0, 1805, 1806, 7, 19, 0, 0, 1806, 1807, 7, 20, 0, 0, 1807, 1808, 7, 2, 0, 0, 1808, 1809, 7, 16, 0, 0, 1809, 1810, 7, 4, 0, 0, 1810, 1811, 7, 13, 0, 0, 1811, 320, 1, 0, 0, 0, 1812, 1813, 7, 13, 0, 0, 1813, 1814, 7, 19, 0, 0, 1814, 1815, 7, 19, 0, 0, 1815, 1816, 7, 3, 0, 0, 1816, 322, 1, 0, 0, 0, 1817, 1818, 7, 10, 0, 0, 1818, 1819, 7, 4, 0, 0, 1819, 1820, 7, 3, 0, 0, 1820, 324, 1, 0, 0, 0, 1821, 1822, 7, 10, 0, 0, 1822, 1823, 7, 4, 0, 0, 1823, 1824, 7, 8, 0, 0, 1824, 1825, 7, 16, 0, 0, 1825, 1826, 7, 18, 0, 0, 1826, 326, 1, 0, 0, 0, 1827, 1828, 7, 10, 0, 0, 1828, 1829, 7, 4, 0, 0, 1829, 1830, 7, 8, 0, 0, 1830, 1831, 7, 16, 0, 0, 1831, 1832, 7, 18, 0, 0, 1832, 1833, 7, 6, 0, 0, 1833, 1834, 7, 9, 0, 0, 1834, 328, 1, 0, 0, 0, 1835, 1836, 7, 10, 0, 0, 1836, 1837, 7, 4, 0, 0, 1837, 1838, 7, 8, 0, 0, 1838, 1839, 7, 16, 0, 0, 1839, 1840, 7, 18, 0, 0, 1840, 1841, 7, 6, 0, 0, 1841, 1842, 7, 0, 0, 0, 1842, 330, 1, 0, 0, 0, 1843, 1844, 7, 10, 0, 0, 1844, 1845, 7, 4, 0, 0, 1845, 1846, 7, 8, 0, 0, 1846, 1847, 7, 16, 0, 0, 1847, 1848, 7, 18, 0, 0, 1848, 1849, 5, 95, 0, 0, 1849, 1850, 7, 12, 0, 0, 1850, 1851, 7, 6, 0, 0, 1851, 1852, 7, 16, 0, 0, 1852, 1853, 7, 19, 0, 0, 1853, 1854, 7, 20, 0, 0, 1854, 1855, 7, 7, 0, 0, 1855, 1856, 7, 2, 0, 0, 1856, 1857, 7, 15, 0, 0, 1857, 1858, 7, 6, 0, 0, 1858, 332, 1, 0, 0, 0, 1859, 1860, 7, 10, 0, 0, 1860, 1861, 7, 4, 0, 0, 1861, 1862, 7, 8, 0, 0, 1862, 1863, 7, 6, 0, 0, 1863, 1864, 7, 12, 0, 0, 1864, 1865, 7, 2, 0, 0, 1865, 1866, 7, 4, 0, 0, 1866, 1867, 7, 13, 0, 0, 1867, 1868, 7, 2, 0, 0, 1868, 1869, 7, 15, 0, 0, 1869, 1870, 7, 6, 0, 0, 1870, 1871, 7, 9, 0, 0, 1871, 334, 1, 0, 0, 0, 1872, 1873, 7, 10, 0, 0, 1873, 1874, 7, 6, 0, 0, 1874, 1875, 7, 4, 0, 0, 1875, 1876, 7, 0, 0, 0, 1876, 1877, 7, 17, 0, 0, 1877, 1878, 7, 12, 0, 0, 1878, 1879, 7, 6, 0, 0, 1879, 1880, 7, 0, 0, 0, 1880, 336, 1, 0, 0, 0, 1881, 1882, 7, 10, 0, 0, 1882, 1883, 7, 6, 0, 0, 1883, 1884, 7, 12, 0, 0, 1884, 1885, 7, 20, 0, 0, 1885, 1886, 7, 6, 0, 0, 1886, 338, 1, 0, 0, 0, 1887, 1888, 7, 10, 0, 0, 1888, 1889, 7, 2, 0, 0, 1889, 1890, 7, 7, 0, 0, 1890, 1891, 7, 17, 0, 0, 1891, 1892, 7, 8, 0, 0, 1892, 1893, 7, 6, 0, 0, 1893, 340, 1, 0, 0, 0, 1894, 1895, 7, 10, 0, 0, 1895, 1896, 7, 19, 0, 0, 1896, 1897, 7, 7, 0, 0, 1897, 1898, 7, 8, 0, 0, 1898, 1899, 7, 18, 0, 0, 1899, 342, 1, 0, 0, 0, 1900, 1901, 7, 7, 0, 0, 1901, 1902, 7, 4, 0, 0, 1902, 1903, 7, 8, 0, 0, 1903, 1904, 7, 17, 0, 0, 1904, 1905, 7, 12, 0, 0, 1905, 1906, 7, 4, 0, 0, 1906, 1907, 7, 13, 0, 0, 1907, 344, 1, 0, 0, 0, 1908, 1909, 7, 7, 0, 0, 1909, 1910, 7, 6, 0, 0, 1910, 1911, 7, 0, 0, 0, 1911, 1912, 7, 8, 0, 0, 1912, 1913, 7, 6, 0, 0, 1913, 1914, 7, 9, 0, 0, 1914, 346, 1, 0, 0, 0, 1915, 1916, 7, 7, 0, 0, 1916, 1917, 7, 6, 0, 0, 1917, 1918, 7, 22, 0, 0, 1918, 1919, 7, 8, 0, 0, 1919, 348, 1, 0, 0, 0, 1920, 1921, 7, 7, 0, 0, 1921, 1922, 7, 11, 0, 0, 1922, 1923, 7, 16, 0, 0, 1923, 350, 1, 0, 0, 0, 1924, 1925, 7, 7, 0, 0, 1925, 1926, 7, 11, 0, 0, 1926, 1927, 7, 9, 0, 0, 1927, 352, 1, 0, 0, 0, 1928, 1929, 7, 7, 0, 0, 1929, 1930, 7, 11, 0, 0, 1930, 1931, 7, 1, 0, 0, 1931, 1932, 7, 16, 0, 0, 1932, 354, 1, 0, 0, 0, 1933, 1934, 7, 7, 0, 0, 1934, 1935, 7, 11, 0, 0, 1935, 1936, 7, 1, 0, 0, 1936, 1937, 7, 9, 0, 0, 1937, 356, 1, 0, 0, 0, 1938, 1939, 7, 7, 0, 0, 1939, 1940, 7, 19, 0, 0, 1940, 358, 1, 0, 0, 0, 1941, 1942, 7, 7, 0, 0, 1942, 1943, 7, 19, 0, 0, 1943, 1944, 7, 7, 0, 0, 1944, 1945, 7, 6, 0, 0, 1945, 360, 1, 0, 0, 0, 1946, 1947, 7, 7, 0, 0, 1947, 1948, 7, 19, 0, 0, 1948, 1949, 7, 12, 0, 0, 1949, 1950, 7, 10, 0, 0, 1950, 1951, 7, 4, 0, 0, 1951, 1952, 7, 13, 0, 0, 1952, 1953, 7, 2, 0, 0, 1953, 1954, 7, 15, 0, 0, 1954, 1955, 7, 6, 0, 0, 1955, 362, 1, 0, 0, 0, 1956, 1957, 7, 7, 0, 0, 1957, 1958, 7, 19, 0, 0, 1958, 1959, 7, 8, 0, 0, 1959, 364, 1, 0, 0, 0, 1960, 1961, 7, 7, 0, 0, 1961, 1962, 7, 17, 0, 0, 1962, 1963, 7, 13, 0, 0, 1963, 1964, 7, 13, 0, 0, 1964, 366, 1, 0, 0, 0, 1965, 1966, 7, 7, 0, 0, 1966, 1967, 7, 17, 0, 0, 1967, 1968, 7, 13, 0, 0, 1968, 1969, 7, 13, 0, 0, 1969, 1970, 7, 2, 0, 0, 1970, 1971, 7, 11, 0, 0, 1971, 368, 1, 0, 0, 0, 1972, 1973, 7, 7, 0, 0, 1973, 1974, 7, 17, 0, 0, 1974, 1975, 7, 13, 0, 0, 1975, 1976, 7, 13, 0, 0, 1976, 1977, 7, 0, 0, 0, 1977, 370, 1, 0, 0, 0, 1978, 1979, 7, 19, 0, 0, 1979, 1980, 7, 5, 0, 0, 1980, 1981, 7, 24, 0, 0, 1981, 1982, 7, 6, 0, 0, 1982, 1983, 7, 16, 0, 0, 1983, 1984, 7, 8, 0, 0, 1984, 372, 1, 0, 0, 0, 1985, 1986, 7, 19, 0, 0, 1986, 1987, 7, 11, 0, 0, 1987, 374, 1, 0, 0, 0, 1988, 1989, 7, 19, 0, 0, 1989, 1990, 7, 11, 0, 0, 1990, 1991, 7, 11, 0, 0, 1991, 1992, 7, 0, 0, 0, 1992, 1993, 7, 6, 0, 0, 1993, 1994, 7, 8, 0, 0, 1994, 376, 1, 0, 0, 0, 1995, 1996, 7, 19, 0, 0, 1996, 1997, 7, 10, 0, 0, 1997, 1998, 7, 2, 0, 0, 1998, 1999, 7, 8, 0, 0, 1999, 378, 1, 0, 0, 0, 2000, 2001, 7, 19, 0, 0, 2001, 2002, 7, 7, 0, 0, 2002, 380, 1, 0, 0, 0, 2003, 2004, 7, 19, 0, 0, 2004, 2005, 7, 7, 0, 0, 2005, 2006, 7, 6, 0, 0, 2006, 382, 1, 0, 0, 0, 2007, 2008, 7, 19, 0, 0, 2008, 2009, 7, 7, 0, 0, 2009, 2010, 7, 13, 0, 0, 2010, 2011, 7, 14, 0, 0, 2011, 384, 1, 0, 0, 0, 2012, 2013, 7, 19, 0, 0, 2013, 2014, 7, 3, 0, 0, 2014, 2015, 7, 8, 0, 0, 2015, 2016, 7, 2, 0, 0, 2016, 2017, 7, 19, 0, 0, 2017, 2018, 7, 7, 0, 0, 2018, 386, 1, 0, 0, 0, 2019, 2020, 7, 19, 0, 0, 2020, 2021, 7, 12, 0, 0, 2021, 388, 1, 0, 0, 0, 2022, 2023, 7, 19, 0, 0, 2023, 2024, 7, 12, 0, 0, 2024, 2025, 7, 9, 0, 0, 2025, 2026, 7, 6, 0, 0, 2026, 2027, 7, 12, 0, 0, 2027, 390, 1, 0, 0, 0, 2028, 2029, 7, 19, 0, 0, 2029, 2030, 7, 12, 0, 0, 2030, 2031, 7, 9, 0, 0, 2031, 2032, 7, 2, 0, 0, 2032, 2033, 7, 7, 0, 0, 2033, 2034, 7, 4, 0, 0, 2034, 2035, 7, 13, 0, 0, 2035, 2036, 7, 2, 0, 0, 2036, 2037, 7, 8, 0, 0, 2037, 2038, 7, 14, 0, 0, 2038, 392, 1, 0, 0, 0, 2039, 2040, 7, 19, 0, 0, 2040, 2041, 7, 17, 0, 0, 2041, 2042, 7, 8, 0, 0, 2042, 2043, 7, 6, 0, 0, 2043, 2044, 7, 12, 0, 0, 2044, 394, 1, 0, 0, 0, 2045, 2046, 7, 19, 0, 0, 2046, 2047, 7, 17, 0, 0, 2047, 2048, 7, 8, 0, 0, 2048, 2049, 7, 3, 0, 0, 2049, 2050, 7, 17, 0, 0, 2050, 2051, 7, 8, 0, 0, 2051, 396, 1, 0, 0, 0, 2052, 2053, 7, 19, 0, 0, 2053, 2054, 7, 23, 0, 0, 2054, 2055, 7, 6, 0, 0, 2055, 2056, 7, 12, 0, 0, 2056, 398, 1, 0, 0, 0, 2057, 2058, 7, 19, 0, 0, 2058, 2059, 7, 23, 0, 0, 2059, 2060, 7, 6, 0, 0, 2060, 2061, 7, 12, 0, 0, 2061, 2062, 7, 11, 0, 0, 2062, 2063, 7, 13, 0, 0, 2063, 2064, 7, 19, 0, 0, 2064, 2065, 7, 21, 0, 0, 2065, 400, 1, 0, 0, 0, 2066, 2067, 7, 3, 0, 0, 2067, 2068, 7, 4, 0, 0, 2068, 2069, 7, 12, 0, 0, 2069, 2070, 7, 8, 0, 0, 2070, 2071, 7, 2, 0, 0, 2071, 2072, 7, 8, 0, 0, 2072, 2073, 7, 2, 0, 0, 2073, 2074, 7, 19, 0, 0, 2074, 2075, 7, 7, 0, 0, 2075, 402, 1, 0, 0, 0, 2076, 2077, 7, 3, 0, 0, 2077, 2078, 7, 4, 0, 0, 2078, 2079, 7, 12, 0, 0, 2079, 2080, 7, 8, 0, 0, 2080, 2081, 7, 2, 0, 0, 2081, 2082, 7, 8, 0, 0, 2082, 2083, 7, 2, 0, 0, 2083, 2084, 7, 19, 0, 0, 2084, 2085, 7, 7, 0, 0, 2085, 2086, 7, 0, 0, 0, 2086, 404, 1, 0, 0, 0, 2087, 2088, 7, 3, 0, 0, 2088, 2089, 7, 4, 0, 0, 2089, 2090, 7, 0, 0, 0, 2090, 2091, 7, 0, 0, 0, 2091, 2092, 7, 2, 0, 0, 2092, 2093, 7, 7, 0, 0, 2093, 2094, 7, 20, 0, 0, 2094, 406, 1, 0, 0, 0, 2095, 2096, 7, 3, 0, 0, 2096, 2097, 7, 4, 0, 0, 2097, 2098, 7, 0, 0, 0, 2098, 2099, 7, 8, 0, 0, 2099, 408, 1, 0, 0, 0, 2100, 2101, 7, 3, 0, 0, 2101, 2102, 7, 4, 0, 0, 2102, 2103, 7, 8, 0, 0, 2103, 2104, 7, 18, 0, 0, 2104, 410, 1, 0, 0, 0, 2105, 2106, 7, 3, 0, 0, 2106, 2107, 7, 4, 0, 0, 2107, 2108, 7, 8, 0, 0, 2108, 2109, 7, 8, 0, 0, 2109, 2110, 7, 6, 0, 0, 2110, 2111, 7, 12, 0, 0, 2111, 2112, 7, 7, 0, 0, 2112, 412, 1, 0, 0, 0, 2113, 2114, 7, 3, 0, 0, 2114, 2115, 7, 6, 0, 0, 2115, 2116, 7, 12, 0, 0, 2116, 414, 1, 0, 0, 0, 2117, 2118, 7, 3, 0, 0, 2118, 2119, 7, 6, 0, 0, 2119, 2120, 7, 12, 0, 0, 2120, 2121, 7, 2, 0, 0, 2121, 2122, 7, 19, 0, 0, 2122, 2123, 7, 9, 0, 0, 2123, 416, 1, 0, 0, 0, 2124, 2125, 7, 3, 0, 0, 2125, 2126, 7, 6, 0, 0, 2126, 2127, 7, 12, 0, 0, 2127, 2128, 7, 10, 0, 0, 2128, 2129, 7, 17, 0, 0, 2129, 2130, 7, 8, 0, 0, 2130, 2131, 7, 6, 0, 0, 2131, 418, 1, 0, 0, 0, 2132, 2133, 7, 3, 0, 0, 2133, 2134, 7, 13, 0, 0, 2134, 2135, 7, 4, 0, 0, 2135, 2136, 7, 7, 0, 0, 2136, 420, 1, 0, 0, 0, 2137, 2138, 7, 3, 0, 0, 2138, 2139, 7, 19, 0, 0, 2139, 2140, 7, 0, 0, 0, 2140, 2141, 7, 2, 0, 0, 2141, 2142, 7, 8, 0, 0, 2142, 2143, 7, 2, 0, 0, 2143, 2144, 7, 19, 0, 0, 2144, 2145, 7, 7, 0, 0, 2145, 422, 1, 0, 0, 0, 2146, 2147, 7, 3, 0, 0, 2147, 2148, 7, 12, 0, 0, 2148, 2149, 7, 6, 0, 0, 2149, 2150, 7, 16, 0, 0, 2150, 2151, 7, 6, 0, 0, 2151, 2152, 7, 9, 0, 0, 2152, 2153, 7, 2, 0, 0, 2153, 2154, 7, 7, 0, 0, 2154, 2155, 7, 20, 0, 0, 2155, 424, 1, 0, 0, 0, 2156, 2157, 7, 3, 0, 0, 2157, 2158, 7, 12, 0, 0, 2158, 2159, 7, 6, 0, 0, 2159, 2160, 7, 16, 0, 0, 2160, 2161, 7, 2, 0, 0, 2161, 2162, 7, 0, 0, 0, 2162, 2163, 7, 2, 0, 0, 2163, 2164, 7, 19, 0, 0, 2164, 2165, 7, 7, 0, 0, 2165, 426, 1, 0, 0, 0, 2166, 2167, 7, 3, 0, 0, 2167, 2168, 7, 12, 0, 0, 2168, 2169, 7, 6, 0, 0, 2169, 2170, 7, 3, 0, 0, 2170, 2171, 7, 4, 0, 0, 2171, 2172, 7, 12, 0, 0, 2172, 2173, 7, 6, 0, 0, 2173, 428, 1, 0, 0, 0, 2174, 2175, 7, 3, 0, 0, 2175, 2176, 7, 12, 0, 0, 2176, 2177, 7, 2, 0, 0, 2177, 2178, 7, 23, 0, 0, 2178, 2179, 7, 2, 0, 0, 2179, 2180, 7, 13, 0, 0, 2180, 2181, 7, 6, 0, 0, 2181, 2182, 7, 20, 0, 0, 2182, 2183, 7, 6, 0, 0, 2183, 2184, 7, 0, 0, 0, 2184, 430, 1, 0, 0, 0, 2185, 2186, 7, 3, 0, 0, 2186, 2187, 7, 12, 0, 0, 2187, 2188, 7, 19, 0, 0, 2188, 2189, 7, 3, 0, 0, 2189, 2190, 7, 6, 0, 0, 2190, 2191, 7, 12, 0, 0, 2191, 2192, 7, 8, 0, 0, 2192, 2193, 7, 2, 0, 0, 2193, 2194, 7, 6, 0, 0, 2194, 2195, 7, 0, 0, 0, 2195, 432, 1, 0, 0, 0, 2196, 2197, 7, 3, 0, 0, 2197, 2198, 7, 12, 0, 0, 2198, 2199, 7, 17, 0, 0, 2199, 2200, 7, 7, 0, 0, 2200, 2201, 7, 6, 0, 0, 2201, 434, 1, 0, 0, 0, 2202, 2203, 7, 25, 0, 0, 2203, 2204, 7, 17, 0, 0, 2204, 2205, 7, 19, 0, 0, 2205, 2206, 7, 8, 0, 0, 2206, 2207, 7, 6, 0, 0, 2207, 2208, 7, 0, 0, 0, 2208, 436, 1, 0, 0, 0, 2209, 2210, 7, 12, 0, 0, 2210, 2211, 7, 4, 0, 0, 2211, 2212, 7, 7, 0, 0, 2212, 2213, 7, 20, 0, 0, 2213, 2214, 7, 6, 0, 0, 2214, 438, 1, 0, 0, 0, 2215, 2216, 7, 12, 0, 0, 2216, 2217, 7, 6, 0, 0, 2217, 2218, 7, 4, 0, 0, 2218, 2219, 7, 9, 0, 0, 2219, 440, 1, 0, 0, 0, 2220, 2221, 7, 12, 0, 0, 2221, 2222, 7, 6, 0, 0, 2222, 2223, 7, 16, 0, 0, 2223, 2224, 7, 17, 0, 0, 2224, 2225, 7, 12, 0, 0, 2225, 2226, 7, 0, 0, 0, 2226, 2227, 7, 2, 0, 0, 2227, 2228, 7, 23, 0, 0, 2228, 2229, 7, 6, 0, 0, 2229, 442, 1, 0, 0, 0, 2230, 2231, 7, 12, 0, 0, 2231, 2232, 7, 6, 0, 0, 2232, 2233, 7, 11, 0, 0, 2233, 2234, 7, 12, 0, 0, 2234, 2235, 7, 6, 0, 0, 2235, 2236, 7, 0, 0, 0, 2236, 2237, 7, 18, 0, 0, 2237, 444, 1, 0, 0, 0, 2238, 2239, 7, 12, 0, 0, 2239, 2240, 7, 6, 0, 0, 2240, 2241, 7, 7, 0, 0, 2241, 2242, 7, 4, 0, 0, 2242, 2243, 7, 10, 0, 0, 2243, 2244, 7, 6, 0, 0, 2244, 446, 1, 0, 0, 0, 2245, 2246, 7, 12, 0, 0, 2246, 2247, 7, 6, 0, 0, 2247, 2248, 7, 3, 0, 0, 2248, 2249, 7, 6, 0, 0, 2249, 2250, 7, 4, 0, 0, 2250, 2251, 7, 8, 0, 0, 2251, 448, 1, 0, 0, 0, 2252, 2253, 7, 12, 0, 0, 2253, 2254, 7, 6, 0, 0, 2254, 2255, 7, 3, 0, 0, 2255, 2256, 7, 6, 0, 0, 2256, 2257, 7, 4, 0, 0, 2257, 2258, 7, 8, 0, 0, 2258, 2259, 7, 4, 0, 0, 2259, 2260, 7, 5, 0, 0, 2260, 2261, 7, 13, 0, 0, 2261, 2262, 7, 6, 0, 0, 2262, 450, 1, 0, 0, 0, 2263, 2264, 7, 12, 0, 0, 2264, 2265, 7, 6, 0, 0, 2265, 2266, 7, 3, 0, 0, 2266, 2267, 7, 13, 0, 0, 2267, 2268, 7, 4, 0, 0, 2268, 2269, 7, 16, 0, 0, 2269, 2270, 7, 6, 0, 0, 2270, 452, 1, 0, 0, 0, 2271, 2272, 7, 12, 0, 0, 2272, 2273, 7, 6, 0, 0, 2273, 2274, 7, 0, 0, 0, 2274, 2275, 7, 6, 0, 0, 2275, 2276, 7, 8, 0, 0, 2276, 454, 1, 0, 0, 0, 2277, 2278, 7, 12, 0, 0, 2278, 2279, 7, 6, 0, 0, 2279, 2280, 7, 0, 0, 0, 2280, 2281, 7, 3, 0, 0, 2281, 2282, 7, 6, 0, 0, 2282, 2283, 7, 16, 0, 0, 2283, 2284, 7, 8, 0, 0, 2284, 456, 1, 0, 0, 0, 2285, 2286, 7, 12, 0, 0, 2286, 2287, 7, 6, 0, 0, 2287, 2288, 7, 0, 0, 0, 2288, 2289, 7, 8, 0, 0, 2289, 2290, 7, 12, 0, 0, 2290, 2291, 7, 2, 0, 0, 2291, 2292, 7, 16, 0, 0, 2292, 2293, 7, 8, 0, 0, 2293, 458, 1, 0, 0, 0, 2294, 2295, 7, 12, 0, 0, 2295, 2296, 7, 6, 0, 0, 2296, 2297, 7, 8, 0, 0, 2297, 2298, 7, 17, 0, 0, 2298, 2299, 7, 12, 0, 0, 2299, 2300, 7, 7, 0, 0, 2300, 460, 1, 0, 0, 0, 2301, 2302, 7, 12, 0, 0, 2302, 2303, 7, 6, 0, 0, 2303, 2304, 7, 8, 0, 0, 2304, 2305, 7, 17, 0, 0, 2305, 2306, 7, 12, 0, 0, 2306, 2307, 7, 7, 0, 0, 2307, 2308, 7, 2, 0, 0, 2308, 2309, 7, 7, 0, 0, 2309, 2310, 7, 20, 0, 0, 2310, 462, 1, 0, 0, 0, 2311, 2312, 7, 12, 0, 0, 2312, 2313, 7, 6, 0, 0, 2313, 2314, 7, 8, 0, 0, 2314, 2315, 7, 17, 0, 0, 2315, 2316, 7, 12, 0, 0, 2316, 2317, 7, 7, 0, 0, 2317, 2318, 7, 0, 0, 0, 2318, 464, 1, 0, 0, 0, 2319, 2320, 7, 12, 0, 0, 2320, 2321, 7, 6, 0, 0, 2321, 2322, 7, 23, 0, 0, 2322, 2323, 7, 19, 0, 0, 2323, 2324, 7, 1, 0, 0, 2324, 2325, 7, 6, 0, 0, 2325, 466, 1, 0, 0, 0, 2326, 2327, 7, 12, 0, 0, 2327, 2328, 7, 2, 0, 0, 2328, 2329, 7, 20, 0, 0, 2329, 2330, 7, 18, 0, 0, 2330, 2331, 7, 8, 0, 0, 2331, 468, 1, 0, 0, 0, 2332, 2333, 7, 12, 0, 0, 2333, 2334, 7, 19, 0, 0, 2334, 2335, 7, 13, 0, 0, 2335, 2336, 7, 6, 0, 0, 2336, 470, 1, 0, 0, 0, 2337, 2338, 7, 12, 0, 0, 2338, 2339, 7, 19, 0, 0, 2339, 2340, 7, 13, 0, 0, 2340, 2341, 7, 6, 0, 0, 2341, 2342, 7, 0, 0, 0, 2342, 472, 1, 0, 0, 0, 2343, 2344, 7, 12, 0, 0, 2344, 2345, 7, 19, 0, 0, 2345, 2346, 7, 13, 0, 0, 2346, 2347, 7, 13, 0, 0, 2347, 2348, 7, 5, 0, 0, 2348, 2349, 7, 4, 0, 0, 2349, 2350, 7, 16, 0, 0, 2350, 2351, 7, 1, 0, 0, 2351, 474, 1, 0, 0, 0, 2352, 2353, 7, 12, 0, 0, 2353, 2354, 7, 19, 0, 0, 2354, 2355, 7, 13, 0, 0, 2355, 2356, 7, 13, 0, 0, 2356, 2357, 7, 17, 0, 0, 2357, 2358, 7, 3, 0, 0, 2358, 476, 1, 0, 0, 0, 2359, 2360, 7, 12, 0, 0, 2360, 2361, 7, 19, 0, 0, 2361, 2362, 7, 21, 0, 0, 2362, 478, 1, 0, 0, 0, 2363, 2364, 7, 12, 0, 0, 2364, 2365, 7, 19, 0, 0, 2365, 2366, 7, 21, 0, 0, 2366, 2367, 7, 0, 0, 0, 2367, 480, 1, 0, 0, 0, 2368, 2369, 7, 12, 0, 0, 2369, 2370, 7, 17, 0, 0, 2370, 2371, 7, 7, 0, 0, 2371, 2372, 7, 7, 0, 0, 2372, 2373, 7, 2, 0, 0, 2373, 2374, 7, 7, 0, 0, 2374, 2375, 7, 20, 0, 0, 2375, 482, 1, 0, 0, 0, 2376, 2377, 7, 0, 0, 0, 2377, 2378, 7, 16, 0, 0, 2378, 2379, 7, 4, 0, 0, 2379, 2380, 7, 13, 0, 0, 2380, 2381, 7, 4, 0, 0, 2381, 2382, 7, 12, 0, 0, 2382, 484, 1, 0, 0, 0, 2383, 2384, 7, 0, 0, 0, 2384, 2385, 7, 16, 0, 0, 2385, 2386, 7, 18, 0, 0, 2386, 2387, 7, 6, 0, 0, 2387, 2388, 7, 10, 0, 0, 2388, 2389, 7, 4, 0, 0, 2389, 486, 1, 0, 0, 0, 2390, 2391, 7, 0, 0, 0, 2391, 2392, 7, 16, 0, 0, 2392, 2393, 7, 18, 0, 0, 2393, 2394, 7, 6, 0, 0, 2394, 2395, 7, 10, 0, 0, 2395, 2396, 7, 4, 0, 0, 2396, 2397, 7, 0, 0, 0, 2397, 488, 1, 0, 0, 0, 2398, 2399, 7, 0, 0, 0, 2399, 2400, 7, 6, 0, 0, 2400, 2401, 7, 16, 0, 0, 2401, 2402, 7, 19, 0, 0, 2402, 2403, 7, 7, 0, 0, 2403, 2404, 7, 9, 0, 0, 2404, 490, 1, 0, 0, 0, 2405, 2406, 7, 0, 0, 0, 2406, 2407, 7, 6, 0, 0, 2407, 2408, 7, 16, 0, 0, 2408, 2409, 7, 17, 0, 0, 2409, 2410, 7, 12, 0, 0, 2410, 2411, 7, 2, 0, 0, 2411, 2412, 7, 8, 0, 0, 2412, 2413, 7, 14, 0, 0, 2413, 492, 1, 0, 0, 0, 2414, 2415, 7, 0, 0, 0, 2415, 2416, 7, 6, 0, 0, 2416, 2417, 7, 6, 0, 0, 2417, 2418, 7, 1, 0, 0, 2418, 494, 1, 0, 0, 0, 2419, 2420, 7, 0, 0, 0, 2420, 2421, 7, 6, 0, 0, 2421, 2422, 7, 13, 0, 0, 2422, 2423, 7, 6, 0, 0, 2423, 2424, 7, 16, 0, 0, 2424, 2425, 7, 8, 0, 0, 2425, 496, 1, 0, 0, 0, 2426, 2427, 7, 0, 0, 0, 2427, 2428, 7, 6, 0, 0, 2428, 2429, 7, 12, 0, 0, 2429, 2430, 7, 2, 0, 0, 2430, 2431, 7, 4, 0, 0, 2431, 2432, 7, 13, 0, 0, 2432, 2433, 7, 2, 0, 0, 2433, 2434, 7, 15, 0, 0, 2434, 2435, 7, 4, 0, 0, 2435, 2436, 7, 5, 0, 0, 2436, 2437, 7, 13, 0, 0, 2437, 2438, 7, 6, 0, 0, 2438, 498, 1, 0, 0, 0, 2439, 2440, 7, 0, 0, 0, 2440, 2441, 7, 6, 0, 0, 2441, 2442, 7, 0, 0, 0, 2442, 2443, 7, 0, 0, 0, 2443, 2444, 7, 2, 0, 0, 2444, 2445, 7, 19, 0, 0, 2445, 2446, 7, 7, 0, 0, 2446, 500, 1, 0, 0, 0, 2447, 2448, 7, 0, 0, 0, 2448, 2449, 7, 6, 0, 0, 2449, 2450, 7, 8, 0, 0, 2450, 502, 1, 0, 0, 0, 2451, 2452, 7, 0, 0, 0, 2452, 2453, 7, 6, 0, 0, 2453, 2454, 7, 8, 0, 0, 2454, 2455, 7, 0, 0, 0, 2455, 504, 1, 0, 0, 0, 2456, 2457, 7, 0, 0, 0, 2457, 2458, 7, 18, 0, 0, 2458, 2459, 7, 19, 0, 0, 2459, 2460, 7, 21, 0, 0, 2460, 506, 1, 0, 0, 0, 2461, 2462, 7, 0, 0, 0, 2462, 2463, 7, 19, 0, 0, 2463, 2464, 7, 10, 0, 0, 2464, 2465, 7, 6, 0, 0, 2465, 508, 1, 0, 0, 0, 2466, 2467, 7, 0, 0, 0, 2467, 2468, 7, 8, 0, 0, 2468, 2469, 7, 4, 0, 0, 2469, 2470, 7, 12, 0, 0, 2470, 2471, 7, 8, 0, 0, 2471, 510, 1, 0, 0, 0, 2472, 2473, 7, 0, 0, 0, 2473, 2474, 7, 8, 0, 0, 2474, 2475, 7, 4, 0, 0, 2475, 2476, 7, 8, 0, 0, 2476, 2477, 7, 0, 0, 0, 2477, 512, 1, 0, 0, 0, 2478, 2479, 7, 0, 0, 0, 2479, 2480, 7, 17, 0, 0, 2480, 2481, 7, 5, 0, 0, 2481, 2482, 7, 0, 0, 0, 2482, 2483, 7, 6, 0, 0, 2483, 2484, 7, 8, 0, 0, 2484, 514, 1, 0, 0, 0, 2485, 2486, 7, 0, 0, 0, 2486, 2487, 7, 17, 0, 0, 2487, 2488, 7, 5, 0, 0, 2488, 2489, 7, 0, 0, 0, 2489, 2490, 7, 8, 0, 0, 2490, 2491, 7, 12, 0, 0, 2491, 2492, 7, 2, 0, 0, 2492, 2493, 7, 7, 0, 0, 2493, 2494, 7, 20, 0, 0, 2494, 516, 1, 0, 0, 0, 2495, 2496, 7, 0, 0, 0, 2496, 2497, 7, 14, 0, 0, 2497, 2498, 7, 0, 0, 0, 2498, 2499, 7, 8, 0, 0, 2499, 2500, 7, 6, 0, 0, 2500, 2501, 7, 10, 0, 0, 2501, 518, 1, 0, 0, 0, 2502, 2503, 7, 8, 0, 0, 2503, 2504, 7, 4, 0, 0, 2504, 2505, 7, 5, 0, 0, 2505, 2506, 7, 13, 0, 0, 2506, 2507, 7, 6, 0, 0, 2507, 520, 1, 0, 0, 0, 2508, 2509, 7, 8, 0, 0, 2509, 2510, 7, 4, 0, 0, 2510, 2511, 7, 5, 0, 0, 2511, 2512, 7, 13, 0, 0, 2512, 2513, 7, 6, 0, 0, 2513, 2514, 7, 0, 0, 0, 2514, 522, 1, 0, 0, 0, 2515, 2516, 7, 8, 0, 0, 2516, 2517, 7, 4, 0, 0, 2517, 2518, 7, 5, 0, 0, 2518, 2519, 7, 13, 0, 0, 2519, 2520, 7, 6, 0, 0, 2520, 2521, 7, 0, 0, 0, 2521, 2522, 7, 4, 0, 0, 2522, 2523, 7, 10, 0, 0, 2523, 2524, 7, 3, 0, 0, 2524, 2525, 7, 13, 0, 0, 2525, 2526, 7, 6, 0, 0, 2526, 524, 1, 0, 0, 0, 2527, 2528, 7, 8, 0, 0, 2528, 2529, 7, 6, 0, 0, 2529, 2530, 7, 22, 0, 0, 2530, 2531, 7, 8, 0, 0, 2531, 526, 1, 0, 0, 0, 2532, 2533, 7, 0, 0, 0, 2533, 2534, 7, 8, 0, 0, 2534, 2535, 7, 12, 0, 0, 2535, 2536, 7, 2, 0, 0, 2536, 2537, 7, 7, 0, 0, 2537, 2538, 7, 20, 0, 0, 2538, 528, 1, 0, 0, 0, 2539, 2540, 7, 8, 0, 0, 2540, 2541, 7, 18, 0, 0, 2541, 2542, 7, 6, 0, 0, 2542, 2543, 7, 7, 0, 0, 2543, 530, 1, 0, 0, 0, 2544, 2545, 7, 8, 0, 0, 2545, 2546, 7, 2, 0, 0, 2546, 2547, 7, 6, 0, 0, 2547, 2548, 7, 0, 0, 0, 2548, 532, 1, 0, 0, 0, 2549, 2550, 7, 8, 0, 0, 2550, 2551, 7, 2, 0, 0, 2551, 2552, 7, 10, 0, 0, 2552, 2553, 7, 6, 0, 0, 2553, 534, 1, 0, 0, 0, 2554, 2555, 7, 8, 0, 0, 2555, 2556, 7, 2, 0, 0, 2556, 2557, 7, 10, 0, 0, 2557, 2558, 7, 6, 0, 0, 2558, 2559, 7, 0, 0, 0, 2559, 2560, 7, 8, 0, 0, 2560, 2561, 7, 4, 0, 0, 2561, 2562, 7, 10, 0, 0, 2562, 2563, 7, 3, 0, 0, 2563, 536, 1, 0, 0, 0, 2564, 2565, 7, 8, 0, 0, 2565, 2566, 7, 19, 0, 0, 2566, 538, 1, 0, 0, 0, 2567, 2568, 7, 8, 0, 0, 2568, 2569, 7, 12, 0, 0, 2569, 2570, 7, 4, 0, 0, 2570, 2571, 7, 2, 0, 0, 2571, 2572, 7, 13, 0, 0, 2572, 2573, 7, 2, 0, 0, 2573, 2574, 7, 7, 0, 0, 2574, 2575, 7, 20, 0, 0, 2575, 540, 1, 0, 0, 0, 2576, 2577, 7, 8, 0, 0, 2577, 2578, 7, 12, 0, 0, 2578, 2579, 7, 4, 0, 0, 2579, 2580, 7, 7, 0, 0, 2580, 2581, 7, 0, 0, 0, 2581, 2582, 7, 4, 0, 0, 2582, 2583, 7, 16, 0, 0, 2583, 2584, 7, 8, 0, 0, 2584, 2585, 7, 2, 0, 0, 2585, 2586, 7, 19, 0, 0, 2586, 2587, 7, 7, 0, 0, 2587, 542, 1, 0, 0, 0, 2588, 2589, 7, 8, 0, 0, 2589, 2590, 7, 12, 0, 0, 2590, 2591, 7, 2, 0, 0, 2591, 2592, 7, 10, 0, 0, 2592, 544, 1, 0, 0, 0, 2593, 2594, 7, 8, 0, 0, 2594, 2595, 7, 12, 0, 0, 2595, 2596, 7, 17, 0, 0, 2596, 2597, 7, 6, 0, 0, 2597, 546, 1, 0, 0, 0, 2598, 2599, 7, 8, 0, 0, 2599, 2600, 7, 12, 0, 0, 2600, 2601, 7, 17, 0, 0, 2601, 2602, 7, 7, 0, 0, 2602, 2603, 7, 16, 0, 0, 2603, 2604, 7, 4, 0, 0, 2604, 2605, 7, 8, 0, 0, 2605, 2606, 7, 6, 0, 0, 2606, 548, 1, 0, 0, 0, 2607, 2608, 7, 8, 0, 0, 2608, 2609, 7, 12, 0, 0, 2609, 2610, 7, 14, 0, 0, 2610, 2611, 5, 95, 0, 0, 2611, 2612, 7, 16, 0, 0, 2612, 2613, 7, 4, 0, 0, 2613, 2614, 7, 0, 0, 0, 2614, 2615, 7, 8, 0, 0, 2615, 550, 1, 0, 0, 0, 2616, 2617, 7, 8, 0, 0, 2617, 2618, 7, 14, 0, 0, 2618, 2619, 7, 3, 0, 0, 2619, 2620, 7, 6, 0, 0, 2620, 552, 1, 0, 0, 0, 2621, 2622, 7, 17, 0, 0, 2622, 2623, 7, 6, 0, 0, 2623, 2624, 7, 0, 0, 0, 2624, 2625, 7, 16, 0, 0, 2625, 2626, 7, 4, 0, 0, 2626, 2627, 7, 3, 0, 0, 2627, 2628, 7, 6, 0, 0, 2628, 554, 1, 0, 0, 0, 2629, 2630, 7, 17, 0, 0, 2630, 2631, 7, 7, 0, 0, 2631, 2632, 7, 5, 0, 0, 2632, 2633, 7, 19, 0, 0, 2633, 2634, 7, 17, 0, 0, 2634, 2635, 7, 7, 0, 0, 2635, 2636, 7, 9, 0, 0, 2636, 2637, 7, 6, 0, 0, 2637, 2638, 7, 9, 0, 0, 2638, 556, 1, 0, 0, 0, 2639, 2640, 7, 17, 0, 0, 2640, 2641, 7, 7, 0, 0, 2641, 2642, 7, 16, 0, 0, 2642, 2643, 7, 19, 0, 0, 2643, 2644, 7, 10, 0, 0, 2644, 2645, 7, 10, 0, 0, 2645, 2646, 7, 2, 0, 0, 2646, 2647, 7, 8, 0, 0, 2647, 2648, 7, 8, 0, 0, 2648, 2649, 7, 6, 0, 0, 2649, 2650, 7, 9, 0, 0, 2650, 558, 1, 0, 0, 0, 2651, 2652, 7, 17, 0, 0, 2652, 2653, 7, 7, 0, 0, 2653, 2654, 7, 16, 0, 0, 2654, 2655, 7, 19, 0, 0, 2655, 2656, 7, 7, 0, 0, 2656, 2657, 7, 9, 0, 0, 2657, 2658, 7, 2, 0, 0, 2658, 2659, 7, 8, 0, 0, 2659, 2660, 7, 2, 0, 0, 2660, 2661, 7, 19, 0, 0, 2661, 2662, 7, 7, 0, 0, 2662, 2663, 7, 4, 0, 0, 2663, 2664, 7, 13, 0, 0, 2664, 560, 1, 0, 0, 0, 2665, 2666, 7, 17, 0, 0, 2666, 2667, 7, 7, 0, 0, 2667, 2668, 7, 2, 0, 0, 2668, 2669, 7, 19, 0, 0, 2669, 2670, 7, 7, 0, 0, 2670, 562, 1, 0, 0, 0, 2671, 2672, 7, 17, 0, 0, 2672, 2673, 7, 7, 0, 0, 2673, 2674, 7, 2, 0, 0, 2674, 2675, 7, 25, 0, 0, 2675, 2676, 7, 17, 0, 0, 2676, 2677, 7, 6, 0, 0, 2677, 564, 1, 0, 0, 0, 2678, 2679, 7, 17, 0, 0, 2679, 2680, 7, 7, 0, 0, 2680, 2681, 7, 1, 0, 0, 2681, 2682, 7, 7, 0, 0, 2682, 2683, 7, 19, 0, 0, 2683, 2684, 7, 21, 0, 0, 2684, 2685, 7, 7, 0, 0, 2685, 566, 1, 0, 0, 0, 2686, 2687, 7, 17, 0, 0, 2687, 2688, 7, 7, 0, 0, 2688, 2689, 7, 10, 0, 0, 2689, 2690, 7, 4, 0, 0, 2690, 2691, 7, 8, 0, 0, 2691, 2692, 7, 16, 0, 0, 2692, 2693, 7, 18, 0, 0, 2693, 2694, 7, 6, 0, 0, 2694, 2695, 7, 9, 0, 0, 2695, 568, 1, 0, 0, 0, 2696, 2697, 7, 17, 0, 0, 2697, 2698, 7, 7, 0, 0, 2698, 2699, 7, 7, 0, 0, 2699, 2700, 7, 6, 0, 0, 2700, 2701, 7, 0, 0, 0, 2701, 2702, 7, 8, 0, 0, 2702, 570, 1, 0, 0, 0, 2703, 2704, 7, 17, 0, 0, 2704, 2705, 7, 7, 0, 0, 2705, 2706, 7, 8, 0, 0, 2706, 2707, 7, 2, 0, 0, 2707, 2708, 7, 13, 0, 0, 2708, 572, 1, 0, 0, 0, 2709, 2710, 7, 17, 0, 0, 2710, 2711, 7, 3, 0, 0, 2711, 2712, 7, 9, 0, 0, 2712, 2713, 7, 4, 0, 0, 2713, 2714, 7, 8, 0, 0, 2714, 2715, 7, 6, 0, 0, 2715, 574, 1, 0, 0, 0, 2716, 2717, 7, 17, 0, 0, 2717, 2718, 7, 0, 0, 0, 2718, 2719, 7, 6, 0, 0, 2719, 576, 1, 0, 0, 0, 2720, 2721, 7, 17, 0, 0, 2721, 2722, 7, 0, 0, 0, 2722, 2723, 7, 6, 0, 0, 2723, 2724, 7, 12, 0, 0, 2724, 578, 1, 0, 0, 0, 2725, 2726, 7, 17, 0, 0, 2726, 2727, 7, 0, 0, 0, 2727, 2728, 7, 2, 0, 0, 2728, 2729, 7, 7, 0, 0, 2729, 2730, 7, 20, 0, 0, 2730, 580, 1, 0, 0, 0, 2731, 2732, 7, 17, 0, 0, 2732, 2733, 7, 8, 0, 0, 2733, 2734, 7, 11, 0, 0, 2734, 2735, 5, 49, 0, 0, 2735, 2736, 5, 54, 0, 0, 2736, 582, 1, 0, 0, 0, 2737, 2738, 7, 17, 0, 0, 2738, 2739, 7, 8, 0, 0, 2739, 2740, 7, 11, 0, 0, 2740, 2741, 5, 51, 0, 0, 2741, 2742, 5, 50, 0, 0, 2742, 584, 1, 0, 0, 0, 2743, 2744, 7, 17, 0, 0, 2744, 2745, 7, 8, 0, 0, 2745, 2746, 7, 11, 0, 0, 2746, 2747, 5, 56, 0, 0, 2747, 586, 1, 0, 0, 0, 2748, 2749, 7, 23, 0, 0, 2749, 2750, 7, 4, 0, 0, 2750, 2751, 7, 13, 0, 0, 2751, 2752, 7, 2, 0, 0, 2752, 2753, 7, 9, 0, 0, 2753, 2754, 7, 4, 0, 0, 2754, 2755, 7, 8, 0, 0, 2755, 2756, 7, 6, 0, 0, 2756, 588, 1, 0, 0, 0, 2757, 2758, 7, 23, 0, 0, 2758, 2759, 7, 4, 0, 0, 2759, 2760, 7, 13, 0, 0, 2760, 2761, 7, 17, 0, 0, 2761, 2762, 7, 6, 0, 0, 2762, 590, 1, 0, 0, 0, 2763, 2764, 7, 23, 0, 0, 2764, 2765, 7, 4, 0, 0, 2765, 2766, 7, 13, 0, 0, 2766, 2767, 7, 17, 0, 0, 2767, 2768, 7, 6, 0, 0, 2768, 2769, 7, 0, 0, 0, 2769, 592, 1, 0, 0, 0, 2770, 2771, 7, 23, 0, 0, 2771, 2772, 7, 6, 0, 0, 2772, 2773, 7, 12, 0, 0, 2773, 2774, 7, 5, 0, 0, 2774, 2775, 7, 19, 0, 0, 2775, 2776, 7, 0, 0, 0, 2776, 2777, 7, 6, 0, 0, 2777, 594, 1, 0, 0, 0, 2778, 2779, 7, 23, 0, 0, 2779, 2780, 7, 6, 0, 0, 2780, 2781, 7, 12, 0, 0, 2781, 2782, 7, 0, 0, 0, 2782, 2783, 7, 2, 0, 0, 2783, 2784, 7, 19, 0, 0, 2784, 2785, 7, 7, 0, 0, 2785, 596, 1, 0, 0, 0, 2786, 2787, 7, 23, 0, 0, 2787, 2788, 7, 2, 0, 0, 2788, 2789, 7, 6, 0, 0, 2789, 2790, 7, 21, 0, 0, 2790, 598, 1, 0, 0, 0, 2791, 2792, 7, 21, 0, 0, 2792, 2793, 7, 18, 0, 0, 2793, 2794, 7, 6, 0, 0, 2794, 2795, 7, 7, 0, 0, 2795, 600, 1, 0, 0, 0, 2796, 2797, 7, 21, 0, 0, 2797, 2798, 7, 18, 0, 0, 2798, 2799, 7, 6, 0, 0, 2799, 2800, 7, 12, 0, 0, 2800, 2801, 7, 6, 0, 0, 2801, 602, 1, 0, 0, 0, 2802, 2803, 7, 21, 0, 0, 2803, 2804, 7, 18, 0, 0, 2804, 2805, 7, 2, 0, 0, 2805, 2806, 7, 13, 0, 0, 2806, 2807, 7, 6, 0, 0, 2807, 604, 1, 0, 0, 0, 2808, 2809, 7, 21, 0, 0, 2809, 2810, 7, 2, 0, 0, 2810, 2811, 7, 7, 0, 0, 2811, 2812, 7, 9, 0, 0, 2812, 2813, 7, 19, 0, 0, 2813, 2814, 7, 21, 0, 0, 2814, 606, 1, 0, 0, 0, 2815, 2816, 7, 21, 0, 0, 2816, 2817, 7, 2, 0, 0, 2817, 2818, 7, 8, 0, 0, 2818, 2819, 7, 18, 0, 0, 2819, 608, 1, 0, 0, 0, 2820, 2821, 7, 21, 0, 0, 2821, 2822, 7, 2, 0, 0, 2822, 2823, 7, 8, 0, 0, 2823, 2824, 7, 18, 0, 0, 2824, 2825, 7, 2, 0, 0, 2825, 2826, 7, 7, 0, 0, 2826, 610, 1, 0, 0, 0, 2827, 2828, 7, 21, 0, 0, 2828, 2829, 7, 2, 0, 0, 2829, 2830, 7, 8, 0, 0, 2830, 2831, 7, 18, 0, 0, 2831, 2832, 7, 19, 0, 0, 2832, 2833, 7, 17, 0, 0, 2833, 2834, 7, 8, 0, 0, 2834, 612, 1, 0, 0, 0, 2835, 2836, 7, 21, 0, 0, 2836, 2837, 7, 19, 0, 0, 2837, 2838, 7, 12, 0, 0, 2838, 2839, 7, 1, 0, 0, 2839, 614, 1, 0, 0, 0, 2840, 2841, 7, 21, 0, 0, 2841, 2842, 7, 12, 0, 0, 2842, 2843, 7, 4, 0, 0, 2843, 2844, 7, 3, 0, 0, 2844, 2845, 7, 3, 0, 0, 2845, 2846, 7, 6, 0, 0, 2846, 2847, 7, 12, 0, 0, 2847, 616, 1, 0, 0, 0, 2848, 2849, 7, 21, 0, 0, 2849, 2850, 7, 12, 0, 0, 2850, 2851, 7, 2, 0, 0, 2851, 2852, 7, 8, 0, 0, 2852, 2853, 7, 6, 0, 0, 2853, 618, 1, 0, 0, 0, 2854, 2855, 7, 14, 0, 0, 2855, 2856, 7, 6, 0, 0, 2856, 2857, 7, 4, 0, 0, 2857, 2858, 7, 12, 0, 0, 2858, 620, 1, 0, 0, 0, 2859, 2860, 7, 15, 0, 0, 2860, 2861, 7, 19, 0, 0, 2861, 2862, 7, 7, 0, 0, 2862, 2863, 7, 6, 0, 0, 2863, 622, 1, 0, 0, 0, 2864, 2865, 5, 61, 0, 0, 2865, 624, 1, 0, 0, 0, 2866, 2867, 5, 60, 0, 0, 2867, 2871, 5, 62, 0, 0, 2868, 2869, 5, 33, 0, 0, 2869, 2871, 5, 61, 0, 0, 2870, 2866, 1, 0, 0, 0, 2870, 2868, 1, 0, 0, 0, 2871, 626, 1, 0, 0, 0, 2872, 2873, 5, 60, 0, 0, 2873, 628, 1, 0, 0, 0, 2874, 2875, 5, 60, 0, 0, 2875, 2876, 5, 61, 0, 0, 2876, 630, 1, 0, 0, 0, 2877, 2878, 5, 62, 0, 0, 2878, 632, 1, 0, 0, 0, 2879, 2880, 5, 62, 0, 0, 2880, 2881, 5, 61, 0, 0, 2881, 634, 1, 0, 0, 0, 2882, 2883, 5, 43, 0, 0, 2883, 636, 1, 0, 0, 0, 2884, 2885, 5, 45, 0, 0, 2885, 638, 1, 0, 0, 0, 2886, 2887, 5, 42, 0, 0, 2887, 640, 1, 0, 0, 0, 2888, 2889, 5, 47, 0, 0, 2889, 642, 1, 0, 0, 0, 2890, 2891, 5, 37, 0, 0, 2891, 644, 1, 0, 0, 0, 2892, 2893, 5, 124, 0, 0, 2893, 2894, 5, 124, 0, 0, 2894, 646, 1, 0, 0, 0, 2895, 2896, 5, 63, 0, 0, 2896, 648, 1, 0, 0, 0, 2897, 2898, 5, 59, 0, 0, 2898, 650, 1, 0, 0, 0, 2899, 2905, 5, 39, 0, 0, 2900, 2904, 8, 26, 0, 0, 2901, 2902, 5, 39, 0, 0, 2902, 2904, 5, 39, 0, 0, 2903, 2900, 1, 0, 0, 0, 2903, 2901, 1, 0, 0, 0, 2904, 2907, 1, 0, 0, 0, 2905, 2903, 1, 0, 0, 0, 2905, 2906, 1, 0, 0, 0, 2906, 2908, 1, 0, 0, 0, 2907, 2905, 1, 0, 0, 0, 2908, 2909, 5, 39, 0, 0, 2909, 652, 1, 0, 0, 0, 2910, 2911, 7, 17, 0, 0, 2911, 2912, 5, 38, 0, 0, 2912, 2913, 5, 39, 0, 0, 2913, 2919, 1, 0, 0, 0, 2914, 2918, 8, 26, 0, 0, 2915, 2916, 5, 39, 0, 0, 2916, 2918, 5, 39, 0, 0, 2917, 2914, 1, 0, 0, 0, 2917, 2915, 1, 0, 0, 0, 2918, 2921, 1, 0, 0, 0, 2919, 2917, 1, 0, 0, 0, 2919, 2920, 1, 0, 0, 0, 2920, 2922, 1, 0, 0, 0, 2921, 2919, 1, 0, 0, 0, 2922, 2923, 5, 39, 0, 0, 2923, 654, 1, 0, 0, 0, 2924, 2925, 7, 22, 0, 0, 2925, 2926, 5, 39, 0, 0, 2926, 2930, 1, 0, 0, 0, 2927, 2929, 8, 26, 0, 0, 2928, 2927, 1, 0, 0, 0, 2929, 2932, 1, 0, 0, 0, 2930, 2928, 1, 0, 0, 0, 2930, 2931, 1, 0, 0, 0, 2931, 2933, 1, 0, 0, 0, 2932, 2930, 1, 0, 0, 0, 2933, 2934, 5, 39, 0, 0, 2934, 656, 1, 0, 0, 0, 2935, 2940, 3, 671, 335, 0, 2936, 2940, 3, 673, 336, 0, 2937, 2940, 3, 675, 337, 0, 2938, 2940, 3, 677, 338, 0, 2939, 2935, 1, 0, 0, 0, 2939, 2936, 1, 0, 0, 0, 2939, 2937, 1, 0, 0, 0, 2939, 2938, 1, 0, 0, 0, 2940, 658, 1, 0, 0, 0, 2941, 2942, 3, 671, 335, 0, 2942, 2944, 5, 46, 0, 0, 2943, 2945, 3, 671, 335, 0, 2944, 2943, 1, 0, 0, 0, 2944, 2945, 1, 0, 0, 0, 2945, 2949, 1, 0, 0, 0, 2946, 2947, 5, 46, 0, 0, 2947, 2949, 3, 671, 335, 0, 2948, 2941, 1, 0, 0, 0, 2948, 2946, 1, 0, 0, 0, 2949, 660, 1, 0, 0, 0, 2950, 2952, 3, 681, 340, 0, 2951, 2950, 1, 0, 0, 0, 2952, 2953, 1, 0, 0, 0, 2953, 2951, 1, 0, 0, 0, 2953, 2954, 1, 0, 0, 0, 2954, 2962, 1, 0, 0, 0, 2955, 2959, 5, 46, 0, 0, 2956, 2958, 3, 681, 340, 0, 2957, 2956, 1, 0, 0, 0, 2958, 2961, 1, 0, 0, 0, 2959, 2957, 1, 0, 0, 0, 2959, 2960, 1, 0, 0, 0, 2960, 2963, 1, 0, 0, 0, 2961, 2959, 1, 0, 0, 0, 2962, 2955, 1, 0, 0, 0, 2962, 2963, 1, 0, 0, 0, 2963, 2964, 1, 0, 0, 0, 2964, 2965, 3, 679, 339, 0, 2965, 2975, 1, 0, 0, 0, 2966, 2968, 5, 46, 0, 0, 2967, 2969, 3, 681, 340, 0, 2968, 2967, 1, 0, 0, 0, 2969, 2970, 1, 0, 0, 0, 2970, 2968, 1, 0, 0, 0, 2970, 2971, 1, 0, 0, 0, 2971, 2972, 1, 0, 0, 0, 2972, 2973, 3, 679, 339, 0, 2973, 2975, 1, 0, 0, 0, 2974, 2951, 1, 0, 0, 0, 2974, 2966, 1, 0, 0, 0, 2975, 662, 1, 0, 0, 0, 2976, 2979, 3, 683, 341, 0, 2977, 2979, 5, 95, 0, 0, 2978, 2976, 1, 0, 0, 0, 2978, 2977, 1, 0, 0, 0, 2979, 2985, 1, 0, 0, 0, 2980, 2984, 3, 683, 341, 0, 2981, 2984, 3, 681, 340, 0, 2982, 2984, 5, 95, 0, 0, 2983, 2980, 1, 0, 0, 0, 2983, 2981, 1, 0, 0, 0, 2983, 2982, 1, 0, 0, 0, 2984, 2987, 1, 0, 0, 0, 2985, 2983, 1, 0, 0, 0, 2985, 2986, 1, 0, 0, 0, 2986, 664, 1, 0, 0, 0, 2987, 2985, 1, 0, 0, 0, 2988, 2992, 3, 681, 340, 0, 2989, 2993, 3, 683, 341, 0, 2990, 2993, 3, 681, 340, 0, 2991, 2993, 5, 95, 0, 0, 2992, 2989, 1, 0, 0, 0, 2992, 2990, 1, 0, 0, 0, 2992, 2991, 1, 0, 0, 0, 2993, 2994, 1, 0, 0, 0, 2994, 2992, 1, 0, 0, 0, 2994, 2995, 1, 0, 0, 0, 2995, 666, 1, 0, 0, 0, 2996, 3002, 5, 34, 0, 0, 2997, 3001, 8, 27, 0, 0, 2998, 2999, 5, 34, 0, 0, 2999, 3001, 5, 34, 0, 0, 3000, 2997, 1, 0, 0, 0, 3000, 2998, 1, 0, 0, 0, 3001, 3004, 1, 0, 0, 0, 3002, 3000, 1, 0, 0, 0, 3002, 3003, 1, 0, 0, 0, 3003, 3005, 1, 0, 0, 0, 3004, 3002, 1, 0, 0, 0, 3005, 3006, 5, 34, 0, 0, 3006, 668, 1, 0, 0, 0, 3007, 3013, 5, 96, 0, 0, 3008, 3012, 8, 28, 0, 0, 3009, 3010, 5, 96, 0, 0, 3010, 3012, 5, 96, 0, 0, 3011, 3008, 1, 0, 0, 0, 3011, 3009, 1, 0, 0, 0, 3012, 3015, 1, 0, 0, 0, 3013, 3011, 1, 0, 0, 0, 3013, 3014, 1, 0, 0, 0, 3014, 3016, 1, 0, 0, 0, 3015, 3013, 1, 0, 0, 0, 3016, 3017, 5, 96, 0, 0, 3017, 670, 1, 0, 0, 0, 3018, 3025, 3, 681, 340, 0, 3019, 3021, 5, 95, 0, 0, 3020, 3019, 1, 0, 0, 0, 3020, 3021, 1, 0, 0, 0, 3021, 3022, 1, 0, 0, 0, 3022, 3024, 3, 681, 340, 0, 3023, 3020, 1, 0, 0, 0, 3024, 3027, 1, 0, 0, 0, 3025, 3023, 1, 0, 0, 0, 3025, 3026, 1, 0, 0, 0, 3026, 672, 1, 0, 0, 0, 3027, 3025, 1, 0, 0, 0, 3028, 3029, 5, 48, 0, 0, 3029, 3030, 7, 22, 0, 0, 3030, 3038, 1, 0, 0, 0, 3031, 3033, 5, 95, 0, 0, 3032, 3031, 1, 0, 0, 0, 3032, 3033, 1, 0, 0, 0, 3033, 3036, 1, 0, 0, 0, 3034, 3037, 3, 681, 340, 0, 3035, 3037, 7, 29, 0, 0, 3036, 3034, 1, 0, 0, 0, 3036, 3035, 1, 0, 0, 0, 3037, 3039, 1, 0, 0, 0, 3038, 3032, 1, 0, 0, 0, 3039, 3040, 1, 0, 0, 0, 3040, 3038, 1, 0, 0, 0, 3040, 3041, 1, 0, 0, 0, 3041, 674, 1, 0, 0, 0, 3042, 3043, 5, 48, 0, 0, 3043, 3044, 7, 19, 0, 0, 3044, 3049, 1, 0, 0, 0, 3045, 3047, 5, 95, 0, 0, 3046, 3045, 1, 0, 0, 0, 3046, 3047, 1, 0, 0, 0, 3047, 3048, 1, 0, 0, 0, 3048, 3050, 7, 30, 0, 0, 3049, 3046, 1, 0, 0, 0, 3050, 3051, 1, 0, 0, 0, 3051, 3049, 1, 0, 0, 0, 3051, 3052, 1, 0, 0, 0, 3052, 676, 1, 0, 0, 0, 3053, 3054, 5, 48, 0, 0, 3054, 3055, 7, 5, 0, 0, 3055, 3060, 1, 0, 0, 0, 3056, 3058, 5, 95, 0, 0, 3057, 3056, 1, 0, 0, 0, 3057, 3058, 1, 0, 0, 0, 3058, 3059, 1, 0, 0, 0, 3059, 3061, 7, 31, 0, 0, 3060, 3057, 1, 0, 0, 0, 3061, 3062, 1, 0, 0, 0, 3062, 3060, 1, 0, 0, 0, 3062, 3063, 1, 0, 0, 0, 3063, 678, 1, 0, 0, 0, 3064, 3066, 7, 6, 0, 0, 3065, 3067, 7, 32, 0, 0, 3066, 3065, 1, 0, 0, 0, 3066, 3067, 1, 0, 0, 0, 3067, 3069, 1, 0, 0, 0, 3068, 3070, 3, 681, 340, 0, 3069, 3068, 1, 0, 0, 0, 3070, 3071, 1, 0, 0, 0, 3071, 3069, 1, 0, 0, 0, 3071, 3072, 1, 0, 0, 0, 3072, 680, 1, 0, 0, 0, 3073, 3074, 7, 33, 0, 0, 3074, 682, 1, 0, 0, 0, 3075, 3076, 7, 34, 0, 0, 3076, 684, 1, 0, 0, 0, 3077, 3078, 5, 45, 0, 0, 3078, 3079, 5, 45, 0, 0, 3079, 3083, 1, 0, 0, 0, 3080, 3082, 8, 35, 0, 0, 3081, 3080, 1, 0, 0, 0, 3082, 3085, 1, 0, 0, 0, 3083, 3081, 1, 0, 0, 0, 3083, 3084, 1, 0, 0, 0, 3084, 3087, 1, 0, 0, 0, 3085, 3083, 1, 0, 0, 0, 3086, 3088, 5, 13, 0, 0, 3087, 3086, 1, 0, 0, 0, 3087, 3088, 1, 0, 0, 0, 3088, 3090, 1, 0, 0, 0, 3089, 3091, 5, 10, 0, 0, 3090, 3089, 1, 0, 0, 0, 3090, 3091, 1, 0, 0, 0, 3091, 3092, 1, 0, 0, 0, 3092, 3093, 6, 342, 0, 0, 3093, 686, 1, 0, 0, 0, 3094, 3095, 5, 47, 0, 0, 3095, 3096, 5, 42, 0, 0, 3096, 3100, 1, 0, 0, 0, 3097, 3099, 9, 0, 0, 0, 3098, 3097, 1, 0, 0, 0, 3099, 3102, 1, 0, 0, 0, 3100, 3101, 1, 0, 0, 0, 3100, 3098, 1, 0, 0, 0, 3101, 3103, 1, 0, 0, 0, 3102, 3100, 1, 0, 0, 0, 3103, 3104, 5, 42, 0, 0, 3104, 3105, 5, 47, 0, 0, 3105, 3106, 1, 0, 0, 0, 3106, 3107, 6, 343, 0, 0, 3107, 688, 1, 0, 0, 0, 3108, 3110, 7, 36, 0, 0, 3109, 3108, 1, 0, 0, 0, 3110, 3111, 1, 0, 0, 0, 3111, 3109, 1, 0, 0, 0, 3111, 3112, 1, 0, 0, 0, 3112, 3113, 1, 0, 0, 0, 3113, 3114, 6, 344, 0, 0, 3114, 690, 1, 0, 0, 0, 3115, 3116, 9, 0, 0, 0, 3116, 692, 1, 0, 0, 0, 40, 0, 2870, 2903, 2905, 2917, 2919, 2930, 2939, 2944, 2948, 2953, 2959, 2962, 2970, 2974, 2978, 2983, 2985, 2992, 2994, 3000, 3002, 3011, 3013, 3020, 3025, 3032, 3036, 3040, 3046, 3051, 3057, 3062, 3066, 3071, 3083, 3087, 3090, 3100, 3111, 1, 0, 1, 0] \ No newline at end of file diff --git a/src/lib/trino/TrinoSqlLexer.tokens b/src/lib/trino/TrinoSqlLexer.tokens index 5cdf889b..88570b2a 100644 --- a/src/lib/trino/TrinoSqlLexer.tokens +++ b/src/lib/trino/TrinoSqlLexer.tokens @@ -14,524 +14,650 @@ T__12=13 T__13=14 T__14=15 T__15=16 -KW_ADD=17 -KW_ADMIN=18 -KW_AFTER=19 -KW_ALL=20 -KW_ALTER=21 -KW_ANALYZE=22 -KW_AND=23 -KW_ANY=24 -KW_ARRAY=25 -KW_AS=26 -KW_ASC=27 -KW_AT=28 -KW_AUTHORIZATION=29 -KW_BERNOULLI=30 -KW_BETWEEN=31 -KW_BY=32 -KW_CALL=33 -KW_CASCADE=34 -KW_CASE=35 -KW_CAST=36 -KW_CATALOGS=37 -KW_COLUMN=38 -KW_COLUMNS=39 -KW_COMMENT=40 -KW_COMMIT=41 -KW_COMMITTED=42 -KW_CONSTRAINT=43 -KW_CREATE=44 -KW_CROSS=45 -KW_CUBE=46 -KW_CURRENT=47 -KW_CURRENT_CATALOG=48 -KW_CURRENT_DATE=49 -KW_CURRENT_PATH=50 -KW_CURRENT_ROLE=51 -KW_CURRENT_SCHEMA=52 -KW_CURRENT_TIME=53 -KW_CURRENT_TIMESTAMP=54 -KW_CURRENT_USER=55 -KW_DATA=56 -KW_DATE=57 -KW_DAY=58 -KW_DEFAULT=59 -KW_DEALLOCATE=60 -KW_DEFINER=61 -KW_DELETE=62 -KW_DESC=63 -KW_DESCRIBE=64 -KW_DEFINE=65 -KW_DISTINCT=66 -KW_DISTRIBUTED=67 -KW_DOUBLE=68 -KW_DROP=69 -KW_ELSE=70 -KW_EMPTY=71 -KW_END=72 -KW_ESCAPE=73 -KW_EXCEPT=74 -KW_EXCLUDING=75 -KW_EXECUTE=76 -KW_EXISTS=77 -KW_EXPLAIN=78 -KW_EXTRACT=79 -KW_FALSE=80 -KW_FETCH=81 -KW_FILTER=82 -KW_FINAL=83 -KW_FIRST=84 -KW_FOLLOWING=85 -KW_FOR=86 -KW_FORMAT=87 -KW_FROM=88 -KW_FULL=89 -KW_FUNCTIONS=90 -KW_GRANT=91 -KW_GRANTED=92 -KW_GRANTS=93 -KW_DENY=94 -KW_GRAPHVIZ=95 -KW_GROUP=96 -KW_GROUPING=97 -KW_GROUPS=98 -KW_HAVING=99 -KW_HOUR=100 -KW_IF=101 -KW_IGNORE=102 -KW_IN=103 -KW_INCLUDING=104 -KW_INITIAL=105 -KW_INNER=106 -KW_INPUT=107 -KW_INSERT=108 -KW_INTERSECT=109 -KW_INTERVAL=110 -KW_INTO=111 -KW_INVOKER=112 -KW_IO=113 -KW_IS=114 -KW_ISOLATION=115 -KW_JOIN=116 -KW_JSON=117 -KW_LAST=118 -KW_LATERAL=119 -KW_LEFT=120 -KW_LEVEL=121 -KW_LIKE=122 -KW_LIMIT=123 -KW_LOCAL=124 -KW_LOCALTIME=125 -KW_LOCALTIMESTAMP=126 -KW_LOGICAL=127 -KW_MAP=128 -KW_MATCH=129 -KW_MATCHED=130 -KW_MATCHES=131 -KW_MATCH_RECOGNIZE=132 -KW_MATERIALIZED=133 -KW_MEASURES=134 -KW_MERGE=135 -KW_MINUTE=136 -KW_MONTH=137 -KW_NATURAL=138 -KW_NEXT=139 -KW_NFC=140 -KW_NFD=141 -KW_NFKC=142 -KW_NFKD=143 -KW_NO=144 -KW_NONE=145 -KW_NORMALIZE=146 -KW_NOT=147 -KW_NULL=148 -KW_NULLIF=149 -KW_NULLS=150 -KW_OFFSET=151 -KW_OMIT=152 -KW_ON=153 -KW_ONE=154 -KW_ONLY=155 -KW_OPTION=156 -KW_OR=157 -KW_ORDER=158 -KW_ORDINALITY=159 -KW_OUTER=160 -KW_OUTPUT=161 -KW_OVER=162 -KW_PARTITION=163 -KW_PARTITIONS=164 -KW_PAST=165 -KW_PATH=166 -KW_PATTERN=167 -KW_PER=168 -KW_PERMUTE=169 -KW_POSITION=170 -KW_PRECEDING=171 -KW_PRECISION=172 -KW_PREPARE=173 -KW_PRIVILEGES=174 -KW_PROPERTIES=175 -KW_RANGE=176 -KW_READ=177 -KW_RECURSIVE=178 -KW_REFRESH=179 -KW_RENAME=180 -KW_REPEATABLE=181 -KW_REPLACE=182 -KW_RESET=183 -KW_RESPECT=184 -KW_RESTRICT=185 -KW_REVOKE=186 -KW_RIGHT=187 -KW_ROLE=188 -KW_ROLES=189 -KW_ROLLBACK=190 -KW_ROLLUP=191 -KW_ROW=192 -KW_ROWS=193 -KW_RUNNING=194 -KW_SCHEMA=195 -KW_SCHEMAS=196 -KW_SECOND=197 -KW_SECURITY=198 -KW_SEEK=199 -KW_SELECT=200 -KW_SERIALIZABLE=201 -KW_SESSION=202 -KW_SET=203 -KW_SETS=204 -KW_SHOW=205 -KW_SOME=206 -KW_START=207 -KW_STATS=208 -KW_SUBSET=209 -KW_SUBSTRING=210 -KW_SYSTEM=211 -KW_TABLE=212 -KW_TABLES=213 -KW_TABLESAMPLE=214 -KW_TEXT=215 -KW_THEN=216 -KW_TIES=217 -KW_TIME=218 -KW_TIMESTAMP=219 -KW_TO=220 -KW_TRANSACTION=221 -KW_TRUNCATE=222 -KW_TRUE=223 -KW_TRY_CAST=224 -KW_TYPE=225 -KW_UESCAPE=226 -KW_UNBOUNDED=227 -KW_UNCOMMITTED=228 -KW_UNION=229 -KW_UNMATCHED=230 -KW_UNNEST=231 -KW_UPDATE=232 -KW_USE=233 -KW_USER=234 -KW_USING=235 -KW_VALIDATE=236 -KW_VALUES=237 -KW_VERBOSE=238 -KW_VIEW=239 -KW_WHEN=240 -KW_WHERE=241 -KW_WINDOW=242 -KW_WITH=243 -KW_WITHOUT=244 -KW_WORK=245 -KW_WRITE=246 -KW_YEAR=247 -KW_ZONE=248 -EQ=249 -NEQ=250 -LT=251 -LTE=252 -GT=253 -GTE=254 -PLUS=255 -MINUS=256 -ASTERISK=257 -SLASH=258 -PERCENT=259 -CONCAT=260 -QUESTION_MARK=261 -STRING=262 -UNICODE_STRING=263 -BINARY_LITERAL=264 -INTEGER_VALUE=265 -DECIMAL_VALUE=266 -DOUBLE_VALUE=267 -IDENTIFIER=268 -DIGIT_IDENTIFIER=269 -QUOTED_IDENTIFIER=270 -BACKQUOTED_IDENTIFIER=271 -SEMICOLON=272 -SIMPLE_COMMENT=273 -BRACKETED_COMMENT=274 -WS=275 -UNRECOGNIZED=276 +T__16=17 +KW_ABSENT=18 +KW_ADD=19 +KW_ADMIN=20 +KW_AFTER=21 +KW_ALL=22 +KW_ALTER=23 +KW_ANALYZE=24 +KW_AND=25 +KW_ANY=26 +KW_ARRAY=27 +KW_AS=28 +KW_ASC=29 +KW_AT=30 +KW_AUTHORIZATION=31 +KW_BEGIN=32 +KW_BERNOULLI=33 +KW_BETWEEN=34 +KW_BOTH=35 +KW_BY=36 +KW_CALL=37 +KW_CALLED=38 +KW_CASCADE=39 +KW_CASE=40 +KW_CAST=41 +KW_CATALOG=42 +KW_CATALOGS=43 +KW_COLUMN=44 +KW_COLUMNS=45 +KW_COMMENT=46 +KW_COMMIT=47 +KW_COMMITTED=48 +KW_CONDITIONAL=49 +KW_CONSTRAINT=50 +KW_COUNT=51 +KW_COPARTITION=52 +KW_CREATE=53 +KW_CROSS=54 +KW_CUBE=55 +KW_CURRENT=56 +KW_CURRENT_CATALOG=57 +KW_CURRENT_DATE=58 +KW_CURRENT_PATH=59 +KW_CURRENT_ROLE=60 +KW_CURRENT_SCHEMA=61 +KW_CURRENT_TIME=62 +KW_CURRENT_TIMESTAMP=63 +KW_CURRENT_USER=64 +KW_DATA=65 +KW_DATE=66 +KW_DAY=67 +KW_DEALLOCATE=68 +KW_DECLARE=69 +KW_DEFAULT=70 +KW_DEFINE=71 +KW_DEFINER=72 +KW_DELETE=73 +KW_DENY=74 +KW_DESC=75 +KW_DESCRIBE=76 +KW_DESCRIPTOR=77 +KW_DETERMINISTIC=78 +KW_DISTINCT=79 +KW_DISTRIBUTED=80 +KW_DO=81 +KW_DOUBLE=82 +KW_DROP=83 +KW_ELSE=84 +KW_EMPTY=85 +KW_ELSEIF=86 +KW_ENCODING=87 +KW_END=88 +KW_ERROR=89 +KW_ESCAPE=90 +KW_EXCEPT=91 +KW_EXCLUDING=92 +KW_EXECUTE=93 +KW_EXISTS=94 +KW_EXPLAIN=95 +KW_EXTRACT=96 +KW_FALSE=97 +KW_FETCH=98 +KW_FILTER=99 +KW_FINAL=100 +KW_FIRST=101 +KW_FOLLOWING=102 +KW_FOR=103 +KW_FORMAT=104 +KW_FROM=105 +KW_FULL=106 +KW_FUNCTION=107 +KW_FUNCTIONS=108 +KW_GRACE=109 +KW_GRANT=110 +KW_GRANTED=111 +KW_GRANTS=112 +KW_GRAPHVIZ=113 +KW_GROUP=114 +KW_GROUPING=115 +KW_GROUPS=116 +KW_HAVING=117 +KW_HOUR=118 +KW_IF=119 +KW_IGNORE=120 +KW_IMMEDIATE=121 +KW_IN=122 +KW_INCLUDING=123 +KW_INITIAL=124 +KW_INNER=125 +KW_INPUT=126 +KW_INSERT=127 +KW_INTERSECT=128 +KW_INTERVAL=129 +KW_INTO=130 +KW_INVOKER=131 +KW_IO=132 +KW_IS=133 +KW_ISOLATION=134 +KW_ITERATE=135 +KW_JOIN=136 +KW_JSON=137 +KW_JSON_ARRAY=138 +KW_JSON_EXISTS=139 +KW_JSON_OBJECT=140 +KW_JSON_QUERY=141 +KW_JSON_TABLE=142 +KW_JSON_VALUE=143 +KW_KEEP=144 +KW_KEY=145 +KW_KEYS=146 +KW_LANGUAGE=147 +KW_LAST=148 +KW_LATERAL=149 +KW_LEADING=150 +KW_LEAVE=151 +KW_LEFT=152 +KW_LEVEL=153 +KW_LIKE=154 +KW_LIMIT=155 +KW_LISTAGG=156 +KW_LOCAL=157 +KW_LOCALTIME=158 +KW_LOCALTIMESTAMP=159 +KW_LOGICAL=160 +KW_LOOP=161 +KW_MAP=162 +KW_MATCH=163 +KW_MATCHED=164 +KW_MATCHES=165 +KW_MATCH_RECOGNIZE=166 +KW_MATERIALIZED=167 +KW_MEASURES=168 +KW_MERGE=169 +KW_MINUTE=170 +KW_MONTH=171 +KW_NATURAL=172 +KW_NESTED=173 +KW_NEXT=174 +KW_NFC=175 +KW_NFD=176 +KW_NFKC=177 +KW_NFKD=178 +KW_NO=179 +KW_NONE=180 +KW_NORMALIZE=181 +KW_NOT=182 +KW_NULL=183 +KW_NULLIF=184 +KW_NULLS=185 +KW_OBJECT=186 +KW_OF=187 +KW_OFFSET=188 +KW_OMIT=189 +KW_ON=190 +KW_ONE=191 +KW_ONLY=192 +KW_OPTION=193 +KW_OR=194 +KW_ORDER=195 +KW_ORDINALITY=196 +KW_OUTER=197 +KW_OUTPUT=198 +KW_OVER=199 +KW_OVERFLOW=200 +KW_PARTITION=201 +KW_PARTITIONS=202 +KW_PASSING=203 +KW_PAST=204 +KW_PATH=205 +KW_PATTERN=206 +KW_PER=207 +KW_PERIOD=208 +KW_PERMUTE=209 +KW_PLAN=210 +KW_POSITION=211 +KW_PRECEDING=212 +KW_PRECISION=213 +KW_PREPARE=214 +KW_PRIVILEGES=215 +KW_PROPERTIES=216 +KW_PRUNE=217 +KW_QUOTES=218 +KW_RANGE=219 +KW_READ=220 +KW_RECURSIVE=221 +KW_REFRESH=222 +KW_RENAME=223 +KW_REPEAT=224 +KW_REPEATABLE=225 +KW_REPLACE=226 +KW_RESET=227 +KW_RESPECT=228 +KW_RESTRICT=229 +KW_RETURN=230 +KW_RETURNING=231 +KW_RETURNS=232 +KW_REVOKE=233 +KW_RIGHT=234 +KW_ROLE=235 +KW_ROLES=236 +KW_ROLLBACK=237 +KW_ROLLUP=238 +KW_ROW=239 +KW_ROWS=240 +KW_RUNNING=241 +KW_SCALAR=242 +KW_SCHEMA=243 +KW_SCHEMAS=244 +KW_SECOND=245 +KW_SECURITY=246 +KW_SEEK=247 +KW_SELECT=248 +KW_SERIALIZABLE=249 +KW_SESSION=250 +KW_SET=251 +KW_SETS=252 +KW_SHOW=253 +KW_SOME=254 +KW_START=255 +KW_STATS=256 +KW_SUBSET=257 +KW_SUBSTRING=258 +KW_SYSTEM=259 +KW_TABLE=260 +KW_TABLES=261 +KW_TABLESAMPLE=262 +KW_TEXT=263 +KW_TEXT_STRING=264 +KW_THEN=265 +KW_TIES=266 +KW_TIME=267 +KW_TIMESTAMP=268 +KW_TO=269 +KW_TRAILING=270 +KW_TRANSACTION=271 +KW_TRIM=272 +KW_TRUE=273 +KW_TRUNCATE=274 +KW_TRY_CAST=275 +KW_TYPE=276 +KW_UESCAPE=277 +KW_UNBOUNDED=278 +KW_UNCOMMITTED=279 +KW_UNCONDITIONAL=280 +KW_UNION=281 +KW_UNIQUE=282 +KW_UNKNOWN=283 +KW_UNMATCHED=284 +KW_UNNEST=285 +KW_UNTIL=286 +KW_UPDATE=287 +KW_USE=288 +KW_USER=289 +KW_USING=290 +KW_UTF16=291 +KW_UTF32=292 +KW_UTF8=293 +KW_VALIDATE=294 +KW_VALUE=295 +KW_VALUES=296 +KW_VERBOSE=297 +KW_VERSION=298 +KW_VIEW=299 +KW_WHEN=300 +KW_WHERE=301 +KW_WHILE=302 +KW_WINDOW=303 +KW_WITH=304 +KW_WITHIN=305 +KW_WITHOUT=306 +KW_WORK=307 +KW_WRAPPER=308 +KW_WRITE=309 +KW_YEAR=310 +KW_ZONE=311 +EQ=312 +NEQ=313 +LT=314 +LTE=315 +GT=316 +GTE=317 +PLUS=318 +MINUS=319 +ASTERISK=320 +SLASH=321 +PERCENT=322 +CONCAT=323 +QUESTION_MARK=324 +SEMICOLON=325 +STRING=326 +UNICODE_STRING=327 +BINARY_LITERAL=328 +INTEGER_VALUE=329 +DECIMAL_VALUE=330 +DOUBLE_VALUE=331 +IDENTIFIER=332 +DIGIT_IDENTIFIER=333 +QUOTED_IDENTIFIER=334 +BACKQUOTED_IDENTIFIER=335 +SIMPLE_COMMENT=336 +BRACKETED_COMMENT=337 +WS=338 +UNRECOGNIZED=339 '('=1 ')'=2 ','=3 '.'=4 'SKIP'=5 -'->'=6 -'['=7 -']'=8 -'|'=9 -'^'=10 -'$'=11 -'{-'=12 -'-}'=13 -'{'=14 -'}'=15 -'=>'=16 -'ADD'=17 -'ADMIN'=18 -'AFTER'=19 -'ALL'=20 -'ALTER'=21 -'ANALYZE'=22 -'AND'=23 -'ANY'=24 -'ARRAY'=25 -'AS'=26 -'ASC'=27 -'AT'=28 -'AUTHORIZATION'=29 -'BERNOULLI'=30 -'BETWEEN'=31 -'BY'=32 -'CALL'=33 -'CASCADE'=34 -'CASE'=35 -'CAST'=36 -'CATALOGS'=37 -'COLUMN'=38 -'COLUMNS'=39 -'COMMENT'=40 -'COMMIT'=41 -'COMMITTED'=42 -'CONSTRAINT'=43 -'CREATE'=44 -'CROSS'=45 -'CUBE'=46 -'CURRENT'=47 -'CURRENT_CATALOG'=48 -'CURRENT_DATE'=49 -'CURRENT_PATH'=50 -'CURRENT_ROLE'=51 -'CURRENT_SCHEMA'=52 -'CURRENT_TIME'=53 -'CURRENT_TIMESTAMP'=54 -'CURRENT_USER'=55 -'DATA'=56 -'DATE'=57 -'DAY'=58 -'DEFAULT'=59 -'DEALLOCATE'=60 -'DEFINER'=61 -'DELETE'=62 -'DESC'=63 -'DESCRIBE'=64 -'DEFINE'=65 -'DISTINCT'=66 -'DISTRIBUTED'=67 -'DOUBLE'=68 -'DROP'=69 -'ELSE'=70 -'EMPTY'=71 -'END'=72 -'ESCAPE'=73 -'EXCEPT'=74 -'EXCLUDING'=75 -'EXECUTE'=76 -'EXISTS'=77 -'EXPLAIN'=78 -'EXTRACT'=79 -'FALSE'=80 -'FETCH'=81 -'FILTER'=82 -'FINAL'=83 -'FIRST'=84 -'FOLLOWING'=85 -'FOR'=86 -'FORMAT'=87 -'FROM'=88 -'FULL'=89 -'FUNCTIONS'=90 -'GRANT'=91 -'GRANTED'=92 -'GRANTS'=93 -'DENY'=94 -'GRAPHVIZ'=95 -'GROUP'=96 -'GROUPING'=97 -'GROUPS'=98 -'HAVING'=99 -'HOUR'=100 -'IF'=101 -'IGNORE'=102 -'IN'=103 -'INCLUDING'=104 -'INITIAL'=105 -'INNER'=106 -'INPUT'=107 -'INSERT'=108 -'INTERSECT'=109 -'INTERVAL'=110 -'INTO'=111 -'INVOKER'=112 -'IO'=113 -'IS'=114 -'ISOLATION'=115 -'JOIN'=116 -'JSON'=117 -'LAST'=118 -'LATERAL'=119 -'LEFT'=120 -'LEVEL'=121 -'LIKE'=122 -'LIMIT'=123 -'LOCAL'=124 -'LOCALTIME'=125 -'LOCALTIMESTAMP'=126 -'LOGICAL'=127 -'MAP'=128 -'MATCH'=129 -'MATCHED'=130 -'MATCHES'=131 -'MATCH_RECOGNIZE'=132 -'MATERIALIZED'=133 -'MEASURES'=134 -'MERGE'=135 -'MINUTE'=136 -'MONTH'=137 -'NATURAL'=138 -'NEXT'=139 -'NFC'=140 -'NFD'=141 -'NFKC'=142 -'NFKD'=143 -'NO'=144 -'NONE'=145 -'NORMALIZE'=146 -'NOT'=147 -'NULL'=148 -'NULLIF'=149 -'NULLS'=150 -'OFFSET'=151 -'OMIT'=152 -'ON'=153 -'ONE'=154 -'ONLY'=155 -'OPTION'=156 -'OR'=157 -'ORDER'=158 -'ORDINALITY'=159 -'OUTER'=160 -'OUTPUT'=161 -'OVER'=162 -'PARTITION'=163 -'PARTITIONS'=164 -'PAST'=165 -'PATH'=166 -'PATTERN'=167 -'PER'=168 -'PERMUTE'=169 -'POSITION'=170 -'PRECEDING'=171 -'PRECISION'=172 -'PREPARE'=173 -'PRIVILEGES'=174 -'PROPERTIES'=175 -'RANGE'=176 -'READ'=177 -'RECURSIVE'=178 -'REFRESH'=179 -'RENAME'=180 -'REPEATABLE'=181 -'REPLACE'=182 -'RESET'=183 -'RESPECT'=184 -'RESTRICT'=185 -'REVOKE'=186 -'RIGHT'=187 -'ROLE'=188 -'ROLES'=189 -'ROLLBACK'=190 -'ROLLUP'=191 -'ROW'=192 -'ROWS'=193 -'RUNNING'=194 -'SCHEMA'=195 -'SCHEMAS'=196 -'SECOND'=197 -'SECURITY'=198 -'SEEK'=199 -'SELECT'=200 -'SERIALIZABLE'=201 -'SESSION'=202 -'SET'=203 -'SETS'=204 -'SHOW'=205 -'SOME'=206 -'START'=207 -'STATS'=208 -'SUBSET'=209 -'SUBSTRING'=210 -'SYSTEM'=211 -'TABLE'=212 -'TABLES'=213 -'TABLESAMPLE'=214 -'TEXT'=215 -'THEN'=216 -'TIES'=217 -'TIME'=218 -'TIMESTAMP'=219 -'TO'=220 -'TRANSACTION'=221 -'TRUNCATE'=222 -'TRUE'=223 -'TRY_CAST'=224 -'TYPE'=225 -'UESCAPE'=226 -'UNBOUNDED'=227 -'UNCOMMITTED'=228 -'UNION'=229 -'UNMATCHED'=230 -'UNNEST'=231 -'UPDATE'=232 -'USE'=233 -'USER'=234 -'USING'=235 -'VALIDATE'=236 -'VALUES'=237 -'VERBOSE'=238 -'VIEW'=239 -'WHEN'=240 -'WHERE'=241 -'WINDOW'=242 -'WITH'=243 -'WITHOUT'=244 -'WORK'=245 -'WRITE'=246 -'YEAR'=247 -'ZONE'=248 -'='=249 -'<'=251 -'<='=252 -'>'=253 -'>='=254 -'+'=255 -'-'=256 -'*'=257 -'/'=258 -'%'=259 -'||'=260 -'?'=261 -';'=272 +'=>'=6 +'->'=7 +'['=8 +']'=9 +':'=10 +'|'=11 +'^'=12 +'$'=13 +'{-'=14 +'-}'=15 +'{'=16 +'}'=17 +'ABSENT'=18 +'ADD'=19 +'ADMIN'=20 +'AFTER'=21 +'ALL'=22 +'ALTER'=23 +'ANALYZE'=24 +'AND'=25 +'ANY'=26 +'ARRAY'=27 +'AS'=28 +'ASC'=29 +'AT'=30 +'AUTHORIZATION'=31 +'BEGIN'=32 +'BERNOULLI'=33 +'BETWEEN'=34 +'BOTH'=35 +'BY'=36 +'CALL'=37 +'CALLED'=38 +'CASCADE'=39 +'CASE'=40 +'CAST'=41 +'CATALOG'=42 +'CATALOGS'=43 +'COLUMN'=44 +'COLUMNS'=45 +'COMMENT'=46 +'COMMIT'=47 +'COMMITTED'=48 +'CONDITIONAL'=49 +'CONSTRAINT'=50 +'COUNT'=51 +'COPARTITION'=52 +'CREATE'=53 +'CROSS'=54 +'CUBE'=55 +'CURRENT'=56 +'CURRENT_CATALOG'=57 +'CURRENT_DATE'=58 +'CURRENT_PATH'=59 +'CURRENT_ROLE'=60 +'CURRENT_SCHEMA'=61 +'CURRENT_TIME'=62 +'CURRENT_TIMESTAMP'=63 +'CURRENT_USER'=64 +'DATA'=65 +'DATE'=66 +'DAY'=67 +'DEALLOCATE'=68 +'DECLARE'=69 +'DEFAULT'=70 +'DEFINE'=71 +'DEFINER'=72 +'DELETE'=73 +'DENY'=74 +'DESC'=75 +'DESCRIBE'=76 +'DESCRIPTOR'=77 +'DETERMINISTIC'=78 +'DISTINCT'=79 +'DISTRIBUTED'=80 +'DO'=81 +'DOUBLE'=82 +'DROP'=83 +'ELSE'=84 +'EMPTY'=85 +'ELSEIF'=86 +'ENCODING'=87 +'END'=88 +'ERROR'=89 +'ESCAPE'=90 +'EXCEPT'=91 +'EXCLUDING'=92 +'EXECUTE'=93 +'EXISTS'=94 +'EXPLAIN'=95 +'EXTRACT'=96 +'FALSE'=97 +'FETCH'=98 +'FILTER'=99 +'FINAL'=100 +'FIRST'=101 +'FOLLOWING'=102 +'FOR'=103 +'FORMAT'=104 +'FROM'=105 +'FULL'=106 +'FUNCTION'=107 +'FUNCTIONS'=108 +'GRACE'=109 +'GRANT'=110 +'GRANTED'=111 +'GRANTS'=112 +'GRAPHVIZ'=113 +'GROUP'=114 +'GROUPING'=115 +'GROUPS'=116 +'HAVING'=117 +'HOUR'=118 +'IF'=119 +'IGNORE'=120 +'IMMEDIATE'=121 +'IN'=122 +'INCLUDING'=123 +'INITIAL'=124 +'INNER'=125 +'INPUT'=126 +'INSERT'=127 +'INTERSECT'=128 +'INTERVAL'=129 +'INTO'=130 +'INVOKER'=131 +'IO'=132 +'IS'=133 +'ISOLATION'=134 +'ITERATE'=135 +'JOIN'=136 +'JSON'=137 +'JSON_ARRAY'=138 +'JSON_EXISTS'=139 +'JSON_OBJECT'=140 +'JSON_QUERY'=141 +'JSON_TABLE'=142 +'JSON_VALUE'=143 +'KEEP'=144 +'KEY'=145 +'KEYS'=146 +'LANGUAGE'=147 +'LAST'=148 +'LATERAL'=149 +'LEADING'=150 +'LEAVE'=151 +'LEFT'=152 +'LEVEL'=153 +'LIKE'=154 +'LIMIT'=155 +'LISTAGG'=156 +'LOCAL'=157 +'LOCALTIME'=158 +'LOCALTIMESTAMP'=159 +'LOGICAL'=160 +'LOOP'=161 +'MAP'=162 +'MATCH'=163 +'MATCHED'=164 +'MATCHES'=165 +'MATCH_RECOGNIZE'=166 +'MATERIALIZED'=167 +'MEASURES'=168 +'MERGE'=169 +'MINUTE'=170 +'MONTH'=171 +'NATURAL'=172 +'NESTED'=173 +'NEXT'=174 +'NFC'=175 +'NFD'=176 +'NFKC'=177 +'NFKD'=178 +'NO'=179 +'NONE'=180 +'NORMALIZE'=181 +'NOT'=182 +'NULL'=183 +'NULLIF'=184 +'NULLS'=185 +'OBJECT'=186 +'OF'=187 +'OFFSET'=188 +'OMIT'=189 +'ON'=190 +'ONE'=191 +'ONLY'=192 +'OPTION'=193 +'OR'=194 +'ORDER'=195 +'ORDINALITY'=196 +'OUTER'=197 +'OUTPUT'=198 +'OVER'=199 +'OVERFLOW'=200 +'PARTITION'=201 +'PARTITIONS'=202 +'PASSING'=203 +'PAST'=204 +'PATH'=205 +'PATTERN'=206 +'PER'=207 +'PERIOD'=208 +'PERMUTE'=209 +'PLAN'=210 +'POSITION'=211 +'PRECEDING'=212 +'PRECISION'=213 +'PREPARE'=214 +'PRIVILEGES'=215 +'PROPERTIES'=216 +'PRUNE'=217 +'QUOTES'=218 +'RANGE'=219 +'READ'=220 +'RECURSIVE'=221 +'REFRESH'=222 +'RENAME'=223 +'REPEAT'=224 +'REPEATABLE'=225 +'REPLACE'=226 +'RESET'=227 +'RESPECT'=228 +'RESTRICT'=229 +'RETURN'=230 +'RETURNING'=231 +'RETURNS'=232 +'REVOKE'=233 +'RIGHT'=234 +'ROLE'=235 +'ROLES'=236 +'ROLLBACK'=237 +'ROLLUP'=238 +'ROW'=239 +'ROWS'=240 +'RUNNING'=241 +'SCALAR'=242 +'SCHEMA'=243 +'SCHEMAS'=244 +'SECOND'=245 +'SECURITY'=246 +'SEEK'=247 +'SELECT'=248 +'SERIALIZABLE'=249 +'SESSION'=250 +'SET'=251 +'SETS'=252 +'SHOW'=253 +'SOME'=254 +'START'=255 +'STATS'=256 +'SUBSET'=257 +'SUBSTRING'=258 +'SYSTEM'=259 +'TABLE'=260 +'TABLES'=261 +'TABLESAMPLE'=262 +'TEXT'=263 +'STRING'=264 +'THEN'=265 +'TIES'=266 +'TIME'=267 +'TIMESTAMP'=268 +'TO'=269 +'TRAILING'=270 +'TRANSACTION'=271 +'TRIM'=272 +'TRUE'=273 +'TRUNCATE'=274 +'TRY_CAST'=275 +'TYPE'=276 +'UESCAPE'=277 +'UNBOUNDED'=278 +'UNCOMMITTED'=279 +'UNCONDITIONAL'=280 +'UNION'=281 +'UNIQUE'=282 +'UNKNOWN'=283 +'UNMATCHED'=284 +'UNNEST'=285 +'UNTIL'=286 +'UPDATE'=287 +'USE'=288 +'USER'=289 +'USING'=290 +'UTF16'=291 +'UTF32'=292 +'UTF8'=293 +'VALIDATE'=294 +'VALUE'=295 +'VALUES'=296 +'VERBOSE'=297 +'VERSION'=298 +'VIEW'=299 +'WHEN'=300 +'WHERE'=301 +'WHILE'=302 +'WINDOW'=303 +'WITH'=304 +'WITHIN'=305 +'WITHOUT'=306 +'WORK'=307 +'WRAPPER'=308 +'WRITE'=309 +'YEAR'=310 +'ZONE'=311 +'='=312 +'<'=314 +'<='=315 +'>'=316 +'>='=317 +'+'=318 +'-'=319 +'*'=320 +'/'=321 +'%'=322 +'||'=323 +'?'=324 +';'=325 diff --git a/src/lib/trino/TrinoSqlLexer.ts b/src/lib/trino/TrinoSqlLexer.ts index b0489daa..02d6cb1e 100644 --- a/src/lib/trino/TrinoSqlLexer.ts +++ b/src/lib/trino/TrinoSqlLexer.ts @@ -26,370 +26,456 @@ export class TrinoSqlLexer extends antlr.Lexer { public static readonly T__13 = 14; public static readonly T__14 = 15; public static readonly T__15 = 16; - public static readonly KW_ADD = 17; - public static readonly KW_ADMIN = 18; - public static readonly KW_AFTER = 19; - public static readonly KW_ALL = 20; - public static readonly KW_ALTER = 21; - public static readonly KW_ANALYZE = 22; - public static readonly KW_AND = 23; - public static readonly KW_ANY = 24; - public static readonly KW_ARRAY = 25; - public static readonly KW_AS = 26; - public static readonly KW_ASC = 27; - public static readonly KW_AT = 28; - public static readonly KW_AUTHORIZATION = 29; - public static readonly KW_BERNOULLI = 30; - public static readonly KW_BETWEEN = 31; - public static readonly KW_BY = 32; - public static readonly KW_CALL = 33; - public static readonly KW_CASCADE = 34; - public static readonly KW_CASE = 35; - public static readonly KW_CAST = 36; - public static readonly KW_CATALOGS = 37; - public static readonly KW_COLUMN = 38; - public static readonly KW_COLUMNS = 39; - public static readonly KW_COMMENT = 40; - public static readonly KW_COMMIT = 41; - public static readonly KW_COMMITTED = 42; - public static readonly KW_CONSTRAINT = 43; - public static readonly KW_CREATE = 44; - public static readonly KW_CROSS = 45; - public static readonly KW_CUBE = 46; - public static readonly KW_CURRENT = 47; - public static readonly KW_CURRENT_CATALOG = 48; - public static readonly KW_CURRENT_DATE = 49; - public static readonly KW_CURRENT_PATH = 50; - public static readonly KW_CURRENT_ROLE = 51; - public static readonly KW_CURRENT_SCHEMA = 52; - public static readonly KW_CURRENT_TIME = 53; - public static readonly KW_CURRENT_TIMESTAMP = 54; - public static readonly KW_CURRENT_USER = 55; - public static readonly KW_DATA = 56; - public static readonly KW_DATE = 57; - public static readonly KW_DAY = 58; - public static readonly KW_DEFAULT = 59; - public static readonly KW_DEALLOCATE = 60; - public static readonly KW_DEFINER = 61; - public static readonly KW_DELETE = 62; - public static readonly KW_DESC = 63; - public static readonly KW_DESCRIBE = 64; - public static readonly KW_DEFINE = 65; - public static readonly KW_DISTINCT = 66; - public static readonly KW_DISTRIBUTED = 67; - public static readonly KW_DOUBLE = 68; - public static readonly KW_DROP = 69; - public static readonly KW_ELSE = 70; - public static readonly KW_EMPTY = 71; - public static readonly KW_END = 72; - public static readonly KW_ESCAPE = 73; - public static readonly KW_EXCEPT = 74; - public static readonly KW_EXCLUDING = 75; - public static readonly KW_EXECUTE = 76; - public static readonly KW_EXISTS = 77; - public static readonly KW_EXPLAIN = 78; - public static readonly KW_EXTRACT = 79; - public static readonly KW_FALSE = 80; - public static readonly KW_FETCH = 81; - public static readonly KW_FILTER = 82; - public static readonly KW_FINAL = 83; - public static readonly KW_FIRST = 84; - public static readonly KW_FOLLOWING = 85; - public static readonly KW_FOR = 86; - public static readonly KW_FORMAT = 87; - public static readonly KW_FROM = 88; - public static readonly KW_FULL = 89; - public static readonly KW_FUNCTIONS = 90; - public static readonly KW_GRANT = 91; - public static readonly KW_GRANTED = 92; - public static readonly KW_GRANTS = 93; - public static readonly KW_DENY = 94; - public static readonly KW_GRAPHVIZ = 95; - public static readonly KW_GROUP = 96; - public static readonly KW_GROUPING = 97; - public static readonly KW_GROUPS = 98; - public static readonly KW_HAVING = 99; - public static readonly KW_HOUR = 100; - public static readonly KW_IF = 101; - public static readonly KW_IGNORE = 102; - public static readonly KW_IN = 103; - public static readonly KW_INCLUDING = 104; - public static readonly KW_INITIAL = 105; - public static readonly KW_INNER = 106; - public static readonly KW_INPUT = 107; - public static readonly KW_INSERT = 108; - public static readonly KW_INTERSECT = 109; - public static readonly KW_INTERVAL = 110; - public static readonly KW_INTO = 111; - public static readonly KW_INVOKER = 112; - public static readonly KW_IO = 113; - public static readonly KW_IS = 114; - public static readonly KW_ISOLATION = 115; - public static readonly KW_JOIN = 116; - public static readonly KW_JSON = 117; - public static readonly KW_LAST = 118; - public static readonly KW_LATERAL = 119; - public static readonly KW_LEFT = 120; - public static readonly KW_LEVEL = 121; - public static readonly KW_LIKE = 122; - public static readonly KW_LIMIT = 123; - public static readonly KW_LOCAL = 124; - public static readonly KW_LOCALTIME = 125; - public static readonly KW_LOCALTIMESTAMP = 126; - public static readonly KW_LOGICAL = 127; - public static readonly KW_MAP = 128; - public static readonly KW_MATCH = 129; - public static readonly KW_MATCHED = 130; - public static readonly KW_MATCHES = 131; - public static readonly KW_MATCH_RECOGNIZE = 132; - public static readonly KW_MATERIALIZED = 133; - public static readonly KW_MEASURES = 134; - public static readonly KW_MERGE = 135; - public static readonly KW_MINUTE = 136; - public static readonly KW_MONTH = 137; - public static readonly KW_NATURAL = 138; - public static readonly KW_NEXT = 139; - public static readonly KW_NFC = 140; - public static readonly KW_NFD = 141; - public static readonly KW_NFKC = 142; - public static readonly KW_NFKD = 143; - public static readonly KW_NO = 144; - public static readonly KW_NONE = 145; - public static readonly KW_NORMALIZE = 146; - public static readonly KW_NOT = 147; - public static readonly KW_NULL = 148; - public static readonly KW_NULLIF = 149; - public static readonly KW_NULLS = 150; - public static readonly KW_OFFSET = 151; - public static readonly KW_OMIT = 152; - public static readonly KW_ON = 153; - public static readonly KW_ONE = 154; - public static readonly KW_ONLY = 155; - public static readonly KW_OPTION = 156; - public static readonly KW_OR = 157; - public static readonly KW_ORDER = 158; - public static readonly KW_ORDINALITY = 159; - public static readonly KW_OUTER = 160; - public static readonly KW_OUTPUT = 161; - public static readonly KW_OVER = 162; - public static readonly KW_PARTITION = 163; - public static readonly KW_PARTITIONS = 164; - public static readonly KW_PAST = 165; - public static readonly KW_PATH = 166; - public static readonly KW_PATTERN = 167; - public static readonly KW_PER = 168; - public static readonly KW_PERMUTE = 169; - public static readonly KW_POSITION = 170; - public static readonly KW_PRECEDING = 171; - public static readonly KW_PRECISION = 172; - public static readonly KW_PREPARE = 173; - public static readonly KW_PRIVILEGES = 174; - public static readonly KW_PROPERTIES = 175; - public static readonly KW_RANGE = 176; - public static readonly KW_READ = 177; - public static readonly KW_RECURSIVE = 178; - public static readonly KW_REFRESH = 179; - public static readonly KW_RENAME = 180; - public static readonly KW_REPEATABLE = 181; - public static readonly KW_REPLACE = 182; - public static readonly KW_RESET = 183; - public static readonly KW_RESPECT = 184; - public static readonly KW_RESTRICT = 185; - public static readonly KW_REVOKE = 186; - public static readonly KW_RIGHT = 187; - public static readonly KW_ROLE = 188; - public static readonly KW_ROLES = 189; - public static readonly KW_ROLLBACK = 190; - public static readonly KW_ROLLUP = 191; - public static readonly KW_ROW = 192; - public static readonly KW_ROWS = 193; - public static readonly KW_RUNNING = 194; - public static readonly KW_SCHEMA = 195; - public static readonly KW_SCHEMAS = 196; - public static readonly KW_SECOND = 197; - public static readonly KW_SECURITY = 198; - public static readonly KW_SEEK = 199; - public static readonly KW_SELECT = 200; - public static readonly KW_SERIALIZABLE = 201; - public static readonly KW_SESSION = 202; - public static readonly KW_SET = 203; - public static readonly KW_SETS = 204; - public static readonly KW_SHOW = 205; - public static readonly KW_SOME = 206; - public static readonly KW_START = 207; - public static readonly KW_STATS = 208; - public static readonly KW_SUBSET = 209; - public static readonly KW_SUBSTRING = 210; - public static readonly KW_SYSTEM = 211; - public static readonly KW_TABLE = 212; - public static readonly KW_TABLES = 213; - public static readonly KW_TABLESAMPLE = 214; - public static readonly KW_TEXT = 215; - public static readonly KW_THEN = 216; - public static readonly KW_TIES = 217; - public static readonly KW_TIME = 218; - public static readonly KW_TIMESTAMP = 219; - public static readonly KW_TO = 220; - public static readonly KW_TRANSACTION = 221; - public static readonly KW_TRUNCATE = 222; - public static readonly KW_TRUE = 223; - public static readonly KW_TRY_CAST = 224; - public static readonly KW_TYPE = 225; - public static readonly KW_UESCAPE = 226; - public static readonly KW_UNBOUNDED = 227; - public static readonly KW_UNCOMMITTED = 228; - public static readonly KW_UNION = 229; - public static readonly KW_UNMATCHED = 230; - public static readonly KW_UNNEST = 231; - public static readonly KW_UPDATE = 232; - public static readonly KW_USE = 233; - public static readonly KW_USER = 234; - public static readonly KW_USING = 235; - public static readonly KW_VALIDATE = 236; - public static readonly KW_VALUES = 237; - public static readonly KW_VERBOSE = 238; - public static readonly KW_VIEW = 239; - public static readonly KW_WHEN = 240; - public static readonly KW_WHERE = 241; - public static readonly KW_WINDOW = 242; - public static readonly KW_WITH = 243; - public static readonly KW_WITHOUT = 244; - public static readonly KW_WORK = 245; - public static readonly KW_WRITE = 246; - public static readonly KW_YEAR = 247; - public static readonly KW_ZONE = 248; - public static readonly EQ = 249; - public static readonly NEQ = 250; - public static readonly LT = 251; - public static readonly LTE = 252; - public static readonly GT = 253; - public static readonly GTE = 254; - public static readonly PLUS = 255; - public static readonly MINUS = 256; - public static readonly ASTERISK = 257; - public static readonly SLASH = 258; - public static readonly PERCENT = 259; - public static readonly CONCAT = 260; - public static readonly QUESTION_MARK = 261; - public static readonly STRING = 262; - public static readonly UNICODE_STRING = 263; - public static readonly BINARY_LITERAL = 264; - public static readonly INTEGER_VALUE = 265; - public static readonly DECIMAL_VALUE = 266; - public static readonly DOUBLE_VALUE = 267; - public static readonly IDENTIFIER = 268; - public static readonly DIGIT_IDENTIFIER = 269; - public static readonly QUOTED_IDENTIFIER = 270; - public static readonly BACKQUOTED_IDENTIFIER = 271; - public static readonly SEMICOLON = 272; - public static readonly SIMPLE_COMMENT = 273; - public static readonly BRACKETED_COMMENT = 274; - public static readonly WS = 275; - public static readonly UNRECOGNIZED = 276; + public static readonly T__16 = 17; + public static readonly KW_ABSENT = 18; + public static readonly KW_ADD = 19; + public static readonly KW_ADMIN = 20; + public static readonly KW_AFTER = 21; + public static readonly KW_ALL = 22; + public static readonly KW_ALTER = 23; + public static readonly KW_ANALYZE = 24; + public static readonly KW_AND = 25; + public static readonly KW_ANY = 26; + public static readonly KW_ARRAY = 27; + public static readonly KW_AS = 28; + public static readonly KW_ASC = 29; + public static readonly KW_AT = 30; + public static readonly KW_AUTHORIZATION = 31; + public static readonly KW_BEGIN = 32; + public static readonly KW_BERNOULLI = 33; + public static readonly KW_BETWEEN = 34; + public static readonly KW_BOTH = 35; + public static readonly KW_BY = 36; + public static readonly KW_CALL = 37; + public static readonly KW_CALLED = 38; + public static readonly KW_CASCADE = 39; + public static readonly KW_CASE = 40; + public static readonly KW_CAST = 41; + public static readonly KW_CATALOG = 42; + public static readonly KW_CATALOGS = 43; + public static readonly KW_COLUMN = 44; + public static readonly KW_COLUMNS = 45; + public static readonly KW_COMMENT = 46; + public static readonly KW_COMMIT = 47; + public static readonly KW_COMMITTED = 48; + public static readonly KW_CONDITIONAL = 49; + public static readonly KW_CONSTRAINT = 50; + public static readonly KW_COUNT = 51; + public static readonly KW_COPARTITION = 52; + public static readonly KW_CREATE = 53; + public static readonly KW_CROSS = 54; + public static readonly KW_CUBE = 55; + public static readonly KW_CURRENT = 56; + public static readonly KW_CURRENT_CATALOG = 57; + public static readonly KW_CURRENT_DATE = 58; + public static readonly KW_CURRENT_PATH = 59; + public static readonly KW_CURRENT_ROLE = 60; + public static readonly KW_CURRENT_SCHEMA = 61; + public static readonly KW_CURRENT_TIME = 62; + public static readonly KW_CURRENT_TIMESTAMP = 63; + public static readonly KW_CURRENT_USER = 64; + public static readonly KW_DATA = 65; + public static readonly KW_DATE = 66; + public static readonly KW_DAY = 67; + public static readonly KW_DEALLOCATE = 68; + public static readonly KW_DECLARE = 69; + public static readonly KW_DEFAULT = 70; + public static readonly KW_DEFINE = 71; + public static readonly KW_DEFINER = 72; + public static readonly KW_DELETE = 73; + public static readonly KW_DENY = 74; + public static readonly KW_DESC = 75; + public static readonly KW_DESCRIBE = 76; + public static readonly KW_DESCRIPTOR = 77; + public static readonly KW_DETERMINISTIC = 78; + public static readonly KW_DISTINCT = 79; + public static readonly KW_DISTRIBUTED = 80; + public static readonly KW_DO = 81; + public static readonly KW_DOUBLE = 82; + public static readonly KW_DROP = 83; + public static readonly KW_ELSE = 84; + public static readonly KW_EMPTY = 85; + public static readonly KW_ELSEIF = 86; + public static readonly KW_ENCODING = 87; + public static readonly KW_END = 88; + public static readonly KW_ERROR = 89; + public static readonly KW_ESCAPE = 90; + public static readonly KW_EXCEPT = 91; + public static readonly KW_EXCLUDING = 92; + public static readonly KW_EXECUTE = 93; + public static readonly KW_EXISTS = 94; + public static readonly KW_EXPLAIN = 95; + public static readonly KW_EXTRACT = 96; + public static readonly KW_FALSE = 97; + public static readonly KW_FETCH = 98; + public static readonly KW_FILTER = 99; + public static readonly KW_FINAL = 100; + public static readonly KW_FIRST = 101; + public static readonly KW_FOLLOWING = 102; + public static readonly KW_FOR = 103; + public static readonly KW_FORMAT = 104; + public static readonly KW_FROM = 105; + public static readonly KW_FULL = 106; + public static readonly KW_FUNCTION = 107; + public static readonly KW_FUNCTIONS = 108; + public static readonly KW_GRACE = 109; + public static readonly KW_GRANT = 110; + public static readonly KW_GRANTED = 111; + public static readonly KW_GRANTS = 112; + public static readonly KW_GRAPHVIZ = 113; + public static readonly KW_GROUP = 114; + public static readonly KW_GROUPING = 115; + public static readonly KW_GROUPS = 116; + public static readonly KW_HAVING = 117; + public static readonly KW_HOUR = 118; + public static readonly KW_IF = 119; + public static readonly KW_IGNORE = 120; + public static readonly KW_IMMEDIATE = 121; + public static readonly KW_IN = 122; + public static readonly KW_INCLUDING = 123; + public static readonly KW_INITIAL = 124; + public static readonly KW_INNER = 125; + public static readonly KW_INPUT = 126; + public static readonly KW_INSERT = 127; + public static readonly KW_INTERSECT = 128; + public static readonly KW_INTERVAL = 129; + public static readonly KW_INTO = 130; + public static readonly KW_INVOKER = 131; + public static readonly KW_IO = 132; + public static readonly KW_IS = 133; + public static readonly KW_ISOLATION = 134; + public static readonly KW_ITERATE = 135; + public static readonly KW_JOIN = 136; + public static readonly KW_JSON = 137; + public static readonly KW_JSON_ARRAY = 138; + public static readonly KW_JSON_EXISTS = 139; + public static readonly KW_JSON_OBJECT = 140; + public static readonly KW_JSON_QUERY = 141; + public static readonly KW_JSON_TABLE = 142; + public static readonly KW_JSON_VALUE = 143; + public static readonly KW_KEEP = 144; + public static readonly KW_KEY = 145; + public static readonly KW_KEYS = 146; + public static readonly KW_LANGUAGE = 147; + public static readonly KW_LAST = 148; + public static readonly KW_LATERAL = 149; + public static readonly KW_LEADING = 150; + public static readonly KW_LEAVE = 151; + public static readonly KW_LEFT = 152; + public static readonly KW_LEVEL = 153; + public static readonly KW_LIKE = 154; + public static readonly KW_LIMIT = 155; + public static readonly KW_LISTAGG = 156; + public static readonly KW_LOCAL = 157; + public static readonly KW_LOCALTIME = 158; + public static readonly KW_LOCALTIMESTAMP = 159; + public static readonly KW_LOGICAL = 160; + public static readonly KW_LOOP = 161; + public static readonly KW_MAP = 162; + public static readonly KW_MATCH = 163; + public static readonly KW_MATCHED = 164; + public static readonly KW_MATCHES = 165; + public static readonly KW_MATCH_RECOGNIZE = 166; + public static readonly KW_MATERIALIZED = 167; + public static readonly KW_MEASURES = 168; + public static readonly KW_MERGE = 169; + public static readonly KW_MINUTE = 170; + public static readonly KW_MONTH = 171; + public static readonly KW_NATURAL = 172; + public static readonly KW_NESTED = 173; + public static readonly KW_NEXT = 174; + public static readonly KW_NFC = 175; + public static readonly KW_NFD = 176; + public static readonly KW_NFKC = 177; + public static readonly KW_NFKD = 178; + public static readonly KW_NO = 179; + public static readonly KW_NONE = 180; + public static readonly KW_NORMALIZE = 181; + public static readonly KW_NOT = 182; + public static readonly KW_NULL = 183; + public static readonly KW_NULLIF = 184; + public static readonly KW_NULLS = 185; + public static readonly KW_OBJECT = 186; + public static readonly KW_OF = 187; + public static readonly KW_OFFSET = 188; + public static readonly KW_OMIT = 189; + public static readonly KW_ON = 190; + public static readonly KW_ONE = 191; + public static readonly KW_ONLY = 192; + public static readonly KW_OPTION = 193; + public static readonly KW_OR = 194; + public static readonly KW_ORDER = 195; + public static readonly KW_ORDINALITY = 196; + public static readonly KW_OUTER = 197; + public static readonly KW_OUTPUT = 198; + public static readonly KW_OVER = 199; + public static readonly KW_OVERFLOW = 200; + public static readonly KW_PARTITION = 201; + public static readonly KW_PARTITIONS = 202; + public static readonly KW_PASSING = 203; + public static readonly KW_PAST = 204; + public static readonly KW_PATH = 205; + public static readonly KW_PATTERN = 206; + public static readonly KW_PER = 207; + public static readonly KW_PERIOD = 208; + public static readonly KW_PERMUTE = 209; + public static readonly KW_PLAN = 210; + public static readonly KW_POSITION = 211; + public static readonly KW_PRECEDING = 212; + public static readonly KW_PRECISION = 213; + public static readonly KW_PREPARE = 214; + public static readonly KW_PRIVILEGES = 215; + public static readonly KW_PROPERTIES = 216; + public static readonly KW_PRUNE = 217; + public static readonly KW_QUOTES = 218; + public static readonly KW_RANGE = 219; + public static readonly KW_READ = 220; + public static readonly KW_RECURSIVE = 221; + public static readonly KW_REFRESH = 222; + public static readonly KW_RENAME = 223; + public static readonly KW_REPEAT = 224; + public static readonly KW_REPEATABLE = 225; + public static readonly KW_REPLACE = 226; + public static readonly KW_RESET = 227; + public static readonly KW_RESPECT = 228; + public static readonly KW_RESTRICT = 229; + public static readonly KW_RETURN = 230; + public static readonly KW_RETURNING = 231; + public static readonly KW_RETURNS = 232; + public static readonly KW_REVOKE = 233; + public static readonly KW_RIGHT = 234; + public static readonly KW_ROLE = 235; + public static readonly KW_ROLES = 236; + public static readonly KW_ROLLBACK = 237; + public static readonly KW_ROLLUP = 238; + public static readonly KW_ROW = 239; + public static readonly KW_ROWS = 240; + public static readonly KW_RUNNING = 241; + public static readonly KW_SCALAR = 242; + public static readonly KW_SCHEMA = 243; + public static readonly KW_SCHEMAS = 244; + public static readonly KW_SECOND = 245; + public static readonly KW_SECURITY = 246; + public static readonly KW_SEEK = 247; + public static readonly KW_SELECT = 248; + public static readonly KW_SERIALIZABLE = 249; + public static readonly KW_SESSION = 250; + public static readonly KW_SET = 251; + public static readonly KW_SETS = 252; + public static readonly KW_SHOW = 253; + public static readonly KW_SOME = 254; + public static readonly KW_START = 255; + public static readonly KW_STATS = 256; + public static readonly KW_SUBSET = 257; + public static readonly KW_SUBSTRING = 258; + public static readonly KW_SYSTEM = 259; + public static readonly KW_TABLE = 260; + public static readonly KW_TABLES = 261; + public static readonly KW_TABLESAMPLE = 262; + public static readonly KW_TEXT = 263; + public static readonly KW_TEXT_STRING = 264; + public static readonly KW_THEN = 265; + public static readonly KW_TIES = 266; + public static readonly KW_TIME = 267; + public static readonly KW_TIMESTAMP = 268; + public static readonly KW_TO = 269; + public static readonly KW_TRAILING = 270; + public static readonly KW_TRANSACTION = 271; + public static readonly KW_TRIM = 272; + public static readonly KW_TRUE = 273; + public static readonly KW_TRUNCATE = 274; + public static readonly KW_TRY_CAST = 275; + public static readonly KW_TYPE = 276; + public static readonly KW_UESCAPE = 277; + public static readonly KW_UNBOUNDED = 278; + public static readonly KW_UNCOMMITTED = 279; + public static readonly KW_UNCONDITIONAL = 280; + public static readonly KW_UNION = 281; + public static readonly KW_UNIQUE = 282; + public static readonly KW_UNKNOWN = 283; + public static readonly KW_UNMATCHED = 284; + public static readonly KW_UNNEST = 285; + public static readonly KW_UNTIL = 286; + public static readonly KW_UPDATE = 287; + public static readonly KW_USE = 288; + public static readonly KW_USER = 289; + public static readonly KW_USING = 290; + public static readonly KW_UTF16 = 291; + public static readonly KW_UTF32 = 292; + public static readonly KW_UTF8 = 293; + public static readonly KW_VALIDATE = 294; + public static readonly KW_VALUE = 295; + public static readonly KW_VALUES = 296; + public static readonly KW_VERBOSE = 297; + public static readonly KW_VERSION = 298; + public static readonly KW_VIEW = 299; + public static readonly KW_WHEN = 300; + public static readonly KW_WHERE = 301; + public static readonly KW_WHILE = 302; + public static readonly KW_WINDOW = 303; + public static readonly KW_WITH = 304; + public static readonly KW_WITHIN = 305; + public static readonly KW_WITHOUT = 306; + public static readonly KW_WORK = 307; + public static readonly KW_WRAPPER = 308; + public static readonly KW_WRITE = 309; + public static readonly KW_YEAR = 310; + public static readonly KW_ZONE = 311; + public static readonly EQ = 312; + public static readonly NEQ = 313; + public static readonly LT = 314; + public static readonly LTE = 315; + public static readonly GT = 316; + public static readonly GTE = 317; + public static readonly PLUS = 318; + public static readonly MINUS = 319; + public static readonly ASTERISK = 320; + public static readonly SLASH = 321; + public static readonly PERCENT = 322; + public static readonly CONCAT = 323; + public static readonly QUESTION_MARK = 324; + public static readonly SEMICOLON = 325; + public static readonly STRING = 326; + public static readonly UNICODE_STRING = 327; + public static readonly BINARY_LITERAL = 328; + public static readonly INTEGER_VALUE = 329; + public static readonly DECIMAL_VALUE = 330; + public static readonly DOUBLE_VALUE = 331; + public static readonly IDENTIFIER = 332; + public static readonly DIGIT_IDENTIFIER = 333; + public static readonly QUOTED_IDENTIFIER = 334; + public static readonly BACKQUOTED_IDENTIFIER = 335; + public static readonly SIMPLE_COMMENT = 336; + public static readonly BRACKETED_COMMENT = 337; + public static readonly WS = 338; + public static readonly UNRECOGNIZED = 339; public static readonly channelNames = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; public static readonly literalNames = [ - null, "'('", "')'", "','", "'.'", "'SKIP'", "'->'", "'['", "']'", - "'|'", "'^'", "'$'", "'{-'", "'-}'", "'{'", "'}'", "'=>'", "'ADD'", - "'ADMIN'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", - "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", - "'BERNOULLI'", "'BETWEEN'", "'BY'", "'CALL'", "'CASCADE'", "'CASE'", - "'CAST'", "'CATALOGS'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", - "'COMMITTED'", "'CONSTRAINT'", "'CREATE'", "'CROSS'", "'CUBE'", - "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", "'CURRENT_PATH'", - "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", - "'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", "'DEFAULT'", "'DEALLOCATE'", - "'DEFINER'", "'DELETE'", "'DESC'", "'DESCRIBE'", "'DEFINE'", "'DISTINCT'", - "'DISTRIBUTED'", "'DOUBLE'", "'DROP'", "'ELSE'", "'EMPTY'", "'END'", - "'ESCAPE'", "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", - "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", - "'FIRST'", "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", - "'FUNCTIONS'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'DENY'", "'GRAPHVIZ'", + null, "'('", "')'", "','", "'.'", "'SKIP'", "'=>'", "'->'", "'['", + "']'", "':'", "'|'", "'^'", "'$'", "'{-'", "'-}'", "'{'", "'}'", + "'ABSENT'", "'ADD'", "'ADMIN'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", + "'AND'", "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", + "'BEGIN'", "'BERNOULLI'", "'BETWEEN'", "'BOTH'", "'BY'", "'CALL'", + "'CALLED'", "'CASCADE'", "'CASE'", "'CAST'", "'CATALOG'", "'CATALOGS'", + "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", + "'CONDITIONAL'", "'CONSTRAINT'", "'COUNT'", "'COPARTITION'", "'CREATE'", + "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", + "'CURRENT_PATH'", "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", "'CURRENT_TIME'", + "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", + "'DEALLOCATE'", "'DECLARE'", "'DEFAULT'", "'DEFINE'", "'DEFINER'", + "'DELETE'", "'DENY'", "'DESC'", "'DESCRIBE'", "'DESCRIPTOR'", "'DETERMINISTIC'", + "'DISTINCT'", "'DISTRIBUTED'", "'DO'", "'DOUBLE'", "'DROP'", "'ELSE'", + "'EMPTY'", "'ELSEIF'", "'ENCODING'", "'END'", "'ERROR'", "'ESCAPE'", + "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", "'EXPLAIN'", + "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", "'FIRST'", + "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", "'FUNCTION'", + "'FUNCTIONS'", "'GRACE'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'GRAPHVIZ'", "'GROUP'", "'GROUPING'", "'GROUPS'", "'HAVING'", "'HOUR'", "'IF'", - "'IGNORE'", "'IN'", "'INCLUDING'", "'INITIAL'", "'INNER'", "'INPUT'", - "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'INVOKER'", - "'IO'", "'IS'", "'ISOLATION'", "'JOIN'", "'JSON'", "'LAST'", "'LATERAL'", - "'LEFT'", "'LEVEL'", "'LIKE'", "'LIMIT'", "'LOCAL'", "'LOCALTIME'", - "'LOCALTIMESTAMP'", "'LOGICAL'", "'MAP'", "'MATCH'", "'MATCHED'", - "'MATCHES'", "'MATCH_RECOGNIZE'", "'MATERIALIZED'", "'MEASURES'", - "'MERGE'", "'MINUTE'", "'MONTH'", "'NATURAL'", "'NEXT'", "'NFC'", + "'IGNORE'", "'IMMEDIATE'", "'IN'", "'INCLUDING'", "'INITIAL'", "'INNER'", + "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'INVOKER'", + "'IO'", "'IS'", "'ISOLATION'", "'ITERATE'", "'JOIN'", "'JSON'", + "'JSON_ARRAY'", "'JSON_EXISTS'", "'JSON_OBJECT'", "'JSON_QUERY'", + "'JSON_TABLE'", "'JSON_VALUE'", "'KEEP'", "'KEY'", "'KEYS'", "'LANGUAGE'", + "'LAST'", "'LATERAL'", "'LEADING'", "'LEAVE'", "'LEFT'", "'LEVEL'", + "'LIKE'", "'LIMIT'", "'LISTAGG'", "'LOCAL'", "'LOCALTIME'", "'LOCALTIMESTAMP'", + "'LOGICAL'", "'LOOP'", "'MAP'", "'MATCH'", "'MATCHED'", "'MATCHES'", + "'MATCH_RECOGNIZE'", "'MATERIALIZED'", "'MEASURES'", "'MERGE'", + "'MINUTE'", "'MONTH'", "'NATURAL'", "'NESTED'", "'NEXT'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NONE'", "'NORMALIZE'", "'NOT'", - "'NULL'", "'NULLIF'", "'NULLS'", "'OFFSET'", "'OMIT'", "'ON'", "'ONE'", - "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", "'ORDINALITY'", "'OUTER'", - "'OUTPUT'", "'OVER'", "'PARTITION'", "'PARTITIONS'", "'PAST'", "'PATH'", - "'PATTERN'", "'PER'", "'PERMUTE'", "'POSITION'", "'PRECEDING'", - "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'RANGE'", - "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", "'REPEATABLE'", - "'REPLACE'", "'RESET'", "'RESPECT'", "'RESTRICT'", "'REVOKE'", "'RIGHT'", - "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", - "'RUNNING'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SECURITY'", - "'SEEK'", "'SELECT'", "'SERIALIZABLE'", "'SESSION'", "'SET'", "'SETS'", - "'SHOW'", "'SOME'", "'START'", "'STATS'", "'SUBSET'", "'SUBSTRING'", - "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TEXT'", "'THEN'", - "'TIES'", "'TIME'", "'TIMESTAMP'", "'TO'", "'TRANSACTION'", "'TRUNCATE'", - "'TRUE'", "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", - "'UNION'", "'UNMATCHED'", "'UNNEST'", "'UPDATE'", "'USE'", "'USER'", - "'USING'", "'VALIDATE'", "'VALUES'", "'VERBOSE'", "'VIEW'", "'WHEN'", - "'WHERE'", "'WINDOW'", "'WITH'", "'WITHOUT'", "'WORK'", "'WRITE'", - "'YEAR'", "'ZONE'", "'='", null, "'<'", "'<='", "'>'", "'>='", "'+'", - "'-'", "'*'", "'/'", "'%'", "'||'", "'?'", null, null, null, null, - null, null, null, null, null, null, "';'" + "'NULL'", "'NULLIF'", "'NULLS'", "'OBJECT'", "'OF'", "'OFFSET'", + "'OMIT'", "'ON'", "'ONE'", "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", + "'ORDINALITY'", "'OUTER'", "'OUTPUT'", "'OVER'", "'OVERFLOW'", "'PARTITION'", + "'PARTITIONS'", "'PASSING'", "'PAST'", "'PATH'", "'PATTERN'", "'PER'", + "'PERIOD'", "'PERMUTE'", "'PLAN'", "'POSITION'", "'PRECEDING'", + "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'PRUNE'", + "'QUOTES'", "'RANGE'", "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", + "'REPEAT'", "'REPEATABLE'", "'REPLACE'", "'RESET'", "'RESPECT'", + "'RESTRICT'", "'RETURN'", "'RETURNING'", "'RETURNS'", "'REVOKE'", + "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", + "'ROWS'", "'RUNNING'", "'SCALAR'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", + "'SECURITY'", "'SEEK'", "'SELECT'", "'SERIALIZABLE'", "'SESSION'", + "'SET'", "'SETS'", "'SHOW'", "'SOME'", "'START'", "'STATS'", "'SUBSET'", + "'SUBSTRING'", "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", + "'TEXT'", "'STRING'", "'THEN'", "'TIES'", "'TIME'", "'TIMESTAMP'", + "'TO'", "'TRAILING'", "'TRANSACTION'", "'TRIM'", "'TRUE'", "'TRUNCATE'", + "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", + "'UNCONDITIONAL'", "'UNION'", "'UNIQUE'", "'UNKNOWN'", "'UNMATCHED'", + "'UNNEST'", "'UNTIL'", "'UPDATE'", "'USE'", "'USER'", "'USING'", + "'UTF16'", "'UTF32'", "'UTF8'", "'VALIDATE'", "'VALUE'", "'VALUES'", + "'VERBOSE'", "'VERSION'", "'VIEW'", "'WHEN'", "'WHERE'", "'WHILE'", + "'WINDOW'", "'WITH'", "'WITHIN'", "'WITHOUT'", "'WORK'", "'WRAPPER'", + "'WRITE'", "'YEAR'", "'ZONE'", "'='", null, "'<'", "'<='", "'>'", + "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'||'", "'?'", "';'" ]; public static readonly symbolicNames = [ null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, "KW_ADD", "KW_ADMIN", "KW_AFTER", - "KW_ALL", "KW_ALTER", "KW_ANALYZE", "KW_AND", "KW_ANY", "KW_ARRAY", - "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", "KW_BERNOULLI", - "KW_BETWEEN", "KW_BY", "KW_CALL", "KW_CASCADE", "KW_CASE", "KW_CAST", - "KW_CATALOGS", "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", - "KW_COMMITTED", "KW_CONSTRAINT", "KW_CREATE", "KW_CROSS", "KW_CUBE", - "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", "KW_CURRENT_PATH", - "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", - "KW_CURRENT_USER", "KW_DATA", "KW_DATE", "KW_DAY", "KW_DEFAULT", - "KW_DEALLOCATE", "KW_DEFINER", "KW_DELETE", "KW_DESC", "KW_DESCRIBE", - "KW_DEFINE", "KW_DISTINCT", "KW_DISTRIBUTED", "KW_DOUBLE", "KW_DROP", - "KW_ELSE", "KW_EMPTY", "KW_END", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", + null, null, null, null, null, null, null, "KW_ABSENT", "KW_ADD", + "KW_ADMIN", "KW_AFTER", "KW_ALL", "KW_ALTER", "KW_ANALYZE", "KW_AND", + "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", + "KW_BEGIN", "KW_BERNOULLI", "KW_BETWEEN", "KW_BOTH", "KW_BY", "KW_CALL", + "KW_CALLED", "KW_CASCADE", "KW_CASE", "KW_CAST", "KW_CATALOG", "KW_CATALOGS", + "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", + "KW_CONDITIONAL", "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", + "KW_CREATE", "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", + "KW_CURRENT_DATE", "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", + "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", + "KW_DATE", "KW_DAY", "KW_DEALLOCATE", "KW_DECLARE", "KW_DEFAULT", + "KW_DEFINE", "KW_DEFINER", "KW_DELETE", "KW_DENY", "KW_DESC", "KW_DESCRIBE", + "KW_DESCRIPTOR", "KW_DETERMINISTIC", "KW_DISTINCT", "KW_DISTRIBUTED", + "KW_DO", "KW_DOUBLE", "KW_DROP", "KW_ELSE", "KW_EMPTY", "KW_ELSEIF", + "KW_ENCODING", "KW_END", "KW_ERROR", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", "KW_EXTRACT", "KW_FALSE", "KW_FETCH", "KW_FILTER", "KW_FINAL", "KW_FIRST", "KW_FOLLOWING", - "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTIONS", "KW_GRANT", - "KW_GRANTED", "KW_GRANTS", "KW_DENY", "KW_GRAPHVIZ", "KW_GROUP", - "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", "KW_IF", "KW_IGNORE", - "KW_IN", "KW_INCLUDING", "KW_INITIAL", "KW_INNER", "KW_INPUT", "KW_INSERT", - "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", "KW_INVOKER", "KW_IO", - "KW_IS", "KW_ISOLATION", "KW_JOIN", "KW_JSON", "KW_LAST", "KW_LATERAL", - "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LOCAL", "KW_LOCALTIME", - "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_MAP", "KW_MATCH", "KW_MATCHED", - "KW_MATCHES", "KW_MATCH_RECOGNIZE", "KW_MATERIALIZED", "KW_MEASURES", - "KW_MERGE", "KW_MINUTE", "KW_MONTH", "KW_NATURAL", "KW_NEXT", "KW_NFC", - "KW_NFD", "KW_NFKC", "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", - "KW_NOT", "KW_NULL", "KW_NULLIF", "KW_NULLS", "KW_OFFSET", "KW_OMIT", + "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTION", "KW_FUNCTIONS", + "KW_GRACE", "KW_GRANT", "KW_GRANTED", "KW_GRANTS", "KW_GRAPHVIZ", + "KW_GROUP", "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", + "KW_IF", "KW_IGNORE", "KW_IMMEDIATE", "KW_IN", "KW_INCLUDING", "KW_INITIAL", + "KW_INNER", "KW_INPUT", "KW_INSERT", "KW_INTERSECT", "KW_INTERVAL", + "KW_INTO", "KW_INVOKER", "KW_IO", "KW_IS", "KW_ISOLATION", "KW_ITERATE", + "KW_JOIN", "KW_JSON", "KW_JSON_ARRAY", "KW_JSON_EXISTS", "KW_JSON_OBJECT", + "KW_JSON_QUERY", "KW_JSON_TABLE", "KW_JSON_VALUE", "KW_KEEP", "KW_KEY", + "KW_KEYS", "KW_LANGUAGE", "KW_LAST", "KW_LATERAL", "KW_LEADING", + "KW_LEAVE", "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LISTAGG", + "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_LOOP", + "KW_MAP", "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", + "KW_MATERIALIZED", "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", + "KW_NATURAL", "KW_NESTED", "KW_NEXT", "KW_NFC", "KW_NFD", "KW_NFKC", + "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", "KW_NOT", "KW_NULL", + "KW_NULLIF", "KW_NULLS", "KW_OBJECT", "KW_OF", "KW_OFFSET", "KW_OMIT", "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", "KW_ORDER", - "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_PARTITION", - "KW_PARTITIONS", "KW_PAST", "KW_PATH", "KW_PATTERN", "KW_PER", "KW_PERMUTE", - "KW_POSITION", "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", - "KW_PROPERTIES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", "KW_REFRESH", - "KW_RENAME", "KW_REPEATABLE", "KW_REPLACE", "KW_RESET", "KW_RESPECT", - "KW_RESTRICT", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", - "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCHEMA", "KW_SCHEMAS", - "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", "KW_SERIALIZABLE", - "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", "KW_SOME", "KW_START", - "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", "KW_SYSTEM", "KW_TABLE", - "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", "KW_THEN", "KW_TIES", - "KW_TIME", "KW_TIMESTAMP", "KW_TO", "KW_TRANSACTION", "KW_TRUNCATE", - "KW_TRUE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", - "KW_UNCOMMITTED", "KW_UNION", "KW_UNMATCHED", "KW_UNNEST", "KW_UPDATE", - "KW_USE", "KW_USER", "KW_USING", "KW_VALIDATE", "KW_VALUES", "KW_VERBOSE", - "KW_VIEW", "KW_WHEN", "KW_WHERE", "KW_WINDOW", "KW_WITH", "KW_WITHOUT", - "KW_WORK", "KW_WRITE", "KW_YEAR", "KW_ZONE", "EQ", "NEQ", "LT", - "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", - "CONCAT", "QUESTION_MARK", "STRING", "UNICODE_STRING", "BINARY_LITERAL", - "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", - "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", - "SEMICOLON", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED" + "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_OVERFLOW", + "KW_PARTITION", "KW_PARTITIONS", "KW_PASSING", "KW_PAST", "KW_PATH", + "KW_PATTERN", "KW_PER", "KW_PERIOD", "KW_PERMUTE", "KW_PLAN", "KW_POSITION", + "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", "KW_PROPERTIES", + "KW_PRUNE", "KW_QUOTES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", + "KW_REFRESH", "KW_RENAME", "KW_REPEAT", "KW_REPEATABLE", "KW_REPLACE", + "KW_RESET", "KW_RESPECT", "KW_RESTRICT", "KW_RETURN", "KW_RETURNING", + "KW_RETURNS", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", + "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCALAR", "KW_SCHEMA", + "KW_SCHEMAS", "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", + "KW_SERIALIZABLE", "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", + "KW_SOME", "KW_START", "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", + "KW_SYSTEM", "KW_TABLE", "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", + "KW_TEXT_STRING", "KW_THEN", "KW_TIES", "KW_TIME", "KW_TIMESTAMP", + "KW_TO", "KW_TRAILING", "KW_TRANSACTION", "KW_TRIM", "KW_TRUE", + "KW_TRUNCATE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", + "KW_UNCOMMITTED", "KW_UNCONDITIONAL", "KW_UNION", "KW_UNIQUE", "KW_UNKNOWN", + "KW_UNMATCHED", "KW_UNNEST", "KW_UNTIL", "KW_UPDATE", "KW_USE", + "KW_USER", "KW_USING", "KW_UTF16", "KW_UTF32", "KW_UTF8", "KW_VALIDATE", + "KW_VALUE", "KW_VALUES", "KW_VERBOSE", "KW_VERSION", "KW_VIEW", + "KW_WHEN", "KW_WHERE", "KW_WHILE", "KW_WINDOW", "KW_WITH", "KW_WITHIN", + "KW_WITHOUT", "KW_WORK", "KW_WRAPPER", "KW_WRITE", "KW_YEAR", "KW_ZONE", + "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", + "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", "SEMICOLON", "STRING", + "UNICODE_STRING", "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", + "DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", + "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", + "WS", "UNRECOGNIZED" ]; public static readonly modeNames = [ @@ -399,55 +485,69 @@ export class TrinoSqlLexer extends antlr.Lexer { public static readonly ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", - "KW_ADD", "KW_ADMIN", "KW_AFTER", "KW_ALL", "KW_ALTER", "KW_ANALYZE", - "KW_AND", "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", - "KW_BERNOULLI", "KW_BETWEEN", "KW_BY", "KW_CALL", "KW_CASCADE", - "KW_CASE", "KW_CAST", "KW_CATALOGS", "KW_COLUMN", "KW_COLUMNS", - "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", "KW_CONSTRAINT", "KW_CREATE", - "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", + "T__16", "KW_ABSENT", "KW_ADD", "KW_ADMIN", "KW_AFTER", "KW_ALL", + "KW_ALTER", "KW_ANALYZE", "KW_AND", "KW_ANY", "KW_ARRAY", "KW_AS", + "KW_ASC", "KW_AT", "KW_AUTHORIZATION", "KW_BEGIN", "KW_BERNOULLI", + "KW_BETWEEN", "KW_BOTH", "KW_BY", "KW_CALL", "KW_CALLED", "KW_CASCADE", + "KW_CASE", "KW_CAST", "KW_CATALOG", "KW_CATALOGS", "KW_COLUMN", + "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", "KW_CONDITIONAL", + "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", "KW_CREATE", "KW_CROSS", + "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", "KW_DATE", - "KW_DAY", "KW_DEFAULT", "KW_DEALLOCATE", "KW_DEFINER", "KW_DELETE", - "KW_DESC", "KW_DESCRIBE", "KW_DEFINE", "KW_DISTINCT", "KW_DISTRIBUTED", - "KW_DOUBLE", "KW_DROP", "KW_ELSE", "KW_EMPTY", "KW_END", "KW_ESCAPE", - "KW_EXCEPT", "KW_EXCLUDING", "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", - "KW_EXTRACT", "KW_FALSE", "KW_FETCH", "KW_FILTER", "KW_FINAL", "KW_FIRST", - "KW_FOLLOWING", "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTIONS", - "KW_GRANT", "KW_GRANTED", "KW_GRANTS", "KW_DENY", "KW_GRAPHVIZ", + "KW_DAY", "KW_DEALLOCATE", "KW_DECLARE", "KW_DEFAULT", "KW_DEFINE", + "KW_DEFINER", "KW_DELETE", "KW_DENY", "KW_DESC", "KW_DESCRIBE", + "KW_DESCRIPTOR", "KW_DETERMINISTIC", "KW_DISTINCT", "KW_DISTRIBUTED", + "KW_DO", "KW_DOUBLE", "KW_DROP", "KW_ELSE", "KW_EMPTY", "KW_ELSEIF", + "KW_ENCODING", "KW_END", "KW_ERROR", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", + "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", "KW_EXTRACT", "KW_FALSE", + "KW_FETCH", "KW_FILTER", "KW_FINAL", "KW_FIRST", "KW_FOLLOWING", + "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTION", "KW_FUNCTIONS", + "KW_GRACE", "KW_GRANT", "KW_GRANTED", "KW_GRANTS", "KW_GRAPHVIZ", "KW_GROUP", "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", - "KW_IF", "KW_IGNORE", "KW_IN", "KW_INCLUDING", "KW_INITIAL", "KW_INNER", - "KW_INPUT", "KW_INSERT", "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", - "KW_INVOKER", "KW_IO", "KW_IS", "KW_ISOLATION", "KW_JOIN", "KW_JSON", - "KW_LAST", "KW_LATERAL", "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", - "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_MAP", - "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", "KW_MATERIALIZED", - "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", "KW_NATURAL", - "KW_NEXT", "KW_NFC", "KW_NFD", "KW_NFKC", "KW_NFKD", "KW_NO", "KW_NONE", - "KW_NORMALIZE", "KW_NOT", "KW_NULL", "KW_NULLIF", "KW_NULLS", "KW_OFFSET", - "KW_OMIT", "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", "KW_ORDER", - "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_PARTITION", - "KW_PARTITIONS", "KW_PAST", "KW_PATH", "KW_PATTERN", "KW_PER", "KW_PERMUTE", - "KW_POSITION", "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", - "KW_PROPERTIES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", "KW_REFRESH", - "KW_RENAME", "KW_REPEATABLE", "KW_REPLACE", "KW_RESET", "KW_RESPECT", - "KW_RESTRICT", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", - "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCHEMA", "KW_SCHEMAS", - "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", "KW_SERIALIZABLE", - "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", "KW_SOME", "KW_START", - "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", "KW_SYSTEM", "KW_TABLE", - "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", "KW_THEN", "KW_TIES", - "KW_TIME", "KW_TIMESTAMP", "KW_TO", "KW_TRANSACTION", "KW_TRUNCATE", - "KW_TRUE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", - "KW_UNCOMMITTED", "KW_UNION", "KW_UNMATCHED", "KW_UNNEST", "KW_UPDATE", - "KW_USE", "KW_USER", "KW_USING", "KW_VALIDATE", "KW_VALUES", "KW_VERBOSE", - "KW_VIEW", "KW_WHEN", "KW_WHERE", "KW_WINDOW", "KW_WITH", "KW_WITHOUT", - "KW_WORK", "KW_WRITE", "KW_YEAR", "KW_ZONE", "EQ", "NEQ", "LT", - "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", - "CONCAT", "QUESTION_MARK", "STRING", "UNICODE_STRING", "BINARY_LITERAL", - "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", - "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", - "SEMICOLON", "EXPONENT", "DIGIT", "LETTER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", - "WS", "UNRECOGNIZED", + "KW_IF", "KW_IGNORE", "KW_IMMEDIATE", "KW_IN", "KW_INCLUDING", "KW_INITIAL", + "KW_INNER", "KW_INPUT", "KW_INSERT", "KW_INTERSECT", "KW_INTERVAL", + "KW_INTO", "KW_INVOKER", "KW_IO", "KW_IS", "KW_ISOLATION", "KW_ITERATE", + "KW_JOIN", "KW_JSON", "KW_JSON_ARRAY", "KW_JSON_EXISTS", "KW_JSON_OBJECT", + "KW_JSON_QUERY", "KW_JSON_TABLE", "KW_JSON_VALUE", "KW_KEEP", "KW_KEY", + "KW_KEYS", "KW_LANGUAGE", "KW_LAST", "KW_LATERAL", "KW_LEADING", + "KW_LEAVE", "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LISTAGG", + "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_LOOP", + "KW_MAP", "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", + "KW_MATERIALIZED", "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", + "KW_NATURAL", "KW_NESTED", "KW_NEXT", "KW_NFC", "KW_NFD", "KW_NFKC", + "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", "KW_NOT", "KW_NULL", + "KW_NULLIF", "KW_NULLS", "KW_OBJECT", "KW_OF", "KW_OFFSET", "KW_OMIT", + "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", "KW_ORDER", + "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_OVERFLOW", + "KW_PARTITION", "KW_PARTITIONS", "KW_PASSING", "KW_PAST", "KW_PATH", + "KW_PATTERN", "KW_PER", "KW_PERIOD", "KW_PERMUTE", "KW_PLAN", "KW_POSITION", + "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", "KW_PROPERTIES", + "KW_PRUNE", "KW_QUOTES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", + "KW_REFRESH", "KW_RENAME", "KW_REPEAT", "KW_REPEATABLE", "KW_REPLACE", + "KW_RESET", "KW_RESPECT", "KW_RESTRICT", "KW_RETURN", "KW_RETURNING", + "KW_RETURNS", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", + "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCALAR", "KW_SCHEMA", + "KW_SCHEMAS", "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", + "KW_SERIALIZABLE", "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", + "KW_SOME", "KW_START", "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", + "KW_SYSTEM", "KW_TABLE", "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", + "KW_TEXT_STRING", "KW_THEN", "KW_TIES", "KW_TIME", "KW_TIMESTAMP", + "KW_TO", "KW_TRAILING", "KW_TRANSACTION", "KW_TRIM", "KW_TRUE", + "KW_TRUNCATE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", + "KW_UNCOMMITTED", "KW_UNCONDITIONAL", "KW_UNION", "KW_UNIQUE", "KW_UNKNOWN", + "KW_UNMATCHED", "KW_UNNEST", "KW_UNTIL", "KW_UPDATE", "KW_USE", + "KW_USER", "KW_USING", "KW_UTF16", "KW_UTF32", "KW_UTF8", "KW_VALIDATE", + "KW_VALUE", "KW_VALUES", "KW_VERBOSE", "KW_VERSION", "KW_VIEW", + "KW_WHEN", "KW_WHERE", "KW_WHILE", "KW_WINDOW", "KW_WITH", "KW_WITHIN", + "KW_WITHOUT", "KW_WORK", "KW_WRAPPER", "KW_WRITE", "KW_YEAR", "KW_ZONE", + "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", + "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", "SEMICOLON", "STRING", + "UNICODE_STRING", "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", + "DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", + "BACKQUOTED_IDENTIFIER", "DECIMAL_INTEGER", "HEXADECIMAL_INTEGER", + "OCTAL_INTEGER", "BINARY_INTEGER", "EXPONENT", "DIGIT", "LETTER", + "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED", ]; @@ -469,7 +569,7 @@ export class TrinoSqlLexer extends antlr.Lexer { public get modeNames(): string[] { return TrinoSqlLexer.modeNames; } public static readonly _serializedATN: number[] = [ - 4,0,276,2467,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, + 4,0,339,3117,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, @@ -516,877 +616,1124 @@ export class TrinoSqlLexer extends antlr.Lexer { 7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262, 2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268, 7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273, - 2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,1,0, - 1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,6, - 1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,11,1,12,1,12,1, - 12,1,13,1,13,1,14,1,14,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,17,1, - 17,1,17,1,17,1,17,1,17,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,20,1,20,1,21,1,21,1,21,1,21,1,21,1, - 21,1,21,1,21,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,24,1,24,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,27,1,27,1, - 27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1, - 28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1, - 30,1,30,1,30,1,30,1,30,1,30,1,30,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,33,1,33,1,33,1,33,1,34,1,34,1,34,1, - 34,1,34,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1, - 36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1, - 38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1, - 40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1, - 41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, - 42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1, - 44,1,44,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1, - 46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, - 47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1, - 48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1, - 49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1, + 2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279, + 7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284, + 2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290, + 7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295, + 2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301, + 7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306, + 2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312, + 7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317, + 2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323, + 7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328, + 2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334, + 7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339, + 2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345, + 7,345,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,5,1, + 5,1,5,1,6,1,6,1,6,1,7,1,7,1,8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1, + 12,1,12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1, + 17,1,17,1,17,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1, + 19,1,19,1,19,1,20,1,20,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,22,1,23,1,23,1,23,1,23,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, + 26,1,26,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,30,1, + 30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1, + 31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1, + 32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1, + 34,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1, + 37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,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,40,1,41,1,41,1,41,1, + 41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1, + 42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1, + 44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1, + 46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1, + 47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1, + 48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1, 50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1, - 51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1, - 52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,53,1,53,1, - 53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,54,1, - 54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,55,1, - 55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1, - 58,1,58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1, - 59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1, - 60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1, - 63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1, - 64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1, - 66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1, - 67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1, - 69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,72,1, - 72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,73,1,73,1, - 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1, - 75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,77,1, - 77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1, - 78,1,78,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1, - 80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1, - 82,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1, - 84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1, - 86,1,86,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,89,1, - 89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1, - 90,1,90,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1, - 92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1, - 94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1, - 96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1, + 51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,53,1, + 53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1, + 55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1, + 56,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,57,1, + 57,1,57,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1, + 58,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1, + 59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,60,1, + 60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1, + 61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1, + 62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1,62,1, + 62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1, + 63,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1, + 66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1, + 68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1, + 69,1,69,1,69,1,70,1,70,1,70,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1, + 71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1, + 73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1, + 75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1,76,1, + 76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, + 77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1, + 79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,79,1,80,1, + 80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1, + 82,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1, + 85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,86,1,86,1,86,1, + 86,1,86,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1, + 89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,90,1,90,1, + 91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1, + 92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1, + 94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,95,1, + 95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1, 97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1, - 100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,102, - 1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103, - 1,103,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,104,1,105,1,105, - 1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106,1,107, - 1,107,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108, - 1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109, - 1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,111,1,111,1,111, - 1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,113,1,113,1,113, - 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115, - 1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,117,1,117, - 1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, + 99,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1, + 101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,103, + 1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,104, + 1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,106,1,106, + 1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,107,1,107,1,107, + 1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109, + 1,109,1,109,1,109,1,110,1,110,1,110,1,110,1,110,1,110,1,110,1,110, + 1,111,1,111,1,111,1,111,1,111,1,111,1,111,1,112,1,112,1,112,1,112, + 1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,113,1,113, + 1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115,1,115, + 1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,116, + 1,116,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,119,1,119, 1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120, - 1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122, - 1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124, - 1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125, - 1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126, - 1,126,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,128, - 1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129, + 1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,122,1,122,1,122,1,122, + 1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123, + 1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125, + 1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,126,1,126, + 1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128, + 1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129, 1,129,1,129,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,131, - 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, - 1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132, - 1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133, - 1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,135, - 1,135,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136, - 1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138, - 1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140, - 1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,143, - 1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145, - 1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,147, - 1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148, - 1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150, - 1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,153, - 1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155, - 1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,157,1,157,1,157,1,157, - 1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158, - 1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160, - 1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,161,1,162,1,162, - 1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,162,1,163,1,163,1,163, - 1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164, - 1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166, - 1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,168,1,168,1,168, - 1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169, - 1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,170,1,170,1,170, - 1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171, - 1,171,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,172,1,173,1,173, - 1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,173,1,174,1,174, - 1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,174,1,175,1,175, - 1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176,1,177,1,177, - 1,177,1,177,1,177,1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178, - 1,178,1,178,1,178,1,178,1,178,1,179,1,179,1,179,1,179,1,179,1,179, - 1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180, - 1,180,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,181,1,182,1,182, - 1,182,1,182,1,182,1,182,1,183,1,183,1,183,1,183,1,183,1,183,1,183, - 1,183,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,184,1,185, - 1,185,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186, - 1,186,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188,1,188, - 1,188,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,189,1,190, - 1,190,1,190,1,190,1,190,1,190,1,190,1,191,1,191,1,191,1,191,1,192, - 1,192,1,192,1,192,1,192,1,193,1,193,1,193,1,193,1,193,1,193,1,193, - 1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195, - 1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196,1,196,1,196, - 1,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,198, - 1,198,1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,199,1,199, - 1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200, - 1,200,1,200,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,202, - 1,202,1,202,1,202,1,203,1,203,1,203,1,203,1,203,1,204,1,204,1,204, - 1,204,1,204,1,205,1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206, - 1,206,1,206,1,207,1,207,1,207,1,207,1,207,1,207,1,208,1,208,1,208, - 1,208,1,208,1,208,1,208,1,209,1,209,1,209,1,209,1,209,1,209,1,209, - 1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210,1,210,1,210,1,211, - 1,211,1,211,1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212, - 1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213, - 1,213,1,213,1,214,1,214,1,214,1,214,1,214,1,215,1,215,1,215,1,215, - 1,215,1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217, - 1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,218,1,219, - 1,219,1,219,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220, - 1,220,1,220,1,220,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221, - 1,221,1,222,1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,1,223, - 1,223,1,223,1,223,1,223,1,224,1,224,1,224,1,224,1,224,1,225,1,225, - 1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226,1,226,1,226, - 1,226,1,226,1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227,1,227, - 1,227,1,227,1,227,1,227,1,227,1,227,1,228,1,228,1,228,1,228,1,228, - 1,228,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229,1,229, - 1,230,1,230,1,230,1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231, - 1,231,1,231,1,231,1,232,1,232,1,232,1,232,1,233,1,233,1,233,1,233, - 1,233,1,234,1,234,1,234,1,234,1,234,1,234,1,235,1,235,1,235,1,235, - 1,235,1,235,1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,236, - 1,236,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,238,1,238, - 1,238,1,238,1,238,1,239,1,239,1,239,1,239,1,239,1,240,1,240,1,240, + 1,131,1,131,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133, + 1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134, + 1,134,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136, + 1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137, + 1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138, + 1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139, + 1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140, + 1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141,1,141, + 1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142,1,142, + 1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144, + 1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146, + 1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148, + 1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149, + 1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151, + 1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153, + 1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155, + 1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,156, + 1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,157,1,158, + 1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,158, + 1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,159, + 1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,162,1,162, + 1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163, + 1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165, + 1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165, + 1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,166, + 1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,167,1,167, + 1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,168,1,169,1,169, + 1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,170, + 1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172, + 1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,173,1,174,1,174, + 1,174,1,174,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,176, + 1,177,1,177,1,177,1,177,1,177,1,178,1,178,1,178,1,179,1,179,1,179, + 1,179,1,179,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180,1,180, + 1,180,1,181,1,181,1,181,1,181,1,182,1,182,1,182,1,182,1,182,1,183, + 1,183,1,183,1,183,1,183,1,183,1,183,1,184,1,184,1,184,1,184,1,184, + 1,184,1,185,1,185,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186, + 1,187,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,1,188,1,188, + 1,188,1,189,1,189,1,189,1,190,1,190,1,190,1,190,1,191,1,191,1,191, + 1,191,1,191,1,192,1,192,1,192,1,192,1,192,1,192,1,192,1,193,1,193, + 1,193,1,194,1,194,1,194,1,194,1,194,1,194,1,195,1,195,1,195,1,195, + 1,195,1,195,1,195,1,195,1,195,1,195,1,195,1,196,1,196,1,196,1,196, + 1,196,1,196,1,197,1,197,1,197,1,197,1,197,1,197,1,197,1,198,1,198, + 1,198,1,198,1,198,1,199,1,199,1,199,1,199,1,199,1,199,1,199,1,199, + 1,199,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200,1,200, + 1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201,1,201, + 1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,202,1,203,1,203,1,203, + 1,203,1,203,1,204,1,204,1,204,1,204,1,204,1,205,1,205,1,205,1,205, + 1,205,1,205,1,205,1,205,1,206,1,206,1,206,1,206,1,207,1,207,1,207, + 1,207,1,207,1,207,1,207,1,208,1,208,1,208,1,208,1,208,1,208,1,208, + 1,208,1,209,1,209,1,209,1,209,1,209,1,210,1,210,1,210,1,210,1,210, + 1,210,1,210,1,210,1,210,1,211,1,211,1,211,1,211,1,211,1,211,1,211, + 1,211,1,211,1,211,1,212,1,212,1,212,1,212,1,212,1,212,1,212,1,212, + 1,212,1,212,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,213,1,214, + 1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,214,1,215, + 1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,215,1,216, + 1,216,1,216,1,216,1,216,1,216,1,217,1,217,1,217,1,217,1,217,1,217, + 1,217,1,218,1,218,1,218,1,218,1,218,1,218,1,219,1,219,1,219,1,219, + 1,219,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220,1,220, + 1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,221,1,222,1,222,1,222, + 1,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,1,223,1,223,1,223, + 1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224,1,224, + 1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,226,1,226,1,226, + 1,226,1,226,1,226,1,227,1,227,1,227,1,227,1,227,1,227,1,227,1,227, + 1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,228,1,229,1,229, + 1,229,1,229,1,229,1,229,1,229,1,230,1,230,1,230,1,230,1,230,1,230, + 1,230,1,230,1,230,1,230,1,231,1,231,1,231,1,231,1,231,1,231,1,231, + 1,231,1,232,1,232,1,232,1,232,1,232,1,232,1,232,1,233,1,233,1,233, + 1,233,1,233,1,233,1,234,1,234,1,234,1,234,1,234,1,235,1,235,1,235, + 1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,236,1,236,1,236,1,236, + 1,236,1,237,1,237,1,237,1,237,1,237,1,237,1,237,1,238,1,238,1,238, + 1,238,1,239,1,239,1,239,1,239,1,239,1,240,1,240,1,240,1,240,1,240, 1,240,1,240,1,240,1,241,1,241,1,241,1,241,1,241,1,241,1,241,1,242, - 1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243,1,243,1,243, - 1,243,1,244,1,244,1,244,1,244,1,244,1,245,1,245,1,245,1,245,1,245, - 1,245,1,246,1,246,1,246,1,246,1,246,1,247,1,247,1,247,1,247,1,247, - 1,248,1,248,1,249,1,249,1,249,1,249,3,249,2257,8,249,1,250,1,250, - 1,251,1,251,1,251,1,252,1,252,1,253,1,253,1,253,1,254,1,254,1,255, - 1,255,1,256,1,256,1,257,1,257,1,258,1,258,1,259,1,259,1,259,1,260, - 1,260,1,261,1,261,1,261,1,261,5,261,2288,8,261,10,261,12,261,2291, - 9,261,1,261,1,261,1,262,1,262,1,262,1,262,1,262,1,262,1,262,5,262, - 2302,8,262,10,262,12,262,2305,9,262,1,262,1,262,1,263,1,263,1,263, - 1,263,5,263,2313,8,263,10,263,12,263,2316,9,263,1,263,1,263,1,264, - 4,264,2321,8,264,11,264,12,264,2322,1,265,4,265,2326,8,265,11,265, - 12,265,2327,1,265,1,265,5,265,2332,8,265,10,265,12,265,2335,9,265, - 1,265,1,265,4,265,2339,8,265,11,265,12,265,2340,3,265,2343,8,265, - 1,266,4,266,2346,8,266,11,266,12,266,2347,1,266,1,266,5,266,2352, - 8,266,10,266,12,266,2355,9,266,3,266,2357,8,266,1,266,1,266,1,266, - 1,266,4,266,2363,8,266,11,266,12,266,2364,1,266,1,266,3,266,2369, - 8,266,1,267,1,267,3,267,2373,8,267,1,267,1,267,1,267,5,267,2378, - 8,267,10,267,12,267,2381,9,267,1,268,1,268,1,268,1,268,4,268,2387, - 8,268,11,268,12,268,2388,1,269,1,269,1,269,1,269,5,269,2395,8,269, - 10,269,12,269,2398,9,269,1,269,1,269,1,270,1,270,1,270,1,270,5,270, - 2406,8,270,10,270,12,270,2409,9,270,1,270,1,270,1,271,1,271,1,272, - 1,272,3,272,2417,8,272,1,272,4,272,2420,8,272,11,272,12,272,2421, - 1,273,1,273,1,274,1,274,1,275,1,275,1,275,1,275,5,275,2432,8,275, - 10,275,12,275,2435,9,275,1,275,3,275,2438,8,275,1,275,3,275,2441, - 8,275,1,275,1,275,1,276,1,276,1,276,1,276,5,276,2449,8,276,10,276, - 12,276,2452,9,276,1,276,1,276,1,276,1,276,1,276,1,277,4,277,2460, - 8,277,11,277,12,277,2461,1,277,1,277,1,278,1,278,1,2450,0,279,1, - 1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27, - 14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49, - 25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71, - 36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93, - 47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113, - 57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66, - 133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151, - 76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85, - 171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189, - 95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207, - 104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223, - 112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239, - 120,241,121,243,122,245,123,247,124,249,125,251,126,253,127,255, - 128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271, - 136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287, - 144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303, - 152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319, - 160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335, - 168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351, - 176,353,177,355,178,357,179,359,180,361,181,363,182,365,183,367, - 184,369,185,371,186,373,187,375,188,377,189,379,190,381,191,383, - 192,385,193,387,194,389,195,391,196,393,197,395,198,397,199,399, - 200,401,201,403,202,405,203,407,204,409,205,411,206,413,207,415, - 208,417,209,419,210,421,211,423,212,425,213,427,214,429,215,431, - 216,433,217,435,218,437,219,439,220,441,221,443,222,445,223,447, - 224,449,225,451,226,453,227,455,228,457,229,459,230,461,231,463, - 232,465,233,467,234,469,235,471,236,473,237,475,238,477,239,479, - 240,481,241,483,242,485,243,487,244,489,245,491,246,493,247,495, - 248,497,249,499,250,501,251,503,252,505,253,507,254,509,255,511, - 256,513,257,515,258,517,259,519,260,521,261,523,262,525,263,527, - 264,529,265,531,266,533,267,535,268,537,269,539,270,541,271,543, - 272,545,0,547,0,549,0,551,273,553,274,555,275,557,276,1,0,33,2,0, - 83,83,115,115,2,0,75,75,107,107,2,0,73,73,105,105,2,0,80,80,112, - 112,2,0,65,65,97,97,2,0,68,68,100,100,2,0,77,77,109,109,2,0,78,78, - 110,110,2,0,70,70,102,102,2,0,84,84,116,116,2,0,69,69,101,101,2, - 0,82,82,114,114,2,0,76,76,108,108,2,0,89,89,121,121,2,0,90,90,122, - 122,2,0,67,67,99,99,2,0,85,85,117,117,2,0,72,72,104,104,2,0,79,79, - 111,111,2,0,66,66,98,98,2,0,87,87,119,119,2,0,71,71,103,103,2,0, - 88,88,120,120,2,0,86,86,118,118,2,0,74,74,106,106,1,0,39,39,1,0, - 34,34,1,0,96,96,2,0,43,43,45,45,1,0,48,57,2,0,65,90,97,122,2,0,10, - 10,13,13,3,0,9,10,13,13,32,32,2497,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1, - 0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0, - 0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0, - 0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0, - 0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0, - 0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0, - 0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0, - 0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0, - 0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0, - 0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0, - 0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105, - 1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0, - 0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1, - 0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0, - 133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0, - 0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151, - 1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0, - 0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1, - 0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0, - 179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0, - 0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197, - 1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0, - 0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1, - 0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0, - 225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0, - 0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243, - 1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0, - 0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1, - 0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0, - 271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0, - 0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289, - 1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0, - 0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1, - 0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0, - 317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0, - 0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335, - 1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0, - 0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1, - 0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0, - 363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0, - 0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381, - 1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0, - 0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1, - 0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0, - 409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0, - 0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427, - 1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0, - 0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1, - 0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0, - 455,1,0,0,0,0,457,1,0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0, - 0,0,0,465,1,0,0,0,0,467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473, - 1,0,0,0,0,475,1,0,0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0, - 0,483,1,0,0,0,0,485,1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1, - 0,0,0,0,493,1,0,0,0,0,495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0, - 501,1,0,0,0,0,503,1,0,0,0,0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0, - 0,0,0,511,1,0,0,0,0,513,1,0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519, - 1,0,0,0,0,521,1,0,0,0,0,523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0, - 0,529,1,0,0,0,0,531,1,0,0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1, - 0,0,0,0,539,1,0,0,0,0,541,1,0,0,0,0,543,1,0,0,0,0,551,1,0,0,0,0, - 553,1,0,0,0,0,555,1,0,0,0,0,557,1,0,0,0,1,559,1,0,0,0,3,561,1,0, - 0,0,5,563,1,0,0,0,7,565,1,0,0,0,9,567,1,0,0,0,11,572,1,0,0,0,13, - 575,1,0,0,0,15,577,1,0,0,0,17,579,1,0,0,0,19,581,1,0,0,0,21,583, - 1,0,0,0,23,585,1,0,0,0,25,588,1,0,0,0,27,591,1,0,0,0,29,593,1,0, - 0,0,31,595,1,0,0,0,33,598,1,0,0,0,35,602,1,0,0,0,37,608,1,0,0,0, - 39,614,1,0,0,0,41,618,1,0,0,0,43,624,1,0,0,0,45,632,1,0,0,0,47,636, - 1,0,0,0,49,640,1,0,0,0,51,646,1,0,0,0,53,649,1,0,0,0,55,653,1,0, - 0,0,57,656,1,0,0,0,59,670,1,0,0,0,61,680,1,0,0,0,63,688,1,0,0,0, - 65,691,1,0,0,0,67,696,1,0,0,0,69,704,1,0,0,0,71,709,1,0,0,0,73,714, - 1,0,0,0,75,723,1,0,0,0,77,730,1,0,0,0,79,738,1,0,0,0,81,746,1,0, - 0,0,83,753,1,0,0,0,85,763,1,0,0,0,87,774,1,0,0,0,89,781,1,0,0,0, - 91,787,1,0,0,0,93,792,1,0,0,0,95,800,1,0,0,0,97,816,1,0,0,0,99,829, - 1,0,0,0,101,842,1,0,0,0,103,855,1,0,0,0,105,870,1,0,0,0,107,883, - 1,0,0,0,109,901,1,0,0,0,111,914,1,0,0,0,113,919,1,0,0,0,115,924, - 1,0,0,0,117,928,1,0,0,0,119,936,1,0,0,0,121,947,1,0,0,0,123,955, - 1,0,0,0,125,962,1,0,0,0,127,967,1,0,0,0,129,976,1,0,0,0,131,983, - 1,0,0,0,133,992,1,0,0,0,135,1004,1,0,0,0,137,1011,1,0,0,0,139,1016, - 1,0,0,0,141,1021,1,0,0,0,143,1027,1,0,0,0,145,1031,1,0,0,0,147,1038, - 1,0,0,0,149,1045,1,0,0,0,151,1055,1,0,0,0,153,1063,1,0,0,0,155,1070, - 1,0,0,0,157,1078,1,0,0,0,159,1086,1,0,0,0,161,1092,1,0,0,0,163,1098, - 1,0,0,0,165,1105,1,0,0,0,167,1111,1,0,0,0,169,1117,1,0,0,0,171,1127, - 1,0,0,0,173,1131,1,0,0,0,175,1138,1,0,0,0,177,1143,1,0,0,0,179,1148, - 1,0,0,0,181,1158,1,0,0,0,183,1164,1,0,0,0,185,1172,1,0,0,0,187,1179, - 1,0,0,0,189,1184,1,0,0,0,191,1193,1,0,0,0,193,1199,1,0,0,0,195,1208, - 1,0,0,0,197,1215,1,0,0,0,199,1222,1,0,0,0,201,1227,1,0,0,0,203,1230, - 1,0,0,0,205,1237,1,0,0,0,207,1240,1,0,0,0,209,1250,1,0,0,0,211,1258, - 1,0,0,0,213,1264,1,0,0,0,215,1270,1,0,0,0,217,1277,1,0,0,0,219,1287, - 1,0,0,0,221,1296,1,0,0,0,223,1301,1,0,0,0,225,1309,1,0,0,0,227,1312, - 1,0,0,0,229,1315,1,0,0,0,231,1325,1,0,0,0,233,1330,1,0,0,0,235,1335, - 1,0,0,0,237,1340,1,0,0,0,239,1348,1,0,0,0,241,1353,1,0,0,0,243,1359, - 1,0,0,0,245,1364,1,0,0,0,247,1370,1,0,0,0,249,1376,1,0,0,0,251,1386, - 1,0,0,0,253,1401,1,0,0,0,255,1409,1,0,0,0,257,1413,1,0,0,0,259,1419, - 1,0,0,0,261,1427,1,0,0,0,263,1435,1,0,0,0,265,1451,1,0,0,0,267,1464, - 1,0,0,0,269,1473,1,0,0,0,271,1479,1,0,0,0,273,1486,1,0,0,0,275,1492, - 1,0,0,0,277,1500,1,0,0,0,279,1505,1,0,0,0,281,1509,1,0,0,0,283,1513, - 1,0,0,0,285,1518,1,0,0,0,287,1523,1,0,0,0,289,1526,1,0,0,0,291,1531, - 1,0,0,0,293,1541,1,0,0,0,295,1545,1,0,0,0,297,1550,1,0,0,0,299,1557, - 1,0,0,0,301,1563,1,0,0,0,303,1570,1,0,0,0,305,1575,1,0,0,0,307,1578, - 1,0,0,0,309,1582,1,0,0,0,311,1587,1,0,0,0,313,1594,1,0,0,0,315,1597, - 1,0,0,0,317,1603,1,0,0,0,319,1614,1,0,0,0,321,1620,1,0,0,0,323,1627, - 1,0,0,0,325,1632,1,0,0,0,327,1642,1,0,0,0,329,1653,1,0,0,0,331,1658, - 1,0,0,0,333,1663,1,0,0,0,335,1671,1,0,0,0,337,1675,1,0,0,0,339,1683, - 1,0,0,0,341,1692,1,0,0,0,343,1702,1,0,0,0,345,1712,1,0,0,0,347,1720, - 1,0,0,0,349,1731,1,0,0,0,351,1742,1,0,0,0,353,1748,1,0,0,0,355,1753, - 1,0,0,0,357,1763,1,0,0,0,359,1771,1,0,0,0,361,1778,1,0,0,0,363,1789, - 1,0,0,0,365,1797,1,0,0,0,367,1803,1,0,0,0,369,1811,1,0,0,0,371,1820, - 1,0,0,0,373,1827,1,0,0,0,375,1833,1,0,0,0,377,1838,1,0,0,0,379,1844, - 1,0,0,0,381,1853,1,0,0,0,383,1860,1,0,0,0,385,1864,1,0,0,0,387,1869, - 1,0,0,0,389,1877,1,0,0,0,391,1884,1,0,0,0,393,1892,1,0,0,0,395,1899, - 1,0,0,0,397,1908,1,0,0,0,399,1913,1,0,0,0,401,1920,1,0,0,0,403,1933, - 1,0,0,0,405,1941,1,0,0,0,407,1945,1,0,0,0,409,1950,1,0,0,0,411,1955, - 1,0,0,0,413,1960,1,0,0,0,415,1966,1,0,0,0,417,1972,1,0,0,0,419,1979, - 1,0,0,0,421,1989,1,0,0,0,423,1996,1,0,0,0,425,2002,1,0,0,0,427,2009, - 1,0,0,0,429,2021,1,0,0,0,431,2026,1,0,0,0,433,2031,1,0,0,0,435,2036, - 1,0,0,0,437,2041,1,0,0,0,439,2051,1,0,0,0,441,2054,1,0,0,0,443,2066, - 1,0,0,0,445,2075,1,0,0,0,447,2080,1,0,0,0,449,2089,1,0,0,0,451,2094, - 1,0,0,0,453,2102,1,0,0,0,455,2112,1,0,0,0,457,2124,1,0,0,0,459,2130, - 1,0,0,0,461,2140,1,0,0,0,463,2147,1,0,0,0,465,2154,1,0,0,0,467,2158, - 1,0,0,0,469,2163,1,0,0,0,471,2169,1,0,0,0,473,2178,1,0,0,0,475,2185, - 1,0,0,0,477,2193,1,0,0,0,479,2198,1,0,0,0,481,2203,1,0,0,0,483,2209, - 1,0,0,0,485,2216,1,0,0,0,487,2221,1,0,0,0,489,2229,1,0,0,0,491,2234, - 1,0,0,0,493,2240,1,0,0,0,495,2245,1,0,0,0,497,2250,1,0,0,0,499,2256, - 1,0,0,0,501,2258,1,0,0,0,503,2260,1,0,0,0,505,2263,1,0,0,0,507,2265, - 1,0,0,0,509,2268,1,0,0,0,511,2270,1,0,0,0,513,2272,1,0,0,0,515,2274, - 1,0,0,0,517,2276,1,0,0,0,519,2278,1,0,0,0,521,2281,1,0,0,0,523,2283, - 1,0,0,0,525,2294,1,0,0,0,527,2308,1,0,0,0,529,2320,1,0,0,0,531,2342, - 1,0,0,0,533,2368,1,0,0,0,535,2372,1,0,0,0,537,2382,1,0,0,0,539,2390, - 1,0,0,0,541,2401,1,0,0,0,543,2412,1,0,0,0,545,2414,1,0,0,0,547,2423, - 1,0,0,0,549,2425,1,0,0,0,551,2427,1,0,0,0,553,2444,1,0,0,0,555,2459, - 1,0,0,0,557,2465,1,0,0,0,559,560,5,40,0,0,560,2,1,0,0,0,561,562, - 5,41,0,0,562,4,1,0,0,0,563,564,5,44,0,0,564,6,1,0,0,0,565,566,5, - 46,0,0,566,8,1,0,0,0,567,568,7,0,0,0,568,569,7,1,0,0,569,570,7,2, - 0,0,570,571,7,3,0,0,571,10,1,0,0,0,572,573,5,45,0,0,573,574,5,62, - 0,0,574,12,1,0,0,0,575,576,5,91,0,0,576,14,1,0,0,0,577,578,5,93, - 0,0,578,16,1,0,0,0,579,580,5,124,0,0,580,18,1,0,0,0,581,582,5,94, - 0,0,582,20,1,0,0,0,583,584,5,36,0,0,584,22,1,0,0,0,585,586,5,123, - 0,0,586,587,5,45,0,0,587,24,1,0,0,0,588,589,5,45,0,0,589,590,5,125, - 0,0,590,26,1,0,0,0,591,592,5,123,0,0,592,28,1,0,0,0,593,594,5,125, - 0,0,594,30,1,0,0,0,595,596,5,61,0,0,596,597,5,62,0,0,597,32,1,0, - 0,0,598,599,7,4,0,0,599,600,7,5,0,0,600,601,7,5,0,0,601,34,1,0,0, - 0,602,603,7,4,0,0,603,604,7,5,0,0,604,605,7,6,0,0,605,606,7,2,0, - 0,606,607,7,7,0,0,607,36,1,0,0,0,608,609,7,4,0,0,609,610,7,8,0,0, - 610,611,7,9,0,0,611,612,7,10,0,0,612,613,7,11,0,0,613,38,1,0,0,0, - 614,615,7,4,0,0,615,616,7,12,0,0,616,617,7,12,0,0,617,40,1,0,0,0, - 618,619,7,4,0,0,619,620,7,12,0,0,620,621,7,9,0,0,621,622,7,10,0, - 0,622,623,7,11,0,0,623,42,1,0,0,0,624,625,7,4,0,0,625,626,7,7,0, - 0,626,627,7,4,0,0,627,628,7,12,0,0,628,629,7,13,0,0,629,630,7,14, - 0,0,630,631,7,10,0,0,631,44,1,0,0,0,632,633,7,4,0,0,633,634,7,7, - 0,0,634,635,7,5,0,0,635,46,1,0,0,0,636,637,7,4,0,0,637,638,7,7,0, - 0,638,639,7,13,0,0,639,48,1,0,0,0,640,641,7,4,0,0,641,642,7,11,0, - 0,642,643,7,11,0,0,643,644,7,4,0,0,644,645,7,13,0,0,645,50,1,0,0, - 0,646,647,7,4,0,0,647,648,7,0,0,0,648,52,1,0,0,0,649,650,7,4,0,0, - 650,651,7,0,0,0,651,652,7,15,0,0,652,54,1,0,0,0,653,654,7,4,0,0, - 654,655,7,9,0,0,655,56,1,0,0,0,656,657,7,4,0,0,657,658,7,16,0,0, - 658,659,7,9,0,0,659,660,7,17,0,0,660,661,7,18,0,0,661,662,7,11,0, - 0,662,663,7,2,0,0,663,664,7,14,0,0,664,665,7,4,0,0,665,666,7,9,0, - 0,666,667,7,2,0,0,667,668,7,18,0,0,668,669,7,7,0,0,669,58,1,0,0, - 0,670,671,7,19,0,0,671,672,7,10,0,0,672,673,7,11,0,0,673,674,7,7, - 0,0,674,675,7,18,0,0,675,676,7,16,0,0,676,677,7,12,0,0,677,678,7, - 12,0,0,678,679,7,2,0,0,679,60,1,0,0,0,680,681,7,19,0,0,681,682,7, - 10,0,0,682,683,7,9,0,0,683,684,7,20,0,0,684,685,7,10,0,0,685,686, - 7,10,0,0,686,687,7,7,0,0,687,62,1,0,0,0,688,689,7,19,0,0,689,690, - 7,13,0,0,690,64,1,0,0,0,691,692,7,15,0,0,692,693,7,4,0,0,693,694, - 7,12,0,0,694,695,7,12,0,0,695,66,1,0,0,0,696,697,7,15,0,0,697,698, - 7,4,0,0,698,699,7,0,0,0,699,700,7,15,0,0,700,701,7,4,0,0,701,702, - 7,5,0,0,702,703,7,10,0,0,703,68,1,0,0,0,704,705,7,15,0,0,705,706, - 7,4,0,0,706,707,7,0,0,0,707,708,7,10,0,0,708,70,1,0,0,0,709,710, - 7,15,0,0,710,711,7,4,0,0,711,712,7,0,0,0,712,713,7,9,0,0,713,72, - 1,0,0,0,714,715,7,15,0,0,715,716,7,4,0,0,716,717,7,9,0,0,717,718, - 7,4,0,0,718,719,7,12,0,0,719,720,7,18,0,0,720,721,7,21,0,0,721,722, - 7,0,0,0,722,74,1,0,0,0,723,724,7,15,0,0,724,725,7,18,0,0,725,726, - 7,12,0,0,726,727,7,16,0,0,727,728,7,6,0,0,728,729,7,7,0,0,729,76, - 1,0,0,0,730,731,7,15,0,0,731,732,7,18,0,0,732,733,7,12,0,0,733,734, - 7,16,0,0,734,735,7,6,0,0,735,736,7,7,0,0,736,737,7,0,0,0,737,78, - 1,0,0,0,738,739,7,15,0,0,739,740,7,18,0,0,740,741,7,6,0,0,741,742, - 7,6,0,0,742,743,7,10,0,0,743,744,7,7,0,0,744,745,7,9,0,0,745,80, - 1,0,0,0,746,747,7,15,0,0,747,748,7,18,0,0,748,749,7,6,0,0,749,750, - 7,6,0,0,750,751,7,2,0,0,751,752,7,9,0,0,752,82,1,0,0,0,753,754,7, - 15,0,0,754,755,7,18,0,0,755,756,7,6,0,0,756,757,7,6,0,0,757,758, - 7,2,0,0,758,759,7,9,0,0,759,760,7,9,0,0,760,761,7,10,0,0,761,762, - 7,5,0,0,762,84,1,0,0,0,763,764,7,15,0,0,764,765,7,18,0,0,765,766, - 7,7,0,0,766,767,7,0,0,0,767,768,7,9,0,0,768,769,7,11,0,0,769,770, - 7,4,0,0,770,771,7,2,0,0,771,772,7,7,0,0,772,773,7,9,0,0,773,86,1, - 0,0,0,774,775,7,15,0,0,775,776,7,11,0,0,776,777,7,10,0,0,777,778, - 7,4,0,0,778,779,7,9,0,0,779,780,7,10,0,0,780,88,1,0,0,0,781,782, - 7,15,0,0,782,783,7,11,0,0,783,784,7,18,0,0,784,785,7,0,0,0,785,786, - 7,0,0,0,786,90,1,0,0,0,787,788,7,15,0,0,788,789,7,16,0,0,789,790, - 7,19,0,0,790,791,7,10,0,0,791,92,1,0,0,0,792,793,7,15,0,0,793,794, - 7,16,0,0,794,795,7,11,0,0,795,796,7,11,0,0,796,797,7,10,0,0,797, - 798,7,7,0,0,798,799,7,9,0,0,799,94,1,0,0,0,800,801,7,15,0,0,801, - 802,7,16,0,0,802,803,7,11,0,0,803,804,7,11,0,0,804,805,7,10,0,0, - 805,806,7,7,0,0,806,807,7,9,0,0,807,808,5,95,0,0,808,809,7,15,0, - 0,809,810,7,4,0,0,810,811,7,9,0,0,811,812,7,4,0,0,812,813,7,12,0, - 0,813,814,7,18,0,0,814,815,7,21,0,0,815,96,1,0,0,0,816,817,7,15, - 0,0,817,818,7,16,0,0,818,819,7,11,0,0,819,820,7,11,0,0,820,821,7, - 10,0,0,821,822,7,7,0,0,822,823,7,9,0,0,823,824,5,95,0,0,824,825, - 7,5,0,0,825,826,7,4,0,0,826,827,7,9,0,0,827,828,7,10,0,0,828,98, - 1,0,0,0,829,830,7,15,0,0,830,831,7,16,0,0,831,832,7,11,0,0,832,833, - 7,11,0,0,833,834,7,10,0,0,834,835,7,7,0,0,835,836,7,9,0,0,836,837, - 5,95,0,0,837,838,7,3,0,0,838,839,7,4,0,0,839,840,7,9,0,0,840,841, - 7,17,0,0,841,100,1,0,0,0,842,843,7,15,0,0,843,844,7,16,0,0,844,845, - 7,11,0,0,845,846,7,11,0,0,846,847,7,10,0,0,847,848,7,7,0,0,848,849, - 7,9,0,0,849,850,5,95,0,0,850,851,7,11,0,0,851,852,7,18,0,0,852,853, - 7,12,0,0,853,854,7,10,0,0,854,102,1,0,0,0,855,856,7,15,0,0,856,857, - 7,16,0,0,857,858,7,11,0,0,858,859,7,11,0,0,859,860,7,10,0,0,860, - 861,7,7,0,0,861,862,7,9,0,0,862,863,5,95,0,0,863,864,7,0,0,0,864, - 865,7,15,0,0,865,866,7,17,0,0,866,867,7,10,0,0,867,868,7,6,0,0,868, - 869,7,4,0,0,869,104,1,0,0,0,870,871,7,15,0,0,871,872,7,16,0,0,872, - 873,7,11,0,0,873,874,7,11,0,0,874,875,7,10,0,0,875,876,7,7,0,0,876, - 877,7,9,0,0,877,878,5,95,0,0,878,879,7,9,0,0,879,880,7,2,0,0,880, - 881,7,6,0,0,881,882,7,10,0,0,882,106,1,0,0,0,883,884,7,15,0,0,884, - 885,7,16,0,0,885,886,7,11,0,0,886,887,7,11,0,0,887,888,7,10,0,0, - 888,889,7,7,0,0,889,890,7,9,0,0,890,891,5,95,0,0,891,892,7,9,0,0, - 892,893,7,2,0,0,893,894,7,6,0,0,894,895,7,10,0,0,895,896,7,0,0,0, - 896,897,7,9,0,0,897,898,7,4,0,0,898,899,7,6,0,0,899,900,7,3,0,0, - 900,108,1,0,0,0,901,902,7,15,0,0,902,903,7,16,0,0,903,904,7,11,0, - 0,904,905,7,11,0,0,905,906,7,10,0,0,906,907,7,7,0,0,907,908,7,9, - 0,0,908,909,5,95,0,0,909,910,7,16,0,0,910,911,7,0,0,0,911,912,7, - 10,0,0,912,913,7,11,0,0,913,110,1,0,0,0,914,915,7,5,0,0,915,916, - 7,4,0,0,916,917,7,9,0,0,917,918,7,4,0,0,918,112,1,0,0,0,919,920, - 7,5,0,0,920,921,7,4,0,0,921,922,7,9,0,0,922,923,7,10,0,0,923,114, - 1,0,0,0,924,925,7,5,0,0,925,926,7,4,0,0,926,927,7,13,0,0,927,116, - 1,0,0,0,928,929,7,5,0,0,929,930,7,10,0,0,930,931,7,8,0,0,931,932, - 7,4,0,0,932,933,7,16,0,0,933,934,7,12,0,0,934,935,7,9,0,0,935,118, - 1,0,0,0,936,937,7,5,0,0,937,938,7,10,0,0,938,939,7,4,0,0,939,940, - 7,12,0,0,940,941,7,12,0,0,941,942,7,18,0,0,942,943,7,15,0,0,943, - 944,7,4,0,0,944,945,7,9,0,0,945,946,7,10,0,0,946,120,1,0,0,0,947, - 948,7,5,0,0,948,949,7,10,0,0,949,950,7,8,0,0,950,951,7,2,0,0,951, - 952,7,7,0,0,952,953,7,10,0,0,953,954,7,11,0,0,954,122,1,0,0,0,955, - 956,7,5,0,0,956,957,7,10,0,0,957,958,7,12,0,0,958,959,7,10,0,0,959, - 960,7,9,0,0,960,961,7,10,0,0,961,124,1,0,0,0,962,963,7,5,0,0,963, - 964,7,10,0,0,964,965,7,0,0,0,965,966,7,15,0,0,966,126,1,0,0,0,967, - 968,7,5,0,0,968,969,7,10,0,0,969,970,7,0,0,0,970,971,7,15,0,0,971, - 972,7,11,0,0,972,973,7,2,0,0,973,974,7,19,0,0,974,975,7,10,0,0,975, - 128,1,0,0,0,976,977,7,5,0,0,977,978,7,10,0,0,978,979,7,8,0,0,979, - 980,7,2,0,0,980,981,7,7,0,0,981,982,7,10,0,0,982,130,1,0,0,0,983, - 984,7,5,0,0,984,985,7,2,0,0,985,986,7,0,0,0,986,987,7,9,0,0,987, - 988,7,2,0,0,988,989,7,7,0,0,989,990,7,15,0,0,990,991,7,9,0,0,991, - 132,1,0,0,0,992,993,7,5,0,0,993,994,7,2,0,0,994,995,7,0,0,0,995, - 996,7,9,0,0,996,997,7,11,0,0,997,998,7,2,0,0,998,999,7,19,0,0,999, - 1000,7,16,0,0,1000,1001,7,9,0,0,1001,1002,7,10,0,0,1002,1003,7,5, - 0,0,1003,134,1,0,0,0,1004,1005,7,5,0,0,1005,1006,7,18,0,0,1006,1007, - 7,16,0,0,1007,1008,7,19,0,0,1008,1009,7,12,0,0,1009,1010,7,10,0, - 0,1010,136,1,0,0,0,1011,1012,7,5,0,0,1012,1013,7,11,0,0,1013,1014, - 7,18,0,0,1014,1015,7,3,0,0,1015,138,1,0,0,0,1016,1017,7,10,0,0,1017, - 1018,7,12,0,0,1018,1019,7,0,0,0,1019,1020,7,10,0,0,1020,140,1,0, - 0,0,1021,1022,7,10,0,0,1022,1023,7,6,0,0,1023,1024,7,3,0,0,1024, - 1025,7,9,0,0,1025,1026,7,13,0,0,1026,142,1,0,0,0,1027,1028,7,10, - 0,0,1028,1029,7,7,0,0,1029,1030,7,5,0,0,1030,144,1,0,0,0,1031,1032, - 7,10,0,0,1032,1033,7,0,0,0,1033,1034,7,15,0,0,1034,1035,7,4,0,0, - 1035,1036,7,3,0,0,1036,1037,7,10,0,0,1037,146,1,0,0,0,1038,1039, - 7,10,0,0,1039,1040,7,22,0,0,1040,1041,7,15,0,0,1041,1042,7,10,0, - 0,1042,1043,7,3,0,0,1043,1044,7,9,0,0,1044,148,1,0,0,0,1045,1046, - 7,10,0,0,1046,1047,7,22,0,0,1047,1048,7,15,0,0,1048,1049,7,12,0, - 0,1049,1050,7,16,0,0,1050,1051,7,5,0,0,1051,1052,7,2,0,0,1052,1053, - 7,7,0,0,1053,1054,7,21,0,0,1054,150,1,0,0,0,1055,1056,7,10,0,0,1056, - 1057,7,22,0,0,1057,1058,7,10,0,0,1058,1059,7,15,0,0,1059,1060,7, - 16,0,0,1060,1061,7,9,0,0,1061,1062,7,10,0,0,1062,152,1,0,0,0,1063, - 1064,7,10,0,0,1064,1065,7,22,0,0,1065,1066,7,2,0,0,1066,1067,7,0, - 0,0,1067,1068,7,9,0,0,1068,1069,7,0,0,0,1069,154,1,0,0,0,1070,1071, - 7,10,0,0,1071,1072,7,22,0,0,1072,1073,7,3,0,0,1073,1074,7,12,0,0, - 1074,1075,7,4,0,0,1075,1076,7,2,0,0,1076,1077,7,7,0,0,1077,156,1, - 0,0,0,1078,1079,7,10,0,0,1079,1080,7,22,0,0,1080,1081,7,9,0,0,1081, - 1082,7,11,0,0,1082,1083,7,4,0,0,1083,1084,7,15,0,0,1084,1085,7,9, - 0,0,1085,158,1,0,0,0,1086,1087,7,8,0,0,1087,1088,7,4,0,0,1088,1089, - 7,12,0,0,1089,1090,7,0,0,0,1090,1091,7,10,0,0,1091,160,1,0,0,0,1092, - 1093,7,8,0,0,1093,1094,7,10,0,0,1094,1095,7,9,0,0,1095,1096,7,15, - 0,0,1096,1097,7,17,0,0,1097,162,1,0,0,0,1098,1099,7,8,0,0,1099,1100, - 7,2,0,0,1100,1101,7,12,0,0,1101,1102,7,9,0,0,1102,1103,7,10,0,0, - 1103,1104,7,11,0,0,1104,164,1,0,0,0,1105,1106,7,8,0,0,1106,1107, - 7,2,0,0,1107,1108,7,7,0,0,1108,1109,7,4,0,0,1109,1110,7,12,0,0,1110, - 166,1,0,0,0,1111,1112,7,8,0,0,1112,1113,7,2,0,0,1113,1114,7,11,0, - 0,1114,1115,7,0,0,0,1115,1116,7,9,0,0,1116,168,1,0,0,0,1117,1118, - 7,8,0,0,1118,1119,7,18,0,0,1119,1120,7,12,0,0,1120,1121,7,12,0,0, - 1121,1122,7,18,0,0,1122,1123,7,20,0,0,1123,1124,7,2,0,0,1124,1125, - 7,7,0,0,1125,1126,7,21,0,0,1126,170,1,0,0,0,1127,1128,7,8,0,0,1128, - 1129,7,18,0,0,1129,1130,7,11,0,0,1130,172,1,0,0,0,1131,1132,7,8, - 0,0,1132,1133,7,18,0,0,1133,1134,7,11,0,0,1134,1135,7,6,0,0,1135, - 1136,7,4,0,0,1136,1137,7,9,0,0,1137,174,1,0,0,0,1138,1139,7,8,0, - 0,1139,1140,7,11,0,0,1140,1141,7,18,0,0,1141,1142,7,6,0,0,1142,176, - 1,0,0,0,1143,1144,7,8,0,0,1144,1145,7,16,0,0,1145,1146,7,12,0,0, - 1146,1147,7,12,0,0,1147,178,1,0,0,0,1148,1149,7,8,0,0,1149,1150, - 7,16,0,0,1150,1151,7,7,0,0,1151,1152,7,15,0,0,1152,1153,7,9,0,0, - 1153,1154,7,2,0,0,1154,1155,7,18,0,0,1155,1156,7,7,0,0,1156,1157, - 7,0,0,0,1157,180,1,0,0,0,1158,1159,7,21,0,0,1159,1160,7,11,0,0,1160, - 1161,7,4,0,0,1161,1162,7,7,0,0,1162,1163,7,9,0,0,1163,182,1,0,0, - 0,1164,1165,7,21,0,0,1165,1166,7,11,0,0,1166,1167,7,4,0,0,1167,1168, - 7,7,0,0,1168,1169,7,9,0,0,1169,1170,7,10,0,0,1170,1171,7,5,0,0,1171, - 184,1,0,0,0,1172,1173,7,21,0,0,1173,1174,7,11,0,0,1174,1175,7,4, - 0,0,1175,1176,7,7,0,0,1176,1177,7,9,0,0,1177,1178,7,0,0,0,1178,186, - 1,0,0,0,1179,1180,7,5,0,0,1180,1181,7,10,0,0,1181,1182,7,7,0,0,1182, - 1183,7,13,0,0,1183,188,1,0,0,0,1184,1185,7,21,0,0,1185,1186,7,11, - 0,0,1186,1187,7,4,0,0,1187,1188,7,3,0,0,1188,1189,7,17,0,0,1189, - 1190,7,23,0,0,1190,1191,7,2,0,0,1191,1192,7,14,0,0,1192,190,1,0, - 0,0,1193,1194,7,21,0,0,1194,1195,7,11,0,0,1195,1196,7,18,0,0,1196, - 1197,7,16,0,0,1197,1198,7,3,0,0,1198,192,1,0,0,0,1199,1200,7,21, - 0,0,1200,1201,7,11,0,0,1201,1202,7,18,0,0,1202,1203,7,16,0,0,1203, - 1204,7,3,0,0,1204,1205,7,2,0,0,1205,1206,7,7,0,0,1206,1207,7,21, - 0,0,1207,194,1,0,0,0,1208,1209,7,21,0,0,1209,1210,7,11,0,0,1210, - 1211,7,18,0,0,1211,1212,7,16,0,0,1212,1213,7,3,0,0,1213,1214,7,0, - 0,0,1214,196,1,0,0,0,1215,1216,7,17,0,0,1216,1217,7,4,0,0,1217,1218, - 7,23,0,0,1218,1219,7,2,0,0,1219,1220,7,7,0,0,1220,1221,7,21,0,0, - 1221,198,1,0,0,0,1222,1223,7,17,0,0,1223,1224,7,18,0,0,1224,1225, - 7,16,0,0,1225,1226,7,11,0,0,1226,200,1,0,0,0,1227,1228,7,2,0,0,1228, - 1229,7,8,0,0,1229,202,1,0,0,0,1230,1231,7,2,0,0,1231,1232,7,21,0, - 0,1232,1233,7,7,0,0,1233,1234,7,18,0,0,1234,1235,7,11,0,0,1235,1236, - 7,10,0,0,1236,204,1,0,0,0,1237,1238,7,2,0,0,1238,1239,7,7,0,0,1239, - 206,1,0,0,0,1240,1241,7,2,0,0,1241,1242,7,7,0,0,1242,1243,7,15,0, - 0,1243,1244,7,12,0,0,1244,1245,7,16,0,0,1245,1246,7,5,0,0,1246,1247, - 7,2,0,0,1247,1248,7,7,0,0,1248,1249,7,21,0,0,1249,208,1,0,0,0,1250, - 1251,7,2,0,0,1251,1252,7,7,0,0,1252,1253,7,2,0,0,1253,1254,7,9,0, - 0,1254,1255,7,2,0,0,1255,1256,7,4,0,0,1256,1257,7,12,0,0,1257,210, - 1,0,0,0,1258,1259,7,2,0,0,1259,1260,7,7,0,0,1260,1261,7,7,0,0,1261, - 1262,7,10,0,0,1262,1263,7,11,0,0,1263,212,1,0,0,0,1264,1265,7,2, - 0,0,1265,1266,7,7,0,0,1266,1267,7,3,0,0,1267,1268,7,16,0,0,1268, - 1269,7,9,0,0,1269,214,1,0,0,0,1270,1271,7,2,0,0,1271,1272,7,7,0, - 0,1272,1273,7,0,0,0,1273,1274,7,10,0,0,1274,1275,7,11,0,0,1275,1276, - 7,9,0,0,1276,216,1,0,0,0,1277,1278,7,2,0,0,1278,1279,7,7,0,0,1279, - 1280,7,9,0,0,1280,1281,7,10,0,0,1281,1282,7,11,0,0,1282,1283,7,0, - 0,0,1283,1284,7,10,0,0,1284,1285,7,15,0,0,1285,1286,7,9,0,0,1286, - 218,1,0,0,0,1287,1288,7,2,0,0,1288,1289,7,7,0,0,1289,1290,7,9,0, - 0,1290,1291,7,10,0,0,1291,1292,7,11,0,0,1292,1293,7,23,0,0,1293, - 1294,7,4,0,0,1294,1295,7,12,0,0,1295,220,1,0,0,0,1296,1297,7,2,0, - 0,1297,1298,7,7,0,0,1298,1299,7,9,0,0,1299,1300,7,18,0,0,1300,222, - 1,0,0,0,1301,1302,7,2,0,0,1302,1303,7,7,0,0,1303,1304,7,23,0,0,1304, - 1305,7,18,0,0,1305,1306,7,1,0,0,1306,1307,7,10,0,0,1307,1308,7,11, - 0,0,1308,224,1,0,0,0,1309,1310,7,2,0,0,1310,1311,7,18,0,0,1311,226, - 1,0,0,0,1312,1313,7,2,0,0,1313,1314,7,0,0,0,1314,228,1,0,0,0,1315, - 1316,7,2,0,0,1316,1317,7,0,0,0,1317,1318,7,18,0,0,1318,1319,7,12, - 0,0,1319,1320,7,4,0,0,1320,1321,7,9,0,0,1321,1322,7,2,0,0,1322,1323, - 7,18,0,0,1323,1324,7,7,0,0,1324,230,1,0,0,0,1325,1326,7,24,0,0,1326, - 1327,7,18,0,0,1327,1328,7,2,0,0,1328,1329,7,7,0,0,1329,232,1,0,0, - 0,1330,1331,7,24,0,0,1331,1332,7,0,0,0,1332,1333,7,18,0,0,1333,1334, - 7,7,0,0,1334,234,1,0,0,0,1335,1336,7,12,0,0,1336,1337,7,4,0,0,1337, - 1338,7,0,0,0,1338,1339,7,9,0,0,1339,236,1,0,0,0,1340,1341,7,12,0, - 0,1341,1342,7,4,0,0,1342,1343,7,9,0,0,1343,1344,7,10,0,0,1344,1345, - 7,11,0,0,1345,1346,7,4,0,0,1346,1347,7,12,0,0,1347,238,1,0,0,0,1348, - 1349,7,12,0,0,1349,1350,7,10,0,0,1350,1351,7,8,0,0,1351,1352,7,9, - 0,0,1352,240,1,0,0,0,1353,1354,7,12,0,0,1354,1355,7,10,0,0,1355, - 1356,7,23,0,0,1356,1357,7,10,0,0,1357,1358,7,12,0,0,1358,242,1,0, - 0,0,1359,1360,7,12,0,0,1360,1361,7,2,0,0,1361,1362,7,1,0,0,1362, - 1363,7,10,0,0,1363,244,1,0,0,0,1364,1365,7,12,0,0,1365,1366,7,2, - 0,0,1366,1367,7,6,0,0,1367,1368,7,2,0,0,1368,1369,7,9,0,0,1369,246, - 1,0,0,0,1370,1371,7,12,0,0,1371,1372,7,18,0,0,1372,1373,7,15,0,0, - 1373,1374,7,4,0,0,1374,1375,7,12,0,0,1375,248,1,0,0,0,1376,1377, - 7,12,0,0,1377,1378,7,18,0,0,1378,1379,7,15,0,0,1379,1380,7,4,0,0, - 1380,1381,7,12,0,0,1381,1382,7,9,0,0,1382,1383,7,2,0,0,1383,1384, - 7,6,0,0,1384,1385,7,10,0,0,1385,250,1,0,0,0,1386,1387,7,12,0,0,1387, - 1388,7,18,0,0,1388,1389,7,15,0,0,1389,1390,7,4,0,0,1390,1391,7,12, - 0,0,1391,1392,7,9,0,0,1392,1393,7,2,0,0,1393,1394,7,6,0,0,1394,1395, - 7,10,0,0,1395,1396,7,0,0,0,1396,1397,7,9,0,0,1397,1398,7,4,0,0,1398, - 1399,7,6,0,0,1399,1400,7,3,0,0,1400,252,1,0,0,0,1401,1402,7,12,0, - 0,1402,1403,7,18,0,0,1403,1404,7,21,0,0,1404,1405,7,2,0,0,1405,1406, - 7,15,0,0,1406,1407,7,4,0,0,1407,1408,7,12,0,0,1408,254,1,0,0,0,1409, - 1410,7,6,0,0,1410,1411,7,4,0,0,1411,1412,7,3,0,0,1412,256,1,0,0, - 0,1413,1414,7,6,0,0,1414,1415,7,4,0,0,1415,1416,7,9,0,0,1416,1417, - 7,15,0,0,1417,1418,7,17,0,0,1418,258,1,0,0,0,1419,1420,7,6,0,0,1420, - 1421,7,4,0,0,1421,1422,7,9,0,0,1422,1423,7,15,0,0,1423,1424,7,17, - 0,0,1424,1425,7,10,0,0,1425,1426,7,5,0,0,1426,260,1,0,0,0,1427,1428, - 7,6,0,0,1428,1429,7,4,0,0,1429,1430,7,9,0,0,1430,1431,7,15,0,0,1431, - 1432,7,17,0,0,1432,1433,7,10,0,0,1433,1434,7,0,0,0,1434,262,1,0, - 0,0,1435,1436,7,6,0,0,1436,1437,7,4,0,0,1437,1438,7,9,0,0,1438,1439, - 7,15,0,0,1439,1440,7,17,0,0,1440,1441,5,95,0,0,1441,1442,7,11,0, - 0,1442,1443,7,10,0,0,1443,1444,7,15,0,0,1444,1445,7,18,0,0,1445, - 1446,7,21,0,0,1446,1447,7,7,0,0,1447,1448,7,2,0,0,1448,1449,7,14, - 0,0,1449,1450,7,10,0,0,1450,264,1,0,0,0,1451,1452,7,6,0,0,1452,1453, - 7,4,0,0,1453,1454,7,9,0,0,1454,1455,7,10,0,0,1455,1456,7,11,0,0, - 1456,1457,7,2,0,0,1457,1458,7,4,0,0,1458,1459,7,12,0,0,1459,1460, - 7,2,0,0,1460,1461,7,14,0,0,1461,1462,7,10,0,0,1462,1463,7,5,0,0, - 1463,266,1,0,0,0,1464,1465,7,6,0,0,1465,1466,7,10,0,0,1466,1467, - 7,4,0,0,1467,1468,7,0,0,0,1468,1469,7,16,0,0,1469,1470,7,11,0,0, - 1470,1471,7,10,0,0,1471,1472,7,0,0,0,1472,268,1,0,0,0,1473,1474, - 7,6,0,0,1474,1475,7,10,0,0,1475,1476,7,11,0,0,1476,1477,7,21,0,0, - 1477,1478,7,10,0,0,1478,270,1,0,0,0,1479,1480,7,6,0,0,1480,1481, - 7,2,0,0,1481,1482,7,7,0,0,1482,1483,7,16,0,0,1483,1484,7,9,0,0,1484, - 1485,7,10,0,0,1485,272,1,0,0,0,1486,1487,7,6,0,0,1487,1488,7,18, - 0,0,1488,1489,7,7,0,0,1489,1490,7,9,0,0,1490,1491,7,17,0,0,1491, - 274,1,0,0,0,1492,1493,7,7,0,0,1493,1494,7,4,0,0,1494,1495,7,9,0, - 0,1495,1496,7,16,0,0,1496,1497,7,11,0,0,1497,1498,7,4,0,0,1498,1499, - 7,12,0,0,1499,276,1,0,0,0,1500,1501,7,7,0,0,1501,1502,7,10,0,0,1502, - 1503,7,22,0,0,1503,1504,7,9,0,0,1504,278,1,0,0,0,1505,1506,7,7,0, - 0,1506,1507,7,8,0,0,1507,1508,7,15,0,0,1508,280,1,0,0,0,1509,1510, - 7,7,0,0,1510,1511,7,8,0,0,1511,1512,7,5,0,0,1512,282,1,0,0,0,1513, - 1514,7,7,0,0,1514,1515,7,8,0,0,1515,1516,7,1,0,0,1516,1517,7,15, - 0,0,1517,284,1,0,0,0,1518,1519,7,7,0,0,1519,1520,7,8,0,0,1520,1521, - 7,1,0,0,1521,1522,7,5,0,0,1522,286,1,0,0,0,1523,1524,7,7,0,0,1524, - 1525,7,18,0,0,1525,288,1,0,0,0,1526,1527,7,7,0,0,1527,1528,7,18, - 0,0,1528,1529,7,7,0,0,1529,1530,7,10,0,0,1530,290,1,0,0,0,1531,1532, - 7,7,0,0,1532,1533,7,18,0,0,1533,1534,7,11,0,0,1534,1535,7,6,0,0, - 1535,1536,7,4,0,0,1536,1537,7,12,0,0,1537,1538,7,2,0,0,1538,1539, - 7,14,0,0,1539,1540,7,10,0,0,1540,292,1,0,0,0,1541,1542,7,7,0,0,1542, - 1543,7,18,0,0,1543,1544,7,9,0,0,1544,294,1,0,0,0,1545,1546,7,7,0, - 0,1546,1547,7,16,0,0,1547,1548,7,12,0,0,1548,1549,7,12,0,0,1549, - 296,1,0,0,0,1550,1551,7,7,0,0,1551,1552,7,16,0,0,1552,1553,7,12, - 0,0,1553,1554,7,12,0,0,1554,1555,7,2,0,0,1555,1556,7,8,0,0,1556, - 298,1,0,0,0,1557,1558,7,7,0,0,1558,1559,7,16,0,0,1559,1560,7,12, - 0,0,1560,1561,7,12,0,0,1561,1562,7,0,0,0,1562,300,1,0,0,0,1563,1564, - 7,18,0,0,1564,1565,7,8,0,0,1565,1566,7,8,0,0,1566,1567,7,0,0,0,1567, - 1568,7,10,0,0,1568,1569,7,9,0,0,1569,302,1,0,0,0,1570,1571,7,18, - 0,0,1571,1572,7,6,0,0,1572,1573,7,2,0,0,1573,1574,7,9,0,0,1574,304, - 1,0,0,0,1575,1576,7,18,0,0,1576,1577,7,7,0,0,1577,306,1,0,0,0,1578, - 1579,7,18,0,0,1579,1580,7,7,0,0,1580,1581,7,10,0,0,1581,308,1,0, - 0,0,1582,1583,7,18,0,0,1583,1584,7,7,0,0,1584,1585,7,12,0,0,1585, - 1586,7,13,0,0,1586,310,1,0,0,0,1587,1588,7,18,0,0,1588,1589,7,3, - 0,0,1589,1590,7,9,0,0,1590,1591,7,2,0,0,1591,1592,7,18,0,0,1592, - 1593,7,7,0,0,1593,312,1,0,0,0,1594,1595,7,18,0,0,1595,1596,7,11, - 0,0,1596,314,1,0,0,0,1597,1598,7,18,0,0,1598,1599,7,11,0,0,1599, - 1600,7,5,0,0,1600,1601,7,10,0,0,1601,1602,7,11,0,0,1602,316,1,0, - 0,0,1603,1604,7,18,0,0,1604,1605,7,11,0,0,1605,1606,7,5,0,0,1606, - 1607,7,2,0,0,1607,1608,7,7,0,0,1608,1609,7,4,0,0,1609,1610,7,12, - 0,0,1610,1611,7,2,0,0,1611,1612,7,9,0,0,1612,1613,7,13,0,0,1613, - 318,1,0,0,0,1614,1615,7,18,0,0,1615,1616,7,16,0,0,1616,1617,7,9, - 0,0,1617,1618,7,10,0,0,1618,1619,7,11,0,0,1619,320,1,0,0,0,1620, - 1621,7,18,0,0,1621,1622,7,16,0,0,1622,1623,7,9,0,0,1623,1624,7,3, - 0,0,1624,1625,7,16,0,0,1625,1626,7,9,0,0,1626,322,1,0,0,0,1627,1628, - 7,18,0,0,1628,1629,7,23,0,0,1629,1630,7,10,0,0,1630,1631,7,11,0, - 0,1631,324,1,0,0,0,1632,1633,7,3,0,0,1633,1634,7,4,0,0,1634,1635, - 7,11,0,0,1635,1636,7,9,0,0,1636,1637,7,2,0,0,1637,1638,7,9,0,0,1638, - 1639,7,2,0,0,1639,1640,7,18,0,0,1640,1641,7,7,0,0,1641,326,1,0,0, - 0,1642,1643,7,3,0,0,1643,1644,7,4,0,0,1644,1645,7,11,0,0,1645,1646, - 7,9,0,0,1646,1647,7,2,0,0,1647,1648,7,9,0,0,1648,1649,7,2,0,0,1649, - 1650,7,18,0,0,1650,1651,7,7,0,0,1651,1652,7,0,0,0,1652,328,1,0,0, - 0,1653,1654,7,3,0,0,1654,1655,7,4,0,0,1655,1656,7,0,0,0,1656,1657, - 7,9,0,0,1657,330,1,0,0,0,1658,1659,7,3,0,0,1659,1660,7,4,0,0,1660, - 1661,7,9,0,0,1661,1662,7,17,0,0,1662,332,1,0,0,0,1663,1664,7,3,0, - 0,1664,1665,7,4,0,0,1665,1666,7,9,0,0,1666,1667,7,9,0,0,1667,1668, - 7,10,0,0,1668,1669,7,11,0,0,1669,1670,7,7,0,0,1670,334,1,0,0,0,1671, - 1672,7,3,0,0,1672,1673,7,10,0,0,1673,1674,7,11,0,0,1674,336,1,0, - 0,0,1675,1676,7,3,0,0,1676,1677,7,10,0,0,1677,1678,7,11,0,0,1678, - 1679,7,6,0,0,1679,1680,7,16,0,0,1680,1681,7,9,0,0,1681,1682,7,10, - 0,0,1682,338,1,0,0,0,1683,1684,7,3,0,0,1684,1685,7,18,0,0,1685,1686, - 7,0,0,0,1686,1687,7,2,0,0,1687,1688,7,9,0,0,1688,1689,7,2,0,0,1689, - 1690,7,18,0,0,1690,1691,7,7,0,0,1691,340,1,0,0,0,1692,1693,7,3,0, - 0,1693,1694,7,11,0,0,1694,1695,7,10,0,0,1695,1696,7,15,0,0,1696, - 1697,7,10,0,0,1697,1698,7,5,0,0,1698,1699,7,2,0,0,1699,1700,7,7, - 0,0,1700,1701,7,21,0,0,1701,342,1,0,0,0,1702,1703,7,3,0,0,1703,1704, - 7,11,0,0,1704,1705,7,10,0,0,1705,1706,7,15,0,0,1706,1707,7,2,0,0, - 1707,1708,7,0,0,0,1708,1709,7,2,0,0,1709,1710,7,18,0,0,1710,1711, - 7,7,0,0,1711,344,1,0,0,0,1712,1713,7,3,0,0,1713,1714,7,11,0,0,1714, - 1715,7,10,0,0,1715,1716,7,3,0,0,1716,1717,7,4,0,0,1717,1718,7,11, - 0,0,1718,1719,7,10,0,0,1719,346,1,0,0,0,1720,1721,7,3,0,0,1721,1722, - 7,11,0,0,1722,1723,7,2,0,0,1723,1724,7,23,0,0,1724,1725,7,2,0,0, - 1725,1726,7,12,0,0,1726,1727,7,10,0,0,1727,1728,7,21,0,0,1728,1729, - 7,10,0,0,1729,1730,7,0,0,0,1730,348,1,0,0,0,1731,1732,7,3,0,0,1732, - 1733,7,11,0,0,1733,1734,7,18,0,0,1734,1735,7,3,0,0,1735,1736,7,10, - 0,0,1736,1737,7,11,0,0,1737,1738,7,9,0,0,1738,1739,7,2,0,0,1739, - 1740,7,10,0,0,1740,1741,7,0,0,0,1741,350,1,0,0,0,1742,1743,7,11, - 0,0,1743,1744,7,4,0,0,1744,1745,7,7,0,0,1745,1746,7,21,0,0,1746, - 1747,7,10,0,0,1747,352,1,0,0,0,1748,1749,7,11,0,0,1749,1750,7,10, - 0,0,1750,1751,7,4,0,0,1751,1752,7,5,0,0,1752,354,1,0,0,0,1753,1754, - 7,11,0,0,1754,1755,7,10,0,0,1755,1756,7,15,0,0,1756,1757,7,16,0, - 0,1757,1758,7,11,0,0,1758,1759,7,0,0,0,1759,1760,7,2,0,0,1760,1761, - 7,23,0,0,1761,1762,7,10,0,0,1762,356,1,0,0,0,1763,1764,7,11,0,0, - 1764,1765,7,10,0,0,1765,1766,7,8,0,0,1766,1767,7,11,0,0,1767,1768, - 7,10,0,0,1768,1769,7,0,0,0,1769,1770,7,17,0,0,1770,358,1,0,0,0,1771, - 1772,7,11,0,0,1772,1773,7,10,0,0,1773,1774,7,7,0,0,1774,1775,7,4, - 0,0,1775,1776,7,6,0,0,1776,1777,7,10,0,0,1777,360,1,0,0,0,1778,1779, - 7,11,0,0,1779,1780,7,10,0,0,1780,1781,7,3,0,0,1781,1782,7,10,0,0, - 1782,1783,7,4,0,0,1783,1784,7,9,0,0,1784,1785,7,4,0,0,1785,1786, - 7,19,0,0,1786,1787,7,12,0,0,1787,1788,7,10,0,0,1788,362,1,0,0,0, - 1789,1790,7,11,0,0,1790,1791,7,10,0,0,1791,1792,7,3,0,0,1792,1793, - 7,12,0,0,1793,1794,7,4,0,0,1794,1795,7,15,0,0,1795,1796,7,10,0,0, - 1796,364,1,0,0,0,1797,1798,7,11,0,0,1798,1799,7,10,0,0,1799,1800, - 7,0,0,0,1800,1801,7,10,0,0,1801,1802,7,9,0,0,1802,366,1,0,0,0,1803, - 1804,7,11,0,0,1804,1805,7,10,0,0,1805,1806,7,0,0,0,1806,1807,7,3, - 0,0,1807,1808,7,10,0,0,1808,1809,7,15,0,0,1809,1810,7,9,0,0,1810, - 368,1,0,0,0,1811,1812,7,11,0,0,1812,1813,7,10,0,0,1813,1814,7,0, - 0,0,1814,1815,7,9,0,0,1815,1816,7,11,0,0,1816,1817,7,2,0,0,1817, - 1818,7,15,0,0,1818,1819,7,9,0,0,1819,370,1,0,0,0,1820,1821,7,11, - 0,0,1821,1822,7,10,0,0,1822,1823,7,23,0,0,1823,1824,7,18,0,0,1824, - 1825,7,1,0,0,1825,1826,7,10,0,0,1826,372,1,0,0,0,1827,1828,7,11, - 0,0,1828,1829,7,2,0,0,1829,1830,7,21,0,0,1830,1831,7,17,0,0,1831, - 1832,7,9,0,0,1832,374,1,0,0,0,1833,1834,7,11,0,0,1834,1835,7,18, - 0,0,1835,1836,7,12,0,0,1836,1837,7,10,0,0,1837,376,1,0,0,0,1838, - 1839,7,11,0,0,1839,1840,7,18,0,0,1840,1841,7,12,0,0,1841,1842,7, - 10,0,0,1842,1843,7,0,0,0,1843,378,1,0,0,0,1844,1845,7,11,0,0,1845, - 1846,7,18,0,0,1846,1847,7,12,0,0,1847,1848,7,12,0,0,1848,1849,7, - 19,0,0,1849,1850,7,4,0,0,1850,1851,7,15,0,0,1851,1852,7,1,0,0,1852, - 380,1,0,0,0,1853,1854,7,11,0,0,1854,1855,7,18,0,0,1855,1856,7,12, - 0,0,1856,1857,7,12,0,0,1857,1858,7,16,0,0,1858,1859,7,3,0,0,1859, - 382,1,0,0,0,1860,1861,7,11,0,0,1861,1862,7,18,0,0,1862,1863,7,20, - 0,0,1863,384,1,0,0,0,1864,1865,7,11,0,0,1865,1866,7,18,0,0,1866, - 1867,7,20,0,0,1867,1868,7,0,0,0,1868,386,1,0,0,0,1869,1870,7,11, - 0,0,1870,1871,7,16,0,0,1871,1872,7,7,0,0,1872,1873,7,7,0,0,1873, - 1874,7,2,0,0,1874,1875,7,7,0,0,1875,1876,7,21,0,0,1876,388,1,0,0, - 0,1877,1878,7,0,0,0,1878,1879,7,15,0,0,1879,1880,7,17,0,0,1880,1881, - 7,10,0,0,1881,1882,7,6,0,0,1882,1883,7,4,0,0,1883,390,1,0,0,0,1884, - 1885,7,0,0,0,1885,1886,7,15,0,0,1886,1887,7,17,0,0,1887,1888,7,10, - 0,0,1888,1889,7,6,0,0,1889,1890,7,4,0,0,1890,1891,7,0,0,0,1891,392, - 1,0,0,0,1892,1893,7,0,0,0,1893,1894,7,10,0,0,1894,1895,7,15,0,0, - 1895,1896,7,18,0,0,1896,1897,7,7,0,0,1897,1898,7,5,0,0,1898,394, - 1,0,0,0,1899,1900,7,0,0,0,1900,1901,7,10,0,0,1901,1902,7,15,0,0, - 1902,1903,7,16,0,0,1903,1904,7,11,0,0,1904,1905,7,2,0,0,1905,1906, - 7,9,0,0,1906,1907,7,13,0,0,1907,396,1,0,0,0,1908,1909,7,0,0,0,1909, - 1910,7,10,0,0,1910,1911,7,10,0,0,1911,1912,7,1,0,0,1912,398,1,0, - 0,0,1913,1914,7,0,0,0,1914,1915,7,10,0,0,1915,1916,7,12,0,0,1916, - 1917,7,10,0,0,1917,1918,7,15,0,0,1918,1919,7,9,0,0,1919,400,1,0, - 0,0,1920,1921,7,0,0,0,1921,1922,7,10,0,0,1922,1923,7,11,0,0,1923, - 1924,7,2,0,0,1924,1925,7,4,0,0,1925,1926,7,12,0,0,1926,1927,7,2, - 0,0,1927,1928,7,14,0,0,1928,1929,7,4,0,0,1929,1930,7,19,0,0,1930, - 1931,7,12,0,0,1931,1932,7,10,0,0,1932,402,1,0,0,0,1933,1934,7,0, - 0,0,1934,1935,7,10,0,0,1935,1936,7,0,0,0,1936,1937,7,0,0,0,1937, - 1938,7,2,0,0,1938,1939,7,18,0,0,1939,1940,7,7,0,0,1940,404,1,0,0, - 0,1941,1942,7,0,0,0,1942,1943,7,10,0,0,1943,1944,7,9,0,0,1944,406, - 1,0,0,0,1945,1946,7,0,0,0,1946,1947,7,10,0,0,1947,1948,7,9,0,0,1948, - 1949,7,0,0,0,1949,408,1,0,0,0,1950,1951,7,0,0,0,1951,1952,7,17,0, - 0,1952,1953,7,18,0,0,1953,1954,7,20,0,0,1954,410,1,0,0,0,1955,1956, - 7,0,0,0,1956,1957,7,18,0,0,1957,1958,7,6,0,0,1958,1959,7,10,0,0, - 1959,412,1,0,0,0,1960,1961,7,0,0,0,1961,1962,7,9,0,0,1962,1963,7, - 4,0,0,1963,1964,7,11,0,0,1964,1965,7,9,0,0,1965,414,1,0,0,0,1966, - 1967,7,0,0,0,1967,1968,7,9,0,0,1968,1969,7,4,0,0,1969,1970,7,9,0, - 0,1970,1971,7,0,0,0,1971,416,1,0,0,0,1972,1973,7,0,0,0,1973,1974, - 7,16,0,0,1974,1975,7,19,0,0,1975,1976,7,0,0,0,1976,1977,7,10,0,0, - 1977,1978,7,9,0,0,1978,418,1,0,0,0,1979,1980,7,0,0,0,1980,1981,7, - 16,0,0,1981,1982,7,19,0,0,1982,1983,7,0,0,0,1983,1984,7,9,0,0,1984, - 1985,7,11,0,0,1985,1986,7,2,0,0,1986,1987,7,7,0,0,1987,1988,7,21, - 0,0,1988,420,1,0,0,0,1989,1990,7,0,0,0,1990,1991,7,13,0,0,1991,1992, - 7,0,0,0,1992,1993,7,9,0,0,1993,1994,7,10,0,0,1994,1995,7,6,0,0,1995, - 422,1,0,0,0,1996,1997,7,9,0,0,1997,1998,7,4,0,0,1998,1999,7,19,0, - 0,1999,2000,7,12,0,0,2000,2001,7,10,0,0,2001,424,1,0,0,0,2002,2003, - 7,9,0,0,2003,2004,7,4,0,0,2004,2005,7,19,0,0,2005,2006,7,12,0,0, - 2006,2007,7,10,0,0,2007,2008,7,0,0,0,2008,426,1,0,0,0,2009,2010, - 7,9,0,0,2010,2011,7,4,0,0,2011,2012,7,19,0,0,2012,2013,7,12,0,0, - 2013,2014,7,10,0,0,2014,2015,7,0,0,0,2015,2016,7,4,0,0,2016,2017, - 7,6,0,0,2017,2018,7,3,0,0,2018,2019,7,12,0,0,2019,2020,7,10,0,0, - 2020,428,1,0,0,0,2021,2022,7,9,0,0,2022,2023,7,10,0,0,2023,2024, - 7,22,0,0,2024,2025,7,9,0,0,2025,430,1,0,0,0,2026,2027,7,9,0,0,2027, - 2028,7,17,0,0,2028,2029,7,10,0,0,2029,2030,7,7,0,0,2030,432,1,0, - 0,0,2031,2032,7,9,0,0,2032,2033,7,2,0,0,2033,2034,7,10,0,0,2034, - 2035,7,0,0,0,2035,434,1,0,0,0,2036,2037,7,9,0,0,2037,2038,7,2,0, - 0,2038,2039,7,6,0,0,2039,2040,7,10,0,0,2040,436,1,0,0,0,2041,2042, - 7,9,0,0,2042,2043,7,2,0,0,2043,2044,7,6,0,0,2044,2045,7,10,0,0,2045, - 2046,7,0,0,0,2046,2047,7,9,0,0,2047,2048,7,4,0,0,2048,2049,7,6,0, - 0,2049,2050,7,3,0,0,2050,438,1,0,0,0,2051,2052,7,9,0,0,2052,2053, - 7,18,0,0,2053,440,1,0,0,0,2054,2055,7,9,0,0,2055,2056,7,11,0,0,2056, - 2057,7,4,0,0,2057,2058,7,7,0,0,2058,2059,7,0,0,0,2059,2060,7,4,0, - 0,2060,2061,7,15,0,0,2061,2062,7,9,0,0,2062,2063,7,2,0,0,2063,2064, - 7,18,0,0,2064,2065,7,7,0,0,2065,442,1,0,0,0,2066,2067,7,9,0,0,2067, - 2068,7,11,0,0,2068,2069,7,16,0,0,2069,2070,7,7,0,0,2070,2071,7,15, - 0,0,2071,2072,7,4,0,0,2072,2073,7,9,0,0,2073,2074,7,10,0,0,2074, - 444,1,0,0,0,2075,2076,7,9,0,0,2076,2077,7,11,0,0,2077,2078,7,16, - 0,0,2078,2079,7,10,0,0,2079,446,1,0,0,0,2080,2081,7,9,0,0,2081,2082, - 7,11,0,0,2082,2083,7,13,0,0,2083,2084,5,95,0,0,2084,2085,7,15,0, - 0,2085,2086,7,4,0,0,2086,2087,7,0,0,0,2087,2088,7,9,0,0,2088,448, - 1,0,0,0,2089,2090,7,9,0,0,2090,2091,7,13,0,0,2091,2092,7,3,0,0,2092, - 2093,7,10,0,0,2093,450,1,0,0,0,2094,2095,7,16,0,0,2095,2096,7,10, - 0,0,2096,2097,7,0,0,0,2097,2098,7,15,0,0,2098,2099,7,4,0,0,2099, - 2100,7,3,0,0,2100,2101,7,10,0,0,2101,452,1,0,0,0,2102,2103,7,16, - 0,0,2103,2104,7,7,0,0,2104,2105,7,19,0,0,2105,2106,7,18,0,0,2106, - 2107,7,16,0,0,2107,2108,7,7,0,0,2108,2109,7,5,0,0,2109,2110,7,10, - 0,0,2110,2111,7,5,0,0,2111,454,1,0,0,0,2112,2113,7,16,0,0,2113,2114, - 7,7,0,0,2114,2115,7,15,0,0,2115,2116,7,18,0,0,2116,2117,7,6,0,0, - 2117,2118,7,6,0,0,2118,2119,7,2,0,0,2119,2120,7,9,0,0,2120,2121, - 7,9,0,0,2121,2122,7,10,0,0,2122,2123,7,5,0,0,2123,456,1,0,0,0,2124, - 2125,7,16,0,0,2125,2126,7,7,0,0,2126,2127,7,2,0,0,2127,2128,7,18, - 0,0,2128,2129,7,7,0,0,2129,458,1,0,0,0,2130,2131,7,16,0,0,2131,2132, - 7,7,0,0,2132,2133,7,6,0,0,2133,2134,7,4,0,0,2134,2135,7,9,0,0,2135, - 2136,7,15,0,0,2136,2137,7,17,0,0,2137,2138,7,10,0,0,2138,2139,7, - 5,0,0,2139,460,1,0,0,0,2140,2141,7,16,0,0,2141,2142,7,7,0,0,2142, - 2143,7,7,0,0,2143,2144,7,10,0,0,2144,2145,7,0,0,0,2145,2146,7,9, - 0,0,2146,462,1,0,0,0,2147,2148,7,16,0,0,2148,2149,7,3,0,0,2149,2150, - 7,5,0,0,2150,2151,7,4,0,0,2151,2152,7,9,0,0,2152,2153,7,10,0,0,2153, - 464,1,0,0,0,2154,2155,7,16,0,0,2155,2156,7,0,0,0,2156,2157,7,10, - 0,0,2157,466,1,0,0,0,2158,2159,7,16,0,0,2159,2160,7,0,0,0,2160,2161, - 7,10,0,0,2161,2162,7,11,0,0,2162,468,1,0,0,0,2163,2164,7,16,0,0, - 2164,2165,7,0,0,0,2165,2166,7,2,0,0,2166,2167,7,7,0,0,2167,2168, - 7,21,0,0,2168,470,1,0,0,0,2169,2170,7,23,0,0,2170,2171,7,4,0,0,2171, - 2172,7,12,0,0,2172,2173,7,2,0,0,2173,2174,7,5,0,0,2174,2175,7,4, - 0,0,2175,2176,7,9,0,0,2176,2177,7,10,0,0,2177,472,1,0,0,0,2178,2179, - 7,23,0,0,2179,2180,7,4,0,0,2180,2181,7,12,0,0,2181,2182,7,16,0,0, - 2182,2183,7,10,0,0,2183,2184,7,0,0,0,2184,474,1,0,0,0,2185,2186, - 7,23,0,0,2186,2187,7,10,0,0,2187,2188,7,11,0,0,2188,2189,7,19,0, - 0,2189,2190,7,18,0,0,2190,2191,7,0,0,0,2191,2192,7,10,0,0,2192,476, - 1,0,0,0,2193,2194,7,23,0,0,2194,2195,7,2,0,0,2195,2196,7,10,0,0, - 2196,2197,7,20,0,0,2197,478,1,0,0,0,2198,2199,7,20,0,0,2199,2200, - 7,17,0,0,2200,2201,7,10,0,0,2201,2202,7,7,0,0,2202,480,1,0,0,0,2203, - 2204,7,20,0,0,2204,2205,7,17,0,0,2205,2206,7,10,0,0,2206,2207,7, - 11,0,0,2207,2208,7,10,0,0,2208,482,1,0,0,0,2209,2210,7,20,0,0,2210, - 2211,7,2,0,0,2211,2212,7,7,0,0,2212,2213,7,5,0,0,2213,2214,7,18, - 0,0,2214,2215,7,20,0,0,2215,484,1,0,0,0,2216,2217,7,20,0,0,2217, - 2218,7,2,0,0,2218,2219,7,9,0,0,2219,2220,7,17,0,0,2220,486,1,0,0, - 0,2221,2222,7,20,0,0,2222,2223,7,2,0,0,2223,2224,7,9,0,0,2224,2225, - 7,17,0,0,2225,2226,7,18,0,0,2226,2227,7,16,0,0,2227,2228,7,9,0,0, - 2228,488,1,0,0,0,2229,2230,7,20,0,0,2230,2231,7,18,0,0,2231,2232, - 7,11,0,0,2232,2233,7,1,0,0,2233,490,1,0,0,0,2234,2235,7,20,0,0,2235, - 2236,7,11,0,0,2236,2237,7,2,0,0,2237,2238,7,9,0,0,2238,2239,7,10, - 0,0,2239,492,1,0,0,0,2240,2241,7,13,0,0,2241,2242,7,10,0,0,2242, - 2243,7,4,0,0,2243,2244,7,11,0,0,2244,494,1,0,0,0,2245,2246,7,14, - 0,0,2246,2247,7,18,0,0,2247,2248,7,7,0,0,2248,2249,7,10,0,0,2249, - 496,1,0,0,0,2250,2251,5,61,0,0,2251,498,1,0,0,0,2252,2253,5,60,0, - 0,2253,2257,5,62,0,0,2254,2255,5,33,0,0,2255,2257,5,61,0,0,2256, - 2252,1,0,0,0,2256,2254,1,0,0,0,2257,500,1,0,0,0,2258,2259,5,60,0, - 0,2259,502,1,0,0,0,2260,2261,5,60,0,0,2261,2262,5,61,0,0,2262,504, - 1,0,0,0,2263,2264,5,62,0,0,2264,506,1,0,0,0,2265,2266,5,62,0,0,2266, - 2267,5,61,0,0,2267,508,1,0,0,0,2268,2269,5,43,0,0,2269,510,1,0,0, - 0,2270,2271,5,45,0,0,2271,512,1,0,0,0,2272,2273,5,42,0,0,2273,514, - 1,0,0,0,2274,2275,5,47,0,0,2275,516,1,0,0,0,2276,2277,5,37,0,0,2277, - 518,1,0,0,0,2278,2279,5,124,0,0,2279,2280,5,124,0,0,2280,520,1,0, - 0,0,2281,2282,5,63,0,0,2282,522,1,0,0,0,2283,2289,5,39,0,0,2284, - 2288,8,25,0,0,2285,2286,5,39,0,0,2286,2288,5,39,0,0,2287,2284,1, - 0,0,0,2287,2285,1,0,0,0,2288,2291,1,0,0,0,2289,2287,1,0,0,0,2289, - 2290,1,0,0,0,2290,2292,1,0,0,0,2291,2289,1,0,0,0,2292,2293,5,39, - 0,0,2293,524,1,0,0,0,2294,2295,7,16,0,0,2295,2296,5,38,0,0,2296, - 2297,5,39,0,0,2297,2303,1,0,0,0,2298,2302,8,25,0,0,2299,2300,5,39, - 0,0,2300,2302,5,39,0,0,2301,2298,1,0,0,0,2301,2299,1,0,0,0,2302, - 2305,1,0,0,0,2303,2301,1,0,0,0,2303,2304,1,0,0,0,2304,2306,1,0,0, - 0,2305,2303,1,0,0,0,2306,2307,5,39,0,0,2307,526,1,0,0,0,2308,2309, - 7,22,0,0,2309,2310,5,39,0,0,2310,2314,1,0,0,0,2311,2313,8,25,0,0, - 2312,2311,1,0,0,0,2313,2316,1,0,0,0,2314,2312,1,0,0,0,2314,2315, - 1,0,0,0,2315,2317,1,0,0,0,2316,2314,1,0,0,0,2317,2318,5,39,0,0,2318, - 528,1,0,0,0,2319,2321,3,547,273,0,2320,2319,1,0,0,0,2321,2322,1, - 0,0,0,2322,2320,1,0,0,0,2322,2323,1,0,0,0,2323,530,1,0,0,0,2324, - 2326,3,547,273,0,2325,2324,1,0,0,0,2326,2327,1,0,0,0,2327,2325,1, - 0,0,0,2327,2328,1,0,0,0,2328,2329,1,0,0,0,2329,2333,5,46,0,0,2330, - 2332,3,547,273,0,2331,2330,1,0,0,0,2332,2335,1,0,0,0,2333,2331,1, - 0,0,0,2333,2334,1,0,0,0,2334,2343,1,0,0,0,2335,2333,1,0,0,0,2336, - 2338,5,46,0,0,2337,2339,3,547,273,0,2338,2337,1,0,0,0,2339,2340, - 1,0,0,0,2340,2338,1,0,0,0,2340,2341,1,0,0,0,2341,2343,1,0,0,0,2342, - 2325,1,0,0,0,2342,2336,1,0,0,0,2343,532,1,0,0,0,2344,2346,3,547, - 273,0,2345,2344,1,0,0,0,2346,2347,1,0,0,0,2347,2345,1,0,0,0,2347, - 2348,1,0,0,0,2348,2356,1,0,0,0,2349,2353,5,46,0,0,2350,2352,3,547, - 273,0,2351,2350,1,0,0,0,2352,2355,1,0,0,0,2353,2351,1,0,0,0,2353, - 2354,1,0,0,0,2354,2357,1,0,0,0,2355,2353,1,0,0,0,2356,2349,1,0,0, - 0,2356,2357,1,0,0,0,2357,2358,1,0,0,0,2358,2359,3,545,272,0,2359, - 2369,1,0,0,0,2360,2362,5,46,0,0,2361,2363,3,547,273,0,2362,2361, - 1,0,0,0,2363,2364,1,0,0,0,2364,2362,1,0,0,0,2364,2365,1,0,0,0,2365, - 2366,1,0,0,0,2366,2367,3,545,272,0,2367,2369,1,0,0,0,2368,2345,1, - 0,0,0,2368,2360,1,0,0,0,2369,534,1,0,0,0,2370,2373,3,549,274,0,2371, - 2373,5,95,0,0,2372,2370,1,0,0,0,2372,2371,1,0,0,0,2373,2379,1,0, - 0,0,2374,2378,3,549,274,0,2375,2378,3,547,273,0,2376,2378,5,95,0, - 0,2377,2374,1,0,0,0,2377,2375,1,0,0,0,2377,2376,1,0,0,0,2378,2381, - 1,0,0,0,2379,2377,1,0,0,0,2379,2380,1,0,0,0,2380,536,1,0,0,0,2381, - 2379,1,0,0,0,2382,2386,3,547,273,0,2383,2387,3,549,274,0,2384,2387, - 3,547,273,0,2385,2387,5,95,0,0,2386,2383,1,0,0,0,2386,2384,1,0,0, - 0,2386,2385,1,0,0,0,2387,2388,1,0,0,0,2388,2386,1,0,0,0,2388,2389, - 1,0,0,0,2389,538,1,0,0,0,2390,2396,5,34,0,0,2391,2395,8,26,0,0,2392, - 2393,5,34,0,0,2393,2395,5,34,0,0,2394,2391,1,0,0,0,2394,2392,1,0, - 0,0,2395,2398,1,0,0,0,2396,2394,1,0,0,0,2396,2397,1,0,0,0,2397,2399, - 1,0,0,0,2398,2396,1,0,0,0,2399,2400,5,34,0,0,2400,540,1,0,0,0,2401, - 2407,5,96,0,0,2402,2406,8,27,0,0,2403,2404,5,96,0,0,2404,2406,5, - 96,0,0,2405,2402,1,0,0,0,2405,2403,1,0,0,0,2406,2409,1,0,0,0,2407, - 2405,1,0,0,0,2407,2408,1,0,0,0,2408,2410,1,0,0,0,2409,2407,1,0,0, - 0,2410,2411,5,96,0,0,2411,542,1,0,0,0,2412,2413,5,59,0,0,2413,544, - 1,0,0,0,2414,2416,7,10,0,0,2415,2417,7,28,0,0,2416,2415,1,0,0,0, - 2416,2417,1,0,0,0,2417,2419,1,0,0,0,2418,2420,3,547,273,0,2419,2418, - 1,0,0,0,2420,2421,1,0,0,0,2421,2419,1,0,0,0,2421,2422,1,0,0,0,2422, - 546,1,0,0,0,2423,2424,7,29,0,0,2424,548,1,0,0,0,2425,2426,7,30,0, - 0,2426,550,1,0,0,0,2427,2428,5,45,0,0,2428,2429,5,45,0,0,2429,2433, - 1,0,0,0,2430,2432,8,31,0,0,2431,2430,1,0,0,0,2432,2435,1,0,0,0,2433, - 2431,1,0,0,0,2433,2434,1,0,0,0,2434,2437,1,0,0,0,2435,2433,1,0,0, - 0,2436,2438,5,13,0,0,2437,2436,1,0,0,0,2437,2438,1,0,0,0,2438,2440, - 1,0,0,0,2439,2441,5,10,0,0,2440,2439,1,0,0,0,2440,2441,1,0,0,0,2441, - 2442,1,0,0,0,2442,2443,6,275,0,0,2443,552,1,0,0,0,2444,2445,5,47, - 0,0,2445,2446,5,42,0,0,2446,2450,1,0,0,0,2447,2449,9,0,0,0,2448, - 2447,1,0,0,0,2449,2452,1,0,0,0,2450,2451,1,0,0,0,2450,2448,1,0,0, - 0,2451,2453,1,0,0,0,2452,2450,1,0,0,0,2453,2454,5,42,0,0,2454,2455, - 5,47,0,0,2455,2456,1,0,0,0,2456,2457,6,276,0,0,2457,554,1,0,0,0, - 2458,2460,7,32,0,0,2459,2458,1,0,0,0,2460,2461,1,0,0,0,2461,2459, - 1,0,0,0,2461,2462,1,0,0,0,2462,2463,1,0,0,0,2463,2464,6,277,0,0, - 2464,556,1,0,0,0,2465,2466,9,0,0,0,2466,558,1,0,0,0,33,0,2256,2287, - 2289,2301,2303,2314,2322,2327,2333,2340,2342,2347,2353,2356,2364, - 2368,2372,2377,2379,2386,2388,2394,2396,2405,2407,2416,2421,2433, - 2437,2440,2450,2461,1,0,1,0 + 1,242,1,242,1,242,1,242,1,242,1,242,1,243,1,243,1,243,1,243,1,243, + 1,243,1,243,1,243,1,244,1,244,1,244,1,244,1,244,1,244,1,244,1,245, + 1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,245,1,246,1,246,1,246, + 1,246,1,246,1,247,1,247,1,247,1,247,1,247,1,247,1,247,1,248,1,248, + 1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248,1,248, + 1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,249,1,250,1,250,1,250, + 1,250,1,251,1,251,1,251,1,251,1,251,1,252,1,252,1,252,1,252,1,252, + 1,253,1,253,1,253,1,253,1,253,1,254,1,254,1,254,1,254,1,254,1,254, + 1,255,1,255,1,255,1,255,1,255,1,255,1,256,1,256,1,256,1,256,1,256, + 1,256,1,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257, + 1,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,259,1,259,1,259, + 1,259,1,259,1,259,1,260,1,260,1,260,1,260,1,260,1,260,1,260,1,261, + 1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261,1,261, + 1,262,1,262,1,262,1,262,1,262,1,263,1,263,1,263,1,263,1,263,1,263, + 1,263,1,264,1,264,1,264,1,264,1,264,1,265,1,265,1,265,1,265,1,265, + 1,266,1,266,1,266,1,266,1,266,1,267,1,267,1,267,1,267,1,267,1,267, + 1,267,1,267,1,267,1,267,1,268,1,268,1,268,1,269,1,269,1,269,1,269, + 1,269,1,269,1,269,1,269,1,269,1,270,1,270,1,270,1,270,1,270,1,270, + 1,270,1,270,1,270,1,270,1,270,1,270,1,271,1,271,1,271,1,271,1,271, + 1,272,1,272,1,272,1,272,1,272,1,273,1,273,1,273,1,273,1,273,1,273, + 1,273,1,273,1,273,1,274,1,274,1,274,1,274,1,274,1,274,1,274,1,274, + 1,274,1,275,1,275,1,275,1,275,1,275,1,276,1,276,1,276,1,276,1,276, + 1,276,1,276,1,276,1,277,1,277,1,277,1,277,1,277,1,277,1,277,1,277, + 1,277,1,277,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278,1,278, + 1,278,1,278,1,278,1,279,1,279,1,279,1,279,1,279,1,279,1,279,1,279, + 1,279,1,279,1,279,1,279,1,279,1,279,1,280,1,280,1,280,1,280,1,280, + 1,280,1,281,1,281,1,281,1,281,1,281,1,281,1,281,1,282,1,282,1,282, + 1,282,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,1,283,1,283, + 1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,284,1,284, + 1,285,1,285,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286, + 1,286,1,286,1,287,1,287,1,287,1,287,1,288,1,288,1,288,1,288,1,288, + 1,289,1,289,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,290,1,290, + 1,290,1,291,1,291,1,291,1,291,1,291,1,291,1,292,1,292,1,292,1,292, + 1,292,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,293,1,294, + 1,294,1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295, + 1,295,1,296,1,296,1,296,1,296,1,296,1,296,1,296,1,296,1,297,1,297, + 1,297,1,297,1,297,1,297,1,297,1,297,1,298,1,298,1,298,1,298,1,298, + 1,299,1,299,1,299,1,299,1,299,1,300,1,300,1,300,1,300,1,300,1,300, + 1,301,1,301,1,301,1,301,1,301,1,301,1,302,1,302,1,302,1,302,1,302, + 1,302,1,302,1,303,1,303,1,303,1,303,1,303,1,304,1,304,1,304,1,304, + 1,304,1,304,1,304,1,305,1,305,1,305,1,305,1,305,1,305,1,305,1,305, + 1,306,1,306,1,306,1,306,1,306,1,307,1,307,1,307,1,307,1,307,1,307, + 1,307,1,307,1,308,1,308,1,308,1,308,1,308,1,308,1,309,1,309,1,309, + 1,309,1,309,1,310,1,310,1,310,1,310,1,310,1,311,1,311,1,312,1,312, + 1,312,1,312,3,312,2871,8,312,1,313,1,313,1,314,1,314,1,314,1,315, + 1,315,1,316,1,316,1,316,1,317,1,317,1,318,1,318,1,319,1,319,1,320, + 1,320,1,321,1,321,1,322,1,322,1,322,1,323,1,323,1,324,1,324,1,325, + 1,325,1,325,1,325,5,325,2904,8,325,10,325,12,325,2907,9,325,1,325, + 1,325,1,326,1,326,1,326,1,326,1,326,1,326,1,326,5,326,2918,8,326, + 10,326,12,326,2921,9,326,1,326,1,326,1,327,1,327,1,327,1,327,5,327, + 2929,8,327,10,327,12,327,2932,9,327,1,327,1,327,1,328,1,328,1,328, + 1,328,3,328,2940,8,328,1,329,1,329,1,329,3,329,2945,8,329,1,329, + 1,329,3,329,2949,8,329,1,330,4,330,2952,8,330,11,330,12,330,2953, + 1,330,1,330,5,330,2958,8,330,10,330,12,330,2961,9,330,3,330,2963, + 8,330,1,330,1,330,1,330,1,330,4,330,2969,8,330,11,330,12,330,2970, + 1,330,1,330,3,330,2975,8,330,1,331,1,331,3,331,2979,8,331,1,331, + 1,331,1,331,5,331,2984,8,331,10,331,12,331,2987,9,331,1,332,1,332, + 1,332,1,332,4,332,2993,8,332,11,332,12,332,2994,1,333,1,333,1,333, + 1,333,5,333,3001,8,333,10,333,12,333,3004,9,333,1,333,1,333,1,334, + 1,334,1,334,1,334,5,334,3012,8,334,10,334,12,334,3015,9,334,1,334, + 1,334,1,335,1,335,3,335,3021,8,335,1,335,5,335,3024,8,335,10,335, + 12,335,3027,9,335,1,336,1,336,1,336,1,336,3,336,3033,8,336,1,336, + 1,336,3,336,3037,8,336,4,336,3039,8,336,11,336,12,336,3040,1,337, + 1,337,1,337,1,337,3,337,3047,8,337,1,337,4,337,3050,8,337,11,337, + 12,337,3051,1,338,1,338,1,338,1,338,3,338,3058,8,338,1,338,4,338, + 3061,8,338,11,338,12,338,3062,1,339,1,339,3,339,3067,8,339,1,339, + 4,339,3070,8,339,11,339,12,339,3071,1,340,1,340,1,341,1,341,1,342, + 1,342,1,342,1,342,5,342,3082,8,342,10,342,12,342,3085,9,342,1,342, + 3,342,3088,8,342,1,342,3,342,3091,8,342,1,342,1,342,1,343,1,343, + 1,343,1,343,5,343,3099,8,343,10,343,12,343,3102,9,343,1,343,1,343, + 1,343,1,343,1,343,1,344,4,344,3110,8,344,11,344,12,344,3111,1,344, + 1,344,1,345,1,345,1,3100,0,346,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15, + 8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37, + 19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59, + 30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81, + 41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51, + 103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121, + 61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,70, + 141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159, + 80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89, + 179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197, + 99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213,107, + 215,108,217,109,219,110,221,111,223,112,225,113,227,114,229,115, + 231,116,233,117,235,118,237,119,239,120,241,121,243,122,245,123, + 247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,131, + 263,132,265,133,267,134,269,135,271,136,273,137,275,138,277,139, + 279,140,281,141,283,142,285,143,287,144,289,145,291,146,293,147, + 295,148,297,149,299,150,301,151,303,152,305,153,307,154,309,155, + 311,156,313,157,315,158,317,159,319,160,321,161,323,162,325,163, + 327,164,329,165,331,166,333,167,335,168,337,169,339,170,341,171, + 343,172,345,173,347,174,349,175,351,176,353,177,355,178,357,179, + 359,180,361,181,363,182,365,183,367,184,369,185,371,186,373,187, + 375,188,377,189,379,190,381,191,383,192,385,193,387,194,389,195, + 391,196,393,197,395,198,397,199,399,200,401,201,403,202,405,203, + 407,204,409,205,411,206,413,207,415,208,417,209,419,210,421,211, + 423,212,425,213,427,214,429,215,431,216,433,217,435,218,437,219, + 439,220,441,221,443,222,445,223,447,224,449,225,451,226,453,227, + 455,228,457,229,459,230,461,231,463,232,465,233,467,234,469,235, + 471,236,473,237,475,238,477,239,479,240,481,241,483,242,485,243, + 487,244,489,245,491,246,493,247,495,248,497,249,499,250,501,251, + 503,252,505,253,507,254,509,255,511,256,513,257,515,258,517,259, + 519,260,521,261,523,262,525,263,527,264,529,265,531,266,533,267, + 535,268,537,269,539,270,541,271,543,272,545,273,547,274,549,275, + 551,276,553,277,555,278,557,279,559,280,561,281,563,282,565,283, + 567,284,569,285,571,286,573,287,575,288,577,289,579,290,581,291, + 583,292,585,293,587,294,589,295,591,296,593,297,595,298,597,299, + 599,300,601,301,603,302,605,303,607,304,609,305,611,306,613,307, + 615,308,617,309,619,310,621,311,623,312,625,313,627,314,629,315, + 631,316,633,317,635,318,637,319,639,320,641,321,643,322,645,323, + 647,324,649,325,651,326,653,327,655,328,657,329,659,330,661,331, + 663,332,665,333,667,334,669,335,671,0,673,0,675,0,677,0,679,0,681, + 0,683,0,685,336,687,337,689,338,691,339,1,0,37,2,0,83,83,115,115, + 2,0,75,75,107,107,2,0,73,73,105,105,2,0,80,80,112,112,2,0,65,65, + 97,97,2,0,66,66,98,98,2,0,69,69,101,101,2,0,78,78,110,110,2,0,84, + 84,116,116,2,0,68,68,100,100,2,0,77,77,109,109,2,0,70,70,102,102, + 2,0,82,82,114,114,2,0,76,76,108,108,2,0,89,89,121,121,2,0,90,90, + 122,122,2,0,67,67,99,99,2,0,85,85,117,117,2,0,72,72,104,104,2,0, + 79,79,111,111,2,0,71,71,103,103,2,0,87,87,119,119,2,0,88,88,120, + 120,2,0,86,86,118,118,2,0,74,74,106,106,2,0,81,81,113,113,1,0,39, + 39,1,0,34,34,1,0,96,96,2,0,65,70,97,102,1,0,48,55,1,0,48,49,2,0, + 43,43,45,45,1,0,48,57,2,0,65,90,97,122,2,0,10,10,13,13,3,0,9,10, + 13,13,32,32,3152,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0, + 0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0, + 0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0, + 0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0, + 0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0, + 0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0, + 0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0, + 0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0, + 0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0, + 0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0, + 0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0, + 0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117, + 1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0, + 0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1, + 0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0, + 145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0, + 0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163, + 1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0, + 0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1, + 0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0, + 191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0, + 0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209, + 1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0, + 0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1, + 0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0, + 237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0, + 0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255, + 1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0, + 0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1, + 0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0, + 283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0, + 0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301, + 1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0, + 0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1, + 0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0, + 329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0, + 0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347, + 1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0, + 0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1, + 0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0, + 375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0, + 0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393, + 1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0, + 0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1, + 0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0, + 421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0, + 0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439, + 1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0, + 0,449,1,0,0,0,0,451,1,0,0,0,0,453,1,0,0,0,0,455,1,0,0,0,0,457,1, + 0,0,0,0,459,1,0,0,0,0,461,1,0,0,0,0,463,1,0,0,0,0,465,1,0,0,0,0, + 467,1,0,0,0,0,469,1,0,0,0,0,471,1,0,0,0,0,473,1,0,0,0,0,475,1,0, + 0,0,0,477,1,0,0,0,0,479,1,0,0,0,0,481,1,0,0,0,0,483,1,0,0,0,0,485, + 1,0,0,0,0,487,1,0,0,0,0,489,1,0,0,0,0,491,1,0,0,0,0,493,1,0,0,0, + 0,495,1,0,0,0,0,497,1,0,0,0,0,499,1,0,0,0,0,501,1,0,0,0,0,503,1, + 0,0,0,0,505,1,0,0,0,0,507,1,0,0,0,0,509,1,0,0,0,0,511,1,0,0,0,0, + 513,1,0,0,0,0,515,1,0,0,0,0,517,1,0,0,0,0,519,1,0,0,0,0,521,1,0, + 0,0,0,523,1,0,0,0,0,525,1,0,0,0,0,527,1,0,0,0,0,529,1,0,0,0,0,531, + 1,0,0,0,0,533,1,0,0,0,0,535,1,0,0,0,0,537,1,0,0,0,0,539,1,0,0,0, + 0,541,1,0,0,0,0,543,1,0,0,0,0,545,1,0,0,0,0,547,1,0,0,0,0,549,1, + 0,0,0,0,551,1,0,0,0,0,553,1,0,0,0,0,555,1,0,0,0,0,557,1,0,0,0,0, + 559,1,0,0,0,0,561,1,0,0,0,0,563,1,0,0,0,0,565,1,0,0,0,0,567,1,0, + 0,0,0,569,1,0,0,0,0,571,1,0,0,0,0,573,1,0,0,0,0,575,1,0,0,0,0,577, + 1,0,0,0,0,579,1,0,0,0,0,581,1,0,0,0,0,583,1,0,0,0,0,585,1,0,0,0, + 0,587,1,0,0,0,0,589,1,0,0,0,0,591,1,0,0,0,0,593,1,0,0,0,0,595,1, + 0,0,0,0,597,1,0,0,0,0,599,1,0,0,0,0,601,1,0,0,0,0,603,1,0,0,0,0, + 605,1,0,0,0,0,607,1,0,0,0,0,609,1,0,0,0,0,611,1,0,0,0,0,613,1,0, + 0,0,0,615,1,0,0,0,0,617,1,0,0,0,0,619,1,0,0,0,0,621,1,0,0,0,0,623, + 1,0,0,0,0,625,1,0,0,0,0,627,1,0,0,0,0,629,1,0,0,0,0,631,1,0,0,0, + 0,633,1,0,0,0,0,635,1,0,0,0,0,637,1,0,0,0,0,639,1,0,0,0,0,641,1, + 0,0,0,0,643,1,0,0,0,0,645,1,0,0,0,0,647,1,0,0,0,0,649,1,0,0,0,0, + 651,1,0,0,0,0,653,1,0,0,0,0,655,1,0,0,0,0,657,1,0,0,0,0,659,1,0, + 0,0,0,661,1,0,0,0,0,663,1,0,0,0,0,665,1,0,0,0,0,667,1,0,0,0,0,669, + 1,0,0,0,0,685,1,0,0,0,0,687,1,0,0,0,0,689,1,0,0,0,0,691,1,0,0,0, + 1,693,1,0,0,0,3,695,1,0,0,0,5,697,1,0,0,0,7,699,1,0,0,0,9,701,1, + 0,0,0,11,706,1,0,0,0,13,709,1,0,0,0,15,712,1,0,0,0,17,714,1,0,0, + 0,19,716,1,0,0,0,21,718,1,0,0,0,23,720,1,0,0,0,25,722,1,0,0,0,27, + 724,1,0,0,0,29,727,1,0,0,0,31,730,1,0,0,0,33,732,1,0,0,0,35,734, + 1,0,0,0,37,741,1,0,0,0,39,745,1,0,0,0,41,751,1,0,0,0,43,757,1,0, + 0,0,45,761,1,0,0,0,47,767,1,0,0,0,49,775,1,0,0,0,51,779,1,0,0,0, + 53,783,1,0,0,0,55,789,1,0,0,0,57,792,1,0,0,0,59,796,1,0,0,0,61,799, + 1,0,0,0,63,813,1,0,0,0,65,819,1,0,0,0,67,829,1,0,0,0,69,837,1,0, + 0,0,71,842,1,0,0,0,73,845,1,0,0,0,75,850,1,0,0,0,77,857,1,0,0,0, + 79,865,1,0,0,0,81,870,1,0,0,0,83,875,1,0,0,0,85,883,1,0,0,0,87,892, + 1,0,0,0,89,899,1,0,0,0,91,907,1,0,0,0,93,915,1,0,0,0,95,922,1,0, + 0,0,97,932,1,0,0,0,99,944,1,0,0,0,101,955,1,0,0,0,103,961,1,0,0, + 0,105,973,1,0,0,0,107,980,1,0,0,0,109,986,1,0,0,0,111,991,1,0,0, + 0,113,999,1,0,0,0,115,1015,1,0,0,0,117,1028,1,0,0,0,119,1041,1,0, + 0,0,121,1054,1,0,0,0,123,1069,1,0,0,0,125,1082,1,0,0,0,127,1100, + 1,0,0,0,129,1113,1,0,0,0,131,1118,1,0,0,0,133,1123,1,0,0,0,135,1127, + 1,0,0,0,137,1138,1,0,0,0,139,1146,1,0,0,0,141,1154,1,0,0,0,143,1161, + 1,0,0,0,145,1169,1,0,0,0,147,1176,1,0,0,0,149,1181,1,0,0,0,151,1186, + 1,0,0,0,153,1195,1,0,0,0,155,1206,1,0,0,0,157,1220,1,0,0,0,159,1229, + 1,0,0,0,161,1241,1,0,0,0,163,1244,1,0,0,0,165,1251,1,0,0,0,167,1256, + 1,0,0,0,169,1261,1,0,0,0,171,1267,1,0,0,0,173,1274,1,0,0,0,175,1283, + 1,0,0,0,177,1287,1,0,0,0,179,1293,1,0,0,0,181,1300,1,0,0,0,183,1307, + 1,0,0,0,185,1317,1,0,0,0,187,1325,1,0,0,0,189,1332,1,0,0,0,191,1340, + 1,0,0,0,193,1348,1,0,0,0,195,1354,1,0,0,0,197,1360,1,0,0,0,199,1367, + 1,0,0,0,201,1373,1,0,0,0,203,1379,1,0,0,0,205,1389,1,0,0,0,207,1393, + 1,0,0,0,209,1400,1,0,0,0,211,1405,1,0,0,0,213,1410,1,0,0,0,215,1419, + 1,0,0,0,217,1429,1,0,0,0,219,1435,1,0,0,0,221,1441,1,0,0,0,223,1449, + 1,0,0,0,225,1456,1,0,0,0,227,1465,1,0,0,0,229,1471,1,0,0,0,231,1480, + 1,0,0,0,233,1487,1,0,0,0,235,1494,1,0,0,0,237,1499,1,0,0,0,239,1502, + 1,0,0,0,241,1509,1,0,0,0,243,1519,1,0,0,0,245,1522,1,0,0,0,247,1532, + 1,0,0,0,249,1540,1,0,0,0,251,1546,1,0,0,0,253,1552,1,0,0,0,255,1559, + 1,0,0,0,257,1569,1,0,0,0,259,1578,1,0,0,0,261,1583,1,0,0,0,263,1591, + 1,0,0,0,265,1594,1,0,0,0,267,1597,1,0,0,0,269,1607,1,0,0,0,271,1615, + 1,0,0,0,273,1620,1,0,0,0,275,1625,1,0,0,0,277,1636,1,0,0,0,279,1648, + 1,0,0,0,281,1660,1,0,0,0,283,1671,1,0,0,0,285,1682,1,0,0,0,287,1693, + 1,0,0,0,289,1698,1,0,0,0,291,1702,1,0,0,0,293,1707,1,0,0,0,295,1716, + 1,0,0,0,297,1721,1,0,0,0,299,1729,1,0,0,0,301,1737,1,0,0,0,303,1743, + 1,0,0,0,305,1748,1,0,0,0,307,1754,1,0,0,0,309,1759,1,0,0,0,311,1765, + 1,0,0,0,313,1773,1,0,0,0,315,1779,1,0,0,0,317,1789,1,0,0,0,319,1804, + 1,0,0,0,321,1812,1,0,0,0,323,1817,1,0,0,0,325,1821,1,0,0,0,327,1827, + 1,0,0,0,329,1835,1,0,0,0,331,1843,1,0,0,0,333,1859,1,0,0,0,335,1872, + 1,0,0,0,337,1881,1,0,0,0,339,1887,1,0,0,0,341,1894,1,0,0,0,343,1900, + 1,0,0,0,345,1908,1,0,0,0,347,1915,1,0,0,0,349,1920,1,0,0,0,351,1924, + 1,0,0,0,353,1928,1,0,0,0,355,1933,1,0,0,0,357,1938,1,0,0,0,359,1941, + 1,0,0,0,361,1946,1,0,0,0,363,1956,1,0,0,0,365,1960,1,0,0,0,367,1965, + 1,0,0,0,369,1972,1,0,0,0,371,1978,1,0,0,0,373,1985,1,0,0,0,375,1988, + 1,0,0,0,377,1995,1,0,0,0,379,2000,1,0,0,0,381,2003,1,0,0,0,383,2007, + 1,0,0,0,385,2012,1,0,0,0,387,2019,1,0,0,0,389,2022,1,0,0,0,391,2028, + 1,0,0,0,393,2039,1,0,0,0,395,2045,1,0,0,0,397,2052,1,0,0,0,399,2057, + 1,0,0,0,401,2066,1,0,0,0,403,2076,1,0,0,0,405,2087,1,0,0,0,407,2095, + 1,0,0,0,409,2100,1,0,0,0,411,2105,1,0,0,0,413,2113,1,0,0,0,415,2117, + 1,0,0,0,417,2124,1,0,0,0,419,2132,1,0,0,0,421,2137,1,0,0,0,423,2146, + 1,0,0,0,425,2156,1,0,0,0,427,2166,1,0,0,0,429,2174,1,0,0,0,431,2185, + 1,0,0,0,433,2196,1,0,0,0,435,2202,1,0,0,0,437,2209,1,0,0,0,439,2215, + 1,0,0,0,441,2220,1,0,0,0,443,2230,1,0,0,0,445,2238,1,0,0,0,447,2245, + 1,0,0,0,449,2252,1,0,0,0,451,2263,1,0,0,0,453,2271,1,0,0,0,455,2277, + 1,0,0,0,457,2285,1,0,0,0,459,2294,1,0,0,0,461,2301,1,0,0,0,463,2311, + 1,0,0,0,465,2319,1,0,0,0,467,2326,1,0,0,0,469,2332,1,0,0,0,471,2337, + 1,0,0,0,473,2343,1,0,0,0,475,2352,1,0,0,0,477,2359,1,0,0,0,479,2363, + 1,0,0,0,481,2368,1,0,0,0,483,2376,1,0,0,0,485,2383,1,0,0,0,487,2390, + 1,0,0,0,489,2398,1,0,0,0,491,2405,1,0,0,0,493,2414,1,0,0,0,495,2419, + 1,0,0,0,497,2426,1,0,0,0,499,2439,1,0,0,0,501,2447,1,0,0,0,503,2451, + 1,0,0,0,505,2456,1,0,0,0,507,2461,1,0,0,0,509,2466,1,0,0,0,511,2472, + 1,0,0,0,513,2478,1,0,0,0,515,2485,1,0,0,0,517,2495,1,0,0,0,519,2502, + 1,0,0,0,521,2508,1,0,0,0,523,2515,1,0,0,0,525,2527,1,0,0,0,527,2532, + 1,0,0,0,529,2539,1,0,0,0,531,2544,1,0,0,0,533,2549,1,0,0,0,535,2554, + 1,0,0,0,537,2564,1,0,0,0,539,2567,1,0,0,0,541,2576,1,0,0,0,543,2588, + 1,0,0,0,545,2593,1,0,0,0,547,2598,1,0,0,0,549,2607,1,0,0,0,551,2616, + 1,0,0,0,553,2621,1,0,0,0,555,2629,1,0,0,0,557,2639,1,0,0,0,559,2651, + 1,0,0,0,561,2665,1,0,0,0,563,2671,1,0,0,0,565,2678,1,0,0,0,567,2686, + 1,0,0,0,569,2696,1,0,0,0,571,2703,1,0,0,0,573,2709,1,0,0,0,575,2716, + 1,0,0,0,577,2720,1,0,0,0,579,2725,1,0,0,0,581,2731,1,0,0,0,583,2737, + 1,0,0,0,585,2743,1,0,0,0,587,2748,1,0,0,0,589,2757,1,0,0,0,591,2763, + 1,0,0,0,593,2770,1,0,0,0,595,2778,1,0,0,0,597,2786,1,0,0,0,599,2791, + 1,0,0,0,601,2796,1,0,0,0,603,2802,1,0,0,0,605,2808,1,0,0,0,607,2815, + 1,0,0,0,609,2820,1,0,0,0,611,2827,1,0,0,0,613,2835,1,0,0,0,615,2840, + 1,0,0,0,617,2848,1,0,0,0,619,2854,1,0,0,0,621,2859,1,0,0,0,623,2864, + 1,0,0,0,625,2870,1,0,0,0,627,2872,1,0,0,0,629,2874,1,0,0,0,631,2877, + 1,0,0,0,633,2879,1,0,0,0,635,2882,1,0,0,0,637,2884,1,0,0,0,639,2886, + 1,0,0,0,641,2888,1,0,0,0,643,2890,1,0,0,0,645,2892,1,0,0,0,647,2895, + 1,0,0,0,649,2897,1,0,0,0,651,2899,1,0,0,0,653,2910,1,0,0,0,655,2924, + 1,0,0,0,657,2939,1,0,0,0,659,2948,1,0,0,0,661,2974,1,0,0,0,663,2978, + 1,0,0,0,665,2988,1,0,0,0,667,2996,1,0,0,0,669,3007,1,0,0,0,671,3018, + 1,0,0,0,673,3028,1,0,0,0,675,3042,1,0,0,0,677,3053,1,0,0,0,679,3064, + 1,0,0,0,681,3073,1,0,0,0,683,3075,1,0,0,0,685,3077,1,0,0,0,687,3094, + 1,0,0,0,689,3109,1,0,0,0,691,3115,1,0,0,0,693,694,5,40,0,0,694,2, + 1,0,0,0,695,696,5,41,0,0,696,4,1,0,0,0,697,698,5,44,0,0,698,6,1, + 0,0,0,699,700,5,46,0,0,700,8,1,0,0,0,701,702,7,0,0,0,702,703,7,1, + 0,0,703,704,7,2,0,0,704,705,7,3,0,0,705,10,1,0,0,0,706,707,5,61, + 0,0,707,708,5,62,0,0,708,12,1,0,0,0,709,710,5,45,0,0,710,711,5,62, + 0,0,711,14,1,0,0,0,712,713,5,91,0,0,713,16,1,0,0,0,714,715,5,93, + 0,0,715,18,1,0,0,0,716,717,5,58,0,0,717,20,1,0,0,0,718,719,5,124, + 0,0,719,22,1,0,0,0,720,721,5,94,0,0,721,24,1,0,0,0,722,723,5,36, + 0,0,723,26,1,0,0,0,724,725,5,123,0,0,725,726,5,45,0,0,726,28,1,0, + 0,0,727,728,5,45,0,0,728,729,5,125,0,0,729,30,1,0,0,0,730,731,5, + 123,0,0,731,32,1,0,0,0,732,733,5,125,0,0,733,34,1,0,0,0,734,735, + 7,4,0,0,735,736,7,5,0,0,736,737,7,0,0,0,737,738,7,6,0,0,738,739, + 7,7,0,0,739,740,7,8,0,0,740,36,1,0,0,0,741,742,7,4,0,0,742,743,7, + 9,0,0,743,744,7,9,0,0,744,38,1,0,0,0,745,746,7,4,0,0,746,747,7,9, + 0,0,747,748,7,10,0,0,748,749,7,2,0,0,749,750,7,7,0,0,750,40,1,0, + 0,0,751,752,7,4,0,0,752,753,7,11,0,0,753,754,7,8,0,0,754,755,7,6, + 0,0,755,756,7,12,0,0,756,42,1,0,0,0,757,758,7,4,0,0,758,759,7,13, + 0,0,759,760,7,13,0,0,760,44,1,0,0,0,761,762,7,4,0,0,762,763,7,13, + 0,0,763,764,7,8,0,0,764,765,7,6,0,0,765,766,7,12,0,0,766,46,1,0, + 0,0,767,768,7,4,0,0,768,769,7,7,0,0,769,770,7,4,0,0,770,771,7,13, + 0,0,771,772,7,14,0,0,772,773,7,15,0,0,773,774,7,6,0,0,774,48,1,0, + 0,0,775,776,7,4,0,0,776,777,7,7,0,0,777,778,7,9,0,0,778,50,1,0,0, + 0,779,780,7,4,0,0,780,781,7,7,0,0,781,782,7,14,0,0,782,52,1,0,0, + 0,783,784,7,4,0,0,784,785,7,12,0,0,785,786,7,12,0,0,786,787,7,4, + 0,0,787,788,7,14,0,0,788,54,1,0,0,0,789,790,7,4,0,0,790,791,7,0, + 0,0,791,56,1,0,0,0,792,793,7,4,0,0,793,794,7,0,0,0,794,795,7,16, + 0,0,795,58,1,0,0,0,796,797,7,4,0,0,797,798,7,8,0,0,798,60,1,0,0, + 0,799,800,7,4,0,0,800,801,7,17,0,0,801,802,7,8,0,0,802,803,7,18, + 0,0,803,804,7,19,0,0,804,805,7,12,0,0,805,806,7,2,0,0,806,807,7, + 15,0,0,807,808,7,4,0,0,808,809,7,8,0,0,809,810,7,2,0,0,810,811,7, + 19,0,0,811,812,7,7,0,0,812,62,1,0,0,0,813,814,7,5,0,0,814,815,7, + 6,0,0,815,816,7,20,0,0,816,817,7,2,0,0,817,818,7,7,0,0,818,64,1, + 0,0,0,819,820,7,5,0,0,820,821,7,6,0,0,821,822,7,12,0,0,822,823,7, + 7,0,0,823,824,7,19,0,0,824,825,7,17,0,0,825,826,7,13,0,0,826,827, + 7,13,0,0,827,828,7,2,0,0,828,66,1,0,0,0,829,830,7,5,0,0,830,831, + 7,6,0,0,831,832,7,8,0,0,832,833,7,21,0,0,833,834,7,6,0,0,834,835, + 7,6,0,0,835,836,7,7,0,0,836,68,1,0,0,0,837,838,7,5,0,0,838,839,7, + 19,0,0,839,840,7,8,0,0,840,841,7,18,0,0,841,70,1,0,0,0,842,843,7, + 5,0,0,843,844,7,14,0,0,844,72,1,0,0,0,845,846,7,16,0,0,846,847,7, + 4,0,0,847,848,7,13,0,0,848,849,7,13,0,0,849,74,1,0,0,0,850,851,7, + 16,0,0,851,852,7,4,0,0,852,853,7,13,0,0,853,854,7,13,0,0,854,855, + 7,6,0,0,855,856,7,9,0,0,856,76,1,0,0,0,857,858,7,16,0,0,858,859, + 7,4,0,0,859,860,7,0,0,0,860,861,7,16,0,0,861,862,7,4,0,0,862,863, + 7,9,0,0,863,864,7,6,0,0,864,78,1,0,0,0,865,866,7,16,0,0,866,867, + 7,4,0,0,867,868,7,0,0,0,868,869,7,6,0,0,869,80,1,0,0,0,870,871,7, + 16,0,0,871,872,7,4,0,0,872,873,7,0,0,0,873,874,7,8,0,0,874,82,1, + 0,0,0,875,876,7,16,0,0,876,877,7,4,0,0,877,878,7,8,0,0,878,879,7, + 4,0,0,879,880,7,13,0,0,880,881,7,19,0,0,881,882,7,20,0,0,882,84, + 1,0,0,0,883,884,7,16,0,0,884,885,7,4,0,0,885,886,7,8,0,0,886,887, + 7,4,0,0,887,888,7,13,0,0,888,889,7,19,0,0,889,890,7,20,0,0,890,891, + 7,0,0,0,891,86,1,0,0,0,892,893,7,16,0,0,893,894,7,19,0,0,894,895, + 7,13,0,0,895,896,7,17,0,0,896,897,7,10,0,0,897,898,7,7,0,0,898,88, + 1,0,0,0,899,900,7,16,0,0,900,901,7,19,0,0,901,902,7,13,0,0,902,903, + 7,17,0,0,903,904,7,10,0,0,904,905,7,7,0,0,905,906,7,0,0,0,906,90, + 1,0,0,0,907,908,7,16,0,0,908,909,7,19,0,0,909,910,7,10,0,0,910,911, + 7,10,0,0,911,912,7,6,0,0,912,913,7,7,0,0,913,914,7,8,0,0,914,92, + 1,0,0,0,915,916,7,16,0,0,916,917,7,19,0,0,917,918,7,10,0,0,918,919, + 7,10,0,0,919,920,7,2,0,0,920,921,7,8,0,0,921,94,1,0,0,0,922,923, + 7,16,0,0,923,924,7,19,0,0,924,925,7,10,0,0,925,926,7,10,0,0,926, + 927,7,2,0,0,927,928,7,8,0,0,928,929,7,8,0,0,929,930,7,6,0,0,930, + 931,7,9,0,0,931,96,1,0,0,0,932,933,7,16,0,0,933,934,7,19,0,0,934, + 935,7,7,0,0,935,936,7,9,0,0,936,937,7,2,0,0,937,938,7,8,0,0,938, + 939,7,2,0,0,939,940,7,19,0,0,940,941,7,7,0,0,941,942,7,4,0,0,942, + 943,7,13,0,0,943,98,1,0,0,0,944,945,7,16,0,0,945,946,7,19,0,0,946, + 947,7,7,0,0,947,948,7,0,0,0,948,949,7,8,0,0,949,950,7,12,0,0,950, + 951,7,4,0,0,951,952,7,2,0,0,952,953,7,7,0,0,953,954,7,8,0,0,954, + 100,1,0,0,0,955,956,7,16,0,0,956,957,7,19,0,0,957,958,7,17,0,0,958, + 959,7,7,0,0,959,960,7,8,0,0,960,102,1,0,0,0,961,962,7,16,0,0,962, + 963,7,19,0,0,963,964,7,3,0,0,964,965,7,4,0,0,965,966,7,12,0,0,966, + 967,7,8,0,0,967,968,7,2,0,0,968,969,7,8,0,0,969,970,7,2,0,0,970, + 971,7,19,0,0,971,972,7,7,0,0,972,104,1,0,0,0,973,974,7,16,0,0,974, + 975,7,12,0,0,975,976,7,6,0,0,976,977,7,4,0,0,977,978,7,8,0,0,978, + 979,7,6,0,0,979,106,1,0,0,0,980,981,7,16,0,0,981,982,7,12,0,0,982, + 983,7,19,0,0,983,984,7,0,0,0,984,985,7,0,0,0,985,108,1,0,0,0,986, + 987,7,16,0,0,987,988,7,17,0,0,988,989,7,5,0,0,989,990,7,6,0,0,990, + 110,1,0,0,0,991,992,7,16,0,0,992,993,7,17,0,0,993,994,7,12,0,0,994, + 995,7,12,0,0,995,996,7,6,0,0,996,997,7,7,0,0,997,998,7,8,0,0,998, + 112,1,0,0,0,999,1000,7,16,0,0,1000,1001,7,17,0,0,1001,1002,7,12, + 0,0,1002,1003,7,12,0,0,1003,1004,7,6,0,0,1004,1005,7,7,0,0,1005, + 1006,7,8,0,0,1006,1007,5,95,0,0,1007,1008,7,16,0,0,1008,1009,7,4, + 0,0,1009,1010,7,8,0,0,1010,1011,7,4,0,0,1011,1012,7,13,0,0,1012, + 1013,7,19,0,0,1013,1014,7,20,0,0,1014,114,1,0,0,0,1015,1016,7,16, + 0,0,1016,1017,7,17,0,0,1017,1018,7,12,0,0,1018,1019,7,12,0,0,1019, + 1020,7,6,0,0,1020,1021,7,7,0,0,1021,1022,7,8,0,0,1022,1023,5,95, + 0,0,1023,1024,7,9,0,0,1024,1025,7,4,0,0,1025,1026,7,8,0,0,1026,1027, + 7,6,0,0,1027,116,1,0,0,0,1028,1029,7,16,0,0,1029,1030,7,17,0,0,1030, + 1031,7,12,0,0,1031,1032,7,12,0,0,1032,1033,7,6,0,0,1033,1034,7,7, + 0,0,1034,1035,7,8,0,0,1035,1036,5,95,0,0,1036,1037,7,3,0,0,1037, + 1038,7,4,0,0,1038,1039,7,8,0,0,1039,1040,7,18,0,0,1040,118,1,0,0, + 0,1041,1042,7,16,0,0,1042,1043,7,17,0,0,1043,1044,7,12,0,0,1044, + 1045,7,12,0,0,1045,1046,7,6,0,0,1046,1047,7,7,0,0,1047,1048,7,8, + 0,0,1048,1049,5,95,0,0,1049,1050,7,12,0,0,1050,1051,7,19,0,0,1051, + 1052,7,13,0,0,1052,1053,7,6,0,0,1053,120,1,0,0,0,1054,1055,7,16, + 0,0,1055,1056,7,17,0,0,1056,1057,7,12,0,0,1057,1058,7,12,0,0,1058, + 1059,7,6,0,0,1059,1060,7,7,0,0,1060,1061,7,8,0,0,1061,1062,5,95, + 0,0,1062,1063,7,0,0,0,1063,1064,7,16,0,0,1064,1065,7,18,0,0,1065, + 1066,7,6,0,0,1066,1067,7,10,0,0,1067,1068,7,4,0,0,1068,122,1,0,0, + 0,1069,1070,7,16,0,0,1070,1071,7,17,0,0,1071,1072,7,12,0,0,1072, + 1073,7,12,0,0,1073,1074,7,6,0,0,1074,1075,7,7,0,0,1075,1076,7,8, + 0,0,1076,1077,5,95,0,0,1077,1078,7,8,0,0,1078,1079,7,2,0,0,1079, + 1080,7,10,0,0,1080,1081,7,6,0,0,1081,124,1,0,0,0,1082,1083,7,16, + 0,0,1083,1084,7,17,0,0,1084,1085,7,12,0,0,1085,1086,7,12,0,0,1086, + 1087,7,6,0,0,1087,1088,7,7,0,0,1088,1089,7,8,0,0,1089,1090,5,95, + 0,0,1090,1091,7,8,0,0,1091,1092,7,2,0,0,1092,1093,7,10,0,0,1093, + 1094,7,6,0,0,1094,1095,7,0,0,0,1095,1096,7,8,0,0,1096,1097,7,4,0, + 0,1097,1098,7,10,0,0,1098,1099,7,3,0,0,1099,126,1,0,0,0,1100,1101, + 7,16,0,0,1101,1102,7,17,0,0,1102,1103,7,12,0,0,1103,1104,7,12,0, + 0,1104,1105,7,6,0,0,1105,1106,7,7,0,0,1106,1107,7,8,0,0,1107,1108, + 5,95,0,0,1108,1109,7,17,0,0,1109,1110,7,0,0,0,1110,1111,7,6,0,0, + 1111,1112,7,12,0,0,1112,128,1,0,0,0,1113,1114,7,9,0,0,1114,1115, + 7,4,0,0,1115,1116,7,8,0,0,1116,1117,7,4,0,0,1117,130,1,0,0,0,1118, + 1119,7,9,0,0,1119,1120,7,4,0,0,1120,1121,7,8,0,0,1121,1122,7,6,0, + 0,1122,132,1,0,0,0,1123,1124,7,9,0,0,1124,1125,7,4,0,0,1125,1126, + 7,14,0,0,1126,134,1,0,0,0,1127,1128,7,9,0,0,1128,1129,7,6,0,0,1129, + 1130,7,4,0,0,1130,1131,7,13,0,0,1131,1132,7,13,0,0,1132,1133,7,19, + 0,0,1133,1134,7,16,0,0,1134,1135,7,4,0,0,1135,1136,7,8,0,0,1136, + 1137,7,6,0,0,1137,136,1,0,0,0,1138,1139,7,9,0,0,1139,1140,7,6,0, + 0,1140,1141,7,16,0,0,1141,1142,7,13,0,0,1142,1143,7,4,0,0,1143,1144, + 7,12,0,0,1144,1145,7,6,0,0,1145,138,1,0,0,0,1146,1147,7,9,0,0,1147, + 1148,7,6,0,0,1148,1149,7,11,0,0,1149,1150,7,4,0,0,1150,1151,7,17, + 0,0,1151,1152,7,13,0,0,1152,1153,7,8,0,0,1153,140,1,0,0,0,1154,1155, + 7,9,0,0,1155,1156,7,6,0,0,1156,1157,7,11,0,0,1157,1158,7,2,0,0,1158, + 1159,7,7,0,0,1159,1160,7,6,0,0,1160,142,1,0,0,0,1161,1162,7,9,0, + 0,1162,1163,7,6,0,0,1163,1164,7,11,0,0,1164,1165,7,2,0,0,1165,1166, + 7,7,0,0,1166,1167,7,6,0,0,1167,1168,7,12,0,0,1168,144,1,0,0,0,1169, + 1170,7,9,0,0,1170,1171,7,6,0,0,1171,1172,7,13,0,0,1172,1173,7,6, + 0,0,1173,1174,7,8,0,0,1174,1175,7,6,0,0,1175,146,1,0,0,0,1176,1177, + 7,9,0,0,1177,1178,7,6,0,0,1178,1179,7,7,0,0,1179,1180,7,14,0,0,1180, + 148,1,0,0,0,1181,1182,7,9,0,0,1182,1183,7,6,0,0,1183,1184,7,0,0, + 0,1184,1185,7,16,0,0,1185,150,1,0,0,0,1186,1187,7,9,0,0,1187,1188, + 7,6,0,0,1188,1189,7,0,0,0,1189,1190,7,16,0,0,1190,1191,7,12,0,0, + 1191,1192,7,2,0,0,1192,1193,7,5,0,0,1193,1194,7,6,0,0,1194,152,1, + 0,0,0,1195,1196,7,9,0,0,1196,1197,7,6,0,0,1197,1198,7,0,0,0,1198, + 1199,7,16,0,0,1199,1200,7,12,0,0,1200,1201,7,2,0,0,1201,1202,7,3, + 0,0,1202,1203,7,8,0,0,1203,1204,7,19,0,0,1204,1205,7,12,0,0,1205, + 154,1,0,0,0,1206,1207,7,9,0,0,1207,1208,7,6,0,0,1208,1209,7,8,0, + 0,1209,1210,7,6,0,0,1210,1211,7,12,0,0,1211,1212,7,10,0,0,1212,1213, + 7,2,0,0,1213,1214,7,7,0,0,1214,1215,7,2,0,0,1215,1216,7,0,0,0,1216, + 1217,7,8,0,0,1217,1218,7,2,0,0,1218,1219,7,16,0,0,1219,156,1,0,0, + 0,1220,1221,7,9,0,0,1221,1222,7,2,0,0,1222,1223,7,0,0,0,1223,1224, + 7,8,0,0,1224,1225,7,2,0,0,1225,1226,7,7,0,0,1226,1227,7,16,0,0,1227, + 1228,7,8,0,0,1228,158,1,0,0,0,1229,1230,7,9,0,0,1230,1231,7,2,0, + 0,1231,1232,7,0,0,0,1232,1233,7,8,0,0,1233,1234,7,12,0,0,1234,1235, + 7,2,0,0,1235,1236,7,5,0,0,1236,1237,7,17,0,0,1237,1238,7,8,0,0,1238, + 1239,7,6,0,0,1239,1240,7,9,0,0,1240,160,1,0,0,0,1241,1242,7,9,0, + 0,1242,1243,7,19,0,0,1243,162,1,0,0,0,1244,1245,7,9,0,0,1245,1246, + 7,19,0,0,1246,1247,7,17,0,0,1247,1248,7,5,0,0,1248,1249,7,13,0,0, + 1249,1250,7,6,0,0,1250,164,1,0,0,0,1251,1252,7,9,0,0,1252,1253,7, + 12,0,0,1253,1254,7,19,0,0,1254,1255,7,3,0,0,1255,166,1,0,0,0,1256, + 1257,7,6,0,0,1257,1258,7,13,0,0,1258,1259,7,0,0,0,1259,1260,7,6, + 0,0,1260,168,1,0,0,0,1261,1262,7,6,0,0,1262,1263,7,10,0,0,1263,1264, + 7,3,0,0,1264,1265,7,8,0,0,1265,1266,7,14,0,0,1266,170,1,0,0,0,1267, + 1268,7,6,0,0,1268,1269,7,13,0,0,1269,1270,7,0,0,0,1270,1271,7,6, + 0,0,1271,1272,7,2,0,0,1272,1273,7,11,0,0,1273,172,1,0,0,0,1274,1275, + 7,6,0,0,1275,1276,7,7,0,0,1276,1277,7,16,0,0,1277,1278,7,19,0,0, + 1278,1279,7,9,0,0,1279,1280,7,2,0,0,1280,1281,7,7,0,0,1281,1282, + 7,20,0,0,1282,174,1,0,0,0,1283,1284,7,6,0,0,1284,1285,7,7,0,0,1285, + 1286,7,9,0,0,1286,176,1,0,0,0,1287,1288,7,6,0,0,1288,1289,7,12,0, + 0,1289,1290,7,12,0,0,1290,1291,7,19,0,0,1291,1292,7,12,0,0,1292, + 178,1,0,0,0,1293,1294,7,6,0,0,1294,1295,7,0,0,0,1295,1296,7,16,0, + 0,1296,1297,7,4,0,0,1297,1298,7,3,0,0,1298,1299,7,6,0,0,1299,180, + 1,0,0,0,1300,1301,7,6,0,0,1301,1302,7,22,0,0,1302,1303,7,16,0,0, + 1303,1304,7,6,0,0,1304,1305,7,3,0,0,1305,1306,7,8,0,0,1306,182,1, + 0,0,0,1307,1308,7,6,0,0,1308,1309,7,22,0,0,1309,1310,7,16,0,0,1310, + 1311,7,13,0,0,1311,1312,7,17,0,0,1312,1313,7,9,0,0,1313,1314,7,2, + 0,0,1314,1315,7,7,0,0,1315,1316,7,20,0,0,1316,184,1,0,0,0,1317,1318, + 7,6,0,0,1318,1319,7,22,0,0,1319,1320,7,6,0,0,1320,1321,7,16,0,0, + 1321,1322,7,17,0,0,1322,1323,7,8,0,0,1323,1324,7,6,0,0,1324,186, + 1,0,0,0,1325,1326,7,6,0,0,1326,1327,7,22,0,0,1327,1328,7,2,0,0,1328, + 1329,7,0,0,0,1329,1330,7,8,0,0,1330,1331,7,0,0,0,1331,188,1,0,0, + 0,1332,1333,7,6,0,0,1333,1334,7,22,0,0,1334,1335,7,3,0,0,1335,1336, + 7,13,0,0,1336,1337,7,4,0,0,1337,1338,7,2,0,0,1338,1339,7,7,0,0,1339, + 190,1,0,0,0,1340,1341,7,6,0,0,1341,1342,7,22,0,0,1342,1343,7,8,0, + 0,1343,1344,7,12,0,0,1344,1345,7,4,0,0,1345,1346,7,16,0,0,1346,1347, + 7,8,0,0,1347,192,1,0,0,0,1348,1349,7,11,0,0,1349,1350,7,4,0,0,1350, + 1351,7,13,0,0,1351,1352,7,0,0,0,1352,1353,7,6,0,0,1353,194,1,0,0, + 0,1354,1355,7,11,0,0,1355,1356,7,6,0,0,1356,1357,7,8,0,0,1357,1358, + 7,16,0,0,1358,1359,7,18,0,0,1359,196,1,0,0,0,1360,1361,7,11,0,0, + 1361,1362,7,2,0,0,1362,1363,7,13,0,0,1363,1364,7,8,0,0,1364,1365, + 7,6,0,0,1365,1366,7,12,0,0,1366,198,1,0,0,0,1367,1368,7,11,0,0,1368, + 1369,7,2,0,0,1369,1370,7,7,0,0,1370,1371,7,4,0,0,1371,1372,7,13, + 0,0,1372,200,1,0,0,0,1373,1374,7,11,0,0,1374,1375,7,2,0,0,1375,1376, + 7,12,0,0,1376,1377,7,0,0,0,1377,1378,7,8,0,0,1378,202,1,0,0,0,1379, + 1380,7,11,0,0,1380,1381,7,19,0,0,1381,1382,7,13,0,0,1382,1383,7, + 13,0,0,1383,1384,7,19,0,0,1384,1385,7,21,0,0,1385,1386,7,2,0,0,1386, + 1387,7,7,0,0,1387,1388,7,20,0,0,1388,204,1,0,0,0,1389,1390,7,11, + 0,0,1390,1391,7,19,0,0,1391,1392,7,12,0,0,1392,206,1,0,0,0,1393, + 1394,7,11,0,0,1394,1395,7,19,0,0,1395,1396,7,12,0,0,1396,1397,7, + 10,0,0,1397,1398,7,4,0,0,1398,1399,7,8,0,0,1399,208,1,0,0,0,1400, + 1401,7,11,0,0,1401,1402,7,12,0,0,1402,1403,7,19,0,0,1403,1404,7, + 10,0,0,1404,210,1,0,0,0,1405,1406,7,11,0,0,1406,1407,7,17,0,0,1407, + 1408,7,13,0,0,1408,1409,7,13,0,0,1409,212,1,0,0,0,1410,1411,7,11, + 0,0,1411,1412,7,17,0,0,1412,1413,7,7,0,0,1413,1414,7,16,0,0,1414, + 1415,7,8,0,0,1415,1416,7,2,0,0,1416,1417,7,19,0,0,1417,1418,7,7, + 0,0,1418,214,1,0,0,0,1419,1420,7,11,0,0,1420,1421,7,17,0,0,1421, + 1422,7,7,0,0,1422,1423,7,16,0,0,1423,1424,7,8,0,0,1424,1425,7,2, + 0,0,1425,1426,7,19,0,0,1426,1427,7,7,0,0,1427,1428,7,0,0,0,1428, + 216,1,0,0,0,1429,1430,7,20,0,0,1430,1431,7,12,0,0,1431,1432,7,4, + 0,0,1432,1433,7,16,0,0,1433,1434,7,6,0,0,1434,218,1,0,0,0,1435,1436, + 7,20,0,0,1436,1437,7,12,0,0,1437,1438,7,4,0,0,1438,1439,7,7,0,0, + 1439,1440,7,8,0,0,1440,220,1,0,0,0,1441,1442,7,20,0,0,1442,1443, + 7,12,0,0,1443,1444,7,4,0,0,1444,1445,7,7,0,0,1445,1446,7,8,0,0,1446, + 1447,7,6,0,0,1447,1448,7,9,0,0,1448,222,1,0,0,0,1449,1450,7,20,0, + 0,1450,1451,7,12,0,0,1451,1452,7,4,0,0,1452,1453,7,7,0,0,1453,1454, + 7,8,0,0,1454,1455,7,0,0,0,1455,224,1,0,0,0,1456,1457,7,20,0,0,1457, + 1458,7,12,0,0,1458,1459,7,4,0,0,1459,1460,7,3,0,0,1460,1461,7,18, + 0,0,1461,1462,7,23,0,0,1462,1463,7,2,0,0,1463,1464,7,15,0,0,1464, + 226,1,0,0,0,1465,1466,7,20,0,0,1466,1467,7,12,0,0,1467,1468,7,19, + 0,0,1468,1469,7,17,0,0,1469,1470,7,3,0,0,1470,228,1,0,0,0,1471,1472, + 7,20,0,0,1472,1473,7,12,0,0,1473,1474,7,19,0,0,1474,1475,7,17,0, + 0,1475,1476,7,3,0,0,1476,1477,7,2,0,0,1477,1478,7,7,0,0,1478,1479, + 7,20,0,0,1479,230,1,0,0,0,1480,1481,7,20,0,0,1481,1482,7,12,0,0, + 1482,1483,7,19,0,0,1483,1484,7,17,0,0,1484,1485,7,3,0,0,1485,1486, + 7,0,0,0,1486,232,1,0,0,0,1487,1488,7,18,0,0,1488,1489,7,4,0,0,1489, + 1490,7,23,0,0,1490,1491,7,2,0,0,1491,1492,7,7,0,0,1492,1493,7,20, + 0,0,1493,234,1,0,0,0,1494,1495,7,18,0,0,1495,1496,7,19,0,0,1496, + 1497,7,17,0,0,1497,1498,7,12,0,0,1498,236,1,0,0,0,1499,1500,7,2, + 0,0,1500,1501,7,11,0,0,1501,238,1,0,0,0,1502,1503,7,2,0,0,1503,1504, + 7,20,0,0,1504,1505,7,7,0,0,1505,1506,7,19,0,0,1506,1507,7,12,0,0, + 1507,1508,7,6,0,0,1508,240,1,0,0,0,1509,1510,7,2,0,0,1510,1511,7, + 10,0,0,1511,1512,7,10,0,0,1512,1513,7,6,0,0,1513,1514,7,9,0,0,1514, + 1515,7,2,0,0,1515,1516,7,4,0,0,1516,1517,7,8,0,0,1517,1518,7,6,0, + 0,1518,242,1,0,0,0,1519,1520,7,2,0,0,1520,1521,7,7,0,0,1521,244, + 1,0,0,0,1522,1523,7,2,0,0,1523,1524,7,7,0,0,1524,1525,7,16,0,0,1525, + 1526,7,13,0,0,1526,1527,7,17,0,0,1527,1528,7,9,0,0,1528,1529,7,2, + 0,0,1529,1530,7,7,0,0,1530,1531,7,20,0,0,1531,246,1,0,0,0,1532,1533, + 7,2,0,0,1533,1534,7,7,0,0,1534,1535,7,2,0,0,1535,1536,7,8,0,0,1536, + 1537,7,2,0,0,1537,1538,7,4,0,0,1538,1539,7,13,0,0,1539,248,1,0,0, + 0,1540,1541,7,2,0,0,1541,1542,7,7,0,0,1542,1543,7,7,0,0,1543,1544, + 7,6,0,0,1544,1545,7,12,0,0,1545,250,1,0,0,0,1546,1547,7,2,0,0,1547, + 1548,7,7,0,0,1548,1549,7,3,0,0,1549,1550,7,17,0,0,1550,1551,7,8, + 0,0,1551,252,1,0,0,0,1552,1553,7,2,0,0,1553,1554,7,7,0,0,1554,1555, + 7,0,0,0,1555,1556,7,6,0,0,1556,1557,7,12,0,0,1557,1558,7,8,0,0,1558, + 254,1,0,0,0,1559,1560,7,2,0,0,1560,1561,7,7,0,0,1561,1562,7,8,0, + 0,1562,1563,7,6,0,0,1563,1564,7,12,0,0,1564,1565,7,0,0,0,1565,1566, + 7,6,0,0,1566,1567,7,16,0,0,1567,1568,7,8,0,0,1568,256,1,0,0,0,1569, + 1570,7,2,0,0,1570,1571,7,7,0,0,1571,1572,7,8,0,0,1572,1573,7,6,0, + 0,1573,1574,7,12,0,0,1574,1575,7,23,0,0,1575,1576,7,4,0,0,1576,1577, + 7,13,0,0,1577,258,1,0,0,0,1578,1579,7,2,0,0,1579,1580,7,7,0,0,1580, + 1581,7,8,0,0,1581,1582,7,19,0,0,1582,260,1,0,0,0,1583,1584,7,2,0, + 0,1584,1585,7,7,0,0,1585,1586,7,23,0,0,1586,1587,7,19,0,0,1587,1588, + 7,1,0,0,1588,1589,7,6,0,0,1589,1590,7,12,0,0,1590,262,1,0,0,0,1591, + 1592,7,2,0,0,1592,1593,7,19,0,0,1593,264,1,0,0,0,1594,1595,7,2,0, + 0,1595,1596,7,0,0,0,1596,266,1,0,0,0,1597,1598,7,2,0,0,1598,1599, + 7,0,0,0,1599,1600,7,19,0,0,1600,1601,7,13,0,0,1601,1602,7,4,0,0, + 1602,1603,7,8,0,0,1603,1604,7,2,0,0,1604,1605,7,19,0,0,1605,1606, + 7,7,0,0,1606,268,1,0,0,0,1607,1608,7,2,0,0,1608,1609,7,8,0,0,1609, + 1610,7,6,0,0,1610,1611,7,12,0,0,1611,1612,7,4,0,0,1612,1613,7,8, + 0,0,1613,1614,7,6,0,0,1614,270,1,0,0,0,1615,1616,7,24,0,0,1616,1617, + 7,19,0,0,1617,1618,7,2,0,0,1618,1619,7,7,0,0,1619,272,1,0,0,0,1620, + 1621,7,24,0,0,1621,1622,7,0,0,0,1622,1623,7,19,0,0,1623,1624,7,7, + 0,0,1624,274,1,0,0,0,1625,1626,7,24,0,0,1626,1627,7,0,0,0,1627,1628, + 7,19,0,0,1628,1629,7,7,0,0,1629,1630,5,95,0,0,1630,1631,7,4,0,0, + 1631,1632,7,12,0,0,1632,1633,7,12,0,0,1633,1634,7,4,0,0,1634,1635, + 7,14,0,0,1635,276,1,0,0,0,1636,1637,7,24,0,0,1637,1638,7,0,0,0,1638, + 1639,7,19,0,0,1639,1640,7,7,0,0,1640,1641,5,95,0,0,1641,1642,7,6, + 0,0,1642,1643,7,22,0,0,1643,1644,7,2,0,0,1644,1645,7,0,0,0,1645, + 1646,7,8,0,0,1646,1647,7,0,0,0,1647,278,1,0,0,0,1648,1649,7,24,0, + 0,1649,1650,7,0,0,0,1650,1651,7,19,0,0,1651,1652,7,7,0,0,1652,1653, + 5,95,0,0,1653,1654,7,19,0,0,1654,1655,7,5,0,0,1655,1656,7,24,0,0, + 1656,1657,7,6,0,0,1657,1658,7,16,0,0,1658,1659,7,8,0,0,1659,280, + 1,0,0,0,1660,1661,7,24,0,0,1661,1662,7,0,0,0,1662,1663,7,19,0,0, + 1663,1664,7,7,0,0,1664,1665,5,95,0,0,1665,1666,7,25,0,0,1666,1667, + 7,17,0,0,1667,1668,7,6,0,0,1668,1669,7,12,0,0,1669,1670,7,14,0,0, + 1670,282,1,0,0,0,1671,1672,7,24,0,0,1672,1673,7,0,0,0,1673,1674, + 7,19,0,0,1674,1675,7,7,0,0,1675,1676,5,95,0,0,1676,1677,7,8,0,0, + 1677,1678,7,4,0,0,1678,1679,7,5,0,0,1679,1680,7,13,0,0,1680,1681, + 7,6,0,0,1681,284,1,0,0,0,1682,1683,7,24,0,0,1683,1684,7,0,0,0,1684, + 1685,7,19,0,0,1685,1686,7,7,0,0,1686,1687,5,95,0,0,1687,1688,7,23, + 0,0,1688,1689,7,4,0,0,1689,1690,7,13,0,0,1690,1691,7,17,0,0,1691, + 1692,7,6,0,0,1692,286,1,0,0,0,1693,1694,7,1,0,0,1694,1695,7,6,0, + 0,1695,1696,7,6,0,0,1696,1697,7,3,0,0,1697,288,1,0,0,0,1698,1699, + 7,1,0,0,1699,1700,7,6,0,0,1700,1701,7,14,0,0,1701,290,1,0,0,0,1702, + 1703,7,1,0,0,1703,1704,7,6,0,0,1704,1705,7,14,0,0,1705,1706,7,0, + 0,0,1706,292,1,0,0,0,1707,1708,7,13,0,0,1708,1709,7,4,0,0,1709,1710, + 7,7,0,0,1710,1711,7,20,0,0,1711,1712,7,17,0,0,1712,1713,7,4,0,0, + 1713,1714,7,20,0,0,1714,1715,7,6,0,0,1715,294,1,0,0,0,1716,1717, + 7,13,0,0,1717,1718,7,4,0,0,1718,1719,7,0,0,0,1719,1720,7,8,0,0,1720, + 296,1,0,0,0,1721,1722,7,13,0,0,1722,1723,7,4,0,0,1723,1724,7,8,0, + 0,1724,1725,7,6,0,0,1725,1726,7,12,0,0,1726,1727,7,4,0,0,1727,1728, + 7,13,0,0,1728,298,1,0,0,0,1729,1730,7,13,0,0,1730,1731,7,6,0,0,1731, + 1732,7,4,0,0,1732,1733,7,9,0,0,1733,1734,7,2,0,0,1734,1735,7,7,0, + 0,1735,1736,7,20,0,0,1736,300,1,0,0,0,1737,1738,7,13,0,0,1738,1739, + 7,6,0,0,1739,1740,7,4,0,0,1740,1741,7,23,0,0,1741,1742,7,6,0,0,1742, + 302,1,0,0,0,1743,1744,7,13,0,0,1744,1745,7,6,0,0,1745,1746,7,11, + 0,0,1746,1747,7,8,0,0,1747,304,1,0,0,0,1748,1749,7,13,0,0,1749,1750, + 7,6,0,0,1750,1751,7,23,0,0,1751,1752,7,6,0,0,1752,1753,7,13,0,0, + 1753,306,1,0,0,0,1754,1755,7,13,0,0,1755,1756,7,2,0,0,1756,1757, + 7,1,0,0,1757,1758,7,6,0,0,1758,308,1,0,0,0,1759,1760,7,13,0,0,1760, + 1761,7,2,0,0,1761,1762,7,10,0,0,1762,1763,7,2,0,0,1763,1764,7,8, + 0,0,1764,310,1,0,0,0,1765,1766,7,13,0,0,1766,1767,7,2,0,0,1767,1768, + 7,0,0,0,1768,1769,7,8,0,0,1769,1770,7,4,0,0,1770,1771,7,20,0,0,1771, + 1772,7,20,0,0,1772,312,1,0,0,0,1773,1774,7,13,0,0,1774,1775,7,19, + 0,0,1775,1776,7,16,0,0,1776,1777,7,4,0,0,1777,1778,7,13,0,0,1778, + 314,1,0,0,0,1779,1780,7,13,0,0,1780,1781,7,19,0,0,1781,1782,7,16, + 0,0,1782,1783,7,4,0,0,1783,1784,7,13,0,0,1784,1785,7,8,0,0,1785, + 1786,7,2,0,0,1786,1787,7,10,0,0,1787,1788,7,6,0,0,1788,316,1,0,0, + 0,1789,1790,7,13,0,0,1790,1791,7,19,0,0,1791,1792,7,16,0,0,1792, + 1793,7,4,0,0,1793,1794,7,13,0,0,1794,1795,7,8,0,0,1795,1796,7,2, + 0,0,1796,1797,7,10,0,0,1797,1798,7,6,0,0,1798,1799,7,0,0,0,1799, + 1800,7,8,0,0,1800,1801,7,4,0,0,1801,1802,7,10,0,0,1802,1803,7,3, + 0,0,1803,318,1,0,0,0,1804,1805,7,13,0,0,1805,1806,7,19,0,0,1806, + 1807,7,20,0,0,1807,1808,7,2,0,0,1808,1809,7,16,0,0,1809,1810,7,4, + 0,0,1810,1811,7,13,0,0,1811,320,1,0,0,0,1812,1813,7,13,0,0,1813, + 1814,7,19,0,0,1814,1815,7,19,0,0,1815,1816,7,3,0,0,1816,322,1,0, + 0,0,1817,1818,7,10,0,0,1818,1819,7,4,0,0,1819,1820,7,3,0,0,1820, + 324,1,0,0,0,1821,1822,7,10,0,0,1822,1823,7,4,0,0,1823,1824,7,8,0, + 0,1824,1825,7,16,0,0,1825,1826,7,18,0,0,1826,326,1,0,0,0,1827,1828, + 7,10,0,0,1828,1829,7,4,0,0,1829,1830,7,8,0,0,1830,1831,7,16,0,0, + 1831,1832,7,18,0,0,1832,1833,7,6,0,0,1833,1834,7,9,0,0,1834,328, + 1,0,0,0,1835,1836,7,10,0,0,1836,1837,7,4,0,0,1837,1838,7,8,0,0,1838, + 1839,7,16,0,0,1839,1840,7,18,0,0,1840,1841,7,6,0,0,1841,1842,7,0, + 0,0,1842,330,1,0,0,0,1843,1844,7,10,0,0,1844,1845,7,4,0,0,1845,1846, + 7,8,0,0,1846,1847,7,16,0,0,1847,1848,7,18,0,0,1848,1849,5,95,0,0, + 1849,1850,7,12,0,0,1850,1851,7,6,0,0,1851,1852,7,16,0,0,1852,1853, + 7,19,0,0,1853,1854,7,20,0,0,1854,1855,7,7,0,0,1855,1856,7,2,0,0, + 1856,1857,7,15,0,0,1857,1858,7,6,0,0,1858,332,1,0,0,0,1859,1860, + 7,10,0,0,1860,1861,7,4,0,0,1861,1862,7,8,0,0,1862,1863,7,6,0,0,1863, + 1864,7,12,0,0,1864,1865,7,2,0,0,1865,1866,7,4,0,0,1866,1867,7,13, + 0,0,1867,1868,7,2,0,0,1868,1869,7,15,0,0,1869,1870,7,6,0,0,1870, + 1871,7,9,0,0,1871,334,1,0,0,0,1872,1873,7,10,0,0,1873,1874,7,6,0, + 0,1874,1875,7,4,0,0,1875,1876,7,0,0,0,1876,1877,7,17,0,0,1877,1878, + 7,12,0,0,1878,1879,7,6,0,0,1879,1880,7,0,0,0,1880,336,1,0,0,0,1881, + 1882,7,10,0,0,1882,1883,7,6,0,0,1883,1884,7,12,0,0,1884,1885,7,20, + 0,0,1885,1886,7,6,0,0,1886,338,1,0,0,0,1887,1888,7,10,0,0,1888,1889, + 7,2,0,0,1889,1890,7,7,0,0,1890,1891,7,17,0,0,1891,1892,7,8,0,0,1892, + 1893,7,6,0,0,1893,340,1,0,0,0,1894,1895,7,10,0,0,1895,1896,7,19, + 0,0,1896,1897,7,7,0,0,1897,1898,7,8,0,0,1898,1899,7,18,0,0,1899, + 342,1,0,0,0,1900,1901,7,7,0,0,1901,1902,7,4,0,0,1902,1903,7,8,0, + 0,1903,1904,7,17,0,0,1904,1905,7,12,0,0,1905,1906,7,4,0,0,1906,1907, + 7,13,0,0,1907,344,1,0,0,0,1908,1909,7,7,0,0,1909,1910,7,6,0,0,1910, + 1911,7,0,0,0,1911,1912,7,8,0,0,1912,1913,7,6,0,0,1913,1914,7,9,0, + 0,1914,346,1,0,0,0,1915,1916,7,7,0,0,1916,1917,7,6,0,0,1917,1918, + 7,22,0,0,1918,1919,7,8,0,0,1919,348,1,0,0,0,1920,1921,7,7,0,0,1921, + 1922,7,11,0,0,1922,1923,7,16,0,0,1923,350,1,0,0,0,1924,1925,7,7, + 0,0,1925,1926,7,11,0,0,1926,1927,7,9,0,0,1927,352,1,0,0,0,1928,1929, + 7,7,0,0,1929,1930,7,11,0,0,1930,1931,7,1,0,0,1931,1932,7,16,0,0, + 1932,354,1,0,0,0,1933,1934,7,7,0,0,1934,1935,7,11,0,0,1935,1936, + 7,1,0,0,1936,1937,7,9,0,0,1937,356,1,0,0,0,1938,1939,7,7,0,0,1939, + 1940,7,19,0,0,1940,358,1,0,0,0,1941,1942,7,7,0,0,1942,1943,7,19, + 0,0,1943,1944,7,7,0,0,1944,1945,7,6,0,0,1945,360,1,0,0,0,1946,1947, + 7,7,0,0,1947,1948,7,19,0,0,1948,1949,7,12,0,0,1949,1950,7,10,0,0, + 1950,1951,7,4,0,0,1951,1952,7,13,0,0,1952,1953,7,2,0,0,1953,1954, + 7,15,0,0,1954,1955,7,6,0,0,1955,362,1,0,0,0,1956,1957,7,7,0,0,1957, + 1958,7,19,0,0,1958,1959,7,8,0,0,1959,364,1,0,0,0,1960,1961,7,7,0, + 0,1961,1962,7,17,0,0,1962,1963,7,13,0,0,1963,1964,7,13,0,0,1964, + 366,1,0,0,0,1965,1966,7,7,0,0,1966,1967,7,17,0,0,1967,1968,7,13, + 0,0,1968,1969,7,13,0,0,1969,1970,7,2,0,0,1970,1971,7,11,0,0,1971, + 368,1,0,0,0,1972,1973,7,7,0,0,1973,1974,7,17,0,0,1974,1975,7,13, + 0,0,1975,1976,7,13,0,0,1976,1977,7,0,0,0,1977,370,1,0,0,0,1978,1979, + 7,19,0,0,1979,1980,7,5,0,0,1980,1981,7,24,0,0,1981,1982,7,6,0,0, + 1982,1983,7,16,0,0,1983,1984,7,8,0,0,1984,372,1,0,0,0,1985,1986, + 7,19,0,0,1986,1987,7,11,0,0,1987,374,1,0,0,0,1988,1989,7,19,0,0, + 1989,1990,7,11,0,0,1990,1991,7,11,0,0,1991,1992,7,0,0,0,1992,1993, + 7,6,0,0,1993,1994,7,8,0,0,1994,376,1,0,0,0,1995,1996,7,19,0,0,1996, + 1997,7,10,0,0,1997,1998,7,2,0,0,1998,1999,7,8,0,0,1999,378,1,0,0, + 0,2000,2001,7,19,0,0,2001,2002,7,7,0,0,2002,380,1,0,0,0,2003,2004, + 7,19,0,0,2004,2005,7,7,0,0,2005,2006,7,6,0,0,2006,382,1,0,0,0,2007, + 2008,7,19,0,0,2008,2009,7,7,0,0,2009,2010,7,13,0,0,2010,2011,7,14, + 0,0,2011,384,1,0,0,0,2012,2013,7,19,0,0,2013,2014,7,3,0,0,2014,2015, + 7,8,0,0,2015,2016,7,2,0,0,2016,2017,7,19,0,0,2017,2018,7,7,0,0,2018, + 386,1,0,0,0,2019,2020,7,19,0,0,2020,2021,7,12,0,0,2021,388,1,0,0, + 0,2022,2023,7,19,0,0,2023,2024,7,12,0,0,2024,2025,7,9,0,0,2025,2026, + 7,6,0,0,2026,2027,7,12,0,0,2027,390,1,0,0,0,2028,2029,7,19,0,0,2029, + 2030,7,12,0,0,2030,2031,7,9,0,0,2031,2032,7,2,0,0,2032,2033,7,7, + 0,0,2033,2034,7,4,0,0,2034,2035,7,13,0,0,2035,2036,7,2,0,0,2036, + 2037,7,8,0,0,2037,2038,7,14,0,0,2038,392,1,0,0,0,2039,2040,7,19, + 0,0,2040,2041,7,17,0,0,2041,2042,7,8,0,0,2042,2043,7,6,0,0,2043, + 2044,7,12,0,0,2044,394,1,0,0,0,2045,2046,7,19,0,0,2046,2047,7,17, + 0,0,2047,2048,7,8,0,0,2048,2049,7,3,0,0,2049,2050,7,17,0,0,2050, + 2051,7,8,0,0,2051,396,1,0,0,0,2052,2053,7,19,0,0,2053,2054,7,23, + 0,0,2054,2055,7,6,0,0,2055,2056,7,12,0,0,2056,398,1,0,0,0,2057,2058, + 7,19,0,0,2058,2059,7,23,0,0,2059,2060,7,6,0,0,2060,2061,7,12,0,0, + 2061,2062,7,11,0,0,2062,2063,7,13,0,0,2063,2064,7,19,0,0,2064,2065, + 7,21,0,0,2065,400,1,0,0,0,2066,2067,7,3,0,0,2067,2068,7,4,0,0,2068, + 2069,7,12,0,0,2069,2070,7,8,0,0,2070,2071,7,2,0,0,2071,2072,7,8, + 0,0,2072,2073,7,2,0,0,2073,2074,7,19,0,0,2074,2075,7,7,0,0,2075, + 402,1,0,0,0,2076,2077,7,3,0,0,2077,2078,7,4,0,0,2078,2079,7,12,0, + 0,2079,2080,7,8,0,0,2080,2081,7,2,0,0,2081,2082,7,8,0,0,2082,2083, + 7,2,0,0,2083,2084,7,19,0,0,2084,2085,7,7,0,0,2085,2086,7,0,0,0,2086, + 404,1,0,0,0,2087,2088,7,3,0,0,2088,2089,7,4,0,0,2089,2090,7,0,0, + 0,2090,2091,7,0,0,0,2091,2092,7,2,0,0,2092,2093,7,7,0,0,2093,2094, + 7,20,0,0,2094,406,1,0,0,0,2095,2096,7,3,0,0,2096,2097,7,4,0,0,2097, + 2098,7,0,0,0,2098,2099,7,8,0,0,2099,408,1,0,0,0,2100,2101,7,3,0, + 0,2101,2102,7,4,0,0,2102,2103,7,8,0,0,2103,2104,7,18,0,0,2104,410, + 1,0,0,0,2105,2106,7,3,0,0,2106,2107,7,4,0,0,2107,2108,7,8,0,0,2108, + 2109,7,8,0,0,2109,2110,7,6,0,0,2110,2111,7,12,0,0,2111,2112,7,7, + 0,0,2112,412,1,0,0,0,2113,2114,7,3,0,0,2114,2115,7,6,0,0,2115,2116, + 7,12,0,0,2116,414,1,0,0,0,2117,2118,7,3,0,0,2118,2119,7,6,0,0,2119, + 2120,7,12,0,0,2120,2121,7,2,0,0,2121,2122,7,19,0,0,2122,2123,7,9, + 0,0,2123,416,1,0,0,0,2124,2125,7,3,0,0,2125,2126,7,6,0,0,2126,2127, + 7,12,0,0,2127,2128,7,10,0,0,2128,2129,7,17,0,0,2129,2130,7,8,0,0, + 2130,2131,7,6,0,0,2131,418,1,0,0,0,2132,2133,7,3,0,0,2133,2134,7, + 13,0,0,2134,2135,7,4,0,0,2135,2136,7,7,0,0,2136,420,1,0,0,0,2137, + 2138,7,3,0,0,2138,2139,7,19,0,0,2139,2140,7,0,0,0,2140,2141,7,2, + 0,0,2141,2142,7,8,0,0,2142,2143,7,2,0,0,2143,2144,7,19,0,0,2144, + 2145,7,7,0,0,2145,422,1,0,0,0,2146,2147,7,3,0,0,2147,2148,7,12,0, + 0,2148,2149,7,6,0,0,2149,2150,7,16,0,0,2150,2151,7,6,0,0,2151,2152, + 7,9,0,0,2152,2153,7,2,0,0,2153,2154,7,7,0,0,2154,2155,7,20,0,0,2155, + 424,1,0,0,0,2156,2157,7,3,0,0,2157,2158,7,12,0,0,2158,2159,7,6,0, + 0,2159,2160,7,16,0,0,2160,2161,7,2,0,0,2161,2162,7,0,0,0,2162,2163, + 7,2,0,0,2163,2164,7,19,0,0,2164,2165,7,7,0,0,2165,426,1,0,0,0,2166, + 2167,7,3,0,0,2167,2168,7,12,0,0,2168,2169,7,6,0,0,2169,2170,7,3, + 0,0,2170,2171,7,4,0,0,2171,2172,7,12,0,0,2172,2173,7,6,0,0,2173, + 428,1,0,0,0,2174,2175,7,3,0,0,2175,2176,7,12,0,0,2176,2177,7,2,0, + 0,2177,2178,7,23,0,0,2178,2179,7,2,0,0,2179,2180,7,13,0,0,2180,2181, + 7,6,0,0,2181,2182,7,20,0,0,2182,2183,7,6,0,0,2183,2184,7,0,0,0,2184, + 430,1,0,0,0,2185,2186,7,3,0,0,2186,2187,7,12,0,0,2187,2188,7,19, + 0,0,2188,2189,7,3,0,0,2189,2190,7,6,0,0,2190,2191,7,12,0,0,2191, + 2192,7,8,0,0,2192,2193,7,2,0,0,2193,2194,7,6,0,0,2194,2195,7,0,0, + 0,2195,432,1,0,0,0,2196,2197,7,3,0,0,2197,2198,7,12,0,0,2198,2199, + 7,17,0,0,2199,2200,7,7,0,0,2200,2201,7,6,0,0,2201,434,1,0,0,0,2202, + 2203,7,25,0,0,2203,2204,7,17,0,0,2204,2205,7,19,0,0,2205,2206,7, + 8,0,0,2206,2207,7,6,0,0,2207,2208,7,0,0,0,2208,436,1,0,0,0,2209, + 2210,7,12,0,0,2210,2211,7,4,0,0,2211,2212,7,7,0,0,2212,2213,7,20, + 0,0,2213,2214,7,6,0,0,2214,438,1,0,0,0,2215,2216,7,12,0,0,2216,2217, + 7,6,0,0,2217,2218,7,4,0,0,2218,2219,7,9,0,0,2219,440,1,0,0,0,2220, + 2221,7,12,0,0,2221,2222,7,6,0,0,2222,2223,7,16,0,0,2223,2224,7,17, + 0,0,2224,2225,7,12,0,0,2225,2226,7,0,0,0,2226,2227,7,2,0,0,2227, + 2228,7,23,0,0,2228,2229,7,6,0,0,2229,442,1,0,0,0,2230,2231,7,12, + 0,0,2231,2232,7,6,0,0,2232,2233,7,11,0,0,2233,2234,7,12,0,0,2234, + 2235,7,6,0,0,2235,2236,7,0,0,0,2236,2237,7,18,0,0,2237,444,1,0,0, + 0,2238,2239,7,12,0,0,2239,2240,7,6,0,0,2240,2241,7,7,0,0,2241,2242, + 7,4,0,0,2242,2243,7,10,0,0,2243,2244,7,6,0,0,2244,446,1,0,0,0,2245, + 2246,7,12,0,0,2246,2247,7,6,0,0,2247,2248,7,3,0,0,2248,2249,7,6, + 0,0,2249,2250,7,4,0,0,2250,2251,7,8,0,0,2251,448,1,0,0,0,2252,2253, + 7,12,0,0,2253,2254,7,6,0,0,2254,2255,7,3,0,0,2255,2256,7,6,0,0,2256, + 2257,7,4,0,0,2257,2258,7,8,0,0,2258,2259,7,4,0,0,2259,2260,7,5,0, + 0,2260,2261,7,13,0,0,2261,2262,7,6,0,0,2262,450,1,0,0,0,2263,2264, + 7,12,0,0,2264,2265,7,6,0,0,2265,2266,7,3,0,0,2266,2267,7,13,0,0, + 2267,2268,7,4,0,0,2268,2269,7,16,0,0,2269,2270,7,6,0,0,2270,452, + 1,0,0,0,2271,2272,7,12,0,0,2272,2273,7,6,0,0,2273,2274,7,0,0,0,2274, + 2275,7,6,0,0,2275,2276,7,8,0,0,2276,454,1,0,0,0,2277,2278,7,12,0, + 0,2278,2279,7,6,0,0,2279,2280,7,0,0,0,2280,2281,7,3,0,0,2281,2282, + 7,6,0,0,2282,2283,7,16,0,0,2283,2284,7,8,0,0,2284,456,1,0,0,0,2285, + 2286,7,12,0,0,2286,2287,7,6,0,0,2287,2288,7,0,0,0,2288,2289,7,8, + 0,0,2289,2290,7,12,0,0,2290,2291,7,2,0,0,2291,2292,7,16,0,0,2292, + 2293,7,8,0,0,2293,458,1,0,0,0,2294,2295,7,12,0,0,2295,2296,7,6,0, + 0,2296,2297,7,8,0,0,2297,2298,7,17,0,0,2298,2299,7,12,0,0,2299,2300, + 7,7,0,0,2300,460,1,0,0,0,2301,2302,7,12,0,0,2302,2303,7,6,0,0,2303, + 2304,7,8,0,0,2304,2305,7,17,0,0,2305,2306,7,12,0,0,2306,2307,7,7, + 0,0,2307,2308,7,2,0,0,2308,2309,7,7,0,0,2309,2310,7,20,0,0,2310, + 462,1,0,0,0,2311,2312,7,12,0,0,2312,2313,7,6,0,0,2313,2314,7,8,0, + 0,2314,2315,7,17,0,0,2315,2316,7,12,0,0,2316,2317,7,7,0,0,2317,2318, + 7,0,0,0,2318,464,1,0,0,0,2319,2320,7,12,0,0,2320,2321,7,6,0,0,2321, + 2322,7,23,0,0,2322,2323,7,19,0,0,2323,2324,7,1,0,0,2324,2325,7,6, + 0,0,2325,466,1,0,0,0,2326,2327,7,12,0,0,2327,2328,7,2,0,0,2328,2329, + 7,20,0,0,2329,2330,7,18,0,0,2330,2331,7,8,0,0,2331,468,1,0,0,0,2332, + 2333,7,12,0,0,2333,2334,7,19,0,0,2334,2335,7,13,0,0,2335,2336,7, + 6,0,0,2336,470,1,0,0,0,2337,2338,7,12,0,0,2338,2339,7,19,0,0,2339, + 2340,7,13,0,0,2340,2341,7,6,0,0,2341,2342,7,0,0,0,2342,472,1,0,0, + 0,2343,2344,7,12,0,0,2344,2345,7,19,0,0,2345,2346,7,13,0,0,2346, + 2347,7,13,0,0,2347,2348,7,5,0,0,2348,2349,7,4,0,0,2349,2350,7,16, + 0,0,2350,2351,7,1,0,0,2351,474,1,0,0,0,2352,2353,7,12,0,0,2353,2354, + 7,19,0,0,2354,2355,7,13,0,0,2355,2356,7,13,0,0,2356,2357,7,17,0, + 0,2357,2358,7,3,0,0,2358,476,1,0,0,0,2359,2360,7,12,0,0,2360,2361, + 7,19,0,0,2361,2362,7,21,0,0,2362,478,1,0,0,0,2363,2364,7,12,0,0, + 2364,2365,7,19,0,0,2365,2366,7,21,0,0,2366,2367,7,0,0,0,2367,480, + 1,0,0,0,2368,2369,7,12,0,0,2369,2370,7,17,0,0,2370,2371,7,7,0,0, + 2371,2372,7,7,0,0,2372,2373,7,2,0,0,2373,2374,7,7,0,0,2374,2375, + 7,20,0,0,2375,482,1,0,0,0,2376,2377,7,0,0,0,2377,2378,7,16,0,0,2378, + 2379,7,4,0,0,2379,2380,7,13,0,0,2380,2381,7,4,0,0,2381,2382,7,12, + 0,0,2382,484,1,0,0,0,2383,2384,7,0,0,0,2384,2385,7,16,0,0,2385,2386, + 7,18,0,0,2386,2387,7,6,0,0,2387,2388,7,10,0,0,2388,2389,7,4,0,0, + 2389,486,1,0,0,0,2390,2391,7,0,0,0,2391,2392,7,16,0,0,2392,2393, + 7,18,0,0,2393,2394,7,6,0,0,2394,2395,7,10,0,0,2395,2396,7,4,0,0, + 2396,2397,7,0,0,0,2397,488,1,0,0,0,2398,2399,7,0,0,0,2399,2400,7, + 6,0,0,2400,2401,7,16,0,0,2401,2402,7,19,0,0,2402,2403,7,7,0,0,2403, + 2404,7,9,0,0,2404,490,1,0,0,0,2405,2406,7,0,0,0,2406,2407,7,6,0, + 0,2407,2408,7,16,0,0,2408,2409,7,17,0,0,2409,2410,7,12,0,0,2410, + 2411,7,2,0,0,2411,2412,7,8,0,0,2412,2413,7,14,0,0,2413,492,1,0,0, + 0,2414,2415,7,0,0,0,2415,2416,7,6,0,0,2416,2417,7,6,0,0,2417,2418, + 7,1,0,0,2418,494,1,0,0,0,2419,2420,7,0,0,0,2420,2421,7,6,0,0,2421, + 2422,7,13,0,0,2422,2423,7,6,0,0,2423,2424,7,16,0,0,2424,2425,7,8, + 0,0,2425,496,1,0,0,0,2426,2427,7,0,0,0,2427,2428,7,6,0,0,2428,2429, + 7,12,0,0,2429,2430,7,2,0,0,2430,2431,7,4,0,0,2431,2432,7,13,0,0, + 2432,2433,7,2,0,0,2433,2434,7,15,0,0,2434,2435,7,4,0,0,2435,2436, + 7,5,0,0,2436,2437,7,13,0,0,2437,2438,7,6,0,0,2438,498,1,0,0,0,2439, + 2440,7,0,0,0,2440,2441,7,6,0,0,2441,2442,7,0,0,0,2442,2443,7,0,0, + 0,2443,2444,7,2,0,0,2444,2445,7,19,0,0,2445,2446,7,7,0,0,2446,500, + 1,0,0,0,2447,2448,7,0,0,0,2448,2449,7,6,0,0,2449,2450,7,8,0,0,2450, + 502,1,0,0,0,2451,2452,7,0,0,0,2452,2453,7,6,0,0,2453,2454,7,8,0, + 0,2454,2455,7,0,0,0,2455,504,1,0,0,0,2456,2457,7,0,0,0,2457,2458, + 7,18,0,0,2458,2459,7,19,0,0,2459,2460,7,21,0,0,2460,506,1,0,0,0, + 2461,2462,7,0,0,0,2462,2463,7,19,0,0,2463,2464,7,10,0,0,2464,2465, + 7,6,0,0,2465,508,1,0,0,0,2466,2467,7,0,0,0,2467,2468,7,8,0,0,2468, + 2469,7,4,0,0,2469,2470,7,12,0,0,2470,2471,7,8,0,0,2471,510,1,0,0, + 0,2472,2473,7,0,0,0,2473,2474,7,8,0,0,2474,2475,7,4,0,0,2475,2476, + 7,8,0,0,2476,2477,7,0,0,0,2477,512,1,0,0,0,2478,2479,7,0,0,0,2479, + 2480,7,17,0,0,2480,2481,7,5,0,0,2481,2482,7,0,0,0,2482,2483,7,6, + 0,0,2483,2484,7,8,0,0,2484,514,1,0,0,0,2485,2486,7,0,0,0,2486,2487, + 7,17,0,0,2487,2488,7,5,0,0,2488,2489,7,0,0,0,2489,2490,7,8,0,0,2490, + 2491,7,12,0,0,2491,2492,7,2,0,0,2492,2493,7,7,0,0,2493,2494,7,20, + 0,0,2494,516,1,0,0,0,2495,2496,7,0,0,0,2496,2497,7,14,0,0,2497,2498, + 7,0,0,0,2498,2499,7,8,0,0,2499,2500,7,6,0,0,2500,2501,7,10,0,0,2501, + 518,1,0,0,0,2502,2503,7,8,0,0,2503,2504,7,4,0,0,2504,2505,7,5,0, + 0,2505,2506,7,13,0,0,2506,2507,7,6,0,0,2507,520,1,0,0,0,2508,2509, + 7,8,0,0,2509,2510,7,4,0,0,2510,2511,7,5,0,0,2511,2512,7,13,0,0,2512, + 2513,7,6,0,0,2513,2514,7,0,0,0,2514,522,1,0,0,0,2515,2516,7,8,0, + 0,2516,2517,7,4,0,0,2517,2518,7,5,0,0,2518,2519,7,13,0,0,2519,2520, + 7,6,0,0,2520,2521,7,0,0,0,2521,2522,7,4,0,0,2522,2523,7,10,0,0,2523, + 2524,7,3,0,0,2524,2525,7,13,0,0,2525,2526,7,6,0,0,2526,524,1,0,0, + 0,2527,2528,7,8,0,0,2528,2529,7,6,0,0,2529,2530,7,22,0,0,2530,2531, + 7,8,0,0,2531,526,1,0,0,0,2532,2533,7,0,0,0,2533,2534,7,8,0,0,2534, + 2535,7,12,0,0,2535,2536,7,2,0,0,2536,2537,7,7,0,0,2537,2538,7,20, + 0,0,2538,528,1,0,0,0,2539,2540,7,8,0,0,2540,2541,7,18,0,0,2541,2542, + 7,6,0,0,2542,2543,7,7,0,0,2543,530,1,0,0,0,2544,2545,7,8,0,0,2545, + 2546,7,2,0,0,2546,2547,7,6,0,0,2547,2548,7,0,0,0,2548,532,1,0,0, + 0,2549,2550,7,8,0,0,2550,2551,7,2,0,0,2551,2552,7,10,0,0,2552,2553, + 7,6,0,0,2553,534,1,0,0,0,2554,2555,7,8,0,0,2555,2556,7,2,0,0,2556, + 2557,7,10,0,0,2557,2558,7,6,0,0,2558,2559,7,0,0,0,2559,2560,7,8, + 0,0,2560,2561,7,4,0,0,2561,2562,7,10,0,0,2562,2563,7,3,0,0,2563, + 536,1,0,0,0,2564,2565,7,8,0,0,2565,2566,7,19,0,0,2566,538,1,0,0, + 0,2567,2568,7,8,0,0,2568,2569,7,12,0,0,2569,2570,7,4,0,0,2570,2571, + 7,2,0,0,2571,2572,7,13,0,0,2572,2573,7,2,0,0,2573,2574,7,7,0,0,2574, + 2575,7,20,0,0,2575,540,1,0,0,0,2576,2577,7,8,0,0,2577,2578,7,12, + 0,0,2578,2579,7,4,0,0,2579,2580,7,7,0,0,2580,2581,7,0,0,0,2581,2582, + 7,4,0,0,2582,2583,7,16,0,0,2583,2584,7,8,0,0,2584,2585,7,2,0,0,2585, + 2586,7,19,0,0,2586,2587,7,7,0,0,2587,542,1,0,0,0,2588,2589,7,8,0, + 0,2589,2590,7,12,0,0,2590,2591,7,2,0,0,2591,2592,7,10,0,0,2592,544, + 1,0,0,0,2593,2594,7,8,0,0,2594,2595,7,12,0,0,2595,2596,7,17,0,0, + 2596,2597,7,6,0,0,2597,546,1,0,0,0,2598,2599,7,8,0,0,2599,2600,7, + 12,0,0,2600,2601,7,17,0,0,2601,2602,7,7,0,0,2602,2603,7,16,0,0,2603, + 2604,7,4,0,0,2604,2605,7,8,0,0,2605,2606,7,6,0,0,2606,548,1,0,0, + 0,2607,2608,7,8,0,0,2608,2609,7,12,0,0,2609,2610,7,14,0,0,2610,2611, + 5,95,0,0,2611,2612,7,16,0,0,2612,2613,7,4,0,0,2613,2614,7,0,0,0, + 2614,2615,7,8,0,0,2615,550,1,0,0,0,2616,2617,7,8,0,0,2617,2618,7, + 14,0,0,2618,2619,7,3,0,0,2619,2620,7,6,0,0,2620,552,1,0,0,0,2621, + 2622,7,17,0,0,2622,2623,7,6,0,0,2623,2624,7,0,0,0,2624,2625,7,16, + 0,0,2625,2626,7,4,0,0,2626,2627,7,3,0,0,2627,2628,7,6,0,0,2628,554, + 1,0,0,0,2629,2630,7,17,0,0,2630,2631,7,7,0,0,2631,2632,7,5,0,0,2632, + 2633,7,19,0,0,2633,2634,7,17,0,0,2634,2635,7,7,0,0,2635,2636,7,9, + 0,0,2636,2637,7,6,0,0,2637,2638,7,9,0,0,2638,556,1,0,0,0,2639,2640, + 7,17,0,0,2640,2641,7,7,0,0,2641,2642,7,16,0,0,2642,2643,7,19,0,0, + 2643,2644,7,10,0,0,2644,2645,7,10,0,0,2645,2646,7,2,0,0,2646,2647, + 7,8,0,0,2647,2648,7,8,0,0,2648,2649,7,6,0,0,2649,2650,7,9,0,0,2650, + 558,1,0,0,0,2651,2652,7,17,0,0,2652,2653,7,7,0,0,2653,2654,7,16, + 0,0,2654,2655,7,19,0,0,2655,2656,7,7,0,0,2656,2657,7,9,0,0,2657, + 2658,7,2,0,0,2658,2659,7,8,0,0,2659,2660,7,2,0,0,2660,2661,7,19, + 0,0,2661,2662,7,7,0,0,2662,2663,7,4,0,0,2663,2664,7,13,0,0,2664, + 560,1,0,0,0,2665,2666,7,17,0,0,2666,2667,7,7,0,0,2667,2668,7,2,0, + 0,2668,2669,7,19,0,0,2669,2670,7,7,0,0,2670,562,1,0,0,0,2671,2672, + 7,17,0,0,2672,2673,7,7,0,0,2673,2674,7,2,0,0,2674,2675,7,25,0,0, + 2675,2676,7,17,0,0,2676,2677,7,6,0,0,2677,564,1,0,0,0,2678,2679, + 7,17,0,0,2679,2680,7,7,0,0,2680,2681,7,1,0,0,2681,2682,7,7,0,0,2682, + 2683,7,19,0,0,2683,2684,7,21,0,0,2684,2685,7,7,0,0,2685,566,1,0, + 0,0,2686,2687,7,17,0,0,2687,2688,7,7,0,0,2688,2689,7,10,0,0,2689, + 2690,7,4,0,0,2690,2691,7,8,0,0,2691,2692,7,16,0,0,2692,2693,7,18, + 0,0,2693,2694,7,6,0,0,2694,2695,7,9,0,0,2695,568,1,0,0,0,2696,2697, + 7,17,0,0,2697,2698,7,7,0,0,2698,2699,7,7,0,0,2699,2700,7,6,0,0,2700, + 2701,7,0,0,0,2701,2702,7,8,0,0,2702,570,1,0,0,0,2703,2704,7,17,0, + 0,2704,2705,7,7,0,0,2705,2706,7,8,0,0,2706,2707,7,2,0,0,2707,2708, + 7,13,0,0,2708,572,1,0,0,0,2709,2710,7,17,0,0,2710,2711,7,3,0,0,2711, + 2712,7,9,0,0,2712,2713,7,4,0,0,2713,2714,7,8,0,0,2714,2715,7,6,0, + 0,2715,574,1,0,0,0,2716,2717,7,17,0,0,2717,2718,7,0,0,0,2718,2719, + 7,6,0,0,2719,576,1,0,0,0,2720,2721,7,17,0,0,2721,2722,7,0,0,0,2722, + 2723,7,6,0,0,2723,2724,7,12,0,0,2724,578,1,0,0,0,2725,2726,7,17, + 0,0,2726,2727,7,0,0,0,2727,2728,7,2,0,0,2728,2729,7,7,0,0,2729,2730, + 7,20,0,0,2730,580,1,0,0,0,2731,2732,7,17,0,0,2732,2733,7,8,0,0,2733, + 2734,7,11,0,0,2734,2735,5,49,0,0,2735,2736,5,54,0,0,2736,582,1,0, + 0,0,2737,2738,7,17,0,0,2738,2739,7,8,0,0,2739,2740,7,11,0,0,2740, + 2741,5,51,0,0,2741,2742,5,50,0,0,2742,584,1,0,0,0,2743,2744,7,17, + 0,0,2744,2745,7,8,0,0,2745,2746,7,11,0,0,2746,2747,5,56,0,0,2747, + 586,1,0,0,0,2748,2749,7,23,0,0,2749,2750,7,4,0,0,2750,2751,7,13, + 0,0,2751,2752,7,2,0,0,2752,2753,7,9,0,0,2753,2754,7,4,0,0,2754,2755, + 7,8,0,0,2755,2756,7,6,0,0,2756,588,1,0,0,0,2757,2758,7,23,0,0,2758, + 2759,7,4,0,0,2759,2760,7,13,0,0,2760,2761,7,17,0,0,2761,2762,7,6, + 0,0,2762,590,1,0,0,0,2763,2764,7,23,0,0,2764,2765,7,4,0,0,2765,2766, + 7,13,0,0,2766,2767,7,17,0,0,2767,2768,7,6,0,0,2768,2769,7,0,0,0, + 2769,592,1,0,0,0,2770,2771,7,23,0,0,2771,2772,7,6,0,0,2772,2773, + 7,12,0,0,2773,2774,7,5,0,0,2774,2775,7,19,0,0,2775,2776,7,0,0,0, + 2776,2777,7,6,0,0,2777,594,1,0,0,0,2778,2779,7,23,0,0,2779,2780, + 7,6,0,0,2780,2781,7,12,0,0,2781,2782,7,0,0,0,2782,2783,7,2,0,0,2783, + 2784,7,19,0,0,2784,2785,7,7,0,0,2785,596,1,0,0,0,2786,2787,7,23, + 0,0,2787,2788,7,2,0,0,2788,2789,7,6,0,0,2789,2790,7,21,0,0,2790, + 598,1,0,0,0,2791,2792,7,21,0,0,2792,2793,7,18,0,0,2793,2794,7,6, + 0,0,2794,2795,7,7,0,0,2795,600,1,0,0,0,2796,2797,7,21,0,0,2797,2798, + 7,18,0,0,2798,2799,7,6,0,0,2799,2800,7,12,0,0,2800,2801,7,6,0,0, + 2801,602,1,0,0,0,2802,2803,7,21,0,0,2803,2804,7,18,0,0,2804,2805, + 7,2,0,0,2805,2806,7,13,0,0,2806,2807,7,6,0,0,2807,604,1,0,0,0,2808, + 2809,7,21,0,0,2809,2810,7,2,0,0,2810,2811,7,7,0,0,2811,2812,7,9, + 0,0,2812,2813,7,19,0,0,2813,2814,7,21,0,0,2814,606,1,0,0,0,2815, + 2816,7,21,0,0,2816,2817,7,2,0,0,2817,2818,7,8,0,0,2818,2819,7,18, + 0,0,2819,608,1,0,0,0,2820,2821,7,21,0,0,2821,2822,7,2,0,0,2822,2823, + 7,8,0,0,2823,2824,7,18,0,0,2824,2825,7,2,0,0,2825,2826,7,7,0,0,2826, + 610,1,0,0,0,2827,2828,7,21,0,0,2828,2829,7,2,0,0,2829,2830,7,8,0, + 0,2830,2831,7,18,0,0,2831,2832,7,19,0,0,2832,2833,7,17,0,0,2833, + 2834,7,8,0,0,2834,612,1,0,0,0,2835,2836,7,21,0,0,2836,2837,7,19, + 0,0,2837,2838,7,12,0,0,2838,2839,7,1,0,0,2839,614,1,0,0,0,2840,2841, + 7,21,0,0,2841,2842,7,12,0,0,2842,2843,7,4,0,0,2843,2844,7,3,0,0, + 2844,2845,7,3,0,0,2845,2846,7,6,0,0,2846,2847,7,12,0,0,2847,616, + 1,0,0,0,2848,2849,7,21,0,0,2849,2850,7,12,0,0,2850,2851,7,2,0,0, + 2851,2852,7,8,0,0,2852,2853,7,6,0,0,2853,618,1,0,0,0,2854,2855,7, + 14,0,0,2855,2856,7,6,0,0,2856,2857,7,4,0,0,2857,2858,7,12,0,0,2858, + 620,1,0,0,0,2859,2860,7,15,0,0,2860,2861,7,19,0,0,2861,2862,7,7, + 0,0,2862,2863,7,6,0,0,2863,622,1,0,0,0,2864,2865,5,61,0,0,2865,624, + 1,0,0,0,2866,2867,5,60,0,0,2867,2871,5,62,0,0,2868,2869,5,33,0,0, + 2869,2871,5,61,0,0,2870,2866,1,0,0,0,2870,2868,1,0,0,0,2871,626, + 1,0,0,0,2872,2873,5,60,0,0,2873,628,1,0,0,0,2874,2875,5,60,0,0,2875, + 2876,5,61,0,0,2876,630,1,0,0,0,2877,2878,5,62,0,0,2878,632,1,0,0, + 0,2879,2880,5,62,0,0,2880,2881,5,61,0,0,2881,634,1,0,0,0,2882,2883, + 5,43,0,0,2883,636,1,0,0,0,2884,2885,5,45,0,0,2885,638,1,0,0,0,2886, + 2887,5,42,0,0,2887,640,1,0,0,0,2888,2889,5,47,0,0,2889,642,1,0,0, + 0,2890,2891,5,37,0,0,2891,644,1,0,0,0,2892,2893,5,124,0,0,2893,2894, + 5,124,0,0,2894,646,1,0,0,0,2895,2896,5,63,0,0,2896,648,1,0,0,0,2897, + 2898,5,59,0,0,2898,650,1,0,0,0,2899,2905,5,39,0,0,2900,2904,8,26, + 0,0,2901,2902,5,39,0,0,2902,2904,5,39,0,0,2903,2900,1,0,0,0,2903, + 2901,1,0,0,0,2904,2907,1,0,0,0,2905,2903,1,0,0,0,2905,2906,1,0,0, + 0,2906,2908,1,0,0,0,2907,2905,1,0,0,0,2908,2909,5,39,0,0,2909,652, + 1,0,0,0,2910,2911,7,17,0,0,2911,2912,5,38,0,0,2912,2913,5,39,0,0, + 2913,2919,1,0,0,0,2914,2918,8,26,0,0,2915,2916,5,39,0,0,2916,2918, + 5,39,0,0,2917,2914,1,0,0,0,2917,2915,1,0,0,0,2918,2921,1,0,0,0,2919, + 2917,1,0,0,0,2919,2920,1,0,0,0,2920,2922,1,0,0,0,2921,2919,1,0,0, + 0,2922,2923,5,39,0,0,2923,654,1,0,0,0,2924,2925,7,22,0,0,2925,2926, + 5,39,0,0,2926,2930,1,0,0,0,2927,2929,8,26,0,0,2928,2927,1,0,0,0, + 2929,2932,1,0,0,0,2930,2928,1,0,0,0,2930,2931,1,0,0,0,2931,2933, + 1,0,0,0,2932,2930,1,0,0,0,2933,2934,5,39,0,0,2934,656,1,0,0,0,2935, + 2940,3,671,335,0,2936,2940,3,673,336,0,2937,2940,3,675,337,0,2938, + 2940,3,677,338,0,2939,2935,1,0,0,0,2939,2936,1,0,0,0,2939,2937,1, + 0,0,0,2939,2938,1,0,0,0,2940,658,1,0,0,0,2941,2942,3,671,335,0,2942, + 2944,5,46,0,0,2943,2945,3,671,335,0,2944,2943,1,0,0,0,2944,2945, + 1,0,0,0,2945,2949,1,0,0,0,2946,2947,5,46,0,0,2947,2949,3,671,335, + 0,2948,2941,1,0,0,0,2948,2946,1,0,0,0,2949,660,1,0,0,0,2950,2952, + 3,681,340,0,2951,2950,1,0,0,0,2952,2953,1,0,0,0,2953,2951,1,0,0, + 0,2953,2954,1,0,0,0,2954,2962,1,0,0,0,2955,2959,5,46,0,0,2956,2958, + 3,681,340,0,2957,2956,1,0,0,0,2958,2961,1,0,0,0,2959,2957,1,0,0, + 0,2959,2960,1,0,0,0,2960,2963,1,0,0,0,2961,2959,1,0,0,0,2962,2955, + 1,0,0,0,2962,2963,1,0,0,0,2963,2964,1,0,0,0,2964,2965,3,679,339, + 0,2965,2975,1,0,0,0,2966,2968,5,46,0,0,2967,2969,3,681,340,0,2968, + 2967,1,0,0,0,2969,2970,1,0,0,0,2970,2968,1,0,0,0,2970,2971,1,0,0, + 0,2971,2972,1,0,0,0,2972,2973,3,679,339,0,2973,2975,1,0,0,0,2974, + 2951,1,0,0,0,2974,2966,1,0,0,0,2975,662,1,0,0,0,2976,2979,3,683, + 341,0,2977,2979,5,95,0,0,2978,2976,1,0,0,0,2978,2977,1,0,0,0,2979, + 2985,1,0,0,0,2980,2984,3,683,341,0,2981,2984,3,681,340,0,2982,2984, + 5,95,0,0,2983,2980,1,0,0,0,2983,2981,1,0,0,0,2983,2982,1,0,0,0,2984, + 2987,1,0,0,0,2985,2983,1,0,0,0,2985,2986,1,0,0,0,2986,664,1,0,0, + 0,2987,2985,1,0,0,0,2988,2992,3,681,340,0,2989,2993,3,683,341,0, + 2990,2993,3,681,340,0,2991,2993,5,95,0,0,2992,2989,1,0,0,0,2992, + 2990,1,0,0,0,2992,2991,1,0,0,0,2993,2994,1,0,0,0,2994,2992,1,0,0, + 0,2994,2995,1,0,0,0,2995,666,1,0,0,0,2996,3002,5,34,0,0,2997,3001, + 8,27,0,0,2998,2999,5,34,0,0,2999,3001,5,34,0,0,3000,2997,1,0,0,0, + 3000,2998,1,0,0,0,3001,3004,1,0,0,0,3002,3000,1,0,0,0,3002,3003, + 1,0,0,0,3003,3005,1,0,0,0,3004,3002,1,0,0,0,3005,3006,5,34,0,0,3006, + 668,1,0,0,0,3007,3013,5,96,0,0,3008,3012,8,28,0,0,3009,3010,5,96, + 0,0,3010,3012,5,96,0,0,3011,3008,1,0,0,0,3011,3009,1,0,0,0,3012, + 3015,1,0,0,0,3013,3011,1,0,0,0,3013,3014,1,0,0,0,3014,3016,1,0,0, + 0,3015,3013,1,0,0,0,3016,3017,5,96,0,0,3017,670,1,0,0,0,3018,3025, + 3,681,340,0,3019,3021,5,95,0,0,3020,3019,1,0,0,0,3020,3021,1,0,0, + 0,3021,3022,1,0,0,0,3022,3024,3,681,340,0,3023,3020,1,0,0,0,3024, + 3027,1,0,0,0,3025,3023,1,0,0,0,3025,3026,1,0,0,0,3026,672,1,0,0, + 0,3027,3025,1,0,0,0,3028,3029,5,48,0,0,3029,3030,7,22,0,0,3030,3038, + 1,0,0,0,3031,3033,5,95,0,0,3032,3031,1,0,0,0,3032,3033,1,0,0,0,3033, + 3036,1,0,0,0,3034,3037,3,681,340,0,3035,3037,7,29,0,0,3036,3034, + 1,0,0,0,3036,3035,1,0,0,0,3037,3039,1,0,0,0,3038,3032,1,0,0,0,3039, + 3040,1,0,0,0,3040,3038,1,0,0,0,3040,3041,1,0,0,0,3041,674,1,0,0, + 0,3042,3043,5,48,0,0,3043,3044,7,19,0,0,3044,3049,1,0,0,0,3045,3047, + 5,95,0,0,3046,3045,1,0,0,0,3046,3047,1,0,0,0,3047,3048,1,0,0,0,3048, + 3050,7,30,0,0,3049,3046,1,0,0,0,3050,3051,1,0,0,0,3051,3049,1,0, + 0,0,3051,3052,1,0,0,0,3052,676,1,0,0,0,3053,3054,5,48,0,0,3054,3055, + 7,5,0,0,3055,3060,1,0,0,0,3056,3058,5,95,0,0,3057,3056,1,0,0,0,3057, + 3058,1,0,0,0,3058,3059,1,0,0,0,3059,3061,7,31,0,0,3060,3057,1,0, + 0,0,3061,3062,1,0,0,0,3062,3060,1,0,0,0,3062,3063,1,0,0,0,3063,678, + 1,0,0,0,3064,3066,7,6,0,0,3065,3067,7,32,0,0,3066,3065,1,0,0,0,3066, + 3067,1,0,0,0,3067,3069,1,0,0,0,3068,3070,3,681,340,0,3069,3068,1, + 0,0,0,3070,3071,1,0,0,0,3071,3069,1,0,0,0,3071,3072,1,0,0,0,3072, + 680,1,0,0,0,3073,3074,7,33,0,0,3074,682,1,0,0,0,3075,3076,7,34,0, + 0,3076,684,1,0,0,0,3077,3078,5,45,0,0,3078,3079,5,45,0,0,3079,3083, + 1,0,0,0,3080,3082,8,35,0,0,3081,3080,1,0,0,0,3082,3085,1,0,0,0,3083, + 3081,1,0,0,0,3083,3084,1,0,0,0,3084,3087,1,0,0,0,3085,3083,1,0,0, + 0,3086,3088,5,13,0,0,3087,3086,1,0,0,0,3087,3088,1,0,0,0,3088,3090, + 1,0,0,0,3089,3091,5,10,0,0,3090,3089,1,0,0,0,3090,3091,1,0,0,0,3091, + 3092,1,0,0,0,3092,3093,6,342,0,0,3093,686,1,0,0,0,3094,3095,5,47, + 0,0,3095,3096,5,42,0,0,3096,3100,1,0,0,0,3097,3099,9,0,0,0,3098, + 3097,1,0,0,0,3099,3102,1,0,0,0,3100,3101,1,0,0,0,3100,3098,1,0,0, + 0,3101,3103,1,0,0,0,3102,3100,1,0,0,0,3103,3104,5,42,0,0,3104,3105, + 5,47,0,0,3105,3106,1,0,0,0,3106,3107,6,343,0,0,3107,688,1,0,0,0, + 3108,3110,7,36,0,0,3109,3108,1,0,0,0,3110,3111,1,0,0,0,3111,3109, + 1,0,0,0,3111,3112,1,0,0,0,3112,3113,1,0,0,0,3113,3114,6,344,0,0, + 3114,690,1,0,0,0,3115,3116,9,0,0,0,3116,692,1,0,0,0,40,0,2870,2903, + 2905,2917,2919,2930,2939,2944,2948,2953,2959,2962,2970,2974,2978, + 2983,2985,2992,2994,3000,3002,3011,3013,3020,3025,3032,3036,3040, + 3046,3051,3057,3062,3066,3071,3083,3087,3090,3100,3111,1,0,1,0 ]; private static __ATN: antlr.ATN; diff --git a/src/lib/trino/TrinoSqlListener.ts b/src/lib/trino/TrinoSqlListener.ts index 558f1a42..8a0856c6 100644 --- a/src/lib/trino/TrinoSqlListener.ts +++ b/src/lib/trino/TrinoSqlListener.ts @@ -10,14 +10,16 @@ import { SQLParserBase } from '../SQLParserBase'; import { ProgramContext } from "./TrinoSqlParser.js"; import { StatementsContext } from "./TrinoSqlParser.js"; -import { StandaloneClauseContext } from "./TrinoSqlParser.js"; import { SingleStatementContext } from "./TrinoSqlParser.js"; import { StandaloneExpressionContext } from "./TrinoSqlParser.js"; import { StandalonePathSpecificationContext } from "./TrinoSqlParser.js"; import { StandaloneTypeContext } from "./TrinoSqlParser.js"; import { StandaloneRowPatternContext } from "./TrinoSqlParser.js"; +import { StandaloneFunctionSpecificationContext } from "./TrinoSqlParser.js"; import { StatementDefaultContext } from "./TrinoSqlParser.js"; import { UseContext } from "./TrinoSqlParser.js"; +import { CreateCatalogContext } from "./TrinoSqlParser.js"; +import { DropCatalogContext } from "./TrinoSqlParser.js"; import { CreateSchemaContext } from "./TrinoSqlParser.js"; import { DropSchemaContext } from "./TrinoSqlParser.js"; import { RenameSchemaContext } from "./TrinoSqlParser.js"; @@ -28,12 +30,15 @@ import { DropTableContext } from "./TrinoSqlParser.js"; import { InsertIntoContext } from "./TrinoSqlParser.js"; import { DeleteContext } from "./TrinoSqlParser.js"; import { TruncateTableContext } from "./TrinoSqlParser.js"; -import { RenameTableContext } from "./TrinoSqlParser.js"; import { CommentTableContext } from "./TrinoSqlParser.js"; +import { CommentViewContext } from "./TrinoSqlParser.js"; import { CommentColumnContext } from "./TrinoSqlParser.js"; +import { RenameTableContext } from "./TrinoSqlParser.js"; +import { AddColumnContext } from "./TrinoSqlParser.js"; import { RenameColumnContext } from "./TrinoSqlParser.js"; import { DropColumnContext } from "./TrinoSqlParser.js"; -import { AddColumnContext } from "./TrinoSqlParser.js"; +import { SetColumnTypeContext } from "./TrinoSqlParser.js"; +import { DropNotNullConstraintContext } from "./TrinoSqlParser.js"; import { SetTableAuthorizationContext } from "./TrinoSqlParser.js"; import { SetTablePropertiesContext } from "./TrinoSqlParser.js"; import { TableExecuteContext } from "./TrinoSqlParser.js"; @@ -48,20 +53,24 @@ import { DropViewContext } from "./TrinoSqlParser.js"; import { RenameViewContext } from "./TrinoSqlParser.js"; import { SetViewAuthorizationContext } from "./TrinoSqlParser.js"; import { CallContext } from "./TrinoSqlParser.js"; +import { CreateFunctionContext } from "./TrinoSqlParser.js"; +import { DropFunctionContext } from "./TrinoSqlParser.js"; import { CreateRoleContext } from "./TrinoSqlParser.js"; import { DropRoleContext } from "./TrinoSqlParser.js"; import { GrantRolesContext } from "./TrinoSqlParser.js"; +import { GrantPrivilegesContext } from "./TrinoSqlParser.js"; import { RevokeRolesContext } from "./TrinoSqlParser.js"; -import { SetRoleContext } from "./TrinoSqlParser.js"; -import { GrantContext } from "./TrinoSqlParser.js"; +import { RevokePrivilegesContext } from "./TrinoSqlParser.js"; import { DenyContext } from "./TrinoSqlParser.js"; -import { RevokeContext } from "./TrinoSqlParser.js"; +import { SetRoleContext } from "./TrinoSqlParser.js"; import { ShowGrantsContext } from "./TrinoSqlParser.js"; import { ExplainContext } from "./TrinoSqlParser.js"; +import { ExplainAnalyzeContext } from "./TrinoSqlParser.js"; import { ShowCreateTableContext } from "./TrinoSqlParser.js"; import { ShowCreateSchemaContext } from "./TrinoSqlParser.js"; import { ShowCreateViewContext } from "./TrinoSqlParser.js"; import { ShowCreateMaterializedViewContext } from "./TrinoSqlParser.js"; +import { ShowCreateFunctionContext } from "./TrinoSqlParser.js"; import { ShowTablesContext } from "./TrinoSqlParser.js"; import { ShowSchemasContext } from "./TrinoSqlParser.js"; import { ShowCatalogsContext } from "./TrinoSqlParser.js"; @@ -72,6 +81,8 @@ import { ShowRolesContext } from "./TrinoSqlParser.js"; import { ShowRoleGrantsContext } from "./TrinoSqlParser.js"; import { ShowFunctionsContext } from "./TrinoSqlParser.js"; import { ShowSessionContext } from "./TrinoSqlParser.js"; +import { SetSessionAuthorizationContext } from "./TrinoSqlParser.js"; +import { ResetSessionAuthorizationContext } from "./TrinoSqlParser.js"; import { SetSessionContext } from "./TrinoSqlParser.js"; import { ResetSessionContext } from "./TrinoSqlParser.js"; import { StartTransactionContext } from "./TrinoSqlParser.js"; @@ -80,6 +91,7 @@ import { RollbackContext } from "./TrinoSqlParser.js"; import { PrepareContext } from "./TrinoSqlParser.js"; import { DeallocateContext } from "./TrinoSqlParser.js"; import { ExecuteContext } from "./TrinoSqlParser.js"; +import { ExecuteImmediateContext } from "./TrinoSqlParser.js"; import { DescribeInputContext } from "./TrinoSqlParser.js"; import { DescribeOutputContext } from "./TrinoSqlParser.js"; import { SetPathContext } from "./TrinoSqlParser.js"; @@ -88,6 +100,8 @@ import { UpdateContext } from "./TrinoSqlParser.js"; import { MergeContext } from "./TrinoSqlParser.js"; import { ShowTableCommentContext } from "./TrinoSqlParser.js"; import { ShowColumnCommentContext } from "./TrinoSqlParser.js"; +import { RootQueryContext } from "./TrinoSqlParser.js"; +import { WithFunctionContext } from "./TrinoSqlParser.js"; import { QueryStatementContext } from "./TrinoSqlParser.js"; import { WithContext } from "./TrinoSqlParser.js"; import { TableElementContext } from "./TrinoSqlParser.js"; @@ -128,6 +142,9 @@ import { JoinTypeContext } from "./TrinoSqlParser.js"; import { JoinCriteriaContext } from "./TrinoSqlParser.js"; import { SampledRelationContext } from "./TrinoSqlParser.js"; import { SampleTypeContext } from "./TrinoSqlParser.js"; +import { TrimsSpecificationContext } from "./TrinoSqlParser.js"; +import { ListAggOverflowBehaviorContext } from "./TrinoSqlParser.js"; +import { ListaggCountIndicationContext } from "./TrinoSqlParser.js"; import { PatternRecognitionContext } from "./TrinoSqlParser.js"; import { MeasureDefinitionContext } from "./TrinoSqlParser.js"; import { RowsPerMatchContext } from "./TrinoSqlParser.js"; @@ -139,15 +156,37 @@ import { AliasedRelationContext } from "./TrinoSqlParser.js"; import { ColumnListCreateContext } from "./TrinoSqlParser.js"; import { ColumnListContext } from "./TrinoSqlParser.js"; import { ColumnAliasesContext } from "./TrinoSqlParser.js"; -import { TableOrViewRelationContext } from "./TrinoSqlParser.js"; +import { TableNameContext } from "./TrinoSqlParser.js"; import { SubqueryRelationContext } from "./TrinoSqlParser.js"; import { UnnestContext } from "./TrinoSqlParser.js"; import { LateralContext } from "./TrinoSqlParser.js"; +import { TableFunctionInvocationContext } from "./TrinoSqlParser.js"; import { ParenthesizedRelationContext } from "./TrinoSqlParser.js"; +import { JsonTableContext } from "./TrinoSqlParser.js"; +import { OrdinalityColumnContext } from "./TrinoSqlParser.js"; +import { ValueColumnContext } from "./TrinoSqlParser.js"; +import { QueryColumnContext } from "./TrinoSqlParser.js"; +import { NestedColumnsContext } from "./TrinoSqlParser.js"; +import { LeafPlanContext } from "./TrinoSqlParser.js"; +import { JoinPlanContext } from "./TrinoSqlParser.js"; +import { UnionPlanContext } from "./TrinoSqlParser.js"; +import { CrossPlanContext } from "./TrinoSqlParser.js"; +import { JsonTablePathNameContext } from "./TrinoSqlParser.js"; +import { PlanPrimaryContext } from "./TrinoSqlParser.js"; +import { JsonTableDefaultPlanContext } from "./TrinoSqlParser.js"; +import { TableFunctionCallContext } from "./TrinoSqlParser.js"; +import { TableFunctionArgumentContext } from "./TrinoSqlParser.js"; +import { TableArgumentContext } from "./TrinoSqlParser.js"; +import { TableArgumentTableContext } from "./TrinoSqlParser.js"; +import { TableArgumentQueryContext } from "./TrinoSqlParser.js"; +import { DescriptorArgumentContext } from "./TrinoSqlParser.js"; +import { DescriptorFieldContext } from "./TrinoSqlParser.js"; +import { CopartitionTablesContext } from "./TrinoSqlParser.js"; import { ExpressionContext } from "./TrinoSqlParser.js"; import { LogicalNotContext } from "./TrinoSqlParser.js"; import { PredicatedContext } from "./TrinoSqlParser.js"; -import { LogicalBinaryContext } from "./TrinoSqlParser.js"; +import { OrContext } from "./TrinoSqlParser.js"; +import { AndContext } from "./TrinoSqlParser.js"; import { ComparisonContext } from "./TrinoSqlParser.js"; import { QuantifiedComparisonContext } from "./TrinoSqlParser.js"; import { BetweenContext } from "./TrinoSqlParser.js"; @@ -163,36 +202,56 @@ import { ArithmeticUnaryContext } from "./TrinoSqlParser.js"; import { AtTimeZoneContext } from "./TrinoSqlParser.js"; import { DereferenceContext } from "./TrinoSqlParser.js"; import { TypeConstructorContext } from "./TrinoSqlParser.js"; -import { SpecialDateTimeFunctionContext } from "./TrinoSqlParser.js"; +import { JsonValueContext } from "./TrinoSqlParser.js"; +import { CurrentDateContext } from "./TrinoSqlParser.js"; import { SubstringContext } from "./TrinoSqlParser.js"; import { CastContext } from "./TrinoSqlParser.js"; import { LambdaContext } from "./TrinoSqlParser.js"; import { ParenthesizedExpressionContext } from "./TrinoSqlParser.js"; +import { TrimContext } from "./TrinoSqlParser.js"; import { ParameterContext } from "./TrinoSqlParser.js"; import { NormalizeContext } from "./TrinoSqlParser.js"; +import { LocalTimestampContext } from "./TrinoSqlParser.js"; +import { JsonObjectContext } from "./TrinoSqlParser.js"; import { IntervalLiteralContext } from "./TrinoSqlParser.js"; import { NumericLiteralContext } from "./TrinoSqlParser.js"; import { BooleanLiteralContext } from "./TrinoSqlParser.js"; +import { JsonArrayContext } from "./TrinoSqlParser.js"; import { SimpleCaseContext } from "./TrinoSqlParser.js"; import { ColumnReferenceContext } from "./TrinoSqlParser.js"; import { NullLiteralContext } from "./TrinoSqlParser.js"; import { RowConstructorContext } from "./TrinoSqlParser.js"; import { SubscriptContext } from "./TrinoSqlParser.js"; +import { JsonExistsContext } from "./TrinoSqlParser.js"; import { CurrentPathContext } from "./TrinoSqlParser.js"; import { SubqueryExpressionContext } from "./TrinoSqlParser.js"; import { BinaryLiteralContext } from "./TrinoSqlParser.js"; +import { CurrentTimeContext } from "./TrinoSqlParser.js"; +import { LocalTimeContext } from "./TrinoSqlParser.js"; import { CurrentUserContext } from "./TrinoSqlParser.js"; +import { JsonQueryContext } from "./TrinoSqlParser.js"; import { MeasureContext } from "./TrinoSqlParser.js"; import { ExtractContext } from "./TrinoSqlParser.js"; import { StringLiteralContext } from "./TrinoSqlParser.js"; import { ArrayConstructorContext } from "./TrinoSqlParser.js"; import { FunctionCallContext } from "./TrinoSqlParser.js"; +import { CurrentTimestampContext } from "./TrinoSqlParser.js"; import { CurrentSchemaContext } from "./TrinoSqlParser.js"; import { ExistsContext } from "./TrinoSqlParser.js"; import { PositionContext } from "./TrinoSqlParser.js"; +import { ListaggContext } from "./TrinoSqlParser.js"; import { SearchedCaseContext } from "./TrinoSqlParser.js"; import { CurrentCatalogContext } from "./TrinoSqlParser.js"; import { GroupingOperationContext } from "./TrinoSqlParser.js"; +import { JsonPathInvocationContext } from "./TrinoSqlParser.js"; +import { JsonValueExpressionContext } from "./TrinoSqlParser.js"; +import { JsonRepresentationContext } from "./TrinoSqlParser.js"; +import { JsonArgumentContext } from "./TrinoSqlParser.js"; +import { JsonExistsErrorBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonValueBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonQueryWrapperBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonQueryBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonObjectMemberContext } from "./TrinoSqlParser.js"; import { ProcessingModeContext } from "./TrinoSqlParser.js"; import { NullTreatmentContext } from "./TrinoSqlParser.js"; import { BasicStringLiteralContext } from "./TrinoSqlParser.js"; @@ -254,23 +313,52 @@ import { NamedArgumentContext } from "./TrinoSqlParser.js"; import { QualifiedArgumentContext } from "./TrinoSqlParser.js"; import { UnqualifiedArgumentContext } from "./TrinoSqlParser.js"; import { PathSpecificationContext } from "./TrinoSqlParser.js"; +import { FunctionSpecificationContext } from "./TrinoSqlParser.js"; +import { FunctionDeclarationContext } from "./TrinoSqlParser.js"; +import { FunctionSignatureContext } from "./TrinoSqlParser.js"; +import { ParameterDeclarationContext } from "./TrinoSqlParser.js"; +import { ReturnsClauseContext } from "./TrinoSqlParser.js"; +import { LanguageCharacteristicContext } from "./TrinoSqlParser.js"; +import { DeterministicCharacteristicContext } from "./TrinoSqlParser.js"; +import { ReturnsNullOnNullInputCharacteristicContext } from "./TrinoSqlParser.js"; +import { CalledOnNullInputCharacteristicContext } from "./TrinoSqlParser.js"; +import { SecurityCharacteristicContext } from "./TrinoSqlParser.js"; +import { CommentCharacteristicContext } from "./TrinoSqlParser.js"; +import { ReturnStatementContext } from "./TrinoSqlParser.js"; +import { AssignmentStatementContext } from "./TrinoSqlParser.js"; +import { SimpleCaseStatementContext } from "./TrinoSqlParser.js"; +import { SearchedCaseStatementContext } from "./TrinoSqlParser.js"; +import { IfStatementContext } from "./TrinoSqlParser.js"; +import { IterateStatementContext } from "./TrinoSqlParser.js"; +import { LeaveStatementContext } from "./TrinoSqlParser.js"; +import { CompoundStatementContext } from "./TrinoSqlParser.js"; +import { LoopStatementContext } from "./TrinoSqlParser.js"; +import { WhileStatementContext } from "./TrinoSqlParser.js"; +import { RepeatStatementContext } from "./TrinoSqlParser.js"; +import { CaseStatementWhenClauseContext } from "./TrinoSqlParser.js"; +import { ElseIfClauseContext } from "./TrinoSqlParser.js"; +import { ElseClauseContext } from "./TrinoSqlParser.js"; +import { VariableDeclarationContext } from "./TrinoSqlParser.js"; +import { SqlStatementListContext } from "./TrinoSqlParser.js"; import { PrivilegeContext } from "./TrinoSqlParser.js"; +import { EntityKindContext } from "./TrinoSqlParser.js"; +import { GrantObjectContext } from "./TrinoSqlParser.js"; import { TableOrViewNameContext } from "./TrinoSqlParser.js"; -import { TableNameContext } from "./TrinoSqlParser.js"; +import { TableRefContext } from "./TrinoSqlParser.js"; import { TableNameCreateContext } from "./TrinoSqlParser.js"; -import { ViewNameContext } from "./TrinoSqlParser.js"; +import { ViewRefContext } from "./TrinoSqlParser.js"; import { ViewNameCreateContext } from "./TrinoSqlParser.js"; -import { TablePathContext } from "./TrinoSqlParser.js"; -import { ViewPathContext } from "./TrinoSqlParser.js"; -import { SchemaNameContext } from "./TrinoSqlParser.js"; +import { SchemaRefContext } from "./TrinoSqlParser.js"; import { SchemaNameCreateContext } from "./TrinoSqlParser.js"; -import { SchemaPathContext } from "./TrinoSqlParser.js"; -import { CatalogNameContext } from "./TrinoSqlParser.js"; +import { CatalogRefContext } from "./TrinoSqlParser.js"; import { CatalogNameCreateContext } from "./TrinoSqlParser.js"; import { FunctionNameContext } from "./TrinoSqlParser.js"; -import { ColumnNameContext } from "./TrinoSqlParser.js"; +import { FunctionNameCreateContext } from "./TrinoSqlParser.js"; +import { ColumnRefContext } from "./TrinoSqlParser.js"; import { ColumnNameCreateContext } from "./TrinoSqlParser.js"; import { QualifiedNameContext } from "./TrinoSqlParser.js"; +import { QueryPeriodContext } from "./TrinoSqlParser.js"; +import { RangeTypeContext } from "./TrinoSqlParser.js"; import { SpecifiedPrincipalContext } from "./TrinoSqlParser.js"; import { CurrentUserGrantorContext } from "./TrinoSqlParser.js"; import { CurrentRoleGrantorContext } from "./TrinoSqlParser.js"; @@ -278,6 +366,7 @@ import { UnspecifiedPrincipalContext } from "./TrinoSqlParser.js"; import { UserPrincipalContext } from "./TrinoSqlParser.js"; import { RolePrincipalContext } from "./TrinoSqlParser.js"; import { RolesContext } from "./TrinoSqlParser.js"; +import { PrivilegeOrRoleContext } from "./TrinoSqlParser.js"; import { UnquotedIdentifierContext } from "./TrinoSqlParser.js"; import { QuotedIdentifierContext } from "./TrinoSqlParser.js"; import { BackQuotedIdentifierContext } from "./TrinoSqlParser.js"; @@ -285,6 +374,8 @@ import { DigitIdentifierContext } from "./TrinoSqlParser.js"; import { DecimalLiteralContext } from "./TrinoSqlParser.js"; import { DoubleLiteralContext } from "./TrinoSqlParser.js"; import { IntegerLiteralContext } from "./TrinoSqlParser.js"; +import { IdentifierUserContext } from "./TrinoSqlParser.js"; +import { StringUserContext } from "./TrinoSqlParser.js"; import { NonReservedContext } from "./TrinoSqlParser.js"; @@ -313,16 +404,6 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitStatements?: (ctx: StatementsContext) => void; - /** - * Enter a parse tree produced by `TrinoSqlParser.standaloneClause`. - * @param ctx the parse tree - */ - enterStandaloneClause?: (ctx: StandaloneClauseContext) => void; - /** - * Exit a parse tree produced by `TrinoSqlParser.standaloneClause`. - * @param ctx the parse tree - */ - exitStandaloneClause?: (ctx: StandaloneClauseContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.singleStatement`. * @param ctx the parse tree @@ -373,6 +454,16 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitStandaloneRowPattern?: (ctx: StandaloneRowPatternContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.standaloneFunctionSpecification`. + * @param ctx the parse tree + */ + enterStandaloneFunctionSpecification?: (ctx: StandaloneFunctionSpecificationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.standaloneFunctionSpecification`. + * @param ctx the parse tree + */ + exitStandaloneFunctionSpecification?: (ctx: StandaloneFunctionSpecificationContext) => void; /** * Enter a parse tree produced by the `statementDefault` * labeled alternative in `TrinoSqlParser.statement`. @@ -397,6 +488,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitUse?: (ctx: UseContext) => void; + /** + * Enter a parse tree produced by the `createCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterCreateCatalog?: (ctx: CreateCatalogContext) => void; + /** + * Exit a parse tree produced by the `createCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitCreateCatalog?: (ctx: CreateCatalogContext) => void; + /** + * Enter a parse tree produced by the `dropCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterDropCatalog?: (ctx: DropCatalogContext) => void; + /** + * Exit a parse tree produced by the `dropCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitDropCatalog?: (ctx: DropCatalogContext) => void; /** * Enter a parse tree produced by the `createSchema` * labeled alternative in `TrinoSqlParser.statement`. @@ -518,29 +633,29 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitTruncateTable?: (ctx: TruncateTableContext) => void; /** - * Enter a parse tree produced by the `renameTable` + * Enter a parse tree produced by the `commentTable` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterRenameTable?: (ctx: RenameTableContext) => void; + enterCommentTable?: (ctx: CommentTableContext) => void; /** - * Exit a parse tree produced by the `renameTable` + * Exit a parse tree produced by the `commentTable` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitRenameTable?: (ctx: RenameTableContext) => void; + exitCommentTable?: (ctx: CommentTableContext) => void; /** - * Enter a parse tree produced by the `commentTable` + * Enter a parse tree produced by the `commentView` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterCommentTable?: (ctx: CommentTableContext) => void; + enterCommentView?: (ctx: CommentViewContext) => void; /** - * Exit a parse tree produced by the `commentTable` + * Exit a parse tree produced by the `commentView` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitCommentTable?: (ctx: CommentTableContext) => void; + exitCommentView?: (ctx: CommentViewContext) => void; /** * Enter a parse tree produced by the `commentColumn` * labeled alternative in `TrinoSqlParser.statement`. @@ -553,6 +668,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitCommentColumn?: (ctx: CommentColumnContext) => void; + /** + * Enter a parse tree produced by the `renameTable` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterRenameTable?: (ctx: RenameTableContext) => void; + /** + * Exit a parse tree produced by the `renameTable` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitRenameTable?: (ctx: RenameTableContext) => void; + /** + * Enter a parse tree produced by the `addColumn` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterAddColumn?: (ctx: AddColumnContext) => void; + /** + * Exit a parse tree produced by the `addColumn` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitAddColumn?: (ctx: AddColumnContext) => void; /** * Enter a parse tree produced by the `renameColumn` * labeled alternative in `TrinoSqlParser.statement`. @@ -578,17 +717,29 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitDropColumn?: (ctx: DropColumnContext) => void; /** - * Enter a parse tree produced by the `addColumn` + * Enter a parse tree produced by the `setColumnType` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterAddColumn?: (ctx: AddColumnContext) => void; + enterSetColumnType?: (ctx: SetColumnTypeContext) => void; /** - * Exit a parse tree produced by the `addColumn` + * Exit a parse tree produced by the `setColumnType` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitAddColumn?: (ctx: AddColumnContext) => void; + exitSetColumnType?: (ctx: SetColumnTypeContext) => void; + /** + * Enter a parse tree produced by the `dropNotNullConstraint` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterDropNotNullConstraint?: (ctx: DropNotNullConstraintContext) => void; + /** + * Exit a parse tree produced by the `dropNotNullConstraint` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitDropNotNullConstraint?: (ctx: DropNotNullConstraintContext) => void; /** * Enter a parse tree produced by the `setTableAuthorization` * labeled alternative in `TrinoSqlParser.statement`. @@ -757,6 +908,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitCall?: (ctx: CallContext) => void; + /** + * Enter a parse tree produced by the `createFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterCreateFunction?: (ctx: CreateFunctionContext) => void; + /** + * Exit a parse tree produced by the `createFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitCreateFunction?: (ctx: CreateFunctionContext) => void; + /** + * Enter a parse tree produced by the `dropFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterDropFunction?: (ctx: DropFunctionContext) => void; + /** + * Exit a parse tree produced by the `dropFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitDropFunction?: (ctx: DropFunctionContext) => void; /** * Enter a parse tree produced by the `createRole` * labeled alternative in `TrinoSqlParser.statement`. @@ -794,41 +969,41 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitGrantRoles?: (ctx: GrantRolesContext) => void; /** - * Enter a parse tree produced by the `revokeRoles` + * Enter a parse tree produced by the `grantPrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterRevokeRoles?: (ctx: RevokeRolesContext) => void; + enterGrantPrivileges?: (ctx: GrantPrivilegesContext) => void; /** - * Exit a parse tree produced by the `revokeRoles` + * Exit a parse tree produced by the `grantPrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitRevokeRoles?: (ctx: RevokeRolesContext) => void; + exitGrantPrivileges?: (ctx: GrantPrivilegesContext) => void; /** - * Enter a parse tree produced by the `setRole` + * Enter a parse tree produced by the `revokeRoles` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterSetRole?: (ctx: SetRoleContext) => void; + enterRevokeRoles?: (ctx: RevokeRolesContext) => void; /** - * Exit a parse tree produced by the `setRole` + * Exit a parse tree produced by the `revokeRoles` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitSetRole?: (ctx: SetRoleContext) => void; + exitRevokeRoles?: (ctx: RevokeRolesContext) => void; /** - * Enter a parse tree produced by the `grant` + * Enter a parse tree produced by the `revokePrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterGrant?: (ctx: GrantContext) => void; + enterRevokePrivileges?: (ctx: RevokePrivilegesContext) => void; /** - * Exit a parse tree produced by the `grant` + * Exit a parse tree produced by the `revokePrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitGrant?: (ctx: GrantContext) => void; + exitRevokePrivileges?: (ctx: RevokePrivilegesContext) => void; /** * Enter a parse tree produced by the `deny` * labeled alternative in `TrinoSqlParser.statement`. @@ -842,17 +1017,17 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitDeny?: (ctx: DenyContext) => void; /** - * Enter a parse tree produced by the `revoke` + * Enter a parse tree produced by the `setRole` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - enterRevoke?: (ctx: RevokeContext) => void; + enterSetRole?: (ctx: SetRoleContext) => void; /** - * Exit a parse tree produced by the `revoke` + * Exit a parse tree produced by the `setRole` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree */ - exitRevoke?: (ctx: RevokeContext) => void; + exitSetRole?: (ctx: SetRoleContext) => void; /** * Enter a parse tree produced by the `showGrants` * labeled alternative in `TrinoSqlParser.statement`. @@ -877,6 +1052,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitExplain?: (ctx: ExplainContext) => void; + /** + * Enter a parse tree produced by the `explainAnalyze` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterExplainAnalyze?: (ctx: ExplainAnalyzeContext) => void; + /** + * Exit a parse tree produced by the `explainAnalyze` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitExplainAnalyze?: (ctx: ExplainAnalyzeContext) => void; /** * Enter a parse tree produced by the `showCreateTable` * labeled alternative in `TrinoSqlParser.statement`. @@ -925,6 +1112,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitShowCreateMaterializedView?: (ctx: ShowCreateMaterializedViewContext) => void; + /** + * Enter a parse tree produced by the `showCreateFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterShowCreateFunction?: (ctx: ShowCreateFunctionContext) => void; + /** + * Exit a parse tree produced by the `showCreateFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitShowCreateFunction?: (ctx: ShowCreateFunctionContext) => void; /** * Enter a parse tree produced by the `showTables` * labeled alternative in `TrinoSqlParser.statement`. @@ -1045,6 +1244,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitShowSession?: (ctx: ShowSessionContext) => void; + /** + * Enter a parse tree produced by the `setSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterSetSessionAuthorization?: (ctx: SetSessionAuthorizationContext) => void; + /** + * Exit a parse tree produced by the `setSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitSetSessionAuthorization?: (ctx: SetSessionAuthorizationContext) => void; + /** + * Enter a parse tree produced by the `resetSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterResetSessionAuthorization?: (ctx: ResetSessionAuthorizationContext) => void; + /** + * Exit a parse tree produced by the `resetSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitResetSessionAuthorization?: (ctx: ResetSessionAuthorizationContext) => void; /** * Enter a parse tree produced by the `setSession` * labeled alternative in `TrinoSqlParser.statement`. @@ -1141,6 +1364,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitExecute?: (ctx: ExecuteContext) => void; + /** + * Enter a parse tree produced by the `executeImmediate` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + enterExecuteImmediate?: (ctx: ExecuteImmediateContext) => void; + /** + * Exit a parse tree produced by the `executeImmediate` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + */ + exitExecuteImmediate?: (ctx: ExecuteImmediateContext) => void; /** * Enter a parse tree produced by the `describeInput` * labeled alternative in `TrinoSqlParser.statement`. @@ -1237,6 +1472,26 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitShowColumnComment?: (ctx: ShowColumnCommentContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.rootQuery`. + * @param ctx the parse tree + */ + enterRootQuery?: (ctx: RootQueryContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.rootQuery`. + * @param ctx the parse tree + */ + exitRootQuery?: (ctx: RootQueryContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.withFunction`. + * @param ctx the parse tree + */ + enterWithFunction?: (ctx: WithFunctionContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.withFunction`. + * @param ctx the parse tree + */ + exitWithFunction?: (ctx: WithFunctionContext) => void; /** * Enter a parse tree produced by the `queryStatement` * labeled alternative in `TrinoSqlParser.query`. @@ -1671,6 +1926,36 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitSampleType?: (ctx: SampleTypeContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.trimsSpecification`. + * @param ctx the parse tree + */ + enterTrimsSpecification?: (ctx: TrimsSpecificationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.trimsSpecification`. + * @param ctx the parse tree + */ + exitTrimsSpecification?: (ctx: TrimsSpecificationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.listAggOverflowBehavior`. + * @param ctx the parse tree + */ + enterListAggOverflowBehavior?: (ctx: ListAggOverflowBehaviorContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.listAggOverflowBehavior`. + * @param ctx the parse tree + */ + exitListAggOverflowBehavior?: (ctx: ListAggOverflowBehaviorContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.listaggCountIndication`. + * @param ctx the parse tree + */ + enterListaggCountIndication?: (ctx: ListaggCountIndicationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.listaggCountIndication`. + * @param ctx the parse tree + */ + exitListaggCountIndication?: (ctx: ListaggCountIndicationContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.patternRecognition`. * @param ctx the parse tree @@ -1782,17 +2067,17 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitColumnAliases?: (ctx: ColumnAliasesContext) => void; /** - * Enter a parse tree produced by the `tableOrViewRelation` + * Enter a parse tree produced by the `tableName` * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree */ - enterTableOrViewRelation?: (ctx: TableOrViewRelationContext) => void; + enterTableName?: (ctx: TableNameContext) => void; /** - * Exit a parse tree produced by the `tableOrViewRelation` + * Exit a parse tree produced by the `tableName` * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree */ - exitTableOrViewRelation?: (ctx: TableOrViewRelationContext) => void; + exitTableName?: (ctx: TableNameContext) => void; /** * Enter a parse tree produced by the `subqueryRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. @@ -1829,6 +2114,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitLateral?: (ctx: LateralContext) => void; + /** + * Enter a parse tree produced by the `tableFunctionInvocation` + * labeled alternative in `TrinoSqlParser.relationPrimary`. + * @param ctx the parse tree + */ + enterTableFunctionInvocation?: (ctx: TableFunctionInvocationContext) => void; + /** + * Exit a parse tree produced by the `tableFunctionInvocation` + * labeled alternative in `TrinoSqlParser.relationPrimary`. + * @param ctx the parse tree + */ + exitTableFunctionInvocation?: (ctx: TableFunctionInvocationContext) => void; /** * Enter a parse tree produced by the `parenthesizedRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. @@ -1842,131 +2139,365 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitParenthesizedRelation?: (ctx: ParenthesizedRelationContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.expression`. + * Enter a parse tree produced by the `jsonTable` + * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree */ - enterExpression?: (ctx: ExpressionContext) => void; + enterJsonTable?: (ctx: JsonTableContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.expression`. + * Exit a parse tree produced by the `jsonTable` + * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree */ - exitExpression?: (ctx: ExpressionContext) => void; + exitJsonTable?: (ctx: JsonTableContext) => void; /** - * Enter a parse tree produced by the `logicalNot` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Enter a parse tree produced by the `ordinalityColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - enterLogicalNot?: (ctx: LogicalNotContext) => void; + enterOrdinalityColumn?: (ctx: OrdinalityColumnContext) => void; /** - * Exit a parse tree produced by the `logicalNot` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Exit a parse tree produced by the `ordinalityColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - exitLogicalNot?: (ctx: LogicalNotContext) => void; + exitOrdinalityColumn?: (ctx: OrdinalityColumnContext) => void; /** - * Enter a parse tree produced by the `predicated` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Enter a parse tree produced by the `valueColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - enterPredicated?: (ctx: PredicatedContext) => void; + enterValueColumn?: (ctx: ValueColumnContext) => void; /** - * Exit a parse tree produced by the `predicated` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Exit a parse tree produced by the `valueColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - exitPredicated?: (ctx: PredicatedContext) => void; + exitValueColumn?: (ctx: ValueColumnContext) => void; /** - * Enter a parse tree produced by the `logicalBinary` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Enter a parse tree produced by the `queryColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - enterLogicalBinary?: (ctx: LogicalBinaryContext) => void; + enterQueryColumn?: (ctx: QueryColumnContext) => void; /** - * Exit a parse tree produced by the `logicalBinary` - * labeled alternative in `TrinoSqlParser.booleanExpression`. + * Exit a parse tree produced by the `queryColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - exitLogicalBinary?: (ctx: LogicalBinaryContext) => void; + exitQueryColumn?: (ctx: QueryColumnContext) => void; /** - * Enter a parse tree produced by the `comparison` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by the `nestedColumns` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - enterComparison?: (ctx: ComparisonContext) => void; + enterNestedColumns?: (ctx: NestedColumnsContext) => void; /** - * Exit a parse tree produced by the `comparison` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by the `nestedColumns` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. * @param ctx the parse tree */ - exitComparison?: (ctx: ComparisonContext) => void; + exitNestedColumns?: (ctx: NestedColumnsContext) => void; /** - * Enter a parse tree produced by the `quantifiedComparison` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by the `leafPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - enterQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => void; + enterLeafPlan?: (ctx: LeafPlanContext) => void; /** - * Exit a parse tree produced by the `quantifiedComparison` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by the `leafPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - exitQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => void; + exitLeafPlan?: (ctx: LeafPlanContext) => void; /** - * Enter a parse tree produced by the `between` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by the `joinPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - enterBetween?: (ctx: BetweenContext) => void; + enterJoinPlan?: (ctx: JoinPlanContext) => void; /** - * Exit a parse tree produced by the `between` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by the `joinPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - exitBetween?: (ctx: BetweenContext) => void; + exitJoinPlan?: (ctx: JoinPlanContext) => void; /** - * Enter a parse tree produced by the `inList` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by the `unionPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - enterInList?: (ctx: InListContext) => void; + enterUnionPlan?: (ctx: UnionPlanContext) => void; /** - * Exit a parse tree produced by the `inList` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by the `unionPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - exitInList?: (ctx: InListContext) => void; + exitUnionPlan?: (ctx: UnionPlanContext) => void; /** - * Enter a parse tree produced by the `inSubquery` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by the `crossPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - enterInSubquery?: (ctx: InSubqueryContext) => void; + enterCrossPlan?: (ctx: CrossPlanContext) => void; /** - * Exit a parse tree produced by the `inSubquery` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by the `crossPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. * @param ctx the parse tree */ - exitInSubquery?: (ctx: InSubqueryContext) => void; + exitCrossPlan?: (ctx: CrossPlanContext) => void; /** - * Enter a parse tree produced by the `like` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by `TrinoSqlParser.jsonTablePathName`. * @param ctx the parse tree */ - enterLike?: (ctx: LikeContext) => void; + enterJsonTablePathName?: (ctx: JsonTablePathNameContext) => void; /** - * Exit a parse tree produced by the `like` - * labeled alternative in `TrinoSqlParser.predicate`. + * Exit a parse tree produced by `TrinoSqlParser.jsonTablePathName`. * @param ctx the parse tree */ - exitLike?: (ctx: LikeContext) => void; + exitJsonTablePathName?: (ctx: JsonTablePathNameContext) => void; /** - * Enter a parse tree produced by the `nullPredicate` - * labeled alternative in `TrinoSqlParser.predicate`. + * Enter a parse tree produced by `TrinoSqlParser.planPrimary`. * @param ctx the parse tree */ - enterNullPredicate?: (ctx: NullPredicateContext) => void; + enterPlanPrimary?: (ctx: PlanPrimaryContext) => void; /** - * Exit a parse tree produced by the `nullPredicate` + * Exit a parse tree produced by `TrinoSqlParser.planPrimary`. + * @param ctx the parse tree + */ + exitPlanPrimary?: (ctx: PlanPrimaryContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonTableDefaultPlan`. + * @param ctx the parse tree + */ + enterJsonTableDefaultPlan?: (ctx: JsonTableDefaultPlanContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonTableDefaultPlan`. + * @param ctx the parse tree + */ + exitJsonTableDefaultPlan?: (ctx: JsonTableDefaultPlanContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.tableFunctionCall`. + * @param ctx the parse tree + */ + enterTableFunctionCall?: (ctx: TableFunctionCallContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.tableFunctionCall`. + * @param ctx the parse tree + */ + exitTableFunctionCall?: (ctx: TableFunctionCallContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.tableFunctionArgument`. + * @param ctx the parse tree + */ + enterTableFunctionArgument?: (ctx: TableFunctionArgumentContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.tableFunctionArgument`. + * @param ctx the parse tree + */ + exitTableFunctionArgument?: (ctx: TableFunctionArgumentContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.tableArgument`. + * @param ctx the parse tree + */ + enterTableArgument?: (ctx: TableArgumentContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.tableArgument`. + * @param ctx the parse tree + */ + exitTableArgument?: (ctx: TableArgumentContext) => void; + /** + * Enter a parse tree produced by the `tableArgumentTable` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + */ + enterTableArgumentTable?: (ctx: TableArgumentTableContext) => void; + /** + * Exit a parse tree produced by the `tableArgumentTable` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + */ + exitTableArgumentTable?: (ctx: TableArgumentTableContext) => void; + /** + * Enter a parse tree produced by the `tableArgumentQuery` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + */ + enterTableArgumentQuery?: (ctx: TableArgumentQueryContext) => void; + /** + * Exit a parse tree produced by the `tableArgumentQuery` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + */ + exitTableArgumentQuery?: (ctx: TableArgumentQueryContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.descriptorArgument`. + * @param ctx the parse tree + */ + enterDescriptorArgument?: (ctx: DescriptorArgumentContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.descriptorArgument`. + * @param ctx the parse tree + */ + exitDescriptorArgument?: (ctx: DescriptorArgumentContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.descriptorField`. + * @param ctx the parse tree + */ + enterDescriptorField?: (ctx: DescriptorFieldContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.descriptorField`. + * @param ctx the parse tree + */ + exitDescriptorField?: (ctx: DescriptorFieldContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.copartitionTables`. + * @param ctx the parse tree + */ + enterCopartitionTables?: (ctx: CopartitionTablesContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.copartitionTables`. + * @param ctx the parse tree + */ + exitCopartitionTables?: (ctx: CopartitionTablesContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.expression`. + * @param ctx the parse tree + */ + enterExpression?: (ctx: ExpressionContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.expression`. + * @param ctx the parse tree + */ + exitExpression?: (ctx: ExpressionContext) => void; + /** + * Enter a parse tree produced by the `logicalNot` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + enterLogicalNot?: (ctx: LogicalNotContext) => void; + /** + * Exit a parse tree produced by the `logicalNot` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + exitLogicalNot?: (ctx: LogicalNotContext) => void; + /** + * Enter a parse tree produced by the `predicated` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + enterPredicated?: (ctx: PredicatedContext) => void; + /** + * Exit a parse tree produced by the `predicated` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + exitPredicated?: (ctx: PredicatedContext) => void; + /** + * Enter a parse tree produced by the `or` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + enterOr?: (ctx: OrContext) => void; + /** + * Exit a parse tree produced by the `or` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + exitOr?: (ctx: OrContext) => void; + /** + * Enter a parse tree produced by the `and` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + enterAnd?: (ctx: AndContext) => void; + /** + * Exit a parse tree produced by the `and` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + */ + exitAnd?: (ctx: AndContext) => void; + /** + * Enter a parse tree produced by the `comparison` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterComparison?: (ctx: ComparisonContext) => void; + /** + * Exit a parse tree produced by the `comparison` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitComparison?: (ctx: ComparisonContext) => void; + /** + * Enter a parse tree produced by the `quantifiedComparison` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => void; + /** + * Exit a parse tree produced by the `quantifiedComparison` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitQuantifiedComparison?: (ctx: QuantifiedComparisonContext) => void; + /** + * Enter a parse tree produced by the `between` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterBetween?: (ctx: BetweenContext) => void; + /** + * Exit a parse tree produced by the `between` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitBetween?: (ctx: BetweenContext) => void; + /** + * Enter a parse tree produced by the `inList` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterInList?: (ctx: InListContext) => void; + /** + * Exit a parse tree produced by the `inList` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitInList?: (ctx: InListContext) => void; + /** + * Enter a parse tree produced by the `inSubquery` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterInSubquery?: (ctx: InSubqueryContext) => void; + /** + * Exit a parse tree produced by the `inSubquery` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitInSubquery?: (ctx: InSubqueryContext) => void; + /** + * Enter a parse tree produced by the `like` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterLike?: (ctx: LikeContext) => void; + /** + * Exit a parse tree produced by the `like` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + exitLike?: (ctx: LikeContext) => void; + /** + * Enter a parse tree produced by the `nullPredicate` + * labeled alternative in `TrinoSqlParser.predicate`. + * @param ctx the parse tree + */ + enterNullPredicate?: (ctx: NullPredicateContext) => void; + /** + * Exit a parse tree produced by the `nullPredicate` * labeled alternative in `TrinoSqlParser.predicate`. * @param ctx the parse tree */ @@ -2068,17 +2599,29 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitTypeConstructor?: (ctx: TypeConstructorContext) => void; /** - * Enter a parse tree produced by the `specialDateTimeFunction` + * Enter a parse tree produced by the `jsonValue` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterJsonValue?: (ctx: JsonValueContext) => void; + /** + * Exit a parse tree produced by the `jsonValue` * labeled alternative in `TrinoSqlParser.primaryExpression`. * @param ctx the parse tree */ - enterSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => void; + exitJsonValue?: (ctx: JsonValueContext) => void; /** - * Exit a parse tree produced by the `specialDateTimeFunction` + * Enter a parse tree produced by the `currentDate` * labeled alternative in `TrinoSqlParser.primaryExpression`. * @param ctx the parse tree */ - exitSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => void; + enterCurrentDate?: (ctx: CurrentDateContext) => void; + /** + * Exit a parse tree produced by the `currentDate` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentDate?: (ctx: CurrentDateContext) => void; /** * Enter a parse tree produced by the `substring` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2127,6 +2670,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => void; + /** + * Enter a parse tree produced by the `trim` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterTrim?: (ctx: TrimContext) => void; + /** + * Exit a parse tree produced by the `trim` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitTrim?: (ctx: TrimContext) => void; /** * Enter a parse tree produced by the `parameter` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2151,6 +2706,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitNormalize?: (ctx: NormalizeContext) => void; + /** + * Enter a parse tree produced by the `localTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterLocalTimestamp?: (ctx: LocalTimestampContext) => void; + /** + * Exit a parse tree produced by the `localTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitLocalTimestamp?: (ctx: LocalTimestampContext) => void; + /** + * Enter a parse tree produced by the `jsonObject` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterJsonObject?: (ctx: JsonObjectContext) => void; + /** + * Exit a parse tree produced by the `jsonObject` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitJsonObject?: (ctx: JsonObjectContext) => void; /** * Enter a parse tree produced by the `intervalLiteral` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2187,6 +2766,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitBooleanLiteral?: (ctx: BooleanLiteralContext) => void; + /** + * Enter a parse tree produced by the `jsonArray` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterJsonArray?: (ctx: JsonArrayContext) => void; + /** + * Exit a parse tree produced by the `jsonArray` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitJsonArray?: (ctx: JsonArrayContext) => void; /** * Enter a parse tree produced by the `simpleCase` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2247,6 +2838,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitSubscript?: (ctx: SubscriptContext) => void; + /** + * Enter a parse tree produced by the `jsonExists` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterJsonExists?: (ctx: JsonExistsContext) => void; + /** + * Exit a parse tree produced by the `jsonExists` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitJsonExists?: (ctx: JsonExistsContext) => void; /** * Enter a parse tree produced by the `currentPath` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2283,6 +2886,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitBinaryLiteral?: (ctx: BinaryLiteralContext) => void; + /** + * Enter a parse tree produced by the `currentTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCurrentTime?: (ctx: CurrentTimeContext) => void; + /** + * Exit a parse tree produced by the `currentTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentTime?: (ctx: CurrentTimeContext) => void; + /** + * Enter a parse tree produced by the `localTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterLocalTime?: (ctx: LocalTimeContext) => void; + /** + * Exit a parse tree produced by the `localTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitLocalTime?: (ctx: LocalTimeContext) => void; /** * Enter a parse tree produced by the `currentUser` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2295,6 +2922,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitCurrentUser?: (ctx: CurrentUserContext) => void; + /** + * Enter a parse tree produced by the `jsonQuery` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterJsonQuery?: (ctx: JsonQueryContext) => void; + /** + * Exit a parse tree produced by the `jsonQuery` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitJsonQuery?: (ctx: JsonQueryContext) => void; /** * Enter a parse tree produced by the `measure` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2355,6 +2994,18 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitFunctionCall?: (ctx: FunctionCallContext) => void; + /** + * Enter a parse tree produced by the `currentTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCurrentTimestamp?: (ctx: CurrentTimestampContext) => void; + /** + * Exit a parse tree produced by the `currentTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentTimestamp?: (ctx: CurrentTimestampContext) => void; /** * Enter a parse tree produced by the `currentSchema` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -2378,55 +3029,157 @@ export class TrinoSqlListener implements ParseTreeListener { * labeled alternative in `TrinoSqlParser.primaryExpression`. * @param ctx the parse tree */ - exitExists?: (ctx: ExistsContext) => void; + exitExists?: (ctx: ExistsContext) => void; + /** + * Enter a parse tree produced by the `position` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterPosition?: (ctx: PositionContext) => void; + /** + * Exit a parse tree produced by the `position` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitPosition?: (ctx: PositionContext) => void; + /** + * Enter a parse tree produced by the `listagg` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterListagg?: (ctx: ListaggContext) => void; + /** + * Exit a parse tree produced by the `listagg` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitListagg?: (ctx: ListaggContext) => void; + /** + * Enter a parse tree produced by the `searchedCase` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterSearchedCase?: (ctx: SearchedCaseContext) => void; + /** + * Exit a parse tree produced by the `searchedCase` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitSearchedCase?: (ctx: SearchedCaseContext) => void; + /** + * Enter a parse tree produced by the `currentCatalog` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterCurrentCatalog?: (ctx: CurrentCatalogContext) => void; + /** + * Exit a parse tree produced by the `currentCatalog` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitCurrentCatalog?: (ctx: CurrentCatalogContext) => void; + /** + * Enter a parse tree produced by the `groupingOperation` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + enterGroupingOperation?: (ctx: GroupingOperationContext) => void; + /** + * Exit a parse tree produced by the `groupingOperation` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + */ + exitGroupingOperation?: (ctx: GroupingOperationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonPathInvocation`. + * @param ctx the parse tree + */ + enterJsonPathInvocation?: (ctx: JsonPathInvocationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonPathInvocation`. + * @param ctx the parse tree + */ + exitJsonPathInvocation?: (ctx: JsonPathInvocationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonValueExpression`. + * @param ctx the parse tree + */ + enterJsonValueExpression?: (ctx: JsonValueExpressionContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonValueExpression`. + * @param ctx the parse tree + */ + exitJsonValueExpression?: (ctx: JsonValueExpressionContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonRepresentation`. + * @param ctx the parse tree + */ + enterJsonRepresentation?: (ctx: JsonRepresentationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonRepresentation`. + * @param ctx the parse tree + */ + exitJsonRepresentation?: (ctx: JsonRepresentationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonArgument`. + * @param ctx the parse tree + */ + enterJsonArgument?: (ctx: JsonArgumentContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonArgument`. + * @param ctx the parse tree + */ + exitJsonArgument?: (ctx: JsonArgumentContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.jsonExistsErrorBehavior`. + * @param ctx the parse tree + */ + enterJsonExistsErrorBehavior?: (ctx: JsonExistsErrorBehaviorContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.jsonExistsErrorBehavior`. + * @param ctx the parse tree + */ + exitJsonExistsErrorBehavior?: (ctx: JsonExistsErrorBehaviorContext) => void; /** - * Enter a parse tree produced by the `position` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Enter a parse tree produced by `TrinoSqlParser.jsonValueBehavior`. * @param ctx the parse tree */ - enterPosition?: (ctx: PositionContext) => void; + enterJsonValueBehavior?: (ctx: JsonValueBehaviorContext) => void; /** - * Exit a parse tree produced by the `position` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Exit a parse tree produced by `TrinoSqlParser.jsonValueBehavior`. * @param ctx the parse tree */ - exitPosition?: (ctx: PositionContext) => void; + exitJsonValueBehavior?: (ctx: JsonValueBehaviorContext) => void; /** - * Enter a parse tree produced by the `searchedCase` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Enter a parse tree produced by `TrinoSqlParser.jsonQueryWrapperBehavior`. * @param ctx the parse tree */ - enterSearchedCase?: (ctx: SearchedCaseContext) => void; + enterJsonQueryWrapperBehavior?: (ctx: JsonQueryWrapperBehaviorContext) => void; /** - * Exit a parse tree produced by the `searchedCase` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Exit a parse tree produced by `TrinoSqlParser.jsonQueryWrapperBehavior`. * @param ctx the parse tree */ - exitSearchedCase?: (ctx: SearchedCaseContext) => void; + exitJsonQueryWrapperBehavior?: (ctx: JsonQueryWrapperBehaviorContext) => void; /** - * Enter a parse tree produced by the `currentCatalog` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Enter a parse tree produced by `TrinoSqlParser.jsonQueryBehavior`. * @param ctx the parse tree */ - enterCurrentCatalog?: (ctx: CurrentCatalogContext) => void; + enterJsonQueryBehavior?: (ctx: JsonQueryBehaviorContext) => void; /** - * Exit a parse tree produced by the `currentCatalog` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Exit a parse tree produced by `TrinoSqlParser.jsonQueryBehavior`. * @param ctx the parse tree */ - exitCurrentCatalog?: (ctx: CurrentCatalogContext) => void; + exitJsonQueryBehavior?: (ctx: JsonQueryBehaviorContext) => void; /** - * Enter a parse tree produced by the `groupingOperation` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Enter a parse tree produced by `TrinoSqlParser.jsonObjectMember`. * @param ctx the parse tree */ - enterGroupingOperation?: (ctx: GroupingOperationContext) => void; + enterJsonObjectMember?: (ctx: JsonObjectMemberContext) => void; /** - * Exit a parse tree produced by the `groupingOperation` - * labeled alternative in `TrinoSqlParser.primaryExpression`. + * Exit a parse tree produced by `TrinoSqlParser.jsonObjectMember`. * @param ctx the parse tree */ - exitGroupingOperation?: (ctx: GroupingOperationContext) => void; + exitJsonObjectMember?: (ctx: JsonObjectMemberContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.processingMode`. * @param ctx the parse tree @@ -3125,6 +3878,310 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitPathSpecification?: (ctx: PathSpecificationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.functionSpecification`. + * @param ctx the parse tree + */ + enterFunctionSpecification?: (ctx: FunctionSpecificationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.functionSpecification`. + * @param ctx the parse tree + */ + exitFunctionSpecification?: (ctx: FunctionSpecificationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.functionDeclaration`. + * @param ctx the parse tree + */ + enterFunctionDeclaration?: (ctx: FunctionDeclarationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.functionDeclaration`. + * @param ctx the parse tree + */ + exitFunctionDeclaration?: (ctx: FunctionDeclarationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.functionSignature`. + * @param ctx the parse tree + */ + enterFunctionSignature?: (ctx: FunctionSignatureContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.functionSignature`. + * @param ctx the parse tree + */ + exitFunctionSignature?: (ctx: FunctionSignatureContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.parameterDeclaration`. + * @param ctx the parse tree + */ + enterParameterDeclaration?: (ctx: ParameterDeclarationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.parameterDeclaration`. + * @param ctx the parse tree + */ + exitParameterDeclaration?: (ctx: ParameterDeclarationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.returnsClause`. + * @param ctx the parse tree + */ + enterReturnsClause?: (ctx: ReturnsClauseContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.returnsClause`. + * @param ctx the parse tree + */ + exitReturnsClause?: (ctx: ReturnsClauseContext) => void; + /** + * Enter a parse tree produced by the `languageCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterLanguageCharacteristic?: (ctx: LanguageCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `languageCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitLanguageCharacteristic?: (ctx: LanguageCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `deterministicCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterDeterministicCharacteristic?: (ctx: DeterministicCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `deterministicCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitDeterministicCharacteristic?: (ctx: DeterministicCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `returnsNullOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterReturnsNullOnNullInputCharacteristic?: (ctx: ReturnsNullOnNullInputCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `returnsNullOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitReturnsNullOnNullInputCharacteristic?: (ctx: ReturnsNullOnNullInputCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `calledOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterCalledOnNullInputCharacteristic?: (ctx: CalledOnNullInputCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `calledOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitCalledOnNullInputCharacteristic?: (ctx: CalledOnNullInputCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `securityCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterSecurityCharacteristic?: (ctx: SecurityCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `securityCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitSecurityCharacteristic?: (ctx: SecurityCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `commentCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + enterCommentCharacteristic?: (ctx: CommentCharacteristicContext) => void; + /** + * Exit a parse tree produced by the `commentCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + */ + exitCommentCharacteristic?: (ctx: CommentCharacteristicContext) => void; + /** + * Enter a parse tree produced by the `returnStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterReturnStatement?: (ctx: ReturnStatementContext) => void; + /** + * Exit a parse tree produced by the `returnStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitReturnStatement?: (ctx: ReturnStatementContext) => void; + /** + * Enter a parse tree produced by the `assignmentStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterAssignmentStatement?: (ctx: AssignmentStatementContext) => void; + /** + * Exit a parse tree produced by the `assignmentStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitAssignmentStatement?: (ctx: AssignmentStatementContext) => void; + /** + * Enter a parse tree produced by the `simpleCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterSimpleCaseStatement?: (ctx: SimpleCaseStatementContext) => void; + /** + * Exit a parse tree produced by the `simpleCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitSimpleCaseStatement?: (ctx: SimpleCaseStatementContext) => void; + /** + * Enter a parse tree produced by the `searchedCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterSearchedCaseStatement?: (ctx: SearchedCaseStatementContext) => void; + /** + * Exit a parse tree produced by the `searchedCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitSearchedCaseStatement?: (ctx: SearchedCaseStatementContext) => void; + /** + * Enter a parse tree produced by the `ifStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterIfStatement?: (ctx: IfStatementContext) => void; + /** + * Exit a parse tree produced by the `ifStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitIfStatement?: (ctx: IfStatementContext) => void; + /** + * Enter a parse tree produced by the `iterateStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterIterateStatement?: (ctx: IterateStatementContext) => void; + /** + * Exit a parse tree produced by the `iterateStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitIterateStatement?: (ctx: IterateStatementContext) => void; + /** + * Enter a parse tree produced by the `leaveStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterLeaveStatement?: (ctx: LeaveStatementContext) => void; + /** + * Exit a parse tree produced by the `leaveStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitLeaveStatement?: (ctx: LeaveStatementContext) => void; + /** + * Enter a parse tree produced by the `compoundStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterCompoundStatement?: (ctx: CompoundStatementContext) => void; + /** + * Exit a parse tree produced by the `compoundStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitCompoundStatement?: (ctx: CompoundStatementContext) => void; + /** + * Enter a parse tree produced by the `loopStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterLoopStatement?: (ctx: LoopStatementContext) => void; + /** + * Exit a parse tree produced by the `loopStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitLoopStatement?: (ctx: LoopStatementContext) => void; + /** + * Enter a parse tree produced by the `whileStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterWhileStatement?: (ctx: WhileStatementContext) => void; + /** + * Exit a parse tree produced by the `whileStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitWhileStatement?: (ctx: WhileStatementContext) => void; + /** + * Enter a parse tree produced by the `repeatStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + enterRepeatStatement?: (ctx: RepeatStatementContext) => void; + /** + * Exit a parse tree produced by the `repeatStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + */ + exitRepeatStatement?: (ctx: RepeatStatementContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.caseStatementWhenClause`. + * @param ctx the parse tree + */ + enterCaseStatementWhenClause?: (ctx: CaseStatementWhenClauseContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.caseStatementWhenClause`. + * @param ctx the parse tree + */ + exitCaseStatementWhenClause?: (ctx: CaseStatementWhenClauseContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.elseIfClause`. + * @param ctx the parse tree + */ + enterElseIfClause?: (ctx: ElseIfClauseContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.elseIfClause`. + * @param ctx the parse tree + */ + exitElseIfClause?: (ctx: ElseIfClauseContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.elseClause`. + * @param ctx the parse tree + */ + enterElseClause?: (ctx: ElseClauseContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.elseClause`. + * @param ctx the parse tree + */ + exitElseClause?: (ctx: ElseClauseContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.variableDeclaration`. + * @param ctx the parse tree + */ + enterVariableDeclaration?: (ctx: VariableDeclarationContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.variableDeclaration`. + * @param ctx the parse tree + */ + exitVariableDeclaration?: (ctx: VariableDeclarationContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.sqlStatementList`. + * @param ctx the parse tree + */ + enterSqlStatementList?: (ctx: SqlStatementListContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.sqlStatementList`. + * @param ctx the parse tree + */ + exitSqlStatementList?: (ctx: SqlStatementListContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.privilege`. * @param ctx the parse tree @@ -3136,85 +4193,85 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitPrivilege?: (ctx: PrivilegeContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * Enter a parse tree produced by `TrinoSqlParser.entityKind`. * @param ctx the parse tree */ - enterTableOrViewName?: (ctx: TableOrViewNameContext) => void; + enterEntityKind?: (ctx: EntityKindContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * Exit a parse tree produced by `TrinoSqlParser.entityKind`. * @param ctx the parse tree */ - exitTableOrViewName?: (ctx: TableOrViewNameContext) => void; + exitEntityKind?: (ctx: EntityKindContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.tableName`. + * Enter a parse tree produced by `TrinoSqlParser.grantObject`. * @param ctx the parse tree */ - enterTableName?: (ctx: TableNameContext) => void; + enterGrantObject?: (ctx: GrantObjectContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.tableName`. + * Exit a parse tree produced by `TrinoSqlParser.grantObject`. * @param ctx the parse tree */ - exitTableName?: (ctx: TableNameContext) => void; + exitGrantObject?: (ctx: GrantObjectContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * Enter a parse tree produced by `TrinoSqlParser.tableOrViewName`. * @param ctx the parse tree */ - enterTableNameCreate?: (ctx: TableNameCreateContext) => void; + enterTableOrViewName?: (ctx: TableOrViewNameContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * Exit a parse tree produced by `TrinoSqlParser.tableOrViewName`. * @param ctx the parse tree */ - exitTableNameCreate?: (ctx: TableNameCreateContext) => void; + exitTableOrViewName?: (ctx: TableOrViewNameContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.viewName`. + * Enter a parse tree produced by `TrinoSqlParser.tableRef`. * @param ctx the parse tree */ - enterViewName?: (ctx: ViewNameContext) => void; + enterTableRef?: (ctx: TableRefContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.viewName`. + * Exit a parse tree produced by `TrinoSqlParser.tableRef`. * @param ctx the parse tree */ - exitViewName?: (ctx: ViewNameContext) => void; + exitTableRef?: (ctx: TableRefContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * Enter a parse tree produced by `TrinoSqlParser.tableNameCreate`. * @param ctx the parse tree */ - enterViewNameCreate?: (ctx: ViewNameCreateContext) => void; + enterTableNameCreate?: (ctx: TableNameCreateContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * Exit a parse tree produced by `TrinoSqlParser.tableNameCreate`. * @param ctx the parse tree */ - exitViewNameCreate?: (ctx: ViewNameCreateContext) => void; + exitTableNameCreate?: (ctx: TableNameCreateContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.tablePath`. + * Enter a parse tree produced by `TrinoSqlParser.viewRef`. * @param ctx the parse tree */ - enterTablePath?: (ctx: TablePathContext) => void; + enterViewRef?: (ctx: ViewRefContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.tablePath`. + * Exit a parse tree produced by `TrinoSqlParser.viewRef`. * @param ctx the parse tree */ - exitTablePath?: (ctx: TablePathContext) => void; + exitViewRef?: (ctx: ViewRefContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.viewPath`. + * Enter a parse tree produced by `TrinoSqlParser.viewNameCreate`. * @param ctx the parse tree */ - enterViewPath?: (ctx: ViewPathContext) => void; + enterViewNameCreate?: (ctx: ViewNameCreateContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.viewPath`. + * Exit a parse tree produced by `TrinoSqlParser.viewNameCreate`. * @param ctx the parse tree */ - exitViewPath?: (ctx: ViewPathContext) => void; + exitViewNameCreate?: (ctx: ViewNameCreateContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.schemaName`. + * Enter a parse tree produced by `TrinoSqlParser.schemaRef`. * @param ctx the parse tree */ - enterSchemaName?: (ctx: SchemaNameContext) => void; + enterSchemaRef?: (ctx: SchemaRefContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.schemaName`. + * Exit a parse tree produced by `TrinoSqlParser.schemaRef`. * @param ctx the parse tree */ - exitSchemaName?: (ctx: SchemaNameContext) => void; + exitSchemaRef?: (ctx: SchemaRefContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.schemaNameCreate`. * @param ctx the parse tree @@ -3226,25 +4283,15 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitSchemaNameCreate?: (ctx: SchemaNameCreateContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.schemaPath`. - * @param ctx the parse tree - */ - enterSchemaPath?: (ctx: SchemaPathContext) => void; - /** - * Exit a parse tree produced by `TrinoSqlParser.schemaPath`. - * @param ctx the parse tree - */ - exitSchemaPath?: (ctx: SchemaPathContext) => void; - /** - * Enter a parse tree produced by `TrinoSqlParser.catalogName`. + * Enter a parse tree produced by `TrinoSqlParser.catalogRef`. * @param ctx the parse tree */ - enterCatalogName?: (ctx: CatalogNameContext) => void; + enterCatalogRef?: (ctx: CatalogRefContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.catalogName`. + * Exit a parse tree produced by `TrinoSqlParser.catalogRef`. * @param ctx the parse tree */ - exitCatalogName?: (ctx: CatalogNameContext) => void; + exitCatalogRef?: (ctx: CatalogRefContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.catalogNameCreate`. * @param ctx the parse tree @@ -3266,15 +4313,25 @@ export class TrinoSqlListener implements ParseTreeListener { */ exitFunctionName?: (ctx: FunctionNameContext) => void; /** - * Enter a parse tree produced by `TrinoSqlParser.columnName`. + * Enter a parse tree produced by `TrinoSqlParser.functionNameCreate`. + * @param ctx the parse tree + */ + enterFunctionNameCreate?: (ctx: FunctionNameCreateContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.functionNameCreate`. + * @param ctx the parse tree + */ + exitFunctionNameCreate?: (ctx: FunctionNameCreateContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.columnRef`. * @param ctx the parse tree */ - enterColumnName?: (ctx: ColumnNameContext) => void; + enterColumnRef?: (ctx: ColumnRefContext) => void; /** - * Exit a parse tree produced by `TrinoSqlParser.columnName`. + * Exit a parse tree produced by `TrinoSqlParser.columnRef`. * @param ctx the parse tree */ - exitColumnName?: (ctx: ColumnNameContext) => void; + exitColumnRef?: (ctx: ColumnRefContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.columnNameCreate`. * @param ctx the parse tree @@ -3295,6 +4352,26 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitQualifiedName?: (ctx: QualifiedNameContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.queryPeriod`. + * @param ctx the parse tree + */ + enterQueryPeriod?: (ctx: QueryPeriodContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.queryPeriod`. + * @param ctx the parse tree + */ + exitQueryPeriod?: (ctx: QueryPeriodContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.rangeType`. + * @param ctx the parse tree + */ + enterRangeType?: (ctx: RangeTypeContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.rangeType`. + * @param ctx the parse tree + */ + exitRangeType?: (ctx: RangeTypeContext) => void; /** * Enter a parse tree produced by the `specifiedPrincipal` * labeled alternative in `TrinoSqlParser.grantor`. @@ -3377,6 +4454,16 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitRoles?: (ctx: RolesContext) => void; + /** + * Enter a parse tree produced by `TrinoSqlParser.privilegeOrRole`. + * @param ctx the parse tree + */ + enterPrivilegeOrRole?: (ctx: PrivilegeOrRoleContext) => void; + /** + * Exit a parse tree produced by `TrinoSqlParser.privilegeOrRole`. + * @param ctx the parse tree + */ + exitPrivilegeOrRole?: (ctx: PrivilegeOrRoleContext) => void; /** * Enter a parse tree produced by the `unquotedIdentifier` * labeled alternative in `TrinoSqlParser.identifier`. @@ -3461,6 +4548,30 @@ export class TrinoSqlListener implements ParseTreeListener { * @param ctx the parse tree */ exitIntegerLiteral?: (ctx: IntegerLiteralContext) => void; + /** + * Enter a parse tree produced by the `identifierUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + */ + enterIdentifierUser?: (ctx: IdentifierUserContext) => void; + /** + * Exit a parse tree produced by the `identifierUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + */ + exitIdentifierUser?: (ctx: IdentifierUserContext) => void; + /** + * Enter a parse tree produced by the `stringUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + */ + enterStringUser?: (ctx: StringUserContext) => void; + /** + * Exit a parse tree produced by the `stringUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + */ + exitStringUser?: (ctx: StringUserContext) => void; /** * Enter a parse tree produced by `TrinoSqlParser.nonReserved`. * @param ctx the parse tree diff --git a/src/lib/trino/TrinoSqlParser.ts b/src/lib/trino/TrinoSqlParser.ts index 5b3f40c1..bf394649 100644 --- a/src/lib/trino/TrinoSqlParser.ts +++ b/src/lib/trino/TrinoSqlParser.ts @@ -33,504 +33,643 @@ export class TrinoSqlParser extends SQLParserBase { public static readonly T__13 = 14; public static readonly T__14 = 15; public static readonly T__15 = 16; - public static readonly KW_ADD = 17; - public static readonly KW_ADMIN = 18; - public static readonly KW_AFTER = 19; - public static readonly KW_ALL = 20; - public static readonly KW_ALTER = 21; - public static readonly KW_ANALYZE = 22; - public static readonly KW_AND = 23; - public static readonly KW_ANY = 24; - public static readonly KW_ARRAY = 25; - public static readonly KW_AS = 26; - public static readonly KW_ASC = 27; - public static readonly KW_AT = 28; - public static readonly KW_AUTHORIZATION = 29; - public static readonly KW_BERNOULLI = 30; - public static readonly KW_BETWEEN = 31; - public static readonly KW_BY = 32; - public static readonly KW_CALL = 33; - public static readonly KW_CASCADE = 34; - public static readonly KW_CASE = 35; - public static readonly KW_CAST = 36; - public static readonly KW_CATALOGS = 37; - public static readonly KW_COLUMN = 38; - public static readonly KW_COLUMNS = 39; - public static readonly KW_COMMENT = 40; - public static readonly KW_COMMIT = 41; - public static readonly KW_COMMITTED = 42; - public static readonly KW_CONSTRAINT = 43; - public static readonly KW_CREATE = 44; - public static readonly KW_CROSS = 45; - public static readonly KW_CUBE = 46; - public static readonly KW_CURRENT = 47; - public static readonly KW_CURRENT_CATALOG = 48; - public static readonly KW_CURRENT_DATE = 49; - public static readonly KW_CURRENT_PATH = 50; - public static readonly KW_CURRENT_ROLE = 51; - public static readonly KW_CURRENT_SCHEMA = 52; - public static readonly KW_CURRENT_TIME = 53; - public static readonly KW_CURRENT_TIMESTAMP = 54; - public static readonly KW_CURRENT_USER = 55; - public static readonly KW_DATA = 56; - public static readonly KW_DATE = 57; - public static readonly KW_DAY = 58; - public static readonly KW_DEFAULT = 59; - public static readonly KW_DEALLOCATE = 60; - public static readonly KW_DEFINER = 61; - public static readonly KW_DELETE = 62; - public static readonly KW_DESC = 63; - public static readonly KW_DESCRIBE = 64; - public static readonly KW_DEFINE = 65; - public static readonly KW_DISTINCT = 66; - public static readonly KW_DISTRIBUTED = 67; - public static readonly KW_DOUBLE = 68; - public static readonly KW_DROP = 69; - public static readonly KW_ELSE = 70; - public static readonly KW_EMPTY = 71; - public static readonly KW_END = 72; - public static readonly KW_ESCAPE = 73; - public static readonly KW_EXCEPT = 74; - public static readonly KW_EXCLUDING = 75; - public static readonly KW_EXECUTE = 76; - public static readonly KW_EXISTS = 77; - public static readonly KW_EXPLAIN = 78; - public static readonly KW_EXTRACT = 79; - public static readonly KW_FALSE = 80; - public static readonly KW_FETCH = 81; - public static readonly KW_FILTER = 82; - public static readonly KW_FINAL = 83; - public static readonly KW_FIRST = 84; - public static readonly KW_FOLLOWING = 85; - public static readonly KW_FOR = 86; - public static readonly KW_FORMAT = 87; - public static readonly KW_FROM = 88; - public static readonly KW_FULL = 89; - public static readonly KW_FUNCTIONS = 90; - public static readonly KW_GRANT = 91; - public static readonly KW_GRANTED = 92; - public static readonly KW_GRANTS = 93; - public static readonly KW_DENY = 94; - public static readonly KW_GRAPHVIZ = 95; - public static readonly KW_GROUP = 96; - public static readonly KW_GROUPING = 97; - public static readonly KW_GROUPS = 98; - public static readonly KW_HAVING = 99; - public static readonly KW_HOUR = 100; - public static readonly KW_IF = 101; - public static readonly KW_IGNORE = 102; - public static readonly KW_IN = 103; - public static readonly KW_INCLUDING = 104; - public static readonly KW_INITIAL = 105; - public static readonly KW_INNER = 106; - public static readonly KW_INPUT = 107; - public static readonly KW_INSERT = 108; - public static readonly KW_INTERSECT = 109; - public static readonly KW_INTERVAL = 110; - public static readonly KW_INTO = 111; - public static readonly KW_INVOKER = 112; - public static readonly KW_IO = 113; - public static readonly KW_IS = 114; - public static readonly KW_ISOLATION = 115; - public static readonly KW_JOIN = 116; - public static readonly KW_JSON = 117; - public static readonly KW_LAST = 118; - public static readonly KW_LATERAL = 119; - public static readonly KW_LEFT = 120; - public static readonly KW_LEVEL = 121; - public static readonly KW_LIKE = 122; - public static readonly KW_LIMIT = 123; - public static readonly KW_LOCAL = 124; - public static readonly KW_LOCALTIME = 125; - public static readonly KW_LOCALTIMESTAMP = 126; - public static readonly KW_LOGICAL = 127; - public static readonly KW_MAP = 128; - public static readonly KW_MATCH = 129; - public static readonly KW_MATCHED = 130; - public static readonly KW_MATCHES = 131; - public static readonly KW_MATCH_RECOGNIZE = 132; - public static readonly KW_MATERIALIZED = 133; - public static readonly KW_MEASURES = 134; - public static readonly KW_MERGE = 135; - public static readonly KW_MINUTE = 136; - public static readonly KW_MONTH = 137; - public static readonly KW_NATURAL = 138; - public static readonly KW_NEXT = 139; - public static readonly KW_NFC = 140; - public static readonly KW_NFD = 141; - public static readonly KW_NFKC = 142; - public static readonly KW_NFKD = 143; - public static readonly KW_NO = 144; - public static readonly KW_NONE = 145; - public static readonly KW_NORMALIZE = 146; - public static readonly KW_NOT = 147; - public static readonly KW_NULL = 148; - public static readonly KW_NULLIF = 149; - public static readonly KW_NULLS = 150; - public static readonly KW_OFFSET = 151; - public static readonly KW_OMIT = 152; - public static readonly KW_ON = 153; - public static readonly KW_ONE = 154; - public static readonly KW_ONLY = 155; - public static readonly KW_OPTION = 156; - public static readonly KW_OR = 157; - public static readonly KW_ORDER = 158; - public static readonly KW_ORDINALITY = 159; - public static readonly KW_OUTER = 160; - public static readonly KW_OUTPUT = 161; - public static readonly KW_OVER = 162; - public static readonly KW_PARTITION = 163; - public static readonly KW_PARTITIONS = 164; - public static readonly KW_PAST = 165; - public static readonly KW_PATH = 166; - public static readonly KW_PATTERN = 167; - public static readonly KW_PER = 168; - public static readonly KW_PERMUTE = 169; - public static readonly KW_POSITION = 170; - public static readonly KW_PRECEDING = 171; - public static readonly KW_PRECISION = 172; - public static readonly KW_PREPARE = 173; - public static readonly KW_PRIVILEGES = 174; - public static readonly KW_PROPERTIES = 175; - public static readonly KW_RANGE = 176; - public static readonly KW_READ = 177; - public static readonly KW_RECURSIVE = 178; - public static readonly KW_REFRESH = 179; - public static readonly KW_RENAME = 180; - public static readonly KW_REPEATABLE = 181; - public static readonly KW_REPLACE = 182; - public static readonly KW_RESET = 183; - public static readonly KW_RESPECT = 184; - public static readonly KW_RESTRICT = 185; - public static readonly KW_REVOKE = 186; - public static readonly KW_RIGHT = 187; - public static readonly KW_ROLE = 188; - public static readonly KW_ROLES = 189; - public static readonly KW_ROLLBACK = 190; - public static readonly KW_ROLLUP = 191; - public static readonly KW_ROW = 192; - public static readonly KW_ROWS = 193; - public static readonly KW_RUNNING = 194; - public static readonly KW_SCHEMA = 195; - public static readonly KW_SCHEMAS = 196; - public static readonly KW_SECOND = 197; - public static readonly KW_SECURITY = 198; - public static readonly KW_SEEK = 199; - public static readonly KW_SELECT = 200; - public static readonly KW_SERIALIZABLE = 201; - public static readonly KW_SESSION = 202; - public static readonly KW_SET = 203; - public static readonly KW_SETS = 204; - public static readonly KW_SHOW = 205; - public static readonly KW_SOME = 206; - public static readonly KW_START = 207; - public static readonly KW_STATS = 208; - public static readonly KW_SUBSET = 209; - public static readonly KW_SUBSTRING = 210; - public static readonly KW_SYSTEM = 211; - public static readonly KW_TABLE = 212; - public static readonly KW_TABLES = 213; - public static readonly KW_TABLESAMPLE = 214; - public static readonly KW_TEXT = 215; - public static readonly KW_THEN = 216; - public static readonly KW_TIES = 217; - public static readonly KW_TIME = 218; - public static readonly KW_TIMESTAMP = 219; - public static readonly KW_TO = 220; - public static readonly KW_TRANSACTION = 221; - public static readonly KW_TRUNCATE = 222; - public static readonly KW_TRUE = 223; - public static readonly KW_TRY_CAST = 224; - public static readonly KW_TYPE = 225; - public static readonly KW_UESCAPE = 226; - public static readonly KW_UNBOUNDED = 227; - public static readonly KW_UNCOMMITTED = 228; - public static readonly KW_UNION = 229; - public static readonly KW_UNMATCHED = 230; - public static readonly KW_UNNEST = 231; - public static readonly KW_UPDATE = 232; - public static readonly KW_USE = 233; - public static readonly KW_USER = 234; - public static readonly KW_USING = 235; - public static readonly KW_VALIDATE = 236; - public static readonly KW_VALUES = 237; - public static readonly KW_VERBOSE = 238; - public static readonly KW_VIEW = 239; - public static readonly KW_WHEN = 240; - public static readonly KW_WHERE = 241; - public static readonly KW_WINDOW = 242; - public static readonly KW_WITH = 243; - public static readonly KW_WITHOUT = 244; - public static readonly KW_WORK = 245; - public static readonly KW_WRITE = 246; - public static readonly KW_YEAR = 247; - public static readonly KW_ZONE = 248; - public static readonly EQ = 249; - public static readonly NEQ = 250; - public static readonly LT = 251; - public static readonly LTE = 252; - public static readonly GT = 253; - public static readonly GTE = 254; - public static readonly PLUS = 255; - public static readonly MINUS = 256; - public static readonly ASTERISK = 257; - public static readonly SLASH = 258; - public static readonly PERCENT = 259; - public static readonly CONCAT = 260; - public static readonly QUESTION_MARK = 261; - public static readonly STRING = 262; - public static readonly UNICODE_STRING = 263; - public static readonly BINARY_LITERAL = 264; - public static readonly INTEGER_VALUE = 265; - public static readonly DECIMAL_VALUE = 266; - public static readonly DOUBLE_VALUE = 267; - public static readonly IDENTIFIER = 268; - public static readonly DIGIT_IDENTIFIER = 269; - public static readonly QUOTED_IDENTIFIER = 270; - public static readonly BACKQUOTED_IDENTIFIER = 271; - public static readonly SEMICOLON = 272; - public static readonly SIMPLE_COMMENT = 273; - public static readonly BRACKETED_COMMENT = 274; - public static readonly WS = 275; - public static readonly UNRECOGNIZED = 276; - public static readonly DELIMITER = 277; + public static readonly T__16 = 17; + public static readonly KW_ABSENT = 18; + public static readonly KW_ADD = 19; + public static readonly KW_ADMIN = 20; + public static readonly KW_AFTER = 21; + public static readonly KW_ALL = 22; + public static readonly KW_ALTER = 23; + public static readonly KW_ANALYZE = 24; + public static readonly KW_AND = 25; + public static readonly KW_ANY = 26; + public static readonly KW_ARRAY = 27; + public static readonly KW_AS = 28; + public static readonly KW_ASC = 29; + public static readonly KW_AT = 30; + public static readonly KW_AUTHORIZATION = 31; + public static readonly KW_BEGIN = 32; + public static readonly KW_BERNOULLI = 33; + public static readonly KW_BETWEEN = 34; + public static readonly KW_BOTH = 35; + public static readonly KW_BY = 36; + public static readonly KW_CALL = 37; + public static readonly KW_CALLED = 38; + public static readonly KW_CASCADE = 39; + public static readonly KW_CASE = 40; + public static readonly KW_CAST = 41; + public static readonly KW_CATALOG = 42; + public static readonly KW_CATALOGS = 43; + public static readonly KW_COLUMN = 44; + public static readonly KW_COLUMNS = 45; + public static readonly KW_COMMENT = 46; + public static readonly KW_COMMIT = 47; + public static readonly KW_COMMITTED = 48; + public static readonly KW_CONDITIONAL = 49; + public static readonly KW_CONSTRAINT = 50; + public static readonly KW_COUNT = 51; + public static readonly KW_COPARTITION = 52; + public static readonly KW_CREATE = 53; + public static readonly KW_CROSS = 54; + public static readonly KW_CUBE = 55; + public static readonly KW_CURRENT = 56; + public static readonly KW_CURRENT_CATALOG = 57; + public static readonly KW_CURRENT_DATE = 58; + public static readonly KW_CURRENT_PATH = 59; + public static readonly KW_CURRENT_ROLE = 60; + public static readonly KW_CURRENT_SCHEMA = 61; + public static readonly KW_CURRENT_TIME = 62; + public static readonly KW_CURRENT_TIMESTAMP = 63; + public static readonly KW_CURRENT_USER = 64; + public static readonly KW_DATA = 65; + public static readonly KW_DATE = 66; + public static readonly KW_DAY = 67; + public static readonly KW_DEALLOCATE = 68; + public static readonly KW_DECLARE = 69; + public static readonly KW_DEFAULT = 70; + public static readonly KW_DEFINE = 71; + public static readonly KW_DEFINER = 72; + public static readonly KW_DELETE = 73; + public static readonly KW_DENY = 74; + public static readonly KW_DESC = 75; + public static readonly KW_DESCRIBE = 76; + public static readonly KW_DESCRIPTOR = 77; + public static readonly KW_DETERMINISTIC = 78; + public static readonly KW_DISTINCT = 79; + public static readonly KW_DISTRIBUTED = 80; + public static readonly KW_DO = 81; + public static readonly KW_DOUBLE = 82; + public static readonly KW_DROP = 83; + public static readonly KW_ELSE = 84; + public static readonly KW_EMPTY = 85; + public static readonly KW_ELSEIF = 86; + public static readonly KW_ENCODING = 87; + public static readonly KW_END = 88; + public static readonly KW_ERROR = 89; + public static readonly KW_ESCAPE = 90; + public static readonly KW_EXCEPT = 91; + public static readonly KW_EXCLUDING = 92; + public static readonly KW_EXECUTE = 93; + public static readonly KW_EXISTS = 94; + public static readonly KW_EXPLAIN = 95; + public static readonly KW_EXTRACT = 96; + public static readonly KW_FALSE = 97; + public static readonly KW_FETCH = 98; + public static readonly KW_FILTER = 99; + public static readonly KW_FINAL = 100; + public static readonly KW_FIRST = 101; + public static readonly KW_FOLLOWING = 102; + public static readonly KW_FOR = 103; + public static readonly KW_FORMAT = 104; + public static readonly KW_FROM = 105; + public static readonly KW_FULL = 106; + public static readonly KW_FUNCTION = 107; + public static readonly KW_FUNCTIONS = 108; + public static readonly KW_GRACE = 109; + public static readonly KW_GRANT = 110; + public static readonly KW_GRANTED = 111; + public static readonly KW_GRANTS = 112; + public static readonly KW_GRAPHVIZ = 113; + public static readonly KW_GROUP = 114; + public static readonly KW_GROUPING = 115; + public static readonly KW_GROUPS = 116; + public static readonly KW_HAVING = 117; + public static readonly KW_HOUR = 118; + public static readonly KW_IF = 119; + public static readonly KW_IGNORE = 120; + public static readonly KW_IMMEDIATE = 121; + public static readonly KW_IN = 122; + public static readonly KW_INCLUDING = 123; + public static readonly KW_INITIAL = 124; + public static readonly KW_INNER = 125; + public static readonly KW_INPUT = 126; + public static readonly KW_INSERT = 127; + public static readonly KW_INTERSECT = 128; + public static readonly KW_INTERVAL = 129; + public static readonly KW_INTO = 130; + public static readonly KW_INVOKER = 131; + public static readonly KW_IO = 132; + public static readonly KW_IS = 133; + public static readonly KW_ISOLATION = 134; + public static readonly KW_ITERATE = 135; + public static readonly KW_JOIN = 136; + public static readonly KW_JSON = 137; + public static readonly KW_JSON_ARRAY = 138; + public static readonly KW_JSON_EXISTS = 139; + public static readonly KW_JSON_OBJECT = 140; + public static readonly KW_JSON_QUERY = 141; + public static readonly KW_JSON_TABLE = 142; + public static readonly KW_JSON_VALUE = 143; + public static readonly KW_KEEP = 144; + public static readonly KW_KEY = 145; + public static readonly KW_KEYS = 146; + public static readonly KW_LANGUAGE = 147; + public static readonly KW_LAST = 148; + public static readonly KW_LATERAL = 149; + public static readonly KW_LEADING = 150; + public static readonly KW_LEAVE = 151; + public static readonly KW_LEFT = 152; + public static readonly KW_LEVEL = 153; + public static readonly KW_LIKE = 154; + public static readonly KW_LIMIT = 155; + public static readonly KW_LISTAGG = 156; + public static readonly KW_LOCAL = 157; + public static readonly KW_LOCALTIME = 158; + public static readonly KW_LOCALTIMESTAMP = 159; + public static readonly KW_LOGICAL = 160; + public static readonly KW_LOOP = 161; + public static readonly KW_MAP = 162; + public static readonly KW_MATCH = 163; + public static readonly KW_MATCHED = 164; + public static readonly KW_MATCHES = 165; + public static readonly KW_MATCH_RECOGNIZE = 166; + public static readonly KW_MATERIALIZED = 167; + public static readonly KW_MEASURES = 168; + public static readonly KW_MERGE = 169; + public static readonly KW_MINUTE = 170; + public static readonly KW_MONTH = 171; + public static readonly KW_NATURAL = 172; + public static readonly KW_NESTED = 173; + public static readonly KW_NEXT = 174; + public static readonly KW_NFC = 175; + public static readonly KW_NFD = 176; + public static readonly KW_NFKC = 177; + public static readonly KW_NFKD = 178; + public static readonly KW_NO = 179; + public static readonly KW_NONE = 180; + public static readonly KW_NORMALIZE = 181; + public static readonly KW_NOT = 182; + public static readonly KW_NULL = 183; + public static readonly KW_NULLIF = 184; + public static readonly KW_NULLS = 185; + public static readonly KW_OBJECT = 186; + public static readonly KW_OF = 187; + public static readonly KW_OFFSET = 188; + public static readonly KW_OMIT = 189; + public static readonly KW_ON = 190; + public static readonly KW_ONE = 191; + public static readonly KW_ONLY = 192; + public static readonly KW_OPTION = 193; + public static readonly KW_OR = 194; + public static readonly KW_ORDER = 195; + public static readonly KW_ORDINALITY = 196; + public static readonly KW_OUTER = 197; + public static readonly KW_OUTPUT = 198; + public static readonly KW_OVER = 199; + public static readonly KW_OVERFLOW = 200; + public static readonly KW_PARTITION = 201; + public static readonly KW_PARTITIONS = 202; + public static readonly KW_PASSING = 203; + public static readonly KW_PAST = 204; + public static readonly KW_PATH = 205; + public static readonly KW_PATTERN = 206; + public static readonly KW_PER = 207; + public static readonly KW_PERIOD = 208; + public static readonly KW_PERMUTE = 209; + public static readonly KW_PLAN = 210; + public static readonly KW_POSITION = 211; + public static readonly KW_PRECEDING = 212; + public static readonly KW_PRECISION = 213; + public static readonly KW_PREPARE = 214; + public static readonly KW_PRIVILEGES = 215; + public static readonly KW_PROPERTIES = 216; + public static readonly KW_PRUNE = 217; + public static readonly KW_QUOTES = 218; + public static readonly KW_RANGE = 219; + public static readonly KW_READ = 220; + public static readonly KW_RECURSIVE = 221; + public static readonly KW_REFRESH = 222; + public static readonly KW_RENAME = 223; + public static readonly KW_REPEAT = 224; + public static readonly KW_REPEATABLE = 225; + public static readonly KW_REPLACE = 226; + public static readonly KW_RESET = 227; + public static readonly KW_RESPECT = 228; + public static readonly KW_RESTRICT = 229; + public static readonly KW_RETURN = 230; + public static readonly KW_RETURNING = 231; + public static readonly KW_RETURNS = 232; + public static readonly KW_REVOKE = 233; + public static readonly KW_RIGHT = 234; + public static readonly KW_ROLE = 235; + public static readonly KW_ROLES = 236; + public static readonly KW_ROLLBACK = 237; + public static readonly KW_ROLLUP = 238; + public static readonly KW_ROW = 239; + public static readonly KW_ROWS = 240; + public static readonly KW_RUNNING = 241; + public static readonly KW_SCALAR = 242; + public static readonly KW_SCHEMA = 243; + public static readonly KW_SCHEMAS = 244; + public static readonly KW_SECOND = 245; + public static readonly KW_SECURITY = 246; + public static readonly KW_SEEK = 247; + public static readonly KW_SELECT = 248; + public static readonly KW_SERIALIZABLE = 249; + public static readonly KW_SESSION = 250; + public static readonly KW_SET = 251; + public static readonly KW_SETS = 252; + public static readonly KW_SHOW = 253; + public static readonly KW_SOME = 254; + public static readonly KW_START = 255; + public static readonly KW_STATS = 256; + public static readonly KW_SUBSET = 257; + public static readonly KW_SUBSTRING = 258; + public static readonly KW_SYSTEM = 259; + public static readonly KW_TABLE = 260; + public static readonly KW_TABLES = 261; + public static readonly KW_TABLESAMPLE = 262; + public static readonly KW_TEXT = 263; + public static readonly KW_TEXT_STRING = 264; + public static readonly KW_THEN = 265; + public static readonly KW_TIES = 266; + public static readonly KW_TIME = 267; + public static readonly KW_TIMESTAMP = 268; + public static readonly KW_TO = 269; + public static readonly KW_TRAILING = 270; + public static readonly KW_TRANSACTION = 271; + public static readonly KW_TRIM = 272; + public static readonly KW_TRUE = 273; + public static readonly KW_TRUNCATE = 274; + public static readonly KW_TRY_CAST = 275; + public static readonly KW_TYPE = 276; + public static readonly KW_UESCAPE = 277; + public static readonly KW_UNBOUNDED = 278; + public static readonly KW_UNCOMMITTED = 279; + public static readonly KW_UNCONDITIONAL = 280; + public static readonly KW_UNION = 281; + public static readonly KW_UNIQUE = 282; + public static readonly KW_UNKNOWN = 283; + public static readonly KW_UNMATCHED = 284; + public static readonly KW_UNNEST = 285; + public static readonly KW_UNTIL = 286; + public static readonly KW_UPDATE = 287; + public static readonly KW_USE = 288; + public static readonly KW_USER = 289; + public static readonly KW_USING = 290; + public static readonly KW_UTF16 = 291; + public static readonly KW_UTF32 = 292; + public static readonly KW_UTF8 = 293; + public static readonly KW_VALIDATE = 294; + public static readonly KW_VALUE = 295; + public static readonly KW_VALUES = 296; + public static readonly KW_VERBOSE = 297; + public static readonly KW_VERSION = 298; + public static readonly KW_VIEW = 299; + public static readonly KW_WHEN = 300; + public static readonly KW_WHERE = 301; + public static readonly KW_WHILE = 302; + public static readonly KW_WINDOW = 303; + public static readonly KW_WITH = 304; + public static readonly KW_WITHIN = 305; + public static readonly KW_WITHOUT = 306; + public static readonly KW_WORK = 307; + public static readonly KW_WRAPPER = 308; + public static readonly KW_WRITE = 309; + public static readonly KW_YEAR = 310; + public static readonly KW_ZONE = 311; + public static readonly EQ = 312; + public static readonly NEQ = 313; + public static readonly LT = 314; + public static readonly LTE = 315; + public static readonly GT = 316; + public static readonly GTE = 317; + public static readonly PLUS = 318; + public static readonly MINUS = 319; + public static readonly ASTERISK = 320; + public static readonly SLASH = 321; + public static readonly PERCENT = 322; + public static readonly CONCAT = 323; + public static readonly QUESTION_MARK = 324; + public static readonly SEMICOLON = 325; + public static readonly STRING = 326; + public static readonly UNICODE_STRING = 327; + public static readonly BINARY_LITERAL = 328; + public static readonly INTEGER_VALUE = 329; + public static readonly DECIMAL_VALUE = 330; + public static readonly DOUBLE_VALUE = 331; + public static readonly IDENTIFIER = 332; + public static readonly DIGIT_IDENTIFIER = 333; + public static readonly QUOTED_IDENTIFIER = 334; + public static readonly BACKQUOTED_IDENTIFIER = 335; + public static readonly SIMPLE_COMMENT = 336; + public static readonly BRACKETED_COMMENT = 337; + public static readonly WS = 338; + public static readonly UNRECOGNIZED = 339; + public static readonly DELIMITER = 340; public static readonly RULE_program = 0; public static readonly RULE_statements = 1; - public static readonly RULE_standaloneClause = 2; - public static readonly RULE_singleStatement = 3; - public static readonly RULE_standaloneExpression = 4; - public static readonly RULE_standalonePathSpecification = 5; - public static readonly RULE_standaloneType = 6; - public static readonly RULE_standaloneRowPattern = 7; + public static readonly RULE_singleStatement = 2; + public static readonly RULE_standaloneExpression = 3; + public static readonly RULE_standalonePathSpecification = 4; + public static readonly RULE_standaloneType = 5; + public static readonly RULE_standaloneRowPattern = 6; + public static readonly RULE_standaloneFunctionSpecification = 7; public static readonly RULE_statement = 8; - public static readonly RULE_query = 9; - public static readonly RULE_with = 10; - public static readonly RULE_tableElement = 11; - public static readonly RULE_columnDefinition = 12; - public static readonly RULE_likeClause = 13; - public static readonly RULE_properties = 14; - public static readonly RULE_propertyAssignments = 15; - public static readonly RULE_property = 16; - public static readonly RULE_propertyValue = 17; - public static readonly RULE_queryNoWith = 18; - public static readonly RULE_limitRowCount = 19; - public static readonly RULE_rowCount = 20; - public static readonly RULE_queryTerm = 21; - public static readonly RULE_queryPrimary = 22; - public static readonly RULE_sortItem = 23; - public static readonly RULE_querySpecification = 24; - public static readonly RULE_groupBy = 25; - public static readonly RULE_groupingElement = 26; - public static readonly RULE_groupingSet = 27; - public static readonly RULE_groupingTerm = 28; - public static readonly RULE_windowDefinition = 29; - public static readonly RULE_windowSpecification = 30; - public static readonly RULE_namedQuery = 31; - public static readonly RULE_setQuantifier = 32; - public static readonly RULE_selectItem = 33; - public static readonly RULE_relation = 34; - public static readonly RULE_joinType = 35; - public static readonly RULE_joinCriteria = 36; - public static readonly RULE_sampledRelation = 37; - public static readonly RULE_sampleType = 38; - public static readonly RULE_patternRecognition = 39; - public static readonly RULE_measureDefinition = 40; - public static readonly RULE_rowsPerMatch = 41; - public static readonly RULE_emptyMatchHandling = 42; - public static readonly RULE_skipTo = 43; - public static readonly RULE_subsetDefinition = 44; - public static readonly RULE_variableDefinition = 45; - public static readonly RULE_aliasedRelation = 46; - public static readonly RULE_columnListCreate = 47; - public static readonly RULE_columnList = 48; - public static readonly RULE_columnAliases = 49; - public static readonly RULE_relationPrimary = 50; - public static readonly RULE_expression = 51; - public static readonly RULE_booleanExpression = 52; - public static readonly RULE_predicate = 53; - public static readonly RULE_valueExpression = 54; - public static readonly RULE_primaryExpression = 55; - public static readonly RULE_processingMode = 56; - public static readonly RULE_nullTreatment = 57; - public static readonly RULE_string = 58; - public static readonly RULE_timeZoneSpecifier = 59; - public static readonly RULE_comparisonOperator = 60; - public static readonly RULE_comparisonQuantifier = 61; - public static readonly RULE_booleanValue = 62; - public static readonly RULE_interval = 63; - public static readonly RULE_intervalField = 64; - public static readonly RULE_normalForm = 65; - public static readonly RULE_type = 66; - public static readonly RULE_rowField = 67; - public static readonly RULE_typeParameter = 68; - public static readonly RULE_whenClause = 69; - public static readonly RULE_filter = 70; - public static readonly RULE_mergeCase = 71; - public static readonly RULE_over = 72; - public static readonly RULE_windowFrame = 73; - public static readonly RULE_frameExtent = 74; - public static readonly RULE_frameBound = 75; - public static readonly RULE_rowPattern = 76; - public static readonly RULE_patternPrimary = 77; - public static readonly RULE_patternQuantifier = 78; - public static readonly RULE_updateAssignment = 79; - public static readonly RULE_explainOption = 80; - public static readonly RULE_transactionMode = 81; - public static readonly RULE_levelOfIsolation = 82; - public static readonly RULE_callArgument = 83; - public static readonly RULE_pathElement = 84; - public static readonly RULE_pathSpecification = 85; - public static readonly RULE_privilege = 86; - public static readonly RULE_tableOrViewName = 87; - public static readonly RULE_tableName = 88; - public static readonly RULE_tableNameCreate = 89; - public static readonly RULE_viewName = 90; - public static readonly RULE_viewNameCreate = 91; - public static readonly RULE_tablePath = 92; - public static readonly RULE_viewPath = 93; - public static readonly RULE_schemaName = 94; - public static readonly RULE_schemaNameCreate = 95; - public static readonly RULE_schemaPath = 96; - public static readonly RULE_catalogName = 97; - public static readonly RULE_catalogNameCreate = 98; - public static readonly RULE_functionName = 99; - public static readonly RULE_columnName = 100; - public static readonly RULE_columnNameCreate = 101; - public static readonly RULE_qualifiedName = 102; - public static readonly RULE_grantor = 103; - public static readonly RULE_principal = 104; - public static readonly RULE_roles = 105; - public static readonly RULE_identifier = 106; - public static readonly RULE_number = 107; - public static readonly RULE_nonReserved = 108; + public static readonly RULE_rootQuery = 9; + public static readonly RULE_withFunction = 10; + public static readonly RULE_query = 11; + public static readonly RULE_with = 12; + public static readonly RULE_tableElement = 13; + public static readonly RULE_columnDefinition = 14; + public static readonly RULE_likeClause = 15; + public static readonly RULE_properties = 16; + public static readonly RULE_propertyAssignments = 17; + public static readonly RULE_property = 18; + public static readonly RULE_propertyValue = 19; + public static readonly RULE_queryNoWith = 20; + public static readonly RULE_limitRowCount = 21; + public static readonly RULE_rowCount = 22; + public static readonly RULE_queryTerm = 23; + public static readonly RULE_queryPrimary = 24; + public static readonly RULE_sortItem = 25; + public static readonly RULE_querySpecification = 26; + public static readonly RULE_groupBy = 27; + public static readonly RULE_groupingElement = 28; + public static readonly RULE_groupingSet = 29; + public static readonly RULE_groupingTerm = 30; + public static readonly RULE_windowDefinition = 31; + public static readonly RULE_windowSpecification = 32; + public static readonly RULE_namedQuery = 33; + public static readonly RULE_setQuantifier = 34; + public static readonly RULE_selectItem = 35; + public static readonly RULE_relation = 36; + public static readonly RULE_joinType = 37; + public static readonly RULE_joinCriteria = 38; + public static readonly RULE_sampledRelation = 39; + public static readonly RULE_sampleType = 40; + public static readonly RULE_trimsSpecification = 41; + public static readonly RULE_listAggOverflowBehavior = 42; + public static readonly RULE_listaggCountIndication = 43; + public static readonly RULE_patternRecognition = 44; + public static readonly RULE_measureDefinition = 45; + public static readonly RULE_rowsPerMatch = 46; + public static readonly RULE_emptyMatchHandling = 47; + public static readonly RULE_skipTo = 48; + public static readonly RULE_subsetDefinition = 49; + public static readonly RULE_variableDefinition = 50; + public static readonly RULE_aliasedRelation = 51; + public static readonly RULE_columnListCreate = 52; + public static readonly RULE_columnList = 53; + public static readonly RULE_columnAliases = 54; + public static readonly RULE_relationPrimary = 55; + public static readonly RULE_jsonTableColumn = 56; + public static readonly RULE_jsonTableSpecificPlan = 57; + public static readonly RULE_jsonTablePathName = 58; + public static readonly RULE_planPrimary = 59; + public static readonly RULE_jsonTableDefaultPlan = 60; + public static readonly RULE_tableFunctionCall = 61; + public static readonly RULE_tableFunctionArgument = 62; + public static readonly RULE_tableArgument = 63; + public static readonly RULE_tableArgumentRelation = 64; + public static readonly RULE_descriptorArgument = 65; + public static readonly RULE_descriptorField = 66; + public static readonly RULE_copartitionTables = 67; + public static readonly RULE_expression = 68; + public static readonly RULE_booleanExpression = 69; + public static readonly RULE_predicate = 70; + public static readonly RULE_valueExpression = 71; + public static readonly RULE_primaryExpression = 72; + public static readonly RULE_jsonPathInvocation = 73; + public static readonly RULE_jsonValueExpression = 74; + public static readonly RULE_jsonRepresentation = 75; + public static readonly RULE_jsonArgument = 76; + public static readonly RULE_jsonExistsErrorBehavior = 77; + public static readonly RULE_jsonValueBehavior = 78; + public static readonly RULE_jsonQueryWrapperBehavior = 79; + public static readonly RULE_jsonQueryBehavior = 80; + public static readonly RULE_jsonObjectMember = 81; + public static readonly RULE_processingMode = 82; + public static readonly RULE_nullTreatment = 83; + public static readonly RULE_string = 84; + public static readonly RULE_timeZoneSpecifier = 85; + public static readonly RULE_comparisonOperator = 86; + public static readonly RULE_comparisonQuantifier = 87; + public static readonly RULE_booleanValue = 88; + public static readonly RULE_interval = 89; + public static readonly RULE_intervalField = 90; + public static readonly RULE_normalForm = 91; + public static readonly RULE_type = 92; + public static readonly RULE_rowField = 93; + public static readonly RULE_typeParameter = 94; + public static readonly RULE_whenClause = 95; + public static readonly RULE_filter = 96; + public static readonly RULE_mergeCase = 97; + public static readonly RULE_over = 98; + public static readonly RULE_windowFrame = 99; + public static readonly RULE_frameExtent = 100; + public static readonly RULE_frameBound = 101; + public static readonly RULE_rowPattern = 102; + public static readonly RULE_patternPrimary = 103; + public static readonly RULE_patternQuantifier = 104; + public static readonly RULE_updateAssignment = 105; + public static readonly RULE_explainOption = 106; + public static readonly RULE_transactionMode = 107; + public static readonly RULE_levelOfIsolation = 108; + public static readonly RULE_callArgument = 109; + public static readonly RULE_pathElement = 110; + public static readonly RULE_pathSpecification = 111; + public static readonly RULE_functionSpecification = 112; + public static readonly RULE_functionDeclaration = 113; + public static readonly RULE_functionSignature = 114; + public static readonly RULE_parameterDeclaration = 115; + public static readonly RULE_returnsClause = 116; + public static readonly RULE_routineCharacteristic = 117; + public static readonly RULE_controlStatement = 118; + public static readonly RULE_caseStatementWhenClause = 119; + public static readonly RULE_elseIfClause = 120; + public static readonly RULE_elseClause = 121; + public static readonly RULE_variableDeclaration = 122; + public static readonly RULE_sqlStatementList = 123; + public static readonly RULE_privilege = 124; + public static readonly RULE_entityKind = 125; + public static readonly RULE_grantObject = 126; + public static readonly RULE_tableOrViewName = 127; + public static readonly RULE_tableRef = 128; + public static readonly RULE_tableNameCreate = 129; + public static readonly RULE_viewRef = 130; + public static readonly RULE_viewNameCreate = 131; + public static readonly RULE_schemaRef = 132; + public static readonly RULE_schemaNameCreate = 133; + public static readonly RULE_catalogRef = 134; + public static readonly RULE_catalogNameCreate = 135; + public static readonly RULE_functionName = 136; + public static readonly RULE_functionNameCreate = 137; + public static readonly RULE_columnRef = 138; + public static readonly RULE_columnNameCreate = 139; + public static readonly RULE_qualifiedName = 140; + public static readonly RULE_queryPeriod = 141; + public static readonly RULE_rangeType = 142; + public static readonly RULE_grantor = 143; + public static readonly RULE_principal = 144; + public static readonly RULE_roles = 145; + public static readonly RULE_privilegeOrRole = 146; + public static readonly RULE_identifier = 147; + public static readonly RULE_number = 148; + public static readonly RULE_authorizationUser = 149; + public static readonly RULE_nonReserved = 150; public static readonly literalNames = [ - null, "'('", "')'", "','", "'.'", "'SKIP'", "'->'", "'['", "']'", - "'|'", "'^'", "'$'", "'{-'", "'-}'", "'{'", "'}'", "'=>'", "'ADD'", - "'ADMIN'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", "'AND'", - "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", - "'BERNOULLI'", "'BETWEEN'", "'BY'", "'CALL'", "'CASCADE'", "'CASE'", - "'CAST'", "'CATALOGS'", "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", - "'COMMITTED'", "'CONSTRAINT'", "'CREATE'", "'CROSS'", "'CUBE'", - "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", "'CURRENT_PATH'", - "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", "'CURRENT_TIME'", "'CURRENT_TIMESTAMP'", - "'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", "'DEFAULT'", "'DEALLOCATE'", - "'DEFINER'", "'DELETE'", "'DESC'", "'DESCRIBE'", "'DEFINE'", "'DISTINCT'", - "'DISTRIBUTED'", "'DOUBLE'", "'DROP'", "'ELSE'", "'EMPTY'", "'END'", - "'ESCAPE'", "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", - "'EXPLAIN'", "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", - "'FIRST'", "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", - "'FUNCTIONS'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'DENY'", "'GRAPHVIZ'", + null, "'('", "')'", "','", "'.'", "'SKIP'", "'=>'", "'->'", "'['", + "']'", "':'", "'|'", "'^'", "'$'", "'{-'", "'-}'", "'{'", "'}'", + "'ABSENT'", "'ADD'", "'ADMIN'", "'AFTER'", "'ALL'", "'ALTER'", "'ANALYZE'", + "'AND'", "'ANY'", "'ARRAY'", "'AS'", "'ASC'", "'AT'", "'AUTHORIZATION'", + "'BEGIN'", "'BERNOULLI'", "'BETWEEN'", "'BOTH'", "'BY'", "'CALL'", + "'CALLED'", "'CASCADE'", "'CASE'", "'CAST'", "'CATALOG'", "'CATALOGS'", + "'COLUMN'", "'COLUMNS'", "'COMMENT'", "'COMMIT'", "'COMMITTED'", + "'CONDITIONAL'", "'CONSTRAINT'", "'COUNT'", "'COPARTITION'", "'CREATE'", + "'CROSS'", "'CUBE'", "'CURRENT'", "'CURRENT_CATALOG'", "'CURRENT_DATE'", + "'CURRENT_PATH'", "'CURRENT_ROLE'", "'CURRENT_SCHEMA'", "'CURRENT_TIME'", + "'CURRENT_TIMESTAMP'", "'CURRENT_USER'", "'DATA'", "'DATE'", "'DAY'", + "'DEALLOCATE'", "'DECLARE'", "'DEFAULT'", "'DEFINE'", "'DEFINER'", + "'DELETE'", "'DENY'", "'DESC'", "'DESCRIBE'", "'DESCRIPTOR'", "'DETERMINISTIC'", + "'DISTINCT'", "'DISTRIBUTED'", "'DO'", "'DOUBLE'", "'DROP'", "'ELSE'", + "'EMPTY'", "'ELSEIF'", "'ENCODING'", "'END'", "'ERROR'", "'ESCAPE'", + "'EXCEPT'", "'EXCLUDING'", "'EXECUTE'", "'EXISTS'", "'EXPLAIN'", + "'EXTRACT'", "'FALSE'", "'FETCH'", "'FILTER'", "'FINAL'", "'FIRST'", + "'FOLLOWING'", "'FOR'", "'FORMAT'", "'FROM'", "'FULL'", "'FUNCTION'", + "'FUNCTIONS'", "'GRACE'", "'GRANT'", "'GRANTED'", "'GRANTS'", "'GRAPHVIZ'", "'GROUP'", "'GROUPING'", "'GROUPS'", "'HAVING'", "'HOUR'", "'IF'", - "'IGNORE'", "'IN'", "'INCLUDING'", "'INITIAL'", "'INNER'", "'INPUT'", - "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'INVOKER'", - "'IO'", "'IS'", "'ISOLATION'", "'JOIN'", "'JSON'", "'LAST'", "'LATERAL'", - "'LEFT'", "'LEVEL'", "'LIKE'", "'LIMIT'", "'LOCAL'", "'LOCALTIME'", - "'LOCALTIMESTAMP'", "'LOGICAL'", "'MAP'", "'MATCH'", "'MATCHED'", - "'MATCHES'", "'MATCH_RECOGNIZE'", "'MATERIALIZED'", "'MEASURES'", - "'MERGE'", "'MINUTE'", "'MONTH'", "'NATURAL'", "'NEXT'", "'NFC'", + "'IGNORE'", "'IMMEDIATE'", "'IN'", "'INCLUDING'", "'INITIAL'", "'INNER'", + "'INPUT'", "'INSERT'", "'INTERSECT'", "'INTERVAL'", "'INTO'", "'INVOKER'", + "'IO'", "'IS'", "'ISOLATION'", "'ITERATE'", "'JOIN'", "'JSON'", + "'JSON_ARRAY'", "'JSON_EXISTS'", "'JSON_OBJECT'", "'JSON_QUERY'", + "'JSON_TABLE'", "'JSON_VALUE'", "'KEEP'", "'KEY'", "'KEYS'", "'LANGUAGE'", + "'LAST'", "'LATERAL'", "'LEADING'", "'LEAVE'", "'LEFT'", "'LEVEL'", + "'LIKE'", "'LIMIT'", "'LISTAGG'", "'LOCAL'", "'LOCALTIME'", "'LOCALTIMESTAMP'", + "'LOGICAL'", "'LOOP'", "'MAP'", "'MATCH'", "'MATCHED'", "'MATCHES'", + "'MATCH_RECOGNIZE'", "'MATERIALIZED'", "'MEASURES'", "'MERGE'", + "'MINUTE'", "'MONTH'", "'NATURAL'", "'NESTED'", "'NEXT'", "'NFC'", "'NFD'", "'NFKC'", "'NFKD'", "'NO'", "'NONE'", "'NORMALIZE'", "'NOT'", - "'NULL'", "'NULLIF'", "'NULLS'", "'OFFSET'", "'OMIT'", "'ON'", "'ONE'", - "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", "'ORDINALITY'", "'OUTER'", - "'OUTPUT'", "'OVER'", "'PARTITION'", "'PARTITIONS'", "'PAST'", "'PATH'", - "'PATTERN'", "'PER'", "'PERMUTE'", "'POSITION'", "'PRECEDING'", - "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'RANGE'", - "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", "'REPEATABLE'", - "'REPLACE'", "'RESET'", "'RESPECT'", "'RESTRICT'", "'REVOKE'", "'RIGHT'", - "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", "'ROWS'", - "'RUNNING'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", "'SECURITY'", - "'SEEK'", "'SELECT'", "'SERIALIZABLE'", "'SESSION'", "'SET'", "'SETS'", - "'SHOW'", "'SOME'", "'START'", "'STATS'", "'SUBSET'", "'SUBSTRING'", - "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", "'TEXT'", "'THEN'", - "'TIES'", "'TIME'", "'TIMESTAMP'", "'TO'", "'TRANSACTION'", "'TRUNCATE'", - "'TRUE'", "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", - "'UNION'", "'UNMATCHED'", "'UNNEST'", "'UPDATE'", "'USE'", "'USER'", - "'USING'", "'VALIDATE'", "'VALUES'", "'VERBOSE'", "'VIEW'", "'WHEN'", - "'WHERE'", "'WINDOW'", "'WITH'", "'WITHOUT'", "'WORK'", "'WRITE'", - "'YEAR'", "'ZONE'", "'='", null, "'<'", "'<='", "'>'", "'>='", "'+'", - "'-'", "'*'", "'/'", "'%'", "'||'", "'?'", null, null, null, null, - null, null, null, null, null, null, "';'" + "'NULL'", "'NULLIF'", "'NULLS'", "'OBJECT'", "'OF'", "'OFFSET'", + "'OMIT'", "'ON'", "'ONE'", "'ONLY'", "'OPTION'", "'OR'", "'ORDER'", + "'ORDINALITY'", "'OUTER'", "'OUTPUT'", "'OVER'", "'OVERFLOW'", "'PARTITION'", + "'PARTITIONS'", "'PASSING'", "'PAST'", "'PATH'", "'PATTERN'", "'PER'", + "'PERIOD'", "'PERMUTE'", "'PLAN'", "'POSITION'", "'PRECEDING'", + "'PRECISION'", "'PREPARE'", "'PRIVILEGES'", "'PROPERTIES'", "'PRUNE'", + "'QUOTES'", "'RANGE'", "'READ'", "'RECURSIVE'", "'REFRESH'", "'RENAME'", + "'REPEAT'", "'REPEATABLE'", "'REPLACE'", "'RESET'", "'RESPECT'", + "'RESTRICT'", "'RETURN'", "'RETURNING'", "'RETURNS'", "'REVOKE'", + "'RIGHT'", "'ROLE'", "'ROLES'", "'ROLLBACK'", "'ROLLUP'", "'ROW'", + "'ROWS'", "'RUNNING'", "'SCALAR'", "'SCHEMA'", "'SCHEMAS'", "'SECOND'", + "'SECURITY'", "'SEEK'", "'SELECT'", "'SERIALIZABLE'", "'SESSION'", + "'SET'", "'SETS'", "'SHOW'", "'SOME'", "'START'", "'STATS'", "'SUBSET'", + "'SUBSTRING'", "'SYSTEM'", "'TABLE'", "'TABLES'", "'TABLESAMPLE'", + "'TEXT'", "'STRING'", "'THEN'", "'TIES'", "'TIME'", "'TIMESTAMP'", + "'TO'", "'TRAILING'", "'TRANSACTION'", "'TRIM'", "'TRUE'", "'TRUNCATE'", + "'TRY_CAST'", "'TYPE'", "'UESCAPE'", "'UNBOUNDED'", "'UNCOMMITTED'", + "'UNCONDITIONAL'", "'UNION'", "'UNIQUE'", "'UNKNOWN'", "'UNMATCHED'", + "'UNNEST'", "'UNTIL'", "'UPDATE'", "'USE'", "'USER'", "'USING'", + "'UTF16'", "'UTF32'", "'UTF8'", "'VALIDATE'", "'VALUE'", "'VALUES'", + "'VERBOSE'", "'VERSION'", "'VIEW'", "'WHEN'", "'WHERE'", "'WHILE'", + "'WINDOW'", "'WITH'", "'WITHIN'", "'WITHOUT'", "'WORK'", "'WRAPPER'", + "'WRITE'", "'YEAR'", "'ZONE'", "'='", null, "'<'", "'<='", "'>'", + "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", "'||'", "'?'", "';'" ]; public static readonly symbolicNames = [ null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, "KW_ADD", "KW_ADMIN", "KW_AFTER", - "KW_ALL", "KW_ALTER", "KW_ANALYZE", "KW_AND", "KW_ANY", "KW_ARRAY", - "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", "KW_BERNOULLI", - "KW_BETWEEN", "KW_BY", "KW_CALL", "KW_CASCADE", "KW_CASE", "KW_CAST", - "KW_CATALOGS", "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", - "KW_COMMITTED", "KW_CONSTRAINT", "KW_CREATE", "KW_CROSS", "KW_CUBE", - "KW_CURRENT", "KW_CURRENT_CATALOG", "KW_CURRENT_DATE", "KW_CURRENT_PATH", - "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", - "KW_CURRENT_USER", "KW_DATA", "KW_DATE", "KW_DAY", "KW_DEFAULT", - "KW_DEALLOCATE", "KW_DEFINER", "KW_DELETE", "KW_DESC", "KW_DESCRIBE", - "KW_DEFINE", "KW_DISTINCT", "KW_DISTRIBUTED", "KW_DOUBLE", "KW_DROP", - "KW_ELSE", "KW_EMPTY", "KW_END", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", + null, null, null, null, null, null, null, "KW_ABSENT", "KW_ADD", + "KW_ADMIN", "KW_AFTER", "KW_ALL", "KW_ALTER", "KW_ANALYZE", "KW_AND", + "KW_ANY", "KW_ARRAY", "KW_AS", "KW_ASC", "KW_AT", "KW_AUTHORIZATION", + "KW_BEGIN", "KW_BERNOULLI", "KW_BETWEEN", "KW_BOTH", "KW_BY", "KW_CALL", + "KW_CALLED", "KW_CASCADE", "KW_CASE", "KW_CAST", "KW_CATALOG", "KW_CATALOGS", + "KW_COLUMN", "KW_COLUMNS", "KW_COMMENT", "KW_COMMIT", "KW_COMMITTED", + "KW_CONDITIONAL", "KW_CONSTRAINT", "KW_COUNT", "KW_COPARTITION", + "KW_CREATE", "KW_CROSS", "KW_CUBE", "KW_CURRENT", "KW_CURRENT_CATALOG", + "KW_CURRENT_DATE", "KW_CURRENT_PATH", "KW_CURRENT_ROLE", "KW_CURRENT_SCHEMA", + "KW_CURRENT_TIME", "KW_CURRENT_TIMESTAMP", "KW_CURRENT_USER", "KW_DATA", + "KW_DATE", "KW_DAY", "KW_DEALLOCATE", "KW_DECLARE", "KW_DEFAULT", + "KW_DEFINE", "KW_DEFINER", "KW_DELETE", "KW_DENY", "KW_DESC", "KW_DESCRIBE", + "KW_DESCRIPTOR", "KW_DETERMINISTIC", "KW_DISTINCT", "KW_DISTRIBUTED", + "KW_DO", "KW_DOUBLE", "KW_DROP", "KW_ELSE", "KW_EMPTY", "KW_ELSEIF", + "KW_ENCODING", "KW_END", "KW_ERROR", "KW_ESCAPE", "KW_EXCEPT", "KW_EXCLUDING", "KW_EXECUTE", "KW_EXISTS", "KW_EXPLAIN", "KW_EXTRACT", "KW_FALSE", "KW_FETCH", "KW_FILTER", "KW_FINAL", "KW_FIRST", "KW_FOLLOWING", - "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTIONS", "KW_GRANT", - "KW_GRANTED", "KW_GRANTS", "KW_DENY", "KW_GRAPHVIZ", "KW_GROUP", - "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", "KW_IF", "KW_IGNORE", - "KW_IN", "KW_INCLUDING", "KW_INITIAL", "KW_INNER", "KW_INPUT", "KW_INSERT", - "KW_INTERSECT", "KW_INTERVAL", "KW_INTO", "KW_INVOKER", "KW_IO", - "KW_IS", "KW_ISOLATION", "KW_JOIN", "KW_JSON", "KW_LAST", "KW_LATERAL", - "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LOCAL", "KW_LOCALTIME", - "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_MAP", "KW_MATCH", "KW_MATCHED", - "KW_MATCHES", "KW_MATCH_RECOGNIZE", "KW_MATERIALIZED", "KW_MEASURES", - "KW_MERGE", "KW_MINUTE", "KW_MONTH", "KW_NATURAL", "KW_NEXT", "KW_NFC", - "KW_NFD", "KW_NFKC", "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", - "KW_NOT", "KW_NULL", "KW_NULLIF", "KW_NULLS", "KW_OFFSET", "KW_OMIT", + "KW_FOR", "KW_FORMAT", "KW_FROM", "KW_FULL", "KW_FUNCTION", "KW_FUNCTIONS", + "KW_GRACE", "KW_GRANT", "KW_GRANTED", "KW_GRANTS", "KW_GRAPHVIZ", + "KW_GROUP", "KW_GROUPING", "KW_GROUPS", "KW_HAVING", "KW_HOUR", + "KW_IF", "KW_IGNORE", "KW_IMMEDIATE", "KW_IN", "KW_INCLUDING", "KW_INITIAL", + "KW_INNER", "KW_INPUT", "KW_INSERT", "KW_INTERSECT", "KW_INTERVAL", + "KW_INTO", "KW_INVOKER", "KW_IO", "KW_IS", "KW_ISOLATION", "KW_ITERATE", + "KW_JOIN", "KW_JSON", "KW_JSON_ARRAY", "KW_JSON_EXISTS", "KW_JSON_OBJECT", + "KW_JSON_QUERY", "KW_JSON_TABLE", "KW_JSON_VALUE", "KW_KEEP", "KW_KEY", + "KW_KEYS", "KW_LANGUAGE", "KW_LAST", "KW_LATERAL", "KW_LEADING", + "KW_LEAVE", "KW_LEFT", "KW_LEVEL", "KW_LIKE", "KW_LIMIT", "KW_LISTAGG", + "KW_LOCAL", "KW_LOCALTIME", "KW_LOCALTIMESTAMP", "KW_LOGICAL", "KW_LOOP", + "KW_MAP", "KW_MATCH", "KW_MATCHED", "KW_MATCHES", "KW_MATCH_RECOGNIZE", + "KW_MATERIALIZED", "KW_MEASURES", "KW_MERGE", "KW_MINUTE", "KW_MONTH", + "KW_NATURAL", "KW_NESTED", "KW_NEXT", "KW_NFC", "KW_NFD", "KW_NFKC", + "KW_NFKD", "KW_NO", "KW_NONE", "KW_NORMALIZE", "KW_NOT", "KW_NULL", + "KW_NULLIF", "KW_NULLS", "KW_OBJECT", "KW_OF", "KW_OFFSET", "KW_OMIT", "KW_ON", "KW_ONE", "KW_ONLY", "KW_OPTION", "KW_OR", "KW_ORDER", - "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_PARTITION", - "KW_PARTITIONS", "KW_PAST", "KW_PATH", "KW_PATTERN", "KW_PER", "KW_PERMUTE", - "KW_POSITION", "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", - "KW_PROPERTIES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", "KW_REFRESH", - "KW_RENAME", "KW_REPEATABLE", "KW_REPLACE", "KW_RESET", "KW_RESPECT", - "KW_RESTRICT", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", - "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCHEMA", "KW_SCHEMAS", - "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", "KW_SERIALIZABLE", - "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", "KW_SOME", "KW_START", - "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", "KW_SYSTEM", "KW_TABLE", - "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", "KW_THEN", "KW_TIES", - "KW_TIME", "KW_TIMESTAMP", "KW_TO", "KW_TRANSACTION", "KW_TRUNCATE", - "KW_TRUE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", - "KW_UNCOMMITTED", "KW_UNION", "KW_UNMATCHED", "KW_UNNEST", "KW_UPDATE", - "KW_USE", "KW_USER", "KW_USING", "KW_VALIDATE", "KW_VALUES", "KW_VERBOSE", - "KW_VIEW", "KW_WHEN", "KW_WHERE", "KW_WINDOW", "KW_WITH", "KW_WITHOUT", - "KW_WORK", "KW_WRITE", "KW_YEAR", "KW_ZONE", "EQ", "NEQ", "LT", - "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", - "CONCAT", "QUESTION_MARK", "STRING", "UNICODE_STRING", "BINARY_LITERAL", - "INTEGER_VALUE", "DECIMAL_VALUE", "DOUBLE_VALUE", "IDENTIFIER", - "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", "BACKQUOTED_IDENTIFIER", - "SEMICOLON", "SIMPLE_COMMENT", "BRACKETED_COMMENT", "WS", "UNRECOGNIZED", - "DELIMITER" + "KW_ORDINALITY", "KW_OUTER", "KW_OUTPUT", "KW_OVER", "KW_OVERFLOW", + "KW_PARTITION", "KW_PARTITIONS", "KW_PASSING", "KW_PAST", "KW_PATH", + "KW_PATTERN", "KW_PER", "KW_PERIOD", "KW_PERMUTE", "KW_PLAN", "KW_POSITION", + "KW_PRECEDING", "KW_PRECISION", "KW_PREPARE", "KW_PRIVILEGES", "KW_PROPERTIES", + "KW_PRUNE", "KW_QUOTES", "KW_RANGE", "KW_READ", "KW_RECURSIVE", + "KW_REFRESH", "KW_RENAME", "KW_REPEAT", "KW_REPEATABLE", "KW_REPLACE", + "KW_RESET", "KW_RESPECT", "KW_RESTRICT", "KW_RETURN", "KW_RETURNING", + "KW_RETURNS", "KW_REVOKE", "KW_RIGHT", "KW_ROLE", "KW_ROLES", "KW_ROLLBACK", + "KW_ROLLUP", "KW_ROW", "KW_ROWS", "KW_RUNNING", "KW_SCALAR", "KW_SCHEMA", + "KW_SCHEMAS", "KW_SECOND", "KW_SECURITY", "KW_SEEK", "KW_SELECT", + "KW_SERIALIZABLE", "KW_SESSION", "KW_SET", "KW_SETS", "KW_SHOW", + "KW_SOME", "KW_START", "KW_STATS", "KW_SUBSET", "KW_SUBSTRING", + "KW_SYSTEM", "KW_TABLE", "KW_TABLES", "KW_TABLESAMPLE", "KW_TEXT", + "KW_TEXT_STRING", "KW_THEN", "KW_TIES", "KW_TIME", "KW_TIMESTAMP", + "KW_TO", "KW_TRAILING", "KW_TRANSACTION", "KW_TRIM", "KW_TRUE", + "KW_TRUNCATE", "KW_TRY_CAST", "KW_TYPE", "KW_UESCAPE", "KW_UNBOUNDED", + "KW_UNCOMMITTED", "KW_UNCONDITIONAL", "KW_UNION", "KW_UNIQUE", "KW_UNKNOWN", + "KW_UNMATCHED", "KW_UNNEST", "KW_UNTIL", "KW_UPDATE", "KW_USE", + "KW_USER", "KW_USING", "KW_UTF16", "KW_UTF32", "KW_UTF8", "KW_VALIDATE", + "KW_VALUE", "KW_VALUES", "KW_VERBOSE", "KW_VERSION", "KW_VIEW", + "KW_WHEN", "KW_WHERE", "KW_WHILE", "KW_WINDOW", "KW_WITH", "KW_WITHIN", + "KW_WITHOUT", "KW_WORK", "KW_WRAPPER", "KW_WRITE", "KW_YEAR", "KW_ZONE", + "EQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", + "SLASH", "PERCENT", "CONCAT", "QUESTION_MARK", "SEMICOLON", "STRING", + "UNICODE_STRING", "BINARY_LITERAL", "INTEGER_VALUE", "DECIMAL_VALUE", + "DOUBLE_VALUE", "IDENTIFIER", "DIGIT_IDENTIFIER", "QUOTED_IDENTIFIER", + "BACKQUOTED_IDENTIFIER", "SIMPLE_COMMENT", "BRACKETED_COMMENT", + "WS", "UNRECOGNIZED", "DELIMITER" ]; public static readonly ruleNames = [ - "program", "statements", "standaloneClause", "singleStatement", - "standaloneExpression", "standalonePathSpecification", "standaloneType", - "standaloneRowPattern", "statement", "query", "with", "tableElement", - "columnDefinition", "likeClause", "properties", "propertyAssignments", - "property", "propertyValue", "queryNoWith", "limitRowCount", "rowCount", - "queryTerm", "queryPrimary", "sortItem", "querySpecification", "groupBy", - "groupingElement", "groupingSet", "groupingTerm", "windowDefinition", - "windowSpecification", "namedQuery", "setQuantifier", "selectItem", - "relation", "joinType", "joinCriteria", "sampledRelation", "sampleType", - "patternRecognition", "measureDefinition", "rowsPerMatch", "emptyMatchHandling", - "skipTo", "subsetDefinition", "variableDefinition", "aliasedRelation", - "columnListCreate", "columnList", "columnAliases", "relationPrimary", - "expression", "booleanExpression", "predicate", "valueExpression", - "primaryExpression", "processingMode", "nullTreatment", "string", - "timeZoneSpecifier", "comparisonOperator", "comparisonQuantifier", - "booleanValue", "interval", "intervalField", "normalForm", "type", - "rowField", "typeParameter", "whenClause", "filter", "mergeCase", - "over", "windowFrame", "frameExtent", "frameBound", "rowPattern", - "patternPrimary", "patternQuantifier", "updateAssignment", "explainOption", - "transactionMode", "levelOfIsolation", "callArgument", "pathElement", - "pathSpecification", "privilege", "tableOrViewName", "tableName", - "tableNameCreate", "viewName", "viewNameCreate", "tablePath", "viewPath", - "schemaName", "schemaNameCreate", "schemaPath", "catalogName", "catalogNameCreate", - "functionName", "columnName", "columnNameCreate", "qualifiedName", - "grantor", "principal", "roles", "identifier", "number", "nonReserved", + "program", "statements", "singleStatement", "standaloneExpression", + "standalonePathSpecification", "standaloneType", "standaloneRowPattern", + "standaloneFunctionSpecification", "statement", "rootQuery", "withFunction", + "query", "with", "tableElement", "columnDefinition", "likeClause", + "properties", "propertyAssignments", "property", "propertyValue", + "queryNoWith", "limitRowCount", "rowCount", "queryTerm", "queryPrimary", + "sortItem", "querySpecification", "groupBy", "groupingElement", + "groupingSet", "groupingTerm", "windowDefinition", "windowSpecification", + "namedQuery", "setQuantifier", "selectItem", "relation", "joinType", + "joinCriteria", "sampledRelation", "sampleType", "trimsSpecification", + "listAggOverflowBehavior", "listaggCountIndication", "patternRecognition", + "measureDefinition", "rowsPerMatch", "emptyMatchHandling", "skipTo", + "subsetDefinition", "variableDefinition", "aliasedRelation", "columnListCreate", + "columnList", "columnAliases", "relationPrimary", "jsonTableColumn", + "jsonTableSpecificPlan", "jsonTablePathName", "planPrimary", "jsonTableDefaultPlan", + "tableFunctionCall", "tableFunctionArgument", "tableArgument", "tableArgumentRelation", + "descriptorArgument", "descriptorField", "copartitionTables", "expression", + "booleanExpression", "predicate", "valueExpression", "primaryExpression", + "jsonPathInvocation", "jsonValueExpression", "jsonRepresentation", + "jsonArgument", "jsonExistsErrorBehavior", "jsonValueBehavior", + "jsonQueryWrapperBehavior", "jsonQueryBehavior", "jsonObjectMember", + "processingMode", "nullTreatment", "string", "timeZoneSpecifier", + "comparisonOperator", "comparisonQuantifier", "booleanValue", "interval", + "intervalField", "normalForm", "type", "rowField", "typeParameter", + "whenClause", "filter", "mergeCase", "over", "windowFrame", "frameExtent", + "frameBound", "rowPattern", "patternPrimary", "patternQuantifier", + "updateAssignment", "explainOption", "transactionMode", "levelOfIsolation", + "callArgument", "pathElement", "pathSpecification", "functionSpecification", + "functionDeclaration", "functionSignature", "parameterDeclaration", + "returnsClause", "routineCharacteristic", "controlStatement", "caseStatementWhenClause", + "elseIfClause", "elseClause", "variableDeclaration", "sqlStatementList", + "privilege", "entityKind", "grantObject", "tableOrViewName", "tableRef", + "tableNameCreate", "viewRef", "viewNameCreate", "schemaRef", "schemaNameCreate", + "catalogRef", "catalogNameCreate", "functionName", "functionNameCreate", + "columnRef", "columnNameCreate", "qualifiedName", "queryPeriod", + "rangeType", "grantor", "principal", "roles", "privilegeOrRole", + "identifier", "number", "authorizationUser", "nonReserved", ]; public get grammarFileName(): string { return "TrinoSql.g4"; } @@ -554,21 +693,21 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 221; + this.state = 305; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 6291458) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 3892316545) !== 0) || ((((_la - 69)) & ~0x1F) === 0 && ((1 << (_la - 69)) & 37749377) !== 0) || _la === 108 || _la === 135 || ((((_la - 173)) & ~0x1F) === 0 && ((1 << (_la - 173)) & 1208099905) !== 0) || ((((_la - 205)) & ~0x1F) === 0 && ((1 << (_la - 205)) & 402784389) !== 0) || _la === 237 || _la === 243) { + while ((((_la) & ~0x1F) === 0 && ((1 << _la) & 25165826) !== 0) || ((((_la - 37)) & ~0x1F) === 0 && ((1 << (_la - 37)) & 2147550721) !== 0) || ((((_la - 73)) & ~0x1F) === 0 && ((1 << (_la - 73)) & 5243919) !== 0) || _la === 110 || _la === 127 || _la === 169 || ((((_la - 214)) & ~0x1F) === 0 && ((1 << (_la - 214)) & 8921345) !== 0) || ((((_la - 248)) & ~0x1F) === 0 && ((1 << (_la - 248)) & 67113129) !== 0) || ((((_la - 287)) & ~0x1F) === 0 && ((1 << (_la - 287)) & 131587) !== 0)) { { { - this.state = 218; + this.state = 302; this.statements(); } } - this.state = 223; + this.state = 307; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 224; + this.state = 308; this.match(TrinoSqlParser.EOF); } } @@ -592,7 +731,7 @@ export class TrinoSqlParser extends SQLParserBase { try { this.enterOuterAlt(localContext, 1); { - this.state = 226; + this.state = 310; this.singleStatement(); } } @@ -610,72 +749,21 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public standaloneClause(): StandaloneClauseContext { - let localContext = new StandaloneClauseContext(this.context, this.state); - this.enterRule(localContext, 4, TrinoSqlParser.RULE_standaloneClause); - try { - this.state = 232; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 1, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 228; - this.standaloneExpression(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 229; - this.standalonePathSpecification(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 230; - this.standaloneType(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 231; - this.standaloneRowPattern(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } public singleStatement(): SingleStatementContext { let localContext = new SingleStatementContext(this.context, this.state); - this.enterRule(localContext, 6, TrinoSqlParser.RULE_singleStatement); + this.enterRule(localContext, 4, TrinoSqlParser.RULE_singleStatement); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 234; + this.state = 312; this.statement(); - this.state = 236; + this.state = 314; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 272) { + if (_la === 325) { { - this.state = 235; + this.state = 313; this.match(TrinoSqlParser.SEMICOLON); } } @@ -698,19 +786,19 @@ export class TrinoSqlParser extends SQLParserBase { } public standaloneExpression(): StandaloneExpressionContext { let localContext = new StandaloneExpressionContext(this.context, this.state); - this.enterRule(localContext, 8, TrinoSqlParser.RULE_standaloneExpression); + this.enterRule(localContext, 6, TrinoSqlParser.RULE_standaloneExpression); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 238; + this.state = 316; this.expression(); - this.state = 240; + this.state = 318; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 272) { + if (_la === 325) { { - this.state = 239; + this.state = 317; this.match(TrinoSqlParser.SEMICOLON); } } @@ -733,19 +821,19 @@ export class TrinoSqlParser extends SQLParserBase { } public standalonePathSpecification(): StandalonePathSpecificationContext { let localContext = new StandalonePathSpecificationContext(this.context, this.state); - this.enterRule(localContext, 10, TrinoSqlParser.RULE_standalonePathSpecification); + this.enterRule(localContext, 8, TrinoSqlParser.RULE_standalonePathSpecification); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 242; + this.state = 320; this.pathSpecification(); - this.state = 244; + this.state = 322; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 272) { + if (_la === 325) { { - this.state = 243; + this.state = 321; this.match(TrinoSqlParser.SEMICOLON); } } @@ -768,19 +856,19 @@ export class TrinoSqlParser extends SQLParserBase { } public standaloneType(): StandaloneTypeContext { let localContext = new StandaloneTypeContext(this.context, this.state); - this.enterRule(localContext, 12, TrinoSqlParser.RULE_standaloneType); + this.enterRule(localContext, 10, TrinoSqlParser.RULE_standaloneType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 246; + this.state = 324; this.type_(0); - this.state = 248; + this.state = 326; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 272) { + if (_la === 325) { { - this.state = 247; + this.state = 325; this.match(TrinoSqlParser.SEMICOLON); } } @@ -803,19 +891,19 @@ export class TrinoSqlParser extends SQLParserBase { } public standaloneRowPattern(): StandaloneRowPatternContext { let localContext = new StandaloneRowPatternContext(this.context, this.state); - this.enterRule(localContext, 14, TrinoSqlParser.RULE_standaloneRowPattern); + this.enterRule(localContext, 12, TrinoSqlParser.RULE_standaloneRowPattern); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 250; + this.state = 328; this.rowPattern(0); - this.state = 252; + this.state = 330; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 272) { + if (_la === 325) { { - this.state = 251; + this.state = 329; this.match(TrinoSqlParser.SEMICOLON); } } @@ -836,76 +924,118 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } + public standaloneFunctionSpecification(): StandaloneFunctionSpecificationContext { + let localContext = new StandaloneFunctionSpecificationContext(this.context, this.state); + this.enterRule(localContext, 14, TrinoSqlParser.RULE_standaloneFunctionSpecification); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 332; + this.functionSpecification(); + this.state = 333; + this.match(TrinoSqlParser.EOF); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } public statement(): StatementContext { let localContext = new StatementContext(this.context, this.state); this.enterRule(localContext, 16, TrinoSqlParser.RULE_statement); let _la: number; try { - this.state = 1036; + this.state = 1233; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 117, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 125, this.context) ) { case 1: localContext = new StatementDefaultContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 254; - this.query(); + this.state = 335; + this.rootQuery(); } break; case 2: localContext = new UseContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 255; + this.state = 336; this.match(TrinoSqlParser.KW_USE); - this.state = 256; - this.schemaName(); + this.state = 337; + this.schemaRef(); } break; case 3: - localContext = new CreateSchemaContext(localContext); + localContext = new CreateCatalogContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 257; + this.state = 338; this.match(TrinoSqlParser.KW_CREATE); - this.state = 258; - this.match(TrinoSqlParser.KW_SCHEMA); - this.state = 262; + this.state = 339; + this.match(TrinoSqlParser.KW_CATALOG); + this.state = 343; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 6, this.context) ) { case 1: { - this.state = 259; + this.state = 340; this.match(TrinoSqlParser.KW_IF); - this.state = 260; + this.state = 341; this.match(TrinoSqlParser.KW_NOT); - this.state = 261; + this.state = 342; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 264; - this.schemaNameCreate(); - this.state = 267; + this.state = 345; + (localContext as CreateCatalogContext)._catalog = this.catalogNameCreate(); + this.state = 346; + this.match(TrinoSqlParser.KW_USING); + this.state = 347; + (localContext as CreateCatalogContext)._connectorName = this.identifier(); + this.state = 350; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 7, this.context) ) { + case 1: + { + this.state = 348; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 349; + this.string_(); + } + break; + } + this.state = 354; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 29) { + if (_la === 31) { { - this.state = 265; + this.state = 352; this.match(TrinoSqlParser.KW_AUTHORIZATION); - this.state = 266; + this.state = 353; this.principal(); } } - this.state = 271; + this.state = 358; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 9, this.context) ) { case 1: { - this.state = 269; + this.state = 356; this.match(TrinoSqlParser.KW_WITH); - this.state = 270; + this.state = 357; this.properties(); } break; @@ -913,35 +1043,35 @@ export class TrinoSqlParser extends SQLParserBase { } break; case 4: - localContext = new DropSchemaContext(localContext); + localContext = new DropCatalogContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 273; + this.state = 360; this.match(TrinoSqlParser.KW_DROP); - this.state = 274; - this.match(TrinoSqlParser.KW_SCHEMA); - this.state = 277; + this.state = 361; + this.match(TrinoSqlParser.KW_CATALOG); + this.state = 364; this.errorHandler.sync(this); switch (this.interpreter.adaptivePredict(this.tokenStream, 10, this.context) ) { case 1: { - this.state = 275; + this.state = 362; this.match(TrinoSqlParser.KW_IF); - this.state = 276; + this.state = 363; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 279; - this.schemaName(); - this.state = 281; + this.state = 366; + (localContext as DropCatalogContext)._catalog = this.catalogRef(); + this.state = 368; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 34 || _la === 185) { + if (_la === 39 || _la === 229) { { - this.state = 280; + this.state = 367; _la = this.tokenStream.LA(1); - if(!(_la === 34 || _la === 185)) { + if(!(_la === 39 || _la === 229)) { this.errorHandler.recoverInline(this); } else { @@ -954,358 +1084,478 @@ export class TrinoSqlParser extends SQLParserBase { } break; case 5: - localContext = new RenameSchemaContext(localContext); + localContext = new CreateSchemaContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 283; + this.state = 370; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 371; + this.match(TrinoSqlParser.KW_SCHEMA); + this.state = 375; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 12, this.context) ) { + case 1: + { + this.state = 372; + this.match(TrinoSqlParser.KW_IF); + this.state = 373; + this.match(TrinoSqlParser.KW_NOT); + this.state = 374; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 377; + this.schemaNameCreate(); + this.state = 380; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 31) { + { + this.state = 378; + this.match(TrinoSqlParser.KW_AUTHORIZATION); + this.state = 379; + this.principal(); + } + } + + this.state = 384; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 14, this.context) ) { + case 1: + { + this.state = 382; + this.match(TrinoSqlParser.KW_WITH); + this.state = 383; + this.properties(); + } + break; + } + } + break; + case 6: + localContext = new DropSchemaContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 386; + this.match(TrinoSqlParser.KW_DROP); + this.state = 387; + this.match(TrinoSqlParser.KW_SCHEMA); + this.state = 390; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 15, this.context) ) { + case 1: + { + this.state = 388; + this.match(TrinoSqlParser.KW_IF); + this.state = 389; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 392; + this.schemaRef(); + this.state = 394; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 39 || _la === 229) { + { + this.state = 393; + _la = this.tokenStream.LA(1); + if(!(_la === 39 || _la === 229)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + } + break; + case 7: + localContext = new RenameSchemaContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 396; this.match(TrinoSqlParser.KW_ALTER); - this.state = 284; + this.state = 397; this.match(TrinoSqlParser.KW_SCHEMA); - this.state = 285; - this.schemaName(); - this.state = 286; + this.state = 398; + this.schemaRef(); + this.state = 399; this.match(TrinoSqlParser.KW_RENAME); - this.state = 287; + this.state = 400; this.match(TrinoSqlParser.KW_TO); - this.state = 288; + this.state = 401; this.schemaNameCreate(); } break; - case 6: + case 8: localContext = new SetSchemaAuthorizationContext(localContext); - this.enterOuterAlt(localContext, 6); + this.enterOuterAlt(localContext, 8); { - this.state = 290; + this.state = 403; this.match(TrinoSqlParser.KW_ALTER); - this.state = 291; + this.state = 404; this.match(TrinoSqlParser.KW_SCHEMA); - this.state = 292; - this.schemaName(); - this.state = 293; + this.state = 405; + this.schemaRef(); + this.state = 406; this.match(TrinoSqlParser.KW_SET); - this.state = 294; + this.state = 407; this.match(TrinoSqlParser.KW_AUTHORIZATION); - this.state = 295; + this.state = 408; this.principal(); } break; - case 7: + case 9: localContext = new CreateTableAsSelectContext(localContext); - this.enterOuterAlt(localContext, 7); + this.enterOuterAlt(localContext, 9); { - this.state = 297; + this.state = 410; this.match(TrinoSqlParser.KW_CREATE); - this.state = 298; + this.state = 413; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 194) { + { + this.state = 411; + this.match(TrinoSqlParser.KW_OR); + this.state = 412; + this.match(TrinoSqlParser.KW_REPLACE); + } + } + + this.state = 415; this.match(TrinoSqlParser.KW_TABLE); - this.state = 302; + this.state = 419; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 12, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 18, this.context) ) { case 1: { - this.state = 299; + this.state = 416; this.match(TrinoSqlParser.KW_IF); - this.state = 300; + this.state = 417; this.match(TrinoSqlParser.KW_NOT); - this.state = 301; + this.state = 418; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 304; + this.state = 421; this.tableNameCreate(); - this.state = 306; + this.state = 423; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 1) { { - this.state = 305; + this.state = 422; this.columnListCreate(); } } - this.state = 310; + this.state = 427; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 40) { + if (_la === 46) { { - this.state = 308; + this.state = 425; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 309; + this.state = 426; this.string_(); } } - this.state = 314; + this.state = 431; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 243) { + if (_la === 304) { { - this.state = 312; + this.state = 429; this.match(TrinoSqlParser.KW_WITH); - this.state = 313; + this.state = 430; this.properties(); } } - this.state = 316; + this.state = 433; this.match(TrinoSqlParser.KW_AS); - this.state = 322; + this.state = 439; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 16, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 22, this.context) ) { case 1: { - this.state = 317; - this.query(); + this.state = 434; + this.rootQuery(); } break; case 2: { - this.state = 318; + this.state = 435; this.match(TrinoSqlParser.T__0); - this.state = 319; - this.query(); - this.state = 320; + this.state = 436; + this.rootQuery(); + this.state = 437; this.match(TrinoSqlParser.T__1); } break; } - this.state = 329; + this.state = 446; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 18, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 24, this.context) ) { case 1: { - this.state = 324; + this.state = 441; this.match(TrinoSqlParser.KW_WITH); - this.state = 326; + this.state = 443; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 144) { + if (_la === 179) { { - this.state = 325; + this.state = 442; this.match(TrinoSqlParser.KW_NO); } } - this.state = 328; + this.state = 445; this.match(TrinoSqlParser.KW_DATA); } break; } } break; - case 8: + case 10: localContext = new CreateTableContext(localContext); - this.enterOuterAlt(localContext, 8); + this.enterOuterAlt(localContext, 10); { - this.state = 331; + this.state = 448; this.match(TrinoSqlParser.KW_CREATE); - this.state = 332; + this.state = 451; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 194) { + { + this.state = 449; + this.match(TrinoSqlParser.KW_OR); + this.state = 450; + this.match(TrinoSqlParser.KW_REPLACE); + } + } + + this.state = 453; this.match(TrinoSqlParser.KW_TABLE); - this.state = 336; + this.state = 457; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 19, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { case 1: { - this.state = 333; + this.state = 454; this.match(TrinoSqlParser.KW_IF); - this.state = 334; + this.state = 455; this.match(TrinoSqlParser.KW_NOT); - this.state = 335; + this.state = 456; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 338; + this.state = 459; this.tableNameCreate(); - this.state = 339; + this.state = 460; this.match(TrinoSqlParser.T__0); - this.state = 340; + this.state = 461; this.tableElement(); - this.state = 345; + this.state = 466; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 341; + this.state = 462; this.match(TrinoSqlParser.T__2); - this.state = 342; + this.state = 463; this.tableElement(); } } - this.state = 347; + this.state = 468; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 348; + this.state = 469; this.match(TrinoSqlParser.T__1); - this.state = 351; + this.state = 472; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 21, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 28, this.context) ) { case 1: { - this.state = 349; + this.state = 470; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 350; + this.state = 471; this.string_(); } break; } - this.state = 355; + this.state = 476; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 22, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 29, this.context) ) { case 1: { - this.state = 353; + this.state = 474; this.match(TrinoSqlParser.KW_WITH); - this.state = 354; + this.state = 475; this.properties(); } break; } } break; - case 9: + case 11: localContext = new DropTableContext(localContext); - this.enterOuterAlt(localContext, 9); + this.enterOuterAlt(localContext, 11); { - this.state = 357; + this.state = 478; this.match(TrinoSqlParser.KW_DROP); - this.state = 358; + this.state = 479; this.match(TrinoSqlParser.KW_TABLE); - this.state = 361; + this.state = 482; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 23, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context) ) { case 1: { - this.state = 359; + this.state = 480; this.match(TrinoSqlParser.KW_IF); - this.state = 360; + this.state = 481; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 363; - this.tableName(); + this.state = 484; + this.tableRef(); } break; - case 10: + case 12: localContext = new InsertIntoContext(localContext); - this.enterOuterAlt(localContext, 10); + this.enterOuterAlt(localContext, 12); { - this.state = 364; + this.state = 485; this.match(TrinoSqlParser.KW_INSERT); - this.state = 365; + this.state = 486; this.match(TrinoSqlParser.KW_INTO); - this.state = 366; - this.tableName(); - this.state = 368; + this.state = 487; + this.tableRef(); + this.state = 489; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 24, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 31, this.context) ) { case 1: { - this.state = 367; + this.state = 488; this.columnList(); } break; } - this.state = 370; - this.query(); + this.state = 491; + this.rootQuery(); } break; - case 11: + case 13: localContext = new DeleteContext(localContext); - this.enterOuterAlt(localContext, 11); + this.enterOuterAlt(localContext, 13); { - this.state = 372; + this.state = 493; this.match(TrinoSqlParser.KW_DELETE); - this.state = 373; + this.state = 494; this.match(TrinoSqlParser.KW_FROM); - this.state = 374; - this.tableName(); - this.state = 377; + this.state = 495; + this.tableRef(); + this.state = 498; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 241) { + if (_la === 301) { { - this.state = 375; + this.state = 496; this.match(TrinoSqlParser.KW_WHERE); - this.state = 376; + this.state = 497; this.booleanExpression(0); } } } break; - case 12: + case 14: localContext = new TruncateTableContext(localContext); - this.enterOuterAlt(localContext, 12); + this.enterOuterAlt(localContext, 14); { - this.state = 379; + this.state = 500; this.match(TrinoSqlParser.KW_TRUNCATE); - this.state = 380; + this.state = 501; this.match(TrinoSqlParser.KW_TABLE); - this.state = 381; - this.tableName(); + this.state = 502; + this.tableRef(); } break; - case 13: - localContext = new RenameTableContext(localContext); - this.enterOuterAlt(localContext, 13); + case 15: + localContext = new CommentTableContext(localContext); + this.enterOuterAlt(localContext, 15); { - this.state = 382; - this.match(TrinoSqlParser.KW_ALTER); - this.state = 383; + this.state = 503; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 504; + this.match(TrinoSqlParser.KW_ON); + this.state = 505; this.match(TrinoSqlParser.KW_TABLE); - this.state = 386; + this.state = 506; + this.tableRef(); + this.state = 507; + this.match(TrinoSqlParser.KW_IS); + this.state = 510; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 26, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.STRING: + case TrinoSqlParser.UNICODE_STRING: { - this.state = 384; - this.match(TrinoSqlParser.KW_IF); - this.state = 385; - this.match(TrinoSqlParser.KW_EXISTS); + this.state = 508; + this.string_(); + } + break; + case TrinoSqlParser.KW_NULL: + { + this.state = 509; + this.match(TrinoSqlParser.KW_NULL); } break; + default: + throw new antlr.NoViableAltException(this); } - this.state = 388; - (localContext as RenameTableContext)._from_ = this.tableName(); - this.state = 389; - this.match(TrinoSqlParser.KW_RENAME); - this.state = 390; - this.match(TrinoSqlParser.KW_TO); - this.state = 391; - (localContext as RenameTableContext)._to = this.tableNameCreate(); } break; - case 14: - localContext = new CommentTableContext(localContext); - this.enterOuterAlt(localContext, 14); + case 16: + localContext = new CommentViewContext(localContext); + this.enterOuterAlt(localContext, 16); { - this.state = 393; + this.state = 512; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 394; + this.state = 513; this.match(TrinoSqlParser.KW_ON); - this.state = 395; - this.match(TrinoSqlParser.KW_TABLE); - this.state = 396; - this.tableName(); - this.state = 397; + this.state = 514; + this.match(TrinoSqlParser.KW_VIEW); + this.state = 515; + this.viewRef(); + this.state = 516; this.match(TrinoSqlParser.KW_IS); - this.state = 400; + this.state = 519; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.STRING: case TrinoSqlParser.UNICODE_STRING: { - this.state = 398; + this.state = 517; this.string_(); } break; case TrinoSqlParser.KW_NULL: { - this.state = 399; + this.state = 518; this.match(TrinoSqlParser.KW_NULL); } break; @@ -1314,33 +1564,33 @@ export class TrinoSqlParser extends SQLParserBase { } } break; - case 15: + case 17: localContext = new CommentColumnContext(localContext); - this.enterOuterAlt(localContext, 15); + this.enterOuterAlt(localContext, 17); { - this.state = 402; + this.state = 521; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 403; + this.state = 522; this.match(TrinoSqlParser.KW_ON); - this.state = 404; + this.state = 523; this.match(TrinoSqlParser.KW_COLUMN); - this.state = 405; - this.columnName(); - this.state = 406; + this.state = 524; + this.columnRef(); + this.state = 525; this.match(TrinoSqlParser.KW_IS); - this.state = 409; + this.state = 528; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.STRING: case TrinoSqlParser.UNICODE_STRING: { - this.state = 407; + this.state = 526; this.string_(); } break; case TrinoSqlParser.KW_NULL: { - this.state = 408; + this.state = 527; this.match(TrinoSqlParser.KW_NULL); } break; @@ -1349,374 +1599,492 @@ export class TrinoSqlParser extends SQLParserBase { } } break; - case 16: + case 18: + localContext = new RenameTableContext(localContext); + this.enterOuterAlt(localContext, 18); + { + this.state = 530; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 531; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 534; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 36, this.context) ) { + case 1: + { + this.state = 532; + this.match(TrinoSqlParser.KW_IF); + this.state = 533; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 536; + (localContext as RenameTableContext)._from_ = this.tableRef(); + this.state = 537; + this.match(TrinoSqlParser.KW_RENAME); + this.state = 538; + this.match(TrinoSqlParser.KW_TO); + this.state = 539; + (localContext as RenameTableContext)._to = this.tableNameCreate(); + } + break; + case 19: + localContext = new AddColumnContext(localContext); + this.enterOuterAlt(localContext, 19); + { + this.state = 541; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 542; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 545; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 37, this.context) ) { + case 1: + { + this.state = 543; + this.match(TrinoSqlParser.KW_IF); + this.state = 544; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 547; + (localContext as AddColumnContext)._tableName = this.tableRef(); + this.state = 548; + this.match(TrinoSqlParser.KW_ADD); + this.state = 549; + this.match(TrinoSqlParser.KW_COLUMN); + this.state = 553; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 38, this.context) ) { + case 1: + { + this.state = 550; + this.match(TrinoSqlParser.KW_IF); + this.state = 551; + this.match(TrinoSqlParser.KW_NOT); + this.state = 552; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 555; + (localContext as AddColumnContext)._column = this.columnDefinition(); + } + break; + case 20: localContext = new RenameColumnContext(localContext); - this.enterOuterAlt(localContext, 16); + this.enterOuterAlt(localContext, 20); { - this.state = 411; + this.state = 557; this.match(TrinoSqlParser.KW_ALTER); - this.state = 412; + this.state = 558; this.match(TrinoSqlParser.KW_TABLE); - this.state = 415; + this.state = 561; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 29, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 39, this.context) ) { case 1: { - this.state = 413; + this.state = 559; this.match(TrinoSqlParser.KW_IF); - this.state = 414; + this.state = 560; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 417; - this.tableName(); - this.state = 418; + this.state = 563; + (localContext as RenameColumnContext)._tableName = this.tableRef(); + this.state = 564; this.match(TrinoSqlParser.KW_RENAME); - this.state = 419; + this.state = 565; this.match(TrinoSqlParser.KW_COLUMN); - this.state = 422; + this.state = 568; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 30, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 40, this.context) ) { case 1: { - this.state = 420; + this.state = 566; this.match(TrinoSqlParser.KW_IF); - this.state = 421; + this.state = 567; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 424; - (localContext as RenameColumnContext)._from_ = this.columnName(); - this.state = 425; + this.state = 570; + (localContext as RenameColumnContext)._from_ = this.columnRef(); + this.state = 571; this.match(TrinoSqlParser.KW_TO); - this.state = 426; + this.state = 572; (localContext as RenameColumnContext)._to = this.columnNameCreate(); } break; - case 17: + case 21: localContext = new DropColumnContext(localContext); - this.enterOuterAlt(localContext, 17); + this.enterOuterAlt(localContext, 21); { - this.state = 428; + this.state = 574; this.match(TrinoSqlParser.KW_ALTER); - this.state = 429; + this.state = 575; this.match(TrinoSqlParser.KW_TABLE); - this.state = 432; + this.state = 578; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 31, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 41, this.context) ) { case 1: { - this.state = 430; + this.state = 576; this.match(TrinoSqlParser.KW_IF); - this.state = 431; + this.state = 577; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 434; - this.tableName(); - this.state = 435; + this.state = 580; + (localContext as DropColumnContext)._tableName = this.tableRef(); + this.state = 581; this.match(TrinoSqlParser.KW_DROP); - this.state = 436; + this.state = 582; this.match(TrinoSqlParser.KW_COLUMN); - this.state = 439; + this.state = 585; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 32, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 42, this.context) ) { case 1: { - this.state = 437; + this.state = 583; this.match(TrinoSqlParser.KW_IF); - this.state = 438; + this.state = 584; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 441; - (localContext as DropColumnContext)._column = this.columnName(); + this.state = 587; + (localContext as DropColumnContext)._column = this.columnRef(); } break; - case 18: - localContext = new AddColumnContext(localContext); - this.enterOuterAlt(localContext, 18); + case 22: + localContext = new SetColumnTypeContext(localContext); + this.enterOuterAlt(localContext, 22); { - this.state = 443; + this.state = 589; this.match(TrinoSqlParser.KW_ALTER); - this.state = 444; + this.state = 590; this.match(TrinoSqlParser.KW_TABLE); - this.state = 447; + this.state = 593; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 33, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 43, this.context) ) { case 1: { - this.state = 445; + this.state = 591; this.match(TrinoSqlParser.KW_IF); - this.state = 446; + this.state = 592; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 449; - this.tableName(); - this.state = 450; - this.match(TrinoSqlParser.KW_ADD); - this.state = 451; + this.state = 595; + (localContext as SetColumnTypeContext)._tableName = this.tableRef(); + this.state = 596; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 597; this.match(TrinoSqlParser.KW_COLUMN); - this.state = 455; + this.state = 598; + (localContext as SetColumnTypeContext)._column = this.columnRef(); + this.state = 599; + this.match(TrinoSqlParser.KW_SET); + this.state = 600; + this.match(TrinoSqlParser.KW_DATA); + this.state = 601; + this.match(TrinoSqlParser.KW_TYPE); + this.state = 602; + this.type_(0); + } + break; + case 23: + localContext = new DropNotNullConstraintContext(localContext); + this.enterOuterAlt(localContext, 23); + { + this.state = 604; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 605; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 608; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 34, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 44, this.context) ) { case 1: { - this.state = 452; + this.state = 606; this.match(TrinoSqlParser.KW_IF); - this.state = 453; - this.match(TrinoSqlParser.KW_NOT); - this.state = 454; + this.state = 607; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 457; - (localContext as AddColumnContext)._column = this.columnDefinition(); + this.state = 610; + (localContext as DropNotNullConstraintContext)._tableName = this.tableRef(); + this.state = 611; + this.match(TrinoSqlParser.KW_ALTER); + this.state = 612; + this.match(TrinoSqlParser.KW_COLUMN); + this.state = 613; + (localContext as DropNotNullConstraintContext)._column = this.columnRef(); + this.state = 614; + this.match(TrinoSqlParser.KW_DROP); + this.state = 615; + this.match(TrinoSqlParser.KW_NOT); + this.state = 616; + this.match(TrinoSqlParser.KW_NULL); } break; - case 19: + case 24: localContext = new SetTableAuthorizationContext(localContext); - this.enterOuterAlt(localContext, 19); + this.enterOuterAlt(localContext, 24); { - this.state = 459; + this.state = 618; this.match(TrinoSqlParser.KW_ALTER); - this.state = 460; + this.state = 619; this.match(TrinoSqlParser.KW_TABLE); - this.state = 461; - this.tableName(); - this.state = 462; + this.state = 620; + (localContext as SetTableAuthorizationContext)._tableName = this.tableRef(); + this.state = 621; this.match(TrinoSqlParser.KW_SET); - this.state = 463; + this.state = 622; this.match(TrinoSqlParser.KW_AUTHORIZATION); - this.state = 464; + this.state = 623; this.principal(); } break; - case 20: + case 25: localContext = new SetTablePropertiesContext(localContext); - this.enterOuterAlt(localContext, 20); + this.enterOuterAlt(localContext, 25); { - this.state = 466; + this.state = 625; this.match(TrinoSqlParser.KW_ALTER); - this.state = 467; + this.state = 626; this.match(TrinoSqlParser.KW_TABLE); - this.state = 468; - this.tableName(); - this.state = 469; + this.state = 627; + (localContext as SetTablePropertiesContext)._tableName = this.tableRef(); + this.state = 628; this.match(TrinoSqlParser.KW_SET); - this.state = 470; + this.state = 629; this.match(TrinoSqlParser.KW_PROPERTIES); - this.state = 471; + this.state = 630; this.propertyAssignments(); } break; - case 21: + case 26: localContext = new TableExecuteContext(localContext); - this.enterOuterAlt(localContext, 21); + this.enterOuterAlt(localContext, 26); { - this.state = 473; + this.state = 632; this.match(TrinoSqlParser.KW_ALTER); - this.state = 474; + this.state = 633; this.match(TrinoSqlParser.KW_TABLE); - this.state = 475; - this.tableName(); - this.state = 476; + this.state = 634; + (localContext as TableExecuteContext)._tableName = this.tableRef(); + this.state = 635; this.match(TrinoSqlParser.KW_EXECUTE); - this.state = 477; - (localContext as TableExecuteContext)._procedureName = this.identifier(); - this.state = 490; + this.state = 636; + (localContext as TableExecuteContext)._procedureName = this.functionName(); + this.state = 649; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 37, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { case 1: { - this.state = 478; + this.state = 637; this.match(TrinoSqlParser.T__0); - this.state = 487; + this.state = 646; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2069757954) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1476117503) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 2120217677) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 4252345787) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 1325399551) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3153981439) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4286054271) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 3237637037) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & 2047) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { { - this.state = 479; + this.state = 638; this.callArgument(); - this.state = 484; + this.state = 643; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 480; + this.state = 639; this.match(TrinoSqlParser.T__2); - this.state = 481; + this.state = 640; this.callArgument(); } } - this.state = 486; + this.state = 645; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 489; + this.state = 648; this.match(TrinoSqlParser.T__1); } break; } - this.state = 494; + this.state = 653; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 241) { + if (_la === 301) { { - this.state = 492; + this.state = 651; this.match(TrinoSqlParser.KW_WHERE); - this.state = 493; + this.state = 652; (localContext as TableExecuteContext)._where = this.booleanExpression(0); } } } break; - case 22: + case 27: localContext = new AnalyzeContext(localContext); - this.enterOuterAlt(localContext, 22); + this.enterOuterAlt(localContext, 27); { - this.state = 496; + this.state = 655; this.match(TrinoSqlParser.KW_ANALYZE); - this.state = 497; - this.tableName(); - this.state = 500; + this.state = 656; + this.tableRef(); + this.state = 659; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 39, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { case 1: { - this.state = 498; + this.state = 657; this.match(TrinoSqlParser.KW_WITH); - this.state = 499; + this.state = 658; this.properties(); } break; } } break; - case 23: + case 28: localContext = new CreateMaterializedViewContext(localContext); - this.enterOuterAlt(localContext, 23); + this.enterOuterAlt(localContext, 28); { - this.state = 502; + this.state = 661; this.match(TrinoSqlParser.KW_CREATE); - this.state = 505; + this.state = 664; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 157) { + if (_la === 194) { { - this.state = 503; + this.state = 662; this.match(TrinoSqlParser.KW_OR); - this.state = 504; + this.state = 663; this.match(TrinoSqlParser.KW_REPLACE); } } - this.state = 507; + this.state = 666; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 508; + this.state = 667; this.match(TrinoSqlParser.KW_VIEW); - this.state = 512; + this.state = 671; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 41, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 51, this.context) ) { case 1: { - this.state = 509; + this.state = 668; this.match(TrinoSqlParser.KW_IF); - this.state = 510; + this.state = 669; this.match(TrinoSqlParser.KW_NOT); - this.state = 511; + this.state = 670; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 514; + this.state = 673; this.viewNameCreate(); - this.state = 517; + this.state = 677; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 109) { + { + this.state = 674; + this.match(TrinoSqlParser.KW_GRACE); + this.state = 675; + this.match(TrinoSqlParser.KW_PERIOD); + this.state = 676; + this.interval(); + } + } + + this.state = 681; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 40) { + if (_la === 46) { { - this.state = 515; + this.state = 679; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 516; + this.state = 680; this.string_(); } } - this.state = 521; + this.state = 685; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 243) { + if (_la === 304) { { - this.state = 519; + this.state = 683; this.match(TrinoSqlParser.KW_WITH); - this.state = 520; + this.state = 684; this.properties(); } } - this.state = 523; + this.state = 687; this.match(TrinoSqlParser.KW_AS); - this.state = 524; - this.query(); + this.state = 688; + this.rootQuery(); } break; - case 24: + case 29: localContext = new CreateViewContext(localContext); - this.enterOuterAlt(localContext, 24); + this.enterOuterAlt(localContext, 29); { - this.state = 526; + this.state = 690; this.match(TrinoSqlParser.KW_CREATE); - this.state = 529; + this.state = 693; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 157) { + if (_la === 194) { { - this.state = 527; + this.state = 691; this.match(TrinoSqlParser.KW_OR); - this.state = 528; + this.state = 692; this.match(TrinoSqlParser.KW_REPLACE); } } - this.state = 531; + this.state = 695; this.match(TrinoSqlParser.KW_VIEW); - this.state = 532; + this.state = 696; this.viewNameCreate(); - this.state = 535; + this.state = 699; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 40) { + if (_la === 46) { { - this.state = 533; + this.state = 697; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 534; + this.state = 698; this.string_(); } } - this.state = 539; + this.state = 703; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 198) { + if (_la === 246) { { - this.state = 537; + this.state = 701; this.match(TrinoSqlParser.KW_SECURITY); - this.state = 538; + this.state = 702; _la = this.tokenStream.LA(1); - if(!(_la === 61 || _la === 112)) { + if(!(_la === 72 || _la === 131)) { this.errorHandler.recoverInline(this); } else { @@ -1726,927 +2094,922 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 541; + this.state = 707; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 304) { + { + this.state = 705; + this.match(TrinoSqlParser.KW_WITH); + this.state = 706; + this.properties(); + } + } + + this.state = 709; this.match(TrinoSqlParser.KW_AS); - this.state = 542; - this.query(); + this.state = 710; + this.rootQuery(); } break; - case 25: + case 30: localContext = new RefreshMaterializedViewContext(localContext); - this.enterOuterAlt(localContext, 25); + this.enterOuterAlt(localContext, 30); { - this.state = 544; + this.state = 712; this.match(TrinoSqlParser.KW_REFRESH); - this.state = 545; + this.state = 713; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 546; + this.state = 714; this.match(TrinoSqlParser.KW_VIEW); - this.state = 547; - this.viewName(); + this.state = 715; + this.viewRef(); } break; - case 26: + case 31: localContext = new DropMaterializedViewContext(localContext); - this.enterOuterAlt(localContext, 26); + this.enterOuterAlt(localContext, 31); { - this.state = 548; + this.state = 716; this.match(TrinoSqlParser.KW_DROP); - this.state = 549; + this.state = 717; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 550; + this.state = 718; this.match(TrinoSqlParser.KW_VIEW); - this.state = 553; + this.state = 721; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 47, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 59, this.context) ) { case 1: { - this.state = 551; + this.state = 719; this.match(TrinoSqlParser.KW_IF); - this.state = 552; + this.state = 720; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 555; - this.viewName(); + this.state = 723; + this.viewRef(); } break; - case 27: + case 32: localContext = new RenameMaterializedViewContext(localContext); - this.enterOuterAlt(localContext, 27); + this.enterOuterAlt(localContext, 32); { - this.state = 556; + this.state = 724; this.match(TrinoSqlParser.KW_ALTER); - this.state = 557; + this.state = 725; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 558; + this.state = 726; this.match(TrinoSqlParser.KW_VIEW); - this.state = 561; + this.state = 729; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 48, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 60, this.context) ) { case 1: { - this.state = 559; + this.state = 727; this.match(TrinoSqlParser.KW_IF); - this.state = 560; + this.state = 728; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 563; - (localContext as RenameMaterializedViewContext)._from_ = this.viewName(); - this.state = 564; + this.state = 731; + (localContext as RenameMaterializedViewContext)._from_ = this.viewRef(); + this.state = 732; this.match(TrinoSqlParser.KW_RENAME); - this.state = 565; + this.state = 733; this.match(TrinoSqlParser.KW_TO); - this.state = 566; + this.state = 734; (localContext as RenameMaterializedViewContext)._to = this.viewNameCreate(); } break; - case 28: + case 33: localContext = new SetMaterializedViewPropertiesContext(localContext); - this.enterOuterAlt(localContext, 28); + this.enterOuterAlt(localContext, 33); { - this.state = 568; + this.state = 736; this.match(TrinoSqlParser.KW_ALTER); - this.state = 569; + this.state = 737; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 570; + this.state = 738; this.match(TrinoSqlParser.KW_VIEW); - this.state = 571; - this.viewName(); - this.state = 572; + this.state = 739; + this.viewRef(); + this.state = 740; this.match(TrinoSqlParser.KW_SET); - this.state = 573; + this.state = 741; this.match(TrinoSqlParser.KW_PROPERTIES); - this.state = 574; + this.state = 742; this.propertyAssignments(); } break; - case 29: + case 34: localContext = new DropViewContext(localContext); - this.enterOuterAlt(localContext, 29); + this.enterOuterAlt(localContext, 34); { - this.state = 576; + this.state = 744; this.match(TrinoSqlParser.KW_DROP); - this.state = 577; + this.state = 745; this.match(TrinoSqlParser.KW_VIEW); - this.state = 580; + this.state = 748; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 49, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 61, this.context) ) { case 1: { - this.state = 578; + this.state = 746; this.match(TrinoSqlParser.KW_IF); - this.state = 579; + this.state = 747; this.match(TrinoSqlParser.KW_EXISTS); } break; } - this.state = 582; - this.viewName(); + this.state = 750; + this.viewRef(); } break; - case 30: + case 35: localContext = new RenameViewContext(localContext); - this.enterOuterAlt(localContext, 30); + this.enterOuterAlt(localContext, 35); { - this.state = 583; + this.state = 751; this.match(TrinoSqlParser.KW_ALTER); - this.state = 584; + this.state = 752; this.match(TrinoSqlParser.KW_VIEW); - this.state = 585; - (localContext as RenameViewContext)._from_ = this.viewName(); - this.state = 586; + this.state = 753; + (localContext as RenameViewContext)._from_ = this.viewRef(); + this.state = 754; this.match(TrinoSqlParser.KW_RENAME); - this.state = 587; + this.state = 755; this.match(TrinoSqlParser.KW_TO); - this.state = 588; + this.state = 756; (localContext as RenameViewContext)._to = this.viewNameCreate(); } break; - case 31: + case 36: localContext = new SetViewAuthorizationContext(localContext); - this.enterOuterAlt(localContext, 31); + this.enterOuterAlt(localContext, 36); { - this.state = 590; + this.state = 758; this.match(TrinoSqlParser.KW_ALTER); - this.state = 591; + this.state = 759; this.match(TrinoSqlParser.KW_VIEW); - this.state = 592; - (localContext as SetViewAuthorizationContext)._from_ = this.viewName(); - this.state = 593; + this.state = 760; + (localContext as SetViewAuthorizationContext)._from_ = this.viewRef(); + this.state = 761; this.match(TrinoSqlParser.KW_SET); - this.state = 594; + this.state = 762; this.match(TrinoSqlParser.KW_AUTHORIZATION); - this.state = 595; + this.state = 763; this.principal(); } break; - case 32: + case 37: localContext = new CallContext(localContext); - this.enterOuterAlt(localContext, 32); + this.enterOuterAlt(localContext, 37); { - this.state = 597; + this.state = 765; this.match(TrinoSqlParser.KW_CALL); - this.state = 598; + this.state = 766; this.functionName(); - this.state = 599; + this.state = 767; this.match(TrinoSqlParser.T__0); - this.state = 608; + this.state = 776; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2069757954) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1476117503) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 2120217677) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 4252345787) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 1325399551) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3153981439) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4286054271) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 3237637037) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & 2047) !== 0)) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { { - this.state = 600; + this.state = 768; this.callArgument(); - this.state = 605; + this.state = 773; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 601; + this.state = 769; this.match(TrinoSqlParser.T__2); - this.state = 602; + this.state = 770; this.callArgument(); } } - this.state = 607; + this.state = 775; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 610; + this.state = 778; this.match(TrinoSqlParser.T__1); } break; - case 33: + case 38: + localContext = new CreateFunctionContext(localContext); + this.enterOuterAlt(localContext, 38); + { + this.state = 780; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 783; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 194) { + { + this.state = 781; + this.match(TrinoSqlParser.KW_OR); + this.state = 782; + this.match(TrinoSqlParser.KW_REPLACE); + } + } + + this.state = 785; + this.functionSpecification(); + } + break; + case 39: + localContext = new DropFunctionContext(localContext); + this.enterOuterAlt(localContext, 39); + { + this.state = 786; + this.match(TrinoSqlParser.KW_DROP); + this.state = 787; + this.match(TrinoSqlParser.KW_FUNCTION); + this.state = 790; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 65, this.context) ) { + case 1: + { + this.state = 788; + this.match(TrinoSqlParser.KW_IF); + this.state = 789; + this.match(TrinoSqlParser.KW_EXISTS); + } + break; + } + this.state = 792; + this.functionSignature(); + } + break; + case 40: localContext = new CreateRoleContext(localContext); - this.enterOuterAlt(localContext, 33); + this.enterOuterAlt(localContext, 40); { - this.state = 612; + this.state = 793; this.match(TrinoSqlParser.KW_CREATE); - this.state = 613; + this.state = 794; this.match(TrinoSqlParser.KW_ROLE); - this.state = 614; + this.state = 795; (localContext as CreateRoleContext)._name = this.identifier(); - this.state = 618; + this.state = 799; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 52, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) { case 1: { - this.state = 615; + this.state = 796; this.match(TrinoSqlParser.KW_WITH); - this.state = 616; + this.state = 797; this.match(TrinoSqlParser.KW_ADMIN); - this.state = 617; + this.state = 798; this.grantor(); } break; } - this.state = 622; + this.state = 803; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 103) { + if (_la === 122) { { - this.state = 620; + this.state = 801; this.match(TrinoSqlParser.KW_IN); - this.state = 621; - this.catalogName(); + this.state = 802; + (localContext as CreateRoleContext)._catalog = this.catalogRef(); } } } break; - case 34: + case 41: localContext = new DropRoleContext(localContext); - this.enterOuterAlt(localContext, 34); + this.enterOuterAlt(localContext, 41); { - this.state = 624; + this.state = 805; this.match(TrinoSqlParser.KW_DROP); - this.state = 625; + this.state = 806; this.match(TrinoSqlParser.KW_ROLE); - this.state = 626; + this.state = 807; (localContext as DropRoleContext)._name = this.identifier(); + this.state = 810; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 122) { + { + this.state = 808; + this.match(TrinoSqlParser.KW_IN); + this.state = 809; + (localContext as DropRoleContext)._catalog = this.catalogRef(); + } + } + } break; - case 35: + case 42: localContext = new GrantRolesContext(localContext); - this.enterOuterAlt(localContext, 35); + this.enterOuterAlt(localContext, 42); { - this.state = 627; + this.state = 812; this.match(TrinoSqlParser.KW_GRANT); - this.state = 628; - this.roles(); - this.state = 629; + this.state = 813; + this.privilegeOrRole(); + this.state = 818; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 814; + this.match(TrinoSqlParser.T__2); + this.state = 815; + this.privilegeOrRole(); + } + } + this.state = 820; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 821; this.match(TrinoSqlParser.KW_TO); - this.state = 630; + this.state = 822; this.principal(); - this.state = 635; + this.state = 827; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 631; + this.state = 823; this.match(TrinoSqlParser.T__2); - this.state = 632; + this.state = 824; this.principal(); } } - this.state = 637; + this.state = 829; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 641; + this.state = 833; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 55, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 71, this.context) ) { case 1: { - this.state = 638; + this.state = 830; this.match(TrinoSqlParser.KW_WITH); - this.state = 639; + this.state = 831; this.match(TrinoSqlParser.KW_ADMIN); - this.state = 640; + this.state = 832; this.match(TrinoSqlParser.KW_OPTION); } break; } - this.state = 646; + this.state = 838; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 92) { + if (_la === 111) { { - this.state = 643; + this.state = 835; this.match(TrinoSqlParser.KW_GRANTED); - this.state = 644; + this.state = 836; this.match(TrinoSqlParser.KW_BY); - this.state = 645; + this.state = 837; this.grantor(); } } - this.state = 650; + this.state = 842; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 103) { + if (_la === 122) { { - this.state = 648; + this.state = 840; this.match(TrinoSqlParser.KW_IN); - this.state = 649; - this.catalogName(); + this.state = 841; + (localContext as GrantRolesContext)._catalog = this.catalogRef(); } } } break; - case 36: - localContext = new RevokeRolesContext(localContext); - this.enterOuterAlt(localContext, 36); + case 43: + localContext = new GrantPrivilegesContext(localContext); + this.enterOuterAlt(localContext, 43); { - this.state = 652; - this.match(TrinoSqlParser.KW_REVOKE); - this.state = 656; + this.state = 844; + this.match(TrinoSqlParser.KW_GRANT); + this.state = 855; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 58, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 75, this.context) ) { case 1: { - this.state = 653; - this.match(TrinoSqlParser.KW_ADMIN); - this.state = 654; - this.match(TrinoSqlParser.KW_OPTION); - this.state = 655; - this.match(TrinoSqlParser.KW_FOR); + { + this.state = 845; + this.privilegeOrRole(); + this.state = 850; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 846; + this.match(TrinoSqlParser.T__2); + this.state = 847; + this.privilegeOrRole(); + } + } + this.state = 852; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + break; + case 2: + { + this.state = 853; + this.match(TrinoSqlParser.KW_ALL); + this.state = 854; + this.match(TrinoSqlParser.KW_PRIVILEGES); } break; } - this.state = 658; - this.roles(); - this.state = 659; - this.match(TrinoSqlParser.KW_FROM); - this.state = 660; + this.state = 857; + this.match(TrinoSqlParser.KW_ON); + this.state = 858; + this.grantObject(); + this.state = 859; + this.match(TrinoSqlParser.KW_TO); + this.state = 860; this.principal(); - this.state = 665; + this.state = 864; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 76, this.context) ) { + case 1: + { + this.state = 861; + this.match(TrinoSqlParser.KW_WITH); + this.state = 862; + this.match(TrinoSqlParser.KW_GRANT); + this.state = 863; + this.match(TrinoSqlParser.KW_OPTION); + } + break; + } + } + break; + case 44: + localContext = new RevokeRolesContext(localContext); + this.enterOuterAlt(localContext, 44); + { + this.state = 866; + this.match(TrinoSqlParser.KW_REVOKE); + this.state = 870; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 77, this.context) ) { + case 1: + { + this.state = 867; + this.match(TrinoSqlParser.KW_ADMIN); + this.state = 868; + this.match(TrinoSqlParser.KW_OPTION); + this.state = 869; + this.match(TrinoSqlParser.KW_FOR); + } + break; + } + this.state = 872; + this.privilegeOrRole(); + this.state = 877; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 661; + this.state = 873; this.match(TrinoSqlParser.T__2); - this.state = 662; + this.state = 874; + this.privilegeOrRole(); + } + } + this.state = 879; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 880; + this.match(TrinoSqlParser.KW_FROM); + this.state = 881; + this.principal(); + this.state = 886; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 882; + this.match(TrinoSqlParser.T__2); + this.state = 883; this.principal(); } } - this.state = 667; + this.state = 888; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 671; + this.state = 892; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 92) { + if (_la === 111) { { - this.state = 668; + this.state = 889; this.match(TrinoSqlParser.KW_GRANTED); - this.state = 669; + this.state = 890; this.match(TrinoSqlParser.KW_BY); - this.state = 670; + this.state = 891; this.grantor(); } } - this.state = 675; + this.state = 896; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 103) { + if (_la === 122) { { - this.state = 673; + this.state = 894; this.match(TrinoSqlParser.KW_IN); - this.state = 674; - this.catalogName(); + this.state = 895; + (localContext as RevokeRolesContext)._catalog = this.catalogRef(); } } } break; - case 37: - localContext = new SetRoleContext(localContext); - this.enterOuterAlt(localContext, 37); + case 45: + localContext = new RevokePrivilegesContext(localContext); + this.enterOuterAlt(localContext, 45); { - this.state = 677; - this.match(TrinoSqlParser.KW_SET); - this.state = 678; - this.match(TrinoSqlParser.KW_ROLE); - this.state = 682; + this.state = 898; + this.match(TrinoSqlParser.KW_REVOKE); + this.state = 902; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 62, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 82, this.context) ) { case 1: { - this.state = 679; - this.match(TrinoSqlParser.KW_ALL); - } - break; - case 2: - { - this.state = 680; - this.match(TrinoSqlParser.KW_NONE); - } - break; - case 3: - { - this.state = 681; - (localContext as SetRoleContext)._role = this.identifier(); + this.state = 899; + this.match(TrinoSqlParser.KW_GRANT); + this.state = 900; + this.match(TrinoSqlParser.KW_OPTION); + this.state = 901; + this.match(TrinoSqlParser.KW_FOR); } break; } - this.state = 686; + this.state = 914; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 103) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 84, this.context) ) { + case 1: { - this.state = 684; - this.match(TrinoSqlParser.KW_IN); - this.state = 685; - this.catalogName(); - } - } - - } - break; - case 38: - localContext = new GrantContext(localContext); - this.enterOuterAlt(localContext, 38); - { - this.state = 688; - this.match(TrinoSqlParser.KW_GRANT); - this.state = 699; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_DELETE: - case TrinoSqlParser.KW_INSERT: - case TrinoSqlParser.KW_SELECT: - case TrinoSqlParser.KW_UPDATE: { - this.state = 689; - this.privilege(); - this.state = 694; + this.state = 904; + this.privilegeOrRole(); + this.state = 909; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 690; + this.state = 905; this.match(TrinoSqlParser.T__2); - this.state = 691; - this.privilege(); + this.state = 906; + this.privilegeOrRole(); } } - this.state = 696; + this.state = 911; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } + } break; - case TrinoSqlParser.KW_ALL: + case 2: { - this.state = 697; + this.state = 912; this.match(TrinoSqlParser.KW_ALL); - this.state = 698; + this.state = 913; this.match(TrinoSqlParser.KW_PRIVILEGES); } break; - default: - throw new antlr.NoViableAltException(this); } - this.state = 701; + this.state = 916; this.match(TrinoSqlParser.KW_ON); - this.state = 710; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 68, this.context) ) { - case 1: - { - this.state = 703; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 66, this.context) ) { - case 1: - { - this.state = 702; - this.match(TrinoSqlParser.KW_SCHEMA); - } - break; - } - this.state = 705; - this.schemaName(); - } - break; - case 2: - { - this.state = 707; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 212) { - { - this.state = 706; - this.match(TrinoSqlParser.KW_TABLE); - } - } - - this.state = 709; - this.tableName(); - } - break; - } - this.state = 712; - this.match(TrinoSqlParser.KW_TO); - this.state = 713; - (localContext as GrantContext)._grantee = this.principal(); - this.state = 717; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 69, this.context) ) { - case 1: - { - this.state = 714; - this.match(TrinoSqlParser.KW_WITH); - this.state = 715; - this.match(TrinoSqlParser.KW_GRANT); - this.state = 716; - this.match(TrinoSqlParser.KW_OPTION); - } - break; - } + this.state = 917; + this.grantObject(); + this.state = 918; + this.match(TrinoSqlParser.KW_FROM); + this.state = 919; + (localContext as RevokePrivilegesContext)._grantee = this.principal(); } break; - case 39: + case 46: localContext = new DenyContext(localContext); - this.enterOuterAlt(localContext, 39); + this.enterOuterAlt(localContext, 46); { - this.state = 719; + this.state = 921; this.match(TrinoSqlParser.KW_DENY); - this.state = 730; + this.state = 932; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_DELETE: - case TrinoSqlParser.KW_INSERT: - case TrinoSqlParser.KW_SELECT: - case TrinoSqlParser.KW_UPDATE: + switch (this.interpreter.adaptivePredict(this.tokenStream, 86, this.context) ) { + case 1: { - this.state = 720; + this.state = 922; this.privilege(); - this.state = 725; + this.state = 927; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 721; + this.state = 923; this.match(TrinoSqlParser.T__2); - this.state = 722; + this.state = 924; this.privilege(); } } - this.state = 727; + this.state = 929; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; - case TrinoSqlParser.KW_ALL: + case 2: { - this.state = 728; + this.state = 930; this.match(TrinoSqlParser.KW_ALL); - this.state = 729; + this.state = 931; this.match(TrinoSqlParser.KW_PRIVILEGES); } break; - default: - throw new antlr.NoViableAltException(this); } - this.state = 732; + this.state = 934; this.match(TrinoSqlParser.KW_ON); - this.state = 741; + this.state = 935; + this.grantObject(); + this.state = 936; + this.match(TrinoSqlParser.KW_TO); + this.state = 937; + (localContext as DenyContext)._grantee = this.principal(); + } + break; + case 47: + localContext = new SetRoleContext(localContext); + this.enterOuterAlt(localContext, 47); + { + this.state = 939; + this.match(TrinoSqlParser.KW_SET); + this.state = 940; + this.match(TrinoSqlParser.KW_ROLE); + this.state = 944; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 74, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 87, this.context) ) { case 1: { - this.state = 734; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 72, this.context) ) { - case 1: - { - this.state = 733; - this.match(TrinoSqlParser.KW_SCHEMA); - } - break; - } - this.state = 736; - this.schemaName(); + this.state = 941; + this.match(TrinoSqlParser.KW_ALL); } break; case 2: { - this.state = 738; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 212) { - { - this.state = 737; - this.match(TrinoSqlParser.KW_TABLE); - } + this.state = 942; + this.match(TrinoSqlParser.KW_NONE); } - - this.state = 740; - this.tableName(); + break; + case 3: + { + this.state = 943; + (localContext as SetRoleContext)._role = this.identifier(); } break; } - this.state = 743; - this.match(TrinoSqlParser.KW_TO); - this.state = 744; - (localContext as DenyContext)._grantee = this.principal(); + this.state = 948; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 122) { + { + this.state = 946; + this.match(TrinoSqlParser.KW_IN); + this.state = 947; + (localContext as SetRoleContext)._catalog = this.catalogRef(); + } + } + } break; - case 40: - localContext = new RevokeContext(localContext); - this.enterOuterAlt(localContext, 40); + case 48: + localContext = new ShowGrantsContext(localContext); + this.enterOuterAlt(localContext, 48); { - this.state = 746; - this.match(TrinoSqlParser.KW_REVOKE); - this.state = 750; + this.state = 950; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 951; + this.match(TrinoSqlParser.KW_GRANTS); + this.state = 954; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 91) { + if (_la === 190) { { - this.state = 747; - this.match(TrinoSqlParser.KW_GRANT); - this.state = 748; - this.match(TrinoSqlParser.KW_OPTION); - this.state = 749; - this.match(TrinoSqlParser.KW_FOR); + this.state = 952; + this.match(TrinoSqlParser.KW_ON); + this.state = 953; + this.grantObject(); } } - this.state = 762; + } + break; + case 49: + localContext = new ExplainContext(localContext); + this.enterOuterAlt(localContext, 49); + { + this.state = 956; + this.match(TrinoSqlParser.KW_EXPLAIN); + this.state = 968; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_DELETE: - case TrinoSqlParser.KW_INSERT: - case TrinoSqlParser.KW_SELECT: - case TrinoSqlParser.KW_UPDATE: + switch (this.interpreter.adaptivePredict(this.tokenStream, 91, this.context) ) { + case 1: { - this.state = 752; - this.privilege(); - this.state = 757; + this.state = 957; + this.match(TrinoSqlParser.T__0); + this.state = 958; + this.explainOption(); + this.state = 963; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 753; + this.state = 959; this.match(TrinoSqlParser.T__2); - this.state = 754; - this.privilege(); + this.state = 960; + this.explainOption(); } } - this.state = 759; + this.state = 965; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 966; + this.match(TrinoSqlParser.T__1); } break; - case TrinoSqlParser.KW_ALL: - { - this.state = 760; - this.match(TrinoSqlParser.KW_ALL); - this.state = 761; - this.match(TrinoSqlParser.KW_PRIVILEGES); - } - break; - default: - throw new antlr.NoViableAltException(this); } - this.state = 764; - this.match(TrinoSqlParser.KW_ON); - this.state = 773; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 80, this.context) ) { - case 1: - { - this.state = 766; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 78, this.context) ) { - case 1: - { - this.state = 765; - this.match(TrinoSqlParser.KW_SCHEMA); - } - break; - } - this.state = 768; - this.schemaName(); - } - break; - case 2: - { - this.state = 770; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 212) { - { - this.state = 769; - this.match(TrinoSqlParser.KW_TABLE); - } - } - - this.state = 772; - this.tableName(); - } - break; - } - this.state = 775; - this.match(TrinoSqlParser.KW_FROM); - this.state = 776; - (localContext as RevokeContext)._grantee = this.principal(); - } - break; - case 41: - localContext = new ShowGrantsContext(localContext); - this.enterOuterAlt(localContext, 41); - { - this.state = 777; - this.match(TrinoSqlParser.KW_SHOW); - this.state = 778; - this.match(TrinoSqlParser.KW_GRANTS); - this.state = 784; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 153) { - { - this.state = 779; - this.match(TrinoSqlParser.KW_ON); - this.state = 781; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 212) { - { - this.state = 780; - this.match(TrinoSqlParser.KW_TABLE); - } - } - - this.state = 783; - this.tableName(); - } - } - + this.state = 970; + this.statement(); } break; - case 42: - localContext = new ExplainContext(localContext); - this.enterOuterAlt(localContext, 42); + case 50: + localContext = new ExplainAnalyzeContext(localContext); + this.enterOuterAlt(localContext, 50); { - this.state = 786; + this.state = 971; this.match(TrinoSqlParser.KW_EXPLAIN); - this.state = 788; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 83, this.context) ) { - case 1: - { - this.state = 787; - this.match(TrinoSqlParser.KW_ANALYZE); - } - break; - } - this.state = 791; + this.state = 972; + this.match(TrinoSqlParser.KW_ANALYZE); + this.state = 974; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 238) { + if (_la === 297) { { - this.state = 790; + this.state = 973; this.match(TrinoSqlParser.KW_VERBOSE); } } - this.state = 804; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 86, this.context) ) { - case 1: - { - this.state = 793; - this.match(TrinoSqlParser.T__0); - this.state = 794; - this.explainOption(); - this.state = 799; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 795; - this.match(TrinoSqlParser.T__2); - this.state = 796; - this.explainOption(); - } - } - this.state = 801; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 802; - this.match(TrinoSqlParser.T__1); - } - break; - } - this.state = 806; + this.state = 976; this.statement(); } break; - case 43: + case 51: localContext = new ShowCreateTableContext(localContext); - this.enterOuterAlt(localContext, 43); + this.enterOuterAlt(localContext, 51); { - this.state = 807; + this.state = 977; this.match(TrinoSqlParser.KW_SHOW); - this.state = 808; + this.state = 978; this.match(TrinoSqlParser.KW_CREATE); - this.state = 809; + this.state = 979; this.match(TrinoSqlParser.KW_TABLE); - this.state = 810; - this.tableName(); + this.state = 980; + this.tableRef(); } break; - case 44: + case 52: localContext = new ShowCreateSchemaContext(localContext); - this.enterOuterAlt(localContext, 44); + this.enterOuterAlt(localContext, 52); { - this.state = 811; + this.state = 981; this.match(TrinoSqlParser.KW_SHOW); - this.state = 812; + this.state = 982; this.match(TrinoSqlParser.KW_CREATE); - this.state = 813; + this.state = 983; this.match(TrinoSqlParser.KW_SCHEMA); - this.state = 814; - this.schemaName(); + this.state = 984; + this.schemaRef(); } break; - case 45: + case 53: localContext = new ShowCreateViewContext(localContext); - this.enterOuterAlt(localContext, 45); + this.enterOuterAlt(localContext, 53); { - this.state = 815; + this.state = 985; this.match(TrinoSqlParser.KW_SHOW); - this.state = 816; + this.state = 986; this.match(TrinoSqlParser.KW_CREATE); - this.state = 817; + this.state = 987; this.match(TrinoSqlParser.KW_VIEW); - this.state = 818; - this.viewName(); + this.state = 988; + this.viewRef(); } break; - case 46: + case 54: localContext = new ShowCreateMaterializedViewContext(localContext); - this.enterOuterAlt(localContext, 46); + this.enterOuterAlt(localContext, 54); { - this.state = 819; + this.state = 989; this.match(TrinoSqlParser.KW_SHOW); - this.state = 820; + this.state = 990; this.match(TrinoSqlParser.KW_CREATE); - this.state = 821; + this.state = 991; this.match(TrinoSqlParser.KW_MATERIALIZED); - this.state = 822; + this.state = 992; this.match(TrinoSqlParser.KW_VIEW); - this.state = 823; - this.viewName(); + this.state = 993; + this.viewRef(); } break; - case 47: + case 55: + localContext = new ShowCreateFunctionContext(localContext); + this.enterOuterAlt(localContext, 55); + { + this.state = 994; + this.match(TrinoSqlParser.KW_SHOW); + this.state = 995; + this.match(TrinoSqlParser.KW_CREATE); + this.state = 996; + this.match(TrinoSqlParser.KW_FUNCTION); + this.state = 997; + this.functionName(); + } + break; + case 56: localContext = new ShowTablesContext(localContext); - this.enterOuterAlt(localContext, 47); + this.enterOuterAlt(localContext, 56); { - this.state = 824; + this.state = 998; this.match(TrinoSqlParser.KW_SHOW); - this.state = 825; + this.state = 999; this.match(TrinoSqlParser.KW_TABLES); - this.state = 828; + this.state = 1002; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 88 || _la === 103) { + if (_la === 105 || _la === 122) { { - this.state = 826; + this.state = 1000; _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 103)) { + if(!(_la === 105 || _la === 122)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 827; - this.schemaName(); + this.state = 1001; + this.schemaRef(); } } - this.state = 836; + this.state = 1010; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 154) { { - this.state = 830; + this.state = 1004; this.match(TrinoSqlParser.KW_LIKE); - this.state = 831; + this.state = 1005; (localContext as ShowTablesContext)._pattern = this.string_(); - this.state = 834; + this.state = 1008; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 832; + this.state = 1006; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 833; + this.state = 1007; (localContext as ShowTablesContext)._escape = this.string_(); } } @@ -2656,50 +3019,50 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 48: + case 57: localContext = new ShowSchemasContext(localContext); - this.enterOuterAlt(localContext, 48); + this.enterOuterAlt(localContext, 57); { - this.state = 838; + this.state = 1012; this.match(TrinoSqlParser.KW_SHOW); - this.state = 839; + this.state = 1013; this.match(TrinoSqlParser.KW_SCHEMAS); - this.state = 842; + this.state = 1016; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 88 || _la === 103) { + if (_la === 105 || _la === 122) { { - this.state = 840; + this.state = 1014; _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 103)) { + if(!(_la === 105 || _la === 122)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 841; - this.catalogName(); + this.state = 1015; + this.catalogRef(); } } - this.state = 850; + this.state = 1024; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 154) { { - this.state = 844; + this.state = 1018; this.match(TrinoSqlParser.KW_LIKE); - this.state = 845; + this.state = 1019; (localContext as ShowSchemasContext)._pattern = this.string_(); - this.state = 848; + this.state = 1022; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 846; + this.state = 1020; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 847; + this.state = 1021; (localContext as ShowSchemasContext)._escape = this.string_(); } } @@ -2709,31 +3072,31 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 49: + case 58: localContext = new ShowCatalogsContext(localContext); - this.enterOuterAlt(localContext, 49); + this.enterOuterAlt(localContext, 58); { - this.state = 852; + this.state = 1026; this.match(TrinoSqlParser.KW_SHOW); - this.state = 853; + this.state = 1027; this.match(TrinoSqlParser.KW_CATALOGS); - this.state = 860; + this.state = 1034; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 154) { { - this.state = 854; + this.state = 1028; this.match(TrinoSqlParser.KW_LIKE); - this.state = 855; + this.state = 1029; (localContext as ShowCatalogsContext)._pattern = this.string_(); - this.state = 858; + this.state = 1032; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 856; + this.state = 1030; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 857; + this.state = 1031; (localContext as ShowCatalogsContext)._escape = this.string_(); } } @@ -2743,50 +3106,42 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 50: + case 59: localContext = new ShowColumnsContext(localContext); - this.enterOuterAlt(localContext, 50); + this.enterOuterAlt(localContext, 59); { - this.state = 862; + this.state = 1036; this.match(TrinoSqlParser.KW_SHOW); - this.state = 863; + this.state = 1037; this.match(TrinoSqlParser.KW_COLUMNS); - this.state = 864; + this.state = 1038; _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 103)) { + if(!(_la === 105 || _la === 122)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 866; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 95, this.context) ) { - case 1: - { - this.state = 865; - this.tableOrViewName(); - } - break; - } - this.state = 874; + this.state = 1039; + this.tableOrViewName(); + this.state = 1046; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 154) { { - this.state = 868; + this.state = 1040; this.match(TrinoSqlParser.KW_LIKE); - this.state = 869; + this.state = 1041; (localContext as ShowColumnsContext)._pattern = this.string_(); - this.state = 872; + this.state = 1044; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 870; + this.state = 1042; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 871; + this.state = 1043; (localContext as ShowColumnsContext)._escape = this.string_(); } } @@ -2796,153 +3151,172 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 51: + case 60: localContext = new ShowStatsContext(localContext); - this.enterOuterAlt(localContext, 51); + this.enterOuterAlt(localContext, 60); { - this.state = 876; + this.state = 1048; this.match(TrinoSqlParser.KW_SHOW); - this.state = 877; + this.state = 1049; this.match(TrinoSqlParser.KW_STATS); - this.state = 878; + this.state = 1050; this.match(TrinoSqlParser.KW_FOR); - this.state = 879; - this.tableName(); + this.state = 1051; + this.tableOrViewName(); } break; - case 52: + case 61: localContext = new ShowStatsForQueryContext(localContext); - this.enterOuterAlt(localContext, 52); + this.enterOuterAlt(localContext, 61); { - this.state = 880; + this.state = 1052; this.match(TrinoSqlParser.KW_SHOW); - this.state = 881; + this.state = 1053; this.match(TrinoSqlParser.KW_STATS); - this.state = 882; + this.state = 1054; this.match(TrinoSqlParser.KW_FOR); - this.state = 883; + this.state = 1055; this.match(TrinoSqlParser.T__0); - this.state = 884; - this.query(); - this.state = 885; + this.state = 1056; + this.rootQuery(); + this.state = 1057; this.match(TrinoSqlParser.T__1); } break; - case 53: + case 62: localContext = new ShowRolesContext(localContext); - this.enterOuterAlt(localContext, 53); + this.enterOuterAlt(localContext, 62); { - this.state = 887; + this.state = 1059; this.match(TrinoSqlParser.KW_SHOW); - this.state = 889; + this.state = 1061; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 47) { + if (_la === 56) { { - this.state = 888; + this.state = 1060; this.match(TrinoSqlParser.KW_CURRENT); } } - this.state = 891; + this.state = 1063; this.match(TrinoSqlParser.KW_ROLES); - this.state = 894; + this.state = 1066; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 88 || _la === 103) { + if (_la === 105 || _la === 122) { { - this.state = 892; + this.state = 1064; _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 103)) { + if(!(_la === 105 || _la === 122)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 893; - this.identifier(); + this.state = 1065; + this.catalogRef(); } } } break; - case 54: + case 63: localContext = new ShowRoleGrantsContext(localContext); - this.enterOuterAlt(localContext, 54); + this.enterOuterAlt(localContext, 63); { - this.state = 896; + this.state = 1068; this.match(TrinoSqlParser.KW_SHOW); - this.state = 897; + this.state = 1069; this.match(TrinoSqlParser.KW_ROLE); - this.state = 898; + this.state = 1070; this.match(TrinoSqlParser.KW_GRANTS); - this.state = 901; + this.state = 1073; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 88 || _la === 103) { + if (_la === 105 || _la === 122) { { - this.state = 899; + this.state = 1071; _la = this.tokenStream.LA(1); - if(!(_la === 88 || _la === 103)) { + if(!(_la === 105 || _la === 122)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 900; - this.identifier(); + this.state = 1072; + this.catalogRef(); } } } break; - case 55: + case 64: localContext = new ShowColumnsContext(localContext); - this.enterOuterAlt(localContext, 55); + this.enterOuterAlt(localContext, 64); { - this.state = 903; + this.state = 1075; this.match(TrinoSqlParser.KW_DESCRIBE); - this.state = 904; + this.state = 1076; this.tableOrViewName(); } break; - case 56: + case 65: localContext = new ShowColumnsContext(localContext); - this.enterOuterAlt(localContext, 56); + this.enterOuterAlt(localContext, 65); { - this.state = 905; + this.state = 1077; this.match(TrinoSqlParser.KW_DESC); - this.state = 906; + this.state = 1078; this.tableOrViewName(); } break; - case 57: + case 66: localContext = new ShowFunctionsContext(localContext); - this.enterOuterAlt(localContext, 57); + this.enterOuterAlt(localContext, 66); { - this.state = 907; + this.state = 1079; this.match(TrinoSqlParser.KW_SHOW); - this.state = 908; + this.state = 1080; this.match(TrinoSqlParser.KW_FUNCTIONS); - this.state = 915; + this.state = 1083; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 105 || _la === 122) { { - this.state = 909; + this.state = 1081; + _la = this.tokenStream.LA(1); + if(!(_la === 105 || _la === 122)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1082; + this.schemaRef(); + } + } + + this.state = 1091; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 154) { + { + this.state = 1085; this.match(TrinoSqlParser.KW_LIKE); - this.state = 910; + this.state = 1086; (localContext as ShowFunctionsContext)._pattern = this.string_(); - this.state = 913; + this.state = 1089; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 911; + this.state = 1087; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 912; + this.state = 1088; (localContext as ShowFunctionsContext)._escape = this.string_(); } } @@ -2952,31 +3326,31 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 58: + case 67: localContext = new ShowSessionContext(localContext); - this.enterOuterAlt(localContext, 58); + this.enterOuterAlt(localContext, 67); { - this.state = 917; + this.state = 1093; this.match(TrinoSqlParser.KW_SHOW); - this.state = 918; + this.state = 1094; this.match(TrinoSqlParser.KW_SESSION); - this.state = 925; + this.state = 1101; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 122) { + if (_la === 154) { { - this.state = 919; + this.state = 1095; this.match(TrinoSqlParser.KW_LIKE); - this.state = 920; + this.state = 1096; (localContext as ShowSessionContext)._pattern = this.string_(); - this.state = 923; + this.state = 1099; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 73) { + if (_la === 90) { { - this.state = 921; + this.state = 1097; this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 922; + this.state = 1098; (localContext as ShowSessionContext)._escape = this.string_(); } } @@ -2986,62 +3360,88 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 59: + case 68: + localContext = new SetSessionAuthorizationContext(localContext); + this.enterOuterAlt(localContext, 68); + { + this.state = 1103; + this.match(TrinoSqlParser.KW_SET); + this.state = 1104; + this.match(TrinoSqlParser.KW_SESSION); + this.state = 1105; + this.match(TrinoSqlParser.KW_AUTHORIZATION); + this.state = 1106; + this.authorizationUser(); + } + break; + case 69: + localContext = new ResetSessionAuthorizationContext(localContext); + this.enterOuterAlt(localContext, 69); + { + this.state = 1107; + this.match(TrinoSqlParser.KW_RESET); + this.state = 1108; + this.match(TrinoSqlParser.KW_SESSION); + this.state = 1109; + this.match(TrinoSqlParser.KW_AUTHORIZATION); + } + break; + case 70: localContext = new SetSessionContext(localContext); - this.enterOuterAlt(localContext, 59); + this.enterOuterAlt(localContext, 70); { - this.state = 927; + this.state = 1110; this.match(TrinoSqlParser.KW_SET); - this.state = 928; + this.state = 1111; this.match(TrinoSqlParser.KW_SESSION); - this.state = 929; + this.state = 1112; this.qualifiedName(); - this.state = 930; + this.state = 1113; this.match(TrinoSqlParser.EQ); - this.state = 931; + this.state = 1114; this.expression(); } break; - case 60: + case 71: localContext = new ResetSessionContext(localContext); - this.enterOuterAlt(localContext, 60); + this.enterOuterAlt(localContext, 71); { - this.state = 933; + this.state = 1116; this.match(TrinoSqlParser.KW_RESET); - this.state = 934; + this.state = 1117; this.match(TrinoSqlParser.KW_SESSION); - this.state = 935; + this.state = 1118; this.qualifiedName(); } break; - case 61: + case 72: localContext = new StartTransactionContext(localContext); - this.enterOuterAlt(localContext, 61); + this.enterOuterAlt(localContext, 72); { - this.state = 936; + this.state = 1119; this.match(TrinoSqlParser.KW_START); - this.state = 937; + this.state = 1120; this.match(TrinoSqlParser.KW_TRANSACTION); - this.state = 946; + this.state = 1129; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 115 || _la === 177) { + if (_la === 134 || _la === 220) { { - this.state = 938; + this.state = 1121; this.transactionMode(); - this.state = 943; + this.state = 1126; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 939; + this.state = 1122; this.match(TrinoSqlParser.T__2); - this.state = 940; + this.state = 1123; this.transactionMode(); } } - this.state = 945; + this.state = 1128; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3050,98 +3450,98 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 62: + case 73: localContext = new CommitContext(localContext); - this.enterOuterAlt(localContext, 62); + this.enterOuterAlt(localContext, 73); { - this.state = 948; + this.state = 1131; this.match(TrinoSqlParser.KW_COMMIT); - this.state = 950; + this.state = 1133; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 245) { + if (_la === 307) { { - this.state = 949; + this.state = 1132; this.match(TrinoSqlParser.KW_WORK); } } } break; - case 63: + case 74: localContext = new RollbackContext(localContext); - this.enterOuterAlt(localContext, 63); + this.enterOuterAlt(localContext, 74); { - this.state = 952; + this.state = 1135; this.match(TrinoSqlParser.KW_ROLLBACK); - this.state = 954; + this.state = 1137; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 245) { + if (_la === 307) { { - this.state = 953; + this.state = 1136; this.match(TrinoSqlParser.KW_WORK); } } } break; - case 64: + case 75: localContext = new PrepareContext(localContext); - this.enterOuterAlt(localContext, 64); + this.enterOuterAlt(localContext, 75); { - this.state = 956; + this.state = 1139; this.match(TrinoSqlParser.KW_PREPARE); - this.state = 957; + this.state = 1140; this.identifier(); - this.state = 958; + this.state = 1141; this.match(TrinoSqlParser.KW_FROM); - this.state = 959; + this.state = 1142; this.statement(); } break; - case 65: + case 76: localContext = new DeallocateContext(localContext); - this.enterOuterAlt(localContext, 65); + this.enterOuterAlt(localContext, 76); { - this.state = 961; + this.state = 1144; this.match(TrinoSqlParser.KW_DEALLOCATE); - this.state = 962; + this.state = 1145; this.match(TrinoSqlParser.KW_PREPARE); - this.state = 963; + this.state = 1146; this.identifier(); } break; - case 66: + case 77: localContext = new ExecuteContext(localContext); - this.enterOuterAlt(localContext, 66); + this.enterOuterAlt(localContext, 77); { - this.state = 964; + this.state = 1147; this.match(TrinoSqlParser.KW_EXECUTE); - this.state = 965; + this.state = 1148; this.identifier(); - this.state = 975; + this.state = 1158; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 235) { + if (_la === 290) { { - this.state = 966; + this.state = 1149; this.match(TrinoSqlParser.KW_USING); - this.state = 967; + this.state = 1150; this.expression(); - this.state = 972; + this.state = 1155; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 968; + this.state = 1151; this.match(TrinoSqlParser.T__2); - this.state = 969; + this.state = 1152; this.expression(); } } - this.state = 974; + this.state = 1157; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3150,199 +3550,316 @@ export class TrinoSqlParser extends SQLParserBase { } break; - case 67: + case 78: + localContext = new ExecuteImmediateContext(localContext); + this.enterOuterAlt(localContext, 78); + { + this.state = 1160; + this.match(TrinoSqlParser.KW_EXECUTE); + this.state = 1161; + this.match(TrinoSqlParser.KW_IMMEDIATE); + this.state = 1162; + this.string_(); + this.state = 1172; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 290) { + { + this.state = 1163; + this.match(TrinoSqlParser.KW_USING); + this.state = 1164; + this.expression(); + this.state = 1169; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 1165; + this.match(TrinoSqlParser.T__2); + this.state = 1166; + this.expression(); + } + } + this.state = 1171; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + } + break; + case 79: localContext = new DescribeInputContext(localContext); - this.enterOuterAlt(localContext, 67); + this.enterOuterAlt(localContext, 79); { - this.state = 977; + this.state = 1174; this.match(TrinoSqlParser.KW_DESCRIBE); - this.state = 978; + this.state = 1175; this.match(TrinoSqlParser.KW_INPUT); - this.state = 979; + this.state = 1176; this.identifier(); } break; - case 68: + case 80: localContext = new DescribeOutputContext(localContext); - this.enterOuterAlt(localContext, 68); + this.enterOuterAlt(localContext, 80); { - this.state = 980; + this.state = 1177; this.match(TrinoSqlParser.KW_DESCRIBE); - this.state = 981; + this.state = 1178; this.match(TrinoSqlParser.KW_OUTPUT); - this.state = 982; + this.state = 1179; this.identifier(); } break; - case 69: + case 81: localContext = new SetPathContext(localContext); - this.enterOuterAlt(localContext, 69); + this.enterOuterAlt(localContext, 81); { - this.state = 983; + this.state = 1180; this.match(TrinoSqlParser.KW_SET); - this.state = 984; + this.state = 1181; this.match(TrinoSqlParser.KW_PATH); - this.state = 985; + this.state = 1182; this.pathSpecification(); } break; - case 70: + case 82: localContext = new SetTimeZoneContext(localContext); - this.enterOuterAlt(localContext, 70); + this.enterOuterAlt(localContext, 82); { - this.state = 986; + this.state = 1183; this.match(TrinoSqlParser.KW_SET); - this.state = 987; + this.state = 1184; this.match(TrinoSqlParser.KW_TIME); - this.state = 988; + this.state = 1185; this.match(TrinoSqlParser.KW_ZONE); - this.state = 991; + this.state = 1188; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 111, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 119, this.context) ) { case 1: { - this.state = 989; + this.state = 1186; this.match(TrinoSqlParser.KW_LOCAL); } break; case 2: { - this.state = 990; + this.state = 1187; this.expression(); } break; } } break; - case 71: + case 83: localContext = new UpdateContext(localContext); - this.enterOuterAlt(localContext, 71); + this.enterOuterAlt(localContext, 83); { - this.state = 993; + this.state = 1190; this.match(TrinoSqlParser.KW_UPDATE); - this.state = 994; - this.tableName(); - this.state = 995; + this.state = 1191; + this.tableRef(); + this.state = 1192; this.match(TrinoSqlParser.KW_SET); - this.state = 996; + this.state = 1193; this.updateAssignment(); - this.state = 1001; + this.state = 1198; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 997; + this.state = 1194; this.match(TrinoSqlParser.T__2); - this.state = 998; + this.state = 1195; this.updateAssignment(); } } - this.state = 1003; + this.state = 1200; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1006; + this.state = 1203; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 241) { + if (_la === 301) { { - this.state = 1004; + this.state = 1201; this.match(TrinoSqlParser.KW_WHERE); - this.state = 1005; + this.state = 1202; (localContext as UpdateContext)._where = this.booleanExpression(0); } } } break; - case 72: + case 84: localContext = new MergeContext(localContext); - this.enterOuterAlt(localContext, 72); + this.enterOuterAlt(localContext, 84); { - this.state = 1008; + this.state = 1205; this.match(TrinoSqlParser.KW_MERGE); - this.state = 1009; + this.state = 1206; this.match(TrinoSqlParser.KW_INTO); - this.state = 1010; - this.tableName(); - this.state = 1015; + this.state = 1207; + this.tableRef(); + this.state = 1212; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & 1140015023) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 3192429231) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & 3134381375) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 3162472435) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 4286316499) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4009750519) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 525170103) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & 15) !== 0)) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282056543) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { { - this.state = 1012; + this.state = 1209; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 26) { + if (_la === 28) { { - this.state = 1011; + this.state = 1208; this.match(TrinoSqlParser.KW_AS); } } - this.state = 1014; + this.state = 1211; this.identifier(); } } - this.state = 1017; + this.state = 1214; this.match(TrinoSqlParser.KW_USING); - this.state = 1018; + this.state = 1215; this.relation(0); - this.state = 1019; + this.state = 1216; this.match(TrinoSqlParser.KW_ON); - this.state = 1020; + this.state = 1217; this.expression(); - this.state = 1022; + this.state = 1219; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); do { { { - this.state = 1021; + this.state = 1218; this.mergeCase(); } } - this.state = 1024; + this.state = 1221; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 240); + } while (_la === 300); } break; - case 73: + case 85: localContext = new ShowTableCommentContext(localContext); - this.enterOuterAlt(localContext, 73); + this.enterOuterAlt(localContext, 85); { - this.state = 1026; + this.state = 1223; this.match(TrinoSqlParser.KW_SHOW); - this.state = 1027; + this.state = 1224; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 1028; + this.state = 1225; this.match(TrinoSqlParser.KW_ON); - this.state = 1029; + this.state = 1226; this.match(TrinoSqlParser.KW_TABLE); - this.state = 1030; - this.tableName(); + this.state = 1227; + this.tableRef(); } break; - case 74: + case 86: localContext = new ShowColumnCommentContext(localContext); - this.enterOuterAlt(localContext, 74); + this.enterOuterAlt(localContext, 86); { - this.state = 1031; + this.state = 1228; this.match(TrinoSqlParser.KW_SHOW); - this.state = 1032; + this.state = 1229; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 1033; + this.state = 1230; this.match(TrinoSqlParser.KW_ON); - this.state = 1034; + this.state = 1231; this.match(TrinoSqlParser.KW_COLUMN); - this.state = 1035; - this.columnName(); + this.state = 1232; + this.columnRef(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public rootQuery(): RootQueryContext { + let localContext = new RootQueryContext(this.context, this.state); + this.enterRule(localContext, 18, TrinoSqlParser.RULE_rootQuery); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1236; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 126, this.context) ) { + case 1: + { + this.state = 1235; + this.withFunction(); } break; } + this.state = 1238; + this.query(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public withFunction(): WithFunctionContext { + let localContext = new WithFunctionContext(this.context, this.state); + this.enterRule(localContext, 20, TrinoSqlParser.RULE_withFunction); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1240; + this.match(TrinoSqlParser.KW_WITH); + this.state = 1241; + this.functionSpecification(); + this.state = 1246; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 1242; + this.match(TrinoSqlParser.T__2); + this.state = 1243; + this.functionSpecification(); + } + } + this.state = 1248; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -3360,23 +3877,23 @@ export class TrinoSqlParser extends SQLParserBase { } public query(): QueryContext { let localContext = new QueryContext(this.context, this.state); - this.enterRule(localContext, 18, TrinoSqlParser.RULE_query); + this.enterRule(localContext, 22, TrinoSqlParser.RULE_query); let _la: number; try { localContext = new QueryStatementContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1039; + this.state = 1250; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 243) { + if (_la === 304) { { - this.state = 1038; + this.state = 1249; this.with_(); } } - this.state = 1041; + this.state = 1252; this.queryNoWith(); } } @@ -3396,38 +3913,38 @@ export class TrinoSqlParser extends SQLParserBase { } public with_(): WithContext { let localContext = new WithContext(this.context, this.state); - this.enterRule(localContext, 20, TrinoSqlParser.RULE_with); + this.enterRule(localContext, 24, TrinoSqlParser.RULE_with); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1043; + this.state = 1254; this.match(TrinoSqlParser.KW_WITH); - this.state = 1045; + this.state = 1256; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 178) { + if (_la === 221) { { - this.state = 1044; + this.state = 1255; this.match(TrinoSqlParser.KW_RECURSIVE); } } - this.state = 1047; + this.state = 1258; this.namedQuery(); - this.state = 1052; + this.state = 1263; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1048; + this.state = 1259; this.match(TrinoSqlParser.T__2); - this.state = 1049; + this.state = 1260; this.namedQuery(); } } - this.state = 1054; + this.state = 1265; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3449,11 +3966,12 @@ export class TrinoSqlParser extends SQLParserBase { } public tableElement(): TableElementContext { let localContext = new TableElementContext(this.context, this.state); - this.enterRule(localContext, 22, TrinoSqlParser.RULE_tableElement); + this.enterRule(localContext, 26, TrinoSqlParser.RULE_tableElement); try { - this.state = 1057; + this.state = 1268; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ABSENT: case TrinoSqlParser.KW_ADD: case TrinoSqlParser.KW_ADMIN: case TrinoSqlParser.KW_AFTER: @@ -3464,26 +3982,41 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ASC: case TrinoSqlParser.KW_AT: case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: case TrinoSqlParser.KW_COMMIT: case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: case TrinoSqlParser.KW_CURRENT: case TrinoSqlParser.KW_DATA: case TrinoSqlParser.KW_DATE: case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: case TrinoSqlParser.KW_DOUBLE: case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: case TrinoSqlParser.KW_EXCLUDING: case TrinoSqlParser.KW_EXPLAIN: case TrinoSqlParser.KW_FETCH: @@ -3492,16 +4025,18 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_FIRST: case TrinoSqlParser.KW_FOLLOWING: case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: case TrinoSqlParser.KW_GRANT: case TrinoSqlParser.KW_GRANTED: case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_GRAPHVIZ: case TrinoSqlParser.KW_GROUPS: case TrinoSqlParser.KW_HOUR: case TrinoSqlParser.KW_IF: case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: case TrinoSqlParser.KW_INCLUDING: case TrinoSqlParser.KW_INITIAL: case TrinoSqlParser.KW_INPUT: @@ -3509,13 +4044,21 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_INVOKER: case TrinoSqlParser.KW_IO: case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: case TrinoSqlParser.KW_LAST: case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: case TrinoSqlParser.KW_LEVEL: case TrinoSqlParser.KW_LIMIT: case TrinoSqlParser.KW_LOCAL: case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: case TrinoSqlParser.KW_MAP: case TrinoSqlParser.KW_MATCH: case TrinoSqlParser.KW_MATCHED: @@ -3526,6 +4069,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_MERGE: case TrinoSqlParser.KW_MINUTE: case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: case TrinoSqlParser.KW_NEXT: case TrinoSqlParser.KW_NFC: case TrinoSqlParser.KW_NFD: @@ -3535,6 +4079,8 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_NONE: case TrinoSqlParser.KW_NULLIF: case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: case TrinoSqlParser.KW_OFFSET: case TrinoSqlParser.KW_OMIT: case TrinoSqlParser.KW_ONE: @@ -3543,27 +4089,37 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ORDINALITY: case TrinoSqlParser.KW_OUTPUT: case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: case TrinoSqlParser.KW_PARTITION: case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: case TrinoSqlParser.KW_PAST: case TrinoSqlParser.KW_PATH: case TrinoSqlParser.KW_PATTERN: case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: case TrinoSqlParser.KW_POSITION: case TrinoSqlParser.KW_PRECEDING: case TrinoSqlParser.KW_PRECISION: case TrinoSqlParser.KW_PRIVILEGES: case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: case TrinoSqlParser.KW_RANGE: case TrinoSqlParser.KW_READ: case TrinoSqlParser.KW_REFRESH: case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: case TrinoSqlParser.KW_REPEATABLE: case TrinoSqlParser.KW_REPLACE: case TrinoSqlParser.KW_RESET: case TrinoSqlParser.KW_RESPECT: case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: case TrinoSqlParser.KW_REVOKE: case TrinoSqlParser.KW_ROLE: case TrinoSqlParser.KW_ROLES: @@ -3571,6 +4127,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ROW: case TrinoSqlParser.KW_ROWS: case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: case TrinoSqlParser.KW_SCHEMA: case TrinoSqlParser.KW_SCHEMAS: case TrinoSqlParser.KW_SECOND: @@ -3590,26 +4147,40 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_TABLES: case TrinoSqlParser.KW_TABLESAMPLE: case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: case TrinoSqlParser.KW_TIES: case TrinoSqlParser.KW_TIME: case TrinoSqlParser.KW_TIMESTAMP: case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: case TrinoSqlParser.KW_TRANSACTION: case TrinoSqlParser.KW_TRUNCATE: case TrinoSqlParser.KW_TRY_CAST: case TrinoSqlParser.KW_TYPE: case TrinoSqlParser.KW_UNBOUNDED: case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: case TrinoSqlParser.KW_UPDATE: case TrinoSqlParser.KW_USE: case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: case TrinoSqlParser.KW_WITHOUT: case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: case TrinoSqlParser.KW_WRITE: case TrinoSqlParser.KW_YEAR: case TrinoSqlParser.KW_ZONE: @@ -3619,14 +4190,14 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.BACKQUOTED_IDENTIFIER: this.enterOuterAlt(localContext, 1); { - this.state = 1055; + this.state = 1266; this.columnDefinition(); } break; case TrinoSqlParser.KW_LIKE: this.enterOuterAlt(localContext, 2); { - this.state = 1056; + this.state = 1267; this.likeClause(); } break; @@ -3650,47 +4221,47 @@ export class TrinoSqlParser extends SQLParserBase { } public columnDefinition(): ColumnDefinitionContext { let localContext = new ColumnDefinitionContext(this.context, this.state); - this.enterRule(localContext, 24, TrinoSqlParser.RULE_columnDefinition); + this.enterRule(localContext, 28, TrinoSqlParser.RULE_columnDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1059; + this.state = 1270; this.columnNameCreate(); - this.state = 1060; + this.state = 1271; this.type_(0); - this.state = 1063; + this.state = 1274; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 147) { + if (_la === 182) { { - this.state = 1061; + this.state = 1272; this.match(TrinoSqlParser.KW_NOT); - this.state = 1062; + this.state = 1273; this.match(TrinoSqlParser.KW_NULL); } } - this.state = 1067; + this.state = 1278; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 123, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 133, this.context) ) { case 1: { - this.state = 1065; + this.state = 1276; this.match(TrinoSqlParser.KW_COMMENT); - this.state = 1066; + this.state = 1277; this.string_(); } break; } - this.state = 1071; + this.state = 1282; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 124, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 134, this.context) ) { case 1: { - this.state = 1069; + this.state = 1280; this.match(TrinoSqlParser.KW_WITH); - this.state = 1070; + this.state = 1281; this.properties(); } break; @@ -3713,31 +4284,31 @@ export class TrinoSqlParser extends SQLParserBase { } public likeClause(): LikeClauseContext { let localContext = new LikeClauseContext(this.context, this.state); - this.enterRule(localContext, 26, TrinoSqlParser.RULE_likeClause); + this.enterRule(localContext, 30, TrinoSqlParser.RULE_likeClause); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1073; + this.state = 1284; this.match(TrinoSqlParser.KW_LIKE); - this.state = 1074; - this.tableName(); - this.state = 1077; + this.state = 1285; + this.tableRef(); + this.state = 1288; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 75 || _la === 104) { + if (_la === 92 || _la === 123) { { - this.state = 1075; + this.state = 1286; localContext._optionType = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 75 || _la === 104)) { + if(!(_la === 92 || _la === 123)) { localContext._optionType = this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1076; + this.state = 1287; this.match(TrinoSqlParser.KW_PROPERTIES); } } @@ -3760,15 +4331,15 @@ export class TrinoSqlParser extends SQLParserBase { } public properties(): PropertiesContext { let localContext = new PropertiesContext(this.context, this.state); - this.enterRule(localContext, 28, TrinoSqlParser.RULE_properties); + this.enterRule(localContext, 32, TrinoSqlParser.RULE_properties); try { this.enterOuterAlt(localContext, 1); { - this.state = 1079; + this.state = 1290; this.match(TrinoSqlParser.T__0); - this.state = 1080; + this.state = 1291; this.propertyAssignments(); - this.state = 1081; + this.state = 1292; this.match(TrinoSqlParser.T__1); } } @@ -3788,26 +4359,26 @@ export class TrinoSqlParser extends SQLParserBase { } public propertyAssignments(): PropertyAssignmentsContext { let localContext = new PropertyAssignmentsContext(this.context, this.state); - this.enterRule(localContext, 30, TrinoSqlParser.RULE_propertyAssignments); + this.enterRule(localContext, 34, TrinoSqlParser.RULE_propertyAssignments); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1083; + this.state = 1294; this.property(); - this.state = 1088; + this.state = 1299; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1084; + this.state = 1295; this.match(TrinoSqlParser.T__2); - this.state = 1085; + this.state = 1296; this.property(); } } - this.state = 1090; + this.state = 1301; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -3829,15 +4400,15 @@ export class TrinoSqlParser extends SQLParserBase { } public property(): PropertyContext { let localContext = new PropertyContext(this.context, this.state); - this.enterRule(localContext, 32, TrinoSqlParser.RULE_property); + this.enterRule(localContext, 36, TrinoSqlParser.RULE_property); try { this.enterOuterAlt(localContext, 1); { - this.state = 1091; + this.state = 1302; this.identifier(); - this.state = 1092; + this.state = 1303; this.match(TrinoSqlParser.EQ); - this.state = 1093; + this.state = 1304; this.propertyValue(); } } @@ -3857,16 +4428,16 @@ export class TrinoSqlParser extends SQLParserBase { } public propertyValue(): PropertyValueContext { let localContext = new PropertyValueContext(this.context, this.state); - this.enterRule(localContext, 34, TrinoSqlParser.RULE_propertyValue); + this.enterRule(localContext, 38, TrinoSqlParser.RULE_propertyValue); try { - this.state = 1097; + this.state = 1308; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 127, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 137, this.context) ) { case 1: localContext = new DefaultPropertyValueContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1095; + this.state = 1306; this.match(TrinoSqlParser.KW_DEFAULT); } break; @@ -3874,7 +4445,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new NonDefaultPropertyValueContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1096; + this.state = 1307; this.expression(); } break; @@ -3896,60 +4467,60 @@ export class TrinoSqlParser extends SQLParserBase { } public queryNoWith(): QueryNoWithContext { let localContext = new QueryNoWithContext(this.context, this.state); - this.enterRule(localContext, 36, TrinoSqlParser.RULE_queryNoWith); + this.enterRule(localContext, 40, TrinoSqlParser.RULE_queryNoWith); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1099; + this.state = 1310; this.queryTerm(0); - this.state = 1110; + this.state = 1321; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 158) { + if (_la === 195) { { - this.state = 1100; + this.state = 1311; this.match(TrinoSqlParser.KW_ORDER); - this.state = 1101; + this.state = 1312; this.match(TrinoSqlParser.KW_BY); - this.state = 1102; + this.state = 1313; this.sortItem(); - this.state = 1107; + this.state = 1318; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1103; + this.state = 1314; this.match(TrinoSqlParser.T__2); - this.state = 1104; + this.state = 1315; this.sortItem(); } } - this.state = 1109; + this.state = 1320; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1117; + this.state = 1328; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 151) { + if (_la === 188) { { - this.state = 1112; + this.state = 1323; this.match(TrinoSqlParser.KW_OFFSET); - this.state = 1113; + this.state = 1324; localContext._offset = this.rowCount(); - this.state = 1115; + this.state = 1326; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 192 || _la === 193) { + if (_la === 239 || _la === 240) { { - this.state = 1114; + this.state = 1325; _la = this.tokenStream.LA(1); - if(!(_la === 192 || _la === 193)) { + if(!(_la === 239 || _la === 240)) { this.errorHandler.recoverInline(this); } else { @@ -3962,15 +4533,15 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 1132; + this.state = 1343; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_LIMIT: { { - this.state = 1119; + this.state = 1330; this.match(TrinoSqlParser.KW_LIMIT); - this.state = 1120; + this.state = 1331; localContext._limit = this.limitRowCount(); } } @@ -3978,50 +4549,50 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_FETCH: { { - this.state = 1121; + this.state = 1332; this.match(TrinoSqlParser.KW_FETCH); - this.state = 1122; + this.state = 1333; _la = this.tokenStream.LA(1); - if(!(_la === 84 || _la === 139)) { + if(!(_la === 101 || _la === 174)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1124; + this.state = 1335; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 261 || _la === 265) { + if (_la === 324 || _la === 329) { { - this.state = 1123; + this.state = 1334; localContext._fetchFirst = this.rowCount(); } } - this.state = 1126; + this.state = 1337; _la = this.tokenStream.LA(1); - if(!(_la === 192 || _la === 193)) { + if(!(_la === 239 || _la === 240)) { this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1130; + this.state = 1341; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ONLY: { - this.state = 1127; + this.state = 1338; this.match(TrinoSqlParser.KW_ONLY); } break; case TrinoSqlParser.KW_WITH: { - this.state = 1128; + this.state = 1339; this.match(TrinoSqlParser.KW_WITH); - this.state = 1129; + this.state = 1340; this.match(TrinoSqlParser.KW_TIES); } break; @@ -4042,13 +4613,13 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_CREATE: case TrinoSqlParser.KW_DEALLOCATE: case TrinoSqlParser.KW_DELETE: + case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_DESC: case TrinoSqlParser.KW_DESCRIBE: case TrinoSqlParser.KW_DROP: case TrinoSqlParser.KW_EXECUTE: case TrinoSqlParser.KW_EXPLAIN: case TrinoSqlParser.KW_GRANT: - case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_INSERT: case TrinoSqlParser.KW_MERGE: case TrinoSqlParser.KW_PREPARE: @@ -4089,15 +4660,15 @@ export class TrinoSqlParser extends SQLParserBase { } public limitRowCount(): LimitRowCountContext { let localContext = new LimitRowCountContext(this.context, this.state); - this.enterRule(localContext, 38, TrinoSqlParser.RULE_limitRowCount); + this.enterRule(localContext, 42, TrinoSqlParser.RULE_limitRowCount); try { - this.state = 1136; + this.state = 1347; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ALL: this.enterOuterAlt(localContext, 1); { - this.state = 1134; + this.state = 1345; this.match(TrinoSqlParser.KW_ALL); } break; @@ -4105,7 +4676,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.INTEGER_VALUE: this.enterOuterAlt(localContext, 2); { - this.state = 1135; + this.state = 1346; this.rowCount(); } break; @@ -4129,14 +4700,14 @@ export class TrinoSqlParser extends SQLParserBase { } public rowCount(): RowCountContext { let localContext = new RowCountContext(this.context, this.state); - this.enterRule(localContext, 40, TrinoSqlParser.RULE_rowCount); + this.enterRule(localContext, 44, TrinoSqlParser.RULE_rowCount); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1138; + this.state = 1349; _la = this.tokenStream.LA(1); - if(!(_la === 261 || _la === 265)) { + if(!(_la === 324 || _la === 329)) { this.errorHandler.recoverInline(this); } else { @@ -4171,8 +4742,8 @@ export class TrinoSqlParser extends SQLParserBase { let parentState = this.state; let localContext = new QueryTermContext(this.context, parentState); let previousContext = localContext; - let _startState = 42; - this.enterRecursionRule(localContext, 42, TrinoSqlParser.RULE_queryTerm, _p); + let _startState = 46; + this.enterRecursionRule(localContext, 46, TrinoSqlParser.RULE_queryTerm, _p); let _la: number; try { let alternative: number; @@ -4183,13 +4754,13 @@ export class TrinoSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 1141; + this.state = 1352; this.queryPrimary(); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 1157; + this.state = 1368; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 139, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 149, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -4197,31 +4768,31 @@ export class TrinoSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 1155; + this.state = 1366; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 138, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 148, this.context) ) { case 1: { localContext = new SetOperationContext(new QueryTermContext(parentContext, parentState)); (localContext as SetOperationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_queryTerm); - this.state = 1143; + this.state = 1354; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 1144; + this.state = 1355; (localContext as SetOperationContext)._operator = this.match(TrinoSqlParser.KW_INTERSECT); - this.state = 1146; + this.state = 1357; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 20 || _la === 66) { + if (_la === 22 || _la === 79) { { - this.state = 1145; + this.state = 1356; this.setQuantifier(); } } - this.state = 1148; + this.state = 1359; (localContext as SetOperationContext)._right = this.queryTerm(3); } break; @@ -4230,40 +4801,40 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SetOperationContext(new QueryTermContext(parentContext, parentState)); (localContext as SetOperationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_queryTerm); - this.state = 1149; + this.state = 1360; if (!(this.precpred(this.context, 1))) { throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 1150; + this.state = 1361; (localContext as SetOperationContext)._operator = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 74 || _la === 229)) { + if(!(_la === 91 || _la === 281)) { (localContext as SetOperationContext)._operator = this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } - this.state = 1152; + this.state = 1363; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 20 || _la === 66) { + if (_la === 22 || _la === 79) { { - this.state = 1151; + this.state = 1362; this.setQuantifier(); } } - this.state = 1154; + this.state = 1365; (localContext as SetOperationContext)._right = this.queryTerm(2); } break; } } } - this.state = 1159; + this.state = 1370; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 139, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 149, this.context); } } } @@ -4283,17 +4854,17 @@ export class TrinoSqlParser extends SQLParserBase { } public queryPrimary(): QueryPrimaryContext { let localContext = new QueryPrimaryContext(this.context, this.state); - this.enterRule(localContext, 44, TrinoSqlParser.RULE_queryPrimary); + this.enterRule(localContext, 48, TrinoSqlParser.RULE_queryPrimary); try { let alternative: number; - this.state = 1176; + this.state = 1387; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_SELECT: localContext = new QueryPrimaryDefaultContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1160; + this.state = 1371; this.querySpecification(); } break; @@ -4301,37 +4872,37 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new TableContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1161; + this.state = 1372; this.match(TrinoSqlParser.KW_TABLE); - this.state = 1162; - this.tableName(); + this.state = 1373; + this.tableRef(); } break; case TrinoSqlParser.KW_VALUES: localContext = new InlineTableContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1163; + this.state = 1374; this.match(TrinoSqlParser.KW_VALUES); - this.state = 1164; + this.state = 1375; this.expression(); - this.state = 1169; + this.state = 1380; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 140, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 150, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1165; + this.state = 1376; this.match(TrinoSqlParser.T__2); - this.state = 1166; + this.state = 1377; this.expression(); } } } - this.state = 1171; + this.state = 1382; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 140, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 150, this.context); } } break; @@ -4339,11 +4910,11 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SubqueryContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1172; + this.state = 1383; this.match(TrinoSqlParser.T__0); - this.state = 1173; + this.state = 1384; this.queryNoWith(); - this.state = 1174; + this.state = 1385; this.match(TrinoSqlParser.T__1); } break; @@ -4367,36 +4938,36 @@ export class TrinoSqlParser extends SQLParserBase { } public sortItem(): SortItemContext { let localContext = new SortItemContext(this.context, this.state); - this.enterRule(localContext, 46, TrinoSqlParser.RULE_sortItem); + this.enterRule(localContext, 50, TrinoSqlParser.RULE_sortItem); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1180; + this.state = 1391; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 142, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 152, this.context) ) { case 1: { - this.state = 1178; - this.columnName(); + this.state = 1389; + this.columnRef(); } break; case 2: { - this.state = 1179; + this.state = 1390; this.expression(); } break; } - this.state = 1183; + this.state = 1394; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 143, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 153, this.context) ) { case 1: { - this.state = 1182; + this.state = 1393; localContext._ordering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 27 || _la === 63)) { + if(!(_la === 29 || _la === 75)) { localContext._ordering = this.errorHandler.recoverInline(this); } else { @@ -4406,17 +4977,17 @@ export class TrinoSqlParser extends SQLParserBase { } break; } - this.state = 1187; + this.state = 1398; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 150) { + if (_la === 185) { { - this.state = 1185; + this.state = 1396; this.match(TrinoSqlParser.KW_NULLS); - this.state = 1186; + this.state = 1397; localContext._nullOrdering = this.tokenStream.LT(1); _la = this.tokenStream.LA(1); - if(!(_la === 84 || _la === 118)) { + if(!(_la === 101 || _la === 148)) { localContext._nullOrdering = this.errorHandler.recoverInline(this); } else { @@ -4444,137 +5015,137 @@ export class TrinoSqlParser extends SQLParserBase { } public querySpecification(): QuerySpecificationContext { let localContext = new QuerySpecificationContext(this.context, this.state); - this.enterRule(localContext, 48, TrinoSqlParser.RULE_querySpecification); + this.enterRule(localContext, 52, TrinoSqlParser.RULE_querySpecification); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1189; + this.state = 1400; this.match(TrinoSqlParser.KW_SELECT); - this.state = 1191; + this.state = 1402; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 145, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 155, this.context) ) { case 1: { - this.state = 1190; + this.state = 1401; this.setQuantifier(); } break; } - this.state = 1193; + this.state = 1404; this.selectItem(); - this.state = 1198; + this.state = 1409; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 146, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 156, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1194; + this.state = 1405; this.match(TrinoSqlParser.T__2); - this.state = 1195; + this.state = 1406; this.selectItem(); } } } - this.state = 1200; + this.state = 1411; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 146, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 156, this.context); } - this.state = 1210; + this.state = 1421; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 148, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 158, this.context) ) { case 1: { - this.state = 1201; + this.state = 1412; this.match(TrinoSqlParser.KW_FROM); - this.state = 1202; + this.state = 1413; this.relation(0); - this.state = 1207; + this.state = 1418; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 147, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 157, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1203; + this.state = 1414; this.match(TrinoSqlParser.T__2); - this.state = 1204; + this.state = 1415; this.relation(0); } } } - this.state = 1209; + this.state = 1420; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 147, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 157, this.context); } } break; } - this.state = 1214; + this.state = 1425; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 149, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 159, this.context) ) { case 1: { - this.state = 1212; + this.state = 1423; this.match(TrinoSqlParser.KW_WHERE); - this.state = 1213; + this.state = 1424; localContext._where = this.booleanExpression(0); } break; } - this.state = 1219; + this.state = 1430; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 150, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 160, this.context) ) { case 1: { - this.state = 1216; + this.state = 1427; this.match(TrinoSqlParser.KW_GROUP); - this.state = 1217; + this.state = 1428; this.match(TrinoSqlParser.KW_BY); - this.state = 1218; + this.state = 1429; this.groupBy(); } break; } - this.state = 1223; + this.state = 1434; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 151, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { case 1: { - this.state = 1221; + this.state = 1432; this.match(TrinoSqlParser.KW_HAVING); - this.state = 1222; + this.state = 1433; localContext._having = this.booleanExpression(0); } break; } - this.state = 1234; + this.state = 1445; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 153, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 163, this.context) ) { case 1: { - this.state = 1225; + this.state = 1436; this.match(TrinoSqlParser.KW_WINDOW); - this.state = 1226; + this.state = 1437; this.windowDefinition(); - this.state = 1231; + this.state = 1442; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 152, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 162, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1227; + this.state = 1438; this.match(TrinoSqlParser.T__2); - this.state = 1228; + this.state = 1439; this.windowDefinition(); } } } - this.state = 1233; + this.state = 1444; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 152, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 162, this.context); } } break; @@ -4597,40 +5168,40 @@ export class TrinoSqlParser extends SQLParserBase { } public groupBy(): GroupByContext { let localContext = new GroupByContext(this.context, this.state); - this.enterRule(localContext, 50, TrinoSqlParser.RULE_groupBy); + this.enterRule(localContext, 54, TrinoSqlParser.RULE_groupBy); try { let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1237; + this.state = 1448; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 154, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 164, this.context) ) { case 1: { - this.state = 1236; + this.state = 1447; this.setQuantifier(); } break; } - this.state = 1239; + this.state = 1450; this.groupingElement(); - this.state = 1244; + this.state = 1455; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 155, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 165, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { { { - this.state = 1240; + this.state = 1451; this.match(TrinoSqlParser.T__2); - this.state = 1241; + this.state = 1452; this.groupingElement(); } } } - this.state = 1246; + this.state = 1457; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 155, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 165, this.context); } } } @@ -4650,17 +5221,17 @@ export class TrinoSqlParser extends SQLParserBase { } public groupingElement(): GroupingElementContext { let localContext = new GroupingElementContext(this.context, this.state); - this.enterRule(localContext, 52, TrinoSqlParser.RULE_groupingElement); + this.enterRule(localContext, 56, TrinoSqlParser.RULE_groupingElement); let _la: number; try { - this.state = 1287; + this.state = 1498; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 161, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 171, this.context) ) { case 1: localContext = new SingleGroupingSetContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1247; + this.state = 1458; this.groupingSet(); } break; @@ -4668,37 +5239,37 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new RollupContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1248; + this.state = 1459; this.match(TrinoSqlParser.KW_ROLLUP); - this.state = 1249; + this.state = 1460; this.match(TrinoSqlParser.T__0); - this.state = 1258; + this.state = 1469; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 157, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 167, this.context) ) { case 1: { - this.state = 1250; - this.groupingTerm(); - this.state = 1255; + this.state = 1461; + this.groupingSet(); + this.state = 1466; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1251; + this.state = 1462; this.match(TrinoSqlParser.T__2); - this.state = 1252; - this.groupingTerm(); + this.state = 1463; + this.groupingSet(); } } - this.state = 1257; + this.state = 1468; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - this.state = 1260; + this.state = 1471; this.match(TrinoSqlParser.T__1); } break; @@ -4706,37 +5277,37 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new CubeContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1261; + this.state = 1472; this.match(TrinoSqlParser.KW_CUBE); - this.state = 1262; + this.state = 1473; this.match(TrinoSqlParser.T__0); - this.state = 1271; + this.state = 1482; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 159, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 169, this.context) ) { case 1: { - this.state = 1263; - this.groupingTerm(); - this.state = 1268; + this.state = 1474; + this.groupingSet(); + this.state = 1479; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1264; + this.state = 1475; this.match(TrinoSqlParser.T__2); - this.state = 1265; - this.groupingTerm(); + this.state = 1476; + this.groupingSet(); } } - this.state = 1270; + this.state = 1481; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - this.state = 1273; + this.state = 1484; this.match(TrinoSqlParser.T__1); } break; @@ -4744,31 +5315,31 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new MultipleGroupingSetsContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1274; + this.state = 1485; this.match(TrinoSqlParser.KW_GROUPING); - this.state = 1275; + this.state = 1486; this.match(TrinoSqlParser.KW_SETS); - this.state = 1276; + this.state = 1487; this.match(TrinoSqlParser.T__0); - this.state = 1277; + this.state = 1488; this.groupingSet(); - this.state = 1282; + this.state = 1493; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1278; + this.state = 1489; this.match(TrinoSqlParser.T__2); - this.state = 1279; + this.state = 1490; this.groupingSet(); } } - this.state = 1284; + this.state = 1495; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1285; + this.state = 1496; this.match(TrinoSqlParser.T__1); } break; @@ -4790,51 +5361,51 @@ export class TrinoSqlParser extends SQLParserBase { } public groupingSet(): GroupingSetContext { let localContext = new GroupingSetContext(this.context, this.state); - this.enterRule(localContext, 54, TrinoSqlParser.RULE_groupingSet); + this.enterRule(localContext, 58, TrinoSqlParser.RULE_groupingSet); let _la: number; try { - this.state = 1302; + this.state = 1513; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 164, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 174, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1289; + this.state = 1500; this.match(TrinoSqlParser.T__0); - this.state = 1298; + this.state = 1509; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 163, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 173, this.context) ) { case 1: { - this.state = 1290; + this.state = 1501; this.groupingTerm(); - this.state = 1295; + this.state = 1506; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1291; + this.state = 1502; this.match(TrinoSqlParser.T__2); - this.state = 1292; + this.state = 1503; this.groupingTerm(); } } - this.state = 1297; + this.state = 1508; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } break; } - this.state = 1300; + this.state = 1511; this.match(TrinoSqlParser.T__1); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1301; + this.state = 1512; this.groupingTerm(); } break; @@ -4856,22 +5427,22 @@ export class TrinoSqlParser extends SQLParserBase { } public groupingTerm(): GroupingTermContext { let localContext = new GroupingTermContext(this.context, this.state); - this.enterRule(localContext, 56, TrinoSqlParser.RULE_groupingTerm); + this.enterRule(localContext, 60, TrinoSqlParser.RULE_groupingTerm); try { - this.state = 1306; + this.state = 1517; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 165, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 175, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1304; - this.columnName(); + this.state = 1515; + this.columnRef(); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1305; + this.state = 1516; this.expression(); } break; @@ -4893,19 +5464,19 @@ export class TrinoSqlParser extends SQLParserBase { } public windowDefinition(): WindowDefinitionContext { let localContext = new WindowDefinitionContext(this.context, this.state); - this.enterRule(localContext, 58, TrinoSqlParser.RULE_windowDefinition); + this.enterRule(localContext, 62, TrinoSqlParser.RULE_windowDefinition); try { this.enterOuterAlt(localContext, 1); { - this.state = 1308; + this.state = 1519; localContext._name = this.identifier(); - this.state = 1309; + this.state = 1520; this.match(TrinoSqlParser.KW_AS); - this.state = 1310; + this.state = 1521; this.match(TrinoSqlParser.T__0); - this.state = 1311; + this.state = 1522; this.windowSpecification(); - this.state = 1312; + this.state = 1523; this.match(TrinoSqlParser.T__1); } } @@ -4925,89 +5496,89 @@ export class TrinoSqlParser extends SQLParserBase { } public windowSpecification(): WindowSpecificationContext { let localContext = new WindowSpecificationContext(this.context, this.state); - this.enterRule(localContext, 60, TrinoSqlParser.RULE_windowSpecification); + this.enterRule(localContext, 64, TrinoSqlParser.RULE_windowSpecification); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1315; + this.state = 1526; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 166, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 176, this.context) ) { case 1: { - this.state = 1314; + this.state = 1525; localContext._existingWindowName = this.identifier(); } break; } - this.state = 1327; + this.state = 1538; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 163) { + if (_la === 201) { { - this.state = 1317; + this.state = 1528; this.match(TrinoSqlParser.KW_PARTITION); - this.state = 1318; + this.state = 1529; this.match(TrinoSqlParser.KW_BY); - this.state = 1319; + this.state = 1530; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); - this.state = 1324; + this.state = 1535; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1320; + this.state = 1531; this.match(TrinoSqlParser.T__2); - this.state = 1321; + this.state = 1532; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); } } - this.state = 1326; + this.state = 1537; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1339; + this.state = 1550; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 158) { + if (_la === 195) { { - this.state = 1329; + this.state = 1540; this.match(TrinoSqlParser.KW_ORDER); - this.state = 1330; + this.state = 1541; this.match(TrinoSqlParser.KW_BY); - this.state = 1331; + this.state = 1542; this.sortItem(); - this.state = 1336; + this.state = 1547; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1332; + this.state = 1543; this.match(TrinoSqlParser.T__2); - this.state = 1333; + this.state = 1544; this.sortItem(); } } - this.state = 1338; + this.state = 1549; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1342; + this.state = 1553; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 98 || _la === 134 || _la === 176 || _la === 193) { + if (_la === 116 || _la === 168 || _la === 219 || _la === 240) { { - this.state = 1341; + this.state = 1552; this.windowFrame(); } } @@ -5030,30 +5601,30 @@ export class TrinoSqlParser extends SQLParserBase { } public namedQuery(): NamedQueryContext { let localContext = new NamedQueryContext(this.context, this.state); - this.enterRule(localContext, 62, TrinoSqlParser.RULE_namedQuery); + this.enterRule(localContext, 66, TrinoSqlParser.RULE_namedQuery); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1344; + this.state = 1555; localContext._name = this.identifier(); - this.state = 1346; + this.state = 1557; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); if (_la === 1) { { - this.state = 1345; + this.state = 1556; this.columnAliases(); } } - this.state = 1348; + this.state = 1559; this.match(TrinoSqlParser.KW_AS); - this.state = 1349; + this.state = 1560; this.match(TrinoSqlParser.T__0); - this.state = 1350; + this.state = 1561; this.query(); - this.state = 1351; + this.state = 1562; this.match(TrinoSqlParser.T__1); } } @@ -5073,14 +5644,14 @@ export class TrinoSqlParser extends SQLParserBase { } public setQuantifier(): SetQuantifierContext { let localContext = new SetQuantifierContext(this.context, this.state); - this.enterRule(localContext, 64, TrinoSqlParser.RULE_setQuantifier); + this.enterRule(localContext, 68, TrinoSqlParser.RULE_setQuantifier); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1353; + this.state = 1564; _la = this.tokenStream.LA(1); - if(!(_la === 20 || _la === 66)) { + if(!(_la === 22 || _la === 79)) { this.errorHandler.recoverInline(this); } else { @@ -5105,48 +5676,48 @@ export class TrinoSqlParser extends SQLParserBase { } public selectItem(): SelectItemContext { let localContext = new SelectItemContext(this.context, this.state); - this.enterRule(localContext, 66, TrinoSqlParser.RULE_selectItem); + this.enterRule(localContext, 70, TrinoSqlParser.RULE_selectItem); let _la: number; try { - this.state = 1373; + this.state = 1584; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 177, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { case 1: localContext = new SelectSingleContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1357; + this.state = 1568; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 173, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 183, this.context) ) { case 1: { - this.state = 1355; - this.columnName(); + this.state = 1566; + this.columnRef(); } break; case 2: { - this.state = 1356; + this.state = 1567; this.expression(); } break; } - this.state = 1363; + this.state = 1574; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 175, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 185, this.context) ) { case 1: { - this.state = 1360; + this.state = 1571; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 26) { + if (_la === 28) { { - this.state = 1359; + this.state = 1570; this.match(TrinoSqlParser.KW_AS); } } - this.state = 1362; + this.state = 1573; this.identifier(); } break; @@ -5157,20 +5728,20 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SelectAllContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1365; + this.state = 1576; this.primaryExpression(0); - this.state = 1366; + this.state = 1577; this.match(TrinoSqlParser.T__3); - this.state = 1367; + this.state = 1578; this.match(TrinoSqlParser.ASTERISK); - this.state = 1370; + this.state = 1581; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 176, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 186, this.context) ) { case 1: { - this.state = 1368; + this.state = 1579; this.match(TrinoSqlParser.KW_AS); - this.state = 1369; + this.state = 1580; this.columnAliases(); } break; @@ -5181,7 +5752,7 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new SelectAllContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1372; + this.state = 1583; this.match(TrinoSqlParser.ASTERISK); } break; @@ -5213,8 +5784,8 @@ export class TrinoSqlParser extends SQLParserBase { let parentState = this.state; let localContext = new RelationContext(this.context, parentState); let previousContext = localContext; - let _startState = 68; - this.enterRecursionRule(localContext, 68, TrinoSqlParser.RULE_relation, _p); + let _startState = 72; + this.enterRecursionRule(localContext, 72, TrinoSqlParser.RULE_relation, _p); try { let alternative: number; this.enterOuterAlt(localContext, 1); @@ -5224,13 +5795,13 @@ export class TrinoSqlParser extends SQLParserBase { this.context = localContext; previousContext = localContext; - this.state = 1376; + this.state = 1587; this.sampledRelation(); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 1396; + this.state = 1607; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 179, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 189, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -5242,20 +5813,20 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new JoinRelationContext(new RelationContext(parentContext, parentState)); (localContext as JoinRelationContext)._left = previousContext; this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_relation); - this.state = 1378; + this.state = 1589; if (!(this.precpred(this.context, 2))) { throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 1392; + this.state = 1603; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_CROSS: { - this.state = 1379; + this.state = 1590; this.match(TrinoSqlParser.KW_CROSS); - this.state = 1380; + this.state = 1591; this.match(TrinoSqlParser.KW_JOIN); - this.state = 1381; + this.state = 1592; (localContext as JoinRelationContext)._right = this.sampledRelation(); } break; @@ -5265,25 +5836,25 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_LEFT: case TrinoSqlParser.KW_RIGHT: { - this.state = 1382; + this.state = 1593; this.joinType(); - this.state = 1383; + this.state = 1594; this.match(TrinoSqlParser.KW_JOIN); - this.state = 1384; + this.state = 1595; (localContext as JoinRelationContext)._rightRelation = this.relation(0); - this.state = 1385; + this.state = 1596; this.joinCriteria(); } break; case TrinoSqlParser.KW_NATURAL: { - this.state = 1387; + this.state = 1598; this.match(TrinoSqlParser.KW_NATURAL); - this.state = 1388; + this.state = 1599; this.joinType(); - this.state = 1389; + this.state = 1600; this.match(TrinoSqlParser.KW_JOIN); - this.state = 1390; + this.state = 1601; (localContext as JoinRelationContext)._right = this.sampledRelation(); } break; @@ -5293,9 +5864,9 @@ export class TrinoSqlParser extends SQLParserBase { } } } - this.state = 1398; + this.state = 1609; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 179, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 189, this.context); } } } @@ -5315,22 +5886,22 @@ export class TrinoSqlParser extends SQLParserBase { } public joinType(): JoinTypeContext { let localContext = new JoinTypeContext(this.context, this.state); - this.enterRule(localContext, 70, TrinoSqlParser.RULE_joinType); + this.enterRule(localContext, 74, TrinoSqlParser.RULE_joinType); let _la: number; try { - this.state = 1414; + this.state = 1625; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_INNER: case TrinoSqlParser.KW_JOIN: this.enterOuterAlt(localContext, 1); { - this.state = 1400; + this.state = 1611; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 106) { + if (_la === 125) { { - this.state = 1399; + this.state = 1610; this.match(TrinoSqlParser.KW_INNER); } } @@ -5340,14 +5911,14 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_LEFT: this.enterOuterAlt(localContext, 2); { - this.state = 1402; + this.state = 1613; this.match(TrinoSqlParser.KW_LEFT); - this.state = 1404; + this.state = 1615; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 160) { + if (_la === 197) { { - this.state = 1403; + this.state = 1614; this.match(TrinoSqlParser.KW_OUTER); } } @@ -5357,14 +5928,14 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_RIGHT: this.enterOuterAlt(localContext, 3); { - this.state = 1406; + this.state = 1617; this.match(TrinoSqlParser.KW_RIGHT); - this.state = 1408; + this.state = 1619; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 160) { + if (_la === 197) { { - this.state = 1407; + this.state = 1618; this.match(TrinoSqlParser.KW_OUTER); } } @@ -5374,14 +5945,14 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_FULL: this.enterOuterAlt(localContext, 4); { - this.state = 1410; + this.state = 1621; this.match(TrinoSqlParser.KW_FULL); - this.state = 1412; + this.state = 1623; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 160) { + if (_la === 197) { { - this.state = 1411; + this.state = 1622; this.match(TrinoSqlParser.KW_OUTER); } } @@ -5408,47 +5979,47 @@ export class TrinoSqlParser extends SQLParserBase { } public joinCriteria(): JoinCriteriaContext { let localContext = new JoinCriteriaContext(this.context, this.state); - this.enterRule(localContext, 72, TrinoSqlParser.RULE_joinCriteria); + this.enterRule(localContext, 76, TrinoSqlParser.RULE_joinCriteria); let _la: number; try { - this.state = 1430; + this.state = 1641; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ON: this.enterOuterAlt(localContext, 1); { - this.state = 1416; + this.state = 1627; this.match(TrinoSqlParser.KW_ON); - this.state = 1417; + this.state = 1628; this.booleanExpression(0); } break; case TrinoSqlParser.KW_USING: this.enterOuterAlt(localContext, 2); { - this.state = 1418; + this.state = 1629; this.match(TrinoSqlParser.KW_USING); - this.state = 1419; + this.state = 1630; this.match(TrinoSqlParser.T__0); - this.state = 1420; + this.state = 1631; this.identifier(); - this.state = 1425; + this.state = 1636; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1421; + this.state = 1632; this.match(TrinoSqlParser.T__2); - this.state = 1422; + this.state = 1633; this.identifier(); } } - this.state = 1427; + this.state = 1638; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1428; + this.state = 1639; this.match(TrinoSqlParser.T__1); } break; @@ -5472,26 +6043,26 @@ export class TrinoSqlParser extends SQLParserBase { } public sampledRelation(): SampledRelationContext { let localContext = new SampledRelationContext(this.context, this.state); - this.enterRule(localContext, 74, TrinoSqlParser.RULE_sampledRelation); + this.enterRule(localContext, 78, TrinoSqlParser.RULE_sampledRelation); try { this.enterOuterAlt(localContext, 1); { - this.state = 1432; + this.state = 1643; this.patternRecognition(); - this.state = 1439; + this.state = 1650; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 187, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 197, this.context) ) { case 1: { - this.state = 1433; + this.state = 1644; this.match(TrinoSqlParser.KW_TABLESAMPLE); - this.state = 1434; + this.state = 1645; this.sampleType(); - this.state = 1435; + this.state = 1646; this.match(TrinoSqlParser.T__0); - this.state = 1436; + this.state = 1647; localContext._percentage = this.expression(); - this.state = 1437; + this.state = 1648; this.match(TrinoSqlParser.T__1); } break; @@ -5514,14 +6085,14 @@ export class TrinoSqlParser extends SQLParserBase { } public sampleType(): SampleTypeContext { let localContext = new SampleTypeContext(this.context, this.state); - this.enterRule(localContext, 76, TrinoSqlParser.RULE_sampleType); + this.enterRule(localContext, 80, TrinoSqlParser.RULE_sampleType); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1441; + this.state = 1652; _la = this.tokenStream.LA(1); - if(!(_la === 30 || _la === 211)) { + if(!(_la === 33 || _la === 259)) { this.errorHandler.recoverInline(this); } else { @@ -5544,146 +6115,273 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } + public trimsSpecification(): TrimsSpecificationContext { + let localContext = new TrimsSpecificationContext(this.context, this.state); + this.enterRule(localContext, 82, TrinoSqlParser.RULE_trimsSpecification); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 1654; + _la = this.tokenStream.LA(1); + if(!(_la === 35 || _la === 150 || _la === 270)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public listAggOverflowBehavior(): ListAggOverflowBehaviorContext { + let localContext = new ListAggOverflowBehaviorContext(this.context, this.state); + this.enterRule(localContext, 84, TrinoSqlParser.RULE_listAggOverflowBehavior); + let _la: number; + try { + this.state = 1662; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ERROR: + this.enterOuterAlt(localContext, 1); + { + this.state = 1656; + this.match(TrinoSqlParser.KW_ERROR); + } + break; + case TrinoSqlParser.KW_TRUNCATE: + this.enterOuterAlt(localContext, 2); + { + this.state = 1657; + this.match(TrinoSqlParser.KW_TRUNCATE); + this.state = 1659; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 326 || _la === 327) { + { + this.state = 1658; + this.string_(); + } + } + + this.state = 1661; + this.listaggCountIndication(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public listaggCountIndication(): ListaggCountIndicationContext { + let localContext = new ListaggCountIndicationContext(this.context, this.state); + this.enterRule(localContext, 86, TrinoSqlParser.RULE_listaggCountIndication); + try { + this.state = 1668; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_WITH: + this.enterOuterAlt(localContext, 1); + { + this.state = 1664; + this.match(TrinoSqlParser.KW_WITH); + this.state = 1665; + this.match(TrinoSqlParser.KW_COUNT); + } + break; + case TrinoSqlParser.KW_WITHOUT: + this.enterOuterAlt(localContext, 2); + { + this.state = 1666; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 1667; + this.match(TrinoSqlParser.KW_COUNT); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } public patternRecognition(): PatternRecognitionContext { let localContext = new PatternRecognitionContext(this.context, this.state); - this.enterRule(localContext, 78, TrinoSqlParser.RULE_patternRecognition); + this.enterRule(localContext, 88, TrinoSqlParser.RULE_patternRecognition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1443; + this.state = 1670; this.aliasedRelation(); - this.state = 1526; + this.state = 1753; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 203, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 216, this.context) ) { case 1: { - this.state = 1444; + this.state = 1671; this.match(TrinoSqlParser.KW_MATCH_RECOGNIZE); - this.state = 1445; + this.state = 1672; this.match(TrinoSqlParser.T__0); - this.state = 1456; + this.state = 1683; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 163) { + if (_la === 201) { { - this.state = 1446; + this.state = 1673; this.match(TrinoSqlParser.KW_PARTITION); - this.state = 1447; + this.state = 1674; this.match(TrinoSqlParser.KW_BY); - this.state = 1448; + this.state = 1675; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); - this.state = 1453; + this.state = 1680; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1449; + this.state = 1676; this.match(TrinoSqlParser.T__2); - this.state = 1450; + this.state = 1677; localContext._expression = this.expression(); localContext._partition.push(localContext._expression); } } - this.state = 1455; + this.state = 1682; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1468; + this.state = 1695; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 158) { + if (_la === 195) { { - this.state = 1458; + this.state = 1685; this.match(TrinoSqlParser.KW_ORDER); - this.state = 1459; + this.state = 1686; this.match(TrinoSqlParser.KW_BY); - this.state = 1460; + this.state = 1687; this.sortItem(); - this.state = 1465; + this.state = 1692; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1461; + this.state = 1688; this.match(TrinoSqlParser.T__2); - this.state = 1462; + this.state = 1689; this.sortItem(); } } - this.state = 1467; + this.state = 1694; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1479; + this.state = 1706; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 134) { + if (_la === 168) { { - this.state = 1470; + this.state = 1697; this.match(TrinoSqlParser.KW_MEASURES); - this.state = 1471; + this.state = 1698; this.measureDefinition(); - this.state = 1476; + this.state = 1703; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1472; + this.state = 1699; this.match(TrinoSqlParser.T__2); - this.state = 1473; + this.state = 1700; this.measureDefinition(); } } - this.state = 1478; + this.state = 1705; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1482; + this.state = 1709; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 20 || _la === 154) { + if (_la === 22 || _la === 191) { { - this.state = 1481; + this.state = 1708; this.rowsPerMatch(); } } - this.state = 1487; + this.state = 1714; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 19) { + if (_la === 21) { { - this.state = 1484; + this.state = 1711; this.match(TrinoSqlParser.KW_AFTER); - this.state = 1485; + this.state = 1712; this.match(TrinoSqlParser.KW_MATCH); - this.state = 1486; + this.state = 1713; this.skipTo(); } } - this.state = 1490; + this.state = 1717; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 105 || _la === 199) { + if (_la === 124 || _la === 247) { { - this.state = 1489; + this.state = 1716; _la = this.tokenStream.LA(1); - if(!(_la === 105 || _la === 199)) { + if(!(_la === 124 || _la === 247)) { this.errorHandler.recoverInline(this); } else { @@ -5693,87 +6391,87 @@ export class TrinoSqlParser extends SQLParserBase { } } - this.state = 1492; + this.state = 1719; this.match(TrinoSqlParser.KW_PATTERN); - this.state = 1493; + this.state = 1720; this.match(TrinoSqlParser.T__0); - this.state = 1494; + this.state = 1721; this.rowPattern(0); - this.state = 1495; + this.state = 1722; this.match(TrinoSqlParser.T__1); - this.state = 1505; + this.state = 1732; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 209) { + if (_la === 257) { { - this.state = 1496; + this.state = 1723; this.match(TrinoSqlParser.KW_SUBSET); - this.state = 1497; + this.state = 1724; this.subsetDefinition(); - this.state = 1502; + this.state = 1729; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1498; + this.state = 1725; this.match(TrinoSqlParser.T__2); - this.state = 1499; + this.state = 1726; this.subsetDefinition(); } } - this.state = 1504; + this.state = 1731; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } } } - this.state = 1507; + this.state = 1734; this.match(TrinoSqlParser.KW_DEFINE); - this.state = 1508; + this.state = 1735; this.variableDefinition(); - this.state = 1513; + this.state = 1740; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1509; + this.state = 1736; this.match(TrinoSqlParser.T__2); - this.state = 1510; + this.state = 1737; this.variableDefinition(); } } - this.state = 1515; + this.state = 1742; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1516; + this.state = 1743; this.match(TrinoSqlParser.T__1); - this.state = 1524; + this.state = 1751; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 202, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 215, this.context) ) { case 1: { - this.state = 1518; + this.state = 1745; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 26) { + if (_la === 28) { { - this.state = 1517; + this.state = 1744; this.match(TrinoSqlParser.KW_AS); } } - this.state = 1520; + this.state = 1747; this.identifier(); - this.state = 1522; + this.state = 1749; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 201, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 214, this.context) ) { case 1: { - this.state = 1521; + this.state = 1748; this.columnAliases(); } break; @@ -5802,15 +6500,15 @@ export class TrinoSqlParser extends SQLParserBase { } public measureDefinition(): MeasureDefinitionContext { let localContext = new MeasureDefinitionContext(this.context, this.state); - this.enterRule(localContext, 80, TrinoSqlParser.RULE_measureDefinition); + this.enterRule(localContext, 90, TrinoSqlParser.RULE_measureDefinition); try { this.enterOuterAlt(localContext, 1); { - this.state = 1528; + this.state = 1755; this.expression(); - this.state = 1529; + this.state = 1756; this.match(TrinoSqlParser.KW_AS); - this.state = 1530; + this.state = 1757; this.identifier(); } } @@ -5830,42 +6528,42 @@ export class TrinoSqlParser extends SQLParserBase { } public rowsPerMatch(): RowsPerMatchContext { let localContext = new RowsPerMatchContext(this.context, this.state); - this.enterRule(localContext, 82, TrinoSqlParser.RULE_rowsPerMatch); + this.enterRule(localContext, 92, TrinoSqlParser.RULE_rowsPerMatch); let _la: number; try { - this.state = 1543; + this.state = 1770; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_ONE: this.enterOuterAlt(localContext, 1); { - this.state = 1532; + this.state = 1759; this.match(TrinoSqlParser.KW_ONE); - this.state = 1533; + this.state = 1760; this.match(TrinoSqlParser.KW_ROW); - this.state = 1534; + this.state = 1761; this.match(TrinoSqlParser.KW_PER); - this.state = 1535; + this.state = 1762; this.match(TrinoSqlParser.KW_MATCH); } break; case TrinoSqlParser.KW_ALL: this.enterOuterAlt(localContext, 2); { - this.state = 1536; + this.state = 1763; this.match(TrinoSqlParser.KW_ALL); - this.state = 1537; + this.state = 1764; this.match(TrinoSqlParser.KW_ROWS); - this.state = 1538; + this.state = 1765; this.match(TrinoSqlParser.KW_PER); - this.state = 1539; + this.state = 1766; this.match(TrinoSqlParser.KW_MATCH); - this.state = 1541; + this.state = 1768; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 152 || _la === 205 || _la === 243) { + if (_la === 189 || _la === 253 || _la === 304) { { - this.state = 1540; + this.state = 1767; this.emptyMatchHandling(); } } @@ -5892,41 +6590,41 @@ export class TrinoSqlParser extends SQLParserBase { } public emptyMatchHandling(): EmptyMatchHandlingContext { let localContext = new EmptyMatchHandlingContext(this.context, this.state); - this.enterRule(localContext, 84, TrinoSqlParser.RULE_emptyMatchHandling); + this.enterRule(localContext, 94, TrinoSqlParser.RULE_emptyMatchHandling); try { - this.state = 1554; + this.state = 1781; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { case TrinoSqlParser.KW_SHOW: this.enterOuterAlt(localContext, 1); { - this.state = 1545; + this.state = 1772; this.match(TrinoSqlParser.KW_SHOW); - this.state = 1546; + this.state = 1773; this.match(TrinoSqlParser.KW_EMPTY); - this.state = 1547; + this.state = 1774; this.match(TrinoSqlParser.KW_MATCHES); } break; case TrinoSqlParser.KW_OMIT: this.enterOuterAlt(localContext, 2); { - this.state = 1548; + this.state = 1775; this.match(TrinoSqlParser.KW_OMIT); - this.state = 1549; + this.state = 1776; this.match(TrinoSqlParser.KW_EMPTY); - this.state = 1550; + this.state = 1777; this.match(TrinoSqlParser.KW_MATCHES); } break; case TrinoSqlParser.KW_WITH: this.enterOuterAlt(localContext, 3); { - this.state = 1551; + this.state = 1778; this.match(TrinoSqlParser.KW_WITH); - this.state = 1552; + this.state = 1779; this.match(TrinoSqlParser.KW_UNMATCHED); - this.state = 1553; + this.state = 1780; this.match(TrinoSqlParser.KW_ROWS); } break; @@ -5950,71 +6648,71 @@ export class TrinoSqlParser extends SQLParserBase { } public skipTo(): SkipToContext { let localContext = new SkipToContext(this.context, this.state); - this.enterRule(localContext, 86, TrinoSqlParser.RULE_skipTo); + this.enterRule(localContext, 96, TrinoSqlParser.RULE_skipTo); try { - this.state = 1575; + this.state = 1802; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 207, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 220, this.context) ) { case 1: this.enterOuterAlt(localContext, 1); { - this.state = 1556; + this.state = 1783; this.match(TrinoSqlParser.T__4); - this.state = 1557; + this.state = 1784; this.match(TrinoSqlParser.KW_TO); - this.state = 1558; + this.state = 1785; this.match(TrinoSqlParser.KW_NEXT); - this.state = 1559; + this.state = 1786; this.match(TrinoSqlParser.KW_ROW); } break; case 2: this.enterOuterAlt(localContext, 2); { - this.state = 1560; + this.state = 1787; this.match(TrinoSqlParser.T__4); - this.state = 1561; + this.state = 1788; this.match(TrinoSqlParser.KW_PAST); - this.state = 1562; + this.state = 1789; this.match(TrinoSqlParser.KW_LAST); - this.state = 1563; + this.state = 1790; this.match(TrinoSqlParser.KW_ROW); } break; case 3: this.enterOuterAlt(localContext, 3); { - this.state = 1564; + this.state = 1791; this.match(TrinoSqlParser.T__4); - this.state = 1565; + this.state = 1792; this.match(TrinoSqlParser.KW_TO); - this.state = 1566; + this.state = 1793; this.match(TrinoSqlParser.KW_FIRST); - this.state = 1567; + this.state = 1794; this.identifier(); } break; case 4: this.enterOuterAlt(localContext, 4); { - this.state = 1568; + this.state = 1795; this.match(TrinoSqlParser.T__4); - this.state = 1569; + this.state = 1796; this.match(TrinoSqlParser.KW_TO); - this.state = 1570; + this.state = 1797; this.match(TrinoSqlParser.KW_LAST); - this.state = 1571; + this.state = 1798; this.identifier(); } break; case 5: this.enterOuterAlt(localContext, 5); { - this.state = 1572; + this.state = 1799; this.match(TrinoSqlParser.T__4); - this.state = 1573; + this.state = 1800; this.match(TrinoSqlParser.KW_TO); - this.state = 1574; + this.state = 1801; this.identifier(); } break; @@ -6036,38 +6734,38 @@ export class TrinoSqlParser extends SQLParserBase { } public subsetDefinition(): SubsetDefinitionContext { let localContext = new SubsetDefinitionContext(this.context, this.state); - this.enterRule(localContext, 88, TrinoSqlParser.RULE_subsetDefinition); + this.enterRule(localContext, 98, TrinoSqlParser.RULE_subsetDefinition); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1577; + this.state = 1804; localContext._name = this.identifier(); - this.state = 1578; + this.state = 1805; this.match(TrinoSqlParser.EQ); - this.state = 1579; + this.state = 1806; this.match(TrinoSqlParser.T__0); - this.state = 1580; + this.state = 1807; localContext._identifier = this.identifier(); localContext._union.push(localContext._identifier); - this.state = 1585; + this.state = 1812; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1581; + this.state = 1808; this.match(TrinoSqlParser.T__2); - this.state = 1582; + this.state = 1809; localContext._identifier = this.identifier(); localContext._union.push(localContext._identifier); } } - this.state = 1587; + this.state = 1814; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1588; + this.state = 1815; this.match(TrinoSqlParser.T__1); } } @@ -6087,15 +6785,15 @@ export class TrinoSqlParser extends SQLParserBase { } public variableDefinition(): VariableDefinitionContext { let localContext = new VariableDefinitionContext(this.context, this.state); - this.enterRule(localContext, 90, TrinoSqlParser.RULE_variableDefinition); + this.enterRule(localContext, 100, TrinoSqlParser.RULE_variableDefinition); try { this.enterOuterAlt(localContext, 1); { - this.state = 1590; + this.state = 1817; this.identifier(); - this.state = 1591; + this.state = 1818; this.match(TrinoSqlParser.KW_AS); - this.state = 1592; + this.state = 1819; this.expression(); } } @@ -6115,36 +6813,36 @@ export class TrinoSqlParser extends SQLParserBase { } public aliasedRelation(): AliasedRelationContext { let localContext = new AliasedRelationContext(this.context, this.state); - this.enterRule(localContext, 92, TrinoSqlParser.RULE_aliasedRelation); + this.enterRule(localContext, 102, TrinoSqlParser.RULE_aliasedRelation); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1594; + this.state = 1821; this.relationPrimary(); - this.state = 1602; + this.state = 1829; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 211, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 224, this.context) ) { case 1: { - this.state = 1596; + this.state = 1823; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 26) { + if (_la === 28) { { - this.state = 1595; + this.state = 1822; this.match(TrinoSqlParser.KW_AS); } } - this.state = 1598; + this.state = 1825; this.identifier(); - this.state = 1600; + this.state = 1827; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 210, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 223, this.context) ) { case 1: { - this.state = 1599; + this.state = 1826; this.columnAliases(); } break; @@ -6170,32 +6868,32 @@ export class TrinoSqlParser extends SQLParserBase { } public columnListCreate(): ColumnListCreateContext { let localContext = new ColumnListCreateContext(this.context, this.state); - this.enterRule(localContext, 94, TrinoSqlParser.RULE_columnListCreate); + this.enterRule(localContext, 104, TrinoSqlParser.RULE_columnListCreate); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1604; + this.state = 1831; this.match(TrinoSqlParser.T__0); - this.state = 1605; + this.state = 1832; this.columnNameCreate(); - this.state = 1610; + this.state = 1837; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1606; + this.state = 1833; this.match(TrinoSqlParser.T__2); - this.state = 1607; + this.state = 1834; this.columnNameCreate(); } } - this.state = 1612; + this.state = 1839; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1613; + this.state = 1840; this.match(TrinoSqlParser.T__1); } } @@ -6215,32 +6913,32 @@ export class TrinoSqlParser extends SQLParserBase { } public columnList(): ColumnListContext { let localContext = new ColumnListContext(this.context, this.state); - this.enterRule(localContext, 96, TrinoSqlParser.RULE_columnList); + this.enterRule(localContext, 106, TrinoSqlParser.RULE_columnList); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1615; + this.state = 1842; this.match(TrinoSqlParser.T__0); - this.state = 1616; - this.columnName(); - this.state = 1621; + this.state = 1843; + this.columnRef(); + this.state = 1848; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1617; + this.state = 1844; this.match(TrinoSqlParser.T__2); - this.state = 1618; - this.columnName(); + this.state = 1845; + this.columnRef(); } } - this.state = 1623; + this.state = 1850; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1624; + this.state = 1851; this.match(TrinoSqlParser.T__1); } } @@ -6260,32 +6958,32 @@ export class TrinoSqlParser extends SQLParserBase { } public columnAliases(): ColumnAliasesContext { let localContext = new ColumnAliasesContext(this.context, this.state); - this.enterRule(localContext, 98, TrinoSqlParser.RULE_columnAliases); + this.enterRule(localContext, 108, TrinoSqlParser.RULE_columnAliases); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 1626; + this.state = 1853; this.match(TrinoSqlParser.T__0); - this.state = 1627; + this.state = 1854; this.identifier(); - this.state = 1632; + this.state = 1859; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1628; + this.state = 1855; this.match(TrinoSqlParser.T__2); - this.state = 1629; + this.state = 1856; this.identifier(); } } - this.state = 1634; + this.state = 1861; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1635; + this.state = 1862; this.match(TrinoSqlParser.T__1); } } @@ -6305,29 +7003,39 @@ export class TrinoSqlParser extends SQLParserBase { } public relationPrimary(): RelationPrimaryContext { let localContext = new RelationPrimaryContext(this.context, this.state); - this.enterRule(localContext, 100, TrinoSqlParser.RULE_relationPrimary); + this.enterRule(localContext, 110, TrinoSqlParser.RULE_relationPrimary); let _la: number; try { - this.state = 1666; + this.state = 1935; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 217, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 234, this.context) ) { case 1: - localContext = new TableOrViewRelationContext(localContext); + localContext = new TableNameContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 1637; + this.state = 1864; this.tableOrViewName(); + this.state = 1866; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 228, this.context) ) { + case 1: + { + this.state = 1865; + this.queryPeriod(); + } + break; + } } break; case 2: localContext = new SubqueryRelationContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 1638; + this.state = 1868; this.match(TrinoSqlParser.T__0); - this.state = 1639; + this.state = 1869; this.query(); - this.state = 1640; + this.state = 1870; this.match(TrinoSqlParser.T__1); } break; @@ -6335,38 +7043,38 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new UnnestContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 1642; + this.state = 1872; this.match(TrinoSqlParser.KW_UNNEST); - this.state = 1643; + this.state = 1873; this.match(TrinoSqlParser.T__0); - this.state = 1644; + this.state = 1874; this.expression(); - this.state = 1649; + this.state = 1879; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1645; + this.state = 1875; this.match(TrinoSqlParser.T__2); - this.state = 1646; + this.state = 1876; this.expression(); } } - this.state = 1651; + this.state = 1881; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 1652; + this.state = 1882; this.match(TrinoSqlParser.T__1); - this.state = 1655; + this.state = 1885; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 216, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { case 1: { - this.state = 1653; + this.state = 1883; this.match(TrinoSqlParser.KW_WITH); - this.state = 1654; + this.state = 1884; this.match(TrinoSqlParser.KW_ORDINALITY); } break; @@ -6377,25 +7085,128 @@ export class TrinoSqlParser extends SQLParserBase { localContext = new LateralContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 1657; + this.state = 1887; this.match(TrinoSqlParser.KW_LATERAL); - this.state = 1658; + this.state = 1888; this.match(TrinoSqlParser.T__0); - this.state = 1659; + this.state = 1889; this.query(); - this.state = 1660; + this.state = 1890; this.match(TrinoSqlParser.T__1); } break; case 5: - localContext = new ParenthesizedRelationContext(localContext); + localContext = new TableFunctionInvocationContext(localContext); this.enterOuterAlt(localContext, 5); { - this.state = 1662; + this.state = 1892; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 1893; + this.match(TrinoSqlParser.T__0); + this.state = 1894; + this.tableFunctionCall(); + this.state = 1895; + this.match(TrinoSqlParser.T__1); + } + break; + case 6: + localContext = new ParenthesizedRelationContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 1897; this.match(TrinoSqlParser.T__0); - this.state = 1663; + this.state = 1898; this.relation(0); - this.state = 1664; + this.state = 1899; + this.match(TrinoSqlParser.T__1); + } + break; + case 7: + localContext = new JsonTableContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 1901; + this.match(TrinoSqlParser.KW_JSON_TABLE); + this.state = 1902; + this.match(TrinoSqlParser.T__0); + this.state = 1903; + this.jsonPathInvocation(); + this.state = 1904; + this.match(TrinoSqlParser.KW_COLUMNS); + this.state = 1905; + this.match(TrinoSqlParser.T__0); + this.state = 1906; + this.jsonTableColumn(); + this.state = 1911; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 1907; + this.match(TrinoSqlParser.T__2); + this.state = 1908; + this.jsonTableColumn(); + } + } + this.state = 1913; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 1914; + this.match(TrinoSqlParser.T__1); + this.state = 1926; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 232, this.context) ) { + case 1: + { + this.state = 1915; + this.match(TrinoSqlParser.KW_PLAN); + this.state = 1916; + this.match(TrinoSqlParser.T__0); + this.state = 1917; + this.jsonTableSpecificPlan(); + this.state = 1918; + this.match(TrinoSqlParser.T__1); + } + break; + case 2: + { + this.state = 1920; + this.match(TrinoSqlParser.KW_PLAN); + this.state = 1921; + this.match(TrinoSqlParser.KW_DEFAULT); + this.state = 1922; + this.match(TrinoSqlParser.T__0); + this.state = 1923; + this.jsonTableDefaultPlan(); + this.state = 1924; + this.match(TrinoSqlParser.T__1); + } + break; + } + this.state = 1931; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 85 || _la === 89) { + { + this.state = 1928; + _la = this.tokenStream.LA(1); + if(!(_la === 85 || _la === 89)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1929; + this.match(TrinoSqlParser.KW_ON); + this.state = 1930; + this.match(TrinoSqlParser.KW_ERROR); + } + } + + this.state = 1933; this.match(TrinoSqlParser.T__1); } break; @@ -6415,14 +7226,231 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public expression(): ExpressionContext { - let localContext = new ExpressionContext(this.context, this.state); - this.enterRule(localContext, 102, TrinoSqlParser.RULE_expression); + public jsonTableColumn(): JsonTableColumnContext { + let localContext = new JsonTableColumnContext(this.context, this.state); + this.enterRule(localContext, 112, TrinoSqlParser.RULE_jsonTableColumn); + let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 1668; - this.booleanExpression(0); + this.state = 2014; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 247, this.context) ) { + case 1: + localContext = new OrdinalityColumnContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 1937; + this.identifier(); + this.state = 1938; + this.match(TrinoSqlParser.KW_FOR); + this.state = 1939; + this.match(TrinoSqlParser.KW_ORDINALITY); + } + break; + case 2: + localContext = new ValueColumnContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 1941; + this.identifier(); + this.state = 1942; + this.type_(0); + this.state = 1945; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 205) { + { + this.state = 1943; + this.match(TrinoSqlParser.KW_PATH); + this.state = 1944; + this.string_(); + } + } + + this.state = 1951; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 236, this.context) ) { + case 1: + { + this.state = 1947; + (localContext as ValueColumnContext)._emptyBehavior = this.jsonValueBehavior(); + this.state = 1948; + this.match(TrinoSqlParser.KW_ON); + this.state = 1949; + this.match(TrinoSqlParser.KW_EMPTY); + } + break; + } + this.state = 1957; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 70 || _la === 89 || _la === 183) { + { + this.state = 1953; + (localContext as ValueColumnContext)._errorBehavior = this.jsonValueBehavior(); + this.state = 1954; + this.match(TrinoSqlParser.KW_ON); + this.state = 1955; + this.match(TrinoSqlParser.KW_ERROR); + } + } + + } + break; + case 3: + localContext = new QueryColumnContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 1959; + this.identifier(); + this.state = 1960; + this.type_(0); + this.state = 1961; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 1962; + this.jsonRepresentation(); + this.state = 1965; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 205) { + { + this.state = 1963; + this.match(TrinoSqlParser.KW_PATH); + this.state = 1964; + this.string_(); + } + } + + this.state = 1970; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 304 || _la === 306) { + { + this.state = 1967; + this.jsonQueryWrapperBehavior(); + this.state = 1968; + this.match(TrinoSqlParser.KW_WRAPPER); + } + } + + this.state = 1979; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 144 || _la === 189) { + { + this.state = 1972; + _la = this.tokenStream.LA(1); + if(!(_la === 144 || _la === 189)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 1973; + this.match(TrinoSqlParser.KW_QUOTES); + this.state = 1977; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 190) { + { + this.state = 1974; + this.match(TrinoSqlParser.KW_ON); + this.state = 1975; + this.match(TrinoSqlParser.KW_SCALAR); + this.state = 1976; + this.match(TrinoSqlParser.KW_TEXT_STRING); + } + } + + } + } + + this.state = 1985; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 242, this.context) ) { + case 1: + { + this.state = 1981; + (localContext as QueryColumnContext)._emptyBehavior = this.jsonQueryBehavior(); + this.state = 1982; + this.match(TrinoSqlParser.KW_ON); + this.state = 1983; + this.match(TrinoSqlParser.KW_EMPTY); + } + break; + } + this.state = 1991; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 85 || _la === 89 || _la === 183) { + { + this.state = 1987; + (localContext as QueryColumnContext)._errorBehavior = this.jsonQueryBehavior(); + this.state = 1988; + this.match(TrinoSqlParser.KW_ON); + this.state = 1989; + this.match(TrinoSqlParser.KW_ERROR); + } + } + + } + break; + case 4: + localContext = new NestedColumnsContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 1993; + this.match(TrinoSqlParser.KW_NESTED); + this.state = 1995; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 205) { + { + this.state = 1994; + this.match(TrinoSqlParser.KW_PATH); + } + } + + this.state = 1997; + this.string_(); + this.state = 2000; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 28) { + { + this.state = 1998; + this.match(TrinoSqlParser.KW_AS); + this.state = 1999; + this.identifier(); + } + } + + this.state = 2002; + this.match(TrinoSqlParser.KW_COLUMNS); + this.state = 2003; + this.match(TrinoSqlParser.T__0); + this.state = 2004; + this.jsonTableColumn(); + this.state = 2009; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2005; + this.match(TrinoSqlParser.T__2); + this.state = 2006; + this.jsonTableColumn(); + } + } + this.state = 2011; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2012; + this.match(TrinoSqlParser.T__1); + } + break; } } catch (re) { @@ -6439,28 +7467,145 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - - public booleanExpression(): BooleanExpressionContext; - public booleanExpression(_p: number): BooleanExpressionContext; - public booleanExpression(_p?: number): BooleanExpressionContext { - if (_p === undefined) { - _p = 0; + public jsonTableSpecificPlan(): JsonTableSpecificPlanContext { + let localContext = new JsonTableSpecificPlanContext(this.context, this.state); + this.enterRule(localContext, 114, TrinoSqlParser.RULE_jsonTableSpecificPlan); + let _la: number; + try { + this.state = 2041; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 250, this.context) ) { + case 1: + localContext = new LeafPlanContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 2016; + this.jsonTablePathName(); + } + break; + case 2: + localContext = new JoinPlanContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 2017; + this.jsonTablePathName(); + this.state = 2018; + _la = this.tokenStream.LA(1); + if(!(_la === 125 || _la === 197)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2019; + this.planPrimary(); + } + break; + case 3: + localContext = new UnionPlanContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 2021; + this.planPrimary(); + this.state = 2022; + this.match(TrinoSqlParser.KW_UNION); + this.state = 2023; + this.planPrimary(); + this.state = 2028; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 281) { + { + { + this.state = 2024; + this.match(TrinoSqlParser.KW_UNION); + this.state = 2025; + this.planPrimary(); + } + } + this.state = 2030; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + break; + case 4: + localContext = new CrossPlanContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 2031; + this.planPrimary(); + this.state = 2032; + this.match(TrinoSqlParser.KW_CROSS); + this.state = 2033; + this.planPrimary(); + this.state = 2038; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 54) { + { + { + this.state = 2034; + this.match(TrinoSqlParser.KW_CROSS); + this.state = 2035; + this.planPrimary(); + } + } + this.state = 2040; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + break; + } } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new BooleanExpressionContext(this.context, parentState); - let previousContext = localContext; - let _startState = 104; - this.enterRecursionRule(localContext, 104, TrinoSqlParser.RULE_booleanExpression, _p); + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public jsonTablePathName(): JsonTablePathNameContext { + let localContext = new JsonTablePathNameContext(this.context, this.state); + this.enterRule(localContext, 116, TrinoSqlParser.RULE_jsonTablePathName); try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1677; + this.state = 2043; + this.identifier(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public planPrimary(): PlanPrimaryContext { + let localContext = new PlanPrimaryContext(this.context, this.state); + this.enterRule(localContext, 118, TrinoSqlParser.RULE_planPrimary); + try { + this.state = 2050; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.T__0: + case TrinoSqlParser.KW_ABSENT: case TrinoSqlParser.KW_ADD: case TrinoSqlParser.KW_ADMIN: case TrinoSqlParser.KW_AFTER: @@ -6471,57 +7616,61 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ASC: case TrinoSqlParser.KW_AT: case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: case TrinoSqlParser.KW_CASCADE: - case TrinoSqlParser.KW_CASE: - case TrinoSqlParser.KW_CAST: + case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: case TrinoSqlParser.KW_COMMIT: case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: case TrinoSqlParser.KW_CURRENT: - case TrinoSqlParser.KW_CURRENT_CATALOG: - case TrinoSqlParser.KW_CURRENT_DATE: - case TrinoSqlParser.KW_CURRENT_PATH: - case TrinoSqlParser.KW_CURRENT_SCHEMA: - case TrinoSqlParser.KW_CURRENT_TIME: - case TrinoSqlParser.KW_CURRENT_TIMESTAMP: - case TrinoSqlParser.KW_CURRENT_USER: case TrinoSqlParser.KW_DATA: case TrinoSqlParser.KW_DATE: case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: case TrinoSqlParser.KW_DOUBLE: case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: case TrinoSqlParser.KW_EXCLUDING: - case TrinoSqlParser.KW_EXISTS: case TrinoSqlParser.KW_EXPLAIN: - case TrinoSqlParser.KW_EXTRACT: - case TrinoSqlParser.KW_FALSE: case TrinoSqlParser.KW_FETCH: case TrinoSqlParser.KW_FILTER: case TrinoSqlParser.KW_FINAL: case TrinoSqlParser.KW_FIRST: case TrinoSqlParser.KW_FOLLOWING: case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: case TrinoSqlParser.KW_GRANT: case TrinoSqlParser.KW_GRANTED: case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_GRAPHVIZ: - case TrinoSqlParser.KW_GROUPING: case TrinoSqlParser.KW_GROUPS: case TrinoSqlParser.KW_HOUR: case TrinoSqlParser.KW_IF: case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: case TrinoSqlParser.KW_INCLUDING: case TrinoSqlParser.KW_INITIAL: case TrinoSqlParser.KW_INPUT: @@ -6529,15 +7678,21 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_INVOKER: case TrinoSqlParser.KW_IO: case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: case TrinoSqlParser.KW_LAST: case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: case TrinoSqlParser.KW_LEVEL: case TrinoSqlParser.KW_LIMIT: case TrinoSqlParser.KW_LOCAL: - case TrinoSqlParser.KW_LOCALTIME: - case TrinoSqlParser.KW_LOCALTIMESTAMP: case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: case TrinoSqlParser.KW_MAP: case TrinoSqlParser.KW_MATCH: case TrinoSqlParser.KW_MATCHED: @@ -6548,6 +7703,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_MERGE: case TrinoSqlParser.KW_MINUTE: case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: case TrinoSqlParser.KW_NEXT: case TrinoSqlParser.KW_NFC: case TrinoSqlParser.KW_NFD: @@ -6555,10 +7711,10 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_NFKD: case TrinoSqlParser.KW_NO: case TrinoSqlParser.KW_NONE: - case TrinoSqlParser.KW_NORMALIZE: - case TrinoSqlParser.KW_NULL: case TrinoSqlParser.KW_NULLIF: case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: case TrinoSqlParser.KW_OFFSET: case TrinoSqlParser.KW_OMIT: case TrinoSqlParser.KW_ONE: @@ -6567,27 +7723,37 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ORDINALITY: case TrinoSqlParser.KW_OUTPUT: case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: case TrinoSqlParser.KW_PARTITION: case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: case TrinoSqlParser.KW_PAST: case TrinoSqlParser.KW_PATH: case TrinoSqlParser.KW_PATTERN: case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: case TrinoSqlParser.KW_POSITION: case TrinoSqlParser.KW_PRECEDING: case TrinoSqlParser.KW_PRECISION: case TrinoSqlParser.KW_PRIVILEGES: case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: case TrinoSqlParser.KW_RANGE: case TrinoSqlParser.KW_READ: case TrinoSqlParser.KW_REFRESH: case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: case TrinoSqlParser.KW_REPEATABLE: case TrinoSqlParser.KW_REPLACE: case TrinoSqlParser.KW_RESET: case TrinoSqlParser.KW_RESPECT: case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: case TrinoSqlParser.KW_REVOKE: case TrinoSqlParser.KW_ROLE: case TrinoSqlParser.KW_ROLES: @@ -6595,6 +7761,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ROW: case TrinoSqlParser.KW_ROWS: case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: case TrinoSqlParser.KW_SCHEMA: case TrinoSqlParser.KW_SCHEMAS: case TrinoSqlParser.KW_SECOND: @@ -6614,128 +7781,67 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_TABLES: case TrinoSqlParser.KW_TABLESAMPLE: case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: case TrinoSqlParser.KW_TIES: case TrinoSqlParser.KW_TIME: case TrinoSqlParser.KW_TIMESTAMP: case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: case TrinoSqlParser.KW_TRANSACTION: case TrinoSqlParser.KW_TRUNCATE: - case TrinoSqlParser.KW_TRUE: case TrinoSqlParser.KW_TRY_CAST: case TrinoSqlParser.KW_TYPE: case TrinoSqlParser.KW_UNBOUNDED: case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: case TrinoSqlParser.KW_UPDATE: case TrinoSqlParser.KW_USE: case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: case TrinoSqlParser.KW_WITHOUT: case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: case TrinoSqlParser.KW_WRITE: case TrinoSqlParser.KW_YEAR: case TrinoSqlParser.KW_ZONE: - case TrinoSqlParser.PLUS: - case TrinoSqlParser.MINUS: - case TrinoSqlParser.QUESTION_MARK: - case TrinoSqlParser.STRING: - case TrinoSqlParser.UNICODE_STRING: - case TrinoSqlParser.BINARY_LITERAL: - case TrinoSqlParser.INTEGER_VALUE: - case TrinoSqlParser.DECIMAL_VALUE: - case TrinoSqlParser.DOUBLE_VALUE: case TrinoSqlParser.IDENTIFIER: case TrinoSqlParser.DIGIT_IDENTIFIER: case TrinoSqlParser.QUOTED_IDENTIFIER: case TrinoSqlParser.BACKQUOTED_IDENTIFIER: + this.enterOuterAlt(localContext, 1); { - localContext = new PredicatedContext(localContext); - this.context = localContext; - previousContext = localContext; - - this.state = 1671; - (localContext as PredicatedContext)._valueExpression = this.valueExpression(0); - this.state = 1673; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 218, this.context) ) { - case 1: - { - this.state = 1672; - this.predicate((localContext as PredicatedContext)._valueExpression); - } - break; - } + this.state = 2045; + this.jsonTablePathName(); } break; - case TrinoSqlParser.KW_NOT: + case TrinoSqlParser.T__0: + this.enterOuterAlt(localContext, 2); { - localContext = new LogicalNotContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1675; - this.match(TrinoSqlParser.KW_NOT); - this.state = 1676; - this.booleanExpression(3); + this.state = 2046; + this.match(TrinoSqlParser.T__0); + this.state = 2047; + this.jsonTableSpecificPlan(); + this.state = 2048; + this.match(TrinoSqlParser.T__1); } break; default: throw new antlr.NoViableAltException(this); } - this.context!.stop = this.tokenStream.LT(-1); - this.state = 1687; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 221, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - previousContext = localContext; - { - this.state = 1685; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 220, this.context) ) { - case 1: - { - localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); - (localContext as LogicalBinaryContext)._left = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_booleanExpression); - this.state = 1679; - if (!(this.precpred(this.context, 2))) { - throw this.createFailedPredicateException("this.precpred(this.context, 2)"); - } - this.state = 1680; - (localContext as LogicalBinaryContext)._operator = this.match(TrinoSqlParser.KW_AND); - this.state = 1681; - (localContext as LogicalBinaryContext)._right = this.booleanExpression(3); - } - break; - case 2: - { - localContext = new LogicalBinaryContext(new BooleanExpressionContext(parentContext, parentState)); - (localContext as LogicalBinaryContext)._left = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_booleanExpression); - this.state = 1682; - if (!(this.precpred(this.context, 1))) { - throw this.createFailedPredicateException("this.precpred(this.context, 1)"); - } - this.state = 1683; - (localContext as LogicalBinaryContext)._operator = this.match(TrinoSqlParser.KW_OR); - this.state = 1684; - (localContext as LogicalBinaryContext)._right = this.booleanExpression(2); - } - break; - } - } - } - this.state = 1689; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 221, this.context); - } - } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -6747,208 +7853,171 @@ export class TrinoSqlParser extends SQLParserBase { } } finally { - this.unrollRecursionContexts(parentContext); + this.exitRule(); } return localContext; } - public predicate(value: antlr.ParserRuleContext): PredicateContext { - let localContext = new PredicateContext(this.context, this.state, value); - this.enterRule(localContext, 106, TrinoSqlParser.RULE_predicate); + public jsonTableDefaultPlan(): JsonTableDefaultPlanContext { + let localContext = new JsonTableDefaultPlanContext(this.context, this.state); + this.enterRule(localContext, 120, TrinoSqlParser.RULE_jsonTableDefaultPlan); let _la: number; try { - this.state = 1751; + this.state = 2062; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 230, this.context) ) { - case 1: - localContext = new ComparisonContext(localContext); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_INNER: + case TrinoSqlParser.KW_OUTER: this.enterOuterAlt(localContext, 1); { - this.state = 1690; - this.comparisonOperator(); - this.state = 1691; - (localContext as ComparisonContext)._right = this.valueExpression(0); + this.state = 2052; + _la = this.tokenStream.LA(1); + if(!(_la === 125 || _la === 197)) { + this.errorHandler.recoverInline(this); } - break; - case 2: - localContext = new QuantifiedComparisonContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 1693; - this.comparisonOperator(); - this.state = 1694; - this.comparisonQuantifier(); - this.state = 1695; - this.match(TrinoSqlParser.T__0); - this.state = 1696; - this.query(); - this.state = 1697; - this.match(TrinoSqlParser.T__1); + else { + this.errorHandler.reportMatch(this); + this.consume(); } - break; - case 3: - localContext = new BetweenContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 1700; + this.state = 2055; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 147) { + if (_la === 3) { { - this.state = 1699; - this.match(TrinoSqlParser.KW_NOT); + this.state = 2053; + this.match(TrinoSqlParser.T__2); + this.state = 2054; + _la = this.tokenStream.LA(1); + if(!(_la === 54 || _la === 281)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } } - this.state = 1702; - this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 1703; - (localContext as BetweenContext)._lower = this.valueExpression(0); - this.state = 1704; - this.match(TrinoSqlParser.KW_AND); - this.state = 1705; - (localContext as BetweenContext)._upper = this.valueExpression(0); } break; - case 4: - localContext = new InListContext(localContext); - this.enterOuterAlt(localContext, 4); + case TrinoSqlParser.KW_CROSS: + case TrinoSqlParser.KW_UNION: + this.enterOuterAlt(localContext, 2); { - this.state = 1708; - this.errorHandler.sync(this); + this.state = 2057; _la = this.tokenStream.LA(1); - if (_la === 147) { - { - this.state = 1707; - this.match(TrinoSqlParser.KW_NOT); - } + if(!(_la === 54 || _la === 281)) { + this.errorHandler.recoverInline(this); } - - this.state = 1710; - this.match(TrinoSqlParser.KW_IN); - this.state = 1711; - this.match(TrinoSqlParser.T__0); - this.state = 1712; - this.expression(); - this.state = 1717; + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2060; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { - { + if (_la === 3) { { - this.state = 1713; + this.state = 2058; this.match(TrinoSqlParser.T__2); - this.state = 1714; - this.expression(); - } - } - this.state = 1719; - this.errorHandler.sync(this); + this.state = 2059; _la = this.tokenStream.LA(1); - } - this.state = 1720; - this.match(TrinoSqlParser.T__1); - } - break; - case 5: - localContext = new InSubqueryContext(localContext); - this.enterOuterAlt(localContext, 5); - { - this.state = 1723; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 147) { - { - this.state = 1722; - this.match(TrinoSqlParser.KW_NOT); + if(!(_la === 125 || _la === 197)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } } - this.state = 1725; - this.match(TrinoSqlParser.KW_IN); - this.state = 1726; - this.match(TrinoSqlParser.T__0); - this.state = 1727; - this.query(); - this.state = 1728; - this.match(TrinoSqlParser.T__1); } break; - case 6: - localContext = new LikeContext(localContext); - this.enterOuterAlt(localContext, 6); + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public tableFunctionCall(): TableFunctionCallContext { + let localContext = new TableFunctionCallContext(this.context, this.state); + this.enterRule(localContext, 122, TrinoSqlParser.RULE_tableFunctionCall); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2064; + this.functionName(); + this.state = 2065; + this.match(TrinoSqlParser.T__0); + this.state = 2074; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 256, this.context) ) { + case 1: { - this.state = 1731; + this.state = 2066; + this.tableFunctionArgument(); + this.state = 2071; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 147) { + while (_la === 3) { { - this.state = 1730; - this.match(TrinoSqlParser.KW_NOT); - } - } - - this.state = 1733; - this.match(TrinoSqlParser.KW_LIKE); - this.state = 1734; - (localContext as LikeContext)._pattern = this.valueExpression(0); - this.state = 1737; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 227, this.context) ) { - case 1: { - this.state = 1735; - this.match(TrinoSqlParser.KW_ESCAPE); - this.state = 1736; - (localContext as LikeContext)._escape = this.valueExpression(0); + this.state = 2067; + this.match(TrinoSqlParser.T__2); + this.state = 2068; + this.tableFunctionArgument(); } - break; - } - } - break; - case 7: - localContext = new NullPredicateContext(localContext); - this.enterOuterAlt(localContext, 7); - { - this.state = 1739; - this.match(TrinoSqlParser.KW_IS); - this.state = 1741; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 147) { - { - this.state = 1740; - this.match(TrinoSqlParser.KW_NOT); } + this.state = 2073; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - - this.state = 1743; - this.match(TrinoSqlParser.KW_NULL); } break; - case 8: - localContext = new DistinctFromContext(localContext); - this.enterOuterAlt(localContext, 8); + } + this.state = 2085; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 52) { { - this.state = 1744; - this.match(TrinoSqlParser.KW_IS); - this.state = 1746; + this.state = 2076; + this.match(TrinoSqlParser.KW_COPARTITION); + this.state = 2077; + this.copartitionTables(); + this.state = 2082; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 147) { + while (_la === 3) { { - this.state = 1745; - this.match(TrinoSqlParser.KW_NOT); + { + this.state = 2078; + this.match(TrinoSqlParser.T__2); + this.state = 2079; + this.copartitionTables(); } + } + this.state = 2084; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } - - this.state = 1748; - this.match(TrinoSqlParser.KW_DISTINCT); - this.state = 1749; - this.match(TrinoSqlParser.KW_FROM); - this.state = 1750; - (localContext as DistinctFromContext)._right = this.valueExpression(0); } - break; + } + + this.state = 2087; + this.match(TrinoSqlParser.T__1); } } catch (re) { @@ -6965,153 +8034,45 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - - public valueExpression(): ValueExpressionContext; - public valueExpression(_p: number): ValueExpressionContext; - public valueExpression(_p?: number): ValueExpressionContext { - if (_p === undefined) { - _p = 0; - } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new ValueExpressionContext(this.context, parentState); - let previousContext = localContext; - let _startState = 108; - this.enterRecursionRule(localContext, 108, TrinoSqlParser.RULE_valueExpression, _p); - let _la: number; + public tableFunctionArgument(): TableFunctionArgumentContext { + let localContext = new TableFunctionArgumentContext(this.context, this.state); + this.enterRule(localContext, 124, TrinoSqlParser.RULE_tableFunctionArgument); try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 1757; + this.state = 2092; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 231, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 259, this.context) ) { case 1: { - localContext = new ValueExpressionDefaultContext(localContext); - this.context = localContext; - previousContext = localContext; - - this.state = 1754; - this.primaryExpression(0); + this.state = 2089; + this.identifier(); + this.state = 2090; + this.match(TrinoSqlParser.T__5); } break; - case 2: + } + this.state = 2097; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 260, this.context) ) { + case 1: { - localContext = new ArithmeticUnaryContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1755; - (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 255 || _la === 256)) { - (localContext as ArithmeticUnaryContext)._operator = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); + this.state = 2094; + this.tableArgument(); } - this.state = 1756; - this.valueExpression(4); + break; + case 2: + { + this.state = 2095; + this.descriptorArgument(); } break; - } - this.context!.stop = this.tokenStream.LT(-1); - this.state = 1773; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - previousContext = localContext; - { - this.state = 1771; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 232, this.context) ) { - case 1: - { - localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); - (localContext as ArithmeticBinaryContext)._left = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1759; - if (!(this.precpred(this.context, 3))) { - throw this.createFailedPredicateException("this.precpred(this.context, 3)"); - } - this.state = 1760; - (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 7) !== 0))) { - (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 1761; - (localContext as ArithmeticBinaryContext)._right = this.valueExpression(4); - } - break; - case 2: - { - localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); - (localContext as ArithmeticBinaryContext)._left = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1762; - if (!(this.precpred(this.context, 2))) { - throw this.createFailedPredicateException("this.precpred(this.context, 2)"); - } - this.state = 1763; - (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 255 || _la === 256)) { - (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - this.state = 1764; - (localContext as ArithmeticBinaryContext)._right = this.valueExpression(3); - } - break; - case 3: - { - localContext = new ConcatenationContext(new ValueExpressionContext(parentContext, parentState)); - (localContext as ConcatenationContext)._left = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1765; - if (!(this.precpred(this.context, 1))) { - throw this.createFailedPredicateException("this.precpred(this.context, 1)"); - } - this.state = 1766; - this.match(TrinoSqlParser.CONCAT); - this.state = 1767; - (localContext as ConcatenationContext)._right = this.valueExpression(2); - } - break; - case 4: - { - localContext = new AtTimeZoneContext(new ValueExpressionContext(parentContext, parentState)); - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); - this.state = 1768; - if (!(this.precpred(this.context, 5))) { - throw this.createFailedPredicateException("this.precpred(this.context, 5)"); - } - this.state = 1769; - this.match(TrinoSqlParser.KW_AT); - this.state = 1770; - this.timeZoneSpecifier(); - } - break; - } - } + case 3: + { + this.state = 2096; + this.expression(); } - this.state = 1775; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 233, this.context); + break; } } } @@ -7125,879 +8086,772 @@ export class TrinoSqlParser extends SQLParserBase { } } finally { - this.unrollRecursionContexts(parentContext); + this.exitRule(); } return localContext; } - - public primaryExpression(): PrimaryExpressionContext; - public primaryExpression(_p: number): PrimaryExpressionContext; - public primaryExpression(_p?: number): PrimaryExpressionContext { - if (_p === undefined) { - _p = 0; - } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new PrimaryExpressionContext(this.context, parentState); - let previousContext = localContext; - let _startState = 110; - this.enterRecursionRule(localContext, 110, TrinoSqlParser.RULE_primaryExpression, _p); + public tableArgument(): TableArgumentContext { + let localContext = new TableArgumentContext(this.context, this.state); + this.enterRule(localContext, 126, TrinoSqlParser.RULE_tableArgument); let _la: number; try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - this.state = 2025; + this.state = 2099; + this.tableArgumentRelation(); + this.state = 2117; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 263, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (_la === 201) { { - localContext = new NullLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - - this.state = 1777; - this.match(TrinoSqlParser.KW_NULL); - } - break; - case 2: - { - localContext = new IntervalLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1778; - this.interval(); - } - break; - case 3: - { - localContext = new TypeConstructorContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1779; - this.identifier(); - this.state = 1780; - this.string_(); - } - break; - case 4: - { - localContext = new TypeConstructorContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1782; - this.match(TrinoSqlParser.KW_DOUBLE); - this.state = 1783; - this.match(TrinoSqlParser.KW_PRECISION); - this.state = 1784; - this.string_(); - } - break; - case 5: - { - localContext = new NumericLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1785; - this.number_(); - } - break; - case 6: - { - localContext = new BooleanLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1786; - this.booleanValue(); - } - break; - case 7: - { - localContext = new StringLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1787; - this.string_(); - } - break; - case 8: - { - localContext = new BinaryLiteralContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1788; - this.match(TrinoSqlParser.BINARY_LITERAL); - } - break; - case 9: - { - localContext = new ParameterContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1789; - this.match(TrinoSqlParser.QUESTION_MARK); - } - break; - case 10: - { - localContext = new PositionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1790; - this.match(TrinoSqlParser.KW_POSITION); - this.state = 1791; - this.match(TrinoSqlParser.T__0); - this.state = 1792; - this.valueExpression(0); - this.state = 1793; - this.match(TrinoSqlParser.KW_IN); - this.state = 1794; - this.valueExpression(0); - this.state = 1795; - this.match(TrinoSqlParser.T__1); - } - break; - case 11: - { - localContext = new RowConstructorContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1797; - this.match(TrinoSqlParser.T__0); - this.state = 1798; - this.expression(); - this.state = 1801; + this.state = 2100; + this.match(TrinoSqlParser.KW_PARTITION); + this.state = 2101; + this.match(TrinoSqlParser.KW_BY); + this.state = 2115; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { + switch (this.interpreter.adaptivePredict(this.tokenStream, 263, this.context) ) { + case 1: { - this.state = 1799; - this.match(TrinoSqlParser.T__2); - this.state = 1800; - this.expression(); - } - } - this.state = 1803; + this.state = 2102; + this.match(TrinoSqlParser.T__0); + this.state = 2111; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 3); - this.state = 1805; - this.match(TrinoSqlParser.T__1); - } - break; - case 12: - { - localContext = new RowConstructorContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1807; - this.match(TrinoSqlParser.KW_ROW); - this.state = 1808; - this.match(TrinoSqlParser.T__0); - this.state = 1809; - this.expression(); - this.state = 1814; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 1810; - this.match(TrinoSqlParser.T__2); - this.state = 1811; - this.expression(); - } + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + { + this.state = 2103; + this.expression(); + this.state = 2108; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2104; + this.match(TrinoSqlParser.T__2); + this.state = 2105; + this.expression(); + } + } + this.state = 2110; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } } - this.state = 1816; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - this.state = 1817; - this.match(TrinoSqlParser.T__1); - } - break; - case 13: - { - localContext = new FunctionCallContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1819; - this.functionName(); - this.state = 1820; - this.match(TrinoSqlParser.T__0); - this.state = 1821; - this.match(TrinoSqlParser.ASTERISK); - this.state = 1822; - this.match(TrinoSqlParser.T__1); - this.state = 1824; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 236, this.context) ) { - case 1: - { - this.state = 1823; - this.filter(); + + this.state = 2113; + this.match(TrinoSqlParser.T__1); } break; - } - this.state = 1827; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 237, this.context) ) { - case 1: + case 2: { - this.state = 1826; - this.over(); + this.state = 2114; + this.expression(); } break; } } + } + + this.state = 2125; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_PRUNE: + { + this.state = 2119; + this.match(TrinoSqlParser.KW_PRUNE); + this.state = 2120; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 2121; + this.match(TrinoSqlParser.KW_EMPTY); + } + break; + case TrinoSqlParser.KW_KEEP: + { + this.state = 2122; + this.match(TrinoSqlParser.KW_KEEP); + this.state = 2123; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 2124; + this.match(TrinoSqlParser.KW_EMPTY); + } break; - case 14: + case TrinoSqlParser.T__1: + case TrinoSqlParser.T__2: + case TrinoSqlParser.KW_COPARTITION: + case TrinoSqlParser.KW_ORDER: + break; + default: + break; + } + this.state = 2143; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 195) { { - localContext = new FunctionCallContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1830; + this.state = 2127; + this.match(TrinoSqlParser.KW_ORDER); + this.state = 2128; + this.match(TrinoSqlParser.KW_BY); + this.state = 2141; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 238, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 267, this.context) ) { case 1: { - this.state = 1829; - this.processingMode(); - } - break; - } - this.state = 1832; - this.functionName(); - this.state = 1833; - this.match(TrinoSqlParser.T__0); - this.state = 1845; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2069757954) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1476117503) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 2120217679) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 4252345787) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 1325399551) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3153981439) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4286054271) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 3237637037) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & 2047) !== 0)) { - { - this.state = 1835; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 239, this.context) ) { - case 1: - { - this.state = 1834; - this.setQuantifier(); - } - break; - } - this.state = 1837; - this.expression(); - this.state = 1842; + this.state = 2129; + this.match(TrinoSqlParser.T__0); + this.state = 2130; + this.sortItem(); + this.state = 2135; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 1838; + this.state = 2131; this.match(TrinoSqlParser.T__2); - this.state = 1839; - this.expression(); + this.state = 2132; + this.sortItem(); } } - this.state = 1844; + this.state = 2137; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } + this.state = 2138; + this.match(TrinoSqlParser.T__1); } - } - - this.state = 1857; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 158) { + break; + case 2: { - this.state = 1847; - this.match(TrinoSqlParser.KW_ORDER); - this.state = 1848; - this.match(TrinoSqlParser.KW_BY); - this.state = 1849; + this.state = 2140; this.sortItem(); - this.state = 1854; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 1850; - this.match(TrinoSqlParser.T__2); - this.state = 1851; - this.sortItem(); - } - } - this.state = 1856; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } } + break; } + } + } - this.state = 1859; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public tableArgumentRelation(): TableArgumentRelationContext { + let localContext = new TableArgumentRelationContext(this.context, this.state); + this.enterRule(localContext, 128, TrinoSqlParser.RULE_tableArgumentRelation); + let _la: number; + try { + this.state = 2171; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 275, this.context) ) { + case 1: + localContext = new TableArgumentTableContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 2145; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 2146; + this.match(TrinoSqlParser.T__0); + this.state = 2147; + this.tableRef(); + this.state = 2148; this.match(TrinoSqlParser.T__1); - this.state = 1861; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 244, this.context) ) { - case 1: - { - this.state = 1860; - this.filter(); - } - break; - } - this.state = 1867; + this.state = 2156; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 246, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 271, this.context) ) { case 1: { - this.state = 1864; + this.state = 2150; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 102 || _la === 184) { + if (_la === 28) { { - this.state = 1863; - this.nullTreatment(); + this.state = 2149; + this.match(TrinoSqlParser.KW_AS); } } - this.state = 1866; - this.over(); - } - break; - } - } - break; - case 15: - { - localContext = new MeasureContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1869; - this.identifier(); - this.state = 1870; - this.over(); - } - break; - case 16: - { - localContext = new LambdaContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1872; - this.identifier(); - this.state = 1873; - this.match(TrinoSqlParser.T__5); - this.state = 1874; - this.expression(); - } - break; - case 17: - { - localContext = new LambdaContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1876; - this.match(TrinoSqlParser.T__0); - this.state = 1885; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & 1140014511) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 3192429231) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & 3134381375) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 3162472435) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 4286316499) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4009750519) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 525170103) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & 15) !== 0)) { - { - this.state = 1877; + this.state = 2152; this.identifier(); - this.state = 1882; + this.state = 2154; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { + if (_la === 1) { { - { - this.state = 1878; - this.match(TrinoSqlParser.T__2); - this.state = 1879; - this.identifier(); - } + this.state = 2153; + this.columnAliases(); } - this.state = 1884; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } } - } - this.state = 1887; - this.match(TrinoSqlParser.T__1); - this.state = 1888; - this.match(TrinoSqlParser.T__5); - this.state = 1889; - this.expression(); + } + break; } - break; - case 18: - { - localContext = new SubqueryExpressionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1890; - this.match(TrinoSqlParser.T__0); - this.state = 1891; - this.query(); - this.state = 1892; - this.match(TrinoSqlParser.T__1); } break; - case 19: + case 2: + localContext = new TableArgumentQueryContext(localContext); + this.enterOuterAlt(localContext, 2); { - localContext = new ExistsContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1894; - this.match(TrinoSqlParser.KW_EXISTS); - this.state = 1895; + this.state = 2158; + this.match(TrinoSqlParser.KW_TABLE); + this.state = 2159; this.match(TrinoSqlParser.T__0); - this.state = 1896; + this.state = 2160; this.query(); - this.state = 1897; + this.state = 2161; this.match(TrinoSqlParser.T__1); - } - break; - case 20: - { - localContext = new SimpleCaseContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1899; - this.match(TrinoSqlParser.KW_CASE); - this.state = 1900; - (localContext as SimpleCaseContext)._operand = this.expression(); - this.state = 1902; + this.state = 2169; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - do { - { + switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { + case 1: { - this.state = 1901; - this.whenClause(); - } + this.state = 2163; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 28) { + { + this.state = 2162; + this.match(TrinoSqlParser.KW_AS); + } } - this.state = 1904; + + this.state = 2165; + this.identifier(); + this.state = 2167; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 240); - this.state = 1908; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 70) { - { - this.state = 1906; - this.match(TrinoSqlParser.KW_ELSE); - this.state = 1907; - (localContext as SimpleCaseContext)._elseExpression = this.expression(); + if (_la === 1) { + { + this.state = 2166; + this.columnAliases(); + } } - } - this.state = 1910; - this.match(TrinoSqlParser.KW_END); + } + break; + } } break; - case 21: + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public descriptorArgument(): DescriptorArgumentContext { + let localContext = new DescriptorArgumentContext(this.context, this.state); + this.enterRule(localContext, 130, TrinoSqlParser.RULE_descriptorArgument); + let _la: number; + try { + this.state = 2191; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_DESCRIPTOR: + this.enterOuterAlt(localContext, 1); { - localContext = new SearchedCaseContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1912; - this.match(TrinoSqlParser.KW_CASE); - this.state = 1914; + this.state = 2173; + this.match(TrinoSqlParser.KW_DESCRIPTOR); + this.state = 2174; + this.match(TrinoSqlParser.T__0); + this.state = 2175; + this.descriptorField(); + this.state = 2180; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - do { + while (_la === 3) { { { - this.state = 1913; - this.whenClause(); + this.state = 2176; + this.match(TrinoSqlParser.T__2); + this.state = 2177; + this.descriptorField(); } } - this.state = 1916; + this.state = 2182; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } while (_la === 240); - this.state = 1920; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 70) { - { - this.state = 1918; - this.match(TrinoSqlParser.KW_ELSE); - this.state = 1919; - (localContext as SearchedCaseContext)._elseExpression = this.expression(); - } - } - - this.state = 1922; - this.match(TrinoSqlParser.KW_END); } - break; - case 22: - { - localContext = new CastContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1924; - this.match(TrinoSqlParser.KW_CAST); - this.state = 1925; - this.match(TrinoSqlParser.T__0); - this.state = 1926; - this.expression(); - this.state = 1927; - this.match(TrinoSqlParser.KW_AS); - this.state = 1928; - this.type_(0); - this.state = 1929; + this.state = 2183; this.match(TrinoSqlParser.T__1); } break; - case 23: + case TrinoSqlParser.KW_CAST: + this.enterOuterAlt(localContext, 2); { - localContext = new CastContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1931; - this.match(TrinoSqlParser.KW_TRY_CAST); - this.state = 1932; + this.state = 2185; + this.match(TrinoSqlParser.KW_CAST); + this.state = 2186; this.match(TrinoSqlParser.T__0); - this.state = 1933; - this.expression(); - this.state = 1934; + this.state = 2187; + this.match(TrinoSqlParser.KW_NULL); + this.state = 2188; this.match(TrinoSqlParser.KW_AS); - this.state = 1935; - this.type_(0); - this.state = 1936; + this.state = 2189; + this.match(TrinoSqlParser.KW_DESCRIPTOR); + this.state = 2190; this.match(TrinoSqlParser.T__1); } break; - case 24: - { - localContext = new ArrayConstructorContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1938; - this.match(TrinoSqlParser.KW_ARRAY); - this.state = 1939; - this.match(TrinoSqlParser.T__6); - this.state = 1948; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 2069757954) !== 0) || ((((_la - 33)) & ~0x1F) === 0 && ((1 << (_la - 33)) & 1476117503) !== 0) || ((((_la - 65)) & ~0x1F) === 0 && ((1 << (_la - 65)) & 2120217677) !== 0) || ((((_la - 97)) & ~0x1F) === 0 && ((1 << (_la - 97)) & 4252345787) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 1325399551) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3153981439) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4286054271) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 3237637037) !== 0) || ((((_la - 261)) & ~0x1F) === 0 && ((1 << (_la - 261)) & 2047) !== 0)) { - { - this.state = 1940; - this.expression(); - this.state = 1945; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 1941; - this.match(TrinoSqlParser.T__2); - this.state = 1942; - this.expression(); - } - } - this.state = 1947; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - - this.state = 1950; - this.match(TrinoSqlParser.T__7); - } - break; - case 25: - { - localContext = new ColumnReferenceContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1951; - this.identifier(); - } - break; - case 26: - { - localContext = new SpecialDateTimeFunctionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1952; - (localContext as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_CURRENT_DATE); - } - break; - case 27: - { - localContext = new SpecialDateTimeFunctionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1953; - (localContext as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_CURRENT_TIME); - this.state = 1957; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 255, this.context) ) { - case 1: - { - this.state = 1954; - this.match(TrinoSqlParser.T__0); - this.state = 1955; - (localContext as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1956; - this.match(TrinoSqlParser.T__1); - } - break; - } - } - break; - case 28: - { - localContext = new SpecialDateTimeFunctionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1959; - (localContext as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_CURRENT_TIMESTAMP); - this.state = 1963; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 256, this.context) ) { - case 1: - { - this.state = 1960; - this.match(TrinoSqlParser.T__0); - this.state = 1961; - (localContext as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1962; - this.match(TrinoSqlParser.T__1); - } - break; - } - } - break; - case 29: - { - localContext = new SpecialDateTimeFunctionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1965; - (localContext as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_LOCALTIME); - this.state = 1969; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 257, this.context) ) { - case 1: - { - this.state = 1966; - this.match(TrinoSqlParser.T__0); - this.state = 1967; - (localContext as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1968; - this.match(TrinoSqlParser.T__1); - } - break; - } - } - break; - case 30: - { - localContext = new SpecialDateTimeFunctionContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1971; - (localContext as SpecialDateTimeFunctionContext)._name = this.match(TrinoSqlParser.KW_LOCALTIMESTAMP); - this.state = 1975; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 258, this.context) ) { - case 1: - { - this.state = 1972; - this.match(TrinoSqlParser.T__0); - this.state = 1973; - (localContext as SpecialDateTimeFunctionContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 1974; - this.match(TrinoSqlParser.T__1); - } - break; - } - } - break; - case 31: + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public descriptorField(): DescriptorFieldContext { + let localContext = new DescriptorFieldContext(this.context, this.state); + this.enterRule(localContext, 132, TrinoSqlParser.RULE_descriptorField); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2193; + this.identifier(); + this.state = 2195; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { { - localContext = new CurrentUserContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1977; - (localContext as CurrentUserContext)._name = this.match(TrinoSqlParser.KW_CURRENT_USER); + this.state = 2194; + this.type_(0); } - break; - case 32: + } + + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public copartitionTables(): CopartitionTablesContext { + let localContext = new CopartitionTablesContext(this.context, this.state); + this.enterRule(localContext, 134, TrinoSqlParser.RULE_copartitionTables); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2197; + this.match(TrinoSqlParser.T__0); + this.state = 2198; + this.qualifiedName(); + this.state = 2199; + this.match(TrinoSqlParser.T__2); + this.state = 2200; + this.qualifiedName(); + this.state = 2205; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { { - localContext = new CurrentCatalogContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1978; - (localContext as CurrentCatalogContext)._name = this.match(TrinoSqlParser.KW_CURRENT_CATALOG); - } - break; - case 33: { - localContext = new CurrentSchemaContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1979; - (localContext as CurrentSchemaContext)._name = this.match(TrinoSqlParser.KW_CURRENT_SCHEMA); + this.state = 2201; + this.match(TrinoSqlParser.T__2); + this.state = 2202; + this.qualifiedName(); } - break; - case 34: - { - localContext = new CurrentPathContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1980; - (localContext as CurrentPathContext)._name = this.match(TrinoSqlParser.KW_CURRENT_PATH); } - break; - case 35: - { - localContext = new SubstringContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 1981; - this.match(TrinoSqlParser.KW_SUBSTRING); - this.state = 1982; - this.match(TrinoSqlParser.T__0); - this.state = 1983; - this.valueExpression(0); - this.state = 1984; - this.match(TrinoSqlParser.KW_FROM); - this.state = 1985; - this.valueExpression(0); - this.state = 1988; + this.state = 2207; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 86) { - { - this.state = 1986; - this.match(TrinoSqlParser.KW_FOR); - this.state = 1987; - this.valueExpression(0); - } - } + } + this.state = 2208; + this.match(TrinoSqlParser.T__1); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public expression(): ExpressionContext { + let localContext = new ExpressionContext(this.context, this.state); + this.enterRule(localContext, 136, TrinoSqlParser.RULE_expression); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2210; + this.booleanExpression(0); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } - this.state = 1990; - this.match(TrinoSqlParser.T__1); - } - break; - case 36: - { - localContext = new NormalizeContext(localContext); + public booleanExpression(): BooleanExpressionContext; + public booleanExpression(_p: number): BooleanExpressionContext; + public booleanExpression(_p?: number): BooleanExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new BooleanExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 138; + this.enterRecursionRule(localContext, 138, TrinoSqlParser.RULE_booleanExpression, _p); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 2219; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.T__0: + case TrinoSqlParser.KW_ABSENT: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CASE: + case TrinoSqlParser.KW_CAST: + case TrinoSqlParser.KW_CATALOG: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_CURRENT_CATALOG: + case TrinoSqlParser.KW_CURRENT_DATE: + case TrinoSqlParser.KW_CURRENT_PATH: + case TrinoSqlParser.KW_CURRENT_SCHEMA: + case TrinoSqlParser.KW_CURRENT_TIME: + case TrinoSqlParser.KW_CURRENT_TIMESTAMP: + case TrinoSqlParser.KW_CURRENT_USER: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXISTS: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_EXTRACT: + case TrinoSqlParser.KW_FALSE: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPING: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_JSON_ARRAY: + case TrinoSqlParser.KW_JSON_EXISTS: + case TrinoSqlParser.KW_JSON_OBJECT: + case TrinoSqlParser.KW_JSON_QUERY: + case TrinoSqlParser.KW_JSON_VALUE: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LISTAGG: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOCALTIME: + case TrinoSqlParser.KW_LOCALTIMESTAMP: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NORMALIZE: + case TrinoSqlParser.KW_NULL: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRIM: + case TrinoSqlParser.KW_TRUE: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: + case TrinoSqlParser.PLUS: + case TrinoSqlParser.MINUS: + case TrinoSqlParser.QUESTION_MARK: + case TrinoSqlParser.STRING: + case TrinoSqlParser.UNICODE_STRING: + case TrinoSqlParser.BINARY_LITERAL: + case TrinoSqlParser.INTEGER_VALUE: + case TrinoSqlParser.DECIMAL_VALUE: + case TrinoSqlParser.DOUBLE_VALUE: + case TrinoSqlParser.IDENTIFIER: + case TrinoSqlParser.DIGIT_IDENTIFIER: + case TrinoSqlParser.QUOTED_IDENTIFIER: + case TrinoSqlParser.BACKQUOTED_IDENTIFIER: + { + localContext = new PredicatedContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 1992; - this.match(TrinoSqlParser.KW_NORMALIZE); - this.state = 1993; - this.match(TrinoSqlParser.T__0); - this.state = 1994; - this.valueExpression(0); - this.state = 1997; + + this.state = 2213; + (localContext as PredicatedContext)._valueExpression = this.valueExpression(0); + this.state = 2215; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 3) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 280, this.context) ) { + case 1: { - this.state = 1995; - this.match(TrinoSqlParser.T__2); - this.state = 1996; - this.normalForm(); + this.state = 2214; + this.predicate((localContext as PredicatedContext)._valueExpression); } + break; } - - this.state = 1999; - this.match(TrinoSqlParser.T__1); - } - break; - case 37: - { - localContext = new ExtractContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 2001; - this.match(TrinoSqlParser.KW_EXTRACT); - this.state = 2002; - this.match(TrinoSqlParser.T__0); - this.state = 2003; - this.identifier(); - this.state = 2004; - this.match(TrinoSqlParser.KW_FROM); - this.state = 2005; - this.valueExpression(0); - this.state = 2006; - this.match(TrinoSqlParser.T__1); } break; - case 38: + case TrinoSqlParser.KW_NOT: { - localContext = new ParenthesizedExpressionContext(localContext); + localContext = new LogicalNotContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2008; - this.match(TrinoSqlParser.T__0); - this.state = 2009; - this.expression(); - this.state = 2010; - this.match(TrinoSqlParser.T__1); - } - break; - case 39: - { - localContext = new GroupingOperationContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 2012; - this.match(TrinoSqlParser.KW_GROUPING); - this.state = 2013; - this.match(TrinoSqlParser.T__0); - this.state = 2022; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & 1140014511) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 3192429231) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & 3134381375) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 3162472435) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 4286316499) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4009750519) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 525170103) !== 0) || ((((_la - 268)) & ~0x1F) === 0 && ((1 << (_la - 268)) & 15) !== 0)) { - { - this.state = 2014; - this.qualifiedName(); - this.state = 2019; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 2015; - this.match(TrinoSqlParser.T__2); - this.state = 2016; - this.qualifiedName(); - } - } - this.state = 2021; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } - } - } - - this.state = 2024; - this.match(TrinoSqlParser.T__1); + this.state = 2217; + this.match(TrinoSqlParser.KW_NOT); + this.state = 2218; + this.booleanExpression(3); } break; + default: + throw new antlr.NoViableAltException(this); } this.context!.stop = this.tokenStream.LT(-1); - this.state = 2037; + this.state = 2229; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 265, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 283, this.context); while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { if (alternative === 1) { if (this._parseListeners != null) { @@ -8005,47 +8859,43 @@ export class TrinoSqlParser extends SQLParserBase { } previousContext = localContext; { - this.state = 2035; + this.state = 2227; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 264, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 282, this.context) ) { case 1: { - localContext = new SubscriptContext(new PrimaryExpressionContext(parentContext, parentState)); - (localContext as SubscriptContext)._value = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_primaryExpression); - this.state = 2027; - if (!(this.precpred(this.context, 17))) { - throw this.createFailedPredicateException("this.precpred(this.context, 17)"); + localContext = new AndContext(new BooleanExpressionContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_booleanExpression); + this.state = 2221; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); } - this.state = 2028; - this.match(TrinoSqlParser.T__6); - this.state = 2029; - (localContext as SubscriptContext)._index = this.valueExpression(0); - this.state = 2030; - this.match(TrinoSqlParser.T__7); + this.state = 2222; + this.match(TrinoSqlParser.KW_AND); + this.state = 2223; + this.booleanExpression(3); } break; case 2: { - localContext = new DereferenceContext(new PrimaryExpressionContext(parentContext, parentState)); - (localContext as DereferenceContext)._base = previousContext; - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_primaryExpression); - this.state = 2032; - if (!(this.precpred(this.context, 15))) { - throw this.createFailedPredicateException("this.precpred(this.context, 15)"); + localContext = new OrContext(new BooleanExpressionContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_booleanExpression); + this.state = 2224; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); } - this.state = 2033; - this.match(TrinoSqlParser.T__3); - this.state = 2034; - (localContext as DereferenceContext)._fieldName = this.identifier(); + this.state = 2225; + this.match(TrinoSqlParser.KW_OR); + this.state = 2226; + this.booleanExpression(2); } break; } } } - this.state = 2039; + this.state = 2231; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 265, this.context); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 283, this.context); } } } @@ -8063,65 +8913,204 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public processingMode(): ProcessingModeContext { - let localContext = new ProcessingModeContext(this.context, this.state); - this.enterRule(localContext, 112, TrinoSqlParser.RULE_processingMode); + public predicate(value: antlr.ParserRuleContext): PredicateContext { + let localContext = new PredicateContext(this.context, this.state, value); + this.enterRule(localContext, 140, TrinoSqlParser.RULE_predicate); let _la: number; try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2040; - _la = this.tokenStream.LA(1); - if(!(_la === 83 || _la === 194)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public nullTreatment(): NullTreatmentContext { - let localContext = new NullTreatmentContext(this.context, this.state); - this.enterRule(localContext, 114, TrinoSqlParser.RULE_nullTreatment); - try { - this.state = 2046; + this.state = 2293; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_IGNORE: + switch (this.interpreter.adaptivePredict(this.tokenStream, 292, this.context) ) { + case 1: + localContext = new ComparisonContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2042; - this.match(TrinoSqlParser.KW_IGNORE); - this.state = 2043; - this.match(TrinoSqlParser.KW_NULLS); + this.state = 2232; + this.comparisonOperator(); + this.state = 2233; + (localContext as ComparisonContext)._right = this.valueExpression(0); } break; - case TrinoSqlParser.KW_RESPECT: + case 2: + localContext = new QuantifiedComparisonContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2044; - this.match(TrinoSqlParser.KW_RESPECT); - this.state = 2045; - this.match(TrinoSqlParser.KW_NULLS); + this.state = 2235; + this.comparisonOperator(); + this.state = 2236; + this.comparisonQuantifier(); + this.state = 2237; + this.match(TrinoSqlParser.T__0); + this.state = 2238; + this.query(); + this.state = 2239; + this.match(TrinoSqlParser.T__1); + } + break; + case 3: + localContext = new BetweenContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 2242; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2241; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2244; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 2245; + (localContext as BetweenContext)._lower = this.valueExpression(0); + this.state = 2246; + this.match(TrinoSqlParser.KW_AND); + this.state = 2247; + (localContext as BetweenContext)._upper = this.valueExpression(0); + } + break; + case 4: + localContext = new InListContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 2250; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2249; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2252; + this.match(TrinoSqlParser.KW_IN); + this.state = 2253; + this.match(TrinoSqlParser.T__0); + this.state = 2254; + this.expression(); + this.state = 2259; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2255; + this.match(TrinoSqlParser.T__2); + this.state = 2256; + this.expression(); + } + } + this.state = 2261; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2262; + this.match(TrinoSqlParser.T__1); + } + break; + case 5: + localContext = new InSubqueryContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 2265; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2264; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2267; + this.match(TrinoSqlParser.KW_IN); + this.state = 2268; + this.match(TrinoSqlParser.T__0); + this.state = 2269; + this.query(); + this.state = 2270; + this.match(TrinoSqlParser.T__1); + } + break; + case 6: + localContext = new LikeContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 2273; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2272; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2275; + this.match(TrinoSqlParser.KW_LIKE); + this.state = 2276; + (localContext as LikeContext)._pattern = this.valueExpression(0); + this.state = 2279; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 289, this.context) ) { + case 1: + { + this.state = 2277; + this.match(TrinoSqlParser.KW_ESCAPE); + this.state = 2278; + (localContext as LikeContext)._escape = this.valueExpression(0); + } + break; + } + } + break; + case 7: + localContext = new NullPredicateContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 2281; + this.match(TrinoSqlParser.KW_IS); + this.state = 2283; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2282; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2285; + this.match(TrinoSqlParser.KW_NULL); + } + break; + case 8: + localContext = new DistinctFromContext(localContext); + this.enterOuterAlt(localContext, 8); + { + this.state = 2286; + this.match(TrinoSqlParser.KW_IS); + this.state = 2288; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 2287; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 2290; + this.match(TrinoSqlParser.KW_DISTINCT); + this.state = 2291; + this.match(TrinoSqlParser.KW_FROM); + this.state = 2292; + (localContext as DistinctFromContext)._right = this.valueExpression(0); } break; - default: - throw new antlr.NoViableAltException(this); } } catch (re) { @@ -8138,43 +9127,154 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public string_(): StringContext { - let localContext = new StringContext(this.context, this.state); - this.enterRule(localContext, 116, TrinoSqlParser.RULE_string); + + public valueExpression(): ValueExpressionContext; + public valueExpression(_p: number): ValueExpressionContext; + public valueExpression(_p?: number): ValueExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new ValueExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 142; + this.enterRecursionRule(localContext, 142, TrinoSqlParser.RULE_valueExpression, _p); + let _la: number; try { - this.state = 2054; + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 2299; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.STRING: - localContext = new BasicStringLiteralContext(localContext); - this.enterOuterAlt(localContext, 1); + switch (this.interpreter.adaptivePredict(this.tokenStream, 293, this.context) ) { + case 1: { - this.state = 2048; - this.match(TrinoSqlParser.STRING); + localContext = new ValueExpressionDefaultContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 2296; + this.primaryExpression(0); } break; - case TrinoSqlParser.UNICODE_STRING: - localContext = new UnicodeStringLiteralContext(localContext); - this.enterOuterAlt(localContext, 2); + case 2: { - this.state = 2049; - this.match(TrinoSqlParser.UNICODE_STRING); - this.state = 2052; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 267, this.context) ) { - case 1: - { - this.state = 2050; - this.match(TrinoSqlParser.KW_UESCAPE); - this.state = 2051; - this.match(TrinoSqlParser.STRING); - } - break; + localContext = new ArithmeticUnaryContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2297; + (localContext as ArithmeticUnaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 318 || _la === 319)) { + (localContext as ArithmeticUnaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); } + this.state = 2298; + this.valueExpression(4); } break; - default: - throw new antlr.NoViableAltException(this); + } + this.context!.stop = this.tokenStream.LT(-1); + this.state = 2315; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 295, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + this.state = 2313; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 294, this.context) ) { + case 1: + { + localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); + (localContext as ArithmeticBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); + this.state = 2301; + if (!(this.precpred(this.context, 3))) { + throw this.createFailedPredicateException("this.precpred(this.context, 3)"); + } + this.state = 2302; + (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(((((_la - 320)) & ~0x1F) === 0 && ((1 << (_la - 320)) & 7) !== 0))) { + (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2303; + (localContext as ArithmeticBinaryContext)._right = this.valueExpression(4); + } + break; + case 2: + { + localContext = new ArithmeticBinaryContext(new ValueExpressionContext(parentContext, parentState)); + (localContext as ArithmeticBinaryContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); + this.state = 2304; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + } + this.state = 2305; + (localContext as ArithmeticBinaryContext)._operator = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 318 || _la === 319)) { + (localContext as ArithmeticBinaryContext)._operator = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2306; + (localContext as ArithmeticBinaryContext)._right = this.valueExpression(3); + } + break; + case 3: + { + localContext = new ConcatenationContext(new ValueExpressionContext(parentContext, parentState)); + (localContext as ConcatenationContext)._left = previousContext; + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); + this.state = 2307; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); + } + this.state = 2308; + this.match(TrinoSqlParser.CONCAT); + this.state = 2309; + (localContext as ConcatenationContext)._right = this.valueExpression(2); + } + break; + case 4: + { + localContext = new AtTimeZoneContext(new ValueExpressionContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_valueExpression); + this.state = 2310; + if (!(this.precpred(this.context, 5))) { + throw this.createFailedPredicateException("this.precpred(this.context, 5)"); + } + this.state = 2311; + this.match(TrinoSqlParser.KW_AT); + this.state = 2312; + this.timeZoneSpecifier(); + } + break; + } + } + } + this.state = 2317; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 295, this.context); + } } } catch (re) { @@ -8187,1465 +9287,1597 @@ export class TrinoSqlParser extends SQLParserBase { } } finally { - this.exitRule(); + this.unrollRecursionContexts(parentContext); } return localContext; } - public timeZoneSpecifier(): TimeZoneSpecifierContext { - let localContext = new TimeZoneSpecifierContext(this.context, this.state); - this.enterRule(localContext, 118, TrinoSqlParser.RULE_timeZoneSpecifier); + + public primaryExpression(): PrimaryExpressionContext; + public primaryExpression(_p: number): PrimaryExpressionContext; + public primaryExpression(_p?: number): PrimaryExpressionContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new PrimaryExpressionContext(this.context, parentState); + let previousContext = localContext; + let _startState = 144; + this.enterRecursionRule(localContext, 144, TrinoSqlParser.RULE_primaryExpression, _p); + let _la: number; try { - this.state = 2062; + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 2771; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 269, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 359, this.context) ) { case 1: - localContext = new TimeZoneIntervalContext(localContext); - this.enterOuterAlt(localContext, 1); { - this.state = 2056; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2057; - this.match(TrinoSqlParser.KW_ZONE); - this.state = 2058; - this.interval(); + localContext = new NullLiteralContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 2319; + this.match(TrinoSqlParser.KW_NULL); } break; case 2: - localContext = new TimeZoneStringContext(localContext); - this.enterOuterAlt(localContext, 2); { - this.state = 2059; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2060; - this.match(TrinoSqlParser.KW_ZONE); - this.state = 2061; + localContext = new IntervalLiteralContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2320; + this.interval(); + } + break; + case 3: + { + localContext = new TypeConstructorContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2321; + this.identifier(); + this.state = 2322; this.string_(); } break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public comparisonOperator(): ComparisonOperatorContext { - let localContext = new ComparisonOperatorContext(this.context, this.state); - this.enterRule(localContext, 120, TrinoSqlParser.RULE_comparisonOperator); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2064; - _la = this.tokenStream.LA(1); - if(!(((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 63) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public comparisonQuantifier(): ComparisonQuantifierContext { - let localContext = new ComparisonQuantifierContext(this.context, this.state); - this.enterRule(localContext, 122, TrinoSqlParser.RULE_comparisonQuantifier); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2066; - _la = this.tokenStream.LA(1); - if(!(_la === 20 || _la === 24 || _la === 206)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public booleanValue(): BooleanValueContext { - let localContext = new BooleanValueContext(this.context, this.state); - this.enterRule(localContext, 124, TrinoSqlParser.RULE_booleanValue); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2068; - _la = this.tokenStream.LA(1); - if(!(_la === 80 || _la === 223)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public interval(): IntervalContext { - let localContext = new IntervalContext(this.context, this.state); - this.enterRule(localContext, 126, TrinoSqlParser.RULE_interval); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2070; - this.match(TrinoSqlParser.KW_INTERVAL); - this.state = 2072; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 255 || _la === 256) { + case 4: { - this.state = 2071; - localContext._sign = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 255 || _la === 256)) { - localContext._sign = this.errorHandler.recoverInline(this); + localContext = new TypeConstructorContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2324; + this.match(TrinoSqlParser.KW_DOUBLE); + this.state = 2325; + this.match(TrinoSqlParser.KW_PRECISION); + this.state = 2326; + this.string_(); } - else { - this.errorHandler.reportMatch(this); - this.consume(); + break; + case 5: + { + localContext = new NumericLiteralContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2327; + this.number_(); } + break; + case 6: + { + localContext = new BooleanLiteralContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2328; + this.booleanValue(); } - } - - this.state = 2074; - this.string_(); - this.state = 2075; - localContext._from_ = this.intervalField(); - this.state = 2078; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 271, this.context) ) { - case 1: + break; + case 7: { - this.state = 2076; - this.match(TrinoSqlParser.KW_TO); - this.state = 2077; - localContext._to = this.intervalField(); + localContext = new StringLiteralContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2329; + this.string_(); } break; - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public intervalField(): IntervalFieldContext { - let localContext = new IntervalFieldContext(this.context, this.state); - this.enterRule(localContext, 128, TrinoSqlParser.RULE_intervalField); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2080; - _la = this.tokenStream.LA(1); - if(!(_la === 58 || _la === 100 || _la === 136 || _la === 137 || _la === 197 || _la === 247)) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public normalForm(): NormalFormContext { - let localContext = new NormalFormContext(this.context, this.state); - this.enterRule(localContext, 130, TrinoSqlParser.RULE_normalForm); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2082; - _la = this.tokenStream.LA(1); - if(!(((((_la - 140)) & ~0x1F) === 0 && ((1 << (_la - 140)) & 15) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - - public type_(): TypeContext; - public type_(_p: number): TypeContext; - public type_(_p?: number): TypeContext { - if (_p === undefined) { - _p = 0; - } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new TypeContext(this.context, parentState); - let previousContext = localContext; - let _startState = 132; - this.enterRecursionRule(localContext, 132, TrinoSqlParser.RULE_type, _p); - let _la: number; - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 2175; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 282, this.context) ) { - case 1: + case 8: { - localContext = new RowTypeContext(localContext); + localContext = new BinaryLiteralContext(localContext); this.context = localContext; previousContext = localContext; - - this.state = 2085; - this.match(TrinoSqlParser.KW_ROW); - this.state = 2086; + this.state = 2330; + this.match(TrinoSqlParser.BINARY_LITERAL); + } + break; + case 9: + { + localContext = new ParameterContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2331; + this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + case 10: + { + localContext = new PositionContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2332; + this.match(TrinoSqlParser.KW_POSITION); + this.state = 2333; this.match(TrinoSqlParser.T__0); - this.state = 2087; - this.rowField(); - this.state = 2092; + this.state = 2334; + this.valueExpression(0); + this.state = 2335; + this.match(TrinoSqlParser.KW_IN); + this.state = 2336; + this.valueExpression(0); + this.state = 2337; + this.match(TrinoSqlParser.T__1); + } + break; + case 11: + { + localContext = new RowConstructorContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2339; + this.match(TrinoSqlParser.T__0); + this.state = 2340; + this.expression(); + this.state = 2343; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { + do { { { - this.state = 2088; + this.state = 2341; this.match(TrinoSqlParser.T__2); - this.state = 2089; - this.rowField(); + this.state = 2342; + this.expression(); } } - this.state = 2094; + this.state = 2345; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - } - this.state = 2095; + } while (_la === 3); + this.state = 2347; this.match(TrinoSqlParser.T__1); } break; - case 2: + case 12: { - localContext = new IntervalTypeContext(localContext); + localContext = new RowConstructorContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2097; - this.match(TrinoSqlParser.KW_INTERVAL); - this.state = 2098; - (localContext as IntervalTypeContext)._from_ = this.intervalField(); - this.state = 2101; + this.state = 2349; + this.match(TrinoSqlParser.KW_ROW); + this.state = 2350; + this.match(TrinoSqlParser.T__0); + this.state = 2351; + this.expression(); + this.state = 2356; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 273, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + while (_la === 3) { { - this.state = 2099; - this.match(TrinoSqlParser.KW_TO); - this.state = 2100; - (localContext as IntervalTypeContext)._to = this.intervalField(); + { + this.state = 2352; + this.match(TrinoSqlParser.T__2); + this.state = 2353; + this.expression(); } - break; + } + this.state = 2358; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); } + this.state = 2359; + this.match(TrinoSqlParser.T__1); } break; - case 3: + case 13: { - localContext = new DateTimeTypeContext(localContext); + localContext = new ListaggContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2103; - (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); - this.state = 2108; + this.state = 2361; + (localContext as ListaggContext)._name = this.match(TrinoSqlParser.KW_LISTAGG); + this.state = 2362; + this.match(TrinoSqlParser.T__0); + this.state = 2364; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 274, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 298, this.context) ) { case 1: { - this.state = 2104; - this.match(TrinoSqlParser.T__0); - this.state = 2105; - (localContext as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2106; - this.match(TrinoSqlParser.T__1); + this.state = 2363; + this.setQuantifier(); } break; } - this.state = 2113; + this.state = 2366; + this.expression(); + this.state = 2369; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 3) { + { + this.state = 2367; + this.match(TrinoSqlParser.T__2); + this.state = 2368; + this.string_(); + } + } + + this.state = 2374; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 190) { + { + this.state = 2371; + this.match(TrinoSqlParser.KW_ON); + this.state = 2372; + this.match(TrinoSqlParser.KW_OVERFLOW); + this.state = 2373; + this.listAggOverflowBehavior(); + } + } + + this.state = 2376; + this.match(TrinoSqlParser.T__1); + { + this.state = 2377; + this.match(TrinoSqlParser.KW_WITHIN); + this.state = 2378; + this.match(TrinoSqlParser.KW_GROUP); + this.state = 2379; + this.match(TrinoSqlParser.T__0); + this.state = 2380; + this.match(TrinoSqlParser.KW_ORDER); + this.state = 2381; + this.match(TrinoSqlParser.KW_BY); + this.state = 2382; + this.sortItem(); + this.state = 2387; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2383; + this.match(TrinoSqlParser.T__2); + this.state = 2384; + this.sortItem(); + } + } + this.state = 2389; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2390; + this.match(TrinoSqlParser.T__1); + } + this.state = 2393; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 275, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 302, this.context) ) { case 1: { - this.state = 2110; - this.match(TrinoSqlParser.KW_WITHOUT); - this.state = 2111; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2112; - this.match(TrinoSqlParser.KW_ZONE); + this.state = 2392; + this.filter(); } break; } } break; - case 4: + case 14: { - localContext = new DateTimeTypeContext(localContext); + localContext = new FunctionCallContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2115; - (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); - this.state = 2120; + this.state = 2396; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 303, this.context) ) { + case 1: + { + this.state = 2395; + this.processingMode(); + } + break; + } + this.state = 2398; + this.functionName(); + this.state = 2399; + this.match(TrinoSqlParser.T__0); + this.state = 2403; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 1) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { { - this.state = 2116; - this.match(TrinoSqlParser.T__0); - this.state = 2117; - (localContext as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2118; - this.match(TrinoSqlParser.T__1); + this.state = 2400; + (localContext as FunctionCallContext)._label = this.identifier(); + this.state = 2401; + this.match(TrinoSqlParser.T__3); } } - this.state = 2122; - this.match(TrinoSqlParser.KW_WITH); - this.state = 2123; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2124; - this.match(TrinoSqlParser.KW_ZONE); - } - break; - case 5: - { - localContext = new DateTimeTypeContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 2125; - (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); - this.state = 2130; + this.state = 2405; + this.match(TrinoSqlParser.ASTERISK); + this.state = 2406; + this.match(TrinoSqlParser.T__1); + this.state = 2408; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 277, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 305, this.context) ) { case 1: { - this.state = 2126; - this.match(TrinoSqlParser.T__0); - this.state = 2127; - (localContext as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2128; - this.match(TrinoSqlParser.T__1); + this.state = 2407; + this.filter(); } break; } - this.state = 2135; + this.state = 2411; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 278, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 306, this.context) ) { case 1: { - this.state = 2132; - this.match(TrinoSqlParser.KW_WITHOUT); - this.state = 2133; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2134; - this.match(TrinoSqlParser.KW_ZONE); + this.state = 2410; + this.over(); } break; } } break; - case 6: + case 15: { - localContext = new DateTimeTypeContext(localContext); + localContext = new FunctionCallContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2137; - (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); - this.state = 2142; + this.state = 2414; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 307, this.context) ) { + case 1: + { + this.state = 2413; + this.processingMode(); + } + break; + } + this.state = 2416; + this.functionName(); + this.state = 2417; + this.match(TrinoSqlParser.T__0); + this.state = 2429; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 1) { + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538415087) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { { - this.state = 2138; - this.match(TrinoSqlParser.T__0); - this.state = 2139; - (localContext as DateTimeTypeContext)._precision = this.typeParameter(); - this.state = 2140; - this.match(TrinoSqlParser.T__1); + this.state = 2419; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 308, this.context) ) { + case 1: + { + this.state = 2418; + this.setQuantifier(); + } + break; + } + this.state = 2421; + this.expression(); + this.state = 2426; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2422; + this.match(TrinoSqlParser.T__2); + this.state = 2423; + this.expression(); + } + } + this.state = 2428; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } } - this.state = 2144; - this.match(TrinoSqlParser.KW_WITH); - this.state = 2145; - this.match(TrinoSqlParser.KW_TIME); - this.state = 2146; - this.match(TrinoSqlParser.KW_ZONE); + this.state = 2441; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 195) { + { + this.state = 2431; + this.match(TrinoSqlParser.KW_ORDER); + this.state = 2432; + this.match(TrinoSqlParser.KW_BY); + this.state = 2433; + this.sortItem(); + this.state = 2438; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2434; + this.match(TrinoSqlParser.T__2); + this.state = 2435; + this.sortItem(); + } + } + this.state = 2440; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 2443; + this.match(TrinoSqlParser.T__1); + this.state = 2445; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 313, this.context) ) { + case 1: + { + this.state = 2444; + this.filter(); + } + break; + } + this.state = 2451; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { + case 1: + { + this.state = 2448; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 120 || _la === 228) { + { + this.state = 2447; + this.nullTreatment(); + } + } + + this.state = 2450; + this.over(); + } + break; } - break; - case 7: - { - localContext = new DoublePrecisionTypeContext(localContext); - this.context = localContext; - previousContext = localContext; - this.state = 2147; - this.match(TrinoSqlParser.KW_DOUBLE); - this.state = 2148; - this.match(TrinoSqlParser.KW_PRECISION); } break; - case 8: + case 16: { - localContext = new LegacyArrayTypeContext(localContext); + localContext = new MeasureContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2149; - this.match(TrinoSqlParser.KW_ARRAY); - this.state = 2150; - this.match(TrinoSqlParser.LT); - this.state = 2151; - this.type_(0); - this.state = 2152; - this.match(TrinoSqlParser.GT); + this.state = 2453; + this.identifier(); + this.state = 2454; + this.over(); } break; - case 9: + case 17: { - localContext = new LegacyMapTypeContext(localContext); + localContext = new LambdaContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2154; - this.match(TrinoSqlParser.KW_MAP); - this.state = 2155; - this.match(TrinoSqlParser.LT); - this.state = 2156; - (localContext as LegacyMapTypeContext)._keyType = this.type_(0); - this.state = 2157; - this.match(TrinoSqlParser.T__2); - this.state = 2158; - (localContext as LegacyMapTypeContext)._valueType = this.type_(0); - this.state = 2159; - this.match(TrinoSqlParser.GT); + this.state = 2456; + this.identifier(); + this.state = 2457; + this.match(TrinoSqlParser.T__6); + this.state = 2458; + this.expression(); } break; - case 10: + case 18: { - localContext = new GenericTypeContext(localContext); + localContext = new LambdaContext(localContext); this.context = localContext; previousContext = localContext; - this.state = 2161; - this.identifier(); - this.state = 2173; + this.state = 2460; + this.match(TrinoSqlParser.T__0); + this.state = 2469; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 281, this.context) ) { - case 1: + _la = this.tokenStream.LA(1); + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { { - this.state = 2162; - this.match(TrinoSqlParser.T__0); - this.state = 2163; - this.typeParameter(); - this.state = 2168; + this.state = 2461; + this.identifier(); + this.state = 2466; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2164; + this.state = 2462; this.match(TrinoSqlParser.T__2); - this.state = 2165; - this.typeParameter(); + this.state = 2463; + this.identifier(); } } - this.state = 2170; + this.state = 2468; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2171; - this.match(TrinoSqlParser.T__1); } - break; - } } - break; - } - this.context!.stop = this.tokenStream.LT(-1); - this.state = 2186; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 284, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - previousContext = localContext; + + this.state = 2471; + this.match(TrinoSqlParser.T__1); + this.state = 2472; + this.match(TrinoSqlParser.T__6); + this.state = 2473; + this.expression(); + } + break; + case 19: + { + localContext = new SubqueryExpressionContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2474; + this.match(TrinoSqlParser.T__0); + this.state = 2475; + this.query(); + this.state = 2476; + this.match(TrinoSqlParser.T__1); + } + break; + case 20: + { + localContext = new ExistsContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2478; + this.match(TrinoSqlParser.KW_EXISTS); + this.state = 2479; + this.match(TrinoSqlParser.T__0); + this.state = 2480; + this.query(); + this.state = 2481; + this.match(TrinoSqlParser.T__1); + } + break; + case 21: + { + localContext = new SimpleCaseContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2483; + this.match(TrinoSqlParser.KW_CASE); + this.state = 2484; + (localContext as SimpleCaseContext)._operand = this.expression(); + this.state = 2486; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { { { - localContext = new ArrayTypeContext(new TypeContext(parentContext, parentState)); - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_type); - this.state = 2177; - if (!(this.precpred(this.context, 2))) { - throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + this.state = 2485; + this.whenClause(); } - this.state = 2178; - this.match(TrinoSqlParser.KW_ARRAY); - this.state = 2182; + } + this.state = 2488; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 283, this.context) ) { - case 1: - { - this.state = 2179; - this.match(TrinoSqlParser.T__6); - this.state = 2180; - this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 2181; - this.match(TrinoSqlParser.T__7); - } - break; + _la = this.tokenStream.LA(1); + } while (_la === 300); + this.state = 2492; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 84) { + { + this.state = 2490; + this.match(TrinoSqlParser.KW_ELSE); + this.state = 2491; + (localContext as SimpleCaseContext)._elseExpression = this.expression(); } + } + + this.state = 2494; + this.match(TrinoSqlParser.KW_END); + } + break; + case 22: + { + localContext = new SearchedCaseContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2496; + this.match(TrinoSqlParser.KW_CASE); + this.state = 2498; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 2497; + this.whenClause(); } } - } - this.state = 2188; + this.state = 2500; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 300); + this.state = 2504; this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 284, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.unrollRecursionContexts(parentContext); - } - return localContext; - } - public rowField(): RowFieldContext { - let localContext = new RowFieldContext(this.context, this.state); - this.enterRule(localContext, 134, TrinoSqlParser.RULE_rowField); - try { - this.state = 2193; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 285, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 84) { + { + this.state = 2502; + this.match(TrinoSqlParser.KW_ELSE); + this.state = 2503; + (localContext as SearchedCaseContext)._elseExpression = this.expression(); + } + } + + this.state = 2506; + this.match(TrinoSqlParser.KW_END); + } + break; + case 23: { - this.state = 2189; + localContext = new CastContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2508; + this.match(TrinoSqlParser.KW_CAST); + this.state = 2509; + this.match(TrinoSqlParser.T__0); + this.state = 2510; + this.expression(); + this.state = 2511; + this.match(TrinoSqlParser.KW_AS); + this.state = 2512; this.type_(0); + this.state = 2513; + this.match(TrinoSqlParser.T__1); } break; - case 2: - this.enterOuterAlt(localContext, 2); + case 24: { - this.state = 2190; - this.identifier(); - this.state = 2191; + localContext = new CastContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2515; + this.match(TrinoSqlParser.KW_TRY_CAST); + this.state = 2516; + this.match(TrinoSqlParser.T__0); + this.state = 2517; + this.expression(); + this.state = 2518; + this.match(TrinoSqlParser.KW_AS); + this.state = 2519; this.type_(0); + this.state = 2520; + this.match(TrinoSqlParser.T__1); } break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public typeParameter(): TypeParameterContext { - let localContext = new TypeParameterContext(this.context, this.state); - this.enterRule(localContext, 136, TrinoSqlParser.RULE_typeParameter); - try { - this.state = 2197; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.INTEGER_VALUE: - this.enterOuterAlt(localContext, 1); + case 25: { - this.state = 2195; - this.match(TrinoSqlParser.INTEGER_VALUE); + localContext = new ArrayConstructorContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2522; + this.match(TrinoSqlParser.KW_ARRAY); + this.state = 2523; + this.match(TrinoSqlParser.T__7); + this.state = 2532; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3758094335) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + { + this.state = 2524; + this.expression(); + this.state = 2529; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2525; + this.match(TrinoSqlParser.T__2); + this.state = 2526; + this.expression(); + } + } + this.state = 2531; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 2534; + this.match(TrinoSqlParser.T__8); } break; - case TrinoSqlParser.KW_ADD: - case TrinoSqlParser.KW_ADMIN: - case TrinoSqlParser.KW_AFTER: - case TrinoSqlParser.KW_ALL: - case TrinoSqlParser.KW_ANALYZE: - case TrinoSqlParser.KW_ANY: - case TrinoSqlParser.KW_ARRAY: - case TrinoSqlParser.KW_ASC: - case TrinoSqlParser.KW_AT: - case TrinoSqlParser.KW_AUTHORIZATION: - case TrinoSqlParser.KW_BERNOULLI: - case TrinoSqlParser.KW_CALL: - case TrinoSqlParser.KW_CASCADE: - case TrinoSqlParser.KW_CATALOGS: - case TrinoSqlParser.KW_COLUMN: - case TrinoSqlParser.KW_COLUMNS: - case TrinoSqlParser.KW_COMMENT: - case TrinoSqlParser.KW_COMMIT: - case TrinoSqlParser.KW_COMMITTED: - case TrinoSqlParser.KW_CURRENT: - case TrinoSqlParser.KW_DATA: - case TrinoSqlParser.KW_DATE: - case TrinoSqlParser.KW_DAY: - case TrinoSqlParser.KW_DEFAULT: - case TrinoSqlParser.KW_DEFINER: - case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: - case TrinoSqlParser.KW_DISTRIBUTED: - case TrinoSqlParser.KW_DOUBLE: - case TrinoSqlParser.KW_EMPTY: - case TrinoSqlParser.KW_EXCLUDING: - case TrinoSqlParser.KW_EXPLAIN: - case TrinoSqlParser.KW_FETCH: - case TrinoSqlParser.KW_FILTER: - case TrinoSqlParser.KW_FINAL: - case TrinoSqlParser.KW_FIRST: - case TrinoSqlParser.KW_FOLLOWING: - case TrinoSqlParser.KW_FORMAT: - case TrinoSqlParser.KW_FUNCTIONS: - case TrinoSqlParser.KW_GRANT: - case TrinoSqlParser.KW_GRANTED: - case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: - case TrinoSqlParser.KW_GRAPHVIZ: - case TrinoSqlParser.KW_GROUPS: - case TrinoSqlParser.KW_HOUR: - case TrinoSqlParser.KW_IF: - case TrinoSqlParser.KW_IGNORE: - case TrinoSqlParser.KW_INCLUDING: - case TrinoSqlParser.KW_INITIAL: - case TrinoSqlParser.KW_INPUT: - case TrinoSqlParser.KW_INTERVAL: - case TrinoSqlParser.KW_INVOKER: - case TrinoSqlParser.KW_IO: - case TrinoSqlParser.KW_ISOLATION: - case TrinoSqlParser.KW_JSON: - case TrinoSqlParser.KW_LAST: - case TrinoSqlParser.KW_LATERAL: - case TrinoSqlParser.KW_LEVEL: - case TrinoSqlParser.KW_LIMIT: - case TrinoSqlParser.KW_LOCAL: - case TrinoSqlParser.KW_LOGICAL: - case TrinoSqlParser.KW_MAP: - case TrinoSqlParser.KW_MATCH: - case TrinoSqlParser.KW_MATCHED: - case TrinoSqlParser.KW_MATCHES: - case TrinoSqlParser.KW_MATCH_RECOGNIZE: - case TrinoSqlParser.KW_MATERIALIZED: - case TrinoSqlParser.KW_MEASURES: - case TrinoSqlParser.KW_MERGE: - case TrinoSqlParser.KW_MINUTE: - case TrinoSqlParser.KW_MONTH: - case TrinoSqlParser.KW_NEXT: - case TrinoSqlParser.KW_NFC: - case TrinoSqlParser.KW_NFD: - case TrinoSqlParser.KW_NFKC: - case TrinoSqlParser.KW_NFKD: - case TrinoSqlParser.KW_NO: - case TrinoSqlParser.KW_NONE: - case TrinoSqlParser.KW_NULLIF: - case TrinoSqlParser.KW_NULLS: - case TrinoSqlParser.KW_OFFSET: - case TrinoSqlParser.KW_OMIT: - case TrinoSqlParser.KW_ONE: - case TrinoSqlParser.KW_ONLY: - case TrinoSqlParser.KW_OPTION: - case TrinoSqlParser.KW_ORDINALITY: - case TrinoSqlParser.KW_OUTPUT: - case TrinoSqlParser.KW_OVER: - case TrinoSqlParser.KW_PARTITION: - case TrinoSqlParser.KW_PARTITIONS: - case TrinoSqlParser.KW_PAST: - case TrinoSqlParser.KW_PATH: - case TrinoSqlParser.KW_PATTERN: - case TrinoSqlParser.KW_PER: - case TrinoSqlParser.KW_PERMUTE: - case TrinoSqlParser.KW_POSITION: - case TrinoSqlParser.KW_PRECEDING: - case TrinoSqlParser.KW_PRECISION: - case TrinoSqlParser.KW_PRIVILEGES: - case TrinoSqlParser.KW_PROPERTIES: - case TrinoSqlParser.KW_RANGE: - case TrinoSqlParser.KW_READ: - case TrinoSqlParser.KW_REFRESH: - case TrinoSqlParser.KW_RENAME: - case TrinoSqlParser.KW_REPEATABLE: - case TrinoSqlParser.KW_REPLACE: - case TrinoSqlParser.KW_RESET: - case TrinoSqlParser.KW_RESPECT: - case TrinoSqlParser.KW_RESTRICT: - case TrinoSqlParser.KW_REVOKE: - case TrinoSqlParser.KW_ROLE: - case TrinoSqlParser.KW_ROLES: - case TrinoSqlParser.KW_ROLLBACK: - case TrinoSqlParser.KW_ROW: - case TrinoSqlParser.KW_ROWS: - case TrinoSqlParser.KW_RUNNING: - case TrinoSqlParser.KW_SCHEMA: - case TrinoSqlParser.KW_SCHEMAS: - case TrinoSqlParser.KW_SECOND: - case TrinoSqlParser.KW_SECURITY: - case TrinoSqlParser.KW_SEEK: - case TrinoSqlParser.KW_SERIALIZABLE: - case TrinoSqlParser.KW_SESSION: - case TrinoSqlParser.KW_SET: - case TrinoSqlParser.KW_SETS: - case TrinoSqlParser.KW_SHOW: - case TrinoSqlParser.KW_SOME: - case TrinoSqlParser.KW_START: - case TrinoSqlParser.KW_STATS: - case TrinoSqlParser.KW_SUBSET: - case TrinoSqlParser.KW_SUBSTRING: - case TrinoSqlParser.KW_SYSTEM: - case TrinoSqlParser.KW_TABLES: - case TrinoSqlParser.KW_TABLESAMPLE: - case TrinoSqlParser.KW_TEXT: - case TrinoSqlParser.KW_TIES: - case TrinoSqlParser.KW_TIME: - case TrinoSqlParser.KW_TIMESTAMP: - case TrinoSqlParser.KW_TO: - case TrinoSqlParser.KW_TRANSACTION: - case TrinoSqlParser.KW_TRUNCATE: - case TrinoSqlParser.KW_TRY_CAST: - case TrinoSqlParser.KW_TYPE: - case TrinoSqlParser.KW_UNBOUNDED: - case TrinoSqlParser.KW_UNCOMMITTED: - case TrinoSqlParser.KW_UNMATCHED: - case TrinoSqlParser.KW_UPDATE: - case TrinoSqlParser.KW_USE: - case TrinoSqlParser.KW_USER: - case TrinoSqlParser.KW_VALIDATE: - case TrinoSqlParser.KW_VERBOSE: - case TrinoSqlParser.KW_VIEW: - case TrinoSqlParser.KW_WINDOW: - case TrinoSqlParser.KW_WITHOUT: - case TrinoSqlParser.KW_WORK: - case TrinoSqlParser.KW_WRITE: - case TrinoSqlParser.KW_YEAR: - case TrinoSqlParser.KW_ZONE: - case TrinoSqlParser.IDENTIFIER: - case TrinoSqlParser.DIGIT_IDENTIFIER: - case TrinoSqlParser.QUOTED_IDENTIFIER: - case TrinoSqlParser.BACKQUOTED_IDENTIFIER: - this.enterOuterAlt(localContext, 2); + case 26: { - this.state = 2196; - this.type_(0); + localContext = new ColumnReferenceContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2535; + this.identifier(); } break; - default: - throw new antlr.NoViableAltException(this); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public whenClause(): WhenClauseContext { - let localContext = new WhenClauseContext(this.context, this.state); - this.enterRule(localContext, 138, TrinoSqlParser.RULE_whenClause); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2199; - this.match(TrinoSqlParser.KW_WHEN); - this.state = 2200; - localContext._condition = this.expression(); - this.state = 2201; - this.match(TrinoSqlParser.KW_THEN); - this.state = 2202; - localContext._result = this.expression(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public filter(): FilterContext { - let localContext = new FilterContext(this.context, this.state); - this.enterRule(localContext, 140, TrinoSqlParser.RULE_filter); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2204; - this.match(TrinoSqlParser.KW_FILTER); - this.state = 2205; - this.match(TrinoSqlParser.T__0); - this.state = 2206; - this.match(TrinoSqlParser.KW_WHERE); - this.state = 2207; - this.booleanExpression(0); - this.state = 2208; - this.match(TrinoSqlParser.T__1); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public mergeCase(): MergeCaseContext { - let localContext = new MergeCaseContext(this.context, this.state); - this.enterRule(localContext, 142, TrinoSqlParser.RULE_mergeCase); - let _la: number; - try { - this.state = 2274; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 294, this.context) ) { - case 1: - localContext = new MergeUpdateContext(localContext); - this.enterOuterAlt(localContext, 1); + case 27: { - this.state = 2210; - this.match(TrinoSqlParser.KW_WHEN); - this.state = 2211; - this.match(TrinoSqlParser.KW_MATCHED); - this.state = 2214; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 23) { - { - this.state = 2212; - this.match(TrinoSqlParser.KW_AND); - this.state = 2213; - (localContext as MergeUpdateContext)._condition = this.expression(); - } + localContext = new CurrentDateContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2536; + (localContext as CurrentDateContext)._name = this.match(TrinoSqlParser.KW_CURRENT_DATE); } - - this.state = 2216; - this.match(TrinoSqlParser.KW_THEN); - this.state = 2217; - this.match(TrinoSqlParser.KW_UPDATE); - this.state = 2218; - this.match(TrinoSqlParser.KW_SET); - this.state = 2219; - (localContext as MergeUpdateContext)._identifier = this.identifier(); - (localContext as MergeUpdateContext)._targets.push((localContext as MergeUpdateContext)._identifier); - this.state = 2220; - this.match(TrinoSqlParser.EQ); - this.state = 2221; - (localContext as MergeUpdateContext)._expression = this.expression(); - (localContext as MergeUpdateContext)._values.push((localContext as MergeUpdateContext)._expression); - this.state = 2229; + break; + case 28: + { + localContext = new CurrentTimeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2537; + (localContext as CurrentTimeContext)._name = this.match(TrinoSqlParser.KW_CURRENT_TIME); + this.state = 2541; this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { + switch (this.interpreter.adaptivePredict(this.tokenStream, 324, this.context) ) { + case 1: { - this.state = 2222; - this.match(TrinoSqlParser.T__2); - this.state = 2223; - (localContext as MergeUpdateContext)._identifier = this.identifier(); - (localContext as MergeUpdateContext)._targets.push((localContext as MergeUpdateContext)._identifier); - this.state = 2224; - this.match(TrinoSqlParser.EQ); - this.state = 2225; - (localContext as MergeUpdateContext)._expression = this.expression(); - (localContext as MergeUpdateContext)._values.push((localContext as MergeUpdateContext)._expression); - } + this.state = 2538; + this.match(TrinoSqlParser.T__0); + this.state = 2539; + (localContext as CurrentTimeContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 2540; + this.match(TrinoSqlParser.T__1); } - this.state = 2231; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + break; } } break; - case 2: - localContext = new MergeDeleteContext(localContext); - this.enterOuterAlt(localContext, 2); + case 29: { - this.state = 2232; - this.match(TrinoSqlParser.KW_WHEN); - this.state = 2233; - this.match(TrinoSqlParser.KW_MATCHED); - this.state = 2236; + localContext = new CurrentTimestampContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2543; + (localContext as CurrentTimestampContext)._name = this.match(TrinoSqlParser.KW_CURRENT_TIMESTAMP); + this.state = 2547; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 325, this.context) ) { + case 1: + { + this.state = 2544; + this.match(TrinoSqlParser.T__0); + this.state = 2545; + (localContext as CurrentTimestampContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 2546; + this.match(TrinoSqlParser.T__1); + } + break; + } + } + break; + case 30: + { + localContext = new LocalTimeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2549; + (localContext as LocalTimeContext)._name = this.match(TrinoSqlParser.KW_LOCALTIME); + this.state = 2553; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 326, this.context) ) { + case 1: + { + this.state = 2550; + this.match(TrinoSqlParser.T__0); + this.state = 2551; + (localContext as LocalTimeContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 2552; + this.match(TrinoSqlParser.T__1); + } + break; + } + } + break; + case 31: + { + localContext = new LocalTimestampContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2555; + (localContext as LocalTimestampContext)._name = this.match(TrinoSqlParser.KW_LOCALTIMESTAMP); + this.state = 2559; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 327, this.context) ) { + case 1: + { + this.state = 2556; + this.match(TrinoSqlParser.T__0); + this.state = 2557; + (localContext as LocalTimestampContext)._precision = this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 2558; + this.match(TrinoSqlParser.T__1); + } + break; + } + } + break; + case 32: + { + localContext = new CurrentUserContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2561; + (localContext as CurrentUserContext)._name = this.match(TrinoSqlParser.KW_CURRENT_USER); + } + break; + case 33: + { + localContext = new CurrentCatalogContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2562; + (localContext as CurrentCatalogContext)._name = this.match(TrinoSqlParser.KW_CURRENT_CATALOG); + } + break; + case 34: + { + localContext = new CurrentSchemaContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2563; + (localContext as CurrentSchemaContext)._name = this.match(TrinoSqlParser.KW_CURRENT_SCHEMA); + } + break; + case 35: + { + localContext = new CurrentPathContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2564; + (localContext as CurrentPathContext)._name = this.match(TrinoSqlParser.KW_CURRENT_PATH); + } + break; + case 36: + { + localContext = new TrimContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2565; + this.match(TrinoSqlParser.KW_TRIM); + this.state = 2566; + this.match(TrinoSqlParser.T__0); + this.state = 2574; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 330, this.context) ) { + case 1: + { + this.state = 2568; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 328, this.context) ) { + case 1: + { + this.state = 2567; + this.trimsSpecification(); + } + break; + } + this.state = 2571; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if ((((_la) & ~0x1F) === 0 && ((1 << _la) & 3984326658) !== 0) || ((((_la - 32)) & ~0x1F) === 0 && ((1 << (_la - 32)) & 4011589611) !== 0) || ((((_la - 64)) & ~0x1F) === 0 && ((1 << (_la - 64)) & 3538382319) !== 0) || ((((_la - 96)) & ~0x1F) === 0 && ((1 << (_la - 96)) & 1541142911) !== 0) || ((((_la - 129)) & ~0x1F) === 0 && ((1 << (_la - 129)) & 4253015917) !== 0) || ((((_la - 161)) & ~0x1F) === 0 && ((1 << (_la - 161)) & 3755997183) !== 0) || ((((_la - 193)) & ~0x1F) === 0 && ((1 << (_la - 193)) & 4024434665) !== 0) || ((((_la - 225)) & ~0x1F) === 0 && ((1 << (_la - 225)) & 4286569983) !== 0) || ((((_la - 257)) & ~0x1F) === 0 && ((1 << (_la - 257)) & 4008705783) !== 0) || ((((_la - 289)) & ~0x1F) === 0 && ((1 << (_la - 289)) & 1618962301) !== 0) || ((((_la - 324)) & ~0x1F) === 0 && ((1 << (_la - 324)) & 4093) !== 0)) { + { + this.state = 2570; + (localContext as TrimContext)._trimChar = this.valueExpression(0); + } + } + + this.state = 2573; + this.match(TrinoSqlParser.KW_FROM); + } + break; + } + this.state = 2576; + (localContext as TrimContext)._trimSource = this.valueExpression(0); + this.state = 2577; + this.match(TrinoSqlParser.T__1); + } + break; + case 37: + { + localContext = new TrimContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2579; + this.match(TrinoSqlParser.KW_TRIM); + this.state = 2580; + this.match(TrinoSqlParser.T__0); + this.state = 2581; + (localContext as TrimContext)._trimSource = this.valueExpression(0); + this.state = 2582; + this.match(TrinoSqlParser.T__2); + this.state = 2583; + (localContext as TrimContext)._trimChar = this.valueExpression(0); + this.state = 2584; + this.match(TrinoSqlParser.T__1); + } + break; + case 38: + { + localContext = new SubstringContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2586; + this.match(TrinoSqlParser.KW_SUBSTRING); + this.state = 2587; + this.match(TrinoSqlParser.T__0); + this.state = 2588; + this.valueExpression(0); + this.state = 2589; + this.match(TrinoSqlParser.KW_FROM); + this.state = 2590; + this.valueExpression(0); + this.state = 2593; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 23) { + if (_la === 103) { { - this.state = 2234; - this.match(TrinoSqlParser.KW_AND); - this.state = 2235; - (localContext as MergeDeleteContext)._condition = this.expression(); + this.state = 2591; + this.match(TrinoSqlParser.KW_FOR); + this.state = 2592; + this.valueExpression(0); } } - this.state = 2238; - this.match(TrinoSqlParser.KW_THEN); - this.state = 2239; - this.match(TrinoSqlParser.KW_DELETE); + this.state = 2595; + this.match(TrinoSqlParser.T__1); } break; - case 3: - localContext = new MergeInsertContext(localContext); - this.enterOuterAlt(localContext, 3); + case 39: { - this.state = 2240; - this.match(TrinoSqlParser.KW_WHEN); - this.state = 2241; - this.match(TrinoSqlParser.KW_NOT); - this.state = 2242; - this.match(TrinoSqlParser.KW_MATCHED); - this.state = 2245; + localContext = new NormalizeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2597; + this.match(TrinoSqlParser.KW_NORMALIZE); + this.state = 2598; + this.match(TrinoSqlParser.T__0); + this.state = 2599; + this.valueExpression(0); + this.state = 2602; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 23) { + if (_la === 3) { { - this.state = 2243; - this.match(TrinoSqlParser.KW_AND); - this.state = 2244; - (localContext as MergeInsertContext)._condition = this.expression(); + this.state = 2600; + this.match(TrinoSqlParser.T__2); + this.state = 2601; + this.normalForm(); } } - this.state = 2247; - this.match(TrinoSqlParser.KW_THEN); - this.state = 2248; - this.match(TrinoSqlParser.KW_INSERT); - this.state = 2260; + this.state = 2604; + this.match(TrinoSqlParser.T__1); + } + break; + case 40: + { + localContext = new ExtractContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2606; + this.match(TrinoSqlParser.KW_EXTRACT); + this.state = 2607; + this.match(TrinoSqlParser.T__0); + this.state = 2608; + this.identifier(); + this.state = 2609; + this.match(TrinoSqlParser.KW_FROM); + this.state = 2610; + this.valueExpression(0); + this.state = 2611; + this.match(TrinoSqlParser.T__1); + } + break; + case 41: + { + localContext = new ParenthesizedExpressionContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2613; + this.match(TrinoSqlParser.T__0); + this.state = 2614; + this.expression(); + this.state = 2615; + this.match(TrinoSqlParser.T__1); + } + break; + case 42: + { + localContext = new GroupingOperationContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2617; + this.match(TrinoSqlParser.KW_GROUPING); + this.state = 2618; + this.match(TrinoSqlParser.T__0); + this.state = 2627; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 1) { + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { { - this.state = 2249; - this.match(TrinoSqlParser.T__0); - this.state = 2250; - (localContext as MergeInsertContext)._identifier = this.identifier(); - (localContext as MergeInsertContext)._targets.push((localContext as MergeInsertContext)._identifier); - this.state = 2255; + this.state = 2619; + this.qualifiedName(); + this.state = 2624; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2251; + this.state = 2620; this.match(TrinoSqlParser.T__2); - this.state = 2252; - (localContext as MergeInsertContext)._identifier = this.identifier(); - (localContext as MergeInsertContext)._targets.push((localContext as MergeInsertContext)._identifier); + this.state = 2621; + this.qualifiedName(); } } - this.state = 2257; + this.state = 2626; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } - this.state = 2258; - this.match(TrinoSqlParser.T__1); } } - this.state = 2262; - this.match(TrinoSqlParser.KW_VALUES); - this.state = 2263; + this.state = 2629; + this.match(TrinoSqlParser.T__1); + } + break; + case 43: + { + localContext = new JsonExistsContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2630; + this.match(TrinoSqlParser.KW_JSON_EXISTS); + this.state = 2631; this.match(TrinoSqlParser.T__0); - this.state = 2264; - (localContext as MergeInsertContext)._expression = this.expression(); - (localContext as MergeInsertContext)._values.push((localContext as MergeInsertContext)._expression); - this.state = 2269; + this.state = 2632; + this.jsonPathInvocation(); + this.state = 2637; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { + if (_la === 89 || _la === 97 || _la === 273 || _la === 283) { { - { - this.state = 2265; - this.match(TrinoSqlParser.T__2); - this.state = 2266; - (localContext as MergeInsertContext)._expression = this.expression(); - (localContext as MergeInsertContext)._values.push((localContext as MergeInsertContext)._expression); - } + this.state = 2633; + this.jsonExistsErrorBehavior(); + this.state = 2634; + this.match(TrinoSqlParser.KW_ON); + this.state = 2635; + this.match(TrinoSqlParser.KW_ERROR); } - this.state = 2271; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); } - this.state = 2272; + + this.state = 2639; this.match(TrinoSqlParser.T__1); } break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public over(): OverContext { - let localContext = new OverContext(this.context, this.state); - this.enterRule(localContext, 144, TrinoSqlParser.RULE_over); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2276; - this.match(TrinoSqlParser.KW_OVER); - this.state = 2282; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_ADD: - case TrinoSqlParser.KW_ADMIN: - case TrinoSqlParser.KW_AFTER: - case TrinoSqlParser.KW_ALL: - case TrinoSqlParser.KW_ANALYZE: - case TrinoSqlParser.KW_ANY: - case TrinoSqlParser.KW_ARRAY: - case TrinoSqlParser.KW_ASC: - case TrinoSqlParser.KW_AT: - case TrinoSqlParser.KW_AUTHORIZATION: - case TrinoSqlParser.KW_BERNOULLI: - case TrinoSqlParser.KW_CALL: - case TrinoSqlParser.KW_CASCADE: - case TrinoSqlParser.KW_CATALOGS: - case TrinoSqlParser.KW_COLUMN: - case TrinoSqlParser.KW_COLUMNS: - case TrinoSqlParser.KW_COMMENT: - case TrinoSqlParser.KW_COMMIT: - case TrinoSqlParser.KW_COMMITTED: - case TrinoSqlParser.KW_CURRENT: - case TrinoSqlParser.KW_DATA: - case TrinoSqlParser.KW_DATE: - case TrinoSqlParser.KW_DAY: - case TrinoSqlParser.KW_DEFAULT: - case TrinoSqlParser.KW_DEFINER: - case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: - case TrinoSqlParser.KW_DISTRIBUTED: - case TrinoSqlParser.KW_DOUBLE: - case TrinoSqlParser.KW_EMPTY: - case TrinoSqlParser.KW_EXCLUDING: - case TrinoSqlParser.KW_EXPLAIN: - case TrinoSqlParser.KW_FETCH: - case TrinoSqlParser.KW_FILTER: - case TrinoSqlParser.KW_FINAL: - case TrinoSqlParser.KW_FIRST: - case TrinoSqlParser.KW_FOLLOWING: - case TrinoSqlParser.KW_FORMAT: - case TrinoSqlParser.KW_FUNCTIONS: - case TrinoSqlParser.KW_GRANT: - case TrinoSqlParser.KW_GRANTED: - case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: - case TrinoSqlParser.KW_GRAPHVIZ: - case TrinoSqlParser.KW_GROUPS: - case TrinoSqlParser.KW_HOUR: - case TrinoSqlParser.KW_IF: - case TrinoSqlParser.KW_IGNORE: - case TrinoSqlParser.KW_INCLUDING: - case TrinoSqlParser.KW_INITIAL: - case TrinoSqlParser.KW_INPUT: - case TrinoSqlParser.KW_INTERVAL: - case TrinoSqlParser.KW_INVOKER: - case TrinoSqlParser.KW_IO: - case TrinoSqlParser.KW_ISOLATION: - case TrinoSqlParser.KW_JSON: - case TrinoSqlParser.KW_LAST: - case TrinoSqlParser.KW_LATERAL: - case TrinoSqlParser.KW_LEVEL: - case TrinoSqlParser.KW_LIMIT: - case TrinoSqlParser.KW_LOCAL: - case TrinoSqlParser.KW_LOGICAL: - case TrinoSqlParser.KW_MAP: - case TrinoSqlParser.KW_MATCH: - case TrinoSqlParser.KW_MATCHED: - case TrinoSqlParser.KW_MATCHES: - case TrinoSqlParser.KW_MATCH_RECOGNIZE: - case TrinoSqlParser.KW_MATERIALIZED: - case TrinoSqlParser.KW_MEASURES: - case TrinoSqlParser.KW_MERGE: - case TrinoSqlParser.KW_MINUTE: - case TrinoSqlParser.KW_MONTH: - case TrinoSqlParser.KW_NEXT: - case TrinoSqlParser.KW_NFC: - case TrinoSqlParser.KW_NFD: - case TrinoSqlParser.KW_NFKC: - case TrinoSqlParser.KW_NFKD: - case TrinoSqlParser.KW_NO: - case TrinoSqlParser.KW_NONE: - case TrinoSqlParser.KW_NULLIF: - case TrinoSqlParser.KW_NULLS: - case TrinoSqlParser.KW_OFFSET: - case TrinoSqlParser.KW_OMIT: - case TrinoSqlParser.KW_ONE: - case TrinoSqlParser.KW_ONLY: - case TrinoSqlParser.KW_OPTION: - case TrinoSqlParser.KW_ORDINALITY: - case TrinoSqlParser.KW_OUTPUT: - case TrinoSqlParser.KW_OVER: - case TrinoSqlParser.KW_PARTITION: - case TrinoSqlParser.KW_PARTITIONS: - case TrinoSqlParser.KW_PAST: - case TrinoSqlParser.KW_PATH: - case TrinoSqlParser.KW_PATTERN: - case TrinoSqlParser.KW_PER: - case TrinoSqlParser.KW_PERMUTE: - case TrinoSqlParser.KW_POSITION: - case TrinoSqlParser.KW_PRECEDING: - case TrinoSqlParser.KW_PRECISION: - case TrinoSqlParser.KW_PRIVILEGES: - case TrinoSqlParser.KW_PROPERTIES: - case TrinoSqlParser.KW_RANGE: - case TrinoSqlParser.KW_READ: - case TrinoSqlParser.KW_REFRESH: - case TrinoSqlParser.KW_RENAME: - case TrinoSqlParser.KW_REPEATABLE: - case TrinoSqlParser.KW_REPLACE: - case TrinoSqlParser.KW_RESET: - case TrinoSqlParser.KW_RESPECT: - case TrinoSqlParser.KW_RESTRICT: - case TrinoSqlParser.KW_REVOKE: - case TrinoSqlParser.KW_ROLE: - case TrinoSqlParser.KW_ROLES: - case TrinoSqlParser.KW_ROLLBACK: - case TrinoSqlParser.KW_ROW: - case TrinoSqlParser.KW_ROWS: - case TrinoSqlParser.KW_RUNNING: - case TrinoSqlParser.KW_SCHEMA: - case TrinoSqlParser.KW_SCHEMAS: - case TrinoSqlParser.KW_SECOND: - case TrinoSqlParser.KW_SECURITY: - case TrinoSqlParser.KW_SEEK: - case TrinoSqlParser.KW_SERIALIZABLE: - case TrinoSqlParser.KW_SESSION: - case TrinoSqlParser.KW_SET: - case TrinoSqlParser.KW_SETS: - case TrinoSqlParser.KW_SHOW: - case TrinoSqlParser.KW_SOME: - case TrinoSqlParser.KW_START: - case TrinoSqlParser.KW_STATS: - case TrinoSqlParser.KW_SUBSET: - case TrinoSqlParser.KW_SUBSTRING: - case TrinoSqlParser.KW_SYSTEM: - case TrinoSqlParser.KW_TABLES: - case TrinoSqlParser.KW_TABLESAMPLE: - case TrinoSqlParser.KW_TEXT: - case TrinoSqlParser.KW_TIES: - case TrinoSqlParser.KW_TIME: - case TrinoSqlParser.KW_TIMESTAMP: - case TrinoSqlParser.KW_TO: - case TrinoSqlParser.KW_TRANSACTION: - case TrinoSqlParser.KW_TRUNCATE: - case TrinoSqlParser.KW_TRY_CAST: - case TrinoSqlParser.KW_TYPE: - case TrinoSqlParser.KW_UNBOUNDED: - case TrinoSqlParser.KW_UNCOMMITTED: - case TrinoSqlParser.KW_UNMATCHED: - case TrinoSqlParser.KW_UPDATE: - case TrinoSqlParser.KW_USE: - case TrinoSqlParser.KW_USER: - case TrinoSqlParser.KW_VALIDATE: - case TrinoSqlParser.KW_VERBOSE: - case TrinoSqlParser.KW_VIEW: - case TrinoSqlParser.KW_WINDOW: - case TrinoSqlParser.KW_WITHOUT: - case TrinoSqlParser.KW_WORK: - case TrinoSqlParser.KW_WRITE: - case TrinoSqlParser.KW_YEAR: - case TrinoSqlParser.KW_ZONE: - case TrinoSqlParser.IDENTIFIER: - case TrinoSqlParser.DIGIT_IDENTIFIER: - case TrinoSqlParser.QUOTED_IDENTIFIER: - case TrinoSqlParser.BACKQUOTED_IDENTIFIER: - { - this.state = 2277; - localContext._windowName = this.identifier(); - } - break; - case TrinoSqlParser.T__0: + case 44: { - this.state = 2278; + localContext = new JsonValueContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2641; + this.match(TrinoSqlParser.KW_JSON_VALUE); + this.state = 2642; this.match(TrinoSqlParser.T__0); - this.state = 2279; - this.windowSpecification(); - this.state = 2280; + this.state = 2643; + this.jsonPathInvocation(); + this.state = 2646; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 231) { + { + this.state = 2644; + this.match(TrinoSqlParser.KW_RETURNING); + this.state = 2645; + this.type_(0); + } + } + + this.state = 2652; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 337, this.context) ) { + case 1: + { + this.state = 2648; + (localContext as JsonValueContext)._emptyBehavior = this.jsonValueBehavior(); + this.state = 2649; + this.match(TrinoSqlParser.KW_ON); + this.state = 2650; + this.match(TrinoSqlParser.KW_EMPTY); + } + break; + } + this.state = 2658; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 70 || _la === 89 || _la === 183) { + { + this.state = 2654; + (localContext as JsonValueContext)._errorBehavior = this.jsonValueBehavior(); + this.state = 2655; + this.match(TrinoSqlParser.KW_ON); + this.state = 2656; + this.match(TrinoSqlParser.KW_ERROR); + } + } + + this.state = 2660; this.match(TrinoSqlParser.T__1); } break; - default: - throw new antlr.NoViableAltException(this); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public windowFrame(): WindowFrameContext { - let localContext = new WindowFrameContext(this.context, this.state); - this.enterRule(localContext, 146, TrinoSqlParser.RULE_windowFrame); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2293; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 134) { + case 45: { - this.state = 2284; - this.match(TrinoSqlParser.KW_MEASURES); - this.state = 2285; - this.measureDefinition(); - this.state = 2290; + localContext = new JsonQueryContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2662; + this.match(TrinoSqlParser.KW_JSON_QUERY); + this.state = 2663; + this.match(TrinoSqlParser.T__0); + this.state = 2664; + this.jsonPathInvocation(); + this.state = 2671; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { - { + if (_la === 231) { { - this.state = 2286; - this.match(TrinoSqlParser.T__2); - this.state = 2287; - this.measureDefinition(); - } - } - this.state = 2292; + this.state = 2665; + this.match(TrinoSqlParser.KW_RETURNING); + this.state = 2666; + this.type_(0); + this.state = 2669; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); + if (_la === 104) { + { + this.state = 2667; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 2668; + this.jsonRepresentation(); + } + } + + } } + + this.state = 2676; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 304 || _la === 306) { + { + this.state = 2673; + this.jsonQueryWrapperBehavior(); + this.state = 2674; + this.match(TrinoSqlParser.KW_WRAPPER); + } } - } - this.state = 2295; - this.frameExtent(); - this.state = 2299; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 19) { - { - this.state = 2296; - this.match(TrinoSqlParser.KW_AFTER); - this.state = 2297; - this.match(TrinoSqlParser.KW_MATCH); - this.state = 2298; - this.skipTo(); - } - } - - this.state = 2302; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 105 || _la === 199) { - { - this.state = 2301; + this.state = 2685; + this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if(!(_la === 105 || _la === 199)) { - this.errorHandler.recoverInline(this); + if (_la === 144 || _la === 189) { + { + this.state = 2678; + _la = this.tokenStream.LA(1); + if(!(_la === 144 || _la === 189)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + this.state = 2679; + this.match(TrinoSqlParser.KW_QUOTES); + this.state = 2683; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 190) { + { + this.state = 2680; + this.match(TrinoSqlParser.KW_ON); + this.state = 2681; + this.match(TrinoSqlParser.KW_SCALAR); + this.state = 2682; + this.match(TrinoSqlParser.KW_TEXT_STRING); + } + } + + } } - else { - this.errorHandler.reportMatch(this); - this.consume(); + + this.state = 2691; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 344, this.context) ) { + case 1: + { + this.state = 2687; + (localContext as JsonQueryContext)._emptyBehavior = this.jsonQueryBehavior(); + this.state = 2688; + this.match(TrinoSqlParser.KW_ON); + this.state = 2689; + this.match(TrinoSqlParser.KW_EMPTY); + } + break; } + this.state = 2697; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 85 || _la === 89 || _la === 183) { + { + this.state = 2693; + (localContext as JsonQueryContext)._errorBehavior = this.jsonQueryBehavior(); + this.state = 2694; + this.match(TrinoSqlParser.KW_ON); + this.state = 2695; + this.match(TrinoSqlParser.KW_ERROR); + } } - } - this.state = 2309; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 167) { - { - this.state = 2304; - this.match(TrinoSqlParser.KW_PATTERN); - this.state = 2305; - this.match(TrinoSqlParser.T__0); - this.state = 2306; - this.rowPattern(0); - this.state = 2307; + this.state = 2699; this.match(TrinoSqlParser.T__1); } - } - - this.state = 2320; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 209) { + break; + case 46: { - this.state = 2311; - this.match(TrinoSqlParser.KW_SUBSET); - this.state = 2312; - this.subsetDefinition(); - this.state = 2317; + localContext = new JsonObjectContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2701; + this.match(TrinoSqlParser.KW_JSON_OBJECT); + this.state = 2702; + this.match(TrinoSqlParser.T__0); + this.state = 2731; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 351, this.context) ) { + case 1: + { + this.state = 2703; + this.jsonObjectMember(); + this.state = 2708; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2704; + this.match(TrinoSqlParser.T__2); + this.state = 2705; + this.jsonObjectMember(); + } + } + this.state = 2710; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2717; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_NULL: + { + this.state = 2711; + this.match(TrinoSqlParser.KW_NULL); + this.state = 2712; + this.match(TrinoSqlParser.KW_ON); + this.state = 2713; + this.match(TrinoSqlParser.KW_NULL); + } + break; + case TrinoSqlParser.KW_ABSENT: + { + this.state = 2714; + this.match(TrinoSqlParser.KW_ABSENT); + this.state = 2715; + this.match(TrinoSqlParser.KW_ON); + this.state = 2716; + this.match(TrinoSqlParser.KW_NULL); + } + break; + case TrinoSqlParser.T__1: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_WITH: + case TrinoSqlParser.KW_WITHOUT: + break; + default: + break; + } + this.state = 2729; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_WITH: + { + this.state = 2719; + this.match(TrinoSqlParser.KW_WITH); + this.state = 2720; + this.match(TrinoSqlParser.KW_UNIQUE); + this.state = 2722; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 146) { + { + this.state = 2721; + this.match(TrinoSqlParser.KW_KEYS); + } + } + + } + break; + case TrinoSqlParser.KW_WITHOUT: + { + this.state = 2724; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 2725; + this.match(TrinoSqlParser.KW_UNIQUE); + this.state = 2727; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 146) { + { + this.state = 2726; + this.match(TrinoSqlParser.KW_KEYS); + } + } + + } + break; + case TrinoSqlParser.T__1: + case TrinoSqlParser.KW_RETURNING: + break; + default: + break; + } + } + break; + } + this.state = 2739; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { + if (_la === 231) { { + this.state = 2733; + this.match(TrinoSqlParser.KW_RETURNING); + this.state = 2734; + this.type_(0); + this.state = 2737; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 104) { + { + this.state = 2735; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 2736; + this.jsonRepresentation(); + } + } + + } + } + + this.state = 2741; + this.match(TrinoSqlParser.T__1); + } + break; + case 47: + { + localContext = new JsonArrayContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2742; + this.match(TrinoSqlParser.KW_JSON_ARRAY); + this.state = 2743; + this.match(TrinoSqlParser.T__0); + this.state = 2760; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 356, this.context) ) { + case 1: { - this.state = 2313; - this.match(TrinoSqlParser.T__2); - this.state = 2314; - this.subsetDefinition(); + this.state = 2744; + this.jsonValueExpression(); + this.state = 2749; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2745; + this.match(TrinoSqlParser.T__2); + this.state = 2746; + this.jsonValueExpression(); + } + } + this.state = 2751; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2758; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_NULL: + { + this.state = 2752; + this.match(TrinoSqlParser.KW_NULL); + this.state = 2753; + this.match(TrinoSqlParser.KW_ON); + this.state = 2754; + this.match(TrinoSqlParser.KW_NULL); + } + break; + case TrinoSqlParser.KW_ABSENT: + { + this.state = 2755; + this.match(TrinoSqlParser.KW_ABSENT); + this.state = 2756; + this.match(TrinoSqlParser.KW_ON); + this.state = 2757; + this.match(TrinoSqlParser.KW_NULL); + } + break; + case TrinoSqlParser.T__1: + case TrinoSqlParser.KW_RETURNING: + break; + default: + break; } } - this.state = 2319; + break; + } + this.state = 2768; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 231) { + { + this.state = 2762; + this.match(TrinoSqlParser.KW_RETURNING); + this.state = 2763; + this.type_(0); + this.state = 2766; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); + if (_la === 104) { + { + this.state = 2764; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 2765; + this.jsonRepresentation(); + } + } + + } + } + + this.state = 2770; + this.match(TrinoSqlParser.T__1); + } + break; + } + this.context!.stop = this.tokenStream.LT(-1); + this.state = 2783; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 361, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + this.state = 2781; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 360, this.context) ) { + case 1: + { + localContext = new SubscriptContext(new PrimaryExpressionContext(parentContext, parentState)); + (localContext as SubscriptContext)._value = previousContext; + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_primaryExpression); + this.state = 2773; + if (!(this.precpred(this.context, 24))) { + throw this.createFailedPredicateException("this.precpred(this.context, 24)"); + } + this.state = 2774; + this.match(TrinoSqlParser.T__7); + this.state = 2775; + (localContext as SubscriptContext)._index = this.valueExpression(0); + this.state = 2776; + this.match(TrinoSqlParser.T__8); + } + break; + case 2: + { + localContext = new DereferenceContext(new PrimaryExpressionContext(parentContext, parentState)); + (localContext as DereferenceContext)._base = previousContext; + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_primaryExpression); + this.state = 2778; + if (!(this.precpred(this.context, 22))) { + throw this.createFailedPredicateException("this.precpred(this.context, 22)"); + } + this.state = 2779; + this.match(TrinoSqlParser.T__3); + this.state = 2780; + (localContext as DereferenceContext)._fieldName = this.identifier(); + } + break; + } + } } + this.state = 2785; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 361, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(parentContext); + } + return localContext; + } + public jsonPathInvocation(): JsonPathInvocationContext { + let localContext = new JsonPathInvocationContext(this.context, this.state); + this.enterRule(localContext, 146, TrinoSqlParser.RULE_jsonPathInvocation); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2786; + this.jsonValueExpression(); + this.state = 2787; + this.match(TrinoSqlParser.T__2); + this.state = 2788; + localContext._path = this.string_(); + this.state = 2791; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 28) { + { + this.state = 2789; + this.match(TrinoSqlParser.KW_AS); + this.state = 2790; + localContext._pathName = this.identifier(); } } - this.state = 2331; + this.state = 2802; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - if (_la === 65) { + if (_la === 203) { { - this.state = 2322; - this.match(TrinoSqlParser.KW_DEFINE); - this.state = 2323; - this.variableDefinition(); - this.state = 2328; + this.state = 2793; + this.match(TrinoSqlParser.KW_PASSING); + this.state = 2794; + this.jsonArgument(); + this.state = 2799; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); while (_la === 3) { { { - this.state = 2324; + this.state = 2795; this.match(TrinoSqlParser.T__2); - this.state = 2325; - this.variableDefinition(); + this.state = 2796; + this.jsonArgument(); } } - this.state = 2330; + this.state = 2801; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); } @@ -9668,85 +10900,27 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public frameExtent(): FrameExtentContext { - let localContext = new FrameExtentContext(this.context, this.state); - this.enterRule(localContext, 148, TrinoSqlParser.RULE_frameExtent); + public jsonValueExpression(): JsonValueExpressionContext { + let localContext = new JsonValueExpressionContext(this.context, this.state); + this.enterRule(localContext, 148, TrinoSqlParser.RULE_jsonValueExpression); + let _la: number; try { - this.state = 2357; + this.enterOuterAlt(localContext, 1); + { + this.state = 2804; + this.expression(); + this.state = 2807; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 305, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 104) { { - this.state = 2333; - localContext._frameType = this.match(TrinoSqlParser.KW_RANGE); - this.state = 2334; - localContext._frameStart = this.frameBound(); + this.state = 2805; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 2806; + this.jsonRepresentation(); } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2335; - localContext._frameType = this.match(TrinoSqlParser.KW_ROWS); - this.state = 2336; - localContext._frameStart = this.frameBound(); - } - break; - case 3: - this.enterOuterAlt(localContext, 3); - { - this.state = 2337; - localContext._frameType = this.match(TrinoSqlParser.KW_GROUPS); - this.state = 2338; - localContext._frameStart = this.frameBound(); - } - break; - case 4: - this.enterOuterAlt(localContext, 4); - { - this.state = 2339; - localContext._frameType = this.match(TrinoSqlParser.KW_RANGE); - this.state = 2340; - this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 2341; - localContext._frameStart = this.frameBound(); - this.state = 2342; - this.match(TrinoSqlParser.KW_AND); - this.state = 2343; - localContext._end = this.frameBound(); - } - break; - case 5: - this.enterOuterAlt(localContext, 5); - { - this.state = 2345; - localContext._frameType = this.match(TrinoSqlParser.KW_ROWS); - this.state = 2346; - this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 2347; - localContext._frameStart = this.frameBound(); - this.state = 2348; - this.match(TrinoSqlParser.KW_AND); - this.state = 2349; - localContext._end = this.frameBound(); - } - break; - case 6: - this.enterOuterAlt(localContext, 6); - { - this.state = 2351; - localContext._frameType = this.match(TrinoSqlParser.KW_GROUPS); - this.state = 2352; - this.match(TrinoSqlParser.KW_BETWEEN); - this.state = 2353; - localContext._frameStart = this.frameBound(); - this.state = 2354; - this.match(TrinoSqlParser.KW_AND); - this.state = 2355; - localContext._end = this.frameBound(); - } - break; + } + } } catch (re) { @@ -9763,62 +10937,34 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public frameBound(): FrameBoundContext { - let localContext = new FrameBoundContext(this.context, this.state); - this.enterRule(localContext, 150, TrinoSqlParser.RULE_frameBound); + public jsonRepresentation(): JsonRepresentationContext { + let localContext = new JsonRepresentationContext(this.context, this.state); + this.enterRule(localContext, 150, TrinoSqlParser.RULE_jsonRepresentation); let _la: number; try { - this.state = 2368; + this.enterOuterAlt(localContext, 1); + { + this.state = 2809; + this.match(TrinoSqlParser.KW_JSON); + this.state = 2812; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 306, this.context) ) { - case 1: - localContext = new UnboundedFrameContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2359; - this.match(TrinoSqlParser.KW_UNBOUNDED); - this.state = 2360; - (localContext as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_PRECEDING); - } - break; - case 2: - localContext = new UnboundedFrameContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 2361; - this.match(TrinoSqlParser.KW_UNBOUNDED); - this.state = 2362; - (localContext as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_FOLLOWING); - } - break; - case 3: - localContext = new CurrentRowBoundContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2363; - this.match(TrinoSqlParser.KW_CURRENT); - this.state = 2364; - this.match(TrinoSqlParser.KW_ROW); - } - break; - case 4: - localContext = new BoundedFrameContext(localContext); - this.enterOuterAlt(localContext, 4); + _la = this.tokenStream.LA(1); + if (_la === 87) { { - this.state = 2365; - this.expression(); - this.state = 2366; - (localContext as BoundedFrameContext)._boundType = this.tokenStream.LT(1); + this.state = 2810; + this.match(TrinoSqlParser.KW_ENCODING); + this.state = 2811; _la = this.tokenStream.LA(1); - if(!(_la === 85 || _la === 171)) { - (localContext as BoundedFrameContext)._boundType = this.errorHandler.recoverInline(this); + if(!(((((_la - 291)) & ~0x1F) === 0 && ((1 << (_la - 291)) & 7) !== 0))) { + this.errorHandler.recoverInline(this); } else { this.errorHandler.reportMatch(this); this.consume(); } } - break; + } + } } catch (re) { @@ -9835,88 +10981,49 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - - public rowPattern(): RowPatternContext; - public rowPattern(_p: number): RowPatternContext; - public rowPattern(_p?: number): RowPatternContext { - if (_p === undefined) { - _p = 0; - } - - let parentContext = this.context; - let parentState = this.state; - let localContext = new RowPatternContext(this.context, parentState); - let previousContext = localContext; - let _startState = 152; - this.enterRecursionRule(localContext, 152, TrinoSqlParser.RULE_rowPattern, _p); + public jsonArgument(): JsonArgumentContext { + let localContext = new JsonArgumentContext(this.context, this.state); + this.enterRule(localContext, 152, TrinoSqlParser.RULE_jsonArgument); try { - let alternative: number; this.enterOuterAlt(localContext, 1); { - { - localContext = new QuantifiedPrimaryContext(localContext); - this.context = localContext; - previousContext = localContext; - - this.state = 2371; - this.patternPrimary(); - this.state = 2373; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 307, this.context) ) { - case 1: - { - this.state = 2372; - this.patternQuantifier(); - } - break; + this.state = 2814; + this.jsonValueExpression(); + this.state = 2815; + this.match(TrinoSqlParser.KW_AS); + this.state = 2816; + this.identifier(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; } + } + finally { + this.exitRule(); + } + return localContext; + } + public jsonExistsErrorBehavior(): JsonExistsErrorBehaviorContext { + let localContext = new JsonExistsErrorBehaviorContext(this.context, this.state); + this.enterRule(localContext, 154, TrinoSqlParser.RULE_jsonExistsErrorBehavior); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 2818; + _la = this.tokenStream.LA(1); + if(!(_la === 89 || _la === 97 || _la === 273 || _la === 283)) { + this.errorHandler.recoverInline(this); } - this.context!.stop = this.tokenStream.LT(-1); - this.state = 2382; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 309, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - if (this._parseListeners != null) { - this.triggerExitRuleEvent(); - } - previousContext = localContext; - { - this.state = 2380; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 308, this.context) ) { - case 1: - { - localContext = new PatternConcatenationContext(new RowPatternContext(parentContext, parentState)); - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_rowPattern); - this.state = 2375; - if (!(this.precpred(this.context, 2))) { - throw this.createFailedPredicateException("this.precpred(this.context, 2)"); - } - this.state = 2376; - this.rowPattern(3); - } - break; - case 2: - { - localContext = new PatternAlternationContext(new RowPatternContext(parentContext, parentState)); - this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_rowPattern); - this.state = 2377; - if (!(this.precpred(this.context, 1))) { - throw this.createFailedPredicateException("this.precpred(this.context, 1)"); - } - this.state = 2378; - this.match(TrinoSqlParser.T__8); - this.state = 2379; - this.rowPattern(2); - } - break; - } - } - } - this.state = 2384; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 309, this.context); + else { + this.errorHandler.reportMatch(this); + this.consume(); } } } @@ -9930,106 +11037,119 @@ export class TrinoSqlParser extends SQLParserBase { } } finally { - this.unrollRecursionContexts(parentContext); + this.exitRule(); } return localContext; } - public patternPrimary(): PatternPrimaryContext { - let localContext = new PatternPrimaryContext(this.context, this.state); - this.enterRule(localContext, 154, TrinoSqlParser.RULE_patternPrimary); - let _la: number; + public jsonValueBehavior(): JsonValueBehaviorContext { + let localContext = new JsonValueBehaviorContext(this.context, this.state); + this.enterRule(localContext, 156, TrinoSqlParser.RULE_jsonValueBehavior); try { - this.state = 2410; + this.state = 2824; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 311, this.context) ) { - case 1: - localContext = new PatternVariableContext(localContext); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ERROR: this.enterOuterAlt(localContext, 1); { - this.state = 2385; - this.identifier(); + this.state = 2820; + this.match(TrinoSqlParser.KW_ERROR); } break; - case 2: - localContext = new EmptyPatternContext(localContext); + case TrinoSqlParser.KW_NULL: this.enterOuterAlt(localContext, 2); { - this.state = 2386; - this.match(TrinoSqlParser.T__0); - this.state = 2387; - this.match(TrinoSqlParser.T__1); + this.state = 2821; + this.match(TrinoSqlParser.KW_NULL); } break; - case 3: - localContext = new PatternPermutationContext(localContext); + case TrinoSqlParser.KW_DEFAULT: this.enterOuterAlt(localContext, 3); { - this.state = 2388; - this.match(TrinoSqlParser.KW_PERMUTE); - this.state = 2389; - this.match(TrinoSqlParser.T__0); - this.state = 2390; - this.rowPattern(0); - this.state = 2395; + this.state = 2822; + this.match(TrinoSqlParser.KW_DEFAULT); + this.state = 2823; + this.expression(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public jsonQueryWrapperBehavior(): JsonQueryWrapperBehaviorContext { + let localContext = new JsonQueryWrapperBehaviorContext(this.context, this.state); + this.enterRule(localContext, 158, TrinoSqlParser.RULE_jsonQueryWrapperBehavior); + let _la: number; + try { + this.state = 2837; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_WITHOUT: + this.enterOuterAlt(localContext, 1); + { + this.state = 2826; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 2828; this.errorHandler.sync(this); _la = this.tokenStream.LA(1); - while (_la === 3) { + if (_la === 27) { { - { - this.state = 2391; - this.match(TrinoSqlParser.T__2); - this.state = 2392; - this.rowPattern(0); - } + this.state = 2827; + this.match(TrinoSqlParser.KW_ARRAY); } - this.state = 2397; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); } - this.state = 2398; - this.match(TrinoSqlParser.T__1); + } break; - case 4: - localContext = new GroupedPatternContext(localContext); - this.enterOuterAlt(localContext, 4); + case TrinoSqlParser.KW_WITH: + this.enterOuterAlt(localContext, 2); { - this.state = 2400; - this.match(TrinoSqlParser.T__0); - this.state = 2401; - this.rowPattern(0); - this.state = 2402; - this.match(TrinoSqlParser.T__1); - } - break; - case 5: - localContext = new PartitionStartAnchorContext(localContext); - this.enterOuterAlt(localContext, 5); - { - this.state = 2404; - this.match(TrinoSqlParser.T__9); + this.state = 2830; + this.match(TrinoSqlParser.KW_WITH); + this.state = 2832; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 49 || _la === 280) { + { + this.state = 2831; + _la = this.tokenStream.LA(1); + if(!(_la === 49 || _la === 280)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } } - break; - case 6: - localContext = new PartitionEndAnchorContext(localContext); - this.enterOuterAlt(localContext, 6); - { - this.state = 2405; - this.match(TrinoSqlParser.T__10); + + this.state = 2835; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 27) { + { + this.state = 2834; + this.match(TrinoSqlParser.KW_ARRAY); + } } - break; - case 7: - localContext = new ExcludedPatternContext(localContext); - this.enterOuterAlt(localContext, 7); - { - this.state = 2406; - this.match(TrinoSqlParser.T__11); - this.state = 2407; - this.rowPattern(0); - this.state = 2408; - this.match(TrinoSqlParser.T__12); + } break; + default: + throw new antlr.NoViableAltException(this); } } catch (re) { @@ -10046,130 +11166,98 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public patternQuantifier(): PatternQuantifierContext { - let localContext = new PatternQuantifierContext(this.context, this.state); - this.enterRule(localContext, 156, TrinoSqlParser.RULE_patternQuantifier); - let _la: number; + public jsonQueryBehavior(): JsonQueryBehaviorContext { + let localContext = new JsonQueryBehaviorContext(this.context, this.state); + this.enterRule(localContext, 160, TrinoSqlParser.RULE_jsonQueryBehavior); try { - this.state = 2442; + this.state = 2845; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 319, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 372, this.context) ) { case 1: - localContext = new ZeroOrMoreQuantifierContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2412; - this.match(TrinoSqlParser.ASTERISK); - this.state = 2414; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 312, this.context) ) { - case 1: - { - this.state = 2413; - (localContext as ZeroOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); - } - break; - } + this.state = 2839; + this.match(TrinoSqlParser.KW_ERROR); } break; case 2: - localContext = new OneOrMoreQuantifierContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2416; - this.match(TrinoSqlParser.PLUS); - this.state = 2418; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 313, this.context) ) { - case 1: - { - this.state = 2417; - (localContext as OneOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); - } - break; - } + this.state = 2840; + this.match(TrinoSqlParser.KW_NULL); } break; case 3: - localContext = new ZeroOrOneQuantifierContext(localContext); this.enterOuterAlt(localContext, 3); { - this.state = 2420; - this.match(TrinoSqlParser.QUESTION_MARK); - this.state = 2422; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 314, this.context) ) { - case 1: - { - this.state = 2421; - (localContext as ZeroOrOneQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); - } - break; - } + this.state = 2841; + this.match(TrinoSqlParser.KW_EMPTY); + this.state = 2842; + this.match(TrinoSqlParser.KW_ARRAY); } break; case 4: - localContext = new RangeQuantifierContext(localContext); this.enterOuterAlt(localContext, 4); { - this.state = 2424; - this.match(TrinoSqlParser.T__13); - this.state = 2425; - (localContext as RangeQuantifierContext)._exactly = this.match(TrinoSqlParser.INTEGER_VALUE); - this.state = 2426; - this.match(TrinoSqlParser.T__14); - this.state = 2428; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 315, this.context) ) { - case 1: - { - this.state = 2427; - (localContext as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); - } - break; - } + this.state = 2843; + this.match(TrinoSqlParser.KW_EMPTY); + this.state = 2844; + this.match(TrinoSqlParser.KW_OBJECT); } break; - case 5: - localContext = new RangeQuantifierContext(localContext); - this.enterOuterAlt(localContext, 5); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public jsonObjectMember(): JsonObjectMemberContext { + let localContext = new JsonObjectMemberContext(this.context, this.state); + this.enterRule(localContext, 162, TrinoSqlParser.RULE_jsonObjectMember); + try { + this.state = 2858; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 374, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); { - this.state = 2430; - this.match(TrinoSqlParser.T__13); - this.state = 2432; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 265) { - { - this.state = 2431; - (localContext as RangeQuantifierContext)._atLeast = this.match(TrinoSqlParser.INTEGER_VALUE); - } - } - - this.state = 2434; - this.match(TrinoSqlParser.T__2); - this.state = 2436; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 265) { - { - this.state = 2435; - (localContext as RangeQuantifierContext)._atMost = this.match(TrinoSqlParser.INTEGER_VALUE); - } - } - - this.state = 2438; - this.match(TrinoSqlParser.T__14); - this.state = 2440; + this.state = 2848; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 318, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 373, this.context) ) { case 1: { - this.state = 2439; - (localContext as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + this.state = 2847; + this.match(TrinoSqlParser.KW_KEY); } break; } + this.state = 2850; + this.expression(); + this.state = 2851; + this.match(TrinoSqlParser.KW_VALUE); + this.state = 2852; + this.jsonValueExpression(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 2854; + this.expression(); + this.state = 2855; + this.match(TrinoSqlParser.T__9); + this.state = 2856; + this.jsonValueExpression(); } break; } @@ -10188,18 +11276,22 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public updateAssignment(): UpdateAssignmentContext { - let localContext = new UpdateAssignmentContext(this.context, this.state); - this.enterRule(localContext, 158, TrinoSqlParser.RULE_updateAssignment); + public processingMode(): ProcessingModeContext { + let localContext = new ProcessingModeContext(this.context, this.state); + this.enterRule(localContext, 164, TrinoSqlParser.RULE_processingMode); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2444; - this.identifier(); - this.state = 2445; - this.match(TrinoSqlParser.EQ); - this.state = 2446; - this.expression(); + this.state = 2860; + _la = this.tokenStream.LA(1); + if(!(_la === 100 || _la === 241)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } } } catch (re) { @@ -10216,48 +11308,29 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public explainOption(): ExplainOptionContext { - let localContext = new ExplainOptionContext(this.context, this.state); - this.enterRule(localContext, 160, TrinoSqlParser.RULE_explainOption); - let _la: number; + public nullTreatment(): NullTreatmentContext { + let localContext = new NullTreatmentContext(this.context, this.state); + this.enterRule(localContext, 166, TrinoSqlParser.RULE_nullTreatment); try { - this.state = 2452; + this.state = 2866; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_FORMAT: - localContext = new ExplainFormatContext(localContext); + case TrinoSqlParser.KW_IGNORE: this.enterOuterAlt(localContext, 1); { - this.state = 2448; - this.match(TrinoSqlParser.KW_FORMAT); - this.state = 2449; - (localContext as ExplainFormatContext)._value = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 95 || _la === 117 || _la === 215)) { - (localContext as ExplainFormatContext)._value = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 2862; + this.match(TrinoSqlParser.KW_IGNORE); + this.state = 2863; + this.match(TrinoSqlParser.KW_NULLS); } break; - case TrinoSqlParser.KW_TYPE: - localContext = new ExplainTypeContext(localContext); + case TrinoSqlParser.KW_RESPECT: this.enterOuterAlt(localContext, 2); { - this.state = 2450; - this.match(TrinoSqlParser.KW_TYPE); - this.state = 2451; - (localContext as ExplainTypeContext)._value = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 67 || _la === 113 || _la === 127 || _la === 236)) { - (localContext as ExplainTypeContext)._value = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } + this.state = 2864; + this.match(TrinoSqlParser.KW_RESPECT); + this.state = 2865; + this.match(TrinoSqlParser.KW_NULLS); } break; default: @@ -10278,41 +11351,38 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public transactionMode(): TransactionModeContext { - let localContext = new TransactionModeContext(this.context, this.state); - this.enterRule(localContext, 162, TrinoSqlParser.RULE_transactionMode); - let _la: number; + public string_(): StringContext { + let localContext = new StringContext(this.context, this.state); + this.enterRule(localContext, 168, TrinoSqlParser.RULE_string); try { - this.state = 2459; + this.state = 2874; this.errorHandler.sync(this); switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.KW_ISOLATION: - localContext = new IsolationLevelContext(localContext); + case TrinoSqlParser.STRING: + localContext = new BasicStringLiteralContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2454; - this.match(TrinoSqlParser.KW_ISOLATION); - this.state = 2455; - this.match(TrinoSqlParser.KW_LEVEL); - this.state = 2456; - this.levelOfIsolation(); + this.state = 2868; + this.match(TrinoSqlParser.STRING); } break; - case TrinoSqlParser.KW_READ: - localContext = new TransactionAccessModeContext(localContext); + case TrinoSqlParser.UNICODE_STRING: + localContext = new UnicodeStringLiteralContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2457; - this.match(TrinoSqlParser.KW_READ); - this.state = 2458; - (localContext as TransactionAccessModeContext)._accessMode = this.tokenStream.LT(1); - _la = this.tokenStream.LA(1); - if(!(_la === 155 || _la === 246)) { - (localContext as TransactionAccessModeContext)._accessMode = this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); + this.state = 2869; + this.match(TrinoSqlParser.UNICODE_STRING); + this.state = 2872; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 376, this.context) ) { + case 1: + { + this.state = 2870; + this.match(TrinoSqlParser.KW_UESCAPE); + this.state = 2871; + this.match(TrinoSqlParser.STRING); + } + break; } } break; @@ -10334,49 +11404,35 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public levelOfIsolation(): LevelOfIsolationContext { - let localContext = new LevelOfIsolationContext(this.context, this.state); - this.enterRule(localContext, 164, TrinoSqlParser.RULE_levelOfIsolation); + public timeZoneSpecifier(): TimeZoneSpecifierContext { + let localContext = new TimeZoneSpecifierContext(this.context, this.state); + this.enterRule(localContext, 170, TrinoSqlParser.RULE_timeZoneSpecifier); try { - this.state = 2468; + this.state = 2882; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 322, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 378, this.context) ) { case 1: - localContext = new ReadUncommittedContext(localContext); + localContext = new TimeZoneIntervalContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2461; - this.match(TrinoSqlParser.KW_READ); - this.state = 2462; - this.match(TrinoSqlParser.KW_UNCOMMITTED); + this.state = 2876; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2877; + this.match(TrinoSqlParser.KW_ZONE); + this.state = 2878; + this.interval(); } break; case 2: - localContext = new ReadCommittedContext(localContext); + localContext = new TimeZoneStringContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2463; - this.match(TrinoSqlParser.KW_READ); - this.state = 2464; - this.match(TrinoSqlParser.KW_COMMITTED); - } - break; - case 3: - localContext = new RepeatableReadContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2465; - this.match(TrinoSqlParser.KW_REPEATABLE); - this.state = 2466; - this.match(TrinoSqlParser.KW_READ); - } - break; - case 4: - localContext = new SerializableContext(localContext); - this.enterOuterAlt(localContext, 4); - { - this.state = 2467; - this.match(TrinoSqlParser.KW_SERIALIZABLE); + this.state = 2879; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2880; + this.match(TrinoSqlParser.KW_ZONE); + this.state = 2881; + this.string_(); } break; } @@ -10395,76 +11451,22 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public callArgument(): CallArgumentContext { - let localContext = new CallArgumentContext(this.context, this.state); - this.enterRule(localContext, 166, TrinoSqlParser.RULE_callArgument); + public comparisonOperator(): ComparisonOperatorContext { + let localContext = new ComparisonOperatorContext(this.context, this.state); + this.enterRule(localContext, 172, TrinoSqlParser.RULE_comparisonOperator); + let _la: number; try { - this.state = 2475; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 323, this.context) ) { - case 1: - localContext = new PositionalArgumentContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2470; - this.expression(); - } - break; - case 2: - localContext = new NamedArgumentContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 2471; - this.identifier(); - this.state = 2472; - this.match(TrinoSqlParser.T__15); - this.state = 2473; - this.expression(); - } - break; + this.enterOuterAlt(localContext, 1); + { + this.state = 2884; + _la = this.tokenStream.LA(1); + if(!(((((_la - 312)) & ~0x1F) === 0 && ((1 << (_la - 312)) & 63) !== 0))) { + this.errorHandler.recoverInline(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - finally { - this.exitRule(); - } - return localContext; - } - public pathElement(): PathElementContext { - let localContext = new PathElementContext(this.context, this.state); - this.enterRule(localContext, 168, TrinoSqlParser.RULE_pathElement); - try { - this.state = 2482; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 324, this.context) ) { - case 1: - localContext = new QualifiedArgumentContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2477; - this.identifier(); - this.state = 2478; - this.match(TrinoSqlParser.T__3); - this.state = 2479; - this.identifier(); - } - break; - case 2: - localContext = new UnqualifiedArgumentContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 2481; - this.identifier(); - } - break; } } catch (re) { @@ -10481,30 +11483,21 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public pathSpecification(): PathSpecificationContext { - let localContext = new PathSpecificationContext(this.context, this.state); - this.enterRule(localContext, 170, TrinoSqlParser.RULE_pathSpecification); + public comparisonQuantifier(): ComparisonQuantifierContext { + let localContext = new ComparisonQuantifierContext(this.context, this.state); + this.enterRule(localContext, 174, TrinoSqlParser.RULE_comparisonQuantifier); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2484; - this.pathElement(); - this.state = 2489; - this.errorHandler.sync(this); + this.state = 2886; _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 2485; - this.match(TrinoSqlParser.T__2); - this.state = 2486; - this.pathElement(); - } - } - this.state = 2491; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); + if(!(_la === 22 || _la === 26 || _la === 254)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); } } } @@ -10522,16 +11515,16 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public privilege(): PrivilegeContext { - let localContext = new PrivilegeContext(this.context, this.state); - this.enterRule(localContext, 172, TrinoSqlParser.RULE_privilege); + public booleanValue(): BooleanValueContext { + let localContext = new BooleanValueContext(this.context, this.state); + this.enterRule(localContext, 176, TrinoSqlParser.RULE_booleanValue); let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2492; + this.state = 2888; _la = this.tokenStream.LA(1); - if(!(_la === 62 || _la === 108 || _la === 200 || _la === 232)) { + if(!(_la === 97 || _la === 273)) { this.errorHandler.recoverInline(this); } else { @@ -10554,28 +11547,50 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public tableOrViewName(): TableOrViewNameContext { - let localContext = new TableOrViewNameContext(this.context, this.state); - this.enterRule(localContext, 174, TrinoSqlParser.RULE_tableOrViewName); + public interval(): IntervalContext { + let localContext = new IntervalContext(this.context, this.state); + this.enterRule(localContext, 178, TrinoSqlParser.RULE_interval); + let _la: number; try { - this.state = 2496; + this.enterOuterAlt(localContext, 1); + { + this.state = 2890; + this.match(TrinoSqlParser.KW_INTERVAL); + this.state = 2892; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 326, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + _la = this.tokenStream.LA(1); + if (_la === 318 || _la === 319) { { - this.state = 2494; - this.tableName(); + this.state = 2891; + localContext._sign = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 318 || _la === 319)) { + localContext._sign = this.errorHandler.recoverInline(this); } - break; - case 2: - this.enterOuterAlt(localContext, 2); + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 2894; + this.string_(); + this.state = 2895; + localContext._from_ = this.intervalField(); + this.state = 2898; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 380, this.context) ) { + case 1: { - this.state = 2495; - this.viewName(); + this.state = 2896; + this.match(TrinoSqlParser.KW_TO); + this.state = 2897; + localContext._to = this.intervalField(); } break; } + } } catch (re) { if (re instanceof antlr.RecognitionException) { @@ -10591,38 +11606,22 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public tableName(): TableNameContext { - let localContext = new TableNameContext(this.context, this.state); - this.enterRule(localContext, 176, TrinoSqlParser.RULE_tableName); + public intervalField(): IntervalFieldContext { + let localContext = new IntervalFieldContext(this.context, this.state); + this.enterRule(localContext, 180, TrinoSqlParser.RULE_intervalField); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2498; - this.tablePath(); + this.state = 2900; + _la = this.tokenStream.LA(1); + if(!(_la === 67 || _la === 118 || _la === 170 || _la === 171 || _la === 245 || _la === 310)) { + this.errorHandler.recoverInline(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - finally { - this.exitRule(); - } - return localContext; - } - public tableNameCreate(): TableNameCreateContext { - let localContext = new TableNameCreateContext(this.context, this.state); - this.enterRule(localContext, 178, TrinoSqlParser.RULE_tableNameCreate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2500; - this.tablePath(); } } catch (re) { @@ -10639,38 +11638,22 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public viewName(): ViewNameContext { - let localContext = new ViewNameContext(this.context, this.state); - this.enterRule(localContext, 180, TrinoSqlParser.RULE_viewName); + public normalForm(): NormalFormContext { + let localContext = new NormalFormContext(this.context, this.state); + this.enterRule(localContext, 182, TrinoSqlParser.RULE_normalForm); + let _la: number; try { this.enterOuterAlt(localContext, 1); { - this.state = 2502; - this.viewPath(); + this.state = 2902; + _la = this.tokenStream.LA(1); + if(!(((((_la - 175)) & ~0x1F) === 0 && ((1 << (_la - 175)) & 15) !== 0))) { + this.errorHandler.recoverInline(this); } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + else { + this.errorHandler.reportMatch(this); + this.consume(); } - } - finally { - this.exitRule(); - } - return localContext; - } - public viewNameCreate(): ViewNameCreateContext { - let localContext = new ViewNameCreateContext(this.context, this.state); - this.enterRule(localContext, 182, TrinoSqlParser.RULE_viewNameCreate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2504; - this.viewPath(); } } catch (re) { @@ -10687,126 +11670,341 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public tablePath(): TablePathContext { - let localContext = new TablePathContext(this.context, this.state); - this.enterRule(localContext, 184, TrinoSqlParser.RULE_tablePath); + + public type_(): TypeContext; + public type_(_p: number): TypeContext; + public type_(_p?: number): TypeContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new TypeContext(this.context, parentState); + let previousContext = localContext; + let _startState = 184; + this.enterRecursionRule(localContext, 184, TrinoSqlParser.RULE_type, _p); + let _la: number; try { - this.state = 2517; + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 2995; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 327, this.context) ) { + switch (this.interpreter.adaptivePredict(this.tokenStream, 391, this.context) ) { case 1: - this.enterOuterAlt(localContext, 1); { - this.state = 2506; - localContext._table = this.identifier(); + localContext = new RowTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 2905; + this.match(TrinoSqlParser.KW_ROW); + this.state = 2906; + this.match(TrinoSqlParser.T__0); + this.state = 2907; + this.rowField(); + this.state = 2912; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2908; + this.match(TrinoSqlParser.T__2); + this.state = 2909; + this.rowField(); + } + } + this.state = 2914; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2915; + this.match(TrinoSqlParser.T__1); } break; case 2: - this.enterOuterAlt(localContext, 2); { - this.state = 2507; - localContext._schema = this.identifier(); - this.state = 2508; - this.match(TrinoSqlParser.T__3); - this.state = 2509; - localContext._table = this.identifier(); + localContext = new IntervalTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2917; + this.match(TrinoSqlParser.KW_INTERVAL); + this.state = 2918; + (localContext as IntervalTypeContext)._from_ = this.intervalField(); + this.state = 2921; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 382, this.context) ) { + case 1: + { + this.state = 2919; + this.match(TrinoSqlParser.KW_TO); + this.state = 2920; + (localContext as IntervalTypeContext)._to = this.intervalField(); + } + break; + } } break; case 3: - this.enterOuterAlt(localContext, 3); { - this.state = 2511; - localContext._catalog = this.identifier(); - this.state = 2512; - this.match(TrinoSqlParser.T__3); - this.state = 2513; - localContext._schema = this.identifier(); - this.state = 2514; - this.match(TrinoSqlParser.T__3); - this.state = 2515; - localContext._table = this.identifier(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public viewPath(): ViewPathContext { - let localContext = new ViewPathContext(this.context, this.state); - this.enterRule(localContext, 186, TrinoSqlParser.RULE_viewPath); - try { - this.state = 2530; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 328, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); + localContext = new DateTimeTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2923; + (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); + this.state = 2928; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 383, this.context) ) { + case 1: + { + this.state = 2924; + this.match(TrinoSqlParser.T__0); + this.state = 2925; + (localContext as DateTimeTypeContext)._precision = this.typeParameter(); + this.state = 2926; + this.match(TrinoSqlParser.T__1); + } + break; + } + this.state = 2933; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 384, this.context) ) { + case 1: + { + this.state = 2930; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 2931; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2932; + this.match(TrinoSqlParser.KW_ZONE); + } + break; + } + } + break; + case 4: { - this.state = 2519; - localContext._view = this.identifier(); + localContext = new DateTimeTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2935; + (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIMESTAMP); + this.state = 2940; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 1) { + { + this.state = 2936; + this.match(TrinoSqlParser.T__0); + this.state = 2937; + (localContext as DateTimeTypeContext)._precision = this.typeParameter(); + this.state = 2938; + this.match(TrinoSqlParser.T__1); + } + } + + this.state = 2942; + this.match(TrinoSqlParser.KW_WITH); + this.state = 2943; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2944; + this.match(TrinoSqlParser.KW_ZONE); } break; - case 2: - this.enterOuterAlt(localContext, 2); + case 5: { - this.state = 2520; - localContext._schema = this.identifier(); - this.state = 2521; - this.match(TrinoSqlParser.T__3); - this.state = 2522; - localContext._view = this.identifier(); + localContext = new DateTimeTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2945; + (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); + this.state = 2950; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 386, this.context) ) { + case 1: + { + this.state = 2946; + this.match(TrinoSqlParser.T__0); + this.state = 2947; + (localContext as DateTimeTypeContext)._precision = this.typeParameter(); + this.state = 2948; + this.match(TrinoSqlParser.T__1); + } + break; + } + this.state = 2955; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 387, this.context) ) { + case 1: + { + this.state = 2952; + this.match(TrinoSqlParser.KW_WITHOUT); + this.state = 2953; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2954; + this.match(TrinoSqlParser.KW_ZONE); + } + break; + } } break; - case 3: - this.enterOuterAlt(localContext, 3); + case 6: { - this.state = 2524; - localContext._catalog = this.identifier(); - this.state = 2525; - this.match(TrinoSqlParser.T__3); - this.state = 2526; - localContext._schema = this.identifier(); - this.state = 2527; - this.match(TrinoSqlParser.T__3); - this.state = 2528; - localContext._view = this.identifier(); + localContext = new DateTimeTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2957; + (localContext as DateTimeTypeContext)._base = this.match(TrinoSqlParser.KW_TIME); + this.state = 2962; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 1) { + { + this.state = 2958; + this.match(TrinoSqlParser.T__0); + this.state = 2959; + (localContext as DateTimeTypeContext)._precision = this.typeParameter(); + this.state = 2960; + this.match(TrinoSqlParser.T__1); + } + } + + this.state = 2964; + this.match(TrinoSqlParser.KW_WITH); + this.state = 2965; + this.match(TrinoSqlParser.KW_TIME); + this.state = 2966; + this.match(TrinoSqlParser.KW_ZONE); + } + break; + case 7: + { + localContext = new DoublePrecisionTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2967; + this.match(TrinoSqlParser.KW_DOUBLE); + this.state = 2968; + this.match(TrinoSqlParser.KW_PRECISION); + } + break; + case 8: + { + localContext = new LegacyArrayTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2969; + this.match(TrinoSqlParser.KW_ARRAY); + this.state = 2970; + this.match(TrinoSqlParser.LT); + this.state = 2971; + this.type_(0); + this.state = 2972; + this.match(TrinoSqlParser.GT); + } + break; + case 9: + { + localContext = new LegacyMapTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2974; + this.match(TrinoSqlParser.KW_MAP); + this.state = 2975; + this.match(TrinoSqlParser.LT); + this.state = 2976; + (localContext as LegacyMapTypeContext)._keyType = this.type_(0); + this.state = 2977; + this.match(TrinoSqlParser.T__2); + this.state = 2978; + (localContext as LegacyMapTypeContext)._valueType = this.type_(0); + this.state = 2979; + this.match(TrinoSqlParser.GT); + } + break; + case 10: + { + localContext = new GenericTypeContext(localContext); + this.context = localContext; + previousContext = localContext; + this.state = 2981; + this.identifier(); + this.state = 2993; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 390, this.context) ) { + case 1: + { + this.state = 2982; + this.match(TrinoSqlParser.T__0); + this.state = 2983; + this.typeParameter(); + this.state = 2988; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 2984; + this.match(TrinoSqlParser.T__2); + this.state = 2985; + this.typeParameter(); + } + } + this.state = 2990; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 2991; + this.match(TrinoSqlParser.T__1); + } + break; + } } break; } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; + this.context!.stop = this.tokenStream.LT(-1); + this.state = 3006; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 393, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + { + localContext = new ArrayTypeContext(new TypeContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_type); + this.state = 2997; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + } + this.state = 2998; + this.match(TrinoSqlParser.KW_ARRAY); + this.state = 3002; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 392, this.context) ) { + case 1: + { + this.state = 2999; + this.match(TrinoSqlParser.T__7); + this.state = 3000; + this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 3001; + this.match(TrinoSqlParser.T__8); + } + break; + } + } + } + } + this.state = 3008; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 393, this.context); } - } - finally { - this.exitRule(); - } - return localContext; - } - public schemaName(): SchemaNameContext { - let localContext = new SchemaNameContext(this.context, this.state); - this.enterRule(localContext, 188, TrinoSqlParser.RULE_schemaName); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2532; - this.schemaPath(); } } catch (re) { @@ -10819,18 +12017,33 @@ export class TrinoSqlParser extends SQLParserBase { } } finally { - this.exitRule(); + this.unrollRecursionContexts(parentContext); } return localContext; } - public schemaNameCreate(): SchemaNameCreateContext { - let localContext = new SchemaNameCreateContext(this.context, this.state); - this.enterRule(localContext, 190, TrinoSqlParser.RULE_schemaNameCreate); + public rowField(): RowFieldContext { + let localContext = new RowFieldContext(this.context, this.state); + this.enterRule(localContext, 186, TrinoSqlParser.RULE_rowField); try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2534; - this.schemaPath(); + this.state = 3013; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 394, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3009; + this.type_(0); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3010; + this.identifier(); + this.state = 3011; + this.type_(0); + } + break; } } catch (re) { @@ -10847,232 +12060,21 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public schemaPath(): SchemaPathContext { - let localContext = new SchemaPathContext(this.context, this.state); - this.enterRule(localContext, 192, TrinoSqlParser.RULE_schemaPath); + public typeParameter(): TypeParameterContext { + let localContext = new TypeParameterContext(this.context, this.state); + this.enterRule(localContext, 188, TrinoSqlParser.RULE_typeParameter); try { - this.state = 2541; + this.state = 3017; this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 329, this.context) ) { - case 1: + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.INTEGER_VALUE: this.enterOuterAlt(localContext, 1); { - this.state = 2536; - localContext._schema = this.identifier(); + this.state = 3015; + this.match(TrinoSqlParser.INTEGER_VALUE); } break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2537; - localContext._catalog = this.identifier(); - this.state = 2538; - this.match(TrinoSqlParser.T__3); - this.state = 2539; - localContext._schema = this.identifier(); - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public catalogName(): CatalogNameContext { - let localContext = new CatalogNameContext(this.context, this.state); - this.enterRule(localContext, 194, TrinoSqlParser.RULE_catalogName); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2543; - localContext._catalog = this.identifier(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public catalogNameCreate(): CatalogNameCreateContext { - let localContext = new CatalogNameCreateContext(this.context, this.state); - this.enterRule(localContext, 196, TrinoSqlParser.RULE_catalogNameCreate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2545; - localContext._catalog = this.identifier(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public functionName(): FunctionNameContext { - let localContext = new FunctionNameContext(this.context, this.state); - this.enterRule(localContext, 198, TrinoSqlParser.RULE_functionName); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2547; - this.qualifiedName(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public columnName(): ColumnNameContext { - let localContext = new ColumnNameContext(this.context, this.state); - this.enterRule(localContext, 200, TrinoSqlParser.RULE_columnName); - try { - this.state = 2551; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 330, this.context) ) { - case 1: - this.enterOuterAlt(localContext, 1); - { - this.state = 2549; - this.qualifiedName(); - } - break; - case 2: - this.enterOuterAlt(localContext, 2); - { - this.state = 2550; - if (!(this.shouldMatchEmpty())) { - throw this.createFailedPredicateException("this.shouldMatchEmpty()"); - } - } - break; - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public columnNameCreate(): ColumnNameCreateContext { - let localContext = new ColumnNameCreateContext(this.context, this.state); - this.enterRule(localContext, 202, TrinoSqlParser.RULE_columnNameCreate); - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2553; - this.identifier(); - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public qualifiedName(): QualifiedNameContext { - let localContext = new QualifiedNameContext(this.context, this.state); - this.enterRule(localContext, 204, TrinoSqlParser.RULE_qualifiedName); - try { - let alternative: number; - this.enterOuterAlt(localContext, 1); - { - this.state = 2555; - this.identifier(); - this.state = 2560; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 331, this.context); - while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { - if (alternative === 1) { - { - { - this.state = 2556; - this.match(TrinoSqlParser.T__3); - this.state = 2557; - this.identifier(); - } - } - } - this.state = 2562; - this.errorHandler.sync(this); - alternative = this.interpreter.adaptivePredict(this.tokenStream, 331, this.context); - } - } - } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localContext; - } - public grantor(): GrantorContext { - let localContext = new GrantorContext(this.context, this.state); - this.enterRule(localContext, 206, TrinoSqlParser.RULE_grantor); - try { - this.state = 2566; - this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ABSENT: case TrinoSqlParser.KW_ADD: case TrinoSqlParser.KW_ADMIN: case TrinoSqlParser.KW_AFTER: @@ -11083,26 +12085,41 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ASC: case TrinoSqlParser.KW_AT: case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: case TrinoSqlParser.KW_COMMIT: case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: case TrinoSqlParser.KW_CURRENT: case TrinoSqlParser.KW_DATA: case TrinoSqlParser.KW_DATE: case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: case TrinoSqlParser.KW_DOUBLE: case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: case TrinoSqlParser.KW_EXCLUDING: case TrinoSqlParser.KW_EXPLAIN: case TrinoSqlParser.KW_FETCH: @@ -11111,16 +12128,18 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_FIRST: case TrinoSqlParser.KW_FOLLOWING: case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: case TrinoSqlParser.KW_GRANT: case TrinoSqlParser.KW_GRANTED: case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_GRAPHVIZ: case TrinoSqlParser.KW_GROUPS: case TrinoSqlParser.KW_HOUR: case TrinoSqlParser.KW_IF: case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: case TrinoSqlParser.KW_INCLUDING: case TrinoSqlParser.KW_INITIAL: case TrinoSqlParser.KW_INPUT: @@ -11128,13 +12147,21 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_INVOKER: case TrinoSqlParser.KW_IO: case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: case TrinoSqlParser.KW_LAST: case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: case TrinoSqlParser.KW_LEVEL: case TrinoSqlParser.KW_LIMIT: case TrinoSqlParser.KW_LOCAL: case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: case TrinoSqlParser.KW_MAP: case TrinoSqlParser.KW_MATCH: case TrinoSqlParser.KW_MATCHED: @@ -11145,6 +12172,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_MERGE: case TrinoSqlParser.KW_MINUTE: case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: case TrinoSqlParser.KW_NEXT: case TrinoSqlParser.KW_NFC: case TrinoSqlParser.KW_NFD: @@ -11154,6 +12182,8 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_NONE: case TrinoSqlParser.KW_NULLIF: case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: case TrinoSqlParser.KW_OFFSET: case TrinoSqlParser.KW_OMIT: case TrinoSqlParser.KW_ONE: @@ -11162,27 +12192,37 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ORDINALITY: case TrinoSqlParser.KW_OUTPUT: case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: case TrinoSqlParser.KW_PARTITION: case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: case TrinoSqlParser.KW_PAST: case TrinoSqlParser.KW_PATH: case TrinoSqlParser.KW_PATTERN: case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: case TrinoSqlParser.KW_POSITION: case TrinoSqlParser.KW_PRECEDING: case TrinoSqlParser.KW_PRECISION: case TrinoSqlParser.KW_PRIVILEGES: case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: case TrinoSqlParser.KW_RANGE: case TrinoSqlParser.KW_READ: case TrinoSqlParser.KW_REFRESH: case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: case TrinoSqlParser.KW_REPEATABLE: case TrinoSqlParser.KW_REPLACE: case TrinoSqlParser.KW_RESET: case TrinoSqlParser.KW_RESPECT: case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: case TrinoSqlParser.KW_REVOKE: case TrinoSqlParser.KW_ROLE: case TrinoSqlParser.KW_ROLES: @@ -11190,6 +12230,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ROW: case TrinoSqlParser.KW_ROWS: case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: case TrinoSqlParser.KW_SCHEMA: case TrinoSqlParser.KW_SCHEMAS: case TrinoSqlParser.KW_SECOND: @@ -11209,26 +12250,40 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_TABLES: case TrinoSqlParser.KW_TABLESAMPLE: case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: case TrinoSqlParser.KW_TIES: case TrinoSqlParser.KW_TIME: case TrinoSqlParser.KW_TIMESTAMP: case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: case TrinoSqlParser.KW_TRANSACTION: case TrinoSqlParser.KW_TRUNCATE: case TrinoSqlParser.KW_TRY_CAST: case TrinoSqlParser.KW_TYPE: case TrinoSqlParser.KW_UNBOUNDED: case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: case TrinoSqlParser.KW_UPDATE: case TrinoSqlParser.KW_USE: case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: case TrinoSqlParser.KW_WITHOUT: case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: case TrinoSqlParser.KW_WRITE: case TrinoSqlParser.KW_YEAR: case TrinoSqlParser.KW_ZONE: @@ -11236,27 +12291,10 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.DIGIT_IDENTIFIER: case TrinoSqlParser.QUOTED_IDENTIFIER: case TrinoSqlParser.BACKQUOTED_IDENTIFIER: - localContext = new SpecifiedPrincipalContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2563; - this.principal(); - } - break; - case TrinoSqlParser.KW_CURRENT_USER: - localContext = new CurrentUserGrantorContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2564; - this.match(TrinoSqlParser.KW_CURRENT_USER); - } - break; - case TrinoSqlParser.KW_CURRENT_ROLE: - localContext = new CurrentRoleGrantorContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2565; - this.match(TrinoSqlParser.KW_CURRENT_ROLE); + this.state = 3016; + this.type_(0); } break; default: @@ -11277,41 +12315,20 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public principal(): PrincipalContext { - let localContext = new PrincipalContext(this.context, this.state); - this.enterRule(localContext, 208, TrinoSqlParser.RULE_principal); + public whenClause(): WhenClauseContext { + let localContext = new WhenClauseContext(this.context, this.state); + this.enterRule(localContext, 190, TrinoSqlParser.RULE_whenClause); try { - this.state = 2573; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 333, this.context) ) { - case 1: - localContext = new UnspecifiedPrincipalContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2568; - this.identifier(); - } - break; - case 2: - localContext = new UserPrincipalContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 2569; - this.match(TrinoSqlParser.KW_USER); - this.state = 2570; - this.identifier(); - } - break; - case 3: - localContext = new RolePrincipalContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2571; - this.match(TrinoSqlParser.KW_ROLE); - this.state = 2572; - this.identifier(); - } - break; + this.enterOuterAlt(localContext, 1); + { + this.state = 3019; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 3020; + localContext._condition = this.expression(); + this.state = 3021; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3022; + localContext._result = this.expression(); } } catch (re) { @@ -11328,31 +12345,22 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public roles(): RolesContext { - let localContext = new RolesContext(this.context, this.state); - this.enterRule(localContext, 210, TrinoSqlParser.RULE_roles); - let _la: number; + public filter(): FilterContext { + let localContext = new FilterContext(this.context, this.state); + this.enterRule(localContext, 192, TrinoSqlParser.RULE_filter); try { this.enterOuterAlt(localContext, 1); { - this.state = 2575; - this.identifier(); - this.state = 2580; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - while (_la === 3) { - { - { - this.state = 2576; - this.match(TrinoSqlParser.T__2); - this.state = 2577; - this.identifier(); - } - } - this.state = 2582; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - } + this.state = 3024; + this.match(TrinoSqlParser.KW_FILTER); + this.state = 3025; + this.match(TrinoSqlParser.T__0); + this.state = 3026; + this.match(TrinoSqlParser.KW_WHERE); + this.state = 3027; + this.booleanExpression(0); + this.state = 3028; + this.match(TrinoSqlParser.T__1); } } catch (re) { @@ -11369,29 +12377,212 @@ export class TrinoSqlParser extends SQLParserBase { } return localContext; } - public identifier(): IdentifierContext { - let localContext = new IdentifierContext(this.context, this.state); - this.enterRule(localContext, 212, TrinoSqlParser.RULE_identifier); + public mergeCase(): MergeCaseContext { + let localContext = new MergeCaseContext(this.context, this.state); + this.enterRule(localContext, 194, TrinoSqlParser.RULE_mergeCase); + let _la: number; try { - this.state = 2588; + this.state = 3094; this.errorHandler.sync(this); - switch (this.tokenStream.LA(1)) { - case TrinoSqlParser.IDENTIFIER: - localContext = new UnquotedIdentifierContext(localContext); + switch (this.interpreter.adaptivePredict(this.tokenStream, 403, this.context) ) { + case 1: + localContext = new MergeUpdateContext(localContext); this.enterOuterAlt(localContext, 1); { - this.state = 2583; - this.match(TrinoSqlParser.IDENTIFIER); + this.state = 3030; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 3031; + this.match(TrinoSqlParser.KW_MATCHED); + this.state = 3034; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 25) { + { + this.state = 3032; + this.match(TrinoSqlParser.KW_AND); + this.state = 3033; + (localContext as MergeUpdateContext)._condition = this.expression(); + } + } + + this.state = 3036; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3037; + this.match(TrinoSqlParser.KW_UPDATE); + this.state = 3038; + this.match(TrinoSqlParser.KW_SET); + this.state = 3039; + (localContext as MergeUpdateContext)._identifier = this.identifier(); + (localContext as MergeUpdateContext)._targets.push((localContext as MergeUpdateContext)._identifier); + this.state = 3040; + this.match(TrinoSqlParser.EQ); + this.state = 3041; + (localContext as MergeUpdateContext)._expression = this.expression(); + (localContext as MergeUpdateContext)._values.push((localContext as MergeUpdateContext)._expression); + this.state = 3049; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3042; + this.match(TrinoSqlParser.T__2); + this.state = 3043; + (localContext as MergeUpdateContext)._identifier = this.identifier(); + (localContext as MergeUpdateContext)._targets.push((localContext as MergeUpdateContext)._identifier); + this.state = 3044; + this.match(TrinoSqlParser.EQ); + this.state = 3045; + (localContext as MergeUpdateContext)._expression = this.expression(); + (localContext as MergeUpdateContext)._values.push((localContext as MergeUpdateContext)._expression); + } + } + this.state = 3051; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } } break; - case TrinoSqlParser.QUOTED_IDENTIFIER: - localContext = new QuotedIdentifierContext(localContext); + case 2: + localContext = new MergeDeleteContext(localContext); this.enterOuterAlt(localContext, 2); { - this.state = 2584; - this.match(TrinoSqlParser.QUOTED_IDENTIFIER); + this.state = 3052; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 3053; + this.match(TrinoSqlParser.KW_MATCHED); + this.state = 3056; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 25) { + { + this.state = 3054; + this.match(TrinoSqlParser.KW_AND); + this.state = 3055; + (localContext as MergeDeleteContext)._condition = this.expression(); + } + } + + this.state = 3058; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3059; + this.match(TrinoSqlParser.KW_DELETE); + } + break; + case 3: + localContext = new MergeInsertContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3060; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 3061; + this.match(TrinoSqlParser.KW_NOT); + this.state = 3062; + this.match(TrinoSqlParser.KW_MATCHED); + this.state = 3065; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 25) { + { + this.state = 3063; + this.match(TrinoSqlParser.KW_AND); + this.state = 3064; + (localContext as MergeInsertContext)._condition = this.expression(); + } + } + + this.state = 3067; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3068; + this.match(TrinoSqlParser.KW_INSERT); + this.state = 3080; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 1) { + { + this.state = 3069; + this.match(TrinoSqlParser.T__0); + this.state = 3070; + (localContext as MergeInsertContext)._identifier = this.identifier(); + (localContext as MergeInsertContext)._targets.push((localContext as MergeInsertContext)._identifier); + this.state = 3075; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3071; + this.match(TrinoSqlParser.T__2); + this.state = 3072; + (localContext as MergeInsertContext)._identifier = this.identifier(); + (localContext as MergeInsertContext)._targets.push((localContext as MergeInsertContext)._identifier); + } + } + this.state = 3077; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3078; + this.match(TrinoSqlParser.T__1); + } + } + + this.state = 3082; + this.match(TrinoSqlParser.KW_VALUES); + this.state = 3083; + this.match(TrinoSqlParser.T__0); + this.state = 3084; + (localContext as MergeInsertContext)._expression = this.expression(); + (localContext as MergeInsertContext)._values.push((localContext as MergeInsertContext)._expression); + this.state = 3089; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3085; + this.match(TrinoSqlParser.T__2); + this.state = 3086; + (localContext as MergeInsertContext)._expression = this.expression(); + (localContext as MergeInsertContext)._values.push((localContext as MergeInsertContext)._expression); + } + } + this.state = 3091; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3092; + this.match(TrinoSqlParser.T__1); } break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public over(): OverContext { + let localContext = new OverContext(this.context, this.state); + this.enterRule(localContext, 196, TrinoSqlParser.RULE_over); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3096; + this.match(TrinoSqlParser.KW_OVER); + this.state = 3102; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ABSENT: case TrinoSqlParser.KW_ADD: case TrinoSqlParser.KW_ADMIN: case TrinoSqlParser.KW_AFTER: @@ -11402,26 +12593,41 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ASC: case TrinoSqlParser.KW_AT: case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: case TrinoSqlParser.KW_CATALOGS: case TrinoSqlParser.KW_COLUMN: case TrinoSqlParser.KW_COLUMNS: case TrinoSqlParser.KW_COMMENT: case TrinoSqlParser.KW_COMMIT: case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: case TrinoSqlParser.KW_CURRENT: case TrinoSqlParser.KW_DATA: case TrinoSqlParser.KW_DATE: case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_DESC: - case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: case TrinoSqlParser.KW_DOUBLE: case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: case TrinoSqlParser.KW_EXCLUDING: case TrinoSqlParser.KW_EXPLAIN: case TrinoSqlParser.KW_FETCH: @@ -11430,16 +12636,18 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_FIRST: case TrinoSqlParser.KW_FOLLOWING: case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: case TrinoSqlParser.KW_GRANT: case TrinoSqlParser.KW_GRANTED: case TrinoSqlParser.KW_GRANTS: - case TrinoSqlParser.KW_DENY: case TrinoSqlParser.KW_GRAPHVIZ: case TrinoSqlParser.KW_GROUPS: case TrinoSqlParser.KW_HOUR: case TrinoSqlParser.KW_IF: case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: case TrinoSqlParser.KW_INCLUDING: case TrinoSqlParser.KW_INITIAL: case TrinoSqlParser.KW_INPUT: @@ -11447,13 +12655,21 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_INVOKER: case TrinoSqlParser.KW_IO: case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: case TrinoSqlParser.KW_LAST: case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: case TrinoSqlParser.KW_LEVEL: case TrinoSqlParser.KW_LIMIT: case TrinoSqlParser.KW_LOCAL: case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: case TrinoSqlParser.KW_MAP: case TrinoSqlParser.KW_MATCH: case TrinoSqlParser.KW_MATCHED: @@ -11464,6 +12680,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_MERGE: case TrinoSqlParser.KW_MINUTE: case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: case TrinoSqlParser.KW_NEXT: case TrinoSqlParser.KW_NFC: case TrinoSqlParser.KW_NFD: @@ -11473,6 +12690,8 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_NONE: case TrinoSqlParser.KW_NULLIF: case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: case TrinoSqlParser.KW_OFFSET: case TrinoSqlParser.KW_OMIT: case TrinoSqlParser.KW_ONE: @@ -11481,27 +12700,37 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ORDINALITY: case TrinoSqlParser.KW_OUTPUT: case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: case TrinoSqlParser.KW_PARTITION: case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: case TrinoSqlParser.KW_PAST: case TrinoSqlParser.KW_PATH: case TrinoSqlParser.KW_PATTERN: case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: case TrinoSqlParser.KW_POSITION: case TrinoSqlParser.KW_PRECEDING: case TrinoSqlParser.KW_PRECISION: case TrinoSqlParser.KW_PRIVILEGES: case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: case TrinoSqlParser.KW_RANGE: case TrinoSqlParser.KW_READ: case TrinoSqlParser.KW_REFRESH: case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: case TrinoSqlParser.KW_REPEATABLE: case TrinoSqlParser.KW_REPLACE: case TrinoSqlParser.KW_RESET: case TrinoSqlParser.KW_RESPECT: case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: case TrinoSqlParser.KW_REVOKE: case TrinoSqlParser.KW_ROLE: case TrinoSqlParser.KW_ROLES: @@ -11509,6 +12738,7 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_ROW: case TrinoSqlParser.KW_ROWS: case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: case TrinoSqlParser.KW_SCHEMA: case TrinoSqlParser.KW_SCHEMAS: case TrinoSqlParser.KW_SECOND: @@ -11528,1765 +12758,9277 @@ export class TrinoSqlParser extends SQLParserBase { case TrinoSqlParser.KW_TABLES: case TrinoSqlParser.KW_TABLESAMPLE: case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: case TrinoSqlParser.KW_TIES: case TrinoSqlParser.KW_TIME: case TrinoSqlParser.KW_TIMESTAMP: case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: case TrinoSqlParser.KW_TRANSACTION: case TrinoSqlParser.KW_TRUNCATE: case TrinoSqlParser.KW_TRY_CAST: case TrinoSqlParser.KW_TYPE: case TrinoSqlParser.KW_UNBOUNDED: case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: case TrinoSqlParser.KW_UPDATE: case TrinoSqlParser.KW_USE: case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: case TrinoSqlParser.KW_WITHOUT: case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: case TrinoSqlParser.KW_WRITE: case TrinoSqlParser.KW_YEAR: case TrinoSqlParser.KW_ZONE: - localContext = new UnquotedIdentifierContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2585; - this.nonReserved(); - } - break; + case TrinoSqlParser.IDENTIFIER: + case TrinoSqlParser.DIGIT_IDENTIFIER: + case TrinoSqlParser.QUOTED_IDENTIFIER: case TrinoSqlParser.BACKQUOTED_IDENTIFIER: - localContext = new BackQuotedIdentifierContext(localContext); - this.enterOuterAlt(localContext, 4); { - this.state = 2586; - this.match(TrinoSqlParser.BACKQUOTED_IDENTIFIER); + this.state = 3097; + localContext._windowName = this.identifier(); } break; - case TrinoSqlParser.DIGIT_IDENTIFIER: - localContext = new DigitIdentifierContext(localContext); - this.enterOuterAlt(localContext, 5); + case TrinoSqlParser.T__0: { - this.state = 2587; - this.match(TrinoSqlParser.DIGIT_IDENTIFIER); + this.state = 3098; + this.match(TrinoSqlParser.T__0); + this.state = 3099; + this.windowSpecification(); + this.state = 3100; + this.match(TrinoSqlParser.T__1); } break; default: throw new antlr.NoViableAltException(this); } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public windowFrame(): WindowFrameContext { + let localContext = new WindowFrameContext(this.context, this.state); + this.enterRule(localContext, 198, TrinoSqlParser.RULE_windowFrame); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3113; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 168) { + { + this.state = 3104; + this.match(TrinoSqlParser.KW_MEASURES); + this.state = 3105; + this.measureDefinition(); + this.state = 3110; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3106; + this.match(TrinoSqlParser.T__2); + this.state = 3107; + this.measureDefinition(); + } + } + this.state = 3112; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 3115; + this.frameExtent(); + this.state = 3119; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 21) { + { + this.state = 3116; + this.match(TrinoSqlParser.KW_AFTER); + this.state = 3117; + this.match(TrinoSqlParser.KW_MATCH); + this.state = 3118; + this.skipTo(); + } + } + + this.state = 3122; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 124 || _la === 247) { + { + this.state = 3121; + _la = this.tokenStream.LA(1); + if(!(_la === 124 || _la === 247)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + + this.state = 3129; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 206) { + { + this.state = 3124; + this.match(TrinoSqlParser.KW_PATTERN); + this.state = 3125; + this.match(TrinoSqlParser.T__0); + this.state = 3126; + this.rowPattern(0); + this.state = 3127; + this.match(TrinoSqlParser.T__1); + } + } + + this.state = 3140; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 257) { + { + this.state = 3131; + this.match(TrinoSqlParser.KW_SUBSET); + this.state = 3132; + this.subsetDefinition(); + this.state = 3137; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3133; + this.match(TrinoSqlParser.T__2); + this.state = 3134; + this.subsetDefinition(); + } + } + this.state = 3139; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 3151; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 71) { + { + this.state = 3142; + this.match(TrinoSqlParser.KW_DEFINE); + this.state = 3143; + this.variableDefinition(); + this.state = 3148; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3144; + this.match(TrinoSqlParser.T__2); + this.state = 3145; + this.variableDefinition(); + } + } + this.state = 3150; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public frameExtent(): FrameExtentContext { + let localContext = new FrameExtentContext(this.context, this.state); + this.enterRule(localContext, 200, TrinoSqlParser.RULE_frameExtent); + try { + this.state = 3177; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 414, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3153; + localContext._frameType = this.match(TrinoSqlParser.KW_RANGE); + this.state = 3154; + localContext._start = this.frameBound(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3155; + localContext._frameType = this.match(TrinoSqlParser.KW_ROWS); + this.state = 3156; + localContext._start = this.frameBound(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3157; + localContext._frameType = this.match(TrinoSqlParser.KW_GROUPS); + this.state = 3158; + localContext._start = this.frameBound(); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 3159; + localContext._frameType = this.match(TrinoSqlParser.KW_RANGE); + this.state = 3160; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 3161; + localContext._start = this.frameBound(); + this.state = 3162; + this.match(TrinoSqlParser.KW_AND); + this.state = 3163; + localContext._end = this.frameBound(); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 3165; + localContext._frameType = this.match(TrinoSqlParser.KW_ROWS); + this.state = 3166; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 3167; + localContext._start = this.frameBound(); + this.state = 3168; + this.match(TrinoSqlParser.KW_AND); + this.state = 3169; + localContext._end = this.frameBound(); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 3171; + localContext._frameType = this.match(TrinoSqlParser.KW_GROUPS); + this.state = 3172; + this.match(TrinoSqlParser.KW_BETWEEN); + this.state = 3173; + localContext._start = this.frameBound(); + this.state = 3174; + this.match(TrinoSqlParser.KW_AND); + this.state = 3175; + localContext._end = this.frameBound(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public frameBound(): FrameBoundContext { + let localContext = new FrameBoundContext(this.context, this.state); + this.enterRule(localContext, 202, TrinoSqlParser.RULE_frameBound); + let _la: number; + try { + this.state = 3188; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 415, this.context) ) { + case 1: + localContext = new UnboundedFrameContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3179; + this.match(TrinoSqlParser.KW_UNBOUNDED); + this.state = 3180; + (localContext as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_PRECEDING); + } + break; + case 2: + localContext = new UnboundedFrameContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3181; + this.match(TrinoSqlParser.KW_UNBOUNDED); + this.state = 3182; + (localContext as UnboundedFrameContext)._boundType = this.match(TrinoSqlParser.KW_FOLLOWING); + } + break; + case 3: + localContext = new CurrentRowBoundContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3183; + this.match(TrinoSqlParser.KW_CURRENT); + this.state = 3184; + this.match(TrinoSqlParser.KW_ROW); + } + break; + case 4: + localContext = new BoundedFrameContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3185; + this.expression(); + this.state = 3186; + (localContext as BoundedFrameContext)._boundType = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 102 || _la === 212)) { + (localContext as BoundedFrameContext)._boundType = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + + public rowPattern(): RowPatternContext; + public rowPattern(_p: number): RowPatternContext; + public rowPattern(_p?: number): RowPatternContext { + if (_p === undefined) { + _p = 0; + } + + let parentContext = this.context; + let parentState = this.state; + let localContext = new RowPatternContext(this.context, parentState); + let previousContext = localContext; + let _startState = 204; + this.enterRecursionRule(localContext, 204, TrinoSqlParser.RULE_rowPattern, _p); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + { + localContext = new QuantifiedPrimaryContext(localContext); + this.context = localContext; + previousContext = localContext; + + this.state = 3191; + this.patternPrimary(); + this.state = 3193; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 416, this.context) ) { + case 1: + { + this.state = 3192; + this.patternQuantifier(); + } + break; + } + } + this.context!.stop = this.tokenStream.LT(-1); + this.state = 3202; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 418, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + if (this._parseListeners != null) { + this.triggerExitRuleEvent(); + } + previousContext = localContext; + { + this.state = 3200; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 417, this.context) ) { + case 1: + { + localContext = new PatternConcatenationContext(new RowPatternContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_rowPattern); + this.state = 3195; + if (!(this.precpred(this.context, 2))) { + throw this.createFailedPredicateException("this.precpred(this.context, 2)"); + } + this.state = 3196; + this.rowPattern(3); + } + break; + case 2: + { + localContext = new PatternAlternationContext(new RowPatternContext(parentContext, parentState)); + this.pushNewRecursionContext(localContext, _startState, TrinoSqlParser.RULE_rowPattern); + this.state = 3197; + if (!(this.precpred(this.context, 1))) { + throw this.createFailedPredicateException("this.precpred(this.context, 1)"); + } + this.state = 3198; + this.match(TrinoSqlParser.T__10); + this.state = 3199; + this.rowPattern(2); + } + break; + } + } + } + this.state = 3204; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 418, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.unrollRecursionContexts(parentContext); + } + return localContext; + } + public patternPrimary(): PatternPrimaryContext { + let localContext = new PatternPrimaryContext(this.context, this.state); + this.enterRule(localContext, 206, TrinoSqlParser.RULE_patternPrimary); + let _la: number; + try { + this.state = 3230; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 420, this.context) ) { + case 1: + localContext = new PatternVariableContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3205; + this.identifier(); + } + break; + case 2: + localContext = new EmptyPatternContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3206; + this.match(TrinoSqlParser.T__0); + this.state = 3207; + this.match(TrinoSqlParser.T__1); + } + break; + case 3: + localContext = new PatternPermutationContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3208; + this.match(TrinoSqlParser.KW_PERMUTE); + this.state = 3209; + this.match(TrinoSqlParser.T__0); + this.state = 3210; + this.rowPattern(0); + this.state = 3215; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3211; + this.match(TrinoSqlParser.T__2); + this.state = 3212; + this.rowPattern(0); + } + } + this.state = 3217; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3218; + this.match(TrinoSqlParser.T__1); + } + break; + case 4: + localContext = new GroupedPatternContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3220; + this.match(TrinoSqlParser.T__0); + this.state = 3221; + this.rowPattern(0); + this.state = 3222; + this.match(TrinoSqlParser.T__1); + } + break; + case 5: + localContext = new PartitionStartAnchorContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 3224; + this.match(TrinoSqlParser.T__11); + } + break; + case 6: + localContext = new PartitionEndAnchorContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 3225; + this.match(TrinoSqlParser.T__12); + } + break; + case 7: + localContext = new ExcludedPatternContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 3226; + this.match(TrinoSqlParser.T__13); + this.state = 3227; + this.rowPattern(0); + this.state = 3228; + this.match(TrinoSqlParser.T__14); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public patternQuantifier(): PatternQuantifierContext { + let localContext = new PatternQuantifierContext(this.context, this.state); + this.enterRule(localContext, 208, TrinoSqlParser.RULE_patternQuantifier); + let _la: number; + try { + this.state = 3262; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 428, this.context) ) { + case 1: + localContext = new ZeroOrMoreQuantifierContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3232; + this.match(TrinoSqlParser.ASTERISK); + this.state = 3234; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 421, this.context) ) { + case 1: + { + this.state = 3233; + (localContext as ZeroOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + } + } + break; + case 2: + localContext = new OneOrMoreQuantifierContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3236; + this.match(TrinoSqlParser.PLUS); + this.state = 3238; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 422, this.context) ) { + case 1: + { + this.state = 3237; + (localContext as OneOrMoreQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + } + } + break; + case 3: + localContext = new ZeroOrOneQuantifierContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3240; + this.match(TrinoSqlParser.QUESTION_MARK); + this.state = 3242; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 423, this.context) ) { + case 1: + { + this.state = 3241; + (localContext as ZeroOrOneQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + } + } + break; + case 4: + localContext = new RangeQuantifierContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3244; + this.match(TrinoSqlParser.T__15); + this.state = 3245; + (localContext as RangeQuantifierContext)._exactly = this.match(TrinoSqlParser.INTEGER_VALUE); + this.state = 3246; + this.match(TrinoSqlParser.T__16); + this.state = 3248; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 424, this.context) ) { + case 1: + { + this.state = 3247; + (localContext as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + } + } + break; + case 5: + localContext = new RangeQuantifierContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 3250; + this.match(TrinoSqlParser.T__15); + this.state = 3252; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 329) { + { + this.state = 3251; + (localContext as RangeQuantifierContext)._atLeast = this.match(TrinoSqlParser.INTEGER_VALUE); + } + } + + this.state = 3254; + this.match(TrinoSqlParser.T__2); + this.state = 3256; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 329) { + { + this.state = 3255; + (localContext as RangeQuantifierContext)._atMost = this.match(TrinoSqlParser.INTEGER_VALUE); + } + } + + this.state = 3258; + this.match(TrinoSqlParser.T__16); + this.state = 3260; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 427, this.context) ) { + case 1: + { + this.state = 3259; + (localContext as RangeQuantifierContext)._reluctant = this.match(TrinoSqlParser.QUESTION_MARK); + } + break; + } + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public updateAssignment(): UpdateAssignmentContext { + let localContext = new UpdateAssignmentContext(this.context, this.state); + this.enterRule(localContext, 210, TrinoSqlParser.RULE_updateAssignment); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3264; + this.identifier(); + this.state = 3265; + this.match(TrinoSqlParser.EQ); + this.state = 3266; + this.expression(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public explainOption(): ExplainOptionContext { + let localContext = new ExplainOptionContext(this.context, this.state); + this.enterRule(localContext, 212, TrinoSqlParser.RULE_explainOption); + let _la: number; + try { + this.state = 3272; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_FORMAT: + localContext = new ExplainFormatContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3268; + this.match(TrinoSqlParser.KW_FORMAT); + this.state = 3269; + (localContext as ExplainFormatContext)._value = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 113 || _la === 137 || _la === 263)) { + (localContext as ExplainFormatContext)._value = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case TrinoSqlParser.KW_TYPE: + localContext = new ExplainTypeContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3270; + this.match(TrinoSqlParser.KW_TYPE); + this.state = 3271; + (localContext as ExplainTypeContext)._value = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 80 || _la === 132 || _la === 160 || _la === 294)) { + (localContext as ExplainTypeContext)._value = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public transactionMode(): TransactionModeContext { + let localContext = new TransactionModeContext(this.context, this.state); + this.enterRule(localContext, 214, TrinoSqlParser.RULE_transactionMode); + let _la: number; + try { + this.state = 3279; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ISOLATION: + localContext = new IsolationLevelContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3274; + this.match(TrinoSqlParser.KW_ISOLATION); + this.state = 3275; + this.match(TrinoSqlParser.KW_LEVEL); + this.state = 3276; + this.levelOfIsolation(); + } + break; + case TrinoSqlParser.KW_READ: + localContext = new TransactionAccessModeContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3277; + this.match(TrinoSqlParser.KW_READ); + this.state = 3278; + (localContext as TransactionAccessModeContext)._accessMode = this.tokenStream.LT(1); + _la = this.tokenStream.LA(1); + if(!(_la === 192 || _la === 309)) { + (localContext as TransactionAccessModeContext)._accessMode = this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public levelOfIsolation(): LevelOfIsolationContext { + let localContext = new LevelOfIsolationContext(this.context, this.state); + this.enterRule(localContext, 216, TrinoSqlParser.RULE_levelOfIsolation); + try { + this.state = 3288; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 431, this.context) ) { + case 1: + localContext = new ReadUncommittedContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3281; + this.match(TrinoSqlParser.KW_READ); + this.state = 3282; + this.match(TrinoSqlParser.KW_UNCOMMITTED); + } + break; + case 2: + localContext = new ReadCommittedContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3283; + this.match(TrinoSqlParser.KW_READ); + this.state = 3284; + this.match(TrinoSqlParser.KW_COMMITTED); + } + break; + case 3: + localContext = new RepeatableReadContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3285; + this.match(TrinoSqlParser.KW_REPEATABLE); + this.state = 3286; + this.match(TrinoSqlParser.KW_READ); + } + break; + case 4: + localContext = new SerializableContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3287; + this.match(TrinoSqlParser.KW_SERIALIZABLE); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public callArgument(): CallArgumentContext { + let localContext = new CallArgumentContext(this.context, this.state); + this.enterRule(localContext, 218, TrinoSqlParser.RULE_callArgument); + try { + this.state = 3295; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 432, this.context) ) { + case 1: + localContext = new PositionalArgumentContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3290; + this.expression(); + } + break; + case 2: + localContext = new NamedArgumentContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3291; + this.identifier(); + this.state = 3292; + this.match(TrinoSqlParser.T__5); + this.state = 3293; + this.expression(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public pathElement(): PathElementContext { + let localContext = new PathElementContext(this.context, this.state); + this.enterRule(localContext, 220, TrinoSqlParser.RULE_pathElement); + try { + this.state = 3302; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 433, this.context) ) { + case 1: + localContext = new QualifiedArgumentContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3297; + this.identifier(); + this.state = 3298; + this.match(TrinoSqlParser.T__3); + this.state = 3299; + this.identifier(); + } + break; + case 2: + localContext = new UnqualifiedArgumentContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3301; + this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public pathSpecification(): PathSpecificationContext { + let localContext = new PathSpecificationContext(this.context, this.state); + this.enterRule(localContext, 222, TrinoSqlParser.RULE_pathSpecification); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3304; + this.pathElement(); + this.state = 3309; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3305; + this.match(TrinoSqlParser.T__2); + this.state = 3306; + this.pathElement(); + } + } + this.state = 3311; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionSpecification(): FunctionSpecificationContext { + let localContext = new FunctionSpecificationContext(this.context, this.state); + this.enterRule(localContext, 224, TrinoSqlParser.RULE_functionSpecification); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 3312; + this.match(TrinoSqlParser.KW_FUNCTION); + this.state = 3313; + this.functionDeclaration(); + this.state = 3314; + this.returnsClause(); + this.state = 3318; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 435, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 3315; + this.routineCharacteristic(); + } + } + } + this.state = 3320; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 435, this.context); + } + this.state = 3321; + this.controlStatement(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionDeclaration(): FunctionDeclarationContext { + let localContext = new FunctionDeclarationContext(this.context, this.state); + this.enterRule(localContext, 226, TrinoSqlParser.RULE_functionDeclaration); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3323; + this.functionNameCreate(); + this.state = 3324; + this.match(TrinoSqlParser.T__0); + this.state = 3333; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + { + this.state = 3325; + this.parameterDeclaration(); + this.state = 3330; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3326; + this.match(TrinoSqlParser.T__2); + this.state = 3327; + this.parameterDeclaration(); + } + } + this.state = 3332; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 3335; + this.match(TrinoSqlParser.T__1); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionSignature(): FunctionSignatureContext { + let localContext = new FunctionSignatureContext(this.context, this.state); + this.enterRule(localContext, 228, TrinoSqlParser.RULE_functionSignature); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3337; + this.functionName(); + this.state = 3338; + this.match(TrinoSqlParser.T__0); + this.state = 3347; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + { + this.state = 3339; + this.parameterDeclaration(); + this.state = 3344; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3340; + this.match(TrinoSqlParser.T__2); + this.state = 3341; + this.parameterDeclaration(); + } + } + this.state = 3346; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + + this.state = 3349; + this.match(TrinoSqlParser.T__1); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public parameterDeclaration(): ParameterDeclarationContext { + let localContext = new ParameterDeclarationContext(this.context, this.state); + this.enterRule(localContext, 230, TrinoSqlParser.RULE_parameterDeclaration); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3352; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 440, this.context) ) { + case 1: + { + this.state = 3351; + this.identifier(); + } + break; + } + this.state = 3354; + this.type_(0); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public returnsClause(): ReturnsClauseContext { + let localContext = new ReturnsClauseContext(this.context, this.state); + this.enterRule(localContext, 232, TrinoSqlParser.RULE_returnsClause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3356; + this.match(TrinoSqlParser.KW_RETURNS); + this.state = 3357; + this.type_(0); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public routineCharacteristic(): RoutineCharacteristicContext { + let localContext = new RoutineCharacteristicContext(this.context, this.state); + this.enterRule(localContext, 234, TrinoSqlParser.RULE_routineCharacteristic); + let _la: number; + try { + this.state = 3378; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_LANGUAGE: + localContext = new LanguageCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3359; + this.match(TrinoSqlParser.KW_LANGUAGE); + this.state = 3360; + this.identifier(); + } + break; + case TrinoSqlParser.KW_DETERMINISTIC: + case TrinoSqlParser.KW_NOT: + localContext = new DeterministicCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3362; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 182) { + { + this.state = 3361; + this.match(TrinoSqlParser.KW_NOT); + } + } + + this.state = 3364; + this.match(TrinoSqlParser.KW_DETERMINISTIC); + } + break; + case TrinoSqlParser.KW_RETURNS: + localContext = new ReturnsNullOnNullInputCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3365; + this.match(TrinoSqlParser.KW_RETURNS); + this.state = 3366; + this.match(TrinoSqlParser.KW_NULL); + this.state = 3367; + this.match(TrinoSqlParser.KW_ON); + this.state = 3368; + this.match(TrinoSqlParser.KW_NULL); + this.state = 3369; + this.match(TrinoSqlParser.KW_INPUT); + } + break; + case TrinoSqlParser.KW_CALLED: + localContext = new CalledOnNullInputCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3370; + this.match(TrinoSqlParser.KW_CALLED); + this.state = 3371; + this.match(TrinoSqlParser.KW_ON); + this.state = 3372; + this.match(TrinoSqlParser.KW_NULL); + this.state = 3373; + this.match(TrinoSqlParser.KW_INPUT); + } + break; + case TrinoSqlParser.KW_SECURITY: + localContext = new SecurityCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 3374; + this.match(TrinoSqlParser.KW_SECURITY); + this.state = 3375; + _la = this.tokenStream.LA(1); + if(!(_la === 72 || _la === 131)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + break; + case TrinoSqlParser.KW_COMMENT: + localContext = new CommentCharacteristicContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 3376; + this.match(TrinoSqlParser.KW_COMMENT); + this.state = 3377; + this.string_(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public controlStatement(): ControlStatementContext { + let localContext = new ControlStatementContext(this.context, this.state); + this.enterRule(localContext, 236, TrinoSqlParser.RULE_controlStatement); + let _la: number; + try { + let alternative: number; + this.state = 3479; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 454, this.context) ) { + case 1: + localContext = new ReturnStatementContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3380; + this.match(TrinoSqlParser.KW_RETURN); + this.state = 3381; + this.valueExpression(0); + } + break; + case 2: + localContext = new AssignmentStatementContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3382; + this.match(TrinoSqlParser.KW_SET); + this.state = 3383; + this.identifier(); + this.state = 3384; + this.match(TrinoSqlParser.EQ); + this.state = 3385; + this.expression(); + } + break; + case 3: + localContext = new SimpleCaseStatementContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3387; + this.match(TrinoSqlParser.KW_CASE); + this.state = 3388; + this.expression(); + this.state = 3390; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 3389; + this.caseStatementWhenClause(); + } + } + this.state = 3392; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 300); + this.state = 3395; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 84) { + { + this.state = 3394; + this.elseClause(); + } + } + + this.state = 3397; + this.match(TrinoSqlParser.KW_END); + this.state = 3398; + this.match(TrinoSqlParser.KW_CASE); + } + break; + case 4: + localContext = new SearchedCaseStatementContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3400; + this.match(TrinoSqlParser.KW_CASE); + this.state = 3402; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + do { + { + { + this.state = 3401; + this.caseStatementWhenClause(); + } + } + this.state = 3404; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } while (_la === 300); + this.state = 3407; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 84) { + { + this.state = 3406; + this.elseClause(); + } + } + + this.state = 3409; + this.match(TrinoSqlParser.KW_END); + this.state = 3410; + this.match(TrinoSqlParser.KW_CASE); + } + break; + case 5: + localContext = new IfStatementContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 3412; + this.match(TrinoSqlParser.KW_IF); + this.state = 3413; + this.expression(); + this.state = 3414; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3415; + this.sqlStatementList(); + this.state = 3419; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 86) { + { + { + this.state = 3416; + this.elseIfClause(); + } + } + this.state = 3421; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3423; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 84) { + { + this.state = 3422; + this.elseClause(); + } + } + + this.state = 3425; + this.match(TrinoSqlParser.KW_END); + this.state = 3426; + this.match(TrinoSqlParser.KW_IF); + } + break; + case 6: + localContext = new IterateStatementContext(localContext); + this.enterOuterAlt(localContext, 6); + { + this.state = 3428; + this.match(TrinoSqlParser.KW_ITERATE); + this.state = 3429; + this.identifier(); + } + break; + case 7: + localContext = new LeaveStatementContext(localContext); + this.enterOuterAlt(localContext, 7); + { + this.state = 3430; + this.match(TrinoSqlParser.KW_LEAVE); + this.state = 3431; + this.identifier(); + } + break; + case 8: + localContext = new CompoundStatementContext(localContext); + this.enterOuterAlt(localContext, 8); + { + this.state = 3432; + this.match(TrinoSqlParser.KW_BEGIN); + this.state = 3438; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 449, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 3433; + this.variableDeclaration(); + this.state = 3434; + this.match(TrinoSqlParser.SEMICOLON); + } + } + } + this.state = 3440; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 449, this.context); + } + this.state = 3442; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4286249823) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0) || ((((_la - 332)) & ~0x1F) === 0 && ((1 << (_la - 332)) & 15) !== 0)) { + { + this.state = 3441; + this.sqlStatementList(); + } + } + + this.state = 3444; + this.match(TrinoSqlParser.KW_END); + } + break; + case 9: + localContext = new LoopStatementContext(localContext); + this.enterOuterAlt(localContext, 9); + { + this.state = 3448; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 451, this.context) ) { + case 1: + { + this.state = 3445; + (localContext as LoopStatementContext)._label = this.identifier(); + this.state = 3446; + this.match(TrinoSqlParser.T__9); + } + break; + } + this.state = 3450; + this.match(TrinoSqlParser.KW_LOOP); + this.state = 3451; + this.sqlStatementList(); + this.state = 3452; + this.match(TrinoSqlParser.KW_END); + this.state = 3453; + this.match(TrinoSqlParser.KW_LOOP); + } + break; + case 10: + localContext = new WhileStatementContext(localContext); + this.enterOuterAlt(localContext, 10); + { + this.state = 3458; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 452, this.context) ) { + case 1: + { + this.state = 3455; + (localContext as WhileStatementContext)._label = this.identifier(); + this.state = 3456; + this.match(TrinoSqlParser.T__9); + } + break; + } + this.state = 3460; + this.match(TrinoSqlParser.KW_WHILE); + this.state = 3461; + this.expression(); + this.state = 3462; + this.match(TrinoSqlParser.KW_DO); + this.state = 3463; + this.sqlStatementList(); + this.state = 3464; + this.match(TrinoSqlParser.KW_END); + this.state = 3465; + this.match(TrinoSqlParser.KW_WHILE); + } + break; + case 11: + localContext = new RepeatStatementContext(localContext); + this.enterOuterAlt(localContext, 11); + { + this.state = 3470; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 453, this.context) ) { + case 1: + { + this.state = 3467; + (localContext as RepeatStatementContext)._label = this.identifier(); + this.state = 3468; + this.match(TrinoSqlParser.T__9); + } + break; + } + this.state = 3472; + this.match(TrinoSqlParser.KW_REPEAT); + this.state = 3473; + this.sqlStatementList(); + this.state = 3474; + this.match(TrinoSqlParser.KW_UNTIL); + this.state = 3475; + this.expression(); + this.state = 3476; + this.match(TrinoSqlParser.KW_END); + this.state = 3477; + this.match(TrinoSqlParser.KW_REPEAT); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public caseStatementWhenClause(): CaseStatementWhenClauseContext { + let localContext = new CaseStatementWhenClauseContext(this.context, this.state); + this.enterRule(localContext, 238, TrinoSqlParser.RULE_caseStatementWhenClause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3481; + this.match(TrinoSqlParser.KW_WHEN); + this.state = 3482; + this.expression(); + this.state = 3483; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3484; + this.sqlStatementList(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public elseIfClause(): ElseIfClauseContext { + let localContext = new ElseIfClauseContext(this.context, this.state); + this.enterRule(localContext, 240, TrinoSqlParser.RULE_elseIfClause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3486; + this.match(TrinoSqlParser.KW_ELSEIF); + this.state = 3487; + this.expression(); + this.state = 3488; + this.match(TrinoSqlParser.KW_THEN); + this.state = 3489; + this.sqlStatementList(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public elseClause(): ElseClauseContext { + let localContext = new ElseClauseContext(this.context, this.state); + this.enterRule(localContext, 242, TrinoSqlParser.RULE_elseClause); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3491; + this.match(TrinoSqlParser.KW_ELSE); + this.state = 3492; + this.sqlStatementList(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public variableDeclaration(): VariableDeclarationContext { + let localContext = new VariableDeclarationContext(this.context, this.state); + this.enterRule(localContext, 244, TrinoSqlParser.RULE_variableDeclaration); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3494; + this.match(TrinoSqlParser.KW_DECLARE); + this.state = 3495; + this.identifier(); + this.state = 3500; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3496; + this.match(TrinoSqlParser.T__2); + this.state = 3497; + this.identifier(); + } + } + this.state = 3502; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + this.state = 3503; + this.type_(0); + this.state = 3506; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 70) { + { + this.state = 3504; + this.match(TrinoSqlParser.KW_DEFAULT); + this.state = 3505; + this.valueExpression(0); + } + } + + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public sqlStatementList(): SqlStatementListContext { + let localContext = new SqlStatementListContext(this.context, this.state); + this.enterRule(localContext, 246, TrinoSqlParser.RULE_sqlStatementList); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 3511; + this.errorHandler.sync(this); + alternative = 1; + do { + switch (alternative) { + case 1: + { + { + this.state = 3508; + this.controlStatement(); + this.state = 3509; + this.match(TrinoSqlParser.SEMICOLON); + } + } + break; + default: + throw new antlr.NoViableAltException(this); + } + this.state = 3513; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 457, this.context); + } while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public privilege(): PrivilegeContext { + let localContext = new PrivilegeContext(this.context, this.state); + this.enterRule(localContext, 248, TrinoSqlParser.RULE_privilege); + try { + this.state = 3521; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 458, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3515; + this.match(TrinoSqlParser.KW_CREATE); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3516; + this.match(TrinoSqlParser.KW_SELECT); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3517; + this.match(TrinoSqlParser.KW_DELETE); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 3518; + this.match(TrinoSqlParser.KW_INSERT); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 3519; + this.match(TrinoSqlParser.KW_UPDATE); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 3520; + this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public entityKind(): EntityKindContext { + let localContext = new EntityKindContext(this.context, this.state); + this.enterRule(localContext, 250, TrinoSqlParser.RULE_entityKind); + try { + this.state = 3526; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 459, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3523; + this.match(TrinoSqlParser.KW_TABLE); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3524; + this.match(TrinoSqlParser.KW_SCHEMA); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3525; + this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public grantObject(): GrantObjectContext { + let localContext = new GrantObjectContext(this.context, this.state); + this.enterRule(localContext, 252, TrinoSqlParser.RULE_grantObject); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3529; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 460, this.context) ) { + case 1: + { + this.state = 3528; + this.entityKind(); + } + break; + } + this.state = 3531; + this.qualifiedName(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public tableOrViewName(): TableOrViewNameContext { + let localContext = new TableOrViewNameContext(this.context, this.state); + this.enterRule(localContext, 254, TrinoSqlParser.RULE_tableOrViewName); + try { + this.state = 3535; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 461, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3533; + this.tableRef(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3534; + this.viewRef(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public tableRef(): TableRefContext { + let localContext = new TableRefContext(this.context, this.state); + this.enterRule(localContext, 256, TrinoSqlParser.RULE_tableRef); + try { + this.state = 3548; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 462, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3537; + localContext._table = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3538; + localContext._schema = this.identifier(); + this.state = 3539; + this.match(TrinoSqlParser.T__3); + this.state = 3540; + localContext._table = this.identifier(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3542; + localContext._catalog = this.identifier(); + this.state = 3543; + this.match(TrinoSqlParser.T__3); + this.state = 3544; + localContext._schema = this.identifier(); + this.state = 3545; + this.match(TrinoSqlParser.T__3); + this.state = 3546; + localContext._table = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public tableNameCreate(): TableNameCreateContext { + let localContext = new TableNameCreateContext(this.context, this.state); + this.enterRule(localContext, 258, TrinoSqlParser.RULE_tableNameCreate); + try { + this.state = 3561; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 463, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3550; + localContext._table = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3551; + localContext._schema = this.identifier(); + this.state = 3552; + this.match(TrinoSqlParser.T__3); + this.state = 3553; + localContext._table = this.identifier(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3555; + localContext._catalog = this.identifier(); + this.state = 3556; + this.match(TrinoSqlParser.T__3); + this.state = 3557; + localContext._schema = this.identifier(); + this.state = 3558; + this.match(TrinoSqlParser.T__3); + this.state = 3559; + localContext._table = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public viewRef(): ViewRefContext { + let localContext = new ViewRefContext(this.context, this.state); + this.enterRule(localContext, 260, TrinoSqlParser.RULE_viewRef); + try { + this.state = 3574; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 464, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3563; + localContext._view = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3564; + localContext._schema = this.identifier(); + this.state = 3565; + this.match(TrinoSqlParser.T__3); + this.state = 3566; + localContext._view = this.identifier(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3568; + localContext._catalog = this.identifier(); + this.state = 3569; + this.match(TrinoSqlParser.T__3); + this.state = 3570; + localContext._schema = this.identifier(); + this.state = 3571; + this.match(TrinoSqlParser.T__3); + this.state = 3572; + localContext._view = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public viewNameCreate(): ViewNameCreateContext { + let localContext = new ViewNameCreateContext(this.context, this.state); + this.enterRule(localContext, 262, TrinoSqlParser.RULE_viewNameCreate); + try { + this.state = 3587; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 465, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3576; + localContext._view = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3577; + localContext._schema = this.identifier(); + this.state = 3578; + this.match(TrinoSqlParser.T__3); + this.state = 3579; + localContext._view = this.identifier(); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3581; + localContext._catalog = this.identifier(); + this.state = 3582; + this.match(TrinoSqlParser.T__3); + this.state = 3583; + localContext._schema = this.identifier(); + this.state = 3584; + this.match(TrinoSqlParser.T__3); + this.state = 3585; + localContext._view = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public schemaRef(): SchemaRefContext { + let localContext = new SchemaRefContext(this.context, this.state); + this.enterRule(localContext, 264, TrinoSqlParser.RULE_schemaRef); + try { + this.state = 3594; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 466, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3589; + localContext._schema = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3590; + localContext._catalog = this.identifier(); + this.state = 3591; + this.match(TrinoSqlParser.T__3); + this.state = 3592; + localContext._schema = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public schemaNameCreate(): SchemaNameCreateContext { + let localContext = new SchemaNameCreateContext(this.context, this.state); + this.enterRule(localContext, 266, TrinoSqlParser.RULE_schemaNameCreate); + try { + this.state = 3601; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 467, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3596; + localContext._schema = this.identifier(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3597; + localContext._catalog = this.identifier(); + this.state = 3598; + this.match(TrinoSqlParser.T__3); + this.state = 3599; + localContext._schema = this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public catalogRef(): CatalogRefContext { + let localContext = new CatalogRefContext(this.context, this.state); + this.enterRule(localContext, 268, TrinoSqlParser.RULE_catalogRef); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3603; + localContext._catalog = this.identifier(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public catalogNameCreate(): CatalogNameCreateContext { + let localContext = new CatalogNameCreateContext(this.context, this.state); + this.enterRule(localContext, 270, TrinoSqlParser.RULE_catalogNameCreate); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3605; + localContext._catalog = this.identifier(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionName(): FunctionNameContext { + let localContext = new FunctionNameContext(this.context, this.state); + this.enterRule(localContext, 272, TrinoSqlParser.RULE_functionName); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3607; + this.qualifiedName(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public functionNameCreate(): FunctionNameCreateContext { + let localContext = new FunctionNameCreateContext(this.context, this.state); + this.enterRule(localContext, 274, TrinoSqlParser.RULE_functionNameCreate); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3609; + this.qualifiedName(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public columnRef(): ColumnRefContext { + let localContext = new ColumnRefContext(this.context, this.state); + this.enterRule(localContext, 276, TrinoSqlParser.RULE_columnRef); + try { + this.state = 3613; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 468, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3611; + this.qualifiedName(); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3612; + if (!(this.shouldMatchEmpty())) { + throw this.createFailedPredicateException("this.shouldMatchEmpty()"); + } + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public columnNameCreate(): ColumnNameCreateContext { + let localContext = new ColumnNameCreateContext(this.context, this.state); + this.enterRule(localContext, 278, TrinoSqlParser.RULE_columnNameCreate); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3615; + this.identifier(); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public qualifiedName(): QualifiedNameContext { + let localContext = new QualifiedNameContext(this.context, this.state); + this.enterRule(localContext, 280, TrinoSqlParser.RULE_qualifiedName); + try { + let alternative: number; + this.enterOuterAlt(localContext, 1); + { + this.state = 3617; + this.identifier(); + this.state = 3622; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 469, this.context); + while (alternative !== 2 && alternative !== antlr.ATN.INVALID_ALT_NUMBER) { + if (alternative === 1) { + { + { + this.state = 3618; + this.match(TrinoSqlParser.T__3); + this.state = 3619; + this.identifier(); + } + } + } + this.state = 3624; + this.errorHandler.sync(this); + alternative = this.interpreter.adaptivePredict(this.tokenStream, 469, this.context); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public queryPeriod(): QueryPeriodContext { + let localContext = new QueryPeriodContext(this.context, this.state); + this.enterRule(localContext, 282, TrinoSqlParser.RULE_queryPeriod); + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3625; + this.match(TrinoSqlParser.KW_FOR); + this.state = 3626; + this.rangeType(); + this.state = 3627; + this.match(TrinoSqlParser.KW_AS); + this.state = 3628; + this.match(TrinoSqlParser.KW_OF); + this.state = 3629; + localContext._end = this.valueExpression(0); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public rangeType(): RangeTypeContext { + let localContext = new RangeTypeContext(this.context, this.state); + this.enterRule(localContext, 284, TrinoSqlParser.RULE_rangeType); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3631; + _la = this.tokenStream.LA(1); + if(!(_la === 268 || _la === 298)) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public grantor(): GrantorContext { + let localContext = new GrantorContext(this.context, this.state); + this.enterRule(localContext, 286, TrinoSqlParser.RULE_grantor); + try { + this.state = 3636; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ABSENT: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: + case TrinoSqlParser.IDENTIFIER: + case TrinoSqlParser.DIGIT_IDENTIFIER: + case TrinoSqlParser.QUOTED_IDENTIFIER: + case TrinoSqlParser.BACKQUOTED_IDENTIFIER: + localContext = new SpecifiedPrincipalContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3633; + this.principal(); + } + break; + case TrinoSqlParser.KW_CURRENT_USER: + localContext = new CurrentUserGrantorContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3634; + this.match(TrinoSqlParser.KW_CURRENT_USER); + } + break; + case TrinoSqlParser.KW_CURRENT_ROLE: + localContext = new CurrentRoleGrantorContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3635; + this.match(TrinoSqlParser.KW_CURRENT_ROLE); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public principal(): PrincipalContext { + let localContext = new PrincipalContext(this.context, this.state); + this.enterRule(localContext, 288, TrinoSqlParser.RULE_principal); + try { + this.state = 3643; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 471, this.context) ) { + case 1: + localContext = new UnspecifiedPrincipalContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3638; + this.identifier(); + } + break; + case 2: + localContext = new UserPrincipalContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3639; + this.match(TrinoSqlParser.KW_USER); + this.state = 3640; + this.identifier(); + } + break; + case 3: + localContext = new RolePrincipalContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3641; + this.match(TrinoSqlParser.KW_ROLE); + this.state = 3642; + this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public roles(): RolesContext { + let localContext = new RolesContext(this.context, this.state); + this.enterRule(localContext, 290, TrinoSqlParser.RULE_roles); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3645; + this.identifier(); + this.state = 3650; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + while (_la === 3) { + { + { + this.state = 3646; + this.match(TrinoSqlParser.T__2); + this.state = 3647; + this.identifier(); + } + } + this.state = 3652; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public privilegeOrRole(): PrivilegeOrRoleContext { + let localContext = new PrivilegeOrRoleContext(this.context, this.state); + this.enterRule(localContext, 292, TrinoSqlParser.RULE_privilegeOrRole); + try { + this.state = 3660; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 473, this.context) ) { + case 1: + this.enterOuterAlt(localContext, 1); + { + this.state = 3653; + this.match(TrinoSqlParser.KW_CREATE); + } + break; + case 2: + this.enterOuterAlt(localContext, 2); + { + this.state = 3654; + this.match(TrinoSqlParser.KW_SELECT); + } + break; + case 3: + this.enterOuterAlt(localContext, 3); + { + this.state = 3655; + this.match(TrinoSqlParser.KW_DELETE); + } + break; + case 4: + this.enterOuterAlt(localContext, 4); + { + this.state = 3656; + this.match(TrinoSqlParser.KW_INSERT); + } + break; + case 5: + this.enterOuterAlt(localContext, 5); + { + this.state = 3657; + this.match(TrinoSqlParser.KW_UPDATE); + } + break; + case 6: + this.enterOuterAlt(localContext, 6); + { + this.state = 3658; + this.match(TrinoSqlParser.KW_EXECUTE); + } + break; + case 7: + this.enterOuterAlt(localContext, 7); + { + this.state = 3659; + this.identifier(); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public identifier(): IdentifierContext { + let localContext = new IdentifierContext(this.context, this.state); + this.enterRule(localContext, 294, TrinoSqlParser.RULE_identifier); + try { + this.state = 3667; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.IDENTIFIER: + localContext = new UnquotedIdentifierContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3662; + this.match(TrinoSqlParser.IDENTIFIER); + } + break; + case TrinoSqlParser.QUOTED_IDENTIFIER: + localContext = new QuotedIdentifierContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3663; + this.match(TrinoSqlParser.QUOTED_IDENTIFIER); + } + break; + case TrinoSqlParser.KW_ABSENT: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: + localContext = new UnquotedIdentifierContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3664; + this.nonReserved(); + } + break; + case TrinoSqlParser.BACKQUOTED_IDENTIFIER: + localContext = new BackQuotedIdentifierContext(localContext); + this.enterOuterAlt(localContext, 4); + { + this.state = 3665; + this.match(TrinoSqlParser.BACKQUOTED_IDENTIFIER); + } + break; + case TrinoSqlParser.DIGIT_IDENTIFIER: + localContext = new DigitIdentifierContext(localContext); + this.enterOuterAlt(localContext, 5); + { + this.state = 3666; + this.match(TrinoSqlParser.DIGIT_IDENTIFIER); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public number_(): NumberContext { + let localContext = new NumberContext(this.context, this.state); + this.enterRule(localContext, 296, TrinoSqlParser.RULE_number); + let _la: number; + try { + this.state = 3681; + this.errorHandler.sync(this); + switch (this.interpreter.adaptivePredict(this.tokenStream, 478, this.context) ) { + case 1: + localContext = new DecimalLiteralContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3670; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 319) { + { + this.state = 3669; + this.match(TrinoSqlParser.MINUS); + } + } + + this.state = 3672; + this.match(TrinoSqlParser.DECIMAL_VALUE); + } + break; + case 2: + localContext = new DoubleLiteralContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3674; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 319) { + { + this.state = 3673; + this.match(TrinoSqlParser.MINUS); + } + } + + this.state = 3676; + this.match(TrinoSqlParser.DOUBLE_VALUE); + } + break; + case 3: + localContext = new IntegerLiteralContext(localContext); + this.enterOuterAlt(localContext, 3); + { + this.state = 3678; + this.errorHandler.sync(this); + _la = this.tokenStream.LA(1); + if (_la === 319) { + { + this.state = 3677; + this.match(TrinoSqlParser.MINUS); + } + } + + this.state = 3680; + this.match(TrinoSqlParser.INTEGER_VALUE); + } + break; + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public authorizationUser(): AuthorizationUserContext { + let localContext = new AuthorizationUserContext(this.context, this.state); + this.enterRule(localContext, 298, TrinoSqlParser.RULE_authorizationUser); + try { + this.state = 3685; + this.errorHandler.sync(this); + switch (this.tokenStream.LA(1)) { + case TrinoSqlParser.KW_ABSENT: + case TrinoSqlParser.KW_ADD: + case TrinoSqlParser.KW_ADMIN: + case TrinoSqlParser.KW_AFTER: + case TrinoSqlParser.KW_ALL: + case TrinoSqlParser.KW_ANALYZE: + case TrinoSqlParser.KW_ANY: + case TrinoSqlParser.KW_ARRAY: + case TrinoSqlParser.KW_ASC: + case TrinoSqlParser.KW_AT: + case TrinoSqlParser.KW_AUTHORIZATION: + case TrinoSqlParser.KW_BEGIN: + case TrinoSqlParser.KW_BERNOULLI: + case TrinoSqlParser.KW_BOTH: + case TrinoSqlParser.KW_CALL: + case TrinoSqlParser.KW_CALLED: + case TrinoSqlParser.KW_CASCADE: + case TrinoSqlParser.KW_CATALOG: + case TrinoSqlParser.KW_CATALOGS: + case TrinoSqlParser.KW_COLUMN: + case TrinoSqlParser.KW_COLUMNS: + case TrinoSqlParser.KW_COMMENT: + case TrinoSqlParser.KW_COMMIT: + case TrinoSqlParser.KW_COMMITTED: + case TrinoSqlParser.KW_CONDITIONAL: + case TrinoSqlParser.KW_COUNT: + case TrinoSqlParser.KW_COPARTITION: + case TrinoSqlParser.KW_CURRENT: + case TrinoSqlParser.KW_DATA: + case TrinoSqlParser.KW_DATE: + case TrinoSqlParser.KW_DAY: + case TrinoSqlParser.KW_DECLARE: + case TrinoSqlParser.KW_DEFAULT: + case TrinoSqlParser.KW_DEFINE: + case TrinoSqlParser.KW_DEFINER: + case TrinoSqlParser.KW_DENY: + case TrinoSqlParser.KW_DESC: + case TrinoSqlParser.KW_DESCRIPTOR: + case TrinoSqlParser.KW_DETERMINISTIC: + case TrinoSqlParser.KW_DISTRIBUTED: + case TrinoSqlParser.KW_DO: + case TrinoSqlParser.KW_DOUBLE: + case TrinoSqlParser.KW_EMPTY: + case TrinoSqlParser.KW_ELSEIF: + case TrinoSqlParser.KW_ENCODING: + case TrinoSqlParser.KW_ERROR: + case TrinoSqlParser.KW_EXCLUDING: + case TrinoSqlParser.KW_EXPLAIN: + case TrinoSqlParser.KW_FETCH: + case TrinoSqlParser.KW_FILTER: + case TrinoSqlParser.KW_FINAL: + case TrinoSqlParser.KW_FIRST: + case TrinoSqlParser.KW_FOLLOWING: + case TrinoSqlParser.KW_FORMAT: + case TrinoSqlParser.KW_FUNCTION: + case TrinoSqlParser.KW_FUNCTIONS: + case TrinoSqlParser.KW_GRACE: + case TrinoSqlParser.KW_GRANT: + case TrinoSqlParser.KW_GRANTED: + case TrinoSqlParser.KW_GRANTS: + case TrinoSqlParser.KW_GRAPHVIZ: + case TrinoSqlParser.KW_GROUPS: + case TrinoSqlParser.KW_HOUR: + case TrinoSqlParser.KW_IF: + case TrinoSqlParser.KW_IGNORE: + case TrinoSqlParser.KW_IMMEDIATE: + case TrinoSqlParser.KW_INCLUDING: + case TrinoSqlParser.KW_INITIAL: + case TrinoSqlParser.KW_INPUT: + case TrinoSqlParser.KW_INTERVAL: + case TrinoSqlParser.KW_INVOKER: + case TrinoSqlParser.KW_IO: + case TrinoSqlParser.KW_ISOLATION: + case TrinoSqlParser.KW_ITERATE: + case TrinoSqlParser.KW_JSON: + case TrinoSqlParser.KW_KEEP: + case TrinoSqlParser.KW_KEY: + case TrinoSqlParser.KW_KEYS: + case TrinoSqlParser.KW_LANGUAGE: + case TrinoSqlParser.KW_LAST: + case TrinoSqlParser.KW_LATERAL: + case TrinoSqlParser.KW_LEADING: + case TrinoSqlParser.KW_LEAVE: + case TrinoSqlParser.KW_LEVEL: + case TrinoSqlParser.KW_LIMIT: + case TrinoSqlParser.KW_LOCAL: + case TrinoSqlParser.KW_LOGICAL: + case TrinoSqlParser.KW_LOOP: + case TrinoSqlParser.KW_MAP: + case TrinoSqlParser.KW_MATCH: + case TrinoSqlParser.KW_MATCHED: + case TrinoSqlParser.KW_MATCHES: + case TrinoSqlParser.KW_MATCH_RECOGNIZE: + case TrinoSqlParser.KW_MATERIALIZED: + case TrinoSqlParser.KW_MEASURES: + case TrinoSqlParser.KW_MERGE: + case TrinoSqlParser.KW_MINUTE: + case TrinoSqlParser.KW_MONTH: + case TrinoSqlParser.KW_NESTED: + case TrinoSqlParser.KW_NEXT: + case TrinoSqlParser.KW_NFC: + case TrinoSqlParser.KW_NFD: + case TrinoSqlParser.KW_NFKC: + case TrinoSqlParser.KW_NFKD: + case TrinoSqlParser.KW_NO: + case TrinoSqlParser.KW_NONE: + case TrinoSqlParser.KW_NULLIF: + case TrinoSqlParser.KW_NULLS: + case TrinoSqlParser.KW_OBJECT: + case TrinoSqlParser.KW_OF: + case TrinoSqlParser.KW_OFFSET: + case TrinoSqlParser.KW_OMIT: + case TrinoSqlParser.KW_ONE: + case TrinoSqlParser.KW_ONLY: + case TrinoSqlParser.KW_OPTION: + case TrinoSqlParser.KW_ORDINALITY: + case TrinoSqlParser.KW_OUTPUT: + case TrinoSqlParser.KW_OVER: + case TrinoSqlParser.KW_OVERFLOW: + case TrinoSqlParser.KW_PARTITION: + case TrinoSqlParser.KW_PARTITIONS: + case TrinoSqlParser.KW_PASSING: + case TrinoSqlParser.KW_PAST: + case TrinoSqlParser.KW_PATH: + case TrinoSqlParser.KW_PATTERN: + case TrinoSqlParser.KW_PER: + case TrinoSqlParser.KW_PERIOD: + case TrinoSqlParser.KW_PERMUTE: + case TrinoSqlParser.KW_PLAN: + case TrinoSqlParser.KW_POSITION: + case TrinoSqlParser.KW_PRECEDING: + case TrinoSqlParser.KW_PRECISION: + case TrinoSqlParser.KW_PRIVILEGES: + case TrinoSqlParser.KW_PROPERTIES: + case TrinoSqlParser.KW_PRUNE: + case TrinoSqlParser.KW_QUOTES: + case TrinoSqlParser.KW_RANGE: + case TrinoSqlParser.KW_READ: + case TrinoSqlParser.KW_REFRESH: + case TrinoSqlParser.KW_RENAME: + case TrinoSqlParser.KW_REPEAT: + case TrinoSqlParser.KW_REPEATABLE: + case TrinoSqlParser.KW_REPLACE: + case TrinoSqlParser.KW_RESET: + case TrinoSqlParser.KW_RESPECT: + case TrinoSqlParser.KW_RESTRICT: + case TrinoSqlParser.KW_RETURN: + case TrinoSqlParser.KW_RETURNING: + case TrinoSqlParser.KW_RETURNS: + case TrinoSqlParser.KW_REVOKE: + case TrinoSqlParser.KW_ROLE: + case TrinoSqlParser.KW_ROLES: + case TrinoSqlParser.KW_ROLLBACK: + case TrinoSqlParser.KW_ROW: + case TrinoSqlParser.KW_ROWS: + case TrinoSqlParser.KW_RUNNING: + case TrinoSqlParser.KW_SCALAR: + case TrinoSqlParser.KW_SCHEMA: + case TrinoSqlParser.KW_SCHEMAS: + case TrinoSqlParser.KW_SECOND: + case TrinoSqlParser.KW_SECURITY: + case TrinoSqlParser.KW_SEEK: + case TrinoSqlParser.KW_SERIALIZABLE: + case TrinoSqlParser.KW_SESSION: + case TrinoSqlParser.KW_SET: + case TrinoSqlParser.KW_SETS: + case TrinoSqlParser.KW_SHOW: + case TrinoSqlParser.KW_SOME: + case TrinoSqlParser.KW_START: + case TrinoSqlParser.KW_STATS: + case TrinoSqlParser.KW_SUBSET: + case TrinoSqlParser.KW_SUBSTRING: + case TrinoSqlParser.KW_SYSTEM: + case TrinoSqlParser.KW_TABLES: + case TrinoSqlParser.KW_TABLESAMPLE: + case TrinoSqlParser.KW_TEXT: + case TrinoSqlParser.KW_TEXT_STRING: + case TrinoSqlParser.KW_TIES: + case TrinoSqlParser.KW_TIME: + case TrinoSqlParser.KW_TIMESTAMP: + case TrinoSqlParser.KW_TO: + case TrinoSqlParser.KW_TRAILING: + case TrinoSqlParser.KW_TRANSACTION: + case TrinoSqlParser.KW_TRUNCATE: + case TrinoSqlParser.KW_TRY_CAST: + case TrinoSqlParser.KW_TYPE: + case TrinoSqlParser.KW_UNBOUNDED: + case TrinoSqlParser.KW_UNCOMMITTED: + case TrinoSqlParser.KW_UNCONDITIONAL: + case TrinoSqlParser.KW_UNIQUE: + case TrinoSqlParser.KW_UNKNOWN: + case TrinoSqlParser.KW_UNMATCHED: + case TrinoSqlParser.KW_UNTIL: + case TrinoSqlParser.KW_UPDATE: + case TrinoSqlParser.KW_USE: + case TrinoSqlParser.KW_USER: + case TrinoSqlParser.KW_UTF16: + case TrinoSqlParser.KW_UTF32: + case TrinoSqlParser.KW_UTF8: + case TrinoSqlParser.KW_VALIDATE: + case TrinoSqlParser.KW_VALUE: + case TrinoSqlParser.KW_VERBOSE: + case TrinoSqlParser.KW_VERSION: + case TrinoSqlParser.KW_VIEW: + case TrinoSqlParser.KW_WHILE: + case TrinoSqlParser.KW_WINDOW: + case TrinoSqlParser.KW_WITHIN: + case TrinoSqlParser.KW_WITHOUT: + case TrinoSqlParser.KW_WORK: + case TrinoSqlParser.KW_WRAPPER: + case TrinoSqlParser.KW_WRITE: + case TrinoSqlParser.KW_YEAR: + case TrinoSqlParser.KW_ZONE: + case TrinoSqlParser.IDENTIFIER: + case TrinoSqlParser.DIGIT_IDENTIFIER: + case TrinoSqlParser.QUOTED_IDENTIFIER: + case TrinoSqlParser.BACKQUOTED_IDENTIFIER: + localContext = new IdentifierUserContext(localContext); + this.enterOuterAlt(localContext, 1); + { + this.state = 3683; + this.identifier(); + } + break; + case TrinoSqlParser.STRING: + case TrinoSqlParser.UNICODE_STRING: + localContext = new StringUserContext(localContext); + this.enterOuterAlt(localContext, 2); + { + this.state = 3684; + this.string_(); + } + break; + default: + throw new antlr.NoViableAltException(this); + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + public nonReserved(): NonReservedContext { + let localContext = new NonReservedContext(this.context, this.state); + this.enterRule(localContext, 300, TrinoSqlParser.RULE_nonReserved); + let _la: number; + try { + this.enterOuterAlt(localContext, 1); + { + this.state = 3687; + _la = this.tokenStream.LA(1); + if(!(((((_la - 18)) & ~0x1F) === 0 && ((1 << (_la - 18)) & 4282055519) !== 0) || ((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & 3988635683) !== 0) || ((((_la - 85)) & ~0x1F) === 0 && ((1 << (_la - 85)) & 2680939671) !== 0) || ((((_la - 118)) & ~0x1F) === 0 && ((1 << (_la - 118)) & 4228606319) !== 0) || ((((_la - 150)) & ~0x1F) === 0 && ((1 << (_la - 150)) & 2143288491) !== 0) || ((((_la - 184)) & ~0x1F) === 0 && ((1 << (_la - 184)) & 3221214143) !== 0) || ((((_la - 216)) & ~0x1F) === 0 && ((1 << (_la - 216)) & 4290510815) !== 0) || ((((_la - 249)) & ~0x1F) === 0 && ((1 << (_la - 249)) & 4001298431) !== 0) || ((((_la - 282)) & ~0x1F) === 0 && ((1 << (_la - 282)) & 1068744439) !== 0))) { + this.errorHandler.recoverInline(this); + } + else { + this.errorHandler.reportMatch(this); + this.consume(); + } + } + } + catch (re) { + if (re instanceof antlr.RecognitionException) { + localContext.exception = re; + this.errorHandler.reportError(this, re); + this.errorHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return localContext; + } + + public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean { + switch (ruleIndex) { + case 23: + return this.queryTerm_sempred(localContext as QueryTermContext, predIndex); + case 36: + return this.relation_sempred(localContext as RelationContext, predIndex); + case 69: + return this.booleanExpression_sempred(localContext as BooleanExpressionContext, predIndex); + case 71: + return this.valueExpression_sempred(localContext as ValueExpressionContext, predIndex); + case 72: + return this.primaryExpression_sempred(localContext as PrimaryExpressionContext, predIndex); + case 92: + return this.type_sempred(localContext as TypeContext, predIndex); + case 102: + return this.rowPattern_sempred(localContext as RowPatternContext, predIndex); + case 138: + return this.columnRef_sempred(localContext as ColumnRefContext, predIndex); + } + return true; + } + private queryTerm_sempred(localContext: QueryTermContext | null, predIndex: number): boolean { + switch (predIndex) { + case 0: + return this.precpred(this.context, 2); + case 1: + return this.precpred(this.context, 1); + } + return true; + } + private relation_sempred(localContext: RelationContext | null, predIndex: number): boolean { + switch (predIndex) { + case 2: + return this.precpred(this.context, 2); + } + return true; + } + private booleanExpression_sempred(localContext: BooleanExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 3: + return this.precpred(this.context, 2); + case 4: + return this.precpred(this.context, 1); + } + return true; + } + private valueExpression_sempred(localContext: ValueExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 5: + return this.precpred(this.context, 3); + case 6: + return this.precpred(this.context, 2); + case 7: + return this.precpred(this.context, 1); + case 8: + return this.precpred(this.context, 5); + } + return true; + } + private primaryExpression_sempred(localContext: PrimaryExpressionContext | null, predIndex: number): boolean { + switch (predIndex) { + case 9: + return this.precpred(this.context, 24); + case 10: + return this.precpred(this.context, 22); + } + return true; + } + private type_sempred(localContext: TypeContext | null, predIndex: number): boolean { + switch (predIndex) { + case 11: + return this.precpred(this.context, 2); + } + return true; + } + private rowPattern_sempred(localContext: RowPatternContext | null, predIndex: number): boolean { + switch (predIndex) { + case 12: + return this.precpred(this.context, 2); + case 13: + return this.precpred(this.context, 1); + } + return true; + } + private columnRef_sempred(localContext: ColumnRefContext | null, predIndex: number): boolean { + switch (predIndex) { + case 14: + return this.shouldMatchEmpty(); + } + return true; + } + + public static readonly _serializedATN: number[] = [ + 4,1,340,3690,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,2,52,7, + 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2, + 59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7, + 65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2, + 72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7, + 78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2, + 85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7, + 91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2, + 98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103, + 2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109, + 7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114, + 2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120, + 7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125, + 2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131, + 7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136, + 2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142, + 7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147, + 2,148,7,148,2,149,7,149,2,150,7,150,1,0,5,0,304,8,0,10,0,12,0,307, + 9,0,1,0,1,0,1,1,1,1,1,2,1,2,3,2,315,8,2,1,3,1,3,3,3,319,8,3,1,4, + 1,4,3,4,323,8,4,1,5,1,5,3,5,327,8,5,1,6,1,6,3,6,331,8,6,1,7,1,7, + 1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,344,8,8,1,8,1,8,1,8,1,8, + 1,8,3,8,351,8,8,1,8,1,8,3,8,355,8,8,1,8,1,8,3,8,359,8,8,1,8,1,8, + 1,8,1,8,3,8,365,8,8,1,8,1,8,3,8,369,8,8,1,8,1,8,1,8,1,8,1,8,3,8, + 376,8,8,1,8,1,8,1,8,3,8,381,8,8,1,8,1,8,3,8,385,8,8,1,8,1,8,1,8, + 1,8,3,8,391,8,8,1,8,1,8,3,8,395,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,414,8,8,1,8,1,8,1,8, + 1,8,3,8,420,8,8,1,8,1,8,3,8,424,8,8,1,8,1,8,3,8,428,8,8,1,8,1,8, + 3,8,432,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,440,8,8,1,8,1,8,3,8,444, + 8,8,1,8,3,8,447,8,8,1,8,1,8,1,8,3,8,452,8,8,1,8,1,8,1,8,1,8,3,8, + 458,8,8,1,8,1,8,1,8,1,8,1,8,5,8,465,8,8,10,8,12,8,468,9,8,1,8,1, + 8,1,8,3,8,473,8,8,1,8,1,8,3,8,477,8,8,1,8,1,8,1,8,1,8,3,8,483,8, + 8,1,8,1,8,1,8,1,8,1,8,3,8,490,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3, + 8,499,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,511,8,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,520,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,3,8,529,8,8,1,8,1,8,1,8,1,8,3,8,535,8,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,3,8,546,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,554,8,8,1, + 8,1,8,1,8,1,8,1,8,1,8,3,8,562,8,8,1,8,1,8,1,8,1,8,1,8,3,8,569,8, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,579,8,8,1,8,1,8,1,8,1,8,1, + 8,3,8,586,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,594,8,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,609,8,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,642,8,8,10,8,12, + 8,645,9,8,3,8,647,8,8,1,8,3,8,650,8,8,1,8,1,8,3,8,654,8,8,1,8,1, + 8,1,8,1,8,3,8,660,8,8,1,8,1,8,1,8,3,8,665,8,8,1,8,1,8,1,8,1,8,1, + 8,3,8,672,8,8,1,8,1,8,1,8,1,8,3,8,678,8,8,1,8,1,8,3,8,682,8,8,1, + 8,1,8,3,8,686,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,694,8,8,1,8,1,8,1, + 8,1,8,3,8,700,8,8,1,8,1,8,3,8,704,8,8,1,8,1,8,3,8,708,8,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,722,8,8,1,8,1,8,1, + 8,1,8,1,8,1,8,3,8,730,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,749,8,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5, + 8,772,8,8,10,8,12,8,775,9,8,3,8,777,8,8,1,8,1,8,1,8,1,8,1,8,3,8, + 784,8,8,1,8,1,8,1,8,1,8,1,8,3,8,791,8,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,3,8,800,8,8,1,8,1,8,3,8,804,8,8,1,8,1,8,1,8,1,8,1,8,3,8,811, + 8,8,1,8,1,8,1,8,1,8,5,8,817,8,8,10,8,12,8,820,9,8,1,8,1,8,1,8,1, + 8,5,8,826,8,8,10,8,12,8,829,9,8,1,8,1,8,1,8,3,8,834,8,8,1,8,1,8, + 1,8,3,8,839,8,8,1,8,1,8,3,8,843,8,8,1,8,1,8,1,8,1,8,5,8,849,8,8, + 10,8,12,8,852,9,8,1,8,1,8,3,8,856,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,3,8,865,8,8,1,8,1,8,1,8,1,8,3,8,871,8,8,1,8,1,8,1,8,5,8,876,8, + 8,10,8,12,8,879,9,8,1,8,1,8,1,8,1,8,5,8,885,8,8,10,8,12,8,888,9, + 8,1,8,1,8,1,8,3,8,893,8,8,1,8,1,8,3,8,897,8,8,1,8,1,8,1,8,1,8,3, + 8,903,8,8,1,8,1,8,1,8,5,8,908,8,8,10,8,12,8,911,9,8,1,8,1,8,3,8, + 915,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,926,8,8,10,8,12, + 8,929,9,8,1,8,1,8,3,8,933,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,3,8,945,8,8,1,8,1,8,3,8,949,8,8,1,8,1,8,1,8,1,8,3,8,955,8, + 8,1,8,1,8,1,8,1,8,1,8,5,8,962,8,8,10,8,12,8,965,9,8,1,8,1,8,3,8, + 969,8,8,1,8,1,8,1,8,1,8,3,8,975,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,3,8,1003,8,8,1,8,1,8,1,8,1,8,3,8,1009,8,8,3,8,1011,8, + 8,1,8,1,8,1,8,1,8,3,8,1017,8,8,1,8,1,8,1,8,1,8,3,8,1023,8,8,3,8, + 1025,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1033,8,8,3,8,1035,8,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1045,8,8,3,8,1047,8,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1062,8,8,1,8,1,8,1,8, + 3,8,1067,8,8,1,8,1,8,1,8,1,8,1,8,3,8,1074,8,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,1,8,3,8,1084,8,8,1,8,1,8,1,8,1,8,3,8,1090,8,8,3,8,1092, + 8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1100,8,8,3,8,1102,8,8,1,8,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, + 8,1,8,1,8,5,8,1125,8,8,10,8,12,8,1128,9,8,3,8,1130,8,8,1,8,1,8,3, + 8,1134,8,8,1,8,1,8,3,8,1138,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,1,8,1,8,1,8,1,8,1,8,5,8,1154,8,8,10,8,12,8,1157,9,8,3,8,1159, + 8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,1168,8,8,10,8,12,8,1171,9,8, + 3,8,1173,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, + 1,8,3,8,1189,8,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,1197,8,8,10,8,12,8, + 1200,9,8,1,8,1,8,3,8,1204,8,8,1,8,1,8,1,8,1,8,3,8,1210,8,8,1,8,3, + 8,1213,8,8,1,8,1,8,1,8,1,8,1,8,4,8,1220,8,8,11,8,12,8,1221,1,8,1, + 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1234,8,8,1,9,3,9,1237,8,9, + 1,9,1,9,1,10,1,10,1,10,1,10,5,10,1245,8,10,10,10,12,10,1248,9,10, + 1,11,3,11,1251,8,11,1,11,1,11,1,12,1,12,3,12,1257,8,12,1,12,1,12, + 1,12,5,12,1262,8,12,10,12,12,12,1265,9,12,1,13,1,13,3,13,1269,8, + 13,1,14,1,14,1,14,1,14,3,14,1275,8,14,1,14,1,14,3,14,1279,8,14,1, + 14,1,14,3,14,1283,8,14,1,15,1,15,1,15,1,15,3,15,1289,8,15,1,16,1, + 16,1,16,1,16,1,17,1,17,1,17,5,17,1298,8,17,10,17,12,17,1301,9,17, + 1,18,1,18,1,18,1,18,1,19,1,19,3,19,1309,8,19,1,20,1,20,1,20,1,20, + 1,20,1,20,5,20,1317,8,20,10,20,12,20,1320,9,20,3,20,1322,8,20,1, + 20,1,20,1,20,3,20,1327,8,20,3,20,1329,8,20,1,20,1,20,1,20,1,20,1, + 20,3,20,1336,8,20,1,20,1,20,1,20,1,20,3,20,1342,8,20,3,20,1344,8, + 20,1,21,1,21,3,21,1348,8,21,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1, + 23,3,23,1358,8,23,1,23,1,23,1,23,1,23,3,23,1364,8,23,1,23,5,23,1367, + 8,23,10,23,12,23,1370,9,23,1,24,1,24,1,24,1,24,1,24,1,24,1,24,5, + 24,1379,8,24,10,24,12,24,1382,9,24,1,24,1,24,1,24,1,24,3,24,1388, + 8,24,1,25,1,25,3,25,1392,8,25,1,25,3,25,1395,8,25,1,25,1,25,3,25, + 1399,8,25,1,26,1,26,3,26,1403,8,26,1,26,1,26,1,26,5,26,1408,8,26, + 10,26,12,26,1411,9,26,1,26,1,26,1,26,1,26,5,26,1417,8,26,10,26,12, + 26,1420,9,26,3,26,1422,8,26,1,26,1,26,3,26,1426,8,26,1,26,1,26,1, + 26,3,26,1431,8,26,1,26,1,26,3,26,1435,8,26,1,26,1,26,1,26,1,26,5, + 26,1441,8,26,10,26,12,26,1444,9,26,3,26,1446,8,26,1,27,3,27,1449, + 8,27,1,27,1,27,1,27,5,27,1454,8,27,10,27,12,27,1457,9,27,1,28,1, + 28,1,28,1,28,1,28,1,28,5,28,1465,8,28,10,28,12,28,1468,9,28,3,28, + 1470,8,28,1,28,1,28,1,28,1,28,1,28,1,28,5,28,1478,8,28,10,28,12, + 28,1481,9,28,3,28,1483,8,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,5, + 28,1492,8,28,10,28,12,28,1495,9,28,1,28,1,28,3,28,1499,8,28,1,29, + 1,29,1,29,1,29,5,29,1505,8,29,10,29,12,29,1508,9,29,3,29,1510,8, + 29,1,29,1,29,3,29,1514,8,29,1,30,1,30,3,30,1518,8,30,1,31,1,31,1, + 31,1,31,1,31,1,31,1,32,3,32,1527,8,32,1,32,1,32,1,32,1,32,1,32,5, + 32,1534,8,32,10,32,12,32,1537,9,32,3,32,1539,8,32,1,32,1,32,1,32, + 1,32,1,32,5,32,1546,8,32,10,32,12,32,1549,9,32,3,32,1551,8,32,1, + 32,3,32,1554,8,32,1,33,1,33,3,33,1558,8,33,1,33,1,33,1,33,1,33,1, + 33,1,34,1,34,1,35,1,35,3,35,1569,8,35,1,35,3,35,1572,8,35,1,35,3, + 35,1575,8,35,1,35,1,35,1,35,1,35,1,35,3,35,1582,8,35,1,35,3,35,1585, + 8,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36, + 1,36,1,36,1,36,1,36,1,36,3,36,1604,8,36,5,36,1606,8,36,10,36,12, + 36,1609,9,36,1,37,3,37,1612,8,37,1,37,1,37,3,37,1616,8,37,1,37,1, + 37,3,37,1620,8,37,1,37,1,37,3,37,1624,8,37,3,37,1626,8,37,1,38,1, + 38,1,38,1,38,1,38,1,38,1,38,5,38,1635,8,38,10,38,12,38,1638,9,38, + 1,38,1,38,3,38,1642,8,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,3,39, + 1651,8,39,1,40,1,40,1,41,1,41,1,42,1,42,1,42,3,42,1660,8,42,1,42, + 3,42,1663,8,42,1,43,1,43,1,43,1,43,3,43,1669,8,43,1,44,1,44,1,44, + 1,44,1,44,1,44,1,44,1,44,5,44,1679,8,44,10,44,12,44,1682,9,44,3, + 44,1684,8,44,1,44,1,44,1,44,1,44,1,44,5,44,1691,8,44,10,44,12,44, + 1694,9,44,3,44,1696,8,44,1,44,1,44,1,44,1,44,5,44,1702,8,44,10,44, + 12,44,1705,9,44,3,44,1707,8,44,1,44,3,44,1710,8,44,1,44,1,44,1,44, + 3,44,1715,8,44,1,44,3,44,1718,8,44,1,44,1,44,1,44,1,44,1,44,1,44, + 1,44,1,44,5,44,1728,8,44,10,44,12,44,1731,9,44,3,44,1733,8,44,1, + 44,1,44,1,44,1,44,5,44,1739,8,44,10,44,12,44,1742,9,44,1,44,1,44, + 3,44,1746,8,44,1,44,1,44,3,44,1750,8,44,3,44,1752,8,44,3,44,1754, + 8,44,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46, + 1,46,3,46,1769,8,46,3,46,1771,8,46,1,47,1,47,1,47,1,47,1,47,1,47, + 1,47,1,47,1,47,3,47,1782,8,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48, + 1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,3,48, + 1803,8,48,1,49,1,49,1,49,1,49,1,49,1,49,5,49,1811,8,49,10,49,12, + 49,1814,9,49,1,49,1,49,1,50,1,50,1,50,1,50,1,51,1,51,3,51,1824,8, + 51,1,51,1,51,3,51,1828,8,51,3,51,1830,8,51,1,52,1,52,1,52,1,52,5, + 52,1836,8,52,10,52,12,52,1839,9,52,1,52,1,52,1,53,1,53,1,53,1,53, + 5,53,1847,8,53,10,53,12,53,1850,9,53,1,53,1,53,1,54,1,54,1,54,1, + 54,5,54,1858,8,54,10,54,12,54,1861,9,54,1,54,1,54,1,55,1,55,3,55, + 1867,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,1878, + 8,55,10,55,12,55,1881,9,55,1,55,1,55,1,55,3,55,1886,8,55,1,55,1, + 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1, + 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,1910,8,55,10,55,12,55, + 1913,9,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55, + 1,55,3,55,1927,8,55,1,55,1,55,1,55,3,55,1932,8,55,1,55,1,55,3,55, + 1936,8,55,1,56,1,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,1946,8,56, + 1,56,1,56,1,56,1,56,3,56,1952,8,56,1,56,1,56,1,56,1,56,3,56,1958, + 8,56,1,56,1,56,1,56,1,56,1,56,1,56,3,56,1966,8,56,1,56,1,56,1,56, + 3,56,1971,8,56,1,56,1,56,1,56,1,56,1,56,3,56,1978,8,56,3,56,1980, + 8,56,1,56,1,56,1,56,1,56,3,56,1986,8,56,1,56,1,56,1,56,1,56,3,56, + 1992,8,56,1,56,1,56,3,56,1996,8,56,1,56,1,56,1,56,3,56,2001,8,56, + 1,56,1,56,1,56,1,56,1,56,5,56,2008,8,56,10,56,12,56,2011,9,56,1, + 56,1,56,3,56,2015,8,56,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1,57,1, + 57,1,57,5,57,2027,8,57,10,57,12,57,2030,9,57,1,57,1,57,1,57,1,57, + 1,57,5,57,2037,8,57,10,57,12,57,2040,9,57,3,57,2042,8,57,1,58,1, + 58,1,59,1,59,1,59,1,59,1,59,3,59,2051,8,59,1,60,1,60,1,60,3,60,2056, + 8,60,1,60,1,60,1,60,3,60,2061,8,60,3,60,2063,8,60,1,61,1,61,1,61, + 1,61,1,61,5,61,2070,8,61,10,61,12,61,2073,9,61,3,61,2075,8,61,1, + 61,1,61,1,61,1,61,5,61,2081,8,61,10,61,12,61,2084,9,61,3,61,2086, + 8,61,1,61,1,61,1,62,1,62,1,62,3,62,2093,8,62,1,62,1,62,1,62,3,62, + 2098,8,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,5,63,2107,8,63,10,63, + 12,63,2110,9,63,3,63,2112,8,63,1,63,1,63,3,63,2116,8,63,3,63,2118, + 8,63,1,63,1,63,1,63,1,63,1,63,1,63,3,63,2126,8,63,1,63,1,63,1,63, + 1,63,1,63,1,63,5,63,2134,8,63,10,63,12,63,2137,9,63,1,63,1,63,1, + 63,3,63,2142,8,63,3,63,2144,8,63,1,64,1,64,1,64,1,64,1,64,3,64,2151, + 8,64,1,64,1,64,3,64,2155,8,64,3,64,2157,8,64,1,64,1,64,1,64,1,64, + 1,64,3,64,2164,8,64,1,64,1,64,3,64,2168,8,64,3,64,2170,8,64,3,64, + 2172,8,64,1,65,1,65,1,65,1,65,1,65,5,65,2179,8,65,10,65,12,65,2182, + 9,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,3,65,2192,8,65,1,66, + 1,66,3,66,2196,8,66,1,67,1,67,1,67,1,67,1,67,1,67,5,67,2204,8,67, + 10,67,12,67,2207,9,67,1,67,1,67,1,68,1,68,1,69,1,69,1,69,3,69,2216, + 8,69,1,69,1,69,3,69,2220,8,69,1,69,1,69,1,69,1,69,1,69,1,69,5,69, + 2228,8,69,10,69,12,69,2231,9,69,1,70,1,70,1,70,1,70,1,70,1,70,1, + 70,1,70,1,70,1,70,3,70,2243,8,70,1,70,1,70,1,70,1,70,1,70,1,70,3, + 70,2251,8,70,1,70,1,70,1,70,1,70,1,70,5,70,2258,8,70,10,70,12,70, + 2261,9,70,1,70,1,70,1,70,3,70,2266,8,70,1,70,1,70,1,70,1,70,1,70, + 1,70,3,70,2274,8,70,1,70,1,70,1,70,1,70,3,70,2280,8,70,1,70,1,70, + 3,70,2284,8,70,1,70,1,70,1,70,3,70,2289,8,70,1,70,1,70,1,70,3,70, + 2294,8,70,1,71,1,71,1,71,1,71,3,71,2300,8,71,1,71,1,71,1,71,1,71, + 1,71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,5,71,2314,8,71,10,71,12, + 71,2317,9,71,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1, + 72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1, + 72,1,72,4,72,2344,8,72,11,72,12,72,2345,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,5,72,2355,8,72,10,72,12,72,2358,9,72,1,72,1,72,1,72,1, + 72,1,72,3,72,2365,8,72,1,72,1,72,1,72,3,72,2370,8,72,1,72,1,72,1, + 72,3,72,2375,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,5, + 72,2386,8,72,10,72,12,72,2389,9,72,1,72,1,72,1,72,3,72,2394,8,72, + 1,72,3,72,2397,8,72,1,72,1,72,1,72,1,72,1,72,3,72,2404,8,72,1,72, + 1,72,1,72,3,72,2409,8,72,1,72,3,72,2412,8,72,1,72,3,72,2415,8,72, + 1,72,1,72,1,72,3,72,2420,8,72,1,72,1,72,1,72,5,72,2425,8,72,10,72, + 12,72,2428,9,72,3,72,2430,8,72,1,72,1,72,1,72,1,72,1,72,5,72,2437, + 8,72,10,72,12,72,2440,9,72,3,72,2442,8,72,1,72,1,72,3,72,2446,8, + 72,1,72,3,72,2449,8,72,1,72,3,72,2452,8,72,1,72,1,72,1,72,1,72,1, + 72,1,72,1,72,1,72,1,72,1,72,1,72,5,72,2465,8,72,10,72,12,72,2468, + 9,72,3,72,2470,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,1,72,1,72,1,72,1,72,4,72,2487,8,72,11,72,12,72,2488,1, + 72,1,72,3,72,2493,8,72,1,72,1,72,1,72,1,72,4,72,2499,8,72,11,72, + 12,72,2500,1,72,1,72,3,72,2505,8,72,1,72,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,5,72,2528,8,72,10,72,12,72,2531,9,72,3,72,2533,8,72,1, + 72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2542,8,72,1,72,1,72,1,72,1, + 72,3,72,2548,8,72,1,72,1,72,1,72,1,72,3,72,2554,8,72,1,72,1,72,1, + 72,1,72,3,72,2560,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2569, + 8,72,1,72,3,72,2572,8,72,1,72,3,72,2575,8,72,1,72,1,72,1,72,1,72, + 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72, + 3,72,2594,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2603,8,72, + 1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72, + 1,72,1,72,1,72,1,72,1,72,5,72,2623,8,72,10,72,12,72,2626,9,72,3, + 72,2628,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2638,8, + 72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2647,8,72,1,72,1,72,1, + 72,1,72,3,72,2653,8,72,1,72,1,72,1,72,1,72,3,72,2659,8,72,1,72,1, + 72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2670,8,72,3,72,2672,8, + 72,1,72,1,72,1,72,3,72,2677,8,72,1,72,1,72,1,72,1,72,1,72,3,72,2684, + 8,72,3,72,2686,8,72,1,72,1,72,1,72,1,72,3,72,2692,8,72,1,72,1,72, + 1,72,1,72,3,72,2698,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,5,72, + 2707,8,72,10,72,12,72,2710,9,72,1,72,1,72,1,72,1,72,1,72,1,72,3, + 72,2718,8,72,1,72,1,72,1,72,3,72,2723,8,72,1,72,1,72,1,72,3,72,2728, + 8,72,3,72,2730,8,72,3,72,2732,8,72,1,72,1,72,1,72,1,72,3,72,2738, + 8,72,3,72,2740,8,72,1,72,1,72,1,72,1,72,1,72,1,72,5,72,2748,8,72, + 10,72,12,72,2751,9,72,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2759,8, + 72,3,72,2761,8,72,1,72,1,72,1,72,1,72,3,72,2767,8,72,3,72,2769,8, + 72,1,72,3,72,2772,8,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,1,72,5, + 72,2782,8,72,10,72,12,72,2785,9,72,1,73,1,73,1,73,1,73,1,73,3,73, + 2792,8,73,1,73,1,73,1,73,1,73,5,73,2798,8,73,10,73,12,73,2801,9, + 73,3,73,2803,8,73,1,74,1,74,1,74,3,74,2808,8,74,1,75,1,75,1,75,3, + 75,2813,8,75,1,76,1,76,1,76,1,76,1,77,1,77,1,78,1,78,1,78,1,78,3, + 78,2825,8,78,1,79,1,79,3,79,2829,8,79,1,79,1,79,3,79,2833,8,79,1, + 79,3,79,2836,8,79,3,79,2838,8,79,1,80,1,80,1,80,1,80,1,80,1,80,3, + 80,2846,8,80,1,81,3,81,2849,8,81,1,81,1,81,1,81,1,81,1,81,1,81,1, + 81,1,81,3,81,2859,8,81,1,82,1,82,1,83,1,83,1,83,1,83,3,83,2867,8, + 83,1,84,1,84,1,84,1,84,3,84,2873,8,84,3,84,2875,8,84,1,85,1,85,1, + 85,1,85,1,85,1,85,3,85,2883,8,85,1,86,1,86,1,87,1,87,1,88,1,88,1, + 89,1,89,3,89,2893,8,89,1,89,1,89,1,89,1,89,3,89,2899,8,89,1,90,1, + 90,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,5,92,2911,8,92,10,92, + 12,92,2914,9,92,1,92,1,92,1,92,1,92,1,92,1,92,3,92,2922,8,92,1,92, + 1,92,1,92,1,92,1,92,3,92,2929,8,92,1,92,1,92,1,92,3,92,2934,8,92, + 1,92,1,92,1,92,1,92,1,92,3,92,2941,8,92,1,92,1,92,1,92,1,92,1,92, + 1,92,1,92,1,92,3,92,2951,8,92,1,92,1,92,1,92,3,92,2956,8,92,1,92, + 1,92,1,92,1,92,1,92,3,92,2963,8,92,1,92,1,92,1,92,1,92,1,92,1,92, + 1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92, + 1,92,1,92,1,92,5,92,2987,8,92,10,92,12,92,2990,9,92,1,92,1,92,3, + 92,2994,8,92,3,92,2996,8,92,1,92,1,92,1,92,1,92,1,92,3,92,3003,8, + 92,5,92,3005,8,92,10,92,12,92,3008,9,92,1,93,1,93,1,93,1,93,3,93, + 3014,8,93,1,94,1,94,3,94,3018,8,94,1,95,1,95,1,95,1,95,1,95,1,96, + 1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,3,97,3035,8,97,1,97, + 1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,1,97,5,97,3048,8,97, + 10,97,12,97,3051,9,97,1,97,1,97,1,97,1,97,3,97,3057,8,97,1,97,1, + 97,1,97,1,97,1,97,1,97,1,97,3,97,3066,8,97,1,97,1,97,1,97,1,97,1, + 97,1,97,5,97,3074,8,97,10,97,12,97,3077,9,97,1,97,1,97,3,97,3081, + 8,97,1,97,1,97,1,97,1,97,1,97,5,97,3088,8,97,10,97,12,97,3091,9, + 97,1,97,1,97,3,97,3095,8,97,1,98,1,98,1,98,1,98,1,98,1,98,3,98,3103, + 8,98,1,99,1,99,1,99,1,99,5,99,3109,8,99,10,99,12,99,3112,9,99,3, + 99,3114,8,99,1,99,1,99,1,99,1,99,3,99,3120,8,99,1,99,3,99,3123,8, + 99,1,99,1,99,1,99,1,99,1,99,3,99,3130,8,99,1,99,1,99,1,99,1,99,5, + 99,3136,8,99,10,99,12,99,3139,9,99,3,99,3141,8,99,1,99,1,99,1,99, + 1,99,5,99,3147,8,99,10,99,12,99,3150,9,99,3,99,3152,8,99,1,100,1, + 100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100, + 1,100,3,100,3178,8,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101, + 1,101,1,101,3,101,3189,8,101,1,102,1,102,1,102,3,102,3194,8,102, + 1,102,1,102,1,102,1,102,1,102,5,102,3201,8,102,10,102,12,102,3204, + 9,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,5,103,3214, + 8,103,10,103,12,103,3217,9,103,1,103,1,103,1,103,1,103,1,103,1,103, + 1,103,1,103,1,103,1,103,1,103,1,103,3,103,3231,8,103,1,104,1,104, + 3,104,3235,8,104,1,104,1,104,3,104,3239,8,104,1,104,1,104,3,104, + 3243,8,104,1,104,1,104,1,104,1,104,3,104,3249,8,104,1,104,1,104, + 3,104,3253,8,104,1,104,1,104,3,104,3257,8,104,1,104,1,104,3,104, + 3261,8,104,3,104,3263,8,104,1,105,1,105,1,105,1,105,1,106,1,106, + 1,106,1,106,3,106,3273,8,106,1,107,1,107,1,107,1,107,1,107,3,107, + 3280,8,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,3,108,3289, + 8,108,1,109,1,109,1,109,1,109,1,109,3,109,3296,8,109,1,110,1,110, + 1,110,1,110,1,110,3,110,3303,8,110,1,111,1,111,1,111,5,111,3308, + 8,111,10,111,12,111,3311,9,111,1,112,1,112,1,112,1,112,5,112,3317, + 8,112,10,112,12,112,3320,9,112,1,112,1,112,1,113,1,113,1,113,1,113, + 1,113,5,113,3329,8,113,10,113,12,113,3332,9,113,3,113,3334,8,113, + 1,113,1,113,1,114,1,114,1,114,1,114,1,114,5,114,3343,8,114,10,114, + 12,114,3346,9,114,3,114,3348,8,114,1,114,1,114,1,115,3,115,3353, + 8,115,1,115,1,115,1,116,1,116,1,116,1,117,1,117,1,117,3,117,3363, + 8,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117, + 1,117,1,117,1,117,1,117,3,117,3379,8,117,1,118,1,118,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,1,118,4,118,3391,8,118,11,118,12,118, + 3392,1,118,3,118,3396,8,118,1,118,1,118,1,118,1,118,1,118,4,118, + 3403,8,118,11,118,12,118,3404,1,118,3,118,3408,8,118,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,1,118,5,118,3418,8,118,10,118,12,118, + 3421,9,118,1,118,3,118,3424,8,118,1,118,1,118,1,118,1,118,1,118, + 1,118,1,118,1,118,1,118,1,118,1,118,5,118,3437,8,118,10,118,12,118, + 3440,9,118,1,118,3,118,3443,8,118,1,118,1,118,1,118,1,118,3,118, + 3449,8,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,3,118, + 3459,8,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, + 1,118,3,118,3471,8,118,1,118,1,118,1,118,1,118,1,118,1,118,1,118, + 3,118,3480,8,118,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120, + 1,120,1,120,1,121,1,121,1,121,1,122,1,122,1,122,1,122,5,122,3499, + 8,122,10,122,12,122,3502,9,122,1,122,1,122,1,122,3,122,3507,8,122, + 1,123,1,123,1,123,4,123,3512,8,123,11,123,12,123,3513,1,124,1,124, + 1,124,1,124,1,124,1,124,3,124,3522,8,124,1,125,1,125,1,125,3,125, + 3527,8,125,1,126,3,126,3530,8,126,1,126,1,126,1,127,1,127,3,127, + 3536,8,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,128, + 1,128,1,128,3,128,3549,8,128,1,129,1,129,1,129,1,129,1,129,1,129, + 1,129,1,129,1,129,1,129,1,129,3,129,3562,8,129,1,130,1,130,1,130, + 1,130,1,130,1,130,1,130,1,130,1,130,1,130,1,130,3,130,3575,8,130, + 1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131, + 3,131,3588,8,131,1,132,1,132,1,132,1,132,1,132,3,132,3595,8,132, + 1,133,1,133,1,133,1,133,1,133,3,133,3602,8,133,1,134,1,134,1,135, + 1,135,1,136,1,136,1,137,1,137,1,138,1,138,3,138,3614,8,138,1,139, + 1,139,1,140,1,140,1,140,5,140,3621,8,140,10,140,12,140,3624,9,140, + 1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,143,1,143,1,143, + 3,143,3637,8,143,1,144,1,144,1,144,1,144,1,144,3,144,3644,8,144, + 1,145,1,145,1,145,5,145,3649,8,145,10,145,12,145,3652,9,145,1,146, + 1,146,1,146,1,146,1,146,1,146,1,146,3,146,3661,8,146,1,147,1,147, + 1,147,1,147,1,147,3,147,3668,8,147,1,148,3,148,3671,8,148,1,148, + 1,148,3,148,3675,8,148,1,148,1,148,3,148,3679,8,148,1,148,3,148, + 3682,8,148,1,149,1,149,3,149,3686,8,149,1,150,1,150,1,150,0,7,46, + 72,138,142,144,184,204,151,0,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,156,158,160,162,164,166,168,170,172,174, + 176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206, + 208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238, + 240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270, + 272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,0,35, + 2,0,39,39,229,229,2,0,72,72,131,131,2,0,105,105,122,122,2,0,92,92, + 123,123,1,0,239,240,2,0,101,101,174,174,2,0,324,324,329,329,2,0, + 91,91,281,281,2,0,29,29,75,75,2,0,101,101,148,148,2,0,22,22,79,79, + 2,0,33,33,259,259,3,0,35,35,150,150,270,270,2,0,124,124,247,247, + 2,0,85,85,89,89,2,0,144,144,189,189,2,0,125,125,197,197,2,0,54,54, + 281,281,1,0,318,319,1,0,320,322,1,0,291,293,4,0,89,89,97,97,273, + 273,283,283,2,0,49,49,280,280,2,0,100,100,241,241,1,0,312,317,3, + 0,22,22,26,26,254,254,2,0,97,97,273,273,5,0,67,67,118,118,170,171, + 245,245,310,310,1,0,175,178,2,0,102,102,212,212,3,0,113,113,137, + 137,263,263,4,0,80,80,132,132,160,160,294,294,2,0,192,192,309,309, + 2,0,268,268,298,298,54,0,18,22,24,24,26,27,29,33,35,35,37,39,42, + 49,51,52,56,56,65,67,69,72,74,75,77,78,80,82,85,87,89,89,92,92,95, + 95,98,102,104,104,107,113,116,116,118,121,123,124,126,126,129,129, + 131,132,134,135,137,137,144,151,153,153,155,155,157,157,160,171, + 173,180,184,189,191,193,196,196,198,213,215,220,222,233,235,237, + 239,247,249,259,261,264,266,271,274,276,278,280,282,284,286,289, + 291,295,297,299,302,303,305,311,4245,0,305,1,0,0,0,2,310,1,0,0,0, + 4,312,1,0,0,0,6,316,1,0,0,0,8,320,1,0,0,0,10,324,1,0,0,0,12,328, + 1,0,0,0,14,332,1,0,0,0,16,1233,1,0,0,0,18,1236,1,0,0,0,20,1240,1, + 0,0,0,22,1250,1,0,0,0,24,1254,1,0,0,0,26,1268,1,0,0,0,28,1270,1, + 0,0,0,30,1284,1,0,0,0,32,1290,1,0,0,0,34,1294,1,0,0,0,36,1302,1, + 0,0,0,38,1308,1,0,0,0,40,1310,1,0,0,0,42,1347,1,0,0,0,44,1349,1, + 0,0,0,46,1351,1,0,0,0,48,1387,1,0,0,0,50,1391,1,0,0,0,52,1400,1, + 0,0,0,54,1448,1,0,0,0,56,1498,1,0,0,0,58,1513,1,0,0,0,60,1517,1, + 0,0,0,62,1519,1,0,0,0,64,1526,1,0,0,0,66,1555,1,0,0,0,68,1564,1, + 0,0,0,70,1584,1,0,0,0,72,1586,1,0,0,0,74,1625,1,0,0,0,76,1641,1, + 0,0,0,78,1643,1,0,0,0,80,1652,1,0,0,0,82,1654,1,0,0,0,84,1662,1, + 0,0,0,86,1668,1,0,0,0,88,1670,1,0,0,0,90,1755,1,0,0,0,92,1770,1, + 0,0,0,94,1781,1,0,0,0,96,1802,1,0,0,0,98,1804,1,0,0,0,100,1817,1, + 0,0,0,102,1821,1,0,0,0,104,1831,1,0,0,0,106,1842,1,0,0,0,108,1853, + 1,0,0,0,110,1935,1,0,0,0,112,2014,1,0,0,0,114,2041,1,0,0,0,116,2043, + 1,0,0,0,118,2050,1,0,0,0,120,2062,1,0,0,0,122,2064,1,0,0,0,124,2092, + 1,0,0,0,126,2099,1,0,0,0,128,2171,1,0,0,0,130,2191,1,0,0,0,132,2193, + 1,0,0,0,134,2197,1,0,0,0,136,2210,1,0,0,0,138,2219,1,0,0,0,140,2293, + 1,0,0,0,142,2299,1,0,0,0,144,2771,1,0,0,0,146,2786,1,0,0,0,148,2804, + 1,0,0,0,150,2809,1,0,0,0,152,2814,1,0,0,0,154,2818,1,0,0,0,156,2824, + 1,0,0,0,158,2837,1,0,0,0,160,2845,1,0,0,0,162,2858,1,0,0,0,164,2860, + 1,0,0,0,166,2866,1,0,0,0,168,2874,1,0,0,0,170,2882,1,0,0,0,172,2884, + 1,0,0,0,174,2886,1,0,0,0,176,2888,1,0,0,0,178,2890,1,0,0,0,180,2900, + 1,0,0,0,182,2902,1,0,0,0,184,2995,1,0,0,0,186,3013,1,0,0,0,188,3017, + 1,0,0,0,190,3019,1,0,0,0,192,3024,1,0,0,0,194,3094,1,0,0,0,196,3096, + 1,0,0,0,198,3113,1,0,0,0,200,3177,1,0,0,0,202,3188,1,0,0,0,204,3190, + 1,0,0,0,206,3230,1,0,0,0,208,3262,1,0,0,0,210,3264,1,0,0,0,212,3272, + 1,0,0,0,214,3279,1,0,0,0,216,3288,1,0,0,0,218,3295,1,0,0,0,220,3302, + 1,0,0,0,222,3304,1,0,0,0,224,3312,1,0,0,0,226,3323,1,0,0,0,228,3337, + 1,0,0,0,230,3352,1,0,0,0,232,3356,1,0,0,0,234,3378,1,0,0,0,236,3479, + 1,0,0,0,238,3481,1,0,0,0,240,3486,1,0,0,0,242,3491,1,0,0,0,244,3494, + 1,0,0,0,246,3511,1,0,0,0,248,3521,1,0,0,0,250,3526,1,0,0,0,252,3529, + 1,0,0,0,254,3535,1,0,0,0,256,3548,1,0,0,0,258,3561,1,0,0,0,260,3574, + 1,0,0,0,262,3587,1,0,0,0,264,3594,1,0,0,0,266,3601,1,0,0,0,268,3603, + 1,0,0,0,270,3605,1,0,0,0,272,3607,1,0,0,0,274,3609,1,0,0,0,276,3613, + 1,0,0,0,278,3615,1,0,0,0,280,3617,1,0,0,0,282,3625,1,0,0,0,284,3631, + 1,0,0,0,286,3636,1,0,0,0,288,3643,1,0,0,0,290,3645,1,0,0,0,292,3660, + 1,0,0,0,294,3667,1,0,0,0,296,3681,1,0,0,0,298,3685,1,0,0,0,300,3687, + 1,0,0,0,302,304,3,2,1,0,303,302,1,0,0,0,304,307,1,0,0,0,305,303, + 1,0,0,0,305,306,1,0,0,0,306,308,1,0,0,0,307,305,1,0,0,0,308,309, + 5,0,0,1,309,1,1,0,0,0,310,311,3,4,2,0,311,3,1,0,0,0,312,314,3,16, + 8,0,313,315,5,325,0,0,314,313,1,0,0,0,314,315,1,0,0,0,315,5,1,0, + 0,0,316,318,3,136,68,0,317,319,5,325,0,0,318,317,1,0,0,0,318,319, + 1,0,0,0,319,7,1,0,0,0,320,322,3,222,111,0,321,323,5,325,0,0,322, + 321,1,0,0,0,322,323,1,0,0,0,323,9,1,0,0,0,324,326,3,184,92,0,325, + 327,5,325,0,0,326,325,1,0,0,0,326,327,1,0,0,0,327,11,1,0,0,0,328, + 330,3,204,102,0,329,331,5,325,0,0,330,329,1,0,0,0,330,331,1,0,0, + 0,331,13,1,0,0,0,332,333,3,224,112,0,333,334,5,0,0,1,334,15,1,0, + 0,0,335,1234,3,18,9,0,336,337,5,288,0,0,337,1234,3,264,132,0,338, + 339,5,53,0,0,339,343,5,42,0,0,340,341,5,119,0,0,341,342,5,182,0, + 0,342,344,5,94,0,0,343,340,1,0,0,0,343,344,1,0,0,0,344,345,1,0,0, + 0,345,346,3,270,135,0,346,347,5,290,0,0,347,350,3,294,147,0,348, + 349,5,46,0,0,349,351,3,168,84,0,350,348,1,0,0,0,350,351,1,0,0,0, + 351,354,1,0,0,0,352,353,5,31,0,0,353,355,3,288,144,0,354,352,1,0, + 0,0,354,355,1,0,0,0,355,358,1,0,0,0,356,357,5,304,0,0,357,359,3, + 32,16,0,358,356,1,0,0,0,358,359,1,0,0,0,359,1234,1,0,0,0,360,361, + 5,83,0,0,361,364,5,42,0,0,362,363,5,119,0,0,363,365,5,94,0,0,364, + 362,1,0,0,0,364,365,1,0,0,0,365,366,1,0,0,0,366,368,3,268,134,0, + 367,369,7,0,0,0,368,367,1,0,0,0,368,369,1,0,0,0,369,1234,1,0,0,0, + 370,371,5,53,0,0,371,375,5,243,0,0,372,373,5,119,0,0,373,374,5,182, + 0,0,374,376,5,94,0,0,375,372,1,0,0,0,375,376,1,0,0,0,376,377,1,0, + 0,0,377,380,3,266,133,0,378,379,5,31,0,0,379,381,3,288,144,0,380, + 378,1,0,0,0,380,381,1,0,0,0,381,384,1,0,0,0,382,383,5,304,0,0,383, + 385,3,32,16,0,384,382,1,0,0,0,384,385,1,0,0,0,385,1234,1,0,0,0,386, + 387,5,83,0,0,387,390,5,243,0,0,388,389,5,119,0,0,389,391,5,94,0, + 0,390,388,1,0,0,0,390,391,1,0,0,0,391,392,1,0,0,0,392,394,3,264, + 132,0,393,395,7,0,0,0,394,393,1,0,0,0,394,395,1,0,0,0,395,1234,1, + 0,0,0,396,397,5,23,0,0,397,398,5,243,0,0,398,399,3,264,132,0,399, + 400,5,223,0,0,400,401,5,269,0,0,401,402,3,266,133,0,402,1234,1,0, + 0,0,403,404,5,23,0,0,404,405,5,243,0,0,405,406,3,264,132,0,406,407, + 5,251,0,0,407,408,5,31,0,0,408,409,3,288,144,0,409,1234,1,0,0,0, + 410,413,5,53,0,0,411,412,5,194,0,0,412,414,5,226,0,0,413,411,1,0, + 0,0,413,414,1,0,0,0,414,415,1,0,0,0,415,419,5,260,0,0,416,417,5, + 119,0,0,417,418,5,182,0,0,418,420,5,94,0,0,419,416,1,0,0,0,419,420, + 1,0,0,0,420,421,1,0,0,0,421,423,3,258,129,0,422,424,3,104,52,0,423, + 422,1,0,0,0,423,424,1,0,0,0,424,427,1,0,0,0,425,426,5,46,0,0,426, + 428,3,168,84,0,427,425,1,0,0,0,427,428,1,0,0,0,428,431,1,0,0,0,429, + 430,5,304,0,0,430,432,3,32,16,0,431,429,1,0,0,0,431,432,1,0,0,0, + 432,433,1,0,0,0,433,439,5,28,0,0,434,440,3,18,9,0,435,436,5,1,0, + 0,436,437,3,18,9,0,437,438,5,2,0,0,438,440,1,0,0,0,439,434,1,0,0, + 0,439,435,1,0,0,0,440,446,1,0,0,0,441,443,5,304,0,0,442,444,5,179, + 0,0,443,442,1,0,0,0,443,444,1,0,0,0,444,445,1,0,0,0,445,447,5,65, + 0,0,446,441,1,0,0,0,446,447,1,0,0,0,447,1234,1,0,0,0,448,451,5,53, + 0,0,449,450,5,194,0,0,450,452,5,226,0,0,451,449,1,0,0,0,451,452, + 1,0,0,0,452,453,1,0,0,0,453,457,5,260,0,0,454,455,5,119,0,0,455, + 456,5,182,0,0,456,458,5,94,0,0,457,454,1,0,0,0,457,458,1,0,0,0,458, + 459,1,0,0,0,459,460,3,258,129,0,460,461,5,1,0,0,461,466,3,26,13, + 0,462,463,5,3,0,0,463,465,3,26,13,0,464,462,1,0,0,0,465,468,1,0, + 0,0,466,464,1,0,0,0,466,467,1,0,0,0,467,469,1,0,0,0,468,466,1,0, + 0,0,469,472,5,2,0,0,470,471,5,46,0,0,471,473,3,168,84,0,472,470, + 1,0,0,0,472,473,1,0,0,0,473,476,1,0,0,0,474,475,5,304,0,0,475,477, + 3,32,16,0,476,474,1,0,0,0,476,477,1,0,0,0,477,1234,1,0,0,0,478,479, + 5,83,0,0,479,482,5,260,0,0,480,481,5,119,0,0,481,483,5,94,0,0,482, + 480,1,0,0,0,482,483,1,0,0,0,483,484,1,0,0,0,484,1234,3,256,128,0, + 485,486,5,127,0,0,486,487,5,130,0,0,487,489,3,256,128,0,488,490, + 3,106,53,0,489,488,1,0,0,0,489,490,1,0,0,0,490,491,1,0,0,0,491,492, + 3,18,9,0,492,1234,1,0,0,0,493,494,5,73,0,0,494,495,5,105,0,0,495, + 498,3,256,128,0,496,497,5,301,0,0,497,499,3,138,69,0,498,496,1,0, + 0,0,498,499,1,0,0,0,499,1234,1,0,0,0,500,501,5,274,0,0,501,502,5, + 260,0,0,502,1234,3,256,128,0,503,504,5,46,0,0,504,505,5,190,0,0, + 505,506,5,260,0,0,506,507,3,256,128,0,507,510,5,133,0,0,508,511, + 3,168,84,0,509,511,5,183,0,0,510,508,1,0,0,0,510,509,1,0,0,0,511, + 1234,1,0,0,0,512,513,5,46,0,0,513,514,5,190,0,0,514,515,5,299,0, + 0,515,516,3,260,130,0,516,519,5,133,0,0,517,520,3,168,84,0,518,520, + 5,183,0,0,519,517,1,0,0,0,519,518,1,0,0,0,520,1234,1,0,0,0,521,522, + 5,46,0,0,522,523,5,190,0,0,523,524,5,44,0,0,524,525,3,276,138,0, + 525,528,5,133,0,0,526,529,3,168,84,0,527,529,5,183,0,0,528,526,1, + 0,0,0,528,527,1,0,0,0,529,1234,1,0,0,0,530,531,5,23,0,0,531,534, + 5,260,0,0,532,533,5,119,0,0,533,535,5,94,0,0,534,532,1,0,0,0,534, + 535,1,0,0,0,535,536,1,0,0,0,536,537,3,256,128,0,537,538,5,223,0, + 0,538,539,5,269,0,0,539,540,3,258,129,0,540,1234,1,0,0,0,541,542, + 5,23,0,0,542,545,5,260,0,0,543,544,5,119,0,0,544,546,5,94,0,0,545, + 543,1,0,0,0,545,546,1,0,0,0,546,547,1,0,0,0,547,548,3,256,128,0, + 548,549,5,19,0,0,549,553,5,44,0,0,550,551,5,119,0,0,551,552,5,182, + 0,0,552,554,5,94,0,0,553,550,1,0,0,0,553,554,1,0,0,0,554,555,1,0, + 0,0,555,556,3,28,14,0,556,1234,1,0,0,0,557,558,5,23,0,0,558,561, + 5,260,0,0,559,560,5,119,0,0,560,562,5,94,0,0,561,559,1,0,0,0,561, + 562,1,0,0,0,562,563,1,0,0,0,563,564,3,256,128,0,564,565,5,223,0, + 0,565,568,5,44,0,0,566,567,5,119,0,0,567,569,5,94,0,0,568,566,1, + 0,0,0,568,569,1,0,0,0,569,570,1,0,0,0,570,571,3,276,138,0,571,572, + 5,269,0,0,572,573,3,278,139,0,573,1234,1,0,0,0,574,575,5,23,0,0, + 575,578,5,260,0,0,576,577,5,119,0,0,577,579,5,94,0,0,578,576,1,0, + 0,0,578,579,1,0,0,0,579,580,1,0,0,0,580,581,3,256,128,0,581,582, + 5,83,0,0,582,585,5,44,0,0,583,584,5,119,0,0,584,586,5,94,0,0,585, + 583,1,0,0,0,585,586,1,0,0,0,586,587,1,0,0,0,587,588,3,276,138,0, + 588,1234,1,0,0,0,589,590,5,23,0,0,590,593,5,260,0,0,591,592,5,119, + 0,0,592,594,5,94,0,0,593,591,1,0,0,0,593,594,1,0,0,0,594,595,1,0, + 0,0,595,596,3,256,128,0,596,597,5,23,0,0,597,598,5,44,0,0,598,599, + 3,276,138,0,599,600,5,251,0,0,600,601,5,65,0,0,601,602,5,276,0,0, + 602,603,3,184,92,0,603,1234,1,0,0,0,604,605,5,23,0,0,605,608,5,260, + 0,0,606,607,5,119,0,0,607,609,5,94,0,0,608,606,1,0,0,0,608,609,1, + 0,0,0,609,610,1,0,0,0,610,611,3,256,128,0,611,612,5,23,0,0,612,613, + 5,44,0,0,613,614,3,276,138,0,614,615,5,83,0,0,615,616,5,182,0,0, + 616,617,5,183,0,0,617,1234,1,0,0,0,618,619,5,23,0,0,619,620,5,260, + 0,0,620,621,3,256,128,0,621,622,5,251,0,0,622,623,5,31,0,0,623,624, + 3,288,144,0,624,1234,1,0,0,0,625,626,5,23,0,0,626,627,5,260,0,0, + 627,628,3,256,128,0,628,629,5,251,0,0,629,630,5,216,0,0,630,631, + 3,34,17,0,631,1234,1,0,0,0,632,633,5,23,0,0,633,634,5,260,0,0,634, + 635,3,256,128,0,635,636,5,93,0,0,636,649,3,272,136,0,637,646,5,1, + 0,0,638,643,3,218,109,0,639,640,5,3,0,0,640,642,3,218,109,0,641, + 639,1,0,0,0,642,645,1,0,0,0,643,641,1,0,0,0,643,644,1,0,0,0,644, + 647,1,0,0,0,645,643,1,0,0,0,646,638,1,0,0,0,646,647,1,0,0,0,647, + 648,1,0,0,0,648,650,5,2,0,0,649,637,1,0,0,0,649,650,1,0,0,0,650, + 653,1,0,0,0,651,652,5,301,0,0,652,654,3,138,69,0,653,651,1,0,0,0, + 653,654,1,0,0,0,654,1234,1,0,0,0,655,656,5,24,0,0,656,659,3,256, + 128,0,657,658,5,304,0,0,658,660,3,32,16,0,659,657,1,0,0,0,659,660, + 1,0,0,0,660,1234,1,0,0,0,661,664,5,53,0,0,662,663,5,194,0,0,663, + 665,5,226,0,0,664,662,1,0,0,0,664,665,1,0,0,0,665,666,1,0,0,0,666, + 667,5,167,0,0,667,671,5,299,0,0,668,669,5,119,0,0,669,670,5,182, + 0,0,670,672,5,94,0,0,671,668,1,0,0,0,671,672,1,0,0,0,672,673,1,0, + 0,0,673,677,3,262,131,0,674,675,5,109,0,0,675,676,5,208,0,0,676, + 678,3,178,89,0,677,674,1,0,0,0,677,678,1,0,0,0,678,681,1,0,0,0,679, + 680,5,46,0,0,680,682,3,168,84,0,681,679,1,0,0,0,681,682,1,0,0,0, + 682,685,1,0,0,0,683,684,5,304,0,0,684,686,3,32,16,0,685,683,1,0, + 0,0,685,686,1,0,0,0,686,687,1,0,0,0,687,688,5,28,0,0,688,689,3,18, + 9,0,689,1234,1,0,0,0,690,693,5,53,0,0,691,692,5,194,0,0,692,694, + 5,226,0,0,693,691,1,0,0,0,693,694,1,0,0,0,694,695,1,0,0,0,695,696, + 5,299,0,0,696,699,3,262,131,0,697,698,5,46,0,0,698,700,3,168,84, + 0,699,697,1,0,0,0,699,700,1,0,0,0,700,703,1,0,0,0,701,702,5,246, + 0,0,702,704,7,1,0,0,703,701,1,0,0,0,703,704,1,0,0,0,704,707,1,0, + 0,0,705,706,5,304,0,0,706,708,3,32,16,0,707,705,1,0,0,0,707,708, + 1,0,0,0,708,709,1,0,0,0,709,710,5,28,0,0,710,711,3,18,9,0,711,1234, + 1,0,0,0,712,713,5,222,0,0,713,714,5,167,0,0,714,715,5,299,0,0,715, + 1234,3,260,130,0,716,717,5,83,0,0,717,718,5,167,0,0,718,721,5,299, + 0,0,719,720,5,119,0,0,720,722,5,94,0,0,721,719,1,0,0,0,721,722,1, + 0,0,0,722,723,1,0,0,0,723,1234,3,260,130,0,724,725,5,23,0,0,725, + 726,5,167,0,0,726,729,5,299,0,0,727,728,5,119,0,0,728,730,5,94,0, + 0,729,727,1,0,0,0,729,730,1,0,0,0,730,731,1,0,0,0,731,732,3,260, + 130,0,732,733,5,223,0,0,733,734,5,269,0,0,734,735,3,262,131,0,735, + 1234,1,0,0,0,736,737,5,23,0,0,737,738,5,167,0,0,738,739,5,299,0, + 0,739,740,3,260,130,0,740,741,5,251,0,0,741,742,5,216,0,0,742,743, + 3,34,17,0,743,1234,1,0,0,0,744,745,5,83,0,0,745,748,5,299,0,0,746, + 747,5,119,0,0,747,749,5,94,0,0,748,746,1,0,0,0,748,749,1,0,0,0,749, + 750,1,0,0,0,750,1234,3,260,130,0,751,752,5,23,0,0,752,753,5,299, + 0,0,753,754,3,260,130,0,754,755,5,223,0,0,755,756,5,269,0,0,756, + 757,3,262,131,0,757,1234,1,0,0,0,758,759,5,23,0,0,759,760,5,299, + 0,0,760,761,3,260,130,0,761,762,5,251,0,0,762,763,5,31,0,0,763,764, + 3,288,144,0,764,1234,1,0,0,0,765,766,5,37,0,0,766,767,3,272,136, + 0,767,776,5,1,0,0,768,773,3,218,109,0,769,770,5,3,0,0,770,772,3, + 218,109,0,771,769,1,0,0,0,772,775,1,0,0,0,773,771,1,0,0,0,773,774, + 1,0,0,0,774,777,1,0,0,0,775,773,1,0,0,0,776,768,1,0,0,0,776,777, + 1,0,0,0,777,778,1,0,0,0,778,779,5,2,0,0,779,1234,1,0,0,0,780,783, + 5,53,0,0,781,782,5,194,0,0,782,784,5,226,0,0,783,781,1,0,0,0,783, + 784,1,0,0,0,784,785,1,0,0,0,785,1234,3,224,112,0,786,787,5,83,0, + 0,787,790,5,107,0,0,788,789,5,119,0,0,789,791,5,94,0,0,790,788,1, + 0,0,0,790,791,1,0,0,0,791,792,1,0,0,0,792,1234,3,228,114,0,793,794, + 5,53,0,0,794,795,5,235,0,0,795,799,3,294,147,0,796,797,5,304,0,0, + 797,798,5,20,0,0,798,800,3,286,143,0,799,796,1,0,0,0,799,800,1,0, + 0,0,800,803,1,0,0,0,801,802,5,122,0,0,802,804,3,268,134,0,803,801, + 1,0,0,0,803,804,1,0,0,0,804,1234,1,0,0,0,805,806,5,83,0,0,806,807, + 5,235,0,0,807,810,3,294,147,0,808,809,5,122,0,0,809,811,3,268,134, + 0,810,808,1,0,0,0,810,811,1,0,0,0,811,1234,1,0,0,0,812,813,5,110, + 0,0,813,818,3,292,146,0,814,815,5,3,0,0,815,817,3,292,146,0,816, + 814,1,0,0,0,817,820,1,0,0,0,818,816,1,0,0,0,818,819,1,0,0,0,819, + 821,1,0,0,0,820,818,1,0,0,0,821,822,5,269,0,0,822,827,3,288,144, + 0,823,824,5,3,0,0,824,826,3,288,144,0,825,823,1,0,0,0,826,829,1, + 0,0,0,827,825,1,0,0,0,827,828,1,0,0,0,828,833,1,0,0,0,829,827,1, + 0,0,0,830,831,5,304,0,0,831,832,5,20,0,0,832,834,5,193,0,0,833,830, + 1,0,0,0,833,834,1,0,0,0,834,838,1,0,0,0,835,836,5,111,0,0,836,837, + 5,36,0,0,837,839,3,286,143,0,838,835,1,0,0,0,838,839,1,0,0,0,839, + 842,1,0,0,0,840,841,5,122,0,0,841,843,3,268,134,0,842,840,1,0,0, + 0,842,843,1,0,0,0,843,1234,1,0,0,0,844,855,5,110,0,0,845,850,3,292, + 146,0,846,847,5,3,0,0,847,849,3,292,146,0,848,846,1,0,0,0,849,852, + 1,0,0,0,850,848,1,0,0,0,850,851,1,0,0,0,851,856,1,0,0,0,852,850, + 1,0,0,0,853,854,5,22,0,0,854,856,5,215,0,0,855,845,1,0,0,0,855,853, + 1,0,0,0,856,857,1,0,0,0,857,858,5,190,0,0,858,859,3,252,126,0,859, + 860,5,269,0,0,860,864,3,288,144,0,861,862,5,304,0,0,862,863,5,110, + 0,0,863,865,5,193,0,0,864,861,1,0,0,0,864,865,1,0,0,0,865,1234,1, + 0,0,0,866,870,5,233,0,0,867,868,5,20,0,0,868,869,5,193,0,0,869,871, + 5,103,0,0,870,867,1,0,0,0,870,871,1,0,0,0,871,872,1,0,0,0,872,877, + 3,292,146,0,873,874,5,3,0,0,874,876,3,292,146,0,875,873,1,0,0,0, + 876,879,1,0,0,0,877,875,1,0,0,0,877,878,1,0,0,0,878,880,1,0,0,0, + 879,877,1,0,0,0,880,881,5,105,0,0,881,886,3,288,144,0,882,883,5, + 3,0,0,883,885,3,288,144,0,884,882,1,0,0,0,885,888,1,0,0,0,886,884, + 1,0,0,0,886,887,1,0,0,0,887,892,1,0,0,0,888,886,1,0,0,0,889,890, + 5,111,0,0,890,891,5,36,0,0,891,893,3,286,143,0,892,889,1,0,0,0,892, + 893,1,0,0,0,893,896,1,0,0,0,894,895,5,122,0,0,895,897,3,268,134, + 0,896,894,1,0,0,0,896,897,1,0,0,0,897,1234,1,0,0,0,898,902,5,233, + 0,0,899,900,5,110,0,0,900,901,5,193,0,0,901,903,5,103,0,0,902,899, + 1,0,0,0,902,903,1,0,0,0,903,914,1,0,0,0,904,909,3,292,146,0,905, + 906,5,3,0,0,906,908,3,292,146,0,907,905,1,0,0,0,908,911,1,0,0,0, + 909,907,1,0,0,0,909,910,1,0,0,0,910,915,1,0,0,0,911,909,1,0,0,0, + 912,913,5,22,0,0,913,915,5,215,0,0,914,904,1,0,0,0,914,912,1,0,0, + 0,915,916,1,0,0,0,916,917,5,190,0,0,917,918,3,252,126,0,918,919, + 5,105,0,0,919,920,3,288,144,0,920,1234,1,0,0,0,921,932,5,74,0,0, + 922,927,3,248,124,0,923,924,5,3,0,0,924,926,3,248,124,0,925,923, + 1,0,0,0,926,929,1,0,0,0,927,925,1,0,0,0,927,928,1,0,0,0,928,933, + 1,0,0,0,929,927,1,0,0,0,930,931,5,22,0,0,931,933,5,215,0,0,932,922, + 1,0,0,0,932,930,1,0,0,0,933,934,1,0,0,0,934,935,5,190,0,0,935,936, + 3,252,126,0,936,937,5,269,0,0,937,938,3,288,144,0,938,1234,1,0,0, + 0,939,940,5,251,0,0,940,944,5,235,0,0,941,945,5,22,0,0,942,945,5, + 180,0,0,943,945,3,294,147,0,944,941,1,0,0,0,944,942,1,0,0,0,944, + 943,1,0,0,0,945,948,1,0,0,0,946,947,5,122,0,0,947,949,3,268,134, + 0,948,946,1,0,0,0,948,949,1,0,0,0,949,1234,1,0,0,0,950,951,5,253, + 0,0,951,954,5,112,0,0,952,953,5,190,0,0,953,955,3,252,126,0,954, + 952,1,0,0,0,954,955,1,0,0,0,955,1234,1,0,0,0,956,968,5,95,0,0,957, + 958,5,1,0,0,958,963,3,212,106,0,959,960,5,3,0,0,960,962,3,212,106, + 0,961,959,1,0,0,0,962,965,1,0,0,0,963,961,1,0,0,0,963,964,1,0,0, + 0,964,966,1,0,0,0,965,963,1,0,0,0,966,967,5,2,0,0,967,969,1,0,0, + 0,968,957,1,0,0,0,968,969,1,0,0,0,969,970,1,0,0,0,970,1234,3,16, + 8,0,971,972,5,95,0,0,972,974,5,24,0,0,973,975,5,297,0,0,974,973, + 1,0,0,0,974,975,1,0,0,0,975,976,1,0,0,0,976,1234,3,16,8,0,977,978, + 5,253,0,0,978,979,5,53,0,0,979,980,5,260,0,0,980,1234,3,256,128, + 0,981,982,5,253,0,0,982,983,5,53,0,0,983,984,5,243,0,0,984,1234, + 3,264,132,0,985,986,5,253,0,0,986,987,5,53,0,0,987,988,5,299,0,0, + 988,1234,3,260,130,0,989,990,5,253,0,0,990,991,5,53,0,0,991,992, + 5,167,0,0,992,993,5,299,0,0,993,1234,3,260,130,0,994,995,5,253,0, + 0,995,996,5,53,0,0,996,997,5,107,0,0,997,1234,3,272,136,0,998,999, + 5,253,0,0,999,1002,5,261,0,0,1000,1001,7,2,0,0,1001,1003,3,264,132, + 0,1002,1000,1,0,0,0,1002,1003,1,0,0,0,1003,1010,1,0,0,0,1004,1005, + 5,154,0,0,1005,1008,3,168,84,0,1006,1007,5,90,0,0,1007,1009,3,168, + 84,0,1008,1006,1,0,0,0,1008,1009,1,0,0,0,1009,1011,1,0,0,0,1010, + 1004,1,0,0,0,1010,1011,1,0,0,0,1011,1234,1,0,0,0,1012,1013,5,253, + 0,0,1013,1016,5,244,0,0,1014,1015,7,2,0,0,1015,1017,3,268,134,0, + 1016,1014,1,0,0,0,1016,1017,1,0,0,0,1017,1024,1,0,0,0,1018,1019, + 5,154,0,0,1019,1022,3,168,84,0,1020,1021,5,90,0,0,1021,1023,3,168, + 84,0,1022,1020,1,0,0,0,1022,1023,1,0,0,0,1023,1025,1,0,0,0,1024, + 1018,1,0,0,0,1024,1025,1,0,0,0,1025,1234,1,0,0,0,1026,1027,5,253, + 0,0,1027,1034,5,43,0,0,1028,1029,5,154,0,0,1029,1032,3,168,84,0, + 1030,1031,5,90,0,0,1031,1033,3,168,84,0,1032,1030,1,0,0,0,1032,1033, + 1,0,0,0,1033,1035,1,0,0,0,1034,1028,1,0,0,0,1034,1035,1,0,0,0,1035, + 1234,1,0,0,0,1036,1037,5,253,0,0,1037,1038,5,45,0,0,1038,1039,7, + 2,0,0,1039,1046,3,254,127,0,1040,1041,5,154,0,0,1041,1044,3,168, + 84,0,1042,1043,5,90,0,0,1043,1045,3,168,84,0,1044,1042,1,0,0,0,1044, + 1045,1,0,0,0,1045,1047,1,0,0,0,1046,1040,1,0,0,0,1046,1047,1,0,0, + 0,1047,1234,1,0,0,0,1048,1049,5,253,0,0,1049,1050,5,256,0,0,1050, + 1051,5,103,0,0,1051,1234,3,254,127,0,1052,1053,5,253,0,0,1053,1054, + 5,256,0,0,1054,1055,5,103,0,0,1055,1056,5,1,0,0,1056,1057,3,18,9, + 0,1057,1058,5,2,0,0,1058,1234,1,0,0,0,1059,1061,5,253,0,0,1060,1062, + 5,56,0,0,1061,1060,1,0,0,0,1061,1062,1,0,0,0,1062,1063,1,0,0,0,1063, + 1066,5,236,0,0,1064,1065,7,2,0,0,1065,1067,3,268,134,0,1066,1064, + 1,0,0,0,1066,1067,1,0,0,0,1067,1234,1,0,0,0,1068,1069,5,253,0,0, + 1069,1070,5,235,0,0,1070,1073,5,112,0,0,1071,1072,7,2,0,0,1072,1074, + 3,268,134,0,1073,1071,1,0,0,0,1073,1074,1,0,0,0,1074,1234,1,0,0, + 0,1075,1076,5,76,0,0,1076,1234,3,254,127,0,1077,1078,5,75,0,0,1078, + 1234,3,254,127,0,1079,1080,5,253,0,0,1080,1083,5,108,0,0,1081,1082, + 7,2,0,0,1082,1084,3,264,132,0,1083,1081,1,0,0,0,1083,1084,1,0,0, + 0,1084,1091,1,0,0,0,1085,1086,5,154,0,0,1086,1089,3,168,84,0,1087, + 1088,5,90,0,0,1088,1090,3,168,84,0,1089,1087,1,0,0,0,1089,1090,1, + 0,0,0,1090,1092,1,0,0,0,1091,1085,1,0,0,0,1091,1092,1,0,0,0,1092, + 1234,1,0,0,0,1093,1094,5,253,0,0,1094,1101,5,250,0,0,1095,1096,5, + 154,0,0,1096,1099,3,168,84,0,1097,1098,5,90,0,0,1098,1100,3,168, + 84,0,1099,1097,1,0,0,0,1099,1100,1,0,0,0,1100,1102,1,0,0,0,1101, + 1095,1,0,0,0,1101,1102,1,0,0,0,1102,1234,1,0,0,0,1103,1104,5,251, + 0,0,1104,1105,5,250,0,0,1105,1106,5,31,0,0,1106,1234,3,298,149,0, + 1107,1108,5,227,0,0,1108,1109,5,250,0,0,1109,1234,5,31,0,0,1110, + 1111,5,251,0,0,1111,1112,5,250,0,0,1112,1113,3,280,140,0,1113,1114, + 5,312,0,0,1114,1115,3,136,68,0,1115,1234,1,0,0,0,1116,1117,5,227, + 0,0,1117,1118,5,250,0,0,1118,1234,3,280,140,0,1119,1120,5,255,0, + 0,1120,1129,5,271,0,0,1121,1126,3,214,107,0,1122,1123,5,3,0,0,1123, + 1125,3,214,107,0,1124,1122,1,0,0,0,1125,1128,1,0,0,0,1126,1124,1, + 0,0,0,1126,1127,1,0,0,0,1127,1130,1,0,0,0,1128,1126,1,0,0,0,1129, + 1121,1,0,0,0,1129,1130,1,0,0,0,1130,1234,1,0,0,0,1131,1133,5,47, + 0,0,1132,1134,5,307,0,0,1133,1132,1,0,0,0,1133,1134,1,0,0,0,1134, + 1234,1,0,0,0,1135,1137,5,237,0,0,1136,1138,5,307,0,0,1137,1136,1, + 0,0,0,1137,1138,1,0,0,0,1138,1234,1,0,0,0,1139,1140,5,214,0,0,1140, + 1141,3,294,147,0,1141,1142,5,105,0,0,1142,1143,3,16,8,0,1143,1234, + 1,0,0,0,1144,1145,5,68,0,0,1145,1146,5,214,0,0,1146,1234,3,294,147, + 0,1147,1148,5,93,0,0,1148,1158,3,294,147,0,1149,1150,5,290,0,0,1150, + 1155,3,136,68,0,1151,1152,5,3,0,0,1152,1154,3,136,68,0,1153,1151, + 1,0,0,0,1154,1157,1,0,0,0,1155,1153,1,0,0,0,1155,1156,1,0,0,0,1156, + 1159,1,0,0,0,1157,1155,1,0,0,0,1158,1149,1,0,0,0,1158,1159,1,0,0, + 0,1159,1234,1,0,0,0,1160,1161,5,93,0,0,1161,1162,5,121,0,0,1162, + 1172,3,168,84,0,1163,1164,5,290,0,0,1164,1169,3,136,68,0,1165,1166, + 5,3,0,0,1166,1168,3,136,68,0,1167,1165,1,0,0,0,1168,1171,1,0,0,0, + 1169,1167,1,0,0,0,1169,1170,1,0,0,0,1170,1173,1,0,0,0,1171,1169, + 1,0,0,0,1172,1163,1,0,0,0,1172,1173,1,0,0,0,1173,1234,1,0,0,0,1174, + 1175,5,76,0,0,1175,1176,5,126,0,0,1176,1234,3,294,147,0,1177,1178, + 5,76,0,0,1178,1179,5,198,0,0,1179,1234,3,294,147,0,1180,1181,5,251, + 0,0,1181,1182,5,205,0,0,1182,1234,3,222,111,0,1183,1184,5,251,0, + 0,1184,1185,5,267,0,0,1185,1188,5,311,0,0,1186,1189,5,157,0,0,1187, + 1189,3,136,68,0,1188,1186,1,0,0,0,1188,1187,1,0,0,0,1189,1234,1, + 0,0,0,1190,1191,5,287,0,0,1191,1192,3,256,128,0,1192,1193,5,251, + 0,0,1193,1198,3,210,105,0,1194,1195,5,3,0,0,1195,1197,3,210,105, + 0,1196,1194,1,0,0,0,1197,1200,1,0,0,0,1198,1196,1,0,0,0,1198,1199, + 1,0,0,0,1199,1203,1,0,0,0,1200,1198,1,0,0,0,1201,1202,5,301,0,0, + 1202,1204,3,138,69,0,1203,1201,1,0,0,0,1203,1204,1,0,0,0,1204,1234, + 1,0,0,0,1205,1206,5,169,0,0,1206,1207,5,130,0,0,1207,1212,3,256, + 128,0,1208,1210,5,28,0,0,1209,1208,1,0,0,0,1209,1210,1,0,0,0,1210, + 1211,1,0,0,0,1211,1213,3,294,147,0,1212,1209,1,0,0,0,1212,1213,1, + 0,0,0,1213,1214,1,0,0,0,1214,1215,5,290,0,0,1215,1216,3,72,36,0, + 1216,1217,5,190,0,0,1217,1219,3,136,68,0,1218,1220,3,194,97,0,1219, + 1218,1,0,0,0,1220,1221,1,0,0,0,1221,1219,1,0,0,0,1221,1222,1,0,0, + 0,1222,1234,1,0,0,0,1223,1224,5,253,0,0,1224,1225,5,46,0,0,1225, + 1226,5,190,0,0,1226,1227,5,260,0,0,1227,1234,3,256,128,0,1228,1229, + 5,253,0,0,1229,1230,5,46,0,0,1230,1231,5,190,0,0,1231,1232,5,44, + 0,0,1232,1234,3,276,138,0,1233,335,1,0,0,0,1233,336,1,0,0,0,1233, + 338,1,0,0,0,1233,360,1,0,0,0,1233,370,1,0,0,0,1233,386,1,0,0,0,1233, + 396,1,0,0,0,1233,403,1,0,0,0,1233,410,1,0,0,0,1233,448,1,0,0,0,1233, + 478,1,0,0,0,1233,485,1,0,0,0,1233,493,1,0,0,0,1233,500,1,0,0,0,1233, + 503,1,0,0,0,1233,512,1,0,0,0,1233,521,1,0,0,0,1233,530,1,0,0,0,1233, + 541,1,0,0,0,1233,557,1,0,0,0,1233,574,1,0,0,0,1233,589,1,0,0,0,1233, + 604,1,0,0,0,1233,618,1,0,0,0,1233,625,1,0,0,0,1233,632,1,0,0,0,1233, + 655,1,0,0,0,1233,661,1,0,0,0,1233,690,1,0,0,0,1233,712,1,0,0,0,1233, + 716,1,0,0,0,1233,724,1,0,0,0,1233,736,1,0,0,0,1233,744,1,0,0,0,1233, + 751,1,0,0,0,1233,758,1,0,0,0,1233,765,1,0,0,0,1233,780,1,0,0,0,1233, + 786,1,0,0,0,1233,793,1,0,0,0,1233,805,1,0,0,0,1233,812,1,0,0,0,1233, + 844,1,0,0,0,1233,866,1,0,0,0,1233,898,1,0,0,0,1233,921,1,0,0,0,1233, + 939,1,0,0,0,1233,950,1,0,0,0,1233,956,1,0,0,0,1233,971,1,0,0,0,1233, + 977,1,0,0,0,1233,981,1,0,0,0,1233,985,1,0,0,0,1233,989,1,0,0,0,1233, + 994,1,0,0,0,1233,998,1,0,0,0,1233,1012,1,0,0,0,1233,1026,1,0,0,0, + 1233,1036,1,0,0,0,1233,1048,1,0,0,0,1233,1052,1,0,0,0,1233,1059, + 1,0,0,0,1233,1068,1,0,0,0,1233,1075,1,0,0,0,1233,1077,1,0,0,0,1233, + 1079,1,0,0,0,1233,1093,1,0,0,0,1233,1103,1,0,0,0,1233,1107,1,0,0, + 0,1233,1110,1,0,0,0,1233,1116,1,0,0,0,1233,1119,1,0,0,0,1233,1131, + 1,0,0,0,1233,1135,1,0,0,0,1233,1139,1,0,0,0,1233,1144,1,0,0,0,1233, + 1147,1,0,0,0,1233,1160,1,0,0,0,1233,1174,1,0,0,0,1233,1177,1,0,0, + 0,1233,1180,1,0,0,0,1233,1183,1,0,0,0,1233,1190,1,0,0,0,1233,1205, + 1,0,0,0,1233,1223,1,0,0,0,1233,1228,1,0,0,0,1234,17,1,0,0,0,1235, + 1237,3,20,10,0,1236,1235,1,0,0,0,1236,1237,1,0,0,0,1237,1238,1,0, + 0,0,1238,1239,3,22,11,0,1239,19,1,0,0,0,1240,1241,5,304,0,0,1241, + 1246,3,224,112,0,1242,1243,5,3,0,0,1243,1245,3,224,112,0,1244,1242, + 1,0,0,0,1245,1248,1,0,0,0,1246,1244,1,0,0,0,1246,1247,1,0,0,0,1247, + 21,1,0,0,0,1248,1246,1,0,0,0,1249,1251,3,24,12,0,1250,1249,1,0,0, + 0,1250,1251,1,0,0,0,1251,1252,1,0,0,0,1252,1253,3,40,20,0,1253,23, + 1,0,0,0,1254,1256,5,304,0,0,1255,1257,5,221,0,0,1256,1255,1,0,0, + 0,1256,1257,1,0,0,0,1257,1258,1,0,0,0,1258,1263,3,66,33,0,1259,1260, + 5,3,0,0,1260,1262,3,66,33,0,1261,1259,1,0,0,0,1262,1265,1,0,0,0, + 1263,1261,1,0,0,0,1263,1264,1,0,0,0,1264,25,1,0,0,0,1265,1263,1, + 0,0,0,1266,1269,3,28,14,0,1267,1269,3,30,15,0,1268,1266,1,0,0,0, + 1268,1267,1,0,0,0,1269,27,1,0,0,0,1270,1271,3,278,139,0,1271,1274, + 3,184,92,0,1272,1273,5,182,0,0,1273,1275,5,183,0,0,1274,1272,1,0, + 0,0,1274,1275,1,0,0,0,1275,1278,1,0,0,0,1276,1277,5,46,0,0,1277, + 1279,3,168,84,0,1278,1276,1,0,0,0,1278,1279,1,0,0,0,1279,1282,1, + 0,0,0,1280,1281,5,304,0,0,1281,1283,3,32,16,0,1282,1280,1,0,0,0, + 1282,1283,1,0,0,0,1283,29,1,0,0,0,1284,1285,5,154,0,0,1285,1288, + 3,256,128,0,1286,1287,7,3,0,0,1287,1289,5,216,0,0,1288,1286,1,0, + 0,0,1288,1289,1,0,0,0,1289,31,1,0,0,0,1290,1291,5,1,0,0,1291,1292, + 3,34,17,0,1292,1293,5,2,0,0,1293,33,1,0,0,0,1294,1299,3,36,18,0, + 1295,1296,5,3,0,0,1296,1298,3,36,18,0,1297,1295,1,0,0,0,1298,1301, + 1,0,0,0,1299,1297,1,0,0,0,1299,1300,1,0,0,0,1300,35,1,0,0,0,1301, + 1299,1,0,0,0,1302,1303,3,294,147,0,1303,1304,5,312,0,0,1304,1305, + 3,38,19,0,1305,37,1,0,0,0,1306,1309,5,70,0,0,1307,1309,3,136,68, + 0,1308,1306,1,0,0,0,1308,1307,1,0,0,0,1309,39,1,0,0,0,1310,1321, + 3,46,23,0,1311,1312,5,195,0,0,1312,1313,5,36,0,0,1313,1318,3,50, + 25,0,1314,1315,5,3,0,0,1315,1317,3,50,25,0,1316,1314,1,0,0,0,1317, + 1320,1,0,0,0,1318,1316,1,0,0,0,1318,1319,1,0,0,0,1319,1322,1,0,0, + 0,1320,1318,1,0,0,0,1321,1311,1,0,0,0,1321,1322,1,0,0,0,1322,1328, + 1,0,0,0,1323,1324,5,188,0,0,1324,1326,3,44,22,0,1325,1327,7,4,0, + 0,1326,1325,1,0,0,0,1326,1327,1,0,0,0,1327,1329,1,0,0,0,1328,1323, + 1,0,0,0,1328,1329,1,0,0,0,1329,1343,1,0,0,0,1330,1331,5,155,0,0, + 1331,1344,3,42,21,0,1332,1333,5,98,0,0,1333,1335,7,5,0,0,1334,1336, + 3,44,22,0,1335,1334,1,0,0,0,1335,1336,1,0,0,0,1336,1337,1,0,0,0, + 1337,1341,7,4,0,0,1338,1342,5,192,0,0,1339,1340,5,304,0,0,1340,1342, + 5,266,0,0,1341,1338,1,0,0,0,1341,1339,1,0,0,0,1342,1344,1,0,0,0, + 1343,1330,1,0,0,0,1343,1332,1,0,0,0,1343,1344,1,0,0,0,1344,41,1, + 0,0,0,1345,1348,5,22,0,0,1346,1348,3,44,22,0,1347,1345,1,0,0,0,1347, + 1346,1,0,0,0,1348,43,1,0,0,0,1349,1350,7,6,0,0,1350,45,1,0,0,0,1351, + 1352,6,23,-1,0,1352,1353,3,48,24,0,1353,1368,1,0,0,0,1354,1355,10, + 2,0,0,1355,1357,5,128,0,0,1356,1358,3,68,34,0,1357,1356,1,0,0,0, + 1357,1358,1,0,0,0,1358,1359,1,0,0,0,1359,1367,3,46,23,3,1360,1361, + 10,1,0,0,1361,1363,7,7,0,0,1362,1364,3,68,34,0,1363,1362,1,0,0,0, + 1363,1364,1,0,0,0,1364,1365,1,0,0,0,1365,1367,3,46,23,2,1366,1354, + 1,0,0,0,1366,1360,1,0,0,0,1367,1370,1,0,0,0,1368,1366,1,0,0,0,1368, + 1369,1,0,0,0,1369,47,1,0,0,0,1370,1368,1,0,0,0,1371,1388,3,52,26, + 0,1372,1373,5,260,0,0,1373,1388,3,256,128,0,1374,1375,5,296,0,0, + 1375,1380,3,136,68,0,1376,1377,5,3,0,0,1377,1379,3,136,68,0,1378, + 1376,1,0,0,0,1379,1382,1,0,0,0,1380,1378,1,0,0,0,1380,1381,1,0,0, + 0,1381,1388,1,0,0,0,1382,1380,1,0,0,0,1383,1384,5,1,0,0,1384,1385, + 3,40,20,0,1385,1386,5,2,0,0,1386,1388,1,0,0,0,1387,1371,1,0,0,0, + 1387,1372,1,0,0,0,1387,1374,1,0,0,0,1387,1383,1,0,0,0,1388,49,1, + 0,0,0,1389,1392,3,276,138,0,1390,1392,3,136,68,0,1391,1389,1,0,0, + 0,1391,1390,1,0,0,0,1392,1394,1,0,0,0,1393,1395,7,8,0,0,1394,1393, + 1,0,0,0,1394,1395,1,0,0,0,1395,1398,1,0,0,0,1396,1397,5,185,0,0, + 1397,1399,7,9,0,0,1398,1396,1,0,0,0,1398,1399,1,0,0,0,1399,51,1, + 0,0,0,1400,1402,5,248,0,0,1401,1403,3,68,34,0,1402,1401,1,0,0,0, + 1402,1403,1,0,0,0,1403,1404,1,0,0,0,1404,1409,3,70,35,0,1405,1406, + 5,3,0,0,1406,1408,3,70,35,0,1407,1405,1,0,0,0,1408,1411,1,0,0,0, + 1409,1407,1,0,0,0,1409,1410,1,0,0,0,1410,1421,1,0,0,0,1411,1409, + 1,0,0,0,1412,1413,5,105,0,0,1413,1418,3,72,36,0,1414,1415,5,3,0, + 0,1415,1417,3,72,36,0,1416,1414,1,0,0,0,1417,1420,1,0,0,0,1418,1416, + 1,0,0,0,1418,1419,1,0,0,0,1419,1422,1,0,0,0,1420,1418,1,0,0,0,1421, + 1412,1,0,0,0,1421,1422,1,0,0,0,1422,1425,1,0,0,0,1423,1424,5,301, + 0,0,1424,1426,3,138,69,0,1425,1423,1,0,0,0,1425,1426,1,0,0,0,1426, + 1430,1,0,0,0,1427,1428,5,114,0,0,1428,1429,5,36,0,0,1429,1431,3, + 54,27,0,1430,1427,1,0,0,0,1430,1431,1,0,0,0,1431,1434,1,0,0,0,1432, + 1433,5,117,0,0,1433,1435,3,138,69,0,1434,1432,1,0,0,0,1434,1435, + 1,0,0,0,1435,1445,1,0,0,0,1436,1437,5,303,0,0,1437,1442,3,62,31, + 0,1438,1439,5,3,0,0,1439,1441,3,62,31,0,1440,1438,1,0,0,0,1441,1444, + 1,0,0,0,1442,1440,1,0,0,0,1442,1443,1,0,0,0,1443,1446,1,0,0,0,1444, + 1442,1,0,0,0,1445,1436,1,0,0,0,1445,1446,1,0,0,0,1446,53,1,0,0,0, + 1447,1449,3,68,34,0,1448,1447,1,0,0,0,1448,1449,1,0,0,0,1449,1450, + 1,0,0,0,1450,1455,3,56,28,0,1451,1452,5,3,0,0,1452,1454,3,56,28, + 0,1453,1451,1,0,0,0,1454,1457,1,0,0,0,1455,1453,1,0,0,0,1455,1456, + 1,0,0,0,1456,55,1,0,0,0,1457,1455,1,0,0,0,1458,1499,3,58,29,0,1459, + 1460,5,238,0,0,1460,1469,5,1,0,0,1461,1466,3,58,29,0,1462,1463,5, + 3,0,0,1463,1465,3,58,29,0,1464,1462,1,0,0,0,1465,1468,1,0,0,0,1466, + 1464,1,0,0,0,1466,1467,1,0,0,0,1467,1470,1,0,0,0,1468,1466,1,0,0, + 0,1469,1461,1,0,0,0,1469,1470,1,0,0,0,1470,1471,1,0,0,0,1471,1499, + 5,2,0,0,1472,1473,5,55,0,0,1473,1482,5,1,0,0,1474,1479,3,58,29,0, + 1475,1476,5,3,0,0,1476,1478,3,58,29,0,1477,1475,1,0,0,0,1478,1481, + 1,0,0,0,1479,1477,1,0,0,0,1479,1480,1,0,0,0,1480,1483,1,0,0,0,1481, + 1479,1,0,0,0,1482,1474,1,0,0,0,1482,1483,1,0,0,0,1483,1484,1,0,0, + 0,1484,1499,5,2,0,0,1485,1486,5,115,0,0,1486,1487,5,252,0,0,1487, + 1488,5,1,0,0,1488,1493,3,58,29,0,1489,1490,5,3,0,0,1490,1492,3,58, + 29,0,1491,1489,1,0,0,0,1492,1495,1,0,0,0,1493,1491,1,0,0,0,1493, + 1494,1,0,0,0,1494,1496,1,0,0,0,1495,1493,1,0,0,0,1496,1497,5,2,0, + 0,1497,1499,1,0,0,0,1498,1458,1,0,0,0,1498,1459,1,0,0,0,1498,1472, + 1,0,0,0,1498,1485,1,0,0,0,1499,57,1,0,0,0,1500,1509,5,1,0,0,1501, + 1506,3,60,30,0,1502,1503,5,3,0,0,1503,1505,3,60,30,0,1504,1502,1, + 0,0,0,1505,1508,1,0,0,0,1506,1504,1,0,0,0,1506,1507,1,0,0,0,1507, + 1510,1,0,0,0,1508,1506,1,0,0,0,1509,1501,1,0,0,0,1509,1510,1,0,0, + 0,1510,1511,1,0,0,0,1511,1514,5,2,0,0,1512,1514,3,60,30,0,1513,1500, + 1,0,0,0,1513,1512,1,0,0,0,1514,59,1,0,0,0,1515,1518,3,276,138,0, + 1516,1518,3,136,68,0,1517,1515,1,0,0,0,1517,1516,1,0,0,0,1518,61, + 1,0,0,0,1519,1520,3,294,147,0,1520,1521,5,28,0,0,1521,1522,5,1,0, + 0,1522,1523,3,64,32,0,1523,1524,5,2,0,0,1524,63,1,0,0,0,1525,1527, + 3,294,147,0,1526,1525,1,0,0,0,1526,1527,1,0,0,0,1527,1538,1,0,0, + 0,1528,1529,5,201,0,0,1529,1530,5,36,0,0,1530,1535,3,136,68,0,1531, + 1532,5,3,0,0,1532,1534,3,136,68,0,1533,1531,1,0,0,0,1534,1537,1, + 0,0,0,1535,1533,1,0,0,0,1535,1536,1,0,0,0,1536,1539,1,0,0,0,1537, + 1535,1,0,0,0,1538,1528,1,0,0,0,1538,1539,1,0,0,0,1539,1550,1,0,0, + 0,1540,1541,5,195,0,0,1541,1542,5,36,0,0,1542,1547,3,50,25,0,1543, + 1544,5,3,0,0,1544,1546,3,50,25,0,1545,1543,1,0,0,0,1546,1549,1,0, + 0,0,1547,1545,1,0,0,0,1547,1548,1,0,0,0,1548,1551,1,0,0,0,1549,1547, + 1,0,0,0,1550,1540,1,0,0,0,1550,1551,1,0,0,0,1551,1553,1,0,0,0,1552, + 1554,3,198,99,0,1553,1552,1,0,0,0,1553,1554,1,0,0,0,1554,65,1,0, + 0,0,1555,1557,3,294,147,0,1556,1558,3,108,54,0,1557,1556,1,0,0,0, + 1557,1558,1,0,0,0,1558,1559,1,0,0,0,1559,1560,5,28,0,0,1560,1561, + 5,1,0,0,1561,1562,3,22,11,0,1562,1563,5,2,0,0,1563,67,1,0,0,0,1564, + 1565,7,10,0,0,1565,69,1,0,0,0,1566,1569,3,276,138,0,1567,1569,3, + 136,68,0,1568,1566,1,0,0,0,1568,1567,1,0,0,0,1569,1574,1,0,0,0,1570, + 1572,5,28,0,0,1571,1570,1,0,0,0,1571,1572,1,0,0,0,1572,1573,1,0, + 0,0,1573,1575,3,294,147,0,1574,1571,1,0,0,0,1574,1575,1,0,0,0,1575, + 1585,1,0,0,0,1576,1577,3,144,72,0,1577,1578,5,4,0,0,1578,1581,5, + 320,0,0,1579,1580,5,28,0,0,1580,1582,3,108,54,0,1581,1579,1,0,0, + 0,1581,1582,1,0,0,0,1582,1585,1,0,0,0,1583,1585,5,320,0,0,1584,1568, + 1,0,0,0,1584,1576,1,0,0,0,1584,1583,1,0,0,0,1585,71,1,0,0,0,1586, + 1587,6,36,-1,0,1587,1588,3,78,39,0,1588,1607,1,0,0,0,1589,1603,10, + 2,0,0,1590,1591,5,54,0,0,1591,1592,5,136,0,0,1592,1604,3,78,39,0, + 1593,1594,3,74,37,0,1594,1595,5,136,0,0,1595,1596,3,72,36,0,1596, + 1597,3,76,38,0,1597,1604,1,0,0,0,1598,1599,5,172,0,0,1599,1600,3, + 74,37,0,1600,1601,5,136,0,0,1601,1602,3,78,39,0,1602,1604,1,0,0, + 0,1603,1590,1,0,0,0,1603,1593,1,0,0,0,1603,1598,1,0,0,0,1604,1606, + 1,0,0,0,1605,1589,1,0,0,0,1606,1609,1,0,0,0,1607,1605,1,0,0,0,1607, + 1608,1,0,0,0,1608,73,1,0,0,0,1609,1607,1,0,0,0,1610,1612,5,125,0, + 0,1611,1610,1,0,0,0,1611,1612,1,0,0,0,1612,1626,1,0,0,0,1613,1615, + 5,152,0,0,1614,1616,5,197,0,0,1615,1614,1,0,0,0,1615,1616,1,0,0, + 0,1616,1626,1,0,0,0,1617,1619,5,234,0,0,1618,1620,5,197,0,0,1619, + 1618,1,0,0,0,1619,1620,1,0,0,0,1620,1626,1,0,0,0,1621,1623,5,106, + 0,0,1622,1624,5,197,0,0,1623,1622,1,0,0,0,1623,1624,1,0,0,0,1624, + 1626,1,0,0,0,1625,1611,1,0,0,0,1625,1613,1,0,0,0,1625,1617,1,0,0, + 0,1625,1621,1,0,0,0,1626,75,1,0,0,0,1627,1628,5,190,0,0,1628,1642, + 3,138,69,0,1629,1630,5,290,0,0,1630,1631,5,1,0,0,1631,1636,3,294, + 147,0,1632,1633,5,3,0,0,1633,1635,3,294,147,0,1634,1632,1,0,0,0, + 1635,1638,1,0,0,0,1636,1634,1,0,0,0,1636,1637,1,0,0,0,1637,1639, + 1,0,0,0,1638,1636,1,0,0,0,1639,1640,5,2,0,0,1640,1642,1,0,0,0,1641, + 1627,1,0,0,0,1641,1629,1,0,0,0,1642,77,1,0,0,0,1643,1650,3,88,44, + 0,1644,1645,5,262,0,0,1645,1646,3,80,40,0,1646,1647,5,1,0,0,1647, + 1648,3,136,68,0,1648,1649,5,2,0,0,1649,1651,1,0,0,0,1650,1644,1, + 0,0,0,1650,1651,1,0,0,0,1651,79,1,0,0,0,1652,1653,7,11,0,0,1653, + 81,1,0,0,0,1654,1655,7,12,0,0,1655,83,1,0,0,0,1656,1663,5,89,0,0, + 1657,1659,5,274,0,0,1658,1660,3,168,84,0,1659,1658,1,0,0,0,1659, + 1660,1,0,0,0,1660,1661,1,0,0,0,1661,1663,3,86,43,0,1662,1656,1,0, + 0,0,1662,1657,1,0,0,0,1663,85,1,0,0,0,1664,1665,5,304,0,0,1665,1669, + 5,51,0,0,1666,1667,5,306,0,0,1667,1669,5,51,0,0,1668,1664,1,0,0, + 0,1668,1666,1,0,0,0,1669,87,1,0,0,0,1670,1753,3,102,51,0,1671,1672, + 5,166,0,0,1672,1683,5,1,0,0,1673,1674,5,201,0,0,1674,1675,5,36,0, + 0,1675,1680,3,136,68,0,1676,1677,5,3,0,0,1677,1679,3,136,68,0,1678, + 1676,1,0,0,0,1679,1682,1,0,0,0,1680,1678,1,0,0,0,1680,1681,1,0,0, + 0,1681,1684,1,0,0,0,1682,1680,1,0,0,0,1683,1673,1,0,0,0,1683,1684, + 1,0,0,0,1684,1695,1,0,0,0,1685,1686,5,195,0,0,1686,1687,5,36,0,0, + 1687,1692,3,50,25,0,1688,1689,5,3,0,0,1689,1691,3,50,25,0,1690,1688, + 1,0,0,0,1691,1694,1,0,0,0,1692,1690,1,0,0,0,1692,1693,1,0,0,0,1693, + 1696,1,0,0,0,1694,1692,1,0,0,0,1695,1685,1,0,0,0,1695,1696,1,0,0, + 0,1696,1706,1,0,0,0,1697,1698,5,168,0,0,1698,1703,3,90,45,0,1699, + 1700,5,3,0,0,1700,1702,3,90,45,0,1701,1699,1,0,0,0,1702,1705,1,0, + 0,0,1703,1701,1,0,0,0,1703,1704,1,0,0,0,1704,1707,1,0,0,0,1705,1703, + 1,0,0,0,1706,1697,1,0,0,0,1706,1707,1,0,0,0,1707,1709,1,0,0,0,1708, + 1710,3,92,46,0,1709,1708,1,0,0,0,1709,1710,1,0,0,0,1710,1714,1,0, + 0,0,1711,1712,5,21,0,0,1712,1713,5,163,0,0,1713,1715,3,96,48,0,1714, + 1711,1,0,0,0,1714,1715,1,0,0,0,1715,1717,1,0,0,0,1716,1718,7,13, + 0,0,1717,1716,1,0,0,0,1717,1718,1,0,0,0,1718,1719,1,0,0,0,1719,1720, + 5,206,0,0,1720,1721,5,1,0,0,1721,1722,3,204,102,0,1722,1732,5,2, + 0,0,1723,1724,5,257,0,0,1724,1729,3,98,49,0,1725,1726,5,3,0,0,1726, + 1728,3,98,49,0,1727,1725,1,0,0,0,1728,1731,1,0,0,0,1729,1727,1,0, + 0,0,1729,1730,1,0,0,0,1730,1733,1,0,0,0,1731,1729,1,0,0,0,1732,1723, + 1,0,0,0,1732,1733,1,0,0,0,1733,1734,1,0,0,0,1734,1735,5,71,0,0,1735, + 1740,3,100,50,0,1736,1737,5,3,0,0,1737,1739,3,100,50,0,1738,1736, + 1,0,0,0,1739,1742,1,0,0,0,1740,1738,1,0,0,0,1740,1741,1,0,0,0,1741, + 1743,1,0,0,0,1742,1740,1,0,0,0,1743,1751,5,2,0,0,1744,1746,5,28, + 0,0,1745,1744,1,0,0,0,1745,1746,1,0,0,0,1746,1747,1,0,0,0,1747,1749, + 3,294,147,0,1748,1750,3,108,54,0,1749,1748,1,0,0,0,1749,1750,1,0, + 0,0,1750,1752,1,0,0,0,1751,1745,1,0,0,0,1751,1752,1,0,0,0,1752,1754, + 1,0,0,0,1753,1671,1,0,0,0,1753,1754,1,0,0,0,1754,89,1,0,0,0,1755, + 1756,3,136,68,0,1756,1757,5,28,0,0,1757,1758,3,294,147,0,1758,91, + 1,0,0,0,1759,1760,5,191,0,0,1760,1761,5,239,0,0,1761,1762,5,207, + 0,0,1762,1771,5,163,0,0,1763,1764,5,22,0,0,1764,1765,5,240,0,0,1765, + 1766,5,207,0,0,1766,1768,5,163,0,0,1767,1769,3,94,47,0,1768,1767, + 1,0,0,0,1768,1769,1,0,0,0,1769,1771,1,0,0,0,1770,1759,1,0,0,0,1770, + 1763,1,0,0,0,1771,93,1,0,0,0,1772,1773,5,253,0,0,1773,1774,5,85, + 0,0,1774,1782,5,165,0,0,1775,1776,5,189,0,0,1776,1777,5,85,0,0,1777, + 1782,5,165,0,0,1778,1779,5,304,0,0,1779,1780,5,284,0,0,1780,1782, + 5,240,0,0,1781,1772,1,0,0,0,1781,1775,1,0,0,0,1781,1778,1,0,0,0, + 1782,95,1,0,0,0,1783,1784,5,5,0,0,1784,1785,5,269,0,0,1785,1786, + 5,174,0,0,1786,1803,5,239,0,0,1787,1788,5,5,0,0,1788,1789,5,204, + 0,0,1789,1790,5,148,0,0,1790,1803,5,239,0,0,1791,1792,5,5,0,0,1792, + 1793,5,269,0,0,1793,1794,5,101,0,0,1794,1803,3,294,147,0,1795,1796, + 5,5,0,0,1796,1797,5,269,0,0,1797,1798,5,148,0,0,1798,1803,3,294, + 147,0,1799,1800,5,5,0,0,1800,1801,5,269,0,0,1801,1803,3,294,147, + 0,1802,1783,1,0,0,0,1802,1787,1,0,0,0,1802,1791,1,0,0,0,1802,1795, + 1,0,0,0,1802,1799,1,0,0,0,1803,97,1,0,0,0,1804,1805,3,294,147,0, + 1805,1806,5,312,0,0,1806,1807,5,1,0,0,1807,1812,3,294,147,0,1808, + 1809,5,3,0,0,1809,1811,3,294,147,0,1810,1808,1,0,0,0,1811,1814,1, + 0,0,0,1812,1810,1,0,0,0,1812,1813,1,0,0,0,1813,1815,1,0,0,0,1814, + 1812,1,0,0,0,1815,1816,5,2,0,0,1816,99,1,0,0,0,1817,1818,3,294,147, + 0,1818,1819,5,28,0,0,1819,1820,3,136,68,0,1820,101,1,0,0,0,1821, + 1829,3,110,55,0,1822,1824,5,28,0,0,1823,1822,1,0,0,0,1823,1824,1, + 0,0,0,1824,1825,1,0,0,0,1825,1827,3,294,147,0,1826,1828,3,108,54, + 0,1827,1826,1,0,0,0,1827,1828,1,0,0,0,1828,1830,1,0,0,0,1829,1823, + 1,0,0,0,1829,1830,1,0,0,0,1830,103,1,0,0,0,1831,1832,5,1,0,0,1832, + 1837,3,278,139,0,1833,1834,5,3,0,0,1834,1836,3,278,139,0,1835,1833, + 1,0,0,0,1836,1839,1,0,0,0,1837,1835,1,0,0,0,1837,1838,1,0,0,0,1838, + 1840,1,0,0,0,1839,1837,1,0,0,0,1840,1841,5,2,0,0,1841,105,1,0,0, + 0,1842,1843,5,1,0,0,1843,1848,3,276,138,0,1844,1845,5,3,0,0,1845, + 1847,3,276,138,0,1846,1844,1,0,0,0,1847,1850,1,0,0,0,1848,1846,1, + 0,0,0,1848,1849,1,0,0,0,1849,1851,1,0,0,0,1850,1848,1,0,0,0,1851, + 1852,5,2,0,0,1852,107,1,0,0,0,1853,1854,5,1,0,0,1854,1859,3,294, + 147,0,1855,1856,5,3,0,0,1856,1858,3,294,147,0,1857,1855,1,0,0,0, + 1858,1861,1,0,0,0,1859,1857,1,0,0,0,1859,1860,1,0,0,0,1860,1862, + 1,0,0,0,1861,1859,1,0,0,0,1862,1863,5,2,0,0,1863,109,1,0,0,0,1864, + 1866,3,254,127,0,1865,1867,3,282,141,0,1866,1865,1,0,0,0,1866,1867, + 1,0,0,0,1867,1936,1,0,0,0,1868,1869,5,1,0,0,1869,1870,3,22,11,0, + 1870,1871,5,2,0,0,1871,1936,1,0,0,0,1872,1873,5,285,0,0,1873,1874, + 5,1,0,0,1874,1879,3,136,68,0,1875,1876,5,3,0,0,1876,1878,3,136,68, + 0,1877,1875,1,0,0,0,1878,1881,1,0,0,0,1879,1877,1,0,0,0,1879,1880, + 1,0,0,0,1880,1882,1,0,0,0,1881,1879,1,0,0,0,1882,1885,5,2,0,0,1883, + 1884,5,304,0,0,1884,1886,5,196,0,0,1885,1883,1,0,0,0,1885,1886,1, + 0,0,0,1886,1936,1,0,0,0,1887,1888,5,149,0,0,1888,1889,5,1,0,0,1889, + 1890,3,22,11,0,1890,1891,5,2,0,0,1891,1936,1,0,0,0,1892,1893,5,260, + 0,0,1893,1894,5,1,0,0,1894,1895,3,122,61,0,1895,1896,5,2,0,0,1896, + 1936,1,0,0,0,1897,1898,5,1,0,0,1898,1899,3,72,36,0,1899,1900,5,2, + 0,0,1900,1936,1,0,0,0,1901,1902,5,142,0,0,1902,1903,5,1,0,0,1903, + 1904,3,146,73,0,1904,1905,5,45,0,0,1905,1906,5,1,0,0,1906,1911,3, + 112,56,0,1907,1908,5,3,0,0,1908,1910,3,112,56,0,1909,1907,1,0,0, + 0,1910,1913,1,0,0,0,1911,1909,1,0,0,0,1911,1912,1,0,0,0,1912,1914, + 1,0,0,0,1913,1911,1,0,0,0,1914,1926,5,2,0,0,1915,1916,5,210,0,0, + 1916,1917,5,1,0,0,1917,1918,3,114,57,0,1918,1919,5,2,0,0,1919,1927, + 1,0,0,0,1920,1921,5,210,0,0,1921,1922,5,70,0,0,1922,1923,5,1,0,0, + 1923,1924,3,120,60,0,1924,1925,5,2,0,0,1925,1927,1,0,0,0,1926,1915, + 1,0,0,0,1926,1920,1,0,0,0,1926,1927,1,0,0,0,1927,1931,1,0,0,0,1928, + 1929,7,14,0,0,1929,1930,5,190,0,0,1930,1932,5,89,0,0,1931,1928,1, + 0,0,0,1931,1932,1,0,0,0,1932,1933,1,0,0,0,1933,1934,5,2,0,0,1934, + 1936,1,0,0,0,1935,1864,1,0,0,0,1935,1868,1,0,0,0,1935,1872,1,0,0, + 0,1935,1887,1,0,0,0,1935,1892,1,0,0,0,1935,1897,1,0,0,0,1935,1901, + 1,0,0,0,1936,111,1,0,0,0,1937,1938,3,294,147,0,1938,1939,5,103,0, + 0,1939,1940,5,196,0,0,1940,2015,1,0,0,0,1941,1942,3,294,147,0,1942, + 1945,3,184,92,0,1943,1944,5,205,0,0,1944,1946,3,168,84,0,1945,1943, + 1,0,0,0,1945,1946,1,0,0,0,1946,1951,1,0,0,0,1947,1948,3,156,78,0, + 1948,1949,5,190,0,0,1949,1950,5,85,0,0,1950,1952,1,0,0,0,1951,1947, + 1,0,0,0,1951,1952,1,0,0,0,1952,1957,1,0,0,0,1953,1954,3,156,78,0, + 1954,1955,5,190,0,0,1955,1956,5,89,0,0,1956,1958,1,0,0,0,1957,1953, + 1,0,0,0,1957,1958,1,0,0,0,1958,2015,1,0,0,0,1959,1960,3,294,147, + 0,1960,1961,3,184,92,0,1961,1962,5,104,0,0,1962,1965,3,150,75,0, + 1963,1964,5,205,0,0,1964,1966,3,168,84,0,1965,1963,1,0,0,0,1965, + 1966,1,0,0,0,1966,1970,1,0,0,0,1967,1968,3,158,79,0,1968,1969,5, + 308,0,0,1969,1971,1,0,0,0,1970,1967,1,0,0,0,1970,1971,1,0,0,0,1971, + 1979,1,0,0,0,1972,1973,7,15,0,0,1973,1977,5,218,0,0,1974,1975,5, + 190,0,0,1975,1976,5,242,0,0,1976,1978,5,264,0,0,1977,1974,1,0,0, + 0,1977,1978,1,0,0,0,1978,1980,1,0,0,0,1979,1972,1,0,0,0,1979,1980, + 1,0,0,0,1980,1985,1,0,0,0,1981,1982,3,160,80,0,1982,1983,5,190,0, + 0,1983,1984,5,85,0,0,1984,1986,1,0,0,0,1985,1981,1,0,0,0,1985,1986, + 1,0,0,0,1986,1991,1,0,0,0,1987,1988,3,160,80,0,1988,1989,5,190,0, + 0,1989,1990,5,89,0,0,1990,1992,1,0,0,0,1991,1987,1,0,0,0,1991,1992, + 1,0,0,0,1992,2015,1,0,0,0,1993,1995,5,173,0,0,1994,1996,5,205,0, + 0,1995,1994,1,0,0,0,1995,1996,1,0,0,0,1996,1997,1,0,0,0,1997,2000, + 3,168,84,0,1998,1999,5,28,0,0,1999,2001,3,294,147,0,2000,1998,1, + 0,0,0,2000,2001,1,0,0,0,2001,2002,1,0,0,0,2002,2003,5,45,0,0,2003, + 2004,5,1,0,0,2004,2009,3,112,56,0,2005,2006,5,3,0,0,2006,2008,3, + 112,56,0,2007,2005,1,0,0,0,2008,2011,1,0,0,0,2009,2007,1,0,0,0,2009, + 2010,1,0,0,0,2010,2012,1,0,0,0,2011,2009,1,0,0,0,2012,2013,5,2,0, + 0,2013,2015,1,0,0,0,2014,1937,1,0,0,0,2014,1941,1,0,0,0,2014,1959, + 1,0,0,0,2014,1993,1,0,0,0,2015,113,1,0,0,0,2016,2042,3,116,58,0, + 2017,2018,3,116,58,0,2018,2019,7,16,0,0,2019,2020,3,118,59,0,2020, + 2042,1,0,0,0,2021,2022,3,118,59,0,2022,2023,5,281,0,0,2023,2028, + 3,118,59,0,2024,2025,5,281,0,0,2025,2027,3,118,59,0,2026,2024,1, + 0,0,0,2027,2030,1,0,0,0,2028,2026,1,0,0,0,2028,2029,1,0,0,0,2029, + 2042,1,0,0,0,2030,2028,1,0,0,0,2031,2032,3,118,59,0,2032,2033,5, + 54,0,0,2033,2038,3,118,59,0,2034,2035,5,54,0,0,2035,2037,3,118,59, + 0,2036,2034,1,0,0,0,2037,2040,1,0,0,0,2038,2036,1,0,0,0,2038,2039, + 1,0,0,0,2039,2042,1,0,0,0,2040,2038,1,0,0,0,2041,2016,1,0,0,0,2041, + 2017,1,0,0,0,2041,2021,1,0,0,0,2041,2031,1,0,0,0,2042,115,1,0,0, + 0,2043,2044,3,294,147,0,2044,117,1,0,0,0,2045,2051,3,116,58,0,2046, + 2047,5,1,0,0,2047,2048,3,114,57,0,2048,2049,5,2,0,0,2049,2051,1, + 0,0,0,2050,2045,1,0,0,0,2050,2046,1,0,0,0,2051,119,1,0,0,0,2052, + 2055,7,16,0,0,2053,2054,5,3,0,0,2054,2056,7,17,0,0,2055,2053,1,0, + 0,0,2055,2056,1,0,0,0,2056,2063,1,0,0,0,2057,2060,7,17,0,0,2058, + 2059,5,3,0,0,2059,2061,7,16,0,0,2060,2058,1,0,0,0,2060,2061,1,0, + 0,0,2061,2063,1,0,0,0,2062,2052,1,0,0,0,2062,2057,1,0,0,0,2063,121, + 1,0,0,0,2064,2065,3,272,136,0,2065,2074,5,1,0,0,2066,2071,3,124, + 62,0,2067,2068,5,3,0,0,2068,2070,3,124,62,0,2069,2067,1,0,0,0,2070, + 2073,1,0,0,0,2071,2069,1,0,0,0,2071,2072,1,0,0,0,2072,2075,1,0,0, + 0,2073,2071,1,0,0,0,2074,2066,1,0,0,0,2074,2075,1,0,0,0,2075,2085, + 1,0,0,0,2076,2077,5,52,0,0,2077,2082,3,134,67,0,2078,2079,5,3,0, + 0,2079,2081,3,134,67,0,2080,2078,1,0,0,0,2081,2084,1,0,0,0,2082, + 2080,1,0,0,0,2082,2083,1,0,0,0,2083,2086,1,0,0,0,2084,2082,1,0,0, + 0,2085,2076,1,0,0,0,2085,2086,1,0,0,0,2086,2087,1,0,0,0,2087,2088, + 5,2,0,0,2088,123,1,0,0,0,2089,2090,3,294,147,0,2090,2091,5,6,0,0, + 2091,2093,1,0,0,0,2092,2089,1,0,0,0,2092,2093,1,0,0,0,2093,2097, + 1,0,0,0,2094,2098,3,126,63,0,2095,2098,3,130,65,0,2096,2098,3,136, + 68,0,2097,2094,1,0,0,0,2097,2095,1,0,0,0,2097,2096,1,0,0,0,2098, + 125,1,0,0,0,2099,2117,3,128,64,0,2100,2101,5,201,0,0,2101,2115,5, + 36,0,0,2102,2111,5,1,0,0,2103,2108,3,136,68,0,2104,2105,5,3,0,0, + 2105,2107,3,136,68,0,2106,2104,1,0,0,0,2107,2110,1,0,0,0,2108,2106, + 1,0,0,0,2108,2109,1,0,0,0,2109,2112,1,0,0,0,2110,2108,1,0,0,0,2111, + 2103,1,0,0,0,2111,2112,1,0,0,0,2112,2113,1,0,0,0,2113,2116,5,2,0, + 0,2114,2116,3,136,68,0,2115,2102,1,0,0,0,2115,2114,1,0,0,0,2116, + 2118,1,0,0,0,2117,2100,1,0,0,0,2117,2118,1,0,0,0,2118,2125,1,0,0, + 0,2119,2120,5,217,0,0,2120,2121,5,300,0,0,2121,2126,5,85,0,0,2122, + 2123,5,144,0,0,2123,2124,5,300,0,0,2124,2126,5,85,0,0,2125,2119, + 1,0,0,0,2125,2122,1,0,0,0,2125,2126,1,0,0,0,2126,2143,1,0,0,0,2127, + 2128,5,195,0,0,2128,2141,5,36,0,0,2129,2130,5,1,0,0,2130,2135,3, + 50,25,0,2131,2132,5,3,0,0,2132,2134,3,50,25,0,2133,2131,1,0,0,0, + 2134,2137,1,0,0,0,2135,2133,1,0,0,0,2135,2136,1,0,0,0,2136,2138, + 1,0,0,0,2137,2135,1,0,0,0,2138,2139,5,2,0,0,2139,2142,1,0,0,0,2140, + 2142,3,50,25,0,2141,2129,1,0,0,0,2141,2140,1,0,0,0,2142,2144,1,0, + 0,0,2143,2127,1,0,0,0,2143,2144,1,0,0,0,2144,127,1,0,0,0,2145,2146, + 5,260,0,0,2146,2147,5,1,0,0,2147,2148,3,256,128,0,2148,2156,5,2, + 0,0,2149,2151,5,28,0,0,2150,2149,1,0,0,0,2150,2151,1,0,0,0,2151, + 2152,1,0,0,0,2152,2154,3,294,147,0,2153,2155,3,108,54,0,2154,2153, + 1,0,0,0,2154,2155,1,0,0,0,2155,2157,1,0,0,0,2156,2150,1,0,0,0,2156, + 2157,1,0,0,0,2157,2172,1,0,0,0,2158,2159,5,260,0,0,2159,2160,5,1, + 0,0,2160,2161,3,22,11,0,2161,2169,5,2,0,0,2162,2164,5,28,0,0,2163, + 2162,1,0,0,0,2163,2164,1,0,0,0,2164,2165,1,0,0,0,2165,2167,3,294, + 147,0,2166,2168,3,108,54,0,2167,2166,1,0,0,0,2167,2168,1,0,0,0,2168, + 2170,1,0,0,0,2169,2163,1,0,0,0,2169,2170,1,0,0,0,2170,2172,1,0,0, + 0,2171,2145,1,0,0,0,2171,2158,1,0,0,0,2172,129,1,0,0,0,2173,2174, + 5,77,0,0,2174,2175,5,1,0,0,2175,2180,3,132,66,0,2176,2177,5,3,0, + 0,2177,2179,3,132,66,0,2178,2176,1,0,0,0,2179,2182,1,0,0,0,2180, + 2178,1,0,0,0,2180,2181,1,0,0,0,2181,2183,1,0,0,0,2182,2180,1,0,0, + 0,2183,2184,5,2,0,0,2184,2192,1,0,0,0,2185,2186,5,41,0,0,2186,2187, + 5,1,0,0,2187,2188,5,183,0,0,2188,2189,5,28,0,0,2189,2190,5,77,0, + 0,2190,2192,5,2,0,0,2191,2173,1,0,0,0,2191,2185,1,0,0,0,2192,131, + 1,0,0,0,2193,2195,3,294,147,0,2194,2196,3,184,92,0,2195,2194,1,0, + 0,0,2195,2196,1,0,0,0,2196,133,1,0,0,0,2197,2198,5,1,0,0,2198,2199, + 3,280,140,0,2199,2200,5,3,0,0,2200,2205,3,280,140,0,2201,2202,5, + 3,0,0,2202,2204,3,280,140,0,2203,2201,1,0,0,0,2204,2207,1,0,0,0, + 2205,2203,1,0,0,0,2205,2206,1,0,0,0,2206,2208,1,0,0,0,2207,2205, + 1,0,0,0,2208,2209,5,2,0,0,2209,135,1,0,0,0,2210,2211,3,138,69,0, + 2211,137,1,0,0,0,2212,2213,6,69,-1,0,2213,2215,3,142,71,0,2214,2216, + 3,140,70,0,2215,2214,1,0,0,0,2215,2216,1,0,0,0,2216,2220,1,0,0,0, + 2217,2218,5,182,0,0,2218,2220,3,138,69,3,2219,2212,1,0,0,0,2219, + 2217,1,0,0,0,2220,2229,1,0,0,0,2221,2222,10,2,0,0,2222,2223,5,25, + 0,0,2223,2228,3,138,69,3,2224,2225,10,1,0,0,2225,2226,5,194,0,0, + 2226,2228,3,138,69,2,2227,2221,1,0,0,0,2227,2224,1,0,0,0,2228,2231, + 1,0,0,0,2229,2227,1,0,0,0,2229,2230,1,0,0,0,2230,139,1,0,0,0,2231, + 2229,1,0,0,0,2232,2233,3,172,86,0,2233,2234,3,142,71,0,2234,2294, + 1,0,0,0,2235,2236,3,172,86,0,2236,2237,3,174,87,0,2237,2238,5,1, + 0,0,2238,2239,3,22,11,0,2239,2240,5,2,0,0,2240,2294,1,0,0,0,2241, + 2243,5,182,0,0,2242,2241,1,0,0,0,2242,2243,1,0,0,0,2243,2244,1,0, + 0,0,2244,2245,5,34,0,0,2245,2246,3,142,71,0,2246,2247,5,25,0,0,2247, + 2248,3,142,71,0,2248,2294,1,0,0,0,2249,2251,5,182,0,0,2250,2249, + 1,0,0,0,2250,2251,1,0,0,0,2251,2252,1,0,0,0,2252,2253,5,122,0,0, + 2253,2254,5,1,0,0,2254,2259,3,136,68,0,2255,2256,5,3,0,0,2256,2258, + 3,136,68,0,2257,2255,1,0,0,0,2258,2261,1,0,0,0,2259,2257,1,0,0,0, + 2259,2260,1,0,0,0,2260,2262,1,0,0,0,2261,2259,1,0,0,0,2262,2263, + 5,2,0,0,2263,2294,1,0,0,0,2264,2266,5,182,0,0,2265,2264,1,0,0,0, + 2265,2266,1,0,0,0,2266,2267,1,0,0,0,2267,2268,5,122,0,0,2268,2269, + 5,1,0,0,2269,2270,3,22,11,0,2270,2271,5,2,0,0,2271,2294,1,0,0,0, + 2272,2274,5,182,0,0,2273,2272,1,0,0,0,2273,2274,1,0,0,0,2274,2275, + 1,0,0,0,2275,2276,5,154,0,0,2276,2279,3,142,71,0,2277,2278,5,90, + 0,0,2278,2280,3,142,71,0,2279,2277,1,0,0,0,2279,2280,1,0,0,0,2280, + 2294,1,0,0,0,2281,2283,5,133,0,0,2282,2284,5,182,0,0,2283,2282,1, + 0,0,0,2283,2284,1,0,0,0,2284,2285,1,0,0,0,2285,2294,5,183,0,0,2286, + 2288,5,133,0,0,2287,2289,5,182,0,0,2288,2287,1,0,0,0,2288,2289,1, + 0,0,0,2289,2290,1,0,0,0,2290,2291,5,79,0,0,2291,2292,5,105,0,0,2292, + 2294,3,142,71,0,2293,2232,1,0,0,0,2293,2235,1,0,0,0,2293,2242,1, + 0,0,0,2293,2250,1,0,0,0,2293,2265,1,0,0,0,2293,2273,1,0,0,0,2293, + 2281,1,0,0,0,2293,2286,1,0,0,0,2294,141,1,0,0,0,2295,2296,6,71,-1, + 0,2296,2300,3,144,72,0,2297,2298,7,18,0,0,2298,2300,3,142,71,4,2299, + 2295,1,0,0,0,2299,2297,1,0,0,0,2300,2315,1,0,0,0,2301,2302,10,3, + 0,0,2302,2303,7,19,0,0,2303,2314,3,142,71,4,2304,2305,10,2,0,0,2305, + 2306,7,18,0,0,2306,2314,3,142,71,3,2307,2308,10,1,0,0,2308,2309, + 5,323,0,0,2309,2314,3,142,71,2,2310,2311,10,5,0,0,2311,2312,5,30, + 0,0,2312,2314,3,170,85,0,2313,2301,1,0,0,0,2313,2304,1,0,0,0,2313, + 2307,1,0,0,0,2313,2310,1,0,0,0,2314,2317,1,0,0,0,2315,2313,1,0,0, + 0,2315,2316,1,0,0,0,2316,143,1,0,0,0,2317,2315,1,0,0,0,2318,2319, + 6,72,-1,0,2319,2772,5,183,0,0,2320,2772,3,178,89,0,2321,2322,3,294, + 147,0,2322,2323,3,168,84,0,2323,2772,1,0,0,0,2324,2325,5,82,0,0, + 2325,2326,5,213,0,0,2326,2772,3,168,84,0,2327,2772,3,296,148,0,2328, + 2772,3,176,88,0,2329,2772,3,168,84,0,2330,2772,5,328,0,0,2331,2772, + 5,324,0,0,2332,2333,5,211,0,0,2333,2334,5,1,0,0,2334,2335,3,142, + 71,0,2335,2336,5,122,0,0,2336,2337,3,142,71,0,2337,2338,5,2,0,0, + 2338,2772,1,0,0,0,2339,2340,5,1,0,0,2340,2343,3,136,68,0,2341,2342, + 5,3,0,0,2342,2344,3,136,68,0,2343,2341,1,0,0,0,2344,2345,1,0,0,0, + 2345,2343,1,0,0,0,2345,2346,1,0,0,0,2346,2347,1,0,0,0,2347,2348, + 5,2,0,0,2348,2772,1,0,0,0,2349,2350,5,239,0,0,2350,2351,5,1,0,0, + 2351,2356,3,136,68,0,2352,2353,5,3,0,0,2353,2355,3,136,68,0,2354, + 2352,1,0,0,0,2355,2358,1,0,0,0,2356,2354,1,0,0,0,2356,2357,1,0,0, + 0,2357,2359,1,0,0,0,2358,2356,1,0,0,0,2359,2360,5,2,0,0,2360,2772, + 1,0,0,0,2361,2362,5,156,0,0,2362,2364,5,1,0,0,2363,2365,3,68,34, + 0,2364,2363,1,0,0,0,2364,2365,1,0,0,0,2365,2366,1,0,0,0,2366,2369, + 3,136,68,0,2367,2368,5,3,0,0,2368,2370,3,168,84,0,2369,2367,1,0, + 0,0,2369,2370,1,0,0,0,2370,2374,1,0,0,0,2371,2372,5,190,0,0,2372, + 2373,5,200,0,0,2373,2375,3,84,42,0,2374,2371,1,0,0,0,2374,2375,1, + 0,0,0,2375,2376,1,0,0,0,2376,2377,5,2,0,0,2377,2378,5,305,0,0,2378, + 2379,5,114,0,0,2379,2380,5,1,0,0,2380,2381,5,195,0,0,2381,2382,5, + 36,0,0,2382,2387,3,50,25,0,2383,2384,5,3,0,0,2384,2386,3,50,25,0, + 2385,2383,1,0,0,0,2386,2389,1,0,0,0,2387,2385,1,0,0,0,2387,2388, + 1,0,0,0,2388,2390,1,0,0,0,2389,2387,1,0,0,0,2390,2391,5,2,0,0,2391, + 2393,1,0,0,0,2392,2394,3,192,96,0,2393,2392,1,0,0,0,2393,2394,1, + 0,0,0,2394,2772,1,0,0,0,2395,2397,3,164,82,0,2396,2395,1,0,0,0,2396, + 2397,1,0,0,0,2397,2398,1,0,0,0,2398,2399,3,272,136,0,2399,2403,5, + 1,0,0,2400,2401,3,294,147,0,2401,2402,5,4,0,0,2402,2404,1,0,0,0, + 2403,2400,1,0,0,0,2403,2404,1,0,0,0,2404,2405,1,0,0,0,2405,2406, + 5,320,0,0,2406,2408,5,2,0,0,2407,2409,3,192,96,0,2408,2407,1,0,0, + 0,2408,2409,1,0,0,0,2409,2411,1,0,0,0,2410,2412,3,196,98,0,2411, + 2410,1,0,0,0,2411,2412,1,0,0,0,2412,2772,1,0,0,0,2413,2415,3,164, + 82,0,2414,2413,1,0,0,0,2414,2415,1,0,0,0,2415,2416,1,0,0,0,2416, + 2417,3,272,136,0,2417,2429,5,1,0,0,2418,2420,3,68,34,0,2419,2418, + 1,0,0,0,2419,2420,1,0,0,0,2420,2421,1,0,0,0,2421,2426,3,136,68,0, + 2422,2423,5,3,0,0,2423,2425,3,136,68,0,2424,2422,1,0,0,0,2425,2428, + 1,0,0,0,2426,2424,1,0,0,0,2426,2427,1,0,0,0,2427,2430,1,0,0,0,2428, + 2426,1,0,0,0,2429,2419,1,0,0,0,2429,2430,1,0,0,0,2430,2441,1,0,0, + 0,2431,2432,5,195,0,0,2432,2433,5,36,0,0,2433,2438,3,50,25,0,2434, + 2435,5,3,0,0,2435,2437,3,50,25,0,2436,2434,1,0,0,0,2437,2440,1,0, + 0,0,2438,2436,1,0,0,0,2438,2439,1,0,0,0,2439,2442,1,0,0,0,2440,2438, + 1,0,0,0,2441,2431,1,0,0,0,2441,2442,1,0,0,0,2442,2443,1,0,0,0,2443, + 2445,5,2,0,0,2444,2446,3,192,96,0,2445,2444,1,0,0,0,2445,2446,1, + 0,0,0,2446,2451,1,0,0,0,2447,2449,3,166,83,0,2448,2447,1,0,0,0,2448, + 2449,1,0,0,0,2449,2450,1,0,0,0,2450,2452,3,196,98,0,2451,2448,1, + 0,0,0,2451,2452,1,0,0,0,2452,2772,1,0,0,0,2453,2454,3,294,147,0, + 2454,2455,3,196,98,0,2455,2772,1,0,0,0,2456,2457,3,294,147,0,2457, + 2458,5,7,0,0,2458,2459,3,136,68,0,2459,2772,1,0,0,0,2460,2469,5, + 1,0,0,2461,2466,3,294,147,0,2462,2463,5,3,0,0,2463,2465,3,294,147, + 0,2464,2462,1,0,0,0,2465,2468,1,0,0,0,2466,2464,1,0,0,0,2466,2467, + 1,0,0,0,2467,2470,1,0,0,0,2468,2466,1,0,0,0,2469,2461,1,0,0,0,2469, + 2470,1,0,0,0,2470,2471,1,0,0,0,2471,2472,5,2,0,0,2472,2473,5,7,0, + 0,2473,2772,3,136,68,0,2474,2475,5,1,0,0,2475,2476,3,22,11,0,2476, + 2477,5,2,0,0,2477,2772,1,0,0,0,2478,2479,5,94,0,0,2479,2480,5,1, + 0,0,2480,2481,3,22,11,0,2481,2482,5,2,0,0,2482,2772,1,0,0,0,2483, + 2484,5,40,0,0,2484,2486,3,136,68,0,2485,2487,3,190,95,0,2486,2485, + 1,0,0,0,2487,2488,1,0,0,0,2488,2486,1,0,0,0,2488,2489,1,0,0,0,2489, + 2492,1,0,0,0,2490,2491,5,84,0,0,2491,2493,3,136,68,0,2492,2490,1, + 0,0,0,2492,2493,1,0,0,0,2493,2494,1,0,0,0,2494,2495,5,88,0,0,2495, + 2772,1,0,0,0,2496,2498,5,40,0,0,2497,2499,3,190,95,0,2498,2497,1, + 0,0,0,2499,2500,1,0,0,0,2500,2498,1,0,0,0,2500,2501,1,0,0,0,2501, + 2504,1,0,0,0,2502,2503,5,84,0,0,2503,2505,3,136,68,0,2504,2502,1, + 0,0,0,2504,2505,1,0,0,0,2505,2506,1,0,0,0,2506,2507,5,88,0,0,2507, + 2772,1,0,0,0,2508,2509,5,41,0,0,2509,2510,5,1,0,0,2510,2511,3,136, + 68,0,2511,2512,5,28,0,0,2512,2513,3,184,92,0,2513,2514,5,2,0,0,2514, + 2772,1,0,0,0,2515,2516,5,275,0,0,2516,2517,5,1,0,0,2517,2518,3,136, + 68,0,2518,2519,5,28,0,0,2519,2520,3,184,92,0,2520,2521,5,2,0,0,2521, + 2772,1,0,0,0,2522,2523,5,27,0,0,2523,2532,5,8,0,0,2524,2529,3,136, + 68,0,2525,2526,5,3,0,0,2526,2528,3,136,68,0,2527,2525,1,0,0,0,2528, + 2531,1,0,0,0,2529,2527,1,0,0,0,2529,2530,1,0,0,0,2530,2533,1,0,0, + 0,2531,2529,1,0,0,0,2532,2524,1,0,0,0,2532,2533,1,0,0,0,2533,2534, + 1,0,0,0,2534,2772,5,9,0,0,2535,2772,3,294,147,0,2536,2772,5,58,0, + 0,2537,2541,5,62,0,0,2538,2539,5,1,0,0,2539,2540,5,329,0,0,2540, + 2542,5,2,0,0,2541,2538,1,0,0,0,2541,2542,1,0,0,0,2542,2772,1,0,0, + 0,2543,2547,5,63,0,0,2544,2545,5,1,0,0,2545,2546,5,329,0,0,2546, + 2548,5,2,0,0,2547,2544,1,0,0,0,2547,2548,1,0,0,0,2548,2772,1,0,0, + 0,2549,2553,5,158,0,0,2550,2551,5,1,0,0,2551,2552,5,329,0,0,2552, + 2554,5,2,0,0,2553,2550,1,0,0,0,2553,2554,1,0,0,0,2554,2772,1,0,0, + 0,2555,2559,5,159,0,0,2556,2557,5,1,0,0,2557,2558,5,329,0,0,2558, + 2560,5,2,0,0,2559,2556,1,0,0,0,2559,2560,1,0,0,0,2560,2772,1,0,0, + 0,2561,2772,5,64,0,0,2562,2772,5,57,0,0,2563,2772,5,61,0,0,2564, + 2772,5,59,0,0,2565,2566,5,272,0,0,2566,2574,5,1,0,0,2567,2569,3, + 82,41,0,2568,2567,1,0,0,0,2568,2569,1,0,0,0,2569,2571,1,0,0,0,2570, + 2572,3,142,71,0,2571,2570,1,0,0,0,2571,2572,1,0,0,0,2572,2573,1, + 0,0,0,2573,2575,5,105,0,0,2574,2568,1,0,0,0,2574,2575,1,0,0,0,2575, + 2576,1,0,0,0,2576,2577,3,142,71,0,2577,2578,5,2,0,0,2578,2772,1, + 0,0,0,2579,2580,5,272,0,0,2580,2581,5,1,0,0,2581,2582,3,142,71,0, + 2582,2583,5,3,0,0,2583,2584,3,142,71,0,2584,2585,5,2,0,0,2585,2772, + 1,0,0,0,2586,2587,5,258,0,0,2587,2588,5,1,0,0,2588,2589,3,142,71, + 0,2589,2590,5,105,0,0,2590,2593,3,142,71,0,2591,2592,5,103,0,0,2592, + 2594,3,142,71,0,2593,2591,1,0,0,0,2593,2594,1,0,0,0,2594,2595,1, + 0,0,0,2595,2596,5,2,0,0,2596,2772,1,0,0,0,2597,2598,5,181,0,0,2598, + 2599,5,1,0,0,2599,2602,3,142,71,0,2600,2601,5,3,0,0,2601,2603,3, + 182,91,0,2602,2600,1,0,0,0,2602,2603,1,0,0,0,2603,2604,1,0,0,0,2604, + 2605,5,2,0,0,2605,2772,1,0,0,0,2606,2607,5,96,0,0,2607,2608,5,1, + 0,0,2608,2609,3,294,147,0,2609,2610,5,105,0,0,2610,2611,3,142,71, + 0,2611,2612,5,2,0,0,2612,2772,1,0,0,0,2613,2614,5,1,0,0,2614,2615, + 3,136,68,0,2615,2616,5,2,0,0,2616,2772,1,0,0,0,2617,2618,5,115,0, + 0,2618,2627,5,1,0,0,2619,2624,3,280,140,0,2620,2621,5,3,0,0,2621, + 2623,3,280,140,0,2622,2620,1,0,0,0,2623,2626,1,0,0,0,2624,2622,1, + 0,0,0,2624,2625,1,0,0,0,2625,2628,1,0,0,0,2626,2624,1,0,0,0,2627, + 2619,1,0,0,0,2627,2628,1,0,0,0,2628,2629,1,0,0,0,2629,2772,5,2,0, + 0,2630,2631,5,139,0,0,2631,2632,5,1,0,0,2632,2637,3,146,73,0,2633, + 2634,3,154,77,0,2634,2635,5,190,0,0,2635,2636,5,89,0,0,2636,2638, + 1,0,0,0,2637,2633,1,0,0,0,2637,2638,1,0,0,0,2638,2639,1,0,0,0,2639, + 2640,5,2,0,0,2640,2772,1,0,0,0,2641,2642,5,143,0,0,2642,2643,5,1, + 0,0,2643,2646,3,146,73,0,2644,2645,5,231,0,0,2645,2647,3,184,92, + 0,2646,2644,1,0,0,0,2646,2647,1,0,0,0,2647,2652,1,0,0,0,2648,2649, + 3,156,78,0,2649,2650,5,190,0,0,2650,2651,5,85,0,0,2651,2653,1,0, + 0,0,2652,2648,1,0,0,0,2652,2653,1,0,0,0,2653,2658,1,0,0,0,2654,2655, + 3,156,78,0,2655,2656,5,190,0,0,2656,2657,5,89,0,0,2657,2659,1,0, + 0,0,2658,2654,1,0,0,0,2658,2659,1,0,0,0,2659,2660,1,0,0,0,2660,2661, + 5,2,0,0,2661,2772,1,0,0,0,2662,2663,5,141,0,0,2663,2664,5,1,0,0, + 2664,2671,3,146,73,0,2665,2666,5,231,0,0,2666,2669,3,184,92,0,2667, + 2668,5,104,0,0,2668,2670,3,150,75,0,2669,2667,1,0,0,0,2669,2670, + 1,0,0,0,2670,2672,1,0,0,0,2671,2665,1,0,0,0,2671,2672,1,0,0,0,2672, + 2676,1,0,0,0,2673,2674,3,158,79,0,2674,2675,5,308,0,0,2675,2677, + 1,0,0,0,2676,2673,1,0,0,0,2676,2677,1,0,0,0,2677,2685,1,0,0,0,2678, + 2679,7,15,0,0,2679,2683,5,218,0,0,2680,2681,5,190,0,0,2681,2682, + 5,242,0,0,2682,2684,5,264,0,0,2683,2680,1,0,0,0,2683,2684,1,0,0, + 0,2684,2686,1,0,0,0,2685,2678,1,0,0,0,2685,2686,1,0,0,0,2686,2691, + 1,0,0,0,2687,2688,3,160,80,0,2688,2689,5,190,0,0,2689,2690,5,85, + 0,0,2690,2692,1,0,0,0,2691,2687,1,0,0,0,2691,2692,1,0,0,0,2692,2697, + 1,0,0,0,2693,2694,3,160,80,0,2694,2695,5,190,0,0,2695,2696,5,89, + 0,0,2696,2698,1,0,0,0,2697,2693,1,0,0,0,2697,2698,1,0,0,0,2698,2699, + 1,0,0,0,2699,2700,5,2,0,0,2700,2772,1,0,0,0,2701,2702,5,140,0,0, + 2702,2731,5,1,0,0,2703,2708,3,162,81,0,2704,2705,5,3,0,0,2705,2707, + 3,162,81,0,2706,2704,1,0,0,0,2707,2710,1,0,0,0,2708,2706,1,0,0,0, + 2708,2709,1,0,0,0,2709,2717,1,0,0,0,2710,2708,1,0,0,0,2711,2712, + 5,183,0,0,2712,2713,5,190,0,0,2713,2718,5,183,0,0,2714,2715,5,18, + 0,0,2715,2716,5,190,0,0,2716,2718,5,183,0,0,2717,2711,1,0,0,0,2717, + 2714,1,0,0,0,2717,2718,1,0,0,0,2718,2729,1,0,0,0,2719,2720,5,304, + 0,0,2720,2722,5,282,0,0,2721,2723,5,146,0,0,2722,2721,1,0,0,0,2722, + 2723,1,0,0,0,2723,2730,1,0,0,0,2724,2725,5,306,0,0,2725,2727,5,282, + 0,0,2726,2728,5,146,0,0,2727,2726,1,0,0,0,2727,2728,1,0,0,0,2728, + 2730,1,0,0,0,2729,2719,1,0,0,0,2729,2724,1,0,0,0,2729,2730,1,0,0, + 0,2730,2732,1,0,0,0,2731,2703,1,0,0,0,2731,2732,1,0,0,0,2732,2739, + 1,0,0,0,2733,2734,5,231,0,0,2734,2737,3,184,92,0,2735,2736,5,104, + 0,0,2736,2738,3,150,75,0,2737,2735,1,0,0,0,2737,2738,1,0,0,0,2738, + 2740,1,0,0,0,2739,2733,1,0,0,0,2739,2740,1,0,0,0,2740,2741,1,0,0, + 0,2741,2772,5,2,0,0,2742,2743,5,138,0,0,2743,2760,5,1,0,0,2744,2749, + 3,148,74,0,2745,2746,5,3,0,0,2746,2748,3,148,74,0,2747,2745,1,0, + 0,0,2748,2751,1,0,0,0,2749,2747,1,0,0,0,2749,2750,1,0,0,0,2750,2758, + 1,0,0,0,2751,2749,1,0,0,0,2752,2753,5,183,0,0,2753,2754,5,190,0, + 0,2754,2759,5,183,0,0,2755,2756,5,18,0,0,2756,2757,5,190,0,0,2757, + 2759,5,183,0,0,2758,2752,1,0,0,0,2758,2755,1,0,0,0,2758,2759,1,0, + 0,0,2759,2761,1,0,0,0,2760,2744,1,0,0,0,2760,2761,1,0,0,0,2761,2768, + 1,0,0,0,2762,2763,5,231,0,0,2763,2766,3,184,92,0,2764,2765,5,104, + 0,0,2765,2767,3,150,75,0,2766,2764,1,0,0,0,2766,2767,1,0,0,0,2767, + 2769,1,0,0,0,2768,2762,1,0,0,0,2768,2769,1,0,0,0,2769,2770,1,0,0, + 0,2770,2772,5,2,0,0,2771,2318,1,0,0,0,2771,2320,1,0,0,0,2771,2321, + 1,0,0,0,2771,2324,1,0,0,0,2771,2327,1,0,0,0,2771,2328,1,0,0,0,2771, + 2329,1,0,0,0,2771,2330,1,0,0,0,2771,2331,1,0,0,0,2771,2332,1,0,0, + 0,2771,2339,1,0,0,0,2771,2349,1,0,0,0,2771,2361,1,0,0,0,2771,2396, + 1,0,0,0,2771,2414,1,0,0,0,2771,2453,1,0,0,0,2771,2456,1,0,0,0,2771, + 2460,1,0,0,0,2771,2474,1,0,0,0,2771,2478,1,0,0,0,2771,2483,1,0,0, + 0,2771,2496,1,0,0,0,2771,2508,1,0,0,0,2771,2515,1,0,0,0,2771,2522, + 1,0,0,0,2771,2535,1,0,0,0,2771,2536,1,0,0,0,2771,2537,1,0,0,0,2771, + 2543,1,0,0,0,2771,2549,1,0,0,0,2771,2555,1,0,0,0,2771,2561,1,0,0, + 0,2771,2562,1,0,0,0,2771,2563,1,0,0,0,2771,2564,1,0,0,0,2771,2565, + 1,0,0,0,2771,2579,1,0,0,0,2771,2586,1,0,0,0,2771,2597,1,0,0,0,2771, + 2606,1,0,0,0,2771,2613,1,0,0,0,2771,2617,1,0,0,0,2771,2630,1,0,0, + 0,2771,2641,1,0,0,0,2771,2662,1,0,0,0,2771,2701,1,0,0,0,2771,2742, + 1,0,0,0,2772,2783,1,0,0,0,2773,2774,10,24,0,0,2774,2775,5,8,0,0, + 2775,2776,3,142,71,0,2776,2777,5,9,0,0,2777,2782,1,0,0,0,2778,2779, + 10,22,0,0,2779,2780,5,4,0,0,2780,2782,3,294,147,0,2781,2773,1,0, + 0,0,2781,2778,1,0,0,0,2782,2785,1,0,0,0,2783,2781,1,0,0,0,2783,2784, + 1,0,0,0,2784,145,1,0,0,0,2785,2783,1,0,0,0,2786,2787,3,148,74,0, + 2787,2788,5,3,0,0,2788,2791,3,168,84,0,2789,2790,5,28,0,0,2790,2792, + 3,294,147,0,2791,2789,1,0,0,0,2791,2792,1,0,0,0,2792,2802,1,0,0, + 0,2793,2794,5,203,0,0,2794,2799,3,152,76,0,2795,2796,5,3,0,0,2796, + 2798,3,152,76,0,2797,2795,1,0,0,0,2798,2801,1,0,0,0,2799,2797,1, + 0,0,0,2799,2800,1,0,0,0,2800,2803,1,0,0,0,2801,2799,1,0,0,0,2802, + 2793,1,0,0,0,2802,2803,1,0,0,0,2803,147,1,0,0,0,2804,2807,3,136, + 68,0,2805,2806,5,104,0,0,2806,2808,3,150,75,0,2807,2805,1,0,0,0, + 2807,2808,1,0,0,0,2808,149,1,0,0,0,2809,2812,5,137,0,0,2810,2811, + 5,87,0,0,2811,2813,7,20,0,0,2812,2810,1,0,0,0,2812,2813,1,0,0,0, + 2813,151,1,0,0,0,2814,2815,3,148,74,0,2815,2816,5,28,0,0,2816,2817, + 3,294,147,0,2817,153,1,0,0,0,2818,2819,7,21,0,0,2819,155,1,0,0,0, + 2820,2825,5,89,0,0,2821,2825,5,183,0,0,2822,2823,5,70,0,0,2823,2825, + 3,136,68,0,2824,2820,1,0,0,0,2824,2821,1,0,0,0,2824,2822,1,0,0,0, + 2825,157,1,0,0,0,2826,2828,5,306,0,0,2827,2829,5,27,0,0,2828,2827, + 1,0,0,0,2828,2829,1,0,0,0,2829,2838,1,0,0,0,2830,2832,5,304,0,0, + 2831,2833,7,22,0,0,2832,2831,1,0,0,0,2832,2833,1,0,0,0,2833,2835, + 1,0,0,0,2834,2836,5,27,0,0,2835,2834,1,0,0,0,2835,2836,1,0,0,0,2836, + 2838,1,0,0,0,2837,2826,1,0,0,0,2837,2830,1,0,0,0,2838,159,1,0,0, + 0,2839,2846,5,89,0,0,2840,2846,5,183,0,0,2841,2842,5,85,0,0,2842, + 2846,5,27,0,0,2843,2844,5,85,0,0,2844,2846,5,186,0,0,2845,2839,1, + 0,0,0,2845,2840,1,0,0,0,2845,2841,1,0,0,0,2845,2843,1,0,0,0,2846, + 161,1,0,0,0,2847,2849,5,145,0,0,2848,2847,1,0,0,0,2848,2849,1,0, + 0,0,2849,2850,1,0,0,0,2850,2851,3,136,68,0,2851,2852,5,295,0,0,2852, + 2853,3,148,74,0,2853,2859,1,0,0,0,2854,2855,3,136,68,0,2855,2856, + 5,10,0,0,2856,2857,3,148,74,0,2857,2859,1,0,0,0,2858,2848,1,0,0, + 0,2858,2854,1,0,0,0,2859,163,1,0,0,0,2860,2861,7,23,0,0,2861,165, + 1,0,0,0,2862,2863,5,120,0,0,2863,2867,5,185,0,0,2864,2865,5,228, + 0,0,2865,2867,5,185,0,0,2866,2862,1,0,0,0,2866,2864,1,0,0,0,2867, + 167,1,0,0,0,2868,2875,5,326,0,0,2869,2872,5,327,0,0,2870,2871,5, + 277,0,0,2871,2873,5,326,0,0,2872,2870,1,0,0,0,2872,2873,1,0,0,0, + 2873,2875,1,0,0,0,2874,2868,1,0,0,0,2874,2869,1,0,0,0,2875,169,1, + 0,0,0,2876,2877,5,267,0,0,2877,2878,5,311,0,0,2878,2883,3,178,89, + 0,2879,2880,5,267,0,0,2880,2881,5,311,0,0,2881,2883,3,168,84,0,2882, + 2876,1,0,0,0,2882,2879,1,0,0,0,2883,171,1,0,0,0,2884,2885,7,24,0, + 0,2885,173,1,0,0,0,2886,2887,7,25,0,0,2887,175,1,0,0,0,2888,2889, + 7,26,0,0,2889,177,1,0,0,0,2890,2892,5,129,0,0,2891,2893,7,18,0,0, + 2892,2891,1,0,0,0,2892,2893,1,0,0,0,2893,2894,1,0,0,0,2894,2895, + 3,168,84,0,2895,2898,3,180,90,0,2896,2897,5,269,0,0,2897,2899,3, + 180,90,0,2898,2896,1,0,0,0,2898,2899,1,0,0,0,2899,179,1,0,0,0,2900, + 2901,7,27,0,0,2901,181,1,0,0,0,2902,2903,7,28,0,0,2903,183,1,0,0, + 0,2904,2905,6,92,-1,0,2905,2906,5,239,0,0,2906,2907,5,1,0,0,2907, + 2912,3,186,93,0,2908,2909,5,3,0,0,2909,2911,3,186,93,0,2910,2908, + 1,0,0,0,2911,2914,1,0,0,0,2912,2910,1,0,0,0,2912,2913,1,0,0,0,2913, + 2915,1,0,0,0,2914,2912,1,0,0,0,2915,2916,5,2,0,0,2916,2996,1,0,0, + 0,2917,2918,5,129,0,0,2918,2921,3,180,90,0,2919,2920,5,269,0,0,2920, + 2922,3,180,90,0,2921,2919,1,0,0,0,2921,2922,1,0,0,0,2922,2996,1, + 0,0,0,2923,2928,5,268,0,0,2924,2925,5,1,0,0,2925,2926,3,188,94,0, + 2926,2927,5,2,0,0,2927,2929,1,0,0,0,2928,2924,1,0,0,0,2928,2929, + 1,0,0,0,2929,2933,1,0,0,0,2930,2931,5,306,0,0,2931,2932,5,267,0, + 0,2932,2934,5,311,0,0,2933,2930,1,0,0,0,2933,2934,1,0,0,0,2934,2996, + 1,0,0,0,2935,2940,5,268,0,0,2936,2937,5,1,0,0,2937,2938,3,188,94, + 0,2938,2939,5,2,0,0,2939,2941,1,0,0,0,2940,2936,1,0,0,0,2940,2941, + 1,0,0,0,2941,2942,1,0,0,0,2942,2943,5,304,0,0,2943,2944,5,267,0, + 0,2944,2996,5,311,0,0,2945,2950,5,267,0,0,2946,2947,5,1,0,0,2947, + 2948,3,188,94,0,2948,2949,5,2,0,0,2949,2951,1,0,0,0,2950,2946,1, + 0,0,0,2950,2951,1,0,0,0,2951,2955,1,0,0,0,2952,2953,5,306,0,0,2953, + 2954,5,267,0,0,2954,2956,5,311,0,0,2955,2952,1,0,0,0,2955,2956,1, + 0,0,0,2956,2996,1,0,0,0,2957,2962,5,267,0,0,2958,2959,5,1,0,0,2959, + 2960,3,188,94,0,2960,2961,5,2,0,0,2961,2963,1,0,0,0,2962,2958,1, + 0,0,0,2962,2963,1,0,0,0,2963,2964,1,0,0,0,2964,2965,5,304,0,0,2965, + 2966,5,267,0,0,2966,2996,5,311,0,0,2967,2968,5,82,0,0,2968,2996, + 5,213,0,0,2969,2970,5,27,0,0,2970,2971,5,314,0,0,2971,2972,3,184, + 92,0,2972,2973,5,316,0,0,2973,2996,1,0,0,0,2974,2975,5,162,0,0,2975, + 2976,5,314,0,0,2976,2977,3,184,92,0,2977,2978,5,3,0,0,2978,2979, + 3,184,92,0,2979,2980,5,316,0,0,2980,2996,1,0,0,0,2981,2993,3,294, + 147,0,2982,2983,5,1,0,0,2983,2988,3,188,94,0,2984,2985,5,3,0,0,2985, + 2987,3,188,94,0,2986,2984,1,0,0,0,2987,2990,1,0,0,0,2988,2986,1, + 0,0,0,2988,2989,1,0,0,0,2989,2991,1,0,0,0,2990,2988,1,0,0,0,2991, + 2992,5,2,0,0,2992,2994,1,0,0,0,2993,2982,1,0,0,0,2993,2994,1,0,0, + 0,2994,2996,1,0,0,0,2995,2904,1,0,0,0,2995,2917,1,0,0,0,2995,2923, + 1,0,0,0,2995,2935,1,0,0,0,2995,2945,1,0,0,0,2995,2957,1,0,0,0,2995, + 2967,1,0,0,0,2995,2969,1,0,0,0,2995,2974,1,0,0,0,2995,2981,1,0,0, + 0,2996,3006,1,0,0,0,2997,2998,10,2,0,0,2998,3002,5,27,0,0,2999,3000, + 5,8,0,0,3000,3001,5,329,0,0,3001,3003,5,9,0,0,3002,2999,1,0,0,0, + 3002,3003,1,0,0,0,3003,3005,1,0,0,0,3004,2997,1,0,0,0,3005,3008, + 1,0,0,0,3006,3004,1,0,0,0,3006,3007,1,0,0,0,3007,185,1,0,0,0,3008, + 3006,1,0,0,0,3009,3014,3,184,92,0,3010,3011,3,294,147,0,3011,3012, + 3,184,92,0,3012,3014,1,0,0,0,3013,3009,1,0,0,0,3013,3010,1,0,0,0, + 3014,187,1,0,0,0,3015,3018,5,329,0,0,3016,3018,3,184,92,0,3017,3015, + 1,0,0,0,3017,3016,1,0,0,0,3018,189,1,0,0,0,3019,3020,5,300,0,0,3020, + 3021,3,136,68,0,3021,3022,5,265,0,0,3022,3023,3,136,68,0,3023,191, + 1,0,0,0,3024,3025,5,99,0,0,3025,3026,5,1,0,0,3026,3027,5,301,0,0, + 3027,3028,3,138,69,0,3028,3029,5,2,0,0,3029,193,1,0,0,0,3030,3031, + 5,300,0,0,3031,3034,5,164,0,0,3032,3033,5,25,0,0,3033,3035,3,136, + 68,0,3034,3032,1,0,0,0,3034,3035,1,0,0,0,3035,3036,1,0,0,0,3036, + 3037,5,265,0,0,3037,3038,5,287,0,0,3038,3039,5,251,0,0,3039,3040, + 3,294,147,0,3040,3041,5,312,0,0,3041,3049,3,136,68,0,3042,3043,5, + 3,0,0,3043,3044,3,294,147,0,3044,3045,5,312,0,0,3045,3046,3,136, + 68,0,3046,3048,1,0,0,0,3047,3042,1,0,0,0,3048,3051,1,0,0,0,3049, + 3047,1,0,0,0,3049,3050,1,0,0,0,3050,3095,1,0,0,0,3051,3049,1,0,0, + 0,3052,3053,5,300,0,0,3053,3056,5,164,0,0,3054,3055,5,25,0,0,3055, + 3057,3,136,68,0,3056,3054,1,0,0,0,3056,3057,1,0,0,0,3057,3058,1, + 0,0,0,3058,3059,5,265,0,0,3059,3095,5,73,0,0,3060,3061,5,300,0,0, + 3061,3062,5,182,0,0,3062,3065,5,164,0,0,3063,3064,5,25,0,0,3064, + 3066,3,136,68,0,3065,3063,1,0,0,0,3065,3066,1,0,0,0,3066,3067,1, + 0,0,0,3067,3068,5,265,0,0,3068,3080,5,127,0,0,3069,3070,5,1,0,0, + 3070,3075,3,294,147,0,3071,3072,5,3,0,0,3072,3074,3,294,147,0,3073, + 3071,1,0,0,0,3074,3077,1,0,0,0,3075,3073,1,0,0,0,3075,3076,1,0,0, + 0,3076,3078,1,0,0,0,3077,3075,1,0,0,0,3078,3079,5,2,0,0,3079,3081, + 1,0,0,0,3080,3069,1,0,0,0,3080,3081,1,0,0,0,3081,3082,1,0,0,0,3082, + 3083,5,296,0,0,3083,3084,5,1,0,0,3084,3089,3,136,68,0,3085,3086, + 5,3,0,0,3086,3088,3,136,68,0,3087,3085,1,0,0,0,3088,3091,1,0,0,0, + 3089,3087,1,0,0,0,3089,3090,1,0,0,0,3090,3092,1,0,0,0,3091,3089, + 1,0,0,0,3092,3093,5,2,0,0,3093,3095,1,0,0,0,3094,3030,1,0,0,0,3094, + 3052,1,0,0,0,3094,3060,1,0,0,0,3095,195,1,0,0,0,3096,3102,5,199, + 0,0,3097,3103,3,294,147,0,3098,3099,5,1,0,0,3099,3100,3,64,32,0, + 3100,3101,5,2,0,0,3101,3103,1,0,0,0,3102,3097,1,0,0,0,3102,3098, + 1,0,0,0,3103,197,1,0,0,0,3104,3105,5,168,0,0,3105,3110,3,90,45,0, + 3106,3107,5,3,0,0,3107,3109,3,90,45,0,3108,3106,1,0,0,0,3109,3112, + 1,0,0,0,3110,3108,1,0,0,0,3110,3111,1,0,0,0,3111,3114,1,0,0,0,3112, + 3110,1,0,0,0,3113,3104,1,0,0,0,3113,3114,1,0,0,0,3114,3115,1,0,0, + 0,3115,3119,3,200,100,0,3116,3117,5,21,0,0,3117,3118,5,163,0,0,3118, + 3120,3,96,48,0,3119,3116,1,0,0,0,3119,3120,1,0,0,0,3120,3122,1,0, + 0,0,3121,3123,7,13,0,0,3122,3121,1,0,0,0,3122,3123,1,0,0,0,3123, + 3129,1,0,0,0,3124,3125,5,206,0,0,3125,3126,5,1,0,0,3126,3127,3,204, + 102,0,3127,3128,5,2,0,0,3128,3130,1,0,0,0,3129,3124,1,0,0,0,3129, + 3130,1,0,0,0,3130,3140,1,0,0,0,3131,3132,5,257,0,0,3132,3137,3,98, + 49,0,3133,3134,5,3,0,0,3134,3136,3,98,49,0,3135,3133,1,0,0,0,3136, + 3139,1,0,0,0,3137,3135,1,0,0,0,3137,3138,1,0,0,0,3138,3141,1,0,0, + 0,3139,3137,1,0,0,0,3140,3131,1,0,0,0,3140,3141,1,0,0,0,3141,3151, + 1,0,0,0,3142,3143,5,71,0,0,3143,3148,3,100,50,0,3144,3145,5,3,0, + 0,3145,3147,3,100,50,0,3146,3144,1,0,0,0,3147,3150,1,0,0,0,3148, + 3146,1,0,0,0,3148,3149,1,0,0,0,3149,3152,1,0,0,0,3150,3148,1,0,0, + 0,3151,3142,1,0,0,0,3151,3152,1,0,0,0,3152,199,1,0,0,0,3153,3154, + 5,219,0,0,3154,3178,3,202,101,0,3155,3156,5,240,0,0,3156,3178,3, + 202,101,0,3157,3158,5,116,0,0,3158,3178,3,202,101,0,3159,3160,5, + 219,0,0,3160,3161,5,34,0,0,3161,3162,3,202,101,0,3162,3163,5,25, + 0,0,3163,3164,3,202,101,0,3164,3178,1,0,0,0,3165,3166,5,240,0,0, + 3166,3167,5,34,0,0,3167,3168,3,202,101,0,3168,3169,5,25,0,0,3169, + 3170,3,202,101,0,3170,3178,1,0,0,0,3171,3172,5,116,0,0,3172,3173, + 5,34,0,0,3173,3174,3,202,101,0,3174,3175,5,25,0,0,3175,3176,3,202, + 101,0,3176,3178,1,0,0,0,3177,3153,1,0,0,0,3177,3155,1,0,0,0,3177, + 3157,1,0,0,0,3177,3159,1,0,0,0,3177,3165,1,0,0,0,3177,3171,1,0,0, + 0,3178,201,1,0,0,0,3179,3180,5,278,0,0,3180,3189,5,212,0,0,3181, + 3182,5,278,0,0,3182,3189,5,102,0,0,3183,3184,5,56,0,0,3184,3189, + 5,239,0,0,3185,3186,3,136,68,0,3186,3187,7,29,0,0,3187,3189,1,0, + 0,0,3188,3179,1,0,0,0,3188,3181,1,0,0,0,3188,3183,1,0,0,0,3188,3185, + 1,0,0,0,3189,203,1,0,0,0,3190,3191,6,102,-1,0,3191,3193,3,206,103, + 0,3192,3194,3,208,104,0,3193,3192,1,0,0,0,3193,3194,1,0,0,0,3194, + 3202,1,0,0,0,3195,3196,10,2,0,0,3196,3201,3,204,102,3,3197,3198, + 10,1,0,0,3198,3199,5,11,0,0,3199,3201,3,204,102,2,3200,3195,1,0, + 0,0,3200,3197,1,0,0,0,3201,3204,1,0,0,0,3202,3200,1,0,0,0,3202,3203, + 1,0,0,0,3203,205,1,0,0,0,3204,3202,1,0,0,0,3205,3231,3,294,147,0, + 3206,3207,5,1,0,0,3207,3231,5,2,0,0,3208,3209,5,209,0,0,3209,3210, + 5,1,0,0,3210,3215,3,204,102,0,3211,3212,5,3,0,0,3212,3214,3,204, + 102,0,3213,3211,1,0,0,0,3214,3217,1,0,0,0,3215,3213,1,0,0,0,3215, + 3216,1,0,0,0,3216,3218,1,0,0,0,3217,3215,1,0,0,0,3218,3219,5,2,0, + 0,3219,3231,1,0,0,0,3220,3221,5,1,0,0,3221,3222,3,204,102,0,3222, + 3223,5,2,0,0,3223,3231,1,0,0,0,3224,3231,5,12,0,0,3225,3231,5,13, + 0,0,3226,3227,5,14,0,0,3227,3228,3,204,102,0,3228,3229,5,15,0,0, + 3229,3231,1,0,0,0,3230,3205,1,0,0,0,3230,3206,1,0,0,0,3230,3208, + 1,0,0,0,3230,3220,1,0,0,0,3230,3224,1,0,0,0,3230,3225,1,0,0,0,3230, + 3226,1,0,0,0,3231,207,1,0,0,0,3232,3234,5,320,0,0,3233,3235,5,324, + 0,0,3234,3233,1,0,0,0,3234,3235,1,0,0,0,3235,3263,1,0,0,0,3236,3238, + 5,318,0,0,3237,3239,5,324,0,0,3238,3237,1,0,0,0,3238,3239,1,0,0, + 0,3239,3263,1,0,0,0,3240,3242,5,324,0,0,3241,3243,5,324,0,0,3242, + 3241,1,0,0,0,3242,3243,1,0,0,0,3243,3263,1,0,0,0,3244,3245,5,16, + 0,0,3245,3246,5,329,0,0,3246,3248,5,17,0,0,3247,3249,5,324,0,0,3248, + 3247,1,0,0,0,3248,3249,1,0,0,0,3249,3263,1,0,0,0,3250,3252,5,16, + 0,0,3251,3253,5,329,0,0,3252,3251,1,0,0,0,3252,3253,1,0,0,0,3253, + 3254,1,0,0,0,3254,3256,5,3,0,0,3255,3257,5,329,0,0,3256,3255,1,0, + 0,0,3256,3257,1,0,0,0,3257,3258,1,0,0,0,3258,3260,5,17,0,0,3259, + 3261,5,324,0,0,3260,3259,1,0,0,0,3260,3261,1,0,0,0,3261,3263,1,0, + 0,0,3262,3232,1,0,0,0,3262,3236,1,0,0,0,3262,3240,1,0,0,0,3262,3244, + 1,0,0,0,3262,3250,1,0,0,0,3263,209,1,0,0,0,3264,3265,3,294,147,0, + 3265,3266,5,312,0,0,3266,3267,3,136,68,0,3267,211,1,0,0,0,3268,3269, + 5,104,0,0,3269,3273,7,30,0,0,3270,3271,5,276,0,0,3271,3273,7,31, + 0,0,3272,3268,1,0,0,0,3272,3270,1,0,0,0,3273,213,1,0,0,0,3274,3275, + 5,134,0,0,3275,3276,5,153,0,0,3276,3280,3,216,108,0,3277,3278,5, + 220,0,0,3278,3280,7,32,0,0,3279,3274,1,0,0,0,3279,3277,1,0,0,0,3280, + 215,1,0,0,0,3281,3282,5,220,0,0,3282,3289,5,279,0,0,3283,3284,5, + 220,0,0,3284,3289,5,48,0,0,3285,3286,5,225,0,0,3286,3289,5,220,0, + 0,3287,3289,5,249,0,0,3288,3281,1,0,0,0,3288,3283,1,0,0,0,3288,3285, + 1,0,0,0,3288,3287,1,0,0,0,3289,217,1,0,0,0,3290,3296,3,136,68,0, + 3291,3292,3,294,147,0,3292,3293,5,6,0,0,3293,3294,3,136,68,0,3294, + 3296,1,0,0,0,3295,3290,1,0,0,0,3295,3291,1,0,0,0,3296,219,1,0,0, + 0,3297,3298,3,294,147,0,3298,3299,5,4,0,0,3299,3300,3,294,147,0, + 3300,3303,1,0,0,0,3301,3303,3,294,147,0,3302,3297,1,0,0,0,3302,3301, + 1,0,0,0,3303,221,1,0,0,0,3304,3309,3,220,110,0,3305,3306,5,3,0,0, + 3306,3308,3,220,110,0,3307,3305,1,0,0,0,3308,3311,1,0,0,0,3309,3307, + 1,0,0,0,3309,3310,1,0,0,0,3310,223,1,0,0,0,3311,3309,1,0,0,0,3312, + 3313,5,107,0,0,3313,3314,3,226,113,0,3314,3318,3,232,116,0,3315, + 3317,3,234,117,0,3316,3315,1,0,0,0,3317,3320,1,0,0,0,3318,3316,1, + 0,0,0,3318,3319,1,0,0,0,3319,3321,1,0,0,0,3320,3318,1,0,0,0,3321, + 3322,3,236,118,0,3322,225,1,0,0,0,3323,3324,3,274,137,0,3324,3333, + 5,1,0,0,3325,3330,3,230,115,0,3326,3327,5,3,0,0,3327,3329,3,230, + 115,0,3328,3326,1,0,0,0,3329,3332,1,0,0,0,3330,3328,1,0,0,0,3330, + 3331,1,0,0,0,3331,3334,1,0,0,0,3332,3330,1,0,0,0,3333,3325,1,0,0, + 0,3333,3334,1,0,0,0,3334,3335,1,0,0,0,3335,3336,5,2,0,0,3336,227, + 1,0,0,0,3337,3338,3,272,136,0,3338,3347,5,1,0,0,3339,3344,3,230, + 115,0,3340,3341,5,3,0,0,3341,3343,3,230,115,0,3342,3340,1,0,0,0, + 3343,3346,1,0,0,0,3344,3342,1,0,0,0,3344,3345,1,0,0,0,3345,3348, + 1,0,0,0,3346,3344,1,0,0,0,3347,3339,1,0,0,0,3347,3348,1,0,0,0,3348, + 3349,1,0,0,0,3349,3350,5,2,0,0,3350,229,1,0,0,0,3351,3353,3,294, + 147,0,3352,3351,1,0,0,0,3352,3353,1,0,0,0,3353,3354,1,0,0,0,3354, + 3355,3,184,92,0,3355,231,1,0,0,0,3356,3357,5,232,0,0,3357,3358,3, + 184,92,0,3358,233,1,0,0,0,3359,3360,5,147,0,0,3360,3379,3,294,147, + 0,3361,3363,5,182,0,0,3362,3361,1,0,0,0,3362,3363,1,0,0,0,3363,3364, + 1,0,0,0,3364,3379,5,78,0,0,3365,3366,5,232,0,0,3366,3367,5,183,0, + 0,3367,3368,5,190,0,0,3368,3369,5,183,0,0,3369,3379,5,126,0,0,3370, + 3371,5,38,0,0,3371,3372,5,190,0,0,3372,3373,5,183,0,0,3373,3379, + 5,126,0,0,3374,3375,5,246,0,0,3375,3379,7,1,0,0,3376,3377,5,46,0, + 0,3377,3379,3,168,84,0,3378,3359,1,0,0,0,3378,3362,1,0,0,0,3378, + 3365,1,0,0,0,3378,3370,1,0,0,0,3378,3374,1,0,0,0,3378,3376,1,0,0, + 0,3379,235,1,0,0,0,3380,3381,5,230,0,0,3381,3480,3,142,71,0,3382, + 3383,5,251,0,0,3383,3384,3,294,147,0,3384,3385,5,312,0,0,3385,3386, + 3,136,68,0,3386,3480,1,0,0,0,3387,3388,5,40,0,0,3388,3390,3,136, + 68,0,3389,3391,3,238,119,0,3390,3389,1,0,0,0,3391,3392,1,0,0,0,3392, + 3390,1,0,0,0,3392,3393,1,0,0,0,3393,3395,1,0,0,0,3394,3396,3,242, + 121,0,3395,3394,1,0,0,0,3395,3396,1,0,0,0,3396,3397,1,0,0,0,3397, + 3398,5,88,0,0,3398,3399,5,40,0,0,3399,3480,1,0,0,0,3400,3402,5,40, + 0,0,3401,3403,3,238,119,0,3402,3401,1,0,0,0,3403,3404,1,0,0,0,3404, + 3402,1,0,0,0,3404,3405,1,0,0,0,3405,3407,1,0,0,0,3406,3408,3,242, + 121,0,3407,3406,1,0,0,0,3407,3408,1,0,0,0,3408,3409,1,0,0,0,3409, + 3410,5,88,0,0,3410,3411,5,40,0,0,3411,3480,1,0,0,0,3412,3413,5,119, + 0,0,3413,3414,3,136,68,0,3414,3415,5,265,0,0,3415,3419,3,246,123, + 0,3416,3418,3,240,120,0,3417,3416,1,0,0,0,3418,3421,1,0,0,0,3419, + 3417,1,0,0,0,3419,3420,1,0,0,0,3420,3423,1,0,0,0,3421,3419,1,0,0, + 0,3422,3424,3,242,121,0,3423,3422,1,0,0,0,3423,3424,1,0,0,0,3424, + 3425,1,0,0,0,3425,3426,5,88,0,0,3426,3427,5,119,0,0,3427,3480,1, + 0,0,0,3428,3429,5,135,0,0,3429,3480,3,294,147,0,3430,3431,5,151, + 0,0,3431,3480,3,294,147,0,3432,3438,5,32,0,0,3433,3434,3,244,122, + 0,3434,3435,5,325,0,0,3435,3437,1,0,0,0,3436,3433,1,0,0,0,3437,3440, + 1,0,0,0,3438,3436,1,0,0,0,3438,3439,1,0,0,0,3439,3442,1,0,0,0,3440, + 3438,1,0,0,0,3441,3443,3,246,123,0,3442,3441,1,0,0,0,3442,3443,1, + 0,0,0,3443,3444,1,0,0,0,3444,3480,5,88,0,0,3445,3446,3,294,147,0, + 3446,3447,5,10,0,0,3447,3449,1,0,0,0,3448,3445,1,0,0,0,3448,3449, + 1,0,0,0,3449,3450,1,0,0,0,3450,3451,5,161,0,0,3451,3452,3,246,123, + 0,3452,3453,5,88,0,0,3453,3454,5,161,0,0,3454,3480,1,0,0,0,3455, + 3456,3,294,147,0,3456,3457,5,10,0,0,3457,3459,1,0,0,0,3458,3455, + 1,0,0,0,3458,3459,1,0,0,0,3459,3460,1,0,0,0,3460,3461,5,302,0,0, + 3461,3462,3,136,68,0,3462,3463,5,81,0,0,3463,3464,3,246,123,0,3464, + 3465,5,88,0,0,3465,3466,5,302,0,0,3466,3480,1,0,0,0,3467,3468,3, + 294,147,0,3468,3469,5,10,0,0,3469,3471,1,0,0,0,3470,3467,1,0,0,0, + 3470,3471,1,0,0,0,3471,3472,1,0,0,0,3472,3473,5,224,0,0,3473,3474, + 3,246,123,0,3474,3475,5,286,0,0,3475,3476,3,136,68,0,3476,3477,5, + 88,0,0,3477,3478,5,224,0,0,3478,3480,1,0,0,0,3479,3380,1,0,0,0,3479, + 3382,1,0,0,0,3479,3387,1,0,0,0,3479,3400,1,0,0,0,3479,3412,1,0,0, + 0,3479,3428,1,0,0,0,3479,3430,1,0,0,0,3479,3432,1,0,0,0,3479,3448, + 1,0,0,0,3479,3458,1,0,0,0,3479,3470,1,0,0,0,3480,237,1,0,0,0,3481, + 3482,5,300,0,0,3482,3483,3,136,68,0,3483,3484,5,265,0,0,3484,3485, + 3,246,123,0,3485,239,1,0,0,0,3486,3487,5,86,0,0,3487,3488,3,136, + 68,0,3488,3489,5,265,0,0,3489,3490,3,246,123,0,3490,241,1,0,0,0, + 3491,3492,5,84,0,0,3492,3493,3,246,123,0,3493,243,1,0,0,0,3494,3495, + 5,69,0,0,3495,3500,3,294,147,0,3496,3497,5,3,0,0,3497,3499,3,294, + 147,0,3498,3496,1,0,0,0,3499,3502,1,0,0,0,3500,3498,1,0,0,0,3500, + 3501,1,0,0,0,3501,3503,1,0,0,0,3502,3500,1,0,0,0,3503,3506,3,184, + 92,0,3504,3505,5,70,0,0,3505,3507,3,142,71,0,3506,3504,1,0,0,0,3506, + 3507,1,0,0,0,3507,245,1,0,0,0,3508,3509,3,236,118,0,3509,3510,5, + 325,0,0,3510,3512,1,0,0,0,3511,3508,1,0,0,0,3512,3513,1,0,0,0,3513, + 3511,1,0,0,0,3513,3514,1,0,0,0,3514,247,1,0,0,0,3515,3522,5,53,0, + 0,3516,3522,5,248,0,0,3517,3522,5,73,0,0,3518,3522,5,127,0,0,3519, + 3522,5,287,0,0,3520,3522,3,294,147,0,3521,3515,1,0,0,0,3521,3516, + 1,0,0,0,3521,3517,1,0,0,0,3521,3518,1,0,0,0,3521,3519,1,0,0,0,3521, + 3520,1,0,0,0,3522,249,1,0,0,0,3523,3527,5,260,0,0,3524,3527,5,243, + 0,0,3525,3527,3,294,147,0,3526,3523,1,0,0,0,3526,3524,1,0,0,0,3526, + 3525,1,0,0,0,3527,251,1,0,0,0,3528,3530,3,250,125,0,3529,3528,1, + 0,0,0,3529,3530,1,0,0,0,3530,3531,1,0,0,0,3531,3532,3,280,140,0, + 3532,253,1,0,0,0,3533,3536,3,256,128,0,3534,3536,3,260,130,0,3535, + 3533,1,0,0,0,3535,3534,1,0,0,0,3536,255,1,0,0,0,3537,3549,3,294, + 147,0,3538,3539,3,294,147,0,3539,3540,5,4,0,0,3540,3541,3,294,147, + 0,3541,3549,1,0,0,0,3542,3543,3,294,147,0,3543,3544,5,4,0,0,3544, + 3545,3,294,147,0,3545,3546,5,4,0,0,3546,3547,3,294,147,0,3547,3549, + 1,0,0,0,3548,3537,1,0,0,0,3548,3538,1,0,0,0,3548,3542,1,0,0,0,3549, + 257,1,0,0,0,3550,3562,3,294,147,0,3551,3552,3,294,147,0,3552,3553, + 5,4,0,0,3553,3554,3,294,147,0,3554,3562,1,0,0,0,3555,3556,3,294, + 147,0,3556,3557,5,4,0,0,3557,3558,3,294,147,0,3558,3559,5,4,0,0, + 3559,3560,3,294,147,0,3560,3562,1,0,0,0,3561,3550,1,0,0,0,3561,3551, + 1,0,0,0,3561,3555,1,0,0,0,3562,259,1,0,0,0,3563,3575,3,294,147,0, + 3564,3565,3,294,147,0,3565,3566,5,4,0,0,3566,3567,3,294,147,0,3567, + 3575,1,0,0,0,3568,3569,3,294,147,0,3569,3570,5,4,0,0,3570,3571,3, + 294,147,0,3571,3572,5,4,0,0,3572,3573,3,294,147,0,3573,3575,1,0, + 0,0,3574,3563,1,0,0,0,3574,3564,1,0,0,0,3574,3568,1,0,0,0,3575,261, + 1,0,0,0,3576,3588,3,294,147,0,3577,3578,3,294,147,0,3578,3579,5, + 4,0,0,3579,3580,3,294,147,0,3580,3588,1,0,0,0,3581,3582,3,294,147, + 0,3582,3583,5,4,0,0,3583,3584,3,294,147,0,3584,3585,5,4,0,0,3585, + 3586,3,294,147,0,3586,3588,1,0,0,0,3587,3576,1,0,0,0,3587,3577,1, + 0,0,0,3587,3581,1,0,0,0,3588,263,1,0,0,0,3589,3595,3,294,147,0,3590, + 3591,3,294,147,0,3591,3592,5,4,0,0,3592,3593,3,294,147,0,3593,3595, + 1,0,0,0,3594,3589,1,0,0,0,3594,3590,1,0,0,0,3595,265,1,0,0,0,3596, + 3602,3,294,147,0,3597,3598,3,294,147,0,3598,3599,5,4,0,0,3599,3600, + 3,294,147,0,3600,3602,1,0,0,0,3601,3596,1,0,0,0,3601,3597,1,0,0, + 0,3602,267,1,0,0,0,3603,3604,3,294,147,0,3604,269,1,0,0,0,3605,3606, + 3,294,147,0,3606,271,1,0,0,0,3607,3608,3,280,140,0,3608,273,1,0, + 0,0,3609,3610,3,280,140,0,3610,275,1,0,0,0,3611,3614,3,280,140,0, + 3612,3614,4,138,14,0,3613,3611,1,0,0,0,3613,3612,1,0,0,0,3614,277, + 1,0,0,0,3615,3616,3,294,147,0,3616,279,1,0,0,0,3617,3622,3,294,147, + 0,3618,3619,5,4,0,0,3619,3621,3,294,147,0,3620,3618,1,0,0,0,3621, + 3624,1,0,0,0,3622,3620,1,0,0,0,3622,3623,1,0,0,0,3623,281,1,0,0, + 0,3624,3622,1,0,0,0,3625,3626,5,103,0,0,3626,3627,3,284,142,0,3627, + 3628,5,28,0,0,3628,3629,5,187,0,0,3629,3630,3,142,71,0,3630,283, + 1,0,0,0,3631,3632,7,33,0,0,3632,285,1,0,0,0,3633,3637,3,288,144, + 0,3634,3637,5,64,0,0,3635,3637,5,60,0,0,3636,3633,1,0,0,0,3636,3634, + 1,0,0,0,3636,3635,1,0,0,0,3637,287,1,0,0,0,3638,3644,3,294,147,0, + 3639,3640,5,289,0,0,3640,3644,3,294,147,0,3641,3642,5,235,0,0,3642, + 3644,3,294,147,0,3643,3638,1,0,0,0,3643,3639,1,0,0,0,3643,3641,1, + 0,0,0,3644,289,1,0,0,0,3645,3650,3,294,147,0,3646,3647,5,3,0,0,3647, + 3649,3,294,147,0,3648,3646,1,0,0,0,3649,3652,1,0,0,0,3650,3648,1, + 0,0,0,3650,3651,1,0,0,0,3651,291,1,0,0,0,3652,3650,1,0,0,0,3653, + 3661,5,53,0,0,3654,3661,5,248,0,0,3655,3661,5,73,0,0,3656,3661,5, + 127,0,0,3657,3661,5,287,0,0,3658,3661,5,93,0,0,3659,3661,3,294,147, + 0,3660,3653,1,0,0,0,3660,3654,1,0,0,0,3660,3655,1,0,0,0,3660,3656, + 1,0,0,0,3660,3657,1,0,0,0,3660,3658,1,0,0,0,3660,3659,1,0,0,0,3661, + 293,1,0,0,0,3662,3668,5,332,0,0,3663,3668,5,334,0,0,3664,3668,3, + 300,150,0,3665,3668,5,335,0,0,3666,3668,5,333,0,0,3667,3662,1,0, + 0,0,3667,3663,1,0,0,0,3667,3664,1,0,0,0,3667,3665,1,0,0,0,3667,3666, + 1,0,0,0,3668,295,1,0,0,0,3669,3671,5,319,0,0,3670,3669,1,0,0,0,3670, + 3671,1,0,0,0,3671,3672,1,0,0,0,3672,3682,5,330,0,0,3673,3675,5,319, + 0,0,3674,3673,1,0,0,0,3674,3675,1,0,0,0,3675,3676,1,0,0,0,3676,3682, + 5,331,0,0,3677,3679,5,319,0,0,3678,3677,1,0,0,0,3678,3679,1,0,0, + 0,3679,3680,1,0,0,0,3680,3682,5,329,0,0,3681,3670,1,0,0,0,3681,3674, + 1,0,0,0,3681,3678,1,0,0,0,3682,297,1,0,0,0,3683,3686,3,294,147,0, + 3684,3686,3,168,84,0,3685,3683,1,0,0,0,3685,3684,1,0,0,0,3686,299, + 1,0,0,0,3687,3688,7,34,0,0,3688,301,1,0,0,0,480,305,314,318,322, + 326,330,343,350,354,358,364,368,375,380,384,390,394,413,419,423, + 427,431,439,443,446,451,457,466,472,476,482,489,498,510,519,528, + 534,545,553,561,568,578,585,593,608,643,646,649,653,659,664,671, + 677,681,685,693,699,703,707,721,729,748,773,776,783,790,799,803, + 810,818,827,833,838,842,850,855,864,870,877,886,892,896,902,909, + 914,927,932,944,948,954,963,968,974,1002,1008,1010,1016,1022,1024, + 1032,1034,1044,1046,1061,1066,1073,1083,1089,1091,1099,1101,1126, + 1129,1133,1137,1155,1158,1169,1172,1188,1198,1203,1209,1212,1221, + 1233,1236,1246,1250,1256,1263,1268,1274,1278,1282,1288,1299,1308, + 1318,1321,1326,1328,1335,1341,1343,1347,1357,1363,1366,1368,1380, + 1387,1391,1394,1398,1402,1409,1418,1421,1425,1430,1434,1442,1445, + 1448,1455,1466,1469,1479,1482,1493,1498,1506,1509,1513,1517,1526, + 1535,1538,1547,1550,1553,1557,1568,1571,1574,1581,1584,1603,1607, + 1611,1615,1619,1623,1625,1636,1641,1650,1659,1662,1668,1680,1683, + 1692,1695,1703,1706,1709,1714,1717,1729,1732,1740,1745,1749,1751, + 1753,1768,1770,1781,1802,1812,1823,1827,1829,1837,1848,1859,1866, + 1879,1885,1911,1926,1931,1935,1945,1951,1957,1965,1970,1977,1979, + 1985,1991,1995,2000,2009,2014,2028,2038,2041,2050,2055,2060,2062, + 2071,2074,2082,2085,2092,2097,2108,2111,2115,2117,2125,2135,2141, + 2143,2150,2154,2156,2163,2167,2169,2171,2180,2191,2195,2205,2215, + 2219,2227,2229,2242,2250,2259,2265,2273,2279,2283,2288,2293,2299, + 2313,2315,2345,2356,2364,2369,2374,2387,2393,2396,2403,2408,2411, + 2414,2419,2426,2429,2438,2441,2445,2448,2451,2466,2469,2488,2492, + 2500,2504,2529,2532,2541,2547,2553,2559,2568,2571,2574,2593,2602, + 2624,2627,2637,2646,2652,2658,2669,2671,2676,2683,2685,2691,2697, + 2708,2717,2722,2727,2729,2731,2737,2739,2749,2758,2760,2766,2768, + 2771,2781,2783,2791,2799,2802,2807,2812,2824,2828,2832,2835,2837, + 2845,2848,2858,2866,2872,2874,2882,2892,2898,2912,2921,2928,2933, + 2940,2950,2955,2962,2988,2993,2995,3002,3006,3013,3017,3034,3049, + 3056,3065,3075,3080,3089,3094,3102,3110,3113,3119,3122,3129,3137, + 3140,3148,3151,3177,3188,3193,3200,3202,3215,3230,3234,3238,3242, + 3248,3252,3256,3260,3262,3272,3279,3288,3295,3302,3309,3318,3330, + 3333,3344,3347,3352,3362,3378,3392,3395,3404,3407,3419,3423,3438, + 3442,3448,3458,3470,3479,3500,3506,3513,3521,3526,3529,3535,3548, + 3561,3574,3587,3594,3601,3613,3622,3636,3643,3650,3660,3667,3670, + 3674,3678,3681,3685 + ]; + + private static __ATN: antlr.ATN; + public static get _ATN(): antlr.ATN { + if (!TrinoSqlParser.__ATN) { + TrinoSqlParser.__ATN = new antlr.ATNDeserializer().deserialize(TrinoSqlParser._serializedATN); + } + + return TrinoSqlParser.__ATN; + } + + + private static readonly vocabulary = new antlr.Vocabulary(TrinoSqlParser.literalNames, TrinoSqlParser.symbolicNames, []); + + public override get vocabulary(): antlr.Vocabulary { + return TrinoSqlParser.vocabulary; + } + + private static readonly decisionsToDFA = TrinoSqlParser._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) ); +} + +export class ProgramContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public EOF(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EOF, 0)!; + } + public statements(): StatementsContext[]; + public statements(i: number): StatementsContext | null; + public statements(i?: number): StatementsContext[] | StatementsContext | null { + if (i === undefined) { + return this.getRuleContexts(StatementsContext); + } + + return this.getRuleContext(i, StatementsContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_program; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterProgram) { + listener.enterProgram(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitProgram) { + listener.exitProgram(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitProgram) { + return visitor.visitProgram(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StatementsContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public singleStatement(): SingleStatementContext { + return this.getRuleContext(0, SingleStatementContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_statements; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStatements) { + listener.enterStatements(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStatements) { + listener.exitStatements(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStatements) { + return visitor.visitStatements(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class SingleStatementContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext)!; + } + public SEMICOLON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SEMICOLON, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_singleStatement; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSingleStatement) { + listener.enterSingleStatement(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSingleStatement) { + listener.exitSingleStatement(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSingleStatement) { + return visitor.visitSingleStatement(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StandaloneExpressionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public SEMICOLON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SEMICOLON, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_standaloneExpression; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStandaloneExpression) { + listener.enterStandaloneExpression(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStandaloneExpression) { + listener.exitStandaloneExpression(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStandaloneExpression) { + return visitor.visitStandaloneExpression(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StandalonePathSpecificationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public pathSpecification(): PathSpecificationContext { + return this.getRuleContext(0, PathSpecificationContext)!; + } + public SEMICOLON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SEMICOLON, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_standalonePathSpecification; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStandalonePathSpecification) { + listener.enterStandalonePathSpecification(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStandalonePathSpecification) { + listener.exitStandalonePathSpecification(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStandalonePathSpecification) { + return visitor.visitStandalonePathSpecification(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StandaloneTypeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; + } + public SEMICOLON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SEMICOLON, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_standaloneType; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStandaloneType) { + listener.enterStandaloneType(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStandaloneType) { + listener.exitStandaloneType(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStandaloneType) { + return visitor.visitStandaloneType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StandaloneRowPatternContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public rowPattern(): RowPatternContext { + return this.getRuleContext(0, RowPatternContext)!; + } + public SEMICOLON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SEMICOLON, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_standaloneRowPattern; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStandaloneRowPattern) { + listener.enterStandaloneRowPattern(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStandaloneRowPattern) { + listener.exitStandaloneRowPattern(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStandaloneRowPattern) { + return visitor.visitStandaloneRowPattern(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StandaloneFunctionSpecificationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public functionSpecification(): FunctionSpecificationContext { + return this.getRuleContext(0, FunctionSpecificationContext)!; + } + public EOF(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EOF, 0)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_standaloneFunctionSpecification; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStandaloneFunctionSpecification) { + listener.enterStandaloneFunctionSpecification(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStandaloneFunctionSpecification) { + listener.exitStandaloneFunctionSpecification(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStandaloneFunctionSpecification) { + return visitor.visitStandaloneFunctionSpecification(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class StatementContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_statement; + } + public override copyFrom(ctx: StatementContext): void { + super.copyFrom(ctx); + } +} +export class ExplainContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_EXPLAIN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXPLAIN, 0)!; + } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext)!; + } + public explainOption(): ExplainOptionContext[]; + public explainOption(i: number): ExplainOptionContext | null; + public explainOption(i?: number): ExplainOptionContext[] | ExplainOptionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExplainOptionContext); + } + + return this.getRuleContext(i, ExplainOptionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterExplain) { + listener.enterExplain(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitExplain) { + listener.exitExplain(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitExplain) { + return visitor.visitExplain(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class PrepareContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_PREPARE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PREPARE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterPrepare) { + listener.enterPrepare(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitPrepare) { + listener.exitPrepare(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitPrepare) { + return visitor.visitPrepare(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropMaterializedViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropMaterializedView) { + listener.enterDropMaterializedView(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropMaterializedView) { + listener.exitDropMaterializedView(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropMaterializedView) { + return visitor.visitDropMaterializedView(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetMaterializedViewPropertiesContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_PROPERTIES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0)!; + } + public propertyAssignments(): PropertyAssignmentsContext { + return this.getRuleContext(0, PropertyAssignmentsContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetMaterializedViewProperties) { + listener.enterSetMaterializedViewProperties(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetMaterializedViewProperties) { + listener.exitSetMaterializedViewProperties(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetMaterializedViewProperties) { + return visitor.visitSetMaterializedViewProperties(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropNotNullConstraintContext extends StatementContext { + public _tableName?: TableRefContext; + public _column?: ColumnRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode[]; + public KW_ALTER(i: number): antlr.TerminalNode | null; + public KW_ALTER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ALTER); + } else { + return this.getToken(TrinoSqlParser.KW_ALTER, i); + } + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_NOT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NOT, 0)!; + } + public KW_NULL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NULL, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropNotNullConstraint) { + listener.enterDropNotNullConstraint(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropNotNullConstraint) { + listener.exitDropNotNullConstraint(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropNotNullConstraint) { + return visitor.visitDropNotNullConstraint(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class UseContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_USE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_USE, 0)!; + } + public schemaRef(): SchemaRefContext { + return this.getRuleContext(0, SchemaRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterUse) { + listener.enterUse(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitUse) { + listener.exitUse(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitUse) { + return visitor.visitUse(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DeallocateContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DEALLOCATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DEALLOCATE, 0)!; + } + public KW_PREPARE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PREPARE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDeallocate) { + listener.enterDeallocate(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDeallocate) { + listener.exitDeallocate(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDeallocate) { + return visitor.visitDeallocate(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RenameTableContext extends StatementContext { + public _from_?: TableRefContext; + public _to?: TableNameCreateContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_RENAME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public tableNameCreate(): TableNameCreateContext { + return this.getRuleContext(0, TableNameCreateContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRenameTable) { + listener.enterRenameTable(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRenameTable) { + listener.exitRenameTable(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRenameTable) { + return visitor.visitRenameTable(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CommitContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_COMMIT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMIT, 0)!; + } + public KW_WORK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WORK, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCommit) { + listener.enterCommit(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCommit) { + listener.exitCommit(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCommit) { + return visitor.visitCommit(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateRoleContext extends StatementContext { + public _name?: IdentifierContext; + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_ROLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public KW_ADMIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ADMIN, 0); + } + public grantor(): GrantorContext | null { + return this.getRuleContext(0, GrantorContext); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateRole) { + listener.enterCreateRole(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateRole) { + listener.exitCreateRole(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateRole) { + return visitor.visitCreateRole(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowCreateFunctionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FUNCTION, 0)!; + } + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowCreateFunction) { + listener.enterShowCreateFunction(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowCreateFunction) { + listener.exitShowCreateFunction(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowCreateFunction) { + return visitor.visitShowCreateFunction(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropColumnContext extends StatementContext { + public _tableName?: TableRefContext; + public _column?: ColumnRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public KW_IF(): antlr.TerminalNode[]; + public KW_IF(i: number): antlr.TerminalNode | null; + public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_IF); + } else { + return this.getToken(TrinoSqlParser.KW_IF, i); + } + } + public KW_EXISTS(): antlr.TerminalNode[]; + public KW_EXISTS(i: number): antlr.TerminalNode | null; + public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_EXISTS); + } else { + return this.getToken(TrinoSqlParser.KW_EXISTS, i); + } + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropColumn) { + listener.enterDropColumn(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropColumn) { + listener.exitDropColumn(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropColumn) { + return visitor.visitDropColumn(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropView) { + listener.enterDropView(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropView) { + listener.exitDropView(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropView) { + return visitor.visitDropView(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowTablesContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_TABLES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLES, 0)!; + } + public schemaRef(): SchemaRefContext | null { + return this.getRuleContext(0, SchemaRefContext); + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); + } + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowTables) { + listener.enterShowTables(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowTables) { + listener.exitShowTables(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowTables) { + return visitor.visitShowTables(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetViewAuthorizationContext extends StatementContext { + public _from_?: ViewRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_AUTHORIZATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetViewAuthorization) { + listener.enterSetViewAuthorization(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetViewAuthorization) { + listener.exitSetViewAuthorization(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetViewAuthorization) { + return visitor.visitSetViewAuthorization(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowTableCommentContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowTableComment) { + listener.enterShowTableComment(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowTableComment) { + listener.exitShowTableComment(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowTableComment) { + return visitor.visitShowTableComment(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowCatalogsContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CATALOGS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CATALOGS, 0)!; + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); + } + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowCatalogs) { + listener.enterShowCatalogs(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowCatalogs) { + listener.exitShowCatalogs(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowCatalogs) { + return visitor.visitShowCatalogs(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowRolesContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_ROLES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLES, 0)!; + } + public KW_CURRENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CURRENT, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowRoles) { + listener.enterShowRoles(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowRoles) { + listener.exitShowRoles(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowRoles) { + return visitor.visitShowRoles(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class MergeContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_MERGE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MERGE, 0)!; + } + public KW_INTO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INTO, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_USING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_USING, 0)!; + } + public relation(): RelationContext { + return this.getRuleContext(0, RelationContext)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public mergeCase(): MergeCaseContext[]; + public mergeCase(i: number): MergeCaseContext | null; + public mergeCase(i?: number): MergeCaseContext[] | MergeCaseContext | null { + if (i === undefined) { + return this.getRuleContexts(MergeCaseContext); + } + + return this.getRuleContext(i, MergeCaseContext); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterMerge) { + listener.enterMerge(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitMerge) { + listener.exitMerge(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitMerge) { + return visitor.visitMerge(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RenameColumnContext extends StatementContext { + public _tableName?: TableRefContext; + public _from_?: ColumnRefContext; + public _to?: ColumnNameCreateContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_RENAME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public columnNameCreate(): ColumnNameCreateContext { + return this.getRuleContext(0, ColumnNameCreateContext)!; + } + public KW_IF(): antlr.TerminalNode[]; + public KW_IF(i: number): antlr.TerminalNode | null; + public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_IF); + } else { + return this.getToken(TrinoSqlParser.KW_IF, i); + } + } + public KW_EXISTS(): antlr.TerminalNode[]; + public KW_EXISTS(i: number): antlr.TerminalNode | null; + public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_EXISTS); + } else { + return this.getToken(TrinoSqlParser.KW_EXISTS, i); + } + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRenameColumn) { + listener.enterRenameColumn(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRenameColumn) { + listener.exitRenameColumn(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRenameColumn) { + return visitor.visitRenameColumn(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CommentColumnContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public KW_IS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IS, 0)!; + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCommentColumn) { + listener.enterCommentColumn(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCommentColumn) { + listener.exitCommentColumn(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCommentColumn) { + return visitor.visitCommentColumn(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RevokeRolesContext extends StatementContext { + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_REVOKE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_REVOKE, 0)!; + } + public privilegeOrRole(): PrivilegeOrRoleContext[]; + public privilegeOrRole(i: number): PrivilegeOrRoleContext | null; + public privilegeOrRole(i?: number): PrivilegeOrRoleContext[] | PrivilegeOrRoleContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeOrRoleContext); + } + + return this.getRuleContext(i, PrivilegeOrRoleContext); + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public principal(): PrincipalContext[]; + public principal(i: number): PrincipalContext | null; + public principal(i?: number): PrincipalContext[] | PrincipalContext | null { + if (i === undefined) { + return this.getRuleContexts(PrincipalContext); + } + + return this.getRuleContext(i, PrincipalContext); + } + public KW_ADMIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ADMIN, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OPTION, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FOR, 0); + } + public KW_GRANTED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRANTED, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); + } + public grantor(): GrantorContext | null { + return this.getRuleContext(0, GrantorContext); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRevokeRoles) { + listener.enterRevokeRoles(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRevokeRoles) { + listener.exitRevokeRoles(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRevokeRoles) { + return visitor.visitRevokeRoles(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowCreateTableContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowCreateTable) { + listener.enterShowCreateTable(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowCreateTable) { + listener.exitShowCreateTable(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowCreateTable) { + return visitor.visitShowCreateTable(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowColumnsContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SHOW, 0); + } + public KW_COLUMNS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COLUMNS, 0); + } + public tableOrViewName(): TableOrViewNameContext { + return this.getRuleContext(0, TableOrViewNameContext)!; + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); + } + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + } + public KW_DESCRIBE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0); + } + public KW_DESC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DESC, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowColumns) { + listener.enterShowColumns(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowColumns) { + listener.exitShowColumns(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowColumns) { + return visitor.visitShowColumns(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowRoleGrantsContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_ROLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + } + public KW_GRANTS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_GRANTS, 0)!; + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowRoleGrants) { + listener.enterShowRoleGrants(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowRoleGrants) { + listener.exitShowRoleGrants(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowRoleGrants) { + return visitor.visitShowRoleGrants(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class AddColumnContext extends StatementContext { + public _tableName?: TableRefContext; + public _column?: ColumnDefinitionContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_ADD(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ADD, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public columnDefinition(): ColumnDefinitionContext { + return this.getRuleContext(0, ColumnDefinitionContext)!; + } + public KW_IF(): antlr.TerminalNode[]; + public KW_IF(i: number): antlr.TerminalNode | null; + public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_IF); + } else { + return this.getToken(TrinoSqlParser.KW_IF, i); + } + } + public KW_EXISTS(): antlr.TerminalNode[]; + public KW_EXISTS(i: number): antlr.TerminalNode | null; + public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_EXISTS); + } else { + return this.getToken(TrinoSqlParser.KW_EXISTS, i); + } + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterAddColumn) { + listener.enterAddColumn(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitAddColumn) { + listener.exitAddColumn(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitAddColumn) { + return visitor.visitAddColumn(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DenyContext extends StatementContext { + public _grantee?: PrincipalContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DENY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DENY, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public grantObject(): GrantObjectContext { + return this.getRuleContext(0, GrantObjectContext)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; + } + public privilege(): PrivilegeContext[]; + public privilege(i: number): PrivilegeContext | null; + public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeContext); + } + + return this.getRuleContext(i, PrivilegeContext); + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); + } + public KW_PRIVILEGES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDeny) { + listener.enterDeny(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDeny) { + listener.exitDeny(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDeny) { + return visitor.visitDeny(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ResetSessionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_RESET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RESET, 0)!; + } + public KW_SESSION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + } + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterResetSession) { + listener.enterResetSession(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitResetSession) { + listener.exitResetSession(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitResetSession) { + return visitor.visitResetSession(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class InsertIntoContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_INSERT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INSERT, 0)!; + } + public KW_INTO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INTO, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public rootQuery(): RootQueryContext { + return this.getRuleContext(0, RootQueryContext)!; + } + public columnList(): ColumnListContext | null { + return this.getRuleContext(0, ColumnListContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterInsertInto) { + listener.enterInsertInto(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitInsertInto) { + listener.exitInsertInto(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitInsertInto) { + return visitor.visitInsertInto(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowSessionContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_SESSION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); + } + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowSession) { + listener.enterShowSession(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowSession) { + listener.exitShowSession(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowSession) { + return visitor.visitShowSession(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateSchemaContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + } + public schemaNameCreate(): SchemaNameCreateContext { + return this.getRuleContext(0, SchemaNameCreateContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_AUTHORIZATION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); + } + public principal(): PrincipalContext | null { + return this.getRuleContext(0, PrincipalContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateSchema) { + listener.enterCreateSchema(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateSchema) { + listener.exitCreateSchema(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateSchema) { + return visitor.visitCreateSchema(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetSessionAuthorizationContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_SESSION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + } + public KW_AUTHORIZATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + } + public authorizationUser(): AuthorizationUserContext { + return this.getRuleContext(0, AuthorizationUserContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetSessionAuthorization) { + listener.enterSetSessionAuthorization(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetSessionAuthorization) { + listener.exitSetSessionAuthorization(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetSessionAuthorization) { + return visitor.visitSetSessionAuthorization(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ExplainAnalyzeContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_EXPLAIN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXPLAIN, 0)!; + } + public KW_ANALYZE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ANALYZE, 0)!; + } + public statement(): StatementContext { + return this.getRuleContext(0, StatementContext)!; + } + public KW_VERBOSE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VERBOSE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterExplainAnalyze) { + listener.enterExplainAnalyze(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitExplainAnalyze) { + listener.exitExplainAnalyze(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitExplainAnalyze) { + return visitor.visitExplainAnalyze(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ExecuteContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_EXECUTE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXECUTE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_USING, 0); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterExecute) { + listener.enterExecute(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitExecute) { + listener.exitExecute(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitExecute) { + return visitor.visitExecute(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RenameSchemaContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + } + public schemaRef(): SchemaRefContext { + return this.getRuleContext(0, SchemaRefContext)!; + } + public KW_RENAME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public schemaNameCreate(): SchemaNameCreateContext { + return this.getRuleContext(0, SchemaNameCreateContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRenameSchema) { + listener.enterRenameSchema(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRenameSchema) { + listener.exitRenameSchema(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRenameSchema) { + return visitor.visitRenameSchema(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropRoleContext extends StatementContext { + public _name?: IdentifierContext; + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_ROLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropRole) { + listener.enterDropRole(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropRole) { + listener.exitDropRole(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropRole) { + return visitor.visitDropRole(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class AnalyzeContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ANALYZE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ANALYZE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterAnalyze) { + listener.enterAnalyze(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitAnalyze) { + listener.exitAnalyze(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitAnalyze) { + return visitor.visitAnalyze(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetRoleContext extends StatementContext { + public _role?: IdentifierContext; + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_ROLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); + } + public KW_NONE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NONE, 0); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetRole) { + listener.enterSetRole(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetRole) { + listener.exitSetRole(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetRole) { + return visitor.visitSetRole(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateFunctionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public functionSpecification(): FunctionSpecificationContext { + return this.getRuleContext(0, FunctionSpecificationContext)!; + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateFunction) { + listener.enterCreateFunction(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateFunction) { + listener.exitCreateFunction(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateFunction) { + return visitor.visitCreateFunction(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropCatalogContext extends StatementContext { + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_CATALOG(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CATALOG, 0)!; + } + public catalogRef(): CatalogRefContext { + return this.getRuleContext(0, CatalogRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_CASCADE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CASCADE, 0); + } + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RESTRICT, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropCatalog) { + listener.enterDropCatalog(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropCatalog) { + listener.exitDropCatalog(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropCatalog) { + return visitor.visitDropCatalog(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowGrantsContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_GRANTS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_GRANTS, 0)!; + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); + } + public grantObject(): GrantObjectContext | null { + return this.getRuleContext(0, GrantObjectContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowGrants) { + listener.enterShowGrants(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowGrants) { + listener.exitShowGrants(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowGrants) { + return visitor.visitShowGrants(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropSchemaContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + } + public schemaRef(): SchemaRefContext { + return this.getRuleContext(0, SchemaRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_CASCADE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CASCADE, 0); + } + public KW_RESTRICT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RESTRICT, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropSchema) { + listener.enterDropSchema(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropSchema) { + listener.exitDropSchema(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropSchema) { + return visitor.visitDropSchema(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ResetSessionAuthorizationContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_RESET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RESET, 0)!; + } + public KW_SESSION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + } + public KW_AUTHORIZATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterResetSessionAuthorization) { + listener.enterResetSessionAuthorization(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitResetSessionAuthorization) { + listener.exitResetSessionAuthorization(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitResetSessionAuthorization) { + return visitor.visitResetSessionAuthorization(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetTableAuthorizationContext extends StatementContext { + public _tableName?: TableRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_AUTHORIZATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetTableAuthorization) { + listener.enterSetTableAuthorization(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetTableAuthorization) { + listener.exitSetTableAuthorization(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetTableAuthorization) { + return visitor.visitSetTableAuthorization(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowCreateViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowCreateView) { + listener.enterShowCreateView(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowCreateView) { + listener.exitShowCreateView(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowCreateView) { + return visitor.visitShowCreateView(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowColumnCommentContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowColumnComment) { + listener.enterShowColumnComment(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowColumnComment) { + listener.exitShowColumnComment(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowColumnComment) { + return visitor.visitShowColumnComment(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateTableContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableNameCreate(): TableNameCreateContext { + return this.getRuleContext(0, TableNameCreateContext)!; + } + public tableElement(): TableElementContext[]; + public tableElement(i: number): TableElementContext | null; + public tableElement(i?: number): TableElementContext[] | TableElementContext | null { + if (i === undefined) { + return this.getRuleContexts(TableElementContext); + } + + return this.getRuleContext(i, TableElementContext); + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateTable) { + listener.enterCreateTable(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateTable) { + listener.exitCreateTable(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateTable) { + return visitor.visitCreateTable(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class GrantPrivilegesContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_GRANT(): antlr.TerminalNode[]; + public KW_GRANT(i: number): antlr.TerminalNode | null; + public KW_GRANT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_GRANT); + } else { + return this.getToken(TrinoSqlParser.KW_GRANT, i); + } + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public grantObject(): GrantObjectContext { + return this.getRuleContext(0, GrantObjectContext)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); + } + public KW_PRIVILEGES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OPTION, 0); + } + public privilegeOrRole(): PrivilegeOrRoleContext[]; + public privilegeOrRole(i: number): PrivilegeOrRoleContext | null; + public privilegeOrRole(i?: number): PrivilegeOrRoleContext[] | PrivilegeOrRoleContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeOrRoleContext); + } + + return this.getRuleContext(i, PrivilegeOrRoleContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterGrantPrivileges) { + listener.enterGrantPrivileges(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitGrantPrivileges) { + listener.exitGrantPrivileges(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitGrantPrivileges) { + return visitor.visitGrantPrivileges(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class StartTransactionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_START(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_START, 0)!; + } + public KW_TRANSACTION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TRANSACTION, 0)!; + } + public transactionMode(): TransactionModeContext[]; + public transactionMode(i: number): TransactionModeContext | null; + public transactionMode(i?: number): TransactionModeContext[] | TransactionModeContext | null { + if (i === undefined) { + return this.getRuleContexts(TransactionModeContext); + } + + return this.getRuleContext(i, TransactionModeContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStartTransaction) { + listener.enterStartTransaction(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStartTransaction) { + listener.exitStartTransaction(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStartTransaction) { + return visitor.visitStartTransaction(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateTableAsSelectContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableNameCreate(): TableNameCreateContext { + return this.getRuleContext(0, TableNameCreateContext)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; + } + public rootQuery(): RootQueryContext | null { + return this.getRuleContext(0, RootQueryContext); + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public columnListCreate(): ColumnListCreateContext | null { + return this.getRuleContext(0, ColumnListCreateContext); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_WITH(): antlr.TerminalNode[]; + public KW_WITH(i: number): antlr.TerminalNode | null; + public KW_WITH(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_WITH); + } else { + return this.getToken(TrinoSqlParser.KW_WITH, i); + } + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public KW_DATA(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DATA, 0); + } + public KW_NO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NO, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateTableAsSelect) { + listener.enterCreateTableAsSelect(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateTableAsSelect) { + listener.exitCreateTableAsSelect(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateTableAsSelect) { + return visitor.visitCreateTableAsSelect(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CommentViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public KW_IS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IS, 0)!; + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCommentView) { + listener.enterCommentView(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCommentView) { + listener.exitCommentView(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCommentView) { + return visitor.visitCommentView(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowStatsContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_STATS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_STATS, 0)!; + } + public KW_FOR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FOR, 0)!; + } + public tableOrViewName(): TableOrViewNameContext { + return this.getRuleContext(0, TableOrViewNameContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowStats) { + listener.enterShowStats(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowStats) { + listener.exitShowStats(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowStats) { + return visitor.visitShowStats(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowCreateSchemaContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + } + public schemaRef(): SchemaRefContext { + return this.getRuleContext(0, SchemaRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowCreateSchema) { + listener.enterShowCreateSchema(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowCreateSchema) { + listener.exitShowCreateSchema(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowCreateSchema) { + return visitor.visitShowCreateSchema(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RevokePrivilegesContext extends StatementContext { + public _grantee?: PrincipalContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_REVOKE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_REVOKE, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public grantObject(): GrantObjectContext { + return this.getRuleContext(0, GrantObjectContext)!; + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; + } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); + } + public KW_PRIVILEGES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); + } + public KW_GRANT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRANT, 0); + } + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OPTION, 0); + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FOR, 0); + } + public privilegeOrRole(): PrivilegeOrRoleContext[]; + public privilegeOrRole(i: number): PrivilegeOrRoleContext | null; + public privilegeOrRole(i?: number): PrivilegeOrRoleContext[] | PrivilegeOrRoleContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeOrRoleContext); + } + + return this.getRuleContext(i, PrivilegeOrRoleContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRevokePrivileges) { + listener.enterRevokePrivileges(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRevokePrivileges) { + listener.exitRevokePrivileges(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRevokePrivileges) { + return visitor.visitRevokePrivileges(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DropFunctionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + } + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FUNCTION, 0)!; + } + public functionSignature(): FunctionSignatureContext { + return this.getRuleContext(0, FunctionSignatureContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDropFunction) { + listener.enterDropFunction(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDropFunction) { + listener.exitDropFunction(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDropFunction) { + return visitor.visitDropFunction(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class UpdateContext extends StatementContext { + public _where?: BooleanExpressionContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_UPDATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UPDATE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public updateAssignment(): UpdateAssignmentContext[]; + public updateAssignment(i: number): UpdateAssignmentContext | null; + public updateAssignment(i?: number): UpdateAssignmentContext[] | UpdateAssignmentContext | null { + if (i === undefined) { + return this.getRuleContexts(UpdateAssignmentContext); + } + + return this.getRuleContext(i, UpdateAssignmentContext); + } + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHERE, 0); + } + public booleanExpression(): BooleanExpressionContext | null { + return this.getRuleContext(0, BooleanExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterUpdate) { + listener.enterUpdate(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitUpdate) { + listener.exitUpdate(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitUpdate) { + return visitor.visitUpdate(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class TableExecuteContext extends StatementContext { + public _tableName?: TableRefContext; + public _procedureName?: FunctionNameContext; + public _where?: BooleanExpressionContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_EXECUTE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXECUTE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; + } + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHERE, 0); + } + public booleanExpression(): BooleanExpressionContext | null { + return this.getRuleContext(0, BooleanExpressionContext); + } + public callArgument(): CallArgumentContext[]; + public callArgument(i: number): CallArgumentContext | null; + public callArgument(i?: number): CallArgumentContext[] | CallArgumentContext | null { + if (i === undefined) { + return this.getRuleContexts(CallArgumentContext); + } + + return this.getRuleContext(i, CallArgumentContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterTableExecute) { + listener.enterTableExecute(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitTableExecute) { + listener.exitTableExecute(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitTableExecute) { + return visitor.visitTableExecute(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DeleteContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DELETE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DELETE, 0)!; + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHERE, 0); + } + public booleanExpression(): BooleanExpressionContext | null { + return this.getRuleContext(0, BooleanExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDelete) { + listener.enterDelete(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDelete) { + listener.exitDelete(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDelete) { + return visitor.visitDelete(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class DescribeInputContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_DESCRIBE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0)!; + } + public KW_INPUT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INPUT, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterDescribeInput) { + listener.enterDescribeInput(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitDescribeInput) { + listener.exitDescribeInput(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitDescribeInput) { + return visitor.visitDescribeInput(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ShowStatsForQueryContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_STATS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_STATS, 0)!; + } + public KW_FOR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FOR, 0)!; + } + public rootQuery(): RootQueryContext { + return this.getRuleContext(0, RootQueryContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterShowStatsForQuery) { + listener.enterShowStatsForQuery(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitShowStatsForQuery) { + listener.exitShowStatsForQuery(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitShowStatsForQuery) { + return visitor.visitShowStatsForQuery(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SetColumnTypeContext extends StatementContext { + public _tableName?: TableRefContext; + public _column?: ColumnRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode[]; + public KW_ALTER(i: number): antlr.TerminalNode | null; + public KW_ALTER(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ALTER); + } else { + return this.getToken(TrinoSqlParser.KW_ALTER, i); + } + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public KW_COLUMN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_DATA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DATA, 0)!; + } + public KW_TYPE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TYPE, 0)!; + } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public columnRef(): ColumnRefContext { + return this.getRuleContext(0, ColumnRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetColumnType) { + listener.enterSetColumnType(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetColumnType) { + listener.exitSetColumnType(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetColumnType) { + return visitor.visitSetColumnType(this); + } else { + return visitor.visitChildren(this); } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } + } +} +export class StatementDefaultContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public rootQuery(): RootQueryContext { + return this.getRuleContext(0, RootQueryContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStatementDefault) { + listener.enterStatementDefault(this); } - finally { - this.exitRule(); + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStatementDefault) { + listener.exitStatementDefault(this); } - return localContext; } - public number_(): NumberContext { - let localContext = new NumberContext(this.context, this.state); - this.enterRule(localContext, 214, TrinoSqlParser.RULE_number); - let _la: number; - try { - this.state = 2602; - this.errorHandler.sync(this); - switch (this.interpreter.adaptivePredict(this.tokenStream, 339, this.context) ) { - case 1: - localContext = new DecimalLiteralContext(localContext); - this.enterOuterAlt(localContext, 1); - { - this.state = 2591; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 256) { - { - this.state = 2590; - this.match(TrinoSqlParser.MINUS); - } - } - - this.state = 2593; - this.match(TrinoSqlParser.DECIMAL_VALUE); - } - break; - case 2: - localContext = new DoubleLiteralContext(localContext); - this.enterOuterAlt(localContext, 2); - { - this.state = 2595; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 256) { - { - this.state = 2594; - this.match(TrinoSqlParser.MINUS); - } - } - - this.state = 2597; - this.match(TrinoSqlParser.DOUBLE_VALUE); - } - break; - case 3: - localContext = new IntegerLiteralContext(localContext); - this.enterOuterAlt(localContext, 3); - { - this.state = 2599; - this.errorHandler.sync(this); - _la = this.tokenStream.LA(1); - if (_la === 256) { - { - this.state = 2598; - this.match(TrinoSqlParser.MINUS); - } - } - - this.state = 2601; - this.match(TrinoSqlParser.INTEGER_VALUE); - } - break; - } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStatementDefault) { + return visitor.visitStatementDefault(this); + } else { + return visitor.visitChildren(this); } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } + } +} +export class SetTimeZoneContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_TIME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + } + public KW_ZONE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + } + public KW_LOCAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LOCAL, 0); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetTimeZone) { + listener.enterSetTimeZone(this); } - finally { - this.exitRule(); + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetTimeZone) { + listener.exitSetTimeZone(this); } - return localContext; } - public nonReserved(): NonReservedContext { - let localContext = new NonReservedContext(this.context, this.state); - this.enterRule(localContext, 216, TrinoSqlParser.RULE_nonReserved); - let _la: number; - try { - this.enterOuterAlt(localContext, 1); - { - this.state = 2604; - _la = this.tokenStream.LA(1); - if(!(((((_la - 17)) & ~0x1F) === 0 && ((1 << (_la - 17)) & 1140014511) !== 0) || ((((_la - 56)) & ~0x1F) === 0 && ((1 << (_la - 56)) & 3192429231) !== 0) || ((((_la - 90)) & ~0x1F) === 0 && ((1 << (_la - 90)) & 3134381375) !== 0) || ((((_la - 123)) & ~0x1F) === 0 && ((1 << (_la - 123)) & 3162472435) !== 0) || ((((_la - 155)) & ~0x1F) === 0 && ((1 << (_la - 155)) & 4286316499) !== 0) || ((((_la - 188)) & ~0x1F) === 0 && ((1 << (_la - 188)) & 4009750519) !== 0) || ((((_la - 220)) & ~0x1F) === 0 && ((1 << (_la - 220)) & 525170103) !== 0))) { - this.errorHandler.recoverInline(this); - } - else { - this.errorHandler.reportMatch(this); - this.consume(); - } - } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetTimeZone) { + return visitor.visitSetTimeZone(this); + } else { + return visitor.visitChildren(this); } - catch (re) { - if (re instanceof antlr.RecognitionException) { - localContext.exception = re; - this.errorHandler.reportError(this, re); - this.errorHandler.recover(this, re); - } else { - throw re; - } + } +} +export class TruncateTableContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_TRUNCATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TRUNCATE, 0)!; + } + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterTruncateTable) { + listener.enterTruncateTable(this); } - finally { - this.exitRule(); + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitTruncateTable) { + listener.exitTruncateTable(this); } - return localContext; } - - public override sempred(localContext: antlr.RuleContext | null, ruleIndex: number, predIndex: number): boolean { - switch (ruleIndex) { - case 21: - return this.queryTerm_sempred(localContext as QueryTermContext, predIndex); - case 34: - return this.relation_sempred(localContext as RelationContext, predIndex); - case 52: - return this.booleanExpression_sempred(localContext as BooleanExpressionContext, predIndex); - case 54: - return this.valueExpression_sempred(localContext as ValueExpressionContext, predIndex); - case 55: - return this.primaryExpression_sempred(localContext as PrimaryExpressionContext, predIndex); - case 66: - return this.type_sempred(localContext as TypeContext, predIndex); - case 76: - return this.rowPattern_sempred(localContext as RowPatternContext, predIndex); - case 100: - return this.columnName_sempred(localContext as ColumnNameContext, predIndex); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitTruncateTable) { + return visitor.visitTruncateTable(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class CreateMaterializedViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; + } + public rootQuery(): RootQueryContext { + return this.getRuleContext(0, RootQueryContext)!; + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_GRACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRACE, 0); + } + public KW_PERIOD(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PERIOD, 0); + } + public interval(): IntervalContext | null { + return this.getRuleContext(0, IntervalContext); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateMaterializedView) { + listener.enterCreateMaterializedView(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateMaterializedView) { + listener.exitCreateMaterializedView(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateMaterializedView) { + return visitor.visitCreateMaterializedView(this); + } else { + return visitor.visitChildren(this); } - return true; } - private queryTerm_sempred(localContext: QueryTermContext | null, predIndex: number): boolean { - switch (predIndex) { - case 0: - return this.precpred(this.context, 2); - case 1: - return this.precpred(this.context, 1); - } - return true; +} +export class SetSessionContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - private relation_sempred(localContext: RelationContext | null, predIndex: number): boolean { - switch (predIndex) { - case 2: - return this.precpred(this.context, 2); + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public KW_SESSION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + } + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext)!; + } + public EQ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EQ, 0)!; + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSetSession) { + listener.enterSetSession(this); } - return true; } - private booleanExpression_sempred(localContext: BooleanExpressionContext | null, predIndex: number): boolean { - switch (predIndex) { - case 3: - return this.precpred(this.context, 2); - case 4: - return this.precpred(this.context, 1); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSetSession) { + listener.exitSetSession(this); } - return true; } - private valueExpression_sempred(localContext: ValueExpressionContext | null, predIndex: number): boolean { - switch (predIndex) { - case 5: - return this.precpred(this.context, 3); - case 6: - return this.precpred(this.context, 2); - case 7: - return this.precpred(this.context, 1); - case 8: - return this.precpred(this.context, 5); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSetSession) { + return visitor.visitSetSession(this); + } else { + return visitor.visitChildren(this); } - return true; } - private primaryExpression_sempred(localContext: PrimaryExpressionContext | null, predIndex: number): boolean { - switch (predIndex) { - case 9: - return this.precpred(this.context, 17); - case 10: - return this.precpred(this.context, 15); +} +export class CreateViewContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; + } + public rootQuery(): RootQueryContext { + return this.getRuleContext(0, RootQueryContext)!; + } + public KW_OR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OR, 0); + } + public KW_REPLACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_SECURITY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SECURITY, 0); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public KW_DEFINER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFINER, 0); + } + public KW_INVOKER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INVOKER, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCreateView) { + listener.enterCreateView(this); } - return true; } - private type_sempred(localContext: TypeContext | null, predIndex: number): boolean { - switch (predIndex) { - case 11: - return this.precpred(this.context, 2); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitCreateView) { + listener.exitCreateView(this); } - return true; } - private rowPattern_sempred(localContext: RowPatternContext | null, predIndex: number): boolean { - switch (predIndex) { - case 12: - return this.precpred(this.context, 2); - case 13: - return this.precpred(this.context, 1); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitCreateView) { + return visitor.visitCreateView(this); + } else { + return visitor.visitChildren(this); } - return true; } - private columnName_sempred(localContext: ColumnNameContext | null, predIndex: number): boolean { - switch (predIndex) { - case 14: - return this.shouldMatchEmpty(); +} +export class RenameMaterializedViewContext extends StatementContext { + public _from_?: ViewRefContext; + public _to?: ViewNameCreateContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public KW_RENAME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRenameMaterializedView) { + listener.enterRenameMaterializedView(this); } - return true; } - - public static readonly _serializedATN: number[] = [ - 4,1,277,2607,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,2,52,7, - 52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2, - 59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7, - 65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2, - 72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7, - 78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2, - 85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7, - 91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2, - 98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103, - 2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,1,0, - 5,0,220,8,0,10,0,12,0,223,9,0,1,0,1,0,1,1,1,1,1,2,1,2,1,2,1,2,3, - 2,233,8,2,1,3,1,3,3,3,237,8,3,1,4,1,4,3,4,241,8,4,1,5,1,5,3,5,245, - 8,5,1,6,1,6,3,6,249,8,6,1,7,1,7,3,7,253,8,7,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,3,8,263,8,8,1,8,1,8,1,8,3,8,268,8,8,1,8,1,8,3,8,272, - 8,8,1,8,1,8,1,8,1,8,3,8,278,8,8,1,8,1,8,3,8,282,8,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 3,8,303,8,8,1,8,1,8,3,8,307,8,8,1,8,1,8,3,8,311,8,8,1,8,1,8,3,8, - 315,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,323,8,8,1,8,1,8,3,8,327,8,8, - 1,8,3,8,330,8,8,1,8,1,8,1,8,1,8,1,8,3,8,337,8,8,1,8,1,8,1,8,1,8, - 1,8,5,8,344,8,8,10,8,12,8,347,9,8,1,8,1,8,1,8,3,8,352,8,8,1,8,1, - 8,3,8,356,8,8,1,8,1,8,1,8,1,8,3,8,362,8,8,1,8,1,8,1,8,1,8,1,8,3, - 8,369,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,378,8,8,1,8,1,8,1,8,1, - 8,1,8,1,8,1,8,3,8,387,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,1,8,3,8,401,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,410,8,8,1, - 8,1,8,1,8,1,8,3,8,416,8,8,1,8,1,8,1,8,1,8,1,8,3,8,423,8,8,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,433,8,8,1,8,1,8,1,8,1,8,1,8,3,8,440, - 8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,448,8,8,1,8,1,8,1,8,1,8,1,8,1,8, - 3,8,456,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,483,8,8,10,8, - 12,8,486,9,8,3,8,488,8,8,1,8,3,8,491,8,8,1,8,1,8,3,8,495,8,8,1,8, - 1,8,1,8,1,8,3,8,501,8,8,1,8,1,8,1,8,3,8,506,8,8,1,8,1,8,1,8,1,8, - 1,8,3,8,513,8,8,1,8,1,8,1,8,3,8,518,8,8,1,8,1,8,3,8,522,8,8,1,8, - 1,8,1,8,1,8,1,8,1,8,3,8,530,8,8,1,8,1,8,1,8,1,8,3,8,536,8,8,1,8, - 1,8,3,8,540,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 3,8,554,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,562,8,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,581,8,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,5,8,604,8,8,10,8,12,8,607,9,8,3,8,609,8,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,619,8,8,1,8,1,8,3,8,623,8,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,634,8,8,10,8,12,8,637,9,8, - 1,8,1,8,1,8,3,8,642,8,8,1,8,1,8,1,8,3,8,647,8,8,1,8,1,8,3,8,651, - 8,8,1,8,1,8,1,8,1,8,3,8,657,8,8,1,8,1,8,1,8,1,8,1,8,5,8,664,8,8, - 10,8,12,8,667,9,8,1,8,1,8,1,8,3,8,672,8,8,1,8,1,8,3,8,676,8,8,1, - 8,1,8,1,8,1,8,1,8,3,8,683,8,8,1,8,1,8,3,8,687,8,8,1,8,1,8,1,8,1, - 8,5,8,693,8,8,10,8,12,8,696,9,8,1,8,1,8,3,8,700,8,8,1,8,1,8,3,8, - 704,8,8,1,8,1,8,3,8,708,8,8,1,8,3,8,711,8,8,1,8,1,8,1,8,1,8,1,8, - 3,8,718,8,8,1,8,1,8,1,8,1,8,5,8,724,8,8,10,8,12,8,727,9,8,1,8,1, - 8,3,8,731,8,8,1,8,1,8,3,8,735,8,8,1,8,1,8,3,8,739,8,8,1,8,3,8,742, - 8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,751,8,8,1,8,1,8,1,8,5,8,756, - 8,8,10,8,12,8,759,9,8,1,8,1,8,3,8,763,8,8,1,8,1,8,3,8,767,8,8,1, - 8,1,8,3,8,771,8,8,1,8,3,8,774,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,782, - 8,8,1,8,3,8,785,8,8,1,8,1,8,3,8,789,8,8,1,8,3,8,792,8,8,1,8,1,8, - 1,8,1,8,5,8,798,8,8,10,8,12,8,801,9,8,1,8,1,8,3,8,805,8,8,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,1,8,1,8,1,8,3,8,829,8,8,1,8,1,8,1,8,1,8,3,8,835,8,8,3,8,837, - 8,8,1,8,1,8,1,8,1,8,3,8,843,8,8,1,8,1,8,1,8,1,8,3,8,849,8,8,3,8, - 851,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,859,8,8,3,8,861,8,8,1,8,1,8, - 1,8,1,8,3,8,867,8,8,1,8,1,8,1,8,1,8,3,8,873,8,8,3,8,875,8,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,890,8,8,1,8, - 1,8,1,8,3,8,895,8,8,1,8,1,8,1,8,1,8,1,8,3,8,902,8,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,914,8,8,3,8,916,8,8,1,8,1,8,1,8, - 1,8,1,8,1,8,3,8,924,8,8,3,8,926,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,942,8,8,10,8,12,8,945,9,8,3,8,947, - 8,8,1,8,1,8,3,8,951,8,8,1,8,1,8,3,8,955,8,8,1,8,1,8,1,8,1,8,1,8, - 1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,971,8,8,10,8,12,8,974,9, - 8,3,8,976,8,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1, - 8,1,8,3,8,992,8,8,1,8,1,8,1,8,1,8,1,8,1,8,5,8,1000,8,8,10,8,12,8, - 1003,9,8,1,8,1,8,3,8,1007,8,8,1,8,1,8,1,8,1,8,3,8,1013,8,8,1,8,3, - 8,1016,8,8,1,8,1,8,1,8,1,8,1,8,4,8,1023,8,8,11,8,12,8,1024,1,8,1, - 8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,1037,8,8,1,9,3,9,1040,8,9, - 1,9,1,9,1,10,1,10,3,10,1046,8,10,1,10,1,10,1,10,5,10,1051,8,10,10, - 10,12,10,1054,9,10,1,11,1,11,3,11,1058,8,11,1,12,1,12,1,12,1,12, - 3,12,1064,8,12,1,12,1,12,3,12,1068,8,12,1,12,1,12,3,12,1072,8,12, - 1,13,1,13,1,13,1,13,3,13,1078,8,13,1,14,1,14,1,14,1,14,1,15,1,15, - 1,15,5,15,1087,8,15,10,15,12,15,1090,9,15,1,16,1,16,1,16,1,16,1, - 17,1,17,3,17,1098,8,17,1,18,1,18,1,18,1,18,1,18,1,18,5,18,1106,8, - 18,10,18,12,18,1109,9,18,3,18,1111,8,18,1,18,1,18,1,18,3,18,1116, - 8,18,3,18,1118,8,18,1,18,1,18,1,18,1,18,1,18,3,18,1125,8,18,1,18, - 1,18,1,18,1,18,3,18,1131,8,18,3,18,1133,8,18,1,19,1,19,3,19,1137, - 8,19,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,3,21,1147,8,21,1,21, - 1,21,1,21,1,21,3,21,1153,8,21,1,21,5,21,1156,8,21,10,21,12,21,1159, - 9,21,1,22,1,22,1,22,1,22,1,22,1,22,1,22,5,22,1168,8,22,10,22,12, - 22,1171,9,22,1,22,1,22,1,22,1,22,3,22,1177,8,22,1,23,1,23,3,23,1181, - 8,23,1,23,3,23,1184,8,23,1,23,1,23,3,23,1188,8,23,1,24,1,24,3,24, - 1192,8,24,1,24,1,24,1,24,5,24,1197,8,24,10,24,12,24,1200,9,24,1, - 24,1,24,1,24,1,24,5,24,1206,8,24,10,24,12,24,1209,9,24,3,24,1211, - 8,24,1,24,1,24,3,24,1215,8,24,1,24,1,24,1,24,3,24,1220,8,24,1,24, - 1,24,3,24,1224,8,24,1,24,1,24,1,24,1,24,5,24,1230,8,24,10,24,12, - 24,1233,9,24,3,24,1235,8,24,1,25,3,25,1238,8,25,1,25,1,25,1,25,5, - 25,1243,8,25,10,25,12,25,1246,9,25,1,26,1,26,1,26,1,26,1,26,1,26, - 5,26,1254,8,26,10,26,12,26,1257,9,26,3,26,1259,8,26,1,26,1,26,1, - 26,1,26,1,26,1,26,5,26,1267,8,26,10,26,12,26,1270,9,26,3,26,1272, - 8,26,1,26,1,26,1,26,1,26,1,26,1,26,1,26,5,26,1281,8,26,10,26,12, - 26,1284,9,26,1,26,1,26,3,26,1288,8,26,1,27,1,27,1,27,1,27,5,27,1294, - 8,27,10,27,12,27,1297,9,27,3,27,1299,8,27,1,27,1,27,3,27,1303,8, - 27,1,28,1,28,3,28,1307,8,28,1,29,1,29,1,29,1,29,1,29,1,29,1,30,3, - 30,1316,8,30,1,30,1,30,1,30,1,30,1,30,5,30,1323,8,30,10,30,12,30, - 1326,9,30,3,30,1328,8,30,1,30,1,30,1,30,1,30,1,30,5,30,1335,8,30, - 10,30,12,30,1338,9,30,3,30,1340,8,30,1,30,3,30,1343,8,30,1,31,1, - 31,3,31,1347,8,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,33,1,33,3, - 33,1358,8,33,1,33,3,33,1361,8,33,1,33,3,33,1364,8,33,1,33,1,33,1, - 33,1,33,1,33,3,33,1371,8,33,1,33,3,33,1374,8,33,1,34,1,34,1,34,1, - 34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1, - 34,3,34,1393,8,34,5,34,1395,8,34,10,34,12,34,1398,9,34,1,35,3,35, - 1401,8,35,1,35,1,35,3,35,1405,8,35,1,35,1,35,3,35,1409,8,35,1,35, - 1,35,3,35,1413,8,35,3,35,1415,8,35,1,36,1,36,1,36,1,36,1,36,1,36, - 1,36,5,36,1424,8,36,10,36,12,36,1427,9,36,1,36,1,36,3,36,1431,8, - 36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,3,37,1440,8,37,1,38,1,38,1, - 39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,5,39,1452,8,39,10,39,12,39, - 1455,9,39,3,39,1457,8,39,1,39,1,39,1,39,1,39,1,39,5,39,1464,8,39, - 10,39,12,39,1467,9,39,3,39,1469,8,39,1,39,1,39,1,39,1,39,5,39,1475, - 8,39,10,39,12,39,1478,9,39,3,39,1480,8,39,1,39,3,39,1483,8,39,1, - 39,1,39,1,39,3,39,1488,8,39,1,39,3,39,1491,8,39,1,39,1,39,1,39,1, - 39,1,39,1,39,1,39,1,39,5,39,1501,8,39,10,39,12,39,1504,9,39,3,39, - 1506,8,39,1,39,1,39,1,39,1,39,5,39,1512,8,39,10,39,12,39,1515,9, - 39,1,39,1,39,3,39,1519,8,39,1,39,1,39,3,39,1523,8,39,3,39,1525,8, - 39,3,39,1527,8,39,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1, - 41,1,41,1,41,1,41,3,41,1542,8,41,3,41,1544,8,41,1,42,1,42,1,42,1, - 42,1,42,1,42,1,42,1,42,1,42,3,42,1555,8,42,1,43,1,43,1,43,1,43,1, - 43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1, - 43,1,43,3,43,1576,8,43,1,44,1,44,1,44,1,44,1,44,1,44,5,44,1584,8, - 44,10,44,12,44,1587,9,44,1,44,1,44,1,45,1,45,1,45,1,45,1,46,1,46, - 3,46,1597,8,46,1,46,1,46,3,46,1601,8,46,3,46,1603,8,46,1,47,1,47, - 1,47,1,47,5,47,1609,8,47,10,47,12,47,1612,9,47,1,47,1,47,1,48,1, - 48,1,48,1,48,5,48,1620,8,48,10,48,12,48,1623,9,48,1,48,1,48,1,49, - 1,49,1,49,1,49,5,49,1631,8,49,10,49,12,49,1634,9,49,1,49,1,49,1, - 50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,5,50,1648,8,50,10, - 50,12,50,1651,9,50,1,50,1,50,1,50,3,50,1656,8,50,1,50,1,50,1,50, - 1,50,1,50,1,50,1,50,1,50,1,50,3,50,1667,8,50,1,51,1,51,1,52,1,52, - 1,52,3,52,1674,8,52,1,52,1,52,3,52,1678,8,52,1,52,1,52,1,52,1,52, - 1,52,1,52,5,52,1686,8,52,10,52,12,52,1689,9,52,1,53,1,53,1,53,1, - 53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1701,8,53,1,53,1,53,1,53,1, - 53,1,53,1,53,3,53,1709,8,53,1,53,1,53,1,53,1,53,1,53,5,53,1716,8, - 53,10,53,12,53,1719,9,53,1,53,1,53,1,53,3,53,1724,8,53,1,53,1,53, - 1,53,1,53,1,53,1,53,3,53,1732,8,53,1,53,1,53,1,53,1,53,3,53,1738, - 8,53,1,53,1,53,3,53,1742,8,53,1,53,1,53,1,53,3,53,1747,8,53,1,53, - 1,53,1,53,3,53,1752,8,53,1,54,1,54,1,54,1,54,3,54,1758,8,54,1,54, - 1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,5,54,1772, - 8,54,10,54,12,54,1775,9,54,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1, - 55,1,55,1,55,1,55,1,55,4,55,1802,8,55,11,55,12,55,1803,1,55,1,55, - 1,55,1,55,1,55,1,55,1,55,5,55,1813,8,55,10,55,12,55,1816,9,55,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,1825,8,55,1,55,3,55,1828,8, - 55,1,55,3,55,1831,8,55,1,55,1,55,1,55,3,55,1836,8,55,1,55,1,55,1, - 55,5,55,1841,8,55,10,55,12,55,1844,9,55,3,55,1846,8,55,1,55,1,55, - 1,55,1,55,1,55,5,55,1853,8,55,10,55,12,55,1856,9,55,3,55,1858,8, - 55,1,55,1,55,3,55,1862,8,55,1,55,3,55,1865,8,55,1,55,3,55,1868,8, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,1881, - 8,55,10,55,12,55,1884,9,55,3,55,1886,8,55,1,55,1,55,1,55,1,55,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,4,55,1903,8, - 55,11,55,12,55,1904,1,55,1,55,3,55,1909,8,55,1,55,1,55,1,55,1,55, - 4,55,1915,8,55,11,55,12,55,1916,1,55,1,55,3,55,1921,8,55,1,55,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1, - 55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,1944,8,55,10,55,12,55,1947, - 9,55,3,55,1949,8,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,1958, - 8,55,1,55,1,55,1,55,1,55,3,55,1964,8,55,1,55,1,55,1,55,1,55,3,55, - 1970,8,55,1,55,1,55,1,55,1,55,3,55,1976,8,55,1,55,1,55,1,55,1,55, - 1,55,1,55,1,55,1,55,1,55,1,55,1,55,3,55,1989,8,55,1,55,1,55,1,55, - 1,55,1,55,1,55,1,55,3,55,1998,8,55,1,55,1,55,1,55,1,55,1,55,1,55, - 1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55, - 2018,8,55,10,55,12,55,2021,9,55,3,55,2023,8,55,1,55,3,55,2026,8, - 55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,1,55,5,55,2036,8,55,10,55, - 12,55,2039,9,55,1,56,1,56,1,57,1,57,1,57,1,57,3,57,2047,8,57,1,58, - 1,58,1,58,1,58,3,58,2053,8,58,3,58,2055,8,58,1,59,1,59,1,59,1,59, - 1,59,1,59,3,59,2063,8,59,1,60,1,60,1,61,1,61,1,62,1,62,1,63,1,63, - 3,63,2073,8,63,1,63,1,63,1,63,1,63,3,63,2079,8,63,1,64,1,64,1,65, - 1,65,1,66,1,66,1,66,1,66,1,66,1,66,5,66,2091,8,66,10,66,12,66,2094, - 9,66,1,66,1,66,1,66,1,66,1,66,1,66,3,66,2102,8,66,1,66,1,66,1,66, - 1,66,1,66,3,66,2109,8,66,1,66,1,66,1,66,3,66,2114,8,66,1,66,1,66, - 1,66,1,66,1,66,3,66,2121,8,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66, - 1,66,3,66,2131,8,66,1,66,1,66,1,66,3,66,2136,8,66,1,66,1,66,1,66, - 1,66,1,66,3,66,2143,8,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66, - 1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66, - 1,66,5,66,2167,8,66,10,66,12,66,2170,9,66,1,66,1,66,3,66,2174,8, - 66,3,66,2176,8,66,1,66,1,66,1,66,1,66,1,66,3,66,2183,8,66,5,66,2185, - 8,66,10,66,12,66,2188,9,66,1,67,1,67,1,67,1,67,3,67,2194,8,67,1, - 68,1,68,3,68,2198,8,68,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1, - 70,1,70,1,70,1,71,1,71,1,71,1,71,3,71,2215,8,71,1,71,1,71,1,71,1, - 71,1,71,1,71,1,71,1,71,1,71,1,71,1,71,5,71,2228,8,71,10,71,12,71, - 2231,9,71,1,71,1,71,1,71,1,71,3,71,2237,8,71,1,71,1,71,1,71,1,71, - 1,71,1,71,1,71,3,71,2246,8,71,1,71,1,71,1,71,1,71,1,71,1,71,5,71, - 2254,8,71,10,71,12,71,2257,9,71,1,71,1,71,3,71,2261,8,71,1,71,1, - 71,1,71,1,71,1,71,5,71,2268,8,71,10,71,12,71,2271,9,71,1,71,1,71, - 3,71,2275,8,71,1,72,1,72,1,72,1,72,1,72,1,72,3,72,2283,8,72,1,73, - 1,73,1,73,1,73,5,73,2289,8,73,10,73,12,73,2292,9,73,3,73,2294,8, - 73,1,73,1,73,1,73,1,73,3,73,2300,8,73,1,73,3,73,2303,8,73,1,73,1, - 73,1,73,1,73,1,73,3,73,2310,8,73,1,73,1,73,1,73,1,73,5,73,2316,8, - 73,10,73,12,73,2319,9,73,3,73,2321,8,73,1,73,1,73,1,73,1,73,5,73, - 2327,8,73,10,73,12,73,2330,9,73,3,73,2332,8,73,1,74,1,74,1,74,1, - 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1, - 74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,3,74,2358,8,74,1,75,1,75,1, - 75,1,75,1,75,1,75,1,75,1,75,1,75,3,75,2369,8,75,1,76,1,76,1,76,3, - 76,2374,8,76,1,76,1,76,1,76,1,76,1,76,5,76,2381,8,76,10,76,12,76, - 2384,9,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,5,77,2394,8,77, - 10,77,12,77,2397,9,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1, - 77,1,77,1,77,1,77,3,77,2411,8,77,1,78,1,78,3,78,2415,8,78,1,78,1, - 78,3,78,2419,8,78,1,78,1,78,3,78,2423,8,78,1,78,1,78,1,78,1,78,3, - 78,2429,8,78,1,78,1,78,3,78,2433,8,78,1,78,1,78,3,78,2437,8,78,1, - 78,1,78,3,78,2441,8,78,3,78,2443,8,78,1,79,1,79,1,79,1,79,1,80,1, - 80,1,80,1,80,3,80,2453,8,80,1,81,1,81,1,81,1,81,1,81,3,81,2460,8, - 81,1,82,1,82,1,82,1,82,1,82,1,82,1,82,3,82,2469,8,82,1,83,1,83,1, - 83,1,83,1,83,3,83,2476,8,83,1,84,1,84,1,84,1,84,1,84,3,84,2483,8, - 84,1,85,1,85,1,85,5,85,2488,8,85,10,85,12,85,2491,9,85,1,86,1,86, - 1,87,1,87,3,87,2497,8,87,1,88,1,88,1,89,1,89,1,90,1,90,1,91,1,91, - 1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,3,92,2518, - 8,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,3,93, - 2531,8,93,1,94,1,94,1,95,1,95,1,96,1,96,1,96,1,96,1,96,3,96,2542, - 8,96,1,97,1,97,1,98,1,98,1,99,1,99,1,100,1,100,3,100,2552,8,100, - 1,101,1,101,1,102,1,102,1,102,5,102,2559,8,102,10,102,12,102,2562, - 9,102,1,103,1,103,1,103,3,103,2567,8,103,1,104,1,104,1,104,1,104, - 1,104,3,104,2574,8,104,1,105,1,105,1,105,5,105,2579,8,105,10,105, - 12,105,2582,9,105,1,106,1,106,1,106,1,106,1,106,3,106,2589,8,106, - 1,107,3,107,2592,8,107,1,107,1,107,3,107,2596,8,107,1,107,1,107, - 3,107,2600,8,107,1,107,3,107,2603,8,107,1,108,1,108,1,108,0,7,42, - 68,104,108,110,132,152,109,0,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,156,158,160,162,164,166,168,170,172,174, - 176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206, - 208,210,212,214,216,0,27,2,0,34,34,185,185,2,0,61,61,112,112,2,0, - 88,88,103,103,2,0,75,75,104,104,1,0,192,193,2,0,84,84,139,139,2, - 0,261,261,265,265,2,0,74,74,229,229,2,0,27,27,63,63,2,0,84,84,118, - 118,2,0,20,20,66,66,2,0,30,30,211,211,2,0,105,105,199,199,1,0,255, - 256,1,0,257,259,2,0,83,83,194,194,1,0,249,254,3,0,20,20,24,24,206, - 206,2,0,80,80,223,223,5,0,58,58,100,100,136,137,197,197,247,247, - 1,0,140,143,2,0,85,85,171,171,3,0,95,95,117,117,215,215,4,0,67,67, - 113,113,127,127,236,236,2,0,155,155,246,246,4,0,62,62,108,108,200, - 200,232,232,49,0,17,20,22,22,24,25,27,30,33,34,37,42,47,47,56,59, - 61,61,63,63,65,65,67,68,71,71,75,75,78,78,81,85,87,87,90,95,98,98, - 100,102,104,105,107,107,110,110,112,113,115,115,117,119,121,121, - 123,124,127,137,139,145,149,152,154,156,159,159,161,172,174,177, - 179,186,188,190,192,199,201,211,213,215,217,222,224,225,227,228, - 230,230,232,234,236,236,238,239,242,242,244,248,3008,0,221,1,0,0, - 0,2,226,1,0,0,0,4,232,1,0,0,0,6,234,1,0,0,0,8,238,1,0,0,0,10,242, - 1,0,0,0,12,246,1,0,0,0,14,250,1,0,0,0,16,1036,1,0,0,0,18,1039,1, - 0,0,0,20,1043,1,0,0,0,22,1057,1,0,0,0,24,1059,1,0,0,0,26,1073,1, - 0,0,0,28,1079,1,0,0,0,30,1083,1,0,0,0,32,1091,1,0,0,0,34,1097,1, - 0,0,0,36,1099,1,0,0,0,38,1136,1,0,0,0,40,1138,1,0,0,0,42,1140,1, - 0,0,0,44,1176,1,0,0,0,46,1180,1,0,0,0,48,1189,1,0,0,0,50,1237,1, - 0,0,0,52,1287,1,0,0,0,54,1302,1,0,0,0,56,1306,1,0,0,0,58,1308,1, - 0,0,0,60,1315,1,0,0,0,62,1344,1,0,0,0,64,1353,1,0,0,0,66,1373,1, - 0,0,0,68,1375,1,0,0,0,70,1414,1,0,0,0,72,1430,1,0,0,0,74,1432,1, - 0,0,0,76,1441,1,0,0,0,78,1443,1,0,0,0,80,1528,1,0,0,0,82,1543,1, - 0,0,0,84,1554,1,0,0,0,86,1575,1,0,0,0,88,1577,1,0,0,0,90,1590,1, - 0,0,0,92,1594,1,0,0,0,94,1604,1,0,0,0,96,1615,1,0,0,0,98,1626,1, - 0,0,0,100,1666,1,0,0,0,102,1668,1,0,0,0,104,1677,1,0,0,0,106,1751, - 1,0,0,0,108,1757,1,0,0,0,110,2025,1,0,0,0,112,2040,1,0,0,0,114,2046, - 1,0,0,0,116,2054,1,0,0,0,118,2062,1,0,0,0,120,2064,1,0,0,0,122,2066, - 1,0,0,0,124,2068,1,0,0,0,126,2070,1,0,0,0,128,2080,1,0,0,0,130,2082, - 1,0,0,0,132,2175,1,0,0,0,134,2193,1,0,0,0,136,2197,1,0,0,0,138,2199, - 1,0,0,0,140,2204,1,0,0,0,142,2274,1,0,0,0,144,2276,1,0,0,0,146,2293, - 1,0,0,0,148,2357,1,0,0,0,150,2368,1,0,0,0,152,2370,1,0,0,0,154,2410, - 1,0,0,0,156,2442,1,0,0,0,158,2444,1,0,0,0,160,2452,1,0,0,0,162,2459, - 1,0,0,0,164,2468,1,0,0,0,166,2475,1,0,0,0,168,2482,1,0,0,0,170,2484, - 1,0,0,0,172,2492,1,0,0,0,174,2496,1,0,0,0,176,2498,1,0,0,0,178,2500, - 1,0,0,0,180,2502,1,0,0,0,182,2504,1,0,0,0,184,2517,1,0,0,0,186,2530, - 1,0,0,0,188,2532,1,0,0,0,190,2534,1,0,0,0,192,2541,1,0,0,0,194,2543, - 1,0,0,0,196,2545,1,0,0,0,198,2547,1,0,0,0,200,2551,1,0,0,0,202,2553, - 1,0,0,0,204,2555,1,0,0,0,206,2566,1,0,0,0,208,2573,1,0,0,0,210,2575, - 1,0,0,0,212,2588,1,0,0,0,214,2602,1,0,0,0,216,2604,1,0,0,0,218,220, - 3,2,1,0,219,218,1,0,0,0,220,223,1,0,0,0,221,219,1,0,0,0,221,222, - 1,0,0,0,222,224,1,0,0,0,223,221,1,0,0,0,224,225,5,0,0,1,225,1,1, - 0,0,0,226,227,3,6,3,0,227,3,1,0,0,0,228,233,3,8,4,0,229,233,3,10, - 5,0,230,233,3,12,6,0,231,233,3,14,7,0,232,228,1,0,0,0,232,229,1, - 0,0,0,232,230,1,0,0,0,232,231,1,0,0,0,233,5,1,0,0,0,234,236,3,16, - 8,0,235,237,5,272,0,0,236,235,1,0,0,0,236,237,1,0,0,0,237,7,1,0, - 0,0,238,240,3,102,51,0,239,241,5,272,0,0,240,239,1,0,0,0,240,241, - 1,0,0,0,241,9,1,0,0,0,242,244,3,170,85,0,243,245,5,272,0,0,244,243, - 1,0,0,0,244,245,1,0,0,0,245,11,1,0,0,0,246,248,3,132,66,0,247,249, - 5,272,0,0,248,247,1,0,0,0,248,249,1,0,0,0,249,13,1,0,0,0,250,252, - 3,152,76,0,251,253,5,272,0,0,252,251,1,0,0,0,252,253,1,0,0,0,253, - 15,1,0,0,0,254,1037,3,18,9,0,255,256,5,233,0,0,256,1037,3,188,94, - 0,257,258,5,44,0,0,258,262,5,195,0,0,259,260,5,101,0,0,260,261,5, - 147,0,0,261,263,5,77,0,0,262,259,1,0,0,0,262,263,1,0,0,0,263,264, - 1,0,0,0,264,267,3,190,95,0,265,266,5,29,0,0,266,268,3,208,104,0, - 267,265,1,0,0,0,267,268,1,0,0,0,268,271,1,0,0,0,269,270,5,243,0, - 0,270,272,3,28,14,0,271,269,1,0,0,0,271,272,1,0,0,0,272,1037,1,0, - 0,0,273,274,5,69,0,0,274,277,5,195,0,0,275,276,5,101,0,0,276,278, - 5,77,0,0,277,275,1,0,0,0,277,278,1,0,0,0,278,279,1,0,0,0,279,281, - 3,188,94,0,280,282,7,0,0,0,281,280,1,0,0,0,281,282,1,0,0,0,282,1037, - 1,0,0,0,283,284,5,21,0,0,284,285,5,195,0,0,285,286,3,188,94,0,286, - 287,5,180,0,0,287,288,5,220,0,0,288,289,3,190,95,0,289,1037,1,0, - 0,0,290,291,5,21,0,0,291,292,5,195,0,0,292,293,3,188,94,0,293,294, - 5,203,0,0,294,295,5,29,0,0,295,296,3,208,104,0,296,1037,1,0,0,0, - 297,298,5,44,0,0,298,302,5,212,0,0,299,300,5,101,0,0,300,301,5,147, - 0,0,301,303,5,77,0,0,302,299,1,0,0,0,302,303,1,0,0,0,303,304,1,0, - 0,0,304,306,3,178,89,0,305,307,3,94,47,0,306,305,1,0,0,0,306,307, - 1,0,0,0,307,310,1,0,0,0,308,309,5,40,0,0,309,311,3,116,58,0,310, - 308,1,0,0,0,310,311,1,0,0,0,311,314,1,0,0,0,312,313,5,243,0,0,313, - 315,3,28,14,0,314,312,1,0,0,0,314,315,1,0,0,0,315,316,1,0,0,0,316, - 322,5,26,0,0,317,323,3,18,9,0,318,319,5,1,0,0,319,320,3,18,9,0,320, - 321,5,2,0,0,321,323,1,0,0,0,322,317,1,0,0,0,322,318,1,0,0,0,323, - 329,1,0,0,0,324,326,5,243,0,0,325,327,5,144,0,0,326,325,1,0,0,0, - 326,327,1,0,0,0,327,328,1,0,0,0,328,330,5,56,0,0,329,324,1,0,0,0, - 329,330,1,0,0,0,330,1037,1,0,0,0,331,332,5,44,0,0,332,336,5,212, - 0,0,333,334,5,101,0,0,334,335,5,147,0,0,335,337,5,77,0,0,336,333, - 1,0,0,0,336,337,1,0,0,0,337,338,1,0,0,0,338,339,3,178,89,0,339,340, - 5,1,0,0,340,345,3,22,11,0,341,342,5,3,0,0,342,344,3,22,11,0,343, - 341,1,0,0,0,344,347,1,0,0,0,345,343,1,0,0,0,345,346,1,0,0,0,346, - 348,1,0,0,0,347,345,1,0,0,0,348,351,5,2,0,0,349,350,5,40,0,0,350, - 352,3,116,58,0,351,349,1,0,0,0,351,352,1,0,0,0,352,355,1,0,0,0,353, - 354,5,243,0,0,354,356,3,28,14,0,355,353,1,0,0,0,355,356,1,0,0,0, - 356,1037,1,0,0,0,357,358,5,69,0,0,358,361,5,212,0,0,359,360,5,101, - 0,0,360,362,5,77,0,0,361,359,1,0,0,0,361,362,1,0,0,0,362,363,1,0, - 0,0,363,1037,3,176,88,0,364,365,5,108,0,0,365,366,5,111,0,0,366, - 368,3,176,88,0,367,369,3,96,48,0,368,367,1,0,0,0,368,369,1,0,0,0, - 369,370,1,0,0,0,370,371,3,18,9,0,371,1037,1,0,0,0,372,373,5,62,0, - 0,373,374,5,88,0,0,374,377,3,176,88,0,375,376,5,241,0,0,376,378, - 3,104,52,0,377,375,1,0,0,0,377,378,1,0,0,0,378,1037,1,0,0,0,379, - 380,5,222,0,0,380,381,5,212,0,0,381,1037,3,176,88,0,382,383,5,21, - 0,0,383,386,5,212,0,0,384,385,5,101,0,0,385,387,5,77,0,0,386,384, - 1,0,0,0,386,387,1,0,0,0,387,388,1,0,0,0,388,389,3,176,88,0,389,390, - 5,180,0,0,390,391,5,220,0,0,391,392,3,178,89,0,392,1037,1,0,0,0, - 393,394,5,40,0,0,394,395,5,153,0,0,395,396,5,212,0,0,396,397,3,176, - 88,0,397,400,5,114,0,0,398,401,3,116,58,0,399,401,5,148,0,0,400, - 398,1,0,0,0,400,399,1,0,0,0,401,1037,1,0,0,0,402,403,5,40,0,0,403, - 404,5,153,0,0,404,405,5,38,0,0,405,406,3,200,100,0,406,409,5,114, - 0,0,407,410,3,116,58,0,408,410,5,148,0,0,409,407,1,0,0,0,409,408, - 1,0,0,0,410,1037,1,0,0,0,411,412,5,21,0,0,412,415,5,212,0,0,413, - 414,5,101,0,0,414,416,5,77,0,0,415,413,1,0,0,0,415,416,1,0,0,0,416, - 417,1,0,0,0,417,418,3,176,88,0,418,419,5,180,0,0,419,422,5,38,0, - 0,420,421,5,101,0,0,421,423,5,77,0,0,422,420,1,0,0,0,422,423,1,0, - 0,0,423,424,1,0,0,0,424,425,3,200,100,0,425,426,5,220,0,0,426,427, - 3,202,101,0,427,1037,1,0,0,0,428,429,5,21,0,0,429,432,5,212,0,0, - 430,431,5,101,0,0,431,433,5,77,0,0,432,430,1,0,0,0,432,433,1,0,0, - 0,433,434,1,0,0,0,434,435,3,176,88,0,435,436,5,69,0,0,436,439,5, - 38,0,0,437,438,5,101,0,0,438,440,5,77,0,0,439,437,1,0,0,0,439,440, - 1,0,0,0,440,441,1,0,0,0,441,442,3,200,100,0,442,1037,1,0,0,0,443, - 444,5,21,0,0,444,447,5,212,0,0,445,446,5,101,0,0,446,448,5,77,0, - 0,447,445,1,0,0,0,447,448,1,0,0,0,448,449,1,0,0,0,449,450,3,176, - 88,0,450,451,5,17,0,0,451,455,5,38,0,0,452,453,5,101,0,0,453,454, - 5,147,0,0,454,456,5,77,0,0,455,452,1,0,0,0,455,456,1,0,0,0,456,457, - 1,0,0,0,457,458,3,24,12,0,458,1037,1,0,0,0,459,460,5,21,0,0,460, - 461,5,212,0,0,461,462,3,176,88,0,462,463,5,203,0,0,463,464,5,29, - 0,0,464,465,3,208,104,0,465,1037,1,0,0,0,466,467,5,21,0,0,467,468, - 5,212,0,0,468,469,3,176,88,0,469,470,5,203,0,0,470,471,5,175,0,0, - 471,472,3,30,15,0,472,1037,1,0,0,0,473,474,5,21,0,0,474,475,5,212, - 0,0,475,476,3,176,88,0,476,477,5,76,0,0,477,490,3,212,106,0,478, - 487,5,1,0,0,479,484,3,166,83,0,480,481,5,3,0,0,481,483,3,166,83, - 0,482,480,1,0,0,0,483,486,1,0,0,0,484,482,1,0,0,0,484,485,1,0,0, - 0,485,488,1,0,0,0,486,484,1,0,0,0,487,479,1,0,0,0,487,488,1,0,0, - 0,488,489,1,0,0,0,489,491,5,2,0,0,490,478,1,0,0,0,490,491,1,0,0, - 0,491,494,1,0,0,0,492,493,5,241,0,0,493,495,3,104,52,0,494,492,1, - 0,0,0,494,495,1,0,0,0,495,1037,1,0,0,0,496,497,5,22,0,0,497,500, - 3,176,88,0,498,499,5,243,0,0,499,501,3,28,14,0,500,498,1,0,0,0,500, - 501,1,0,0,0,501,1037,1,0,0,0,502,505,5,44,0,0,503,504,5,157,0,0, - 504,506,5,182,0,0,505,503,1,0,0,0,505,506,1,0,0,0,506,507,1,0,0, - 0,507,508,5,133,0,0,508,512,5,239,0,0,509,510,5,101,0,0,510,511, - 5,147,0,0,511,513,5,77,0,0,512,509,1,0,0,0,512,513,1,0,0,0,513,514, - 1,0,0,0,514,517,3,182,91,0,515,516,5,40,0,0,516,518,3,116,58,0,517, - 515,1,0,0,0,517,518,1,0,0,0,518,521,1,0,0,0,519,520,5,243,0,0,520, - 522,3,28,14,0,521,519,1,0,0,0,521,522,1,0,0,0,522,523,1,0,0,0,523, - 524,5,26,0,0,524,525,3,18,9,0,525,1037,1,0,0,0,526,529,5,44,0,0, - 527,528,5,157,0,0,528,530,5,182,0,0,529,527,1,0,0,0,529,530,1,0, - 0,0,530,531,1,0,0,0,531,532,5,239,0,0,532,535,3,182,91,0,533,534, - 5,40,0,0,534,536,3,116,58,0,535,533,1,0,0,0,535,536,1,0,0,0,536, - 539,1,0,0,0,537,538,5,198,0,0,538,540,7,1,0,0,539,537,1,0,0,0,539, - 540,1,0,0,0,540,541,1,0,0,0,541,542,5,26,0,0,542,543,3,18,9,0,543, - 1037,1,0,0,0,544,545,5,179,0,0,545,546,5,133,0,0,546,547,5,239,0, - 0,547,1037,3,180,90,0,548,549,5,69,0,0,549,550,5,133,0,0,550,553, - 5,239,0,0,551,552,5,101,0,0,552,554,5,77,0,0,553,551,1,0,0,0,553, - 554,1,0,0,0,554,555,1,0,0,0,555,1037,3,180,90,0,556,557,5,21,0,0, - 557,558,5,133,0,0,558,561,5,239,0,0,559,560,5,101,0,0,560,562,5, - 77,0,0,561,559,1,0,0,0,561,562,1,0,0,0,562,563,1,0,0,0,563,564,3, - 180,90,0,564,565,5,180,0,0,565,566,5,220,0,0,566,567,3,182,91,0, - 567,1037,1,0,0,0,568,569,5,21,0,0,569,570,5,133,0,0,570,571,5,239, - 0,0,571,572,3,180,90,0,572,573,5,203,0,0,573,574,5,175,0,0,574,575, - 3,30,15,0,575,1037,1,0,0,0,576,577,5,69,0,0,577,580,5,239,0,0,578, - 579,5,101,0,0,579,581,5,77,0,0,580,578,1,0,0,0,580,581,1,0,0,0,581, - 582,1,0,0,0,582,1037,3,180,90,0,583,584,5,21,0,0,584,585,5,239,0, - 0,585,586,3,180,90,0,586,587,5,180,0,0,587,588,5,220,0,0,588,589, - 3,182,91,0,589,1037,1,0,0,0,590,591,5,21,0,0,591,592,5,239,0,0,592, - 593,3,180,90,0,593,594,5,203,0,0,594,595,5,29,0,0,595,596,3,208, - 104,0,596,1037,1,0,0,0,597,598,5,33,0,0,598,599,3,198,99,0,599,608, - 5,1,0,0,600,605,3,166,83,0,601,602,5,3,0,0,602,604,3,166,83,0,603, - 601,1,0,0,0,604,607,1,0,0,0,605,603,1,0,0,0,605,606,1,0,0,0,606, - 609,1,0,0,0,607,605,1,0,0,0,608,600,1,0,0,0,608,609,1,0,0,0,609, - 610,1,0,0,0,610,611,5,2,0,0,611,1037,1,0,0,0,612,613,5,44,0,0,613, - 614,5,188,0,0,614,618,3,212,106,0,615,616,5,243,0,0,616,617,5,18, - 0,0,617,619,3,206,103,0,618,615,1,0,0,0,618,619,1,0,0,0,619,622, - 1,0,0,0,620,621,5,103,0,0,621,623,3,194,97,0,622,620,1,0,0,0,622, - 623,1,0,0,0,623,1037,1,0,0,0,624,625,5,69,0,0,625,626,5,188,0,0, - 626,1037,3,212,106,0,627,628,5,91,0,0,628,629,3,210,105,0,629,630, - 5,220,0,0,630,635,3,208,104,0,631,632,5,3,0,0,632,634,3,208,104, - 0,633,631,1,0,0,0,634,637,1,0,0,0,635,633,1,0,0,0,635,636,1,0,0, - 0,636,641,1,0,0,0,637,635,1,0,0,0,638,639,5,243,0,0,639,640,5,18, - 0,0,640,642,5,156,0,0,641,638,1,0,0,0,641,642,1,0,0,0,642,646,1, - 0,0,0,643,644,5,92,0,0,644,645,5,32,0,0,645,647,3,206,103,0,646, - 643,1,0,0,0,646,647,1,0,0,0,647,650,1,0,0,0,648,649,5,103,0,0,649, - 651,3,194,97,0,650,648,1,0,0,0,650,651,1,0,0,0,651,1037,1,0,0,0, - 652,656,5,186,0,0,653,654,5,18,0,0,654,655,5,156,0,0,655,657,5,86, - 0,0,656,653,1,0,0,0,656,657,1,0,0,0,657,658,1,0,0,0,658,659,3,210, - 105,0,659,660,5,88,0,0,660,665,3,208,104,0,661,662,5,3,0,0,662,664, - 3,208,104,0,663,661,1,0,0,0,664,667,1,0,0,0,665,663,1,0,0,0,665, - 666,1,0,0,0,666,671,1,0,0,0,667,665,1,0,0,0,668,669,5,92,0,0,669, - 670,5,32,0,0,670,672,3,206,103,0,671,668,1,0,0,0,671,672,1,0,0,0, - 672,675,1,0,0,0,673,674,5,103,0,0,674,676,3,194,97,0,675,673,1,0, - 0,0,675,676,1,0,0,0,676,1037,1,0,0,0,677,678,5,203,0,0,678,682,5, - 188,0,0,679,683,5,20,0,0,680,683,5,145,0,0,681,683,3,212,106,0,682, - 679,1,0,0,0,682,680,1,0,0,0,682,681,1,0,0,0,683,686,1,0,0,0,684, - 685,5,103,0,0,685,687,3,194,97,0,686,684,1,0,0,0,686,687,1,0,0,0, - 687,1037,1,0,0,0,688,699,5,91,0,0,689,694,3,172,86,0,690,691,5,3, - 0,0,691,693,3,172,86,0,692,690,1,0,0,0,693,696,1,0,0,0,694,692,1, - 0,0,0,694,695,1,0,0,0,695,700,1,0,0,0,696,694,1,0,0,0,697,698,5, - 20,0,0,698,700,5,174,0,0,699,689,1,0,0,0,699,697,1,0,0,0,700,701, - 1,0,0,0,701,710,5,153,0,0,702,704,5,195,0,0,703,702,1,0,0,0,703, - 704,1,0,0,0,704,705,1,0,0,0,705,711,3,188,94,0,706,708,5,212,0,0, - 707,706,1,0,0,0,707,708,1,0,0,0,708,709,1,0,0,0,709,711,3,176,88, - 0,710,703,1,0,0,0,710,707,1,0,0,0,710,711,1,0,0,0,711,712,1,0,0, - 0,712,713,5,220,0,0,713,717,3,208,104,0,714,715,5,243,0,0,715,716, - 5,91,0,0,716,718,5,156,0,0,717,714,1,0,0,0,717,718,1,0,0,0,718,1037, - 1,0,0,0,719,730,5,94,0,0,720,725,3,172,86,0,721,722,5,3,0,0,722, - 724,3,172,86,0,723,721,1,0,0,0,724,727,1,0,0,0,725,723,1,0,0,0,725, - 726,1,0,0,0,726,731,1,0,0,0,727,725,1,0,0,0,728,729,5,20,0,0,729, - 731,5,174,0,0,730,720,1,0,0,0,730,728,1,0,0,0,731,732,1,0,0,0,732, - 741,5,153,0,0,733,735,5,195,0,0,734,733,1,0,0,0,734,735,1,0,0,0, - 735,736,1,0,0,0,736,742,3,188,94,0,737,739,5,212,0,0,738,737,1,0, - 0,0,738,739,1,0,0,0,739,740,1,0,0,0,740,742,3,176,88,0,741,734,1, - 0,0,0,741,738,1,0,0,0,742,743,1,0,0,0,743,744,5,220,0,0,744,745, - 3,208,104,0,745,1037,1,0,0,0,746,750,5,186,0,0,747,748,5,91,0,0, - 748,749,5,156,0,0,749,751,5,86,0,0,750,747,1,0,0,0,750,751,1,0,0, - 0,751,762,1,0,0,0,752,757,3,172,86,0,753,754,5,3,0,0,754,756,3,172, - 86,0,755,753,1,0,0,0,756,759,1,0,0,0,757,755,1,0,0,0,757,758,1,0, - 0,0,758,763,1,0,0,0,759,757,1,0,0,0,760,761,5,20,0,0,761,763,5,174, - 0,0,762,752,1,0,0,0,762,760,1,0,0,0,763,764,1,0,0,0,764,773,5,153, - 0,0,765,767,5,195,0,0,766,765,1,0,0,0,766,767,1,0,0,0,767,768,1, - 0,0,0,768,774,3,188,94,0,769,771,5,212,0,0,770,769,1,0,0,0,770,771, - 1,0,0,0,771,772,1,0,0,0,772,774,3,176,88,0,773,766,1,0,0,0,773,770, - 1,0,0,0,773,774,1,0,0,0,774,775,1,0,0,0,775,776,5,88,0,0,776,1037, - 3,208,104,0,777,778,5,205,0,0,778,784,5,93,0,0,779,781,5,153,0,0, - 780,782,5,212,0,0,781,780,1,0,0,0,781,782,1,0,0,0,782,783,1,0,0, - 0,783,785,3,176,88,0,784,779,1,0,0,0,784,785,1,0,0,0,785,1037,1, - 0,0,0,786,788,5,78,0,0,787,789,5,22,0,0,788,787,1,0,0,0,788,789, - 1,0,0,0,789,791,1,0,0,0,790,792,5,238,0,0,791,790,1,0,0,0,791,792, - 1,0,0,0,792,804,1,0,0,0,793,794,5,1,0,0,794,799,3,160,80,0,795,796, - 5,3,0,0,796,798,3,160,80,0,797,795,1,0,0,0,798,801,1,0,0,0,799,797, - 1,0,0,0,799,800,1,0,0,0,800,802,1,0,0,0,801,799,1,0,0,0,802,803, - 5,2,0,0,803,805,1,0,0,0,804,793,1,0,0,0,804,805,1,0,0,0,805,806, - 1,0,0,0,806,1037,3,16,8,0,807,808,5,205,0,0,808,809,5,44,0,0,809, - 810,5,212,0,0,810,1037,3,176,88,0,811,812,5,205,0,0,812,813,5,44, - 0,0,813,814,5,195,0,0,814,1037,3,188,94,0,815,816,5,205,0,0,816, - 817,5,44,0,0,817,818,5,239,0,0,818,1037,3,180,90,0,819,820,5,205, - 0,0,820,821,5,44,0,0,821,822,5,133,0,0,822,823,5,239,0,0,823,1037, - 3,180,90,0,824,825,5,205,0,0,825,828,5,213,0,0,826,827,7,2,0,0,827, - 829,3,188,94,0,828,826,1,0,0,0,828,829,1,0,0,0,829,836,1,0,0,0,830, - 831,5,122,0,0,831,834,3,116,58,0,832,833,5,73,0,0,833,835,3,116, - 58,0,834,832,1,0,0,0,834,835,1,0,0,0,835,837,1,0,0,0,836,830,1,0, - 0,0,836,837,1,0,0,0,837,1037,1,0,0,0,838,839,5,205,0,0,839,842,5, - 196,0,0,840,841,7,2,0,0,841,843,3,194,97,0,842,840,1,0,0,0,842,843, - 1,0,0,0,843,850,1,0,0,0,844,845,5,122,0,0,845,848,3,116,58,0,846, - 847,5,73,0,0,847,849,3,116,58,0,848,846,1,0,0,0,848,849,1,0,0,0, - 849,851,1,0,0,0,850,844,1,0,0,0,850,851,1,0,0,0,851,1037,1,0,0,0, - 852,853,5,205,0,0,853,860,5,37,0,0,854,855,5,122,0,0,855,858,3,116, - 58,0,856,857,5,73,0,0,857,859,3,116,58,0,858,856,1,0,0,0,858,859, - 1,0,0,0,859,861,1,0,0,0,860,854,1,0,0,0,860,861,1,0,0,0,861,1037, - 1,0,0,0,862,863,5,205,0,0,863,864,5,39,0,0,864,866,7,2,0,0,865,867, - 3,174,87,0,866,865,1,0,0,0,866,867,1,0,0,0,867,874,1,0,0,0,868,869, - 5,122,0,0,869,872,3,116,58,0,870,871,5,73,0,0,871,873,3,116,58,0, - 872,870,1,0,0,0,872,873,1,0,0,0,873,875,1,0,0,0,874,868,1,0,0,0, - 874,875,1,0,0,0,875,1037,1,0,0,0,876,877,5,205,0,0,877,878,5,208, - 0,0,878,879,5,86,0,0,879,1037,3,176,88,0,880,881,5,205,0,0,881,882, - 5,208,0,0,882,883,5,86,0,0,883,884,5,1,0,0,884,885,3,18,9,0,885, - 886,5,2,0,0,886,1037,1,0,0,0,887,889,5,205,0,0,888,890,5,47,0,0, - 889,888,1,0,0,0,889,890,1,0,0,0,890,891,1,0,0,0,891,894,5,189,0, - 0,892,893,7,2,0,0,893,895,3,212,106,0,894,892,1,0,0,0,894,895,1, - 0,0,0,895,1037,1,0,0,0,896,897,5,205,0,0,897,898,5,188,0,0,898,901, - 5,93,0,0,899,900,7,2,0,0,900,902,3,212,106,0,901,899,1,0,0,0,901, - 902,1,0,0,0,902,1037,1,0,0,0,903,904,5,64,0,0,904,1037,3,174,87, - 0,905,906,5,63,0,0,906,1037,3,174,87,0,907,908,5,205,0,0,908,915, - 5,90,0,0,909,910,5,122,0,0,910,913,3,116,58,0,911,912,5,73,0,0,912, - 914,3,116,58,0,913,911,1,0,0,0,913,914,1,0,0,0,914,916,1,0,0,0,915, - 909,1,0,0,0,915,916,1,0,0,0,916,1037,1,0,0,0,917,918,5,205,0,0,918, - 925,5,202,0,0,919,920,5,122,0,0,920,923,3,116,58,0,921,922,5,73, - 0,0,922,924,3,116,58,0,923,921,1,0,0,0,923,924,1,0,0,0,924,926,1, - 0,0,0,925,919,1,0,0,0,925,926,1,0,0,0,926,1037,1,0,0,0,927,928,5, - 203,0,0,928,929,5,202,0,0,929,930,3,204,102,0,930,931,5,249,0,0, - 931,932,3,102,51,0,932,1037,1,0,0,0,933,934,5,183,0,0,934,935,5, - 202,0,0,935,1037,3,204,102,0,936,937,5,207,0,0,937,946,5,221,0,0, - 938,943,3,162,81,0,939,940,5,3,0,0,940,942,3,162,81,0,941,939,1, - 0,0,0,942,945,1,0,0,0,943,941,1,0,0,0,943,944,1,0,0,0,944,947,1, - 0,0,0,945,943,1,0,0,0,946,938,1,0,0,0,946,947,1,0,0,0,947,1037,1, - 0,0,0,948,950,5,41,0,0,949,951,5,245,0,0,950,949,1,0,0,0,950,951, - 1,0,0,0,951,1037,1,0,0,0,952,954,5,190,0,0,953,955,5,245,0,0,954, - 953,1,0,0,0,954,955,1,0,0,0,955,1037,1,0,0,0,956,957,5,173,0,0,957, - 958,3,212,106,0,958,959,5,88,0,0,959,960,3,16,8,0,960,1037,1,0,0, - 0,961,962,5,60,0,0,962,963,5,173,0,0,963,1037,3,212,106,0,964,965, - 5,76,0,0,965,975,3,212,106,0,966,967,5,235,0,0,967,972,3,102,51, - 0,968,969,5,3,0,0,969,971,3,102,51,0,970,968,1,0,0,0,971,974,1,0, - 0,0,972,970,1,0,0,0,972,973,1,0,0,0,973,976,1,0,0,0,974,972,1,0, - 0,0,975,966,1,0,0,0,975,976,1,0,0,0,976,1037,1,0,0,0,977,978,5,64, - 0,0,978,979,5,107,0,0,979,1037,3,212,106,0,980,981,5,64,0,0,981, - 982,5,161,0,0,982,1037,3,212,106,0,983,984,5,203,0,0,984,985,5,166, - 0,0,985,1037,3,170,85,0,986,987,5,203,0,0,987,988,5,218,0,0,988, - 991,5,248,0,0,989,992,5,124,0,0,990,992,3,102,51,0,991,989,1,0,0, - 0,991,990,1,0,0,0,992,1037,1,0,0,0,993,994,5,232,0,0,994,995,3,176, - 88,0,995,996,5,203,0,0,996,1001,3,158,79,0,997,998,5,3,0,0,998,1000, - 3,158,79,0,999,997,1,0,0,0,1000,1003,1,0,0,0,1001,999,1,0,0,0,1001, - 1002,1,0,0,0,1002,1006,1,0,0,0,1003,1001,1,0,0,0,1004,1005,5,241, - 0,0,1005,1007,3,104,52,0,1006,1004,1,0,0,0,1006,1007,1,0,0,0,1007, - 1037,1,0,0,0,1008,1009,5,135,0,0,1009,1010,5,111,0,0,1010,1015,3, - 176,88,0,1011,1013,5,26,0,0,1012,1011,1,0,0,0,1012,1013,1,0,0,0, - 1013,1014,1,0,0,0,1014,1016,3,212,106,0,1015,1012,1,0,0,0,1015,1016, - 1,0,0,0,1016,1017,1,0,0,0,1017,1018,5,235,0,0,1018,1019,3,68,34, - 0,1019,1020,5,153,0,0,1020,1022,3,102,51,0,1021,1023,3,142,71,0, - 1022,1021,1,0,0,0,1023,1024,1,0,0,0,1024,1022,1,0,0,0,1024,1025, - 1,0,0,0,1025,1037,1,0,0,0,1026,1027,5,205,0,0,1027,1028,5,40,0,0, - 1028,1029,5,153,0,0,1029,1030,5,212,0,0,1030,1037,3,176,88,0,1031, - 1032,5,205,0,0,1032,1033,5,40,0,0,1033,1034,5,153,0,0,1034,1035, - 5,38,0,0,1035,1037,3,200,100,0,1036,254,1,0,0,0,1036,255,1,0,0,0, - 1036,257,1,0,0,0,1036,273,1,0,0,0,1036,283,1,0,0,0,1036,290,1,0, - 0,0,1036,297,1,0,0,0,1036,331,1,0,0,0,1036,357,1,0,0,0,1036,364, - 1,0,0,0,1036,372,1,0,0,0,1036,379,1,0,0,0,1036,382,1,0,0,0,1036, - 393,1,0,0,0,1036,402,1,0,0,0,1036,411,1,0,0,0,1036,428,1,0,0,0,1036, - 443,1,0,0,0,1036,459,1,0,0,0,1036,466,1,0,0,0,1036,473,1,0,0,0,1036, - 496,1,0,0,0,1036,502,1,0,0,0,1036,526,1,0,0,0,1036,544,1,0,0,0,1036, - 548,1,0,0,0,1036,556,1,0,0,0,1036,568,1,0,0,0,1036,576,1,0,0,0,1036, - 583,1,0,0,0,1036,590,1,0,0,0,1036,597,1,0,0,0,1036,612,1,0,0,0,1036, - 624,1,0,0,0,1036,627,1,0,0,0,1036,652,1,0,0,0,1036,677,1,0,0,0,1036, - 688,1,0,0,0,1036,719,1,0,0,0,1036,746,1,0,0,0,1036,777,1,0,0,0,1036, - 786,1,0,0,0,1036,807,1,0,0,0,1036,811,1,0,0,0,1036,815,1,0,0,0,1036, - 819,1,0,0,0,1036,824,1,0,0,0,1036,838,1,0,0,0,1036,852,1,0,0,0,1036, - 862,1,0,0,0,1036,876,1,0,0,0,1036,880,1,0,0,0,1036,887,1,0,0,0,1036, - 896,1,0,0,0,1036,903,1,0,0,0,1036,905,1,0,0,0,1036,907,1,0,0,0,1036, - 917,1,0,0,0,1036,927,1,0,0,0,1036,933,1,0,0,0,1036,936,1,0,0,0,1036, - 948,1,0,0,0,1036,952,1,0,0,0,1036,956,1,0,0,0,1036,961,1,0,0,0,1036, - 964,1,0,0,0,1036,977,1,0,0,0,1036,980,1,0,0,0,1036,983,1,0,0,0,1036, - 986,1,0,0,0,1036,993,1,0,0,0,1036,1008,1,0,0,0,1036,1026,1,0,0,0, - 1036,1031,1,0,0,0,1037,17,1,0,0,0,1038,1040,3,20,10,0,1039,1038, - 1,0,0,0,1039,1040,1,0,0,0,1040,1041,1,0,0,0,1041,1042,3,36,18,0, - 1042,19,1,0,0,0,1043,1045,5,243,0,0,1044,1046,5,178,0,0,1045,1044, - 1,0,0,0,1045,1046,1,0,0,0,1046,1047,1,0,0,0,1047,1052,3,62,31,0, - 1048,1049,5,3,0,0,1049,1051,3,62,31,0,1050,1048,1,0,0,0,1051,1054, - 1,0,0,0,1052,1050,1,0,0,0,1052,1053,1,0,0,0,1053,21,1,0,0,0,1054, - 1052,1,0,0,0,1055,1058,3,24,12,0,1056,1058,3,26,13,0,1057,1055,1, - 0,0,0,1057,1056,1,0,0,0,1058,23,1,0,0,0,1059,1060,3,202,101,0,1060, - 1063,3,132,66,0,1061,1062,5,147,0,0,1062,1064,5,148,0,0,1063,1061, - 1,0,0,0,1063,1064,1,0,0,0,1064,1067,1,0,0,0,1065,1066,5,40,0,0,1066, - 1068,3,116,58,0,1067,1065,1,0,0,0,1067,1068,1,0,0,0,1068,1071,1, - 0,0,0,1069,1070,5,243,0,0,1070,1072,3,28,14,0,1071,1069,1,0,0,0, - 1071,1072,1,0,0,0,1072,25,1,0,0,0,1073,1074,5,122,0,0,1074,1077, - 3,176,88,0,1075,1076,7,3,0,0,1076,1078,5,175,0,0,1077,1075,1,0,0, - 0,1077,1078,1,0,0,0,1078,27,1,0,0,0,1079,1080,5,1,0,0,1080,1081, - 3,30,15,0,1081,1082,5,2,0,0,1082,29,1,0,0,0,1083,1088,3,32,16,0, - 1084,1085,5,3,0,0,1085,1087,3,32,16,0,1086,1084,1,0,0,0,1087,1090, - 1,0,0,0,1088,1086,1,0,0,0,1088,1089,1,0,0,0,1089,31,1,0,0,0,1090, - 1088,1,0,0,0,1091,1092,3,212,106,0,1092,1093,5,249,0,0,1093,1094, - 3,34,17,0,1094,33,1,0,0,0,1095,1098,5,59,0,0,1096,1098,3,102,51, - 0,1097,1095,1,0,0,0,1097,1096,1,0,0,0,1098,35,1,0,0,0,1099,1110, - 3,42,21,0,1100,1101,5,158,0,0,1101,1102,5,32,0,0,1102,1107,3,46, - 23,0,1103,1104,5,3,0,0,1104,1106,3,46,23,0,1105,1103,1,0,0,0,1106, - 1109,1,0,0,0,1107,1105,1,0,0,0,1107,1108,1,0,0,0,1108,1111,1,0,0, - 0,1109,1107,1,0,0,0,1110,1100,1,0,0,0,1110,1111,1,0,0,0,1111,1117, - 1,0,0,0,1112,1113,5,151,0,0,1113,1115,3,40,20,0,1114,1116,7,4,0, - 0,1115,1114,1,0,0,0,1115,1116,1,0,0,0,1116,1118,1,0,0,0,1117,1112, - 1,0,0,0,1117,1118,1,0,0,0,1118,1132,1,0,0,0,1119,1120,5,123,0,0, - 1120,1133,3,38,19,0,1121,1122,5,81,0,0,1122,1124,7,5,0,0,1123,1125, - 3,40,20,0,1124,1123,1,0,0,0,1124,1125,1,0,0,0,1125,1126,1,0,0,0, - 1126,1130,7,4,0,0,1127,1131,5,155,0,0,1128,1129,5,243,0,0,1129,1131, - 5,217,0,0,1130,1127,1,0,0,0,1130,1128,1,0,0,0,1131,1133,1,0,0,0, - 1132,1119,1,0,0,0,1132,1121,1,0,0,0,1132,1133,1,0,0,0,1133,37,1, - 0,0,0,1134,1137,5,20,0,0,1135,1137,3,40,20,0,1136,1134,1,0,0,0,1136, - 1135,1,0,0,0,1137,39,1,0,0,0,1138,1139,7,6,0,0,1139,41,1,0,0,0,1140, - 1141,6,21,-1,0,1141,1142,3,44,22,0,1142,1157,1,0,0,0,1143,1144,10, - 2,0,0,1144,1146,5,109,0,0,1145,1147,3,64,32,0,1146,1145,1,0,0,0, - 1146,1147,1,0,0,0,1147,1148,1,0,0,0,1148,1156,3,42,21,3,1149,1150, - 10,1,0,0,1150,1152,7,7,0,0,1151,1153,3,64,32,0,1152,1151,1,0,0,0, - 1152,1153,1,0,0,0,1153,1154,1,0,0,0,1154,1156,3,42,21,2,1155,1143, - 1,0,0,0,1155,1149,1,0,0,0,1156,1159,1,0,0,0,1157,1155,1,0,0,0,1157, - 1158,1,0,0,0,1158,43,1,0,0,0,1159,1157,1,0,0,0,1160,1177,3,48,24, - 0,1161,1162,5,212,0,0,1162,1177,3,176,88,0,1163,1164,5,237,0,0,1164, - 1169,3,102,51,0,1165,1166,5,3,0,0,1166,1168,3,102,51,0,1167,1165, - 1,0,0,0,1168,1171,1,0,0,0,1169,1167,1,0,0,0,1169,1170,1,0,0,0,1170, - 1177,1,0,0,0,1171,1169,1,0,0,0,1172,1173,5,1,0,0,1173,1174,3,36, - 18,0,1174,1175,5,2,0,0,1175,1177,1,0,0,0,1176,1160,1,0,0,0,1176, - 1161,1,0,0,0,1176,1163,1,0,0,0,1176,1172,1,0,0,0,1177,45,1,0,0,0, - 1178,1181,3,200,100,0,1179,1181,3,102,51,0,1180,1178,1,0,0,0,1180, - 1179,1,0,0,0,1181,1183,1,0,0,0,1182,1184,7,8,0,0,1183,1182,1,0,0, - 0,1183,1184,1,0,0,0,1184,1187,1,0,0,0,1185,1186,5,150,0,0,1186,1188, - 7,9,0,0,1187,1185,1,0,0,0,1187,1188,1,0,0,0,1188,47,1,0,0,0,1189, - 1191,5,200,0,0,1190,1192,3,64,32,0,1191,1190,1,0,0,0,1191,1192,1, - 0,0,0,1192,1193,1,0,0,0,1193,1198,3,66,33,0,1194,1195,5,3,0,0,1195, - 1197,3,66,33,0,1196,1194,1,0,0,0,1197,1200,1,0,0,0,1198,1196,1,0, - 0,0,1198,1199,1,0,0,0,1199,1210,1,0,0,0,1200,1198,1,0,0,0,1201,1202, - 5,88,0,0,1202,1207,3,68,34,0,1203,1204,5,3,0,0,1204,1206,3,68,34, - 0,1205,1203,1,0,0,0,1206,1209,1,0,0,0,1207,1205,1,0,0,0,1207,1208, - 1,0,0,0,1208,1211,1,0,0,0,1209,1207,1,0,0,0,1210,1201,1,0,0,0,1210, - 1211,1,0,0,0,1211,1214,1,0,0,0,1212,1213,5,241,0,0,1213,1215,3,104, - 52,0,1214,1212,1,0,0,0,1214,1215,1,0,0,0,1215,1219,1,0,0,0,1216, - 1217,5,96,0,0,1217,1218,5,32,0,0,1218,1220,3,50,25,0,1219,1216,1, - 0,0,0,1219,1220,1,0,0,0,1220,1223,1,0,0,0,1221,1222,5,99,0,0,1222, - 1224,3,104,52,0,1223,1221,1,0,0,0,1223,1224,1,0,0,0,1224,1234,1, - 0,0,0,1225,1226,5,242,0,0,1226,1231,3,58,29,0,1227,1228,5,3,0,0, - 1228,1230,3,58,29,0,1229,1227,1,0,0,0,1230,1233,1,0,0,0,1231,1229, - 1,0,0,0,1231,1232,1,0,0,0,1232,1235,1,0,0,0,1233,1231,1,0,0,0,1234, - 1225,1,0,0,0,1234,1235,1,0,0,0,1235,49,1,0,0,0,1236,1238,3,64,32, - 0,1237,1236,1,0,0,0,1237,1238,1,0,0,0,1238,1239,1,0,0,0,1239,1244, - 3,52,26,0,1240,1241,5,3,0,0,1241,1243,3,52,26,0,1242,1240,1,0,0, - 0,1243,1246,1,0,0,0,1244,1242,1,0,0,0,1244,1245,1,0,0,0,1245,51, - 1,0,0,0,1246,1244,1,0,0,0,1247,1288,3,54,27,0,1248,1249,5,191,0, - 0,1249,1258,5,1,0,0,1250,1255,3,56,28,0,1251,1252,5,3,0,0,1252,1254, - 3,56,28,0,1253,1251,1,0,0,0,1254,1257,1,0,0,0,1255,1253,1,0,0,0, - 1255,1256,1,0,0,0,1256,1259,1,0,0,0,1257,1255,1,0,0,0,1258,1250, - 1,0,0,0,1258,1259,1,0,0,0,1259,1260,1,0,0,0,1260,1288,5,2,0,0,1261, - 1262,5,46,0,0,1262,1271,5,1,0,0,1263,1268,3,56,28,0,1264,1265,5, - 3,0,0,1265,1267,3,56,28,0,1266,1264,1,0,0,0,1267,1270,1,0,0,0,1268, - 1266,1,0,0,0,1268,1269,1,0,0,0,1269,1272,1,0,0,0,1270,1268,1,0,0, - 0,1271,1263,1,0,0,0,1271,1272,1,0,0,0,1272,1273,1,0,0,0,1273,1288, - 5,2,0,0,1274,1275,5,97,0,0,1275,1276,5,204,0,0,1276,1277,5,1,0,0, - 1277,1282,3,54,27,0,1278,1279,5,3,0,0,1279,1281,3,54,27,0,1280,1278, - 1,0,0,0,1281,1284,1,0,0,0,1282,1280,1,0,0,0,1282,1283,1,0,0,0,1283, - 1285,1,0,0,0,1284,1282,1,0,0,0,1285,1286,5,2,0,0,1286,1288,1,0,0, - 0,1287,1247,1,0,0,0,1287,1248,1,0,0,0,1287,1261,1,0,0,0,1287,1274, - 1,0,0,0,1288,53,1,0,0,0,1289,1298,5,1,0,0,1290,1295,3,56,28,0,1291, - 1292,5,3,0,0,1292,1294,3,56,28,0,1293,1291,1,0,0,0,1294,1297,1,0, - 0,0,1295,1293,1,0,0,0,1295,1296,1,0,0,0,1296,1299,1,0,0,0,1297,1295, - 1,0,0,0,1298,1290,1,0,0,0,1298,1299,1,0,0,0,1299,1300,1,0,0,0,1300, - 1303,5,2,0,0,1301,1303,3,56,28,0,1302,1289,1,0,0,0,1302,1301,1,0, - 0,0,1303,55,1,0,0,0,1304,1307,3,200,100,0,1305,1307,3,102,51,0,1306, - 1304,1,0,0,0,1306,1305,1,0,0,0,1307,57,1,0,0,0,1308,1309,3,212,106, - 0,1309,1310,5,26,0,0,1310,1311,5,1,0,0,1311,1312,3,60,30,0,1312, - 1313,5,2,0,0,1313,59,1,0,0,0,1314,1316,3,212,106,0,1315,1314,1,0, - 0,0,1315,1316,1,0,0,0,1316,1327,1,0,0,0,1317,1318,5,163,0,0,1318, - 1319,5,32,0,0,1319,1324,3,102,51,0,1320,1321,5,3,0,0,1321,1323,3, - 102,51,0,1322,1320,1,0,0,0,1323,1326,1,0,0,0,1324,1322,1,0,0,0,1324, - 1325,1,0,0,0,1325,1328,1,0,0,0,1326,1324,1,0,0,0,1327,1317,1,0,0, - 0,1327,1328,1,0,0,0,1328,1339,1,0,0,0,1329,1330,5,158,0,0,1330,1331, - 5,32,0,0,1331,1336,3,46,23,0,1332,1333,5,3,0,0,1333,1335,3,46,23, - 0,1334,1332,1,0,0,0,1335,1338,1,0,0,0,1336,1334,1,0,0,0,1336,1337, - 1,0,0,0,1337,1340,1,0,0,0,1338,1336,1,0,0,0,1339,1329,1,0,0,0,1339, - 1340,1,0,0,0,1340,1342,1,0,0,0,1341,1343,3,146,73,0,1342,1341,1, - 0,0,0,1342,1343,1,0,0,0,1343,61,1,0,0,0,1344,1346,3,212,106,0,1345, - 1347,3,98,49,0,1346,1345,1,0,0,0,1346,1347,1,0,0,0,1347,1348,1,0, - 0,0,1348,1349,5,26,0,0,1349,1350,5,1,0,0,1350,1351,3,18,9,0,1351, - 1352,5,2,0,0,1352,63,1,0,0,0,1353,1354,7,10,0,0,1354,65,1,0,0,0, - 1355,1358,3,200,100,0,1356,1358,3,102,51,0,1357,1355,1,0,0,0,1357, - 1356,1,0,0,0,1358,1363,1,0,0,0,1359,1361,5,26,0,0,1360,1359,1,0, - 0,0,1360,1361,1,0,0,0,1361,1362,1,0,0,0,1362,1364,3,212,106,0,1363, - 1360,1,0,0,0,1363,1364,1,0,0,0,1364,1374,1,0,0,0,1365,1366,3,110, - 55,0,1366,1367,5,4,0,0,1367,1370,5,257,0,0,1368,1369,5,26,0,0,1369, - 1371,3,98,49,0,1370,1368,1,0,0,0,1370,1371,1,0,0,0,1371,1374,1,0, - 0,0,1372,1374,5,257,0,0,1373,1357,1,0,0,0,1373,1365,1,0,0,0,1373, - 1372,1,0,0,0,1374,67,1,0,0,0,1375,1376,6,34,-1,0,1376,1377,3,74, - 37,0,1377,1396,1,0,0,0,1378,1392,10,2,0,0,1379,1380,5,45,0,0,1380, - 1381,5,116,0,0,1381,1393,3,74,37,0,1382,1383,3,70,35,0,1383,1384, - 5,116,0,0,1384,1385,3,68,34,0,1385,1386,3,72,36,0,1386,1393,1,0, - 0,0,1387,1388,5,138,0,0,1388,1389,3,70,35,0,1389,1390,5,116,0,0, - 1390,1391,3,74,37,0,1391,1393,1,0,0,0,1392,1379,1,0,0,0,1392,1382, - 1,0,0,0,1392,1387,1,0,0,0,1393,1395,1,0,0,0,1394,1378,1,0,0,0,1395, - 1398,1,0,0,0,1396,1394,1,0,0,0,1396,1397,1,0,0,0,1397,69,1,0,0,0, - 1398,1396,1,0,0,0,1399,1401,5,106,0,0,1400,1399,1,0,0,0,1400,1401, - 1,0,0,0,1401,1415,1,0,0,0,1402,1404,5,120,0,0,1403,1405,5,160,0, - 0,1404,1403,1,0,0,0,1404,1405,1,0,0,0,1405,1415,1,0,0,0,1406,1408, - 5,187,0,0,1407,1409,5,160,0,0,1408,1407,1,0,0,0,1408,1409,1,0,0, - 0,1409,1415,1,0,0,0,1410,1412,5,89,0,0,1411,1413,5,160,0,0,1412, - 1411,1,0,0,0,1412,1413,1,0,0,0,1413,1415,1,0,0,0,1414,1400,1,0,0, - 0,1414,1402,1,0,0,0,1414,1406,1,0,0,0,1414,1410,1,0,0,0,1415,71, - 1,0,0,0,1416,1417,5,153,0,0,1417,1431,3,104,52,0,1418,1419,5,235, - 0,0,1419,1420,5,1,0,0,1420,1425,3,212,106,0,1421,1422,5,3,0,0,1422, - 1424,3,212,106,0,1423,1421,1,0,0,0,1424,1427,1,0,0,0,1425,1423,1, - 0,0,0,1425,1426,1,0,0,0,1426,1428,1,0,0,0,1427,1425,1,0,0,0,1428, - 1429,5,2,0,0,1429,1431,1,0,0,0,1430,1416,1,0,0,0,1430,1418,1,0,0, - 0,1431,73,1,0,0,0,1432,1439,3,78,39,0,1433,1434,5,214,0,0,1434,1435, - 3,76,38,0,1435,1436,5,1,0,0,1436,1437,3,102,51,0,1437,1438,5,2,0, - 0,1438,1440,1,0,0,0,1439,1433,1,0,0,0,1439,1440,1,0,0,0,1440,75, - 1,0,0,0,1441,1442,7,11,0,0,1442,77,1,0,0,0,1443,1526,3,92,46,0,1444, - 1445,5,132,0,0,1445,1456,5,1,0,0,1446,1447,5,163,0,0,1447,1448,5, - 32,0,0,1448,1453,3,102,51,0,1449,1450,5,3,0,0,1450,1452,3,102,51, - 0,1451,1449,1,0,0,0,1452,1455,1,0,0,0,1453,1451,1,0,0,0,1453,1454, - 1,0,0,0,1454,1457,1,0,0,0,1455,1453,1,0,0,0,1456,1446,1,0,0,0,1456, - 1457,1,0,0,0,1457,1468,1,0,0,0,1458,1459,5,158,0,0,1459,1460,5,32, - 0,0,1460,1465,3,46,23,0,1461,1462,5,3,0,0,1462,1464,3,46,23,0,1463, - 1461,1,0,0,0,1464,1467,1,0,0,0,1465,1463,1,0,0,0,1465,1466,1,0,0, - 0,1466,1469,1,0,0,0,1467,1465,1,0,0,0,1468,1458,1,0,0,0,1468,1469, - 1,0,0,0,1469,1479,1,0,0,0,1470,1471,5,134,0,0,1471,1476,3,80,40, - 0,1472,1473,5,3,0,0,1473,1475,3,80,40,0,1474,1472,1,0,0,0,1475,1478, - 1,0,0,0,1476,1474,1,0,0,0,1476,1477,1,0,0,0,1477,1480,1,0,0,0,1478, - 1476,1,0,0,0,1479,1470,1,0,0,0,1479,1480,1,0,0,0,1480,1482,1,0,0, - 0,1481,1483,3,82,41,0,1482,1481,1,0,0,0,1482,1483,1,0,0,0,1483,1487, - 1,0,0,0,1484,1485,5,19,0,0,1485,1486,5,129,0,0,1486,1488,3,86,43, - 0,1487,1484,1,0,0,0,1487,1488,1,0,0,0,1488,1490,1,0,0,0,1489,1491, - 7,12,0,0,1490,1489,1,0,0,0,1490,1491,1,0,0,0,1491,1492,1,0,0,0,1492, - 1493,5,167,0,0,1493,1494,5,1,0,0,1494,1495,3,152,76,0,1495,1505, - 5,2,0,0,1496,1497,5,209,0,0,1497,1502,3,88,44,0,1498,1499,5,3,0, - 0,1499,1501,3,88,44,0,1500,1498,1,0,0,0,1501,1504,1,0,0,0,1502,1500, - 1,0,0,0,1502,1503,1,0,0,0,1503,1506,1,0,0,0,1504,1502,1,0,0,0,1505, - 1496,1,0,0,0,1505,1506,1,0,0,0,1506,1507,1,0,0,0,1507,1508,5,65, - 0,0,1508,1513,3,90,45,0,1509,1510,5,3,0,0,1510,1512,3,90,45,0,1511, - 1509,1,0,0,0,1512,1515,1,0,0,0,1513,1511,1,0,0,0,1513,1514,1,0,0, - 0,1514,1516,1,0,0,0,1515,1513,1,0,0,0,1516,1524,5,2,0,0,1517,1519, - 5,26,0,0,1518,1517,1,0,0,0,1518,1519,1,0,0,0,1519,1520,1,0,0,0,1520, - 1522,3,212,106,0,1521,1523,3,98,49,0,1522,1521,1,0,0,0,1522,1523, - 1,0,0,0,1523,1525,1,0,0,0,1524,1518,1,0,0,0,1524,1525,1,0,0,0,1525, - 1527,1,0,0,0,1526,1444,1,0,0,0,1526,1527,1,0,0,0,1527,79,1,0,0,0, - 1528,1529,3,102,51,0,1529,1530,5,26,0,0,1530,1531,3,212,106,0,1531, - 81,1,0,0,0,1532,1533,5,154,0,0,1533,1534,5,192,0,0,1534,1535,5,168, - 0,0,1535,1544,5,129,0,0,1536,1537,5,20,0,0,1537,1538,5,193,0,0,1538, - 1539,5,168,0,0,1539,1541,5,129,0,0,1540,1542,3,84,42,0,1541,1540, - 1,0,0,0,1541,1542,1,0,0,0,1542,1544,1,0,0,0,1543,1532,1,0,0,0,1543, - 1536,1,0,0,0,1544,83,1,0,0,0,1545,1546,5,205,0,0,1546,1547,5,71, - 0,0,1547,1555,5,131,0,0,1548,1549,5,152,0,0,1549,1550,5,71,0,0,1550, - 1555,5,131,0,0,1551,1552,5,243,0,0,1552,1553,5,230,0,0,1553,1555, - 5,193,0,0,1554,1545,1,0,0,0,1554,1548,1,0,0,0,1554,1551,1,0,0,0, - 1555,85,1,0,0,0,1556,1557,5,5,0,0,1557,1558,5,220,0,0,1558,1559, - 5,139,0,0,1559,1576,5,192,0,0,1560,1561,5,5,0,0,1561,1562,5,165, - 0,0,1562,1563,5,118,0,0,1563,1576,5,192,0,0,1564,1565,5,5,0,0,1565, - 1566,5,220,0,0,1566,1567,5,84,0,0,1567,1576,3,212,106,0,1568,1569, - 5,5,0,0,1569,1570,5,220,0,0,1570,1571,5,118,0,0,1571,1576,3,212, - 106,0,1572,1573,5,5,0,0,1573,1574,5,220,0,0,1574,1576,3,212,106, - 0,1575,1556,1,0,0,0,1575,1560,1,0,0,0,1575,1564,1,0,0,0,1575,1568, - 1,0,0,0,1575,1572,1,0,0,0,1576,87,1,0,0,0,1577,1578,3,212,106,0, - 1578,1579,5,249,0,0,1579,1580,5,1,0,0,1580,1585,3,212,106,0,1581, - 1582,5,3,0,0,1582,1584,3,212,106,0,1583,1581,1,0,0,0,1584,1587,1, - 0,0,0,1585,1583,1,0,0,0,1585,1586,1,0,0,0,1586,1588,1,0,0,0,1587, - 1585,1,0,0,0,1588,1589,5,2,0,0,1589,89,1,0,0,0,1590,1591,3,212,106, - 0,1591,1592,5,26,0,0,1592,1593,3,102,51,0,1593,91,1,0,0,0,1594,1602, - 3,100,50,0,1595,1597,5,26,0,0,1596,1595,1,0,0,0,1596,1597,1,0,0, - 0,1597,1598,1,0,0,0,1598,1600,3,212,106,0,1599,1601,3,98,49,0,1600, - 1599,1,0,0,0,1600,1601,1,0,0,0,1601,1603,1,0,0,0,1602,1596,1,0,0, - 0,1602,1603,1,0,0,0,1603,93,1,0,0,0,1604,1605,5,1,0,0,1605,1610, - 3,202,101,0,1606,1607,5,3,0,0,1607,1609,3,202,101,0,1608,1606,1, - 0,0,0,1609,1612,1,0,0,0,1610,1608,1,0,0,0,1610,1611,1,0,0,0,1611, - 1613,1,0,0,0,1612,1610,1,0,0,0,1613,1614,5,2,0,0,1614,95,1,0,0,0, - 1615,1616,5,1,0,0,1616,1621,3,200,100,0,1617,1618,5,3,0,0,1618,1620, - 3,200,100,0,1619,1617,1,0,0,0,1620,1623,1,0,0,0,1621,1619,1,0,0, - 0,1621,1622,1,0,0,0,1622,1624,1,0,0,0,1623,1621,1,0,0,0,1624,1625, - 5,2,0,0,1625,97,1,0,0,0,1626,1627,5,1,0,0,1627,1632,3,212,106,0, - 1628,1629,5,3,0,0,1629,1631,3,212,106,0,1630,1628,1,0,0,0,1631,1634, - 1,0,0,0,1632,1630,1,0,0,0,1632,1633,1,0,0,0,1633,1635,1,0,0,0,1634, - 1632,1,0,0,0,1635,1636,5,2,0,0,1636,99,1,0,0,0,1637,1667,3,174,87, - 0,1638,1639,5,1,0,0,1639,1640,3,18,9,0,1640,1641,5,2,0,0,1641,1667, - 1,0,0,0,1642,1643,5,231,0,0,1643,1644,5,1,0,0,1644,1649,3,102,51, - 0,1645,1646,5,3,0,0,1646,1648,3,102,51,0,1647,1645,1,0,0,0,1648, - 1651,1,0,0,0,1649,1647,1,0,0,0,1649,1650,1,0,0,0,1650,1652,1,0,0, - 0,1651,1649,1,0,0,0,1652,1655,5,2,0,0,1653,1654,5,243,0,0,1654,1656, - 5,159,0,0,1655,1653,1,0,0,0,1655,1656,1,0,0,0,1656,1667,1,0,0,0, - 1657,1658,5,119,0,0,1658,1659,5,1,0,0,1659,1660,3,18,9,0,1660,1661, - 5,2,0,0,1661,1667,1,0,0,0,1662,1663,5,1,0,0,1663,1664,3,68,34,0, - 1664,1665,5,2,0,0,1665,1667,1,0,0,0,1666,1637,1,0,0,0,1666,1638, - 1,0,0,0,1666,1642,1,0,0,0,1666,1657,1,0,0,0,1666,1662,1,0,0,0,1667, - 101,1,0,0,0,1668,1669,3,104,52,0,1669,103,1,0,0,0,1670,1671,6,52, - -1,0,1671,1673,3,108,54,0,1672,1674,3,106,53,0,1673,1672,1,0,0,0, - 1673,1674,1,0,0,0,1674,1678,1,0,0,0,1675,1676,5,147,0,0,1676,1678, - 3,104,52,3,1677,1670,1,0,0,0,1677,1675,1,0,0,0,1678,1687,1,0,0,0, - 1679,1680,10,2,0,0,1680,1681,5,23,0,0,1681,1686,3,104,52,3,1682, - 1683,10,1,0,0,1683,1684,5,157,0,0,1684,1686,3,104,52,2,1685,1679, - 1,0,0,0,1685,1682,1,0,0,0,1686,1689,1,0,0,0,1687,1685,1,0,0,0,1687, - 1688,1,0,0,0,1688,105,1,0,0,0,1689,1687,1,0,0,0,1690,1691,3,120, - 60,0,1691,1692,3,108,54,0,1692,1752,1,0,0,0,1693,1694,3,120,60,0, - 1694,1695,3,122,61,0,1695,1696,5,1,0,0,1696,1697,3,18,9,0,1697,1698, - 5,2,0,0,1698,1752,1,0,0,0,1699,1701,5,147,0,0,1700,1699,1,0,0,0, - 1700,1701,1,0,0,0,1701,1702,1,0,0,0,1702,1703,5,31,0,0,1703,1704, - 3,108,54,0,1704,1705,5,23,0,0,1705,1706,3,108,54,0,1706,1752,1,0, - 0,0,1707,1709,5,147,0,0,1708,1707,1,0,0,0,1708,1709,1,0,0,0,1709, - 1710,1,0,0,0,1710,1711,5,103,0,0,1711,1712,5,1,0,0,1712,1717,3,102, - 51,0,1713,1714,5,3,0,0,1714,1716,3,102,51,0,1715,1713,1,0,0,0,1716, - 1719,1,0,0,0,1717,1715,1,0,0,0,1717,1718,1,0,0,0,1718,1720,1,0,0, - 0,1719,1717,1,0,0,0,1720,1721,5,2,0,0,1721,1752,1,0,0,0,1722,1724, - 5,147,0,0,1723,1722,1,0,0,0,1723,1724,1,0,0,0,1724,1725,1,0,0,0, - 1725,1726,5,103,0,0,1726,1727,5,1,0,0,1727,1728,3,18,9,0,1728,1729, - 5,2,0,0,1729,1752,1,0,0,0,1730,1732,5,147,0,0,1731,1730,1,0,0,0, - 1731,1732,1,0,0,0,1732,1733,1,0,0,0,1733,1734,5,122,0,0,1734,1737, - 3,108,54,0,1735,1736,5,73,0,0,1736,1738,3,108,54,0,1737,1735,1,0, - 0,0,1737,1738,1,0,0,0,1738,1752,1,0,0,0,1739,1741,5,114,0,0,1740, - 1742,5,147,0,0,1741,1740,1,0,0,0,1741,1742,1,0,0,0,1742,1743,1,0, - 0,0,1743,1752,5,148,0,0,1744,1746,5,114,0,0,1745,1747,5,147,0,0, - 1746,1745,1,0,0,0,1746,1747,1,0,0,0,1747,1748,1,0,0,0,1748,1749, - 5,66,0,0,1749,1750,5,88,0,0,1750,1752,3,108,54,0,1751,1690,1,0,0, - 0,1751,1693,1,0,0,0,1751,1700,1,0,0,0,1751,1708,1,0,0,0,1751,1723, - 1,0,0,0,1751,1731,1,0,0,0,1751,1739,1,0,0,0,1751,1744,1,0,0,0,1752, - 107,1,0,0,0,1753,1754,6,54,-1,0,1754,1758,3,110,55,0,1755,1756,7, - 13,0,0,1756,1758,3,108,54,4,1757,1753,1,0,0,0,1757,1755,1,0,0,0, - 1758,1773,1,0,0,0,1759,1760,10,3,0,0,1760,1761,7,14,0,0,1761,1772, - 3,108,54,4,1762,1763,10,2,0,0,1763,1764,7,13,0,0,1764,1772,3,108, - 54,3,1765,1766,10,1,0,0,1766,1767,5,260,0,0,1767,1772,3,108,54,2, - 1768,1769,10,5,0,0,1769,1770,5,28,0,0,1770,1772,3,118,59,0,1771, - 1759,1,0,0,0,1771,1762,1,0,0,0,1771,1765,1,0,0,0,1771,1768,1,0,0, - 0,1772,1775,1,0,0,0,1773,1771,1,0,0,0,1773,1774,1,0,0,0,1774,109, - 1,0,0,0,1775,1773,1,0,0,0,1776,1777,6,55,-1,0,1777,2026,5,148,0, - 0,1778,2026,3,126,63,0,1779,1780,3,212,106,0,1780,1781,3,116,58, - 0,1781,2026,1,0,0,0,1782,1783,5,68,0,0,1783,1784,5,172,0,0,1784, - 2026,3,116,58,0,1785,2026,3,214,107,0,1786,2026,3,124,62,0,1787, - 2026,3,116,58,0,1788,2026,5,264,0,0,1789,2026,5,261,0,0,1790,1791, - 5,170,0,0,1791,1792,5,1,0,0,1792,1793,3,108,54,0,1793,1794,5,103, - 0,0,1794,1795,3,108,54,0,1795,1796,5,2,0,0,1796,2026,1,0,0,0,1797, - 1798,5,1,0,0,1798,1801,3,102,51,0,1799,1800,5,3,0,0,1800,1802,3, - 102,51,0,1801,1799,1,0,0,0,1802,1803,1,0,0,0,1803,1801,1,0,0,0,1803, - 1804,1,0,0,0,1804,1805,1,0,0,0,1805,1806,5,2,0,0,1806,2026,1,0,0, - 0,1807,1808,5,192,0,0,1808,1809,5,1,0,0,1809,1814,3,102,51,0,1810, - 1811,5,3,0,0,1811,1813,3,102,51,0,1812,1810,1,0,0,0,1813,1816,1, - 0,0,0,1814,1812,1,0,0,0,1814,1815,1,0,0,0,1815,1817,1,0,0,0,1816, - 1814,1,0,0,0,1817,1818,5,2,0,0,1818,2026,1,0,0,0,1819,1820,3,198, - 99,0,1820,1821,5,1,0,0,1821,1822,5,257,0,0,1822,1824,5,2,0,0,1823, - 1825,3,140,70,0,1824,1823,1,0,0,0,1824,1825,1,0,0,0,1825,1827,1, - 0,0,0,1826,1828,3,144,72,0,1827,1826,1,0,0,0,1827,1828,1,0,0,0,1828, - 2026,1,0,0,0,1829,1831,3,112,56,0,1830,1829,1,0,0,0,1830,1831,1, - 0,0,0,1831,1832,1,0,0,0,1832,1833,3,198,99,0,1833,1845,5,1,0,0,1834, - 1836,3,64,32,0,1835,1834,1,0,0,0,1835,1836,1,0,0,0,1836,1837,1,0, - 0,0,1837,1842,3,102,51,0,1838,1839,5,3,0,0,1839,1841,3,102,51,0, - 1840,1838,1,0,0,0,1841,1844,1,0,0,0,1842,1840,1,0,0,0,1842,1843, - 1,0,0,0,1843,1846,1,0,0,0,1844,1842,1,0,0,0,1845,1835,1,0,0,0,1845, - 1846,1,0,0,0,1846,1857,1,0,0,0,1847,1848,5,158,0,0,1848,1849,5,32, - 0,0,1849,1854,3,46,23,0,1850,1851,5,3,0,0,1851,1853,3,46,23,0,1852, - 1850,1,0,0,0,1853,1856,1,0,0,0,1854,1852,1,0,0,0,1854,1855,1,0,0, - 0,1855,1858,1,0,0,0,1856,1854,1,0,0,0,1857,1847,1,0,0,0,1857,1858, - 1,0,0,0,1858,1859,1,0,0,0,1859,1861,5,2,0,0,1860,1862,3,140,70,0, - 1861,1860,1,0,0,0,1861,1862,1,0,0,0,1862,1867,1,0,0,0,1863,1865, - 3,114,57,0,1864,1863,1,0,0,0,1864,1865,1,0,0,0,1865,1866,1,0,0,0, - 1866,1868,3,144,72,0,1867,1864,1,0,0,0,1867,1868,1,0,0,0,1868,2026, - 1,0,0,0,1869,1870,3,212,106,0,1870,1871,3,144,72,0,1871,2026,1,0, - 0,0,1872,1873,3,212,106,0,1873,1874,5,6,0,0,1874,1875,3,102,51,0, - 1875,2026,1,0,0,0,1876,1885,5,1,0,0,1877,1882,3,212,106,0,1878,1879, - 5,3,0,0,1879,1881,3,212,106,0,1880,1878,1,0,0,0,1881,1884,1,0,0, - 0,1882,1880,1,0,0,0,1882,1883,1,0,0,0,1883,1886,1,0,0,0,1884,1882, - 1,0,0,0,1885,1877,1,0,0,0,1885,1886,1,0,0,0,1886,1887,1,0,0,0,1887, - 1888,5,2,0,0,1888,1889,5,6,0,0,1889,2026,3,102,51,0,1890,1891,5, - 1,0,0,1891,1892,3,18,9,0,1892,1893,5,2,0,0,1893,2026,1,0,0,0,1894, - 1895,5,77,0,0,1895,1896,5,1,0,0,1896,1897,3,18,9,0,1897,1898,5,2, - 0,0,1898,2026,1,0,0,0,1899,1900,5,35,0,0,1900,1902,3,102,51,0,1901, - 1903,3,138,69,0,1902,1901,1,0,0,0,1903,1904,1,0,0,0,1904,1902,1, - 0,0,0,1904,1905,1,0,0,0,1905,1908,1,0,0,0,1906,1907,5,70,0,0,1907, - 1909,3,102,51,0,1908,1906,1,0,0,0,1908,1909,1,0,0,0,1909,1910,1, - 0,0,0,1910,1911,5,72,0,0,1911,2026,1,0,0,0,1912,1914,5,35,0,0,1913, - 1915,3,138,69,0,1914,1913,1,0,0,0,1915,1916,1,0,0,0,1916,1914,1, - 0,0,0,1916,1917,1,0,0,0,1917,1920,1,0,0,0,1918,1919,5,70,0,0,1919, - 1921,3,102,51,0,1920,1918,1,0,0,0,1920,1921,1,0,0,0,1921,1922,1, - 0,0,0,1922,1923,5,72,0,0,1923,2026,1,0,0,0,1924,1925,5,36,0,0,1925, - 1926,5,1,0,0,1926,1927,3,102,51,0,1927,1928,5,26,0,0,1928,1929,3, - 132,66,0,1929,1930,5,2,0,0,1930,2026,1,0,0,0,1931,1932,5,224,0,0, - 1932,1933,5,1,0,0,1933,1934,3,102,51,0,1934,1935,5,26,0,0,1935,1936, - 3,132,66,0,1936,1937,5,2,0,0,1937,2026,1,0,0,0,1938,1939,5,25,0, - 0,1939,1948,5,7,0,0,1940,1945,3,102,51,0,1941,1942,5,3,0,0,1942, - 1944,3,102,51,0,1943,1941,1,0,0,0,1944,1947,1,0,0,0,1945,1943,1, - 0,0,0,1945,1946,1,0,0,0,1946,1949,1,0,0,0,1947,1945,1,0,0,0,1948, - 1940,1,0,0,0,1948,1949,1,0,0,0,1949,1950,1,0,0,0,1950,2026,5,8,0, - 0,1951,2026,3,212,106,0,1952,2026,5,49,0,0,1953,1957,5,53,0,0,1954, - 1955,5,1,0,0,1955,1956,5,265,0,0,1956,1958,5,2,0,0,1957,1954,1,0, - 0,0,1957,1958,1,0,0,0,1958,2026,1,0,0,0,1959,1963,5,54,0,0,1960, - 1961,5,1,0,0,1961,1962,5,265,0,0,1962,1964,5,2,0,0,1963,1960,1,0, - 0,0,1963,1964,1,0,0,0,1964,2026,1,0,0,0,1965,1969,5,125,0,0,1966, - 1967,5,1,0,0,1967,1968,5,265,0,0,1968,1970,5,2,0,0,1969,1966,1,0, - 0,0,1969,1970,1,0,0,0,1970,2026,1,0,0,0,1971,1975,5,126,0,0,1972, - 1973,5,1,0,0,1973,1974,5,265,0,0,1974,1976,5,2,0,0,1975,1972,1,0, - 0,0,1975,1976,1,0,0,0,1976,2026,1,0,0,0,1977,2026,5,55,0,0,1978, - 2026,5,48,0,0,1979,2026,5,52,0,0,1980,2026,5,50,0,0,1981,1982,5, - 210,0,0,1982,1983,5,1,0,0,1983,1984,3,108,54,0,1984,1985,5,88,0, - 0,1985,1988,3,108,54,0,1986,1987,5,86,0,0,1987,1989,3,108,54,0,1988, - 1986,1,0,0,0,1988,1989,1,0,0,0,1989,1990,1,0,0,0,1990,1991,5,2,0, - 0,1991,2026,1,0,0,0,1992,1993,5,146,0,0,1993,1994,5,1,0,0,1994,1997, - 3,108,54,0,1995,1996,5,3,0,0,1996,1998,3,130,65,0,1997,1995,1,0, - 0,0,1997,1998,1,0,0,0,1998,1999,1,0,0,0,1999,2000,5,2,0,0,2000,2026, - 1,0,0,0,2001,2002,5,79,0,0,2002,2003,5,1,0,0,2003,2004,3,212,106, - 0,2004,2005,5,88,0,0,2005,2006,3,108,54,0,2006,2007,5,2,0,0,2007, - 2026,1,0,0,0,2008,2009,5,1,0,0,2009,2010,3,102,51,0,2010,2011,5, - 2,0,0,2011,2026,1,0,0,0,2012,2013,5,97,0,0,2013,2022,5,1,0,0,2014, - 2019,3,204,102,0,2015,2016,5,3,0,0,2016,2018,3,204,102,0,2017,2015, - 1,0,0,0,2018,2021,1,0,0,0,2019,2017,1,0,0,0,2019,2020,1,0,0,0,2020, - 2023,1,0,0,0,2021,2019,1,0,0,0,2022,2014,1,0,0,0,2022,2023,1,0,0, - 0,2023,2024,1,0,0,0,2024,2026,5,2,0,0,2025,1776,1,0,0,0,2025,1778, - 1,0,0,0,2025,1779,1,0,0,0,2025,1782,1,0,0,0,2025,1785,1,0,0,0,2025, - 1786,1,0,0,0,2025,1787,1,0,0,0,2025,1788,1,0,0,0,2025,1789,1,0,0, - 0,2025,1790,1,0,0,0,2025,1797,1,0,0,0,2025,1807,1,0,0,0,2025,1819, - 1,0,0,0,2025,1830,1,0,0,0,2025,1869,1,0,0,0,2025,1872,1,0,0,0,2025, - 1876,1,0,0,0,2025,1890,1,0,0,0,2025,1894,1,0,0,0,2025,1899,1,0,0, - 0,2025,1912,1,0,0,0,2025,1924,1,0,0,0,2025,1931,1,0,0,0,2025,1938, - 1,0,0,0,2025,1951,1,0,0,0,2025,1952,1,0,0,0,2025,1953,1,0,0,0,2025, - 1959,1,0,0,0,2025,1965,1,0,0,0,2025,1971,1,0,0,0,2025,1977,1,0,0, - 0,2025,1978,1,0,0,0,2025,1979,1,0,0,0,2025,1980,1,0,0,0,2025,1981, - 1,0,0,0,2025,1992,1,0,0,0,2025,2001,1,0,0,0,2025,2008,1,0,0,0,2025, - 2012,1,0,0,0,2026,2037,1,0,0,0,2027,2028,10,17,0,0,2028,2029,5,7, - 0,0,2029,2030,3,108,54,0,2030,2031,5,8,0,0,2031,2036,1,0,0,0,2032, - 2033,10,15,0,0,2033,2034,5,4,0,0,2034,2036,3,212,106,0,2035,2027, - 1,0,0,0,2035,2032,1,0,0,0,2036,2039,1,0,0,0,2037,2035,1,0,0,0,2037, - 2038,1,0,0,0,2038,111,1,0,0,0,2039,2037,1,0,0,0,2040,2041,7,15,0, - 0,2041,113,1,0,0,0,2042,2043,5,102,0,0,2043,2047,5,150,0,0,2044, - 2045,5,184,0,0,2045,2047,5,150,0,0,2046,2042,1,0,0,0,2046,2044,1, - 0,0,0,2047,115,1,0,0,0,2048,2055,5,262,0,0,2049,2052,5,263,0,0,2050, - 2051,5,226,0,0,2051,2053,5,262,0,0,2052,2050,1,0,0,0,2052,2053,1, - 0,0,0,2053,2055,1,0,0,0,2054,2048,1,0,0,0,2054,2049,1,0,0,0,2055, - 117,1,0,0,0,2056,2057,5,218,0,0,2057,2058,5,248,0,0,2058,2063,3, - 126,63,0,2059,2060,5,218,0,0,2060,2061,5,248,0,0,2061,2063,3,116, - 58,0,2062,2056,1,0,0,0,2062,2059,1,0,0,0,2063,119,1,0,0,0,2064,2065, - 7,16,0,0,2065,121,1,0,0,0,2066,2067,7,17,0,0,2067,123,1,0,0,0,2068, - 2069,7,18,0,0,2069,125,1,0,0,0,2070,2072,5,110,0,0,2071,2073,7,13, - 0,0,2072,2071,1,0,0,0,2072,2073,1,0,0,0,2073,2074,1,0,0,0,2074,2075, - 3,116,58,0,2075,2078,3,128,64,0,2076,2077,5,220,0,0,2077,2079,3, - 128,64,0,2078,2076,1,0,0,0,2078,2079,1,0,0,0,2079,127,1,0,0,0,2080, - 2081,7,19,0,0,2081,129,1,0,0,0,2082,2083,7,20,0,0,2083,131,1,0,0, - 0,2084,2085,6,66,-1,0,2085,2086,5,192,0,0,2086,2087,5,1,0,0,2087, - 2092,3,134,67,0,2088,2089,5,3,0,0,2089,2091,3,134,67,0,2090,2088, - 1,0,0,0,2091,2094,1,0,0,0,2092,2090,1,0,0,0,2092,2093,1,0,0,0,2093, - 2095,1,0,0,0,2094,2092,1,0,0,0,2095,2096,5,2,0,0,2096,2176,1,0,0, - 0,2097,2098,5,110,0,0,2098,2101,3,128,64,0,2099,2100,5,220,0,0,2100, - 2102,3,128,64,0,2101,2099,1,0,0,0,2101,2102,1,0,0,0,2102,2176,1, - 0,0,0,2103,2108,5,219,0,0,2104,2105,5,1,0,0,2105,2106,3,136,68,0, - 2106,2107,5,2,0,0,2107,2109,1,0,0,0,2108,2104,1,0,0,0,2108,2109, - 1,0,0,0,2109,2113,1,0,0,0,2110,2111,5,244,0,0,2111,2112,5,218,0, - 0,2112,2114,5,248,0,0,2113,2110,1,0,0,0,2113,2114,1,0,0,0,2114,2176, - 1,0,0,0,2115,2120,5,219,0,0,2116,2117,5,1,0,0,2117,2118,3,136,68, - 0,2118,2119,5,2,0,0,2119,2121,1,0,0,0,2120,2116,1,0,0,0,2120,2121, - 1,0,0,0,2121,2122,1,0,0,0,2122,2123,5,243,0,0,2123,2124,5,218,0, - 0,2124,2176,5,248,0,0,2125,2130,5,218,0,0,2126,2127,5,1,0,0,2127, - 2128,3,136,68,0,2128,2129,5,2,0,0,2129,2131,1,0,0,0,2130,2126,1, - 0,0,0,2130,2131,1,0,0,0,2131,2135,1,0,0,0,2132,2133,5,244,0,0,2133, - 2134,5,218,0,0,2134,2136,5,248,0,0,2135,2132,1,0,0,0,2135,2136,1, - 0,0,0,2136,2176,1,0,0,0,2137,2142,5,218,0,0,2138,2139,5,1,0,0,2139, - 2140,3,136,68,0,2140,2141,5,2,0,0,2141,2143,1,0,0,0,2142,2138,1, - 0,0,0,2142,2143,1,0,0,0,2143,2144,1,0,0,0,2144,2145,5,243,0,0,2145, - 2146,5,218,0,0,2146,2176,5,248,0,0,2147,2148,5,68,0,0,2148,2176, - 5,172,0,0,2149,2150,5,25,0,0,2150,2151,5,251,0,0,2151,2152,3,132, - 66,0,2152,2153,5,253,0,0,2153,2176,1,0,0,0,2154,2155,5,128,0,0,2155, - 2156,5,251,0,0,2156,2157,3,132,66,0,2157,2158,5,3,0,0,2158,2159, - 3,132,66,0,2159,2160,5,253,0,0,2160,2176,1,0,0,0,2161,2173,3,212, - 106,0,2162,2163,5,1,0,0,2163,2168,3,136,68,0,2164,2165,5,3,0,0,2165, - 2167,3,136,68,0,2166,2164,1,0,0,0,2167,2170,1,0,0,0,2168,2166,1, - 0,0,0,2168,2169,1,0,0,0,2169,2171,1,0,0,0,2170,2168,1,0,0,0,2171, - 2172,5,2,0,0,2172,2174,1,0,0,0,2173,2162,1,0,0,0,2173,2174,1,0,0, - 0,2174,2176,1,0,0,0,2175,2084,1,0,0,0,2175,2097,1,0,0,0,2175,2103, - 1,0,0,0,2175,2115,1,0,0,0,2175,2125,1,0,0,0,2175,2137,1,0,0,0,2175, - 2147,1,0,0,0,2175,2149,1,0,0,0,2175,2154,1,0,0,0,2175,2161,1,0,0, - 0,2176,2186,1,0,0,0,2177,2178,10,2,0,0,2178,2182,5,25,0,0,2179,2180, - 5,7,0,0,2180,2181,5,265,0,0,2181,2183,5,8,0,0,2182,2179,1,0,0,0, - 2182,2183,1,0,0,0,2183,2185,1,0,0,0,2184,2177,1,0,0,0,2185,2188, - 1,0,0,0,2186,2184,1,0,0,0,2186,2187,1,0,0,0,2187,133,1,0,0,0,2188, - 2186,1,0,0,0,2189,2194,3,132,66,0,2190,2191,3,212,106,0,2191,2192, - 3,132,66,0,2192,2194,1,0,0,0,2193,2189,1,0,0,0,2193,2190,1,0,0,0, - 2194,135,1,0,0,0,2195,2198,5,265,0,0,2196,2198,3,132,66,0,2197,2195, - 1,0,0,0,2197,2196,1,0,0,0,2198,137,1,0,0,0,2199,2200,5,240,0,0,2200, - 2201,3,102,51,0,2201,2202,5,216,0,0,2202,2203,3,102,51,0,2203,139, - 1,0,0,0,2204,2205,5,82,0,0,2205,2206,5,1,0,0,2206,2207,5,241,0,0, - 2207,2208,3,104,52,0,2208,2209,5,2,0,0,2209,141,1,0,0,0,2210,2211, - 5,240,0,0,2211,2214,5,130,0,0,2212,2213,5,23,0,0,2213,2215,3,102, - 51,0,2214,2212,1,0,0,0,2214,2215,1,0,0,0,2215,2216,1,0,0,0,2216, - 2217,5,216,0,0,2217,2218,5,232,0,0,2218,2219,5,203,0,0,2219,2220, - 3,212,106,0,2220,2221,5,249,0,0,2221,2229,3,102,51,0,2222,2223,5, - 3,0,0,2223,2224,3,212,106,0,2224,2225,5,249,0,0,2225,2226,3,102, - 51,0,2226,2228,1,0,0,0,2227,2222,1,0,0,0,2228,2231,1,0,0,0,2229, - 2227,1,0,0,0,2229,2230,1,0,0,0,2230,2275,1,0,0,0,2231,2229,1,0,0, - 0,2232,2233,5,240,0,0,2233,2236,5,130,0,0,2234,2235,5,23,0,0,2235, - 2237,3,102,51,0,2236,2234,1,0,0,0,2236,2237,1,0,0,0,2237,2238,1, - 0,0,0,2238,2239,5,216,0,0,2239,2275,5,62,0,0,2240,2241,5,240,0,0, - 2241,2242,5,147,0,0,2242,2245,5,130,0,0,2243,2244,5,23,0,0,2244, - 2246,3,102,51,0,2245,2243,1,0,0,0,2245,2246,1,0,0,0,2246,2247,1, - 0,0,0,2247,2248,5,216,0,0,2248,2260,5,108,0,0,2249,2250,5,1,0,0, - 2250,2255,3,212,106,0,2251,2252,5,3,0,0,2252,2254,3,212,106,0,2253, - 2251,1,0,0,0,2254,2257,1,0,0,0,2255,2253,1,0,0,0,2255,2256,1,0,0, - 0,2256,2258,1,0,0,0,2257,2255,1,0,0,0,2258,2259,5,2,0,0,2259,2261, - 1,0,0,0,2260,2249,1,0,0,0,2260,2261,1,0,0,0,2261,2262,1,0,0,0,2262, - 2263,5,237,0,0,2263,2264,5,1,0,0,2264,2269,3,102,51,0,2265,2266, - 5,3,0,0,2266,2268,3,102,51,0,2267,2265,1,0,0,0,2268,2271,1,0,0,0, - 2269,2267,1,0,0,0,2269,2270,1,0,0,0,2270,2272,1,0,0,0,2271,2269, - 1,0,0,0,2272,2273,5,2,0,0,2273,2275,1,0,0,0,2274,2210,1,0,0,0,2274, - 2232,1,0,0,0,2274,2240,1,0,0,0,2275,143,1,0,0,0,2276,2282,5,162, - 0,0,2277,2283,3,212,106,0,2278,2279,5,1,0,0,2279,2280,3,60,30,0, - 2280,2281,5,2,0,0,2281,2283,1,0,0,0,2282,2277,1,0,0,0,2282,2278, - 1,0,0,0,2283,145,1,0,0,0,2284,2285,5,134,0,0,2285,2290,3,80,40,0, - 2286,2287,5,3,0,0,2287,2289,3,80,40,0,2288,2286,1,0,0,0,2289,2292, - 1,0,0,0,2290,2288,1,0,0,0,2290,2291,1,0,0,0,2291,2294,1,0,0,0,2292, - 2290,1,0,0,0,2293,2284,1,0,0,0,2293,2294,1,0,0,0,2294,2295,1,0,0, - 0,2295,2299,3,148,74,0,2296,2297,5,19,0,0,2297,2298,5,129,0,0,2298, - 2300,3,86,43,0,2299,2296,1,0,0,0,2299,2300,1,0,0,0,2300,2302,1,0, - 0,0,2301,2303,7,12,0,0,2302,2301,1,0,0,0,2302,2303,1,0,0,0,2303, - 2309,1,0,0,0,2304,2305,5,167,0,0,2305,2306,5,1,0,0,2306,2307,3,152, - 76,0,2307,2308,5,2,0,0,2308,2310,1,0,0,0,2309,2304,1,0,0,0,2309, - 2310,1,0,0,0,2310,2320,1,0,0,0,2311,2312,5,209,0,0,2312,2317,3,88, - 44,0,2313,2314,5,3,0,0,2314,2316,3,88,44,0,2315,2313,1,0,0,0,2316, - 2319,1,0,0,0,2317,2315,1,0,0,0,2317,2318,1,0,0,0,2318,2321,1,0,0, - 0,2319,2317,1,0,0,0,2320,2311,1,0,0,0,2320,2321,1,0,0,0,2321,2331, - 1,0,0,0,2322,2323,5,65,0,0,2323,2328,3,90,45,0,2324,2325,5,3,0,0, - 2325,2327,3,90,45,0,2326,2324,1,0,0,0,2327,2330,1,0,0,0,2328,2326, - 1,0,0,0,2328,2329,1,0,0,0,2329,2332,1,0,0,0,2330,2328,1,0,0,0,2331, - 2322,1,0,0,0,2331,2332,1,0,0,0,2332,147,1,0,0,0,2333,2334,5,176, - 0,0,2334,2358,3,150,75,0,2335,2336,5,193,0,0,2336,2358,3,150,75, - 0,2337,2338,5,98,0,0,2338,2358,3,150,75,0,2339,2340,5,176,0,0,2340, - 2341,5,31,0,0,2341,2342,3,150,75,0,2342,2343,5,23,0,0,2343,2344, - 3,150,75,0,2344,2358,1,0,0,0,2345,2346,5,193,0,0,2346,2347,5,31, - 0,0,2347,2348,3,150,75,0,2348,2349,5,23,0,0,2349,2350,3,150,75,0, - 2350,2358,1,0,0,0,2351,2352,5,98,0,0,2352,2353,5,31,0,0,2353,2354, - 3,150,75,0,2354,2355,5,23,0,0,2355,2356,3,150,75,0,2356,2358,1,0, - 0,0,2357,2333,1,0,0,0,2357,2335,1,0,0,0,2357,2337,1,0,0,0,2357,2339, - 1,0,0,0,2357,2345,1,0,0,0,2357,2351,1,0,0,0,2358,149,1,0,0,0,2359, - 2360,5,227,0,0,2360,2369,5,171,0,0,2361,2362,5,227,0,0,2362,2369, - 5,85,0,0,2363,2364,5,47,0,0,2364,2369,5,192,0,0,2365,2366,3,102, - 51,0,2366,2367,7,21,0,0,2367,2369,1,0,0,0,2368,2359,1,0,0,0,2368, - 2361,1,0,0,0,2368,2363,1,0,0,0,2368,2365,1,0,0,0,2369,151,1,0,0, - 0,2370,2371,6,76,-1,0,2371,2373,3,154,77,0,2372,2374,3,156,78,0, - 2373,2372,1,0,0,0,2373,2374,1,0,0,0,2374,2382,1,0,0,0,2375,2376, - 10,2,0,0,2376,2381,3,152,76,3,2377,2378,10,1,0,0,2378,2379,5,9,0, - 0,2379,2381,3,152,76,2,2380,2375,1,0,0,0,2380,2377,1,0,0,0,2381, - 2384,1,0,0,0,2382,2380,1,0,0,0,2382,2383,1,0,0,0,2383,153,1,0,0, - 0,2384,2382,1,0,0,0,2385,2411,3,212,106,0,2386,2387,5,1,0,0,2387, - 2411,5,2,0,0,2388,2389,5,169,0,0,2389,2390,5,1,0,0,2390,2395,3,152, - 76,0,2391,2392,5,3,0,0,2392,2394,3,152,76,0,2393,2391,1,0,0,0,2394, - 2397,1,0,0,0,2395,2393,1,0,0,0,2395,2396,1,0,0,0,2396,2398,1,0,0, - 0,2397,2395,1,0,0,0,2398,2399,5,2,0,0,2399,2411,1,0,0,0,2400,2401, - 5,1,0,0,2401,2402,3,152,76,0,2402,2403,5,2,0,0,2403,2411,1,0,0,0, - 2404,2411,5,10,0,0,2405,2411,5,11,0,0,2406,2407,5,12,0,0,2407,2408, - 3,152,76,0,2408,2409,5,13,0,0,2409,2411,1,0,0,0,2410,2385,1,0,0, - 0,2410,2386,1,0,0,0,2410,2388,1,0,0,0,2410,2400,1,0,0,0,2410,2404, - 1,0,0,0,2410,2405,1,0,0,0,2410,2406,1,0,0,0,2411,155,1,0,0,0,2412, - 2414,5,257,0,0,2413,2415,5,261,0,0,2414,2413,1,0,0,0,2414,2415,1, - 0,0,0,2415,2443,1,0,0,0,2416,2418,5,255,0,0,2417,2419,5,261,0,0, - 2418,2417,1,0,0,0,2418,2419,1,0,0,0,2419,2443,1,0,0,0,2420,2422, - 5,261,0,0,2421,2423,5,261,0,0,2422,2421,1,0,0,0,2422,2423,1,0,0, - 0,2423,2443,1,0,0,0,2424,2425,5,14,0,0,2425,2426,5,265,0,0,2426, - 2428,5,15,0,0,2427,2429,5,261,0,0,2428,2427,1,0,0,0,2428,2429,1, - 0,0,0,2429,2443,1,0,0,0,2430,2432,5,14,0,0,2431,2433,5,265,0,0,2432, - 2431,1,0,0,0,2432,2433,1,0,0,0,2433,2434,1,0,0,0,2434,2436,5,3,0, - 0,2435,2437,5,265,0,0,2436,2435,1,0,0,0,2436,2437,1,0,0,0,2437,2438, - 1,0,0,0,2438,2440,5,15,0,0,2439,2441,5,261,0,0,2440,2439,1,0,0,0, - 2440,2441,1,0,0,0,2441,2443,1,0,0,0,2442,2412,1,0,0,0,2442,2416, - 1,0,0,0,2442,2420,1,0,0,0,2442,2424,1,0,0,0,2442,2430,1,0,0,0,2443, - 157,1,0,0,0,2444,2445,3,212,106,0,2445,2446,5,249,0,0,2446,2447, - 3,102,51,0,2447,159,1,0,0,0,2448,2449,5,87,0,0,2449,2453,7,22,0, - 0,2450,2451,5,225,0,0,2451,2453,7,23,0,0,2452,2448,1,0,0,0,2452, - 2450,1,0,0,0,2453,161,1,0,0,0,2454,2455,5,115,0,0,2455,2456,5,121, - 0,0,2456,2460,3,164,82,0,2457,2458,5,177,0,0,2458,2460,7,24,0,0, - 2459,2454,1,0,0,0,2459,2457,1,0,0,0,2460,163,1,0,0,0,2461,2462,5, - 177,0,0,2462,2469,5,228,0,0,2463,2464,5,177,0,0,2464,2469,5,42,0, - 0,2465,2466,5,181,0,0,2466,2469,5,177,0,0,2467,2469,5,201,0,0,2468, - 2461,1,0,0,0,2468,2463,1,0,0,0,2468,2465,1,0,0,0,2468,2467,1,0,0, - 0,2469,165,1,0,0,0,2470,2476,3,102,51,0,2471,2472,3,212,106,0,2472, - 2473,5,16,0,0,2473,2474,3,102,51,0,2474,2476,1,0,0,0,2475,2470,1, - 0,0,0,2475,2471,1,0,0,0,2476,167,1,0,0,0,2477,2478,3,212,106,0,2478, - 2479,5,4,0,0,2479,2480,3,212,106,0,2480,2483,1,0,0,0,2481,2483,3, - 212,106,0,2482,2477,1,0,0,0,2482,2481,1,0,0,0,2483,169,1,0,0,0,2484, - 2489,3,168,84,0,2485,2486,5,3,0,0,2486,2488,3,168,84,0,2487,2485, - 1,0,0,0,2488,2491,1,0,0,0,2489,2487,1,0,0,0,2489,2490,1,0,0,0,2490, - 171,1,0,0,0,2491,2489,1,0,0,0,2492,2493,7,25,0,0,2493,173,1,0,0, - 0,2494,2497,3,176,88,0,2495,2497,3,180,90,0,2496,2494,1,0,0,0,2496, - 2495,1,0,0,0,2497,175,1,0,0,0,2498,2499,3,184,92,0,2499,177,1,0, - 0,0,2500,2501,3,184,92,0,2501,179,1,0,0,0,2502,2503,3,186,93,0,2503, - 181,1,0,0,0,2504,2505,3,186,93,0,2505,183,1,0,0,0,2506,2518,3,212, - 106,0,2507,2508,3,212,106,0,2508,2509,5,4,0,0,2509,2510,3,212,106, - 0,2510,2518,1,0,0,0,2511,2512,3,212,106,0,2512,2513,5,4,0,0,2513, - 2514,3,212,106,0,2514,2515,5,4,0,0,2515,2516,3,212,106,0,2516,2518, - 1,0,0,0,2517,2506,1,0,0,0,2517,2507,1,0,0,0,2517,2511,1,0,0,0,2518, - 185,1,0,0,0,2519,2531,3,212,106,0,2520,2521,3,212,106,0,2521,2522, - 5,4,0,0,2522,2523,3,212,106,0,2523,2531,1,0,0,0,2524,2525,3,212, - 106,0,2525,2526,5,4,0,0,2526,2527,3,212,106,0,2527,2528,5,4,0,0, - 2528,2529,3,212,106,0,2529,2531,1,0,0,0,2530,2519,1,0,0,0,2530,2520, - 1,0,0,0,2530,2524,1,0,0,0,2531,187,1,0,0,0,2532,2533,3,192,96,0, - 2533,189,1,0,0,0,2534,2535,3,192,96,0,2535,191,1,0,0,0,2536,2542, - 3,212,106,0,2537,2538,3,212,106,0,2538,2539,5,4,0,0,2539,2540,3, - 212,106,0,2540,2542,1,0,0,0,2541,2536,1,0,0,0,2541,2537,1,0,0,0, - 2542,193,1,0,0,0,2543,2544,3,212,106,0,2544,195,1,0,0,0,2545,2546, - 3,212,106,0,2546,197,1,0,0,0,2547,2548,3,204,102,0,2548,199,1,0, - 0,0,2549,2552,3,204,102,0,2550,2552,4,100,14,0,2551,2549,1,0,0,0, - 2551,2550,1,0,0,0,2552,201,1,0,0,0,2553,2554,3,212,106,0,2554,203, - 1,0,0,0,2555,2560,3,212,106,0,2556,2557,5,4,0,0,2557,2559,3,212, - 106,0,2558,2556,1,0,0,0,2559,2562,1,0,0,0,2560,2558,1,0,0,0,2560, - 2561,1,0,0,0,2561,205,1,0,0,0,2562,2560,1,0,0,0,2563,2567,3,208, - 104,0,2564,2567,5,55,0,0,2565,2567,5,51,0,0,2566,2563,1,0,0,0,2566, - 2564,1,0,0,0,2566,2565,1,0,0,0,2567,207,1,0,0,0,2568,2574,3,212, - 106,0,2569,2570,5,234,0,0,2570,2574,3,212,106,0,2571,2572,5,188, - 0,0,2572,2574,3,212,106,0,2573,2568,1,0,0,0,2573,2569,1,0,0,0,2573, - 2571,1,0,0,0,2574,209,1,0,0,0,2575,2580,3,212,106,0,2576,2577,5, - 3,0,0,2577,2579,3,212,106,0,2578,2576,1,0,0,0,2579,2582,1,0,0,0, - 2580,2578,1,0,0,0,2580,2581,1,0,0,0,2581,211,1,0,0,0,2582,2580,1, - 0,0,0,2583,2589,5,268,0,0,2584,2589,5,270,0,0,2585,2589,3,216,108, - 0,2586,2589,5,271,0,0,2587,2589,5,269,0,0,2588,2583,1,0,0,0,2588, - 2584,1,0,0,0,2588,2585,1,0,0,0,2588,2586,1,0,0,0,2588,2587,1,0,0, - 0,2589,213,1,0,0,0,2590,2592,5,256,0,0,2591,2590,1,0,0,0,2591,2592, - 1,0,0,0,2592,2593,1,0,0,0,2593,2603,5,266,0,0,2594,2596,5,256,0, - 0,2595,2594,1,0,0,0,2595,2596,1,0,0,0,2596,2597,1,0,0,0,2597,2603, - 5,267,0,0,2598,2600,5,256,0,0,2599,2598,1,0,0,0,2599,2600,1,0,0, - 0,2600,2601,1,0,0,0,2601,2603,5,265,0,0,2602,2591,1,0,0,0,2602,2595, - 1,0,0,0,2602,2599,1,0,0,0,2603,215,1,0,0,0,2604,2605,7,26,0,0,2605, - 217,1,0,0,0,340,221,232,236,240,244,248,252,262,267,271,277,281, - 302,306,310,314,322,326,329,336,345,351,355,361,368,377,386,400, - 409,415,422,432,439,447,455,484,487,490,494,500,505,512,517,521, - 529,535,539,553,561,580,605,608,618,622,635,641,646,650,656,665, - 671,675,682,686,694,699,703,707,710,717,725,730,734,738,741,750, - 757,762,766,770,773,781,784,788,791,799,804,828,834,836,842,848, - 850,858,860,866,872,874,889,894,901,913,915,923,925,943,946,950, - 954,972,975,991,1001,1006,1012,1015,1024,1036,1039,1045,1052,1057, - 1063,1067,1071,1077,1088,1097,1107,1110,1115,1117,1124,1130,1132, - 1136,1146,1152,1155,1157,1169,1176,1180,1183,1187,1191,1198,1207, - 1210,1214,1219,1223,1231,1234,1237,1244,1255,1258,1268,1271,1282, - 1287,1295,1298,1302,1306,1315,1324,1327,1336,1339,1342,1346,1357, - 1360,1363,1370,1373,1392,1396,1400,1404,1408,1412,1414,1425,1430, - 1439,1453,1456,1465,1468,1476,1479,1482,1487,1490,1502,1505,1513, - 1518,1522,1524,1526,1541,1543,1554,1575,1585,1596,1600,1602,1610, - 1621,1632,1649,1655,1666,1673,1677,1685,1687,1700,1708,1717,1723, - 1731,1737,1741,1746,1751,1757,1771,1773,1803,1814,1824,1827,1830, - 1835,1842,1845,1854,1857,1861,1864,1867,1882,1885,1904,1908,1916, - 1920,1945,1948,1957,1963,1969,1975,1988,1997,2019,2022,2025,2035, - 2037,2046,2052,2054,2062,2072,2078,2092,2101,2108,2113,2120,2130, - 2135,2142,2168,2173,2175,2182,2186,2193,2197,2214,2229,2236,2245, - 2255,2260,2269,2274,2282,2290,2293,2299,2302,2309,2317,2320,2328, - 2331,2357,2368,2373,2380,2382,2395,2410,2414,2418,2422,2428,2432, - 2436,2440,2442,2452,2459,2468,2475,2482,2489,2496,2517,2530,2541, - 2551,2560,2566,2573,2580,2588,2591,2595,2599,2602 - ]; - - private static __ATN: antlr.ATN; - public static get _ATN(): antlr.ATN { - if (!TrinoSqlParser.__ATN) { - TrinoSqlParser.__ATN = new antlr.ATNDeserializer().deserialize(TrinoSqlParser._serializedATN); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRenameMaterializedView) { + listener.exitRenameMaterializedView(this); } - - return TrinoSqlParser.__ATN; } - - - private static readonly vocabulary = new antlr.Vocabulary(TrinoSqlParser.literalNames, TrinoSqlParser.symbolicNames, []); - - public override get vocabulary(): antlr.Vocabulary { - return TrinoSqlParser.vocabulary; + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRenameMaterializedView) { + return visitor.visitRenameMaterializedView(this); + } else { + return visitor.visitChildren(this); + } } - - private static readonly decisionsToDFA = TrinoSqlParser._ATN.decisionToState.map( (ds: antlr.DecisionState, index: number) => new antlr.DFA(ds, index) ); } - -export class ProgramContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class ShowSchemasContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public EOF(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.EOF, 0)!; + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_SCHEMAS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMAS, 0)!; + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); } - public statements(): StatementsContext[]; - public statements(i: number): StatementsContext | null; - public statements(i?: number): StatementsContext[] | StatementsContext | null { + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { if (i === undefined) { - return this.getRuleContexts(StatementsContext); + return this.getRuleContexts(StringContext); } - return this.getRuleContext(i, StatementsContext); + return this.getRuleContext(i, StringContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_program; + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterProgram) { - listener.enterProgram(this); + if(listener.enterShowSchemas) { + listener.enterShowSchemas(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitProgram) { - listener.exitProgram(this); + if(listener.exitShowSchemas) { + listener.exitShowSchemas(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitProgram) { - return visitor.visitProgram(this); + if (visitor.visitShowSchemas) { + return visitor.visitShowSchemas(this); } else { return visitor.visitChildren(this); } } } - - -export class StatementsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class DropTableContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public singleStatement(): SingleStatementContext { - return this.getRuleContext(0, SingleStatementContext)!; + public KW_DROP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DROP, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_statements; + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStatements) { - listener.enterStatements(this); + if(listener.enterDropTable) { + listener.enterDropTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStatements) { - listener.exitStatements(this); + if(listener.exitDropTable) { + listener.exitDropTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStatements) { - return visitor.visitStatements(this); + if (visitor.visitDropTable) { + return visitor.visitDropTable(this); } else { return visitor.visitChildren(this); } } } - - -export class StandaloneClauseContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class SetSchemaAuthorizationContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public standaloneExpression(): StandaloneExpressionContext | null { - return this.getRuleContext(0, StandaloneExpressionContext); + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; } - public standalonePathSpecification(): StandalonePathSpecificationContext | null { - return this.getRuleContext(0, StandalonePathSpecificationContext); + public KW_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; } - public standaloneType(): StandaloneTypeContext | null { - return this.getRuleContext(0, StandaloneTypeContext); + public schemaRef(): SchemaRefContext { + return this.getRuleContext(0, SchemaRefContext)!; } - public standaloneRowPattern(): StandaloneRowPatternContext | null { - return this.getRuleContext(0, StandaloneRowPatternContext); + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_standaloneClause; + public KW_AUTHORIZATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + } + public principal(): PrincipalContext { + return this.getRuleContext(0, PrincipalContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStandaloneClause) { - listener.enterStandaloneClause(this); + if(listener.enterSetSchemaAuthorization) { + listener.enterSetSchemaAuthorization(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStandaloneClause) { - listener.exitStandaloneClause(this); + if(listener.exitSetSchemaAuthorization) { + listener.exitSetSchemaAuthorization(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStandaloneClause) { - return visitor.visitStandaloneClause(this); + if (visitor.visitSetSchemaAuthorization) { + return visitor.visitSetSchemaAuthorization(this); } else { return visitor.visitChildren(this); } } } - - -export class SingleStatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public statement(): StatementContext { - return this.getRuleContext(0, StatementContext)!; +export class RollbackContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public SEMICOLON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SEMICOLON, 0); + public KW_ROLLBACK(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLLBACK, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_singleStatement; + public KW_WORK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WORK, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSingleStatement) { - listener.enterSingleStatement(this); + if(listener.enterRollback) { + listener.enterRollback(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSingleStatement) { - listener.exitSingleStatement(this); + if(listener.exitRollback) { + listener.exitRollback(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSingleStatement) { - return visitor.visitSingleStatement(this); + if (visitor.visitRollback) { + return visitor.visitRollback(this); } else { return visitor.visitChildren(this); } } } - - -export class StandaloneExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class CommentTableContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; } - public SEMICOLON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SEMICOLON, 0); + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_standaloneExpression; + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; + } + public KW_IS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IS, 0)!; + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStandaloneExpression) { - listener.enterStandaloneExpression(this); + if(listener.enterCommentTable) { + listener.enterCommentTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStandaloneExpression) { - listener.exitStandaloneExpression(this); + if(listener.exitCommentTable) { + listener.exitCommentTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStandaloneExpression) { - return visitor.visitStandaloneExpression(this); + if (visitor.visitCommentTable) { + return visitor.visitCommentTable(this); } else { return visitor.visitChildren(this); } } } +export class ExecuteImmediateContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_EXECUTE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXECUTE, 0)!; + } + public KW_IMMEDIATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IMMEDIATE, 0)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_USING, 0); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } - -export class StandalonePathSpecificationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, ExpressionContext); } - public pathSpecification(): PathSpecificationContext { - return this.getRuleContext(0, PathSpecificationContext)!; + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterExecuteImmediate) { + listener.enterExecuteImmediate(this); + } } - public SEMICOLON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SEMICOLON, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitExecuteImmediate) { + listener.exitExecuteImmediate(this); + } } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_standalonePathSpecification; + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitExecuteImmediate) { + return visitor.visitExecuteImmediate(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class RenameViewContext extends StatementContext { + public _from_?: ViewRefContext; + public _to?: ViewNameCreateContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_ALTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + } + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + } + public KW_RENAME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; + } + public viewNameCreate(): ViewNameCreateContext { + return this.getRuleContext(0, ViewNameCreateContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStandalonePathSpecification) { - listener.enterStandalonePathSpecification(this); + if(listener.enterRenameView) { + listener.enterRenameView(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStandalonePathSpecification) { - listener.exitStandalonePathSpecification(this); + if(listener.exitRenameView) { + listener.exitRenameView(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStandalonePathSpecification) { - return visitor.visitStandalonePathSpecification(this); + if (visitor.visitRenameView) { + return visitor.visitRenameView(this); } else { return visitor.visitChildren(this); } } } - - -export class StandaloneTypeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class SetPathContext extends StatementContext { + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; } - public SEMICOLON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SEMICOLON, 0); + public KW_PATH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PATH, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_standaloneType; + public pathSpecification(): PathSpecificationContext { + return this.getRuleContext(0, PathSpecificationContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStandaloneType) { - listener.enterStandaloneType(this); + if(listener.enterSetPath) { + listener.enterSetPath(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStandaloneType) { - listener.exitStandaloneType(this); + if(listener.exitSetPath) { + listener.exitSetPath(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStandaloneType) { - return visitor.visitStandaloneType(this); + if (visitor.visitSetPath) { + return visitor.visitSetPath(this); } else { return visitor.visitChildren(this); } } } +export class GrantRolesContext extends StatementContext { + public _catalog?: CatalogRefContext; + public constructor(ctx: StatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_GRANT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_GRANT, 0)!; + } + public privilegeOrRole(): PrivilegeOrRoleContext[]; + public privilegeOrRole(i: number): PrivilegeOrRoleContext | null; + public privilegeOrRole(i?: number): PrivilegeOrRoleContext[] | PrivilegeOrRoleContext | null { + if (i === undefined) { + return this.getRuleContexts(PrivilegeOrRoleContext); + } + return this.getRuleContext(i, PrivilegeOrRoleContext); + } + public KW_TO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TO, 0)!; + } + public principal(): PrincipalContext[]; + public principal(i: number): PrincipalContext | null; + public principal(i?: number): PrincipalContext[] | PrincipalContext | null { + if (i === undefined) { + return this.getRuleContexts(PrincipalContext); + } -export class StandaloneRowPatternContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, PrincipalContext); } - public rowPattern(): RowPatternContext { - return this.getRuleContext(0, RowPatternContext)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public SEMICOLON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SEMICOLON, 0); + public KW_ADMIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ADMIN, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_standaloneRowPattern; + public KW_OPTION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OPTION, 0); + } + public KW_GRANTED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRANTED, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); + } + public grantor(): GrantorContext | null { + return this.getRuleContext(0, GrantorContext); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public catalogRef(): CatalogRefContext | null { + return this.getRuleContext(0, CatalogRefContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStandaloneRowPattern) { - listener.enterStandaloneRowPattern(this); + if(listener.enterGrantRoles) { + listener.enterGrantRoles(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStandaloneRowPattern) { - listener.exitStandaloneRowPattern(this); + if(listener.exitGrantRoles) { + listener.exitGrantRoles(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStandaloneRowPattern) { - return visitor.visitStandaloneRowPattern(this); + if (visitor.visitGrantRoles) { + return visitor.visitGrantRoles(this); } else { return visitor.visitChildren(this); } } } - - -export class StatementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_statement; - } - public override copyFrom(ctx: StatementContext): void { - super.copyFrom(ctx); - } -} -export class ExplainContext extends StatementContext { +export class CallContext extends StatementContext { public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_EXPLAIN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_EXPLAIN, 0)!; - } - public statement(): StatementContext { - return this.getRuleContext(0, StatementContext)!; - } - public KW_ANALYZE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ANALYZE, 0); + public KW_CALL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CALL, 0)!; } - public KW_VERBOSE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_VERBOSE, 0); + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; } - public explainOption(): ExplainOptionContext[]; - public explainOption(i: number): ExplainOptionContext | null; - public explainOption(i?: number): ExplainOptionContext[] | ExplainOptionContext | null { + public callArgument(): CallArgumentContext[]; + public callArgument(i: number): CallArgumentContext | null; + public callArgument(i?: number): CallArgumentContext[] | CallArgumentContext | null { if (i === undefined) { - return this.getRuleContexts(ExplainOptionContext); + return this.getRuleContexts(CallArgumentContext); } - return this.getRuleContext(i, ExplainOptionContext); + return this.getRuleContext(i, CallArgumentContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExplain) { - listener.enterExplain(this); + if(listener.enterCall) { + listener.enterCall(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExplain) { - listener.exitExplain(this); + if(listener.exitCall) { + listener.exitCall(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExplain) { - return visitor.visitExplain(this); + if (visitor.visitCall) { + return visitor.visitCall(this); } else { return visitor.visitChildren(this); } } } -export class PrepareContext extends StatementContext { +export class RefreshMaterializedViewContext extends StatementContext { public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_PREPARE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PREPARE, 0)!; + public KW_REFRESH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_REFRESH, 0)!; } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_MATERIALIZED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + public KW_VIEW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; } - public statement(): StatementContext { - return this.getRuleContext(0, StatementContext)!; + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPrepare) { - listener.enterPrepare(this); + if(listener.enterRefreshMaterializedView) { + listener.enterRefreshMaterializedView(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPrepare) { - listener.exitPrepare(this); + if(listener.exitRefreshMaterializedView) { + listener.exitRefreshMaterializedView(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPrepare) { - return visitor.visitPrepare(this); + if (visitor.visitRefreshMaterializedView) { + return visitor.visitRefreshMaterializedView(this); } else { return visitor.visitChildren(this); } } } -export class DropMaterializedViewContext extends StatementContext { +export class ShowCreateMaterializedViewContext extends StatementContext { public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; } public KW_MATERIALIZED(): antlr.TerminalNode { return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; @@ -13294,141 +22036,183 @@ export class DropMaterializedViewContext extends StatementContext { public KW_VIEW(): antlr.TerminalNode { return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; - } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); - } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public viewRef(): ViewRefContext { + return this.getRuleContext(0, ViewRefContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropMaterializedView) { - listener.enterDropMaterializedView(this); + if(listener.enterShowCreateMaterializedView) { + listener.enterShowCreateMaterializedView(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropMaterializedView) { - listener.exitDropMaterializedView(this); + if(listener.exitShowCreateMaterializedView) { + listener.exitShowCreateMaterializedView(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropMaterializedView) { - return visitor.visitDropMaterializedView(this); + if (visitor.visitShowCreateMaterializedView) { + return visitor.visitShowCreateMaterializedView(this); } else { return visitor.visitChildren(this); } } } -export class SetMaterializedViewPropertiesContext extends StatementContext { +export class CreateCatalogContext extends StatementContext { + public _catalog?: CatalogNameCreateContext; + public _connectorName?: IdentifierContext; public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public KW_CREATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + public KW_CATALOG(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CATALOG, 0)!; } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public KW_USING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_USING, 0)!; } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public catalogNameCreate(): CatalogNameCreateContext { + return this.getRuleContext(0, CatalogNameCreateContext)!; } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_PROPERTIES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0)!; + public KW_IF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IF, 0); } - public propertyAssignments(): PropertyAssignmentsContext { - return this.getRuleContext(0, PropertyAssignmentsContext)!; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_EXISTS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + } + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_AUTHORIZATION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); + } + public principal(): PrincipalContext | null { + return this.getRuleContext(0, PrincipalContext); + } + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); + } + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetMaterializedViewProperties) { - listener.enterSetMaterializedViewProperties(this); + if(listener.enterCreateCatalog) { + listener.enterCreateCatalog(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetMaterializedViewProperties) { - listener.exitSetMaterializedViewProperties(this); + if(listener.exitCreateCatalog) { + listener.exitCreateCatalog(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetMaterializedViewProperties) { - return visitor.visitSetMaterializedViewProperties(this); + if (visitor.visitCreateCatalog) { + return visitor.visitCreateCatalog(this); } else { return visitor.visitChildren(this); } } } -export class UseContext extends StatementContext { +export class ShowFunctionsContext extends StatementContext { + public _pattern?: StringContext; + public _escape?: StringContext; public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_USE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_USE, 0)!; + public KW_SHOW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + } + public KW_FUNCTIONS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FUNCTIONS, 0)!; + } + public schemaRef(): SchemaRefContext | null { + return this.getRuleContext(0, SchemaRefContext); + } + public KW_LIKE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIKE, 0); + } + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public KW_IN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IN, 0); + } + public string_(): StringContext[]; + public string_(i: number): StringContext | null; + public string_(i?: number): StringContext[] | StringContext | null { + if (i === undefined) { + return this.getRuleContexts(StringContext); + } + + return this.getRuleContext(i, StringContext); } - public schemaName(): SchemaNameContext { - return this.getRuleContext(0, SchemaNameContext)!; + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUse) { - listener.enterUse(this); + if(listener.enterShowFunctions) { + listener.enterShowFunctions(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUse) { - listener.exitUse(this); + if(listener.exitShowFunctions) { + listener.exitShowFunctions(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUse) { - return visitor.visitUse(this); + if (visitor.visitShowFunctions) { + return visitor.visitShowFunctions(this); } else { return visitor.visitChildren(this); } } } -export class DeallocateContext extends StatementContext { +export class DescribeOutputContext extends StatementContext { public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DEALLOCATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DEALLOCATE, 0)!; + public KW_DESCRIBE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0)!; } - public KW_PREPARE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PREPARE, 0)!; + public KW_OUTPUT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_OUTPUT, 0)!; } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDeallocate) { - listener.enterDeallocate(this); + if(listener.enterDescribeOutput) { + listener.enterDescribeOutput(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDeallocate) { - listener.exitDeallocate(this); + if(listener.exitDescribeOutput) { + listener.exitDescribeOutput(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDeallocate) { - return visitor.visitDeallocate(this); + if (visitor.visitDescribeOutput) { + return visitor.visitDescribeOutput(this); } else { return visitor.visitChildren(this); } } } -export class RenameTableContext extends StatementContext { - public _from_?: TableNameContext; - public _to?: TableNameCreateContext; +export class SetTablePropertiesContext extends StatementContext { + public _tableName?: TableRefContext; public constructor(ctx: StatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); @@ -13439,3098 +22223,2933 @@ export class RenameTableContext extends StatementContext { public KW_TABLE(): antlr.TerminalNode { return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; } - public tableNameCreate(): TableNameCreateContext { - return this.getRuleContext(0, TableNameCreateContext)!; + public KW_PROPERTIES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0)!; } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public propertyAssignments(): PropertyAssignmentsContext { + return this.getRuleContext(0, PropertyAssignmentsContext)!; } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRenameTable) { - listener.enterRenameTable(this); + if(listener.enterSetTableProperties) { + listener.enterSetTableProperties(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRenameTable) { - listener.exitRenameTable(this); + if(listener.exitSetTableProperties) { + listener.exitSetTableProperties(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRenameTable) { - return visitor.visitRenameTable(this); + if (visitor.visitSetTableProperties) { + return visitor.visitSetTableProperties(this); } else { return visitor.visitChildren(this); } } } -export class CommitContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class RootQueryContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_COMMIT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMIT, 0)!; + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } - public KW_WORK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WORK, 0); + public withFunction(): WithFunctionContext | null { + return this.getRuleContext(0, WithFunctionContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rootQuery; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCommit) { - listener.enterCommit(this); + if(listener.enterRootQuery) { + listener.enterRootQuery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCommit) { - listener.exitCommit(this); + if(listener.exitRootQuery) { + listener.exitRootQuery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCommit) { - return visitor.visitCommit(this); + if (visitor.visitRootQuery) { + return visitor.visitRootQuery(this); } else { return visitor.visitChildren(this); } } } -export class CreateRoleContext extends StatementContext { - public _name?: IdentifierContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_ROLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; - } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); - } - public KW_ADMIN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ADMIN, 0); + + +export class WithFunctionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public grantor(): GrantorContext | null { - return this.getRuleContext(0, GrantorContext); + public KW_WITH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WITH, 0)!; } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public functionSpecification(): FunctionSpecificationContext[]; + public functionSpecification(i: number): FunctionSpecificationContext | null; + public functionSpecification(i?: number): FunctionSpecificationContext[] | FunctionSpecificationContext | null { + if (i === undefined) { + return this.getRuleContexts(FunctionSpecificationContext); + } + + return this.getRuleContext(i, FunctionSpecificationContext); } - public catalogName(): CatalogNameContext | null { - return this.getRuleContext(0, CatalogNameContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_withFunction; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateRole) { - listener.enterCreateRole(this); + if(listener.enterWithFunction) { + listener.enterWithFunction(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateRole) { - listener.exitCreateRole(this); + if(listener.exitWithFunction) { + listener.exitWithFunction(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateRole) { - return visitor.visitCreateRole(this); + if (visitor.visitWithFunction) { + return visitor.visitWithFunction(this); } else { return visitor.visitChildren(this); } } } -export class DropColumnContext extends StatementContext { - public _column?: ColumnNameContext; - public constructor(ctx: StatementContext) { + + +export class QueryContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_query; + } + public override copyFrom(ctx: QueryContext): void { + super.copyFrom(ctx); + } +} +export class QueryStatementContext extends QueryContext { + public constructor(ctx: QueryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public queryNoWith(): QueryNoWithContext { + return this.getRuleContext(0, QueryNoWithContext)!; } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public with(): WithContext | null { + return this.getRuleContext(0, WithContext); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterQueryStatement) { + listener.enterQueryStatement(this); + } } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitQueryStatement) { + listener.exitQueryStatement(this); + } } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitQueryStatement) { + return visitor.visitQueryStatement(this); + } else { + return visitor.visitChildren(this); + } } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; +} + + +export class WithContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IF(): antlr.TerminalNode[]; - public KW_IF(i: number): antlr.TerminalNode | null; - public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_IF); - } else { - return this.getToken(TrinoSqlParser.KW_IF, i); - } + public KW_WITH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WITH, 0)!; } - public KW_EXISTS(): antlr.TerminalNode[]; - public KW_EXISTS(i: number): antlr.TerminalNode | null; - public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_EXISTS); - } else { - return this.getToken(TrinoSqlParser.KW_EXISTS, i); - } + public namedQuery(): NamedQueryContext[]; + public namedQuery(i: number): NamedQueryContext | null; + public namedQuery(i?: number): NamedQueryContext[] | NamedQueryContext | null { + if (i === undefined) { + return this.getRuleContexts(NamedQueryContext); + } + + return this.getRuleContext(i, NamedQueryContext); + } + public KW_RECURSIVE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RECURSIVE, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_with; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropColumn) { - listener.enterDropColumn(this); + if(listener.enterWith) { + listener.enterWith(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropColumn) { - listener.exitDropColumn(this); + if(listener.exitWith) { + listener.exitWith(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropColumn) { - return visitor.visitDropColumn(this); + if (visitor.visitWith) { + return visitor.visitWith(this); } else { return visitor.visitChildren(this); } } } -export class DropViewContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; - } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + + +export class TableElementContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public columnDefinition(): ColumnDefinitionContext | null { + return this.getRuleContext(0, ColumnDefinitionContext); } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public likeClause(): LikeClauseContext | null { + return this.getRuleContext(0, LikeClauseContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_tableElement; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropView) { - listener.enterDropView(this); + if(listener.enterTableElement) { + listener.enterTableElement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropView) { - listener.exitDropView(this); + if(listener.exitTableElement) { + listener.exitTableElement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropView) { - return visitor.visitDropView(this); + if (visitor.visitTableElement) { + return visitor.visitTableElement(this); } else { return visitor.visitChildren(this); } } } -export class ShowTablesContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ColumnDefinitionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public columnNameCreate(): ColumnNameCreateContext { + return this.getRuleContext(0, ColumnNameCreateContext)!; } - public KW_TABLES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLES, 0)!; + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public schemaName(): SchemaNameContext | null { - return this.getRuleContext(0, SchemaNameContext); + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); + public KW_COMMENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { - if (i === undefined) { - return this.getRuleContexts(StringContext); - } - - return this.getRuleContext(i, StringContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public properties(): PropertiesContext | null { + return this.getRuleContext(0, PropertiesContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_columnDefinition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowTables) { - listener.enterShowTables(this); + if(listener.enterColumnDefinition) { + listener.enterColumnDefinition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowTables) { - listener.exitShowTables(this); + if(listener.exitColumnDefinition) { + listener.exitColumnDefinition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowTables) { - return visitor.visitShowTables(this); + if (visitor.visitColumnDefinition) { + return visitor.visitColumnDefinition(this); } else { return visitor.visitChildren(this); } } } -export class SetViewAuthorizationContext extends StatementContext { - public _from_?: ViewNameContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class LikeClauseContext extends antlr.ParserRuleContext { + public _optionType?: Token | null; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public KW_LIKE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LIKE, 0)!; } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public KW_PROPERTIES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0); } - public KW_AUTHORIZATION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + public KW_INCLUDING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INCLUDING, 0); } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; + public KW_EXCLUDING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXCLUDING, 0); } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_likeClause; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetViewAuthorization) { - listener.enterSetViewAuthorization(this); + if(listener.enterLikeClause) { + listener.enterLikeClause(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetViewAuthorization) { - listener.exitSetViewAuthorization(this); + if(listener.exitLikeClause) { + listener.exitLikeClause(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetViewAuthorization) { - return visitor.visitSetViewAuthorization(this); + if (visitor.visitLikeClause) { + return visitor.visitLikeClause(this); } else { return visitor.visitChildren(this); } } } -export class ShowTableCommentContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; + + +export class PropertiesContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public propertyAssignments(): PropertyAssignmentsContext { + return this.getRuleContext(0, PropertyAssignmentsContext)!; } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_properties; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowTableComment) { - listener.enterShowTableComment(this); + if(listener.enterProperties) { + listener.enterProperties(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowTableComment) { - listener.exitShowTableComment(this); + if(listener.exitProperties) { + listener.exitProperties(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowTableComment) { - return visitor.visitShowTableComment(this); + if (visitor.visitProperties) { + return visitor.visitProperties(this); } else { return visitor.visitChildren(this); } } } -export class ShowCatalogsContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_CATALOGS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CATALOGS, 0)!; - } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); + + +export class PropertyAssignmentsContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { + public property(): PropertyContext[]; + public property(i: number): PropertyContext | null; + public property(i?: number): PropertyContext[] | PropertyContext | null { if (i === undefined) { - return this.getRuleContexts(StringContext); + return this.getRuleContexts(PropertyContext); } - return this.getRuleContext(i, StringContext); + return this.getRuleContext(i, PropertyContext); } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_propertyAssignments; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowCatalogs) { - listener.enterShowCatalogs(this); + if(listener.enterPropertyAssignments) { + listener.enterPropertyAssignments(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowCatalogs) { - listener.exitShowCatalogs(this); + if(listener.exitPropertyAssignments) { + listener.exitPropertyAssignments(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowCatalogs) { - return visitor.visitShowCatalogs(this); + if (visitor.visitPropertyAssignments) { + return visitor.visitPropertyAssignments(this); } else { return visitor.visitChildren(this); } } } -export class ShowRolesContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class PropertyContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_ROLES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLES, 0)!; + public EQ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EQ, 0)!; } - public KW_CURRENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CURRENT, 0); + public propertyValue(): PropertyValueContext { + return this.getRuleContext(0, PropertyValueContext)!; } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_property; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterProperty) { + listener.enterProperty(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitProperty) { + listener.exitProperty(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitProperty) { + return visitor.visitProperty(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class PropertyValueContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_propertyValue; + } + public override copyFrom(ctx: PropertyValueContext): void { + super.copyFrom(ctx); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); +} +export class DefaultPropertyValueContext extends PropertyValueContext { + public constructor(ctx: PropertyValueContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public KW_DEFAULT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DEFAULT, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowRoles) { - listener.enterShowRoles(this); + if(listener.enterDefaultPropertyValue) { + listener.enterDefaultPropertyValue(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowRoles) { - listener.exitShowRoles(this); + if(listener.exitDefaultPropertyValue) { + listener.exitDefaultPropertyValue(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowRoles) { - return visitor.visitShowRoles(this); + if (visitor.visitDefaultPropertyValue) { + return visitor.visitDefaultPropertyValue(this); } else { return visitor.visitChildren(this); } } } -export class MergeContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class NonDefaultPropertyValueContext extends PropertyValueContext { + public constructor(ctx: PropertyValueContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_MERGE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MERGE, 0)!; - } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INTO, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_USING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_USING, 0)!; - } - public relation(): RelationContext { - return this.getRuleContext(0, RelationContext)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; - } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext)!; } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); - } - public mergeCase(): MergeCaseContext[]; - public mergeCase(i: number): MergeCaseContext | null; - public mergeCase(i?: number): MergeCaseContext[] | MergeCaseContext | null { - if (i === undefined) { - return this.getRuleContexts(MergeCaseContext); - } - - return this.getRuleContext(i, MergeCaseContext); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AS, 0); - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMerge) { - listener.enterMerge(this); + if(listener.enterNonDefaultPropertyValue) { + listener.enterNonDefaultPropertyValue(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMerge) { - listener.exitMerge(this); + if(listener.exitNonDefaultPropertyValue) { + listener.exitNonDefaultPropertyValue(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMerge) { - return visitor.visitMerge(this); + if (visitor.visitNonDefaultPropertyValue) { + return visitor.visitNonDefaultPropertyValue(this); } else { return visitor.visitChildren(this); } } } -export class RenameColumnContext extends StatementContext { - public _from_?: ColumnNameContext; - public _to?: ColumnNameCreateContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class QueryNoWithContext extends antlr.ParserRuleContext { + public _offset?: RowCountContext; + public _limit?: LimitRowCountContext; + public _fetchFirst?: RowCountContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public queryTerm(): QueryTermContext { + return this.getRuleContext(0, QueryTermContext)!; } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); + } + + return this.getRuleContext(i, SortItemContext); } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + public KW_OFFSET(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OFFSET, 0); } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; + public rowCount(): RowCountContext[]; + public rowCount(i: number): RowCountContext | null; + public rowCount(i?: number): RowCountContext[] | RowCountContext | null { + if (i === undefined) { + return this.getRuleContexts(RowCountContext); + } + + return this.getRuleContext(i, RowCountContext); } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; + public KW_LIMIT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LIMIT, 0); } - public columnNameCreate(): ColumnNameCreateContext { - return this.getRuleContext(0, ColumnNameCreateContext)!; + public KW_FETCH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FETCH, 0); } - public KW_IF(): antlr.TerminalNode[]; - public KW_IF(i: number): antlr.TerminalNode | null; - public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public limitRowCount(): LimitRowCountContext | null { + return this.getRuleContext(0, LimitRowCountContext); + } + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FIRST, 0); + } + public KW_NEXT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NEXT, 0); + } + public KW_ROW(): antlr.TerminalNode[]; + public KW_ROW(i: number): antlr.TerminalNode | null; + public KW_ROW(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_IF); + return this.getTokens(TrinoSqlParser.KW_ROW); } else { - return this.getToken(TrinoSqlParser.KW_IF, i); + return this.getToken(TrinoSqlParser.KW_ROW, i); } } - public KW_EXISTS(): antlr.TerminalNode[]; - public KW_EXISTS(i: number): antlr.TerminalNode | null; - public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_ROWS(): antlr.TerminalNode[]; + public KW_ROWS(i: number): antlr.TerminalNode | null; + public KW_ROWS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_EXISTS); + return this.getTokens(TrinoSqlParser.KW_ROWS); } else { - return this.getToken(TrinoSqlParser.KW_EXISTS, i); + return this.getToken(TrinoSqlParser.KW_ROWS, i); } } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRenameColumn) { - listener.enterRenameColumn(this); - } - } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRenameColumn) { - listener.exitRenameColumn(this); - } - } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRenameColumn) { - return visitor.visitRenameColumn(this); - } else { - return visitor.visitChildren(this); - } - } -} -export class CommentColumnContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; - } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; - } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ONLY, 0); } - public KW_IS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IS, 0)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + public KW_TIES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TIES, 0); } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NULL, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_queryNoWith; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCommentColumn) { - listener.enterCommentColumn(this); + if(listener.enterQueryNoWith) { + listener.enterQueryNoWith(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCommentColumn) { - listener.exitCommentColumn(this); + if(listener.exitQueryNoWith) { + listener.exitQueryNoWith(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCommentColumn) { - return visitor.visitCommentColumn(this); + if (visitor.visitQueryNoWith) { + return visitor.visitQueryNoWith(this); } else { return visitor.visitChildren(this); } } } -export class RevokeRolesContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_REVOKE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_REVOKE, 0)!; - } - public roles(): RolesContext { - return this.getRuleContext(0, RolesContext)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; - } - public principal(): PrincipalContext[]; - public principal(i: number): PrincipalContext | null; - public principal(i?: number): PrincipalContext[] | PrincipalContext | null { - if (i === undefined) { - return this.getRuleContexts(PrincipalContext); - } - return this.getRuleContext(i, PrincipalContext); - } - public KW_ADMIN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ADMIN, 0); - } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OPTION, 0); - } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FOR, 0); - } - public KW_GRANTED(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GRANTED, 0); - } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BY, 0); - } - public grantor(): GrantorContext | null { - return this.getRuleContext(0, GrantorContext); + +export class LimitRowCountContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); } - public catalogName(): CatalogNameContext | null { - return this.getRuleContext(0, CatalogNameContext); + public rowCount(): RowCountContext | null { + return this.getRuleContext(0, RowCountContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_limitRowCount; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRevokeRoles) { - listener.enterRevokeRoles(this); + if(listener.enterLimitRowCount) { + listener.enterLimitRowCount(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRevokeRoles) { - listener.exitRevokeRoles(this); + if(listener.exitLimitRowCount) { + listener.exitLimitRowCount(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRevokeRoles) { - return visitor.visitRevokeRoles(this); + if (visitor.visitLimitRowCount) { + return visitor.visitLimitRowCount(this); } else { return visitor.visitChildren(this); } } } -export class ShowCreateTableContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + + +export class RowCountContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public QUESTION_MARK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rowCount; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowCreateTable) { - listener.enterShowCreateTable(this); + if(listener.enterRowCount) { + listener.enterRowCount(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowCreateTable) { - listener.exitShowCreateTable(this); + if(listener.exitRowCount) { + listener.exitRowCount(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowCreateTable) { - return visitor.visitShowCreateTable(this); + if (visitor.visitRowCount) { + return visitor.visitRowCount(this); } else { return visitor.visitChildren(this); } } } -export class ShowColumnsContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SHOW, 0); - } - public KW_COLUMNS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COLUMNS, 0); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); - } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); - } - public tableOrViewName(): TableOrViewNameContext | null { - return this.getRuleContext(0, TableOrViewNameContext); - } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); - } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { - if (i === undefined) { - return this.getRuleContexts(StringContext); - } - return this.getRuleContext(i, StringContext); + +export class QueryTermContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_queryTerm; } - public KW_DESCRIBE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0); + public override copyFrom(ctx: QueryTermContext): void { + super.copyFrom(ctx); } - public KW_DESC(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DESC, 0); +} +export class QueryTermDefaultContext extends QueryTermContext { + public constructor(ctx: QueryTermContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public queryPrimary(): QueryPrimaryContext { + return this.getRuleContext(0, QueryPrimaryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowColumns) { - listener.enterShowColumns(this); + if(listener.enterQueryTermDefault) { + listener.enterQueryTermDefault(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowColumns) { - listener.exitShowColumns(this); + if(listener.exitQueryTermDefault) { + listener.exitQueryTermDefault(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowColumns) { - return visitor.visitShowColumns(this); + if (visitor.visitQueryTermDefault) { + return visitor.visitQueryTermDefault(this); } else { return visitor.visitChildren(this); } } } -export class ShowRoleGrantsContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class SetOperationContext extends QueryTermContext { + public _left?: QueryTermContext; + public _operator?: Token | null; + public _right?: QueryTermContext; + public constructor(ctx: QueryTermContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_ROLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + public queryTerm(): QueryTermContext[]; + public queryTerm(i: number): QueryTermContext | null; + public queryTerm(i?: number): QueryTermContext[] | QueryTermContext | null { + if (i === undefined) { + return this.getRuleContexts(QueryTermContext); + } + + return this.getRuleContext(i, QueryTermContext); } - public KW_GRANTS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_GRANTS, 0)!; + public KW_INTERSECT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INTERSECT, 0); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public setQuantifier(): SetQuantifierContext | null { + return this.getRuleContext(0, SetQuantifierContext); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); + public KW_UNION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNION, 0); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public KW_EXCEPT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXCEPT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowRoleGrants) { - listener.enterShowRoleGrants(this); + if(listener.enterSetOperation) { + listener.enterSetOperation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowRoleGrants) { - listener.exitShowRoleGrants(this); + if(listener.exitSetOperation) { + listener.exitSetOperation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowRoleGrants) { - return visitor.visitShowRoleGrants(this); + if (visitor.visitSetOperation) { + return visitor.visitSetOperation(this); } else { return visitor.visitChildren(this); } } } -export class AddColumnContext extends StatementContext { - public _column?: ColumnDefinitionContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_ADD(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ADD, 0)!; - } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + + +export class QueryPrimaryContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public columnDefinition(): ColumnDefinitionContext { - return this.getRuleContext(0, ColumnDefinitionContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_queryPrimary; } - public KW_IF(): antlr.TerminalNode[]; - public KW_IF(i: number): antlr.TerminalNode | null; - public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_IF); - } else { - return this.getToken(TrinoSqlParser.KW_IF, i); - } + public override copyFrom(ctx: QueryPrimaryContext): void { + super.copyFrom(ctx); } - public KW_EXISTS(): antlr.TerminalNode[]; - public KW_EXISTS(i: number): antlr.TerminalNode | null; - public KW_EXISTS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_EXISTS); - } else { - return this.getToken(TrinoSqlParser.KW_EXISTS, i); - } +} +export class SubqueryContext extends QueryPrimaryContext { + public constructor(ctx: QueryPrimaryContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public queryNoWith(): QueryNoWithContext { + return this.getRuleContext(0, QueryNoWithContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterAddColumn) { - listener.enterAddColumn(this); + if(listener.enterSubquery) { + listener.enterSubquery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitAddColumn) { - listener.exitAddColumn(this); + if(listener.exitSubquery) { + listener.exitSubquery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitAddColumn) { - return visitor.visitAddColumn(this); + if (visitor.visitSubquery) { + return visitor.visitSubquery(this); } else { return visitor.visitChildren(this); } } } -export class DenyContext extends StatementContext { - public _grantee?: PrincipalContext; - public constructor(ctx: StatementContext) { +export class QueryPrimaryDefaultContext extends QueryPrimaryContext { + public constructor(ctx: QueryPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DENY(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DENY, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; - } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; - } - public privilege(): PrivilegeContext[]; - public privilege(i: number): PrivilegeContext | null; - public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { - if (i === undefined) { - return this.getRuleContexts(PrivilegeContext); - } - - return this.getRuleContext(i, PrivilegeContext); + public querySpecification(): QuerySpecificationContext { + return this.getRuleContext(0, QuerySpecificationContext)!; } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterQueryPrimaryDefault) { + listener.enterQueryPrimaryDefault(this); + } } - public KW_PRIVILEGES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitQueryPrimaryDefault) { + listener.exitQueryPrimaryDefault(this); + } } - public schemaName(): SchemaNameContext | null { - return this.getRuleContext(0, SchemaNameContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitQueryPrimaryDefault) { + return visitor.visitQueryPrimaryDefault(this); + } else { + return visitor.visitChildren(this); + } } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); +} +export class TableContext extends QueryPrimaryContext { + public constructor(ctx: QueryPrimaryContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TABLE, 0); + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDeny) { - listener.enterDeny(this); + if(listener.enterTable) { + listener.enterTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDeny) { - listener.exitDeny(this); + if(listener.exitTable) { + listener.exitTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDeny) { - return visitor.visitDeny(this); + if (visitor.visitTable) { + return visitor.visitTable(this); } else { return visitor.visitChildren(this); } } } -export class ResetSessionContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class InlineTableContext extends QueryPrimaryContext { + public constructor(ctx: QueryPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_RESET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RESET, 0)!; - } - public KW_SESSION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + public KW_VALUES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VALUES, 0)!; } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext)!; + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterResetSession) { - listener.enterResetSession(this); + if(listener.enterInlineTable) { + listener.enterInlineTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitResetSession) { - listener.exitResetSession(this); + if(listener.exitInlineTable) { + listener.exitInlineTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitResetSession) { - return visitor.visitResetSession(this); + if (visitor.visitInlineTable) { + return visitor.visitInlineTable(this); } else { return visitor.visitChildren(this); } } } -export class InsertIntoContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class SortItemContext extends antlr.ParserRuleContext { + public _ordering?: Token | null; + public _nullOrdering?: Token | null; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_INSERT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INSERT, 0)!; + public columnRef(): ColumnRefContext | null { + return this.getRuleContext(0, ColumnRefContext); } - public KW_INTO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INTO, 0)!; + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_NULLS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULLS, 0); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public KW_ASC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ASC, 0); } - public columnList(): ColumnListContext | null { - return this.getRuleContext(0, ColumnListContext); + public KW_DESC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DESC, 0); + } + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FIRST, 0); + } + public KW_LAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LAST, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_sortItem; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterInsertInto) { - listener.enterInsertInto(this); + if(listener.enterSortItem) { + listener.enterSortItem(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitInsertInto) { - listener.exitInsertInto(this); + if(listener.exitSortItem) { + listener.exitSortItem(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitInsertInto) { - return visitor.visitInsertInto(this); + if (visitor.visitSortItem) { + return visitor.visitSortItem(this); } else { return visitor.visitChildren(this); } } } -export class ShowSessionContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class QuerySpecificationContext extends antlr.ParserRuleContext { + public _where?: BooleanExpressionContext; + public _having?: BooleanExpressionContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public KW_SELECT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SELECT, 0)!; } - public KW_SESSION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + public selectItem(): SelectItemContext[]; + public selectItem(i: number): SelectItemContext | null; + public selectItem(i?: number): SelectItemContext[] | SelectItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SelectItemContext); + } + + return this.getRuleContext(i, SelectItemContext); } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); + public setQuantifier(): SetQuantifierContext | null { + return this.getRuleContext(0, SetQuantifierContext); } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); + } + public relation(): RelationContext[]; + public relation(i: number): RelationContext | null; + public relation(i?: number): RelationContext[] | RelationContext | null { if (i === undefined) { - return this.getRuleContexts(StringContext); + return this.getRuleContexts(RelationContext); } - return this.getRuleContext(i, StringContext); + return this.getRuleContext(i, RelationContext); } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public KW_WHERE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHERE, 0); + } + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GROUP, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); + } + public groupBy(): GroupByContext | null { + return this.getRuleContext(0, GroupByContext); + } + public KW_HAVING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_HAVING, 0); + } + public KW_WINDOW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WINDOW, 0); + } + public windowDefinition(): WindowDefinitionContext[]; + public windowDefinition(i: number): WindowDefinitionContext | null; + public windowDefinition(i?: number): WindowDefinitionContext[] | WindowDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(WindowDefinitionContext); + } + + return this.getRuleContext(i, WindowDefinitionContext); + } + public booleanExpression(): BooleanExpressionContext[]; + public booleanExpression(i: number): BooleanExpressionContext | null; + public booleanExpression(i?: number): BooleanExpressionContext[] | BooleanExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(BooleanExpressionContext); + } + + return this.getRuleContext(i, BooleanExpressionContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_querySpecification; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowSession) { - listener.enterShowSession(this); + if(listener.enterQuerySpecification) { + listener.enterQuerySpecification(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowSession) { - listener.exitShowSession(this); + if(listener.exitQuerySpecification) { + listener.exitQuerySpecification(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowSession) { - return visitor.visitShowSession(this); + if (visitor.visitQuerySpecification) { + return visitor.visitQuerySpecification(this); } else { return visitor.visitChildren(this); } } } -export class CreateSchemaContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; - } - public schemaNameCreate(): SchemaNameCreateContext { - return this.getRuleContext(0, SchemaNameCreateContext)!; - } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); - } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); - } - public KW_AUTHORIZATION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); + + +export class GroupByContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public principal(): PrincipalContext | null { - return this.getRuleContext(0, PrincipalContext); + public groupingElement(): GroupingElementContext[]; + public groupingElement(i: number): GroupingElementContext | null; + public groupingElement(i?: number): GroupingElementContext[] | GroupingElementContext | null { + if (i === undefined) { + return this.getRuleContexts(GroupingElementContext); + } + + return this.getRuleContext(i, GroupingElementContext); } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public setQuantifier(): SetQuantifierContext | null { + return this.getRuleContext(0, SetQuantifierContext); } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_groupBy; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateSchema) { - listener.enterCreateSchema(this); + if(listener.enterGroupBy) { + listener.enterGroupBy(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateSchema) { - listener.exitCreateSchema(this); + if(listener.exitGroupBy) { + listener.exitGroupBy(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateSchema) { - return visitor.visitCreateSchema(this); + if (visitor.visitGroupBy) { + return visitor.visitGroupBy(this); } else { return visitor.visitChildren(this); } } } -export class ExecuteContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); + + +export class GroupingElementContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_groupingElement; + } + public override copyFrom(ctx: GroupingElementContext): void { super.copyFrom(ctx); } - public KW_EXECUTE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_EXECUTE, 0)!; +} +export class MultipleGroupingSetsContext extends GroupingElementContext { + public constructor(ctx: GroupingElementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_GROUPING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_GROUPING, 0)!; } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_USING, 0); + public KW_SETS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SETS, 0)!; } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + public groupingSet(): GroupingSetContext[]; + public groupingSet(i: number): GroupingSetContext | null; + public groupingSet(i?: number): GroupingSetContext[] | GroupingSetContext | null { if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + return this.getRuleContexts(GroupingSetContext); } - return this.getRuleContext(i, ExpressionContext); + return this.getRuleContext(i, GroupingSetContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExecute) { - listener.enterExecute(this); + if(listener.enterMultipleGroupingSets) { + listener.enterMultipleGroupingSets(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExecute) { - listener.exitExecute(this); + if(listener.exitMultipleGroupingSets) { + listener.exitMultipleGroupingSets(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExecute) { - return visitor.visitExecute(this); + if (visitor.visitMultipleGroupingSets) { + return visitor.visitMultipleGroupingSets(this); } else { return visitor.visitChildren(this); } } } -export class RenameSchemaContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class SingleGroupingSetContext extends GroupingElementContext { + public constructor(ctx: GroupingElementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; - } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; - } - public schemaName(): SchemaNameContext { - return this.getRuleContext(0, SchemaNameContext)!; - } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; - } - public schemaNameCreate(): SchemaNameCreateContext { - return this.getRuleContext(0, SchemaNameCreateContext)!; + public groupingSet(): GroupingSetContext { + return this.getRuleContext(0, GroupingSetContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRenameSchema) { - listener.enterRenameSchema(this); + if(listener.enterSingleGroupingSet) { + listener.enterSingleGroupingSet(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRenameSchema) { - listener.exitRenameSchema(this); + if(listener.exitSingleGroupingSet) { + listener.exitSingleGroupingSet(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRenameSchema) { - return visitor.visitRenameSchema(this); + if (visitor.visitSingleGroupingSet) { + return visitor.visitSingleGroupingSet(this); } else { return visitor.visitChildren(this); } } } -export class DropRoleContext extends StatementContext { - public _name?: IdentifierContext; - public constructor(ctx: StatementContext) { +export class CubeContext extends GroupingElementContext { + public constructor(ctx: GroupingElementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; - } - public KW_ROLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; + public KW_CUBE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CUBE, 0)!; } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public groupingSet(): GroupingSetContext[]; + public groupingSet(i: number): GroupingSetContext | null; + public groupingSet(i?: number): GroupingSetContext[] | GroupingSetContext | null { + if (i === undefined) { + return this.getRuleContexts(GroupingSetContext); + } + + return this.getRuleContext(i, GroupingSetContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropRole) { - listener.enterDropRole(this); + if(listener.enterCube) { + listener.enterCube(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropRole) { - listener.exitDropRole(this); + if(listener.exitCube) { + listener.exitCube(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropRole) { - return visitor.visitDropRole(this); + if (visitor.visitCube) { + return visitor.visitCube(this); } else { return visitor.visitChildren(this); } } } -export class AnalyzeContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class RollupContext extends GroupingElementContext { + public constructor(ctx: GroupingElementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ANALYZE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ANALYZE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public KW_ROLLUP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROLLUP, 0)!; } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public groupingSet(): GroupingSetContext[]; + public groupingSet(i: number): GroupingSetContext | null; + public groupingSet(i?: number): GroupingSetContext[] | GroupingSetContext | null { + if (i === undefined) { + return this.getRuleContexts(GroupingSetContext); + } + + return this.getRuleContext(i, GroupingSetContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterAnalyze) { - listener.enterAnalyze(this); + if(listener.enterRollup) { + listener.enterRollup(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitAnalyze) { - listener.exitAnalyze(this); + if(listener.exitRollup) { + listener.exitRollup(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitAnalyze) { - return visitor.visitAnalyze(this); + if (visitor.visitRollup) { + return visitor.visitRollup(this); } else { return visitor.visitChildren(this); } } } -export class SetRoleContext extends StatementContext { - public _role?: IdentifierContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; - } - public KW_ROLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLE, 0)!; - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); - } - public KW_NONE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NONE, 0); - } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + + +export class GroupingSetContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public groupingTerm(): GroupingTermContext[]; + public groupingTerm(i: number): GroupingTermContext | null; + public groupingTerm(i?: number): GroupingTermContext[] | GroupingTermContext | null { + if (i === undefined) { + return this.getRuleContexts(GroupingTermContext); + } + + return this.getRuleContext(i, GroupingTermContext); } - public catalogName(): CatalogNameContext | null { - return this.getRuleContext(0, CatalogNameContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_groupingSet; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetRole) { - listener.enterSetRole(this); + if(listener.enterGroupingSet) { + listener.enterGroupingSet(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetRole) { - listener.exitSetRole(this); + if(listener.exitGroupingSet) { + listener.exitGroupingSet(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetRole) { - return visitor.visitSetRole(this); + if (visitor.visitGroupingSet) { + return visitor.visitGroupingSet(this); } else { return visitor.visitChildren(this); } } } -export class ShowGrantsContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_GRANTS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_GRANTS, 0)!; + + +export class GroupingTermContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ON, 0); + public columnRef(): ColumnRefContext | null { + return this.getRuleContext(0, ColumnRefContext); } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TABLE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_groupingTerm; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowGrants) { - listener.enterShowGrants(this); + if(listener.enterGroupingTerm) { + listener.enterGroupingTerm(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowGrants) { - listener.exitShowGrants(this); + if(listener.exitGroupingTerm) { + listener.exitGroupingTerm(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowGrants) { - return visitor.visitShowGrants(this); + if (visitor.visitGroupingTerm) { + return visitor.visitGroupingTerm(this); } else { return visitor.visitChildren(this); } } } -export class DropSchemaContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; - } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; - } - public schemaName(): SchemaNameContext { - return this.getRuleContext(0, SchemaNameContext)!; + + +export class WindowDefinitionContext extends antlr.ParserRuleContext { + public _name?: IdentifierContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public windowSpecification(): WindowSpecificationContext { + return this.getRuleContext(0, WindowSpecificationContext)!; } - public KW_CASCADE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CASCADE, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_RESTRICT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RESTRICT, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_windowDefinition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropSchema) { - listener.enterDropSchema(this); + if(listener.enterWindowDefinition) { + listener.enterWindowDefinition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropSchema) { - listener.exitDropSchema(this); + if(listener.exitWindowDefinition) { + listener.exitWindowDefinition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropSchema) { - return visitor.visitDropSchema(this); + if (visitor.visitWindowDefinition) { + return visitor.visitWindowDefinition(this); } else { return visitor.visitChildren(this); } } } -export class SetTableAuthorizationContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class WindowSpecificationContext extends antlr.ParserRuleContext { + public _existingWindowName?: IdentifierContext; + public _expression?: ExpressionContext; + public _partition: ExpressionContext[] = []; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PARTITION, 0); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public KW_BY(): antlr.TerminalNode[]; + public KW_BY(i: number): antlr.TerminalNode | null; + public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_BY); + } else { + return this.getToken(TrinoSqlParser.KW_BY, i); + } } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); + } + + return this.getRuleContext(i, SortItemContext); } - public KW_AUTHORIZATION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + public windowFrame(): WindowFrameContext | null { + return this.getRuleContext(0, WindowFrameContext); } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_windowSpecification; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetTableAuthorization) { - listener.enterSetTableAuthorization(this); + if(listener.enterWindowSpecification) { + listener.enterWindowSpecification(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetTableAuthorization) { - listener.exitSetTableAuthorization(this); + if(listener.exitWindowSpecification) { + listener.exitWindowSpecification(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetTableAuthorization) { - return visitor.visitSetTableAuthorization(this); + if (visitor.visitWindowSpecification) { + return visitor.visitWindowSpecification(this); } else { return visitor.visitChildren(this); } } } -export class ShowCreateViewContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class NamedQueryContext extends antlr.ParserRuleContext { + public _name?: IdentifierContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_namedQuery; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowCreateView) { - listener.enterShowCreateView(this); + if(listener.enterNamedQuery) { + listener.enterNamedQuery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowCreateView) { - listener.exitShowCreateView(this); + if(listener.exitNamedQuery) { + listener.exitNamedQuery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowCreateView) { - return visitor.visitShowCreateView(this); + if (visitor.visitNamedQuery) { + return visitor.visitNamedQuery(this); } else { return visitor.visitChildren(this); } } } -export class ShowColumnCommentContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + + +export class SetQuantifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; + public KW_DISTINCT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DISTINCT, 0); } - public KW_COLUMN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COLUMN, 0)!; + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); } - public columnName(): ColumnNameContext { - return this.getRuleContext(0, ColumnNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_setQuantifier; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowColumnComment) { - listener.enterShowColumnComment(this); + if(listener.enterSetQuantifier) { + listener.enterSetQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowColumnComment) { - listener.exitShowColumnComment(this); + if(listener.exitSetQuantifier) { + listener.exitSetQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowColumnComment) { - return visitor.visitShowColumnComment(this); + if (visitor.visitSetQuantifier) { + return visitor.visitSetQuantifier(this); } else { return visitor.visitChildren(this); } } } -export class CreateTableContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; - } - public tableNameCreate(): TableNameCreateContext { - return this.getRuleContext(0, TableNameCreateContext)!; - } - public tableElement(): TableElementContext[]; - public tableElement(i: number): TableElementContext | null; - public tableElement(i?: number): TableElementContext[] | TableElementContext | null { - if (i === undefined) { - return this.getRuleContexts(TableElementContext); - } - return this.getRuleContext(i, TableElementContext); + +export class SelectItemContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_selectItem; } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public override copyFrom(ctx: SelectItemContext): void { + super.copyFrom(ctx); } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); +} +export class SelectAllContext extends SelectItemContext { + public constructor(ctx: SelectItemContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + public primaryExpression(): PrimaryExpressionContext | null { + return this.getRuleContext(0, PrimaryExpressionContext); } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + public ASTERISK(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.ASTERISK, 0)!; } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateTable) { - listener.enterCreateTable(this); + if(listener.enterSelectAll) { + listener.enterSelectAll(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateTable) { - listener.exitCreateTable(this); + if(listener.exitSelectAll) { + listener.exitSelectAll(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateTable) { - return visitor.visitCreateTable(this); + if (visitor.visitSelectAll) { + return visitor.visitSelectAll(this); } else { return visitor.visitChildren(this); } } } -export class StartTransactionContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class SelectSingleContext extends SelectItemContext { + public constructor(ctx: SelectItemContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_START(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_START, 0)!; + public columnRef(): ColumnRefContext | null { + return this.getRuleContext(0, ColumnRefContext); } - public KW_TRANSACTION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TRANSACTION, 0)!; + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public transactionMode(): TransactionModeContext[]; - public transactionMode(i: number): TransactionModeContext | null; - public transactionMode(i?: number): TransactionModeContext[] | TransactionModeContext | null { - if (i === undefined) { - return this.getRuleContexts(TransactionModeContext); - } - - return this.getRuleContext(i, TransactionModeContext); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStartTransaction) { - listener.enterStartTransaction(this); + if(listener.enterSelectSingle) { + listener.enterSelectSingle(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStartTransaction) { - listener.exitStartTransaction(this); + if(listener.exitSelectSingle) { + listener.exitSelectSingle(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStartTransaction) { - return visitor.visitStartTransaction(this); + if (visitor.visitSelectSingle) { + return visitor.visitSelectSingle(this); } else { return visitor.visitChildren(this); } } } -export class CreateTableAsSelectContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; - } - public tableNameCreate(): TableNameCreateContext { - return this.getRuleContext(0, TableNameCreateContext)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; - } - public query(): QueryContext | null { - return this.getRuleContext(0, QueryContext); - } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); - } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); - } - public columnListCreate(): ColumnListCreateContext | null { - return this.getRuleContext(0, ColumnListCreateContext); - } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0); - } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + + +export class RelationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_WITH(): antlr.TerminalNode[]; - public KW_WITH(i: number): antlr.TerminalNode | null; - public KW_WITH(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_WITH); - } else { - return this.getToken(TrinoSqlParser.KW_WITH, i); - } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_relation; } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public override copyFrom(ctx: RelationContext): void { + super.copyFrom(ctx); } - public KW_DATA(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DATA, 0); +} +export class RelationDefaultContext extends RelationContext { + public constructor(ctx: RelationContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_NO(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NO, 0); + public sampledRelation(): SampledRelationContext { + return this.getRuleContext(0, SampledRelationContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateTableAsSelect) { - listener.enterCreateTableAsSelect(this); + if(listener.enterRelationDefault) { + listener.enterRelationDefault(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateTableAsSelect) { - listener.exitCreateTableAsSelect(this); + if(listener.exitRelationDefault) { + listener.exitRelationDefault(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateTableAsSelect) { - return visitor.visitCreateTableAsSelect(this); + if (visitor.visitRelationDefault) { + return visitor.visitRelationDefault(this); } else { return visitor.visitChildren(this); } } } -export class ShowStatsContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class JoinRelationContext extends RelationContext { + public _left?: RelationContext; + public _right?: SampledRelationContext; + public _rightRelation?: RelationContext; + public constructor(ctx: RelationContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public relation(): RelationContext[]; + public relation(i: number): RelationContext | null; + public relation(i?: number): RelationContext[] | RelationContext | null { + if (i === undefined) { + return this.getRuleContexts(RelationContext); + } + + return this.getRuleContext(i, RelationContext); } - public KW_STATS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_STATS, 0)!; + public KW_CROSS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CROSS, 0); } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FOR, 0)!; + public KW_JOIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_JOIN, 0); + } + public joinType(): JoinTypeContext | null { + return this.getRuleContext(0, JoinTypeContext); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public joinCriteria(): JoinCriteriaContext | null { + return this.getRuleContext(0, JoinCriteriaContext); + } + public KW_NATURAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NATURAL, 0); + } + public sampledRelation(): SampledRelationContext | null { + return this.getRuleContext(0, SampledRelationContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowStats) { - listener.enterShowStats(this); + if(listener.enterJoinRelation) { + listener.enterJoinRelation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowStats) { - listener.exitShowStats(this); + if(listener.exitJoinRelation) { + listener.exitJoinRelation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowStats) { - return visitor.visitShowStats(this); + if (visitor.visitJoinRelation) { + return visitor.visitJoinRelation(this); } else { return visitor.visitChildren(this); } } } -export class ShowCreateSchemaContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JoinTypeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public KW_INNER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INNER, 0); } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; + public KW_LEFT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LEFT, 0); } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + public KW_OUTER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OUTER, 0); + } + public KW_RIGHT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RIGHT, 0); } - public schemaName(): SchemaNameContext { - return this.getRuleContext(0, SchemaNameContext)!; + public KW_FULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FULL, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_joinType; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowCreateSchema) { - listener.enterShowCreateSchema(this); + if(listener.enterJoinType) { + listener.enterJoinType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowCreateSchema) { - listener.exitShowCreateSchema(this); + if(listener.exitJoinType) { + listener.exitJoinType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowCreateSchema) { - return visitor.visitShowCreateSchema(this); + if (visitor.visitJoinType) { + return visitor.visitJoinType(this); } else { return visitor.visitChildren(this); } } } -export class RevokeContext extends StatementContext { - public _grantee?: PrincipalContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_REVOKE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_REVOKE, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; - } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; - } - public privilege(): PrivilegeContext[]; - public privilege(i: number): PrivilegeContext | null; - public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { - if (i === undefined) { - return this.getRuleContexts(PrivilegeContext); - } - return this.getRuleContext(i, PrivilegeContext); - } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); - } - public KW_PRIVILEGES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); - } - public KW_GRANT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GRANT, 0); - } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OPTION, 0); + +export class JoinCriteriaContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FOR, 0); + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); } - public schemaName(): SchemaNameContext | null { - return this.getRuleContext(0, SchemaNameContext); + public booleanExpression(): BooleanExpressionContext | null { + return this.getRuleContext(0, BooleanExpressionContext); } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); + public KW_USING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_USING, 0); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TABLE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_joinCriteria; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRevoke) { - listener.enterRevoke(this); + if(listener.enterJoinCriteria) { + listener.enterJoinCriteria(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRevoke) { - listener.exitRevoke(this); + if(listener.exitJoinCriteria) { + listener.exitJoinCriteria(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRevoke) { - return visitor.visitRevoke(this); + if (visitor.visitJoinCriteria) { + return visitor.visitJoinCriteria(this); } else { return visitor.visitChildren(this); } } } -export class UpdateContext extends StatementContext { - public _where?: BooleanExpressionContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_UPDATE, 0)!; + + +export class SampledRelationContext extends antlr.ParserRuleContext { + public _percentage?: ExpressionContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public patternRecognition(): PatternRecognitionContext { + return this.getRuleContext(0, PatternRecognitionContext)!; } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public KW_TABLESAMPLE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TABLESAMPLE, 0); } - public updateAssignment(): UpdateAssignmentContext[]; - public updateAssignment(i: number): UpdateAssignmentContext | null; - public updateAssignment(i?: number): UpdateAssignmentContext[] | UpdateAssignmentContext | null { - if (i === undefined) { - return this.getRuleContexts(UpdateAssignmentContext); - } - - return this.getRuleContext(i, UpdateAssignmentContext); + public sampleType(): SampleTypeContext | null { + return this.getRuleContext(0, SampleTypeContext); } - public KW_WHERE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WHERE, 0); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } - public booleanExpression(): BooleanExpressionContext | null { - return this.getRuleContext(0, BooleanExpressionContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_sampledRelation; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUpdate) { - listener.enterUpdate(this); + if(listener.enterSampledRelation) { + listener.enterSampledRelation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUpdate) { - listener.exitUpdate(this); + if(listener.exitSampledRelation) { + listener.exitSampledRelation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUpdate) { - return visitor.visitUpdate(this); + if (visitor.visitSampledRelation) { + return visitor.visitSampledRelation(this); } else { return visitor.visitChildren(this); } } } -export class TableExecuteContext extends StatementContext { - public _procedureName?: IdentifierContext; - public _where?: BooleanExpressionContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_EXECUTE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_EXECUTE, 0)!; - } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + + +export class SampleTypeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_WHERE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WHERE, 0); + public KW_BERNOULLI(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BERNOULLI, 0); } - public booleanExpression(): BooleanExpressionContext | null { - return this.getRuleContext(0, BooleanExpressionContext); + public KW_SYSTEM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SYSTEM, 0); } - public callArgument(): CallArgumentContext[]; - public callArgument(i: number): CallArgumentContext | null; - public callArgument(i?: number): CallArgumentContext[] | CallArgumentContext | null { - if (i === undefined) { - return this.getRuleContexts(CallArgumentContext); - } - - return this.getRuleContext(i, CallArgumentContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_sampleType; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableExecute) { - listener.enterTableExecute(this); + if(listener.enterSampleType) { + listener.enterSampleType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableExecute) { - listener.exitTableExecute(this); + if(listener.exitSampleType) { + listener.exitSampleType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableExecute) { - return visitor.visitTableExecute(this); + if (visitor.visitSampleType) { + return visitor.visitSampleType(this); } else { return visitor.visitChildren(this); } } } -export class DeleteContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_DELETE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DELETE, 0)!; + + +export class TrimsSpecificationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + public KW_LEADING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LEADING, 0); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_TRAILING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRAILING, 0); } - public KW_WHERE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WHERE, 0); + public KW_BOTH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BOTH, 0); } - public booleanExpression(): BooleanExpressionContext | null { - return this.getRuleContext(0, BooleanExpressionContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_trimsSpecification; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDelete) { - listener.enterDelete(this); + if(listener.enterTrimsSpecification) { + listener.enterTrimsSpecification(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDelete) { - listener.exitDelete(this); + if(listener.exitTrimsSpecification) { + listener.exitTrimsSpecification(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDelete) { - return visitor.visitDelete(this); + if (visitor.visitTrimsSpecification) { + return visitor.visitTrimsSpecification(this); } else { return visitor.visitChildren(this); } } } -export class DescribeInputContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ListAggOverflowBehaviorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_DESCRIBE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0)!; + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public KW_INPUT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INPUT, 0)!; + public KW_TRUNCATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRUNCATE, 0); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public listaggCountIndication(): ListaggCountIndicationContext | null { + return this.getRuleContext(0, ListaggCountIndicationContext); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_listAggOverflowBehavior; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDescribeInput) { - listener.enterDescribeInput(this); + if(listener.enterListAggOverflowBehavior) { + listener.enterListAggOverflowBehavior(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDescribeInput) { - listener.exitDescribeInput(this); + if(listener.exitListAggOverflowBehavior) { + listener.exitListAggOverflowBehavior(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDescribeInput) { - return visitor.visitDescribeInput(this); + if (visitor.visitListAggOverflowBehavior) { + return visitor.visitListAggOverflowBehavior(this); } else { return visitor.visitChildren(this); } } } -export class ShowStatsForQueryContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ListaggCountIndicationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public KW_STATS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_STATS, 0)!; + public KW_COUNT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COUNT, 0)!; } - public KW_FOR(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FOR, 0)!; + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_listaggCountIndication; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowStatsForQuery) { - listener.enterShowStatsForQuery(this); + if(listener.enterListaggCountIndication) { + listener.enterListaggCountIndication(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowStatsForQuery) { - listener.exitShowStatsForQuery(this); + if(listener.exitListaggCountIndication) { + listener.exitListaggCountIndication(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowStatsForQuery) { - return visitor.visitShowStatsForQuery(this); + if (visitor.visitListaggCountIndication) { + return visitor.visitListaggCountIndication(this); } else { return visitor.visitChildren(this); } } } -export class StatementDefaultContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class PatternRecognitionContext extends antlr.ParserRuleContext { + public _expression?: ExpressionContext; + public _partition: ExpressionContext[] = []; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public aliasedRelation(): AliasedRelationContext { + return this.getRuleContext(0, AliasedRelationContext)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStatementDefault) { - listener.enterStatementDefault(this); + public KW_MATCH_RECOGNIZE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MATCH_RECOGNIZE, 0); + } + public KW_PATTERN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PATTERN, 0); + } + public rowPattern(): RowPatternContext | null { + return this.getRuleContext(0, RowPatternContext); + } + public KW_DEFINE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFINE, 0); + } + public variableDefinition(): VariableDefinitionContext[]; + public variableDefinition(i: number): VariableDefinitionContext | null; + public variableDefinition(i?: number): VariableDefinitionContext[] | VariableDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(VariableDefinitionContext); } + + return this.getRuleContext(i, VariableDefinitionContext); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStatementDefault) { - listener.exitStatementDefault(this); + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PARTITION, 0); + } + public KW_BY(): antlr.TerminalNode[]; + public KW_BY(i: number): antlr.TerminalNode | null; + public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_BY); + } else { + return this.getToken(TrinoSqlParser.KW_BY, i); + } + } + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); + } + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); } + + return this.getRuleContext(i, SortItemContext); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStatementDefault) { - return visitor.visitStatementDefault(this); - } else { - return visitor.visitChildren(this); - } + public KW_MEASURES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MEASURES, 0); } -} -export class SetTimeZoneContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public measureDefinition(): MeasureDefinitionContext[]; + public measureDefinition(i: number): MeasureDefinitionContext | null; + public measureDefinition(i?: number): MeasureDefinitionContext[] | MeasureDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(MeasureDefinitionContext); + } + + return this.getRuleContext(i, MeasureDefinitionContext); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public rowsPerMatch(): RowsPerMatchContext | null { + return this.getRuleContext(0, RowsPerMatchContext); } - public KW_TIME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + public KW_AFTER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AFTER, 0); } - public KW_ZONE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + public KW_MATCH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MATCH, 0); } - public KW_LOCAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LOCAL, 0); + public skipTo(): SkipToContext | null { + return this.getRuleContext(0, SkipToContext); } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); + public KW_SUBSET(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SUBSET, 0); } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetTimeZone) { - listener.enterSetTimeZone(this); + public subsetDefinition(): SubsetDefinitionContext[]; + public subsetDefinition(i: number): SubsetDefinitionContext | null; + public subsetDefinition(i?: number): SubsetDefinitionContext[] | SubsetDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(SubsetDefinitionContext); } + + return this.getRuleContext(i, SubsetDefinitionContext); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetTimeZone) { - listener.exitSetTimeZone(this); - } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetTimeZone) { - return visitor.visitSetTimeZone(this); - } else { - return visitor.visitChildren(this); + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); } + + return this.getRuleContext(i, ExpressionContext); } -} -export class TruncateTableContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_INITIAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INITIAL, 0); } - public KW_TRUNCATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TRUNCATE, 0)!; + public KW_SEEK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SEEK, 0); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_patternRecognition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTruncateTable) { - listener.enterTruncateTable(this); + if(listener.enterPatternRecognition) { + listener.enterPatternRecognition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTruncateTable) { - listener.exitTruncateTable(this); + if(listener.exitPatternRecognition) { + listener.exitPatternRecognition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTruncateTable) { - return visitor.visitTruncateTable(this); + if (visitor.visitPatternRecognition) { + return visitor.visitPatternRecognition(this); } else { return visitor.visitChildren(this); } } } -export class CreateMaterializedViewContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + + +export class MeasureDefinitionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public viewNameCreate(): ViewNameCreateContext { - return this.getRuleContext(0, ViewNameCreateContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public KW_AS(): antlr.TerminalNode { return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; - } - public KW_OR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OR, 0); - } - public KW_REPLACE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_REPLACE, 0); - } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); - } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); - } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0); - } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_measureDefinition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateMaterializedView) { - listener.enterCreateMaterializedView(this); + if(listener.enterMeasureDefinition) { + listener.enterMeasureDefinition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateMaterializedView) { - listener.exitCreateMaterializedView(this); + if(listener.exitMeasureDefinition) { + listener.exitMeasureDefinition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateMaterializedView) { - return visitor.visitCreateMaterializedView(this); + if (visitor.visitMeasureDefinition) { + return visitor.visitMeasureDefinition(this); } else { return visitor.visitChildren(this); } } } -export class SetSessionContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class RowsPerMatchContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public KW_ONE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ONE, 0); } - public KW_SESSION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SESSION, 0)!; + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROW, 0); } - public qualifiedName(): QualifiedNameContext { - return this.getRuleContext(0, QualifiedNameContext)!; + public KW_PER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PER, 0)!; } - public EQ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.EQ, 0)!; + public KW_MATCH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATCH, 0)!; } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); + } + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROWS, 0); + } + public emptyMatchHandling(): EmptyMatchHandlingContext | null { + return this.getRuleContext(0, EmptyMatchHandlingContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rowsPerMatch; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetSession) { - listener.enterSetSession(this); + if(listener.enterRowsPerMatch) { + listener.enterRowsPerMatch(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetSession) { - listener.exitSetSession(this); + if(listener.exitRowsPerMatch) { + listener.exitRowsPerMatch(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetSession) { - return visitor.visitSetSession(this); + if (visitor.visitRowsPerMatch) { + return visitor.visitRowsPerMatch(this); } else { return visitor.visitChildren(this); } } } -export class CreateViewContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; - } - public viewNameCreate(): ViewNameCreateContext { - return this.getRuleContext(0, ViewNameCreateContext)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; + + +export class EmptyMatchHandlingContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public KW_SHOW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SHOW, 0); } - public KW_OR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OR, 0); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public KW_REPLACE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_REPLACE, 0); + public KW_MATCHES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MATCHES, 0); } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + public KW_OMIT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OMIT, 0); } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public KW_SECURITY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SECURITY, 0); + public KW_UNMATCHED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNMATCHED, 0); } - public KW_DEFINER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DEFINER, 0); + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROWS, 0); } - public KW_INVOKER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INVOKER, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_emptyMatchHandling; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCreateView) { - listener.enterCreateView(this); + if(listener.enterEmptyMatchHandling) { + listener.enterEmptyMatchHandling(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCreateView) { - listener.exitCreateView(this); + if(listener.exitEmptyMatchHandling) { + listener.exitEmptyMatchHandling(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCreateView) { - return visitor.visitCreateView(this); + if (visitor.visitEmptyMatchHandling) { + return visitor.visitEmptyMatchHandling(this); } else { return visitor.visitChildren(this); } } } -export class RenameMaterializedViewContext extends StatementContext { - public _from_?: ViewNameContext; - public _to?: ViewNameCreateContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + + +export class SkipToContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TO, 0); } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public KW_NEXT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NEXT, 0); } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROW, 0); } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; + public KW_PAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PAST, 0); } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public KW_LAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LAST, 0); } - public viewNameCreate(): ViewNameCreateContext { - return this.getRuleContext(0, ViewNameCreateContext)!; + public KW_FIRST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FIRST, 0); } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_skipTo; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRenameMaterializedView) { - listener.enterRenameMaterializedView(this); + if(listener.enterSkipTo) { + listener.enterSkipTo(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRenameMaterializedView) { - listener.exitRenameMaterializedView(this); + if(listener.exitSkipTo) { + listener.exitSkipTo(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRenameMaterializedView) { - return visitor.visitRenameMaterializedView(this); + if (visitor.visitSkipTo) { + return visitor.visitSkipTo(this); } else { return visitor.visitChildren(this); } } } -export class ShowSchemasContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_SCHEMAS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMAS, 0)!; - } - public catalogName(): CatalogNameContext | null { - return this.getRuleContext(0, CatalogNameContext); - } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); - } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); + + +export class SubsetDefinitionContext extends antlr.ParserRuleContext { + public _name?: IdentifierContext; + public _identifier?: IdentifierContext; + public _union: IdentifierContext[] = []; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public EQ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EQ, 0)!; } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { if (i === undefined) { - return this.getRuleContexts(StringContext); + return this.getRuleContexts(IdentifierContext); } - return this.getRuleContext(i, StringContext); + return this.getRuleContext(i, IdentifierContext); } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_subsetDefinition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowSchemas) { - listener.enterShowSchemas(this); + if(listener.enterSubsetDefinition) { + listener.enterSubsetDefinition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowSchemas) { - listener.exitShowSchemas(this); + if(listener.exitSubsetDefinition) { + listener.exitSubsetDefinition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowSchemas) { - return visitor.visitShowSchemas(this); + if (visitor.visitSubsetDefinition) { + return visitor.visitSubsetDefinition(this); } else { return visitor.visitChildren(this); } } } -export class DropTableContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_DROP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DROP, 0)!; + + +export class VariableDefinitionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public KW_IF(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IF, 0); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public KW_EXISTS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_variableDefinition; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDropTable) { - listener.enterDropTable(this); + if(listener.enterVariableDefinition) { + listener.enterVariableDefinition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDropTable) { - listener.exitDropTable(this); + if(listener.exitVariableDefinition) { + listener.exitVariableDefinition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDropTable) { - return visitor.visitDropTable(this); + if (visitor.visitVariableDefinition) { + return visitor.visitVariableDefinition(this); } else { return visitor.visitChildren(this); } } } -export class SetSchemaAuthorizationContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + + +export class AliasedRelationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0)!; + public relationPrimary(): RelationPrimaryContext { + return this.getRuleContext(0, RelationPrimaryContext)!; } - public schemaName(): SchemaNameContext { - return this.getRuleContext(0, SchemaNameContext)!; + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } - public KW_AUTHORIZATION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0)!; + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_aliasedRelation; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetSchemaAuthorization) { - listener.enterSetSchemaAuthorization(this); + if(listener.enterAliasedRelation) { + listener.enterAliasedRelation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetSchemaAuthorization) { - listener.exitSetSchemaAuthorization(this); + if(listener.exitAliasedRelation) { + listener.exitAliasedRelation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetSchemaAuthorization) { - return visitor.visitSetSchemaAuthorization(this); + if (visitor.visitAliasedRelation) { + return visitor.visitAliasedRelation(this); } else { return visitor.visitChildren(this); } } } -export class RollbackContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ColumnListCreateContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_ROLLBACK(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLLBACK, 0)!; + public columnNameCreate(): ColumnNameCreateContext[]; + public columnNameCreate(i: number): ColumnNameCreateContext | null; + public columnNameCreate(i?: number): ColumnNameCreateContext[] | ColumnNameCreateContext | null { + if (i === undefined) { + return this.getRuleContexts(ColumnNameCreateContext); + } + + return this.getRuleContext(i, ColumnNameCreateContext); } - public KW_WORK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WORK, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_columnListCreate; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRollback) { - listener.enterRollback(this); + if(listener.enterColumnListCreate) { + listener.enterColumnListCreate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRollback) { - listener.exitRollback(this); + if(listener.exitColumnListCreate) { + listener.exitColumnListCreate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRollback) { - return visitor.visitRollback(this); + if (visitor.visitColumnListCreate) { + return visitor.visitColumnListCreate(this); } else { return visitor.visitChildren(this); } } } -export class CommentTableContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_COMMENT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; - } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; - } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; - } - public KW_IS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IS, 0)!; + + +export class ColumnListContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + public columnRef(): ColumnRefContext[]; + public columnRef(i: number): ColumnRefContext | null; + public columnRef(i?: number): ColumnRefContext[] | ColumnRefContext | null { + if (i === undefined) { + return this.getRuleContexts(ColumnRefContext); + } + + return this.getRuleContext(i, ColumnRefContext); } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NULL, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_columnList; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCommentTable) { - listener.enterCommentTable(this); + if(listener.enterColumnList) { + listener.enterColumnList(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCommentTable) { - listener.exitCommentTable(this); + if(listener.exitColumnList) { + listener.exitColumnList(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCommentTable) { - return visitor.visitCommentTable(this); + if (visitor.visitColumnList) { + return visitor.visitColumnList(this); } else { return visitor.visitChildren(this); } } } -export class RenameViewContext extends StatementContext { - public _from_?: ViewNameContext; - public _to?: ViewNameCreateContext; - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; - } - public KW_RENAME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_RENAME, 0)!; - } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; + + +export class ColumnAliasesContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } - public viewNameCreate(): ViewNameCreateContext { - return this.getRuleContext(0, ViewNameCreateContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_columnAliases; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRenameView) { - listener.enterRenameView(this); + if(listener.enterColumnAliases) { + listener.enterColumnAliases(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRenameView) { - listener.exitRenameView(this); + if(listener.exitColumnAliases) { + listener.exitColumnAliases(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRenameView) { - return visitor.visitRenameView(this); + if (visitor.visitColumnAliases) { + return visitor.visitColumnAliases(this); } else { return visitor.visitChildren(this); } } } -export class SetPathContext extends StatementContext { - public constructor(ctx: StatementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class RelationPrimaryContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_relationPrimary; } - public KW_PATH(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PATH, 0)!; + public override copyFrom(ctx: RelationPrimaryContext): void { + super.copyFrom(ctx); } - public pathSpecification(): PathSpecificationContext { - return this.getRuleContext(0, PathSpecificationContext)!; +} +export class SubqueryRelationContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetPath) { - listener.enterSetPath(this); + if(listener.enterSubqueryRelation) { + listener.enterSubqueryRelation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetPath) { - listener.exitSetPath(this); + if(listener.exitSubqueryRelation) { + listener.exitSubqueryRelation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetPath) { - return visitor.visitSetPath(this); + if (visitor.visitSubqueryRelation) { + return visitor.visitSubqueryRelation(this); } else { return visitor.visitChildren(this); } } } -export class GrantRolesContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class JsonTableContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_GRANT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_GRANT, 0)!; + public KW_JSON_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_TABLE, 0)!; } - public roles(): RolesContext { - return this.getRuleContext(0, RolesContext)!; + public jsonPathInvocation(): JsonPathInvocationContext { + return this.getRuleContext(0, JsonPathInvocationContext)!; } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; + public KW_COLUMNS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMNS, 0)!; } - public principal(): PrincipalContext[]; - public principal(i: number): PrincipalContext | null; - public principal(i?: number): PrincipalContext[] | PrincipalContext | null { + public jsonTableColumn(): JsonTableColumnContext[]; + public jsonTableColumn(i: number): JsonTableColumnContext | null; + public jsonTableColumn(i?: number): JsonTableColumnContext[] | JsonTableColumnContext | null { if (i === undefined) { - return this.getRuleContexts(PrincipalContext); + return this.getRuleContexts(JsonTableColumnContext); } - return this.getRuleContext(i, PrincipalContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + return this.getRuleContext(i, JsonTableColumnContext); } - public KW_ADMIN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ADMIN, 0); + public KW_PLAN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PLAN, 0); } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OPTION, 0); + public jsonTableSpecificPlan(): JsonTableSpecificPlanContext | null { + return this.getRuleContext(0, JsonTableSpecificPlanContext); } - public KW_GRANTED(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GRANTED, 0); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFAULT, 0); } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BY, 0); + public jsonTableDefaultPlan(): JsonTableDefaultPlanContext | null { + return this.getRuleContext(0, JsonTableDefaultPlanContext); } - public grantor(): GrantorContext | null { - return this.getRuleContext(0, GrantorContext); + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); } - public KW_IN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IN, 0); + public KW_ERROR(): antlr.TerminalNode[]; + public KW_ERROR(i: number): antlr.TerminalNode | null; + public KW_ERROR(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ERROR); + } else { + return this.getToken(TrinoSqlParser.KW_ERROR, i); + } } - public catalogName(): CatalogNameContext | null { - return this.getRuleContext(0, CatalogNameContext); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGrantRoles) { - listener.enterGrantRoles(this); + if(listener.enterJsonTable) { + listener.enterJsonTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGrantRoles) { - listener.exitGrantRoles(this); + if(listener.exitJsonTable) { + listener.exitJsonTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGrantRoles) { - return visitor.visitGrantRoles(this); + if (visitor.visitJsonTable) { + return visitor.visitJsonTable(this); } else { return visitor.visitChildren(this); } } } -export class CallContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class ParenthesizedRelationContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_CALL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CALL, 0)!; - } - public functionName(): FunctionNameContext { - return this.getRuleContext(0, FunctionNameContext)!; - } - public callArgument(): CallArgumentContext[]; - public callArgument(i: number): CallArgumentContext | null; - public callArgument(i?: number): CallArgumentContext[] | CallArgumentContext | null { - if (i === undefined) { - return this.getRuleContexts(CallArgumentContext); - } - - return this.getRuleContext(i, CallArgumentContext); + public relation(): RelationContext { + return this.getRuleContext(0, RelationContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCall) { - listener.enterCall(this); + if(listener.enterParenthesizedRelation) { + listener.enterParenthesizedRelation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCall) { - listener.exitCall(this); + if(listener.exitParenthesizedRelation) { + listener.exitParenthesizedRelation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCall) { - return visitor.visitCall(this); + if (visitor.visitParenthesizedRelation) { + return visitor.visitParenthesizedRelation(this); } else { return visitor.visitChildren(this); } } } -export class RefreshMaterializedViewContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class UnnestContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_REFRESH(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_REFRESH, 0)!; + public KW_UNNEST(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UNNEST, 0)!; } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public KW_ORDINALITY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDINALITY, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRefreshMaterializedView) { - listener.enterRefreshMaterializedView(this); + if(listener.enterUnnest) { + listener.enterUnnest(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRefreshMaterializedView) { - listener.exitRefreshMaterializedView(this); + if(listener.exitUnnest) { + listener.exitUnnest(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRefreshMaterializedView) { - return visitor.visitRefreshMaterializedView(this); + if (visitor.visitUnnest) { + return visitor.visitUnnest(this); } else { return visitor.visitChildren(this); } } } -export class ShowCreateMaterializedViewContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class TableFunctionInvocationContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_CREATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CREATE, 0)!; - } - public KW_MATERIALIZED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATERIALIZED, 0)!; - } - public KW_VIEW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VIEW, 0)!; + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; } - public viewName(): ViewNameContext { - return this.getRuleContext(0, ViewNameContext)!; + public tableFunctionCall(): TableFunctionCallContext { + return this.getRuleContext(0, TableFunctionCallContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowCreateMaterializedView) { - listener.enterShowCreateMaterializedView(this); + if(listener.enterTableFunctionInvocation) { + listener.enterTableFunctionInvocation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowCreateMaterializedView) { - listener.exitShowCreateMaterializedView(this); + if(listener.exitTableFunctionInvocation) { + listener.exitTableFunctionInvocation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowCreateMaterializedView) { - return visitor.visitShowCreateMaterializedView(this); + if (visitor.visitTableFunctionInvocation) { + return visitor.visitTableFunctionInvocation(this); } else { return visitor.visitChildren(this); } } } -export class ShowFunctionsContext extends StatementContext { - public _pattern?: StringContext; - public _escape?: StringContext; - public constructor(ctx: StatementContext) { +export class LateralContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_SHOW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SHOW, 0)!; - } - public KW_FUNCTIONS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FUNCTIONS, 0)!; - } - public KW_LIKE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIKE, 0); - } - public string_(): StringContext[]; - public string_(i: number): StringContext | null; - public string_(i?: number): StringContext[] | StringContext | null { - if (i === undefined) { - return this.getRuleContexts(StringContext); - } - - return this.getRuleContext(i, StringContext); + public KW_LATERAL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LATERAL, 0)!; } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterShowFunctions) { - listener.enterShowFunctions(this); + if(listener.enterLateral) { + listener.enterLateral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitShowFunctions) { - listener.exitShowFunctions(this); + if(listener.exitLateral) { + listener.exitLateral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitShowFunctions) { - return visitor.visitShowFunctions(this); + if (visitor.visitLateral) { + return visitor.visitLateral(this); } else { return visitor.visitChildren(this); } } } -export class DescribeOutputContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class TableNameContext extends RelationPrimaryContext { + public constructor(ctx: RelationPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DESCRIBE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DESCRIBE, 0)!; - } - public KW_OUTPUT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_OUTPUT, 0)!; + public tableOrViewName(): TableOrViewNameContext { + return this.getRuleContext(0, TableOrViewNameContext)!; } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public queryPeriod(): QueryPeriodContext | null { + return this.getRuleContext(0, QueryPeriodContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDescribeOutput) { - listener.enterDescribeOutput(this); + if(listener.enterTableName) { + listener.enterTableName(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDescribeOutput) { - listener.exitDescribeOutput(this); + if(listener.exitTableName) { + listener.exitTableName(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDescribeOutput) { - return visitor.visitDescribeOutput(this); + if (visitor.visitTableName) { + return visitor.visitTableName(this); } else { return visitor.visitChildren(this); } } } -export class GrantContext extends StatementContext { - public _grantee?: PrincipalContext; - public constructor(ctx: StatementContext) { + + +export class JsonTableColumnContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonTableColumn; + } + public override copyFrom(ctx: JsonTableColumnContext): void { + super.copyFrom(ctx); + } +} +export class QueryColumnContext extends JsonTableColumnContext { + public _emptyBehavior?: JsonQueryBehaviorContext; + public _errorBehavior?: JsonQueryBehaviorContext; + public constructor(ctx: JsonTableColumnContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_GRANT(): antlr.TerminalNode[]; - public KW_GRANT(i: number): antlr.TerminalNode | null; - public KW_GRANT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_GRANT); - } else { - return this.getToken(TrinoSqlParser.KW_GRANT, i); - } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_ON(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ON, 0)!; + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public KW_TO(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TO, 0)!; + public KW_FORMAT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0)!; } - public principal(): PrincipalContext { - return this.getRuleContext(0, PrincipalContext)!; + public jsonRepresentation(): JsonRepresentationContext { + return this.getRuleContext(0, JsonRepresentationContext)!; } - public privilege(): PrivilegeContext[]; - public privilege(i: number): PrivilegeContext | null; - public privilege(i?: number): PrivilegeContext[] | PrivilegeContext | null { - if (i === undefined) { - return this.getRuleContexts(PrivilegeContext); - } - - return this.getRuleContext(i, PrivilegeContext); + public KW_PATH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PATH, 0); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); } - public KW_PRIVILEGES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRIVILEGES, 0); + public jsonQueryWrapperBehavior(): JsonQueryWrapperBehaviorContext | null { + return this.getRuleContext(0, JsonQueryWrapperBehaviorContext); } - public schemaName(): SchemaNameContext | null { - return this.getRuleContext(0, SchemaNameContext); + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WRAPPER, 0); } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); + public KW_QUOTES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_QUOTES, 0); } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ON); + } else { + return this.getToken(TrinoSqlParser.KW_ON, i); + } } - public KW_OPTION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OPTION, 0); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public KW_SCHEMA(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public KW_TABLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TABLE, 0); + public KW_KEEP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEEP, 0); + } + public KW_OMIT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OMIT, 0); + } + public jsonQueryBehavior(): JsonQueryBehaviorContext[]; + public jsonQueryBehavior(i: number): JsonQueryBehaviorContext | null; + public jsonQueryBehavior(i?: number): JsonQueryBehaviorContext[] | JsonQueryBehaviorContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonQueryBehaviorContext); + } + + return this.getRuleContext(i, JsonQueryBehaviorContext); + } + public KW_SCALAR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SCALAR, 0); + } + public KW_TEXT_STRING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TEXT_STRING, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGrant) { - listener.enterGrant(this); + if(listener.enterQueryColumn) { + listener.enterQueryColumn(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGrant) { - listener.exitGrant(this); + if(listener.exitQueryColumn) { + listener.exitQueryColumn(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGrant) { - return visitor.visitGrant(this); + if (visitor.visitQueryColumn) { + return visitor.visitQueryColumn(this); } else { return visitor.visitChildren(this); } } } -export class SetTablePropertiesContext extends StatementContext { - public constructor(ctx: StatementContext) { +export class NestedColumnsContext extends JsonTableColumnContext { + public constructor(ctx: JsonTableColumnContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ALTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ALTER, 0)!; + public KW_NESTED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NESTED, 0)!; } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public KW_COLUMNS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COLUMNS, 0)!; } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public jsonTableColumn(): JsonTableColumnContext[]; + public jsonTableColumn(i: number): JsonTableColumnContext | null; + public jsonTableColumn(i?: number): JsonTableColumnContext[] | JsonTableColumnContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonTableColumnContext); + } + + return this.getRuleContext(i, JsonTableColumnContext); } - public KW_PROPERTIES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0)!; + public KW_PATH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PATH, 0); } - public propertyAssignments(): PropertyAssignmentsContext { - return this.getRuleContext(0, PropertyAssignmentsContext)!; + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetTableProperties) { - listener.enterSetTableProperties(this); + if(listener.enterNestedColumns) { + listener.enterNestedColumns(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetTableProperties) { - listener.exitSetTableProperties(this); + if(listener.exitNestedColumns) { + listener.exitNestedColumns(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetTableProperties) { - return visitor.visitSetTableProperties(this); + if (visitor.visitNestedColumns) { + return visitor.visitNestedColumns(this); } else { return visitor.visitChildren(this); } } } - - -export class QueryContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_query; - } - public override copyFrom(ctx: QueryContext): void { - super.copyFrom(ctx); - } -} -export class QueryStatementContext extends QueryContext { - public constructor(ctx: QueryContext) { +export class ValueColumnContext extends JsonTableColumnContext { + public _emptyBehavior?: JsonValueBehaviorContext; + public _errorBehavior?: JsonValueBehaviorContext; + public constructor(ctx: JsonTableColumnContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public queryNoWith(): QueryNoWithContext { - return this.getRuleContext(0, QueryNoWithContext)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public with(): WithContext | null { - return this.getRuleContext(0, WithContext); + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQueryStatement) { - listener.enterQueryStatement(this); - } + public KW_PATH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PATH, 0); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQueryStatement) { - listener.exitQueryStatement(this); - } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQueryStatement) { - return visitor.visitQueryStatement(this); - } else { - return visitor.visitChildren(this); - } + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ON); + } else { + return this.getToken(TrinoSqlParser.KW_ON, i); + } } -} - - -export class WithContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public KW_WITH(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WITH, 0)!; + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public namedQuery(): NamedQueryContext[]; - public namedQuery(i: number): NamedQueryContext | null; - public namedQuery(i?: number): NamedQueryContext[] | NamedQueryContext | null { + public jsonValueBehavior(): JsonValueBehaviorContext[]; + public jsonValueBehavior(i: number): JsonValueBehaviorContext | null; + public jsonValueBehavior(i?: number): JsonValueBehaviorContext[] | JsonValueBehaviorContext | null { if (i === undefined) { - return this.getRuleContexts(NamedQueryContext); + return this.getRuleContexts(JsonValueBehaviorContext); } - return this.getRuleContext(i, NamedQueryContext); - } - public KW_RECURSIVE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RECURSIVE, 0); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_with; + return this.getRuleContext(i, JsonValueBehaviorContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterWith) { - listener.enterWith(this); + if(listener.enterValueColumn) { + listener.enterValueColumn(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitWith) { - listener.exitWith(this); + if(listener.exitValueColumn) { + listener.exitValueColumn(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitWith) { - return visitor.visitWith(this); + if (visitor.visitValueColumn) { + return visitor.visitValueColumn(this); } else { return visitor.visitChildren(this); } } } - - -export class TableElementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class OrdinalityColumnContext extends JsonTableColumnContext { + public constructor(ctx: JsonTableColumnContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public columnDefinition(): ColumnDefinitionContext | null { - return this.getRuleContext(0, ColumnDefinitionContext); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public likeClause(): LikeClauseContext | null { - return this.getRuleContext(0, LikeClauseContext); + public KW_FOR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FOR, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_tableElement; + public KW_ORDINALITY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ORDINALITY, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableElement) { - listener.enterTableElement(this); + if(listener.enterOrdinalityColumn) { + listener.enterOrdinalityColumn(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableElement) { - listener.exitTableElement(this); + if(listener.exitOrdinalityColumn) { + listener.exitOrdinalityColumn(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableElement) { - return visitor.visitTableElement(this); + if (visitor.visitOrdinalityColumn) { + return visitor.visitOrdinalityColumn(this); } else { return visitor.visitChildren(this); } @@ -16538,159 +25157,155 @@ export class TableElementContext extends antlr.ParserRuleContext { } -export class ColumnDefinitionContext extends antlr.ParserRuleContext { +export class JsonTableSpecificPlanContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public columnNameCreate(): ColumnNameCreateContext { - return this.getRuleContext(0, ColumnNameCreateContext)!; - } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); - } - public KW_NULL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NULL, 0); - } - public KW_COMMENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_COMMENT, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonTableSpecificPlan; } - public string(): StringContext | null { - return this.getRuleContext(0, StringContext); + public override copyFrom(ctx: JsonTableSpecificPlanContext): void { + super.copyFrom(ctx); } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); +} +export class CrossPlanContext extends JsonTableSpecificPlanContext { + public constructor(ctx: JsonTableSpecificPlanContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public properties(): PropertiesContext | null { - return this.getRuleContext(0, PropertiesContext); + public planPrimary(): PlanPrimaryContext[]; + public planPrimary(i: number): PlanPrimaryContext | null; + public planPrimary(i?: number): PlanPrimaryContext[] | PlanPrimaryContext | null { + if (i === undefined) { + return this.getRuleContexts(PlanPrimaryContext); + } + + return this.getRuleContext(i, PlanPrimaryContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_columnDefinition; + public KW_CROSS(): antlr.TerminalNode[]; + public KW_CROSS(i: number): antlr.TerminalNode | null; + public KW_CROSS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_CROSS); + } else { + return this.getToken(TrinoSqlParser.KW_CROSS, i); + } } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnDefinition) { - listener.enterColumnDefinition(this); + if(listener.enterCrossPlan) { + listener.enterCrossPlan(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnDefinition) { - listener.exitColumnDefinition(this); + if(listener.exitCrossPlan) { + listener.exitCrossPlan(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnDefinition) { - return visitor.visitColumnDefinition(this); + if (visitor.visitCrossPlan) { + return visitor.visitCrossPlan(this); } else { return visitor.visitChildren(this); } } } - - -export class LikeClauseContext extends antlr.ParserRuleContext { - public _optionType?: Token | null; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_LIKE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_LIKE, 0)!; - } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; +export class JoinPlanContext extends JsonTableSpecificPlanContext { + public constructor(ctx: JsonTableSpecificPlanContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_PROPERTIES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0); + public jsonTablePathName(): JsonTablePathNameContext { + return this.getRuleContext(0, JsonTablePathNameContext)!; } - public KW_INCLUDING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INCLUDING, 0); + public planPrimary(): PlanPrimaryContext { + return this.getRuleContext(0, PlanPrimaryContext)!; } - public KW_EXCLUDING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXCLUDING, 0); + public KW_OUTER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OUTER, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_likeClause; + public KW_INNER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INNER, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLikeClause) { - listener.enterLikeClause(this); + if(listener.enterJoinPlan) { + listener.enterJoinPlan(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLikeClause) { - listener.exitLikeClause(this); + if(listener.exitJoinPlan) { + listener.exitJoinPlan(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLikeClause) { - return visitor.visitLikeClause(this); + if (visitor.visitJoinPlan) { + return visitor.visitJoinPlan(this); } else { return visitor.visitChildren(this); } } } - - -export class PropertiesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public propertyAssignments(): PropertyAssignmentsContext { - return this.getRuleContext(0, PropertyAssignmentsContext)!; +export class LeafPlanContext extends JsonTableSpecificPlanContext { + public constructor(ctx: JsonTableSpecificPlanContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_properties; + public jsonTablePathName(): JsonTablePathNameContext { + return this.getRuleContext(0, JsonTablePathNameContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterProperties) { - listener.enterProperties(this); + if(listener.enterLeafPlan) { + listener.enterLeafPlan(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitProperties) { - listener.exitProperties(this); + if(listener.exitLeafPlan) { + listener.exitLeafPlan(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitProperties) { - return visitor.visitProperties(this); + if (visitor.visitLeafPlan) { + return visitor.visitLeafPlan(this); } else { return visitor.visitChildren(this); } } } - - -export class PropertyAssignmentsContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class UnionPlanContext extends JsonTableSpecificPlanContext { + public constructor(ctx: JsonTableSpecificPlanContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public property(): PropertyContext[]; - public property(i: number): PropertyContext | null; - public property(i?: number): PropertyContext[] | PropertyContext | null { + public planPrimary(): PlanPrimaryContext[]; + public planPrimary(i: number): PlanPrimaryContext | null; + public planPrimary(i?: number): PlanPrimaryContext[] | PlanPrimaryContext | null { if (i === undefined) { - return this.getRuleContexts(PropertyContext); + return this.getRuleContexts(PlanPrimaryContext); } - return this.getRuleContext(i, PropertyContext); + return this.getRuleContext(i, PlanPrimaryContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_propertyAssignments; + public KW_UNION(): antlr.TerminalNode[]; + public KW_UNION(i: number): antlr.TerminalNode | null; + public KW_UNION(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_UNION); + } else { + return this.getToken(TrinoSqlParser.KW_UNION, i); + } } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPropertyAssignments) { - listener.enterPropertyAssignments(this); + if(listener.enterUnionPlan) { + listener.enterUnionPlan(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPropertyAssignments) { - listener.exitPropertyAssignments(this); + if(listener.exitUnionPlan) { + listener.exitUnionPlan(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPropertyAssignments) { - return visitor.visitPropertyAssignments(this); + if (visitor.visitUnionPlan) { + return visitor.visitUnionPlan(this); } else { return visitor.visitChildren(this); } @@ -16698,35 +25313,29 @@ export class PropertyAssignmentsContext extends antlr.ParserRuleContext { } -export class PropertyContext extends antlr.ParserRuleContext { +export class JsonTablePathNameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext)!; } - public EQ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.EQ, 0)!; - } - public propertyValue(): PropertyValueContext { - return this.getRuleContext(0, PropertyValueContext)!; - } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_property; + return TrinoSqlParser.RULE_jsonTablePathName; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterProperty) { - listener.enterProperty(this); + if(listener.enterJsonTablePathName) { + listener.enterJsonTablePathName(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitProperty) { - listener.exitProperty(this); + if(listener.exitJsonTablePathName) { + listener.exitJsonTablePathName(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitProperty) { - return visitor.visitProperty(this); + if (visitor.visitJsonTablePathName) { + return visitor.visitJsonTablePathName(this); } else { return visitor.visitChildren(this); } @@ -16734,64 +25343,71 @@ export class PropertyContext extends antlr.ParserRuleContext { } -export class PropertyValueContext extends antlr.ParserRuleContext { +export class PlanPrimaryContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_propertyValue; - } - public override copyFrom(ctx: PropertyValueContext): void { - super.copyFrom(ctx); + public jsonTablePathName(): JsonTablePathNameContext | null { + return this.getRuleContext(0, JsonTablePathNameContext); } -} -export class DefaultPropertyValueContext extends PropertyValueContext { - public constructor(ctx: PropertyValueContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public jsonTableSpecificPlan(): JsonTableSpecificPlanContext | null { + return this.getRuleContext(0, JsonTableSpecificPlanContext); } - public KW_DEFAULT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DEFAULT, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_planPrimary; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDefaultPropertyValue) { - listener.enterDefaultPropertyValue(this); + if(listener.enterPlanPrimary) { + listener.enterPlanPrimary(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDefaultPropertyValue) { - listener.exitDefaultPropertyValue(this); + if(listener.exitPlanPrimary) { + listener.exitPlanPrimary(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDefaultPropertyValue) { - return visitor.visitDefaultPropertyValue(this); + if (visitor.visitPlanPrimary) { + return visitor.visitPlanPrimary(this); } else { return visitor.visitChildren(this); } } } -export class NonDefaultPropertyValueContext extends PropertyValueContext { - public constructor(ctx: PropertyValueContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonTableDefaultPlanContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_OUTER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OUTER, 0); + } + public KW_INNER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INNER, 0); + } + public KW_UNION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNION, 0); + } + public KW_CROSS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CROSS, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonTableDefaultPlan; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNonDefaultPropertyValue) { - listener.enterNonDefaultPropertyValue(this); + if(listener.enterJsonTableDefaultPlan) { + listener.enterJsonTableDefaultPlan(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNonDefaultPropertyValue) { - listener.exitNonDefaultPropertyValue(this); + if(listener.exitJsonTableDefaultPlan) { + listener.exitJsonTableDefaultPlan(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNonDefaultPropertyValue) { - return visitor.visitNonDefaultPropertyValue(this); + if (visitor.visitJsonTableDefaultPlan) { + return visitor.visitJsonTableDefaultPlan(this); } else { return visitor.visitChildren(this); } @@ -16799,101 +25415,50 @@ export class NonDefaultPropertyValueContext extends PropertyValueContext { } -export class QueryNoWithContext extends antlr.ParserRuleContext { - public _offset?: RowCountContext; - public _limit?: LimitRowCountContext; - public _fetchFirst?: RowCountContext; +export class TableFunctionCallContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public queryTerm(): QueryTermContext { - return this.getRuleContext(0, QueryTermContext)!; - } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ORDER, 0); - } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BY, 0); + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; } - public sortItem(): SortItemContext[]; - public sortItem(i: number): SortItemContext | null; - public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + public tableFunctionArgument(): TableFunctionArgumentContext[]; + public tableFunctionArgument(i: number): TableFunctionArgumentContext | null; + public tableFunctionArgument(i?: number): TableFunctionArgumentContext[] | TableFunctionArgumentContext | null { if (i === undefined) { - return this.getRuleContexts(SortItemContext); + return this.getRuleContexts(TableFunctionArgumentContext); } - return this.getRuleContext(i, SortItemContext); + return this.getRuleContext(i, TableFunctionArgumentContext); } - public KW_OFFSET(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OFFSET, 0); + public KW_COPARTITION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COPARTITION, 0); } - public rowCount(): RowCountContext[]; - public rowCount(i: number): RowCountContext | null; - public rowCount(i?: number): RowCountContext[] | RowCountContext | null { + public copartitionTables(): CopartitionTablesContext[]; + public copartitionTables(i: number): CopartitionTablesContext | null; + public copartitionTables(i?: number): CopartitionTablesContext[] | CopartitionTablesContext | null { if (i === undefined) { - return this.getRuleContexts(RowCountContext); + return this.getRuleContexts(CopartitionTablesContext); } - return this.getRuleContext(i, RowCountContext); - } - public KW_LIMIT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LIMIT, 0); - } - public KW_FETCH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FETCH, 0); - } - public limitRowCount(): LimitRowCountContext | null { - return this.getRuleContext(0, LimitRowCountContext); - } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FIRST, 0); - } - public KW_NEXT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NEXT, 0); - } - public KW_ROW(): antlr.TerminalNode[]; - public KW_ROW(i: number): antlr.TerminalNode | null; - public KW_ROW(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_ROW); - } else { - return this.getToken(TrinoSqlParser.KW_ROW, i); - } - } - public KW_ROWS(): antlr.TerminalNode[]; - public KW_ROWS(i: number): antlr.TerminalNode | null; - public KW_ROWS(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_ROWS); - } else { - return this.getToken(TrinoSqlParser.KW_ROWS, i); - } - } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ONLY, 0); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); - } - public KW_TIES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TIES, 0); + return this.getRuleContext(i, CopartitionTablesContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_queryNoWith; + return TrinoSqlParser.RULE_tableFunctionCall; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQueryNoWith) { - listener.enterQueryNoWith(this); + if(listener.enterTableFunctionCall) { + listener.enterTableFunctionCall(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQueryNoWith) { - listener.exitQueryNoWith(this); + if(listener.exitTableFunctionCall) { + listener.exitTableFunctionCall(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQueryNoWith) { - return visitor.visitQueryNoWith(this); + if (visitor.visitTableFunctionCall) { + return visitor.visitTableFunctionCall(this); } else { return visitor.visitChildren(this); } @@ -16901,32 +25466,38 @@ export class QueryNoWithContext extends antlr.ParserRuleContext { } -export class LimitRowCountContext extends antlr.ParserRuleContext { +export class TableFunctionArgumentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public tableArgument(): TableArgumentContext | null { + return this.getRuleContext(0, TableArgumentContext); } - public rowCount(): RowCountContext | null { - return this.getRuleContext(0, RowCountContext); + public descriptorArgument(): DescriptorArgumentContext | null { + return this.getRuleContext(0, DescriptorArgumentContext); + } + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_limitRowCount; + return TrinoSqlParser.RULE_tableFunctionArgument; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLimitRowCount) { - listener.enterLimitRowCount(this); + if(listener.enterTableFunctionArgument) { + listener.enterTableFunctionArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLimitRowCount) { - listener.exitLimitRowCount(this); + if(listener.exitTableFunctionArgument) { + listener.exitTableFunctionArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLimitRowCount) { - return visitor.visitLimitRowCount(this); + if (visitor.visitTableFunctionArgument) { + return visitor.visitTableFunctionArgument(this); } else { return visitor.visitChildren(this); } @@ -16934,32 +25505,74 @@ export class LimitRowCountContext extends antlr.ParserRuleContext { } -export class RowCountContext extends antlr.ParserRuleContext { +export class TableArgumentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public INTEGER_VALUE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); + public tableArgumentRelation(): TableArgumentRelationContext { + return this.getRuleContext(0, TableArgumentRelationContext)!; } - public QUESTION_MARK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); + public KW_PARTITION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PARTITION, 0); + } + public KW_BY(): antlr.TerminalNode[]; + public KW_BY(i: number): antlr.TerminalNode | null; + public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_BY); + } else { + return this.getToken(TrinoSqlParser.KW_BY, i); + } + } + public KW_PRUNE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRUNE, 0); + } + public KW_WHEN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHEN, 0); + } + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); + } + public KW_KEEP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEEP, 0); + } + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); + } + + return this.getRuleContext(i, SortItemContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_rowCount; + return TrinoSqlParser.RULE_tableArgument; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRowCount) { - listener.enterRowCount(this); + if(listener.enterTableArgument) { + listener.enterTableArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRowCount) { - listener.exitRowCount(this); + if(listener.exitTableArgument) { + listener.exitTableArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRowCount) { - return visitor.visitRowCount(this); + if (visitor.visitTableArgument) { + return visitor.visitTableArgument(this); } else { return visitor.visitChildren(this); } @@ -16967,85 +25580,88 @@ export class RowCountContext extends antlr.ParserRuleContext { } -export class QueryTermContext extends antlr.ParserRuleContext { +export class TableArgumentRelationContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_queryTerm; + return TrinoSqlParser.RULE_tableArgumentRelation; } - public override copyFrom(ctx: QueryTermContext): void { + public override copyFrom(ctx: TableArgumentRelationContext): void { super.copyFrom(ctx); } } -export class QueryTermDefaultContext extends QueryTermContext { - public constructor(ctx: QueryTermContext) { +export class TableArgumentQueryContext extends TableArgumentRelationContext { + public constructor(ctx: TableArgumentRelationContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public queryPrimary(): QueryPrimaryContext { - return this.getRuleContext(0, QueryPrimaryContext)!; + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + } + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); + } + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQueryTermDefault) { - listener.enterQueryTermDefault(this); + if(listener.enterTableArgumentQuery) { + listener.enterTableArgumentQuery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQueryTermDefault) { - listener.exitQueryTermDefault(this); + if(listener.exitTableArgumentQuery) { + listener.exitTableArgumentQuery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQueryTermDefault) { - return visitor.visitQueryTermDefault(this); + if (visitor.visitTableArgumentQuery) { + return visitor.visitTableArgumentQuery(this); } else { return visitor.visitChildren(this); } } } -export class SetOperationContext extends QueryTermContext { - public _left?: QueryTermContext; - public _operator?: Token | null; - public _right?: QueryTermContext; - public constructor(ctx: QueryTermContext) { +export class TableArgumentTableContext extends TableArgumentRelationContext { + public constructor(ctx: TableArgumentRelationContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public queryTerm(): QueryTermContext[]; - public queryTerm(i: number): QueryTermContext | null; - public queryTerm(i?: number): QueryTermContext[] | QueryTermContext | null { - if (i === undefined) { - return this.getRuleContexts(QueryTermContext); - } - - return this.getRuleContext(i, QueryTermContext); + public KW_TABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; } - public KW_INTERSECT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INTERSECT, 0); + public tableRef(): TableRefContext { + return this.getRuleContext(0, TableRefContext)!; } - public setQuantifier(): SetQuantifierContext | null { - return this.getRuleContext(0, SetQuantifierContext); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } - public KW_UNION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_UNION, 0); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } - public KW_EXCEPT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EXCEPT, 0); + public columnAliases(): ColumnAliasesContext | null { + return this.getRuleContext(0, ColumnAliasesContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetOperation) { - listener.enterSetOperation(this); + if(listener.enterTableArgumentTable) { + listener.enterTableArgumentTable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetOperation) { - listener.exitSetOperation(this); + if(listener.exitTableArgumentTable) { + listener.exitTableArgumentTable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetOperation) { - return visitor.visitSetOperation(this); + if (visitor.visitTableArgumentTable) { + return visitor.visitTableArgumentTable(this); } else { return visitor.visitChildren(this); } @@ -17053,128 +25669,116 @@ export class SetOperationContext extends QueryTermContext { } -export class QueryPrimaryContext extends antlr.ParserRuleContext { +export class DescriptorArgumentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_queryPrimary; - } - public override copyFrom(ctx: QueryPrimaryContext): void { - super.copyFrom(ctx); - } -} -export class SubqueryContext extends QueryPrimaryContext { - public constructor(ctx: QueryPrimaryContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public queryNoWith(): QueryNoWithContext { - return this.getRuleContext(0, QueryNoWithContext)!; + public KW_DESCRIPTOR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DESCRIPTOR, 0)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubquery) { - listener.enterSubquery(this); + public descriptorField(): DescriptorFieldContext[]; + public descriptorField(i: number): DescriptorFieldContext | null; + public descriptorField(i?: number): DescriptorFieldContext[] | DescriptorFieldContext | null { + if (i === undefined) { + return this.getRuleContexts(DescriptorFieldContext); } + + return this.getRuleContext(i, DescriptorFieldContext); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubquery) { - listener.exitSubquery(this); - } + public KW_CAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CAST, 0); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubquery) { - return visitor.visitSubquery(this); - } else { - return visitor.visitChildren(this); - } + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); } -} -export class QueryPrimaryDefaultContext extends QueryPrimaryContext { - public constructor(ctx: QueryPrimaryContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); } - public querySpecification(): QuerySpecificationContext { - return this.getRuleContext(0, QuerySpecificationContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_descriptorArgument; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQueryPrimaryDefault) { - listener.enterQueryPrimaryDefault(this); + if(listener.enterDescriptorArgument) { + listener.enterDescriptorArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQueryPrimaryDefault) { - listener.exitQueryPrimaryDefault(this); + if(listener.exitDescriptorArgument) { + listener.exitDescriptorArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQueryPrimaryDefault) { - return visitor.visitQueryPrimaryDefault(this); + if (visitor.visitDescriptorArgument) { + return visitor.visitDescriptorArgument(this); } else { return visitor.visitChildren(this); } } } -export class TableContext extends QueryPrimaryContext { - public constructor(ctx: QueryPrimaryContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class DescriptorFieldContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_TABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TABLE, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public tableName(): TableNameContext { - return this.getRuleContext(0, TableNameContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_descriptorField; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTable) { - listener.enterTable(this); + if(listener.enterDescriptorField) { + listener.enterDescriptorField(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTable) { - listener.exitTable(this); + if(listener.exitDescriptorField) { + listener.exitDescriptorField(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTable) { - return visitor.visitTable(this); + if (visitor.visitDescriptorField) { + return visitor.visitDescriptorField(this); } else { return visitor.visitChildren(this); } } } -export class InlineTableContext extends QueryPrimaryContext { - public constructor(ctx: QueryPrimaryContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_VALUES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VALUES, 0)!; + + +export class CopartitionTablesContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + public qualifiedName(): QualifiedNameContext[]; + public qualifiedName(i: number): QualifiedNameContext | null; + public qualifiedName(i?: number): QualifiedNameContext[] | QualifiedNameContext | null { if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + return this.getRuleContexts(QualifiedNameContext); } - return this.getRuleContext(i, ExpressionContext); + return this.getRuleContext(i, QualifiedNameContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_copartitionTables; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterInlineTable) { - listener.enterInlineTable(this); + if(listener.enterCopartitionTables) { + listener.enterCopartitionTables(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitInlineTable) { - listener.exitInlineTable(this); + if(listener.exitCopartitionTables) { + listener.exitCopartitionTables(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitInlineTable) { - return visitor.visitInlineTable(this); + if (visitor.visitCopartitionTables) { + return visitor.visitCopartitionTables(this); } else { return visitor.visitChildren(this); } @@ -17182,49 +25786,29 @@ export class InlineTableContext extends QueryPrimaryContext { } -export class SortItemContext extends antlr.ParserRuleContext { - public _ordering?: Token | null; - public _nullOrdering?: Token | null; +export class ExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public columnName(): ColumnNameContext | null { - return this.getRuleContext(0, ColumnNameContext); - } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); - } - public KW_NULLS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NULLS, 0); - } - public KW_ASC(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ASC, 0); - } - public KW_DESC(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DESC, 0); - } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FIRST, 0); - } - public KW_LAST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LAST, 0); + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_sortItem; + return TrinoSqlParser.RULE_expression; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSortItem) { - listener.enterSortItem(this); + if(listener.enterExpression) { + listener.enterExpression(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSortItem) { - listener.exitSortItem(this); + if(listener.exitExpression) { + listener.exitExpression(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSortItem) { - return visitor.visitSortItem(this); + if (visitor.visitExpression) { + return visitor.visitExpression(this); } else { return visitor.visitChildren(this); } @@ -17232,65 +25816,80 @@ export class SortItemContext extends antlr.ParserRuleContext { } -export class QuerySpecificationContext extends antlr.ParserRuleContext { - public _where?: BooleanExpressionContext; - public _having?: BooleanExpressionContext; +export class BooleanExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_SELECT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SELECT, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_booleanExpression; } - public selectItem(): SelectItemContext[]; - public selectItem(i: number): SelectItemContext | null; - public selectItem(i?: number): SelectItemContext[] | SelectItemContext | null { - if (i === undefined) { - return this.getRuleContexts(SelectItemContext); - } - - return this.getRuleContext(i, SelectItemContext); + public override copyFrom(ctx: BooleanExpressionContext): void { + super.copyFrom(ctx); } - public setQuantifier(): SetQuantifierContext | null { - return this.getRuleContext(0, SetQuantifierContext); +} +export class LogicalNotContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_FROM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FROM, 0); + public KW_NOT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NOT, 0)!; } - public relation(): RelationContext[]; - public relation(i: number): RelationContext | null; - public relation(i?: number): RelationContext[] | RelationContext | null { - if (i === undefined) { - return this.getRuleContexts(RelationContext); + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterLogicalNot) { + listener.enterLogicalNot(this); } - - return this.getRuleContext(i, RelationContext); } - public KW_WHERE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WHERE, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitLogicalNot) { + listener.exitLogicalNot(this); + } } - public KW_GROUP(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GROUP, 0); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitLogicalNot) { + return visitor.visitLogicalNot(this); + } else { + return visitor.visitChildren(this); + } } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BY, 0); +} +export class PredicatedContext extends BooleanExpressionContext { + public _valueExpression?: ValueExpressionContext; + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public groupBy(): GroupByContext | null { - return this.getRuleContext(0, GroupByContext); + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public KW_HAVING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_HAVING, 0); + public predicate(): PredicateContext | null { + return this.getRuleContext(0, PredicateContext); } - public KW_WINDOW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WINDOW, 0); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterPredicated) { + listener.enterPredicated(this); + } } - public windowDefinition(): WindowDefinitionContext[]; - public windowDefinition(i: number): WindowDefinitionContext | null; - public windowDefinition(i?: number): WindowDefinitionContext[] | WindowDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(WindowDefinitionContext); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitPredicated) { + listener.exitPredicated(this); } - - return this.getRuleContext(i, WindowDefinitionContext); + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitPredicated) { + return visitor.visitPredicated(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class OrContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } public booleanExpression(): BooleanExpressionContext[]; public booleanExpression(i: number): BooleanExpressionContext | null; @@ -17301,61 +25900,57 @@ export class QuerySpecificationContext extends antlr.ParserRuleContext { return this.getRuleContext(i, BooleanExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_querySpecification; + public KW_OR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_OR, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQuerySpecification) { - listener.enterQuerySpecification(this); + if(listener.enterOr) { + listener.enterOr(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQuerySpecification) { - listener.exitQuerySpecification(this); + if(listener.exitOr) { + listener.exitOr(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQuerySpecification) { - return visitor.visitQuerySpecification(this); + if (visitor.visitOr) { + return visitor.visitOr(this); } else { return visitor.visitChildren(this); } } } - - -export class GroupByContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class AndContext extends BooleanExpressionContext { + public constructor(ctx: BooleanExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public groupingElement(): GroupingElementContext[]; - public groupingElement(i: number): GroupingElementContext | null; - public groupingElement(i?: number): GroupingElementContext[] | GroupingElementContext | null { + public booleanExpression(): BooleanExpressionContext[]; + public booleanExpression(i: number): BooleanExpressionContext | null; + public booleanExpression(i?: number): BooleanExpressionContext[] | BooleanExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(GroupingElementContext); + return this.getRuleContexts(BooleanExpressionContext); } - return this.getRuleContext(i, GroupingElementContext); - } - public setQuantifier(): SetQuantifierContext | null { - return this.getRuleContext(0, SetQuantifierContext); + return this.getRuleContext(i, BooleanExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_groupBy; + public KW_AND(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AND, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGroupBy) { - listener.enterGroupBy(this); + if(listener.enterAnd) { + listener.enterAnd(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGroupBy) { - listener.exitGroupBy(this); + if(listener.exitAnd) { + listener.exitAnd(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGroupBy) { - return visitor.visitGroupBy(this); + if (visitor.visitAnd) { + return visitor.visitAnd(this); } else { return visitor.visitChildren(this); } @@ -17363,215 +25958,304 @@ export class GroupByContext extends antlr.ParserRuleContext { } -export class GroupingElementContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { +export class PredicateContext extends antlr.ParserRuleContext { + public value: antlr.ParserRuleContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number, value: antlr.ParserRuleContext) { super(parent, invokingState); + this.value = value; } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_groupingElement; + return TrinoSqlParser.RULE_predicate; } - public override copyFrom(ctx: GroupingElementContext): void { + public override copyFrom(ctx: PredicateContext): void { super.copyFrom(ctx); + this.value = ctx.value; } } -export class MultipleGroupingSetsContext extends GroupingElementContext { - public constructor(ctx: GroupingElementContext) { - super(ctx.parent, ctx.invokingState); +export class ComparisonContext extends PredicateContext { + public _right?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); super.copyFrom(ctx); } - public KW_GROUPING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_GROUPING, 0)!; + public comparisonOperator(): ComparisonOperatorContext { + return this.getRuleContext(0, ComparisonOperatorContext)!; } - public KW_SETS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SETS, 0)!; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public groupingSet(): GroupingSetContext[]; - public groupingSet(i: number): GroupingSetContext | null; - public groupingSet(i?: number): GroupingSetContext[] | GroupingSetContext | null { + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterComparison) { + listener.enterComparison(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitComparison) { + listener.exitComparison(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitComparison) { + return visitor.visitComparison(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class LikeContext extends PredicateContext { + public _pattern?: ValueExpressionContext; + public _escape?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); + } + public KW_LIKE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LIKE, 0)!; + } + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(GroupingSetContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, GroupingSetContext); + return this.getRuleContext(i, ValueExpressionContext); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); + } + public KW_ESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterLike) { + listener.enterLike(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitLike) { + listener.exitLike(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitLike) { + return visitor.visitLike(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class InSubqueryContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); + } + public KW_IN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IN, 0)!; + } + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMultipleGroupingSets) { - listener.enterMultipleGroupingSets(this); + if(listener.enterInSubquery) { + listener.enterInSubquery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMultipleGroupingSets) { - listener.exitMultipleGroupingSets(this); + if(listener.exitInSubquery) { + listener.exitInSubquery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMultipleGroupingSets) { - return visitor.visitMultipleGroupingSets(this); + if (visitor.visitInSubquery) { + return visitor.visitInSubquery(this); } else { return visitor.visitChildren(this); } } } -export class SingleGroupingSetContext extends GroupingElementContext { - public constructor(ctx: GroupingElementContext) { - super(ctx.parent, ctx.invokingState); +export class DistinctFromContext extends PredicateContext { + public _right?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); super.copyFrom(ctx); } - public groupingSet(): GroupingSetContext { - return this.getRuleContext(0, GroupingSetContext)!; + public KW_IS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IS, 0)!; + } + public KW_DISTINCT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DISTINCT, 0)!; + } + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSingleGroupingSet) { - listener.enterSingleGroupingSet(this); + if(listener.enterDistinctFrom) { + listener.enterDistinctFrom(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSingleGroupingSet) { - listener.exitSingleGroupingSet(this); + if(listener.exitDistinctFrom) { + listener.exitDistinctFrom(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSingleGroupingSet) { - return visitor.visitSingleGroupingSet(this); + if (visitor.visitDistinctFrom) { + return visitor.visitDistinctFrom(this); } else { return visitor.visitChildren(this); } } } -export class CubeContext extends GroupingElementContext { - public constructor(ctx: GroupingElementContext) { - super(ctx.parent, ctx.invokingState); +export class InListContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); super.copyFrom(ctx); } - public KW_CUBE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CUBE, 0)!; + public KW_IN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IN, 0)!; } - public groupingTerm(): GroupingTermContext[]; - public groupingTerm(i: number): GroupingTermContext | null; - public groupingTerm(i?: number): GroupingTermContext[] | GroupingTermContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(GroupingTermContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, GroupingTermContext); + return this.getRuleContext(i, ExpressionContext); + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCube) { - listener.enterCube(this); + if(listener.enterInList) { + listener.enterInList(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCube) { - listener.exitCube(this); + if(listener.exitInList) { + listener.exitInList(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCube) { - return visitor.visitCube(this); + if (visitor.visitInList) { + return visitor.visitInList(this); } else { return visitor.visitChildren(this); } } } -export class RollupContext extends GroupingElementContext { - public constructor(ctx: GroupingElementContext) { - super(ctx.parent, ctx.invokingState); +export class NullPredicateContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); super.copyFrom(ctx); } - public KW_ROLLUP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROLLUP, 0)!; + public KW_IS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IS, 0)!; } - public groupingTerm(): GroupingTermContext[]; - public groupingTerm(i: number): GroupingTermContext | null; - public groupingTerm(i?: number): GroupingTermContext[] | GroupingTermContext | null { - if (i === undefined) { - return this.getRuleContexts(GroupingTermContext); - } - - return this.getRuleContext(i, GroupingTermContext); + public KW_NULL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NULL, 0)!; + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRollup) { - listener.enterRollup(this); + if(listener.enterNullPredicate) { + listener.enterNullPredicate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRollup) { - listener.exitRollup(this); + if(listener.exitNullPredicate) { + listener.exitNullPredicate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRollup) { - return visitor.visitRollup(this); + if (visitor.visitNullPredicate) { + return visitor.visitNullPredicate(this); } else { return visitor.visitChildren(this); } } } - - -export class GroupingSetContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class BetweenContext extends PredicateContext { + public _lower?: ValueExpressionContext; + public _upper?: ValueExpressionContext; + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } - public groupingTerm(): GroupingTermContext[]; - public groupingTerm(i: number): GroupingTermContext | null; - public groupingTerm(i?: number): GroupingTermContext[] | GroupingTermContext | null { + public KW_BETWEEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_BETWEEN, 0)!; + } + public KW_AND(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AND, 0)!; + } + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(GroupingTermContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, GroupingTermContext); + return this.getRuleContext(i, ValueExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_groupingSet; + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGroupingSet) { - listener.enterGroupingSet(this); + if(listener.enterBetween) { + listener.enterBetween(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGroupingSet) { - listener.exitGroupingSet(this); + if(listener.exitBetween) { + listener.exitBetween(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGroupingSet) { - return visitor.visitGroupingSet(this); + if (visitor.visitBetween) { + return visitor.visitBetween(this); } else { return visitor.visitChildren(this); } } } - - -export class GroupingTermContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class QuantifiedComparisonContext extends PredicateContext { + public constructor(ctx: PredicateContext) { + super(ctx.parent, ctx.invokingState, ctx.value); + super.copyFrom(ctx); } - public columnName(): ColumnNameContext | null { - return this.getRuleContext(0, ColumnNameContext); + public comparisonOperator(): ComparisonOperatorContext { + return this.getRuleContext(0, ComparisonOperatorContext)!; } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); + public comparisonQuantifier(): ComparisonQuantifierContext { + return this.getRuleContext(0, ComparisonQuantifierContext)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_groupingTerm; + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGroupingTerm) { - listener.enterGroupingTerm(this); + if(listener.enterQuantifiedComparison) { + listener.enterQuantifiedComparison(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGroupingTerm) { - listener.exitGroupingTerm(this); + if(listener.exitQuantifiedComparison) { + listener.exitQuantifiedComparison(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGroupingTerm) { - return visitor.visitGroupingTerm(this); + if (visitor.visitQuantifiedComparison) { + return visitor.visitQuantifiedComparison(this); } else { return visitor.visitChildren(this); } @@ -17579,178 +26263,190 @@ export class GroupingTermContext extends antlr.ParserRuleContext { } -export class WindowDefinitionContext extends antlr.ParserRuleContext { - public _name?: IdentifierContext; +export class ValueExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_valueExpression; } - public windowSpecification(): WindowSpecificationContext { - return this.getRuleContext(0, WindowSpecificationContext)!; + public override copyFrom(ctx: ValueExpressionContext): void { + super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; +} +export class ValueExpressionDefaultContext extends ValueExpressionContext { + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_windowDefinition; + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterWindowDefinition) { - listener.enterWindowDefinition(this); + if(listener.enterValueExpressionDefault) { + listener.enterValueExpressionDefault(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitWindowDefinition) { - listener.exitWindowDefinition(this); + if(listener.exitValueExpressionDefault) { + listener.exitValueExpressionDefault(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitValueExpressionDefault) { + return visitor.visitValueExpressionDefault(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class ConcatenationContext extends ValueExpressionContext { + public _left?: ValueExpressionContext; + public _right?: ValueExpressionContext; + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public CONCAT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.CONCAT, 0)!; + } + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ValueExpressionContext); + } + + return this.getRuleContext(i, ValueExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterConcatenation) { + listener.enterConcatenation(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitConcatenation) { + listener.exitConcatenation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitWindowDefinition) { - return visitor.visitWindowDefinition(this); + if (visitor.visitConcatenation) { + return visitor.visitConcatenation(this); } else { return visitor.visitChildren(this); } } } - - -export class WindowSpecificationContext extends antlr.ParserRuleContext { - public _existingWindowName?: IdentifierContext; - public _expression?: ExpressionContext; - public _partition: ExpressionContext[] = []; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_PARTITION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PARTITION, 0); - } - public KW_BY(): antlr.TerminalNode[]; - public KW_BY(i: number): antlr.TerminalNode | null; - public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_BY); - } else { - return this.getToken(TrinoSqlParser.KW_BY, i); - } - } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ORDER, 0); +export class ArithmeticBinaryContext extends ValueExpressionContext { + public _left?: ValueExpressionContext; + public _operator?: Token | null; + public _right?: ValueExpressionContext; + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public sortItem(): SortItemContext[]; - public sortItem(i: number): SortItemContext | null; - public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(SortItemContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, SortItemContext); + return this.getRuleContext(i, ValueExpressionContext); } - public windowFrame(): WindowFrameContext | null { - return this.getRuleContext(0, WindowFrameContext); + public ASTERISK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.ASTERISK, 0); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public SLASH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.SLASH, 0); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); + public PERCENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.PERCENT, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_windowSpecification; + public PLUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.PLUS, 0); + } + public MINUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.MINUS, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterWindowSpecification) { - listener.enterWindowSpecification(this); + if(listener.enterArithmeticBinary) { + listener.enterArithmeticBinary(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitWindowSpecification) { - listener.exitWindowSpecification(this); + if(listener.exitArithmeticBinary) { + listener.exitArithmeticBinary(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitWindowSpecification) { - return visitor.visitWindowSpecification(this); + if (visitor.visitArithmeticBinary) { + return visitor.visitArithmeticBinary(this); } else { return visitor.visitChildren(this); } } } - - -export class NamedQueryContext extends antlr.ParserRuleContext { - public _name?: IdentifierContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; - } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; +export class ArithmeticUnaryContext extends ValueExpressionContext { + public _operator?: Token | null; + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public columnAliases(): ColumnAliasesContext | null { - return this.getRuleContext(0, ColumnAliasesContext); + public MINUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.MINUS, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_namedQuery; + public PLUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.PLUS, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNamedQuery) { - listener.enterNamedQuery(this); + if(listener.enterArithmeticUnary) { + listener.enterArithmeticUnary(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNamedQuery) { - listener.exitNamedQuery(this); + if(listener.exitArithmeticUnary) { + listener.exitArithmeticUnary(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNamedQuery) { - return visitor.visitNamedQuery(this); + if (visitor.visitArithmeticUnary) { + return visitor.visitArithmeticUnary(this); } else { return visitor.visitChildren(this); } } } - - -export class SetQuantifierContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class AtTimeZoneContext extends ValueExpressionContext { + public constructor(ctx: ValueExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_DISTINCT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DISTINCT, 0); + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public KW_AT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AT, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_setQuantifier; + public timeZoneSpecifier(): TimeZoneSpecifierContext { + return this.getRuleContext(0, TimeZoneSpecifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSetQuantifier) { - listener.enterSetQuantifier(this); + if(listener.enterAtTimeZone) { + listener.enterAtTimeZone(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSetQuantifier) { - listener.exitSetQuantifier(this); + if(listener.exitAtTimeZone) { + listener.exitAtTimeZone(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSetQuantifier) { - return visitor.visitSetQuantifier(this); + if (visitor.visitAtTimeZone) { + return visitor.visitAtTimeZone(this); } else { return visitor.visitChildren(this); } @@ -17758,896 +26454,894 @@ export class SetQuantifierContext extends antlr.ParserRuleContext { } -export class SelectItemContext extends antlr.ParserRuleContext { +export class PrimaryExpressionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_selectItem; + return TrinoSqlParser.RULE_primaryExpression; } - public override copyFrom(ctx: SelectItemContext): void { + public override copyFrom(ctx: PrimaryExpressionContext): void { super.copyFrom(ctx); } } -export class SelectAllContext extends SelectItemContext { - public constructor(ctx: SelectItemContext) { +export class DereferenceContext extends PrimaryExpressionContext { + public _base?: PrimaryExpressionContext; + public _fieldName?: IdentifierContext; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public primaryExpression(): PrimaryExpressionContext | null { - return this.getRuleContext(0, PrimaryExpressionContext); - } - public ASTERISK(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.ASTERISK, 0)!; - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AS, 0); + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; } - public columnAliases(): ColumnAliasesContext | null { - return this.getRuleContext(0, ColumnAliasesContext); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSelectAll) { - listener.enterSelectAll(this); + if(listener.enterDereference) { + listener.enterDereference(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSelectAll) { - listener.exitSelectAll(this); + if(listener.exitDereference) { + listener.exitDereference(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSelectAll) { - return visitor.visitSelectAll(this); + if (visitor.visitDereference) { + return visitor.visitDereference(this); } else { return visitor.visitChildren(this); } } } -export class SelectSingleContext extends SelectItemContext { - public constructor(ctx: SelectItemContext) { +export class TypeConstructorContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public columnName(): ColumnNameContext | null { - return this.getRuleContext(0, ColumnNameContext); - } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); - } public identifier(): IdentifierContext | null { return this.getRuleContext(0, IdentifierContext); } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AS, 0); - } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSelectSingle) { - listener.enterSelectSingle(this); - } - } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSelectSingle) { - listener.exitSelectSingle(this); - } - } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSelectSingle) { - return visitor.visitSelectSingle(this); - } else { - return visitor.visitChildren(this); - } - } -} - - -export class RelationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_relation; - } - public override copyFrom(ctx: RelationContext): void { - super.copyFrom(ctx); + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; } -} -export class RelationDefaultContext extends RelationContext { - public constructor(ctx: RelationContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_DOUBLE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DOUBLE, 0); } - public sampledRelation(): SampledRelationContext { - return this.getRuleContext(0, SampledRelationContext)!; + public KW_PRECISION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRECISION, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRelationDefault) { - listener.enterRelationDefault(this); + if(listener.enterTypeConstructor) { + listener.enterTypeConstructor(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRelationDefault) { - listener.exitRelationDefault(this); + if(listener.exitTypeConstructor) { + listener.exitTypeConstructor(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRelationDefault) { - return visitor.visitRelationDefault(this); + if (visitor.visitTypeConstructor) { + return visitor.visitTypeConstructor(this); } else { return visitor.visitChildren(this); } } } -export class JoinRelationContext extends RelationContext { - public _left?: RelationContext; - public _right?: SampledRelationContext; - public _rightRelation?: RelationContext; - public constructor(ctx: RelationContext) { +export class JsonValueContext extends PrimaryExpressionContext { + public _emptyBehavior?: JsonValueBehaviorContext; + public _errorBehavior?: JsonValueBehaviorContext; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public relation(): RelationContext[]; - public relation(i: number): RelationContext | null; - public relation(i?: number): RelationContext[] | RelationContext | null { - if (i === undefined) { - return this.getRuleContexts(RelationContext); - } - - return this.getRuleContext(i, RelationContext); + public KW_JSON_VALUE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_VALUE, 0)!; } - public KW_CROSS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CROSS, 0); + public jsonPathInvocation(): JsonPathInvocationContext { + return this.getRuleContext(0, JsonPathInvocationContext)!; } - public KW_JOIN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_JOIN, 0); + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNING, 0); } - public joinType(): JoinTypeContext | null { - return this.getRuleContext(0, JoinTypeContext); + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public joinCriteria(): JoinCriteriaContext | null { - return this.getRuleContext(0, JoinCriteriaContext); + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ON); + } else { + return this.getToken(TrinoSqlParser.KW_ON, i); + } } - public KW_NATURAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NATURAL, 0); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public sampledRelation(): SampledRelationContext | null { - return this.getRuleContext(0, SampledRelationContext); + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); + } + public jsonValueBehavior(): JsonValueBehaviorContext[]; + public jsonValueBehavior(i: number): JsonValueBehaviorContext | null; + public jsonValueBehavior(i?: number): JsonValueBehaviorContext[] | JsonValueBehaviorContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonValueBehaviorContext); + } + + return this.getRuleContext(i, JsonValueBehaviorContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterJoinRelation) { - listener.enterJoinRelation(this); + if(listener.enterJsonValue) { + listener.enterJsonValue(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitJoinRelation) { - listener.exitJoinRelation(this); + if(listener.exitJsonValue) { + listener.exitJsonValue(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitJoinRelation) { - return visitor.visitJoinRelation(this); + if (visitor.visitJsonValue) { + return visitor.visitJsonValue(this); } else { return visitor.visitChildren(this); } } } - - -export class JoinTypeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_INNER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INNER, 0); - } - public KW_LEFT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LEFT, 0); - } - public KW_OUTER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OUTER, 0); - } - public KW_RIGHT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RIGHT, 0); - } - public KW_FULL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FULL, 0); +export class CurrentDateContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_joinType; + public KW_CURRENT_DATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_DATE, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterJoinType) { - listener.enterJoinType(this); + if(listener.enterCurrentDate) { + listener.enterCurrentDate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitJoinType) { - listener.exitJoinType(this); + if(listener.exitCurrentDate) { + listener.exitCurrentDate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitJoinType) { - return visitor.visitJoinType(this); + if (visitor.visitCurrentDate) { + return visitor.visitCurrentDate(this); } else { return visitor.visitChildren(this); } } } - - -export class JoinCriteriaContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_ON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ON, 0); - } - public booleanExpression(): BooleanExpressionContext | null { - return this.getRuleContext(0, BooleanExpressionContext); +export class SubstringContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_USING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_USING, 0); + public KW_SUBSTRING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SUBSTRING, 0)!; } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(IdentifierContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, IdentifierContext); + return this.getRuleContext(i, ValueExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_joinCriteria; + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public KW_FOR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FOR, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterJoinCriteria) { - listener.enterJoinCriteria(this); + if(listener.enterSubstring) { + listener.enterSubstring(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitJoinCriteria) { - listener.exitJoinCriteria(this); + if(listener.exitSubstring) { + listener.exitSubstring(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitJoinCriteria) { - return visitor.visitJoinCriteria(this); + if (visitor.visitSubstring) { + return visitor.visitSubstring(this); } else { return visitor.visitChildren(this); } } } - - -export class SampledRelationContext extends antlr.ParserRuleContext { - public _percentage?: ExpressionContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class CastContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public patternRecognition(): PatternRecognitionContext { - return this.getRuleContext(0, PatternRecognitionContext)!; + public KW_CAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CAST, 0); } - public KW_TABLESAMPLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TABLESAMPLE, 0); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public sampleType(): SampleTypeContext | null { - return this.getRuleContext(0, SampleTypeContext); + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_sampledRelation; + public KW_TRY_CAST(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRY_CAST, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSampledRelation) { - listener.enterSampledRelation(this); + if(listener.enterCast) { + listener.enterCast(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSampledRelation) { - listener.exitSampledRelation(this); + if(listener.exitCast) { + listener.exitCast(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSampledRelation) { - return visitor.visitSampledRelation(this); + if (visitor.visitCast) { + return visitor.visitCast(this); } else { return visitor.visitChildren(this); } } } - - -export class SampleTypeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_BERNOULLI(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BERNOULLI, 0); +export class LambdaContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_SYSTEM(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SYSTEM, 0); + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_sampleType; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSampleType) { - listener.enterSampleType(this); + if(listener.enterLambda) { + listener.enterLambda(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSampleType) { - listener.exitSampleType(this); + if(listener.exitLambda) { + listener.exitLambda(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSampleType) { - return visitor.visitSampleType(this); + if (visitor.visitLambda) { + return visitor.visitLambda(this); } else { return visitor.visitChildren(this); } } } - - -export class PatternRecognitionContext extends antlr.ParserRuleContext { - public _expression?: ExpressionContext; - public _partition: ExpressionContext[] = []; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public aliasedRelation(): AliasedRelationContext { - return this.getRuleContext(0, AliasedRelationContext)!; - } - public KW_MATCH_RECOGNIZE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MATCH_RECOGNIZE, 0); - } - public KW_PATTERN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PATTERN, 0); - } - public rowPattern(): RowPatternContext | null { - return this.getRuleContext(0, RowPatternContext); +export class ParenthesizedExpressionContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_DEFINE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DEFINE, 0); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public variableDefinition(): VariableDefinitionContext[]; - public variableDefinition(i: number): VariableDefinitionContext | null; - public variableDefinition(i?: number): VariableDefinitionContext[] | VariableDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(VariableDefinitionContext); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterParenthesizedExpression) { + listener.enterParenthesizedExpression(this); } - - return this.getRuleContext(i, VariableDefinitionContext); - } - public KW_PARTITION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PARTITION, 0); - } - public KW_BY(): antlr.TerminalNode[]; - public KW_BY(i: number): antlr.TerminalNode | null; - public KW_BY(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_BY); - } else { - return this.getToken(TrinoSqlParser.KW_BY, i); - } } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ORDER, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitParenthesizedExpression) { + listener.exitParenthesizedExpression(this); + } } - public sortItem(): SortItemContext[]; - public sortItem(i: number): SortItemContext | null; - public sortItem(i?: number): SortItemContext[] | SortItemContext | null { - if (i === undefined) { - return this.getRuleContexts(SortItemContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitParenthesizedExpression) { + return visitor.visitParenthesizedExpression(this); + } else { + return visitor.visitChildren(this); } - - return this.getRuleContext(i, SortItemContext); } - public KW_MEASURES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MEASURES, 0); +} +export class TrimContext extends PrimaryExpressionContext { + public _trimChar?: ValueExpressionContext; + public _trimSource?: ValueExpressionContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public measureDefinition(): MeasureDefinitionContext[]; - public measureDefinition(i: number): MeasureDefinitionContext | null; - public measureDefinition(i?: number): MeasureDefinitionContext[] | MeasureDefinitionContext | null { + public KW_TRIM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TRIM, 0)!; + } + public valueExpression(): ValueExpressionContext[]; + public valueExpression(i: number): ValueExpressionContext | null; + public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(MeasureDefinitionContext); + return this.getRuleContexts(ValueExpressionContext); } - return this.getRuleContext(i, MeasureDefinitionContext); - } - public rowsPerMatch(): RowsPerMatchContext | null { - return this.getRuleContext(0, RowsPerMatchContext); + return this.getRuleContext(i, ValueExpressionContext); } - public KW_AFTER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AFTER, 0); + public KW_FROM(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FROM, 0); } - public KW_MATCH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MATCH, 0); + public trimsSpecification(): TrimsSpecificationContext | null { + return this.getRuleContext(0, TrimsSpecificationContext); } - public skipTo(): SkipToContext | null { - return this.getRuleContext(0, SkipToContext); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterTrim) { + listener.enterTrim(this); + } } - public KW_SUBSET(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SUBSET, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitTrim) { + listener.exitTrim(this); + } } - public subsetDefinition(): SubsetDefinitionContext[]; - public subsetDefinition(i: number): SubsetDefinitionContext | null; - public subsetDefinition(i?: number): SubsetDefinitionContext[] | SubsetDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(SubsetDefinitionContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitTrim) { + return visitor.visitTrim(this); + } else { + return visitor.visitChildren(this); } - - return this.getRuleContext(i, SubsetDefinitionContext); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); +} +export class ParameterContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + public QUESTION_MARK(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.QUESTION_MARK, 0)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterParameter) { + listener.enterParameter(this); } - - return this.getRuleContext(i, ExpressionContext); } - public KW_INITIAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INITIAL, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitParameter) { + listener.exitParameter(this); + } } - public KW_SEEK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SEEK, 0); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitParameter) { + return visitor.visitParameter(this); + } else { + return visitor.visitChildren(this); + } } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AS, 0); +} +export class NormalizeContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public columnAliases(): ColumnAliasesContext | null { - return this.getRuleContext(0, ColumnAliasesContext); + public KW_NORMALIZE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NORMALIZE, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_patternRecognition; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public normalForm(): NormalFormContext | null { + return this.getRuleContext(0, NormalFormContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPatternRecognition) { - listener.enterPatternRecognition(this); + if(listener.enterNormalize) { + listener.enterNormalize(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPatternRecognition) { - listener.exitPatternRecognition(this); + if(listener.exitNormalize) { + listener.exitNormalize(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPatternRecognition) { - return visitor.visitPatternRecognition(this); + if (visitor.visitNormalize) { + return visitor.visitNormalize(this); } else { return visitor.visitChildren(this); } } } - - -export class MeasureDefinitionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; +export class LocalTimestampContext extends PrimaryExpressionContext { + public _name?: Token | null; + public _precision?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_LOCALTIMESTAMP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LOCALTIMESTAMP, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_measureDefinition; + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMeasureDefinition) { - listener.enterMeasureDefinition(this); + if(listener.enterLocalTimestamp) { + listener.enterLocalTimestamp(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMeasureDefinition) { - listener.exitMeasureDefinition(this); + if(listener.exitLocalTimestamp) { + listener.exitLocalTimestamp(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMeasureDefinition) { - return visitor.visitMeasureDefinition(this); + if (visitor.visitLocalTimestamp) { + return visitor.visitLocalTimestamp(this); } else { return visitor.visitChildren(this); } } } +export class JsonObjectContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_JSON_OBJECT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_OBJECT, 0)!; + } + public jsonObjectMember(): JsonObjectMemberContext[]; + public jsonObjectMember(i: number): JsonObjectMemberContext | null; + public jsonObjectMember(i?: number): JsonObjectMemberContext[] | JsonObjectMemberContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonObjectMemberContext); + } - -export class RowsPerMatchContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, JsonObjectMemberContext); } - public KW_ONE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ONE, 0); + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNING, 0); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROW, 0); + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public KW_PER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PER, 0)!; + public KW_NULL(): antlr.TerminalNode[]; + public KW_NULL(i: number): antlr.TerminalNode | null; + public KW_NULL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_NULL); + } else { + return this.getToken(TrinoSqlParser.KW_NULL, i); + } } - public KW_MATCH(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATCH, 0)!; + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public KW_ABSENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ABSENT, 0); } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROWS, 0); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public emptyMatchHandling(): EmptyMatchHandlingContext | null { - return this.getRuleContext(0, EmptyMatchHandlingContext); + public KW_UNIQUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNIQUE, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_rowsPerMatch; + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); + } + public KW_FORMAT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0); + } + public jsonRepresentation(): JsonRepresentationContext | null { + return this.getRuleContext(0, JsonRepresentationContext); + } + public KW_KEYS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEYS, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRowsPerMatch) { - listener.enterRowsPerMatch(this); + if(listener.enterJsonObject) { + listener.enterJsonObject(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRowsPerMatch) { - listener.exitRowsPerMatch(this); + if(listener.exitJsonObject) { + listener.exitJsonObject(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRowsPerMatch) { - return visitor.visitRowsPerMatch(this); + if (visitor.visitJsonObject) { + return visitor.visitJsonObject(this); } else { return visitor.visitChildren(this); } } } - - -export class EmptyMatchHandlingContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class IntervalLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_SHOW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SHOW, 0); + public interval(): IntervalContext { + return this.getRuleContext(0, IntervalContext)!; } - public KW_EMPTY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_EMPTY, 0); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterIntervalLiteral) { + listener.enterIntervalLiteral(this); + } } - public KW_MATCHES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MATCHES, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitIntervalLiteral) { + listener.exitIntervalLiteral(this); + } } - public KW_OMIT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OMIT, 0); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitIntervalLiteral) { + return visitor.visitIntervalLiteral(this); + } else { + return visitor.visitChildren(this); + } } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); +} +export class NumericLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public number(): NumberContext { + return this.getRuleContext(0, NumberContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterNumericLiteral) { + listener.enterNumericLiteral(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitNumericLiteral) { + listener.exitNumericLiteral(this); + } } - public KW_UNMATCHED(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_UNMATCHED, 0); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitNumericLiteral) { + return visitor.visitNumericLiteral(this); + } else { + return visitor.visitChildren(this); + } } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROWS, 0); +} +export class BooleanLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_emptyMatchHandling; + public booleanValue(): BooleanValueContext { + return this.getRuleContext(0, BooleanValueContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterEmptyMatchHandling) { - listener.enterEmptyMatchHandling(this); + if(listener.enterBooleanLiteral) { + listener.enterBooleanLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitEmptyMatchHandling) { - listener.exitEmptyMatchHandling(this); + if(listener.exitBooleanLiteral) { + listener.exitBooleanLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitEmptyMatchHandling) { - return visitor.visitEmptyMatchHandling(this); + if (visitor.visitBooleanLiteral) { + return visitor.visitBooleanLiteral(this); } else { return visitor.visitChildren(this); } } } - - -export class SkipToContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class JsonArrayContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TO, 0); + public KW_JSON_ARRAY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_ARRAY, 0)!; } - public KW_NEXT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NEXT, 0); + public jsonValueExpression(): JsonValueExpressionContext[]; + public jsonValueExpression(i: number): JsonValueExpressionContext | null; + public jsonValueExpression(i?: number): JsonValueExpressionContext[] | JsonValueExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonValueExpressionContext); + } + + return this.getRuleContext(i, JsonValueExpressionContext); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROW, 0); + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNING, 0); } - public KW_PAST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PAST, 0); + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public KW_LAST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LAST, 0); + public KW_NULL(): antlr.TerminalNode[]; + public KW_NULL(i: number): antlr.TerminalNode | null; + public KW_NULL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_NULL); + } else { + return this.getToken(TrinoSqlParser.KW_NULL, i); + } } - public KW_FIRST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FIRST, 0); + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public KW_ABSENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ABSENT, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_skipTo; + public KW_FORMAT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0); + } + public jsonRepresentation(): JsonRepresentationContext | null { + return this.getRuleContext(0, JsonRepresentationContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSkipTo) { - listener.enterSkipTo(this); + if(listener.enterJsonArray) { + listener.enterJsonArray(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSkipTo) { - listener.exitSkipTo(this); + if(listener.exitJsonArray) { + listener.exitJsonArray(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSkipTo) { - return visitor.visitSkipTo(this); + if (visitor.visitJsonArray) { + return visitor.visitJsonArray(this); } else { return visitor.visitChildren(this); } } } - - -export class SubsetDefinitionContext extends antlr.ParserRuleContext { - public _name?: IdentifierContext; - public _identifier?: IdentifierContext; - public _union: IdentifierContext[] = []; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class SimpleCaseContext extends PrimaryExpressionContext { + public _operand?: ExpressionContext; + public _elseExpression?: ExpressionContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public EQ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.EQ, 0)!; + public KW_CASE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CASE, 0)!; } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(IdentifierContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, IdentifierContext); + return this.getRuleContext(i, ExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_subsetDefinition; + public whenClause(): WhenClauseContext[]; + public whenClause(i: number): WhenClauseContext | null; + public whenClause(i?: number): WhenClauseContext[] | WhenClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(WhenClauseContext); + } + + return this.getRuleContext(i, WhenClauseContext); + } + public KW_ELSE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ELSE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubsetDefinition) { - listener.enterSubsetDefinition(this); + if(listener.enterSimpleCase) { + listener.enterSimpleCase(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubsetDefinition) { - listener.exitSubsetDefinition(this); + if(listener.exitSimpleCase) { + listener.exitSimpleCase(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubsetDefinition) { - return visitor.visitSubsetDefinition(this); + if (visitor.visitSimpleCase) { + return visitor.visitSimpleCase(this); } else { return visitor.visitChildren(this); } } } - - -export class VariableDefinitionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class ColumnReferenceContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext)!; } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; - } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_variableDefinition; - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterVariableDefinition) { - listener.enterVariableDefinition(this); + if(listener.enterColumnReference) { + listener.enterColumnReference(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitVariableDefinition) { - listener.exitVariableDefinition(this); + if(listener.exitColumnReference) { + listener.exitColumnReference(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitVariableDefinition) { - return visitor.visitVariableDefinition(this); + if (visitor.visitColumnReference) { + return visitor.visitColumnReference(this); } else { return visitor.visitChildren(this); } } } - - -export class AliasedRelationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public relationPrimary(): RelationPrimaryContext { - return this.getRuleContext(0, RelationPrimaryContext)!; - } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); - } - public KW_AS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AS, 0); - } - public columnAliases(): ColumnAliasesContext | null { - return this.getRuleContext(0, ColumnAliasesContext); +export class NullLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_aliasedRelation; + public KW_NULL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NULL, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterAliasedRelation) { - listener.enterAliasedRelation(this); + if(listener.enterNullLiteral) { + listener.enterNullLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitAliasedRelation) { - listener.exitAliasedRelation(this); + if(listener.exitNullLiteral) { + listener.exitNullLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitAliasedRelation) { - return visitor.visitAliasedRelation(this); + if (visitor.visitNullLiteral) { + return visitor.visitNullLiteral(this); } else { return visitor.visitChildren(this); } } } - - -export class ColumnListCreateContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class RowConstructorContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public columnNameCreate(): ColumnNameCreateContext[]; - public columnNameCreate(i: number): ColumnNameCreateContext | null; - public columnNameCreate(i?: number): ColumnNameCreateContext[] | ColumnNameCreateContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(ColumnNameCreateContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, ColumnNameCreateContext); + return this.getRuleContext(i, ExpressionContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_columnListCreate; + public KW_ROW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROW, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnListCreate) { - listener.enterColumnListCreate(this); + if(listener.enterRowConstructor) { + listener.enterRowConstructor(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnListCreate) { - listener.exitColumnListCreate(this); + if(listener.exitRowConstructor) { + listener.exitRowConstructor(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRowConstructor) { + return visitor.visitRowConstructor(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class SubscriptContext extends PrimaryExpressionContext { + public _value?: PrimaryExpressionContext; + public _index?: ValueExpressionContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public primaryExpression(): PrimaryExpressionContext { + return this.getRuleContext(0, PrimaryExpressionContext)!; + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSubscript) { + listener.enterSubscript(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSubscript) { + listener.exitSubscript(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnListCreate) { - return visitor.visitColumnListCreate(this); + if (visitor.visitSubscript) { + return visitor.visitSubscript(this); } else { return visitor.visitChildren(this); } } } - - -export class ColumnListContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class JsonExistsContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public columnName(): ColumnNameContext[]; - public columnName(i: number): ColumnNameContext | null; - public columnName(i?: number): ColumnNameContext[] | ColumnNameContext | null { - if (i === undefined) { - return this.getRuleContexts(ColumnNameContext); - } - - return this.getRuleContext(i, ColumnNameContext); + public KW_JSON_EXISTS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_EXISTS, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_columnList; + public jsonPathInvocation(): JsonPathInvocationContext { + return this.getRuleContext(0, JsonPathInvocationContext)!; + } + public jsonExistsErrorBehavior(): JsonExistsErrorBehaviorContext | null { + return this.getRuleContext(0, JsonExistsErrorBehaviorContext); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); + } + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnList) { - listener.enterColumnList(this); + if(listener.enterJsonExists) { + listener.enterJsonExists(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnList) { - listener.exitColumnList(this); + if(listener.exitJsonExists) { + listener.exitJsonExists(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnList) { - return visitor.visitColumnList(this); + if (visitor.visitJsonExists) { + return visitor.visitJsonExists(this); } else { return visitor.visitChildren(this); } } } - - -export class ColumnAliasesContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } - - return this.getRuleContext(i, IdentifierContext); +export class CurrentPathContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_columnAliases; + public KW_CURRENT_PATH(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_PATH, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnAliases) { - listener.enterColumnAliases(this); + if(listener.enterCurrentPath) { + listener.enterCurrentPath(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnAliases) { - listener.exitColumnAliases(this); + if(listener.exitCurrentPath) { + listener.exitCurrentPath(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnAliases) { - return visitor.visitColumnAliases(this); + if (visitor.visitCurrentPath) { + return visitor.visitCurrentPath(this); } else { return visitor.visitChildren(this); } } } - - -export class RelationPrimaryContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_relationPrimary; - } - public override copyFrom(ctx: RelationPrimaryContext): void { - super.copyFrom(ctx); - } -} -export class SubqueryRelationContext extends RelationPrimaryContext { - public constructor(ctx: RelationPrimaryContext) { +export class SubqueryExpressionContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } @@ -18655,530 +27349,517 @@ export class SubqueryRelationContext extends RelationPrimaryContext { return this.getRuleContext(0, QueryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubqueryRelation) { - listener.enterSubqueryRelation(this); + if(listener.enterSubqueryExpression) { + listener.enterSubqueryExpression(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubqueryRelation) { - listener.exitSubqueryRelation(this); + if(listener.exitSubqueryExpression) { + listener.exitSubqueryExpression(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubqueryRelation) { - return visitor.visitSubqueryRelation(this); + if (visitor.visitSubqueryExpression) { + return visitor.visitSubqueryExpression(this); } else { return visitor.visitChildren(this); } } } -export class ParenthesizedRelationContext extends RelationPrimaryContext { - public constructor(ctx: RelationPrimaryContext) { +export class BinaryLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public relation(): RelationContext { - return this.getRuleContext(0, RelationContext)!; + public BINARY_LITERAL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.BINARY_LITERAL, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterParenthesizedRelation) { - listener.enterParenthesizedRelation(this); + if(listener.enterBinaryLiteral) { + listener.enterBinaryLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitParenthesizedRelation) { - listener.exitParenthesizedRelation(this); + if(listener.exitBinaryLiteral) { + listener.exitBinaryLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitParenthesizedRelation) { - return visitor.visitParenthesizedRelation(this); + if (visitor.visitBinaryLiteral) { + return visitor.visitBinaryLiteral(this); } else { return visitor.visitChildren(this); } } } -export class UnnestContext extends RelationPrimaryContext { - public constructor(ctx: RelationPrimaryContext) { +export class CurrentTimeContext extends PrimaryExpressionContext { + public _name?: Token | null; + public _precision?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_UNNEST(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_UNNEST, 0)!; - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public KW_CURRENT_TIME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_TIME, 0)!; } - public KW_ORDINALITY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ORDINALITY, 0); + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUnnest) { - listener.enterUnnest(this); + if(listener.enterCurrentTime) { + listener.enterCurrentTime(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUnnest) { - listener.exitUnnest(this); + if(listener.exitCurrentTime) { + listener.exitCurrentTime(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUnnest) { - return visitor.visitUnnest(this); + if (visitor.visitCurrentTime) { + return visitor.visitCurrentTime(this); } else { return visitor.visitChildren(this); } } } -export class TableOrViewRelationContext extends RelationPrimaryContext { - public constructor(ctx: RelationPrimaryContext) { +export class LocalTimeContext extends PrimaryExpressionContext { + public _name?: Token | null; + public _precision?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public tableOrViewName(): TableOrViewNameContext { - return this.getRuleContext(0, TableOrViewNameContext)!; + public KW_LOCALTIME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LOCALTIME, 0)!; + } + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableOrViewRelation) { - listener.enterTableOrViewRelation(this); + if(listener.enterLocalTime) { + listener.enterLocalTime(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableOrViewRelation) { - listener.exitTableOrViewRelation(this); + if(listener.exitLocalTime) { + listener.exitLocalTime(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableOrViewRelation) { - return visitor.visitTableOrViewRelation(this); + if (visitor.visitLocalTime) { + return visitor.visitLocalTime(this); } else { return visitor.visitChildren(this); } } } -export class LateralContext extends RelationPrimaryContext { - public constructor(ctx: RelationPrimaryContext) { +export class CurrentUserContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_LATERAL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_LATERAL, 0)!; - } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public KW_CURRENT_USER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_USER, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLateral) { - listener.enterLateral(this); + if(listener.enterCurrentUser) { + listener.enterCurrentUser(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLateral) { - listener.exitLateral(this); + if(listener.exitCurrentUser) { + listener.exitCurrentUser(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLateral) { - return visitor.visitLateral(this); + if (visitor.visitCurrentUser) { + return visitor.visitCurrentUser(this); } else { return visitor.visitChildren(this); } } } - - -export class ExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class JsonQueryContext extends PrimaryExpressionContext { + public _emptyBehavior?: JsonQueryBehaviorContext; + public _errorBehavior?: JsonQueryBehaviorContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext)!; + public KW_JSON_QUERY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON_QUERY, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_expression; + public jsonPathInvocation(): JsonPathInvocationContext { + return this.getRuleContext(0, JsonPathInvocationContext)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExpression) { - listener.enterExpression(this); - } + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNING, 0); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExpression) { - listener.exitExpression(this); - } + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExpression) { - return visitor.visitExpression(this); - } else { - return visitor.visitChildren(this); - } + public jsonQueryWrapperBehavior(): JsonQueryWrapperBehaviorContext | null { + return this.getRuleContext(0, JsonQueryWrapperBehaviorContext); } -} - - -export class BooleanExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WRAPPER, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_booleanExpression; + public KW_QUOTES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_QUOTES, 0); } - public override copyFrom(ctx: BooleanExpressionContext): void { - super.copyFrom(ctx); + public KW_ON(): antlr.TerminalNode[]; + public KW_ON(i: number): antlr.TerminalNode | null; + public KW_ON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_ON); + } else { + return this.getToken(TrinoSqlParser.KW_ON, i); + } } -} -export class LogicalNotContext extends BooleanExpressionContext { - public constructor(ctx: BooleanExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public KW_NOT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NOT, 0)!; + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext)!; + public KW_KEEP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEEP, 0); + } + public KW_OMIT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OMIT, 0); + } + public jsonQueryBehavior(): JsonQueryBehaviorContext[]; + public jsonQueryBehavior(i: number): JsonQueryBehaviorContext | null; + public jsonQueryBehavior(i?: number): JsonQueryBehaviorContext[] | JsonQueryBehaviorContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonQueryBehaviorContext); + } + + return this.getRuleContext(i, JsonQueryBehaviorContext); + } + public KW_FORMAT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0); + } + public jsonRepresentation(): JsonRepresentationContext | null { + return this.getRuleContext(0, JsonRepresentationContext); + } + public KW_SCALAR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SCALAR, 0); + } + public KW_TEXT_STRING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TEXT_STRING, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLogicalNot) { - listener.enterLogicalNot(this); + if(listener.enterJsonQuery) { + listener.enterJsonQuery(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLogicalNot) { - listener.exitLogicalNot(this); + if(listener.exitJsonQuery) { + listener.exitJsonQuery(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLogicalNot) { - return visitor.visitLogicalNot(this); + if (visitor.visitJsonQuery) { + return visitor.visitJsonQuery(this); } else { return visitor.visitChildren(this); } } } -export class PredicatedContext extends BooleanExpressionContext { - public _valueExpression?: ValueExpressionContext; - public constructor(ctx: BooleanExpressionContext) { +export class MeasureContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; - } - public predicate(): PredicateContext | null { - return this.getRuleContext(0, PredicateContext); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public over(): OverContext { + return this.getRuleContext(0, OverContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPredicated) { - listener.enterPredicated(this); + if(listener.enterMeasure) { + listener.enterMeasure(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPredicated) { - listener.exitPredicated(this); + if(listener.exitMeasure) { + listener.exitMeasure(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPredicated) { - return visitor.visitPredicated(this); + if (visitor.visitMeasure) { + return visitor.visitMeasure(this); } else { return visitor.visitChildren(this); } } } -export class LogicalBinaryContext extends BooleanExpressionContext { - public _left?: BooleanExpressionContext; - public _operator?: Token | null; - public _right?: BooleanExpressionContext; - public constructor(ctx: BooleanExpressionContext) { +export class ExtractContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public booleanExpression(): BooleanExpressionContext[]; - public booleanExpression(i: number): BooleanExpressionContext | null; - public booleanExpression(i?: number): BooleanExpressionContext[] | BooleanExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(BooleanExpressionContext); - } - - return this.getRuleContext(i, BooleanExpressionContext); + public KW_EXTRACT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXTRACT, 0)!; } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AND, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_OR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_OR, 0); + public KW_FROM(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLogicalBinary) { - listener.enterLogicalBinary(this); + if(listener.enterExtract) { + listener.enterExtract(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLogicalBinary) { - listener.exitLogicalBinary(this); + if(listener.exitExtract) { + listener.exitExtract(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLogicalBinary) { - return visitor.visitLogicalBinary(this); + if (visitor.visitExtract) { + return visitor.visitExtract(this); } else { return visitor.visitChildren(this); } } } - - -export class PredicateContext extends antlr.ParserRuleContext { - public value: antlr.ParserRuleContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number, value: antlr.ParserRuleContext) { - super(parent, invokingState); - this.value = value; - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_predicate; - } - public override copyFrom(ctx: PredicateContext): void { - super.copyFrom(ctx); - this.value = ctx.value; - } -} -export class ComparisonContext extends PredicateContext { - public _right?: ValueExpressionContext; - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class StringLiteralContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public comparisonOperator(): ComparisonOperatorContext { - return this.getRuleContext(0, ComparisonOperatorContext)!; - } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterComparison) { - listener.enterComparison(this); + if(listener.enterStringLiteral) { + listener.enterStringLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitComparison) { - listener.exitComparison(this); + if(listener.exitStringLiteral) { + listener.exitStringLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitComparison) { - return visitor.visitComparison(this); + if (visitor.visitStringLiteral) { + return visitor.visitStringLiteral(this); } else { return visitor.visitChildren(this); } } } -export class LikeContext extends PredicateContext { - public _pattern?: ValueExpressionContext; - public _escape?: ValueExpressionContext; - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class ArrayConstructorContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_LIKE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_LIKE, 0)!; + public KW_ARRAY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; } - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext | null; - public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, ValueExpressionContext); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); - } - public KW_ESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ESCAPE, 0); + return this.getRuleContext(i, ExpressionContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLike) { - listener.enterLike(this); + if(listener.enterArrayConstructor) { + listener.enterArrayConstructor(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLike) { - listener.exitLike(this); + if(listener.exitArrayConstructor) { + listener.exitArrayConstructor(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLike) { - return visitor.visitLike(this); + if (visitor.visitArrayConstructor) { + return visitor.visitArrayConstructor(this); } else { return visitor.visitChildren(this); } } } -export class InSubqueryContext extends PredicateContext { - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class FunctionCallContext extends PrimaryExpressionContext { + public _label?: IdentifierContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_IN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IN, 0)!; + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public ASTERISK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.ASTERISK, 0); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public processingMode(): ProcessingModeContext | null { + return this.getRuleContext(0, ProcessingModeContext); + } + public filter(): FilterContext | null { + return this.getRuleContext(0, FilterContext); + } + public over(): OverContext | null { + return this.getRuleContext(0, OverContext); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); + } + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); + } + + return this.getRuleContext(i, SortItemContext); + } + public setQuantifier(): SetQuantifierContext | null { + return this.getRuleContext(0, SetQuantifierContext); + } + public nullTreatment(): NullTreatmentContext | null { + return this.getRuleContext(0, NullTreatmentContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterInSubquery) { - listener.enterInSubquery(this); + if(listener.enterFunctionCall) { + listener.enterFunctionCall(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitInSubquery) { - listener.exitInSubquery(this); + if(listener.exitFunctionCall) { + listener.exitFunctionCall(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitInSubquery) { - return visitor.visitInSubquery(this); + if (visitor.visitFunctionCall) { + return visitor.visitFunctionCall(this); } else { return visitor.visitChildren(this); } } } -export class DistinctFromContext extends PredicateContext { - public _right?: ValueExpressionContext; - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class CurrentTimestampContext extends PrimaryExpressionContext { + public _name?: Token | null; + public _precision?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_IS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IS, 0)!; - } - public KW_DISTINCT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DISTINCT, 0)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; - } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_TIMESTAMP, 0)!; } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDistinctFrom) { - listener.enterDistinctFrom(this); + if(listener.enterCurrentTimestamp) { + listener.enterCurrentTimestamp(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDistinctFrom) { - listener.exitDistinctFrom(this); + if(listener.exitCurrentTimestamp) { + listener.exitCurrentTimestamp(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDistinctFrom) { - return visitor.visitDistinctFrom(this); + if (visitor.visitCurrentTimestamp) { + return visitor.visitCurrentTimestamp(this); } else { return visitor.visitChildren(this); } } } -export class InListContext extends PredicateContext { - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class CurrentSchemaContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_IN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IN, 0)!; - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); - } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public KW_CURRENT_SCHEMA(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_SCHEMA, 0)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterInList) { - listener.enterInList(this); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterCurrentSchema) { + listener.enterCurrentSchema(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitInList) { - listener.exitInList(this); + if(listener.exitCurrentSchema) { + listener.exitCurrentSchema(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitInList) { - return visitor.visitInList(this); + if (visitor.visitCurrentSchema) { + return visitor.visitCurrentSchema(this); } else { return visitor.visitChildren(this); } } } -export class NullPredicateContext extends PredicateContext { - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class ExistsContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_IS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IS, 0)!; - } - public KW_NULL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NULL, 0)!; + public KW_EXISTS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_EXISTS, 0)!; } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public query(): QueryContext { + return this.getRuleContext(0, QueryContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNullPredicate) { - listener.enterNullPredicate(this); + if(listener.enterExists) { + listener.enterExists(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNullPredicate) { - listener.exitNullPredicate(this); + if(listener.exitExists) { + listener.exitExists(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNullPredicate) { - return visitor.visitNullPredicate(this); + if (visitor.visitExists) { + return visitor.visitExists(this); } else { return visitor.visitChildren(this); } } } -export class BetweenContext extends PredicateContext { - public _lower?: ValueExpressionContext; - public _upper?: ValueExpressionContext; - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class PositionContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_BETWEEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_BETWEEN, 0)!; - } - public KW_AND(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AND, 0)!; + public KW_POSITION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_POSITION, 0)!; } public valueExpression(): ValueExpressionContext[]; public valueExpression(i: number): ValueExpressionContext | null; @@ -19189,245 +27870,365 @@ export class BetweenContext extends PredicateContext { return this.getRuleContext(i, ValueExpressionContext); } - public KW_NOT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NOT, 0); + public KW_IN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_IN, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBetween) { - listener.enterBetween(this); + if(listener.enterPosition) { + listener.enterPosition(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBetween) { - listener.exitBetween(this); + if(listener.exitPosition) { + listener.exitPosition(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBetween) { - return visitor.visitBetween(this); + if (visitor.visitPosition) { + return visitor.visitPosition(this); } else { return visitor.visitChildren(this); } } } -export class QuantifiedComparisonContext extends PredicateContext { - public constructor(ctx: PredicateContext) { - super(ctx.parent, ctx.invokingState, ctx.value); +export class ListaggContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public comparisonOperator(): ComparisonOperatorContext { - return this.getRuleContext(0, ComparisonOperatorContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public comparisonQuantifier(): ComparisonQuantifierContext { - return this.getRuleContext(0, ComparisonQuantifierContext)!; + public KW_LISTAGG(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LISTAGG, 0)!; } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public KW_WITHIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHIN, 0); + } + public KW_GROUP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GROUP, 0); + } + public KW_ORDER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ORDER, 0); + } + public KW_BY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BY, 0); + } + public sortItem(): SortItemContext[]; + public sortItem(i: number): SortItemContext | null; + public sortItem(i?: number): SortItemContext[] | SortItemContext | null { + if (i === undefined) { + return this.getRuleContexts(SortItemContext); + } + + return this.getRuleContext(i, SortItemContext); + } + public setQuantifier(): SetQuantifierContext | null { + return this.getRuleContext(0, SetQuantifierContext); + } + public string(): StringContext | null { + return this.getRuleContext(0, StringContext); + } + public KW_ON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ON, 0); + } + public KW_OVERFLOW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OVERFLOW, 0); + } + public listAggOverflowBehavior(): ListAggOverflowBehaviorContext | null { + return this.getRuleContext(0, ListAggOverflowBehaviorContext); + } + public filter(): FilterContext | null { + return this.getRuleContext(0, FilterContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQuantifiedComparison) { - listener.enterQuantifiedComparison(this); + if(listener.enterListagg) { + listener.enterListagg(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQuantifiedComparison) { - listener.exitQuantifiedComparison(this); + if(listener.exitListagg) { + listener.exitListagg(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQuantifiedComparison) { - return visitor.visitQuantifiedComparison(this); + if (visitor.visitListagg) { + return visitor.visitListagg(this); } else { return visitor.visitChildren(this); } } } +export class SearchedCaseContext extends PrimaryExpressionContext { + public _elseExpression?: ExpressionContext; + public constructor(ctx: PrimaryExpressionContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_CASE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CASE, 0)!; + } + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public whenClause(): WhenClauseContext[]; + public whenClause(i: number): WhenClauseContext | null; + public whenClause(i?: number): WhenClauseContext[] | WhenClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(WhenClauseContext); + } - -export class ValueExpressionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + return this.getRuleContext(i, WhenClauseContext); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_valueExpression; + public KW_ELSE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ELSE, 0); } - public override copyFrom(ctx: ValueExpressionContext): void { - super.copyFrom(ctx); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSearchedCase) { + listener.enterSearchedCase(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSearchedCase) { + listener.exitSearchedCase(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSearchedCase) { + return visitor.visitSearchedCase(this); + } else { + return visitor.visitChildren(this); + } } } -export class ValueExpressionDefaultContext extends ValueExpressionContext { - public constructor(ctx: ValueExpressionContext) { +export class CurrentCatalogContext extends PrimaryExpressionContext { + public _name?: Token | null; + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public primaryExpression(): PrimaryExpressionContext { - return this.getRuleContext(0, PrimaryExpressionContext)!; + public KW_CURRENT_CATALOG(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT_CATALOG, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterValueExpressionDefault) { - listener.enterValueExpressionDefault(this); + if(listener.enterCurrentCatalog) { + listener.enterCurrentCatalog(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitValueExpressionDefault) { - listener.exitValueExpressionDefault(this); + if(listener.exitCurrentCatalog) { + listener.exitCurrentCatalog(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitValueExpressionDefault) { - return visitor.visitValueExpressionDefault(this); + if (visitor.visitCurrentCatalog) { + return visitor.visitCurrentCatalog(this); } else { return visitor.visitChildren(this); } } } -export class ConcatenationContext extends ValueExpressionContext { - public _left?: ValueExpressionContext; - public _right?: ValueExpressionContext; - public constructor(ctx: ValueExpressionContext) { +export class GroupingOperationContext extends PrimaryExpressionContext { + public constructor(ctx: PrimaryExpressionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public CONCAT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.CONCAT, 0)!; + public KW_GROUPING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_GROUPING, 0)!; } - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext | null; - public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { + public qualifiedName(): QualifiedNameContext[]; + public qualifiedName(i: number): QualifiedNameContext | null; + public qualifiedName(i?: number): QualifiedNameContext[] | QualifiedNameContext | null { if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); + return this.getRuleContexts(QualifiedNameContext); } - return this.getRuleContext(i, ValueExpressionContext); + return this.getRuleContext(i, QualifiedNameContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterConcatenation) { - listener.enterConcatenation(this); + if(listener.enterGroupingOperation) { + listener.enterGroupingOperation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitConcatenation) { - listener.exitConcatenation(this); + if(listener.exitGroupingOperation) { + listener.exitGroupingOperation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitConcatenation) { - return visitor.visitConcatenation(this); + if (visitor.visitGroupingOperation) { + return visitor.visitGroupingOperation(this); } else { return visitor.visitChildren(this); } } } -export class ArithmeticBinaryContext extends ValueExpressionContext { - public _left?: ValueExpressionContext; - public _operator?: Token | null; - public _right?: ValueExpressionContext; - public constructor(ctx: ValueExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonPathInvocationContext extends antlr.ParserRuleContext { + public _path?: StringContext; + public _pathName?: IdentifierContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public jsonValueExpression(): JsonValueExpressionContext { + return this.getRuleContext(0, JsonValueExpressionContext)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public KW_AS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AS, 0); + } + public KW_PASSING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PASSING, 0); + } + public jsonArgument(): JsonArgumentContext[]; + public jsonArgument(i: number): JsonArgumentContext | null; + public jsonArgument(i?: number): JsonArgumentContext[] | JsonArgumentContext | null { + if (i === undefined) { + return this.getRuleContexts(JsonArgumentContext); + } + + return this.getRuleContext(i, JsonArgumentContext); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonPathInvocation; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterJsonPathInvocation) { + listener.enterJsonPathInvocation(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitJsonPathInvocation) { + listener.exitJsonPathInvocation(this); + } } - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext | null; - public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitJsonPathInvocation) { + return visitor.visitJsonPathInvocation(this); + } else { + return visitor.visitChildren(this); } - - return this.getRuleContext(i, ValueExpressionContext); } - public ASTERISK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.ASTERISK, 0); +} + + +export class JsonValueExpressionContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public SLASH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.SLASH, 0); + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public PERCENT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.PERCENT, 0); + public KW_FORMAT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0); } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.PLUS, 0); + public jsonRepresentation(): JsonRepresentationContext | null { + return this.getRuleContext(0, JsonRepresentationContext); } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.MINUS, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonValueExpression; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterArithmeticBinary) { - listener.enterArithmeticBinary(this); + if(listener.enterJsonValueExpression) { + listener.enterJsonValueExpression(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitArithmeticBinary) { - listener.exitArithmeticBinary(this); + if(listener.exitJsonValueExpression) { + listener.exitJsonValueExpression(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitArithmeticBinary) { - return visitor.visitArithmeticBinary(this); + if (visitor.visitJsonValueExpression) { + return visitor.visitJsonValueExpression(this); } else { return visitor.visitChildren(this); } } } -export class ArithmeticUnaryContext extends ValueExpressionContext { - public _operator?: Token | null; - public constructor(ctx: ValueExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonRepresentationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public KW_JSON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_JSON, 0)!; } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.MINUS, 0); + public KW_ENCODING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ENCODING, 0); } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.PLUS, 0); + public KW_UTF8(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF8, 0); + } + public KW_UTF16(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF16, 0); + } + public KW_UTF32(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF32, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonRepresentation; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterArithmeticUnary) { - listener.enterArithmeticUnary(this); + if(listener.enterJsonRepresentation) { + listener.enterJsonRepresentation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitArithmeticUnary) { - listener.exitArithmeticUnary(this); + if(listener.exitJsonRepresentation) { + listener.exitJsonRepresentation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitArithmeticUnary) { - return visitor.visitArithmeticUnary(this); + if (visitor.visitJsonRepresentation) { + return visitor.visitJsonRepresentation(this); } else { return visitor.visitChildren(this); } } } -export class AtTimeZoneContext extends ValueExpressionContext { - public constructor(ctx: ValueExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonArgumentContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public jsonValueExpression(): JsonValueExpressionContext { + return this.getRuleContext(0, JsonValueExpressionContext)!; } - public KW_AT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AT, 0)!; + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; } - public timeZoneSpecifier(): TimeZoneSpecifierContext { - return this.getRuleContext(0, TimeZoneSpecifierContext)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonArgument; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterAtTimeZone) { - listener.enterAtTimeZone(this); + if(listener.enterJsonArgument) { + listener.enterJsonArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitAtTimeZone) { - listener.exitAtTimeZone(this); + if(listener.exitJsonArgument) { + listener.exitJsonArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitAtTimeZone) { - return visitor.visitAtTimeZone(this); + if (visitor.visitJsonArgument) { + return visitor.visitJsonArgument(this); } else { return visitor.visitChildren(this); } @@ -19435,1207 +28236,1358 @@ export class AtTimeZoneContext extends ValueExpressionContext { } -export class PrimaryExpressionContext extends antlr.ParserRuleContext { +export class JsonExistsErrorBehaviorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_primaryExpression; + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRUE, 0); } - public override copyFrom(ctx: PrimaryExpressionContext): void { - super.copyFrom(ctx); + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FALSE, 0); } -} -export class DereferenceContext extends PrimaryExpressionContext { - public _base?: PrimaryExpressionContext; - public _fieldName?: IdentifierContext; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_UNKNOWN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNKNOWN, 0); } - public primaryExpression(): PrimaryExpressionContext { - return this.getRuleContext(0, PrimaryExpressionContext)!; + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonExistsErrorBehavior; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDereference) { - listener.enterDereference(this); + if(listener.enterJsonExistsErrorBehavior) { + listener.enterJsonExistsErrorBehavior(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDereference) { - listener.exitDereference(this); + if(listener.exitJsonExistsErrorBehavior) { + listener.exitJsonExistsErrorBehavior(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDereference) { - return visitor.visitDereference(this); + if (visitor.visitJsonExistsErrorBehavior) { + return visitor.visitJsonExistsErrorBehavior(this); } else { return visitor.visitChildren(this); } } } -export class TypeConstructorContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonValueBehaviorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public string(): StringContext { - return this.getRuleContext(0, StringContext)!; + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); } - public KW_DOUBLE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DOUBLE, 0); + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFAULT, 0); } - public KW_PRECISION(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRECISION, 0); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonValueBehavior; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTypeConstructor) { - listener.enterTypeConstructor(this); + if(listener.enterJsonValueBehavior) { + listener.enterJsonValueBehavior(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTypeConstructor) { - listener.exitTypeConstructor(this); + if(listener.exitJsonValueBehavior) { + listener.exitJsonValueBehavior(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTypeConstructor) { - return visitor.visitTypeConstructor(this); + if (visitor.visitJsonValueBehavior) { + return visitor.visitJsonValueBehavior(this); } else { return visitor.visitChildren(this); } } } -export class SpecialDateTimeFunctionContext extends PrimaryExpressionContext { - public _name?: Token | null; - public _precision?: Token | null; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonQueryWrapperBehaviorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_CURRENT_DATE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CURRENT_DATE, 0); + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); } - public KW_CURRENT_TIME(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CURRENT_TIME, 0); + public KW_ARRAY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ARRAY, 0); } - public INTEGER_VALUE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } - public KW_CURRENT_TIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CURRENT_TIMESTAMP, 0); + public KW_CONDITIONAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CONDITIONAL, 0); } - public KW_LOCALTIME(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LOCALTIME, 0); + public KW_UNCONDITIONAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNCONDITIONAL, 0); } - public KW_LOCALTIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LOCALTIMESTAMP, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonQueryWrapperBehavior; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSpecialDateTimeFunction) { - listener.enterSpecialDateTimeFunction(this); + if(listener.enterJsonQueryWrapperBehavior) { + listener.enterJsonQueryWrapperBehavior(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSpecialDateTimeFunction) { - listener.exitSpecialDateTimeFunction(this); + if(listener.exitJsonQueryWrapperBehavior) { + listener.exitJsonQueryWrapperBehavior(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSpecialDateTimeFunction) { - return visitor.visitSpecialDateTimeFunction(this); + if (visitor.visitJsonQueryWrapperBehavior) { + return visitor.visitJsonQueryWrapperBehavior(this); } else { return visitor.visitChildren(this); } } } -export class SubstringContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class JsonQueryBehaviorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_SUBSTRING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SUBSTRING, 0)!; + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); } - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext | null; - public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); - } - - return this.getRuleContext(i, ValueExpressionContext); + public KW_NULL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NULL, 0); } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + public KW_EMPTY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } - public KW_FOR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FOR, 0); + public KW_ARRAY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ARRAY, 0); + } + public KW_OBJECT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OBJECT, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonQueryBehavior; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubstring) { - listener.enterSubstring(this); + if(listener.enterJsonQueryBehavior) { + listener.enterJsonQueryBehavior(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubstring) { - listener.exitSubstring(this); + if(listener.exitJsonQueryBehavior) { + listener.exitJsonQueryBehavior(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubstring) { - return visitor.visitSubstring(this); + if (visitor.visitJsonQueryBehavior) { + return visitor.visitJsonQueryBehavior(this); } else { return visitor.visitChildren(this); } } } -export class CastContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CAST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_CAST, 0); + + +export class JsonObjectMemberContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext)!; } - public KW_AS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_AS, 0)!; + public KW_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VALUE, 0); } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; + public jsonValueExpression(): JsonValueExpressionContext { + return this.getRuleContext(0, JsonValueExpressionContext)!; } - public KW_TRY_CAST(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TRY_CAST, 0); + public KW_KEY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEY, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_jsonObjectMember; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCast) { - listener.enterCast(this); + if(listener.enterJsonObjectMember) { + listener.enterJsonObjectMember(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCast) { - listener.exitCast(this); + if(listener.exitJsonObjectMember) { + listener.exitJsonObjectMember(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCast) { - return visitor.visitCast(this); + if (visitor.visitJsonObjectMember) { + return visitor.visitJsonObjectMember(this); } else { return visitor.visitChildren(this); } } } -export class LambdaContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } - return this.getRuleContext(i, IdentifierContext); + +export class ProcessingModeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_RUNNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RUNNING, 0); + } + public KW_FINAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FINAL, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_processingMode; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLambda) { - listener.enterLambda(this); + if(listener.enterProcessingMode) { + listener.enterProcessingMode(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLambda) { - listener.exitLambda(this); + if(listener.exitProcessingMode) { + listener.exitProcessingMode(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLambda) { - return visitor.visitLambda(this); + if (visitor.visitProcessingMode) { + return visitor.visitProcessingMode(this); } else { return visitor.visitChildren(this); } } } -export class ParenthesizedExpressionContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class NullTreatmentContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; + public KW_IGNORE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IGNORE, 0); + } + public KW_NULLS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NULLS, 0)!; + } + public KW_RESPECT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RESPECT, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_nullTreatment; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterParenthesizedExpression) { - listener.enterParenthesizedExpression(this); + if(listener.enterNullTreatment) { + listener.enterNullTreatment(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitParenthesizedExpression) { - listener.exitParenthesizedExpression(this); + if(listener.exitNullTreatment) { + listener.exitNullTreatment(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitParenthesizedExpression) { - return visitor.visitParenthesizedExpression(this); + if (visitor.visitNullTreatment) { + return visitor.visitNullTreatment(this); } else { return visitor.visitChildren(this); } } } -export class ParameterContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { + + +export class StringContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_string; + } + public override copyFrom(ctx: StringContext): void { + super.copyFrom(ctx); + } +} +export class UnicodeStringLiteralContext extends StringContext { + public constructor(ctx: StringContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public QUESTION_MARK(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.QUESTION_MARK, 0)!; + public UNICODE_STRING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.UNICODE_STRING, 0)!; + } + public KW_UESCAPE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UESCAPE, 0); + } + public STRING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.STRING, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterParameter) { - listener.enterParameter(this); + if(listener.enterUnicodeStringLiteral) { + listener.enterUnicodeStringLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitParameter) { - listener.exitParameter(this); + if(listener.exitUnicodeStringLiteral) { + listener.exitUnicodeStringLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitParameter) { - return visitor.visitParameter(this); + if (visitor.visitUnicodeStringLiteral) { + return visitor.visitUnicodeStringLiteral(this); } else { return visitor.visitChildren(this); } } } -export class NormalizeContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class BasicStringLiteralContext extends StringContext { + public constructor(ctx: StringContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_NORMALIZE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NORMALIZE, 0)!; - } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; - } - public normalForm(): NormalFormContext | null { - return this.getRuleContext(0, NormalFormContext); + public STRING(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.STRING, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNormalize) { - listener.enterNormalize(this); + if(listener.enterBasicStringLiteral) { + listener.enterBasicStringLiteral(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNormalize) { - listener.exitNormalize(this); + if(listener.exitBasicStringLiteral) { + listener.exitBasicStringLiteral(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNormalize) { - return visitor.visitNormalize(this); + if (visitor.visitBasicStringLiteral) { + return visitor.visitBasicStringLiteral(this); } else { return visitor.visitChildren(this); } } } -export class IntervalLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { + + +export class TimeZoneSpecifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_timeZoneSpecifier; + } + public override copyFrom(ctx: TimeZoneSpecifierContext): void { + super.copyFrom(ctx); + } +} +export class TimeZoneIntervalContext extends TimeZoneSpecifierContext { + public constructor(ctx: TimeZoneSpecifierContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } + public KW_TIME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + } + public KW_ZONE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + } public interval(): IntervalContext { return this.getRuleContext(0, IntervalContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterIntervalLiteral) { - listener.enterIntervalLiteral(this); + if(listener.enterTimeZoneInterval) { + listener.enterTimeZoneInterval(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitIntervalLiteral) { - listener.exitIntervalLiteral(this); + if(listener.exitTimeZoneInterval) { + listener.exitTimeZoneInterval(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitIntervalLiteral) { - return visitor.visitIntervalLiteral(this); + if (visitor.visitTimeZoneInterval) { + return visitor.visitTimeZoneInterval(this); } else { return visitor.visitChildren(this); } } } -export class NumericLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class TimeZoneStringContext extends TimeZoneSpecifierContext { + public constructor(ctx: TimeZoneSpecifierContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public number(): NumberContext { - return this.getRuleContext(0, NumberContext)!; + public KW_TIME(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + } + public KW_ZONE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNumericLiteral) { - listener.enterNumericLiteral(this); + if(listener.enterTimeZoneString) { + listener.enterTimeZoneString(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNumericLiteral) { - listener.exitNumericLiteral(this); + if(listener.exitTimeZoneString) { + listener.exitTimeZoneString(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNumericLiteral) { - return visitor.visitNumericLiteral(this); + if (visitor.visitTimeZoneString) { + return visitor.visitTimeZoneString(this); } else { return visitor.visitChildren(this); } } } -export class BooleanLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ComparisonOperatorContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public booleanValue(): BooleanValueContext { - return this.getRuleContext(0, BooleanValueContext)!; + public EQ(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.EQ, 0); + } + public NEQ(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.NEQ, 0); + } + public LT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.LT, 0); + } + public LTE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.LTE, 0); + } + public GT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.GT, 0); + } + public GTE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.GTE, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_comparisonOperator; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBooleanLiteral) { - listener.enterBooleanLiteral(this); + if(listener.enterComparisonOperator) { + listener.enterComparisonOperator(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBooleanLiteral) { - listener.exitBooleanLiteral(this); + if(listener.exitComparisonOperator) { + listener.exitComparisonOperator(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBooleanLiteral) { - return visitor.visitBooleanLiteral(this); + if (visitor.visitComparisonOperator) { + return visitor.visitComparisonOperator(this); } else { return visitor.visitChildren(this); } } } -export class SimpleCaseContext extends PrimaryExpressionContext { - public _operand?: ExpressionContext; - public _elseExpression?: ExpressionContext; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); - } - public KW_CASE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CASE, 0)!; - } - public KW_END(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_END, 0)!; - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - return this.getRuleContext(i, ExpressionContext); - } - public whenClause(): WhenClauseContext[]; - public whenClause(i: number): WhenClauseContext | null; - public whenClause(i?: number): WhenClauseContext[] | WhenClauseContext | null { - if (i === undefined) { - return this.getRuleContexts(WhenClauseContext); - } - return this.getRuleContext(i, WhenClauseContext); - } - public KW_ELSE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ELSE, 0); - } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSimpleCase) { - listener.enterSimpleCase(this); - } +export class ComparisonQuantifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSimpleCase) { - listener.exitSimpleCase(this); - } + public KW_ALL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ALL, 0); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSimpleCase) { - return visitor.visitSimpleCase(this); - } else { - return visitor.visitChildren(this); - } + public KW_SOME(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SOME, 0); } -} -export class ColumnReferenceContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_ANY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ANY, 0); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_comparisonQuantifier; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnReference) { - listener.enterColumnReference(this); + if(listener.enterComparisonQuantifier) { + listener.enterComparisonQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnReference) { - listener.exitColumnReference(this); + if(listener.exitComparisonQuantifier) { + listener.exitComparisonQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnReference) { - return visitor.visitColumnReference(this); + if (visitor.visitComparisonQuantifier) { + return visitor.visitComparisonQuantifier(this); } else { return visitor.visitChildren(this); } } } -export class NullLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class BooleanValueContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_NULL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NULL, 0)!; + public KW_TRUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRUE, 0); + } + public KW_FALSE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FALSE, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_booleanValue; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNullLiteral) { - listener.enterNullLiteral(this); + if(listener.enterBooleanValue) { + listener.enterBooleanValue(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNullLiteral) { - listener.exitNullLiteral(this); + if(listener.exitBooleanValue) { + listener.exitBooleanValue(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNullLiteral) { - return visitor.visitNullLiteral(this); + if (visitor.visitBooleanValue) { + return visitor.visitBooleanValue(this); } else { return visitor.visitChildren(this); } } } -export class RowConstructorContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class IntervalContext extends antlr.ParserRuleContext { + public _sign?: Token | null; + public _from_?: IntervalFieldContext; + public _to?: IntervalFieldContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + public KW_INTERVAL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INTERVAL, 0)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public intervalField(): IntervalFieldContext[]; + public intervalField(i: number): IntervalFieldContext | null; + public intervalField(i?: number): IntervalFieldContext[] | IntervalFieldContext | null { if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + return this.getRuleContexts(IntervalFieldContext); } - return this.getRuleContext(i, ExpressionContext); + return this.getRuleContext(i, IntervalFieldContext); } - public KW_ROW(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROW, 0); + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TO, 0); + } + public PLUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.PLUS, 0); + } + public MINUS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.MINUS, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_interval; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRowConstructor) { - listener.enterRowConstructor(this); + if(listener.enterInterval) { + listener.enterInterval(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRowConstructor) { - listener.exitRowConstructor(this); + if(listener.exitInterval) { + listener.exitInterval(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRowConstructor) { - return visitor.visitRowConstructor(this); + if (visitor.visitInterval) { + return visitor.visitInterval(this); } else { return visitor.visitChildren(this); } } } -export class SubscriptContext extends PrimaryExpressionContext { - public _value?: PrimaryExpressionContext; - public _index?: ValueExpressionContext; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class IntervalFieldContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public primaryExpression(): PrimaryExpressionContext { - return this.getRuleContext(0, PrimaryExpressionContext)!; + public KW_YEAR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_YEAR, 0); } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public KW_MONTH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MONTH, 0); } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubscript) { - listener.enterSubscript(this); - } + public KW_DAY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DAY, 0); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubscript) { - listener.exitSubscript(this); - } + public KW_HOUR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_HOUR, 0); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubscript) { - return visitor.visitSubscript(this); - } else { - return visitor.visitChildren(this); - } + public KW_MINUTE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MINUTE, 0); } -} -export class CurrentPathContext extends PrimaryExpressionContext { - public _name?: Token | null; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_SECOND(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SECOND, 0); } - public KW_CURRENT_PATH(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CURRENT_PATH, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_intervalField; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCurrentPath) { - listener.enterCurrentPath(this); + if(listener.enterIntervalField) { + listener.enterIntervalField(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCurrentPath) { - listener.exitCurrentPath(this); + if(listener.exitIntervalField) { + listener.exitIntervalField(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCurrentPath) { - return visitor.visitCurrentPath(this); + if (visitor.visitIntervalField) { + return visitor.visitIntervalField(this); } else { return visitor.visitChildren(this); } } } -export class SubqueryExpressionContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class NormalFormContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public KW_NFD(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NFD, 0); + } + public KW_NFC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NFC, 0); + } + public KW_NFKD(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NFKD, 0); + } + public KW_NFKC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NFKC, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_normalForm; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSubqueryExpression) { - listener.enterSubqueryExpression(this); + if(listener.enterNormalForm) { + listener.enterNormalForm(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSubqueryExpression) { - listener.exitSubqueryExpression(this); + if(listener.exitNormalForm) { + listener.exitNormalForm(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSubqueryExpression) { - return visitor.visitSubqueryExpression(this); + if (visitor.visitNormalForm) { + return visitor.visitNormalForm(this); } else { return visitor.visitChildren(this); } } } -export class BinaryLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { + + +export class TypeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_type; + } + public override copyFrom(ctx: TypeContext): void { + super.copyFrom(ctx); + } +} +export class RowTypeContext extends TypeContext { + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public BINARY_LITERAL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.BINARY_LITERAL, 0)!; + public KW_ROW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROW, 0)!; + } + public rowField(): RowFieldContext[]; + public rowField(i: number): RowFieldContext | null; + public rowField(i?: number): RowFieldContext[] | RowFieldContext | null { + if (i === undefined) { + return this.getRuleContexts(RowFieldContext); + } + + return this.getRuleContext(i, RowFieldContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBinaryLiteral) { - listener.enterBinaryLiteral(this); + if(listener.enterRowType) { + listener.enterRowType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBinaryLiteral) { - listener.exitBinaryLiteral(this); + if(listener.exitRowType) { + listener.exitRowType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBinaryLiteral) { - return visitor.visitBinaryLiteral(this); + if (visitor.visitRowType) { + return visitor.visitRowType(this); } else { return visitor.visitChildren(this); } } } -export class CurrentUserContext extends PrimaryExpressionContext { - public _name?: Token | null; - public constructor(ctx: PrimaryExpressionContext) { +export class IntervalTypeContext extends TypeContext { + public _from_?: IntervalFieldContext; + public _to?: IntervalFieldContext; + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_CURRENT_USER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CURRENT_USER, 0)!; + public KW_INTERVAL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INTERVAL, 0)!; + } + public intervalField(): IntervalFieldContext[]; + public intervalField(i: number): IntervalFieldContext | null; + public intervalField(i?: number): IntervalFieldContext[] | IntervalFieldContext | null { + if (i === undefined) { + return this.getRuleContexts(IntervalFieldContext); + } + + return this.getRuleContext(i, IntervalFieldContext); + } + public KW_TO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TO, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCurrentUser) { - listener.enterCurrentUser(this); + if(listener.enterIntervalType) { + listener.enterIntervalType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCurrentUser) { - listener.exitCurrentUser(this); + if(listener.exitIntervalType) { + listener.exitIntervalType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCurrentUser) { - return visitor.visitCurrentUser(this); + if (visitor.visitIntervalType) { + return visitor.visitIntervalType(this); } else { return visitor.visitChildren(this); } } } -export class MeasureContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class ArrayTypeContext extends TypeContext { + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public over(): OverContext { - return this.getRuleContext(0, OverContext)!; + public KW_ARRAY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; + } + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMeasure) { - listener.enterMeasure(this); + if(listener.enterArrayType) { + listener.enterArrayType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMeasure) { - listener.exitMeasure(this); + if(listener.exitArrayType) { + listener.exitArrayType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMeasure) { - return visitor.visitMeasure(this); + if (visitor.visitArrayType) { + return visitor.visitArrayType(this); } else { return visitor.visitChildren(this); } } } -export class ExtractContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class DoublePrecisionTypeContext extends TypeContext { + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_EXTRACT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_EXTRACT, 0)!; - } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; - } - public KW_FROM(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FROM, 0)!; + public KW_DOUBLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DOUBLE, 0)!; } - public valueExpression(): ValueExpressionContext { - return this.getRuleContext(0, ValueExpressionContext)!; + public KW_PRECISION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PRECISION, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExtract) { - listener.enterExtract(this); + if(listener.enterDoublePrecisionType) { + listener.enterDoublePrecisionType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExtract) { - listener.exitExtract(this); + if(listener.exitDoublePrecisionType) { + listener.exitDoublePrecisionType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExtract) { - return visitor.visitExtract(this); + if (visitor.visitDoublePrecisionType) { + return visitor.visitDoublePrecisionType(this); } else { return visitor.visitChildren(this); } } } -export class StringLiteralContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class LegacyArrayTypeContext extends TypeContext { + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public string(): StringContext { - return this.getRuleContext(0, StringContext)!; + public KW_ARRAY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; + } + public LT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.LT, 0)!; + } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; + } + public GT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.GT, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterStringLiteral) { - listener.enterStringLiteral(this); + if(listener.enterLegacyArrayType) { + listener.enterLegacyArrayType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitStringLiteral) { - listener.exitStringLiteral(this); + if(listener.exitLegacyArrayType) { + listener.exitLegacyArrayType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitStringLiteral) { - return visitor.visitStringLiteral(this); + if (visitor.visitLegacyArrayType) { + return visitor.visitLegacyArrayType(this); } else { return visitor.visitChildren(this); } } } -export class ArrayConstructorContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class GenericTypeContext extends TypeContext { + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ARRAY(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + public typeParameter(): TypeParameterContext[]; + public typeParameter(i: number): TypeParameterContext | null; + public typeParameter(i?: number): TypeParameterContext[] | TypeParameterContext | null { if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + return this.getRuleContexts(TypeParameterContext); } - return this.getRuleContext(i, ExpressionContext); + return this.getRuleContext(i, TypeParameterContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterArrayConstructor) { - listener.enterArrayConstructor(this); + if(listener.enterGenericType) { + listener.enterGenericType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitArrayConstructor) { - listener.exitArrayConstructor(this); + if(listener.exitGenericType) { + listener.exitGenericType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitArrayConstructor) { - return visitor.visitArrayConstructor(this); + if (visitor.visitGenericType) { + return visitor.visitGenericType(this); } else { return visitor.visitChildren(this); } } } -export class FunctionCallContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { +export class DateTimeTypeContext extends TypeContext { + public _base?: Token | null; + public _precision?: TypeParameterContext; + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public functionName(): FunctionNameContext { - return this.getRuleContext(0, FunctionNameContext)!; - } - public ASTERISK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.ASTERISK, 0); - } - public filter(): FilterContext | null { - return this.getRuleContext(0, FilterContext); - } - public over(): OverContext | null { - return this.getRuleContext(0, OverContext); - } - public processingMode(): ProcessingModeContext | null { - return this.getRuleContext(0, ProcessingModeContext); - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); + public KW_TIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TIMESTAMP, 0); } - public KW_ORDER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ORDER, 0); + public KW_WITHOUT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); } - public KW_BY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BY, 0); + public KW_TIME(): antlr.TerminalNode[]; + public KW_TIME(i: number): antlr.TerminalNode | null; + public KW_TIME(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_TIME); + } else { + return this.getToken(TrinoSqlParser.KW_TIME, i); + } } - public sortItem(): SortItemContext[]; - public sortItem(i: number): SortItemContext | null; - public sortItem(i?: number): SortItemContext[] | SortItemContext | null { - if (i === undefined) { - return this.getRuleContexts(SortItemContext); - } - - return this.getRuleContext(i, SortItemContext); + public KW_ZONE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ZONE, 0); } - public setQuantifier(): SetQuantifierContext | null { - return this.getRuleContext(0, SetQuantifierContext); + public typeParameter(): TypeParameterContext | null { + return this.getRuleContext(0, TypeParameterContext); } - public nullTreatment(): NullTreatmentContext | null { - return this.getRuleContext(0, NullTreatmentContext); + public KW_WITH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITH, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterFunctionCall) { - listener.enterFunctionCall(this); + if(listener.enterDateTimeType) { + listener.enterDateTimeType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitFunctionCall) { - listener.exitFunctionCall(this); + if(listener.exitDateTimeType) { + listener.exitDateTimeType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitFunctionCall) { - return visitor.visitFunctionCall(this); + if (visitor.visitDateTimeType) { + return visitor.visitDateTimeType(this); } else { return visitor.visitChildren(this); } } } -export class CurrentSchemaContext extends PrimaryExpressionContext { - public _name?: Token | null; - public constructor(ctx: PrimaryExpressionContext) { +export class LegacyMapTypeContext extends TypeContext { + public _keyType?: TypeContext; + public _valueType?: TypeContext; + public constructor(ctx: TypeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_CURRENT_SCHEMA(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CURRENT_SCHEMA, 0)!; + public KW_MAP(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MAP, 0)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCurrentSchema) { - listener.enterCurrentSchema(this); + public LT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.LT, 0)!; + } + public GT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.GT, 0)!; + } + public type_(): TypeContext[]; + public type_(i: number): TypeContext | null; + public type_(i?: number): TypeContext[] | TypeContext | null { + if (i === undefined) { + return this.getRuleContexts(TypeContext); + } + + return this.getRuleContext(i, TypeContext); + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterLegacyMapType) { + listener.enterLegacyMapType(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCurrentSchema) { - listener.exitCurrentSchema(this); + if(listener.exitLegacyMapType) { + listener.exitLegacyMapType(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCurrentSchema) { - return visitor.visitCurrentSchema(this); + if (visitor.visitLegacyMapType) { + return visitor.visitLegacyMapType(this); } else { return visitor.visitChildren(this); } } } -export class ExistsContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class RowFieldContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_EXISTS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_EXISTS, 0)!; + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public query(): QueryContext { - return this.getRuleContext(0, QueryContext)!; + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rowField; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExists) { - listener.enterExists(this); + if(listener.enterRowField) { + listener.enterRowField(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExists) { - listener.exitExists(this); + if(listener.exitRowField) { + listener.exitRowField(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExists) { - return visitor.visitExists(this); + if (visitor.visitRowField) { + return visitor.visitRowField(this); } else { return visitor.visitChildren(this); } } } -export class PositionContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class TypeParameterContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_POSITION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_POSITION, 0)!; + public INTEGER_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); } - public valueExpression(): ValueExpressionContext[]; - public valueExpression(i: number): ValueExpressionContext | null; - public valueExpression(i?: number): ValueExpressionContext[] | ValueExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ValueExpressionContext); - } - - return this.getRuleContext(i, ValueExpressionContext); + public type(): TypeContext | null { + return this.getRuleContext(0, TypeContext); } - public KW_IN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_IN, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_typeParameter; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPosition) { - listener.enterPosition(this); + if(listener.enterTypeParameter) { + listener.enterTypeParameter(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPosition) { - listener.exitPosition(this); + if(listener.exitTypeParameter) { + listener.exitTypeParameter(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPosition) { - return visitor.visitPosition(this); + if (visitor.visitTypeParameter) { + return visitor.visitTypeParameter(this); } else { return visitor.visitChildren(this); } } } -export class SearchedCaseContext extends PrimaryExpressionContext { - public _elseExpression?: ExpressionContext; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class WhenClauseContext extends antlr.ParserRuleContext { + public _condition?: ExpressionContext; + public _result?: ExpressionContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_CASE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CASE, 0)!; + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; } - public KW_END(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_END, 0)!; + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; } - public whenClause(): WhenClauseContext[]; - public whenClause(i: number): WhenClauseContext | null; - public whenClause(i?: number): WhenClauseContext[] | WhenClauseContext | null { + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { if (i === undefined) { - return this.getRuleContexts(WhenClauseContext); + return this.getRuleContexts(ExpressionContext); } - return this.getRuleContext(i, WhenClauseContext); - } - public KW_ELSE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ELSE, 0); + return this.getRuleContext(i, ExpressionContext); } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_whenClause; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSearchedCase) { - listener.enterSearchedCase(this); + if(listener.enterWhenClause) { + listener.enterWhenClause(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSearchedCase) { - listener.exitSearchedCase(this); + if(listener.exitWhenClause) { + listener.exitWhenClause(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSearchedCase) { - return visitor.visitSearchedCase(this); + if (visitor.visitWhenClause) { + return visitor.visitWhenClause(this); } else { return visitor.visitChildren(this); } } } -export class CurrentCatalogContext extends PrimaryExpressionContext { - public _name?: Token | null; - public constructor(ctx: PrimaryExpressionContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class FilterContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_CURRENT_CATALOG(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CURRENT_CATALOG, 0)!; + public KW_FILTER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FILTER, 0)!; + } + public KW_WHERE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHERE, 0)!; + } + public booleanExpression(): BooleanExpressionContext { + return this.getRuleContext(0, BooleanExpressionContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_filter; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCurrentCatalog) { - listener.enterCurrentCatalog(this); + if(listener.enterFilter) { + listener.enterFilter(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCurrentCatalog) { - listener.exitCurrentCatalog(this); + if(listener.exitFilter) { + listener.exitFilter(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCurrentCatalog) { - return visitor.visitCurrentCatalog(this); + if (visitor.visitFilter) { + return visitor.visitFilter(this); } else { return visitor.visitChildren(this); } } } -export class GroupingOperationContext extends PrimaryExpressionContext { - public constructor(ctx: PrimaryExpressionContext) { + + +export class MergeCaseContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_mergeCase; + } + public override copyFrom(ctx: MergeCaseContext): void { + super.copyFrom(ctx); + } +} +export class MergeInsertContext extends MergeCaseContext { + public _condition?: ExpressionContext; + public _identifier?: IdentifierContext; + public _targets: IdentifierContext[] = []; + public _expression?: ExpressionContext; + public _values: ExpressionContext[] = []; + public constructor(ctx: MergeCaseContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_GROUPING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_GROUPING, 0)!; + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; } - public qualifiedName(): QualifiedNameContext[]; - public qualifiedName(i: number): QualifiedNameContext | null; - public qualifiedName(i?: number): QualifiedNameContext[] | QualifiedNameContext | null { - if (i === undefined) { - return this.getRuleContexts(QualifiedNameContext); - } - - return this.getRuleContext(i, QualifiedNameContext); + public KW_NOT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NOT, 0)!; } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGroupingOperation) { - listener.enterGroupingOperation(this); - } + public KW_MATCHED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGroupingOperation) { - listener.exitGroupingOperation(this); - } + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGroupingOperation) { - return visitor.visitGroupingOperation(this); - } else { - return visitor.visitChildren(this); - } + public KW_INSERT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INSERT, 0)!; } -} - - -export class ProcessingModeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); + public KW_VALUES(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_VALUES, 0)!; } - public KW_RUNNING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RUNNING, 0); + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); } - public KW_FINAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FINAL, 0); + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AND, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_processingMode; + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterProcessingMode) { - listener.enterProcessingMode(this); + if(listener.enterMergeInsert) { + listener.enterMergeInsert(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitProcessingMode) { - listener.exitProcessingMode(this); + if(listener.exitMergeInsert) { + listener.exitMergeInsert(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitProcessingMode) { - return visitor.visitProcessingMode(this); + if (visitor.visitMergeInsert) { + return visitor.visitMergeInsert(this); } else { return visitor.visitChildren(this); } } } - - -export class NullTreatmentContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class MergeUpdateContext extends MergeCaseContext { + public _condition?: ExpressionContext; + public _identifier?: IdentifierContext; + public _targets: IdentifierContext[] = []; + public _expression?: ExpressionContext; + public _values: ExpressionContext[] = []; + public constructor(ctx: MergeCaseContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_IGNORE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IGNORE, 0); + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; } - public KW_NULLS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NULLS, 0)!; + public KW_MATCHED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; } - public KW_RESPECT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RESPECT, 0); + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_nullTreatment; + public KW_UPDATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UPDATE, 0)!; + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; + } + public EQ(): antlr.TerminalNode[]; + public EQ(i: number): antlr.TerminalNode | null; + public EQ(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.EQ); + } else { + return this.getToken(TrinoSqlParser.EQ, i); + } + } + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); + } + public expression(): ExpressionContext[]; + public expression(i: number): ExpressionContext | null; + public expression(i?: number): ExpressionContext[] | ExpressionContext | null { + if (i === undefined) { + return this.getRuleContexts(ExpressionContext); + } + + return this.getRuleContext(i, ExpressionContext); + } + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AND, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNullTreatment) { - listener.enterNullTreatment(this); + if(listener.enterMergeUpdate) { + listener.enterMergeUpdate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNullTreatment) { - listener.exitNullTreatment(this); + if(listener.exitMergeUpdate) { + listener.exitMergeUpdate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNullTreatment) { - return visitor.visitNullTreatment(this); + if (visitor.visitMergeUpdate) { + return visitor.visitMergeUpdate(this); } else { return visitor.visitChildren(this); } } } - - -export class StringContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class MergeDeleteContext extends MergeCaseContext { + public _condition?: ExpressionContext; + public constructor(ctx: MergeCaseContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_string; + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; } - public override copyFrom(ctx: StringContext): void { - super.copyFrom(ctx); + public KW_MATCHED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; } -} -export class UnicodeStringLiteralContext extends StringContext { - public constructor(ctx: StringContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; } - public UNICODE_STRING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.UNICODE_STRING, 0)!; + public KW_DELETE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DELETE, 0)!; } - public KW_UESCAPE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_UESCAPE, 0); + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AND, 0); } - public STRING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.STRING, 0); + public expression(): ExpressionContext | null { + return this.getRuleContext(0, ExpressionContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUnicodeStringLiteral) { - listener.enterUnicodeStringLiteral(this); + if(listener.enterMergeDelete) { + listener.enterMergeDelete(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUnicodeStringLiteral) { - listener.exitUnicodeStringLiteral(this); + if(listener.exitMergeDelete) { + listener.exitMergeDelete(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUnicodeStringLiteral) { - return visitor.visitUnicodeStringLiteral(this); + if (visitor.visitMergeDelete) { + return visitor.visitMergeDelete(this); } else { return visitor.visitChildren(this); } } } -export class BasicStringLiteralContext extends StringContext { - public constructor(ctx: StringContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class OverContext extends antlr.ParserRuleContext { + public _windowName?: IdentifierContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public STRING(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.STRING, 0)!; + public KW_OVER(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_OVER, 0)!; + } + public windowSpecification(): WindowSpecificationContext | null { + return this.getRuleContext(0, WindowSpecificationContext); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_over; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBasicStringLiteral) { - listener.enterBasicStringLiteral(this); + if(listener.enterOver) { + listener.enterOver(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBasicStringLiteral) { - listener.exitBasicStringLiteral(this); + if(listener.exitOver) { + listener.exitOver(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBasicStringLiteral) { - return visitor.visitBasicStringLiteral(this); + if (visitor.visitOver) { + return visitor.visitOver(this); } else { return visitor.visitChildren(this); } @@ -20643,76 +29595,86 @@ export class BasicStringLiteralContext extends StringContext { } -export class TimeZoneSpecifierContext extends antlr.ParserRuleContext { +export class WindowFrameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_timeZoneSpecifier; + public frameExtent(): FrameExtentContext { + return this.getRuleContext(0, FrameExtentContext)!; } - public override copyFrom(ctx: TimeZoneSpecifierContext): void { - super.copyFrom(ctx); + public KW_MEASURES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MEASURES, 0); } -} -export class TimeZoneIntervalContext extends TimeZoneSpecifierContext { - public constructor(ctx: TimeZoneSpecifierContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public measureDefinition(): MeasureDefinitionContext[]; + public measureDefinition(i: number): MeasureDefinitionContext | null; + public measureDefinition(i?: number): MeasureDefinitionContext[] | MeasureDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(MeasureDefinitionContext); + } + + return this.getRuleContext(i, MeasureDefinitionContext); } - public KW_TIME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + public KW_AFTER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AFTER, 0); } - public KW_ZONE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + public KW_MATCH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_MATCH, 0); } - public interval(): IntervalContext { - return this.getRuleContext(0, IntervalContext)!; + public skipTo(): SkipToContext | null { + return this.getRuleContext(0, SkipToContext); } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTimeZoneInterval) { - listener.enterTimeZoneInterval(this); - } + public KW_PATTERN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PATTERN, 0); } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTimeZoneInterval) { - listener.exitTimeZoneInterval(this); - } + public rowPattern(): RowPatternContext | null { + return this.getRuleContext(0, RowPatternContext); } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTimeZoneInterval) { - return visitor.visitTimeZoneInterval(this); - } else { - return visitor.visitChildren(this); + public KW_SUBSET(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SUBSET, 0); + } + public subsetDefinition(): SubsetDefinitionContext[]; + public subsetDefinition(i: number): SubsetDefinitionContext | null; + public subsetDefinition(i?: number): SubsetDefinitionContext[] | SubsetDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(SubsetDefinitionContext); } + + return this.getRuleContext(i, SubsetDefinitionContext); } -} -export class TimeZoneStringContext extends TimeZoneSpecifierContext { - public constructor(ctx: TimeZoneSpecifierContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_DEFINE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFINE, 0); } - public KW_TIME(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TIME, 0)!; + public variableDefinition(): VariableDefinitionContext[]; + public variableDefinition(i: number): VariableDefinitionContext | null; + public variableDefinition(i?: number): VariableDefinitionContext[] | VariableDefinitionContext | null { + if (i === undefined) { + return this.getRuleContexts(VariableDefinitionContext); + } + + return this.getRuleContext(i, VariableDefinitionContext); } - public KW_ZONE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ZONE, 0)!; + public KW_INITIAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INITIAL, 0); } - public string(): StringContext { - return this.getRuleContext(0, StringContext)!; + public KW_SEEK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SEEK, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_windowFrame; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTimeZoneString) { - listener.enterTimeZoneString(this); + if(listener.enterWindowFrame) { + listener.enterWindowFrame(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTimeZoneString) { - listener.exitTimeZoneString(this); + if(listener.exitWindowFrame) { + listener.exitWindowFrame(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTimeZoneString) { - return visitor.visitTimeZoneString(this); + if (visitor.visitWindowFrame) { + return visitor.visitWindowFrame(this); } else { return visitor.visitChildren(this); } @@ -20720,44 +29682,53 @@ export class TimeZoneStringContext extends TimeZoneSpecifierContext { } -export class ComparisonOperatorContext extends antlr.ParserRuleContext { +export class FrameExtentContext extends antlr.ParserRuleContext { + public _frameType?: Token | null; + public _start?: FrameBoundContext; + public _end?: FrameBoundContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public EQ(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.EQ, 0); + public KW_RANGE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RANGE, 0); } - public NEQ(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.NEQ, 0); + public frameBound(): FrameBoundContext[]; + public frameBound(i: number): FrameBoundContext | null; + public frameBound(i?: number): FrameBoundContext[] | FrameBoundContext | null { + if (i === undefined) { + return this.getRuleContexts(FrameBoundContext); + } + + return this.getRuleContext(i, FrameBoundContext); } - public LT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.LT, 0); + public KW_ROWS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ROWS, 0); } - public LTE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.LTE, 0); + public KW_GROUPS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GROUPS, 0); } - public GT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.GT, 0); + public KW_BETWEEN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BETWEEN, 0); } - public GTE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.GTE, 0); + public KW_AND(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_AND, 0); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_comparisonOperator; + return TrinoSqlParser.RULE_frameExtent; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterComparisonOperator) { - listener.enterComparisonOperator(this); + if(listener.enterFrameExtent) { + listener.enterFrameExtent(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitComparisonOperator) { - listener.exitComparisonOperator(this); + if(listener.exitFrameExtent) { + listener.exitFrameExtent(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitComparisonOperator) { - return visitor.visitComparisonOperator(this); + if (visitor.visitFrameExtent) { + return visitor.visitFrameExtent(this); } else { return visitor.visitChildren(this); } @@ -20765,122 +29736,107 @@ export class ComparisonOperatorContext extends antlr.ParserRuleContext { } -export class ComparisonQuantifierContext extends antlr.ParserRuleContext { +export class FrameBoundContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_ALL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ALL, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_frameBound; } - public KW_SOME(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SOME, 0); + public override copyFrom(ctx: FrameBoundContext): void { + super.copyFrom(ctx); } - public KW_ANY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ANY, 0); +} +export class BoundedFrameContext extends FrameBoundContext { + public _boundType?: Token | null; + public constructor(ctx: FrameBoundContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_comparisonQuantifier; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public KW_PRECEDING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRECEDING, 0); + } + public KW_FOLLOWING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FOLLOWING, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterComparisonQuantifier) { - listener.enterComparisonQuantifier(this); + if(listener.enterBoundedFrame) { + listener.enterBoundedFrame(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitComparisonQuantifier) { - listener.exitComparisonQuantifier(this); + if(listener.exitBoundedFrame) { + listener.exitBoundedFrame(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitComparisonQuantifier) { - return visitor.visitComparisonQuantifier(this); + if (visitor.visitBoundedFrame) { + return visitor.visitBoundedFrame(this); } else { return visitor.visitChildren(this); } } } - - -export class BooleanValueContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class UnboundedFrameContext extends FrameBoundContext { + public _boundType?: Token | null; + public constructor(ctx: FrameBoundContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_TRUE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TRUE, 0); + public KW_UNBOUNDED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UNBOUNDED, 0)!; } - public KW_FALSE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FALSE, 0); + public KW_PRECEDING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRECEDING, 0); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_booleanValue; + public KW_FOLLOWING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FOLLOWING, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBooleanValue) { - listener.enterBooleanValue(this); + if(listener.enterUnboundedFrame) { + listener.enterUnboundedFrame(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBooleanValue) { - listener.exitBooleanValue(this); + if(listener.exitUnboundedFrame) { + listener.exitUnboundedFrame(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBooleanValue) { - return visitor.visitBooleanValue(this); + if (visitor.visitUnboundedFrame) { + return visitor.visitUnboundedFrame(this); } else { return visitor.visitChildren(this); } } } - - -export class IntervalContext extends antlr.ParserRuleContext { - public _sign?: Token | null; - public _from_?: IntervalFieldContext; - public _to?: IntervalFieldContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_INTERVAL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INTERVAL, 0)!; - } - public string(): StringContext { - return this.getRuleContext(0, StringContext)!; - } - public intervalField(): IntervalFieldContext[]; - public intervalField(i: number): IntervalFieldContext | null; - public intervalField(i?: number): IntervalFieldContext[] | IntervalFieldContext | null { - if (i === undefined) { - return this.getRuleContexts(IntervalFieldContext); - } - - return this.getRuleContext(i, IntervalFieldContext); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TO, 0); - } - public PLUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.PLUS, 0); +export class CurrentRowBoundContext extends FrameBoundContext { + public constructor(ctx: FrameBoundContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public MINUS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.MINUS, 0); + public KW_CURRENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CURRENT, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_interval; + public KW_ROW(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ROW, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterInterval) { - listener.enterInterval(this); + if(listener.enterCurrentRowBound) { + listener.enterCurrentRowBound(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitInterval) { - listener.exitInterval(this); + if(listener.exitCurrentRowBound) { + listener.exitCurrentRowBound(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitInterval) { - return visitor.visitInterval(this); + if (visitor.visitCurrentRowBound) { + return visitor.visitCurrentRowBound(this); } else { return visitor.visitChildren(this); } @@ -20888,83 +29844,105 @@ export class IntervalContext extends antlr.ParserRuleContext { } -export class IntervalFieldContext extends antlr.ParserRuleContext { +export class RowPatternContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_YEAR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_YEAR, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rowPattern; } - public KW_MONTH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MONTH, 0); + public override copyFrom(ctx: RowPatternContext): void { + super.copyFrom(ctx); } - public KW_DAY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DAY, 0); +} +export class QuantifiedPrimaryContext extends RowPatternContext { + public constructor(ctx: RowPatternContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_HOUR(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_HOUR, 0); + public patternPrimary(): PatternPrimaryContext { + return this.getRuleContext(0, PatternPrimaryContext)!; } - public KW_MINUTE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MINUTE, 0); + public patternQuantifier(): PatternQuantifierContext | null { + return this.getRuleContext(0, PatternQuantifierContext); } - public KW_SECOND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SECOND, 0); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterQuantifiedPrimary) { + listener.enterQuantifiedPrimary(this); + } } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_intervalField; + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitQuantifiedPrimary) { + listener.exitQuantifiedPrimary(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitQuantifiedPrimary) { + return visitor.visitQuantifiedPrimary(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class PatternConcatenationContext extends RowPatternContext { + public constructor(ctx: RowPatternContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public rowPattern(): RowPatternContext[]; + public rowPattern(i: number): RowPatternContext | null; + public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { + if (i === undefined) { + return this.getRuleContexts(RowPatternContext); + } + + return this.getRuleContext(i, RowPatternContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterIntervalField) { - listener.enterIntervalField(this); + if(listener.enterPatternConcatenation) { + listener.enterPatternConcatenation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitIntervalField) { - listener.exitIntervalField(this); + if(listener.exitPatternConcatenation) { + listener.exitPatternConcatenation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitIntervalField) { - return visitor.visitIntervalField(this); + if (visitor.visitPatternConcatenation) { + return visitor.visitPatternConcatenation(this); } else { return visitor.visitChildren(this); } } } - - -export class NormalFormContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_NFD(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NFD, 0); - } - public KW_NFC(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NFC, 0); - } - public KW_NFKD(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NFKD, 0); - } - public KW_NFKC(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_NFKC, 0); +export class PatternAlternationContext extends RowPatternContext { + public constructor(ctx: RowPatternContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_normalForm; + public rowPattern(): RowPatternContext[]; + public rowPattern(i: number): RowPatternContext | null; + public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { + if (i === undefined) { + return this.getRuleContexts(RowPatternContext); + } + + return this.getRuleContext(i, RowPatternContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNormalForm) { - listener.enterNormalForm(this); + if(listener.enterPatternAlternation) { + listener.enterPatternAlternation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNormalForm) { - listener.exitNormalForm(this); + if(listener.exitPatternAlternation) { + listener.exitPatternAlternation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNormalForm) { - return visitor.visitNormalForm(this); + if (visitor.visitPatternAlternation) { + return visitor.visitPatternAlternation(this); } else { return visitor.visitChildren(this); } @@ -20972,420 +29950,339 @@ export class NormalFormContext extends antlr.ParserRuleContext { } -export class TypeContext extends antlr.ParserRuleContext { +export class PatternPrimaryContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_type; + return TrinoSqlParser.RULE_patternPrimary; } - public override copyFrom(ctx: TypeContext): void { + public override copyFrom(ctx: PatternPrimaryContext): void { super.copyFrom(ctx); } } -export class RowTypeContext extends TypeContext { - public constructor(ctx: TypeContext) { +export class PatternPermutationContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ROW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROW, 0)!; + public KW_PERMUTE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_PERMUTE, 0)!; } - public rowField(): RowFieldContext[]; - public rowField(i: number): RowFieldContext | null; - public rowField(i?: number): RowFieldContext[] | RowFieldContext | null { + public rowPattern(): RowPatternContext[]; + public rowPattern(i: number): RowPatternContext | null; + public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { if (i === undefined) { - return this.getRuleContexts(RowFieldContext); + return this.getRuleContexts(RowPatternContext); } - return this.getRuleContext(i, RowFieldContext); + return this.getRuleContext(i, RowPatternContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRowType) { - listener.enterRowType(this); + if(listener.enterPatternPermutation) { + listener.enterPatternPermutation(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRowType) { - listener.exitRowType(this); + if(listener.exitPatternPermutation) { + listener.exitPatternPermutation(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRowType) { - return visitor.visitRowType(this); + if (visitor.visitPatternPermutation) { + return visitor.visitPatternPermutation(this); } else { return visitor.visitChildren(this); } } } -export class IntervalTypeContext extends TypeContext { - public _from_?: IntervalFieldContext; - public _to?: IntervalFieldContext; - public constructor(ctx: TypeContext) { +export class PartitionEndAnchorContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_INTERVAL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INTERVAL, 0)!; - } - public intervalField(): IntervalFieldContext[]; - public intervalField(i: number): IntervalFieldContext | null; - public intervalField(i?: number): IntervalFieldContext[] | IntervalFieldContext | null { - if (i === undefined) { - return this.getRuleContexts(IntervalFieldContext); - } - - return this.getRuleContext(i, IntervalFieldContext); - } - public KW_TO(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TO, 0); - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterIntervalType) { - listener.enterIntervalType(this); + if(listener.enterPartitionEndAnchor) { + listener.enterPartitionEndAnchor(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitIntervalType) { - listener.exitIntervalType(this); + if(listener.exitPartitionEndAnchor) { + listener.exitPartitionEndAnchor(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitIntervalType) { - return visitor.visitIntervalType(this); + if (visitor.visitPartitionEndAnchor) { + return visitor.visitPartitionEndAnchor(this); } else { return visitor.visitChildren(this); } } } -export class ArrayTypeContext extends TypeContext { - public constructor(ctx: TypeContext) { +export class PatternVariableContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; - } - public KW_ARRAY(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; - } - public INTEGER_VALUE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterArrayType) { - listener.enterArrayType(this); + if(listener.enterPatternVariable) { + listener.enterPatternVariable(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitArrayType) { - listener.exitArrayType(this); + if(listener.exitPatternVariable) { + listener.exitPatternVariable(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitArrayType) { - return visitor.visitArrayType(this); + if (visitor.visitPatternVariable) { + return visitor.visitPatternVariable(this); } else { return visitor.visitChildren(this); } } } -export class DoublePrecisionTypeContext extends TypeContext { - public constructor(ctx: TypeContext) { +export class ExcludedPatternContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_DOUBLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DOUBLE, 0)!; - } - public KW_PRECISION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PRECISION, 0)!; + public rowPattern(): RowPatternContext { + return this.getRuleContext(0, RowPatternContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDoublePrecisionType) { - listener.enterDoublePrecisionType(this); + if(listener.enterExcludedPattern) { + listener.enterExcludedPattern(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDoublePrecisionType) { - listener.exitDoublePrecisionType(this); + if(listener.exitExcludedPattern) { + listener.exitExcludedPattern(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDoublePrecisionType) { - return visitor.visitDoublePrecisionType(this); + if (visitor.visitExcludedPattern) { + return visitor.visitExcludedPattern(this); } else { return visitor.visitChildren(this); } } } -export class LegacyArrayTypeContext extends TypeContext { - public constructor(ctx: TypeContext) { +export class PartitionStartAnchorContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ARRAY(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ARRAY, 0)!; - } - public LT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.LT, 0)!; - } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; - } - public GT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.GT, 0)!; - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLegacyArrayType) { - listener.enterLegacyArrayType(this); + if(listener.enterPartitionStartAnchor) { + listener.enterPartitionStartAnchor(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLegacyArrayType) { - listener.exitLegacyArrayType(this); + if(listener.exitPartitionStartAnchor) { + listener.exitPartitionStartAnchor(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLegacyArrayType) { - return visitor.visitLegacyArrayType(this); + if (visitor.visitPartitionStartAnchor) { + return visitor.visitPartitionStartAnchor(this); } else { return visitor.visitChildren(this); } } } -export class GenericTypeContext extends TypeContext { - public constructor(ctx: TypeContext) { +export class EmptyPatternContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; - } - public typeParameter(): TypeParameterContext[]; - public typeParameter(i: number): TypeParameterContext | null; - public typeParameter(i?: number): TypeParameterContext[] | TypeParameterContext | null { - if (i === undefined) { - return this.getRuleContexts(TypeParameterContext); - } - - return this.getRuleContext(i, TypeParameterContext); - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGenericType) { - listener.enterGenericType(this); + if(listener.enterEmptyPattern) { + listener.enterEmptyPattern(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGenericType) { - listener.exitGenericType(this); + if(listener.exitEmptyPattern) { + listener.exitEmptyPattern(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGenericType) { - return visitor.visitGenericType(this); + if (visitor.visitEmptyPattern) { + return visitor.visitEmptyPattern(this); } else { return visitor.visitChildren(this); } } } -export class DateTimeTypeContext extends TypeContext { - public _base?: Token | null; - public _precision?: TypeParameterContext; - public constructor(ctx: TypeContext) { +export class GroupedPatternContext extends PatternPrimaryContext { + public constructor(ctx: PatternPrimaryContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_TIMESTAMP(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TIMESTAMP, 0); - } - public KW_WITHOUT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); - } - public KW_TIME(): antlr.TerminalNode[]; - public KW_TIME(i: number): antlr.TerminalNode | null; - public KW_TIME(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.KW_TIME); - } else { - return this.getToken(TrinoSqlParser.KW_TIME, i); - } - } - public KW_ZONE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ZONE, 0); - } - public typeParameter(): TypeParameterContext | null { - return this.getRuleContext(0, TypeParameterContext); - } - public KW_WITH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WITH, 0); + public rowPattern(): RowPatternContext { + return this.getRuleContext(0, RowPatternContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterDateTimeType) { - listener.enterDateTimeType(this); + if(listener.enterGroupedPattern) { + listener.enterGroupedPattern(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitDateTimeType) { - listener.exitDateTimeType(this); + if(listener.exitGroupedPattern) { + listener.exitGroupedPattern(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitDateTimeType) { - return visitor.visitDateTimeType(this); + if (visitor.visitGroupedPattern) { + return visitor.visitGroupedPattern(this); } else { return visitor.visitChildren(this); } } } -export class LegacyMapTypeContext extends TypeContext { - public _keyType?: TypeContext; - public _valueType?: TypeContext; - public constructor(ctx: TypeContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class PatternQuantifierContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_MAP(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MAP, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_patternQuantifier; } - public LT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.LT, 0)!; + public override copyFrom(ctx: PatternQuantifierContext): void { + super.copyFrom(ctx); } - public GT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.GT, 0)!; +} +export class ZeroOrMoreQuantifierContext extends PatternQuantifierContext { + public _reluctant?: Token | null; + public constructor(ctx: PatternQuantifierContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public type_(): TypeContext[]; - public type_(i: number): TypeContext | null; - public type_(i?: number): TypeContext[] | TypeContext | null { - if (i === undefined) { - return this.getRuleContexts(TypeContext); - } - - return this.getRuleContext(i, TypeContext); + public ASTERISK(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.ASTERISK, 0)!; + } + public QUESTION_MARK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterLegacyMapType) { - listener.enterLegacyMapType(this); + if(listener.enterZeroOrMoreQuantifier) { + listener.enterZeroOrMoreQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitLegacyMapType) { - listener.exitLegacyMapType(this); + if(listener.exitZeroOrMoreQuantifier) { + listener.exitZeroOrMoreQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitLegacyMapType) { - return visitor.visitLegacyMapType(this); + if (visitor.visitZeroOrMoreQuantifier) { + return visitor.visitZeroOrMoreQuantifier(this); } else { return visitor.visitChildren(this); } } } - - -export class RowFieldContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public type(): TypeContext { - return this.getRuleContext(0, TypeContext)!; +export class OneOrMoreQuantifierContext extends PatternQuantifierContext { + public _reluctant?: Token | null; + public constructor(ctx: PatternQuantifierContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); + public PLUS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.PLUS, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_rowField; + public QUESTION_MARK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRowField) { - listener.enterRowField(this); + if(listener.enterOneOrMoreQuantifier) { + listener.enterOneOrMoreQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRowField) { - listener.exitRowField(this); + if(listener.exitOneOrMoreQuantifier) { + listener.exitOneOrMoreQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRowField) { - return visitor.visitRowField(this); + if (visitor.visitOneOrMoreQuantifier) { + return visitor.visitOneOrMoreQuantifier(this); } else { return visitor.visitChildren(this); } } } - - -export class TypeParameterContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public INTEGER_VALUE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.INTEGER_VALUE, 0); - } - public type(): TypeContext | null { - return this.getRuleContext(0, TypeContext); +export class ZeroOrOneQuantifierContext extends PatternQuantifierContext { + public _reluctant?: Token | null; + public constructor(ctx: PatternQuantifierContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_typeParameter; + public QUESTION_MARK(): antlr.TerminalNode[]; + public QUESTION_MARK(i: number): antlr.TerminalNode | null; + public QUESTION_MARK(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.QUESTION_MARK); + } else { + return this.getToken(TrinoSqlParser.QUESTION_MARK, i); + } } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTypeParameter) { - listener.enterTypeParameter(this); + if(listener.enterZeroOrOneQuantifier) { + listener.enterZeroOrOneQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTypeParameter) { - listener.exitTypeParameter(this); + if(listener.exitZeroOrOneQuantifier) { + listener.exitZeroOrOneQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTypeParameter) { - return visitor.visitTypeParameter(this); + if (visitor.visitZeroOrOneQuantifier) { + return visitor.visitZeroOrOneQuantifier(this); } else { return visitor.visitChildren(this); } } } - - -export class WhenClauseContext extends antlr.ParserRuleContext { - public _condition?: ExpressionContext; - public _result?: ExpressionContext; - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; - } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_THEN, 0)!; +export class RangeQuantifierContext extends PatternQuantifierContext { + public _exactly?: Token | null; + public _reluctant?: Token | null; + public _atLeast?: Token | null; + public _atMost?: Token | null; + public constructor(ctx: PatternQuantifierContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); + public INTEGER_VALUE(): antlr.TerminalNode[]; + public INTEGER_VALUE(i: number): antlr.TerminalNode | null; + public INTEGER_VALUE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.INTEGER_VALUE); + } else { + return this.getToken(TrinoSqlParser.INTEGER_VALUE, i); + } } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_whenClause; + public QUESTION_MARK(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterWhenClause) { - listener.enterWhenClause(this); + if(listener.enterRangeQuantifier) { + listener.enterRangeQuantifier(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitWhenClause) { - listener.exitWhenClause(this); + if(listener.exitRangeQuantifier) { + listener.exitRangeQuantifier(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitWhenClause) { - return visitor.visitWhenClause(this); + if (visitor.visitRangeQuantifier) { + return visitor.visitRangeQuantifier(this); } else { return visitor.visitChildren(this); } @@ -21393,35 +30290,35 @@ export class WhenClauseContext extends antlr.ParserRuleContext { } -export class FilterContext extends antlr.ParserRuleContext { +export class UpdateAssignmentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_FILTER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FILTER, 0)!; + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public KW_WHERE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WHERE, 0)!; + public EQ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.EQ, 0)!; } - public booleanExpression(): BooleanExpressionContext { - return this.getRuleContext(0, BooleanExpressionContext)!; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_filter; + return TrinoSqlParser.RULE_updateAssignment; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterFilter) { - listener.enterFilter(this); + if(listener.enterUpdateAssignment) { + listener.enterUpdateAssignment(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitFilter) { - listener.exitFilter(this); + if(listener.exitUpdateAssignment) { + listener.exitUpdateAssignment(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitFilter) { - return visitor.visitFilter(this); + if (visitor.visitUpdateAssignment) { + return visitor.visitUpdateAssignment(this); } else { return visitor.visitChildren(this); } @@ -21429,194 +30326,165 @@ export class FilterContext extends antlr.ParserRuleContext { } -export class MergeCaseContext extends antlr.ParserRuleContext { +export class ExplainOptionContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_mergeCase; + return TrinoSqlParser.RULE_explainOption; } - public override copyFrom(ctx: MergeCaseContext): void { + public override copyFrom(ctx: ExplainOptionContext): void { super.copyFrom(ctx); } } -export class MergeInsertContext extends MergeCaseContext { - public _condition?: ExpressionContext; - public _identifier?: IdentifierContext; - public _targets: IdentifierContext[] = []; - public _expression?: ExpressionContext; - public _values: ExpressionContext[] = []; - public constructor(ctx: MergeCaseContext) { +export class ExplainFormatContext extends ExplainOptionContext { + public _value?: Token | null; + public constructor(ctx: ExplainOptionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; - } - public KW_NOT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_NOT, 0)!; - } - public KW_MATCHED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; - } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_THEN, 0)!; - } - public KW_INSERT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_INSERT, 0)!; - } - public KW_VALUES(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_VALUES, 0)!; - } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); - } - - return this.getRuleContext(i, ExpressionContext); - } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AND, 0); + public KW_FORMAT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FORMAT, 0)!; } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); - } - - return this.getRuleContext(i, IdentifierContext); + public KW_TEXT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TEXT, 0); + } + public KW_GRAPHVIZ(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRAPHVIZ, 0); + } + public KW_JSON(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_JSON, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMergeInsert) { - listener.enterMergeInsert(this); + if(listener.enterExplainFormat) { + listener.enterExplainFormat(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMergeInsert) { - listener.exitMergeInsert(this); + if(listener.exitExplainFormat) { + listener.exitExplainFormat(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMergeInsert) { - return visitor.visitMergeInsert(this); + if (visitor.visitExplainFormat) { + return visitor.visitExplainFormat(this); } else { return visitor.visitChildren(this); } } } -export class MergeUpdateContext extends MergeCaseContext { - public _condition?: ExpressionContext; - public _identifier?: IdentifierContext; - public _targets: IdentifierContext[] = []; - public _expression?: ExpressionContext; - public _values: ExpressionContext[] = []; - public constructor(ctx: MergeCaseContext) { +export class ExplainTypeContext extends ExplainOptionContext { + public _value?: Token | null; + public constructor(ctx: ExplainOptionContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; + public KW_TYPE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_TYPE, 0)!; } - public KW_MATCHED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; + public KW_LOGICAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LOGICAL, 0); } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_THEN, 0)!; + public KW_DISTRIBUTED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DISTRIBUTED, 0); } - public KW_UPDATE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_UPDATE, 0)!; + public KW_VALIDATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VALIDATE, 0); } - public KW_SET(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SET, 0)!; + public KW_IO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IO, 0); } - public EQ(): antlr.TerminalNode[]; - public EQ(i: number): antlr.TerminalNode | null; - public EQ(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { - if (i === undefined) { - return this.getTokens(TrinoSqlParser.EQ); - } else { - return this.getToken(TrinoSqlParser.EQ, i); - } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterExplainType) { + listener.enterExplainType(this); + } } - public identifier(): IdentifierContext[]; - public identifier(i: number): IdentifierContext | null; - public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { - if (i === undefined) { - return this.getRuleContexts(IdentifierContext); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitExplainType) { + listener.exitExplainType(this); } - - return this.getRuleContext(i, IdentifierContext); } - public expression(): ExpressionContext[]; - public expression(i: number): ExpressionContext | null; - public expression(i?: number): ExpressionContext[] | ExpressionContext | null { - if (i === undefined) { - return this.getRuleContexts(ExpressionContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitExplainType) { + return visitor.visitExplainType(this); + } else { + return visitor.visitChildren(this); } + } +} - return this.getRuleContext(i, ExpressionContext); + +export class TransactionModeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AND, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_transactionMode; + } + public override copyFrom(ctx: TransactionModeContext): void { + super.copyFrom(ctx); + } +} +export class TransactionAccessModeContext extends TransactionModeContext { + public _accessMode?: Token | null; + public constructor(ctx: TransactionModeContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_READ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_READ, 0)!; + } + public KW_ONLY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ONLY, 0); + } + public KW_WRITE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WRITE, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMergeUpdate) { - listener.enterMergeUpdate(this); + if(listener.enterTransactionAccessMode) { + listener.enterTransactionAccessMode(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMergeUpdate) { - listener.exitMergeUpdate(this); + if(listener.exitTransactionAccessMode) { + listener.exitTransactionAccessMode(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMergeUpdate) { - return visitor.visitMergeUpdate(this); + if (visitor.visitTransactionAccessMode) { + return visitor.visitTransactionAccessMode(this); } else { return visitor.visitChildren(this); } } } -export class MergeDeleteContext extends MergeCaseContext { - public _condition?: ExpressionContext; - public constructor(ctx: MergeCaseContext) { +export class IsolationLevelContext extends TransactionModeContext { + public constructor(ctx: TransactionModeContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_WHEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; - } - public KW_MATCHED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_MATCHED, 0)!; - } - public KW_THEN(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_THEN, 0)!; - } - public KW_DELETE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_DELETE, 0)!; + public KW_ISOLATION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ISOLATION, 0)!; } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AND, 0); + public KW_LEVEL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LEVEL, 0)!; } - public expression(): ExpressionContext | null { - return this.getRuleContext(0, ExpressionContext); + public levelOfIsolation(): LevelOfIsolationContext { + return this.getRuleContext(0, LevelOfIsolationContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterMergeDelete) { - listener.enterMergeDelete(this); + if(listener.enterIsolationLevel) { + listener.enterIsolationLevel(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitMergeDelete) { - listener.exitMergeDelete(this); + if(listener.exitIsolationLevel) { + listener.exitIsolationLevel(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitMergeDelete) { - return visitor.visitMergeDelete(this); + if (visitor.visitIsolationLevel) { + return visitor.visitIsolationLevel(this); } else { return visitor.visitChildren(this); } @@ -21624,123 +30492,125 @@ export class MergeDeleteContext extends MergeCaseContext { } -export class OverContext extends antlr.ParserRuleContext { - public _windowName?: IdentifierContext; +export class LevelOfIsolationContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_OVER(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_OVER, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_levelOfIsolation; } - public windowSpecification(): WindowSpecificationContext | null { - return this.getRuleContext(0, WindowSpecificationContext); + public override copyFrom(ctx: LevelOfIsolationContext): void { + super.copyFrom(ctx); } - public identifier(): IdentifierContext | null { - return this.getRuleContext(0, IdentifierContext); +} +export class ReadUncommittedContext extends LevelOfIsolationContext { + public constructor(ctx: LevelOfIsolationContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_over; + public KW_READ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_READ, 0)!; + } + public KW_UNCOMMITTED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UNCOMMITTED, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterOver) { - listener.enterOver(this); + if(listener.enterReadUncommitted) { + listener.enterReadUncommitted(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitOver) { - listener.exitOver(this); + if(listener.exitReadUncommitted) { + listener.exitReadUncommitted(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitOver) { - return visitor.visitOver(this); + if (visitor.visitReadUncommitted) { + return visitor.visitReadUncommitted(this); } else { return visitor.visitChildren(this); } } } - - -export class WindowFrameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public frameExtent(): FrameExtentContext { - return this.getRuleContext(0, FrameExtentContext)!; +export class SerializableContext extends LevelOfIsolationContext { + public constructor(ctx: LevelOfIsolationContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_MEASURES(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MEASURES, 0); + public KW_SERIALIZABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SERIALIZABLE, 0)!; } - public measureDefinition(): MeasureDefinitionContext[]; - public measureDefinition(i: number): MeasureDefinitionContext | null; - public measureDefinition(i?: number): MeasureDefinitionContext[] | MeasureDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(MeasureDefinitionContext); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterSerializable) { + listener.enterSerializable(this); } - - return this.getRuleContext(i, MeasureDefinitionContext); - } - public KW_AFTER(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AFTER, 0); } - public KW_MATCH(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_MATCH, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitSerializable) { + listener.exitSerializable(this); + } } - public skipTo(): SkipToContext | null { - return this.getRuleContext(0, SkipToContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitSerializable) { + return visitor.visitSerializable(this); + } else { + return visitor.visitChildren(this); + } } - public KW_PATTERN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PATTERN, 0); +} +export class ReadCommittedContext extends LevelOfIsolationContext { + public constructor(ctx: LevelOfIsolationContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public rowPattern(): RowPatternContext | null { - return this.getRuleContext(0, RowPatternContext); + public KW_READ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_READ, 0)!; } - public KW_SUBSET(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SUBSET, 0); + public KW_COMMITTED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMITTED, 0)!; } - public subsetDefinition(): SubsetDefinitionContext[]; - public subsetDefinition(i: number): SubsetDefinitionContext | null; - public subsetDefinition(i?: number): SubsetDefinitionContext[] | SubsetDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(SubsetDefinitionContext); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterReadCommitted) { + listener.enterReadCommitted(this); } - - return this.getRuleContext(i, SubsetDefinitionContext); } - public KW_DEFINE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DEFINE, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitReadCommitted) { + listener.exitReadCommitted(this); + } } - public variableDefinition(): VariableDefinitionContext[]; - public variableDefinition(i: number): VariableDefinitionContext | null; - public variableDefinition(i?: number): VariableDefinitionContext[] | VariableDefinitionContext | null { - if (i === undefined) { - return this.getRuleContexts(VariableDefinitionContext); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitReadCommitted) { + return visitor.visitReadCommitted(this); + } else { + return visitor.visitChildren(this); } - - return this.getRuleContext(i, VariableDefinitionContext); } - public KW_INITIAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_INITIAL, 0); +} +export class RepeatableReadContext extends LevelOfIsolationContext { + public constructor(ctx: LevelOfIsolationContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_SEEK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_SEEK, 0); + public KW_REPEATABLE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_REPEATABLE, 0)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_windowFrame; + public KW_READ(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_READ, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterWindowFrame) { - listener.enterWindowFrame(this); + if(listener.enterRepeatableRead) { + listener.enterRepeatableRead(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitWindowFrame) { - listener.exitWindowFrame(this); + if(listener.exitRepeatableRead) { + listener.exitRepeatableRead(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitWindowFrame) { - return visitor.visitWindowFrame(this); + if (visitor.visitRepeatableRead) { + return visitor.visitRepeatableRead(this); } else { return visitor.visitChildren(this); } @@ -21748,53 +30618,67 @@ export class WindowFrameContext extends antlr.ParserRuleContext { } -export class FrameExtentContext extends antlr.ParserRuleContext { - public _frameType?: Token | null; - public _frameStart?: FrameBoundContext; - public _end?: FrameBoundContext; +export class CallArgumentContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public KW_RANGE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_RANGE, 0); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_callArgument; } - public frameBound(): FrameBoundContext[]; - public frameBound(i: number): FrameBoundContext | null; - public frameBound(i?: number): FrameBoundContext[] | FrameBoundContext | null { - if (i === undefined) { - return this.getRuleContexts(FrameBoundContext); + public override copyFrom(ctx: CallArgumentContext): void { + super.copyFrom(ctx); + } +} +export class PositionalArgumentContext extends CallArgumentContext { + public constructor(ctx: CallArgumentContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterPositionalArgument) { + listener.enterPositionalArgument(this); } - - return this.getRuleContext(i, FrameBoundContext); } - public KW_ROWS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ROWS, 0); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitPositionalArgument) { + listener.exitPositionalArgument(this); + } } - public KW_GROUPS(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GROUPS, 0); + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitPositionalArgument) { + return visitor.visitPositionalArgument(this); + } else { + return visitor.visitChildren(this); + } } - public KW_BETWEEN(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_BETWEEN, 0); +} +export class NamedArgumentContext extends CallArgumentContext { + public constructor(ctx: CallArgumentContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); } - public KW_AND(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_AND, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_frameExtent; + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterFrameExtent) { - listener.enterFrameExtent(this); + if(listener.enterNamedArgument) { + listener.enterNamedArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitFrameExtent) { - listener.exitFrameExtent(this); + if(listener.exitNamedArgument) { + listener.exitNamedArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitFrameExtent) { - return visitor.visitFrameExtent(this); + if (visitor.visitNamedArgument) { + return visitor.visitNamedArgument(this); } else { return visitor.visitChildren(this); } @@ -21802,107 +30686,106 @@ export class FrameExtentContext extends antlr.ParserRuleContext { } -export class FrameBoundContext extends antlr.ParserRuleContext { +export class PathElementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_frameBound; + return TrinoSqlParser.RULE_pathElement; } - public override copyFrom(ctx: FrameBoundContext): void { + public override copyFrom(ctx: PathElementContext): void { super.copyFrom(ctx); } } -export class BoundedFrameContext extends FrameBoundContext { - public _boundType?: Token | null; - public constructor(ctx: FrameBoundContext) { +export class QualifiedArgumentContext extends PathElementContext { + public constructor(ctx: PathElementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public expression(): ExpressionContext { - return this.getRuleContext(0, ExpressionContext)!; - } - public KW_PRECEDING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRECEDING, 0); - } - public KW_FOLLOWING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FOLLOWING, 0); + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterBoundedFrame) { - listener.enterBoundedFrame(this); + if(listener.enterQualifiedArgument) { + listener.enterQualifiedArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitBoundedFrame) { - listener.exitBoundedFrame(this); + if(listener.exitQualifiedArgument) { + listener.exitQualifiedArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitBoundedFrame) { - return visitor.visitBoundedFrame(this); + if (visitor.visitQualifiedArgument) { + return visitor.visitQualifiedArgument(this); } else { return visitor.visitChildren(this); } } } -export class UnboundedFrameContext extends FrameBoundContext { - public _boundType?: Token | null; - public constructor(ctx: FrameBoundContext) { +export class UnqualifiedArgumentContext extends PathElementContext { + public constructor(ctx: PathElementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_UNBOUNDED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_UNBOUNDED, 0)!; - } - public KW_PRECEDING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_PRECEDING, 0); - } - public KW_FOLLOWING(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_FOLLOWING, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUnboundedFrame) { - listener.enterUnboundedFrame(this); + if(listener.enterUnqualifiedArgument) { + listener.enterUnqualifiedArgument(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUnboundedFrame) { - listener.exitUnboundedFrame(this); + if(listener.exitUnqualifiedArgument) { + listener.exitUnqualifiedArgument(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUnboundedFrame) { - return visitor.visitUnboundedFrame(this); + if (visitor.visitUnqualifiedArgument) { + return visitor.visitUnqualifiedArgument(this); } else { return visitor.visitChildren(this); } } } -export class CurrentRowBoundContext extends FrameBoundContext { - public constructor(ctx: FrameBoundContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class PathSpecificationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public KW_CURRENT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_CURRENT, 0)!; + public pathElement(): PathElementContext[]; + public pathElement(i: number): PathElementContext | null; + public pathElement(i?: number): PathElementContext[] | PathElementContext | null { + if (i === undefined) { + return this.getRuleContexts(PathElementContext); + } + + return this.getRuleContext(i, PathElementContext); } - public KW_ROW(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ROW, 0)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_pathSpecification; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCurrentRowBound) { - listener.enterCurrentRowBound(this); + if(listener.enterPathSpecification) { + listener.enterPathSpecification(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCurrentRowBound) { - listener.exitCurrentRowBound(this); + if(listener.exitPathSpecification) { + listener.exitPathSpecification(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCurrentRowBound) { - return visitor.visitCurrentRowBound(this); + if (visitor.visitPathSpecification) { + return visitor.visitPathSpecification(this); } else { return visitor.visitChildren(this); } @@ -21910,105 +30793,125 @@ export class CurrentRowBoundContext extends FrameBoundContext { } -export class RowPatternContext extends antlr.ParserRuleContext { +export class FunctionSpecificationContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_rowPattern; + public KW_FUNCTION(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FUNCTION, 0)!; } - public override copyFrom(ctx: RowPatternContext): void { - super.copyFrom(ctx); + public functionDeclaration(): FunctionDeclarationContext { + return this.getRuleContext(0, FunctionDeclarationContext)!; } -} -export class QuantifiedPrimaryContext extends RowPatternContext { - public constructor(ctx: RowPatternContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public returnsClause(): ReturnsClauseContext { + return this.getRuleContext(0, ReturnsClauseContext)!; } - public patternPrimary(): PatternPrimaryContext { - return this.getRuleContext(0, PatternPrimaryContext)!; + public controlStatement(): ControlStatementContext { + return this.getRuleContext(0, ControlStatementContext)!; + } + public routineCharacteristic(): RoutineCharacteristicContext[]; + public routineCharacteristic(i: number): RoutineCharacteristicContext | null; + public routineCharacteristic(i?: number): RoutineCharacteristicContext[] | RoutineCharacteristicContext | null { + if (i === undefined) { + return this.getRuleContexts(RoutineCharacteristicContext); + } + + return this.getRuleContext(i, RoutineCharacteristicContext); } - public patternQuantifier(): PatternQuantifierContext | null { - return this.getRuleContext(0, PatternQuantifierContext); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_functionSpecification; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQuantifiedPrimary) { - listener.enterQuantifiedPrimary(this); + if(listener.enterFunctionSpecification) { + listener.enterFunctionSpecification(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQuantifiedPrimary) { - listener.exitQuantifiedPrimary(this); + if(listener.exitFunctionSpecification) { + listener.exitFunctionSpecification(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQuantifiedPrimary) { - return visitor.visitQuantifiedPrimary(this); + if (visitor.visitFunctionSpecification) { + return visitor.visitFunctionSpecification(this); } else { return visitor.visitChildren(this); } } } -export class PatternConcatenationContext extends RowPatternContext { - public constructor(ctx: RowPatternContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class FunctionDeclarationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public rowPattern(): RowPatternContext[]; - public rowPattern(i: number): RowPatternContext | null; - public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { + public functionNameCreate(): FunctionNameCreateContext { + return this.getRuleContext(0, FunctionNameCreateContext)!; + } + public parameterDeclaration(): ParameterDeclarationContext[]; + public parameterDeclaration(i: number): ParameterDeclarationContext | null; + public parameterDeclaration(i?: number): ParameterDeclarationContext[] | ParameterDeclarationContext | null { if (i === undefined) { - return this.getRuleContexts(RowPatternContext); + return this.getRuleContexts(ParameterDeclarationContext); } - return this.getRuleContext(i, RowPatternContext); + return this.getRuleContext(i, ParameterDeclarationContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_functionDeclaration; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPatternConcatenation) { - listener.enterPatternConcatenation(this); + if(listener.enterFunctionDeclaration) { + listener.enterFunctionDeclaration(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPatternConcatenation) { - listener.exitPatternConcatenation(this); + if(listener.exitFunctionDeclaration) { + listener.exitFunctionDeclaration(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPatternConcatenation) { - return visitor.visitPatternConcatenation(this); + if (visitor.visitFunctionDeclaration) { + return visitor.visitFunctionDeclaration(this); } else { return visitor.visitChildren(this); } } } -export class PatternAlternationContext extends RowPatternContext { - public constructor(ctx: RowPatternContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class FunctionSignatureContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public rowPattern(): RowPatternContext[]; - public rowPattern(i: number): RowPatternContext | null; - public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { + public functionName(): FunctionNameContext { + return this.getRuleContext(0, FunctionNameContext)!; + } + public parameterDeclaration(): ParameterDeclarationContext[]; + public parameterDeclaration(i: number): ParameterDeclarationContext | null; + public parameterDeclaration(i?: number): ParameterDeclarationContext[] | ParameterDeclarationContext | null { if (i === undefined) { - return this.getRuleContexts(RowPatternContext); + return this.getRuleContexts(ParameterDeclarationContext); } - return this.getRuleContext(i, RowPatternContext); + return this.getRuleContext(i, ParameterDeclarationContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_functionSignature; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPatternAlternation) { - listener.enterPatternAlternation(this); + if(listener.enterFunctionSignature) { + listener.enterFunctionSignature(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPatternAlternation) { - listener.exitPatternAlternation(this); + if(listener.exitFunctionSignature) { + listener.exitFunctionSignature(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPatternAlternation) { - return visitor.visitPatternAlternation(this); + if (visitor.visitFunctionSignature) { + return visitor.visitFunctionSignature(this); } else { return visitor.visitChildren(this); } @@ -22016,194 +30919,273 @@ export class PatternAlternationContext extends RowPatternContext { } -export class PatternPrimaryContext extends antlr.ParserRuleContext { +export class ParameterDeclarationContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_patternPrimary; + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public override copyFrom(ctx: PatternPrimaryContext): void { - super.copyFrom(ctx); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } -} -export class PatternPermutationContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_parameterDeclaration; } - public KW_PERMUTE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_PERMUTE, 0)!; + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterParameterDeclaration) { + listener.enterParameterDeclaration(this); + } } - public rowPattern(): RowPatternContext[]; - public rowPattern(i: number): RowPatternContext | null; - public rowPattern(i?: number): RowPatternContext[] | RowPatternContext | null { - if (i === undefined) { - return this.getRuleContexts(RowPatternContext); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitParameterDeclaration) { + listener.exitParameterDeclaration(this); } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitParameterDeclaration) { + return visitor.visitParameterDeclaration(this); + } else { + return visitor.visitChildren(this); + } + } +} - return this.getRuleContext(i, RowPatternContext); + +export class ReturnsClauseContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_RETURNS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RETURNS, 0)!; + } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_returnsClause; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPatternPermutation) { - listener.enterPatternPermutation(this); + if(listener.enterReturnsClause) { + listener.enterReturnsClause(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPatternPermutation) { - listener.exitPatternPermutation(this); + if(listener.exitReturnsClause) { + listener.exitReturnsClause(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPatternPermutation) { - return visitor.visitPatternPermutation(this); + if (visitor.visitReturnsClause) { + return visitor.visitReturnsClause(this); } else { return visitor.visitChildren(this); } } } -export class PartitionEndAnchorContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { + + +export class RoutineCharacteristicContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_routineCharacteristic; + } + public override copyFrom(ctx: RoutineCharacteristicContext): void { + super.copyFrom(ctx); + } +} +export class ReturnsNullOnNullInputCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } + public KW_RETURNS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RETURNS, 0)!; + } + public KW_NULL(): antlr.TerminalNode[]; + public KW_NULL(i: number): antlr.TerminalNode | null; + public KW_NULL(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_NULL); + } else { + return this.getToken(TrinoSqlParser.KW_NULL, i); + } + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_INPUT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INPUT, 0)!; + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPartitionEndAnchor) { - listener.enterPartitionEndAnchor(this); + if(listener.enterReturnsNullOnNullInputCharacteristic) { + listener.enterReturnsNullOnNullInputCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPartitionEndAnchor) { - listener.exitPartitionEndAnchor(this); + if(listener.exitReturnsNullOnNullInputCharacteristic) { + listener.exitReturnsNullOnNullInputCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPartitionEndAnchor) { - return visitor.visitPartitionEndAnchor(this); + if (visitor.visitReturnsNullOnNullInputCharacteristic) { + return visitor.visitReturnsNullOnNullInputCharacteristic(this); } else { return visitor.visitChildren(this); } } } -export class PatternVariableContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { +export class SecurityCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_SECURITY(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SECURITY, 0)!; + } + public KW_DEFINER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFINER, 0); + } + public KW_INVOKER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INVOKER, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPatternVariable) { - listener.enterPatternVariable(this); + if(listener.enterSecurityCharacteristic) { + listener.enterSecurityCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPatternVariable) { - listener.exitPatternVariable(this); + if(listener.exitSecurityCharacteristic) { + listener.exitSecurityCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPatternVariable) { - return visitor.visitPatternVariable(this); + if (visitor.visitSecurityCharacteristic) { + return visitor.visitSecurityCharacteristic(this); } else { return visitor.visitChildren(this); } } } -export class ExcludedPatternContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { +export class CalledOnNullInputCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public rowPattern(): RowPatternContext { - return this.getRuleContext(0, RowPatternContext)!; + public KW_CALLED(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_CALLED, 0)!; + } + public KW_ON(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ON, 0)!; + } + public KW_NULL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_NULL, 0)!; + } + public KW_INPUT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_INPUT, 0)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExcludedPattern) { - listener.enterExcludedPattern(this); + if(listener.enterCalledOnNullInputCharacteristic) { + listener.enterCalledOnNullInputCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExcludedPattern) { - listener.exitExcludedPattern(this); + if(listener.exitCalledOnNullInputCharacteristic) { + listener.exitCalledOnNullInputCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExcludedPattern) { - return visitor.visitExcludedPattern(this); + if (visitor.visitCalledOnNullInputCharacteristic) { + return visitor.visitCalledOnNullInputCharacteristic(this); } else { return visitor.visitChildren(this); } } } -export class PartitionStartAnchorContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { +export class CommentCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } + public KW_COMMENT(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_COMMENT, 0)!; + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPartitionStartAnchor) { - listener.enterPartitionStartAnchor(this); + if(listener.enterCommentCharacteristic) { + listener.enterCommentCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPartitionStartAnchor) { - listener.exitPartitionStartAnchor(this); + if(listener.exitCommentCharacteristic) { + listener.exitCommentCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPartitionStartAnchor) { - return visitor.visitPartitionStartAnchor(this); + if (visitor.visitCommentCharacteristic) { + return visitor.visitCommentCharacteristic(this); } else { return visitor.visitChildren(this); } } } -export class EmptyPatternContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { +export class LanguageCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } + public KW_LANGUAGE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LANGUAGE, 0)!; + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterEmptyPattern) { - listener.enterEmptyPattern(this); + if(listener.enterLanguageCharacteristic) { + listener.enterLanguageCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitEmptyPattern) { - listener.exitEmptyPattern(this); + if(listener.exitLanguageCharacteristic) { + listener.exitLanguageCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitEmptyPattern) { - return visitor.visitEmptyPattern(this); + if (visitor.visitLanguageCharacteristic) { + return visitor.visitLanguageCharacteristic(this); } else { return visitor.visitChildren(this); } } } -export class GroupedPatternContext extends PatternPrimaryContext { - public constructor(ctx: PatternPrimaryContext) { +export class DeterministicCharacteristicContext extends RoutineCharacteristicContext { + public constructor(ctx: RoutineCharacteristicContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public rowPattern(): RowPatternContext { - return this.getRuleContext(0, RowPatternContext)!; + public KW_DETERMINISTIC(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DETERMINISTIC, 0)!; + } + public KW_NOT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NOT, 0); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterGroupedPattern) { - listener.enterGroupedPattern(this); + if(listener.enterDeterministicCharacteristic) { + listener.enterDeterministicCharacteristic(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitGroupedPattern) { - listener.exitGroupedPattern(this); + if(listener.exitDeterministicCharacteristic) { + listener.exitDeterministicCharacteristic(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitGroupedPattern) { - return visitor.visitGroupedPattern(this); + if (visitor.visitDeterministicCharacteristic) { + return visitor.visitDeterministicCharacteristic(this); } else { return visitor.visitChildren(this); } @@ -22211,154 +31193,170 @@ export class GroupedPatternContext extends PatternPrimaryContext { } -export class PatternQuantifierContext extends antlr.ParserRuleContext { +export class ControlStatementContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_patternQuantifier; + return TrinoSqlParser.RULE_controlStatement; } - public override copyFrom(ctx: PatternQuantifierContext): void { + public override copyFrom(ctx: ControlStatementContext): void { super.copyFrom(ctx); } } -export class ZeroOrMoreQuantifierContext extends PatternQuantifierContext { - public _reluctant?: Token | null; - public constructor(ctx: PatternQuantifierContext) { +export class WhileStatementContext extends ControlStatementContext { + public _label?: IdentifierContext; + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public ASTERISK(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.ASTERISK, 0)!; - } - public QUESTION_MARK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); - } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterZeroOrMoreQuantifier) { - listener.enterZeroOrMoreQuantifier(this); - } + public KW_WHILE(): antlr.TerminalNode[]; + public KW_WHILE(i: number): antlr.TerminalNode | null; + public KW_WHILE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_WHILE); + } else { + return this.getToken(TrinoSqlParser.KW_WHILE, i); + } } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitZeroOrMoreQuantifier) { - listener.exitZeroOrMoreQuantifier(this); - } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitZeroOrMoreQuantifier) { - return visitor.visitZeroOrMoreQuantifier(this); - } else { - return visitor.visitChildren(this); - } + public KW_DO(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DO, 0)!; } -} -export class OneOrMoreQuantifierContext extends PatternQuantifierContext { - public _reluctant?: Token | null; - public constructor(ctx: PatternQuantifierContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; } - public PLUS(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.PLUS, 0)!; + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; } - public QUESTION_MARK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterOneOrMoreQuantifier) { - listener.enterOneOrMoreQuantifier(this); + if(listener.enterWhileStatement) { + listener.enterWhileStatement(this); } } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitOneOrMoreQuantifier) { - listener.exitOneOrMoreQuantifier(this); + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitWhileStatement) { + listener.exitWhileStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitOneOrMoreQuantifier) { - return visitor.visitOneOrMoreQuantifier(this); + if (visitor.visitWhileStatement) { + return visitor.visitWhileStatement(this); } else { return visitor.visitChildren(this); } } } -export class ZeroOrOneQuantifierContext extends PatternQuantifierContext { - public _reluctant?: Token | null; - public constructor(ctx: PatternQuantifierContext) { +export class SimpleCaseStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public QUESTION_MARK(): antlr.TerminalNode[]; - public QUESTION_MARK(i: number): antlr.TerminalNode | null; - public QUESTION_MARK(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_CASE(): antlr.TerminalNode[]; + public KW_CASE(i: number): antlr.TerminalNode | null; + public KW_CASE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.QUESTION_MARK); + return this.getTokens(TrinoSqlParser.KW_CASE); } else { - return this.getToken(TrinoSqlParser.QUESTION_MARK, i); + return this.getToken(TrinoSqlParser.KW_CASE, i); } } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public caseStatementWhenClause(): CaseStatementWhenClauseContext[]; + public caseStatementWhenClause(i: number): CaseStatementWhenClauseContext | null; + public caseStatementWhenClause(i?: number): CaseStatementWhenClauseContext[] | CaseStatementWhenClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(CaseStatementWhenClauseContext); + } + + return this.getRuleContext(i, CaseStatementWhenClauseContext); + } + public elseClause(): ElseClauseContext | null { + return this.getRuleContext(0, ElseClauseContext); + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterZeroOrOneQuantifier) { - listener.enterZeroOrOneQuantifier(this); + if(listener.enterSimpleCaseStatement) { + listener.enterSimpleCaseStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitZeroOrOneQuantifier) { - listener.exitZeroOrOneQuantifier(this); + if(listener.exitSimpleCaseStatement) { + listener.exitSimpleCaseStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitZeroOrOneQuantifier) { - return visitor.visitZeroOrOneQuantifier(this); + if (visitor.visitSimpleCaseStatement) { + return visitor.visitSimpleCaseStatement(this); } else { return visitor.visitChildren(this); } } } -export class RangeQuantifierContext extends PatternQuantifierContext { - public _exactly?: Token | null; - public _reluctant?: Token | null; - public _atLeast?: Token | null; - public _atMost?: Token | null; - public constructor(ctx: PatternQuantifierContext) { +export class RepeatStatementContext extends ControlStatementContext { + public _label?: IdentifierContext; + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public INTEGER_VALUE(): antlr.TerminalNode[]; - public INTEGER_VALUE(i: number): antlr.TerminalNode | null; - public INTEGER_VALUE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + public KW_REPEAT(): antlr.TerminalNode[]; + public KW_REPEAT(i: number): antlr.TerminalNode | null; + public KW_REPEAT(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { if (i === undefined) { - return this.getTokens(TrinoSqlParser.INTEGER_VALUE); + return this.getTokens(TrinoSqlParser.KW_REPEAT); } else { - return this.getToken(TrinoSqlParser.INTEGER_VALUE, i); + return this.getToken(TrinoSqlParser.KW_REPEAT, i); } } - public QUESTION_MARK(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.QUESTION_MARK, 0); + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; + } + public KW_UNTIL(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_UNTIL, 0)!; + } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; + } + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRangeQuantifier) { - listener.enterRangeQuantifier(this); + if(listener.enterRepeatStatement) { + listener.enterRepeatStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRangeQuantifier) { - listener.exitRangeQuantifier(this); + if(listener.exitRepeatStatement) { + listener.exitRepeatStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRangeQuantifier) { - return visitor.visitRangeQuantifier(this); + if (visitor.visitRepeatStatement) { + return visitor.visitRepeatStatement(this); } else { return visitor.visitChildren(this); } } } - - -export class UpdateAssignmentContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); +export class AssignmentStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public KW_SET(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_SET, 0)!; } public identifier(): IdentifierContext { return this.getRuleContext(0, IdentifierContext)!; @@ -22369,314 +31367,301 @@ export class UpdateAssignmentContext extends antlr.ParserRuleContext { public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext)!; } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_updateAssignment; - } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUpdateAssignment) { - listener.enterUpdateAssignment(this); + if(listener.enterAssignmentStatement) { + listener.enterAssignmentStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUpdateAssignment) { - listener.exitUpdateAssignment(this); + if(listener.exitAssignmentStatement) { + listener.exitAssignmentStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUpdateAssignment) { - return visitor.visitUpdateAssignment(this); + if (visitor.visitAssignmentStatement) { + return visitor.visitAssignmentStatement(this); } else { return visitor.visitChildren(this); } } } - - -export class ExplainOptionContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_explainOption; - } - public override copyFrom(ctx: ExplainOptionContext): void { - super.copyFrom(ctx); - } -} -export class ExplainFormatContext extends ExplainOptionContext { - public _value?: Token | null; - public constructor(ctx: ExplainOptionContext) { +export class LeaveStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_FORMAT(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_FORMAT, 0)!; - } - public KW_TEXT(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_TEXT, 0); - } - public KW_GRAPHVIZ(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_GRAPHVIZ, 0); + public KW_LEAVE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_LEAVE, 0)!; } - public KW_JSON(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_JSON, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExplainFormat) { - listener.enterExplainFormat(this); + if(listener.enterLeaveStatement) { + listener.enterLeaveStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExplainFormat) { - listener.exitExplainFormat(this); + if(listener.exitLeaveStatement) { + listener.exitLeaveStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExplainFormat) { - return visitor.visitExplainFormat(this); + if (visitor.visitLeaveStatement) { + return visitor.visitLeaveStatement(this); } else { return visitor.visitChildren(this); } } } -export class ExplainTypeContext extends ExplainOptionContext { - public _value?: Token | null; - public constructor(ctx: ExplainOptionContext) { +export class CompoundStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_TYPE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_TYPE, 0)!; + public KW_BEGIN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_BEGIN, 0)!; } - public KW_LOGICAL(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_LOGICAL, 0); + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; } - public KW_DISTRIBUTED(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DISTRIBUTED, 0); + public variableDeclaration(): VariableDeclarationContext[]; + public variableDeclaration(i: number): VariableDeclarationContext | null; + public variableDeclaration(i?: number): VariableDeclarationContext[] | VariableDeclarationContext | null { + if (i === undefined) { + return this.getRuleContexts(VariableDeclarationContext); + } + + return this.getRuleContext(i, VariableDeclarationContext); } - public KW_VALIDATE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_VALIDATE, 0); + public SEMICOLON(): antlr.TerminalNode[]; + public SEMICOLON(i: number): antlr.TerminalNode | null; + public SEMICOLON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.SEMICOLON); + } else { + return this.getToken(TrinoSqlParser.SEMICOLON, i); + } } - public KW_IO(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_IO, 0); + public sqlStatementList(): SqlStatementListContext | null { + return this.getRuleContext(0, SqlStatementListContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterExplainType) { - listener.enterExplainType(this); + if(listener.enterCompoundStatement) { + listener.enterCompoundStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitExplainType) { - listener.exitExplainType(this); + if(listener.exitCompoundStatement) { + listener.exitCompoundStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitExplainType) { - return visitor.visitExplainType(this); + if (visitor.visitCompoundStatement) { + return visitor.visitCompoundStatement(this); } else { return visitor.visitChildren(this); } } } - - -export class TransactionModeContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_transactionMode; - } - public override copyFrom(ctx: TransactionModeContext): void { - super.copyFrom(ctx); - } -} -export class TransactionAccessModeContext extends TransactionModeContext { - public _accessMode?: Token | null; - public constructor(ctx: TransactionModeContext) { +export class IterateStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_READ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_READ, 0)!; - } - public KW_ONLY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_ONLY, 0); + public KW_ITERATE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ITERATE, 0)!; } - public KW_WRITE(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_WRITE, 0); + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTransactionAccessMode) { - listener.enterTransactionAccessMode(this); + if(listener.enterIterateStatement) { + listener.enterIterateStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTransactionAccessMode) { - listener.exitTransactionAccessMode(this); + if(listener.exitIterateStatement) { + listener.exitIterateStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTransactionAccessMode) { - return visitor.visitTransactionAccessMode(this); + if (visitor.visitIterateStatement) { + return visitor.visitIterateStatement(this); } else { return visitor.visitChildren(this); } } } -export class IsolationLevelContext extends TransactionModeContext { - public constructor(ctx: TransactionModeContext) { +export class LoopStatementContext extends ControlStatementContext { + public _label?: IdentifierContext; + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_ISOLATION(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_ISOLATION, 0)!; + public KW_LOOP(): antlr.TerminalNode[]; + public KW_LOOP(i: number): antlr.TerminalNode | null; + public KW_LOOP(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_LOOP); + } else { + return this.getToken(TrinoSqlParser.KW_LOOP, i); + } } - public KW_LEVEL(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_LEVEL, 0)!; + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; } - public levelOfIsolation(): LevelOfIsolationContext { - return this.getRuleContext(0, LevelOfIsolationContext)!; + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterIsolationLevel) { - listener.enterIsolationLevel(this); + if(listener.enterLoopStatement) { + listener.enterLoopStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitIsolationLevel) { - listener.exitIsolationLevel(this); + if(listener.exitLoopStatement) { + listener.exitLoopStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitIsolationLevel) { - return visitor.visitIsolationLevel(this); + if (visitor.visitLoopStatement) { + return visitor.visitLoopStatement(this); } else { return visitor.visitChildren(this); } } } - - -export class LevelOfIsolationContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_levelOfIsolation; - } - public override copyFrom(ctx: LevelOfIsolationContext): void { - super.copyFrom(ctx); - } -} -export class ReadUncommittedContext extends LevelOfIsolationContext { - public constructor(ctx: LevelOfIsolationContext) { +export class ReturnStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_READ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_READ, 0)!; + public KW_RETURN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_RETURN, 0)!; } - public KW_UNCOMMITTED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_UNCOMMITTED, 0)!; + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterReadUncommitted) { - listener.enterReadUncommitted(this); + if(listener.enterReturnStatement) { + listener.enterReturnStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitReadUncommitted) { - listener.exitReadUncommitted(this); + if(listener.exitReturnStatement) { + listener.exitReturnStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitReadUncommitted) { - return visitor.visitReadUncommitted(this); + if (visitor.visitReturnStatement) { + return visitor.visitReturnStatement(this); } else { return visitor.visitChildren(this); } } } -export class SerializableContext extends LevelOfIsolationContext { - public constructor(ctx: LevelOfIsolationContext) { +export class IfStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_SERIALIZABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_SERIALIZABLE, 0)!; + public KW_IF(): antlr.TerminalNode[]; + public KW_IF(i: number): antlr.TerminalNode | null; + public KW_IF(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_IF); + } else { + return this.getToken(TrinoSqlParser.KW_IF, i); + } } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSerializable) { - listener.enterSerializable(this); - } + public expression(): ExpressionContext { + return this.getRuleContext(0, ExpressionContext)!; } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSerializable) { - listener.exitSerializable(this); - } + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSerializable) { - return visitor.visitSerializable(this); - } else { - return visitor.visitChildren(this); - } + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; } -} -export class ReadCommittedContext extends LevelOfIsolationContext { - public constructor(ctx: LevelOfIsolationContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; } - public KW_READ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_READ, 0)!; + public elseIfClause(): ElseIfClauseContext[]; + public elseIfClause(i: number): ElseIfClauseContext | null; + public elseIfClause(i?: number): ElseIfClauseContext[] | ElseIfClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(ElseIfClauseContext); + } + + return this.getRuleContext(i, ElseIfClauseContext); } - public KW_COMMITTED(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_COMMITTED, 0)!; + public elseClause(): ElseClauseContext | null { + return this.getRuleContext(0, ElseClauseContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterReadCommitted) { - listener.enterReadCommitted(this); + if(listener.enterIfStatement) { + listener.enterIfStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitReadCommitted) { - listener.exitReadCommitted(this); + if(listener.exitIfStatement) { + listener.exitIfStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitReadCommitted) { - return visitor.visitReadCommitted(this); + if (visitor.visitIfStatement) { + return visitor.visitIfStatement(this); } else { return visitor.visitChildren(this); } } } -export class RepeatableReadContext extends LevelOfIsolationContext { - public constructor(ctx: LevelOfIsolationContext) { +export class SearchedCaseStatementContext extends ControlStatementContext { + public constructor(ctx: ControlStatementContext) { super(ctx.parent, ctx.invokingState); super.copyFrom(ctx); } - public KW_REPEATABLE(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_REPEATABLE, 0)!; + public KW_CASE(): antlr.TerminalNode[]; + public KW_CASE(i: number): antlr.TerminalNode | null; + public KW_CASE(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.KW_CASE); + } else { + return this.getToken(TrinoSqlParser.KW_CASE, i); + } } - public KW_READ(): antlr.TerminalNode { - return this.getToken(TrinoSqlParser.KW_READ, 0)!; + public KW_END(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_END, 0)!; + } + public caseStatementWhenClause(): CaseStatementWhenClauseContext[]; + public caseStatementWhenClause(i: number): CaseStatementWhenClauseContext | null; + public caseStatementWhenClause(i?: number): CaseStatementWhenClauseContext[] | CaseStatementWhenClauseContext | null { + if (i === undefined) { + return this.getRuleContexts(CaseStatementWhenClauseContext); + } + + return this.getRuleContext(i, CaseStatementWhenClauseContext); + } + public elseClause(): ElseClauseContext | null { + return this.getRuleContext(0, ElseClauseContext); } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterRepeatableRead) { - listener.enterRepeatableRead(this); + if(listener.enterSearchedCaseStatement) { + listener.enterSearchedCaseStatement(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitRepeatableRead) { - listener.exitRepeatableRead(this); + if(listener.exitSearchedCaseStatement) { + listener.exitSearchedCaseStatement(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitRepeatableRead) { - return visitor.visitRepeatableRead(this); + if (visitor.visitSearchedCaseStatement) { + return visitor.visitSearchedCaseStatement(this); } else { return visitor.visitChildren(this); } @@ -22684,67 +31669,77 @@ export class RepeatableReadContext extends LevelOfIsolationContext { } -export class CallArgumentContext extends antlr.ParserRuleContext { +export class CaseStatementWhenClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_callArgument; - } - public override copyFrom(ctx: CallArgumentContext): void { - super.copyFrom(ctx); - } -} -export class PositionalArgumentContext extends CallArgumentContext { - public constructor(ctx: CallArgumentContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public KW_WHEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_WHEN, 0)!; } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext)!; } + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; + } + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_caseStatementWhenClause; + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPositionalArgument) { - listener.enterPositionalArgument(this); + if(listener.enterCaseStatementWhenClause) { + listener.enterCaseStatementWhenClause(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPositionalArgument) { - listener.exitPositionalArgument(this); + if(listener.exitCaseStatementWhenClause) { + listener.exitCaseStatementWhenClause(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPositionalArgument) { - return visitor.visitPositionalArgument(this); + if (visitor.visitCaseStatementWhenClause) { + return visitor.visitCaseStatementWhenClause(this); } else { return visitor.visitChildren(this); } } } -export class NamedArgumentContext extends CallArgumentContext { - public constructor(ctx: CallArgumentContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class ElseIfClauseContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public KW_ELSEIF(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ELSEIF, 0)!; } public expression(): ExpressionContext { return this.getRuleContext(0, ExpressionContext)!; } + public KW_THEN(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_THEN, 0)!; + } + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_elseIfClause; + } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterNamedArgument) { - listener.enterNamedArgument(this); + if(listener.enterElseIfClause) { + listener.enterElseIfClause(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitNamedArgument) { - listener.exitNamedArgument(this); + if(listener.exitElseIfClause) { + listener.exitElseIfClause(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitNamedArgument) { - return visitor.visitNamedArgument(this); + if (visitor.visitElseIfClause) { + return visitor.visitElseIfClause(this); } else { return visitor.visitChildren(this); } @@ -22752,21 +31747,45 @@ export class NamedArgumentContext extends CallArgumentContext { } -export class PathElementContext extends antlr.ParserRuleContext { +export class ElseClauseContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } + public KW_ELSE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_ELSE, 0)!; + } + public sqlStatementList(): SqlStatementListContext { + return this.getRuleContext(0, SqlStatementListContext)!; + } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_pathElement; + return TrinoSqlParser.RULE_elseClause; } - public override copyFrom(ctx: PathElementContext): void { - super.copyFrom(ctx); + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterElseClause) { + listener.enterElseClause(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitElseClause) { + listener.exitElseClause(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitElseClause) { + return visitor.visitElseClause(this); + } else { + return visitor.visitChildren(this); + } } } -export class QualifiedArgumentContext extends PathElementContext { - public constructor(ctx: PathElementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + + +export class VariableDeclarationContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_DECLARE(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_DECLARE, 0)!; } public identifier(): IdentifierContext[]; public identifier(i: number): IdentifierContext | null; @@ -22777,45 +31796,31 @@ export class QualifiedArgumentContext extends PathElementContext { return this.getRuleContext(i, IdentifierContext); } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterQualifiedArgument) { - listener.enterQualifiedArgument(this); - } - } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitQualifiedArgument) { - listener.exitQualifiedArgument(this); - } + public type(): TypeContext { + return this.getRuleContext(0, TypeContext)!; } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitQualifiedArgument) { - return visitor.visitQualifiedArgument(this); - } else { - return visitor.visitChildren(this); - } + public KW_DEFAULT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DEFAULT, 0); } -} -export class UnqualifiedArgumentContext extends PathElementContext { - public constructor(ctx: PathElementContext) { - super(ctx.parent, ctx.invokingState); - super.copyFrom(ctx); + public valueExpression(): ValueExpressionContext | null { + return this.getRuleContext(0, ValueExpressionContext); } - public identifier(): IdentifierContext { - return this.getRuleContext(0, IdentifierContext)!; + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_variableDeclaration; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterUnqualifiedArgument) { - listener.enterUnqualifiedArgument(this); + if(listener.enterVariableDeclaration) { + listener.enterVariableDeclaration(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitUnqualifiedArgument) { - listener.exitUnqualifiedArgument(this); + if(listener.exitVariableDeclaration) { + listener.exitVariableDeclaration(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitUnqualifiedArgument) { - return visitor.visitUnqualifiedArgument(this); + if (visitor.visitVariableDeclaration) { + return visitor.visitVariableDeclaration(this); } else { return visitor.visitChildren(this); } @@ -22823,35 +31828,44 @@ export class UnqualifiedArgumentContext extends PathElementContext { } -export class PathSpecificationContext extends antlr.ParserRuleContext { +export class SqlStatementListContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public pathElement(): PathElementContext[]; - public pathElement(i: number): PathElementContext | null; - public pathElement(i?: number): PathElementContext[] | PathElementContext | null { + public controlStatement(): ControlStatementContext[]; + public controlStatement(i: number): ControlStatementContext | null; + public controlStatement(i?: number): ControlStatementContext[] | ControlStatementContext | null { if (i === undefined) { - return this.getRuleContexts(PathElementContext); + return this.getRuleContexts(ControlStatementContext); } - return this.getRuleContext(i, PathElementContext); + return this.getRuleContext(i, ControlStatementContext); + } + public SEMICOLON(): antlr.TerminalNode[]; + public SEMICOLON(i: number): antlr.TerminalNode | null; + public SEMICOLON(i?: number): antlr.TerminalNode | null | antlr.TerminalNode[] { + if (i === undefined) { + return this.getTokens(TrinoSqlParser.SEMICOLON); + } else { + return this.getToken(TrinoSqlParser.SEMICOLON, i); + } } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_pathSpecification; + return TrinoSqlParser.RULE_sqlStatementList; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterPathSpecification) { - listener.enterPathSpecification(this); + if(listener.enterSqlStatementList) { + listener.enterSqlStatementList(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitPathSpecification) { - listener.exitPathSpecification(this); + if(listener.exitSqlStatementList) { + listener.exitSqlStatementList(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitPathSpecification) { - return visitor.visitPathSpecification(this); + if (visitor.visitSqlStatementList) { + return visitor.visitSqlStatementList(this); } else { return visitor.visitChildren(this); } @@ -22863,6 +31877,9 @@ export class PrivilegeContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } + public KW_CREATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CREATE, 0); + } public KW_SELECT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_SELECT, 0); } @@ -22875,6 +31892,9 @@ export class PrivilegeContext extends antlr.ParserRuleContext { public KW_UPDATE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_UPDATE, 0); } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } public override get ruleIndex(): number { return TrinoSqlParser.RULE_privilege; } @@ -22898,32 +31918,35 @@ export class PrivilegeContext extends antlr.ParserRuleContext { } -export class TableOrViewNameContext extends antlr.ParserRuleContext { +export class EntityKindContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public tableName(): TableNameContext | null { - return this.getRuleContext(0, TableNameContext); + public KW_TABLE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TABLE, 0); + } + public KW_SCHEMA(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); } - public viewName(): ViewNameContext | null { - return this.getRuleContext(0, ViewNameContext); + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_tableOrViewName; + return TrinoSqlParser.RULE_entityKind; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableOrViewName) { - listener.enterTableOrViewName(this); + if(listener.enterEntityKind) { + listener.enterEntityKind(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableOrViewName) { - listener.exitTableOrViewName(this); + if(listener.exitEntityKind) { + listener.exitEntityKind(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableOrViewName) { - return visitor.visitTableOrViewName(this); + if (visitor.visitEntityKind) { + return visitor.visitEntityKind(this); } else { return visitor.visitChildren(this); } @@ -22931,29 +31954,32 @@ export class TableOrViewNameContext extends antlr.ParserRuleContext { } -export class TableNameContext extends antlr.ParserRuleContext { +export class GrantObjectContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public tablePath(): TablePathContext { - return this.getRuleContext(0, TablePathContext)!; + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext)!; + } + public entityKind(): EntityKindContext | null { + return this.getRuleContext(0, EntityKindContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_tableName; + return TrinoSqlParser.RULE_grantObject; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableName) { - listener.enterTableName(this); + if(listener.enterGrantObject) { + listener.enterGrantObject(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableName) { - listener.exitTableName(this); + if(listener.exitGrantObject) { + listener.exitGrantObject(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableName) { - return visitor.visitTableName(this); + if (visitor.visitGrantObject) { + return visitor.visitGrantObject(this); } else { return visitor.visitChildren(this); } @@ -22961,29 +31987,32 @@ export class TableNameContext extends antlr.ParserRuleContext { } -export class TableNameCreateContext extends antlr.ParserRuleContext { +export class TableOrViewNameContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public tablePath(): TablePathContext { - return this.getRuleContext(0, TablePathContext)!; + public tableRef(): TableRefContext | null { + return this.getRuleContext(0, TableRefContext); + } + public viewRef(): ViewRefContext | null { + return this.getRuleContext(0, ViewRefContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_tableNameCreate; + return TrinoSqlParser.RULE_tableOrViewName; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTableNameCreate) { - listener.enterTableNameCreate(this); + if(listener.enterTableOrViewName) { + listener.enterTableOrViewName(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTableNameCreate) { - listener.exitTableNameCreate(this); + if(listener.exitTableOrViewName) { + listener.exitTableOrViewName(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTableNameCreate) { - return visitor.visitTableNameCreate(this); + if (visitor.visitTableOrViewName) { + return visitor.visitTableOrViewName(this); } else { return visitor.visitChildren(this); } @@ -22991,59 +32020,38 @@ export class TableNameCreateContext extends antlr.ParserRuleContext { } -export class ViewNameContext extends antlr.ParserRuleContext { +export class TableRefContext extends antlr.ParserRuleContext { + public _table?: IdentifierContext; + public _schema?: IdentifierContext; + public _catalog?: IdentifierContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public viewPath(): ViewPathContext { - return this.getRuleContext(0, ViewPathContext)!; - } - public override get ruleIndex(): number { - return TrinoSqlParser.RULE_viewName; - } - public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterViewName) { - listener.enterViewName(this); - } - } - public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitViewName) { - listener.exitViewName(this); - } - } - public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitViewName) { - return visitor.visitViewName(this); - } else { - return visitor.visitChildren(this); + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); } - } -} - -export class ViewNameCreateContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public viewPath(): ViewPathContext { - return this.getRuleContext(0, ViewPathContext)!; + return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_viewNameCreate; + return TrinoSqlParser.RULE_tableRef; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterViewNameCreate) { - listener.enterViewNameCreate(this); + if(listener.enterTableRef) { + listener.enterTableRef(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitViewNameCreate) { - listener.exitViewNameCreate(this); + if(listener.exitTableRef) { + listener.exitTableRef(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitViewNameCreate) { - return visitor.visitViewNameCreate(this); + if (visitor.visitTableRef) { + return visitor.visitTableRef(this); } else { return visitor.visitChildren(this); } @@ -23051,7 +32059,7 @@ export class ViewNameCreateContext extends antlr.ParserRuleContext { } -export class TablePathContext extends antlr.ParserRuleContext { +export class TableNameCreateContext extends antlr.ParserRuleContext { public _table?: IdentifierContext; public _schema?: IdentifierContext; public _catalog?: IdentifierContext; @@ -23068,21 +32076,21 @@ export class TablePathContext extends antlr.ParserRuleContext { return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_tablePath; + return TrinoSqlParser.RULE_tableNameCreate; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterTablePath) { - listener.enterTablePath(this); + if(listener.enterTableNameCreate) { + listener.enterTableNameCreate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitTablePath) { - listener.exitTablePath(this); + if(listener.exitTableNameCreate) { + listener.exitTableNameCreate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitTablePath) { - return visitor.visitTablePath(this); + if (visitor.visitTableNameCreate) { + return visitor.visitTableNameCreate(this); } else { return visitor.visitChildren(this); } @@ -23090,7 +32098,7 @@ export class TablePathContext extends antlr.ParserRuleContext { } -export class ViewPathContext extends antlr.ParserRuleContext { +export class ViewRefContext extends antlr.ParserRuleContext { public _view?: IdentifierContext; public _schema?: IdentifierContext; public _catalog?: IdentifierContext; @@ -23107,21 +32115,21 @@ export class ViewPathContext extends antlr.ParserRuleContext { return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_viewPath; + return TrinoSqlParser.RULE_viewRef; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterViewPath) { - listener.enterViewPath(this); + if(listener.enterViewRef) { + listener.enterViewRef(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitViewPath) { - listener.exitViewPath(this); + if(listener.exitViewRef) { + listener.exitViewRef(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitViewPath) { - return visitor.visitViewPath(this); + if (visitor.visitViewRef) { + return visitor.visitViewRef(this); } else { return visitor.visitChildren(this); } @@ -23129,29 +32137,38 @@ export class ViewPathContext extends antlr.ParserRuleContext { } -export class SchemaNameContext extends antlr.ParserRuleContext { - public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { - super(parent, invokingState); - } - public schemaPath(): SchemaPathContext { - return this.getRuleContext(0, SchemaPathContext)!; +export class ViewNameCreateContext extends antlr.ParserRuleContext { + public _view?: IdentifierContext; + public _schema?: IdentifierContext; + public _catalog?: IdentifierContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_schemaName; + return TrinoSqlParser.RULE_viewNameCreate; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSchemaName) { - listener.enterSchemaName(this); + if(listener.enterViewNameCreate) { + listener.enterViewNameCreate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSchemaName) { - listener.exitSchemaName(this); + if(listener.exitViewNameCreate) { + listener.exitViewNameCreate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSchemaName) { - return visitor.visitSchemaName(this); + if (visitor.visitViewNameCreate) { + return visitor.visitViewNameCreate(this); } else { return visitor.visitChildren(this); } @@ -23159,29 +32176,37 @@ export class SchemaNameContext extends antlr.ParserRuleContext { } -export class SchemaNameCreateContext extends antlr.ParserRuleContext { +export class SchemaRefContext extends antlr.ParserRuleContext { + public _schema?: IdentifierContext; + public _catalog?: IdentifierContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } - public schemaPath(): SchemaPathContext { - return this.getRuleContext(0, SchemaPathContext)!; + public identifier(): IdentifierContext[]; + public identifier(i: number): IdentifierContext | null; + public identifier(i?: number): IdentifierContext[] | IdentifierContext | null { + if (i === undefined) { + return this.getRuleContexts(IdentifierContext); + } + + return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_schemaNameCreate; + return TrinoSqlParser.RULE_schemaRef; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSchemaNameCreate) { - listener.enterSchemaNameCreate(this); + if(listener.enterSchemaRef) { + listener.enterSchemaRef(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSchemaNameCreate) { - listener.exitSchemaNameCreate(this); + if(listener.exitSchemaRef) { + listener.exitSchemaRef(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSchemaNameCreate) { - return visitor.visitSchemaNameCreate(this); + if (visitor.visitSchemaRef) { + return visitor.visitSchemaRef(this); } else { return visitor.visitChildren(this); } @@ -23189,7 +32214,7 @@ export class SchemaNameCreateContext extends antlr.ParserRuleContext { } -export class SchemaPathContext extends antlr.ParserRuleContext { +export class SchemaNameCreateContext extends antlr.ParserRuleContext { public _schema?: IdentifierContext; public _catalog?: IdentifierContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { @@ -23205,21 +32230,21 @@ export class SchemaPathContext extends antlr.ParserRuleContext { return this.getRuleContext(i, IdentifierContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_schemaPath; + return TrinoSqlParser.RULE_schemaNameCreate; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterSchemaPath) { - listener.enterSchemaPath(this); + if(listener.enterSchemaNameCreate) { + listener.enterSchemaNameCreate(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitSchemaPath) { - listener.exitSchemaPath(this); + if(listener.exitSchemaNameCreate) { + listener.exitSchemaNameCreate(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitSchemaPath) { - return visitor.visitSchemaPath(this); + if (visitor.visitSchemaNameCreate) { + return visitor.visitSchemaNameCreate(this); } else { return visitor.visitChildren(this); } @@ -23227,7 +32252,7 @@ export class SchemaPathContext extends antlr.ParserRuleContext { } -export class CatalogNameContext extends antlr.ParserRuleContext { +export class CatalogRefContext extends antlr.ParserRuleContext { public _catalog?: IdentifierContext; public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -23236,21 +32261,21 @@ export class CatalogNameContext extends antlr.ParserRuleContext { return this.getRuleContext(0, IdentifierContext)!; } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_catalogName; + return TrinoSqlParser.RULE_catalogRef; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterCatalogName) { - listener.enterCatalogName(this); + if(listener.enterCatalogRef) { + listener.enterCatalogRef(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitCatalogName) { - listener.exitCatalogName(this); + if(listener.exitCatalogRef) { + listener.exitCatalogRef(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitCatalogName) { - return visitor.visitCatalogName(this); + if (visitor.visitCatalogRef) { + return visitor.visitCatalogRef(this); } else { return visitor.visitChildren(this); } @@ -23319,7 +32344,37 @@ export class FunctionNameContext extends antlr.ParserRuleContext { } -export class ColumnNameContext extends antlr.ParserRuleContext { +export class FunctionNameCreateContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public qualifiedName(): QualifiedNameContext { + return this.getRuleContext(0, QualifiedNameContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_functionNameCreate; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterFunctionNameCreate) { + listener.enterFunctionNameCreate(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitFunctionNameCreate) { + listener.exitFunctionNameCreate(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitFunctionNameCreate) { + return visitor.visitFunctionNameCreate(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class ColumnRefContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } @@ -23327,21 +32382,21 @@ export class ColumnNameContext extends antlr.ParserRuleContext { return this.getRuleContext(0, QualifiedNameContext); } public override get ruleIndex(): number { - return TrinoSqlParser.RULE_columnName; + return TrinoSqlParser.RULE_columnRef; } public override enterRule(listener: TrinoSqlListener): void { - if(listener.enterColumnName) { - listener.enterColumnName(this); + if(listener.enterColumnRef) { + listener.enterColumnRef(this); } } public override exitRule(listener: TrinoSqlListener): void { - if(listener.exitColumnName) { - listener.exitColumnName(this); + if(listener.exitColumnRef) { + listener.exitColumnRef(this); } } public override accept(visitor: TrinoSqlVisitor): Result | null { - if (visitor.visitColumnName) { - return visitor.visitColumnName(this); + if (visitor.visitColumnRef) { + return visitor.visitColumnRef(this); } else { return visitor.visitChildren(this); } @@ -23415,6 +32470,82 @@ export class QualifiedNameContext extends antlr.ParserRuleContext { } +export class QueryPeriodContext extends antlr.ParserRuleContext { + public _end?: ValueExpressionContext; + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_FOR(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_FOR, 0)!; + } + public rangeType(): RangeTypeContext { + return this.getRuleContext(0, RangeTypeContext)!; + } + public KW_AS(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_AS, 0)!; + } + public KW_OF(): antlr.TerminalNode { + return this.getToken(TrinoSqlParser.KW_OF, 0)!; + } + public valueExpression(): ValueExpressionContext { + return this.getRuleContext(0, ValueExpressionContext)!; + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_queryPeriod; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterQueryPeriod) { + listener.enterQueryPeriod(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitQueryPeriod) { + listener.exitQueryPeriod(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitQueryPeriod) { + return visitor.visitQueryPeriod(this); + } else { + return visitor.visitChildren(this); + } + } +} + + +export class RangeTypeContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_TIMESTAMP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TIMESTAMP, 0); + } + public KW_VERSION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VERSION, 0); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_rangeType; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterRangeType) { + listener.enterRangeType(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitRangeType) { + listener.exitRangeType(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitRangeType) { + return visitor.visitRangeType(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class GrantorContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -23639,6 +32770,54 @@ export class RolesContext extends antlr.ParserRuleContext { } +export class PrivilegeOrRoleContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public KW_CREATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CREATE, 0); + } + public KW_SELECT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SELECT, 0); + } + public KW_DELETE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DELETE, 0); + } + public KW_INSERT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_INSERT, 0); + } + public KW_UPDATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UPDATE, 0); + } + public KW_EXECUTE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_EXECUTE, 0); + } + public identifier(): IdentifierContext | null { + return this.getRuleContext(0, IdentifierContext); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_privilegeOrRole; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterPrivilegeOrRole) { + listener.enterPrivilegeOrRole(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitPrivilegeOrRole) { + listener.exitPrivilegeOrRole(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitPrivilegeOrRole) { + return visitor.visitPrivilegeOrRole(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class IdentifierContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); @@ -23859,10 +33038,78 @@ export class IntegerLiteralContext extends NumberContext { } +export class AuthorizationUserContext extends antlr.ParserRuleContext { + public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { + super(parent, invokingState); + } + public override get ruleIndex(): number { + return TrinoSqlParser.RULE_authorizationUser; + } + public override copyFrom(ctx: AuthorizationUserContext): void { + super.copyFrom(ctx); + } +} +export class StringUserContext extends AuthorizationUserContext { + public constructor(ctx: AuthorizationUserContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public string(): StringContext { + return this.getRuleContext(0, StringContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterStringUser) { + listener.enterStringUser(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitStringUser) { + listener.exitStringUser(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitStringUser) { + return visitor.visitStringUser(this); + } else { + return visitor.visitChildren(this); + } + } +} +export class IdentifierUserContext extends AuthorizationUserContext { + public constructor(ctx: AuthorizationUserContext) { + super(ctx.parent, ctx.invokingState); + super.copyFrom(ctx); + } + public identifier(): IdentifierContext { + return this.getRuleContext(0, IdentifierContext)!; + } + public override enterRule(listener: TrinoSqlListener): void { + if(listener.enterIdentifierUser) { + listener.enterIdentifierUser(this); + } + } + public override exitRule(listener: TrinoSqlListener): void { + if(listener.exitIdentifierUser) { + listener.exitIdentifierUser(this); + } + } + public override accept(visitor: TrinoSqlVisitor): Result | null { + if (visitor.visitIdentifierUser) { + return visitor.visitIdentifierUser(this); + } else { + return visitor.visitChildren(this); + } + } +} + + export class NonReservedContext extends antlr.ParserRuleContext { public constructor(parent: antlr.ParserRuleContext | null, invokingState: number) { super(parent, invokingState); } + public KW_ABSENT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ABSENT, 0); + } public KW_ADD(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_ADD, 0); } @@ -23893,15 +33140,27 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_AUTHORIZATION(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_AUTHORIZATION, 0); } + public KW_BEGIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BEGIN, 0); + } public KW_BERNOULLI(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_BERNOULLI, 0); } + public KW_BOTH(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_BOTH, 0); + } public KW_CALL(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_CALL, 0); } + public KW_CALLED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CALLED, 0); + } public KW_CASCADE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_CASCADE, 0); } + public KW_CATALOG(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CATALOG, 0); + } public KW_CATALOGS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_CATALOGS, 0); } @@ -23920,6 +33179,15 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_COMMITTED(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_COMMITTED, 0); } + public KW_CONDITIONAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_CONDITIONAL, 0); + } + public KW_COPARTITION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COPARTITION, 0); + } + public KW_COUNT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_COUNT, 0); + } public KW_CURRENT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_CURRENT, 0); } @@ -23932,6 +33200,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_DAY(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DAY, 0); } + public KW_DECLARE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DECLARE, 0); + } public KW_DEFAULT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DEFAULT, 0); } @@ -23941,18 +33212,39 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_DEFINER(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DEFINER, 0); } + public KW_DENY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DENY, 0); + } public KW_DESC(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DESC, 0); } + public KW_DESCRIPTOR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DESCRIPTOR, 0); + } + public KW_DETERMINISTIC(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DETERMINISTIC, 0); + } public KW_DISTRIBUTED(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DISTRIBUTED, 0); } + public KW_DO(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_DO, 0); + } public KW_DOUBLE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_DOUBLE, 0); } + public KW_ELSEIF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ELSEIF, 0); + } public KW_EMPTY(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_EMPTY, 0); } + public KW_ENCODING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ENCODING, 0); + } + public KW_ERROR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ERROR, 0); + } public KW_EXCLUDING(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_EXCLUDING, 0); } @@ -23977,9 +33269,15 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_FORMAT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_FORMAT, 0); } + public KW_FUNCTION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_FUNCTION, 0); + } public KW_FUNCTIONS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_FUNCTIONS, 0); } + public KW_GRACE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_GRACE, 0); + } public KW_GRANT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_GRANT, 0); } @@ -23989,9 +33287,6 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_GRANTS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_GRANTS, 0); } - public KW_DENY(): antlr.TerminalNode | null { - return this.getToken(TrinoSqlParser.KW_DENY, 0); - } public KW_GRAPHVIZ(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_GRAPHVIZ, 0); } @@ -24007,6 +33302,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_IGNORE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_IGNORE, 0); } + public KW_IMMEDIATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_IMMEDIATE, 0); + } public KW_INCLUDING(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_INCLUDING, 0); } @@ -24025,18 +33323,39 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_IO(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_IO, 0); } + public KW_ITERATE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_ITERATE, 0); + } public KW_ISOLATION(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_ISOLATION, 0); } public KW_JSON(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_JSON, 0); } + public KW_KEEP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEEP, 0); + } + public KW_KEY(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEY, 0); + } + public KW_KEYS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_KEYS, 0); + } + public KW_LANGUAGE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LANGUAGE, 0); + } public KW_LAST(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_LAST, 0); } public KW_LATERAL(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_LATERAL, 0); } + public KW_LEADING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LEADING, 0); + } + public KW_LEAVE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LEAVE, 0); + } public KW_LEVEL(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_LEVEL, 0); } @@ -24049,6 +33368,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_LOGICAL(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_LOGICAL, 0); } + public KW_LOOP(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_LOOP, 0); + } public KW_MAP(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_MAP, 0); } @@ -24079,6 +33401,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_MONTH(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_MONTH, 0); } + public KW_NESTED(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_NESTED, 0); + } public KW_NEXT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_NEXT, 0); } @@ -24106,6 +33431,12 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_NULLS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_NULLS, 0); } + public KW_OBJECT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OBJECT, 0); + } + public KW_OF(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OF, 0); + } public KW_OFFSET(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_OFFSET, 0); } @@ -24130,12 +33461,18 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_OVER(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_OVER, 0); } + public KW_OVERFLOW(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_OVERFLOW, 0); + } public KW_PARTITION(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PARTITION, 0); } public KW_PARTITIONS(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PARTITIONS, 0); } + public KW_PASSING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PASSING, 0); + } public KW_PAST(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PAST, 0); } @@ -24148,9 +33485,15 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_PER(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PER, 0); } + public KW_PERIOD(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PERIOD, 0); + } public KW_PERMUTE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PERMUTE, 0); } + public KW_PLAN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PLAN, 0); + } public KW_POSITION(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_POSITION, 0); } @@ -24166,6 +33509,12 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_PROPERTIES(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_PROPERTIES, 0); } + public KW_PRUNE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_PRUNE, 0); + } + public KW_QUOTES(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_QUOTES, 0); + } public KW_RANGE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_RANGE, 0); } @@ -24178,6 +33527,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_RENAME(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_RENAME, 0); } + public KW_REPEAT(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_REPEAT, 0); + } public KW_REPEATABLE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_REPEATABLE, 0); } @@ -24193,6 +33545,15 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_RESTRICT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_RESTRICT, 0); } + public KW_RETURN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURN, 0); + } + public KW_RETURNING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNING, 0); + } + public KW_RETURNS(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_RETURNS, 0); + } public KW_REVOKE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_REVOKE, 0); } @@ -24214,6 +33575,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_RUNNING(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_RUNNING, 0); } + public KW_SCALAR(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_SCALAR, 0); + } public KW_SCHEMA(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_SCHEMA, 0); } @@ -24271,6 +33635,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_TEXT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_TEXT, 0); } + public KW_TEXT_STRING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TEXT_STRING, 0); + } public KW_TIES(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_TIES, 0); } @@ -24283,6 +33650,9 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_TO(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_TO, 0); } + public KW_TRAILING(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_TRAILING, 0); + } public KW_TRANSACTION(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_TRANSACTION, 0); } @@ -24301,9 +33671,21 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_UNCOMMITTED(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_UNCOMMITTED, 0); } + public KW_UNCONDITIONAL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNCONDITIONAL, 0); + } + public KW_UNIQUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNIQUE, 0); + } + public KW_UNKNOWN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNKNOWN, 0); + } public KW_UNMATCHED(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_UNMATCHED, 0); } + public KW_UNTIL(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UNTIL, 0); + } public KW_UPDATE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_UPDATE, 0); } @@ -24313,24 +33695,48 @@ export class NonReservedContext extends antlr.ParserRuleContext { public KW_USER(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_USER, 0); } + public KW_UTF16(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF16, 0); + } + public KW_UTF32(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF32, 0); + } + public KW_UTF8(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_UTF8, 0); + } public KW_VALIDATE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_VALIDATE, 0); } + public KW_VALUE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VALUE, 0); + } public KW_VERBOSE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_VERBOSE, 0); } + public KW_VERSION(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_VERSION, 0); + } public KW_VIEW(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_VIEW, 0); } + public KW_WHILE(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WHILE, 0); + } public KW_WINDOW(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_WINDOW, 0); } + public KW_WITHIN(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WITHIN, 0); + } public KW_WITHOUT(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_WITHOUT, 0); } public KW_WORK(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_WORK, 0); } + public KW_WRAPPER(): antlr.TerminalNode | null { + return this.getToken(TrinoSqlParser.KW_WRAPPER, 0); + } public KW_WRITE(): antlr.TerminalNode | null { return this.getToken(TrinoSqlParser.KW_WRITE, 0); } diff --git a/src/lib/trino/TrinoSqlVisitor.ts b/src/lib/trino/TrinoSqlVisitor.ts index 72312cef..d7645f05 100644 --- a/src/lib/trino/TrinoSqlVisitor.ts +++ b/src/lib/trino/TrinoSqlVisitor.ts @@ -10,14 +10,16 @@ import { SQLParserBase } from '../SQLParserBase'; import { ProgramContext } from "./TrinoSqlParser.js"; import { StatementsContext } from "./TrinoSqlParser.js"; -import { StandaloneClauseContext } from "./TrinoSqlParser.js"; import { SingleStatementContext } from "./TrinoSqlParser.js"; import { StandaloneExpressionContext } from "./TrinoSqlParser.js"; import { StandalonePathSpecificationContext } from "./TrinoSqlParser.js"; import { StandaloneTypeContext } from "./TrinoSqlParser.js"; import { StandaloneRowPatternContext } from "./TrinoSqlParser.js"; +import { StandaloneFunctionSpecificationContext } from "./TrinoSqlParser.js"; import { StatementDefaultContext } from "./TrinoSqlParser.js"; import { UseContext } from "./TrinoSqlParser.js"; +import { CreateCatalogContext } from "./TrinoSqlParser.js"; +import { DropCatalogContext } from "./TrinoSqlParser.js"; import { CreateSchemaContext } from "./TrinoSqlParser.js"; import { DropSchemaContext } from "./TrinoSqlParser.js"; import { RenameSchemaContext } from "./TrinoSqlParser.js"; @@ -28,12 +30,15 @@ import { DropTableContext } from "./TrinoSqlParser.js"; import { InsertIntoContext } from "./TrinoSqlParser.js"; import { DeleteContext } from "./TrinoSqlParser.js"; import { TruncateTableContext } from "./TrinoSqlParser.js"; -import { RenameTableContext } from "./TrinoSqlParser.js"; import { CommentTableContext } from "./TrinoSqlParser.js"; +import { CommentViewContext } from "./TrinoSqlParser.js"; import { CommentColumnContext } from "./TrinoSqlParser.js"; +import { RenameTableContext } from "./TrinoSqlParser.js"; +import { AddColumnContext } from "./TrinoSqlParser.js"; import { RenameColumnContext } from "./TrinoSqlParser.js"; import { DropColumnContext } from "./TrinoSqlParser.js"; -import { AddColumnContext } from "./TrinoSqlParser.js"; +import { SetColumnTypeContext } from "./TrinoSqlParser.js"; +import { DropNotNullConstraintContext } from "./TrinoSqlParser.js"; import { SetTableAuthorizationContext } from "./TrinoSqlParser.js"; import { SetTablePropertiesContext } from "./TrinoSqlParser.js"; import { TableExecuteContext } from "./TrinoSqlParser.js"; @@ -48,20 +53,24 @@ import { DropViewContext } from "./TrinoSqlParser.js"; import { RenameViewContext } from "./TrinoSqlParser.js"; import { SetViewAuthorizationContext } from "./TrinoSqlParser.js"; import { CallContext } from "./TrinoSqlParser.js"; +import { CreateFunctionContext } from "./TrinoSqlParser.js"; +import { DropFunctionContext } from "./TrinoSqlParser.js"; import { CreateRoleContext } from "./TrinoSqlParser.js"; import { DropRoleContext } from "./TrinoSqlParser.js"; import { GrantRolesContext } from "./TrinoSqlParser.js"; +import { GrantPrivilegesContext } from "./TrinoSqlParser.js"; import { RevokeRolesContext } from "./TrinoSqlParser.js"; -import { SetRoleContext } from "./TrinoSqlParser.js"; -import { GrantContext } from "./TrinoSqlParser.js"; +import { RevokePrivilegesContext } from "./TrinoSqlParser.js"; import { DenyContext } from "./TrinoSqlParser.js"; -import { RevokeContext } from "./TrinoSqlParser.js"; +import { SetRoleContext } from "./TrinoSqlParser.js"; import { ShowGrantsContext } from "./TrinoSqlParser.js"; import { ExplainContext } from "./TrinoSqlParser.js"; +import { ExplainAnalyzeContext } from "./TrinoSqlParser.js"; import { ShowCreateTableContext } from "./TrinoSqlParser.js"; import { ShowCreateSchemaContext } from "./TrinoSqlParser.js"; import { ShowCreateViewContext } from "./TrinoSqlParser.js"; import { ShowCreateMaterializedViewContext } from "./TrinoSqlParser.js"; +import { ShowCreateFunctionContext } from "./TrinoSqlParser.js"; import { ShowTablesContext } from "./TrinoSqlParser.js"; import { ShowSchemasContext } from "./TrinoSqlParser.js"; import { ShowCatalogsContext } from "./TrinoSqlParser.js"; @@ -72,6 +81,8 @@ import { ShowRolesContext } from "./TrinoSqlParser.js"; import { ShowRoleGrantsContext } from "./TrinoSqlParser.js"; import { ShowFunctionsContext } from "./TrinoSqlParser.js"; import { ShowSessionContext } from "./TrinoSqlParser.js"; +import { SetSessionAuthorizationContext } from "./TrinoSqlParser.js"; +import { ResetSessionAuthorizationContext } from "./TrinoSqlParser.js"; import { SetSessionContext } from "./TrinoSqlParser.js"; import { ResetSessionContext } from "./TrinoSqlParser.js"; import { StartTransactionContext } from "./TrinoSqlParser.js"; @@ -80,6 +91,7 @@ import { RollbackContext } from "./TrinoSqlParser.js"; import { PrepareContext } from "./TrinoSqlParser.js"; import { DeallocateContext } from "./TrinoSqlParser.js"; import { ExecuteContext } from "./TrinoSqlParser.js"; +import { ExecuteImmediateContext } from "./TrinoSqlParser.js"; import { DescribeInputContext } from "./TrinoSqlParser.js"; import { DescribeOutputContext } from "./TrinoSqlParser.js"; import { SetPathContext } from "./TrinoSqlParser.js"; @@ -88,6 +100,8 @@ import { UpdateContext } from "./TrinoSqlParser.js"; import { MergeContext } from "./TrinoSqlParser.js"; import { ShowTableCommentContext } from "./TrinoSqlParser.js"; import { ShowColumnCommentContext } from "./TrinoSqlParser.js"; +import { RootQueryContext } from "./TrinoSqlParser.js"; +import { WithFunctionContext } from "./TrinoSqlParser.js"; import { QueryStatementContext } from "./TrinoSqlParser.js"; import { WithContext } from "./TrinoSqlParser.js"; import { TableElementContext } from "./TrinoSqlParser.js"; @@ -128,6 +142,9 @@ import { JoinTypeContext } from "./TrinoSqlParser.js"; import { JoinCriteriaContext } from "./TrinoSqlParser.js"; import { SampledRelationContext } from "./TrinoSqlParser.js"; import { SampleTypeContext } from "./TrinoSqlParser.js"; +import { TrimsSpecificationContext } from "./TrinoSqlParser.js"; +import { ListAggOverflowBehaviorContext } from "./TrinoSqlParser.js"; +import { ListaggCountIndicationContext } from "./TrinoSqlParser.js"; import { PatternRecognitionContext } from "./TrinoSqlParser.js"; import { MeasureDefinitionContext } from "./TrinoSqlParser.js"; import { RowsPerMatchContext } from "./TrinoSqlParser.js"; @@ -139,15 +156,37 @@ import { AliasedRelationContext } from "./TrinoSqlParser.js"; import { ColumnListCreateContext } from "./TrinoSqlParser.js"; import { ColumnListContext } from "./TrinoSqlParser.js"; import { ColumnAliasesContext } from "./TrinoSqlParser.js"; -import { TableOrViewRelationContext } from "./TrinoSqlParser.js"; +import { TableNameContext } from "./TrinoSqlParser.js"; import { SubqueryRelationContext } from "./TrinoSqlParser.js"; import { UnnestContext } from "./TrinoSqlParser.js"; import { LateralContext } from "./TrinoSqlParser.js"; +import { TableFunctionInvocationContext } from "./TrinoSqlParser.js"; import { ParenthesizedRelationContext } from "./TrinoSqlParser.js"; +import { JsonTableContext } from "./TrinoSqlParser.js"; +import { OrdinalityColumnContext } from "./TrinoSqlParser.js"; +import { ValueColumnContext } from "./TrinoSqlParser.js"; +import { QueryColumnContext } from "./TrinoSqlParser.js"; +import { NestedColumnsContext } from "./TrinoSqlParser.js"; +import { LeafPlanContext } from "./TrinoSqlParser.js"; +import { JoinPlanContext } from "./TrinoSqlParser.js"; +import { UnionPlanContext } from "./TrinoSqlParser.js"; +import { CrossPlanContext } from "./TrinoSqlParser.js"; +import { JsonTablePathNameContext } from "./TrinoSqlParser.js"; +import { PlanPrimaryContext } from "./TrinoSqlParser.js"; +import { JsonTableDefaultPlanContext } from "./TrinoSqlParser.js"; +import { TableFunctionCallContext } from "./TrinoSqlParser.js"; +import { TableFunctionArgumentContext } from "./TrinoSqlParser.js"; +import { TableArgumentContext } from "./TrinoSqlParser.js"; +import { TableArgumentTableContext } from "./TrinoSqlParser.js"; +import { TableArgumentQueryContext } from "./TrinoSqlParser.js"; +import { DescriptorArgumentContext } from "./TrinoSqlParser.js"; +import { DescriptorFieldContext } from "./TrinoSqlParser.js"; +import { CopartitionTablesContext } from "./TrinoSqlParser.js"; import { ExpressionContext } from "./TrinoSqlParser.js"; import { LogicalNotContext } from "./TrinoSqlParser.js"; import { PredicatedContext } from "./TrinoSqlParser.js"; -import { LogicalBinaryContext } from "./TrinoSqlParser.js"; +import { OrContext } from "./TrinoSqlParser.js"; +import { AndContext } from "./TrinoSqlParser.js"; import { ComparisonContext } from "./TrinoSqlParser.js"; import { QuantifiedComparisonContext } from "./TrinoSqlParser.js"; import { BetweenContext } from "./TrinoSqlParser.js"; @@ -163,36 +202,56 @@ import { ArithmeticUnaryContext } from "./TrinoSqlParser.js"; import { AtTimeZoneContext } from "./TrinoSqlParser.js"; import { DereferenceContext } from "./TrinoSqlParser.js"; import { TypeConstructorContext } from "./TrinoSqlParser.js"; -import { SpecialDateTimeFunctionContext } from "./TrinoSqlParser.js"; +import { JsonValueContext } from "./TrinoSqlParser.js"; +import { CurrentDateContext } from "./TrinoSqlParser.js"; import { SubstringContext } from "./TrinoSqlParser.js"; import { CastContext } from "./TrinoSqlParser.js"; import { LambdaContext } from "./TrinoSqlParser.js"; import { ParenthesizedExpressionContext } from "./TrinoSqlParser.js"; +import { TrimContext } from "./TrinoSqlParser.js"; import { ParameterContext } from "./TrinoSqlParser.js"; import { NormalizeContext } from "./TrinoSqlParser.js"; +import { LocalTimestampContext } from "./TrinoSqlParser.js"; +import { JsonObjectContext } from "./TrinoSqlParser.js"; import { IntervalLiteralContext } from "./TrinoSqlParser.js"; import { NumericLiteralContext } from "./TrinoSqlParser.js"; import { BooleanLiteralContext } from "./TrinoSqlParser.js"; +import { JsonArrayContext } from "./TrinoSqlParser.js"; import { SimpleCaseContext } from "./TrinoSqlParser.js"; import { ColumnReferenceContext } from "./TrinoSqlParser.js"; import { NullLiteralContext } from "./TrinoSqlParser.js"; import { RowConstructorContext } from "./TrinoSqlParser.js"; import { SubscriptContext } from "./TrinoSqlParser.js"; +import { JsonExistsContext } from "./TrinoSqlParser.js"; import { CurrentPathContext } from "./TrinoSqlParser.js"; import { SubqueryExpressionContext } from "./TrinoSqlParser.js"; import { BinaryLiteralContext } from "./TrinoSqlParser.js"; +import { CurrentTimeContext } from "./TrinoSqlParser.js"; +import { LocalTimeContext } from "./TrinoSqlParser.js"; import { CurrentUserContext } from "./TrinoSqlParser.js"; +import { JsonQueryContext } from "./TrinoSqlParser.js"; import { MeasureContext } from "./TrinoSqlParser.js"; import { ExtractContext } from "./TrinoSqlParser.js"; import { StringLiteralContext } from "./TrinoSqlParser.js"; import { ArrayConstructorContext } from "./TrinoSqlParser.js"; import { FunctionCallContext } from "./TrinoSqlParser.js"; +import { CurrentTimestampContext } from "./TrinoSqlParser.js"; import { CurrentSchemaContext } from "./TrinoSqlParser.js"; import { ExistsContext } from "./TrinoSqlParser.js"; import { PositionContext } from "./TrinoSqlParser.js"; +import { ListaggContext } from "./TrinoSqlParser.js"; import { SearchedCaseContext } from "./TrinoSqlParser.js"; import { CurrentCatalogContext } from "./TrinoSqlParser.js"; import { GroupingOperationContext } from "./TrinoSqlParser.js"; +import { JsonPathInvocationContext } from "./TrinoSqlParser.js"; +import { JsonValueExpressionContext } from "./TrinoSqlParser.js"; +import { JsonRepresentationContext } from "./TrinoSqlParser.js"; +import { JsonArgumentContext } from "./TrinoSqlParser.js"; +import { JsonExistsErrorBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonValueBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonQueryWrapperBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonQueryBehaviorContext } from "./TrinoSqlParser.js"; +import { JsonObjectMemberContext } from "./TrinoSqlParser.js"; import { ProcessingModeContext } from "./TrinoSqlParser.js"; import { NullTreatmentContext } from "./TrinoSqlParser.js"; import { BasicStringLiteralContext } from "./TrinoSqlParser.js"; @@ -254,23 +313,52 @@ import { NamedArgumentContext } from "./TrinoSqlParser.js"; import { QualifiedArgumentContext } from "./TrinoSqlParser.js"; import { UnqualifiedArgumentContext } from "./TrinoSqlParser.js"; import { PathSpecificationContext } from "./TrinoSqlParser.js"; +import { FunctionSpecificationContext } from "./TrinoSqlParser.js"; +import { FunctionDeclarationContext } from "./TrinoSqlParser.js"; +import { FunctionSignatureContext } from "./TrinoSqlParser.js"; +import { ParameterDeclarationContext } from "./TrinoSqlParser.js"; +import { ReturnsClauseContext } from "./TrinoSqlParser.js"; +import { LanguageCharacteristicContext } from "./TrinoSqlParser.js"; +import { DeterministicCharacteristicContext } from "./TrinoSqlParser.js"; +import { ReturnsNullOnNullInputCharacteristicContext } from "./TrinoSqlParser.js"; +import { CalledOnNullInputCharacteristicContext } from "./TrinoSqlParser.js"; +import { SecurityCharacteristicContext } from "./TrinoSqlParser.js"; +import { CommentCharacteristicContext } from "./TrinoSqlParser.js"; +import { ReturnStatementContext } from "./TrinoSqlParser.js"; +import { AssignmentStatementContext } from "./TrinoSqlParser.js"; +import { SimpleCaseStatementContext } from "./TrinoSqlParser.js"; +import { SearchedCaseStatementContext } from "./TrinoSqlParser.js"; +import { IfStatementContext } from "./TrinoSqlParser.js"; +import { IterateStatementContext } from "./TrinoSqlParser.js"; +import { LeaveStatementContext } from "./TrinoSqlParser.js"; +import { CompoundStatementContext } from "./TrinoSqlParser.js"; +import { LoopStatementContext } from "./TrinoSqlParser.js"; +import { WhileStatementContext } from "./TrinoSqlParser.js"; +import { RepeatStatementContext } from "./TrinoSqlParser.js"; +import { CaseStatementWhenClauseContext } from "./TrinoSqlParser.js"; +import { ElseIfClauseContext } from "./TrinoSqlParser.js"; +import { ElseClauseContext } from "./TrinoSqlParser.js"; +import { VariableDeclarationContext } from "./TrinoSqlParser.js"; +import { SqlStatementListContext } from "./TrinoSqlParser.js"; import { PrivilegeContext } from "./TrinoSqlParser.js"; +import { EntityKindContext } from "./TrinoSqlParser.js"; +import { GrantObjectContext } from "./TrinoSqlParser.js"; import { TableOrViewNameContext } from "./TrinoSqlParser.js"; -import { TableNameContext } from "./TrinoSqlParser.js"; +import { TableRefContext } from "./TrinoSqlParser.js"; import { TableNameCreateContext } from "./TrinoSqlParser.js"; -import { ViewNameContext } from "./TrinoSqlParser.js"; +import { ViewRefContext } from "./TrinoSqlParser.js"; import { ViewNameCreateContext } from "./TrinoSqlParser.js"; -import { TablePathContext } from "./TrinoSqlParser.js"; -import { ViewPathContext } from "./TrinoSqlParser.js"; -import { SchemaNameContext } from "./TrinoSqlParser.js"; +import { SchemaRefContext } from "./TrinoSqlParser.js"; import { SchemaNameCreateContext } from "./TrinoSqlParser.js"; -import { SchemaPathContext } from "./TrinoSqlParser.js"; -import { CatalogNameContext } from "./TrinoSqlParser.js"; +import { CatalogRefContext } from "./TrinoSqlParser.js"; import { CatalogNameCreateContext } from "./TrinoSqlParser.js"; import { FunctionNameContext } from "./TrinoSqlParser.js"; -import { ColumnNameContext } from "./TrinoSqlParser.js"; +import { FunctionNameCreateContext } from "./TrinoSqlParser.js"; +import { ColumnRefContext } from "./TrinoSqlParser.js"; import { ColumnNameCreateContext } from "./TrinoSqlParser.js"; import { QualifiedNameContext } from "./TrinoSqlParser.js"; +import { QueryPeriodContext } from "./TrinoSqlParser.js"; +import { RangeTypeContext } from "./TrinoSqlParser.js"; import { SpecifiedPrincipalContext } from "./TrinoSqlParser.js"; import { CurrentUserGrantorContext } from "./TrinoSqlParser.js"; import { CurrentRoleGrantorContext } from "./TrinoSqlParser.js"; @@ -278,6 +366,7 @@ import { UnspecifiedPrincipalContext } from "./TrinoSqlParser.js"; import { UserPrincipalContext } from "./TrinoSqlParser.js"; import { RolePrincipalContext } from "./TrinoSqlParser.js"; import { RolesContext } from "./TrinoSqlParser.js"; +import { PrivilegeOrRoleContext } from "./TrinoSqlParser.js"; import { UnquotedIdentifierContext } from "./TrinoSqlParser.js"; import { QuotedIdentifierContext } from "./TrinoSqlParser.js"; import { BackQuotedIdentifierContext } from "./TrinoSqlParser.js"; @@ -285,6 +374,8 @@ import { DigitIdentifierContext } from "./TrinoSqlParser.js"; import { DecimalLiteralContext } from "./TrinoSqlParser.js"; import { DoubleLiteralContext } from "./TrinoSqlParser.js"; import { IntegerLiteralContext } from "./TrinoSqlParser.js"; +import { IdentifierUserContext } from "./TrinoSqlParser.js"; +import { StringUserContext } from "./TrinoSqlParser.js"; import { NonReservedContext } from "./TrinoSqlParser.js"; @@ -308,12 +399,6 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitStatements?: (ctx: StatementsContext) => Result; - /** - * Visit a parse tree produced by `TrinoSqlParser.standaloneClause`. - * @param ctx the parse tree - * @return the visitor result - */ - visitStandaloneClause?: (ctx: StandaloneClauseContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.singleStatement`. * @param ctx the parse tree @@ -344,6 +429,12 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitStandaloneRowPattern?: (ctx: StandaloneRowPatternContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.standaloneFunctionSpecification`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStandaloneFunctionSpecification?: (ctx: StandaloneFunctionSpecificationContext) => Result; /** * Visit a parse tree produced by the `statementDefault` * labeled alternative in `TrinoSqlParser.statement`. @@ -358,6 +449,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitUse?: (ctx: UseContext) => Result; + /** + * Visit a parse tree produced by the `createCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCreateCatalog?: (ctx: CreateCatalogContext) => Result; + /** + * Visit a parse tree produced by the `dropCatalog` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDropCatalog?: (ctx: DropCatalogContext) => Result; /** * Visit a parse tree produced by the `createSchema` * labeled alternative in `TrinoSqlParser.statement`. @@ -429,19 +534,19 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitTruncateTable?: (ctx: TruncateTableContext) => Result; /** - * Visit a parse tree produced by the `renameTable` + * Visit a parse tree produced by the `commentTable` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitRenameTable?: (ctx: RenameTableContext) => Result; + visitCommentTable?: (ctx: CommentTableContext) => Result; /** - * Visit a parse tree produced by the `commentTable` + * Visit a parse tree produced by the `commentView` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitCommentTable?: (ctx: CommentTableContext) => Result; + visitCommentView?: (ctx: CommentViewContext) => Result; /** * Visit a parse tree produced by the `commentColumn` * labeled alternative in `TrinoSqlParser.statement`. @@ -449,6 +554,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitCommentColumn?: (ctx: CommentColumnContext) => Result; + /** + * Visit a parse tree produced by the `renameTable` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRenameTable?: (ctx: RenameTableContext) => Result; + /** + * Visit a parse tree produced by the `addColumn` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitAddColumn?: (ctx: AddColumnContext) => Result; /** * Visit a parse tree produced by the `renameColumn` * labeled alternative in `TrinoSqlParser.statement`. @@ -464,12 +583,19 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitDropColumn?: (ctx: DropColumnContext) => Result; /** - * Visit a parse tree produced by the `addColumn` + * Visit a parse tree produced by the `setColumnType` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitAddColumn?: (ctx: AddColumnContext) => Result; + visitSetColumnType?: (ctx: SetColumnTypeContext) => Result; + /** + * Visit a parse tree produced by the `dropNotNullConstraint` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDropNotNullConstraint?: (ctx: DropNotNullConstraintContext) => Result; /** * Visit a parse tree produced by the `setTableAuthorization` * labeled alternative in `TrinoSqlParser.statement`. @@ -568,6 +694,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitCall?: (ctx: CallContext) => Result; + /** + * Visit a parse tree produced by the `createFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCreateFunction?: (ctx: CreateFunctionContext) => Result; + /** + * Visit a parse tree produced by the `dropFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDropFunction?: (ctx: DropFunctionContext) => Result; /** * Visit a parse tree produced by the `createRole` * labeled alternative in `TrinoSqlParser.statement`. @@ -590,26 +730,26 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitGrantRoles?: (ctx: GrantRolesContext) => Result; /** - * Visit a parse tree produced by the `revokeRoles` + * Visit a parse tree produced by the `grantPrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitRevokeRoles?: (ctx: RevokeRolesContext) => Result; + visitGrantPrivileges?: (ctx: GrantPrivilegesContext) => Result; /** - * Visit a parse tree produced by the `setRole` + * Visit a parse tree produced by the `revokeRoles` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitSetRole?: (ctx: SetRoleContext) => Result; + visitRevokeRoles?: (ctx: RevokeRolesContext) => Result; /** - * Visit a parse tree produced by the `grant` + * Visit a parse tree produced by the `revokePrivileges` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitGrant?: (ctx: GrantContext) => Result; + visitRevokePrivileges?: (ctx: RevokePrivilegesContext) => Result; /** * Visit a parse tree produced by the `deny` * labeled alternative in `TrinoSqlParser.statement`. @@ -618,12 +758,12 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitDeny?: (ctx: DenyContext) => Result; /** - * Visit a parse tree produced by the `revoke` + * Visit a parse tree produced by the `setRole` * labeled alternative in `TrinoSqlParser.statement`. * @param ctx the parse tree * @return the visitor result */ - visitRevoke?: (ctx: RevokeContext) => Result; + visitSetRole?: (ctx: SetRoleContext) => Result; /** * Visit a parse tree produced by the `showGrants` * labeled alternative in `TrinoSqlParser.statement`. @@ -638,6 +778,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitExplain?: (ctx: ExplainContext) => Result; + /** + * Visit a parse tree produced by the `explainAnalyze` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitExplainAnalyze?: (ctx: ExplainAnalyzeContext) => Result; /** * Visit a parse tree produced by the `showCreateTable` * labeled alternative in `TrinoSqlParser.statement`. @@ -666,6 +813,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitShowCreateMaterializedView?: (ctx: ShowCreateMaterializedViewContext) => Result; + /** + * Visit a parse tree produced by the `showCreateFunction` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitShowCreateFunction?: (ctx: ShowCreateFunctionContext) => Result; /** * Visit a parse tree produced by the `showTables` * labeled alternative in `TrinoSqlParser.statement`. @@ -736,6 +890,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitShowSession?: (ctx: ShowSessionContext) => Result; + /** + * Visit a parse tree produced by the `setSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSetSessionAuthorization?: (ctx: SetSessionAuthorizationContext) => Result; + /** + * Visit a parse tree produced by the `resetSessionAuthorization` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitResetSessionAuthorization?: (ctx: ResetSessionAuthorizationContext) => Result; /** * Visit a parse tree produced by the `setSession` * labeled alternative in `TrinoSqlParser.statement`. @@ -792,6 +960,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitExecute?: (ctx: ExecuteContext) => Result; + /** + * Visit a parse tree produced by the `executeImmediate` + * labeled alternative in `TrinoSqlParser.statement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitExecuteImmediate?: (ctx: ExecuteImmediateContext) => Result; /** * Visit a parse tree produced by the `describeInput` * labeled alternative in `TrinoSqlParser.statement`. @@ -848,6 +1023,18 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitShowColumnComment?: (ctx: ShowColumnCommentContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.rootQuery`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRootQuery?: (ctx: RootQueryContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.withFunction`. + * @param ctx the parse tree + * @return the visitor result + */ + visitWithFunction?: (ctx: WithFunctionContext) => Result; /** * Visit a parse tree produced by the `queryStatement` * labeled alternative in `TrinoSqlParser.query`. @@ -1105,6 +1292,24 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitSampleType?: (ctx: SampleTypeContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.trimsSpecification`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTrimsSpecification?: (ctx: TrimsSpecificationContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.listAggOverflowBehavior`. + * @param ctx the parse tree + * @return the visitor result + */ + visitListAggOverflowBehavior?: (ctx: ListAggOverflowBehaviorContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.listaggCountIndication`. + * @param ctx the parse tree + * @return the visitor result + */ + visitListaggCountIndication?: (ctx: ListaggCountIndicationContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.patternRecognition`. * @param ctx the parse tree @@ -1172,12 +1377,12 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitColumnAliases?: (ctx: ColumnAliasesContext) => Result; /** - * Visit a parse tree produced by the `tableOrViewRelation` + * Visit a parse tree produced by the `tableName` * labeled alternative in `TrinoSqlParser.relationPrimary`. * @param ctx the parse tree * @return the visitor result */ - visitTableOrViewRelation?: (ctx: TableOrViewRelationContext) => Result; + visitTableName?: (ctx: TableNameContext) => Result; /** * Visit a parse tree produced by the `subqueryRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. @@ -1199,6 +1404,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitLateral?: (ctx: LateralContext) => Result; + /** + * Visit a parse tree produced by the `tableFunctionInvocation` + * labeled alternative in `TrinoSqlParser.relationPrimary`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableFunctionInvocation?: (ctx: TableFunctionInvocationContext) => Result; /** * Visit a parse tree produced by the `parenthesizedRelation` * labeled alternative in `TrinoSqlParser.relationPrimary`. @@ -1206,6 +1418,137 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitParenthesizedRelation?: (ctx: ParenthesizedRelationContext) => Result; + /** + * Visit a parse tree produced by the `jsonTable` + * labeled alternative in `TrinoSqlParser.relationPrimary`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonTable?: (ctx: JsonTableContext) => Result; + /** + * Visit a parse tree produced by the `ordinalityColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. + * @param ctx the parse tree + * @return the visitor result + */ + visitOrdinalityColumn?: (ctx: OrdinalityColumnContext) => Result; + /** + * Visit a parse tree produced by the `valueColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. + * @param ctx the parse tree + * @return the visitor result + */ + visitValueColumn?: (ctx: ValueColumnContext) => Result; + /** + * Visit a parse tree produced by the `queryColumn` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. + * @param ctx the parse tree + * @return the visitor result + */ + visitQueryColumn?: (ctx: QueryColumnContext) => Result; + /** + * Visit a parse tree produced by the `nestedColumns` + * labeled alternative in `TrinoSqlParser.jsonTableColumn`. + * @param ctx the parse tree + * @return the visitor result + */ + visitNestedColumns?: (ctx: NestedColumnsContext) => Result; + /** + * Visit a parse tree produced by the `leafPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLeafPlan?: (ctx: LeafPlanContext) => Result; + /** + * Visit a parse tree produced by the `joinPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJoinPlan?: (ctx: JoinPlanContext) => Result; + /** + * Visit a parse tree produced by the `unionPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. + * @param ctx the parse tree + * @return the visitor result + */ + visitUnionPlan?: (ctx: UnionPlanContext) => Result; + /** + * Visit a parse tree produced by the `crossPlan` + * labeled alternative in `TrinoSqlParser.jsonTableSpecificPlan`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCrossPlan?: (ctx: CrossPlanContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonTablePathName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonTablePathName?: (ctx: JsonTablePathNameContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.planPrimary`. + * @param ctx the parse tree + * @return the visitor result + */ + visitPlanPrimary?: (ctx: PlanPrimaryContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonTableDefaultPlan`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonTableDefaultPlan?: (ctx: JsonTableDefaultPlanContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableFunctionCall`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableFunctionCall?: (ctx: TableFunctionCallContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableFunctionArgument`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableFunctionArgument?: (ctx: TableFunctionArgumentContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableArgument`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableArgument?: (ctx: TableArgumentContext) => Result; + /** + * Visit a parse tree produced by the `tableArgumentTable` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableArgumentTable?: (ctx: TableArgumentTableContext) => Result; + /** + * Visit a parse tree produced by the `tableArgumentQuery` + * labeled alternative in `TrinoSqlParser.tableArgumentRelation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableArgumentQuery?: (ctx: TableArgumentQueryContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.descriptorArgument`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDescriptorArgument?: (ctx: DescriptorArgumentContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.descriptorField`. + * @param ctx the parse tree + * @return the visitor result + */ + visitDescriptorField?: (ctx: DescriptorFieldContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.copartitionTables`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCopartitionTables?: (ctx: CopartitionTablesContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.expression`. * @param ctx the parse tree @@ -1227,12 +1570,19 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitPredicated?: (ctx: PredicatedContext) => Result; /** - * Visit a parse tree produced by the `logicalBinary` + * Visit a parse tree produced by the `or` * labeled alternative in `TrinoSqlParser.booleanExpression`. * @param ctx the parse tree * @return the visitor result */ - visitLogicalBinary?: (ctx: LogicalBinaryContext) => Result; + visitOr?: (ctx: OrContext) => Result; + /** + * Visit a parse tree produced by the `and` + * labeled alternative in `TrinoSqlParser.booleanExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitAnd?: (ctx: AndContext) => Result; /** * Visit a parse tree produced by the `comparison` * labeled alternative in `TrinoSqlParser.predicate`. @@ -1339,12 +1689,19 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitTypeConstructor?: (ctx: TypeConstructorContext) => Result; /** - * Visit a parse tree produced by the `specialDateTimeFunction` + * Visit a parse tree produced by the `jsonValue` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonValue?: (ctx: JsonValueContext) => Result; + /** + * Visit a parse tree produced by the `currentDate` * labeled alternative in `TrinoSqlParser.primaryExpression`. * @param ctx the parse tree * @return the visitor result */ - visitSpecialDateTimeFunction?: (ctx: SpecialDateTimeFunctionContext) => Result; + visitCurrentDate?: (ctx: CurrentDateContext) => Result; /** * Visit a parse tree produced by the `substring` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1373,6 +1730,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitParenthesizedExpression?: (ctx: ParenthesizedExpressionContext) => Result; + /** + * Visit a parse tree produced by the `trim` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTrim?: (ctx: TrimContext) => Result; /** * Visit a parse tree produced by the `parameter` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1387,6 +1751,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitNormalize?: (ctx: NormalizeContext) => Result; + /** + * Visit a parse tree produced by the `localTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLocalTimestamp?: (ctx: LocalTimestampContext) => Result; + /** + * Visit a parse tree produced by the `jsonObject` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonObject?: (ctx: JsonObjectContext) => Result; /** * Visit a parse tree produced by the `intervalLiteral` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1408,6 +1786,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitBooleanLiteral?: (ctx: BooleanLiteralContext) => Result; + /** + * Visit a parse tree produced by the `jsonArray` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonArray?: (ctx: JsonArrayContext) => Result; /** * Visit a parse tree produced by the `simpleCase` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1443,6 +1828,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitSubscript?: (ctx: SubscriptContext) => Result; + /** + * Visit a parse tree produced by the `jsonExists` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonExists?: (ctx: JsonExistsContext) => Result; /** * Visit a parse tree produced by the `currentPath` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1464,6 +1856,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitBinaryLiteral?: (ctx: BinaryLiteralContext) => Result; + /** + * Visit a parse tree produced by the `currentTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCurrentTime?: (ctx: CurrentTimeContext) => Result; + /** + * Visit a parse tree produced by the `localTime` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLocalTime?: (ctx: LocalTimeContext) => Result; /** * Visit a parse tree produced by the `currentUser` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1471,6 +1877,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitCurrentUser?: (ctx: CurrentUserContext) => Result; + /** + * Visit a parse tree produced by the `jsonQuery` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonQuery?: (ctx: JsonQueryContext) => Result; /** * Visit a parse tree produced by the `measure` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1506,6 +1919,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitFunctionCall?: (ctx: FunctionCallContext) => Result; + /** + * Visit a parse tree produced by the `currentTimestamp` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCurrentTimestamp?: (ctx: CurrentTimestampContext) => Result; /** * Visit a parse tree produced by the `currentSchema` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1527,6 +1947,13 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitPosition?: (ctx: PositionContext) => Result; + /** + * Visit a parse tree produced by the `listagg` + * labeled alternative in `TrinoSqlParser.primaryExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitListagg?: (ctx: ListaggContext) => Result; /** * Visit a parse tree produced by the `searchedCase` * labeled alternative in `TrinoSqlParser.primaryExpression`. @@ -1548,6 +1975,60 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitGroupingOperation?: (ctx: GroupingOperationContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonPathInvocation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonPathInvocation?: (ctx: JsonPathInvocationContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonValueExpression`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonValueExpression?: (ctx: JsonValueExpressionContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonRepresentation`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonRepresentation?: (ctx: JsonRepresentationContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonArgument`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonArgument?: (ctx: JsonArgumentContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonExistsErrorBehavior`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonExistsErrorBehavior?: (ctx: JsonExistsErrorBehaviorContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonValueBehavior`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonValueBehavior?: (ctx: JsonValueBehaviorContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonQueryWrapperBehavior`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonQueryWrapperBehavior?: (ctx: JsonQueryWrapperBehaviorContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonQueryBehavior`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonQueryBehavior?: (ctx: JsonQueryBehaviorContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.jsonObjectMember`. + * @param ctx the parse tree + * @return the visitor result + */ + visitJsonObjectMember?: (ctx: JsonObjectMemberContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.processingMode`. * @param ctx the parse tree @@ -1959,77 +2440,250 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitPathSpecification?: (ctx: PathSpecificationContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.privilege`. + * Visit a parse tree produced by `TrinoSqlParser.functionSpecification`. * @param ctx the parse tree * @return the visitor result */ - visitPrivilege?: (ctx: PrivilegeContext) => Result; + visitFunctionSpecification?: (ctx: FunctionSpecificationContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * Visit a parse tree produced by `TrinoSqlParser.functionDeclaration`. * @param ctx the parse tree * @return the visitor result */ - visitTableOrViewName?: (ctx: TableOrViewNameContext) => Result; + visitFunctionDeclaration?: (ctx: FunctionDeclarationContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.tableName`. + * Visit a parse tree produced by `TrinoSqlParser.functionSignature`. * @param ctx the parse tree * @return the visitor result */ - visitTableName?: (ctx: TableNameContext) => Result; + visitFunctionSignature?: (ctx: FunctionSignatureContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * Visit a parse tree produced by `TrinoSqlParser.parameterDeclaration`. * @param ctx the parse tree * @return the visitor result */ - visitTableNameCreate?: (ctx: TableNameCreateContext) => Result; + visitParameterDeclaration?: (ctx: ParameterDeclarationContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.viewName`. + * Visit a parse tree produced by `TrinoSqlParser.returnsClause`. * @param ctx the parse tree * @return the visitor result */ - visitViewName?: (ctx: ViewNameContext) => Result; + visitReturnsClause?: (ctx: ReturnsClauseContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * Visit a parse tree produced by the `languageCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. * @param ctx the parse tree * @return the visitor result */ - visitViewNameCreate?: (ctx: ViewNameCreateContext) => Result; + visitLanguageCharacteristic?: (ctx: LanguageCharacteristicContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.tablePath`. + * Visit a parse tree produced by the `deterministicCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. * @param ctx the parse tree * @return the visitor result */ - visitTablePath?: (ctx: TablePathContext) => Result; + visitDeterministicCharacteristic?: (ctx: DeterministicCharacteristicContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.viewPath`. + * Visit a parse tree produced by the `returnsNullOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. * @param ctx the parse tree * @return the visitor result */ - visitViewPath?: (ctx: ViewPathContext) => Result; + visitReturnsNullOnNullInputCharacteristic?: (ctx: ReturnsNullOnNullInputCharacteristicContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.schemaName`. + * Visit a parse tree produced by the `calledOnNullInputCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. * @param ctx the parse tree * @return the visitor result */ - visitSchemaName?: (ctx: SchemaNameContext) => Result; + visitCalledOnNullInputCharacteristic?: (ctx: CalledOnNullInputCharacteristicContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.schemaNameCreate`. + * Visit a parse tree produced by the `securityCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. * @param ctx the parse tree * @return the visitor result */ - visitSchemaNameCreate?: (ctx: SchemaNameCreateContext) => Result; + visitSecurityCharacteristic?: (ctx: SecurityCharacteristicContext) => Result; + /** + * Visit a parse tree produced by the `commentCharacteristic` + * labeled alternative in `TrinoSqlParser.routineCharacteristic`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCommentCharacteristic?: (ctx: CommentCharacteristicContext) => Result; + /** + * Visit a parse tree produced by the `returnStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitReturnStatement?: (ctx: ReturnStatementContext) => Result; + /** + * Visit a parse tree produced by the `assignmentStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitAssignmentStatement?: (ctx: AssignmentStatementContext) => Result; + /** + * Visit a parse tree produced by the `simpleCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSimpleCaseStatement?: (ctx: SimpleCaseStatementContext) => Result; + /** + * Visit a parse tree produced by the `searchedCaseStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSearchedCaseStatement?: (ctx: SearchedCaseStatementContext) => Result; + /** + * Visit a parse tree produced by the `ifStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIfStatement?: (ctx: IfStatementContext) => Result; + /** + * Visit a parse tree produced by the `iterateStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIterateStatement?: (ctx: IterateStatementContext) => Result; + /** + * Visit a parse tree produced by the `leaveStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLeaveStatement?: (ctx: LeaveStatementContext) => Result; + /** + * Visit a parse tree produced by the `compoundStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCompoundStatement?: (ctx: CompoundStatementContext) => Result; + /** + * Visit a parse tree produced by the `loopStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitLoopStatement?: (ctx: LoopStatementContext) => Result; + /** + * Visit a parse tree produced by the `whileStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitWhileStatement?: (ctx: WhileStatementContext) => Result; + /** + * Visit a parse tree produced by the `repeatStatement` + * labeled alternative in `TrinoSqlParser.controlStatement`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRepeatStatement?: (ctx: RepeatStatementContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.caseStatementWhenClause`. + * @param ctx the parse tree + * @return the visitor result + */ + visitCaseStatementWhenClause?: (ctx: CaseStatementWhenClauseContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.elseIfClause`. + * @param ctx the parse tree + * @return the visitor result + */ + visitElseIfClause?: (ctx: ElseIfClauseContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.elseClause`. + * @param ctx the parse tree + * @return the visitor result + */ + visitElseClause?: (ctx: ElseClauseContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.variableDeclaration`. + * @param ctx the parse tree + * @return the visitor result + */ + visitVariableDeclaration?: (ctx: VariableDeclarationContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.sqlStatementList`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSqlStatementList?: (ctx: SqlStatementListContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.privilege`. + * @param ctx the parse tree + * @return the visitor result + */ + visitPrivilege?: (ctx: PrivilegeContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.entityKind`. + * @param ctx the parse tree + * @return the visitor result + */ + visitEntityKind?: (ctx: EntityKindContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.grantObject`. + * @param ctx the parse tree + * @return the visitor result + */ + visitGrantObject?: (ctx: GrantObjectContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.schemaPath`. + * Visit a parse tree produced by `TrinoSqlParser.tableOrViewName`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableOrViewName?: (ctx: TableOrViewNameContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableRef`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableRef?: (ctx: TableRefContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.tableNameCreate`. + * @param ctx the parse tree + * @return the visitor result + */ + visitTableNameCreate?: (ctx: TableNameCreateContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.viewRef`. + * @param ctx the parse tree + * @return the visitor result + */ + visitViewRef?: (ctx: ViewRefContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.viewNameCreate`. + * @param ctx the parse tree + * @return the visitor result + */ + visitViewNameCreate?: (ctx: ViewNameCreateContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.schemaRef`. + * @param ctx the parse tree + * @return the visitor result + */ + visitSchemaRef?: (ctx: SchemaRefContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.schemaNameCreate`. * @param ctx the parse tree * @return the visitor result */ - visitSchemaPath?: (ctx: SchemaPathContext) => Result; + visitSchemaNameCreate?: (ctx: SchemaNameCreateContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.catalogName`. + * Visit a parse tree produced by `TrinoSqlParser.catalogRef`. * @param ctx the parse tree * @return the visitor result */ - visitCatalogName?: (ctx: CatalogNameContext) => Result; + visitCatalogRef?: (ctx: CatalogRefContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.catalogNameCreate`. * @param ctx the parse tree @@ -2043,11 +2697,17 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { */ visitFunctionName?: (ctx: FunctionNameContext) => Result; /** - * Visit a parse tree produced by `TrinoSqlParser.columnName`. + * Visit a parse tree produced by `TrinoSqlParser.functionNameCreate`. + * @param ctx the parse tree + * @return the visitor result + */ + visitFunctionNameCreate?: (ctx: FunctionNameCreateContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.columnRef`. * @param ctx the parse tree * @return the visitor result */ - visitColumnName?: (ctx: ColumnNameContext) => Result; + visitColumnRef?: (ctx: ColumnRefContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.columnNameCreate`. * @param ctx the parse tree @@ -2060,6 +2720,18 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitQualifiedName?: (ctx: QualifiedNameContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.queryPeriod`. + * @param ctx the parse tree + * @return the visitor result + */ + visitQueryPeriod?: (ctx: QueryPeriodContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.rangeType`. + * @param ctx the parse tree + * @return the visitor result + */ + visitRangeType?: (ctx: RangeTypeContext) => Result; /** * Visit a parse tree produced by the `specifiedPrincipal` * labeled alternative in `TrinoSqlParser.grantor`. @@ -2108,6 +2780,12 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitRoles?: (ctx: RolesContext) => Result; + /** + * Visit a parse tree produced by `TrinoSqlParser.privilegeOrRole`. + * @param ctx the parse tree + * @return the visitor result + */ + visitPrivilegeOrRole?: (ctx: PrivilegeOrRoleContext) => Result; /** * Visit a parse tree produced by the `unquotedIdentifier` * labeled alternative in `TrinoSqlParser.identifier`. @@ -2157,6 +2835,20 @@ export class TrinoSqlVisitor extends AbstractParseTreeVisitor { * @return the visitor result */ visitIntegerLiteral?: (ctx: IntegerLiteralContext) => Result; + /** + * Visit a parse tree produced by the `identifierUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + * @return the visitor result + */ + visitIdentifierUser?: (ctx: IdentifierUserContext) => Result; + /** + * Visit a parse tree produced by the `stringUser` + * labeled alternative in `TrinoSqlParser.authorizationUser`. + * @param ctx the parse tree + * @return the visitor result + */ + visitStringUser?: (ctx: StringUserContext) => Result; /** * Visit a parse tree produced by `TrinoSqlParser.nonReserved`. * @param ctx the parse tree diff --git a/src/parser/mysql/mysqlEntityCollector.ts b/src/parser/mysql/mysqlEntityCollector.ts index 617719c2..36ffc9bb 100644 --- a/src/parser/mysql/mysqlEntityCollector.ts +++ b/src/parser/mysql/mysqlEntityCollector.ts @@ -4,6 +4,7 @@ import type { CopyCreateTableContext, CreateDatabaseContext, CreateFunctionContext, + CreateFunctionLoadableContext, CreateViewContext, DatabaseNameContext, DatabaseNameCreateContext, @@ -143,4 +144,12 @@ export class MySqlEntityCollector extends EntityCollector implements MySqlParser exitCreateFunction(ctx: CreateFunctionContext) { this.popStmt(); } + + enterCreateFunctionLoadable(ctx: CreateFunctionLoadableContext) { + this.pushStmt(ctx, StmtContextType.CREATE_FUNCTION_STMT); + } + + exitCreateFunctionLoadable(ctx: CreateFunctionLoadableContext) { + this.popStmt(); + } } diff --git a/src/parser/trino/index.ts b/src/parser/trino/index.ts index 554b0b15..cf1f9db4 100644 --- a/src/parser/trino/index.ts +++ b/src/parser/trino/index.ts @@ -34,16 +34,17 @@ export class TrinoSQL extends BasicSQL = new Set([ - TrinoSqlParser.RULE_catalogName, + TrinoSqlParser.RULE_catalogRef, TrinoSqlParser.RULE_catalogNameCreate, - TrinoSqlParser.RULE_schemaName, + TrinoSqlParser.RULE_schemaRef, TrinoSqlParser.RULE_schemaNameCreate, - TrinoSqlParser.RULE_tableName, + TrinoSqlParser.RULE_tableRef, TrinoSqlParser.RULE_tableNameCreate, - TrinoSqlParser.RULE_viewName, + TrinoSqlParser.RULE_viewRef, TrinoSqlParser.RULE_viewNameCreate, TrinoSqlParser.RULE_functionName, - TrinoSqlParser.RULE_columnName, + TrinoSqlParser.RULE_functionNameCreate, + TrinoSqlParser.RULE_columnRef, TrinoSqlParser.RULE_columnNameCreate, ]); @@ -66,11 +67,15 @@ export class TrinoSQL extends BasicSQL; private objectNames: Map = new Map([ - [TrinoSqlParser.RULE_catalogName, 'catalog'], + [TrinoSqlParser.RULE_catalogRef, 'catalog'], [TrinoSqlParser.RULE_catalogNameCreate, 'catalog'], - [TrinoSqlParser.RULE_tableName, 'table'], + [TrinoSqlParser.RULE_tableRef, 'table'], [TrinoSqlParser.RULE_tableNameCreate, 'table'], - [TrinoSqlParser.RULE_viewName, 'view'], + [TrinoSqlParser.RULE_viewRef, 'view'], [TrinoSqlParser.RULE_viewNameCreate, 'view'], - [TrinoSqlParser.RULE_schemaName, 'schema'], + [TrinoSqlParser.RULE_schemaRef, 'schema'], [TrinoSqlParser.RULE_schemaNameCreate, 'schema'], [TrinoSqlParser.RULE_functionName, 'function'], - [TrinoSqlParser.RULE_columnName, 'column'], + [TrinoSqlParser.RULE_columnRef, 'column'], [TrinoSqlParser.RULE_columnNameCreate, 'column'], ]); @@ -45,12 +46,12 @@ export class TrinoErrorListener extends ParseErrorListener { const [ruleType] = candidate; const name = this.objectNames.get(ruleType); switch (ruleType) { - case TrinoSqlParser.RULE_catalogName: - case TrinoSqlParser.RULE_schemaName: - case TrinoSqlParser.RULE_tableName: - case TrinoSqlParser.RULE_viewName: + case TrinoSqlParser.RULE_catalogRef: + case TrinoSqlParser.RULE_schemaRef: + case TrinoSqlParser.RULE_tableRef: + case TrinoSqlParser.RULE_viewRef: case TrinoSqlParser.RULE_functionName: - case TrinoSqlParser.RULE_columnName: { + case TrinoSqlParser.RULE_columnRef: { result.push(`{existing}${name}`); break; } diff --git a/test/helper.ts b/test/helper.ts index 4b023796..146bdc36 100644 --- a/test/helper.ts +++ b/test/helper.ts @@ -11,7 +11,9 @@ export const readSQL = (dirname: string, fileName: string) => { tmp += char; const isMulti = - tmp.includes('EXECUTE STATEMENT SET') || tmp.includes('BEGIN STATEMENT SET;'); + tmp.includes('EXECUTE STATEMENT SET') || + tmp.includes('BEGIN STATEMENT SET;') || + tmp.includes('BEGIN'); if (!isMulti) { // 非批量的先简单按照分号切割 @@ -30,45 +32,6 @@ export const readSQL = (dirname: string, fileName: string) => { return result; }; -/** - * Benchmark for a function. - * @param name - * @param fn - * @param times , default 1 - * @returns [ totalTime, averageTime, msg ] - */ -export function benchmark(name: string, fn: Function, times: number = 1): [number, number, string] { - const start = performance.now(); - - for (let i = 0; i < times; i++) { - fn(); - } - const end = performance.now(); - const totalTime = end - start; - const averageTime = totalTime / times; - - const msg = `Benchmark: ${name} executed ${times} times. Total time: ${totalTime.toFixed( - 2 - )}ms. Average time: ${averageTime.toFixed(2)}ms`; - console.info(msg); - - return [totalTime, averageTime, msg]; -} - -export function getReportTableRow(name, rows, times, totalTime, averageTime) { - return `| ${name} | ${rows} | ${times} | ${totalTime.toFixed(2)} | ${averageTime.toFixed(2)} |`; -} - -export function getReportTableHeader(title: string) { - return `# ${title} -| Name | Rows | Times | Total Time(ms) | Average Time(ms) | -| ---- | ---- | ---- | ---- | ---- |\n`; -} - -export function exportReportTable(markdown: string, output: string) { - fs.writeFileSync(path.join(output, 'benchmark.md'), markdown); -} - export function commentOtherLine(sqlContent: string, line: number) { const slices = sqlContent.split('\n').map((item, index) => { if (index !== line - 1) { diff --git a/test/parser/flink/benchmark/benchmark.md b/test/parser/flink/benchmark/benchmark.md deleted file mode 100644 index 8b368c81..00000000 --- a/test/parser/flink/benchmark/benchmark.md +++ /dev/null @@ -1,12 +0,0 @@ -# FlinkSQL Benchmark -| Name | Rows | Times | Total Time(ms) | Average Time(ms) | -| ---- | ---- | ---- | ---- | ---- | -| CreateTable | 100 | 1 | 150.34 | 150.34 | -| CreateTable | 1000 | 1 | 53.04 | 53.04 | -| CreateTable | 5000 | 1 | 179.04 | 179.04 | -| SelectTable | 100 | 1 | 460.25 | 460.25 | -| SelectTable | 1000 | 1 | 46.24 | 46.24 | -| SelectTable | 5000 | 1 | 505.28 | 505.28 | -| InsertTable | 100 | 1 | 13.58 | 13.58 | -| InsertTable | 1000 | 1 | 33.07 | 33.07 | -| InsertTable | 5000 | 1 | 242.58 | 242.58 | \ No newline at end of file diff --git a/test/parser/impala/suggestion/fixtures/syntaxSuggestion.sql b/test/parser/impala/suggestion/fixtures/syntaxSuggestion.sql index 84567517..b92003be 100644 --- a/test/parser/impala/suggestion/fixtures/syntaxSuggestion.sql +++ b/test/parser/impala/suggestion/fixtures/syntaxSuggestion.sql @@ -4,7 +4,7 @@ SELECT name, calculate_age(birthdate) AS age FROM students; ALTER DATABASE cat; -ALTER TABLE my_table CHANGE COLUMN age; +ALTER TABLE my_table CHANGE age age int; ALTER VIEW my_view; diff --git a/test/parser/impala/suggestion/syntaxSuggestion.test.ts b/test/parser/impala/suggestion/syntaxSuggestion.test.ts index fbf88133..08629187 100644 --- a/test/parser/impala/suggestion/syntaxSuggestion.test.ts +++ b/test/parser/impala/suggestion/syntaxSuggestion.test.ts @@ -83,7 +83,7 @@ describe('Impala SQL Syntax Suggestion', () => { test('Alter table column', () => { const pos: CaretPosition = { lineNumber: 7, - column: 39, + column: 32, }; const syntaxes = impala.getSuggestionAtCaretPosition( commentOtherLine(syntaxSql, pos.lineNumber), diff --git a/test/parser/impala/syntax/fixtures/alter_table.sql b/test/parser/impala/syntax/fixtures/alter_table.sql index 0ce5c170..d64382e6 100644 --- a/test/parser/impala/syntax/fixtures/alter_table.sql +++ b/test/parser/impala/syntax/fixtures/alter_table.sql @@ -22,7 +22,8 @@ ALTER TABLE my_table DROP COLUMN column_name; ALTER TABLE my_table DROP column_name; -- ALTER TABLE name CHANGE column_name col_spec -ALTER TABLE my_table CHANGE COLUMN age INT COMMENT 'Updated Age'; +ALTER TABLE my_table CHANGE age age INT COMMENT 'Updated Age'; +ALTER TABLE impala_test CHANGE outberth outberth string COMMENT '列注释'; -- ALTER TABLE name SET OWNER USER user_name ALTER TABLE my_table SET OWNER USER user_name; diff --git a/test/parser/mysql/contextCollect/entityCollector.test.ts b/test/parser/mysql/contextCollect/entityCollector.test.ts index 4b0ba341..c01ab198 100644 --- a/test/parser/mysql/contextCollect/entityCollector.test.ts +++ b/test/parser/mysql/contextCollect/entityCollector.test.ts @@ -23,7 +23,7 @@ describe('MySQL entity collector tests', () => { }); test('split results', () => { - expect(splitListener.statementsContext.length).toBe(15); + expect(splitListener.statementsContext.length).toBe(16); }); test('create table by columns', () => { @@ -487,21 +487,21 @@ describe('MySQL entity collector tests', () => { const functionEntity = allEntities[0]; expect(functionEntity.entityContextType).toBe(EntityContextType.FUNCTION_CREATE); - expect(functionEntity.text).toBe('my_concat_ws'); + expect(functionEntity.text).toBe('hello'); expect(functionEntity.position).toEqual({ - endColumn: 43, - endIndex: 982, + endColumn: 39, + endIndex: 978, line: 39, - startColumn: 31, - startIndex: 971, + startColumn: 34, + startIndex: 974, }); expect(functionEntity.belongStmt.stmtContextType).toBe( StmtContextType.CREATE_FUNCTION_STMT ); expect(functionEntity.belongStmt.position).toEqual({ - endColumn: 87, - endIndex: 1026, + endColumn: 114, + endIndex: 1053, endLine: 39, startColumn: 1, startIndex: 941, @@ -512,4 +512,42 @@ describe('MySQL entity collector tests', () => { expect(functionEntity.relatedEntities).toBeNull(); } }); + + test('create function loadable', () => { + const functionCreateContext = splitListener.statementsContext[15]; + + const collectListener = new MySqlEntityCollector(commonSql); + mysql.listen(collectListener as ParseTreeListener, functionCreateContext); + + const allEntities = collectListener.getEntities(); + + expect(allEntities.length).toBe(1); + + const functionEntity = allEntities[0]; + + expect(functionEntity.entityContextType).toBe(EntityContextType.FUNCTION_CREATE); + expect(functionEntity.text).toBe('my_concat_ws'); + expect(functionEntity.position).toEqual({ + endColumn: 43, + endIndex: 1098, + line: 41, + startColumn: 31, + startIndex: 1087, + }); + + expect(functionEntity.belongStmt.stmtContextType).toBe( + StmtContextType.CREATE_FUNCTION_STMT + ); + expect(functionEntity.belongStmt.position).toEqual({ + endColumn: 87, + endIndex: 1142, + endLine: 41, + startColumn: 1, + startIndex: 1057, + startLine: 41, + }); + if (isFuncEntityContext(functionEntity)) { + expect(functionEntity.relatedEntities).toBeNull(); + } + }); }); diff --git a/test/parser/mysql/contextCollect/fixtures/common.sql b/test/parser/mysql/contextCollect/fixtures/common.sql index 7709bcc2..b54b1bfd 100644 --- a/test/parser/mysql/contextCollect/fixtures/common.sql +++ b/test/parser/mysql/contextCollect/fixtures/common.sql @@ -36,4 +36,6 @@ SHOW CREATE SCHEMA IF NOT EXISTS db_name; DROP SCHEMA IF EXISTS db_name; +CREATE DEFINER = 'user' FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT('Hello, ',s,'!'); + CREATE FUNCTION IF NOT EXISTS my_concat_ws RETURNS STRING SONAME 'udf_my_concat_ws.so'; diff --git a/test/parser/mysql/suggestion/tokenSuggestion.test.ts b/test/parser/mysql/suggestion/tokenSuggestion.test.ts index 12e49f2d..2c913cff 100644 --- a/test/parser/mysql/suggestion/tokenSuggestion.test.ts +++ b/test/parser/mysql/suggestion/tokenSuggestion.test.ts @@ -60,6 +60,7 @@ describe('MySQL Token Suggestion', () => { 'ALGORITHM', 'OR', 'TRIGGER', + 'IF', 'TABLESPACE', 'UNDO', 'TABLE', diff --git a/test/parser/mysql/syntax/fixtures/alterTable.sql b/test/parser/mysql/syntax/fixtures/alterTable.sql index cec0aa8a..041a8f8c 100644 --- a/test/parser/mysql/syntax/fixtures/alterTable.sql +++ b/test/parser/mysql/syntax/fixtures/alterTable.sql @@ -102,3 +102,6 @@ ALTER TABLE t1 ALTER COLUMN c1 DROP DEFAULT, DROP CONSTRAINT c2_positive, ALTER ALTER TABLE t1 ALTER COLUMN c1 DROP DEFAULT, DROP CONSTRAINT c2_positive, ALTER CHECK c2_positive NOT ENFORCED REBUILD PARTITION p0 REBUILD PARTITION ALL; ALTER TABLE t1 ALTER COLUMN c1 DROP DEFAULT, DROP CONSTRAINT c2_positive, ALTER CHECK c2_positive NOT ENFORCED REPAIR PARTITION p0 REPAIR PARTITION ALL; ALTER TABLE t1 ALTER COLUMN c1 SET VISIBLE, DROP CONSTRAINT c2_positive, ALTER CHECK c2_positive NOT ENFORCED REMOVE PARTITIONING UPGRADE PARTITIONING; + + +ALTER TABLE `order` ADD cancelled TINYINT(1) DEFAULT 0 NOT NULL, ADD delivered TINYINT(1) DEFAULT 0 NOT NULL, ADD returning TINYINT(1) DEFAULT 0 NOT NULL; diff --git a/test/parser/mysql/syntax/fixtures/createFunction.sql b/test/parser/mysql/syntax/fixtures/createFunction.sql index a3fdd925..b0013e77 100644 --- a/test/parser/mysql/syntax/fixtures/createFunction.sql +++ b/test/parser/mysql/syntax/fixtures/createFunction.sql @@ -11,3 +11,20 @@ CREATE FUNCTION my_concat_ws RETURNS INTEGER SONAME 'udf_my_concat_ws.so'; CREATE FUNCTION my_concat_ws RETURNS REAL SONAME 'udf_my_concat_ws.so'; CREATE FUNCTION my_concat_ws RETURNS DECIMAL SONAME 'udf_my_concat_ws.so'; CREATE FUNCTION IF NOT EXISTS my_concat_ws RETURNS DECIMAL SONAME 'udf_my_concat_ws.so'; + + + +-- https://dev.mysql.com/doc/refman/8.0/en/create-procedure.html + +CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT('Hello, ',s,'!'); +CREATE DEFINER = 'user' FUNCTION hello (s CHAR(20)) RETURNS CHAR(50) DETERMINISTIC RETURN CONCAT('Hello, ',s,'!'); +CREATE FUNCTION `uuidToBinary`(_uuid BINARY(36)) RETURNS binary(16) DETERMINISTIC SQL SECURITY INVOKER RETURN UNHEX( + CONCAT( + SUBSTR(_uuid, 15, 4), + SUBSTR(_uuid, 10, 4), + SUBSTR(_uuid, 1, 8), + SUBSTR(_uuid, 20, 4), + SUBSTR(_uuid, 25) + ) +); +CREATE FUNCTION AddNumbers(num1 INT, num2 INT) RETURNS INT RETURN num1 + num2; diff --git a/test/parser/mysql/syntax/fixtures/createTrigger.sql b/test/parser/mysql/syntax/fixtures/createTrigger.sql index 139745cd..b662ff37 100644 --- a/test/parser/mysql/syntax/fixtures/createTrigger.sql +++ b/test/parser/mysql/syntax/fixtures/createTrigger.sql @@ -20,3 +20,5 @@ CREATE TRIGGER my_trigger AFTER DELETE ON your_table FOR EACH ROW SET NEW.column CREATE TRIGGER my_trigger AFTER INSERT ON your_table FOR EACH ROW FOLLOWS other_trigger_name SET NEW.column_name = some_value; CREATE TRIGGER my_trigger AFTER INSERT ON your_table FOR EACH ROW PRECEDES other_trigger_name SET NEW.column_name = some_value; + +CREATE TRIGGER IF NOT EXISTS my_trigger AFTER INSERT ON your_table FOR EACH ROW PRECEDES other_trigger_name SET NEW.column_name = some_value; diff --git a/test/parser/mysql/syntax/fixtures/select.sql b/test/parser/mysql/syntax/fixtures/select.sql index 3e00b777..4342b709 100644 --- a/test/parser/mysql/syntax/fixtures/select.sql +++ b/test/parser/mysql/syntax/fixtures/select.sql @@ -70,3 +70,11 @@ SELECT id, data INTO @x, @y FROM test.t1 LIMIT 1; SELECT * FROM t1 AS t INTO @x,@y,@z; SELECT * FROM t1 AS t INTO OUTFILE '/tmp/select-values.txt'; SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table; + +SELECT ID ,SUM(COL_1) AS SUM_COL_1 FROM ( + (SELECT ID ,COL_1 FROM TEST_AUTO_INC + UNION ALL + SELECT ID ,COL_1 FROM TEST_AUTO_INC TAI) + UNION ALL + (SELECT ID ,COL_1 FROM TEST_AUTO_INC TAI) +)SS GROUP BY 1 ORDER BY 1; diff --git a/test/parser/postgresql/contextCollect/entityCollector.test.ts b/test/parser/postgresql/contextCollect/entityCollector.test.ts index 92b4bbc4..dfcf071c 100644 --- a/test/parser/postgresql/contextCollect/entityCollector.test.ts +++ b/test/parser/postgresql/contextCollect/entityCollector.test.ts @@ -144,7 +144,7 @@ describe('PostgreSql entity collector tests', () => { endColumn: 2, }); if (isCommonEntityContext(tableCreateEntity)) { - expect(tableCreateEntity.columns.length).toBe(3); + expect(tableCreateEntity.columns.length).toBe(2); tableCreateEntity.columns.forEach((columEntity) => { expect(columEntity.entityContextType).toBe(EntityContextType.COLUMN_CREATE); expect(columEntity.belongStmt).toBe(tableCreateEntity.belongStmt); diff --git a/test/parser/trino/suggestion/fixtures/syntaxSuggestion.sql b/test/parser/trino/suggestion/fixtures/syntaxSuggestion.sql index d3972f8b..15e05ed1 100644 --- a/test/parser/trino/suggestion/fixtures/syntaxSuggestion.sql +++ b/test/parser/trino/suggestion/fixtures/syntaxSuggestion.sql @@ -35,3 +35,11 @@ INSERT INTO tb (id, ); SELECT * FROM tb ORDER BY ; SELECT * FROM tb GROUP BY ; + +CREATE CATALOG ; + +DROP CATALOG cat ; + +CREATE FUNCTION example.default. ; + +DROP FUNCTION ; \ No newline at end of file diff --git a/test/parser/trino/suggestion/syntaxSuggestion.test.ts b/test/parser/trino/suggestion/syntaxSuggestion.test.ts index fed5c17a..74bbd084 100644 --- a/test/parser/trino/suggestion/syntaxSuggestion.test.ts +++ b/test/parser/trino/suggestion/syntaxSuggestion.test.ts @@ -349,4 +349,74 @@ describe('Trino SQL Syntax Suggestion', () => { expect(suggestion).not.toBeUndefined(); expect(suggestion?.wordRanges.map((token) => token.text)).toEqual([]); }); + + test('Create Catalog', () => { + const pos: CaretPosition = { + lineNumber: 39, + column: 16, + }; + const syntaxes = trino.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === EntityContextType.CATALOG_CREATE + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual([]); + }); + test('Drop Catalog', () => { + const pos: CaretPosition = { + lineNumber: 41, + column: 17, + }; + const syntaxes = trino.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === EntityContextType.CATALOG + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['cat']); + }); + test('Create Function', () => { + const pos: CaretPosition = { + lineNumber: 43, + column: 33, + }; + const syntaxes = trino.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === EntityContextType.FUNCTION_CREATE + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual([ + 'example', + '.', + 'default', + '.', + ]); + }); + test('Drop Function', () => { + const pos: CaretPosition = { + lineNumber: 45, + column: 15, + }; + const syntaxes = trino.getSuggestionAtCaretPosition( + commentOtherLine(syntaxSql, pos.lineNumber), + pos + )?.syntax; + const suggestion = syntaxes?.find( + (syn) => syn.syntaxContextType === EntityContextType.FUNCTION + ); + + expect(suggestion).not.toBeUndefined(); + expect(suggestion?.wordRanges.map((token) => token.text)).toEqual([]); + }); }); diff --git a/test/parser/trino/suggestion/tokenSuggestion.test.ts b/test/parser/trino/suggestion/tokenSuggestion.test.ts index bccfee75..ebc64c31 100644 --- a/test/parser/trino/suggestion/tokenSuggestion.test.ts +++ b/test/parser/trino/suggestion/tokenSuggestion.test.ts @@ -1,7 +1,7 @@ import fs from 'fs'; import path from 'path'; +import { CaretPosition, EntityContextType } from 'src/parser/common/types'; import { TrinoSQL } from 'src/parser/trino'; -import { CaretPosition } from 'src/parser/common/types'; import { commentOtherLine } from 'test/helper'; const tokenSql = fs.readFileSync(path.join(__dirname, 'fixtures', 'tokenSuggestion.sql'), 'utf-8'); @@ -34,11 +34,13 @@ describe('Trino SQL Token Suggestion', () => { expect(suggestion).toMatchUnorderedArray([ 'ROLE', - 'VIEW', + 'FUNCTION', 'OR', + 'VIEW', 'MATERIALIZED', 'TABLE', 'SCHEMA', + 'CATALOG', ]); }); @@ -76,9 +78,17 @@ describe('Trino SQL Token Suggestion', () => { const suggestion = trino.getSuggestionAtCaretPosition( commentOtherLine(tokenSql, pos.lineNumber), pos - )?.keywords; + ); + + expect(suggestion?.keywords?.includes('INPUT')).toBeTruthy(); + expect(suggestion?.keywords?.includes('OUTPUT')).toBeTruthy(); - expect(suggestion).toMatchUnorderedArray(['OUTPUT', 'INPUT']); + expect( + suggestion?.syntax?.find((item) => item.syntaxContextType === EntityContextType.TABLE) + ).not.toBeUndefined(); + expect( + suggestion?.syntax?.find((item) => item.syntaxContextType === EntityContextType.VIEW) + ).not.toBeUndefined(); }); test('After DROP', () => { @@ -93,10 +103,12 @@ describe('Trino SQL Token Suggestion', () => { expect(suggestion).toMatchUnorderedArray([ 'ROLE', + 'FUNCTION', 'VIEW', 'MATERIALIZED', 'TABLE', 'SCHEMA', + 'CATALOG', ]); }); diff --git a/test/parser/trino/syntax/createStatement.test.ts b/test/parser/trino/syntax/createStatement.test.ts index 0c4dda29..e02e92bc 100644 --- a/test/parser/trino/syntax/createStatement.test.ts +++ b/test/parser/trino/syntax/createStatement.test.ts @@ -8,6 +8,8 @@ const features = { role: readSQL(__dirname, 'create_role.sql'), tableAsSelect: readSQL(__dirname, 'create_table_as_select.sql'), materializedView: readSQL(__dirname, 'create_materialized_view.sql'), + catalog: readSQL(__dirname, 'create_catalog.sql'), + function: readSQL(__dirname, 'create_function.sql'), }; describe('TrinoSQL Create Statements Syntax Tests', () => { @@ -43,4 +45,14 @@ describe('TrinoSQL Create Statements Syntax Tests', () => { expect(trino.validate(sql).length).toBe(0); }); }); + features.catalog.forEach((sql) => { + it(sql, () => { + expect(trino.validate(sql).length).toBe(0); + }); + }); + features.function.forEach((sql) => { + it(sql, () => { + expect(trino.validate(sql).length).toBe(0); + }); + }); }); diff --git a/test/parser/trino/syntax/dropStatement.test.ts b/test/parser/trino/syntax/dropStatement.test.ts index 42122987..d18f7d83 100644 --- a/test/parser/trino/syntax/dropStatement.test.ts +++ b/test/parser/trino/syntax/dropStatement.test.ts @@ -8,6 +8,8 @@ const features = { role: readSQL(__dirname, 'drop_role.sql'), column: readSQL(__dirname, 'drop_column.sql'), materializedView: readSQL(__dirname, 'drop_materialized_view.sql'), + catalog: readSQL(__dirname, 'drop_catalog.sql'), + function: readSQL(__dirname, 'drop_function.sql'), }; describe('TrinoSQL Drop Statements Syntax Tests', () => { @@ -43,4 +45,14 @@ describe('TrinoSQL Drop Statements Syntax Tests', () => { expect(trino.validate(sql).length).toBe(0); }); }); + features.catalog.forEach((sql) => { + it(sql, () => { + expect(trino.validate(sql).length).toBe(0); + }); + }); + features.function.forEach((sql) => { + it(sql, () => { + expect(trino.validate(sql).length).toBe(0); + }); + }); }); diff --git a/test/parser/trino/syntax/fixtures/alter_table.sql b/test/parser/trino/syntax/fixtures/alter_table.sql index 0ceb2baa..3e3bdfd3 100644 --- a/test/parser/trino/syntax/fixtures/alter_table.sql +++ b/test/parser/trino/syntax/fixtures/alter_table.sql @@ -6,6 +6,8 @@ ALTER TABLE users DROP COLUMN zip; ALTER TABLE IF EXISTS users DROP COLUMN IF EXISTS zip; ALTER TABLE users RENAME COLUMN id TO user_id; ALTER TABLE IF EXISTS users RENAME column IF EXISTS id to user_id; +ALTER TABLE users ALTER COLUMN id SET DATA TYPE bigint; +ALTER TABLE users ALTER COLUMN id DROP NOT NULL; ALTER TABLE people SET AUTHORIZATION alice; ALTER TABLE people SET AUTHORIZATION ROLE PUBLIC; ALTER TABLE people SET PROPERTIES x = 'y'; diff --git a/test/parser/trino/syntax/fixtures/comment.sql b/test/parser/trino/syntax/fixtures/comment.sql index bae01bcb..d0704dc0 100644 --- a/test/parser/trino/syntax/fixtures/comment.sql +++ b/test/parser/trino/syntax/fixtures/comment.sql @@ -1,5 +1,7 @@ COMMENT ON TABLE users IS 'master table'; +COMMENT ON VIEW users IS 'master view'; + COMMENT ON COLUMN users.name IS 'full name'; SHOW COMMENT ON COLUMN column1; diff --git a/test/parser/trino/syntax/fixtures/create_catalog.sql b/test/parser/trino/syntax/fixtures/create_catalog.sql new file mode 100644 index 00000000..ef5540ca --- /dev/null +++ b/test/parser/trino/syntax/fixtures/create_catalog.sql @@ -0,0 +1,13 @@ +CREATE CATALOG tpch USING tpch; + +CREATE CATALOG brain USING memory +WITH ("memory.max-data-per-node" = '128MB'); + + +CREATE CATALOG example USING postgresql +WITH ( + "connection-url" = 'jdbc:pg:localhost:5432', + "connection-user" = '${ENV:POSTGRES_USER}', + "connection-password" = '${ENV:POSTGRES_PASSWORD}', + "case-insensitive-name-matching" = 'true' +); \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/create_function.sql b/test/parser/trino/syntax/fixtures/create_function.sql new file mode 100644 index 00000000..86b4c81c --- /dev/null +++ b/test/parser/trino/syntax/fixtures/create_function.sql @@ -0,0 +1,8 @@ +CREATE FUNCTION example.default.meaning_of_life() + RETURNS bigint + BEGIN + RETURN 42; + END; + + +CREATE FUNCTION meaning_of_life() RETURNS bigint RETURN 42; \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/create_materialized_view.sql b/test/parser/trino/syntax/fixtures/create_materialized_view.sql index 4523110f..ec690a05 100644 --- a/test/parser/trino/syntax/fixtures/create_materialized_view.sql +++ b/test/parser/trino/syntax/fixtures/create_materialized_view.sql @@ -3,3 +3,31 @@ CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A simple mat CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A simple materialized view' AS SELECT * FROM catalog2.schema2.tab; CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A simple materialized view'WITH (partitioned_by = ARRAY ['dateint']) AS SELECT * FROM catalog2.schema2.tab; CREATE OR REPLACE MATERIALIZED VIEW catalog.schema.matview COMMENT 'A partitioned materialized view' WITH (partitioned_by = ARRAY ['dateint']) AS WITH a (t, u) AS (SELECT * FROM x), b AS (SELECT * FROM a) TABLE b; + +CREATE MATERIALIZED VIEW cancelled_orders +AS + SELECT orderkey, totalprice + FROM orders + WHERE orderstatus = 3; + +CREATE OR REPLACE MATERIALIZED VIEW order_totals_by_date +AS + SELECT orderdate, sum(totalprice) AS price + FROM orders + GROUP BY orderdate; + +CREATE MATERIALIZED VIEW orders_nation_mkgsegment +COMMENT 'Orders with nation and market segment data' +WITH ( partitioning = ARRAY['mktsegment', 'nationkey'] ) +AS + SELECT o.*, c.nationkey, c.mktsegment + FROM orders AS o + JOIN customer AS c + ON o.custkey = c.custkey; + +CREATE OR REPLACE MATERIALIZED VIEW +IF NOT EXISTS orders_nation_mkgsegment +GRACE PERIOD INTERVAL '1' YEAR +COMMENT 'Orders with nation and market segment data' +WITH ( partitioning = ARRAY['mktsegment', 'nationkey'] ) +AS SELECT * FROM t; \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/create_table.sql b/test/parser/trino/syntax/fixtures/create_table.sql index 191dc6b9..f052e64c 100644 --- a/test/parser/trino/syntax/fixtures/create_table.sql +++ b/test/parser/trino/syntax/fixtures/create_table.sql @@ -1,2 +1,3 @@ CREATE TABLE IF NOT EXISTS bar (LIKE like_table); CREATE TABLE IF NOT EXISTS bar (LIKE like_table INCLUDING PROPERTIES); +CREATE OR REPLACE TABLE IF NOT EXISTS bar (LIKE like_table); diff --git a/test/parser/trino/syntax/fixtures/drop_catalog.sql b/test/parser/trino/syntax/fixtures/drop_catalog.sql new file mode 100644 index 00000000..a2d4ed3b --- /dev/null +++ b/test/parser/trino/syntax/fixtures/drop_catalog.sql @@ -0,0 +1 @@ +DROP CATALOG example; \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/drop_function.sql b/test/parser/trino/syntax/fixtures/drop_function.sql new file mode 100644 index 00000000..dad1bb01 --- /dev/null +++ b/test/parser/trino/syntax/fixtures/drop_function.sql @@ -0,0 +1,5 @@ +DROP FUNCTION example.default.meaning_of_life(); + +DROP FUNCTION multiply_by_two(bigint); + +DROP FUNCTION meaning_of_life(); \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/execute.sql b/test/parser/trino/syntax/fixtures/execute.sql index ac7c7d9b..94ff3428 100644 --- a/test/parser/trino/syntax/fixtures/execute.sql +++ b/test/parser/trino/syntax/fixtures/execute.sql @@ -9,3 +9,11 @@ PREPARE my_select2 FROM SELECT name FROM nation WHERE regionkey = ? and nationkey < ?; EXECUTE my_select2 USING 1, 3; + +EXECUTE IMMEDIATE +'SELECT name FROM nation'; + + +EXECUTE IMMEDIATE +'SELECT name FROM nation WHERE regionkey = ? and nationkey < ?' +USING 1, 3; diff --git a/test/parser/trino/syntax/fixtures/reset_session.sql b/test/parser/trino/syntax/fixtures/reset_session.sql index 859afa76..a4608f00 100644 --- a/test/parser/trino/syntax/fixtures/reset_session.sql +++ b/test/parser/trino/syntax/fixtures/reset_session.sql @@ -1,2 +1,4 @@ RESET SESSION foo.bar; RESET SESSION foo; + +RESET SESSION AUTHORIZATION \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/select_function_tables.sql b/test/parser/trino/syntax/fixtures/select_function_tables.sql new file mode 100644 index 00000000..bc17ef3e --- /dev/null +++ b/test/parser/trino/syntax/fixtures/select_function_tables.sql @@ -0,0 +1,16 @@ +SELECT * FROM TABLE(my_function(1, 100)); + +SELECT * +FROM TABLE(exclude_columns( + input => TABLE(orders), + columns => DESCRIPTOR(clerk, comment))); + +SELECT * +FROM TABLE(sequence( + start => 1000000, + stop => -2000000, + step => -3)); + +SELECT * FROM TABLE(schema_name.my_function(1, 100)); + +SELECT * FROM TABLE(catalog_name.schema_name.my_function(1, 100)); \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/set_session.sql b/test/parser/trino/syntax/fixtures/set_session.sql index 159d4b9e..f346fcf4 100644 --- a/test/parser/trino/syntax/fixtures/set_session.sql +++ b/test/parser/trino/syntax/fixtures/set_session.sql @@ -2,3 +2,7 @@ SET SESSION foo = 'bar'; SET SESSION foo.bar = 'baz'; SET SESSION foo.bar.boo = 'baz'; SET SESSION foo.bar = 'ban' || 'ana'; + +SET SESSION AUTHORIZATION 'John'; +SET SESSION AUTHORIZATION John; +SET SESSION AUTHORIZATION "John"; \ No newline at end of file diff --git a/test/parser/trino/syntax/fixtures/show_create.sql b/test/parser/trino/syntax/fixtures/show_create.sql index 083d87cf..32459786 100644 --- a/test/parser/trino/syntax/fixtures/show_create.sql +++ b/test/parser/trino/syntax/fixtures/show_create.sql @@ -10,7 +10,6 @@ SHOW CREATE MATERIALIZED VIEW cancelled_orders AS SELECT orderkey, totalprice FROM orders - WHERE orderstatus = 3; - - + WHERE orderstatus = 3; +SHOW CREATE FUNCTION example.default.meaning_of_life; \ No newline at end of file diff --git a/test/parser/trino/syntax/selectStatement.test.ts b/test/parser/trino/syntax/selectStatement.test.ts index e99900de..10a93a7d 100644 --- a/test/parser/trino/syntax/selectStatement.test.ts +++ b/test/parser/trino/syntax/selectStatement.test.ts @@ -14,6 +14,7 @@ const features = { selectWithUNNEST: readSQL(__dirname, 'select_with_ unnest.sql'), selectWithExists: readSQL(__dirname, 'select_with_exists.sql'), selectWithUnion: readSQL(__dirname, 'select_with_union.sql'), + selectFunctionTables: readSQL(__dirname, 'select_function_tables.sql'), }; describe('TrinoSQL Select Statements Syntax Tests', () => { @@ -79,4 +80,9 @@ describe('TrinoSQL Select Statements Syntax Tests', () => { expect(trino.validate(sql).length).toBe(0); }); }); + features.selectFunctionTables.forEach((sql) => { + it(sql, () => { + expect(trino.validate(sql).length).toBe(0); + }); + }); });