1 /* vi:set ts=8 sts=4 sw=4 noet: 2 * 3 * VIM - Vi IMproved by Bram Moolenaar 4 * 5 * Do ":help uganda" in Vim to read copying and usage conditions. 6 * Do ":help credits" in Vim to see a list of people who contributed. 7 * See README.txt for an overview of the Vim source code. 8 */ 9 10 #include "vim.h" 11 12 #ifdef AMIGA 13 # include <time.h> /* for time() */ 14 #endif 15 16 /* 17 * Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred) 18 * It has been changed beyond recognition since then. 19 * 20 * Differences between version 7.4 and 8.x can be found with ":help version8". 21 * Differences between version 6.4 and 7.x can be found with ":help version7". 22 * Differences between version 5.8 and 6.x can be found with ":help version6". 23 * Differences between version 4.x and 5.x can be found with ":help version5". 24 * Differences between version 3.0 and 4.x can be found with ":help version4". 25 * All the remarks about older versions have been removed, they are not very 26 * interesting. 27 */ 28 29 #include "version.h" 30 31 char *Version = VIM_VERSION_SHORT; 32 static char *mediumVersion = VIM_VERSION_MEDIUM; 33 34 #if defined(HAVE_DATE_TIME) || defined(PROTO) 35 # if (defined(VMS) && defined(VAXC)) || defined(PROTO) 36 char longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__) 37 + sizeof(__TIME__) + 3]; 38 39 void 40 make_version(void) 41 { 42 /* 43 * Construct the long version string. Necessary because 44 * VAX C can't catenate strings in the preprocessor. 45 */ 46 strcpy(longVersion, VIM_VERSION_LONG_DATE); 47 strcat(longVersion, __DATE__); 48 strcat(longVersion, " "); 49 strcat(longVersion, __TIME__); 50 strcat(longVersion, ")"); 51 } 52 # else 53 char *longVersion = VIM_VERSION_LONG_DATE __DATE__ " " __TIME__ ")"; 54 # endif 55 #else 56 char *longVersion = VIM_VERSION_LONG; 57 #endif 58 59 static void list_features(void); 60 61 static char *(features[]) = 62 { 63 #ifdef HAVE_ACL 64 "+acl", 65 #else 66 "-acl", 67 #endif 68 #ifdef AMIGA /* only for Amiga systems */ 69 # ifdef FEAT_ARP 70 "+ARP", 71 # else 72 "-ARP", 73 # endif 74 #endif 75 #ifdef FEAT_ARABIC 76 "+arabic", 77 #else 78 "-arabic", 79 #endif 80 "+autocmd", 81 #ifdef FEAT_AUTOSERVERNAME 82 "+autoservername", 83 #else 84 "-autoservername", 85 #endif 86 #ifdef FEAT_BEVAL_GUI 87 "+balloon_eval", 88 #else 89 "-balloon_eval", 90 #endif 91 #ifdef FEAT_BEVAL_TERM 92 "+balloon_eval_term", 93 #else 94 "-balloon_eval_term", 95 #endif 96 #ifdef FEAT_BROWSE 97 "+browse", 98 #else 99 "-browse", 100 #endif 101 #ifdef NO_BUILTIN_TCAPS 102 "-builtin_terms", 103 #endif 104 #ifdef SOME_BUILTIN_TCAPS 105 "+builtin_terms", 106 #endif 107 #ifdef ALL_BUILTIN_TCAPS 108 "++builtin_terms", 109 #endif 110 #ifdef FEAT_BYTEOFF 111 "+byte_offset", 112 #else 113 "-byte_offset", 114 #endif 115 #ifdef FEAT_JOB_CHANNEL 116 "+channel", 117 #else 118 "-channel", 119 #endif 120 #ifdef FEAT_CINDENT 121 "+cindent", 122 #else 123 "-cindent", 124 #endif 125 #ifdef FEAT_CLIENTSERVER 126 "+clientserver", 127 #else 128 "-clientserver", 129 #endif 130 #ifdef FEAT_CLIPBOARD 131 "+clipboard", 132 #else 133 "-clipboard", 134 #endif 135 #ifdef FEAT_CMDL_COMPL 136 "+cmdline_compl", 137 #else 138 "-cmdline_compl", 139 #endif 140 #ifdef FEAT_CMDHIST 141 "+cmdline_hist", 142 #else 143 "-cmdline_hist", 144 #endif 145 #ifdef FEAT_CMDL_INFO 146 "+cmdline_info", 147 #else 148 "-cmdline_info", 149 #endif 150 #ifdef FEAT_COMMENTS 151 "+comments", 152 #else 153 "-comments", 154 #endif 155 #ifdef FEAT_CONCEAL 156 "+conceal", 157 #else 158 "-conceal", 159 #endif 160 #ifdef FEAT_CRYPT 161 "+cryptv", 162 #else 163 "-cryptv", 164 #endif 165 #ifdef FEAT_CSCOPE 166 "+cscope", 167 #else 168 "-cscope", 169 #endif 170 "+cursorbind", 171 #ifdef CURSOR_SHAPE 172 "+cursorshape", 173 #else 174 "-cursorshape", 175 #endif 176 #if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG) 177 "+dialog_con_gui", 178 #else 179 # if defined(FEAT_CON_DIALOG) 180 "+dialog_con", 181 # else 182 # if defined(FEAT_GUI_DIALOG) 183 "+dialog_gui", 184 # else 185 "-dialog", 186 # endif 187 # endif 188 #endif 189 #ifdef FEAT_DIFF 190 "+diff", 191 #else 192 "-diff", 193 #endif 194 #ifdef FEAT_DIGRAPHS 195 "+digraphs", 196 #else 197 "-digraphs", 198 #endif 199 #ifdef FEAT_GUI_W32 200 # ifdef FEAT_DIRECTX 201 "+directx", 202 # else 203 "-directx", 204 # endif 205 #endif 206 #ifdef FEAT_DND 207 "+dnd", 208 #else 209 "-dnd", 210 #endif 211 #ifdef EBCDIC 212 "+ebcdic", 213 #else 214 "-ebcdic", 215 #endif 216 #ifdef FEAT_EMACS_TAGS 217 "+emacs_tags", 218 #else 219 "-emacs_tags", 220 #endif 221 #ifdef FEAT_EVAL 222 "+eval", 223 #else 224 "-eval", 225 #endif 226 "+ex_extra", 227 #ifdef FEAT_SEARCH_EXTRA 228 "+extra_search", 229 #else 230 "-extra_search", 231 #endif 232 #ifdef FEAT_FKMAP 233 "+farsi", 234 #else 235 "-farsi", 236 #endif 237 #ifdef FEAT_SEARCHPATH 238 "+file_in_path", 239 #else 240 "-file_in_path", 241 #endif 242 #ifdef FEAT_FIND_ID 243 "+find_in_path", 244 #else 245 "-find_in_path", 246 #endif 247 #ifdef FEAT_FLOAT 248 "+float", 249 #else 250 "-float", 251 #endif 252 #ifdef FEAT_FOLDING 253 "+folding", 254 #else 255 "-folding", 256 #endif 257 #ifdef FEAT_FOOTER 258 "+footer", 259 #else 260 "-footer", 261 #endif 262 /* only interesting on Unix systems */ 263 #if !defined(USE_SYSTEM) && defined(UNIX) 264 "+fork()", 265 #endif 266 #ifdef FEAT_GETTEXT 267 # ifdef DYNAMIC_GETTEXT 268 "+gettext/dyn", 269 # else 270 "+gettext", 271 # endif 272 #else 273 "-gettext", 274 #endif 275 #ifdef FEAT_HANGULIN 276 "+hangul_input", 277 #else 278 "-hangul_input", 279 #endif 280 #if (defined(HAVE_ICONV_H) && defined(USE_ICONV)) || defined(DYNAMIC_ICONV) 281 # ifdef DYNAMIC_ICONV 282 "+iconv/dyn", 283 # else 284 "+iconv", 285 # endif 286 #else 287 "-iconv", 288 #endif 289 #ifdef FEAT_INS_EXPAND 290 "+insert_expand", 291 #else 292 "-insert_expand", 293 #endif 294 #ifdef FEAT_JOB_CHANNEL 295 "+job", 296 #else 297 "-job", 298 #endif 299 #ifdef FEAT_JUMPLIST 300 "+jumplist", 301 #else 302 "-jumplist", 303 #endif 304 #ifdef FEAT_KEYMAP 305 "+keymap", 306 #else 307 "-keymap", 308 #endif 309 #ifdef FEAT_EVAL 310 "+lambda", 311 #else 312 "-lambda", 313 #endif 314 #ifdef FEAT_LANGMAP 315 "+langmap", 316 #else 317 "-langmap", 318 #endif 319 #ifdef FEAT_LIBCALL 320 "+libcall", 321 #else 322 "-libcall", 323 #endif 324 #ifdef FEAT_LINEBREAK 325 "+linebreak", 326 #else 327 "-linebreak", 328 #endif 329 #ifdef FEAT_LISP 330 "+lispindent", 331 #else 332 "-lispindent", 333 #endif 334 "+listcmds", 335 #ifdef FEAT_LOCALMAP 336 "+localmap", 337 #else 338 "-localmap", 339 #endif 340 #ifdef FEAT_LUA 341 # ifdef DYNAMIC_LUA 342 "+lua/dyn", 343 # else 344 "+lua", 345 # endif 346 #else 347 "-lua", 348 #endif 349 #ifdef FEAT_MENU 350 "+menu", 351 #else 352 "-menu", 353 #endif 354 #ifdef FEAT_SESSION 355 "+mksession", 356 #else 357 "-mksession", 358 #endif 359 #ifdef FEAT_MODIFY_FNAME 360 "+modify_fname", 361 #else 362 "-modify_fname", 363 #endif 364 #ifdef FEAT_MOUSE 365 "+mouse", 366 # ifdef FEAT_MOUSESHAPE 367 "+mouseshape", 368 # else 369 "-mouseshape", 370 # endif 371 # else 372 "-mouse", 373 #endif 374 375 #if defined(UNIX) || defined(VMS) 376 # ifdef FEAT_MOUSE_DEC 377 "+mouse_dec", 378 # else 379 "-mouse_dec", 380 # endif 381 # ifdef FEAT_MOUSE_GPM 382 "+mouse_gpm", 383 # else 384 "-mouse_gpm", 385 # endif 386 # ifdef FEAT_MOUSE_JSB 387 "+mouse_jsbterm", 388 # else 389 "-mouse_jsbterm", 390 # endif 391 # ifdef FEAT_MOUSE_NET 392 "+mouse_netterm", 393 # else 394 "-mouse_netterm", 395 # endif 396 #endif 397 398 #ifdef __QNX__ 399 # ifdef FEAT_MOUSE_PTERM 400 "+mouse_pterm", 401 # else 402 "-mouse_pterm", 403 # endif 404 #endif 405 406 #if defined(UNIX) || defined(VMS) 407 # ifdef FEAT_MOUSE_SGR 408 "+mouse_sgr", 409 # else 410 "-mouse_sgr", 411 # endif 412 # ifdef FEAT_SYSMOUSE 413 "+mouse_sysmouse", 414 # else 415 "-mouse_sysmouse", 416 # endif 417 # ifdef FEAT_MOUSE_URXVT 418 "+mouse_urxvt", 419 # else 420 "-mouse_urxvt", 421 # endif 422 # ifdef FEAT_MOUSE_XTERM 423 "+mouse_xterm", 424 # else 425 "-mouse_xterm", 426 # endif 427 #endif 428 429 #ifdef FEAT_MBYTE_IME 430 # ifdef DYNAMIC_IME 431 "+multi_byte_ime/dyn", 432 # else 433 "+multi_byte_ime", 434 # endif 435 #else 436 # ifdef FEAT_MBYTE 437 "+multi_byte", 438 # else 439 "-multi_byte", 440 # endif 441 #endif 442 #ifdef FEAT_MULTI_LANG 443 "+multi_lang", 444 #else 445 "-multi_lang", 446 #endif 447 #ifdef FEAT_MZSCHEME 448 # ifdef DYNAMIC_MZSCHEME 449 "+mzscheme/dyn", 450 # else 451 "+mzscheme", 452 # endif 453 #else 454 "-mzscheme", 455 #endif 456 #ifdef FEAT_NETBEANS_INTG 457 "+netbeans_intg", 458 #else 459 "-netbeans_intg", 460 #endif 461 #ifdef FEAT_NUM64 462 "+num64", 463 #else 464 "-num64", 465 #endif 466 #ifdef FEAT_GUI_W32 467 # ifdef FEAT_OLE 468 "+ole", 469 # else 470 "-ole", 471 # endif 472 #endif 473 "+packages", 474 #ifdef FEAT_PATH_EXTRA 475 "+path_extra", 476 #else 477 "-path_extra", 478 #endif 479 #ifdef FEAT_PERL 480 # ifdef DYNAMIC_PERL 481 "+perl/dyn", 482 # else 483 "+perl", 484 # endif 485 #else 486 "-perl", 487 #endif 488 #ifdef FEAT_PERSISTENT_UNDO 489 "+persistent_undo", 490 #else 491 "-persistent_undo", 492 #endif 493 #ifdef FEAT_PRINTER 494 # ifdef FEAT_POSTSCRIPT 495 "+postscript", 496 # else 497 "-postscript", 498 # endif 499 "+printer", 500 #else 501 "-printer", 502 #endif 503 #ifdef FEAT_PROFILE 504 "+profile", 505 #else 506 "-profile", 507 #endif 508 #ifdef FEAT_PYTHON 509 # ifdef DYNAMIC_PYTHON 510 "+python/dyn", 511 # else 512 "+python", 513 # endif 514 #else 515 "-python", 516 #endif 517 #ifdef FEAT_PYTHON3 518 # ifdef DYNAMIC_PYTHON3 519 "+python3/dyn", 520 # else 521 "+python3", 522 # endif 523 #else 524 "-python3", 525 #endif 526 #ifdef FEAT_QUICKFIX 527 "+quickfix", 528 #else 529 "-quickfix", 530 #endif 531 #ifdef FEAT_RELTIME 532 "+reltime", 533 #else 534 "-reltime", 535 #endif 536 #ifdef FEAT_RIGHTLEFT 537 "+rightleft", 538 #else 539 "-rightleft", 540 #endif 541 #ifdef FEAT_RUBY 542 # ifdef DYNAMIC_RUBY 543 "+ruby/dyn", 544 # else 545 "+ruby", 546 # endif 547 #else 548 "-ruby", 549 #endif 550 "+scrollbind", 551 #ifdef FEAT_SIGNS 552 "+signs", 553 #else 554 "-signs", 555 #endif 556 #ifdef FEAT_SMARTINDENT 557 "+smartindent", 558 #else 559 "-smartindent", 560 #endif 561 #ifdef STARTUPTIME 562 "+startuptime", 563 #else 564 "-startuptime", 565 #endif 566 #ifdef FEAT_STL_OPT 567 "+statusline", 568 #else 569 "-statusline", 570 #endif 571 #ifdef FEAT_SUN_WORKSHOP 572 "+sun_workshop", 573 #else 574 "-sun_workshop", 575 #endif 576 #ifdef FEAT_SYN_HL 577 "+syntax", 578 #else 579 "-syntax", 580 #endif 581 /* only interesting on Unix systems */ 582 #if defined(USE_SYSTEM) && defined(UNIX) 583 "+system()", 584 #endif 585 #ifdef FEAT_TAG_BINS 586 "+tag_binary", 587 #else 588 "-tag_binary", 589 #endif 590 #ifdef FEAT_TAG_OLDSTATIC 591 "+tag_old_static", 592 #else 593 "-tag_old_static", 594 #endif 595 #ifdef FEAT_TAG_ANYWHITE 596 "+tag_any_white", 597 #else 598 "-tag_any_white", 599 #endif 600 #ifdef FEAT_TCL 601 # ifdef DYNAMIC_TCL 602 "+tcl/dyn", 603 # else 604 "+tcl", 605 # endif 606 #else 607 "-tcl", 608 #endif 609 #ifdef FEAT_TERMGUICOLORS 610 "+termguicolors", 611 #else 612 "-termguicolors", 613 #endif 614 #ifdef FEAT_TERMINAL 615 "+terminal", 616 #else 617 "-terminal", 618 #endif 619 #if defined(UNIX) 620 /* only Unix can have terminfo instead of termcap */ 621 # ifdef TERMINFO 622 "+terminfo", 623 # else 624 "-terminfo", 625 # endif 626 #else /* unix always includes termcap support */ 627 # ifdef HAVE_TGETENT 628 "+tgetent", 629 # else 630 "-tgetent", 631 # endif 632 #endif 633 #ifdef FEAT_TERMRESPONSE 634 "+termresponse", 635 #else 636 "-termresponse", 637 #endif 638 #ifdef FEAT_TEXTOBJ 639 "+textobjects", 640 #else 641 "-textobjects", 642 #endif 643 #ifdef FEAT_TIMERS 644 "+timers", 645 #else 646 "-timers", 647 #endif 648 #ifdef FEAT_TITLE 649 "+title", 650 #else 651 "-title", 652 #endif 653 #ifdef FEAT_TOOLBAR 654 "+toolbar", 655 #else 656 "-toolbar", 657 #endif 658 #ifdef FEAT_USR_CMDS 659 "+user_commands", 660 #else 661 "-user_commands", 662 #endif 663 "+vertsplit", 664 #ifdef FEAT_VIRTUALEDIT 665 "+virtualedit", 666 #else 667 "-virtualedit", 668 #endif 669 "+visual", 670 #ifdef FEAT_VISUALEXTRA 671 "+visualextra", 672 #else 673 "-visualextra", 674 #endif 675 #ifdef FEAT_VIMINFO 676 "+viminfo", 677 #else 678 "-viminfo", 679 #endif 680 #ifdef FEAT_VREPLACE 681 "+vreplace", 682 #else 683 "-vreplace", 684 #endif 685 #ifdef WIN3264 686 # ifdef FEAT_VTP 687 "+vtp", 688 # else 689 "-vtp", 690 # endif 691 #endif 692 #ifdef FEAT_WILDIGN 693 "+wildignore", 694 #else 695 "-wildignore", 696 #endif 697 #ifdef FEAT_WILDMENU 698 "+wildmenu", 699 #else 700 "-wildmenu", 701 #endif 702 "+windows", 703 #ifdef FEAT_WRITEBACKUP 704 "+writebackup", 705 #else 706 "-writebackup", 707 #endif 708 #if defined(UNIX) || defined(VMS) 709 # ifdef FEAT_X11 710 "+X11", 711 # else 712 "-X11", 713 # endif 714 #endif 715 #ifdef FEAT_XFONTSET 716 "+xfontset", 717 #else 718 "-xfontset", 719 #endif 720 #ifdef FEAT_XIM 721 "+xim", 722 #else 723 "-xim", 724 #endif 725 #ifdef WIN3264 726 # ifdef FEAT_XPM_W32 727 "+xpm_w32", 728 # else 729 "-xpm_w32", 730 # endif 731 #else 732 # ifdef HAVE_XPM 733 "+xpm", 734 # else 735 "-xpm", 736 # endif 737 #endif 738 #if defined(UNIX) || defined(VMS) 739 # ifdef USE_XSMP_INTERACT 740 "+xsmp_interact", 741 # else 742 # ifdef USE_XSMP 743 "+xsmp", 744 # else 745 "-xsmp", 746 # endif 747 # endif 748 # ifdef FEAT_XCLIPBOARD 749 "+xterm_clipboard", 750 # else 751 "-xterm_clipboard", 752 # endif 753 #endif 754 #ifdef FEAT_XTERM_SAVE 755 "+xterm_save", 756 #else 757 "-xterm_save", 758 #endif 759 NULL 760 }; 761 762 static int included_patches[] = 763 { /* Add new patch number below this line */ 764 /**/ 765 1849, 766 /**/ 767 1848, 768 /**/ 769 1847, 770 /**/ 771 1846, 772 /**/ 773 1845, 774 /**/ 775 1844, 776 /**/ 777 1843, 778 /**/ 779 1842, 780 /**/ 781 1841, 782 /**/ 783 1840, 784 /**/ 785 1839, 786 /**/ 787 1838, 788 /**/ 789 1837, 790 /**/ 791 1836, 792 /**/ 793 1835, 794 /**/ 795 1834, 796 /**/ 797 1833, 798 /**/ 799 1832, 800 /**/ 801 1831, 802 /**/ 803 1830, 804 /**/ 805 1829, 806 /**/ 807 1828, 808 /**/ 809 1827, 810 /**/ 811 1826, 812 /**/ 813 1825, 814 /**/ 815 1824, 816 /**/ 817 1823, 818 /**/ 819 1822, 820 /**/ 821 1821, 822 /**/ 823 1820, 824 /**/ 825 1819, 826 /**/ 827 1818, 828 /**/ 829 1817, 830 /**/ 831 1816, 832 /**/ 833 1815, 834 /**/ 835 1814, 836 /**/ 837 1813, 838 /**/ 839 1812, 840 /**/ 841 1811, 842 /**/ 843 1810, 844 /**/ 845 1809, 846 /**/ 847 1808, 848 /**/ 849 1807, 850 /**/ 851 1806, 852 /**/ 853 1805, 854 /**/ 855 1804, 856 /**/ 857 1803, 858 /**/ 859 1802, 860 /**/ 861 1801, 862 /**/ 863 1800, 864 /**/ 865 1799, 866 /**/ 867 1798, 868 /**/ 869 1797, 870 /**/ 871 1796, 872 /**/ 873 1795, 874 /**/ 875 1794, 876 /**/ 877 1793, 878 /**/ 879 1792, 880 /**/ 881 1791, 882 /**/ 883 1790, 884 /**/ 885 1789, 886 /**/ 887 1788, 888 /**/ 889 1787, 890 /**/ 891 1786, 892 /**/ 893 1785, 894 /**/ 895 1784, 896 /**/ 897 1783, 898 /**/ 899 1782, 900 /**/ 901 1781, 902 /**/ 903 1780, 904 /**/ 905 1779, 906 /**/ 907 1778, 908 /**/ 909 1777, 910 /**/ 911 1776, 912 /**/ 913 1775, 914 /**/ 915 1774, 916 /**/ 917 1773, 918 /**/ 919 1772, 920 /**/ 921 1771, 922 /**/ 923 1770, 924 /**/ 925 1769, 926 /**/ 927 1768, 928 /**/ 929 1767, 930 /**/ 931 1766, 932 /**/ 933 1765, 934 /**/ 935 1764, 936 /**/ 937 1763, 938 /**/ 939 1762, 940 /**/ 941 1761, 942 /**/ 943 1760, 944 /**/ 945 1759, 946 /**/ 947 1758, 948 /**/ 949 1757, 950 /**/ 951 1756, 952 /**/ 953 1755, 954 /**/ 955 1754, 956 /**/ 957 1753, 958 /**/ 959 1752, 960 /**/ 961 1751, 962 /**/ 963 1750, 964 /**/ 965 1749, 966 /**/ 967 1748, 968 /**/ 969 1747, 970 /**/ 971 1746, 972 /**/ 973 1745, 974 /**/ 975 1744, 976 /**/ 977 1743, 978 /**/ 979 1742, 980 /**/ 981 1741, 982 /**/ 983 1740, 984 /**/ 985 1739, 986 /**/ 987 1738, 988 /**/ 989 1737, 990 /**/ 991 1736, 992 /**/ 993 1735, 994 /**/ 995 1734, 996 /**/ 997 1733, 998 /**/ 999 1732, 1000 /**/ 1001 1731, 1002 /**/ 1003 1730, 1004 /**/ 1005 1729, 1006 /**/ 1007 1728, 1008 /**/ 1009 1727, 1010 /**/ 1011 1726, 1012 /**/ 1013 1725, 1014 /**/ 1015 1724, 1016 /**/ 1017 1723, 1018 /**/ 1019 1722, 1020 /**/ 1021 1721, 1022 /**/ 1023 1720, 1024 /**/ 1025 1719, 1026 /**/ 1027 1718, 1028 /**/ 1029 1717, 1030 /**/ 1031 1716, 1032 /**/ 1033 1715, 1034 /**/ 1035 1714, 1036 /**/ 1037 1713, 1038 /**/ 1039 1712, 1040 /**/ 1041 1711, 1042 /**/ 1043 1710, 1044 /**/ 1045 1709, 1046 /**/ 1047 1708, 1048 /**/ 1049 1707, 1050 /**/ 1051 1706, 1052 /**/ 1053 1705, 1054 /**/ 1055 1704, 1056 /**/ 1057 1703, 1058 /**/ 1059 1702, 1060 /**/ 1061 1701, 1062 /**/ 1063 1700, 1064 /**/ 1065 1699, 1066 /**/ 1067 1698, 1068 /**/ 1069 1697, 1070 /**/ 1071 1696, 1072 /**/ 1073 1695, 1074 /**/ 1075 1694, 1076 /**/ 1077 1693, 1078 /**/ 1079 1692, 1080 /**/ 1081 1691, 1082 /**/ 1083 1690, 1084 /**/ 1085 1689, 1086 /**/ 1087 1688, 1088 /**/ 1089 1687, 1090 /**/ 1091 1686, 1092 /**/ 1093 1685, 1094 /**/ 1095 1684, 1096 /**/ 1097 1683, 1098 /**/ 1099 1682, 1100 /**/ 1101 1681, 1102 /**/ 1103 1680, 1104 /**/ 1105 1679, 1106 /**/ 1107 1678, 1108 /**/ 1109 1677, 1110 /**/ 1111 1676, 1112 /**/ 1113 1675, 1114 /**/ 1115 1674, 1116 /**/ 1117 1673, 1118 /**/ 1119 1672, 1120 /**/ 1121 1671, 1122 /**/ 1123 1670, 1124 /**/ 1125 1669, 1126 /**/ 1127 1668, 1128 /**/ 1129 1667, 1130 /**/ 1131 1666, 1132 /**/ 1133 1665, 1134 /**/ 1135 1664, 1136 /**/ 1137 1663, 1138 /**/ 1139 1662, 1140 /**/ 1141 1661, 1142 /**/ 1143 1660, 1144 /**/ 1145 1659, 1146 /**/ 1147 1658, 1148 /**/ 1149 1657, 1150 /**/ 1151 1656, 1152 /**/ 1153 1655, 1154 /**/ 1155 1654, 1156 /**/ 1157 1653, 1158 /**/ 1159 1652, 1160 /**/ 1161 1651, 1162 /**/ 1163 1650, 1164 /**/ 1165 1649, 1166 /**/ 1167 1648, 1168 /**/ 1169 1647, 1170 /**/ 1171 1646, 1172 /**/ 1173 1645, 1174 /**/ 1175 1644, 1176 /**/ 1177 1643, 1178 /**/ 1179 1642, 1180 /**/ 1181 1641, 1182 /**/ 1183 1640, 1184 /**/ 1185 1639, 1186 /**/ 1187 1638, 1188 /**/ 1189 1637, 1190 /**/ 1191 1636, 1192 /**/ 1193 1635, 1194 /**/ 1195 1634, 1196 /**/ 1197 1633, 1198 /**/ 1199 1632, 1200 /**/ 1201 1631, 1202 /**/ 1203 1630, 1204 /**/ 1205 1629, 1206 /**/ 1207 1628, 1208 /**/ 1209 1627, 1210 /**/ 1211 1626, 1212 /**/ 1213 1625, 1214 /**/ 1215 1624, 1216 /**/ 1217 1623, 1218 /**/ 1219 1622, 1220 /**/ 1221 1621, 1222 /**/ 1223 1620, 1224 /**/ 1225 1619, 1226 /**/ 1227 1618, 1228 /**/ 1229 1617, 1230 /**/ 1231 1616, 1232 /**/ 1233 1615, 1234 /**/ 1235 1614, 1236 /**/ 1237 1613, 1238 /**/ 1239 1612, 1240 /**/ 1241 1611, 1242 /**/ 1243 1610, 1244 /**/ 1245 1609, 1246 /**/ 1247 1608, 1248 /**/ 1249 1607, 1250 /**/ 1251 1606, 1252 /**/ 1253 1605, 1254 /**/ 1255 1604, 1256 /**/ 1257 1603, 1258 /**/ 1259 1602, 1260 /**/ 1261 1601, 1262 /**/ 1263 1600, 1264 /**/ 1265 1599, 1266 /**/ 1267 1598, 1268 /**/ 1269 1597, 1270 /**/ 1271 1596, 1272 /**/ 1273 1595, 1274 /**/ 1275 1594, 1276 /**/ 1277 1593, 1278 /**/ 1279 1592, 1280 /**/ 1281 1591, 1282 /**/ 1283 1590, 1284 /**/ 1285 1589, 1286 /**/ 1287 1588, 1288 /**/ 1289 1587, 1290 /**/ 1291 1586, 1292 /**/ 1293 1585, 1294 /**/ 1295 1584, 1296 /**/ 1297 1583, 1298 /**/ 1299 1582, 1300 /**/ 1301 1581, 1302 /**/ 1303 1580, 1304 /**/ 1305 1579, 1306 /**/ 1307 1578, 1308 /**/ 1309 1577, 1310 /**/ 1311 1576, 1312 /**/ 1313 1575, 1314 /**/ 1315 1574, 1316 /**/ 1317 1573, 1318 /**/ 1319 1572, 1320 /**/ 1321 1571, 1322 /**/ 1323 1570, 1324 /**/ 1325 1569, 1326 /**/ 1327 1568, 1328 /**/ 1329 1567, 1330 /**/ 1331 1566, 1332 /**/ 1333 1565, 1334 /**/ 1335 1564, 1336 /**/ 1337 1563, 1338 /**/ 1339 1562, 1340 /**/ 1341 1561, 1342 /**/ 1343 1560, 1344 /**/ 1345 1559, 1346 /**/ 1347 1558, 1348 /**/ 1349 1557, 1350 /**/ 1351 1556, 1352 /**/ 1353 1555, 1354 /**/ 1355 1554, 1356 /**/ 1357 1553, 1358 /**/ 1359 1552, 1360 /**/ 1361 1551, 1362 /**/ 1363 1550, 1364 /**/ 1365 1549, 1366 /**/ 1367 1548, 1368 /**/ 1369 1547, 1370 /**/ 1371 1546, 1372 /**/ 1373 1545, 1374 /**/ 1375 1544, 1376 /**/ 1377 1543, 1378 /**/ 1379 1542, 1380 /**/ 1381 1541, 1382 /**/ 1383 1540, 1384 /**/ 1385 1539, 1386 /**/ 1387 1538, 1388 /**/ 1389 1537, 1390 /**/ 1391 1536, 1392 /**/ 1393 1535, 1394 /**/ 1395 1534, 1396 /**/ 1397 1533, 1398 /**/ 1399 1532, 1400 /**/ 1401 1531, 1402 /**/ 1403 1530, 1404 /**/ 1405 1529, 1406 /**/ 1407 1528, 1408 /**/ 1409 1527, 1410 /**/ 1411 1526, 1412 /**/ 1413 1525, 1414 /**/ 1415 1524, 1416 /**/ 1417 1523, 1418 /**/ 1419 1522, 1420 /**/ 1421 1521, 1422 /**/ 1423 1520, 1424 /**/ 1425 1519, 1426 /**/ 1427 1518, 1428 /**/ 1429 1517, 1430 /**/ 1431 1516, 1432 /**/ 1433 1515, 1434 /**/ 1435 1514, 1436 /**/ 1437 1513, 1438 /**/ 1439 1512, 1440 /**/ 1441 1511, 1442 /**/ 1443 1510, 1444 /**/ 1445 1509, 1446 /**/ 1447 1508, 1448 /**/ 1449 1507, 1450 /**/ 1451 1506, 1452 /**/ 1453 1505, 1454 /**/ 1455 1504, 1456 /**/ 1457 1503, 1458 /**/ 1459 1502, 1460 /**/ 1461 1501, 1462 /**/ 1463 1500, 1464 /**/ 1465 1499, 1466 /**/ 1467 1498, 1468 /**/ 1469 1497, 1470 /**/ 1471 1496, 1472 /**/ 1473 1495, 1474 /**/ 1475 1494, 1476 /**/ 1477 1493, 1478 /**/ 1479 1492, 1480 /**/ 1481 1491, 1482 /**/ 1483 1490, 1484 /**/ 1485 1489, 1486 /**/ 1487 1488, 1488 /**/ 1489 1487, 1490 /**/ 1491 1486, 1492 /**/ 1493 1485, 1494 /**/ 1495 1484, 1496 /**/ 1497 1483, 1498 /**/ 1499 1482, 1500 /**/ 1501 1481, 1502 /**/ 1503 1480, 1504 /**/ 1505 1479, 1506 /**/ 1507 1478, 1508 /**/ 1509 1477, 1510 /**/ 1511 1476, 1512 /**/ 1513 1475, 1514 /**/ 1515 1474, 1516 /**/ 1517 1473, 1518 /**/ 1519 1472, 1520 /**/ 1521 1471, 1522 /**/ 1523 1470, 1524 /**/ 1525 1469, 1526 /**/ 1527 1468, 1528 /**/ 1529 1467, 1530 /**/ 1531 1466, 1532 /**/ 1533 1465, 1534 /**/ 1535 1464, 1536 /**/ 1537 1463, 1538 /**/ 1539 1462, 1540 /**/ 1541 1461, 1542 /**/ 1543 1460, 1544 /**/ 1545 1459, 1546 /**/ 1547 1458, 1548 /**/ 1549 1457, 1550 /**/ 1551 1456, 1552 /**/ 1553 1455, 1554 /**/ 1555 1454, 1556 /**/ 1557 1453, 1558 /**/ 1559 1452, 1560 /**/ 1561 1451, 1562 /**/ 1563 1450, 1564 /**/ 1565 1449, 1566 /**/ 1567 1448, 1568 /**/ 1569 1447, 1570 /**/ 1571 1446, 1572 /**/ 1573 1445, 1574 /**/ 1575 1444, 1576 /**/ 1577 1443, 1578 /**/ 1579 1442, 1580 /**/ 1581 1441, 1582 /**/ 1583 1440, 1584 /**/ 1585 1439, 1586 /**/ 1587 1438, 1588 /**/ 1589 1437, 1590 /**/ 1591 1436, 1592 /**/ 1593 1435, 1594 /**/ 1595 1434, 1596 /**/ 1597 1433, 1598 /**/ 1599 1432, 1600 /**/ 1601 1431, 1602 /**/ 1603 1430, 1604 /**/ 1605 1429, 1606 /**/ 1607 1428, 1608 /**/ 1609 1427, 1610 /**/ 1611 1426, 1612 /**/ 1613 1425, 1614 /**/ 1615 1424, 1616 /**/ 1617 1423, 1618 /**/ 1619 1422, 1620 /**/ 1621 1421, 1622 /**/ 1623 1420, 1624 /**/ 1625 1419, 1626 /**/ 1627 1418, 1628 /**/ 1629 1417, 1630 /**/ 1631 1416, 1632 /**/ 1633 1415, 1634 /**/ 1635 1414, 1636 /**/ 1637 1413, 1638 /**/ 1639 1412, 1640 /**/ 1641 1411, 1642 /**/ 1643 1410, 1644 /**/ 1645 1409, 1646 /**/ 1647 1408, 1648 /**/ 1649 1407, 1650 /**/ 1651 1406, 1652 /**/ 1653 1405, 1654 /**/ 1655 1404, 1656 /**/ 1657 1403, 1658 /**/ 1659 1402, 1660 /**/ 1661 1401, 1662 /**/ 1663 1400, 1664 /**/ 1665 1399, 1666 /**/ 1667 1398, 1668 /**/ 1669 1397, 1670 /**/ 1671 1396, 1672 /**/ 1673 1395, 1674 /**/ 1675 1394, 1676 /**/ 1677 1393, 1678 /**/ 1679 1392, 1680 /**/ 1681 1391, 1682 /**/ 1683 1390, 1684 /**/ 1685 1389, 1686 /**/ 1687 1388, 1688 /**/ 1689 1387, 1690 /**/ 1691 1386, 1692 /**/ 1693 1385, 1694 /**/ 1695 1384, 1696 /**/ 1697 1383, 1698 /**/ 1699 1382, 1700 /**/ 1701 1381, 1702 /**/ 1703 1380, 1704 /**/ 1705 1379, 1706 /**/ 1707 1378, 1708 /**/ 1709 1377, 1710 /**/ 1711 1376, 1712 /**/ 1713 1375, 1714 /**/ 1715 1374, 1716 /**/ 1717 1373, 1718 /**/ 1719 1372, 1720 /**/ 1721 1371, 1722 /**/ 1723 1370, 1724 /**/ 1725 1369, 1726 /**/ 1727 1368, 1728 /**/ 1729 1367, 1730 /**/ 1731 1366, 1732 /**/ 1733 1365, 1734 /**/ 1735 1364, 1736 /**/ 1737 1363, 1738 /**/ 1739 1362, 1740 /**/ 1741 1361, 1742 /**/ 1743 1360, 1744 /**/ 1745 1359, 1746 /**/ 1747 1358, 1748 /**/ 1749 1357, 1750 /**/ 1751 1356, 1752 /**/ 1753 1355, 1754 /**/ 1755 1354, 1756 /**/ 1757 1353, 1758 /**/ 1759 1352, 1760 /**/ 1761 1351, 1762 /**/ 1763 1350, 1764 /**/ 1765 1349, 1766 /**/ 1767 1348, 1768 /**/ 1769 1347, 1770 /**/ 1771 1346, 1772 /**/ 1773 1345, 1774 /**/ 1775 1344, 1776 /**/ 1777 1343, 1778 /**/ 1779 1342, 1780 /**/ 1781 1341, 1782 /**/ 1783 1340, 1784 /**/ 1785 1339, 1786 /**/ 1787 1338, 1788 /**/ 1789 1337, 1790 /**/ 1791 1336, 1792 /**/ 1793 1335, 1794 /**/ 1795 1334, 1796 /**/ 1797 1333, 1798 /**/ 1799 1332, 1800 /**/ 1801 1331, 1802 /**/ 1803 1330, 1804 /**/ 1805 1329, 1806 /**/ 1807 1328, 1808 /**/ 1809 1327, 1810 /**/ 1811 1326, 1812 /**/ 1813 1325, 1814 /**/ 1815 1324, 1816 /**/ 1817 1323, 1818 /**/ 1819 1322, 1820 /**/ 1821 1321, 1822 /**/ 1823 1320, 1824 /**/ 1825 1319, 1826 /**/ 1827 1318, 1828 /**/ 1829 1317, 1830 /**/ 1831 1316, 1832 /**/ 1833 1315, 1834 /**/ 1835 1314, 1836 /**/ 1837 1313, 1838 /**/ 1839 1312, 1840 /**/ 1841 1311, 1842 /**/ 1843 1310, 1844 /**/ 1845 1309, 1846 /**/ 1847 1308, 1848 /**/ 1849 1307, 1850 /**/ 1851 1306, 1852 /**/ 1853 1305, 1854 /**/ 1855 1304, 1856 /**/ 1857 1303, 1858 /**/ 1859 1302, 1860 /**/ 1861 1301, 1862 /**/ 1863 1300, 1864 /**/ 1865 1299, 1866 /**/ 1867 1298, 1868 /**/ 1869 1297, 1870 /**/ 1871 1296, 1872 /**/ 1873 1295, 1874 /**/ 1875 1294, 1876 /**/ 1877 1293, 1878 /**/ 1879 1292, 1880 /**/ 1881 1291, 1882 /**/ 1883 1290, 1884 /**/ 1885 1289, 1886 /**/ 1887 1288, 1888 /**/ 1889 1287, 1890 /**/ 1891 1286, 1892 /**/ 1893 1285, 1894 /**/ 1895 1284, 1896 /**/ 1897 1283, 1898 /**/ 1899 1282, 1900 /**/ 1901 1281, 1902 /**/ 1903 1280, 1904 /**/ 1905 1279, 1906 /**/ 1907 1278, 1908 /**/ 1909 1277, 1910 /**/ 1911 1276, 1912 /**/ 1913 1275, 1914 /**/ 1915 1274, 1916 /**/ 1917 1273, 1918 /**/ 1919 1272, 1920 /**/ 1921 1271, 1922 /**/ 1923 1270, 1924 /**/ 1925 1269, 1926 /**/ 1927 1268, 1928 /**/ 1929 1267, 1930 /**/ 1931 1266, 1932 /**/ 1933 1265, 1934 /**/ 1935 1264, 1936 /**/ 1937 1263, 1938 /**/ 1939 1262, 1940 /**/ 1941 1261, 1942 /**/ 1943 1260, 1944 /**/ 1945 1259, 1946 /**/ 1947 1258, 1948 /**/ 1949 1257, 1950 /**/ 1951 1256, 1952 /**/ 1953 1255, 1954 /**/ 1955 1254, 1956 /**/ 1957 1253, 1958 /**/ 1959 1252, 1960 /**/ 1961 1251, 1962 /**/ 1963 1250, 1964 /**/ 1965 1249, 1966 /**/ 1967 1248, 1968 /**/ 1969 1247, 1970 /**/ 1971 1246, 1972 /**/ 1973 1245, 1974 /**/ 1975 1244, 1976 /**/ 1977 1243, 1978 /**/ 1979 1242, 1980 /**/ 1981 1241, 1982 /**/ 1983 1240, 1984 /**/ 1985 1239, 1986 /**/ 1987 1238, 1988 /**/ 1989 1237, 1990 /**/ 1991 1236, 1992 /**/ 1993 1235, 1994 /**/ 1995 1234, 1996 /**/ 1997 1233, 1998 /**/ 1999 1232, 2000 /**/ 2001 1231, 2002 /**/ 2003 1230, 2004 /**/ 2005 1229, 2006 /**/ 2007 1228, 2008 /**/ 2009 1227, 2010 /**/ 2011 1226, 2012 /**/ 2013 1225, 2014 /**/ 2015 1224, 2016 /**/ 2017 1223, 2018 /**/ 2019 1222, 2020 /**/ 2021 1221, 2022 /**/ 2023 1220, 2024 /**/ 2025 1219, 2026 /**/ 2027 1218, 2028 /**/ 2029 1217, 2030 /**/ 2031 1216, 2032 /**/ 2033 1215, 2034 /**/ 2035 1214, 2036 /**/ 2037 1213, 2038 /**/ 2039 1212, 2040 /**/ 2041 1211, 2042 /**/ 2043 1210, 2044 /**/ 2045 1209, 2046 /**/ 2047 1208, 2048 /**/ 2049 1207, 2050 /**/ 2051 1206, 2052 /**/ 2053 1205, 2054 /**/ 2055 1204, 2056 /**/ 2057 1203, 2058 /**/ 2059 1202, 2060 /**/ 2061 1201, 2062 /**/ 2063 1200, 2064 /**/ 2065 1199, 2066 /**/ 2067 1198, 2068 /**/ 2069 1197, 2070 /**/ 2071 1196, 2072 /**/ 2073 1195, 2074 /**/ 2075 1194, 2076 /**/ 2077 1193, 2078 /**/ 2079 1192, 2080 /**/ 2081 1191, 2082 /**/ 2083 1190, 2084 /**/ 2085 1189, 2086 /**/ 2087 1188, 2088 /**/ 2089 1187, 2090 /**/ 2091 1186, 2092 /**/ 2093 1185, 2094 /**/ 2095 1184, 2096 /**/ 2097 1183, 2098 /**/ 2099 1182, 2100 /**/ 2101 1181, 2102 /**/ 2103 1180, 2104 /**/ 2105 1179, 2106 /**/ 2107 1178, 2108 /**/ 2109 1177, 2110 /**/ 2111 1176, 2112 /**/ 2113 1175, 2114 /**/ 2115 1174, 2116 /**/ 2117 1173, 2118 /**/ 2119 1172, 2120 /**/ 2121 1171, 2122 /**/ 2123 1170, 2124 /**/ 2125 1169, 2126 /**/ 2127 1168, 2128 /**/ 2129 1167, 2130 /**/ 2131 1166, 2132 /**/ 2133 1165, 2134 /**/ 2135 1164, 2136 /**/ 2137 1163, 2138 /**/ 2139 1162, 2140 /**/ 2141 1161, 2142 /**/ 2143 1160, 2144 /**/ 2145 1159, 2146 /**/ 2147 1158, 2148 /**/ 2149 1157, 2150 /**/ 2151 1156, 2152 /**/ 2153 1155, 2154 /**/ 2155 1154, 2156 /**/ 2157 1153, 2158 /**/ 2159 1152, 2160 /**/ 2161 1151, 2162 /**/ 2163 1150, 2164 /**/ 2165 1149, 2166 /**/ 2167 1148, 2168 /**/ 2169 1147, 2170 /**/ 2171 1146, 2172 /**/ 2173 1145, 2174 /**/ 2175 1144, 2176 /**/ 2177 1143, 2178 /**/ 2179 1142, 2180 /**/ 2181 1141, 2182 /**/ 2183 1140, 2184 /**/ 2185 1139, 2186 /**/ 2187 1138, 2188 /**/ 2189 1137, 2190 /**/ 2191 1136, 2192 /**/ 2193 1135, 2194 /**/ 2195 1134, 2196 /**/ 2197 1133, 2198 /**/ 2199 1132, 2200 /**/ 2201 1131, 2202 /**/ 2203 1130, 2204 /**/ 2205 1129, 2206 /**/ 2207 1128, 2208 /**/ 2209 1127, 2210 /**/ 2211 1126, 2212 /**/ 2213 1125, 2214 /**/ 2215 1124, 2216 /**/ 2217 1123, 2218 /**/ 2219 1122, 2220 /**/ 2221 1121, 2222 /**/ 2223 1120, 2224 /**/ 2225 1119, 2226 /**/ 2227 1118, 2228 /**/ 2229 1117, 2230 /**/ 2231 1116, 2232 /**/ 2233 1115, 2234 /**/ 2235 1114, 2236 /**/ 2237 1113, 2238 /**/ 2239 1112, 2240 /**/ 2241 1111, 2242 /**/ 2243 1110, 2244 /**/ 2245 1109, 2246 /**/ 2247 1108, 2248 /**/ 2249 1107, 2250 /**/ 2251 1106, 2252 /**/ 2253 1105, 2254 /**/ 2255 1104, 2256 /**/ 2257 1103, 2258 /**/ 2259 1102, 2260 /**/ 2261 1101, 2262 /**/ 2263 1100, 2264 /**/ 2265 1099, 2266 /**/ 2267 1098, 2268 /**/ 2269 1097, 2270 /**/ 2271 1096, 2272 /**/ 2273 1095, 2274 /**/ 2275 1094, 2276 /**/ 2277 1093, 2278 /**/ 2279 1092, 2280 /**/ 2281 1091, 2282 /**/ 2283 1090, 2284 /**/ 2285 1089, 2286 /**/ 2287 1088, 2288 /**/ 2289 1087, 2290 /**/ 2291 1086, 2292 /**/ 2293 1085, 2294 /**/ 2295 1084, 2296 /**/ 2297 1083, 2298 /**/ 2299 1082, 2300 /**/ 2301 1081, 2302 /**/ 2303 1080, 2304 /**/ 2305 1079, 2306 /**/ 2307 1078, 2308 /**/ 2309 1077, 2310 /**/ 2311 1076, 2312 /**/ 2313 1075, 2314 /**/ 2315 1074, 2316 /**/ 2317 1073, 2318 /**/ 2319 1072, 2320 /**/ 2321 1071, 2322 /**/ 2323 1070, 2324 /**/ 2325 1069, 2326 /**/ 2327 1068, 2328 /**/ 2329 1067, 2330 /**/ 2331 1066, 2332 /**/ 2333 1065, 2334 /**/ 2335 1064, 2336 /**/ 2337 1063, 2338 /**/ 2339 1062, 2340 /**/ 2341 1061, 2342 /**/ 2343 1060, 2344 /**/ 2345 1059, 2346 /**/ 2347 1058, 2348 /**/ 2349 1057, 2350 /**/ 2351 1056, 2352 /**/ 2353 1055, 2354 /**/ 2355 1054, 2356 /**/ 2357 1053, 2358 /**/ 2359 1052, 2360 /**/ 2361 1051, 2362 /**/ 2363 1050, 2364 /**/ 2365 1049, 2366 /**/ 2367 1048, 2368 /**/ 2369 1047, 2370 /**/ 2371 1046, 2372 /**/ 2373 1045, 2374 /**/ 2375 1044, 2376 /**/ 2377 1043, 2378 /**/ 2379 1042, 2380 /**/ 2381 1041, 2382 /**/ 2383 1040, 2384 /**/ 2385 1039, 2386 /**/ 2387 1038, 2388 /**/ 2389 1037, 2390 /**/ 2391 1036, 2392 /**/ 2393 1035, 2394 /**/ 2395 1034, 2396 /**/ 2397 1033, 2398 /**/ 2399 1032, 2400 /**/ 2401 1031, 2402 /**/ 2403 1030, 2404 /**/ 2405 1029, 2406 /**/ 2407 1028, 2408 /**/ 2409 1027, 2410 /**/ 2411 1026, 2412 /**/ 2413 1025, 2414 /**/ 2415 1024, 2416 /**/ 2417 1023, 2418 /**/ 2419 1022, 2420 /**/ 2421 1021, 2422 /**/ 2423 1020, 2424 /**/ 2425 1019, 2426 /**/ 2427 1018, 2428 /**/ 2429 1017, 2430 /**/ 2431 1016, 2432 /**/ 2433 1015, 2434 /**/ 2435 1014, 2436 /**/ 2437 1013, 2438 /**/ 2439 1012, 2440 /**/ 2441 1011, 2442 /**/ 2443 1010, 2444 /**/ 2445 1009, 2446 /**/ 2447 1008, 2448 /**/ 2449 1007, 2450 /**/ 2451 1006, 2452 /**/ 2453 1005, 2454 /**/ 2455 1004, 2456 /**/ 2457 1003, 2458 /**/ 2459 1002, 2460 /**/ 2461 1001, 2462 /**/ 2463 1000, 2464 /**/ 2465 999, 2466 /**/ 2467 998, 2468 /**/ 2469 997, 2470 /**/ 2471 996, 2472 /**/ 2473 995, 2474 /**/ 2475 994, 2476 /**/ 2477 993, 2478 /**/ 2479 992, 2480 /**/ 2481 991, 2482 /**/ 2483 990, 2484 /**/ 2485 989, 2486 /**/ 2487 988, 2488 /**/ 2489 987, 2490 /**/ 2491 986, 2492 /**/ 2493 985, 2494 /**/ 2495 984, 2496 /**/ 2497 983, 2498 /**/ 2499 982, 2500 /**/ 2501 981, 2502 /**/ 2503 980, 2504 /**/ 2505 979, 2506 /**/ 2507 978, 2508 /**/ 2509 977, 2510 /**/ 2511 976, 2512 /**/ 2513 975, 2514 /**/ 2515 974, 2516 /**/ 2517 973, 2518 /**/ 2519 972, 2520 /**/ 2521 971, 2522 /**/ 2523 970, 2524 /**/ 2525 969, 2526 /**/ 2527 968, 2528 /**/ 2529 967, 2530 /**/ 2531 966, 2532 /**/ 2533 965, 2534 /**/ 2535 964, 2536 /**/ 2537 963, 2538 /**/ 2539 962, 2540 /**/ 2541 961, 2542 /**/ 2543 960, 2544 /**/ 2545 959, 2546 /**/ 2547 958, 2548 /**/ 2549 957, 2550 /**/ 2551 956, 2552 /**/ 2553 955, 2554 /**/ 2555 954, 2556 /**/ 2557 953, 2558 /**/ 2559 952, 2560 /**/ 2561 951, 2562 /**/ 2563 950, 2564 /**/ 2565 949, 2566 /**/ 2567 948, 2568 /**/ 2569 947, 2570 /**/ 2571 946, 2572 /**/ 2573 945, 2574 /**/ 2575 944, 2576 /**/ 2577 943, 2578 /**/ 2579 942, 2580 /**/ 2581 941, 2582 /**/ 2583 940, 2584 /**/ 2585 939, 2586 /**/ 2587 938, 2588 /**/ 2589 937, 2590 /**/ 2591 936, 2592 /**/ 2593 935, 2594 /**/ 2595 934, 2596 /**/ 2597 933, 2598 /**/ 2599 932, 2600 /**/ 2601 931, 2602 /**/ 2603 930, 2604 /**/ 2605 929, 2606 /**/ 2607 928, 2608 /**/ 2609 927, 2610 /**/ 2611 926, 2612 /**/ 2613 925, 2614 /**/ 2615 924, 2616 /**/ 2617 923, 2618 /**/ 2619 922, 2620 /**/ 2621 921, 2622 /**/ 2623 920, 2624 /**/ 2625 919, 2626 /**/ 2627 918, 2628 /**/ 2629 917, 2630 /**/ 2631 916, 2632 /**/ 2633 915, 2634 /**/ 2635 914, 2636 /**/ 2637 913, 2638 /**/ 2639 912, 2640 /**/ 2641 911, 2642 /**/ 2643 910, 2644 /**/ 2645 909, 2646 /**/ 2647 908, 2648 /**/ 2649 907, 2650 /**/ 2651 906, 2652 /**/ 2653 905, 2654 /**/ 2655 904, 2656 /**/ 2657 903, 2658 /**/ 2659 902, 2660 /**/ 2661 901, 2662 /**/ 2663 900, 2664 /**/ 2665 899, 2666 /**/ 2667 898, 2668 /**/ 2669 897, 2670 /**/ 2671 896, 2672 /**/ 2673 895, 2674 /**/ 2675 894, 2676 /**/ 2677 893, 2678 /**/ 2679 892, 2680 /**/ 2681 891, 2682 /**/ 2683 890, 2684 /**/ 2685 889, 2686 /**/ 2687 888, 2688 /**/ 2689 887, 2690 /**/ 2691 886, 2692 /**/ 2693 885, 2694 /**/ 2695 884, 2696 /**/ 2697 883, 2698 /**/ 2699 882, 2700 /**/ 2701 881, 2702 /**/ 2703 880, 2704 /**/ 2705 879, 2706 /**/ 2707 878, 2708 /**/ 2709 877, 2710 /**/ 2711 876, 2712 /**/ 2713 875, 2714 /**/ 2715 874, 2716 /**/ 2717 873, 2718 /**/ 2719 872, 2720 /**/ 2721 871, 2722 /**/ 2723 870, 2724 /**/ 2725 869, 2726 /**/ 2727 868, 2728 /**/ 2729 867, 2730 /**/ 2731 866, 2732 /**/ 2733 865, 2734 /**/ 2735 864, 2736 /**/ 2737 863, 2738 /**/ 2739 862, 2740 /**/ 2741 861, 2742 /**/ 2743 860, 2744 /**/ 2745 859, 2746 /**/ 2747 858, 2748 /**/ 2749 857, 2750 /**/ 2751 856, 2752 /**/ 2753 855, 2754 /**/ 2755 854, 2756 /**/ 2757 853, 2758 /**/ 2759 852, 2760 /**/ 2761 851, 2762 /**/ 2763 850, 2764 /**/ 2765 849, 2766 /**/ 2767 848, 2768 /**/ 2769 847, 2770 /**/ 2771 846, 2772 /**/ 2773 845, 2774 /**/ 2775 844, 2776 /**/ 2777 843, 2778 /**/ 2779 842, 2780 /**/ 2781 841, 2782 /**/ 2783 840, 2784 /**/ 2785 839, 2786 /**/ 2787 838, 2788 /**/ 2789 837, 2790 /**/ 2791 836, 2792 /**/ 2793 835, 2794 /**/ 2795 834, 2796 /**/ 2797 833, 2798 /**/ 2799 832, 2800 /**/ 2801 831, 2802 /**/ 2803 830, 2804 /**/ 2805 829, 2806 /**/ 2807 828, 2808 /**/ 2809 827, 2810 /**/ 2811 826, 2812 /**/ 2813 825, 2814 /**/ 2815 824, 2816 /**/ 2817 823, 2818 /**/ 2819 822, 2820 /**/ 2821 821, 2822 /**/ 2823 820, 2824 /**/ 2825 819, 2826 /**/ 2827 818, 2828 /**/ 2829 817, 2830 /**/ 2831 816, 2832 /**/ 2833 815, 2834 /**/ 2835 814, 2836 /**/ 2837 813, 2838 /**/ 2839 812, 2840 /**/ 2841 811, 2842 /**/ 2843 810, 2844 /**/ 2845 809, 2846 /**/ 2847 808, 2848 /**/ 2849 807, 2850 /**/ 2851 806, 2852 /**/ 2853 805, 2854 /**/ 2855 804, 2856 /**/ 2857 803, 2858 /**/ 2859 802, 2860 /**/ 2861 801, 2862 /**/ 2863 800, 2864 /**/ 2865 799, 2866 /**/ 2867 798, 2868 /**/ 2869 797, 2870 /**/ 2871 796, 2872 /**/ 2873 795, 2874 /**/ 2875 794, 2876 /**/ 2877 793, 2878 /**/ 2879 792, 2880 /**/ 2881 791, 2882 /**/ 2883 790, 2884 /**/ 2885 789, 2886 /**/ 2887 788, 2888 /**/ 2889 787, 2890 /**/ 2891 786, 2892 /**/ 2893 785, 2894 /**/ 2895 784, 2896 /**/ 2897 783, 2898 /**/ 2899 782, 2900 /**/ 2901 781, 2902 /**/ 2903 780, 2904 /**/ 2905 779, 2906 /**/ 2907 778, 2908 /**/ 2909 777, 2910 /**/ 2911 776, 2912 /**/ 2913 775, 2914 /**/ 2915 774, 2916 /**/ 2917 773, 2918 /**/ 2919 772, 2920 /**/ 2921 771, 2922 /**/ 2923 770, 2924 /**/ 2925 769, 2926 /**/ 2927 768, 2928 /**/ 2929 767, 2930 /**/ 2931 766, 2932 /**/ 2933 765, 2934 /**/ 2935 764, 2936 /**/ 2937 763, 2938 /**/ 2939 762, 2940 /**/ 2941 761, 2942 /**/ 2943 760, 2944 /**/ 2945 759, 2946 /**/ 2947 758, 2948 /**/ 2949 757, 2950 /**/ 2951 756, 2952 /**/ 2953 755, 2954 /**/ 2955 754, 2956 /**/ 2957 753, 2958 /**/ 2959 752, 2960 /**/ 2961 751, 2962 /**/ 2963 750, 2964 /**/ 2965 749, 2966 /**/ 2967 748, 2968 /**/ 2969 747, 2970 /**/ 2971 746, 2972 /**/ 2973 745, 2974 /**/ 2975 744, 2976 /**/ 2977 743, 2978 /**/ 2979 742, 2980 /**/ 2981 741, 2982 /**/ 2983 740, 2984 /**/ 2985 739, 2986 /**/ 2987 738, 2988 /**/ 2989 737, 2990 /**/ 2991 736, 2992 /**/ 2993 735, 2994 /**/ 2995 734, 2996 /**/ 2997 733, 2998 /**/ 2999 732, 3000 /**/ 3001 731, 3002 /**/ 3003 730, 3004 /**/ 3005 729, 3006 /**/ 3007 728, 3008 /**/ 3009 727, 3010 /**/ 3011 726, 3012 /**/ 3013 725, 3014 /**/ 3015 724, 3016 /**/ 3017 723, 3018 /**/ 3019 722, 3020 /**/ 3021 721, 3022 /**/ 3023 720, 3024 /**/ 3025 719, 3026 /**/ 3027 718, 3028 /**/ 3029 717, 3030 /**/ 3031 716, 3032 /**/ 3033 715, 3034 /**/ 3035 714, 3036 /**/ 3037 713, 3038 /**/ 3039 712, 3040 /**/ 3041 711, 3042 /**/ 3043 710, 3044 /**/ 3045 709, 3046 /**/ 3047 708, 3048 /**/ 3049 707, 3050 /**/ 3051 706, 3052 /**/ 3053 705, 3054 /**/ 3055 704, 3056 /**/ 3057 703, 3058 /**/ 3059 702, 3060 /**/ 3061 701, 3062 /**/ 3063 700, 3064 /**/ 3065 699, 3066 /**/ 3067 698, 3068 /**/ 3069 697, 3070 /**/ 3071 696, 3072 /**/ 3073 695, 3074 /**/ 3075 694, 3076 /**/ 3077 693, 3078 /**/ 3079 692, 3080 /**/ 3081 691, 3082 /**/ 3083 690, 3084 /**/ 3085 689, 3086 /**/ 3087 688, 3088 /**/ 3089 687, 3090 /**/ 3091 686, 3092 /**/ 3093 685, 3094 /**/ 3095 684, 3096 /**/ 3097 683, 3098 /**/ 3099 682, 3100 /**/ 3101 681, 3102 /**/ 3103 680, 3104 /**/ 3105 679, 3106 /**/ 3107 678, 3108 /**/ 3109 677, 3110 /**/ 3111 676, 3112 /**/ 3113 675, 3114 /**/ 3115 674, 3116 /**/ 3117 673, 3118 /**/ 3119 672, 3120 /**/ 3121 671, 3122 /**/ 3123 670, 3124 /**/ 3125 669, 3126 /**/ 3127 668, 3128 /**/ 3129 667, 3130 /**/ 3131 666, 3132 /**/ 3133 665, 3134 /**/ 3135 664, 3136 /**/ 3137 663, 3138 /**/ 3139 662, 3140 /**/ 3141 661, 3142 /**/ 3143 660, 3144 /**/ 3145 659, 3146 /**/ 3147 658, 3148 /**/ 3149 657, 3150 /**/ 3151 656, 3152 /**/ 3153 655, 3154 /**/ 3155 654, 3156 /**/ 3157 653, 3158 /**/ 3159 652, 3160 /**/ 3161 651, 3162 /**/ 3163 650, 3164 /**/ 3165 649, 3166 /**/ 3167 648, 3168 /**/ 3169 647, 3170 /**/ 3171 646, 3172 /**/ 3173 645, 3174 /**/ 3175 644, 3176 /**/ 3177 643, 3178 /**/ 3179 642, 3180 /**/ 3181 641, 3182 /**/ 3183 640, 3184 /**/ 3185 639, 3186 /**/ 3187 638, 3188 /**/ 3189 637, 3190 /**/ 3191 636, 3192 /**/ 3193 635, 3194 /**/ 3195 634, 3196 /**/ 3197 633, 3198 /**/ 3199 632, 3200 /**/ 3201 631, 3202 /**/ 3203 630, 3204 /**/ 3205 629, 3206 /**/ 3207 628, 3208 /**/ 3209 627, 3210 /**/ 3211 626, 3212 /**/ 3213 625, 3214 /**/ 3215 624, 3216 /**/ 3217 623, 3218 /**/ 3219 622, 3220 /**/ 3221 621, 3222 /**/ 3223 620, 3224 /**/ 3225 619, 3226 /**/ 3227 618, 3228 /**/ 3229 617, 3230 /**/ 3231 616, 3232 /**/ 3233 615, 3234 /**/ 3235 614, 3236 /**/ 3237 613, 3238 /**/ 3239 612, 3240 /**/ 3241 611, 3242 /**/ 3243 610, 3244 /**/ 3245 609, 3246 /**/ 3247 608, 3248 /**/ 3249 607, 3250 /**/ 3251 606, 3252 /**/ 3253 605, 3254 /**/ 3255 604, 3256 /**/ 3257 603, 3258 /**/ 3259 602, 3260 /**/ 3261 601, 3262 /**/ 3263 600, 3264 /**/ 3265 599, 3266 /**/ 3267 598, 3268 /**/ 3269 597, 3270 /**/ 3271 596, 3272 /**/ 3273 595, 3274 /**/ 3275 594, 3276 /**/ 3277 593, 3278 /**/ 3279 592, 3280 /**/ 3281 591, 3282 /**/ 3283 590, 3284 /**/ 3285 589, 3286 /**/ 3287 588, 3288 /**/ 3289 587, 3290 /**/ 3291 586, 3292 /**/ 3293 585, 3294 /**/ 3295 584, 3296 /**/ 3297 583, 3298 /**/ 3299 582, 3300 /**/ 3301 581, 3302 /**/ 3303 580, 3304 /**/ 3305 579, 3306 /**/ 3307 578, 3308 /**/ 3309 577, 3310 /**/ 3311 576, 3312 /**/ 3313 575, 3314 /**/ 3315 574, 3316 /**/ 3317 573, 3318 /**/ 3319 572, 3320 /**/ 3321 571, 3322 /**/ 3323 570, 3324 /**/ 3325 569, 3326 /**/ 3327 568, 3328 /**/ 3329 567, 3330 /**/ 3331 566, 3332 /**/ 3333 565, 3334 /**/ 3335 564, 3336 /**/ 3337 563, 3338 /**/ 3339 562, 3340 /**/ 3341 561, 3342 /**/ 3343 560, 3344 /**/ 3345 559, 3346 /**/ 3347 558, 3348 /**/ 3349 557, 3350 /**/ 3351 556, 3352 /**/ 3353 555, 3354 /**/ 3355 554, 3356 /**/ 3357 553, 3358 /**/ 3359 552, 3360 /**/ 3361 551, 3362 /**/ 3363 550, 3364 /**/ 3365 549, 3366 /**/ 3367 548, 3368 /**/ 3369 547, 3370 /**/ 3371 546, 3372 /**/ 3373 545, 3374 /**/ 3375 544, 3376 /**/ 3377 543, 3378 /**/ 3379 542, 3380 /**/ 3381 541, 3382 /**/ 3383 540, 3384 /**/ 3385 539, 3386 /**/ 3387 538, 3388 /**/ 3389 537, 3390 /**/ 3391 536, 3392 /**/ 3393 535, 3394 /**/ 3395 534, 3396 /**/ 3397 533, 3398 /**/ 3399 532, 3400 /**/ 3401 531, 3402 /**/ 3403 530, 3404 /**/ 3405 529, 3406 /**/ 3407 528, 3408 /**/ 3409 527, 3410 /**/ 3411 526, 3412 /**/ 3413 525, 3414 /**/ 3415 524, 3416 /**/ 3417 523, 3418 /**/ 3419 522, 3420 /**/ 3421 521, 3422 /**/ 3423 520, 3424 /**/ 3425 519, 3426 /**/ 3427 518, 3428 /**/ 3429 517, 3430 /**/ 3431 516, 3432 /**/ 3433 515, 3434 /**/ 3435 514, 3436 /**/ 3437 513, 3438 /**/ 3439 512, 3440 /**/ 3441 511, 3442 /**/ 3443 510, 3444 /**/ 3445 509, 3446 /**/ 3447 508, 3448 /**/ 3449 507, 3450 /**/ 3451 506, 3452 /**/ 3453 505, 3454 /**/ 3455 504, 3456 /**/ 3457 503, 3458 /**/ 3459 502, 3460 /**/ 3461 501, 3462 /**/ 3463 500, 3464 /**/ 3465 499, 3466 /**/ 3467 498, 3468 /**/ 3469 497, 3470 /**/ 3471 496, 3472 /**/ 3473 495, 3474 /**/ 3475 494, 3476 /**/ 3477 493, 3478 /**/ 3479 492, 3480 /**/ 3481 491, 3482 /**/ 3483 490, 3484 /**/ 3485 489, 3486 /**/ 3487 488, 3488 /**/ 3489 487, 3490 /**/ 3491 486, 3492 /**/ 3493 485, 3494 /**/ 3495 484, 3496 /**/ 3497 483, 3498 /**/ 3499 482, 3500 /**/ 3501 481, 3502 /**/ 3503 480, 3504 /**/ 3505 479, 3506 /**/ 3507 478, 3508 /**/ 3509 477, 3510 /**/ 3511 476, 3512 /**/ 3513 475, 3514 /**/ 3515 474, 3516 /**/ 3517 473, 3518 /**/ 3519 472, 3520 /**/ 3521 471, 3522 /**/ 3523 470, 3524 /**/ 3525 469, 3526 /**/ 3527 468, 3528 /**/ 3529 467, 3530 /**/ 3531 466, 3532 /**/ 3533 465, 3534 /**/ 3535 464, 3536 /**/ 3537 463, 3538 /**/ 3539 462, 3540 /**/ 3541 461, 3542 /**/ 3543 460, 3544 /**/ 3545 459, 3546 /**/ 3547 458, 3548 /**/ 3549 457, 3550 /**/ 3551 456, 3552 /**/ 3553 455, 3554 /**/ 3555 454, 3556 /**/ 3557 453, 3558 /**/ 3559 452, 3560 /**/ 3561 451, 3562 /**/ 3563 450, 3564 /**/ 3565 449, 3566 /**/ 3567 448, 3568 /**/ 3569 447, 3570 /**/ 3571 446, 3572 /**/ 3573 445, 3574 /**/ 3575 444, 3576 /**/ 3577 443, 3578 /**/ 3579 442, 3580 /**/ 3581 441, 3582 /**/ 3583 440, 3584 /**/ 3585 439, 3586 /**/ 3587 438, 3588 /**/ 3589 437, 3590 /**/ 3591 436, 3592 /**/ 3593 435, 3594 /**/ 3595 434, 3596 /**/ 3597 433, 3598 /**/ 3599 432, 3600 /**/ 3601 431, 3602 /**/ 3603 430, 3604 /**/ 3605 429, 3606 /**/ 3607 428, 3608 /**/ 3609 427, 3610 /**/ 3611 426, 3612 /**/ 3613 425, 3614 /**/ 3615 424, 3616 /**/ 3617 423, 3618 /**/ 3619 422, 3620 /**/ 3621 421, 3622 /**/ 3623 420, 3624 /**/ 3625 419, 3626 /**/ 3627 418, 3628 /**/ 3629 417, 3630 /**/ 3631 416, 3632 /**/ 3633 415, 3634 /**/ 3635 414, 3636 /**/ 3637 413, 3638 /**/ 3639 412, 3640 /**/ 3641 411, 3642 /**/ 3643 410, 3644 /**/ 3645 409, 3646 /**/ 3647 408, 3648 /**/ 3649 407, 3650 /**/ 3651 406, 3652 /**/ 3653 405, 3654 /**/ 3655 404, 3656 /**/ 3657 403, 3658 /**/ 3659 402, 3660 /**/ 3661 401, 3662 /**/ 3663 400, 3664 /**/ 3665 399, 3666 /**/ 3667 398, 3668 /**/ 3669 397, 3670 /**/ 3671 396, 3672 /**/ 3673 395, 3674 /**/ 3675 394, 3676 /**/ 3677 393, 3678 /**/ 3679 392, 3680 /**/ 3681 391, 3682 /**/ 3683 390, 3684 /**/ 3685 389, 3686 /**/ 3687 388, 3688 /**/ 3689 387, 3690 /**/ 3691 386, 3692 /**/ 3693 385, 3694 /**/ 3695 384, 3696 /**/ 3697 383, 3698 /**/ 3699 382, 3700 /**/ 3701 381, 3702 /**/ 3703 380, 3704 /**/ 3705 379, 3706 /**/ 3707 378, 3708 /**/ 3709 377, 3710 /**/ 3711 376, 3712 /**/ 3713 375, 3714 /**/ 3715 374, 3716 /**/ 3717 373, 3718 /**/ 3719 372, 3720 /**/ 3721 371, 3722 /**/ 3723 370, 3724 /**/ 3725 369, 3726 /**/ 3727 368, 3728 /**/ 3729 367, 3730 /**/ 3731 366, 3732 /**/ 3733 365, 3734 /**/ 3735 364, 3736 /**/ 3737 363, 3738 /**/ 3739 362, 3740 /**/ 3741 361, 3742 /**/ 3743 360, 3744 /**/ 3745 359, 3746 /**/ 3747 358, 3748 /**/ 3749 357, 3750 /**/ 3751 356, 3752 /**/ 3753 355, 3754 /**/ 3755 354, 3756 /**/ 3757 353, 3758 /**/ 3759 352, 3760 /**/ 3761 351, 3762 /**/ 3763 350, 3764 /**/ 3765 349, 3766 /**/ 3767 348, 3768 /**/ 3769 347, 3770 /**/ 3771 346, 3772 /**/ 3773 345, 3774 /**/ 3775 344, 3776 /**/ 3777 343, 3778 /**/ 3779 342, 3780 /**/ 3781 341, 3782 /**/ 3783 340, 3784 /**/ 3785 339, 3786 /**/ 3787 338, 3788 /**/ 3789 337, 3790 /**/ 3791 336, 3792 /**/ 3793 335, 3794 /**/ 3795 334, 3796 /**/ 3797 333, 3798 /**/ 3799 332, 3800 /**/ 3801 331, 3802 /**/ 3803 330, 3804 /**/ 3805 329, 3806 /**/ 3807 328, 3808 /**/ 3809 327, 3810 /**/ 3811 326, 3812 /**/ 3813 325, 3814 /**/ 3815 324, 3816 /**/ 3817 323, 3818 /**/ 3819 322, 3820 /**/ 3821 321, 3822 /**/ 3823 320, 3824 /**/ 3825 319, 3826 /**/ 3827 318, 3828 /**/ 3829 317, 3830 /**/ 3831 316, 3832 /**/ 3833 315, 3834 /**/ 3835 314, 3836 /**/ 3837 313, 3838 /**/ 3839 312, 3840 /**/ 3841 311, 3842 /**/ 3843 310, 3844 /**/ 3845 309, 3846 /**/ 3847 308, 3848 /**/ 3849 307, 3850 /**/ 3851 306, 3852 /**/ 3853 305, 3854 /**/ 3855 304, 3856 /**/ 3857 303, 3858 /**/ 3859 302, 3860 /**/ 3861 301, 3862 /**/ 3863 300, 3864 /**/ 3865 299, 3866 /**/ 3867 298, 3868 /**/ 3869 297, 3870 /**/ 3871 296, 3872 /**/ 3873 295, 3874 /**/ 3875 294, 3876 /**/ 3877 293, 3878 /**/ 3879 292, 3880 /**/ 3881 291, 3882 /**/ 3883 290, 3884 /**/ 3885 289, 3886 /**/ 3887 288, 3888 /**/ 3889 287, 3890 /**/ 3891 286, 3892 /**/ 3893 285, 3894 /**/ 3895 284, 3896 /**/ 3897 283, 3898 /**/ 3899 282, 3900 /**/ 3901 281, 3902 /**/ 3903 280, 3904 /**/ 3905 279, 3906 /**/ 3907 278, 3908 /**/ 3909 277, 3910 /**/ 3911 276, 3912 /**/ 3913 275, 3914 /**/ 3915 274, 3916 /**/ 3917 273, 3918 /**/ 3919 272, 3920 /**/ 3921 271, 3922 /**/ 3923 270, 3924 /**/ 3925 269, 3926 /**/ 3927 268, 3928 /**/ 3929 267, 3930 /**/ 3931 266, 3932 /**/ 3933 265, 3934 /**/ 3935 264, 3936 /**/ 3937 263, 3938 /**/ 3939 262, 3940 /**/ 3941 261, 3942 /**/ 3943 260, 3944 /**/ 3945 259, 3946 /**/ 3947 258, 3948 /**/ 3949 257, 3950 /**/ 3951 256, 3952 /**/ 3953 255, 3954 /**/ 3955 254, 3956 /**/ 3957 253, 3958 /**/ 3959 252, 3960 /**/ 3961 251, 3962 /**/ 3963 250, 3964 /**/ 3965 249, 3966 /**/ 3967 248, 3968 /**/ 3969 247, 3970 /**/ 3971 246, 3972 /**/ 3973 245, 3974 /**/ 3975 244, 3976 /**/ 3977 243, 3978 /**/ 3979 242, 3980 /**/ 3981 241, 3982 /**/ 3983 240, 3984 /**/ 3985 239, 3986 /**/ 3987 238, 3988 /**/ 3989 237, 3990 /**/ 3991 236, 3992 /**/ 3993 235, 3994 /**/ 3995 234, 3996 /**/ 3997 233, 3998 /**/ 3999 232, 4000 /**/ 4001 231, 4002 /**/ 4003 230, 4004 /**/ 4005 229, 4006 /**/ 4007 228, 4008 /**/ 4009 227, 4010 /**/ 4011 226, 4012 /**/ 4013 225, 4014 /**/ 4015 224, 4016 /**/ 4017 223, 4018 /**/ 4019 222, 4020 /**/ 4021 221, 4022 /**/ 4023 220, 4024 /**/ 4025 219, 4026 /**/ 4027 218, 4028 /**/ 4029 217, 4030 /**/ 4031 216, 4032 /**/ 4033 215, 4034 /**/ 4035 214, 4036 /**/ 4037 213, 4038 /**/ 4039 212, 4040 /**/ 4041 211, 4042 /**/ 4043 210, 4044 /**/ 4045 209, 4046 /**/ 4047 208, 4048 /**/ 4049 207, 4050 /**/ 4051 206, 4052 /**/ 4053 205, 4054 /**/ 4055 204, 4056 /**/ 4057 203, 4058 /**/ 4059 202, 4060 /**/ 4061 201, 4062 /**/ 4063 200, 4064 /**/ 4065 199, 4066 /**/ 4067 198, 4068 /**/ 4069 197, 4070 /**/ 4071 196, 4072 /**/ 4073 195, 4074 /**/ 4075 194, 4076 /**/ 4077 193, 4078 /**/ 4079 192, 4080 /**/ 4081 191, 4082 /**/ 4083 190, 4084 /**/ 4085 189, 4086 /**/ 4087 188, 4088 /**/ 4089 187, 4090 /**/ 4091 186, 4092 /**/ 4093 185, 4094 /**/ 4095 184, 4096 /**/ 4097 183, 4098 /**/ 4099 182, 4100 /**/ 4101 181, 4102 /**/ 4103 180, 4104 /**/ 4105 179, 4106 /**/ 4107 178, 4108 /**/ 4109 177, 4110 /**/ 4111 176, 4112 /**/ 4113 175, 4114 /**/ 4115 174, 4116 /**/ 4117 173, 4118 /**/ 4119 172, 4120 /**/ 4121 171, 4122 /**/ 4123 170, 4124 /**/ 4125 169, 4126 /**/ 4127 168, 4128 /**/ 4129 167, 4130 /**/ 4131 166, 4132 /**/ 4133 165, 4134 /**/ 4135 164, 4136 /**/ 4137 163, 4138 /**/ 4139 162, 4140 /**/ 4141 161, 4142 /**/ 4143 160, 4144 /**/ 4145 159, 4146 /**/ 4147 158, 4148 /**/ 4149 157, 4150 /**/ 4151 156, 4152 /**/ 4153 155, 4154 /**/ 4155 154, 4156 /**/ 4157 153, 4158 /**/ 4159 152, 4160 /**/ 4161 151, 4162 /**/ 4163 150, 4164 /**/ 4165 149, 4166 /**/ 4167 148, 4168 /**/ 4169 147, 4170 /**/ 4171 146, 4172 /**/ 4173 145, 4174 /**/ 4175 144, 4176 /**/ 4177 143, 4178 /**/ 4179 142, 4180 /**/ 4181 141, 4182 /**/ 4183 140, 4184 /**/ 4185 139, 4186 /**/ 4187 138, 4188 /**/ 4189 137, 4190 /**/ 4191 136, 4192 /**/ 4193 135, 4194 /**/ 4195 134, 4196 /**/ 4197 133, 4198 /**/ 4199 132, 4200 /**/ 4201 131, 4202 /**/ 4203 130, 4204 /**/ 4205 129, 4206 /**/ 4207 128, 4208 /**/ 4209 127, 4210 /**/ 4211 126, 4212 /**/ 4213 125, 4214 /**/ 4215 124, 4216 /**/ 4217 123, 4218 /**/ 4219 122, 4220 /**/ 4221 121, 4222 /**/ 4223 120, 4224 /**/ 4225 119, 4226 /**/ 4227 118, 4228 /**/ 4229 117, 4230 /**/ 4231 116, 4232 /**/ 4233 115, 4234 /**/ 4235 114, 4236 /**/ 4237 113, 4238 /**/ 4239 112, 4240 /**/ 4241 111, 4242 /**/ 4243 110, 4244 /**/ 4245 109, 4246 /**/ 4247 108, 4248 /**/ 4249 107, 4250 /**/ 4251 106, 4252 /**/ 4253 105, 4254 /**/ 4255 104, 4256 /**/ 4257 103, 4258 /**/ 4259 102, 4260 /**/ 4261 101, 4262 /**/ 4263 100, 4264 /**/ 4265 99, 4266 /**/ 4267 98, 4268 /**/ 4269 97, 4270 /**/ 4271 96, 4272 /**/ 4273 95, 4274 /**/ 4275 94, 4276 /**/ 4277 93, 4278 /**/ 4279 92, 4280 /**/ 4281 91, 4282 /**/ 4283 90, 4284 /**/ 4285 89, 4286 /**/ 4287 88, 4288 /**/ 4289 87, 4290 /**/ 4291 86, 4292 /**/ 4293 85, 4294 /**/ 4295 84, 4296 /**/ 4297 83, 4298 /**/ 4299 82, 4300 /**/ 4301 81, 4302 /**/ 4303 80, 4304 /**/ 4305 79, 4306 /**/ 4307 78, 4308 /**/ 4309 77, 4310 /**/ 4311 76, 4312 /**/ 4313 75, 4314 /**/ 4315 74, 4316 /**/ 4317 73, 4318 /**/ 4319 72, 4320 /**/ 4321 71, 4322 /**/ 4323 70, 4324 /**/ 4325 69, 4326 /**/ 4327 68, 4328 /**/ 4329 67, 4330 /**/ 4331 66, 4332 /**/ 4333 65, 4334 /**/ 4335 64, 4336 /**/ 4337 63, 4338 /**/ 4339 62, 4340 /**/ 4341 61, 4342 /**/ 4343 60, 4344 /**/ 4345 59, 4346 /**/ 4347 58, 4348 /**/ 4349 57, 4350 /**/ 4351 56, 4352 /**/ 4353 55, 4354 /**/ 4355 54, 4356 /**/ 4357 53, 4358 /**/ 4359 52, 4360 /**/ 4361 51, 4362 /**/ 4363 50, 4364 /**/ 4365 49, 4366 /**/ 4367 48, 4368 /**/ 4369 47, 4370 /**/ 4371 46, 4372 /**/ 4373 45, 4374 /**/ 4375 44, 4376 /**/ 4377 43, 4378 /**/ 4379 42, 4380 /**/ 4381 41, 4382 /**/ 4383 40, 4384 /**/ 4385 39, 4386 /**/ 4387 38, 4388 /**/ 4389 37, 4390 /**/ 4391 36, 4392 /**/ 4393 35, 4394 /**/ 4395 34, 4396 /**/ 4397 33, 4398 /**/ 4399 32, 4400 /**/ 4401 31, 4402 /**/ 4403 30, 4404 /**/ 4405 29, 4406 /**/ 4407 28, 4408 /**/ 4409 27, 4410 /**/ 4411 26, 4412 /**/ 4413 25, 4414 /**/ 4415 24, 4416 /**/ 4417 23, 4418 /**/ 4419 22, 4420 /**/ 4421 21, 4422 /**/ 4423 20, 4424 /**/ 4425 19, 4426 /**/ 4427 18, 4428 /**/ 4429 17, 4430 /**/ 4431 16, 4432 /**/ 4433 15, 4434 /**/ 4435 14, 4436 /**/ 4437 13, 4438 /**/ 4439 12, 4440 /**/ 4441 11, 4442 /**/ 4443 10, 4444 /**/ 4445 9, 4446 /**/ 4447 8, 4448 /**/ 4449 7, 4450 /**/ 4451 6, 4452 /**/ 4453 5, 4454 /**/ 4455 4, 4456 /**/ 4457 3, 4458 /**/ 4459 2, 4460 /**/ 4461 1, 4462 /**/ 4463 0 4464 }; 4465 4466 /* 4467 * Place to put a short description when adding a feature with a patch. 4468 * Keep it short, e.g.,: "relative numbers", "persistent undo". 4469 * Also add a comment marker to separate the lines. 4470 * See the official Vim patches for the diff format: It must use a context of 4471 * one line only. Create it by hand or use "diff -C2" and edit the patch. 4472 */ 4473 static char *(extra_patches[]) = 4474 { /* Add your patch description below this line */ 4475 /**/ 4476 NULL 4477 }; 4478 4479 int 4480 highest_patch(void) 4481 { 4482 int i; 4483 int h = 0; 4484 4485 for (i = 0; included_patches[i] != 0; ++i) 4486 if (included_patches[i] > h) 4487 h = included_patches[i]; 4488 return h; 4489 } 4490 4491 #if defined(FEAT_EVAL) || defined(PROTO) 4492 /* 4493 * Return TRUE if patch "n" has been included. 4494 */ 4495 int 4496 has_patch(int n) 4497 { 4498 int i; 4499 4500 for (i = 0; included_patches[i] != 0; ++i) 4501 if (included_patches[i] == n) 4502 return TRUE; 4503 return FALSE; 4504 } 4505 #endif 4506 4507 void 4508 ex_version(exarg_T *eap) 4509 { 4510 /* 4511 * Ignore a ":version 9.99" command. 4512 */ 4513 if (*eap->arg == NUL) 4514 { 4515 msg_putchar('\n'); 4516 list_version(); 4517 } 4518 } 4519 4520 /* 4521 * Output a string for the version message. If it's going to wrap, output a 4522 * newline, unless the message is too long to fit on the screen anyway. 4523 * When "wrap" is TRUE wrap the string in []. 4524 */ 4525 static void 4526 version_msg_wrap(char_u *s, int wrap) 4527 { 4528 int len = (int)vim_strsize(s) + (wrap ? 2 : 0); 4529 4530 if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns 4531 && *s != '\n') 4532 msg_putchar('\n'); 4533 if (!got_int) 4534 { 4535 if (wrap) 4536 MSG_PUTS("["); 4537 MSG_PUTS(s); 4538 if (wrap) 4539 MSG_PUTS("]"); 4540 } 4541 } 4542 4543 static void 4544 version_msg(char *s) 4545 { 4546 version_msg_wrap((char_u *)s, FALSE); 4547 } 4548 4549 /* 4550 * List all features aligned in columns, dictionary style. 4551 */ 4552 static void 4553 list_features(void) 4554 { 4555 list_in_columns((char_u **)features, -1, -1); 4556 } 4557 4558 /* 4559 * List string items nicely aligned in columns. 4560 * When "size" is < 0 then the last entry is marked with NULL. 4561 * The entry with index "current" is inclosed in []. 4562 */ 4563 void 4564 list_in_columns(char_u **items, int size, int current) 4565 { 4566 int i; 4567 int ncol; 4568 int nrow; 4569 int item_count = 0; 4570 int width = 0; 4571 4572 /* Find the length of the longest item, use that + 1 as the column 4573 * width. */ 4574 for (i = 0; size < 0 ? items[i] != NULL : i < size; ++i) 4575 { 4576 int l = (int)vim_strsize(items[i]) + (i == current ? 2 : 0); 4577 4578 if (l > width) 4579 width = l; 4580 ++item_count; 4581 } 4582 width += 1; 4583 4584 if (Columns < width) 4585 { 4586 /* Not enough screen columns - show one per line */ 4587 for (i = 0; items[i] != NULL; ++i) 4588 { 4589 version_msg_wrap(items[i], i == current); 4590 if (msg_col > 0) 4591 msg_putchar('\n'); 4592 } 4593 return; 4594 } 4595 4596 /* The rightmost column doesn't need a separator. 4597 * Sacrifice it to fit in one more column if possible. */ 4598 ncol = (int) (Columns + 1) / width; 4599 nrow = item_count / ncol + (item_count % ncol ? 1 : 0); 4600 4601 /* i counts columns then rows. idx counts rows then columns. */ 4602 for (i = 0; !got_int && i < nrow * ncol; ++i) 4603 { 4604 int idx = (i / ncol) + (i % ncol) * nrow; 4605 4606 if (idx < item_count) 4607 { 4608 int last_col = (i + 1) % ncol == 0; 4609 4610 if (idx == current) 4611 msg_putchar('['); 4612 msg_puts(items[idx]); 4613 if (idx == current) 4614 msg_putchar(']'); 4615 if (last_col) 4616 { 4617 if (msg_col > 0) 4618 msg_putchar('\n'); 4619 } 4620 else 4621 { 4622 while (msg_col % width) 4623 msg_putchar(' '); 4624 } 4625 } 4626 else 4627 { 4628 if (msg_col > 0) 4629 msg_putchar('\n'); 4630 } 4631 } 4632 } 4633 4634 void 4635 list_version(void) 4636 { 4637 int i; 4638 int first; 4639 char *s = ""; 4640 4641 /* 4642 * When adding features here, don't forget to update the list of 4643 * internal variables in eval.c! 4644 */ 4645 MSG(longVersion); 4646 #ifdef WIN3264 4647 # ifdef FEAT_GUI_W32 4648 # ifdef _WIN64 4649 MSG_PUTS(_("\nMS-Windows 64-bit GUI version")); 4650 # else 4651 MSG_PUTS(_("\nMS-Windows 32-bit GUI version")); 4652 # endif 4653 # ifdef FEAT_OLE 4654 MSG_PUTS(_(" with OLE support")); 4655 # endif 4656 # else 4657 # ifdef _WIN64 4658 MSG_PUTS(_("\nMS-Windows 64-bit console version")); 4659 # else 4660 MSG_PUTS(_("\nMS-Windows 32-bit console version")); 4661 # endif 4662 # endif 4663 #endif 4664 #if defined(MACOS_X) 4665 # if defined(MACOS_X_DARWIN) 4666 MSG_PUTS(_("\nmacOS version")); 4667 # else 4668 MSG_PUTS(_("\nmacOS version w/o darwin feat.")); 4669 # endif 4670 #endif 4671 4672 #ifdef VMS 4673 MSG_PUTS(_("\nOpenVMS version")); 4674 # ifdef HAVE_PATHDEF 4675 if (*compiled_arch != NUL) 4676 { 4677 MSG_PUTS(" - "); 4678 MSG_PUTS(compiled_arch); 4679 } 4680 # endif 4681 4682 #endif 4683 4684 /* Print the list of patch numbers if there is at least one. */ 4685 /* Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45" */ 4686 if (included_patches[0] != 0) 4687 { 4688 MSG_PUTS(_("\nIncluded patches: ")); 4689 first = -1; 4690 /* find last one */ 4691 for (i = 0; included_patches[i] != 0; ++i) 4692 ; 4693 while (--i >= 0) 4694 { 4695 if (first < 0) 4696 first = included_patches[i]; 4697 if (i == 0 || included_patches[i - 1] != included_patches[i] + 1) 4698 { 4699 MSG_PUTS(s); 4700 s = ", "; 4701 msg_outnum((long)first); 4702 if (first != included_patches[i]) 4703 { 4704 MSG_PUTS("-"); 4705 msg_outnum((long)included_patches[i]); 4706 } 4707 first = -1; 4708 } 4709 } 4710 } 4711 4712 /* Print the list of extra patch descriptions if there is at least one. */ 4713 if (extra_patches[0] != NULL) 4714 { 4715 MSG_PUTS(_("\nExtra patches: ")); 4716 s = ""; 4717 for (i = 0; extra_patches[i] != NULL; ++i) 4718 { 4719 MSG_PUTS(s); 4720 s = ", "; 4721 MSG_PUTS(extra_patches[i]); 4722 } 4723 } 4724 4725 #ifdef MODIFIED_BY 4726 MSG_PUTS("\n"); 4727 MSG_PUTS(_("Modified by ")); 4728 MSG_PUTS(MODIFIED_BY); 4729 #endif 4730 4731 #ifdef HAVE_PATHDEF 4732 if (*compiled_user != NUL || *compiled_sys != NUL) 4733 { 4734 MSG_PUTS(_("\nCompiled ")); 4735 if (*compiled_user != NUL) 4736 { 4737 MSG_PUTS(_("by ")); 4738 MSG_PUTS(compiled_user); 4739 } 4740 if (*compiled_sys != NUL) 4741 { 4742 MSG_PUTS("@"); 4743 MSG_PUTS(compiled_sys); 4744 } 4745 } 4746 #endif 4747 4748 #ifdef FEAT_HUGE 4749 MSG_PUTS(_("\nHuge version ")); 4750 #else 4751 # ifdef FEAT_BIG 4752 MSG_PUTS(_("\nBig version ")); 4753 # else 4754 # ifdef FEAT_NORMAL 4755 MSG_PUTS(_("\nNormal version ")); 4756 # else 4757 # ifdef FEAT_SMALL 4758 MSG_PUTS(_("\nSmall version ")); 4759 # else 4760 MSG_PUTS(_("\nTiny version ")); 4761 # endif 4762 # endif 4763 # endif 4764 #endif 4765 #ifndef FEAT_GUI 4766 MSG_PUTS(_("without GUI.")); 4767 #else 4768 # ifdef FEAT_GUI_GTK 4769 # ifdef USE_GTK3 4770 MSG_PUTS(_("with GTK3 GUI.")); 4771 # else 4772 # ifdef FEAT_GUI_GNOME 4773 MSG_PUTS(_("with GTK2-GNOME GUI.")); 4774 # else 4775 MSG_PUTS(_("with GTK2 GUI.")); 4776 # endif 4777 # endif 4778 # else 4779 # ifdef FEAT_GUI_MOTIF 4780 MSG_PUTS(_("with X11-Motif GUI.")); 4781 # else 4782 # ifdef FEAT_GUI_ATHENA 4783 # ifdef FEAT_GUI_NEXTAW 4784 MSG_PUTS(_("with X11-neXtaw GUI.")); 4785 # else 4786 MSG_PUTS(_("with X11-Athena GUI.")); 4787 # endif 4788 # else 4789 # ifdef FEAT_GUI_PHOTON 4790 MSG_PUTS(_("with Photon GUI.")); 4791 # else 4792 # if defined(MSWIN) 4793 MSG_PUTS(_("with GUI.")); 4794 # else 4795 # if defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON 4796 MSG_PUTS(_("with Carbon GUI.")); 4797 # else 4798 # if defined(TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX 4799 MSG_PUTS(_("with Cocoa GUI.")); 4800 # else 4801 # endif 4802 # endif 4803 # endif 4804 # endif 4805 # endif 4806 # endif 4807 # endif 4808 #endif 4809 version_msg(_(" Features included (+) or not (-):\n")); 4810 4811 list_features(); 4812 4813 #ifdef SYS_VIMRC_FILE 4814 version_msg(_(" system vimrc file: \"")); 4815 version_msg(SYS_VIMRC_FILE); 4816 version_msg("\"\n"); 4817 #endif 4818 #ifdef USR_VIMRC_FILE 4819 version_msg(_(" user vimrc file: \"")); 4820 version_msg(USR_VIMRC_FILE); 4821 version_msg("\"\n"); 4822 #endif 4823 #ifdef USR_VIMRC_FILE2 4824 version_msg(_(" 2nd user vimrc file: \"")); 4825 version_msg(USR_VIMRC_FILE2); 4826 version_msg("\"\n"); 4827 #endif 4828 #ifdef USR_VIMRC_FILE3 4829 version_msg(_(" 3rd user vimrc file: \"")); 4830 version_msg(USR_VIMRC_FILE3); 4831 version_msg("\"\n"); 4832 #endif 4833 #ifdef USR_EXRC_FILE 4834 version_msg(_(" user exrc file: \"")); 4835 version_msg(USR_EXRC_FILE); 4836 version_msg("\"\n"); 4837 #endif 4838 #ifdef USR_EXRC_FILE2 4839 version_msg(_(" 2nd user exrc file: \"")); 4840 version_msg(USR_EXRC_FILE2); 4841 version_msg("\"\n"); 4842 #endif 4843 #ifdef FEAT_GUI 4844 # ifdef SYS_GVIMRC_FILE 4845 version_msg(_(" system gvimrc file: \"")); 4846 version_msg(SYS_GVIMRC_FILE); 4847 version_msg("\"\n"); 4848 # endif 4849 version_msg(_(" user gvimrc file: \"")); 4850 version_msg(USR_GVIMRC_FILE); 4851 version_msg("\"\n"); 4852 # ifdef USR_GVIMRC_FILE2 4853 version_msg(_("2nd user gvimrc file: \"")); 4854 version_msg(USR_GVIMRC_FILE2); 4855 version_msg("\"\n"); 4856 # endif 4857 # ifdef USR_GVIMRC_FILE3 4858 version_msg(_("3rd user gvimrc file: \"")); 4859 version_msg(USR_GVIMRC_FILE3); 4860 version_msg("\"\n"); 4861 # endif 4862 #endif 4863 version_msg(_(" defaults file: \"")); 4864 version_msg(VIM_DEFAULTS_FILE); 4865 version_msg("\"\n"); 4866 #ifdef FEAT_GUI 4867 # ifdef SYS_MENU_FILE 4868 version_msg(_(" system menu file: \"")); 4869 version_msg(SYS_MENU_FILE); 4870 version_msg("\"\n"); 4871 # endif 4872 #endif 4873 #ifdef HAVE_PATHDEF 4874 if (*default_vim_dir != NUL) 4875 { 4876 version_msg(_(" fall-back for $VIM: \"")); 4877 version_msg((char *)default_vim_dir); 4878 version_msg("\"\n"); 4879 } 4880 if (*default_vimruntime_dir != NUL) 4881 { 4882 version_msg(_(" f-b for $VIMRUNTIME: \"")); 4883 version_msg((char *)default_vimruntime_dir); 4884 version_msg("\"\n"); 4885 } 4886 version_msg(_("Compilation: ")); 4887 version_msg((char *)all_cflags); 4888 version_msg("\n"); 4889 #ifdef VMS 4890 if (*compiler_version != NUL) 4891 { 4892 version_msg(_("Compiler: ")); 4893 version_msg((char *)compiler_version); 4894 version_msg("\n"); 4895 } 4896 #endif 4897 version_msg(_("Linking: ")); 4898 version_msg((char *)all_lflags); 4899 #endif 4900 #ifdef DEBUG 4901 version_msg("\n"); 4902 version_msg(_(" DEBUG BUILD")); 4903 #endif 4904 } 4905 4906 static void do_intro_line(int row, char_u *mesg, int add_version, int attr); 4907 4908 /* 4909 * Show the intro message when not editing a file. 4910 */ 4911 void 4912 maybe_intro_message(void) 4913 { 4914 if (BUFEMPTY() 4915 && curbuf->b_fname == NULL 4916 && firstwin->w_next == NULL 4917 && vim_strchr(p_shm, SHM_INTRO) == NULL) 4918 intro_message(FALSE); 4919 } 4920 4921 /* 4922 * Give an introductory message about Vim. 4923 * Only used when starting Vim on an empty file, without a file name. 4924 * Or with the ":intro" command (for Sven :-). 4925 */ 4926 void 4927 intro_message( 4928 int colon) /* TRUE for ":intro" */ 4929 { 4930 int i; 4931 int row; 4932 int blanklines; 4933 int sponsor; 4934 char *p; 4935 static char *(lines[]) = 4936 { 4937 N_("VIM - Vi IMproved"), 4938 "", 4939 N_("version "), 4940 N_("by Bram Moolenaar et al."), 4941 #ifdef MODIFIED_BY 4942 " ", 4943 #endif 4944 N_("Vim is open source and freely distributable"), 4945 "", 4946 N_("Help poor children in Uganda!"), 4947 N_("type :help iccf<Enter> for information "), 4948 "", 4949 N_("type :q<Enter> to exit "), 4950 N_("type :help<Enter> or <F1> for on-line help"), 4951 N_("type :help version8<Enter> for version info"), 4952 NULL, 4953 "", 4954 N_("Running in Vi compatible mode"), 4955 N_("type :set nocp<Enter> for Vim defaults"), 4956 N_("type :help cp-default<Enter> for info on this"), 4957 }; 4958 #ifdef FEAT_GUI 4959 static char *(gui_lines[]) = 4960 { 4961 NULL, 4962 NULL, 4963 NULL, 4964 NULL, 4965 #ifdef MODIFIED_BY 4966 NULL, 4967 #endif 4968 NULL, 4969 NULL, 4970 NULL, 4971 N_("menu Help->Orphans for information "), 4972 NULL, 4973 N_("Running modeless, typed text is inserted"), 4974 N_("menu Edit->Global Settings->Toggle Insert Mode "), 4975 N_(" for two modes "), 4976 NULL, 4977 NULL, 4978 NULL, 4979 N_("menu Edit->Global Settings->Toggle Vi Compatible"), 4980 N_(" for Vim defaults "), 4981 }; 4982 #endif 4983 4984 /* blanklines = screen height - # message lines */ 4985 blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1); 4986 if (!p_cp) 4987 blanklines += 4; /* add 4 for not showing "Vi compatible" message */ 4988 4989 /* Don't overwrite a statusline. Depends on 'cmdheight'. */ 4990 if (p_ls > 1) 4991 blanklines -= Rows - topframe->fr_height; 4992 if (blanklines < 0) 4993 blanklines = 0; 4994 4995 /* Show the sponsor and register message one out of four times, the Uganda 4996 * message two out of four times. */ 4997 sponsor = (int)time(NULL); 4998 sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0); 4999 5000 /* start displaying the message lines after half of the blank lines */ 5001 row = blanklines / 2; 5002 if ((row >= 2 && Columns >= 50) || colon) 5003 { 5004 for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i) 5005 { 5006 p = lines[i]; 5007 #ifdef FEAT_GUI 5008 if (p_im && gui.in_use && gui_lines[i] != NULL) 5009 p = gui_lines[i]; 5010 #endif 5011 if (p == NULL) 5012 { 5013 if (!p_cp) 5014 break; 5015 continue; 5016 } 5017 if (sponsor != 0) 5018 { 5019 if (strstr(p, "children") != NULL) 5020 p = sponsor < 0 5021 ? N_("Sponsor Vim development!") 5022 : N_("Become a registered Vim user!"); 5023 else if (strstr(p, "iccf") != NULL) 5024 p = sponsor < 0 5025 ? N_("type :help sponsor<Enter> for information ") 5026 : N_("type :help register<Enter> for information "); 5027 else if (strstr(p, "Orphans") != NULL) 5028 p = N_("menu Help->Sponsor/Register for information "); 5029 } 5030 if (*p != NUL) 5031 do_intro_line(row, (char_u *)_(p), i == 2, 0); 5032 ++row; 5033 } 5034 } 5035 5036 /* Make the wait-return message appear just below the text. */ 5037 if (colon) 5038 msg_row = row; 5039 } 5040 5041 static void 5042 do_intro_line( 5043 int row, 5044 char_u *mesg, 5045 int add_version, 5046 int attr) 5047 { 5048 char_u vers[20]; 5049 int col; 5050 char_u *p; 5051 int l; 5052 int clen; 5053 #ifdef MODIFIED_BY 5054 # define MODBY_LEN 150 5055 char_u modby[MODBY_LEN]; 5056 5057 if (*mesg == ' ') 5058 { 5059 vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1); 5060 l = (int)STRLEN(modby); 5061 vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1); 5062 mesg = modby; 5063 } 5064 #endif 5065 5066 /* Center the message horizontally. */ 5067 col = vim_strsize(mesg); 5068 if (add_version) 5069 { 5070 STRCPY(vers, mediumVersion); 5071 if (highest_patch()) 5072 { 5073 /* Check for 9.9x or 9.9xx, alpha/beta version */ 5074 if (isalpha((int)vers[3])) 5075 { 5076 int len = (isalpha((int)vers[4])) ? 5 : 4; 5077 sprintf((char *)vers + len, ".%d%s", highest_patch(), 5078 mediumVersion + len); 5079 } 5080 else 5081 sprintf((char *)vers + 3, ".%d", highest_patch()); 5082 } 5083 col += (int)STRLEN(vers); 5084 } 5085 col = (Columns - col) / 2; 5086 if (col < 0) 5087 col = 0; 5088 5089 /* Split up in parts to highlight <> items differently. */ 5090 for (p = mesg; *p != NUL; p += l) 5091 { 5092 clen = 0; 5093 for (l = 0; p[l] != NUL 5094 && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l) 5095 { 5096 #ifdef FEAT_MBYTE 5097 if (has_mbyte) 5098 { 5099 clen += ptr2cells(p + l); 5100 l += (*mb_ptr2len)(p + l) - 1; 5101 } 5102 else 5103 #endif 5104 clen += byte2cells(p[l]); 5105 } 5106 screen_puts_len(p, l, row, col, *p == '<' ? HL_ATTR(HLF_8) : attr); 5107 col += clen; 5108 } 5109 5110 /* Add the version number to the version line. */ 5111 if (add_version) 5112 screen_puts(vers, row, col, 0); 5113 } 5114 5115 /* 5116 * ":intro": clear screen, display intro screen and wait for return. 5117 */ 5118 void 5119 ex_intro(exarg_T *eap UNUSED) 5120 { 5121 screenclear(); 5122 intro_message(TRUE); 5123 wait_return(TRUE); 5124 } 5125