xref: /vim-8.2.3635/src/version.c (revision 809fcecd)
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