xref: /vim-8.2.3635/src/version.c (revision d2ea7cf1)
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     2913,
755 /**/
756     2912,
757 /**/
758     2911,
759 /**/
760     2910,
761 /**/
762     2909,
763 /**/
764     2908,
765 /**/
766     2907,
767 /**/
768     2906,
769 /**/
770     2905,
771 /**/
772     2904,
773 /**/
774     2903,
775 /**/
776     2902,
777 /**/
778     2901,
779 /**/
780     2900,
781 /**/
782     2899,
783 /**/
784     2898,
785 /**/
786     2897,
787 /**/
788     2896,
789 /**/
790     2895,
791 /**/
792     2894,
793 /**/
794     2893,
795 /**/
796     2892,
797 /**/
798     2891,
799 /**/
800     2890,
801 /**/
802     2889,
803 /**/
804     2888,
805 /**/
806     2887,
807 /**/
808     2886,
809 /**/
810     2885,
811 /**/
812     2884,
813 /**/
814     2883,
815 /**/
816     2882,
817 /**/
818     2881,
819 /**/
820     2880,
821 /**/
822     2879,
823 /**/
824     2878,
825 /**/
826     2877,
827 /**/
828     2876,
829 /**/
830     2875,
831 /**/
832     2874,
833 /**/
834     2873,
835 /**/
836     2872,
837 /**/
838     2871,
839 /**/
840     2870,
841 /**/
842     2869,
843 /**/
844     2868,
845 /**/
846     2867,
847 /**/
848     2866,
849 /**/
850     2865,
851 /**/
852     2864,
853 /**/
854     2863,
855 /**/
856     2862,
857 /**/
858     2861,
859 /**/
860     2860,
861 /**/
862     2859,
863 /**/
864     2858,
865 /**/
866     2857,
867 /**/
868     2856,
869 /**/
870     2855,
871 /**/
872     2854,
873 /**/
874     2853,
875 /**/
876     2852,
877 /**/
878     2851,
879 /**/
880     2850,
881 /**/
882     2849,
883 /**/
884     2848,
885 /**/
886     2847,
887 /**/
888     2846,
889 /**/
890     2845,
891 /**/
892     2844,
893 /**/
894     2843,
895 /**/
896     2842,
897 /**/
898     2841,
899 /**/
900     2840,
901 /**/
902     2839,
903 /**/
904     2838,
905 /**/
906     2837,
907 /**/
908     2836,
909 /**/
910     2835,
911 /**/
912     2834,
913 /**/
914     2833,
915 /**/
916     2832,
917 /**/
918     2831,
919 /**/
920     2830,
921 /**/
922     2829,
923 /**/
924     2828,
925 /**/
926     2827,
927 /**/
928     2826,
929 /**/
930     2825,
931 /**/
932     2824,
933 /**/
934     2823,
935 /**/
936     2822,
937 /**/
938     2821,
939 /**/
940     2820,
941 /**/
942     2819,
943 /**/
944     2818,
945 /**/
946     2817,
947 /**/
948     2816,
949 /**/
950     2815,
951 /**/
952     2814,
953 /**/
954     2813,
955 /**/
956     2812,
957 /**/
958     2811,
959 /**/
960     2810,
961 /**/
962     2809,
963 /**/
964     2808,
965 /**/
966     2807,
967 /**/
968     2806,
969 /**/
970     2805,
971 /**/
972     2804,
973 /**/
974     2803,
975 /**/
976     2802,
977 /**/
978     2801,
979 /**/
980     2800,
981 /**/
982     2799,
983 /**/
984     2798,
985 /**/
986     2797,
987 /**/
988     2796,
989 /**/
990     2795,
991 /**/
992     2794,
993 /**/
994     2793,
995 /**/
996     2792,
997 /**/
998     2791,
999 /**/
1000     2790,
1001 /**/
1002     2789,
1003 /**/
1004     2788,
1005 /**/
1006     2787,
1007 /**/
1008     2786,
1009 /**/
1010     2785,
1011 /**/
1012     2784,
1013 /**/
1014     2783,
1015 /**/
1016     2782,
1017 /**/
1018     2781,
1019 /**/
1020     2780,
1021 /**/
1022     2779,
1023 /**/
1024     2778,
1025 /**/
1026     2777,
1027 /**/
1028     2776,
1029 /**/
1030     2775,
1031 /**/
1032     2774,
1033 /**/
1034     2773,
1035 /**/
1036     2772,
1037 /**/
1038     2771,
1039 /**/
1040     2770,
1041 /**/
1042     2769,
1043 /**/
1044     2768,
1045 /**/
1046     2767,
1047 /**/
1048     2766,
1049 /**/
1050     2765,
1051 /**/
1052     2764,
1053 /**/
1054     2763,
1055 /**/
1056     2762,
1057 /**/
1058     2761,
1059 /**/
1060     2760,
1061 /**/
1062     2759,
1063 /**/
1064     2758,
1065 /**/
1066     2757,
1067 /**/
1068     2756,
1069 /**/
1070     2755,
1071 /**/
1072     2754,
1073 /**/
1074     2753,
1075 /**/
1076     2752,
1077 /**/
1078     2751,
1079 /**/
1080     2750,
1081 /**/
1082     2749,
1083 /**/
1084     2748,
1085 /**/
1086     2747,
1087 /**/
1088     2746,
1089 /**/
1090     2745,
1091 /**/
1092     2744,
1093 /**/
1094     2743,
1095 /**/
1096     2742,
1097 /**/
1098     2741,
1099 /**/
1100     2740,
1101 /**/
1102     2739,
1103 /**/
1104     2738,
1105 /**/
1106     2737,
1107 /**/
1108     2736,
1109 /**/
1110     2735,
1111 /**/
1112     2734,
1113 /**/
1114     2733,
1115 /**/
1116     2732,
1117 /**/
1118     2731,
1119 /**/
1120     2730,
1121 /**/
1122     2729,
1123 /**/
1124     2728,
1125 /**/
1126     2727,
1127 /**/
1128     2726,
1129 /**/
1130     2725,
1131 /**/
1132     2724,
1133 /**/
1134     2723,
1135 /**/
1136     2722,
1137 /**/
1138     2721,
1139 /**/
1140     2720,
1141 /**/
1142     2719,
1143 /**/
1144     2718,
1145 /**/
1146     2717,
1147 /**/
1148     2716,
1149 /**/
1150     2715,
1151 /**/
1152     2714,
1153 /**/
1154     2713,
1155 /**/
1156     2712,
1157 /**/
1158     2711,
1159 /**/
1160     2710,
1161 /**/
1162     2709,
1163 /**/
1164     2708,
1165 /**/
1166     2707,
1167 /**/
1168     2706,
1169 /**/
1170     2705,
1171 /**/
1172     2704,
1173 /**/
1174     2703,
1175 /**/
1176     2702,
1177 /**/
1178     2701,
1179 /**/
1180     2700,
1181 /**/
1182     2699,
1183 /**/
1184     2698,
1185 /**/
1186     2697,
1187 /**/
1188     2696,
1189 /**/
1190     2695,
1191 /**/
1192     2694,
1193 /**/
1194     2693,
1195 /**/
1196     2692,
1197 /**/
1198     2691,
1199 /**/
1200     2690,
1201 /**/
1202     2689,
1203 /**/
1204     2688,
1205 /**/
1206     2687,
1207 /**/
1208     2686,
1209 /**/
1210     2685,
1211 /**/
1212     2684,
1213 /**/
1214     2683,
1215 /**/
1216     2682,
1217 /**/
1218     2681,
1219 /**/
1220     2680,
1221 /**/
1222     2679,
1223 /**/
1224     2678,
1225 /**/
1226     2677,
1227 /**/
1228     2676,
1229 /**/
1230     2675,
1231 /**/
1232     2674,
1233 /**/
1234     2673,
1235 /**/
1236     2672,
1237 /**/
1238     2671,
1239 /**/
1240     2670,
1241 /**/
1242     2669,
1243 /**/
1244     2668,
1245 /**/
1246     2667,
1247 /**/
1248     2666,
1249 /**/
1250     2665,
1251 /**/
1252     2664,
1253 /**/
1254     2663,
1255 /**/
1256     2662,
1257 /**/
1258     2661,
1259 /**/
1260     2660,
1261 /**/
1262     2659,
1263 /**/
1264     2658,
1265 /**/
1266     2657,
1267 /**/
1268     2656,
1269 /**/
1270     2655,
1271 /**/
1272     2654,
1273 /**/
1274     2653,
1275 /**/
1276     2652,
1277 /**/
1278     2651,
1279 /**/
1280     2650,
1281 /**/
1282     2649,
1283 /**/
1284     2648,
1285 /**/
1286     2647,
1287 /**/
1288     2646,
1289 /**/
1290     2645,
1291 /**/
1292     2644,
1293 /**/
1294     2643,
1295 /**/
1296     2642,
1297 /**/
1298     2641,
1299 /**/
1300     2640,
1301 /**/
1302     2639,
1303 /**/
1304     2638,
1305 /**/
1306     2637,
1307 /**/
1308     2636,
1309 /**/
1310     2635,
1311 /**/
1312     2634,
1313 /**/
1314     2633,
1315 /**/
1316     2632,
1317 /**/
1318     2631,
1319 /**/
1320     2630,
1321 /**/
1322     2629,
1323 /**/
1324     2628,
1325 /**/
1326     2627,
1327 /**/
1328     2626,
1329 /**/
1330     2625,
1331 /**/
1332     2624,
1333 /**/
1334     2623,
1335 /**/
1336     2622,
1337 /**/
1338     2621,
1339 /**/
1340     2620,
1341 /**/
1342     2619,
1343 /**/
1344     2618,
1345 /**/
1346     2617,
1347 /**/
1348     2616,
1349 /**/
1350     2615,
1351 /**/
1352     2614,
1353 /**/
1354     2613,
1355 /**/
1356     2612,
1357 /**/
1358     2611,
1359 /**/
1360     2610,
1361 /**/
1362     2609,
1363 /**/
1364     2608,
1365 /**/
1366     2607,
1367 /**/
1368     2606,
1369 /**/
1370     2605,
1371 /**/
1372     2604,
1373 /**/
1374     2603,
1375 /**/
1376     2602,
1377 /**/
1378     2601,
1379 /**/
1380     2600,
1381 /**/
1382     2599,
1383 /**/
1384     2598,
1385 /**/
1386     2597,
1387 /**/
1388     2596,
1389 /**/
1390     2595,
1391 /**/
1392     2594,
1393 /**/
1394     2593,
1395 /**/
1396     2592,
1397 /**/
1398     2591,
1399 /**/
1400     2590,
1401 /**/
1402     2589,
1403 /**/
1404     2588,
1405 /**/
1406     2587,
1407 /**/
1408     2586,
1409 /**/
1410     2585,
1411 /**/
1412     2584,
1413 /**/
1414     2583,
1415 /**/
1416     2582,
1417 /**/
1418     2581,
1419 /**/
1420     2580,
1421 /**/
1422     2579,
1423 /**/
1424     2578,
1425 /**/
1426     2577,
1427 /**/
1428     2576,
1429 /**/
1430     2575,
1431 /**/
1432     2574,
1433 /**/
1434     2573,
1435 /**/
1436     2572,
1437 /**/
1438     2571,
1439 /**/
1440     2570,
1441 /**/
1442     2569,
1443 /**/
1444     2568,
1445 /**/
1446     2567,
1447 /**/
1448     2566,
1449 /**/
1450     2565,
1451 /**/
1452     2564,
1453 /**/
1454     2563,
1455 /**/
1456     2562,
1457 /**/
1458     2561,
1459 /**/
1460     2560,
1461 /**/
1462     2559,
1463 /**/
1464     2558,
1465 /**/
1466     2557,
1467 /**/
1468     2556,
1469 /**/
1470     2555,
1471 /**/
1472     2554,
1473 /**/
1474     2553,
1475 /**/
1476     2552,
1477 /**/
1478     2551,
1479 /**/
1480     2550,
1481 /**/
1482     2549,
1483 /**/
1484     2548,
1485 /**/
1486     2547,
1487 /**/
1488     2546,
1489 /**/
1490     2545,
1491 /**/
1492     2544,
1493 /**/
1494     2543,
1495 /**/
1496     2542,
1497 /**/
1498     2541,
1499 /**/
1500     2540,
1501 /**/
1502     2539,
1503 /**/
1504     2538,
1505 /**/
1506     2537,
1507 /**/
1508     2536,
1509 /**/
1510     2535,
1511 /**/
1512     2534,
1513 /**/
1514     2533,
1515 /**/
1516     2532,
1517 /**/
1518     2531,
1519 /**/
1520     2530,
1521 /**/
1522     2529,
1523 /**/
1524     2528,
1525 /**/
1526     2527,
1527 /**/
1528     2526,
1529 /**/
1530     2525,
1531 /**/
1532     2524,
1533 /**/
1534     2523,
1535 /**/
1536     2522,
1537 /**/
1538     2521,
1539 /**/
1540     2520,
1541 /**/
1542     2519,
1543 /**/
1544     2518,
1545 /**/
1546     2517,
1547 /**/
1548     2516,
1549 /**/
1550     2515,
1551 /**/
1552     2514,
1553 /**/
1554     2513,
1555 /**/
1556     2512,
1557 /**/
1558     2511,
1559 /**/
1560     2510,
1561 /**/
1562     2509,
1563 /**/
1564     2508,
1565 /**/
1566     2507,
1567 /**/
1568     2506,
1569 /**/
1570     2505,
1571 /**/
1572     2504,
1573 /**/
1574     2503,
1575 /**/
1576     2502,
1577 /**/
1578     2501,
1579 /**/
1580     2500,
1581 /**/
1582     2499,
1583 /**/
1584     2498,
1585 /**/
1586     2497,
1587 /**/
1588     2496,
1589 /**/
1590     2495,
1591 /**/
1592     2494,
1593 /**/
1594     2493,
1595 /**/
1596     2492,
1597 /**/
1598     2491,
1599 /**/
1600     2490,
1601 /**/
1602     2489,
1603 /**/
1604     2488,
1605 /**/
1606     2487,
1607 /**/
1608     2486,
1609 /**/
1610     2485,
1611 /**/
1612     2484,
1613 /**/
1614     2483,
1615 /**/
1616     2482,
1617 /**/
1618     2481,
1619 /**/
1620     2480,
1621 /**/
1622     2479,
1623 /**/
1624     2478,
1625 /**/
1626     2477,
1627 /**/
1628     2476,
1629 /**/
1630     2475,
1631 /**/
1632     2474,
1633 /**/
1634     2473,
1635 /**/
1636     2472,
1637 /**/
1638     2471,
1639 /**/
1640     2470,
1641 /**/
1642     2469,
1643 /**/
1644     2468,
1645 /**/
1646     2467,
1647 /**/
1648     2466,
1649 /**/
1650     2465,
1651 /**/
1652     2464,
1653 /**/
1654     2463,
1655 /**/
1656     2462,
1657 /**/
1658     2461,
1659 /**/
1660     2460,
1661 /**/
1662     2459,
1663 /**/
1664     2458,
1665 /**/
1666     2457,
1667 /**/
1668     2456,
1669 /**/
1670     2455,
1671 /**/
1672     2454,
1673 /**/
1674     2453,
1675 /**/
1676     2452,
1677 /**/
1678     2451,
1679 /**/
1680     2450,
1681 /**/
1682     2449,
1683 /**/
1684     2448,
1685 /**/
1686     2447,
1687 /**/
1688     2446,
1689 /**/
1690     2445,
1691 /**/
1692     2444,
1693 /**/
1694     2443,
1695 /**/
1696     2442,
1697 /**/
1698     2441,
1699 /**/
1700     2440,
1701 /**/
1702     2439,
1703 /**/
1704     2438,
1705 /**/
1706     2437,
1707 /**/
1708     2436,
1709 /**/
1710     2435,
1711 /**/
1712     2434,
1713 /**/
1714     2433,
1715 /**/
1716     2432,
1717 /**/
1718     2431,
1719 /**/
1720     2430,
1721 /**/
1722     2429,
1723 /**/
1724     2428,
1725 /**/
1726     2427,
1727 /**/
1728     2426,
1729 /**/
1730     2425,
1731 /**/
1732     2424,
1733 /**/
1734     2423,
1735 /**/
1736     2422,
1737 /**/
1738     2421,
1739 /**/
1740     2420,
1741 /**/
1742     2419,
1743 /**/
1744     2418,
1745 /**/
1746     2417,
1747 /**/
1748     2416,
1749 /**/
1750     2415,
1751 /**/
1752     2414,
1753 /**/
1754     2413,
1755 /**/
1756     2412,
1757 /**/
1758     2411,
1759 /**/
1760     2410,
1761 /**/
1762     2409,
1763 /**/
1764     2408,
1765 /**/
1766     2407,
1767 /**/
1768     2406,
1769 /**/
1770     2405,
1771 /**/
1772     2404,
1773 /**/
1774     2403,
1775 /**/
1776     2402,
1777 /**/
1778     2401,
1779 /**/
1780     2400,
1781 /**/
1782     2399,
1783 /**/
1784     2398,
1785 /**/
1786     2397,
1787 /**/
1788     2396,
1789 /**/
1790     2395,
1791 /**/
1792     2394,
1793 /**/
1794     2393,
1795 /**/
1796     2392,
1797 /**/
1798     2391,
1799 /**/
1800     2390,
1801 /**/
1802     2389,
1803 /**/
1804     2388,
1805 /**/
1806     2387,
1807 /**/
1808     2386,
1809 /**/
1810     2385,
1811 /**/
1812     2384,
1813 /**/
1814     2383,
1815 /**/
1816     2382,
1817 /**/
1818     2381,
1819 /**/
1820     2380,
1821 /**/
1822     2379,
1823 /**/
1824     2378,
1825 /**/
1826     2377,
1827 /**/
1828     2376,
1829 /**/
1830     2375,
1831 /**/
1832     2374,
1833 /**/
1834     2373,
1835 /**/
1836     2372,
1837 /**/
1838     2371,
1839 /**/
1840     2370,
1841 /**/
1842     2369,
1843 /**/
1844     2368,
1845 /**/
1846     2367,
1847 /**/
1848     2366,
1849 /**/
1850     2365,
1851 /**/
1852     2364,
1853 /**/
1854     2363,
1855 /**/
1856     2362,
1857 /**/
1858     2361,
1859 /**/
1860     2360,
1861 /**/
1862     2359,
1863 /**/
1864     2358,
1865 /**/
1866     2357,
1867 /**/
1868     2356,
1869 /**/
1870     2355,
1871 /**/
1872     2354,
1873 /**/
1874     2353,
1875 /**/
1876     2352,
1877 /**/
1878     2351,
1879 /**/
1880     2350,
1881 /**/
1882     2349,
1883 /**/
1884     2348,
1885 /**/
1886     2347,
1887 /**/
1888     2346,
1889 /**/
1890     2345,
1891 /**/
1892     2344,
1893 /**/
1894     2343,
1895 /**/
1896     2342,
1897 /**/
1898     2341,
1899 /**/
1900     2340,
1901 /**/
1902     2339,
1903 /**/
1904     2338,
1905 /**/
1906     2337,
1907 /**/
1908     2336,
1909 /**/
1910     2335,
1911 /**/
1912     2334,
1913 /**/
1914     2333,
1915 /**/
1916     2332,
1917 /**/
1918     2331,
1919 /**/
1920     2330,
1921 /**/
1922     2329,
1923 /**/
1924     2328,
1925 /**/
1926     2327,
1927 /**/
1928     2326,
1929 /**/
1930     2325,
1931 /**/
1932     2324,
1933 /**/
1934     2323,
1935 /**/
1936     2322,
1937 /**/
1938     2321,
1939 /**/
1940     2320,
1941 /**/
1942     2319,
1943 /**/
1944     2318,
1945 /**/
1946     2317,
1947 /**/
1948     2316,
1949 /**/
1950     2315,
1951 /**/
1952     2314,
1953 /**/
1954     2313,
1955 /**/
1956     2312,
1957 /**/
1958     2311,
1959 /**/
1960     2310,
1961 /**/
1962     2309,
1963 /**/
1964     2308,
1965 /**/
1966     2307,
1967 /**/
1968     2306,
1969 /**/
1970     2305,
1971 /**/
1972     2304,
1973 /**/
1974     2303,
1975 /**/
1976     2302,
1977 /**/
1978     2301,
1979 /**/
1980     2300,
1981 /**/
1982     2299,
1983 /**/
1984     2298,
1985 /**/
1986     2297,
1987 /**/
1988     2296,
1989 /**/
1990     2295,
1991 /**/
1992     2294,
1993 /**/
1994     2293,
1995 /**/
1996     2292,
1997 /**/
1998     2291,
1999 /**/
2000     2290,
2001 /**/
2002     2289,
2003 /**/
2004     2288,
2005 /**/
2006     2287,
2007 /**/
2008     2286,
2009 /**/
2010     2285,
2011 /**/
2012     2284,
2013 /**/
2014     2283,
2015 /**/
2016     2282,
2017 /**/
2018     2281,
2019 /**/
2020     2280,
2021 /**/
2022     2279,
2023 /**/
2024     2278,
2025 /**/
2026     2277,
2027 /**/
2028     2276,
2029 /**/
2030     2275,
2031 /**/
2032     2274,
2033 /**/
2034     2273,
2035 /**/
2036     2272,
2037 /**/
2038     2271,
2039 /**/
2040     2270,
2041 /**/
2042     2269,
2043 /**/
2044     2268,
2045 /**/
2046     2267,
2047 /**/
2048     2266,
2049 /**/
2050     2265,
2051 /**/
2052     2264,
2053 /**/
2054     2263,
2055 /**/
2056     2262,
2057 /**/
2058     2261,
2059 /**/
2060     2260,
2061 /**/
2062     2259,
2063 /**/
2064     2258,
2065 /**/
2066     2257,
2067 /**/
2068     2256,
2069 /**/
2070     2255,
2071 /**/
2072     2254,
2073 /**/
2074     2253,
2075 /**/
2076     2252,
2077 /**/
2078     2251,
2079 /**/
2080     2250,
2081 /**/
2082     2249,
2083 /**/
2084     2248,
2085 /**/
2086     2247,
2087 /**/
2088     2246,
2089 /**/
2090     2245,
2091 /**/
2092     2244,
2093 /**/
2094     2243,
2095 /**/
2096     2242,
2097 /**/
2098     2241,
2099 /**/
2100     2240,
2101 /**/
2102     2239,
2103 /**/
2104     2238,
2105 /**/
2106     2237,
2107 /**/
2108     2236,
2109 /**/
2110     2235,
2111 /**/
2112     2234,
2113 /**/
2114     2233,
2115 /**/
2116     2232,
2117 /**/
2118     2231,
2119 /**/
2120     2230,
2121 /**/
2122     2229,
2123 /**/
2124     2228,
2125 /**/
2126     2227,
2127 /**/
2128     2226,
2129 /**/
2130     2225,
2131 /**/
2132     2224,
2133 /**/
2134     2223,
2135 /**/
2136     2222,
2137 /**/
2138     2221,
2139 /**/
2140     2220,
2141 /**/
2142     2219,
2143 /**/
2144     2218,
2145 /**/
2146     2217,
2147 /**/
2148     2216,
2149 /**/
2150     2215,
2151 /**/
2152     2214,
2153 /**/
2154     2213,
2155 /**/
2156     2212,
2157 /**/
2158     2211,
2159 /**/
2160     2210,
2161 /**/
2162     2209,
2163 /**/
2164     2208,
2165 /**/
2166     2207,
2167 /**/
2168     2206,
2169 /**/
2170     2205,
2171 /**/
2172     2204,
2173 /**/
2174     2203,
2175 /**/
2176     2202,
2177 /**/
2178     2201,
2179 /**/
2180     2200,
2181 /**/
2182     2199,
2183 /**/
2184     2198,
2185 /**/
2186     2197,
2187 /**/
2188     2196,
2189 /**/
2190     2195,
2191 /**/
2192     2194,
2193 /**/
2194     2193,
2195 /**/
2196     2192,
2197 /**/
2198     2191,
2199 /**/
2200     2190,
2201 /**/
2202     2189,
2203 /**/
2204     2188,
2205 /**/
2206     2187,
2207 /**/
2208     2186,
2209 /**/
2210     2185,
2211 /**/
2212     2184,
2213 /**/
2214     2183,
2215 /**/
2216     2182,
2217 /**/
2218     2181,
2219 /**/
2220     2180,
2221 /**/
2222     2179,
2223 /**/
2224     2178,
2225 /**/
2226     2177,
2227 /**/
2228     2176,
2229 /**/
2230     2175,
2231 /**/
2232     2174,
2233 /**/
2234     2173,
2235 /**/
2236     2172,
2237 /**/
2238     2171,
2239 /**/
2240     2170,
2241 /**/
2242     2169,
2243 /**/
2244     2168,
2245 /**/
2246     2167,
2247 /**/
2248     2166,
2249 /**/
2250     2165,
2251 /**/
2252     2164,
2253 /**/
2254     2163,
2255 /**/
2256     2162,
2257 /**/
2258     2161,
2259 /**/
2260     2160,
2261 /**/
2262     2159,
2263 /**/
2264     2158,
2265 /**/
2266     2157,
2267 /**/
2268     2156,
2269 /**/
2270     2155,
2271 /**/
2272     2154,
2273 /**/
2274     2153,
2275 /**/
2276     2152,
2277 /**/
2278     2151,
2279 /**/
2280     2150,
2281 /**/
2282     2149,
2283 /**/
2284     2148,
2285 /**/
2286     2147,
2287 /**/
2288     2146,
2289 /**/
2290     2145,
2291 /**/
2292     2144,
2293 /**/
2294     2143,
2295 /**/
2296     2142,
2297 /**/
2298     2141,
2299 /**/
2300     2140,
2301 /**/
2302     2139,
2303 /**/
2304     2138,
2305 /**/
2306     2137,
2307 /**/
2308     2136,
2309 /**/
2310     2135,
2311 /**/
2312     2134,
2313 /**/
2314     2133,
2315 /**/
2316     2132,
2317 /**/
2318     2131,
2319 /**/
2320     2130,
2321 /**/
2322     2129,
2323 /**/
2324     2128,
2325 /**/
2326     2127,
2327 /**/
2328     2126,
2329 /**/
2330     2125,
2331 /**/
2332     2124,
2333 /**/
2334     2123,
2335 /**/
2336     2122,
2337 /**/
2338     2121,
2339 /**/
2340     2120,
2341 /**/
2342     2119,
2343 /**/
2344     2118,
2345 /**/
2346     2117,
2347 /**/
2348     2116,
2349 /**/
2350     2115,
2351 /**/
2352     2114,
2353 /**/
2354     2113,
2355 /**/
2356     2112,
2357 /**/
2358     2111,
2359 /**/
2360     2110,
2361 /**/
2362     2109,
2363 /**/
2364     2108,
2365 /**/
2366     2107,
2367 /**/
2368     2106,
2369 /**/
2370     2105,
2371 /**/
2372     2104,
2373 /**/
2374     2103,
2375 /**/
2376     2102,
2377 /**/
2378     2101,
2379 /**/
2380     2100,
2381 /**/
2382     2099,
2383 /**/
2384     2098,
2385 /**/
2386     2097,
2387 /**/
2388     2096,
2389 /**/
2390     2095,
2391 /**/
2392     2094,
2393 /**/
2394     2093,
2395 /**/
2396     2092,
2397 /**/
2398     2091,
2399 /**/
2400     2090,
2401 /**/
2402     2089,
2403 /**/
2404     2088,
2405 /**/
2406     2087,
2407 /**/
2408     2086,
2409 /**/
2410     2085,
2411 /**/
2412     2084,
2413 /**/
2414     2083,
2415 /**/
2416     2082,
2417 /**/
2418     2081,
2419 /**/
2420     2080,
2421 /**/
2422     2079,
2423 /**/
2424     2078,
2425 /**/
2426     2077,
2427 /**/
2428     2076,
2429 /**/
2430     2075,
2431 /**/
2432     2074,
2433 /**/
2434     2073,
2435 /**/
2436     2072,
2437 /**/
2438     2071,
2439 /**/
2440     2070,
2441 /**/
2442     2069,
2443 /**/
2444     2068,
2445 /**/
2446     2067,
2447 /**/
2448     2066,
2449 /**/
2450     2065,
2451 /**/
2452     2064,
2453 /**/
2454     2063,
2455 /**/
2456     2062,
2457 /**/
2458     2061,
2459 /**/
2460     2060,
2461 /**/
2462     2059,
2463 /**/
2464     2058,
2465 /**/
2466     2057,
2467 /**/
2468     2056,
2469 /**/
2470     2055,
2471 /**/
2472     2054,
2473 /**/
2474     2053,
2475 /**/
2476     2052,
2477 /**/
2478     2051,
2479 /**/
2480     2050,
2481 /**/
2482     2049,
2483 /**/
2484     2048,
2485 /**/
2486     2047,
2487 /**/
2488     2046,
2489 /**/
2490     2045,
2491 /**/
2492     2044,
2493 /**/
2494     2043,
2495 /**/
2496     2042,
2497 /**/
2498     2041,
2499 /**/
2500     2040,
2501 /**/
2502     2039,
2503 /**/
2504     2038,
2505 /**/
2506     2037,
2507 /**/
2508     2036,
2509 /**/
2510     2035,
2511 /**/
2512     2034,
2513 /**/
2514     2033,
2515 /**/
2516     2032,
2517 /**/
2518     2031,
2519 /**/
2520     2030,
2521 /**/
2522     2029,
2523 /**/
2524     2028,
2525 /**/
2526     2027,
2527 /**/
2528     2026,
2529 /**/
2530     2025,
2531 /**/
2532     2024,
2533 /**/
2534     2023,
2535 /**/
2536     2022,
2537 /**/
2538     2021,
2539 /**/
2540     2020,
2541 /**/
2542     2019,
2543 /**/
2544     2018,
2545 /**/
2546     2017,
2547 /**/
2548     2016,
2549 /**/
2550     2015,
2551 /**/
2552     2014,
2553 /**/
2554     2013,
2555 /**/
2556     2012,
2557 /**/
2558     2011,
2559 /**/
2560     2010,
2561 /**/
2562     2009,
2563 /**/
2564     2008,
2565 /**/
2566     2007,
2567 /**/
2568     2006,
2569 /**/
2570     2005,
2571 /**/
2572     2004,
2573 /**/
2574     2003,
2575 /**/
2576     2002,
2577 /**/
2578     2001,
2579 /**/
2580     2000,
2581 /**/
2582     1999,
2583 /**/
2584     1998,
2585 /**/
2586     1997,
2587 /**/
2588     1996,
2589 /**/
2590     1995,
2591 /**/
2592     1994,
2593 /**/
2594     1993,
2595 /**/
2596     1992,
2597 /**/
2598     1991,
2599 /**/
2600     1990,
2601 /**/
2602     1989,
2603 /**/
2604     1988,
2605 /**/
2606     1987,
2607 /**/
2608     1986,
2609 /**/
2610     1985,
2611 /**/
2612     1984,
2613 /**/
2614     1983,
2615 /**/
2616     1982,
2617 /**/
2618     1981,
2619 /**/
2620     1980,
2621 /**/
2622     1979,
2623 /**/
2624     1978,
2625 /**/
2626     1977,
2627 /**/
2628     1976,
2629 /**/
2630     1975,
2631 /**/
2632     1974,
2633 /**/
2634     1973,
2635 /**/
2636     1972,
2637 /**/
2638     1971,
2639 /**/
2640     1970,
2641 /**/
2642     1969,
2643 /**/
2644     1968,
2645 /**/
2646     1967,
2647 /**/
2648     1966,
2649 /**/
2650     1965,
2651 /**/
2652     1964,
2653 /**/
2654     1963,
2655 /**/
2656     1962,
2657 /**/
2658     1961,
2659 /**/
2660     1960,
2661 /**/
2662     1959,
2663 /**/
2664     1958,
2665 /**/
2666     1957,
2667 /**/
2668     1956,
2669 /**/
2670     1955,
2671 /**/
2672     1954,
2673 /**/
2674     1953,
2675 /**/
2676     1952,
2677 /**/
2678     1951,
2679 /**/
2680     1950,
2681 /**/
2682     1949,
2683 /**/
2684     1948,
2685 /**/
2686     1947,
2687 /**/
2688     1946,
2689 /**/
2690     1945,
2691 /**/
2692     1944,
2693 /**/
2694     1943,
2695 /**/
2696     1942,
2697 /**/
2698     1941,
2699 /**/
2700     1940,
2701 /**/
2702     1939,
2703 /**/
2704     1938,
2705 /**/
2706     1937,
2707 /**/
2708     1936,
2709 /**/
2710     1935,
2711 /**/
2712     1934,
2713 /**/
2714     1933,
2715 /**/
2716     1932,
2717 /**/
2718     1931,
2719 /**/
2720     1930,
2721 /**/
2722     1929,
2723 /**/
2724     1928,
2725 /**/
2726     1927,
2727 /**/
2728     1926,
2729 /**/
2730     1925,
2731 /**/
2732     1924,
2733 /**/
2734     1923,
2735 /**/
2736     1922,
2737 /**/
2738     1921,
2739 /**/
2740     1920,
2741 /**/
2742     1919,
2743 /**/
2744     1918,
2745 /**/
2746     1917,
2747 /**/
2748     1916,
2749 /**/
2750     1915,
2751 /**/
2752     1914,
2753 /**/
2754     1913,
2755 /**/
2756     1912,
2757 /**/
2758     1911,
2759 /**/
2760     1910,
2761 /**/
2762     1909,
2763 /**/
2764     1908,
2765 /**/
2766     1907,
2767 /**/
2768     1906,
2769 /**/
2770     1905,
2771 /**/
2772     1904,
2773 /**/
2774     1903,
2775 /**/
2776     1902,
2777 /**/
2778     1901,
2779 /**/
2780     1900,
2781 /**/
2782     1899,
2783 /**/
2784     1898,
2785 /**/
2786     1897,
2787 /**/
2788     1896,
2789 /**/
2790     1895,
2791 /**/
2792     1894,
2793 /**/
2794     1893,
2795 /**/
2796     1892,
2797 /**/
2798     1891,
2799 /**/
2800     1890,
2801 /**/
2802     1889,
2803 /**/
2804     1888,
2805 /**/
2806     1887,
2807 /**/
2808     1886,
2809 /**/
2810     1885,
2811 /**/
2812     1884,
2813 /**/
2814     1883,
2815 /**/
2816     1882,
2817 /**/
2818     1881,
2819 /**/
2820     1880,
2821 /**/
2822     1879,
2823 /**/
2824     1878,
2825 /**/
2826     1877,
2827 /**/
2828     1876,
2829 /**/
2830     1875,
2831 /**/
2832     1874,
2833 /**/
2834     1873,
2835 /**/
2836     1872,
2837 /**/
2838     1871,
2839 /**/
2840     1870,
2841 /**/
2842     1869,
2843 /**/
2844     1868,
2845 /**/
2846     1867,
2847 /**/
2848     1866,
2849 /**/
2850     1865,
2851 /**/
2852     1864,
2853 /**/
2854     1863,
2855 /**/
2856     1862,
2857 /**/
2858     1861,
2859 /**/
2860     1860,
2861 /**/
2862     1859,
2863 /**/
2864     1858,
2865 /**/
2866     1857,
2867 /**/
2868     1856,
2869 /**/
2870     1855,
2871 /**/
2872     1854,
2873 /**/
2874     1853,
2875 /**/
2876     1852,
2877 /**/
2878     1851,
2879 /**/
2880     1850,
2881 /**/
2882     1849,
2883 /**/
2884     1848,
2885 /**/
2886     1847,
2887 /**/
2888     1846,
2889 /**/
2890     1845,
2891 /**/
2892     1844,
2893 /**/
2894     1843,
2895 /**/
2896     1842,
2897 /**/
2898     1841,
2899 /**/
2900     1840,
2901 /**/
2902     1839,
2903 /**/
2904     1838,
2905 /**/
2906     1837,
2907 /**/
2908     1836,
2909 /**/
2910     1835,
2911 /**/
2912     1834,
2913 /**/
2914     1833,
2915 /**/
2916     1832,
2917 /**/
2918     1831,
2919 /**/
2920     1830,
2921 /**/
2922     1829,
2923 /**/
2924     1828,
2925 /**/
2926     1827,
2927 /**/
2928     1826,
2929 /**/
2930     1825,
2931 /**/
2932     1824,
2933 /**/
2934     1823,
2935 /**/
2936     1822,
2937 /**/
2938     1821,
2939 /**/
2940     1820,
2941 /**/
2942     1819,
2943 /**/
2944     1818,
2945 /**/
2946     1817,
2947 /**/
2948     1816,
2949 /**/
2950     1815,
2951 /**/
2952     1814,
2953 /**/
2954     1813,
2955 /**/
2956     1812,
2957 /**/
2958     1811,
2959 /**/
2960     1810,
2961 /**/
2962     1809,
2963 /**/
2964     1808,
2965 /**/
2966     1807,
2967 /**/
2968     1806,
2969 /**/
2970     1805,
2971 /**/
2972     1804,
2973 /**/
2974     1803,
2975 /**/
2976     1802,
2977 /**/
2978     1801,
2979 /**/
2980     1800,
2981 /**/
2982     1799,
2983 /**/
2984     1798,
2985 /**/
2986     1797,
2987 /**/
2988     1796,
2989 /**/
2990     1795,
2991 /**/
2992     1794,
2993 /**/
2994     1793,
2995 /**/
2996     1792,
2997 /**/
2998     1791,
2999 /**/
3000     1790,
3001 /**/
3002     1789,
3003 /**/
3004     1788,
3005 /**/
3006     1787,
3007 /**/
3008     1786,
3009 /**/
3010     1785,
3011 /**/
3012     1784,
3013 /**/
3014     1783,
3015 /**/
3016     1782,
3017 /**/
3018     1781,
3019 /**/
3020     1780,
3021 /**/
3022     1779,
3023 /**/
3024     1778,
3025 /**/
3026     1777,
3027 /**/
3028     1776,
3029 /**/
3030     1775,
3031 /**/
3032     1774,
3033 /**/
3034     1773,
3035 /**/
3036     1772,
3037 /**/
3038     1771,
3039 /**/
3040     1770,
3041 /**/
3042     1769,
3043 /**/
3044     1768,
3045 /**/
3046     1767,
3047 /**/
3048     1766,
3049 /**/
3050     1765,
3051 /**/
3052     1764,
3053 /**/
3054     1763,
3055 /**/
3056     1762,
3057 /**/
3058     1761,
3059 /**/
3060     1760,
3061 /**/
3062     1759,
3063 /**/
3064     1758,
3065 /**/
3066     1757,
3067 /**/
3068     1756,
3069 /**/
3070     1755,
3071 /**/
3072     1754,
3073 /**/
3074     1753,
3075 /**/
3076     1752,
3077 /**/
3078     1751,
3079 /**/
3080     1750,
3081 /**/
3082     1749,
3083 /**/
3084     1748,
3085 /**/
3086     1747,
3087 /**/
3088     1746,
3089 /**/
3090     1745,
3091 /**/
3092     1744,
3093 /**/
3094     1743,
3095 /**/
3096     1742,
3097 /**/
3098     1741,
3099 /**/
3100     1740,
3101 /**/
3102     1739,
3103 /**/
3104     1738,
3105 /**/
3106     1737,
3107 /**/
3108     1736,
3109 /**/
3110     1735,
3111 /**/
3112     1734,
3113 /**/
3114     1733,
3115 /**/
3116     1732,
3117 /**/
3118     1731,
3119 /**/
3120     1730,
3121 /**/
3122     1729,
3123 /**/
3124     1728,
3125 /**/
3126     1727,
3127 /**/
3128     1726,
3129 /**/
3130     1725,
3131 /**/
3132     1724,
3133 /**/
3134     1723,
3135 /**/
3136     1722,
3137 /**/
3138     1721,
3139 /**/
3140     1720,
3141 /**/
3142     1719,
3143 /**/
3144     1718,
3145 /**/
3146     1717,
3147 /**/
3148     1716,
3149 /**/
3150     1715,
3151 /**/
3152     1714,
3153 /**/
3154     1713,
3155 /**/
3156     1712,
3157 /**/
3158     1711,
3159 /**/
3160     1710,
3161 /**/
3162     1709,
3163 /**/
3164     1708,
3165 /**/
3166     1707,
3167 /**/
3168     1706,
3169 /**/
3170     1705,
3171 /**/
3172     1704,
3173 /**/
3174     1703,
3175 /**/
3176     1702,
3177 /**/
3178     1701,
3179 /**/
3180     1700,
3181 /**/
3182     1699,
3183 /**/
3184     1698,
3185 /**/
3186     1697,
3187 /**/
3188     1696,
3189 /**/
3190     1695,
3191 /**/
3192     1694,
3193 /**/
3194     1693,
3195 /**/
3196     1692,
3197 /**/
3198     1691,
3199 /**/
3200     1690,
3201 /**/
3202     1689,
3203 /**/
3204     1688,
3205 /**/
3206     1687,
3207 /**/
3208     1686,
3209 /**/
3210     1685,
3211 /**/
3212     1684,
3213 /**/
3214     1683,
3215 /**/
3216     1682,
3217 /**/
3218     1681,
3219 /**/
3220     1680,
3221 /**/
3222     1679,
3223 /**/
3224     1678,
3225 /**/
3226     1677,
3227 /**/
3228     1676,
3229 /**/
3230     1675,
3231 /**/
3232     1674,
3233 /**/
3234     1673,
3235 /**/
3236     1672,
3237 /**/
3238     1671,
3239 /**/
3240     1670,
3241 /**/
3242     1669,
3243 /**/
3244     1668,
3245 /**/
3246     1667,
3247 /**/
3248     1666,
3249 /**/
3250     1665,
3251 /**/
3252     1664,
3253 /**/
3254     1663,
3255 /**/
3256     1662,
3257 /**/
3258     1661,
3259 /**/
3260     1660,
3261 /**/
3262     1659,
3263 /**/
3264     1658,
3265 /**/
3266     1657,
3267 /**/
3268     1656,
3269 /**/
3270     1655,
3271 /**/
3272     1654,
3273 /**/
3274     1653,
3275 /**/
3276     1652,
3277 /**/
3278     1651,
3279 /**/
3280     1650,
3281 /**/
3282     1649,
3283 /**/
3284     1648,
3285 /**/
3286     1647,
3287 /**/
3288     1646,
3289 /**/
3290     1645,
3291 /**/
3292     1644,
3293 /**/
3294     1643,
3295 /**/
3296     1642,
3297 /**/
3298     1641,
3299 /**/
3300     1640,
3301 /**/
3302     1639,
3303 /**/
3304     1638,
3305 /**/
3306     1637,
3307 /**/
3308     1636,
3309 /**/
3310     1635,
3311 /**/
3312     1634,
3313 /**/
3314     1633,
3315 /**/
3316     1632,
3317 /**/
3318     1631,
3319 /**/
3320     1630,
3321 /**/
3322     1629,
3323 /**/
3324     1628,
3325 /**/
3326     1627,
3327 /**/
3328     1626,
3329 /**/
3330     1625,
3331 /**/
3332     1624,
3333 /**/
3334     1623,
3335 /**/
3336     1622,
3337 /**/
3338     1621,
3339 /**/
3340     1620,
3341 /**/
3342     1619,
3343 /**/
3344     1618,
3345 /**/
3346     1617,
3347 /**/
3348     1616,
3349 /**/
3350     1615,
3351 /**/
3352     1614,
3353 /**/
3354     1613,
3355 /**/
3356     1612,
3357 /**/
3358     1611,
3359 /**/
3360     1610,
3361 /**/
3362     1609,
3363 /**/
3364     1608,
3365 /**/
3366     1607,
3367 /**/
3368     1606,
3369 /**/
3370     1605,
3371 /**/
3372     1604,
3373 /**/
3374     1603,
3375 /**/
3376     1602,
3377 /**/
3378     1601,
3379 /**/
3380     1600,
3381 /**/
3382     1599,
3383 /**/
3384     1598,
3385 /**/
3386     1597,
3387 /**/
3388     1596,
3389 /**/
3390     1595,
3391 /**/
3392     1594,
3393 /**/
3394     1593,
3395 /**/
3396     1592,
3397 /**/
3398     1591,
3399 /**/
3400     1590,
3401 /**/
3402     1589,
3403 /**/
3404     1588,
3405 /**/
3406     1587,
3407 /**/
3408     1586,
3409 /**/
3410     1585,
3411 /**/
3412     1584,
3413 /**/
3414     1583,
3415 /**/
3416     1582,
3417 /**/
3418     1581,
3419 /**/
3420     1580,
3421 /**/
3422     1579,
3423 /**/
3424     1578,
3425 /**/
3426     1577,
3427 /**/
3428     1576,
3429 /**/
3430     1575,
3431 /**/
3432     1574,
3433 /**/
3434     1573,
3435 /**/
3436     1572,
3437 /**/
3438     1571,
3439 /**/
3440     1570,
3441 /**/
3442     1569,
3443 /**/
3444     1568,
3445 /**/
3446     1567,
3447 /**/
3448     1566,
3449 /**/
3450     1565,
3451 /**/
3452     1564,
3453 /**/
3454     1563,
3455 /**/
3456     1562,
3457 /**/
3458     1561,
3459 /**/
3460     1560,
3461 /**/
3462     1559,
3463 /**/
3464     1558,
3465 /**/
3466     1557,
3467 /**/
3468     1556,
3469 /**/
3470     1555,
3471 /**/
3472     1554,
3473 /**/
3474     1553,
3475 /**/
3476     1552,
3477 /**/
3478     1551,
3479 /**/
3480     1550,
3481 /**/
3482     1549,
3483 /**/
3484     1548,
3485 /**/
3486     1547,
3487 /**/
3488     1546,
3489 /**/
3490     1545,
3491 /**/
3492     1544,
3493 /**/
3494     1543,
3495 /**/
3496     1542,
3497 /**/
3498     1541,
3499 /**/
3500     1540,
3501 /**/
3502     1539,
3503 /**/
3504     1538,
3505 /**/
3506     1537,
3507 /**/
3508     1536,
3509 /**/
3510     1535,
3511 /**/
3512     1534,
3513 /**/
3514     1533,
3515 /**/
3516     1532,
3517 /**/
3518     1531,
3519 /**/
3520     1530,
3521 /**/
3522     1529,
3523 /**/
3524     1528,
3525 /**/
3526     1527,
3527 /**/
3528     1526,
3529 /**/
3530     1525,
3531 /**/
3532     1524,
3533 /**/
3534     1523,
3535 /**/
3536     1522,
3537 /**/
3538     1521,
3539 /**/
3540     1520,
3541 /**/
3542     1519,
3543 /**/
3544     1518,
3545 /**/
3546     1517,
3547 /**/
3548     1516,
3549 /**/
3550     1515,
3551 /**/
3552     1514,
3553 /**/
3554     1513,
3555 /**/
3556     1512,
3557 /**/
3558     1511,
3559 /**/
3560     1510,
3561 /**/
3562     1509,
3563 /**/
3564     1508,
3565 /**/
3566     1507,
3567 /**/
3568     1506,
3569 /**/
3570     1505,
3571 /**/
3572     1504,
3573 /**/
3574     1503,
3575 /**/
3576     1502,
3577 /**/
3578     1501,
3579 /**/
3580     1500,
3581 /**/
3582     1499,
3583 /**/
3584     1498,
3585 /**/
3586     1497,
3587 /**/
3588     1496,
3589 /**/
3590     1495,
3591 /**/
3592     1494,
3593 /**/
3594     1493,
3595 /**/
3596     1492,
3597 /**/
3598     1491,
3599 /**/
3600     1490,
3601 /**/
3602     1489,
3603 /**/
3604     1488,
3605 /**/
3606     1487,
3607 /**/
3608     1486,
3609 /**/
3610     1485,
3611 /**/
3612     1484,
3613 /**/
3614     1483,
3615 /**/
3616     1482,
3617 /**/
3618     1481,
3619 /**/
3620     1480,
3621 /**/
3622     1479,
3623 /**/
3624     1478,
3625 /**/
3626     1477,
3627 /**/
3628     1476,
3629 /**/
3630     1475,
3631 /**/
3632     1474,
3633 /**/
3634     1473,
3635 /**/
3636     1472,
3637 /**/
3638     1471,
3639 /**/
3640     1470,
3641 /**/
3642     1469,
3643 /**/
3644     1468,
3645 /**/
3646     1467,
3647 /**/
3648     1466,
3649 /**/
3650     1465,
3651 /**/
3652     1464,
3653 /**/
3654     1463,
3655 /**/
3656     1462,
3657 /**/
3658     1461,
3659 /**/
3660     1460,
3661 /**/
3662     1459,
3663 /**/
3664     1458,
3665 /**/
3666     1457,
3667 /**/
3668     1456,
3669 /**/
3670     1455,
3671 /**/
3672     1454,
3673 /**/
3674     1453,
3675 /**/
3676     1452,
3677 /**/
3678     1451,
3679 /**/
3680     1450,
3681 /**/
3682     1449,
3683 /**/
3684     1448,
3685 /**/
3686     1447,
3687 /**/
3688     1446,
3689 /**/
3690     1445,
3691 /**/
3692     1444,
3693 /**/
3694     1443,
3695 /**/
3696     1442,
3697 /**/
3698     1441,
3699 /**/
3700     1440,
3701 /**/
3702     1439,
3703 /**/
3704     1438,
3705 /**/
3706     1437,
3707 /**/
3708     1436,
3709 /**/
3710     1435,
3711 /**/
3712     1434,
3713 /**/
3714     1433,
3715 /**/
3716     1432,
3717 /**/
3718     1431,
3719 /**/
3720     1430,
3721 /**/
3722     1429,
3723 /**/
3724     1428,
3725 /**/
3726     1427,
3727 /**/
3728     1426,
3729 /**/
3730     1425,
3731 /**/
3732     1424,
3733 /**/
3734     1423,
3735 /**/
3736     1422,
3737 /**/
3738     1421,
3739 /**/
3740     1420,
3741 /**/
3742     1419,
3743 /**/
3744     1418,
3745 /**/
3746     1417,
3747 /**/
3748     1416,
3749 /**/
3750     1415,
3751 /**/
3752     1414,
3753 /**/
3754     1413,
3755 /**/
3756     1412,
3757 /**/
3758     1411,
3759 /**/
3760     1410,
3761 /**/
3762     1409,
3763 /**/
3764     1408,
3765 /**/
3766     1407,
3767 /**/
3768     1406,
3769 /**/
3770     1405,
3771 /**/
3772     1404,
3773 /**/
3774     1403,
3775 /**/
3776     1402,
3777 /**/
3778     1401,
3779 /**/
3780     1400,
3781 /**/
3782     1399,
3783 /**/
3784     1398,
3785 /**/
3786     1397,
3787 /**/
3788     1396,
3789 /**/
3790     1395,
3791 /**/
3792     1394,
3793 /**/
3794     1393,
3795 /**/
3796     1392,
3797 /**/
3798     1391,
3799 /**/
3800     1390,
3801 /**/
3802     1389,
3803 /**/
3804     1388,
3805 /**/
3806     1387,
3807 /**/
3808     1386,
3809 /**/
3810     1385,
3811 /**/
3812     1384,
3813 /**/
3814     1383,
3815 /**/
3816     1382,
3817 /**/
3818     1381,
3819 /**/
3820     1380,
3821 /**/
3822     1379,
3823 /**/
3824     1378,
3825 /**/
3826     1377,
3827 /**/
3828     1376,
3829 /**/
3830     1375,
3831 /**/
3832     1374,
3833 /**/
3834     1373,
3835 /**/
3836     1372,
3837 /**/
3838     1371,
3839 /**/
3840     1370,
3841 /**/
3842     1369,
3843 /**/
3844     1368,
3845 /**/
3846     1367,
3847 /**/
3848     1366,
3849 /**/
3850     1365,
3851 /**/
3852     1364,
3853 /**/
3854     1363,
3855 /**/
3856     1362,
3857 /**/
3858     1361,
3859 /**/
3860     1360,
3861 /**/
3862     1359,
3863 /**/
3864     1358,
3865 /**/
3866     1357,
3867 /**/
3868     1356,
3869 /**/
3870     1355,
3871 /**/
3872     1354,
3873 /**/
3874     1353,
3875 /**/
3876     1352,
3877 /**/
3878     1351,
3879 /**/
3880     1350,
3881 /**/
3882     1349,
3883 /**/
3884     1348,
3885 /**/
3886     1347,
3887 /**/
3888     1346,
3889 /**/
3890     1345,
3891 /**/
3892     1344,
3893 /**/
3894     1343,
3895 /**/
3896     1342,
3897 /**/
3898     1341,
3899 /**/
3900     1340,
3901 /**/
3902     1339,
3903 /**/
3904     1338,
3905 /**/
3906     1337,
3907 /**/
3908     1336,
3909 /**/
3910     1335,
3911 /**/
3912     1334,
3913 /**/
3914     1333,
3915 /**/
3916     1332,
3917 /**/
3918     1331,
3919 /**/
3920     1330,
3921 /**/
3922     1329,
3923 /**/
3924     1328,
3925 /**/
3926     1327,
3927 /**/
3928     1326,
3929 /**/
3930     1325,
3931 /**/
3932     1324,
3933 /**/
3934     1323,
3935 /**/
3936     1322,
3937 /**/
3938     1321,
3939 /**/
3940     1320,
3941 /**/
3942     1319,
3943 /**/
3944     1318,
3945 /**/
3946     1317,
3947 /**/
3948     1316,
3949 /**/
3950     1315,
3951 /**/
3952     1314,
3953 /**/
3954     1313,
3955 /**/
3956     1312,
3957 /**/
3958     1311,
3959 /**/
3960     1310,
3961 /**/
3962     1309,
3963 /**/
3964     1308,
3965 /**/
3966     1307,
3967 /**/
3968     1306,
3969 /**/
3970     1305,
3971 /**/
3972     1304,
3973 /**/
3974     1303,
3975 /**/
3976     1302,
3977 /**/
3978     1301,
3979 /**/
3980     1300,
3981 /**/
3982     1299,
3983 /**/
3984     1298,
3985 /**/
3986     1297,
3987 /**/
3988     1296,
3989 /**/
3990     1295,
3991 /**/
3992     1294,
3993 /**/
3994     1293,
3995 /**/
3996     1292,
3997 /**/
3998     1291,
3999 /**/
4000     1290,
4001 /**/
4002     1289,
4003 /**/
4004     1288,
4005 /**/
4006     1287,
4007 /**/
4008     1286,
4009 /**/
4010     1285,
4011 /**/
4012     1284,
4013 /**/
4014     1283,
4015 /**/
4016     1282,
4017 /**/
4018     1281,
4019 /**/
4020     1280,
4021 /**/
4022     1279,
4023 /**/
4024     1278,
4025 /**/
4026     1277,
4027 /**/
4028     1276,
4029 /**/
4030     1275,
4031 /**/
4032     1274,
4033 /**/
4034     1273,
4035 /**/
4036     1272,
4037 /**/
4038     1271,
4039 /**/
4040     1270,
4041 /**/
4042     1269,
4043 /**/
4044     1268,
4045 /**/
4046     1267,
4047 /**/
4048     1266,
4049 /**/
4050     1265,
4051 /**/
4052     1264,
4053 /**/
4054     1263,
4055 /**/
4056     1262,
4057 /**/
4058     1261,
4059 /**/
4060     1260,
4061 /**/
4062     1259,
4063 /**/
4064     1258,
4065 /**/
4066     1257,
4067 /**/
4068     1256,
4069 /**/
4070     1255,
4071 /**/
4072     1254,
4073 /**/
4074     1253,
4075 /**/
4076     1252,
4077 /**/
4078     1251,
4079 /**/
4080     1250,
4081 /**/
4082     1249,
4083 /**/
4084     1248,
4085 /**/
4086     1247,
4087 /**/
4088     1246,
4089 /**/
4090     1245,
4091 /**/
4092     1244,
4093 /**/
4094     1243,
4095 /**/
4096     1242,
4097 /**/
4098     1241,
4099 /**/
4100     1240,
4101 /**/
4102     1239,
4103 /**/
4104     1238,
4105 /**/
4106     1237,
4107 /**/
4108     1236,
4109 /**/
4110     1235,
4111 /**/
4112     1234,
4113 /**/
4114     1233,
4115 /**/
4116     1232,
4117 /**/
4118     1231,
4119 /**/
4120     1230,
4121 /**/
4122     1229,
4123 /**/
4124     1228,
4125 /**/
4126     1227,
4127 /**/
4128     1226,
4129 /**/
4130     1225,
4131 /**/
4132     1224,
4133 /**/
4134     1223,
4135 /**/
4136     1222,
4137 /**/
4138     1221,
4139 /**/
4140     1220,
4141 /**/
4142     1219,
4143 /**/
4144     1218,
4145 /**/
4146     1217,
4147 /**/
4148     1216,
4149 /**/
4150     1215,
4151 /**/
4152     1214,
4153 /**/
4154     1213,
4155 /**/
4156     1212,
4157 /**/
4158     1211,
4159 /**/
4160     1210,
4161 /**/
4162     1209,
4163 /**/
4164     1208,
4165 /**/
4166     1207,
4167 /**/
4168     1206,
4169 /**/
4170     1205,
4171 /**/
4172     1204,
4173 /**/
4174     1203,
4175 /**/
4176     1202,
4177 /**/
4178     1201,
4179 /**/
4180     1200,
4181 /**/
4182     1199,
4183 /**/
4184     1198,
4185 /**/
4186     1197,
4187 /**/
4188     1196,
4189 /**/
4190     1195,
4191 /**/
4192     1194,
4193 /**/
4194     1193,
4195 /**/
4196     1192,
4197 /**/
4198     1191,
4199 /**/
4200     1190,
4201 /**/
4202     1189,
4203 /**/
4204     1188,
4205 /**/
4206     1187,
4207 /**/
4208     1186,
4209 /**/
4210     1185,
4211 /**/
4212     1184,
4213 /**/
4214     1183,
4215 /**/
4216     1182,
4217 /**/
4218     1181,
4219 /**/
4220     1180,
4221 /**/
4222     1179,
4223 /**/
4224     1178,
4225 /**/
4226     1177,
4227 /**/
4228     1176,
4229 /**/
4230     1175,
4231 /**/
4232     1174,
4233 /**/
4234     1173,
4235 /**/
4236     1172,
4237 /**/
4238     1171,
4239 /**/
4240     1170,
4241 /**/
4242     1169,
4243 /**/
4244     1168,
4245 /**/
4246     1167,
4247 /**/
4248     1166,
4249 /**/
4250     1165,
4251 /**/
4252     1164,
4253 /**/
4254     1163,
4255 /**/
4256     1162,
4257 /**/
4258     1161,
4259 /**/
4260     1160,
4261 /**/
4262     1159,
4263 /**/
4264     1158,
4265 /**/
4266     1157,
4267 /**/
4268     1156,
4269 /**/
4270     1155,
4271 /**/
4272     1154,
4273 /**/
4274     1153,
4275 /**/
4276     1152,
4277 /**/
4278     1151,
4279 /**/
4280     1150,
4281 /**/
4282     1149,
4283 /**/
4284     1148,
4285 /**/
4286     1147,
4287 /**/
4288     1146,
4289 /**/
4290     1145,
4291 /**/
4292     1144,
4293 /**/
4294     1143,
4295 /**/
4296     1142,
4297 /**/
4298     1141,
4299 /**/
4300     1140,
4301 /**/
4302     1139,
4303 /**/
4304     1138,
4305 /**/
4306     1137,
4307 /**/
4308     1136,
4309 /**/
4310     1135,
4311 /**/
4312     1134,
4313 /**/
4314     1133,
4315 /**/
4316     1132,
4317 /**/
4318     1131,
4319 /**/
4320     1130,
4321 /**/
4322     1129,
4323 /**/
4324     1128,
4325 /**/
4326     1127,
4327 /**/
4328     1126,
4329 /**/
4330     1125,
4331 /**/
4332     1124,
4333 /**/
4334     1123,
4335 /**/
4336     1122,
4337 /**/
4338     1121,
4339 /**/
4340     1120,
4341 /**/
4342     1119,
4343 /**/
4344     1118,
4345 /**/
4346     1117,
4347 /**/
4348     1116,
4349 /**/
4350     1115,
4351 /**/
4352     1114,
4353 /**/
4354     1113,
4355 /**/
4356     1112,
4357 /**/
4358     1111,
4359 /**/
4360     1110,
4361 /**/
4362     1109,
4363 /**/
4364     1108,
4365 /**/
4366     1107,
4367 /**/
4368     1106,
4369 /**/
4370     1105,
4371 /**/
4372     1104,
4373 /**/
4374     1103,
4375 /**/
4376     1102,
4377 /**/
4378     1101,
4379 /**/
4380     1100,
4381 /**/
4382     1099,
4383 /**/
4384     1098,
4385 /**/
4386     1097,
4387 /**/
4388     1096,
4389 /**/
4390     1095,
4391 /**/
4392     1094,
4393 /**/
4394     1093,
4395 /**/
4396     1092,
4397 /**/
4398     1091,
4399 /**/
4400     1090,
4401 /**/
4402     1089,
4403 /**/
4404     1088,
4405 /**/
4406     1087,
4407 /**/
4408     1086,
4409 /**/
4410     1085,
4411 /**/
4412     1084,
4413 /**/
4414     1083,
4415 /**/
4416     1082,
4417 /**/
4418     1081,
4419 /**/
4420     1080,
4421 /**/
4422     1079,
4423 /**/
4424     1078,
4425 /**/
4426     1077,
4427 /**/
4428     1076,
4429 /**/
4430     1075,
4431 /**/
4432     1074,
4433 /**/
4434     1073,
4435 /**/
4436     1072,
4437 /**/
4438     1071,
4439 /**/
4440     1070,
4441 /**/
4442     1069,
4443 /**/
4444     1068,
4445 /**/
4446     1067,
4447 /**/
4448     1066,
4449 /**/
4450     1065,
4451 /**/
4452     1064,
4453 /**/
4454     1063,
4455 /**/
4456     1062,
4457 /**/
4458     1061,
4459 /**/
4460     1060,
4461 /**/
4462     1059,
4463 /**/
4464     1058,
4465 /**/
4466     1057,
4467 /**/
4468     1056,
4469 /**/
4470     1055,
4471 /**/
4472     1054,
4473 /**/
4474     1053,
4475 /**/
4476     1052,
4477 /**/
4478     1051,
4479 /**/
4480     1050,
4481 /**/
4482     1049,
4483 /**/
4484     1048,
4485 /**/
4486     1047,
4487 /**/
4488     1046,
4489 /**/
4490     1045,
4491 /**/
4492     1044,
4493 /**/
4494     1043,
4495 /**/
4496     1042,
4497 /**/
4498     1041,
4499 /**/
4500     1040,
4501 /**/
4502     1039,
4503 /**/
4504     1038,
4505 /**/
4506     1037,
4507 /**/
4508     1036,
4509 /**/
4510     1035,
4511 /**/
4512     1034,
4513 /**/
4514     1033,
4515 /**/
4516     1032,
4517 /**/
4518     1031,
4519 /**/
4520     1030,
4521 /**/
4522     1029,
4523 /**/
4524     1028,
4525 /**/
4526     1027,
4527 /**/
4528     1026,
4529 /**/
4530     1025,
4531 /**/
4532     1024,
4533 /**/
4534     1023,
4535 /**/
4536     1022,
4537 /**/
4538     1021,
4539 /**/
4540     1020,
4541 /**/
4542     1019,
4543 /**/
4544     1018,
4545 /**/
4546     1017,
4547 /**/
4548     1016,
4549 /**/
4550     1015,
4551 /**/
4552     1014,
4553 /**/
4554     1013,
4555 /**/
4556     1012,
4557 /**/
4558     1011,
4559 /**/
4560     1010,
4561 /**/
4562     1009,
4563 /**/
4564     1008,
4565 /**/
4566     1007,
4567 /**/
4568     1006,
4569 /**/
4570     1005,
4571 /**/
4572     1004,
4573 /**/
4574     1003,
4575 /**/
4576     1002,
4577 /**/
4578     1001,
4579 /**/
4580     1000,
4581 /**/
4582     999,
4583 /**/
4584     998,
4585 /**/
4586     997,
4587 /**/
4588     996,
4589 /**/
4590     995,
4591 /**/
4592     994,
4593 /**/
4594     993,
4595 /**/
4596     992,
4597 /**/
4598     991,
4599 /**/
4600     990,
4601 /**/
4602     989,
4603 /**/
4604     988,
4605 /**/
4606     987,
4607 /**/
4608     986,
4609 /**/
4610     985,
4611 /**/
4612     984,
4613 /**/
4614     983,
4615 /**/
4616     982,
4617 /**/
4618     981,
4619 /**/
4620     980,
4621 /**/
4622     979,
4623 /**/
4624     978,
4625 /**/
4626     977,
4627 /**/
4628     976,
4629 /**/
4630     975,
4631 /**/
4632     974,
4633 /**/
4634     973,
4635 /**/
4636     972,
4637 /**/
4638     971,
4639 /**/
4640     970,
4641 /**/
4642     969,
4643 /**/
4644     968,
4645 /**/
4646     967,
4647 /**/
4648     966,
4649 /**/
4650     965,
4651 /**/
4652     964,
4653 /**/
4654     963,
4655 /**/
4656     962,
4657 /**/
4658     961,
4659 /**/
4660     960,
4661 /**/
4662     959,
4663 /**/
4664     958,
4665 /**/
4666     957,
4667 /**/
4668     956,
4669 /**/
4670     955,
4671 /**/
4672     954,
4673 /**/
4674     953,
4675 /**/
4676     952,
4677 /**/
4678     951,
4679 /**/
4680     950,
4681 /**/
4682     949,
4683 /**/
4684     948,
4685 /**/
4686     947,
4687 /**/
4688     946,
4689 /**/
4690     945,
4691 /**/
4692     944,
4693 /**/
4694     943,
4695 /**/
4696     942,
4697 /**/
4698     941,
4699 /**/
4700     940,
4701 /**/
4702     939,
4703 /**/
4704     938,
4705 /**/
4706     937,
4707 /**/
4708     936,
4709 /**/
4710     935,
4711 /**/
4712     934,
4713 /**/
4714     933,
4715 /**/
4716     932,
4717 /**/
4718     931,
4719 /**/
4720     930,
4721 /**/
4722     929,
4723 /**/
4724     928,
4725 /**/
4726     927,
4727 /**/
4728     926,
4729 /**/
4730     925,
4731 /**/
4732     924,
4733 /**/
4734     923,
4735 /**/
4736     922,
4737 /**/
4738     921,
4739 /**/
4740     920,
4741 /**/
4742     919,
4743 /**/
4744     918,
4745 /**/
4746     917,
4747 /**/
4748     916,
4749 /**/
4750     915,
4751 /**/
4752     914,
4753 /**/
4754     913,
4755 /**/
4756     912,
4757 /**/
4758     911,
4759 /**/
4760     910,
4761 /**/
4762     909,
4763 /**/
4764     908,
4765 /**/
4766     907,
4767 /**/
4768     906,
4769 /**/
4770     905,
4771 /**/
4772     904,
4773 /**/
4774     903,
4775 /**/
4776     902,
4777 /**/
4778     901,
4779 /**/
4780     900,
4781 /**/
4782     899,
4783 /**/
4784     898,
4785 /**/
4786     897,
4787 /**/
4788     896,
4789 /**/
4790     895,
4791 /**/
4792     894,
4793 /**/
4794     893,
4795 /**/
4796     892,
4797 /**/
4798     891,
4799 /**/
4800     890,
4801 /**/
4802     889,
4803 /**/
4804     888,
4805 /**/
4806     887,
4807 /**/
4808     886,
4809 /**/
4810     885,
4811 /**/
4812     884,
4813 /**/
4814     883,
4815 /**/
4816     882,
4817 /**/
4818     881,
4819 /**/
4820     880,
4821 /**/
4822     879,
4823 /**/
4824     878,
4825 /**/
4826     877,
4827 /**/
4828     876,
4829 /**/
4830     875,
4831 /**/
4832     874,
4833 /**/
4834     873,
4835 /**/
4836     872,
4837 /**/
4838     871,
4839 /**/
4840     870,
4841 /**/
4842     869,
4843 /**/
4844     868,
4845 /**/
4846     867,
4847 /**/
4848     866,
4849 /**/
4850     865,
4851 /**/
4852     864,
4853 /**/
4854     863,
4855 /**/
4856     862,
4857 /**/
4858     861,
4859 /**/
4860     860,
4861 /**/
4862     859,
4863 /**/
4864     858,
4865 /**/
4866     857,
4867 /**/
4868     856,
4869 /**/
4870     855,
4871 /**/
4872     854,
4873 /**/
4874     853,
4875 /**/
4876     852,
4877 /**/
4878     851,
4879 /**/
4880     850,
4881 /**/
4882     849,
4883 /**/
4884     848,
4885 /**/
4886     847,
4887 /**/
4888     846,
4889 /**/
4890     845,
4891 /**/
4892     844,
4893 /**/
4894     843,
4895 /**/
4896     842,
4897 /**/
4898     841,
4899 /**/
4900     840,
4901 /**/
4902     839,
4903 /**/
4904     838,
4905 /**/
4906     837,
4907 /**/
4908     836,
4909 /**/
4910     835,
4911 /**/
4912     834,
4913 /**/
4914     833,
4915 /**/
4916     832,
4917 /**/
4918     831,
4919 /**/
4920     830,
4921 /**/
4922     829,
4923 /**/
4924     828,
4925 /**/
4926     827,
4927 /**/
4928     826,
4929 /**/
4930     825,
4931 /**/
4932     824,
4933 /**/
4934     823,
4935 /**/
4936     822,
4937 /**/
4938     821,
4939 /**/
4940     820,
4941 /**/
4942     819,
4943 /**/
4944     818,
4945 /**/
4946     817,
4947 /**/
4948     816,
4949 /**/
4950     815,
4951 /**/
4952     814,
4953 /**/
4954     813,
4955 /**/
4956     812,
4957 /**/
4958     811,
4959 /**/
4960     810,
4961 /**/
4962     809,
4963 /**/
4964     808,
4965 /**/
4966     807,
4967 /**/
4968     806,
4969 /**/
4970     805,
4971 /**/
4972     804,
4973 /**/
4974     803,
4975 /**/
4976     802,
4977 /**/
4978     801,
4979 /**/
4980     800,
4981 /**/
4982     799,
4983 /**/
4984     798,
4985 /**/
4986     797,
4987 /**/
4988     796,
4989 /**/
4990     795,
4991 /**/
4992     794,
4993 /**/
4994     793,
4995 /**/
4996     792,
4997 /**/
4998     791,
4999 /**/
5000     790,
5001 /**/
5002     789,
5003 /**/
5004     788,
5005 /**/
5006     787,
5007 /**/
5008     786,
5009 /**/
5010     785,
5011 /**/
5012     784,
5013 /**/
5014     783,
5015 /**/
5016     782,
5017 /**/
5018     781,
5019 /**/
5020     780,
5021 /**/
5022     779,
5023 /**/
5024     778,
5025 /**/
5026     777,
5027 /**/
5028     776,
5029 /**/
5030     775,
5031 /**/
5032     774,
5033 /**/
5034     773,
5035 /**/
5036     772,
5037 /**/
5038     771,
5039 /**/
5040     770,
5041 /**/
5042     769,
5043 /**/
5044     768,
5045 /**/
5046     767,
5047 /**/
5048     766,
5049 /**/
5050     765,
5051 /**/
5052     764,
5053 /**/
5054     763,
5055 /**/
5056     762,
5057 /**/
5058     761,
5059 /**/
5060     760,
5061 /**/
5062     759,
5063 /**/
5064     758,
5065 /**/
5066     757,
5067 /**/
5068     756,
5069 /**/
5070     755,
5071 /**/
5072     754,
5073 /**/
5074     753,
5075 /**/
5076     752,
5077 /**/
5078     751,
5079 /**/
5080     750,
5081 /**/
5082     749,
5083 /**/
5084     748,
5085 /**/
5086     747,
5087 /**/
5088     746,
5089 /**/
5090     745,
5091 /**/
5092     744,
5093 /**/
5094     743,
5095 /**/
5096     742,
5097 /**/
5098     741,
5099 /**/
5100     740,
5101 /**/
5102     739,
5103 /**/
5104     738,
5105 /**/
5106     737,
5107 /**/
5108     736,
5109 /**/
5110     735,
5111 /**/
5112     734,
5113 /**/
5114     733,
5115 /**/
5116     732,
5117 /**/
5118     731,
5119 /**/
5120     730,
5121 /**/
5122     729,
5123 /**/
5124     728,
5125 /**/
5126     727,
5127 /**/
5128     726,
5129 /**/
5130     725,
5131 /**/
5132     724,
5133 /**/
5134     723,
5135 /**/
5136     722,
5137 /**/
5138     721,
5139 /**/
5140     720,
5141 /**/
5142     719,
5143 /**/
5144     718,
5145 /**/
5146     717,
5147 /**/
5148     716,
5149 /**/
5150     715,
5151 /**/
5152     714,
5153 /**/
5154     713,
5155 /**/
5156     712,
5157 /**/
5158     711,
5159 /**/
5160     710,
5161 /**/
5162     709,
5163 /**/
5164     708,
5165 /**/
5166     707,
5167 /**/
5168     706,
5169 /**/
5170     705,
5171 /**/
5172     704,
5173 /**/
5174     703,
5175 /**/
5176     702,
5177 /**/
5178     701,
5179 /**/
5180     700,
5181 /**/
5182     699,
5183 /**/
5184     698,
5185 /**/
5186     697,
5187 /**/
5188     696,
5189 /**/
5190     695,
5191 /**/
5192     694,
5193 /**/
5194     693,
5195 /**/
5196     692,
5197 /**/
5198     691,
5199 /**/
5200     690,
5201 /**/
5202     689,
5203 /**/
5204     688,
5205 /**/
5206     687,
5207 /**/
5208     686,
5209 /**/
5210     685,
5211 /**/
5212     684,
5213 /**/
5214     683,
5215 /**/
5216     682,
5217 /**/
5218     681,
5219 /**/
5220     680,
5221 /**/
5222     679,
5223 /**/
5224     678,
5225 /**/
5226     677,
5227 /**/
5228     676,
5229 /**/
5230     675,
5231 /**/
5232     674,
5233 /**/
5234     673,
5235 /**/
5236     672,
5237 /**/
5238     671,
5239 /**/
5240     670,
5241 /**/
5242     669,
5243 /**/
5244     668,
5245 /**/
5246     667,
5247 /**/
5248     666,
5249 /**/
5250     665,
5251 /**/
5252     664,
5253 /**/
5254     663,
5255 /**/
5256     662,
5257 /**/
5258     661,
5259 /**/
5260     660,
5261 /**/
5262     659,
5263 /**/
5264     658,
5265 /**/
5266     657,
5267 /**/
5268     656,
5269 /**/
5270     655,
5271 /**/
5272     654,
5273 /**/
5274     653,
5275 /**/
5276     652,
5277 /**/
5278     651,
5279 /**/
5280     650,
5281 /**/
5282     649,
5283 /**/
5284     648,
5285 /**/
5286     647,
5287 /**/
5288     646,
5289 /**/
5290     645,
5291 /**/
5292     644,
5293 /**/
5294     643,
5295 /**/
5296     642,
5297 /**/
5298     641,
5299 /**/
5300     640,
5301 /**/
5302     639,
5303 /**/
5304     638,
5305 /**/
5306     637,
5307 /**/
5308     636,
5309 /**/
5310     635,
5311 /**/
5312     634,
5313 /**/
5314     633,
5315 /**/
5316     632,
5317 /**/
5318     631,
5319 /**/
5320     630,
5321 /**/
5322     629,
5323 /**/
5324     628,
5325 /**/
5326     627,
5327 /**/
5328     626,
5329 /**/
5330     625,
5331 /**/
5332     624,
5333 /**/
5334     623,
5335 /**/
5336     622,
5337 /**/
5338     621,
5339 /**/
5340     620,
5341 /**/
5342     619,
5343 /**/
5344     618,
5345 /**/
5346     617,
5347 /**/
5348     616,
5349 /**/
5350     615,
5351 /**/
5352     614,
5353 /**/
5354     613,
5355 /**/
5356     612,
5357 /**/
5358     611,
5359 /**/
5360     610,
5361 /**/
5362     609,
5363 /**/
5364     608,
5365 /**/
5366     607,
5367 /**/
5368     606,
5369 /**/
5370     605,
5371 /**/
5372     604,
5373 /**/
5374     603,
5375 /**/
5376     602,
5377 /**/
5378     601,
5379 /**/
5380     600,
5381 /**/
5382     599,
5383 /**/
5384     598,
5385 /**/
5386     597,
5387 /**/
5388     596,
5389 /**/
5390     595,
5391 /**/
5392     594,
5393 /**/
5394     593,
5395 /**/
5396     592,
5397 /**/
5398     591,
5399 /**/
5400     590,
5401 /**/
5402     589,
5403 /**/
5404     588,
5405 /**/
5406     587,
5407 /**/
5408     586,
5409 /**/
5410     585,
5411 /**/
5412     584,
5413 /**/
5414     583,
5415 /**/
5416     582,
5417 /**/
5418     581,
5419 /**/
5420     580,
5421 /**/
5422     579,
5423 /**/
5424     578,
5425 /**/
5426     577,
5427 /**/
5428     576,
5429 /**/
5430     575,
5431 /**/
5432     574,
5433 /**/
5434     573,
5435 /**/
5436     572,
5437 /**/
5438     571,
5439 /**/
5440     570,
5441 /**/
5442     569,
5443 /**/
5444     568,
5445 /**/
5446     567,
5447 /**/
5448     566,
5449 /**/
5450     565,
5451 /**/
5452     564,
5453 /**/
5454     563,
5455 /**/
5456     562,
5457 /**/
5458     561,
5459 /**/
5460     560,
5461 /**/
5462     559,
5463 /**/
5464     558,
5465 /**/
5466     557,
5467 /**/
5468     556,
5469 /**/
5470     555,
5471 /**/
5472     554,
5473 /**/
5474     553,
5475 /**/
5476     552,
5477 /**/
5478     551,
5479 /**/
5480     550,
5481 /**/
5482     549,
5483 /**/
5484     548,
5485 /**/
5486     547,
5487 /**/
5488     546,
5489 /**/
5490     545,
5491 /**/
5492     544,
5493 /**/
5494     543,
5495 /**/
5496     542,
5497 /**/
5498     541,
5499 /**/
5500     540,
5501 /**/
5502     539,
5503 /**/
5504     538,
5505 /**/
5506     537,
5507 /**/
5508     536,
5509 /**/
5510     535,
5511 /**/
5512     534,
5513 /**/
5514     533,
5515 /**/
5516     532,
5517 /**/
5518     531,
5519 /**/
5520     530,
5521 /**/
5522     529,
5523 /**/
5524     528,
5525 /**/
5526     527,
5527 /**/
5528     526,
5529 /**/
5530     525,
5531 /**/
5532     524,
5533 /**/
5534     523,
5535 /**/
5536     522,
5537 /**/
5538     521,
5539 /**/
5540     520,
5541 /**/
5542     519,
5543 /**/
5544     518,
5545 /**/
5546     517,
5547 /**/
5548     516,
5549 /**/
5550     515,
5551 /**/
5552     514,
5553 /**/
5554     513,
5555 /**/
5556     512,
5557 /**/
5558     511,
5559 /**/
5560     510,
5561 /**/
5562     509,
5563 /**/
5564     508,
5565 /**/
5566     507,
5567 /**/
5568     506,
5569 /**/
5570     505,
5571 /**/
5572     504,
5573 /**/
5574     503,
5575 /**/
5576     502,
5577 /**/
5578     501,
5579 /**/
5580     500,
5581 /**/
5582     499,
5583 /**/
5584     498,
5585 /**/
5586     497,
5587 /**/
5588     496,
5589 /**/
5590     495,
5591 /**/
5592     494,
5593 /**/
5594     493,
5595 /**/
5596     492,
5597 /**/
5598     491,
5599 /**/
5600     490,
5601 /**/
5602     489,
5603 /**/
5604     488,
5605 /**/
5606     487,
5607 /**/
5608     486,
5609 /**/
5610     485,
5611 /**/
5612     484,
5613 /**/
5614     483,
5615 /**/
5616     482,
5617 /**/
5618     481,
5619 /**/
5620     480,
5621 /**/
5622     479,
5623 /**/
5624     478,
5625 /**/
5626     477,
5627 /**/
5628     476,
5629 /**/
5630     475,
5631 /**/
5632     474,
5633 /**/
5634     473,
5635 /**/
5636     472,
5637 /**/
5638     471,
5639 /**/
5640     470,
5641 /**/
5642     469,
5643 /**/
5644     468,
5645 /**/
5646     467,
5647 /**/
5648     466,
5649 /**/
5650     465,
5651 /**/
5652     464,
5653 /**/
5654     463,
5655 /**/
5656     462,
5657 /**/
5658     461,
5659 /**/
5660     460,
5661 /**/
5662     459,
5663 /**/
5664     458,
5665 /**/
5666     457,
5667 /**/
5668     456,
5669 /**/
5670     455,
5671 /**/
5672     454,
5673 /**/
5674     453,
5675 /**/
5676     452,
5677 /**/
5678     451,
5679 /**/
5680     450,
5681 /**/
5682     449,
5683 /**/
5684     448,
5685 /**/
5686     447,
5687 /**/
5688     446,
5689 /**/
5690     445,
5691 /**/
5692     444,
5693 /**/
5694     443,
5695 /**/
5696     442,
5697 /**/
5698     441,
5699 /**/
5700     440,
5701 /**/
5702     439,
5703 /**/
5704     438,
5705 /**/
5706     437,
5707 /**/
5708     436,
5709 /**/
5710     435,
5711 /**/
5712     434,
5713 /**/
5714     433,
5715 /**/
5716     432,
5717 /**/
5718     431,
5719 /**/
5720     430,
5721 /**/
5722     429,
5723 /**/
5724     428,
5725 /**/
5726     427,
5727 /**/
5728     426,
5729 /**/
5730     425,
5731 /**/
5732     424,
5733 /**/
5734     423,
5735 /**/
5736     422,
5737 /**/
5738     421,
5739 /**/
5740     420,
5741 /**/
5742     419,
5743 /**/
5744     418,
5745 /**/
5746     417,
5747 /**/
5748     416,
5749 /**/
5750     415,
5751 /**/
5752     414,
5753 /**/
5754     413,
5755 /**/
5756     412,
5757 /**/
5758     411,
5759 /**/
5760     410,
5761 /**/
5762     409,
5763 /**/
5764     408,
5765 /**/
5766     407,
5767 /**/
5768     406,
5769 /**/
5770     405,
5771 /**/
5772     404,
5773 /**/
5774     403,
5775 /**/
5776     402,
5777 /**/
5778     401,
5779 /**/
5780     400,
5781 /**/
5782     399,
5783 /**/
5784     398,
5785 /**/
5786     397,
5787 /**/
5788     396,
5789 /**/
5790     395,
5791 /**/
5792     394,
5793 /**/
5794     393,
5795 /**/
5796     392,
5797 /**/
5798     391,
5799 /**/
5800     390,
5801 /**/
5802     389,
5803 /**/
5804     388,
5805 /**/
5806     387,
5807 /**/
5808     386,
5809 /**/
5810     385,
5811 /**/
5812     384,
5813 /**/
5814     383,
5815 /**/
5816     382,
5817 /**/
5818     381,
5819 /**/
5820     380,
5821 /**/
5822     379,
5823 /**/
5824     378,
5825 /**/
5826     377,
5827 /**/
5828     376,
5829 /**/
5830     375,
5831 /**/
5832     374,
5833 /**/
5834     373,
5835 /**/
5836     372,
5837 /**/
5838     371,
5839 /**/
5840     370,
5841 /**/
5842     369,
5843 /**/
5844     368,
5845 /**/
5846     367,
5847 /**/
5848     366,
5849 /**/
5850     365,
5851 /**/
5852     364,
5853 /**/
5854     363,
5855 /**/
5856     362,
5857 /**/
5858     361,
5859 /**/
5860     360,
5861 /**/
5862     359,
5863 /**/
5864     358,
5865 /**/
5866     357,
5867 /**/
5868     356,
5869 /**/
5870     355,
5871 /**/
5872     354,
5873 /**/
5874     353,
5875 /**/
5876     352,
5877 /**/
5878     351,
5879 /**/
5880     350,
5881 /**/
5882     349,
5883 /**/
5884     348,
5885 /**/
5886     347,
5887 /**/
5888     346,
5889 /**/
5890     345,
5891 /**/
5892     344,
5893 /**/
5894     343,
5895 /**/
5896     342,
5897 /**/
5898     341,
5899 /**/
5900     340,
5901 /**/
5902     339,
5903 /**/
5904     338,
5905 /**/
5906     337,
5907 /**/
5908     336,
5909 /**/
5910     335,
5911 /**/
5912     334,
5913 /**/
5914     333,
5915 /**/
5916     332,
5917 /**/
5918     331,
5919 /**/
5920     330,
5921 /**/
5922     329,
5923 /**/
5924     328,
5925 /**/
5926     327,
5927 /**/
5928     326,
5929 /**/
5930     325,
5931 /**/
5932     324,
5933 /**/
5934     323,
5935 /**/
5936     322,
5937 /**/
5938     321,
5939 /**/
5940     320,
5941 /**/
5942     319,
5943 /**/
5944     318,
5945 /**/
5946     317,
5947 /**/
5948     316,
5949 /**/
5950     315,
5951 /**/
5952     314,
5953 /**/
5954     313,
5955 /**/
5956     312,
5957 /**/
5958     311,
5959 /**/
5960     310,
5961 /**/
5962     309,
5963 /**/
5964     308,
5965 /**/
5966     307,
5967 /**/
5968     306,
5969 /**/
5970     305,
5971 /**/
5972     304,
5973 /**/
5974     303,
5975 /**/
5976     302,
5977 /**/
5978     301,
5979 /**/
5980     300,
5981 /**/
5982     299,
5983 /**/
5984     298,
5985 /**/
5986     297,
5987 /**/
5988     296,
5989 /**/
5990     295,
5991 /**/
5992     294,
5993 /**/
5994     293,
5995 /**/
5996     292,
5997 /**/
5998     291,
5999 /**/
6000     290,
6001 /**/
6002     289,
6003 /**/
6004     288,
6005 /**/
6006     287,
6007 /**/
6008     286,
6009 /**/
6010     285,
6011 /**/
6012     284,
6013 /**/
6014     283,
6015 /**/
6016     282,
6017 /**/
6018     281,
6019 /**/
6020     280,
6021 /**/
6022     279,
6023 /**/
6024     278,
6025 /**/
6026     277,
6027 /**/
6028     276,
6029 /**/
6030     275,
6031 /**/
6032     274,
6033 /**/
6034     273,
6035 /**/
6036     272,
6037 /**/
6038     271,
6039 /**/
6040     270,
6041 /**/
6042     269,
6043 /**/
6044     268,
6045 /**/
6046     267,
6047 /**/
6048     266,
6049 /**/
6050     265,
6051 /**/
6052     264,
6053 /**/
6054     263,
6055 /**/
6056     262,
6057 /**/
6058     261,
6059 /**/
6060     260,
6061 /**/
6062     259,
6063 /**/
6064     258,
6065 /**/
6066     257,
6067 /**/
6068     256,
6069 /**/
6070     255,
6071 /**/
6072     254,
6073 /**/
6074     253,
6075 /**/
6076     252,
6077 /**/
6078     251,
6079 /**/
6080     250,
6081 /**/
6082     249,
6083 /**/
6084     248,
6085 /**/
6086     247,
6087 /**/
6088     246,
6089 /**/
6090     245,
6091 /**/
6092     244,
6093 /**/
6094     243,
6095 /**/
6096     242,
6097 /**/
6098     241,
6099 /**/
6100     240,
6101 /**/
6102     239,
6103 /**/
6104     238,
6105 /**/
6106     237,
6107 /**/
6108     236,
6109 /**/
6110     235,
6111 /**/
6112     234,
6113 /**/
6114     233,
6115 /**/
6116     232,
6117 /**/
6118     231,
6119 /**/
6120     230,
6121 /**/
6122     229,
6123 /**/
6124     228,
6125 /**/
6126     227,
6127 /**/
6128     226,
6129 /**/
6130     225,
6131 /**/
6132     224,
6133 /**/
6134     223,
6135 /**/
6136     222,
6137 /**/
6138     221,
6139 /**/
6140     220,
6141 /**/
6142     219,
6143 /**/
6144     218,
6145 /**/
6146     217,
6147 /**/
6148     216,
6149 /**/
6150     215,
6151 /**/
6152     214,
6153 /**/
6154     213,
6155 /**/
6156     212,
6157 /**/
6158     211,
6159 /**/
6160     210,
6161 /**/
6162     209,
6163 /**/
6164     208,
6165 /**/
6166     207,
6167 /**/
6168     206,
6169 /**/
6170     205,
6171 /**/
6172     204,
6173 /**/
6174     203,
6175 /**/
6176     202,
6177 /**/
6178     201,
6179 /**/
6180     200,
6181 /**/
6182     199,
6183 /**/
6184     198,
6185 /**/
6186     197,
6187 /**/
6188     196,
6189 /**/
6190     195,
6191 /**/
6192     194,
6193 /**/
6194     193,
6195 /**/
6196     192,
6197 /**/
6198     191,
6199 /**/
6200     190,
6201 /**/
6202     189,
6203 /**/
6204     188,
6205 /**/
6206     187,
6207 /**/
6208     186,
6209 /**/
6210     185,
6211 /**/
6212     184,
6213 /**/
6214     183,
6215 /**/
6216     182,
6217 /**/
6218     181,
6219 /**/
6220     180,
6221 /**/
6222     179,
6223 /**/
6224     178,
6225 /**/
6226     177,
6227 /**/
6228     176,
6229 /**/
6230     175,
6231 /**/
6232     174,
6233 /**/
6234     173,
6235 /**/
6236     172,
6237 /**/
6238     171,
6239 /**/
6240     170,
6241 /**/
6242     169,
6243 /**/
6244     168,
6245 /**/
6246     167,
6247 /**/
6248     166,
6249 /**/
6250     165,
6251 /**/
6252     164,
6253 /**/
6254     163,
6255 /**/
6256     162,
6257 /**/
6258     161,
6259 /**/
6260     160,
6261 /**/
6262     159,
6263 /**/
6264     158,
6265 /**/
6266     157,
6267 /**/
6268     156,
6269 /**/
6270     155,
6271 /**/
6272     154,
6273 /**/
6274     153,
6275 /**/
6276     152,
6277 /**/
6278     151,
6279 /**/
6280     150,
6281 /**/
6282     149,
6283 /**/
6284     148,
6285 /**/
6286     147,
6287 /**/
6288     146,
6289 /**/
6290     145,
6291 /**/
6292     144,
6293 /**/
6294     143,
6295 /**/
6296     142,
6297 /**/
6298     141,
6299 /**/
6300     140,
6301 /**/
6302     139,
6303 /**/
6304     138,
6305 /**/
6306     137,
6307 /**/
6308     136,
6309 /**/
6310     135,
6311 /**/
6312     134,
6313 /**/
6314     133,
6315 /**/
6316     132,
6317 /**/
6318     131,
6319 /**/
6320     130,
6321 /**/
6322     129,
6323 /**/
6324     128,
6325 /**/
6326     127,
6327 /**/
6328     126,
6329 /**/
6330     125,
6331 /**/
6332     124,
6333 /**/
6334     123,
6335 /**/
6336     122,
6337 /**/
6338     121,
6339 /**/
6340     120,
6341 /**/
6342     119,
6343 /**/
6344     118,
6345 /**/
6346     117,
6347 /**/
6348     116,
6349 /**/
6350     115,
6351 /**/
6352     114,
6353 /**/
6354     113,
6355 /**/
6356     112,
6357 /**/
6358     111,
6359 /**/
6360     110,
6361 /**/
6362     109,
6363 /**/
6364     108,
6365 /**/
6366     107,
6367 /**/
6368     106,
6369 /**/
6370     105,
6371 /**/
6372     104,
6373 /**/
6374     103,
6375 /**/
6376     102,
6377 /**/
6378     101,
6379 /**/
6380     100,
6381 /**/
6382     99,
6383 /**/
6384     98,
6385 /**/
6386     97,
6387 /**/
6388     96,
6389 /**/
6390     95,
6391 /**/
6392     94,
6393 /**/
6394     93,
6395 /**/
6396     92,
6397 /**/
6398     91,
6399 /**/
6400     90,
6401 /**/
6402     89,
6403 /**/
6404     88,
6405 /**/
6406     87,
6407 /**/
6408     86,
6409 /**/
6410     85,
6411 /**/
6412     84,
6413 /**/
6414     83,
6415 /**/
6416     82,
6417 /**/
6418     81,
6419 /**/
6420     80,
6421 /**/
6422     79,
6423 /**/
6424     78,
6425 /**/
6426     77,
6427 /**/
6428     76,
6429 /**/
6430     75,
6431 /**/
6432     74,
6433 /**/
6434     73,
6435 /**/
6436     72,
6437 /**/
6438     71,
6439 /**/
6440     70,
6441 /**/
6442     69,
6443 /**/
6444     68,
6445 /**/
6446     67,
6447 /**/
6448     66,
6449 /**/
6450     65,
6451 /**/
6452     64,
6453 /**/
6454     63,
6455 /**/
6456     62,
6457 /**/
6458     61,
6459 /**/
6460     60,
6461 /**/
6462     59,
6463 /**/
6464     58,
6465 /**/
6466     57,
6467 /**/
6468     56,
6469 /**/
6470     55,
6471 /**/
6472     54,
6473 /**/
6474     53,
6475 /**/
6476     52,
6477 /**/
6478     51,
6479 /**/
6480     50,
6481 /**/
6482     49,
6483 /**/
6484     48,
6485 /**/
6486     47,
6487 /**/
6488     46,
6489 /**/
6490     45,
6491 /**/
6492     44,
6493 /**/
6494     43,
6495 /**/
6496     42,
6497 /**/
6498     41,
6499 /**/
6500     40,
6501 /**/
6502     39,
6503 /**/
6504     38,
6505 /**/
6506     37,
6507 /**/
6508     36,
6509 /**/
6510     35,
6511 /**/
6512     34,
6513 /**/
6514     33,
6515 /**/
6516     32,
6517 /**/
6518     31,
6519 /**/
6520     30,
6521 /**/
6522     29,
6523 /**/
6524     28,
6525 /**/
6526     27,
6527 /**/
6528     26,
6529 /**/
6530     25,
6531 /**/
6532     24,
6533 /**/
6534     23,
6535 /**/
6536     22,
6537 /**/
6538     21,
6539 /**/
6540     20,
6541 /**/
6542     19,
6543 /**/
6544     18,
6545 /**/
6546     17,
6547 /**/
6548     16,
6549 /**/
6550     15,
6551 /**/
6552     14,
6553 /**/
6554     13,
6555 /**/
6556     12,
6557 /**/
6558     11,
6559 /**/
6560     10,
6561 /**/
6562     9,
6563 /**/
6564     8,
6565 /**/
6566     7,
6567 /**/
6568     6,
6569 /**/
6570     5,
6571 /**/
6572     4,
6573 /**/
6574     3,
6575 /**/
6576     2,
6577 /**/
6578     1,
6579 /**/
6580     0
6581 };
6582 
6583 /*
6584  * Place to put a short description when adding a feature with a patch.
6585  * Keep it short, e.g.,: "relative numbers", "persistent undo".
6586  * Also add a comment marker to separate the lines.
6587  * See the official Vim patches for the diff format: It must use a context of
6588  * one line only.  Create it by hand or use "diff -C2" and edit the patch.
6589  */
6590 static char *(extra_patches[]) =
6591 {   /* Add your patch description below this line */
6592 /**/
6593     NULL
6594 };
6595 
6596     int
6597 highest_patch(void)
6598 {
6599     // this relies on the highest patch number to be the first entry
6600     return included_patches[0];
6601 }
6602 
6603 #if defined(FEAT_EVAL) || defined(PROTO)
6604 /*
6605  * Return TRUE if patch "n" has been included.
6606  */
6607     int
6608 has_patch(int n)
6609 {
6610     int		h, m, l;
6611 
6612     // Perform a binary search.
6613     l = 0;
6614     h = (int)(sizeof(included_patches) / sizeof(included_patches[0])) - 1;
6615     while (l < h)
6616     {
6617 	m = (l + h) / 2;
6618 	if (included_patches[m] == n)
6619 	    return TRUE;
6620 	if (included_patches[m] < n)
6621 	    h = m;
6622 	else
6623 	    l = m + 1;
6624     }
6625     return FALSE;
6626 }
6627 #endif
6628 
6629     void
6630 ex_version(exarg_T *eap)
6631 {
6632     /*
6633      * Ignore a ":version 9.99" command.
6634      */
6635     if (*eap->arg == NUL)
6636     {
6637 	msg_putchar('\n');
6638 	list_version();
6639     }
6640 }
6641 
6642 /*
6643  * Output a string for the version message.  If it's going to wrap, output a
6644  * newline, unless the message is too long to fit on the screen anyway.
6645  * When "wrap" is TRUE wrap the string in [].
6646  */
6647     static void
6648 version_msg_wrap(char_u *s, int wrap)
6649 {
6650     int		len = (int)vim_strsize(s) + (wrap ? 2 : 0);
6651 
6652     if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns
6653 								&& *s != '\n')
6654 	msg_putchar('\n');
6655     if (!got_int)
6656     {
6657 	if (wrap)
6658 	    msg_puts("[");
6659 	msg_puts((char *)s);
6660 	if (wrap)
6661 	    msg_puts("]");
6662     }
6663 }
6664 
6665     static void
6666 version_msg(char *s)
6667 {
6668     version_msg_wrap((char_u *)s, FALSE);
6669 }
6670 
6671 /*
6672  * List all features aligned in columns, dictionary style.
6673  */
6674     static void
6675 list_features(void)
6676 {
6677     list_in_columns((char_u **)features, -1, -1);
6678 }
6679 
6680 /*
6681  * List string items nicely aligned in columns.
6682  * When "size" is < 0 then the last entry is marked with NULL.
6683  * The entry with index "current" is inclosed in [].
6684  */
6685     void
6686 list_in_columns(char_u **items, int size, int current)
6687 {
6688     int		i;
6689     int		ncol;
6690     int		nrow;
6691     int		cur_row = 1;
6692     int		item_count = 0;
6693     int		width = 0;
6694 #ifdef FEAT_SYN_HL
6695     int		use_highlight = (items == (char_u **)features);
6696 #endif
6697 
6698     // Find the length of the longest item, use that + 1 as the column
6699     // width.
6700     for (i = 0; size < 0 ? items[i] != NULL : i < size; ++i)
6701     {
6702 	int l = (int)vim_strsize(items[i]) + (i == current ? 2 : 0);
6703 
6704 	if (l > width)
6705 	    width = l;
6706 	++item_count;
6707     }
6708     width += 1;
6709 
6710     if (Columns < width)
6711     {
6712 	// Not enough screen columns - show one per line
6713 	for (i = 0; i < item_count; ++i)
6714 	{
6715 	    version_msg_wrap(items[i], i == current);
6716 	    if (msg_col > 0 && i < item_count - 1)
6717 		msg_putchar('\n');
6718 	}
6719 	return;
6720     }
6721 
6722     // The rightmost column doesn't need a separator.
6723     // Sacrifice it to fit in one more column if possible.
6724     ncol = (int) (Columns + 1) / width;
6725     nrow = item_count / ncol + (item_count % ncol ? 1 : 0);
6726 
6727     // "i" counts columns then rows.  "idx" counts rows then columns.
6728     for (i = 0; !got_int && i < nrow * ncol; ++i)
6729     {
6730 	int idx = (i / ncol) + (i % ncol) * nrow;
6731 
6732 	if (idx < item_count)
6733 	{
6734 	    int last_col = (i + 1) % ncol == 0;
6735 
6736 	    if (idx == current)
6737 		msg_putchar('[');
6738 #ifdef FEAT_SYN_HL
6739 	    if (use_highlight && items[idx][0] == '-')
6740 		msg_puts_attr((char *)items[idx], HL_ATTR(HLF_W));
6741 	    else
6742 #endif
6743 		msg_puts((char *)items[idx]);
6744 	    if (idx == current)
6745 		msg_putchar(']');
6746 	    if (last_col)
6747 	    {
6748 		if (msg_col > 0 && cur_row < nrow)
6749 		    msg_putchar('\n');
6750 		++cur_row;
6751 	    }
6752 	    else
6753 	    {
6754 		while (msg_col % width)
6755 		    msg_putchar(' ');
6756 	    }
6757 	}
6758 	else
6759 	{
6760 	    // this row is out of items, thus at the end of the row
6761 	    if (msg_col > 0)
6762 	    {
6763 		if (cur_row < nrow)
6764 		    msg_putchar('\n');
6765 		++cur_row;
6766 	    }
6767 	}
6768     }
6769 }
6770 
6771     void
6772 list_version(void)
6773 {
6774     int		i;
6775     int		first;
6776     char	*s = "";
6777 
6778     /*
6779      * When adding features here, don't forget to update the list of
6780      * internal variables in eval.c!
6781      */
6782     init_longVersion();
6783     msg(longVersion);
6784 #ifdef MSWIN
6785 # ifdef FEAT_GUI_MSWIN
6786 #  ifdef VIMDLL
6787 #   ifdef _WIN64
6788     msg_puts(_("\nMS-Windows 64-bit GUI/console version"));
6789 #   else
6790     msg_puts(_("\nMS-Windows 32-bit GUI/console version"));
6791 #   endif
6792 #  else
6793 #   ifdef _WIN64
6794     msg_puts(_("\nMS-Windows 64-bit GUI version"));
6795 #   else
6796     msg_puts(_("\nMS-Windows 32-bit GUI version"));
6797 #   endif
6798 #  endif
6799 #  ifdef FEAT_OLE
6800     msg_puts(_(" with OLE support"));
6801 #  endif
6802 # else
6803 #  ifdef _WIN64
6804     msg_puts(_("\nMS-Windows 64-bit console version"));
6805 #  else
6806     msg_puts(_("\nMS-Windows 32-bit console version"));
6807 #  endif
6808 # endif
6809 #endif
6810 #if defined(MACOS_X)
6811 # if defined(MACOS_X_DARWIN)
6812     msg_puts(_("\nmacOS version"));
6813 # else
6814     msg_puts(_("\nmacOS version w/o darwin feat."));
6815 # endif
6816 # if defined(__arm64__)
6817     msg_puts(" - arm64");
6818 # elif defined(__x86_64__)
6819     msg_puts(" - x86_64");
6820 # endif
6821 #endif
6822 
6823 #ifdef VMS
6824     msg_puts(_("\nOpenVMS version"));
6825 # ifdef HAVE_PATHDEF
6826     if (*compiled_arch != NUL)
6827     {
6828 	msg_puts(" - ");
6829 	msg_puts((char *)compiled_arch);
6830     }
6831 # endif
6832 
6833 #endif
6834 
6835     // Print the list of patch numbers if there is at least one.
6836     // Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45"
6837     if (included_patches[0] != 0)
6838     {
6839 	msg_puts(_("\nIncluded patches: "));
6840 	first = -1;
6841 	i = (int)(sizeof(included_patches) / sizeof(included_patches[0])) - 1;
6842 	while (--i >= 0)
6843 	{
6844 	    if (first < 0)
6845 		first = included_patches[i];
6846 	    if (i == 0 || included_patches[i - 1] != included_patches[i] + 1)
6847 	    {
6848 		msg_puts(s);
6849 		s = ", ";
6850 		msg_outnum((long)first);
6851 		if (first != included_patches[i])
6852 		{
6853 		    msg_puts("-");
6854 		    msg_outnum((long)included_patches[i]);
6855 		}
6856 		first = -1;
6857 	    }
6858 	}
6859     }
6860 
6861     // Print the list of extra patch descriptions if there is at least one.
6862     if (extra_patches[0] != NULL)
6863     {
6864 	msg_puts(_("\nExtra patches: "));
6865 	s = "";
6866 	for (i = 0; extra_patches[i] != NULL; ++i)
6867 	{
6868 	    msg_puts(s);
6869 	    s = ", ";
6870 	    msg_puts(extra_patches[i]);
6871 	}
6872     }
6873 
6874 #ifdef MODIFIED_BY
6875     msg_puts("\n");
6876     msg_puts(_("Modified by "));
6877     msg_puts(MODIFIED_BY);
6878 #endif
6879 
6880 #ifdef HAVE_PATHDEF
6881     if (*compiled_user != NUL || *compiled_sys != NUL)
6882     {
6883 	msg_puts(_("\nCompiled "));
6884 	if (*compiled_user != NUL)
6885 	{
6886 	    msg_puts(_("by "));
6887 	    msg_puts((char *)compiled_user);
6888 	}
6889 	if (*compiled_sys != NUL)
6890 	{
6891 	    msg_puts("@");
6892 	    msg_puts((char *)compiled_sys);
6893 	}
6894     }
6895 #endif
6896 
6897 #ifdef FEAT_HUGE
6898     msg_puts(_("\nHuge version "));
6899 #else
6900 # ifdef FEAT_BIG
6901     msg_puts(_("\nBig version "));
6902 # else
6903 #  ifdef FEAT_NORMAL
6904     msg_puts(_("\nNormal version "));
6905 #  else
6906 #   ifdef FEAT_SMALL
6907     msg_puts(_("\nSmall version "));
6908 #   else
6909     msg_puts(_("\nTiny version "));
6910 #   endif
6911 #  endif
6912 # endif
6913 #endif
6914 #ifndef FEAT_GUI
6915     msg_puts(_("without GUI."));
6916 #else
6917 # ifdef FEAT_GUI_GTK
6918 #  ifdef USE_GTK3
6919     msg_puts(_("with GTK3 GUI."));
6920 #  else
6921 #   ifdef FEAT_GUI_GNOME
6922      msg_puts(_("with GTK2-GNOME GUI."));
6923 #   else
6924      msg_puts(_("with GTK2 GUI."));
6925 #   endif
6926 # endif
6927 # else
6928 #  ifdef FEAT_GUI_MOTIF
6929     msg_puts(_("with X11-Motif GUI."));
6930 #  else
6931 #   ifdef FEAT_GUI_ATHENA
6932 #    ifdef FEAT_GUI_NEXTAW
6933     msg_puts(_("with X11-neXtaw GUI."));
6934 #    else
6935     msg_puts(_("with X11-Athena GUI."));
6936 #    endif
6937 #   else
6938 #    ifdef FEAT_GUI_HAIKU
6939     msg_puts(_("with Haiku GUI."));
6940 #    else
6941 #     ifdef FEAT_GUI_PHOTON
6942     msg_puts(_("with Photon GUI."));
6943 #     else
6944 #      if defined(MSWIN)
6945     msg_puts(_("with GUI."));
6946 #      endif
6947 #     endif
6948 #    endif
6949 #   endif
6950 #  endif
6951 # endif
6952 #endif
6953     version_msg(_("  Features included (+) or not (-):\n"));
6954 
6955     list_features();
6956     if (msg_col > 0)
6957 	msg_putchar('\n');
6958 
6959 #ifdef SYS_VIMRC_FILE
6960     version_msg(_("   system vimrc file: \""));
6961     version_msg(SYS_VIMRC_FILE);
6962     version_msg("\"\n");
6963 #endif
6964 #ifdef USR_VIMRC_FILE
6965     version_msg(_("     user vimrc file: \""));
6966     version_msg(USR_VIMRC_FILE);
6967     version_msg("\"\n");
6968 #endif
6969 #ifdef USR_VIMRC_FILE2
6970     version_msg(_(" 2nd user vimrc file: \""));
6971     version_msg(USR_VIMRC_FILE2);
6972     version_msg("\"\n");
6973 #endif
6974 #ifdef USR_VIMRC_FILE3
6975     version_msg(_(" 3rd user vimrc file: \""));
6976     version_msg(USR_VIMRC_FILE3);
6977     version_msg("\"\n");
6978 #endif
6979 #ifdef USR_EXRC_FILE
6980     version_msg(_("      user exrc file: \""));
6981     version_msg(USR_EXRC_FILE);
6982     version_msg("\"\n");
6983 #endif
6984 #ifdef USR_EXRC_FILE2
6985     version_msg(_("  2nd user exrc file: \""));
6986     version_msg(USR_EXRC_FILE2);
6987     version_msg("\"\n");
6988 #endif
6989 #ifdef FEAT_GUI
6990 # ifdef SYS_GVIMRC_FILE
6991     version_msg(_("  system gvimrc file: \""));
6992     version_msg(SYS_GVIMRC_FILE);
6993     version_msg("\"\n");
6994 # endif
6995     version_msg(_("    user gvimrc file: \""));
6996     version_msg(USR_GVIMRC_FILE);
6997     version_msg("\"\n");
6998 # ifdef USR_GVIMRC_FILE2
6999     version_msg(_("2nd user gvimrc file: \""));
7000     version_msg(USR_GVIMRC_FILE2);
7001     version_msg("\"\n");
7002 # endif
7003 # ifdef USR_GVIMRC_FILE3
7004     version_msg(_("3rd user gvimrc file: \""));
7005     version_msg(USR_GVIMRC_FILE3);
7006     version_msg("\"\n");
7007 # endif
7008 #endif
7009     version_msg(_("       defaults file: \""));
7010     version_msg(VIM_DEFAULTS_FILE);
7011     version_msg("\"\n");
7012 #ifdef FEAT_GUI
7013 # ifdef SYS_MENU_FILE
7014     version_msg(_("    system menu file: \""));
7015     version_msg(SYS_MENU_FILE);
7016     version_msg("\"\n");
7017 # endif
7018 #endif
7019 #ifdef HAVE_PATHDEF
7020     if (*default_vim_dir != NUL)
7021     {
7022 	version_msg(_("  fall-back for $VIM: \""));
7023 	version_msg((char *)default_vim_dir);
7024 	version_msg("\"\n");
7025     }
7026     if (*default_vimruntime_dir != NUL)
7027     {
7028 	version_msg(_(" f-b for $VIMRUNTIME: \""));
7029 	version_msg((char *)default_vimruntime_dir);
7030 	version_msg("\"\n");
7031     }
7032     version_msg(_("Compilation: "));
7033     version_msg((char *)all_cflags);
7034     version_msg("\n");
7035 #ifdef VMS
7036     if (*compiler_version != NUL)
7037     {
7038 	version_msg(_("Compiler: "));
7039 	version_msg((char *)compiler_version);
7040 	version_msg("\n");
7041     }
7042 #endif
7043     version_msg(_("Linking: "));
7044     version_msg((char *)all_lflags);
7045 #endif
7046 #ifdef DEBUG
7047     version_msg("\n");
7048     version_msg(_("  DEBUG BUILD"));
7049 #endif
7050 }
7051 
7052 static void do_intro_line(int row, char_u *mesg, int add_version, int attr);
7053 static void intro_message(int colon);
7054 
7055 /*
7056  * Show the intro message when not editing a file.
7057  */
7058     void
7059 maybe_intro_message(void)
7060 {
7061     if (BUFEMPTY()
7062 	    && curbuf->b_fname == NULL
7063 	    && firstwin->w_next == NULL
7064 	    && vim_strchr(p_shm, SHM_INTRO) == NULL)
7065 	intro_message(FALSE);
7066 }
7067 
7068 /*
7069  * Give an introductory message about Vim.
7070  * Only used when starting Vim on an empty file, without a file name.
7071  * Or with the ":intro" command (for Sven :-).
7072  */
7073     static void
7074 intro_message(
7075     int		colon)		// TRUE for ":intro"
7076 {
7077     int		i;
7078     int		row;
7079     int		blanklines;
7080     int		sponsor;
7081     char	*p;
7082     static char	*(lines[]) =
7083     {
7084 	N_("VIM - Vi IMproved"),
7085 	"",
7086 	N_("version "),
7087 	N_("by Bram Moolenaar et al."),
7088 #ifdef MODIFIED_BY
7089 	" ",
7090 #endif
7091 	N_("Vim is open source and freely distributable"),
7092 	"",
7093 	N_("Help poor children in Uganda!"),
7094 	N_("type  :help iccf<Enter>       for information "),
7095 	"",
7096 	N_("type  :q<Enter>               to exit         "),
7097 	N_("type  :help<Enter>  or  <F1>  for on-line help"),
7098 	N_("type  :help version8<Enter>   for version info"),
7099 	NULL,
7100 	"",
7101 	N_("Running in Vi compatible mode"),
7102 	N_("type  :set nocp<Enter>        for Vim defaults"),
7103 	N_("type  :help cp-default<Enter> for info on this"),
7104     };
7105 #ifdef FEAT_GUI
7106     static char	*(gui_lines[]) =
7107     {
7108 	NULL,
7109 	NULL,
7110 	NULL,
7111 	NULL,
7112 #ifdef MODIFIED_BY
7113 	NULL,
7114 #endif
7115 	NULL,
7116 	NULL,
7117 	NULL,
7118 	N_("menu  Help->Orphans           for information    "),
7119 	NULL,
7120 	N_("Running modeless, typed text is inserted"),
7121 	N_("menu  Edit->Global Settings->Toggle Insert Mode  "),
7122 	N_("                              for two modes      "),
7123 	NULL,
7124 	NULL,
7125 	NULL,
7126 	N_("menu  Edit->Global Settings->Toggle Vi Compatible"),
7127 	N_("                              for Vim defaults   "),
7128     };
7129 #endif
7130 
7131     // blanklines = screen height - # message lines
7132     blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1);
7133     if (!p_cp)
7134 	blanklines += 4;  // add 4 for not showing "Vi compatible" message
7135 
7136     // Don't overwrite a statusline.  Depends on 'cmdheight'.
7137     if (p_ls > 1)
7138 	blanklines -= Rows - topframe->fr_height;
7139     if (blanklines < 0)
7140 	blanklines = 0;
7141 
7142     // Show the sponsor and register message one out of four times, the Uganda
7143     // message two out of four times.
7144     sponsor = (int)time(NULL);
7145     sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0);
7146 
7147     // start displaying the message lines after half of the blank lines
7148     row = blanklines / 2;
7149     if ((row >= 2 && Columns >= 50) || colon)
7150     {
7151 	for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i)
7152 	{
7153 	    p = lines[i];
7154 #ifdef FEAT_GUI
7155 	    if (p_im && gui.in_use && gui_lines[i] != NULL)
7156 		p = gui_lines[i];
7157 #endif
7158 	    if (p == NULL)
7159 	    {
7160 		if (!p_cp)
7161 		    break;
7162 		continue;
7163 	    }
7164 	    if (sponsor != 0)
7165 	    {
7166 		if (strstr(p, "children") != NULL)
7167 		    p = sponsor < 0
7168 			? N_("Sponsor Vim development!")
7169 			: N_("Become a registered Vim user!");
7170 		else if (strstr(p, "iccf") != NULL)
7171 		    p = sponsor < 0
7172 			? N_("type  :help sponsor<Enter>    for information ")
7173 			: N_("type  :help register<Enter>   for information ");
7174 		else if (strstr(p, "Orphans") != NULL)
7175 		    p = N_("menu  Help->Sponsor/Register  for information    ");
7176 	    }
7177 	    if (*p != NUL)
7178 		do_intro_line(row, (char_u *)_(p), i == 2, 0);
7179 	    ++row;
7180 	}
7181     }
7182 
7183     // Make the wait-return message appear just below the text.
7184     if (colon)
7185 	msg_row = row;
7186 }
7187 
7188     static void
7189 do_intro_line(
7190     int		row,
7191     char_u	*mesg,
7192     int		add_version,
7193     int		attr)
7194 {
7195     char_u	vers[20];
7196     int		col;
7197     char_u	*p;
7198     int		l;
7199     int		clen;
7200 #ifdef MODIFIED_BY
7201 # define MODBY_LEN 150
7202     char_u	modby[MODBY_LEN];
7203 
7204     if (*mesg == ' ')
7205     {
7206 	vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1);
7207 	l = (int)STRLEN(modby);
7208 	vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1);
7209 	mesg = modby;
7210     }
7211 #endif
7212 
7213     // Center the message horizontally.
7214     col = vim_strsize(mesg);
7215     if (add_version)
7216     {
7217 	STRCPY(vers, mediumVersion);
7218 	if (highest_patch())
7219 	{
7220 	    // Check for 9.9x or 9.9xx, alpha/beta version
7221 	    if (isalpha((int)vers[3]))
7222 	    {
7223 		int len = (isalpha((int)vers[4])) ? 5 : 4;
7224 		sprintf((char *)vers + len, ".%d%s", highest_patch(),
7225 							 mediumVersion + len);
7226 	    }
7227 	    else
7228 		sprintf((char *)vers + 3, ".%d", highest_patch());
7229 	}
7230 	col += (int)STRLEN(vers);
7231     }
7232     col = (Columns - col) / 2;
7233     if (col < 0)
7234 	col = 0;
7235 
7236     // Split up in parts to highlight <> items differently.
7237     for (p = mesg; *p != NUL; p += l)
7238     {
7239 	clen = 0;
7240 	for (l = 0; p[l] != NUL
7241 			 && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l)
7242 	{
7243 	    if (has_mbyte)
7244 	    {
7245 		clen += ptr2cells(p + l);
7246 		l += (*mb_ptr2len)(p + l) - 1;
7247 	    }
7248 	    else
7249 		clen += byte2cells(p[l]);
7250 	}
7251 	screen_puts_len(p, l, row, col, *p == '<' ? HL_ATTR(HLF_8) : attr);
7252 	col += clen;
7253     }
7254 
7255     // Add the version number to the version line.
7256     if (add_version)
7257 	screen_puts(vers, row, col, 0);
7258 }
7259 
7260 /*
7261  * ":intro": clear screen, display intro screen and wait for return.
7262  */
7263     void
7264 ex_intro(exarg_T *eap UNUSED)
7265 {
7266     screenclear();
7267     intro_message(TRUE);
7268     wait_return(TRUE);
7269 }
7270