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