# HG changeset patch # User cvs # Date 1186989786 -7200 # Node ID 9f59509498e1ceba0c38d472f84eca6244be1b05 # Parent f109f7dabbe2b71c4a68ec9d9bcb9db7980809d4 Import from CVS: tag r20-1b10 diff -r f109f7dabbe2 -r 9f59509498e1 BUGS --- a/BUGS Mon Aug 13 09:21:56 2007 +0200 +++ b/BUGS Mon Aug 13 09:23:06 2007 +0200 @@ -17,3 +17,9 @@ (3) By hand. Do cat info/xemacs* | more "+/^File: xemacs.info, Node: Bugs," + +Part II of the XEmacs FAQ, available in a manner similar to the above, +or via the world wide web, contains extensive information on how to +track down and report bugs. + + http://www.xemacs.org/faq/ diff -r f109f7dabbe2 -r 9f59509498e1 CHANGES-beta --- a/CHANGES-beta Mon Aug 13 09:21:56 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 09:23:06 2007 +0200 @@ -1,4 +1,20 @@ -*- indented-text -*- +to 20.1 beta10 +-- custom-1.68 [Beyond 19.15] +-- W3-3.0.75 +-- Documentation updates +-- cc-mode-4.388 +-- Custom-1.67 +-- EFS fixes courtesy of Michael Sperber +-- time.el-1.11 +-- Various cursor glitch patches courtesy of Darrell Kindred +-- Irix -rpath support courtesy of Darrell Kindred +-- Miscellaneous bug fixes +-- EFS synch to 19.15 for default-dir.el +-- hm--html-mode-5.5 +-- VM-6.22 +-- Gnus-5.4.37 + to 20.1 beta9 -- VM-6.21 -- tm-7.106 @@ -18,7 +34,6 @@ -- floating-toolbar.el-1.02 -- balloon-help.el-1.05 -- W3-3.0.71 --- VM-6.20 -- Custom-1.65 -- Gnus-5.4.33 -- strip unimplemented subwindows subr code diff -r f109f7dabbe2 -r 9f59509498e1 ChangeLog --- a/ChangeLog Mon Aug 13 09:21:56 2007 +0200 +++ b/ChangeLog Mon Aug 13 09:23:06 2007 +0200 @@ -1,3 +1,42 @@ +Thu Mar 27 18:24:19 1997 Steven L Baur + + * XEmacs 20.1-b10 is released. + +Wed Mar 26 22:31:10 1997 Steven L Baur + + * Remove vms top-level directory. + + * XEmacs 19.15 final released to beta testers. + +Tue Mar 25 19:13:27 1997 Steven L Baur + + * XEmacs 19.15 prefinal released to beta testers. + +Mon Mar 24 12:28:17 1997 Steven L Baur + + * configure.in (--debug): Correct documentation. + +Sun Mar 23 17:24:38 1997 Steven L Baur + + * XEmacs 19.15-b104 is released. + +Sat Mar 22 19:56:36 1997 Steven L Baur + + * etc/sgml/CATALOG: Default to html-3.2final. + +Sat Mar 22 17:55:15 1997 Darrell Kindred + + * configure.in (beta): Add configure support for the -rpath flag + for IRIX analogous to the Solaris "-R". + +Sat Mar 22 16:47:08 1997 Steven L Baur + + * info/dir (Packages): Add HM-HTML-Mode to menu. + +Sat Mar 22 21:27:41 1997 Tomasz J. Cholewo + + * configure.in: Echo only current configuration using 'tee -a'. + Fri Mar 21 21:26:01 1997 Steven L Baur * XEmacs-19.15-b103 is released. diff -r f109f7dabbe2 -r 9f59509498e1 PROBLEMS --- a/PROBLEMS Mon Aug 13 09:21:56 2007 +0200 +++ b/PROBLEMS Mon Aug 13 09:23:06 2007 +0200 @@ -1791,3 +1791,44 @@ The is seen when installing the Big Brother Data Base (bbdb) which includes an outdated copy of mail-abbrevs.el. Remove the copy that comes with bbdb and use the one that comes with XEmacs. + +* Linking with -rpath on IRIX. + +Darrell Kindred writes: +There are a couple of problems [with use of -rpath with Irix ld], though: + + 1. The ld in IRIX 5.3 ignores all but the last -rpath + spec, so the patched configure spits out a warning + if --x-libraries or --site-runtime-libraries are + specified under irix 5.x, and it only adds -rpath + entries for the --site-runtime-libraries. This bug was + fixed sometime between 5.3 and 6.2. + + 2. IRIX gcc 2.7.2 doesn't accept -rpath directly, so + it would have to be prefixed by -Xlinker or "-Wl,". + This would be fine, except that configure compiles with + ${CC-cc} $CFLAGS $LDFLAGS ... + rather than quoting $LDFLAGS with prefix-args, like + src/Makefile does. So if you specify --x-libraries + or --site-runtime-libraries, you must use --use-gcc=no, + or configure will fail. + +* On Irix 5.x and 6.x, the dumped XEmacs (xemacs) core dumps when executed + on another machine, or after newer SGI IRIX patches have been installed. + +The xemacs binary must be executed with the same "libc.so" file which was used +when the xemacs binary was dumped. Some SGI IRIX patches update this file. +Make sure that all machines using the xemacs binary are using the same +set of IRIX patches. If xemacs core dumps after a patch upgrade then you +will have to redump it from temacs. + +* xemacs: can't resolve symbol '__malloc_hook' + +This is a Linux problem where you've compiled the XEmacs binary on a libc +5.4 with version higher than 5.4.19 and attempted to run the binary against +an earlier version. The solution is to upgrade your old library. + +* VM appears to hang in large folders + +This is normal (trust us) when upgrading to VM-6.22 from earlier versions. +Let VM finish what it is doing and all will be well. diff -r f109f7dabbe2 -r 9f59509498e1 configure --- a/configure Mon Aug 13 09:21:56 2007 +0200 +++ b/configure Mon Aug 13 09:23:06 2007 +0200 @@ -291,7 +291,7 @@ Debugging options: --debug Compile with support for debugging XEmacs. - (Causes code-size increase but no loss of speed.) + (Causes code-size increase and little loss of speed.) --error-checking=TYPE[,TYPE]... Compile with internal error-checking added. Causes noticeable loss of speed. Valid types @@ -2679,13 +2679,38 @@ with_toolbars='yes' fi +runtime_arg="-R${dash_r_space}" + case "${canonical}" in - *-sun-solaris* | *-sun-sunos5* ) add_runtime_flag=yes ;; + *-sun-solaris* | *-sun-sunos5* ) + add_runtime_flag=yes ;; + *-sgi-irix5.* ) + # In the IRIX 5.3 ld, only the last -rpath arg has any effect. This is + # fundamentaly incompatible with having separate LD_SWITCH_X_SITE + # and LD_SWITCH_SITE variables. Fortunately, SGI fixed this by 6.2. + if [ -n "${x_libraries}" ] || [ -n "${site_runtime_libraries}" ]; then + (echo "WARNING: The IRIX 5 ld ignores all but the last -rpath argument,"; + echo " so if you need to specify more than one additional"; + echo " runtime library directory, you will have to do so"; + echo " manually by setting the environment variable"; + echo " LD_SWITCH_SITE to '-rpath ' before running"; + echo " configure. If you have only one additional directory," + echo " you can specify it with --site-runtime-libraries.") >&2 + fi + runtime_arg="-rpath " ;; + *-sgi-irix* ) + # Note that IRIX gcc (as of 2.7.2) doesn't accept -rpath, so + # using it can cause trouble. Specifying --use-gcc=no will work + # around this, but the real problem is that configure uses $LDFLAGS + # as arguments to $(CC), instead of using prefix-args like the + # src/Makefile does. + add_runtime_flag=yes; + runtime_arg="-rpath " ;; esac if test -n "${x_libraries}" ; then - if test "${add_runtime_flag}" ; then - LD_SWITCH_X_SITE="-L${x_libraries} -R${dash_r_space}${x_libraries}" + if test "${add_runtime_flag}" = "yes" ; then + LD_SWITCH_X_SITE="-L${x_libraries} ${runtime_arg}${x_libraries}" else LD_SWITCH_X_SITE="-L${x_libraries}" fi @@ -2704,7 +2729,7 @@ for arg in ${site_runtime_libraries} do LD_SWITCH_SITE="${LD_SWITCH_SITE} -L${arg}" - LD_SWITCH_SITE="${LD_SWITCH_SITE} -R${dash_r_space}${arg}" + LD_SWITCH_SITE="${LD_SWITCH_SITE} ${runtime_arg}${arg}" done fi if test -n "${site_includes}" ; then @@ -2855,11 +2880,11 @@ CPP=`eval "echo $CPP"` eval `${CPP} -Isrc ${tempcname} \ | grep 'configure___' \ - | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'` + | sed -n -e 's/^configure___ \(^=*=\)\(.*\)$/\1"\2"/p'` if test "x$SPECIFIED_CFLAGS" = x ; then eval `${CPP} -Isrc -DTHIS_IS_CONFIGURE ${tempcname} \ | grep 'configure___' \ - | sed -n -e 's/^configure___ \([^=]*=\)\(.*\)$/\1"\2"/p'` + | sed -n -e 's/^configure___ \(^=*=\)\(.*\)$/\1"\2"/p'` else REAL_CFLAGS="$CFLAGS" fi @@ -2891,7 +2916,7 @@ #### Add the libraries to LIBS and check for some functions. - +] CPPFLAGS="${C_SWITCH_SITE} $c_switch_system $c_switch_machine $c_switch_x_system $CPPFLAGS" DEFS="${C_SWITCH_SITE} $c_switch_system $c_switch_machine $c_switch_x_system $DEFS" LIBS="${LD_SWITCH_SITE} $ld_switch_x_system $libsrc_libs $LIBS" @@ -5856,8 +5881,8 @@ case "${arg}" in -L*) if test -f `echo "${arg}/libtt.a" | sed 's/^\-L//'` ; then dash_r='' - if test -n "${add_runtime_flag}" ; then - dash_r=`echo ${arg} | sed "s/^-L/-R${dash_r_space}/"` + if "${add_runtime_flag}" = "yes" ; then + dash_r=`echo ${arg} | sed "s/^-L */${runtime_arg}/"` fi LD_SWITCH_X_SITE="${LD_SWITCH_X_SITE} ${arg} ${dash_r}" fi @@ -6976,6 +7001,9 @@ +echo "$0 $configure_args" >> Installation +# Start stdout redirection to '| tee -a Installation' +( echo " Configured for \`${canonical}'. @@ -6989,92 +7017,91 @@ Should XEmacs use the relocating allocator for buffers? ${rel_alloc} What window system should XEmacs use? ${window_system}${x_includes+ Where do we find X Windows header files? }${x_includes}${x_libraries+ - Where do we find X Windows libraries? }${x_libraries}" >> Installation + Where do we find X Windows libraries? }${x_libraries}" if test -n "$site_includes"; then - echo " Additional header files: ${site_includes}" >> Installation + echo " Additional header files: ${site_includes}" fi if test -n "$site_libraries" -a -n "$site_runtime_libraries"; then - echo " Additional libraries: ${site_libraries} ${site_runtime_libraries}" >> Installation + echo " Additional libraries: ${site_libraries} ${site_runtime_libraries}" elif test -n "$site_libraries"; then - echo " Additional libraries: ${site_libraries}" >> Installation + echo " Additional libraries: ${site_libraries}" elif test -n "$site_runtime_libraries"; then - echo " Additional libraries: ${site_runtime_libraries}" >> Installation + echo " Additional libraries: ${site_runtime_libraries}" fi if test "$with_wnn"; then - echo " Finding WNN includes with: ${wnn_includes}" >> Installation - echo " Loading WNN libs with: ${wnn_libraries}" >> Installation -fi -test "$with_socks" = yes && echo " Compiling in support for SOCKS." >> Installation -test "$with_term" = yes && echo " Compiling in support for TERM." >> Installation -test "$with_xauth" = yes && echo " Compiling in support for XAUTH." >> Installation -test "$with_xpm" = yes && echo " Compiling in support for XPM." >> Installation + echo " Finding WNN includes with: ${wnn_includes}" + echo " Loading WNN libs with: ${wnn_libraries}" +fi +test "$with_socks" = yes && echo " Compiling in support for SOCKS." +test "$with_term" = yes && echo " Compiling in support for TERM." +test "$with_xauth" = yes && echo " Compiling in support for XAUTH." +test "$with_xpm" = yes && echo " Compiling in support for XPM." if test "$with_xmu" != yes -a "$window_system" != none; then - echo " No Xmu; substituting equivalent routines." >> Installation -fi -test "$with_xface" = yes && echo " Compiling in support for X-Face headers." >> Installation -test "$with_gif" = yes && echo " Compiling in support for GIF image conversion." >> Installation -test "$with_jpeg" = yes && echo " Compiling in support for JPEG image conversion." >> Installation + echo " No Xmu; substituting equivalent routines." +fi +test "$with_xface" = yes && echo " Compiling in support for X-Face headers." +test "$with_gif" = yes && echo " Compiling in support for GIF image conversion." +test "$with_jpeg" = yes && echo " Compiling in support for JPEG image conversion." if test "$with_png" = yes -o "$with_png" = gnuz; then - echo " Compiling in support for PNG image conversion." >> Installation + echo " Compiling in support for PNG image conversion." fi if test "$with_png" = gnuz; then - echo " (Using -lgz instead of -lz.)" >> Installation -fi -test "$with_tiff" = yes && echo " Compiling in support for TIFF image conversion (not implemented)." >> Installation -test "$with_epoch" = yes && echo " Compiling in extra Epoch compatibility." >> Installation - -test "$with_sound" = nas && echo " Compiling in network sound support." >> Installation -test "$with_sound" = native && echo " Compiling in native sound support." >> Installation -test "$with_sound" = both && echo " Compiling in both network and native sound support." >> Installation -test "$old_nas" = true && echo " nas library lacks error trapping, will play synchronously" >> Installation - -test "$with_database_berkdb" = yes && echo " Compiling in support for Berkeley DB." >> Installation -test "$with_database_dbm" = yes && echo " Compiling in support for DBM." >> Installation -test "$with_database_gnudbm" = yes && echo " Compiling in support for GNU DBM." >> Installation - -test "$with_ncurses" = yes && echo " Compiling in support for ncurses." >> Installation -test "$with_socks" = yes && echo " Compiling in support for SOCKS." >> Installation - -test "$with_mule" = yes && echo " Compiling in Mule (multi-lingual) support." >> Installation -test "$with_xim" != no && echo " Compiling in XIM (X11R5+ I18N input method) support." >> Installation -test "$with_xim" = motif && echo " Using Motif to provide XIM support." >> Installation -test "$with_xim" = xlib && echo " Using raw Xlib to provide XIM support." >> Installation -test "$with_canna" = yes && echo " Compiling in support for Canna on Mule." >> Installation -test "$with_wnn" = yes && echo " Compiling in support for WNN on Mule." >> Installation -test "$with_wnn6" = yes && echo " WNN support for version 6." >> Installation -test "$with_i18n3" = yes && echo " Compiling in I18N support, level 3 (doesn't currently work)." >> Installation - -test "$with_cde" = yes && echo " Compiling in support for CDE." >> Installation -test "$with_tooltalk" = yes && echo " Compiling in support for ToolTalk." >> Installation -test "$with_offix" = yes && echo " Compiling in support for OffiX." >> Installation -test "$with_mocklisp" = yes && echo " Compiling in support for Mocklisp." >> Installation -test "$with_sparcworks" = yes && echo " Compiling in support for SparcWorks." >> Installation -test "$with_energize" = yes && echo " Compiling in support for Lucid Energize (doesn't currently work)." >> Installation -test "$with_menubars" = "lucid" && echo " Using the Lucid menubar." >> Installation + echo " (Using -lgz instead of -lz.)" +fi +test "$with_tiff" = yes && echo " Compiling in support for TIFF image conversion (not implemented)." +test "$with_epoch" = yes && echo " Compiling in extra Epoch compatibility." + +test "$with_sound" = nas && echo " Compiling in network sound support." +test "$with_sound" = native && echo " Compiling in native sound support." +test "$with_sound" = both && echo " Compiling in both network and native sound support." +test "$old_nas" = true && echo " nas library lacks error trapping, will play synchronously" + +test "$with_database_berkdb" = yes && echo " Compiling in support for Berkeley DB." +test "$with_database_dbm" = yes && echo " Compiling in support for DBM." +test "$with_database_gnudbm" = yes && echo " Compiling in support for GNU DBM." + +test "$with_ncurses" = yes && echo " Compiling in support for ncurses." +test "$with_socks" = yes && echo " Compiling in support for SOCKS." + +test "$with_mule" = yes && echo " Compiling in Mule (multi-lingual) support." +test "$with_xim" != no && echo " Compiling in XIM (X11R5+ I18N input method) support." +test "$with_xim" = motif && echo " Using Motif to provide XIM support." +test "$with_xim" = xlib && echo " Using raw Xlib to provide XIM support." +test "$with_canna" = yes && echo " Compiling in support for Canna on Mule." +test "$with_wnn" = yes && echo " Compiling in support for WNN on Mule." +test "$with_wnn6" = yes && echo " WNN support for version 6." +test "$with_i18n3" = yes && echo " Compiling in I18N support, level 3 (doesn't currently work)." + +test "$with_cde" = yes && echo " Compiling in support for CDE." +test "$with_tooltalk" = yes && echo " Compiling in support for ToolTalk." +test "$with_offix" = yes && echo " Compiling in support for OffiX." +test "$with_mocklisp" = yes && echo " Compiling in support for Mocklisp." +test "$with_sparcworks" = yes && echo " Compiling in support for SparcWorks." +test "$with_energize" = yes && echo " Compiling in support for Lucid Energize (doesn't currently work)." +test "$with_menubars" = "lucid" && echo " Using the Lucid menubar." if test "$with_menubars" = "motif"; then - echo " Using the Motif menubar." >> Installation - echo " *WARNING* The Motif menubar is currently buggy. We recommend" >> Installation - echo " that you use the Lucid menubar instead. Re-run" >> Installation - echo " configure with --with-menubars='lucid'." >> Installation -fi -test "$with_scrollbars" = lucid && echo " Using the Lucid scrollbar." >> Installation -test "$with_scrollbars" = motif && echo " Using the Motif scrollbar." >> Installation -test "$with_scrollbars" = athena && echo " Using the Athena scrollbar." >> Installation -test "$with_scrollbars" = athena3d && echo " Using the Athena-3d scrollbar." >> Installation -test "$with_dialogs" = motif && echo " Using the Motif dialog boxes." >> Installation -test "$with_dialogs" = athena && echo " Using the Athena dialog boxes." >> Installation -test "$with_dialogs" = athena3d && echo " Using the Athena-3d dialog boxes." >> Installation - -test "${use_union_type}" = yes && echo " Using the union type for Lisp_Objects." >> Installation -test "${debug}" = yes && echo " Compiling in extra code for debugging." >> Installation -test "${memory_usage_stats}" = yes && echo " Compiling in code for checking XEmacs memory usage." >> Installation -test "$usage_tracking" = yes && echo " Compiling with usage tracking active (Sun internal)." >> Installation -echo " >> Installation -" - -test -r Installation && cat Installation + echo " Using the Motif menubar." + echo " *WARNING* The Motif menubar is currently buggy. We recommend" + echo " that you use the Lucid menubar instead. Re-run" + echo " configure with --with-menubars='lucid'." +fi +test "$with_scrollbars" = lucid && echo " Using the Lucid scrollbar." +test "$with_scrollbars" = motif && echo " Using the Motif scrollbar." +test "$with_scrollbars" = athena && echo " Using the Athena scrollbar." +test "$with_scrollbars" = athena3d && echo " Using the Athena-3d scrollbar." +test "$with_dialogs" = motif && echo " Using the Motif dialog boxes." +test "$with_dialogs" = athena && echo " Using the Athena dialog boxes." +test "$with_dialogs" = athena3d && echo " Using the Athena-3d dialog boxes." + +test "${use_union_type}" = yes && echo " Using the union type for Lisp_Objects." +test "${debug}" = yes && echo " Compiling in extra code for debugging." +test "${memory_usage_stats}" = yes && echo " Compiling in code for checking XEmacs memory usage." +test "$usage_tracking" = yes && echo " Compiling with usage tracking active (Sun internal)." +) | tee -a Installation +echo " | tee -a Installation +" # Remove any trailing slashes in these variables. diff -r f109f7dabbe2 -r 9f59509498e1 configure.in --- a/configure.in Mon Aug 13 09:21:56 2007 +0200 +++ b/configure.in Mon Aug 13 09:23:06 2007 +0200 @@ -307,7 +307,7 @@ Debugging options: --debug Compile with support for debugging XEmacs. - (Causes code-size increase but no loss of speed.) + (Causes code-size increase and little loss of speed.) --error-checking=TYPE[,TYPE]... Compile with internal error-checking added. Causes noticeable loss of speed. Valid types @@ -1869,13 +1869,38 @@ with_toolbars='yes' fi [ +runtime_arg="-R${dash_r_space}" + case "${canonical}" in - *-sun-solaris* | *-sun-sunos5* ) add_runtime_flag=yes ;; + *-sun-solaris* | *-sun-sunos5* ) + add_runtime_flag=yes ;; + *-sgi-irix5.* ) + # In the IRIX 5.3 ld, only the last -rpath arg has any effect. This is + # fundamentaly incompatible with having separate LD_SWITCH_X_SITE + # and LD_SWITCH_SITE variables. Fortunately, SGI fixed this by 6.2. + if [ -n "${x_libraries}" ] || [ -n "${site_runtime_libraries}" ]; then + (echo "WARNING: The IRIX 5 ld ignores all but the last -rpath argument,"; + echo " so if you need to specify more than one additional"; + echo " runtime library directory, you will have to do so"; + echo " manually by setting the environment variable"; + echo " LD_SWITCH_SITE to '-rpath ' before running"; + echo " configure. If you have only one additional directory," + echo " you can specify it with --site-runtime-libraries.") >&2 + fi + runtime_arg="-rpath " ;; + *-sgi-irix* ) + # Note that IRIX gcc (as of 2.7.2) doesn't accept -rpath, so + # using it can cause trouble. Specifying --use-gcc=no will work + # around this, but the real problem is that configure uses $LDFLAGS + # as arguments to $(CC), instead of using prefix-args like the + # src/Makefile does. + add_runtime_flag=yes; + runtime_arg="-rpath " ;; esac if test -n "${x_libraries}" ; then - if test "${add_runtime_flag}" ; then - LD_SWITCH_X_SITE="-L${x_libraries} -R${dash_r_space}${x_libraries}" + if test "${add_runtime_flag}" = "yes" ]; then + LD_SWITCH_X_SITE="-L${x_libraries} ${runtime_arg}${x_libraries}" else LD_SWITCH_X_SITE="-L${x_libraries}" fi @@ -1894,7 +1919,7 @@ for arg in ${site_runtime_libraries} do LD_SWITCH_SITE="${LD_SWITCH_SITE} -L${arg}" - LD_SWITCH_SITE="${LD_SWITCH_SITE} -R${dash_r_space}${arg}" + LD_SWITCH_SITE="${LD_SWITCH_SITE} ${runtime_arg}${arg}" done fi if test -n "${site_includes}" ; then @@ -2966,8 +2991,8 @@ case "${arg}" in -L*) if test -f `echo "${arg}/libtt.a" | sed 's/^\-L//'` ; then dash_r='' - if test -n "${add_runtime_flag}" ; then - dash_r=`echo ${arg} | sed "s/^-L/-R${dash_r_space}/"` + if [ "${add_runtime_flag}" = "yes" ]; then + dash_r=`echo ${arg} | sed "s/^-L */${runtime_arg}/"` fi LD_SWITCH_X_SITE="${LD_SWITCH_X_SITE} ${arg} ${dash_r}" fi @@ -3178,6 +3203,9 @@ dnl # Report on what we decided to do # dnl ############################################################################ +echo "$0 $configure_args" >> Installation +# Start stdout redirection to '| tee -a Installation' +( echo " Configured for \`${canonical}'. @@ -3191,92 +3219,91 @@ Should XEmacs use the relocating allocator for buffers? ${rel_alloc} What window system should XEmacs use? ${window_system}${x_includes+ Where do we find X Windows header files? }${x_includes}${x_libraries+ - Where do we find X Windows libraries? }${x_libraries}" >> Installation + Where do we find X Windows libraries? }${x_libraries}" if test -n "$site_includes"; then - echo " Additional header files: ${site_includes}" >> Installation + echo " Additional header files: ${site_includes}" fi if test -n "$site_libraries" -a -n "$site_runtime_libraries"; then - echo " Additional libraries: ${site_libraries} ${site_runtime_libraries}" >> Installation + echo " Additional libraries: ${site_libraries} ${site_runtime_libraries}" elif test -n "$site_libraries"; then - echo " Additional libraries: ${site_libraries}" >> Installation + echo " Additional libraries: ${site_libraries}" elif test -n "$site_runtime_libraries"; then - echo " Additional libraries: ${site_runtime_libraries}" >> Installation + echo " Additional libraries: ${site_runtime_libraries}" fi if test "$with_wnn"; then - echo " Finding WNN includes with: ${wnn_includes}" >> Installation - echo " Loading WNN libs with: ${wnn_libraries}" >> Installation + echo " Finding WNN includes with: ${wnn_includes}" + echo " Loading WNN libs with: ${wnn_libraries}" fi -test "$with_socks" = yes && echo " Compiling in support for SOCKS." >> Installation -test "$with_term" = yes && echo " Compiling in support for TERM." >> Installation -test "$with_xauth" = yes && echo " Compiling in support for XAUTH." >> Installation -test "$with_xpm" = yes && echo " Compiling in support for XPM." >> Installation +test "$with_socks" = yes && echo " Compiling in support for SOCKS." +test "$with_term" = yes && echo " Compiling in support for TERM." +test "$with_xauth" = yes && echo " Compiling in support for XAUTH." +test "$with_xpm" = yes && echo " Compiling in support for XPM." if test "$with_xmu" != yes -a "$window_system" != none; then - echo " No Xmu; substituting equivalent routines." >> Installation + echo " No Xmu; substituting equivalent routines." fi -test "$with_xface" = yes && echo " Compiling in support for X-Face headers." >> Installation -test "$with_gif" = yes && echo " Compiling in support for GIF image conversion." >> Installation -test "$with_jpeg" = yes && echo " Compiling in support for JPEG image conversion." >> Installation +test "$with_xface" = yes && echo " Compiling in support for X-Face headers." +test "$with_gif" = yes && echo " Compiling in support for GIF image conversion." +test "$with_jpeg" = yes && echo " Compiling in support for JPEG image conversion." if test "$with_png" = yes -o "$with_png" = gnuz; then - echo " Compiling in support for PNG image conversion." >> Installation + echo " Compiling in support for PNG image conversion." fi if test "$with_png" = gnuz; then - echo " (Using -lgz instead of -lz.)" >> Installation + echo " (Using -lgz instead of -lz.)" fi -test "$with_tiff" = yes && echo " Compiling in support for TIFF image conversion (not implemented)." >> Installation -test "$with_epoch" = yes && echo " Compiling in extra Epoch compatibility." >> Installation - -test "$with_sound" = nas && echo " Compiling in network sound support." >> Installation -test "$with_sound" = native && echo " Compiling in native sound support." >> Installation -test "$with_sound" = both && echo " Compiling in both network and native sound support." >> Installation -test "$old_nas" = true && echo " nas library lacks error trapping, will play synchronously" >> Installation - -test "$with_database_berkdb" = yes && echo " Compiling in support for Berkeley DB." >> Installation -test "$with_database_dbm" = yes && echo " Compiling in support for DBM." >> Installation -test "$with_database_gnudbm" = yes && echo " Compiling in support for GNU DBM." >> Installation - -test "$with_ncurses" = yes && echo " Compiling in support for ncurses." >> Installation -test "$with_socks" = yes && echo " Compiling in support for SOCKS." >> Installation - -test "$with_mule" = yes && echo " Compiling in Mule (multi-lingual) support." >> Installation -test "$with_xim" != no && echo " Compiling in XIM (X11R5+ I18N input method) support." >> Installation -test "$with_xim" = motif && echo " Using Motif to provide XIM support." >> Installation -test "$with_xim" = xlib && echo " Using raw Xlib to provide XIM support." >> Installation -test "$with_canna" = yes && echo " Compiling in support for Canna on Mule." >> Installation -test "$with_wnn" = yes && echo " Compiling in support for WNN on Mule." >> Installation -test "$with_wnn6" = yes && echo " WNN support for version 6." >> Installation -test "$with_i18n3" = yes && echo " Compiling in I18N support, level 3 (doesn't currently work)." >> Installation - -test "$with_cde" = yes && echo " Compiling in support for CDE." >> Installation -test "$with_tooltalk" = yes && echo " Compiling in support for ToolTalk." >> Installation -test "$with_offix" = yes && echo " Compiling in support for OffiX." >> Installation -test "$with_mocklisp" = yes && echo " Compiling in support for Mocklisp." >> Installation -test "$with_sparcworks" = yes && echo " Compiling in support for SparcWorks." >> Installation -test "$with_energize" = yes && echo " Compiling in support for Lucid Energize (doesn't currently work)." >> Installation -test "$with_menubars" = "lucid" && echo " Using the Lucid menubar." >> Installation +test "$with_tiff" = yes && echo " Compiling in support for TIFF image conversion (not implemented)." +test "$with_epoch" = yes && echo " Compiling in extra Epoch compatibility." + +test "$with_sound" = nas && echo " Compiling in network sound support." +test "$with_sound" = native && echo " Compiling in native sound support." +test "$with_sound" = both && echo " Compiling in both network and native sound support." +test "$old_nas" = true && echo " nas library lacks error trapping, will play synchronously" + +test "$with_database_berkdb" = yes && echo " Compiling in support for Berkeley DB." +test "$with_database_dbm" = yes && echo " Compiling in support for DBM." +test "$with_database_gnudbm" = yes && echo " Compiling in support for GNU DBM." + +test "$with_ncurses" = yes && echo " Compiling in support for ncurses." +test "$with_socks" = yes && echo " Compiling in support for SOCKS." + +test "$with_mule" = yes && echo " Compiling in Mule (multi-lingual) support." +test "$with_xim" != no && echo " Compiling in XIM (X11R5+ I18N input method) support." +test "$with_xim" = motif && echo " Using Motif to provide XIM support." +test "$with_xim" = xlib && echo " Using raw Xlib to provide XIM support." +test "$with_canna" = yes && echo " Compiling in support for Canna on Mule." +test "$with_wnn" = yes && echo " Compiling in support for WNN on Mule." +test "$with_wnn6" = yes && echo " WNN support for version 6." +test "$with_i18n3" = yes && echo " Compiling in I18N support, level 3 (doesn't currently work)." + +test "$with_cde" = yes && echo " Compiling in support for CDE." +test "$with_tooltalk" = yes && echo " Compiling in support for ToolTalk." +test "$with_offix" = yes && echo " Compiling in support for OffiX." +test "$with_mocklisp" = yes && echo " Compiling in support for Mocklisp." +test "$with_sparcworks" = yes && echo " Compiling in support for SparcWorks." +test "$with_energize" = yes && echo " Compiling in support for Lucid Energize (doesn't currently work)." +test "$with_menubars" = "lucid" && echo " Using the Lucid menubar." if test "$with_menubars" = "motif"; then - echo " Using the Motif menubar." >> Installation - echo " *WARNING* The Motif menubar is currently buggy. We recommend" >> Installation - echo " that you use the Lucid menubar instead. Re-run" >> Installation - echo " configure with --with-menubars='lucid'." >> Installation + echo " Using the Motif menubar." + echo " *WARNING* The Motif menubar is currently buggy. We recommend" + echo " that you use the Lucid menubar instead. Re-run" + echo " configure with --with-menubars='lucid'." fi -test "$with_scrollbars" = lucid && echo " Using the Lucid scrollbar." >> Installation -test "$with_scrollbars" = motif && echo " Using the Motif scrollbar." >> Installation -test "$with_scrollbars" = athena && echo " Using the Athena scrollbar." >> Installation -test "$with_scrollbars" = athena3d && echo " Using the Athena-3d scrollbar." >> Installation -test "$with_dialogs" = motif && echo " Using the Motif dialog boxes." >> Installation -test "$with_dialogs" = athena && echo " Using the Athena dialog boxes." >> Installation -test "$with_dialogs" = athena3d && echo " Using the Athena-3d dialog boxes." >> Installation - -test "${use_union_type}" = yes && echo " Using the union type for Lisp_Objects." >> Installation -test "${debug}" = yes && echo " Compiling in extra code for debugging." >> Installation -test "${memory_usage_stats}" = yes && echo " Compiling in code for checking XEmacs memory usage." >> Installation -test "$usage_tracking" = yes && echo " Compiling with usage tracking active (Sun internal)." >> Installation -echo " >> Installation +test "$with_scrollbars" = lucid && echo " Using the Lucid scrollbar." +test "$with_scrollbars" = motif && echo " Using the Motif scrollbar." +test "$with_scrollbars" = athena && echo " Using the Athena scrollbar." +test "$with_scrollbars" = athena3d && echo " Using the Athena-3d scrollbar." +test "$with_dialogs" = motif && echo " Using the Motif dialog boxes." +test "$with_dialogs" = athena && echo " Using the Athena dialog boxes." +test "$with_dialogs" = athena3d && echo " Using the Athena-3d dialog boxes." + +test "${use_union_type}" = yes && echo " Using the union type for Lisp_Objects." +test "${debug}" = yes && echo " Compiling in extra code for debugging." +test "${memory_usage_stats}" = yes && echo " Compiling in code for checking XEmacs memory usage." +test "$usage_tracking" = yes && echo " Compiling with usage tracking active (Sun internal)." +) | tee -a Installation +echo " | tee -a Installation " - -test -r Installation && cat Installation dnl ############################################################################ dnl # Now generate! # dnl ############################################################################ diff -r f109f7dabbe2 -r 9f59509498e1 etc/FTP --- a/etc/FTP Mon Aug 13 09:21:56 2007 +0200 +++ b/etc/FTP Mon Aug 13 09:23:06 2007 +0200 @@ -1,6 +1,6 @@ -*- text -*- - XEmacs availability information. Last Modified: 10-feb-96. + XEmacs availability information. Last Modified: 25-Mar-1997. XEmacs is available via anonymous FTP from ftp.xemacs.org (128.174.252.16) in the directory /pub/xemacs/. @@ -8,17 +8,23 @@ ftp.xemacs.org is the primary distribution point, but you may find copies of it at other sites as well. Some sites to try include: - ftp.ai.mit.edu:/pub/xemacs/ - ftp.uu.net:/systems/gnu/xemacs/ - ftp.sunet.se:/pub/gnu/xemacs/ - ftp.cenatls.cena.dgac.fr:/pub/Emacs/xemacs/ - liasun3.epfl.ch:/pub/gnu/xemacs/ - ftp.th-darmstadt.de:/pub/editors/xemacs/ - audrey.levels.unisa.edu.au:/xemacs/ - sunsite.doc.ic.ac.uk:/gnu/xemacs/ - uiarchive.cso.uiuc.edu:/pub/packages/xemacs/ - ftp.technion.ac.il:/pub/unsupported/gnu/xemacs/ - thphys.irb.hr:/pub/xemacs/ + ftp://ftp.ai.mit.edu:/pub/xemacs/ + ftp://ftp-digital.cern.ch:/pub/beta/xemacs-20.0/ + ftp://ftp.uu.net:/systems/gnu/xemacs/ + ftp://ftp.sunet.se:/pub/gnu/xemacs/ + ftp://tp.cenatls.cena.dgac.fr:/pub/Emacs/xemacs/ + ftp://ftp.th-darmstadt.de:/pub/editors/xemacs/ + ftp://sunsite.doc.ic.ac.uk:/gnu/xemacs/ + ftp://ftp.ibp.fr:/pub/emacs/xemacs/ + ftp://uiarchive.cso.uiuc.edu:/pub/packages/xemacs/ + ftp://ftp.technion.ac.il:/pub/unsupported/gnu/xemacs/ + ftp://thphys.irb.hr:/pub/xemacs/ + ftp://sunsite.cnlab-switch.ch/mirror/xemacs/ + ftp://ftp.unicamp.br:/pub/xemacs/r20.0/ + ftp://ftp.usyd.edu.au:/pub/Xemacs/ + ftp://ftp.lab.kdd.co.jp/xemacs/ + ftp://SunSITE.sut.ac.jp/pub/archives/xemacs/ + The most up-to-date list of distribution sites can always be found on the XEmacs WWW page, http://www.xemacs.org/. Try to pick a site diff -r f109f7dabbe2 -r 9f59509498e1 etc/NEWS --- a/etc/NEWS Mon Aug 13 09:21:56 2007 +0200 +++ b/etc/NEWS Mon Aug 13 09:23:06 2007 +0200 @@ -20,7 +20,7 @@ New users should look at the next section on "Using Outline Mode". You will be more efficient when you can navigate quickly through this file. Users -interested in some of the details of how XEmacs differs from FSF GNU Emacs +interested in some of the details of how XEmacs differs from GNU Emacs should read the section "What's Different?". Users who would to know which capabilities have been introduced in each release should look at the appropriate subsection of the "XEmacs Release Notes." @@ -103,7 +103,7 @@ =================== -** Differences between XEmacs and FSF GNU Emacs 19 +** Differences between XEmacs and GNU Emacs 19 ================================================== In XEmacs 20, characters are first-class objects. Characters can be converted to integers, but are not integers. FSF 19, XEmacs 19, and Mule @@ -116,7 +116,7 @@ In XEmacs, keymaps are first-class opaque objects. FSF 19 represents them as complicated combinations of association lists and vectors. If you use the advertised functional interface to manipulation of keymaps, the same code -will work in XEmacs, Emacs 18, and FSF GNU Emacs 19; if your code depends +will work in XEmacs, Emacs 18, and GNU Emacs 19; if your code depends on the underlying implementation of keymaps, it will not. XEmacs uses "extents" to represent all non-textual aspects of buffers; @@ -1586,10 +1586,10 @@ -- The `face' property of extents and text properties can now be a list. --- The `mouse-face' property from FSF GNU Emacs is now supported. +-- The `mouse-face' property from GNU Emacs is now supported. It supersedes the `highlight' property. --- `enriched' and `facemenu' packages from FSF GNU Emacs have been ported. +-- `enriched' and `facemenu' packages from GNU Emacs have been ported. -- New functions for easier creation of dialog boxes: `get-dialog-box-response', `message-box', and `message-or-box'. @@ -2484,7 +2484,7 @@ *** Keymaps ----------- -The FSF GNU Emacs concept of `function-key-map' is now partially +The GNU Emacs concept of `function-key-map' is now partially implemented. This allows conversion of function-key escape sequences such as `ESC [ 1 1 ~' into an equivalent human-readable keysym such as `F1'. This work will be completed in 19.14. The function-key map is @@ -2513,7 +2513,7 @@ can now easily specify an action to be invoked on single-click (i.e. down-up without appreciable motion), double-click, drag-up, etc. -Some code from FSF GNU Emacs has been ported over, generalizing some of +Some code from GNU Emacs has been ported over, generalizing some of the X-specific mouse stuff. ** INCOMPATIBLE CHANGE **: The function `set-mouse-position' accepts diff -r f109f7dabbe2 -r 9f59509498e1 etc/jareth.xpm.Z Binary file etc/jareth.xpm.Z has changed diff -r f109f7dabbe2 -r 9f59509498e1 etc/jarethm.xpm.Z Binary file etc/jarethm.xpm.Z has changed diff -r f109f7dabbe2 -r 9f59509498e1 etc/sample.emacs --- a/etc/sample.emacs Mon Aug 13 09:21:56 2007 +0200 +++ b/etc/sample.emacs Mon Aug 13 09:23:06 2007 +0200 @@ -398,6 +398,15 @@ ) ) +;;; ******************** +;;; Load the default-dir.el package which installs fancy handling +;;; of the initial contents in the minibuffer when reading +;;; file names. + +(if (and running-xemacs + (or (and (= emacs-major-version 20) (>= emacs-minor-version 1)) + (and (= emacs-major-version 19) (>= emacs-minor-version 15)))) + (require 'default-dir)) ;;; ******************** ;;; Load the auto-save.el package, which lets you put all of your autosave diff -r f109f7dabbe2 -r 9f59509498e1 etc/sgml/CATALOG --- a/etc/sgml/CATALOG Mon Aug 13 09:21:56 2007 +0200 +++ b/etc/sgml/CATALOG Mon Aug 13 09:23:06 2007 +0200 @@ -51,5 +51,5 @@ PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 Tables//EN" ie3tables.dtd PUBLIC "-//Microsoft//DTD Internet Explorer 3.0 HTML//EN" ie30.dtd PUBLIC "+//Silmaril//DTD HTML Pro v0r11 19970101//EN" htmlpro.dtd -DOCTYPE HTML html.dtd +DOCTYPE HTML html-3.2f.dtd DOCTYPE HTML-3 html-3.dtd diff -r f109f7dabbe2 -r 9f59509498e1 etc/w3/stylesheet --- a/etc/w3/stylesheet Mon Aug 13 09:21:56 2007 +0200 +++ b/etc/w3/stylesheet Mon Aug 13 09:23:06 2007 +0200 @@ -83,7 +83,7 @@ p { display: block } pre,xmp { display: block; white-space: pre; } -blockquote{ display: block; margin-left: 5; margin-right: 5; } +blockquote{ display: block; margin-left: 5em; margin-right: 5em; } /* ** How to draw form elements. @@ -114,8 +114,8 @@ dir { display: block; } menu { display: block; } dt { font-weight: bold; display: list-item } - dd { display: list-item; margin-left: 5; } - li { display: list-item; margin-left: 5; } + dd { display: list-item; margin-left: 5em; } + li { display: list-item; margin-left: 5em; } ul li { list-style: circle; } ol li { list-style: decimal; } diff -r f109f7dabbe2 -r 9f59509498e1 etc/xemacs-white.xpm --- a/etc/xemacs-white.xpm Mon Aug 13 09:21:56 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -/* XPM */ -static char *noname[] = { -/* width height ncolors chars_per_pixel */ -"388 145 25 1", -/* colors */ -"` c #787879", -"a c #686869", -"b c #A6AAF5", -"c c #585859", -"d c #484849", -"e c #09090B", -"f c #5256D7", -"g c #989CEA", -"h c #363ACC", -"i c #C7C8CF", -"j c #282829", -"k c #FFFFFF", -"l c #13154C", -"m c #7074DF", -"n c #D9D9DB", -"o c #232788", -"p c #383838", -"q c #4249D0", -"r c #B6BAF9", -"s c #868AEB", -"t c #A8A8A9", -"u c #989899", -"v c #6266DB", -"w c #888889", -"x c #B9B9B9", -/* pixels */ -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkknkkkkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknikkkknninkkkkkkkkkkknninnnkkkkkkkkkinkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkknknkkkkkkkkkknkkkkkkkknkkkkkknkkkkknkknkkkkkkkkkkkxkkkkkkknkkkkkkknkkkknknkkkkkkknkkkkknknnkkkkkkkkknkkknkkkkknkkkkkkkkkkkkknkkkkkkkkkkkkknkkkkkkkknkkkkkknkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkknnkknnnnikkkkkkkkkknnnnkkknnnnnkkkinnikkkkkinnkkkkkkkkkkikkkkkkknkkkkkkknnkkkkkkkkkkkinnnnkkknnnkkkkkkkkkknnninnkknnnnnkkknnninkkinnnnkkkkkkkkkkinnnkkknnnnnkknnnnnkkknkxnkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkknkkknkkniiiinkknkkknkknkkknkknkkkknkknxkkkkkkkkkkkkkkkkkkkkknkkkkkkiinnkkkknkkkknnnnnxkkkkxkkkkniiiinknnknknkknkkkkkknkkkknknnnnnikkiiiiikkknkknkknkkkknkknkkkknkknikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkknkkkkkkkkkknkkknkknkkkknknkkkknkknnikkkkkkkkkkkkkkkkkkkknkknkkikkknkkkknkkkknnnknnkkkxkikkkkkkkkkknnknknkknkkkknknkkkknkinnnnnkkkkkkkkkknkknkknkkkknkknkkkknkkinnkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkknnkknkkkxkkkkkkkkkknkkknkkinkkikknnkknnkknkkikkkkkkkkkkkkkkkkkkknkknkkikknnkkkknkkkkkxkkkkkkikkkikkkkkkkkknnknknkknnknxkknnkkinkkxkkkkkkkkkkkkkknkknkkkikknikkinkkikkknknnkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkknkknkkninnikkkkkkkknxkkixkkkixxnkkknxxnkkiikkxxkkkkkkkkkkkkkkkknxxxxxkknxxkxnkkixxnkkkkxxikknxiknxnkkkkkkknxikxknnkkixikkkknxikxnkkixikkkkkkkkkkixkkxxkkkixnkkkkixxkkkxnknxikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkknkkkkkkkkknknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkkkknkkkkkknkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkknkknkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkknkknkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknknkkkkkkkkkkkknkkkkkkkkkknkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkknkknkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkknkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkkkkknkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkknkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkknknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknknknkkkkknkknkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknknkkkkkknkknkkkkkkkkkkkkkknknknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkknkkkkkkkknkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknknkkknkkkkkkknknknkkkkknkknkknkknkknkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknkkkkknkkknkknkkkkkkkknknknkkkkkkkknkkkkknkknkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkknkknknknkknkkkkkkkkkkkkkkkkkkkkkknkkkknkkkknkknuunnkknkkkknkkknkkkkntkkkkkkkkkkiikkkkkkknkkkkkknkkkknnkkkknnkkknkkkkkkkkkkkkkkkknkknkknkkknknkkkknkkkkkkkkkkkkkkknkknkknkkkkkkknkknkknknkknknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkknknkkkknkkkkkknkkkkkkkkkkkkkkknkknkknkkkkkkknkknkknknkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkknkkkknkkkkkkkkkkkknkkkkkkkkkknktnkkkkiknkkkknkkkkkkkkkkkkikkkkkkkkkkkinkkknkkkkknkkkknknkkukkkktkknkknkkkkkkknknkknkkkknknknknkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkknkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkknkkkknkkknknkkknknknkkkkkknknknkknkkkknkknknkknkkkkkkkkkkkkkkkkknkkkkkkkkkknkknkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkknknkkkkkknknkkkkkkkknkknkkknkkkkkknkkkkkkkkktkkkknikkknnkixnknininnnkkxkninkkkkiikikknniikkkkknkkkkkkkxnknkkiikkknknkkkkkkknkkkknkknkkkkkknknknkkkkknkknkkknkkkkkknkkkkkkkkkkkkkkkknkknkknkkknkkknkkkkkkkkkkkkkkkkkkkkkknkkkkknkknkkkknkkkkknkkkkknkkkkkkkknkkknkknknkkkkknkknkkkkkknkknkkknkkkkkknkkkkkkkkkkkkkkkknkknkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkknkknnknkkknnkkkkkkknkkkkkkkkknkkknkkkkkkknnknkkkxnkkkknixtkkxuxuxxikitxiukkktiiuxkknixxikkkkknkkknkktkkkkkktkkkkkkkkkkknkkknknkkkknknknkkknkkkkkkkknkkkkkkkkknkkknkkkkkkkkkknknknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknkknkkkkkknkkkkknkknkknknnkkknkkkkkkkknkkkkkkkkknkkknkkkkkkkkkknknknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkknkkkkkkkkkkkknkkkkkkkkknknkknkkknkkknknkknknkkkxkkkkkkxknknkiuuukknukxkkxkxnkkktkikkkkxkkktutikknkkknknkkkxknknkkxnknkknknkkkkknkkkknknkkkkknkkkkkkkkkknknkknkkknkkknknkknknkkkkkkkkkkknnkkknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkknkknkknkkknknknknkkkkkkknkkkkkknnkkkkkkkknkkknkkkkkkkkknknkknkkknkkknknkknknkkkkkkkkkkknnkkknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkkkknkkkkkkkkknknkkkkkxkkkknkxknkkntnktnkkwkxkkxkxkkkkxkxkkkkxkkxnknxkkkkkkkkknkkxnkkkkkxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkkkkknkkkkkkkknkkkkkknkkkkknkkknknkkknkkknkkkkkkknkkkkkkkkkkkkkkkknkkkkkkkkkkknkkknkkkkknkknkkkknkkkkkkkkkknkkkkkkkkkkkkknknkkkkkkkkknkkkkkkkknkkkkkknkkkkknkkknknkkknkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknnknnkxknkknxkknkxkkkwknkwkxkkxkxunkxnkntkkttkktkkixkkkknkkkknkktkknknnxkknkknknknkkkkkknkkkknknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkknknkknkknkkknkkkkkkkkkknkkkknknkkkknkkkkkkkkkkkkkkkkkkkknkknkknknkkknkkkkkkkkknkknkkkkkkknkkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknknkknkknkkknkkkkkkkkkknkkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkunkkxwwwwikkuwunwkwwktikwnwnwwnkkknwwittkiwwnwnnkkkknkkkkkntkkkktnnkknkkkknknknnnnnnnnnnnnnkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknnkkkkkknkknnkknkkknkknknkkkknkkkkkkkkkkknknkkkkkknkkkkkkkkkkkknkknknnnknknkkknknknknnkkknknknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknnkkkkkknkknnkknkkknkknknkkkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkrrrrrrrrrbrrrrrrbrrrrrrrrrrrrrikinnkkknirrrrrrrrbrbrbrrbrrriknkkkkkkrrrrrrrrrrrrrrbrrrbrbrrrrbrrrrrrrrrrrrrrrrrrssssssgsggbkkkkkkknkkkkkkkkkknknkknkkkkkknkkkkkkknkkkkknknkkkkkkkkknknkkknknknkkkkkkkkknkkknkknknknknknkkknknkkkknknkknkknknkknkknknkkkkkkkkkkkkkknkkkkkkkkkknknkknkkkkkknkkkkkkknkkkkknknkkkkkkkkknknkkknknknkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkrhhhqhhhhhhhhhhhhhhhhhhhhhhhhhhmkkknkkkivhhhhhhhhhhhhhhhhhhhmknknkkkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhtnknkkkknnkkkkkkkkkkkkknkkkkkkknkkknkkknknkkkkknknkkkkkkknnnkknkkkknknkkkknkknkkkkkkkkkkkkkknkkknknnkknknkkknkknknkkkkkkkkkkknknnkknkkkknnkkkkkkkkkkkkknkkkkkkknkkknkkknknkkkkknknkkkkkkknnnkkknkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkknknknkkihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhodknkkkknvhhhhhhhhhhhhhhhhhhhockkkkkkihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhoenkkknnkkkkknkknknkknkknknnknkkkkkkkkkknkknkknkkkkknknkkkkkknkknknkkkkkkkkkkkkknnkknknknnkknknknkkkknkknknkkkkknkknnnkknnkkknkknknkkknnkkkkknkknkkknknkknnnkkkkkkkkkkkknkknkknkkkkknknkkkkkknkkkknkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkmohhhhhhhhhhhhhhhhhhhhhhhhhoooldkknknkkbhohhhhhhhhhhhhhhhholdnknnkkkmohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhlcnknknkkkkknkkkkkkknknknknkkkkkkknkknnkkkknkkkknnkkkkkkknknkknkkkkknknnkkkkknkkknnkkkkkknknkknknknknknknknknknkknkkknkkkknnkknknknknknkkkkknkkkkknknkknkkknknkkkknkknnkkkknkkkknnkkkkkkknknknnknkkknknnkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkdpllhhhhhhhhhhhhhhhhhhholeepddwnkknknkkwdddqhhhhhhhhhhooeepwknkkknkkddjeoqhhhhhhhhhhhhhhhhhhleeeeeeelloohhhhhhhhhhhhhhhhl`nnnnknknknknnknknkknkkkkkknkknkkkkkkknknkkkkkkknnnknknkkknnkkknnnkkkkkkknkkkknkkknkkkkkkkknknkkknkkkknkkknkkknknkknnknkkkkkkkknknknkkknknknknknkkkknkkkkkkkkknkkkkkkknknkkkkkkknnnknknkkknkkkknknkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkx`fhhhhhhhhhhhhhhhhledtnnknnnnnnnnnkkkknshhhhhhhhhlej`nnnnniknknkkkkknghhhhhhhhhhhhhhhhoel`xnninitwudplohhhhhhhhhhhhheunnnnnnnknknkknkknnnkkknknkkkkkkkkkknkknkknnnkkkkkkkkkkkkkkkknkkkknnknkkkkkkkkkkkkknkkknkkkkkknnkkkknkkknknnnkkkkkkkkknkkknknkkkkkkknkkknknknknknnnnknknnknkkkkkkkkknkknkknnnkkkkkkkkkkkkknknkkknknnknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknnmhhhhhhhhhhhhhhhlcxxiixixxxxiinnnkkkighhhhhhhheeaxxxxxxxiiinnknkknnivhhhhhhhhhhhhhhhejxxixxxxxxxxxii`dohhhhhhhhhhoetxtxxinnnnknknknknknnnknkknknkkkknkkkknknnkkkkkkkknkkknkknknknknknkknknknnkkkkknkkkknkkknnknknkkknkkkknknkkknknknknkkkknkkkkkknknkkkkkkkkknknknkknknnknkkknknkkknkkkkknknnkkkkkkkknkkknkknkknknkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkknirfhhhhhhhhhhhhhhecuuwwuuuuuuutxnnnkkrvhhhhhhoeewuwwwuuuuutxxnnknkknrvhhhhhhhhhhhhhhoewwuwuuuwuuwuwuuuuwdqhhhhhhhhoew`wwwuxnnnkknkkknknknknknkkkkknnkknkkkknknnknnknkkkkknkkkkkkkknknkkkkkkkkknknkkkknkkkkkkknkknkknkkknknkkknnknnnkknkkkknknkkknkkkkknkkkkknkkkknkkknkknnknnkkkkknkknknkkknknnknnknkkkkknkkkkkkkkknnnkkknkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkknknitshhhhhhhhhhhhhhlcccccaaaa``wuxinnkrbhhhhhhoejdccaacacaaa`utxnnkknnrvhhhhhhhhhhhhhhllccaccaaaaaaaaaaaaaaaqhhhhhhhljcdcca`txnkkkkkkknknkkkkkknnnknkknnnknkkkkkkkknkkknnkkknkknknkkkkkknkknnkkkknkknkkkkkkkkkkknkknknnknkknknkknkknknknknkknknkkkknknkkkkkkkkkkkkkkknknnkkkkkknnnknkknnnkkkkkkkkkknkkknnkkknkknknknkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkniughhhhhhhhhhhhhhljjpjpppdcaa`utxnnirfhhhhhoeejjpjpjpppddcaaccxnkkinrhhhhhhhhhhhhhhhejjpjppppjpccaccccccddvqhhhhhheejjjjpawxinkkkknkkknknnnnnkknknknkknknnkknkknknknnkknkkkkknkknknkkkkkkuukknkkkkknkkkkkkkknkkknnkkkknkkknknknknkknknknkkkkknkkkkkknknnkkkkknkkkknkkkknknnnkknknknnknknnnkknkknknknnkknkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknnituvhhhhhhhhhhhhhoeeejejpdca`wuxinnrmhhhhhoelpjejejejjjdda`ctnkkkkxnrhhhhhhhhhhhhhhoeeeeejejpdpcaaa`aaaccddmhhhhhheeeeejpc`cdannknknkknknxa`cackknknnnnkccnkcaknkkknknkkkknkkknknkkkkkkkkktkkkkkkkkknkkkkkkkkkknkkkknkknkkkkkknknknknkkkknknknkknkkkkkkkkkkkkkknknknknknknknkkkknknknnknknnkkkknkkknknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkniitshhhhhhhhhhhhhheeeejjpc`wutxinnrshhhhhoejcdpeeeeeejpc`aaautnnkttishhhhhhhhhhhhhhleeeeeeljpccwaa`uwwacaacsqhhhhoeeeeeejcwxunknkkkittkkktkntktnknxtinknndknwnkkkknknktitniikkkntxkkkkkxxkxkkkitxkkkknknkknxxxkxnnnkitxknntkttnknknknknnkkknkknkkknknkkkkkkknknkkkkknkkknknknnkknknnknknnknknnkkknkknnkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknknnirhhhhhhhhhhhhhheeeeepc`utxxinnighhhhhoepcapjeeeeejjp`wwwatxkknt`rmhhhhhhhhhhhhhhleeeeeejpc`ata`uxxca`ccwwmhhhhleeeeejpawxunkknkktttwnnkkktkkkn`uuu`nknn`cknnnkkkkkkt`xaxuikn`xx`nkk`ttaukk`uxw`nkkkkkkknwuu`xwknntxuiki``ut`xkknkknknnnknkkkkknkkkkkkkknkkkknnkknkknnkkkkkknknnknnnnknknnknnkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknknnknivhhhhhhhhhhhhhleeejpauxinnnnrbqhhhhoedwiwapjeeejjdjtxinunnnkkktrfhhhhhhhhhhhhhheeeeeeeejwuwctnnni`uuwcutshhhheeeeeejpauxuknnknkua`uknnkktnknn`ttuaxknn`wknkxaaacakkckxkkxkxkkkktktnkkkwki`ttxaxnwaaa`tkttntktkkn`autkktnknkwkknknkkkkkkknknkknkkkkkkkknnnknkknkknknknnkknkknkknknknnnnknknnkkknnkkknkkkkkkkkkkkkkknkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknknknkknknknshhhhhhhhhhhhhoeeejd`uinnkkrrqhhhhhednuxucpejejpda`xinntnkknnkxrhhhhhhhhhhhhhhoeeeeeejpaux`x`nnnx`ttuuiighhhheleeeejp`tiunkntktxnnwkknkntknkx`ttttnnkwxttkkkkkkkkknaktkktktkkkktktknnktkx`ttttnkknkkkkkxxkuntnkunkntkkunknkwnkkknkknknnknknknknkknnknkkknknnnknknnkknknknknknnnknkkkknkkkkkknkkkkknkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkknknknknkbhhhhhhhhhhhhhheeejd`tinknrbqhhhhoejnnu`wdjejjjauxxnnnkuknkknnbshhhhhhhhhhhhhhleeeeeejc`titni`knkcxkniknrhhhoepjeeejd`titnknukwkkn`nknkktkknncxkknkktxnkcnknkkknkkkaktkktkitkkuxkn`knw`nkaxnnnnkkkkkkkktxntntnnukktxkkx`nkuinnnknknknkkkknnkkkknnkkknnknknkknkkkkkknknkkkkknknkkkkkkkknnknkkkkkkkkkkkkkkkkkkkknkknkkknnkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknknknnknknkkknnnfhhhhhhhhhhhhhleejd`tnkkibqhhhhheeinnxajjjepdadd`xknwcccwkntarmhhhhhhhhhhhhhheeeeeeepcwx`unkcanknwcwxknrhhhoecpeeepcwwccccaxkicctuwkntcccnnknwa`xkkaakkackkknkknnaakuikakkiacxknknacxwwnnua`xnknkkkkkiawkanxwkuccicxktn`ciknkknknknknknkkkkknkknnnknnknnnnnkknnnkknknknknnnknnknknkkkkkkkkknknknnkkkkkkkkkkkkkkkkknknknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkknnknkknmhhhhhhhhhhhhhoeejpauxnirfhhhhoeltxnit`cpjpd`utnnkknnnknknkknrqhhhhhhhhhhhhhoeeeeeejpauxknkknnknknknnkkrhhhld`djjjpcwxnnknknnknknknkknkkknkknnnnnkknknkkkknkknkkknkkkkkkkkkkkkkkkkknnnkkknkknkkkkkkkkkkkkkknnnkkkknnktkkknkknnnknnkknkknkknkknkkknkknnkkkknnnnknnnknknkknknknnnknkkkknkkkknkkkkkknkkkkkkkkkkkknkkkkknkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkknkkkkkkknknknnknkknknknbhhhhhhhhhhhhhheeepcuxirvhhhhheliknxtwcpppcawxinknknknnknknknbhhhhhhhhhhhhhhoeeeeeejp`unkkkkkknknknknknghhhe`wcpjjpattnnnnnkknknknknnknkknnkknkkknkkkkkkkknknkknkkknkkkkkkkinknknkknknnnknkknknkkkkkkkkkkknkknknnkknxpctkkkkkkknkknnknnkknnkknknknnnknnnnnkkkkknknkknknkknnkknknknnkkkkkkknknnknkknkkkkkkkknnknkknknknknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkknkkkknnkkkkkkkknknknnkkkkkiqhhhhhhhhhhhhhleejcwrrvhhhhheennnitwadppc`utxnnnkkknknnknnkrshhhhhhhhhhhhhhleeeeeejdwuxinkknnnnknnknnnnmohetuapjjd`xxnnknnknkknknknknnnkknknknknknnkknknnkknnknknkkkkknkkkknnnknkknnknnknnknkknkkknnknkkkkknnnknknknknnnkkkkkkknnnknnnnnknnnkknkknkknnnnnnnnnkknknnnknnkknknkknkknnkkknnnknknkknkkkkkkkkkkkknknkkkknknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkknkkkkkkkkknkknkkkknknkkknnnknmhhhhhhhhhhhhhoeejdtrvhhhhhelnnnitwadppd`uxnnnknnnnknnnknkkrvhhhhhhhhhhhhhheeeeeeepcwxinnknrgvbrknnnnknncjlit`dppcwxnnnnknknnnknkknkknknknknnnnkkkknnnnkknnkkknkkknkkknkkkknnnnnnknknnnnknkkkkknknkkkkkkkkkkkknnkknnnnnnnknkkkkkknnnknnkkknknnknnkkkknknkkkknnknkkkknkknnnnninnkkkkknkkkknknknkknkknkknkkkknnnnknkkkknnkknnnkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkknghhhhhhhhhhhhhheeesrvhhhhoeeinnxtwadppcawtikkkkkkknkknnknknrhhhhhhhhhhhhhhoeeeeeejp`uxnnnnnrqhhwxknnknnkkkkixwapdauinnknknkkknknnniirnikkknkknnniirrggsgikknnnknnkknkkknirrrgsggnnknkknknkkkkkknkkkknkkkkkkknknknirrbsssbnnnnkkkknnnnniiiikkkkkkkkkkknnknnnkknknnnnnnirrrsssggrnnnkkknkkknknnknknnkknkknrrrbsgsgrnnnkkkknrsgrkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknnkkknnknnhhhhhhhhhhhhhhlewrvhhhhhelinnitwadppdawtinkkkknkkknkknknknghhhhhhhhhhhhhhoeeeeeejd`tiinknrshhhetkkkkkkkkknnxwcdd`uiknknnnnniiirrrssvqsikkkkknkrrgvhhhhhhminknknknknnknrbmqhhhhhhmiknknknknnnknkkknnknkkkkkkkkirrsvhhhhhhqgkknnrrrgssgssvmsnknkkknkkkknnnkkkknknknirbsmqhhhhhhhfsrkkkknkkknknnnkknknnnrbmfhhhhhhhfsrnnknrghhhtkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkknnfhhhhhhhhhhhhhoprvhhhhheennnxtwaddpdawxiinkkkkkknknknkknnrmhhhhhhhhhhhhhheeeeeeejcwxinnkirqhhoekkkkkkkkkkknxuaccwxrrrrrrssssvvfhhhhhhlankkkkirgqhhhhhhhhhqxnnknknkknrbmhhhhhhhhhhhgknkknnkkknknnkkkknkkkkkknrrsqhhhhhhhhhhfnkrshhhhhhhhhhdakknkkknkkkknnnknkkknrrgvhhhhhhhhhhhhhhmnknknnknknknnnkknrbmhhhhhhhhhhhhqvsbrgqhhoekkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknnknknghhhhhhhhhhhhhhrshhhhhelinnitwacppdawxinnnnkkkkkkkkkkknkkrfhhhhhhhhhhhhhheeeeeejpcuxinnirmhhhopkkkkkkkkkkknit`aaugvfhhhhhqhhhhhhhhhhhetnnknrrvhhhhhhhhhhhhhinnnknnnrsqhhhhhhhhhhhhhwknkknknknkknknknkknkkkirsqhhhhhhhhhhhhhdnrfhhhhhhhhhhlakkkknkkknkkkknnnnnirgfhhhhhhhhhhhhhhhhhfnnkkknknnknknknrsqhhhhhhhhhhhhhhhhhhhhhhodkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkrhhhhhhhhhhhhhhshhhhheeinnituadppdawtinkknwctkkkkkkxkkkknrhhhhhhhhhhhhhhoeeeeeejp`uinnnrghhhhlankni`dxkknknixw`wxshhhhhhhhhhhhhhhhhhljnnnnibqhhhhhhhhhhhhhqonntnnirshhhhhhhhhhhhhhhhwcxnknknknknkkkknkknkrbvhhhhhhhhhhhhhhqhurhhhhhhhhhhhexkknxcwkkkkkkkkkknrbmhhhhhhholeedqhhhhhhhqnnnnknknnnnnnrshhhhhhhholeeelhhhhhhhhhhlckkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknnknnvhhhhhhhhhhhhhhhhhhlexnnixwacdpda`uxnnkkkukknkkkkiwknkkrghhhhhhhhhhhhhhleeeeeejdwxinnrrqhhhhexkniiiiwnkkknnxtutxghhhhhhhhhhhhhhhhhheanknrrqhhhhhhhhhhhhhhho`i`iirvhhhhhhhhhhhhhhhhhlpnknnwdpaknnknkknknrbqhhhhhhhhhoeeehhhhvshhhhhhhhhhoennknnkukkkkkkkknnrsqhhhhhhhlepuxnshhhhhhhhonknnknnknknrgqhhhhhhhledunkiwfhhhhhhhhlwnknnknkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknknnmhhhhhhhhhhhhhhhhhlecxiitu`ddpdawtxnnkkkkunkknkkk`kkkkkrvhhhhhhhhhhhhhheeeeeeejpwtnxrbqhhhhoeuinxttt`nnnkknnxxixrcllhhhhhhhhhhhhhhhetiurbqhhhhhhhhhhhhhhhhhjtxwrshhhhhhhhhhhhhhhhhhoaxinnnkuknknknxtxnrshhhhhhhhhheecxxumhhvvhhhhhhhhhhljtxiiinwknknnkttirshhhhhhhhledtnirmhhhhhhhhhpxnnitiutnnrqhhhhhhhoewnniituxvhhhhhhheuniixxinknknkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkknkkkkkkkkknkkrhhhhhhhhhhhhhhhhlepwtttu`cpddawuxiinnkkktknkknnkwkkkk`rqhhhhhhhhhhhhhheeeeeeejduxrrsqhhhhhlpudtuw`wainnknknnninxwccashhhhhhhhhhhhoextrbqhhhhhhhhhhhhhhhhhhewurshhhhhhhhhhhhhhhhhhhodttxnnnunknknnuturshhhhhhhhhheedwxtuwfhqhhhhhhhhhhhedacxtttwinnkndubrvhhhhhhhhledw`crbqhhhhhhhhhld`xxaauuwrshhhhhhhhepuiitu`c``qhhhhhhexix`wuuinnininnkkknkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknnkknkkkkkkniqhhhhhhhhhhhhhhlejd`wuwacdpdawtxinnnnknktknnkknkunnnxibhhhhhhhhhhhhhhoeeeepdcwtrrgfhhhhhhhl`iiaw`awainnnkkkknknknwnnrhhhhhhhhhhhhljubbqhhhoelvhhhhhhhhhhhhecrghhhhoeeqhhhhhhhhhhhhojawutxnuknknkna`rghhhhhhhhhoee``ju```shhhhhhhhhhhhoew`awwwuainnnunirvhhhhhhhhoedwwwprmhhhhhhhhhhopjtxwnnntrqhhhhhhhhetwuww`adccshhhhhoeutu``wttnkikkkkkknkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkknkknknknkkkkknshhhhhhhhhhhhhoeeedc``adppda`txinnnkkkkntkknnknnunknuishhhhhhhhhhhhhhsrbrrrsssmvhhhhhhhhhhetitaacc``innknknkkknnnukkrhhhhhhhhhhhhedgrfhhhlectbhhhhhhhhhhhoegbqhhheecitmhhhhhhhhhhhoepcautiwnkunkwirshhhhhhhhhhleaaadacpdshhhhhhhhhhhhlecddccawaxnnntirvhhhhhhhhhedc`aa`rhhhhhhhhhhhoep`u`xnntghhhhhhhhhex``ccdppddwfhhhhoea``ccawunniknkkkknknkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkknkknkkghhhhhhhhhhhhhheeejpccddddawuxinnnnnnkkkukkknnknwnnnnrfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhoeitcccda``inknknknkkkkkunirhhhhhhhhhhhoecrvhhoeecxirhhhhhhhhhhhocrfhhheexnnbshhhhhhhhhhhlejjdauxwnkuknwrshhhhhhhhhhoejw`adpjlashhhhhhhhhhhhejjjejjd`axnnnrrvhhhhhhhhheexp`wa`shhhhhhhhhhhoepdaaxnnbshhhhhhhhhewdcpjjjjdcamhhhhoedddpdcwunkxkkkkkknkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknkknknnkkkknkrqhhhhhhhhhhhhhleejjppppdcwtxnknkknkkkkkukkknknnwiknkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhlpdjacdpjjpd`kknnnkkkkwcddgshhhhhhhhhhhlershhheedpxtbhhhhhhhhhhhorshhheeuinnrmhhhhhhhhhhhleeejdppddddnkrbqhhhhhhhhhhed`pjejjeewshhhhhhhhhhhheeeeejjejppdnnrvhhhhhhhhhoeutwpjlcshhhhhhhhhhhoejjpjdxtgvhhhhhhhhhljjejljjjpp`ghhhhlepjjejcawnxxknkknkkknkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknknkknnnkkknnmhhhhhhhhhhhhhoeeeejjjdc`txnnnnnnnnnkkkwunkkkknk`nnrghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhewuwcdpdauxnnnnkknknnkkkkkimhhhhhhhhhhhegbhhheedwtirshhhhhhhhhhhsghhoeeauxxwrfhhhhhhhhhhheeeejpcwxnnnnirqhhhhhhhhhhlewadjjjeljsvhhhhhhhhhhhleeeeeejdatikkrshhhhhhhhhhepu`adpjpshhhhhhhhhhheeejpc`tirvhhhhhhhhhhjjjeejdawttrfhhhljjjejpdwxnkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkknkkknkkkkghhhhhhhhhhhhhheeeejjpcwuxinknkknknkkkkxuinkknknnnkrmhhhhhhhhhhhhhhlelllloohhhhhhhhhhhhoewwcpjjdatxnkkkkknkkknknkkrvhhhhhhhhhhodrfhheejcwtxrmhhhhhhhhhhhrqhhlejawxtubhhhhhhhhhhhheeeeejd`tnkknrvhhhhhhhhhhoeccdjeeejjpbvhhhhhhhhhhhleeeeeejc`tinrbhhhhhhhhhhoeu`cpjjljahhhhhhhhhhoeeeeepawxivhhhhhhhhhhoeeejpawtxiimhhhejjeeepcwxnkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknknkknkkkrqhhhhhhhhhhhhhleeejjc`uxnnnknnnnkkkknnnknnkkkknknnrfhhhhhhhhhhhhhheeeeeeeelllhhhhhhhhhol`cpjjjd`tiknnnkkknknknkknrhhhhhhhhhhhorshhlelpauxxrfhhhhhhhhhhmmhhleepcwtxrmhhhhhhhhhhhoeeeeejd`txnnrshhhhhhhhhhhejcpjjeeejpcrqhhhhhhhhhhheeeeeejjcwxnirqhhhhhhhhhhep`cpjeejpdvhhhhhhhhheeeeejjcwtrvhhhhhhhhhhqeeejd`tinnnshhheadjejpcuxnkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkknkknkkkkkrvhhhhhhhhhhhhhoeeejpauxinnnnkkkknkkkknnnnknkknnnknrhhhhhhhhhhhhhhoeeeeeeepc`uaqhhhhhhhljdpjljjcwxnnkknknkkkkkknnnshhhhhhhhhhhbghhoeejd`uxtbhhhhhhhhhhhshhoeeepcwutrfhhhhhhhhhhhleeeeejpatxnnbqhhhhhhhhhhoedpjeeeejpcurhhhhhhhhhhhoeeeeeeedauinrmhhhhhhhhhhoecdpjejejd`ufhhhhhhhleeeeeejd`tifhhhhhhhhhhhheejcwtinkkkhhoe`cjjepauinkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknnknknibqhhhhhhhhhhhhhheeejc`tinkkkkkkkkkkknnknknnnnkkknnishhhhhhhhhhhhhhleeeeeeejdawwuvhhhhhhejpeeelpcwxnnknkkknknknknkrmhhhhhhhhhhqrhhheeepcwutrshhhhhhhhhhfqhheeejpawugbhhhhhhhhhhhheeeeeejd`uinrmhhhhhhhhhhhlepjeeeejjd`bshhhhhhhhhhhleeeeeejdwtirbhhhhhhhhhhhlecjjeeejpawxicooooleeeeeeeejd`tishhhhhhhhhhhhpejdwxnnnnkneejwapjjd`tinkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkknknnknkkkkknkkirvhhhhhhhhhhhhhhhleejdwxnnkknkknnkknnnnkknnknknkkkkrvhhhhhhhhhhhhhheeeeeeeejpdaaashhhhhoeeeeeejpauinknknkkknkkkkknrfhhhhhhhhhhmmhhleejdauturvhhhhhhhhhhqhhoeeeepd``tshhhhhhhhhhhheeeeeejp`tirghhhhhhhhhhhoejjeeeeejdauxmhhhhhhhhhhheeeeeeepcwxnrfhhhhhhhhhhhepjleeejpcwxnkkncppleeeeeeeejdwtibhhhhhhhhhhhhhjjd`xnkkkkknnit`dpjd`tnnkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkkrrvhhhhhhhhhhhhhhhhleejd`tnnkkknnknnkkknnkknnnnnnkkkkrqhhhhhhhhhhhhhoeeeeeeejjpdddc`vhhhhleeeeeejd`tnnnkkkknkknknkknrhhhhhhhhhhhshhoeeejdawwwrhhhhhhhhhhhhhoeeeejpda`rfhhhhhhhhhhhleeeeeejdwtirfhhhhhhhhhhhlejeeeeejpawxrvhhhhhhhhhhoeeeeeeepauxrghhhhhhhhhhhlejjeeeejd`uxinnnntwcpeeeeeeejdwxnrhhhhhhhhhhhhhhjp`unnknkknknxucppcwtnnkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkknknkkkkirvhhhhhhhhhhhhhhhhhheejp`uinknkknnknnnkknkkknknknnnknbhhhhhhhhhhhhhhoeeeeeeejpdcccc`mhhhhleeeeeepcwtiknknknnkkknkknnshhhhhhhhhhffhheeeepdaw`gghhhhhhhhhhhhhleeeejjdcwbhhhhhhhhhhhhleeeeeepcwxrghhhhhhhhhhhoeleeeeeepc`xxrhhhhhhhhhhhleeeeeejd`tirfhhhhhhhhhhhlejeeeeepcwtinnkinxwcpjeeeeejpawxnnmhhhhhhhhhhhhhhjcwxnkknkknniu`ddcuxnkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkknknkknkkknrvhhhhhhhhhhhhhhhhhhheeepcuinnnkkntknnnknnkkknnknnkknimhhhhhhhhhhhhhhleeeeeeeejcwwwaushhhoeeeeeejepwxnnnknknknnknkkkrvhhhhhhhhhhqhhleeeepca``bmhhhhhhhhhhhhoeeeeejppdbmhhhhhhhhhhhoeeeeeeejawxrfhhhhhhhhhhhleeeeeeejpauxrghhhhhhhhhhheeeeeeejdwtrghhhhhhhhhhhhejeeeeejdauinnknnixuadjeeeejjd`uinkrhhhhhhhhhhhhhhqd`uinkkkkkkitwac`uinnkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknnknnrshhhhhdfhhhhhhhhhhhhhoeejc`xnnknkainnnnnkkikkkknkknkurvhhhhhhhhhhhhhheeeeeeejdawuttwbshhhoeejeeejdcuxnkknknknkkkknknrqhhhhhhhhhhhhheeeejpcaawrqhhhhhhhhhhhhleeeeeljjarqhhhhhhhhhhhoeeeeeejpaurghhhhhhhhhhhheeeeeeeepcwxirmhhhhhhhhhhheeeeeeepcuxrmhhhhhhhhhhhleeeeeeepdwxinnnkknitwcdjjjjpd`uxinnnmhhhhhhhhhhhhhhqcwxnnnnknnnxu``wtikkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkkknrshhhhhljmhhhhhhhhhhhhhoeejdatinknkanknnnuunkkxxknuini`rhhhhhhhhhhhhhhoeeeeeejed`tiiwwishhhljjjeeejdcxinnnkkkkkiuxukuighhhhhhhhhhhhhoeeeeejcaagghhhhhhhhhhhhoeeeeeejjjwghhhhhhhhhhhheeeeeeejd`trfhhhhhhhhhhhoeeeeeeejpauxnrqhhhhhhhhhhleeeeeejd`uirhhhhhhhhhhhhleeeeeejpawxnkknkknnxuwccdddcautinkkkrqhhhhhhhhhhhhhhpauxnknkkknixuutxnnkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknknknknrshhhhhletrhhhhhhhhhhhhhheeepcuxnkkxxknnkwutwkntwnnutnnsghhhhhhhhhhhhhhoeeeeeeejd`xinuanshhhedppjejpccxnnnnnnnknna`waubmhhhhhhhhhhhhheeeeejepcabmhhhhhhhhhhhhleeeeeejjdbmhhhhhhhhhhhheeeeeeejcwrbhhhhhhhhhhhheeeeeeeejcwtinghhhhhhhhhhhleeeeeejdwtrshhhhhhhhhhhheeeeeeejcatinnkknknnnitu``a`wuxinkkkknghhhhhhhhhhhhhhqp`tinknkkknnxxinnkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkknknknkkkkkknkkkkkknkkrshhhhhleukrqhhhhhhhhhhhhhleejc`tnnkukkknn`da`kknunknuknrmhhhhhhhhhhhhhhleeeeeejpwxinnntishhheuccjjjpacinknwdddd`ktukukrvhhhhhhhhhhhhleeeeeejec`rqhhhhhhhhhhhoeeeeeeelparqhhhhhhhhhhhleeeeeejpawrmhhhhhhhhhhhheeeeeeejpauiirmhhhhhhhhhhheeeeeeejcwxrvhhhhhhhhhhhoeeeeeejpautinknknkknnnnxtttutxinnkkkkkkfhhhhhhhhhhhhhhhd`tnnnknknnnnnnkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknrbqhhhhleuknnmhhhhhhhhhhhhhheejpauinkuknkkutnnwnknunkkunkrfhhhhhhhhhhhhhheeeeeejjpwxnnnkunmhhlexcapjjd``inkknnnknknutkunrhhhhhhhhhhhhhleeeeejjjcughhhhhhhhhhhhleeeeeeejpgghhhhhhhhhhhhleeeeeejd`trqhhhhhhhhhhhleeeeeeejc`tinrqhhhhhhhhhhoeeeeeejpauirhhhhhhhhhhhhoeeeeeejp`tninnkknknkknnnnxiiinnnnknnknknqhhhhhhhhhhhhhhjawtnknkkkknknkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkknknknkkkkkkknkkkkibqhhhhoe`knnxghhhhhhhhhhhhhheeepcwxiniuknk`kkiaknn`nnuuknrhhhhhhhhhhhhhhoeeeeeejdduinnknukgqhlan``dppcw`irikknnnnnnuuktnshhhhhhhhhhhhoeeeeeejjdabshhhhhhhhhhhheeeeeeeejdbmhhhhhhhhhhhoeeeeeeejc`bghhhhhhhhhhhheeeeeeejpcuxnighhhhhhhhhhhleeeeeejd`uighhhhhhhhhhhhleeeeeejc`tnkknknkknkknkkknnnnnnnnnknknkkrqhhhhhhhhhhhhhhjautnknkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknrbqhhhhoedniniusfhhhhhhhhhhhhhleepc`tinnakkkidcuwwnnicdxdtishhhhhhhhhhhhhhleeeeeeejjpankucddcadejppjjddjpdbsqmnkkknnxd`kdrmhhhhhhhhhhhhleeeeeeeec`rfhhhhhhhhhhhlleeeeeejd`rqhhhhhhhhhhhoeeeeeeepaurshhhhhhhhhhhheeeeeeejd`tinrmhhhhhhhhhhheeeeeeejc`trshhhhhhhhhhhheeeeeeepcuinnkknkknknnnkkknnknknknnknkkkknshhhhhhhhhhhhhhod`uxnnkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkknknkknkknkibqhhhhoednnixu`amhhhhhhhhhhhhhoeejd`uinnxxnkknknkkkknknknkrvhhhhhhhhhhhhhheeeeeeejcwxnnkkkkkknkknntwcdc`tibqhhcnkkkkknnnkrqhhhhhhhhhhhheeeeeeejpctbhhhhhhhhhhhheeeeeeeepdgghhhhhhhhhhhheeeeeeejdaurfhhhhhhhhhhhoeeeeeeepawxnnbhhhhhhhhhhhoeeeeeejpauirvhhhhhhhhhhhheeeeeejdatinnikknkkkkknknkkkkkknknnkknknknnmhhhhhhhhhhhhhhlc`tinknkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkirvhhhhhedkniiuwcdshhhhhhhhhhhhhheeepauxinnknkkkkknnkknknknnrqhhhhhhhhhhhhhheeeeeejpauxnnnknknkkknnnxwcdawxrvhhoeikkknknknnbhhhhhhhhhhhhleeeeeeejdabshhhhhhhhhhhoeeeeeeejparmhhhhhhhhhhhheeeeeeejcwxrhhhhhhhhhhhhleeeeeejp`uinrshhhhhhhhhhhleeeeeejd`uirvhhhhhhhhhhhheeeeeejdwtiknnnkkkknnknknkkkkkkkkknnnnkkkknnvhhhhhhhhhhhhhljcwtinkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkirvhhhhoejknnxuwcdp`fhhhhhhhhhhhhhleepcwtinnnnnknnkkkkkkknkknghhhhhhhhhhhhhhoeeeeeejd`tinknkkkkkkkknitwacaurshhhlpnknnnknknimhhhhhhhhhhhheeeeeeeepcwrfhhhhhhhhhhhleeeeeejjdwrfhhhhhhhhhhhleeeeeejpaurghhhhhhhhhhhheeeeeeejcwxinrqhhhhhhhhhhheeeeeeejdwtnrhhhhhhhhhhhhoeeeeeejcwxnknkknkkkknnnkkkkkkkknkknknnnnkknnifhhhhhhhhhhhhhedauinnkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkknkkknknkkkrrvhhhhheliknit`adpdcshhhhhhhhhhhhhoeejdwtinnknknknknknknknnnishhhhhhhhhhhhhhleeeeeejdwtnnkkknnkkknknnxw`a`rbqhhhlwnnknnknnnrvhhhhhhhhhhhheeeeeeejdatbhhhhhhhhhhhoeeeeeeljpatbhhhhhhhhhhhheeeeeeeedatishhhhhhhhhhhoeeeeeejpawiirmhhhhhhhhhhhheeeeeeepcwxnrhhhhhhhhhhhhoeeeeejpawxnknnnknkkkkkkkkkknkkkrsrkknknnknknnbqhhhhhhhhhhhhejd`tinkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknnrvhhhhheennnixuadpdcabhhhhhhhhhhhhhheejdatinnnnknkknknknnnkknrfhhhhhhhhhhhhhheeeeeeepawinnkknknkknnnnnxtw`brfhhhoexknnninnnnrhhhhhhhhhhhhleeeeeeejcwrshhhhhhhhhhhoeeeeeelpcwbshhhhhhhhhhhheeeeedejdwtrmhhhhhhhhhhhoeeeeeejd`uiirqhhhhhhhhhhhoeeeeeejp`txnrhhhhhhhhhhhhoeeeeejd`tnikknkknnrnkkkknknkkknbhhmnkknnknkknishhhhhhhhhhhhljjcwxnnkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknrmhhhhhllnnnituacpdc`urhhhhhhhhhhhhhhleepcwxnkknnnnkknknkknnnnrhhhhhhhhhhhhhhoeeeeeejpatinkknnkkknkkknnnxtxrvhhhholnknnixxinishhhhhhhhhhhheeeeeeejpaurvhhhhhhhhhhheeeeeeljpaurvhhhhhhhhhhhleeeejrsaawxrvhhhhhhhhhhhleeeeeejc`tnrshhhhhhhhhhhhleeeeedddwtnnrhhhhhhhhhhhhoeeeeejdwxxnnkknnnrghgkkkkknnkkkshhhcnkknnnnknnimhhhhhhhhhhhoejpawinkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknnrshhhhhleunnixwacppc`uxrmhhhhhhhhhhhhhleejd`tinkknknknnnnknknnishhhhhhhhhhhhhhoeeeeeejd`xinkkkknkknnknnnnnrrvhhhhheannnxxtxinrmhhhhhhhhhhhoeeeeeeejc`xrhhhhhhhhhhhheeeeeeljc`trqhhhhhhhhhhheeeeebghhctirvhhhhhhhhhhhleeeeeepauxibqhhhhhhhhhhhheeeeelrsswinkrhhhhhhhhhhhhoeeeeejcwxnnkkknkrbqhhfkkknkkkknshhhenkkkknkkknirqhhhhhhhhhhoeejd`tnnkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkrshhhhhleunnituacpdd`wxnnshhhhhhhhhhhhhheejpauxnnnkkknknnnnkknkimhhhhhhhhhhhhhhleeeeeejcwxnnkknnnkknnknknnirvhhhhhhexnnxuwwuxirfhhhhhhhhhhhleeeeeejjawrshhhhhhhhhhhleeeeeelpawrbhhhhhhhhhhhheeeearqhhl`iivhhhhhhhhhhhleeeeejp`wrrmhhfhhhhhhhhhheeeeegbhhfikkiqhhhhhhhhhhhheeeeejcuxnknkkkirfhhhldkknkkkkimhhhlnnnnkknnnknishhhhhhhhhhoeejpauxnkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknrshhhhhletnnixwaddpc`wxiknrhhhhhhhhhhhhhheeejcwxnnknknknnnnnnknnrfhhhhhhhhhhhhhheeeeeejpaunnnnnnknkkkknkkkrrvhhhhhhoennxtwaawxibhhhhhhhhhhhheeeeeeejdaurvhhhhhhhhhhheeeeeeejpaurshhhhhhhhhhhoeeejrmhhoeunivhhhhhhhhhhhleeeeejd`trshhmhhhhhhhhhhoeeee`rqhhlcnnnvhhhhhhhhhhhheeeeepawxknnkkirvhhhoe`kkknkkkrvhhhounknnnkknnnnrqhhhhhhhhhoeeejdwxnkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknrshhhhhoeannixw`cppdauxinkkifhhhhhhhhhhhhhoeejd`txnnnnkknknknknknbhhhhhhhhhhhhhhoeeeeeeedaunnnkknkkkwcxnnirbqhhhhhhhldnitwacawtrghhhhhhhhhhhheeeeeeejcwxrhhhhhhhhhhhheeeeeeejcwtrmhhhhhhhhhhhleeegghhhedinivhhhhhhhhhhhleeeeejcwrbqhhshhhhhhhhhhleeecrvhhoe`kknmhhhhhhhhhhhhoeeejpauinkkknrshhhhepnnkknnnkrfhhhhdniiiinnnknnnshhhhhhhhhleeejpatikkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkknkkkkkkkkkkkkkkkkkkinrshhhhhhejknixu`cpdcawtinknknfhhhhhhhhhhhhhheejpauxnnkknnknknnnknimhhhhhhhhhhhhhhleeeeeejd`tinknnknknkntnrrshhhhhhhhheuitucpdauxrfhhhhhhhhhhhleeeeeejpaurghhhhhhhhhhhoeeeeeelpcwxrvhhhhhhhhhhheeebbqhhleunnnmhhhhhhhhhhhheeeeeparbqhhvmhhhhhhhhhhleepbshhhepnnkkghhhhhhhhhhhhheeeepauxnkkirshhhhlenknnnknnnrhhhhhjixttxinknknnghhhhhhhhheeeeepawxnkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkknkkkkknnnkknrrghhhhhhoeitxxu`ddpdawwuxkkktrshhhhhhhhhhhhhhoeepcwxinkkntxuntinknrfhhhhhhhhhhhhhhleeeeeepcwxnnittnknnnnrrgfhhhhhhhhhoewwuapjjdairhhhhhhhhhhhhleeeeeejd`trmhhhhhhhhhhhleeeeeejdauxrfhhhhhhhhhhheebbqhhoeaxnnkshhhhhhhhhhhhqeeej`rbqhhorvhhhhhhhhhhleprshhhletnknkiqhhhhhhhhhhhhqeejp`tinnirvhhhhleukkniniiinrhhhhhhutuuuxinnnknrhhhhhhhhheeeeejcwxnkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkknnnxkkktnixikirvhhhhhhhopawtu`cppdcwuwuwxnktxshhhhhhhhhhhhhhhjejd`tinnkn`uw`t`nkrghhhhhhhhhhhhhhhleeeeejpcuxikutuwnknirgfhhhhhhhhhhhlj`p`djjpcwrghhhhhhhhhhhheeeeeeejcwxrqhhhhhhhhhhheeeeeeejdwtirhhhhhhhhhhhhvrbqhhoejtnnnirhhhhhhhhhhhhhvmwrrmqhhoerhhhhhhhhhhhfsrshhhleannnnnimhhhhhhhhhhhhhfcppatiirbfhhhhoewnnnixtutxighhhhhhjw`awtnnnnnnrhhhhhhhhleeeeejd`tikkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkknnkkkkininitrbvhhhhhhhhhdxwuwcppdcwtx`cutnnnrshhhhhhhhhhhhhhhqplddpcccwkxtkuntnirfhhhhhhhhhhhhhhhleeeeeejjdtnkwawtirrsfhhhhhhhhhhhhhed`adpjjcwxrmhhhhhhhhhhhoeeeeeejpauighhhhhhhhhhhoeeeeeejpcuxirhhhhhhhhhhhhhvhhhhleaxiknxtvhhhhhhhhhhhhhhvvhhhhheprhhhhhhhhhhhhvfhhhoepxiknnxxxqhhhhhhhhhhhhhqsgrrbsfhhhhhoednnkixww`uxrshhhhhhqaacauinnknighhhhhhhoeeeeeejd`xinkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkknnkkxnnirrgqhhhhhhhhhhmt``cdppc`uxwikntknirfhhhhhhhhhhhhhhhhqscawxnkkkxtktnxrrvhhhhhhhhhhhhhhhhqcpeeejc`xiitrrrbsvhhhhhhhhhhhhhhhoewcjjjjjawxrfhhhhhhhhhhhleeeeeejc`trmhhhhhhhhhhhleeeeeejdatinrhhhhhhhhhhhhhhhhhledwxinxtwshhhhhhhhhhhhhhhhhhhhelirhhhhhhhhhhhhhhhhoejuxinixtuushhhhhhhhhhhhhhhhhhhhhhhhhoecnknitu`aawtrshhhhhhhqddcwxnknnrfhhhhhhhleeeeeejd`tnnkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkknkkxrrgvhhhhhhhhhhhhhfgbuppc`uxiunirrrbsfhhhhhhhhhhhhhhhhhhhfsbrinknxxirrbsqhhhhhhhhhhhhhhhhhhqmsrrrrrrgsgmvqhhhhhhhhhhhhhhhhhhoe`djejejatxbhhhhhhhhhhhheeeeeeejcwtrfhhhhhhhhhhheeeeeeejcwxnnifhhhhhhhhhhhhhhhlejauxiiuw`wqhhhhhhhhhhhhhhhhhhlexkifhhhhhhhhhhhhhhheeauxxixww`wumhhhhhhhhhhhhhhhhhhhhhhhoedkkiixu`cca`trvhhhhhhhhmcd`tnnnrshhhhhhhleeeeeeejd`xnkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkknkkkkniinkkkngqhhhhhhhhhhhhhhhhhhqhpauxnktarvqhhhhhhhhhhhhhhhhhhhhhhhhhhhfskiaurvhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhejejeejjdddgshhhhhhhhhhhoeeeeeejpaurbhhhhhhhhhhhoeeeeeeepcuinknmhhhhhhhhhhhhhhleed`uxitu`awgqhhhhhhhhhhhhhhhhlewnnkmhhhhhhhhhhhhhheep`txxxuwa`wtimhhhhhhhhhhhhhhhhhhhhhlednnkxxu`cccauxrvhhhhhhhhhfgubrrbmhhhhhhhlejjeeeeejdwtnkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkknghhhhhhhhhhhhhhhhhhhhhj`tinkkkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhowkkkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhejjeeejjcuxrvhhhhhhhhhhhleeeeeejd`tishhhhhhhhhhhleeeeeejd`uxnnknhhhhhhhhhhhhhleejd`uttw`aawxshhhhhhhhhhhhhhheeaxnniiqhhhhhhhhhhhoeeedautttwaawuxinahhhhhhhhhhhhhhhhhhoeeunnnixuwaccawtirqhhhhhhhhhhhhvvfhhhhhhhhlepdjeeeeepcuxnnkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkrhhhhhhhhhhhhhhhhhhhhhewxnkkkkkhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhodnkkkhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhoejjeeejpauxnhhhhhhhhhhhheeeeeeejcwxivhhhhhhhhhhheeeeeeejd`tnnknkrhhhhhhhhhhleeeejdawuw`aawuxiwhhhhhhhhhhhhoeecwttxtuwhhhhhhhhhhleeejpawuw`aa`wtnnnn`ohhhhhhhhhhhhhholejxnnnxtu`cddawuxnrhhhhlllohhhhhhhhhhhhhhlee`wcjeeeejdauinkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkteeeeeeeeeeeeeeeeeeeeewxnnkkknkeeeeeeeeeeeeeeeeeeeeeeeeeeeeeepnnnkkeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeejd`tinneeeeeeeeeeeeeeeeeepauxnkdeeeeeeeeeeeeeeeeepcuxnnknknnoohhhooleeeeeeepcaaaaa`uxnnnxoohhhhhholeeejda`www`adohhhhhhoeeeeeepdaa`acawtxnnnnitplohhhhhhhhoolee`tttttu``ccdc`txinihhhel``dllohhhhhhhholeeaixwdjeeeejcwxikkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkknnnixuwadpeeeeejdwtinnnkkkkkknknnniixwapeeeeeeeeeeeeepc`txinnnnknknnkniiuwcpleeeeeeeeeeelpawxinnnnnnnnixxxxuuw`adpjjeeeeeeepcwtnknknnnniuadleeeeeeejp`tinkkknknixwdjeeeeeeejd`uinnkkknkn`peeeeeeeeeeeejpddccawtiiknniclllleeeeeeeejpccccccccpllleeeeeeeeejpdccca`uiiknknnxwajeelllleeeeepc`wwww`acddda`utnnnnglejxnxwdjeeelllleeed`knit`djeejjdauxnnkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkknknnixuwadjjeeeeejdawtxinnnkknkknnnixtu`cpleeeeeeeeeeeejpc`uuxiinnnknnnixuwapjeeeeeeeeeeeeejc`utxiniixxxxtuuw`acdppjeeeeeeeejpatxikknkkkniuapjeeeeeeejdwtnnkkkkknit`djeeeeeeejd`tnnknnknknniuapeeeeeeeeejjjdcawtinnknnixwcleeeeeeeeeejjpppdcawuucpjeeeeeeeeejjpdc`uxinkkkknitwcpjeeeeeeeeejppdcccddppdc`uxinkkkiuuxnit`djeeljjdc`iinnnnxwcpjeejpawxnnkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkknitw`cpjjeeeeeejjda`wtxnnkkknknixtuw`cpjeeeeeeeeeeeeeejpca`wutinnknnitw`cdjjeeeeeeeeeeeeejpcawwuuuuuwww``acddpjjjeeeeeeeeejd`tinnknkknnxucpeeeeeeejpcwinnkkknkiiuadjeeeeeejjawxnnkkknknknitadjeeeeeeeeejpdcwtinnknkkniu`djeeeeeeeeeeljjpdawttxuadjeeeeeeeejjpc`utinnknkkknitwcpjeeeeeeeeeejjjjjpjpdc`tixnknnnknkkkxtadjjeejpd`wuxxxxxw`djjjjpcwtinkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkknkixuacdjjjejeejejjddaawtinnkkknnxtw`acdpjejeeeeeeeejejjjjpdaa`utinnnitwacdpjjeeeeeeeeeejejjjddcaa`a`aaacccddppjjejejeeeeejjpcwxnknkknnknxwcpjeeeejejd`tinkkkkknnxuapjjeeeejjdauinknkknkkknixwcpeeeeeeeejjpa`txnknknknnnxwadjleeeeeeeejjpdawtiiitwcpeeeeeeeejpcauxinknknknknnxtwcdjjeeeeeeeeejjjjjpcawuxikikknknknnnitapjjjjjppcawuuuuwacpjjjda`txnnknkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkknntw`cdpppjjpjpjppddca`uxnnkkknixu`acddpppjppjpppjpjjjpppddcaawtxnnnxu`acdpppppppppjppjjpjppddccaccacccccddddppppppjppppjpdc`txnkkknkknnxwacpppppppdcwxinkkkknknxuacpppppppdawxinknnkknkknnxuacpjejejjjpcautinknkkknknnxxwadpjeeeejejjpd`wxinnniu`cpjeeeejjpc`utnnknkkkkkknnnxtwacppejeejejeejjpdcawuinnkkknknknkknxu`dppppddddcca```ccdpppcawxxnkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkknnxu`aaaccacccacacaaa`wtinkknkknitw`aaaacaacccccacccaccacaca``wtinnnitw`aaaaacacacaccccccacaaaa````a`aaaaaaaacccacaccdcacaawuxnnkknkknknxuwaaccccaa`wuinknkkkknnitwaaccccacawtinknknknnkknnnxu`cdpppddcawuxinnkkkkkkknnnitw`ddppjjppdda`uxikkknnxu`ddppppdcawuxnnknknnkknkknnnitu`acdppjjjjpppdc`wuxinnknkknkkkkknnit`cccaaaaaccccccacdcccawuxinkkkkkknkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkknixtuuuuuwuuuwuuuuuuttxixkkkknnixttuuuuuwuuuuwuwuuuwuwuwuuuuttxnnnnxattuuuwuuuuudauuutuuwu`uuuuuuwuuuac`cuwuawuuuwuwawwuutxxnnnkkkkknnnnxcwuuuuuuuttinnkkkkkkknnactuuuuu`ctxxii`iwikknkkknnixuw`aaa``wutxinkkkkkkkutkkknixuwaaccccaawutxnw`ikkkixu`acdccawuxinnnkkkkknknki`kknnxxuwaadccccca``wuxinnnkkkkkkknnknkkitu``wuuuuww```aaaaaa`wutxiknkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkknnixxxxxxxxiiiiiiixinnwnkkkkknnnniiiiiixixixxixixiixxxxxxxxiinnknnntiiixxxixxxxpxxixxiii`txxxxiuwixiucupixiiwixixixwiixxiinkkkkkkkkkknnniuxxiiiiuiinnkkkkkknkknntiixiiuxiatnnkdndxkknknkknnnxxtuuuuxxxinnnkknkkkkkxknkkknuxuuwwwwuuxxinnknxkkknnixuuwwuutxnnkkkkkknknkkkkxnknknnittuwawwwuuutxinnnkkkkkkkkkkkkkknnixuttxiixxttuuwwwuuuttxinnkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknnknnnnnkninnnknnnnnkwkknknxinkntnxxinnxxnxtknnnnttnnnxxxtiknkkixnxnnnnnnnnnnuunnnnknnnwnnnnnnunnnnt`icnnnnunnknknitnnnknkknkkkiinxxknnnxxtnnniwxxxnkxixninnkkkxnnknkxnnnnknkck`nknkkknkknknnniiiiinnnkknkkknkkkkinxnkniwtuwtxututitnnkkkxnkkkknnixiutuxixknkkixnkkknxxnxkknnxxnniix`xxxxiinnnnkkkkkkkkkkkknkkkkkniininnnnnniixxxxxxiinnknkknkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkknkknknkknkknknkkkkkkkkiikkkkxxxtkkxwuxttknu`xx`kkxuxxwnkiwtxtiknxtxuwkkkkknkkknunkkkknkkiiknnnnntknkknukukkkkktkkkkkntkkkkkkkkkkkiuwxxwkkk`xxukknuxxnkkxwxwxtiknkxkkkkkiwinkkkk`kukknkkkkkkkknknnnnnknknkkkkkkkknkkutxtnknutttnntwtwxxtkkkkikkkkkknnnnx`xwxxxkkutxuxnkitxuwkkxuxiwnnnnxxnnnnnnnkkkkkkkkkkkkkkknkknknnnnknkkknknnnnnnnnnnnknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkxkkkkktwutkkktkkktkktkkknxnuixxtukkikkkxkkxkkktnnknkkknkkkkknkknkkxkkkkkkkxkkkkkkkknknkktnkkkkkntkkkkkkkkkkktkkknxnkxkkxkkkxkkkkkkukxkkxkkkxkkkkkkkktikkkknkkkkknknkkkkknkkkkknkknknknknkkkkkikkkxkkxkknnnk`ktkkxkknkxkknkwuwwwikwkxkkiknnkkkxkktkkktkkuiixtukkkkxkkkkkkkkkkkkkkkknkknkkkknkkkknknkkkkknknkkknknknkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkxkkkkxnkkxkkktkkkxnktkkknikwiixiinkxkkkxkkxkkkikkkkknkkkkkkkkkkkknikkknknkxknkkknkknkknknukkkkkkwkkkkkkkknkktkkknikkxkkxkkkxknkkkkwkikkxkkkxkkkkkikknxkkkkkkkknkkknknkkkkkkkkkkkkkkkkkkkkkkkkxkknxkkxknkkknwkxkkxnkknxkkkkkkkkknkwkikkikxkkkkxkkxkkkxknuxiixnkkkkxkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknknkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkknikkkxkknukkkwnknxkkutknukkttkkknkkxnnkxkktnkiwkknkkkkkkkkkkkkkkkknxkkknkntkkkkkknkkkknkktkkkkkknnkkkkiukkkkttkntkkkxkkikkktkkknkkukxkkxkkkxkkkkkttxxkkkknknkkknkkkkknknkkkkkkknwiknkknkkkkkkxkkkxkkinknnkkwkikkinkkkxnknkkkkkkkkukikkikktnknxkktnkiwkktxkkknknktkkkkkkknknkkkkkkkkkkkkkknknkkkkkkkknkknkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkktkkknuuixtkkituxkkkinutnkkkiuwiknxuikxukkktuxnwkkknknknkkkknkkkkkkukknkkktnkkkkkknkkkkkkntkkkkkkukkkkiukkkkinutnkkuuknuukkkuwuikuukxnkukxuuwuikkkkiknkkknkkkkkknkknkkkkkkkkkkknunkknkkkkkknxunkuuikkxwuxktuinxkxinwuuutkkkkkkkktuinxkxnkkuuxkkkkuuxnukknuuiknkkukkkkkkkkkkkkkkkkkkkknkkknkkkkknknkkkkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkknkkkkknnkkkkkkkkkkikkkkkkikkkkknkkkknkkkkkknkkkkkkkknkkkkkkkkkkkkknkkkkkniknknkkxkkkkkkkknknkkknnkkkkkikkkkkkkkkkxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknknkkknkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknkkknkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkxnkkkkkkkkkkknkkkkkkkkkkkkkknknkknkkkkknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkuwtkkkkxwuknkkknkkkkknkkkkkkkkkkkkkkknkkknkknkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkxwunkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknknkknkkkkkkkknkkkkkkkknkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknknkkkkkkkkkknknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkkkkkkkkkknkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknnkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknknknktixikkkxkkkkkkinkkkkkkkkkkkkkkkkkkknxkkkkkkkkkkkkkkkkkkkkknxnkkkkkkikkkkkixnxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkktikkkkkkkkkkkkkkkkkkkkktxkkkkknkkkkkkkkkkkkkkkkkkkkkkkkinkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkxnkkkxixtkkkknkkkkkkikkkkkkkkkkkkkkkkkkkknkkkkkkknkkkkkkkkkkkkkkknkkkkkikkukkkntnukkkkkkkkkkkkkkkkkkkkkkknkkkknkkkknkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkikkkkxnixkkkkikkkkkkiknkkkkkkkkkkkknnnkkknknkkkkninnkkknnnknkkkkknkkkkknkkkkkknxktkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkinikkkninnnkkininnnkkkknkkkkkkkkkkkiniknnkkkknikkkkknnknkkkknkkkkkkikkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknnkkknnnnnkkkkknkkkkkkikkkkkkkkkkknxnninkkninnnkkninnkkkinninikkkknkkkkkninkkkkkikikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxnnikkninnnkknxnxninkkknkkkkkkkkkkknxnxnnnkkxnnxnkkinnxnkkinniikkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkikkkkkkikkkkkkkkkkknnnnnxkknkkknkkknkkkkknnknknkkkknkkkkkkkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkknkkkkkkxknkknkkknkkkkkxxxxxkkxknkknknkkkknknkkkknkkinnnikkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkikkkkkkkkkkinnnnnkkkkkknkkknkkkkknnknknkkkknkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkknkkkkkkiknkknkkknkkkkkkkkkkkkiknkknknkkkknknkkkknkkinnnnkkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkknkkkkkiikkkkikkkkkknkkknkkknkkkkknkkkkkkkkknkkkknninkkkkkkkkkkkkkkkkkkkkkkkkkkkkikkkkkkkkkkkknkknkkknkkkkkkiknkknkkknkkkkkkkkkkkkiknkknknnkknkkknkknnkkxkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkknkkkknnkkkkkiinkkknnknnnkkkinnkkinkikknkninnikkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknikkkkkkkkkkkiikkiikkkninkkiiknnkiknninikkkkkkkkkinknkkikkkiinkkkkinnnnkkniikkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", -"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" -}; diff -r f109f7dabbe2 -r 9f59509498e1 etc/xemacs.xpm --- a/etc/xemacs.xpm Mon Aug 13 09:21:56 2007 +0200 +++ b/etc/xemacs.xpm Mon Aug 13 09:23:06 2007 +0200 @@ -3,175 +3,175 @@ /* width height ncolors chars_per_pixel */ "388 145 25 1", /* colors */ -"` c #686869", -"a c #A6AAF5", -"b c #585859", -"c c #797979", -"d c #09090B", -"e c #989CEA", -"f c #383839", -"g c #363ACC", -"h c #282829", -"i c #88888A", -"j c #13154C", -"k c #7074DF", -"l c #5256D8", -"m c #484949", -"n c #232788", -"o s None c None", -"p c #B8B8B9", +"` c #787879", +"a c #686869", +"b c #A6AAF5", +"c c #585859", +"d c #484849", +"e c #09090B", +"f c #5256D7", +"g c #989CEA", +"h c #363ACC", +"i c #C7C8CF", +"j c #282829", +"k s None c None", +"l c #13154C", +"m c #7074DF", +"n c #D9D9DB", +"o c #232788", +"p c #383838", "q c #4249D0", "r c #B6BAF9", "s c #868AEB", "t c #A8A8A9", -"u c #C8C8CF", -"v c #989899", -"w c #6266DB", -"x s None c None", +"u c #989899", +"v c #6266DB", +"w c #888889", +"x c #B9B9B9", /* pixels */ -"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", -"oxxoxxoxxoxxoxxoxoxoxoxxoxxoxxoxxxxoxxoxxxoxxoxxoxxoxxoxoxxoxxxoxxoxxoxxoxxoxoxxoxxoxxxoxxoxxoxoxoxoxxoxxoxoxoxxoxxoxoxoxoxoxoxxoxxoxxoxxoxxoxxoxoxoxoxxoxxoxxoxxxxoxxoxxxoxxoxxoxxoxxoxoxxoxxxoxxoxxoxxoxxoxoxxoxxoxxxoxxoxxoxoxoxoxxoxxoxoxoxxoxxoxoxoxoxoxoxxoxxoxxoxxoxxoxxoxoxoxoxxoxxoxxoxxxxoxxoxxxoxxoxxoxxoxxoxoxxoxxxoxxoxxoxxoxxoxoxxoxxoxxxoxxoxxoxoxoxoxxoxxoxoxoxoxxoxoxoxoxoxoxoxxoxx", -"xxxxxxxoxxxxxoxxxxxxxxoxxxxxxxxxoxxxoxxxoxxxxxxxxoxxxxxxxoxxxoxxxxxxxxxxxoxxxxoxxxxxxoxxxxxoxxxxxxxxoxxxxxxxxxoxxxxxxxxxxxxxxxoxxxxxxxxoxxxxxoxxxxxxxxoxxxxxxxxxoxxxoxxxoxxxxxxxxoxxxxxxxoxxxoxxxxxxxxxxxoxxxxoxxxxxxoxxxxxoxxxxxxxxoxxxxxxxxxoxxxxxxxxxxxxxxxoxxxxxxxxoxxxxxoxxxxxxxxoxxxxxxxxxoxxxoxxxoxxxxxxxxoxxxxxxxoxxxoxxxxxxxxxxxoxxxxoxxxxxxoxxxxxoxxxxxxxxoxxxxxxxxxxxoxxxxxxxxxxxxxxoxxxx", -"oxxoxxxxoxoxxxxxoxoxoxxxoxxoxxoxxxoxxoxxxxoxxoxxxxxoxxoxxxxoxxxxxxxxxoxxxxoxxxxxxxoxxxxxoxxxxoxoxoxxxxoxoxxoxxxoxoxxxoxoxoxoxxxxoxxoxxxxoxoxxxxxoxoxoxxxoxxoxxoxxxoxxoxxxxoxxoxxxxxoxxoxxxxoxxxxxxxxxoxxxxoxxxxxxxoxxxxxoxxxxoxoxoxxxxoxoxxoxxxoxoxxxoxoxoxoxxxxoxxoxxxxoxoxxxxxoxoxoxxxoxxoxxoxxxoxxoxxxxoxxoxxxxxoxxoxxxxoxxxxxxxxxoxxxxoxxxxxxxoxxxxxoxxxxoxoxoxxxxxoxoxxoxxxxxxxxoxoxoxoxxxxxoxx", -"xxxxoxxxxxxxxxoxxxxxxxxxxoxxxxxoxxxxxxoxxxxxxxxoxxxxoxxxoxxxoxxoxxxxxxxxxxxxoxxxoxxxxxoxxxoxxxxxxxoxoxxxxoxxxxxxxxxoxxxxxxxxoxxxxxxxoxxxxxxxxxoxxxxxxxxxxoxxxxxoxxxxxxoxxxxxxxxoxxxxoxxxoxxxoxxoxxxxxxxxxxxxoxxxoxxxxxoxxxoxxxxxxxoxoxxxxoxxxxxxxxxoxxxxxxxxoxxxxxxxoxxxxxxxxxoxxxxxxxxxxoxxxxxoxxxxxxoxxxxxxxxoxxxxoxxxoxxxoxxoxxxxxxxxxxxxoxxxoxxxxxoxxxoxxxxxxoxoxxxxxxoxxxoxoxxoxxxxxxxxoxoxxxxx", -"xoxxxoxxxxoxoxxxxxxoxoxoxxxxoxxxoxxoxxxxxoxxoxxxoxxxxxxxxxoxxoxxoxxxxoxxxxxxxoxxxxoxxxxxxxxxxxoxoxxxxxxoxxxoxxoxxoxxxxxxxoxxxxxoxoxxxoxxxxoxoxxxxxxoxoxoxxxxoxxxoxxoxxxxxoxxoxxxoxxxxxxxxxoxxoxxoxxxxoxxxxxxxoxxxxoxxxxxxxxxxxoxoxxxxxxoxxxoxxoxxoxxxxxxxoxxxxxoxoxxxoxxxxoxoxxxxxxoxoxoxxxxoxxxoxxoxxxxxoxxoxxxoxxxxxxxxxoxxoxxoxxxxoxxxxxxxoxxxxoxxxxxxxxxxoxoxxxxxoxoxxxxoxxxxxxxxxxxxoxxxxxxoxox", -"xxoxxxxoxxxxxoxxxoxxxxxxxxoxxxxxxoxxxoxoxxxxxxxxxxoxxoxxxxxoxxxxxoxxxxoxxoxxxxxxxxxxoxxxxxxxoxxxoxoxxoxxxxxxoxxxxxxxxxxoxxxoxxxxxxoxxxxoxxxxxoxxxoxxxxxxxxoxxxxxxoxxxoxoxxxxxxxxxxoxxoxxxxxoxxxxxoxxxxoxxoxxxxxxxxxxoxxxxxxxoxxxoxoxxoxxxxxxoxxxxxxxxxxoxxxoxxxxxxoxxxxoxxxxxoxxxoxxxxxxxxoxxxxxxoxxxoxoxxxxxxxxxxoxxoxxxxxoxxxxxoxxxxoxxoxxxxxxxxxxoxxxxxxxxxxxooxoxxxxoxxxxoxxxoxxxxxoxxxoxxxxxxxx", -"xxxxxoxxxoxxxxoxxxxxoxxoxxxxxxoxxxxoxxxxxxxxoxxxoxxoxxxxoxxxoxxoxxxxxxxoxxxxxoxxxxxxxxxxxoxxxxxoxxxxxxxoxoxxxxoxxoxxoxxxxxxxoxxoxxxxxoxxxoxxxxoxxxxxoxxoxxxxxxoxxxxoxxxxxxxxoxxxoxxoxxxxoxxxoxxoxxxxxxxoxxxxxoxxxxxxxxxxxoxxxxxoxxxxxxxoxoxxxxoxxoxxoxxxxxxxoxxoxxxxxoxxxoxxxxoxxxxxoxxoxxxxxxoxxxxoxxxxxxxxoxxxoxxoxxxxoxxxoxxoxxxxxxxoxxxxxoxxxxxxxxxxxoxxxxoxxxxxoxoxxxoxxxoxxxxxoxxxxxxxoxxxxoxx", -"xoxoxxxxxxxoxxxoxxxxxoxxoxxxoxxxoxxxxxxxxoxxxxxxxoxxoxoxxxxxxoxxoxxoxxxxxxxoxxxxxxxxxxoxxxxxxxxxxoxoxxxxxxoxxxxxxxxxxoxxxxxxxxxxxoxxxxoxxxxoxxxoxxxxxoxxoxxxoxxxoxxxxxxxxoxxxxxxxoxxoxoxxxxxxoxxoxxoxxxxxxxoxxxxxxxxxxoxxxxxxxxxxoxoxxxxxxoxxxxxxxxxxoxxxxxxxxxxxoxxxxoxxxxoxxxoxxxxxoxxoxxxoxxxoxxxxxxxxoxxxxxxxoxxoxoxxxxxxoxxoxxoxxxxxxxoxxxxxxxxxxoxxxxxoxxxoxxxxxxoxxxxoxxxxxxxxoxxxxxxxxxoxxox", -"xxxxxoxoxoxxoxxxoxxxxxxxxoxxxxoxxxxoxxxxxxxxxxxxxxoxxxxxxoxoxxoxxoxxoxxxoxxxxoxoxxxxxxxxxxxxoxxxxxxxoxxoxxxoxxoxxxxxoxxoxxxxxxxxxxxoxxxxxoxxoxxxoxxxxxxxxoxxxxoxxxxoxxxxxxxxxxxxxxoxxxxxxoxoxxoxxoxxoxxxoxxxxoxoxxxxxxxxxxxxoxxxxxxxoxxoxxxoxxoxxxxxoxxoxxxxxxxxxxxoxxxxxoxxoxxxoxxxxxxxxoxxxxoxxxxoxxxxxxxxxxxxxxoxxxxxxoxoxxoxxoxxoxxxoxxxxoxoxxxxxxxxxxxxxxxxxxxoxxxxxxoxxxxoxxxxoxxoxxxxxxxxxxxx", -"xxoxxxxxxxxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxoxoxxxxxxxxxxxxxxxxoxxxxxxxxoxoxxxxxxxxoxxxoxxoxxxxxxoxxxoxxxoxxxxxxxoxxxxxxxxxxxoxoxxxxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxoxoxxxxxxxxxxxxxxxxoxxxxxxxxoxoxxxxxxxxoxxxoxxoxxxxxxoxxxoxxxoxxxxxxxoxxxxxxxxxxxoxoxxxxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxoxoxxxxxxxxxxxxxxxxoxxxxxxxxoxoxxxxxxxxxxxoxxxxxxxoxoxxxoxxxxoxxxxxxxoxxxxxxxoxxx", -"xxxoxxoxuuxoxxxopxxxxxxxxxuuxxxxoxxxoxxxxxxxxxoxuuoxxxoxoxxxoxoxopoxxxxxoxxxooxxxxxxxxxxxxxxoxxxxxxxoxxxxxxxxxoxxxxxoxoxxxxxxxxxxxxxxpoxoxxxoxxxxxxxxxxpoxxxxxxxoxxxoxxxxxxxxpooxxoxxxoxoxxxoxxoxxxxxxxxoxxxooxxxxxxxxxxxxxxoxxxxxxxoxxxxxxxxxoxxxxxoxoxxxxxxxxxxxxxxxxxoxxxoxxxxxxxxxxxxxxxxxxxoxxxoxxxxxxxxoxoxxoxxxoxoxxxoxxoxxxxxxxxoxxxooxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxoxoxxxxxoxoxxxxxxxxxxoxx", -"xxxxxxxxxoxxoxxxuxxxxxxxxxxuxxoxxxxxxxxoxxxxxxxxxuxxoxxoxxxxxxxoupxoxxupppxxxxxxxxxoxpptpuuxxxoxxxxotuxotuxxoxxxoxxxxxxoxxxxxxxxxxoxxxuxoxxxxxxxoxxxxxxxuxxxxoxxxxxxxxxoxxxxxxuxxxxoxxoxxxxxxoxxoxxxoxxxxxoxxxxxxxxoxxxoxxxxxxoxxxxxxxoxxxxoxxxxoxxxxxxoxxxxxxxxxxoxxxoxoxxxxxxxoxxxxxxxxxxxoxoxxxxxxxxoxxxxxxxxoxxxoxxoxxxxxoxxoxxxoxxxxxoxxxxxxxxoxxxoxxxxxxoxxxxxxxxxxxxxxxxxoxxxxxxoxxoxxxxxxxxx", -"xoxxoxooxoxxxouooxxxxxxxxxxooooxooxouoxxoxxuuxoxxuxouuxxoxxxxoxxtuxxxxxxuxxxxxxouoxxxoxoxxoxxxuuooxxopxuoxxxxxxxxooouxuoxoxouoxxxxxooxuxxxuuoxxxxxxxxxxxuouxxxxxuuoooxxouoxoxxuxuuoxoxxoxxxxxxoxxoxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxxxxxxxxxoxxxoxxoxxxxxxxxxxxxxoxxxxxxxxxxxxxoxxxxxxxooxooxxxoxxxxxoxxoxoxoxxxxxxxxoxxoxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxoxxoxoxoxxxxxxxxxxxxxoxxxxxoxoxxxoxx", -"xoxxxuoouuoxuuoppxxxxxxxxxopuuuoxxupuppxxopuupooxuxpuoxxxoxxxxxopxxxxoxxuxoxooxouuoxxxxuxxxxxpuuuuxoxuupxxxxxxxxxopuupupxxupuupxxxpuupoxopuupuxxxxxxxxxxtuupxxxpuopuxoupuupxxxuxtuoxoxxoxoxxoxxoxxxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxooxxoxxoxxxxxxxxoxoxoxxoxxoxxxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxoxxxxx", -"xoxxoxoxxuxxuxxxuxxuptptuxxuxxxuxxuxxxooouxxxxuxxutoxoxoxxoxxxxxxxoxxxxxuxxxxooppuoxxxxoxxxxuuouutxxxotoxxxutptpuxuuxuxuxxuxxoxuxuxxxouxuuuuotxxppptpoxxoxxuxxooxxxuxxuxxoxuxxppoxxoxxxxxxoxxxxxooxxxxxxoxxxxoxxxxxxxxxxxxxxxxxxxxoxoxoxxxxxxxxxxxxxoxxoxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxxxxooxoxoxxxxxxoxxxxxooxxxxxxoxxxxoxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxooxxxxxoxxxxxoxx", -"xoxxoxxxxoxxoxxxuxxxxxxxxxxuxxxuxxuxoxouxuxoxxuxxuotxoxxxoxxxxxxoxoxxxoxuxxuxxpoxouxxxxuxxxxpuuouuxxxtxpoxxxxxxxxouuxuxuxxuxxxxuxuxxxxuxpuouuuxxxxxxxxxxuxxuxxuxxxxuxxuoxxxuxxpuuxxxooxoxoxxxxxxxxoxoxoxoxxoxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxooxxoxxoxxxxxoxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxoxxoxxxxxxxxooxooxoxxxxxxxxoxoxoxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxooxxxoxxxxxxoxoxxox", -"xoxxoooxuuxxuoxotxxxxxxxxxxuxxxuxxpuxopxoopxxpoxxuxopxxxoxxxxxxoxxxoxxxouoouxxuoxuuxxxxuxxxxotoxxoxxpoxotxxxxxxxxxuuouxuxxuuxopoxuuxopuxotoxxxxxxxxxxxxxuxxuxxxpoxopoxpoxotxxxuxuuxxxxxxxxxxxxxoxoxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxoxxxoxxxxxxoxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxoxxxxxxxxxxxxxxxxxxxoxoxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxoxxxxxoxxxxx", -"xooxxxuuouuxxppuotxxxxxxxxutoxttoxxpttoxxxuttooxppxxttoxxxoxxxxxoxxoxxutttttxxuttotuxxpttuxxxxptpoxotuxotpxxxxxoxutpxtoupxopttoxxxutpotoxoptpxxxxxxxxxxttxottxxoptpxxxoptpooxtuxotpxxoxoxxoxxxxxxxxoxxxoxxxxxxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxoxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxxxxxoxxoxxxxxxxxxoxxxoxxxxxxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxxoxoxxxxoxxx", -"xxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxoxxoxxoxxxxxxoxxoxxxxoxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxxxxxxxoxxoxxoxxxxxxxoxoxxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxoxxxxxxoxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxoxxxoxxoxxxoxxoxxoxxxxxxxoxoxxoxxxxoxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxoxxxxxxxxxoxoxxoxx", -"xoxxxxxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxooxxxxoxxxxxxxxoxxxxoxxoxxxxoxoxxxxoxxxxoxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxoxxxxoxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxoxoxoxxxxxxxxoxxxxooxoxxxxoxoxxxxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxxxxxxxoxxxxooxoxxxxoxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxxxxoxxox", -"xxxoxxoxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxoxxxxoxoooxxxxxxxxoooxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxxxoxoxxoxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxoxxooxxxxxxxxxoooxxxxxxxxxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxoxxxxxxxxxxxxoxoxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxoxxxoxxoxoxxxxxxxxoooxxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxoxxxxxxxxxxxoxxxxxx", -"xoxxoxxxxxxxoxxxxxxxxxoooxxxxxxxxxxxoxoxxooxoxxxxoxoxxxxxxxxxxxxxxxoxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxxxxxxxooxxxxxxxxxoxxxxxxxxxoooxxxxxxxxxxxxxooxxoxoxxxoxxxoxxxxoxxxxxxxxxoxoxxoxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxoooxxxxxxxxxxxoxoxxxooxxxxxxxxoxxoxxxxxxxxxxxoxoxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxoxxxxoxxxxoxoxx", -"xxxxxxoxoxxxxxoxxxxxxxxxxoxoxxxxxxxxxxxooxxxxxxxxxxxxxxoxoxxxxxoxoxxxoxoxxoxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxoxxxxooxxxxxxxxoxxxxxxxxxxooxxxxxxxxxxxxxoxxxxxxxxxxxxxxoxxxxxxxoxoxxoxoxxxoxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxoxxxxoxxooxxxxxxxxoxxxxxoxxxxoxoxxxxxxxxxxxxoxxxxxxxoxxxxxoxxxxxxxxoxoxxoxoxxoxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxxxxxoxxxoxxx", -"xoxoxxxxxxxoxxxxxxxooxooxoxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxoxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxoxoxoxxxxooxxoxxxxxxxxxxxxxxooxoxxoxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxooxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxoxoxoxxxxxoxxoxxxxxxxxxxxxxxxooxooxxoxoxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxoxooxxxoxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxoxoxxoxxxxox", -"xxxxoxoxxxxxooxooxxxxxxxxoxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxooxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxoxxxxxooxxxxxxxooxooxxxxxxxxoxoxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxoxoxxooxxxxxxxooxooxxxxxxxxoxoxxxxoxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxoxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxoxxx", -"xoxxxxxoxxxxxxxxxxxxxxoooxoooxoxxoxoxxxxxxxxxxxxxxxxxxxxxxxxooxxxxuxxxiixooxxxxxxxxxoxxxxxovxxxxxxxxxxupxxxxxxxxxxxxxxoxxoxxuxxxxuxxxxoxxxxxxxoxxxxxxxoooxxooxoxooxoxxxxoxxxxxxxxxxxxxxxxxxxooxxxxoxxxooxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxxoxxxoxxxxxxxoxxxxxxxooxxoooxoxxooxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxxxooxooxxoxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxoxoxxoxx", -"xxxoxoxxxxxxxxxooxxoxxxxxoxxoxooxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvoxxxxpxxxxoxxoxoxxxxxxxxxuxxxxxxxxxxxuxxxoxxxxoxxxoxxxoxxovoxxxvxoooxoxxxxxxxxooxxxxxxxooxxoxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxoxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxoxxxoxxxoxxxxxxooxoxxxxxxxxooxxxxxxxoxxoxooxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxoxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxoxxxxxxoxxxxxxxox", -"xoxxxxooxxxxxxxxoxxxoxxxxxxxxxxoxoxxxxxxxoxxxxxxxxxxxxxoxxxxxxxxxvxxxxxtooxxoxppoxxpupoouxxpxouxxxxxuuxpxxxupuxxxxoxxxxxxxxpuxxxouuxxxxoxxxxxxxxoxxxooxoxxxoxxxxxxoxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxoooxxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxxxxxxxoxxoxxxoxxxxxxxxoxxxooxooxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxoooxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxoxoxoxxx", -"xxxxoxxxxxxxxxxoxxxoxoxooooxooxxooxxxxxxxxooxxxxxxxxxxxoxxxxxxxxuoxoxxxpxxxxxuppvoxpipiptuxpvtpixxxvupipxxopptuxxxxoxoxxxxxtxxxxxxtxxxxxxxxxxxoxxxxoxxxooxoxooxxooxxxxxxxoooxxxxxxxxxxxoxxxxxxxxxxxxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxxoooooxxooxxxxxxxxooxxxxxxxxxxxoxxxxxxxxxxxoxxxoxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxxxxxxxx", -"xoxxxxoxoxoxxxxxooxxxxxxxxxxxoxxxxxxxxxxxoxxxxxxxxxxoxoooxxxxxxxpxxxxxxpooxoxuiivxxxixpxxpxpoxxxtxuxxxxtxxxvitpxxxxxxxoooxxpoxoxxopoxoxxxxxxxxxxooxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxoxoooxxxxxxxxxxxxxxxooxoxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxoxoxxoxxxxoxxxxxxxxxooxxxoxxxxxxxoxxxxxxxxxxoxxxxxxxxxxxoxoooxxxxxxxxxxxxxxxooxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxoxxoxxxoxo", -"xxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxpxxxxxopxoxoovxxtoxoixpxxpxpxxxxpxpxxxxuxxtoxopxxxxxxxxxxxxpoxxxxxpxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxoxxxoxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxoxxxxxxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxoxxxx", -"xoxxxoxxoxoxxoxxxxxxoxxxoxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxoxxoxpxxxxotxxxxpoxxixoxcxpxxpxpvoxuuxovxxtvxxtxxppxxxxxxxxxoxxtxxxxxopxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxooxxoxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxoooxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxoxoxxxxxoxxx", -"xxxoxxoxxxxoxxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxvoxopccccuxxviipixcixvuxcuiociuxxxxicuttxpiioiuxxxxxxxxxxxuvxoxovuoxxxxxxxoxxxxooooouoooooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxoooxxxxxxxxoxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxxxoxxoxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxoxxox", -"xoxxxxxoxoxxoxxoxxxoxxxxxxxxxxxxxuururuurrrruururrurururrrrrrrruxuuoxxxxurrrrrrrrrrrrrrrrrrruxxxxxxxxrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrssssssssseaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxoxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxoxoxxxxxooxoxooxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxoxxoxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxxxxxoxxxxox", -"xxoxoxxxxxxxxoxxxxxxxxxxxxxxxxxxxrgqggggqgqgggggqggqggggggggggggkxxxxxxxrwgggggggggggggggggggkxxxxxxxrggggggggggggggggggggggggggggggggggggggggggggggqggggggqtxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxoxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoooxxxoxxxxxxxoxoxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxoxxoxxoxoxxx", -"xxxxoxoxxoxoxxoxoxxxoxxxxxxxxxxxxuggggggggggggggggggggggggggggggnmxxxxxxowgggggggggggggggggggnmxxxxxxogggggggggggggggggggggggggggggggggggggggggggggggggggggndxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxoxxxoxxooxxxxxxxxxxooxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxoxxxoxxxooxxxxoxxoxxxxoxx", -"xxoxxxxxxxxxoxxoxxxxxxxxoxoxoxxxxxknggggggggggggggggggggggggggnnjmxxxxxxxegnggggggggggggggggnjmxxxxxxxkngggggggggggggggggggggggggggggggggggggggggggggggggggjmoxxxoxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxooxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxoxxxxxxxxoxxooxxxxxxoxxxxoxxxxoooxxxxxxxxxxxxxoooxxxxoxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxooxxxxxxxxoxoxxxxxxoxxox", -"xxxxoxoxoxxxxxxxoxxxxxoxxxxoxoxoxoxbfjjgggggggggggggggggggnjddfmmcxoxoxxxximmmqggggggggggnjddfcxoxxxxxxmmjdnqggggggggggggggggggjdddddddjjnnggggggggggggggggjcoooooxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxoxxxoxxxxxxxxooxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxxxxx", -"xxoxxoxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxopclggggggggggggggggjdmtooooouooooooxxxxosgggggggggjdf`ououoooxxxxxxxxueggggggggggggggggndjcpuuuouviimfjngggggggggggggdiuuuuooxxxxxxxxxxooxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxoxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxx", -"xxxoxxoxxxxxxoxxxxxoxxxxxxxxxxxxxxxxxoxuokgggggggggggggggjmpppupuppptpuuoxxxxusggggggggdd`ppppppppuuuoxxxxxouwgggggggggggggggdhpppuppppppppppcmnggggggggggndtptpppuoooxoxxxxxooxooxxxxxxxxxxxxxxxxxooooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxoxoxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxoxxxxxooxooxxxxxxxxxxxxxxxxxooooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxoxxxxoxxox", -"xoxxxxxxoxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxourlggggggggggggggdbiiiiiivvvvvtpuoxxxrwggggggnddciiiiiivvvttpuoxxxxorwggggggggggggggndciiviiviiviiiviviimqggggggggjhciciivpuooxxxxxxxxoxooxoxxxxxxxxxxxxxxxxooxxxxxxxxxxxxxxxxxxxxoooxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxoxxoooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxooxoxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxoooxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxxxxxx", -"xxoxxoxxoxoxoxxxxxoxxxxxxxxxxxxxxxxxxxxoptkggggggggggggggjbbbbb`b```ccvppuoxuaggggggndhm`bb`b`b`b`citpoxxxxorwggggggggggggggjjbbbbbb``b``````````bqgggggggjhmbmb`cvpuxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxoxoxooxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxoxxoxox", -"xxxoxxoxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxoopvaggggggggggggggjhhfhfffmb``cituoxurlgggggnddjhfhfhfffmmb``mbtxxxpurgggggggggggggggdhhfhffffhfbbbbbbbbbmmwqggggggddhhhhf`ipuxxxxxxxxxxxoxxxxxxxxxxxooxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvtxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxxxx", -"xoxxxxxoxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxopvvwgggggggggggggndddhdhfmm`civtuoorkgggggndhfhdhdhdhhhfbbcbpuxxxxuurggggggggggggggndddhddhhfmfb``````bbbmmkggggggdddddhhb`bm`oxxxxxxxxxov``b`bxxooxxoxxmbxxbcxxxxxoxxxxxxxxxxxxxxxxxxxxxxpxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxoooxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooxxxxxxooxoooxxoxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxx", -"xxxxoxxxxxoxxxooxxoxxxxxxxxxxxxxxxxxxxxooptsggggggggggggggdddddhfbcivtpuuursgggggndhmmfddddddhfb```bvtxxxttusggggggggggggggjdddddddhfbbi``cvii`bb`bsqggggnddddddfbitvoxxxxxuttxxxtoxvxtxxxpvpoooomxocoxxxxxxxxpopxuoxxxxtuxxxxxppxuxxxotoxxxxxxxxxxpupxtoxxxutuxootxttoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxoxxxxxxooxxoooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxoxx", -"xxxxxoxoxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxoouurggggggggggggggddddhfbcvtppuoouegggggndfbbfhdddddhhfcvii`vpxxxtcrkggggggggggggggjddddddhfbc`tbcippb`cbbiikggggjdddddhfbipvxxxxxxtttioxxxxtxxxocivicxxxuc`xxxxxxxxxxt`t`tvuxx`tpcxxxipt`vxxivtiixxxxxxxxxcvvipcxxuttvuxuicvtcpxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxoxooooxoxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxx", -"oxoxxxxxxxoxxxxxxxxoxxxxxxxxxxxxxxxxxoxoxxouwgggggggggggggjdddhf`ituuuooraqggggndmiui`fhdddhhmhvpuuvoooxxxtrlggggggggggggggddddddddfcvcbtooop`vvimvtsggggddddddhf`vpvoxxxxxvbcvxxxxxtxxxucttvbpooo`iooxpc``bcxx`xpxxpxpxxxxpxtoxxxvxucttt`uxvc`ccvxttxvxtxxocbvtxxvoxxxixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxoxxxxoooooxoxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxox", -"xxxoxoxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxoxooxxokgggggggggggggndddhfctpoxxxraqgggggdmovpibfdhdhfm`cpuootoxxxoxarggggggggggggggnddddddhfbvpcp`ooxpcvvtvpueggggdjddddhf`tpvoxotxtpooixxxxxvxxxpcvvttoxxipttxxxxxxxxxx`xpxxpxtxxxxtxtxxxxtxpcttvtoxxxoxxxxptxtotxxvxxxtxxtuxxxvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxoooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxoxxxxxxxxxx", -"oxxxxxoxoxoxxxoxoxxxxoxxxxxxxxxxxxxxoxxxoxxxrggggggggggggggdddhmctuooxraqgggggddooicimhdhhh`vttoooxvxxxxxxasggggggggggggggjddddddhmctuvxucxoxbpxouxxrgggndfhdddhmctuvxxxvxixxocxxxxxtxoxobuxxxxxttxx`oxxxxxxxxx`xpxxpxotxxvuxocxoicxxbpooooxxxxxxxxptxtovoovxxtuxxtcoxipoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxoxxxoxx", -"xoxxxxxxxxxoxxxxxxoxxxxxxxxxxxxxooxoxooxxxooulgggggggggggggjddhmctoxxuaqggggnddooop`hhhdhm`mmcuooibbbixxtbrkggggggggggggggdddddddfbvpcioxbbxxxibcpoxrgggndbhhddfbcvbbbbbuxubbtiixxtb`booxxibcpxx``xx``xxxxxxxx``xvuxcxxu``pxxxobbpiixxi`cpxxxxxxxxobix`opixvbbubpxpocbuxxoxxxxxxxxxxxxxxxxxxxxxxxoxooxoxxxooxxxxxxxxxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxxxx", -"xxoxxxxoxoxxoxoxxxxxxxxxxxxxxxoxxooxxxooxxxxokgggggggggggggnddhf`vpoorlgggggdjvpoutcbfhfmcvtuxxxooxxxxxxxorqgggggggggggggnddddddhf`vpoxxxxxoxoxxxxxxrgggjmcmhdhfbitooxooxxxxxoxxxxxxxxxxxoooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoooxoxxxxxxxxxxxxxxxxxxxxoxxxxxxxxtxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxuoxxxooxxxxxoxxxxxxxoxxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxoxxxxxxxxxxxxxxxxxxxxoxoxxxoxoxx", -"xxxoxxxxxxxxxxxxoxxoxxxxxxxxxxoxxxooxoxoxxxxxaggggggggggggggdddfbvprrwgggggdjuxoptibfffb`ituoxxxxoxooxxxxoaggggggggggggggndddddddm`voxxxxxxxxoxxoxxoegggdcibfhhf`ttuooxxoxxxxxxxxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxpmbpxxxxxxxxoxxoxxxxxxxxxxxxooxxxooxoxoxxxxxxxxxoxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxoxxxxoxx", -"xoxxxoxxxxxxxoxoxxoxxxxxoxxxxxxoxxoooxooxxxxxuqgggggggggggggjddhbirrwggggnddoouuti`fffbcvtuooxxxxoxooxoxxrsggggggggggggggjddddddhmivuoxxxxooxxxoxooookngdtv`fhhmcppooxooxxxxxxoxxxoxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoooxxxxxxxxxxxxxxxxxxxxxoxxxxxxoxooxxxxxxxxxxoxxxoxxxxxxxxxxxxxxoooxooxxxxxxoxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxooxxxxxxxxxxxxxxxxxxxxxoxxxxxxxox", -"xxxoxoxxxxxxxxxoooxooxxxxxoxxxxxxxxxxoxxxxxoxokgggggggggggggnddhmtrwgggggdjuxoutibmffm`vpuooxxoxxxxooxxxxrwggggggggggggggddddddhhbipuoxxxrswarxooooxoxmhdutcmffbipxuxoxxxxxoxxxxxxxoxxxxxxoooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxxooxoxxxxxxxxxxxxxxxxxxxxxxoxxoooouoxxxxxxxxxooooxoxxxxxxxxxoxxxxxxoxxxxxoxxxxxxxxxxxoooooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxxooxooooxxxxxxxxxxxxxxxxxxoxoxoxxx", -"xoxxxxxooxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxoeggggggggggggggdddsrwgggggdduoopti`mffb`ituxxxxxxoxxxxxxxxxrggggggggggggggnddddddhm`vpuoooorqggipxooxooxxxxupi`ff`vuoooxxxxxxxxoxuuuruoxxxoxxoxxoorreseeoxxxxxxxxxxxxxxxourrssseooxxxoxxxxxxxxxxxxxxxxxxxxxxxoxxourrasssroxxxxxxxoouooouooxxxxxxxxxxxooxxxxxxxxoxooxourrrsssserxxxxxxxxxxxxxxxxxxxxxxxxoorrassserooxxxxxorserxxxxxxxxxxxxxxxxoxxxxxoxx", -"xxoxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxxrggggggggggggggjdirwgggggdjuouuti`mffm`vtuoxxxxxxxxxxoxxxxoeggggggggggggggnddddddhmctuuoxorsgggdtxxxxxxxxxxopibmm`vuxxxouoooururrrsswqsuxxxxxxxrrswggggggkoxoxxxxxxxxxxrakqggggggkrxxxxxxxxxxxxxxxxxxxxxxxxxxxorrswgggqggqexxxxrrressssslksxxxxxxxxxxxxooxxxxoxoxorraswqggggggglsuxxxxxxxxxxxxxxxxxxxxraslgggqggglkrooxorsgggtxxxxxxxxxxxxxxxxoxoxxxox", -"oxxoxoxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxxowgggggggggggggnfrwggggnddooopti`mmfm`ippoxxxxxxxxxxxxxxoxrkggggggggggggggdddddddhmituoxxurqggndxxxxxxxxxxxopv`bbiprrrrrrsssswwlggggggjcxxxxxureqgggggggggqpoxxxxxxxorakgggggggggggexxxxxxxxxxxxxxxxxxxxxxxxorrsqggggggggggwxxrsggggggggggqcxxxxxxxxxxxooxxxxxxorrewgggggggggggggqsxxxxxxxxxooxxxxxorakgggggggggggggwsareqggndxxxxxxxxxxxxxxxxxxxxoxxx", -"xxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxsggggggggggggggrsgggggdjuxouti`mffm`ituooxoxxxxxxxxxxxxxxrlggggggggggggggddddddhfbvpuoourkgggnfxxxxxxxxxxxxutc``vewlgggggggggggggggggdtxxxxorwggggggggggggguxoxxxxorsqgggggggggggggixxxxxxxxxxxxxxxxxxxxxxorsqgggggggggggggmxrlggggggggggd`xxxxxxxxxxxxxoxxxxurelgggggggggggggggggloxxxxxxxxxxxxxxrsqggggggggggggggggggggggnmxxxxxxxxxxxxxxxxxxxxxxox", -"xoxoxoxxxxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxrggggggggggggggsgggggdduouuti`mmfm`ituoxxov`pxxxxxxuxxxxxrggggggggggggggnddddddhfctuuooreggggjcxxxxibuxxoxooticipsggggggggggggggggggjhoxxxraqggggggggggggggnootoxureggggggggggggggggvbuxxxxxxxxxxxxxxxxxxrawggggggggggggggggvrgggggggggggduxxxu`vxxxxxxxxxxorakgggggggnjddmqgggggggqoxxxxxxxooooorsggggggggnjdddjggggggggggjmxxxxxxxxxxxxxxxxoxxoxxxx", -"xxxxxoxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxowggggggggggggggggggjdpooupi`bffm`cvpoxxxxvxxxxxxxovxxxxosggggggggggggggjddddddhmcpuooraqggggdpxxuuupixxxxoouvvtpeggggggggggggggggggjboxxraqgggggggggggggggn`ucpurwgggggggggggggggggjfoxxxibfcxxxxxxxxxxrrqgggggggggndddggggweggggggggggndoxxxoxtxxxxxxxxxorsqqggggggjdhvuusgggggggggoxoxxoooxoxreggggggggjdmvoxuclggggggggjixooooooxxxxxxxxxxxxxxoxx", -"xxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxookgggggggggggggggggjdbpuutv`bmfm`itpuxxxxxtxxxxxxxcxxxxxrwggggggggggggggdddddddhfipupraqggggndvooptttcoxxxxouupuppljjgggggggggggggggdtuiraqggggggggggggggggghtpirsggggggggggggggggggn`uuoooxtxxxxxxutpxrsggggggggggddbppvkggwwggggggggggjhtuuuuovxxxxxxtpursggggggggjdbtourkgggggggggfpuouvuvtoorqgggggggndcoouptvpwgggggggdiopttvpoouoooooxxxoooxxox", -"xxxoxxxoxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrggggggggggggggggjdfivptvcbffm`ivpuooxxxxpxxxxxxxixxxxirqggggggggggggggdddddddhmvprreqgggggjfvmtviii`uoxxxxxouuopibb`sggggggggggggndppaaqggggggggggggggggggdivrsgggggggggggggggggggnfttpuoovxxxxxottvrsggggggggggddmiptvilgqgggggggggggdm`bptptiooxxobvarwggggggggjdmicbraqgggggggggjmcpu``vvirsggggggggdfvpptvcbccqggggggdtutciiitoutupuooxouoouxxo", -"xoxxxoxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxulggggggggggggggjddbcivi`bfmm`itpuooxxxxxpxxxxxxxtxxxpuaggggggggggggggnddddfmbitrrslgggggggjcuu`i``i`uoxxxxxxxxoxxcoxrggggggggggggjhvaaqgggndjwggggggggggggd`reggggnddqggggggggggggnh`ivtuovxxxxxo`creggggggggggdd`chii`ikggggggggggggndcc`iiiv`uoxovourwggggggggjdfiicfrkggggggggggnfhvpiooxvrqggggggggdtivii``fbbsggggggdivv`civvuxtxuxxoxuoooooxx", -"xxoxxxoxooxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxokgggggggggggggnddhfbcc`mmfm`cvpuoooxxxxxtxxxxxxovoxxvusggggggggggggggsrarrrssskwggggggggggdvut``bbc`uooxxxxxxxxxxvxxrggggggggggggdmerlgggjdbtaggggggggggggdsaqgggddbutkgggggggggggndfmcituixxvxxiursggggggggggjdc``b`mmmsggggggggggggjdbmmmb`c`puooturwgggggggggdmbccbcrgggggggggggndmcicpootegggggggggdtccbbfmhmmclggggnd`c`mb`iiuopxuxxoxuoooooxx", -"oxxxoxxxxxoxxxoxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxeggggggggggggggdddhmmbmmfm`itpuooxxxxxxxtxxxxxxxcxooorlggggggggggggggggggggggggggggggggggndupmbbmbicuoxxxxxxxxxxxvoorgggggggggggndbrwgggdd`purgggggggggggnbrlgggddpoxasgggggggggggjdhhm`vpioxvxxirsggggggggggjdhic`mfhj`sggggggggggggdhhhdhhmc`pooxrrwgggggggggdjpfciccsgggggggggggndhb``puoasgggggggggdimbfhhhhmm`sggggndmmmffbcvuotxoxxoxuoxoxxxx", -"xxxxxoxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxuqgggggggggggggjddhhffhfmbitpoxxoxxxxxxxpxxxxxxxcuoxxrgggggggggggggggggggggggggggggggggggjfff`bmmhhfmixxxxxxxxxvbmmesgggggggggggjdrsgggddffptagggggggggggnrsgggddvuoorkgggggggggggjdddhmffmmmmxxraqggggggggggdmcfjhhhddisggggggggggggdddddhhdhfmmoorwgggggggggndvtifjhbsgggggggggggndhhfhmptewgggggggggjhhdjhhjhff`eggggjdhhjdhmbcutpxuoxpxxouoooxo", -"xoxoxxxoxoxxxxoxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxokgggggggggggggnddddhhfmbcvpooooooxxxxxxvtxxxxxxxioxregggggggggggggggggggggggggggggggggggdivcbfff`vpuxxxxxxxxxxxxxxrkgggggggggggdeaggnddmitursgggggggggggseggndd`vptirlgggggggggggddddhfbipoxxourqggggggggggjdibmhhddhhslgggggggggggjddddddhm`tuxorsggggggggggdfvc`mhhfsgggggggggggdddhfmcturwgggggggggghhhddhm`ivtalgggjhhhdhhmituoxoxxxxxxxxxxxxx", -"xxxxoxxxxoxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxeggggggggggggggddddhhfbitpuoxxxxoxxxxxxuvuxxxxxoooxrkggggggggggggggjdjjjjnnggggggggggggndiibmhfm`tpoxxxxxxxxxxxxxxuwggggggggggnmrlggddhbiturkgggggggggggrqggjdh`iptvaggggggggggggdddddhmctoxxorwggggggggggndb`fhdddhhfawgggggggggggjddddddhmctuoraggggggggggndicbffhjh`ggggggggggnddddhf`iprwggggggggggndddhfbitpuukgggdhhddhhbipuoxxooxxxxxxxoxox", -"oxoxxoxoxxoxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxuqgggggggggggggjddddfmcvpooxxxxxoxxxxxxxxxxxxxxxxxxrlggggggggggggggddddddddjjjgggggggggnjibfhhhmctuxxxxxxxxxxxxxxxrgggggggggggnrsggjdjf`vptrlggggggggggkkggjddfbitpasgggggggggggndddddhm`tpoxrsgggggggggggdhbfhhdddhfbrqgggggggggggdddddddfbvpuorqggggggggggdmcbfhddhfmwgggggggggddddddfmiprwgggggggggggdddhmcvpuoosgggd`fhddfbipoooxxxxxxoxxxxxxx", -"xxxoxxxxoxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxuwgggggggggggggndddhf`vpuoxoxxxxxxxxxxoxoxxxxxxxooorggggggggggggggndddddddfbcv`qgggggggjhmfhjdhbipoxxxxxxxxxxxxxxosgggggggggggaeggnddhmcvppagggggggggggsggndddfbivtrlgggggggggggjdddddhfcvpooaqggggggggggndmfhddddhfbvrgggggggggggnddddddhf`vuorkggggggggggndbmfhddhhmcvqgggggggjddddddhmctpwggggggggggggddhmituooooggndcmhhhfbvpuxxoxxoxxxxxoxxox", -"oxxxxxoxxxoxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxraqggggggggggggggdddhmituoxxxxxxxxxxxxxxoxoxxxxxxxorsggggggggggggggjddddddhhm`cvvwggggggdhhdddhfbipoxxxxxxxxxxxxxxrkgggggggggggrqggdddfbivtrsgggggggggglqggdddhf`iveaggggggggggggddddddhmcvuorkgggggggggggjdfhdddddhmcasgggggggggggjddddddhmituragggggggggggjjmhhdddhf`ipobnnnnjddddddddhmctusggggggggggggfdhmipuoooxoddhibfhhf`vpooxoxxxxxxxxxxxxx", -"xxoxxxoxoxxxxxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxorwgggggggggggggggjddhbcpoxxxxxxxxxxxxoxxxoxxoxxxxxxuwggggggggggggggddddddddhfbb``sgggggndhddddhf`vuxxxxxxxxxxxxxxxrlggggggggggswggjddhm`vtvrwggggggggggqggnddddfb`ctsggggggggggggddddddhfcturegggggggggggndhhddddhhmcvpsgggggggggggdddddddhbiporlgggggggggggdfhhdddhhbipoxxobffjddddddddhmcpueggggggggggggghhmctoxxxxxouut`mhhm`tuooxxxoxxoxxxxxxxx", -"xxxoxxxxxoxoxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrrwggggggggggggggggjddhmctoxxxxxxxxxxxxoxxxxoxoxxxxxxrqgggggggggggggnddddddddhfmmbbcwggggjddddddhmctuxxxxxxxxxxxxxxxrgggggggggggsggndddhm`ciirgggggggggggggnddddhfm`crlgggggggggggjddddddhmiturlgggggggggggjdhdddddhfbiprlggggggggggnddddddhf`vpregggggggggggjdhhddddhmcvpuoxootibfdddddddhmiporgggggggggggggghf`vuoxxoxooutibffmcvuooxxoxxxxxoxoxoxx", -"xoxxxxoxxxxxxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxorwggggggggggggggggggddhf`vuxxxxxxxxoxxxxxxxxxxxxxxxxxaggggggggggggggndddddddhfmbbbbckggggdddddddfbituxxxxxxxxxxxxxxosggggggggggllggddddhmciceegggggggggggggjdddddfmbiaggggggggggggjddddddhbipregggggggggggndjddddddhbitprgggggggggggjddddddhfcturlgggggggggggjdhdddddfbituxoxootibfhdddddhfbipookgggggggggggggghbipuxxoxxxopv`mmbituxooxxxoxoxxxxxxxx", -"xxxxxxxxoxoxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxorwgggggggggggggggggggdddf`vuoxxxxopxoxxxxxxxxoxxxxxxxusggggggggggggggjddddddhdhbcii`vsggggddddddhdfipoxxxxxxxxxxxxxxrwggggggggggqggjdddhfb`ccakggggggggggggndddddhffmakgggggggggggnddddddhf`iprlgggggggggggjdddddddhm`vpuegggggggggggdddddddhbcpregggggggggggndhdddddhm`tpooxoxupv`mhddddhhbcvuoxrggggggggggggggqmcvpoxxoxooutc`b`vpuoxxoxxxxxxxxxxoxx", -"xxoxxoxxxxxoxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxrsgggggmlgggggggggggggnddhmcpoxxxx`uxxoxxxxxxxxxxxxxxvrwggggggggggggggddddddddb`itttiasgggnddddddhmmtpoxxxxxxxxxxxxxxrqgggggggggggggddddhfb``irqggggggggggggjdddddhhj`rqgggggggggggndddddddf`vreggggggggggggddddddddhbiturkgggggggggggdddddddfbvprkgggggggggggndddddddfbcpuoxxxxxutibffhhhhm`vpuoxokggggggggggggggmbipuoxoxooupv`cctpoooxoxxoxoxoxoxxxx", -"oxxxxxxoxoxxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxorsgggggjhkgggggggggggggnddhm`tuxxxx`xooxuvtxxxpuxotuxucrggggggggggggggnddddddhdmctpuiiusgggjhfhdddhmbpuoxxxxxxxxtutxtuegggggggggggggndddddhbb`eeggggggggggggnddddddhhhieggggggggggggdddddddhmctrlgggggggggggndddddddhm`vuorqggggggggggjddddddhfcvurggggggggggggjddddddhf`vpoxxxxxoouvi`mmmmb`vtuoxxxrqggggggggggggggf`vpooxoxooptvivpuoxxxxxxxxxxxxxxoxx", -"xxxoxxxxxoxxxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxorsgggggjdtaggggggggggggggdddfbipoxxupxooxivtixxpiouvvoueeggggggggggggggndddddddhmcpuov`osgggdmffhdhfbbpoooxxxxxxo`ii`tesgggggggggggggdddddhdfb`akggggggggggggjddddddhhmakggggggggggggdddddddfbiraggggggggggggddddddddhbituuegggggggggggjddddddhmctrsggggggggggggdddddddhm`tuoxxxxxxouutvccccivpuoxxxxxsgggggggggggggggfcvpooxxxooupppuooxxoxxxoxooxoxxxox", -"xoxxxxxxxxoxoxxxxxxxxxoxxxxxxxxxxxxxxxxxxxrsgggggjdvxrlgggggggggggggjddhbctoxxtxxxoocm`ixxxvxxxvxxakggggggggggggggjddddddhfcpuooovusgggdvbbhhhf``pxxxcmbbbixvvxvxrlggggggggggggjddddddhdbcrqgggggggggggnddddddddf`rqgggggggggggjdddddddf`irkggggggggggggdddddddhf`vporkgggggggggggdddddddfbvprwgggggggggggndddddddf`vtuoxxxxxxxooopttvvtpuoxxxxxxxwgggggggggggggggmctuooxoxoouuuuoxxxxoxxxxxxxxoxxxx", -"xxoxoxoxxxxxxxxoxxxxxxoxxxxxxxxxxxxxxxxxoraqggggjdvxookggggggggggggggddhfcvuxxvxxxxvpoxixxoioxxtxxrlggggggggggggggddddddhffvpoooxvokggjdpb`fhhmc`uxxxxoooxxxttxtorgggggggggggggjdddddhhhbveggggggggggggjdddddddhmseggggggggggggjddddddhm`trqgggggggggggjdddddddhmctuorqggggggggggnddddddhf`vurggggggggggggnddddddhm`touxxxxxxxxxoooouuuuoooxxxxxxxxqggggggggggggggj`ctuooxoxxoooxxxxxxxoxoxoxoxxoxxx", -"oxxxxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxxxxxxraqggggndcxoopsggggggggggggggdddfbipuxutxxxixxu`xxoixovvxorggggggggggggggnddddddhfmvpoxxxvxeqgjboccmffbicuruxxooxooovtxvosggggggggggggndddddddhm`rkggggggggggggddddddddhbakgggggggggggndddddddhmiaeggggggggggggdddddddhf`vpouegggggggggggjddddddhm`treggggggggggggjddddddhbitoxxxxxxxxxxxxxxoooooooxxxxxxxxrqggggggggggggggh`ituooxxxxxxxxxxxxxxoxxxxxxxxoxx", -"xxoxxoxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxraqggggndmououvvqgggggggggggggjddfmctuxx`xxxobmviixoumbpmprsggggggggggggggjdddddddhhf`oxtmbmb`mdhffhhmmhfmaslkxxxxxopmixbrkggggggggggggjdddddddhmcrlgggggggggggjjddddddhfcrqgggggggggggnddddddhf`vrkggggggggggggdddddddhmctporkgggggggggggdddddddhbctusggggggggggggdddddddfbvuuoxxxxxxxxxxxxxxoxoxxxoxxxxxxxxsggggggggggggggnm`vpuoxoxxxxoxxxxxxxxxoxoxoxxxox", -"oxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxuaqggggndmooupvcbsgggggggggggggnddhmcvpoxpuxxxxxxxxxxxxoxxxrwggggggggggggggdddddddhbipuxxxxxxxxxxxutibfbctraqggbxxxxxxooxxrqggggggggggggdddddddhfbtaggggggggggggddddddddhbeeggggggggggggdddddddhm`vrlgggggggggggnddddddhh`ipooagggggggggggnddddddhf`vprwggggggggggggddddddhm`vooxxxxxxxxxxxxxxxxxxxxxoxxxxxxxookgggggggggggggghmcvpoxxxoxxxoxxxxxxoxxxxxxxxxxx", -"xxoxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxurwgggggdmxoupvc`msggggggggggggggdddf`vpuooxxxxxxxxxxxxxxxxorqggggggggggggggddddddhf`vuoxxxxxxxxxxxoti`m`iprwggnduxxxxxxxxuaggggggggggggjdddddddhm`asgggggggggggndddddddhf`akggggggggggggdddddddhbiprggggggggggggjddddddhfcvuorsgggggggggggjddddddhfcvurwggggggggggggddddddhmctuxxoxxxxxxxxxxxxxxxxxxxxxoxoxxxxxolgggggggggggggjfbctuooxxxxxxxxxxxxxxxoxxxxoxxx", -"oxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxurwggggndhxooptcbmfcqgggggggggggggjdhhbituooxxxxxxxxxxxxxxxxoeggggggggggggggnddddddhmctuoxxxxxxxxxxxuti`b`vrsgggjfxxxxxxoxxusggggggggggggddddddddfbirlgggggggggggjddddddjhbirlgggggggggggjdddddddfbvreggggggggggggdddddddhbipuurqgggggggggggdddddddhbitorggggggggggggnddddddhbipoxoxxxxxxxoxxxxxxxxxxxxxxxoxxxxxooulgggggggggggggdf`vtuxxxxxxxxxoxxxxxxxxoxxxoxx", -"xxoxxoxxxxxxxxxxxxxxxxxxxxxxxxoxxxxurwgggggdjuxoutc`mfmbsgggggggggggggnddhmituooxxxxxxxxxxxxxxxxrsggggggggggggggjddddddhmitooxxxxxxxxxxoopic`craqgggjixxxooxxoorwggggggggggggdddddddhm`tagggggggggggnddddddjhm`vaggggggggggggdddddddhm`tusgggggggggggndddddddf`iuursggggggggggggdddddddfbiporggggggggggggndddddhf`vpoxxoxxxxxxxxxxxxxxxxxuerxxxoxxxxxouaqggggggggggggdhm`vuooxxxxxxxxxxxxxoxxxxoxxox", -"oxxxoxxoxxxxxxxxxxxxxxxxxxxxoxxxxxorwgggggdhuouupibmfmbcaggggggggggggggddhf`tpooooxxxxxxxxxoxxxxrwggggggggggggggdddddddf`ipxxxxxxxxxxxxoopticarlggggdpxxxououoorggggggggggggjdddddddhbiasgggggggggggnddddddjfbirsggggggggggggdddddmdhmctrkgggggggggggnddddddhmcvuurqgggggggggggnddddddhfcvporggggggggggggndddddhmcvuoxxxxxxxoxxxxxxxxxxxxaggkxxxooxxxxousggggggggggggjdhbctuoxxxxxxxxxoxxxxxxxxxxxxx", -"xxoxxxxoxxxxxxxxxxxxxxxxxxxxoxxxxorkgggggjduooutv`bfmmcvaqgggggggggggggjddfbipoxxxxxxxxxxxxxxooorggggggggggggggnddddddhf`tuoxxxxxxxxxxxoooptprwggggjjxooouppuorsggggggggggggdddddddhf`trwgggggggggggddddddjhf`vrwgggggggggggjddddhrs``ipuwgggggggggggjddddddhbctorsggggggggggggjdddddmmmituorggggggggggggndddddhmipuoxxxxxxrsqaxxxxxxxxxxegggmxxxoxoxxxouwgggggggggggndhf`ipuxxxxxxxxxxxxxxxxxxoxxxx", -"xxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxoorsgggggjdvouppi`bfmmcvprkgggggggggggggjddhm`tuoxxxxxxxxoxxoxoxrsggggggggggggggnddddddhmctuxxxxxxxxoxxxooourrwgggggd`xoupttpporkgggggggggggndddddddhmctrggggggggggggddddddjhmctrqgggggggggggdddddaegg`turwgggggggggggjdddddhf`vpraqggggggggggggdddddjrssiuxxrggggggggggggndddddhbipuxxxxxxraqqgkxxxxxxxxosgggdxxxxxxoxoourqggggggggggnddhmctuoxxxxxxxxxxxxxoxxxxoxox", -"xoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxorsgggggjdvoouti`mfmmcipoosggggggggggggggddhf`vpooxxxxxxxoooxxoxukggggggggggggggjddddddhbiuoxxxxxxxxxxoxooxurwggggggdpouptiivpurlgggggggggggjddddddhh`irsgggggggggggjddddddjf`iaaggggggggggggdddd`rgggjcuuwgggggggggggjdddddhf`vprkgglggggggggggdddddeaggluxxuqggggggggggggdddddhbvuuxxxxxurlgggjbxxxxxxxokgggjoxxoxxxxoxuusggggggggggnddhfbipooxxxxxxxxxxxxxxxoxxxxx", -"xxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxrsgggggjdvoouticmmfmcvtuxorggggggggggggggdddhbipuxxxxxxoooxoxxoxrlggggggggggggggdddddddf`vuooxxxxxxxxxxxxxrrwggggggndxopti``ituaggggggggggggdddddddhm`trwgggggggggggdddddddhf`vrsgggggggggggndddhrkggndiorwgggggggggggjdddddhmctrsggkggggggggggnddddcrqggjbxxowggggggggggggdddddf`iuxxxxxorwgggndvxxxxxxxrwgggnvoxoooxxoooorqgggggggggndddhmctuxxxxxxxxxxxxxooxxxxoxx", -"xoxoxxxoxoxxxxxxxxxxxxxxxxxxxorsgggggndbxuupi`bfmm`ipuoxxulgggggggggggggnddhmctpuxoxxxoxooxxxxuaggggggggggggggnddddddhf`vuoxxxoxxxvbpoxoraqgggggggjmoptc`b`itreggggggggggggdddddddhbiprggggggggggggdddddddhbitrkgggggggggggjdddeegggdmuoowgggggggggggjdddddhbiraqggsggggggggggjdddmrwggndcxxokggggggggggggndddhh`vpxxxxxrsggggdhxxxxxxxxrlggggmuuuuuoooxoousgggggggggjdddhf`vpoxxxxxxxxxxxxxxoxxxxox", -"xxxxxoxxuxxxxxxxxxxxxxxxxxxuorsggggggdfooutvcbffm`ituxxxxowggggggggggggggddhf`vpooxxoxxxoxooxxukggggggggggggggjddddddhmctuooxxxxxxxxvorrkgggggggggdvptv`fm`vprlgggggggggggjddddddhf`vregggggggggggnddddddjfbiprwgggggggggggdddaaqggjdvuookggggggggggggdddddf`raqggwkggggggggggjddfrsgggdfoxxxegggggggggggggdddhf`vuxxxorsggggjjoxxxxxooorgggggjupttppoooxooegggggggggdddddfbipoxxxxxxxxxxxxxxxoxoxxx", -"xoxoxxxxuxxxxxoooxxxxuoxxxxareggggggnduvppicbffm`iiipxxxprsggggggggggggggnddfbituoxxotpvovuoxorlggggggggggggggjddddddhbitoxutvxxxoooarelgggggggggndivi`fhhm`urggggggggggggjddddddhfctrkgggggggggggjddddddhf`vprlgggggggggggddaaqggndbuooxsggggggggggggqdddh`aaqggnrwggggggggggjdfrsgggjdtoxxxoqggggggggggggqdddf`tuoxurwggggjdvxxouuuuuorggggggvtivvpuoooxorgggggggggdddddhbctuoxxxxxxoxoxxoxxxxxoxx", -"xxxxxoxooxxxxuuutxxotuptpxurwgggggggnfbctvcbffmbivivipxxttsggggggggggggggghdhmctuoxxociicvcxxregggggggggggggggjdddddhf`vpuxvvvixxourelgggggggggggjhcf`mhhfbireggggggggggggdddddddhbiprqgggggggggggdddddddhbiturggggggggggggwraqggndhtuoxurgggggggggggggwkcrrsqggndrggggggggggglsrsgggjd`uooooukggggggggggggglbmf`turralggggndcxoouptvtpuegggggghic`ituooooorggggggggjdddddhmctuxxxxxxxxxxoxxxoxoxxxx", -"xoxxxxxoxxxxxpooxxxpuupuvrawgggggggggmpivcbffmbivp`bitxoorsgggggggggggggggqhhfffmbbixptxvovorrlgggggggggggggggjdddddddhmtuxi`cvurrslgggggggggggggdfc`mfhhmcprkgggggggggggnddddddhf`vregggggggggggnddddddhhbvpurgggggggggggggwggggjd`tuouptwggggggggggggggwwgggggdhrggggggggggggwlgggndfpuxoupptqgggggggggggggqserraelgggggndmoooutvccvtrsggggggq`bb`vuooooregggggggnddddddhfctuoxxxxxxxxxxxxxxxxoxox", -"xxoxoxooxxxxxxxopxxtuuprreqggggggggggktccbfffbcvpioxotoorrlggggggggggggggggqk``ipoxxxtpxvoprrwggggggggggggggggqbfdddhbituoprrraswgggggggggggggggndibhhhhh`vprlgggggggggggjddddddhmctrsgggggggggggjddddddhm`vuurgggggggggggggggggjdmvpuoptisggggggggggggggggggggdhurggggggggggggggggndhipuoupvvvsgggggggggggggggggggggggggndmooxupic``ctrsgggggggqbmbcpoxoorlgggggggjddddddhm`tpoxxxxxxxxxoxoxxoxxxxx", -"xxxxxxxooxxxuoxxouxotrrewggggggggggggglsrvffmcvpuixrrrraslggggggggggggggggggglsaruxxxppurrasqggggggggggggggggggqksrrrrrresskwqggggggggggggggggggnj`mhddhh`vpaggggggggggggdddddddhbitrlgggggggggggdddddddhbipooulgggggggggggggggjdh`vpuuvicclggggggggggggggggggjdtxulgggggggggggggggdd`vppppiicivkgggggggggggggggggggggggndmxxoptvcbb`ctrwggggggggwbm`tuxursgggggggjdddddddhfctuoxxxxoxxxxxxxoxxxxoxx", -"xoxxoxoxuoxxouppuxxxoeqggggggggggggggggggqnm`ipoxt`rwqggggggggggggggggggggggggggglexu`vrwgggggggggggggggggggggggggggggggggggggggggggggggggggggggdhhddhdhfmmesgggggggggggnddddddhf`vragggggggggggndddddddfbvuoxokggggggggggggggjddm`vpptic`isqggggggggggggggggjdixxosggggggggggggggddfcvpppvi`citpkgggggggggggggggggggggjdmxxxppvc`mb`vtrwgggggggggletarrakgggggggjdhhdddddhmctoooxxxxxxxxxoxxoxoxxxx", -"xxoxxxxxooxoxxxxxxxxosggggggggggggggggggggghctuoxxxrggggggggggggggggggggggggggggggncxxxrggggggggggggggggggggggggggggggggggggggggggggggggggggggggdhhhddhhbiprwgggggggggggjddddddhmctrkgggggggggggjddddddhfcvpoxxuqggggggggggggjddhmcvttic``ipsgggggggggggggggdd`puoupqgggggggggggnddjf`vttvc``cvpuo`ggggggggggggggggggnddioouupvc`mb`iturqggggggggggggwwlggggggggjdfmhdddddfbitooxxxxxxxoxxxxxxxxoxox", -"oxxxxxoxxoxxxxxxxxxxxagggggggggggggggggggggdipoxxxxxggggggggggggggggggggggggggggggnmxxxxgggggggggggggggggggggggggggggggggggggggggggggggggggggggndhddddhf`vpoggggggggggggdddddddhmitukgggggggggggdddddddhmctuoxoxrggggggggggjddddhf`ivic``cvpucggggggggggggjddbivtptvcggggggggggjdddhf`ivic```ituooucnggggggggggggggnjdhtooupticbmm`cvporggggjjjnggggggggggggggjdj`imhddddhf`vpooxxoxxxxxxoxxxxoxxxxx", -"xxoxoxxxxxxxxxxxxxxxxxtdddddddddddddddddddddipoxxxxxxddddddddddddddddddddddddddddddfooxxxdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddhmctpooddddddddddddddddddf`vpoxmdddddddddddddddddfbipooxxoxunngggnnjddddddhhbb`bb`cvpuoopnnggggggnjdddhf`ciicc`bnggggggnddddddhm````b`itpoooouthjnggggggggnnjddctttttvccbmbbcvpuuugggdjccmjjnggggggggnjdd`ppimhddddhbctuooxxxxoxxxxxxxxxxxoxxx", -"oxxxxoxoxoxxxxxxxxxxxxxxxoooooppvc`mhdddddhmctuoxxxxxxxxxxooouppibfdddddddddddddfbcvpuoooxoxxooxoupvcbfjddddddddddddf`ipuuoooooouuppptvvi``mfhhdddddddhbitooxxoooouv`fjdddddddhfcvuoxxxxxoupcmhdddddddhm`vuooxxxoxo`fddddddddddddhfmmbb`ituuxuoubjjjjjddddddjhfmbbbbmbbfjjjdddddddddhfmbbb`cvpuooxoupi`hddjjjjdddddfbcciicc`bmmmbcvtuoooejdhpupcmhdddjjjjdddmcoouvcfhdddhm`ipuoxxxxxxxxxxxxxxxxxxxox", -"xxoxxxxoxxoxxxxxxxxxxxoxxxoouptvc`mhhdddddhmbivppooxxxxxxooupptvcbhhddddddddddddhfbcivppuuooooooppvi`fhdddddddddddddfmcvtppupppppttvvic`bmfhhddddddddhf`vpuoxxxxoouv`fhdddddddhmctuxxxxxxoptcmhdddddddhmctuoxxxxxoooui`fddddddddddhffb`ivpooxxuutcbhddddddddddhhfffmm`cvvmfhdddddddddhhfmbcvpuoxxxxoutibfhdddddddddhhmmmbmmfffmbcvtuoxxouvvtxuvcmhdddhhmb`uuuooutibfhdhhfbituooxoxoxxxxxxxxxxxxxxxxx", -"xxxxxoxxxxxxxxxxxxxxoxxxxxoupti`bfhhdddddddfm`citpuxxxxxxuuptvccbfhddddddddddddddhfm`civtuuoxooptv`bmhhdddddddddddddhfm`civvvvviiic``bmmfhhhdddddddddhm`tuooooxxoopibfdddddddhfbvpoxxxxxoopv`fhddddddhhbitoxxxooxxxouv`mhdddddddddhhmbctuooxoxoouv`mhddddddddddjhhfm`ivtpv`mhdddddddddhfb`ituuxxxxxooptcbfhddddddddddhhhfhhffmbcvupuxooxoxxxouv`fhdjdhfb`ittppppicmhhdhfbcvuuxxxxxxxxxxxxxxxxxoxxoxx", -"xoxxxxxxoxoxoxxxxxxxxxxxxxxuticbmhhdhddhdhhhfmb`itpoxxxxoupvicbbmhhdddddddddddhdhhhfmb`citpoouuvc`bffhhddddddddddhdhhhfmb```````bbbbmffhhhdhhddddddhhfbipuxxxxxooupibfhdddddhhm`vuoxxxxxootv`fhdddddhhm`vpooxxxoxxxoupcbhhddddddhhhmbivpuxoxxxoouti`mhdddddddddhhfm`ituuptcbhhddddddhhfb`vppooxoxxxxoupvcbmhhdddddddddhdhhhfmbivpuxuxxooxoxoopt`mhhhhhhfb`civvvc`mfhhhmbctpuoxoxxxxxxxxxxxxxxxxxxxxx", -"xxoxxxxxxxxxxxxxxxxxxxxxxoouti`mmffhfhfhhhffmmb`cvpoxxxxoupvc`bmmffffffhfhffhfhfhffmmbb`ivpuoupvc`bmffffffhffhfhhhhhffmmbb`b`bbbbbmmmmmffffhffffffhffbcvpoxxxoxxooti`mfffffhfmbitpxxxxxxxupv`bffffffff`cpuooxoxxoxxoopv`mhhhdhdhhfm`ituoxoxxxoxoopti`mfhddddhdhhfm`ituooopvcmhhddddhhfb`vtuoooxxxxxoooopti`mfhdhddddhdhhhfmbcivpuoxxxxxoxoxoopv`mfhfffmmmm```c`bbmffmm`itpooxoxoooxxxxxxxxxxxxoxxoxx", -"xxxxoxxxxxxxxxoxxxxxxxxxxxoutvc```bbbbbbbbbb```civpoxxxxxupvi`c```bbbbbbbbbbbbbbbb`bb`ccitpooouvic```bbbb`bb`bbbbbbb`b````c`c```````b``mbbbbbbmmbbb``ivpuxxxxxxoxopvc`bbbbb```itpoxxxxxxxouti``bbbbb``ivpoxooxxxoxxouupicbfffffmb`cvtuooxxxxxxxooupti`bmffhhhffm`cvtpoxxoopicmffhfhfb`cvpuoxxxxoxxxxxoouutvc`bmffhfhhhffmb`ivtuuxxxxxxxxxxxouptcbbb````bbbbbbb`bmmmb`cvtuooxxxxxxoxxxxoxxxxxxxxxxxox", -"xxoxxxoxxxxxxxxxxxxxxxxxxxoouttiiiviivivvvvvviivtpupxxxxoouptvvivivvvviiiviiviiiiviiiivvtpuuoot`tvviiivvvivmbivvvviiiciivivvcvvv`mcmivi`ivivvii`iiivvtpuooxxxxxoooupbcvvvvivvvtpoxxxxxxxoou`bvvvviicbttpupcucpoxoxxxooupvic````civtpuoxxxxxxxvtxxxoptvi`bbbbb``citpovcpxxoupvi`bmb``cvppooxxxxxxxxxxpcxxouptvc``mbmbbb``civtpuooxxxxxxxxxxxxxuticciivvviccc```````ccitpuooxxxxxxxxooxxxoxxxxoxxoxxxx", -"xxxxoxxxxxxxoxxxxxxxxxxxxxxxouuppppppppppppuupppuuiuxxxxxxouuuupuupppupppppuppuptpppppppuoooooovuupppppppptftppuppuuctpppppvipppvbifpppuippupppippppuuoxxxxxxxxxooouuippppuuvuuuoxxxxxxxxooovuppuuvtp`vooomompxxoxoxoooupttvvvvttpuuooxxxxxxxxpxxxxxuitviiiiivvtpuuooxpxxxooptviiiivtpuooxxxxxxxxxxxxtxooxouutvvibiiiivvtppooxxxxxxxxxxxxxxxooutvvtppppptvviiiiivvttppuoxoxxxxxxxxxxxxxxooxxxxxxoxxx", -"xoxxxxoxxxxxxxxxxxxxxxxxxxxxoooxuouoooouuooxoooooxixxxxotpoxotuptpooppottoooxutvoooppptuoooxututooooooooooviooooooouioouuouioooot`uboooovuooxoouvoooooxxxxxxuuoptooootpvooopitttxxpopxuuxxxotoooootooooxxxmx`oxxxxxxxoxoouupppuuuooooxxxxxxxxxpopoxouivvivtvvvtptooxxxpxxxoxouuppvvvtupxxxxupoxxooptopxxootpouuppcttppppuuooxxxxxxxxxxxxxxxxxxopuuuuoooouupppttpppuuoooxxxxxxxxxxxxxxxxxxxoxxxoxxxox", -"xxoxxxxxoxxxxxxxxxxxxxxxxxxxxoooxxooxoxxoxxxxoxxouuxxxxppttxxtiipvtouictpcoxtiptcoopctttuxxttpicoooooxoxoovuxoxxoxxupoooooovxooooixioxxoxvxxxxxxvxxxxxxxxxxxuiitpcxxx`ptixxuiptuxxpcpittpxxxpxxxxxucpuxxxxcxvxxoxxxxxxxxxoooooooooxxxxxxxxxxxxvtttuxoittvuutcvctttxxxxpxxxxxxxouotctctptxxtvpipoxptpiioxtvppcuoooppouoooooxxxxxxxxxxxxxxxxxxxxouoooxoxooxoooououuooooxoxxxxxxxxxxxxxxxooxxxoxxxxoxxx", -"xxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxpxxxxxtcvtxxxtxxxtxxtoxoopovpppvixxpxxopoxtxxxtxxxxxxoxxxxxxxxxoxopxxxooxopoxxxxxxxxoxxxtoxxxxxotxxxxxxxxxxxtxxxopxxpxxpxxxpxxxxxxixpxxpxxxpxxxxxxxxtpxxxxoxxxxoxxxxxxoxxoxxxxxxoxoxxxxxxxxxxpxxxpxxpxooooocxtxxpxxxxpxxxxciccipxixpxxuxuoxxxpxxtxxxtxxvppptvxxxxtxxxoxoxxxxxxxxxxxxxxxxxxoxxxooxoxxxxxoooxoxoxooooxxxxxxxxxxxxxxxoxxxoxoxxoxoxxoxx", -"xoxoxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxpxxxxpuxxtxxxtxxxtxxtxxxopxcpptpuxopxxxpxxpxxxpxoxxxxxxxxxxxxxxxxopxxxxxoxpxxxxxxxxxoxxxovxxxxxxixxxxxxxxxxxtxxxopxxpxxpxxxpxxxxxxixpxxpxxxpxxxxxoxxopxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxpxxxtxxpxoxoxxixpxxpoxoopxxxxxxxxxoxixpxxuxpxxxxpxxpxxxpxxipppppxxxxpxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxox", -"xxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxuxxxtxxovxxxcoxotxxvtxovoxttxxxoxxpoxxpxxvxxucxxxxxxxxxxxxxxxxxxxopxxooxotxxxxxxoxxxxxoxtxxxxxxuoxxxxuvxxxxvtxovxxxpxxuxxxtxxxoxxvxpxxpxxxuxxxxxvvttxxxxoxxxxxxxxxxoxxxxxxxxxxoiuxxxxxxxxxxxpxxxpxxpoxoooxixpxxpoxxxpxxxxxxxxxxxixuxxuxxvoxutxxvoxucxxttxxxoxxxtxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxoxxxxxxxxxxxxxxoxxxxxxxxxxxxoxxxxxoxxoxxoxxxxxx", -"xoxoxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxvxxxxiiptpxxptitxxxuuivooxxuiipoxtipxtixxxtituixxxooxxxxxxxxxxxxxxvxxxooxtoxxxxxooxxoxxxotxxxxxxvxxxxuvxxxxuuivoxxiixuivxxxvivuxiixpuxixpiivvuxxxxuxxxxxxxxxxxoxoxxoxxxxxxxxxxoiuxxxxxxxxxxpiuxiiuxxtiipotiuutxtuoiiiitxxxxxxxxtiuupxpoxxvvtxxxxvituixxovipxooxvxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxoxxxxxxxxxxxxxxxoxxxxxxxxxxxxxoxxxxoxxoxxxoxoxx", -"xxxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxxxxxpxxxxxxpxxxxxxoxxxxoxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxuuxoxxxxtxxxxxxxxxxoxxxuxxxxxxoxxxxxxxxxxpxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxuxxxxxoxoxxxxoxxxxxxxxxxxxxxoxxxxoxxxxxxxxxxxxxxxoxoxoxxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxtoxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxoxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxoxoxoxxxxxxxxox", -"xxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxvivxxxxpivoxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxpiioxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxx", -"oxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxoxxxoxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxoxoxxoxxxxxxxx", -"xxoxxxxxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxoxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxoxxoxxxxoxx", -"oxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxoxxxxoxxxxxxxxxxxxxxxooxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxoxxxxoxxxoxxxxx", -"xxoxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxoxxxxxxxoxxxxoxox", -"xxxoxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxxxxxxxxoxxxxxoxxxxxxxxxoxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxoxxxxxxxxxxxxxoxxxxxooxxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxoxxxxxxxxxxxxxxoxxxxoxxxxxxxxxx", -"xoxxxxoxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxxxxxoxooxxxxxxxxxxxxxouxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxoxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxxxxxxoxoxxoxoxoxxxox", -"xxxxoxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxoxuxxxvpppxxxpxxxxxxpoxxxxxxxxxxxxxxxxxxxopxxxxxxxxxxxxxxxxxxxxxxpuxxxxxxpxxxxxupopxxxxxxxxxxxxxxxxxxxxxxxxoxoxxxootuxxxxxxxxxxxoooxoxxoxxtpxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxuuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxoxxxxxoxxxxxxxxxxxxxoxxxoxxxxxxxxxxx", -"xxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxooxoxoxxxxxxxxxxxxxxtoxxxtpttxxxooxxxxxxpxxxxxxxxxxxxxxxxxxxxuxxxxxxxoxxxxxxxxxxxxxxxuxxxxxuxxvxxxuvuixxxxxxxxxxxxxxxxxxxxxxoxoxxoxxxoxuxxxxxxoxxxxxxxxoxxxxxxuxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxuxxxxxxxxxxuxxxxxxxuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxoxoxxxoxxxxxxxxxxxoxxoxxxoxxoxxxxx", -"oxxoxoxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxoxxxxxxxxxxxxpoxoxtuptxxxxpxxxxxxpooxxxxxxxxxxxxuuoxxxuxoxxxxupooxxxoooxoxxxxxoxxxxxuxxxxxxutxvxxxxxxxxxxxxxxxxxxxxxxxxxoxooxxxouuuxxxupouuxxuuuouuxxoxuxxxxxxxxxxououoooxxxxuuxxxxxuuxoxxxxoxxxxxxuxxxxxxuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxoxxxxoxxxxxxxxxxxxxxoxxxoxxoxxoxoxx", -"xoxxxxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxouxxoopoouxxxxouxxxxxxpxxxxxxxxxxxotuupuxxupuuuxxopuuxxoppppupxxxxoxxxxxupuxxxxxpxpxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxtuupxxotuuoxxututupuxoxuxxxxxxxoxxoututupoxotuutoxxpuutuxxupuupxxxxuxxxxxxooxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxoxooxxoxxxxxxxxx", -"xxxxxxoxxxxxxxoxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxoxxxoxxxxxxxuxoxxxxxoxoxxxxpxxxxxxuoxxxoxxxxxxuuuuutxxoxxxoxxxuxxxxxuoxuxuxxxxuxxxxxxxxuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxooxxxxxxuxxuxoxuxxxxxxtxuxxuxxxoxxxxopttptxxtxuxxuxuxxxxuxuoxxxuxxpuuupxxxxoxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxoxxxoxxxxxxxxoxxoxxxoxoxxxox", -"xxxoxxxoxxxxxxxoxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxxxxxoxxxxxxuxxxoxoxoxxxxxxuoxxoxxopxxxxoxoxxopuuuuuxxoxxxooxxuxxxxxuuxoxuxxxxoxxxxuxxxuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxuxouxxxuxxxxxxpxuxxuxoxuxxxxxxxxxxxxpxuxouxuxoxxuxuxxxxoxopuuuuoxxxuxxxxxxxuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxoxxxxxxoxxoxxxxxxxxxoxoxxxxxxoxxx", -"xoxxxxxxxoxxxxxxoxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxoxxoxoxxxxxoxxxxxxxxxxoooxxxxxxxoxxxxxuxxxoxxuxxxxxpuoxxopoxxxxxuxxxuxoxuxxxxxuoxuxoxxxxuxxoxoppuoxxxxxxxxxxoxxxxxxxxxxxxxxxupoxxoxxxoxoxxuxxooxxuxoxxxxtxuxouxxxuxxxxxxxxoxxxpxuxxuoouxxpoxouxxupxxpoxxxxxxxuxxxxxxuxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxoxxxoxxxxxoxxxxxxxxxxxxxxxxxxxoxxoxxxxx", -"xxoxxoxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxooxxxoxoxxoxxxxxxpxxxoxxxxxoxxxxuoxxxxxouxxxxpuxxxxxppuoxopuxupuxxoppuoopuxpxouxpppppxxxxuxxxxxxxxxxxxxxxxxxxxxxxxxxxxopxxxxoxxxxoxppooppxoouppoxppxuoxpxuppppoxxxxxxxxppxuoxpxxoppooxxoppouuxxuppoxxxxuxxxxxxuxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxooxxxoxxoxxoxxxxxxxxxoxxxxxxoxxox", -"xxxoxxxxxxoxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxxxxxxoxxxxxooxxxxxxxxxxoxxxoxxxxxxoxxxxxxxxxxxxxxxxxxxoxxoxoxxxxxxxxxxxxxxxxxxxoxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxoxxoxxxxxxxxoxoxoxxxxxxpxxxxxxuoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxoxxoxxxxxxxxxxxxxxxxxxoxxxoxxx", -"xoxxxoxxoxxxoxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxoxoxxoxxoxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxoxoxxxxxxoxxxxxxxxxxxxxxxxxxoxxxxxxxxoxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxoxxxoxoxxoxxoxxxxxxxxxxoxxxxxxxxxxxoxxxxxxoxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxxxxxxoxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxoxxxxxxxxoxxxoxxoxxxxxxxoxxxxxxxox", -"xxxoxxxxxxxxxxoxxxxxoxoxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxxxxoxxxoxxxxxxxoxxoxxxxoxxxoxoxxxxxxxxxxxxoxxxoxoxxxxxxoxxxxoxxxxxxxxoxxxoxoxxxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxoxxxxxxxxxxoxxxxxxxxxxxxxxxxoxoxxxoxxxxxxxxxxxoxxoxoxxxxxxxoxxxxxxxxxxxxxxxxxoxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxoxoxoxxxoxxxxxxxxxoxxxxxxxxxoxxx", -"xxxxxoxxxxoxxxxxoxxxxxxoxxxxxxxxxxoxoxxxxxxxxxxxxoxooxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxoxxxxxoxoxxxoxxxxxxoxxxxxxxxxxxxxxxxxoxxxxxxxoxxxxxoxxxxoxxoxxxxoxxxoxxxxxxxxxxxxxoxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxoxxxxoxxoxxoxxxxxxxoxoxxxxxxxxxxxxxxxxoxoxxxoxxxxxxxxxxoxoxxxxxxoxxoxxxxxxxxxxxxxooxoxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxxxxxxoxxxxxoxxxxxxxxxxxxxoxxxxxx", -"oxxoxxoxoxxxoxoxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxoxoxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxoxxxxxxxoxxxxoxxxxxoxxxxxxxxxxxoxxxxoxxoxoxxxoxxxxxoxxxxxxxxoxxxxxxxxxxxxxxxxxxoxxoxxxxxxoxoxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxoxxxxoxxxoxxxxxxxxoxxxxxxxxxxxxoxxxxoxxoxxxxoxoxxoxxoxxxxxxxxoxxxoxxxxxxxxxxxxxxxxoxxxxxxoxxoxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxxoxxxxoxxxxxxxxoxxxxxxxxoxoxxxxxxxoxoxx", -"xxxxoxxxxxoxxxxoxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxoxoxoxxoxxxoxxxoxxxxxxoxxxxoxxxxxxxxxxxxxxxxxxxxxoxxxxoxoxxxxoxxxxoxxoxxoxxxxxxxxxxxoxxxxoxxxxxoxxxoxxxxxxxxxxoxxxxoxxxxxxxxxxoxoxxxoxxoxxoxxxxxxxxxxxxoxxxoxxxxxxxxxxxxxxoxxoxxxxoxxxxxxxoxoxxoxxxxxoxoxoxxxxxxxxxxxxxoxxxxxxoxxoxxxxoxxxxxxxoxxxxoxxxxoxxoxxoxxxoxoxoxxxxxxxxxxxxxxxoxxxxoxxxxxxxxxxxxxxxxxxxxxoxxxxoxoxxoxxoxxxoxxxxxxoxxxxxxxxxox", -"xoxxxxoxoxxxxxxxxxxoxxxoxxoxoxxxoxoxxxxxxxxxxoxxxxxxoxxxoxxxoxxxxxoxxxoxoxxxoxxxxxxxxxoxxxxxxoxxxxoxxxxxxxxxxxxoxxxxxxxxxoxxxxxoxxxxoxoxxxxoxxxoxxxxxxxoxxoxxxxoxxxxxoxxoxoxxxxxxoxxoxxoxxxxoxoxoxxxxxxxoxxxxoxxxxxxxxxxxxxxxxoxxxxoxxoxxxxxoxxxoxxxxoxxxoxxxxxxxxxoxxxoxoxxxxxxxxoxxxoxxxxxxxxoxxxxoxxxxxxxxxxxxxxxxxoxoxxoxoxoxxxxxxoxoxxxoxxxxxxxxxxxoxxxxoxxxxxoxxxxxxxoxxxoxxxxoxoxxxxxxxxxxxxx", -"xxoxxxxxoxxxoxoxoxxxxoxxxxxxxoxxxxxxoxxxxxoxxxxoxoxxxoxxxxxxxoxoxxxxoxxxxxxxxoxxxxxxxxxxoxxxxxxoxxxoxxoxxoxoxoxxxoxxoxoxxxoxoxxxxxxxxxxoxoxxxxxxxxxxxxxxxxxxxxxxuoxxxxxxxxxxoxxoxxxxxoxxxxouoxxxxoxooxxxxoxxxxoxxxxxxxoxoxxxxxxoxxxxoxxxoxxxxxxxxoxxxxoxxxxxxxoxxoxxxoxxxxxoxxoxxxxxxxxxoxxoxxxxoxxxxxoxxxoxoxxoxoxoxxxxxoxxxxxxoxoxoxxxxxxxxoxxxxxxxxoxxxxxxxoxxoxxxoxxoxxxxoxxxoxxxxxoxoxxxxxxoxxx", -"xxxxxxxxxxoxxxxxxxxxxxxxoxxoxxxxoxoxxoxoxxxxxoxxxxxoxxxoxxoxxxxxxoxxxxoxoxxoxxxxxoxxxoxxxxxxoxxxoxxxoxxxxxxxxxxxxxxxxoxxoxxxxxxxoxxxxxxxxxxoxxxoxxxoxxxoxoxoxoxxxoxoxoxoxxoxxxxxxoxoxxoxoxxxxoxoxxxoxoxoxxxoxxxxoxoxxxxxoxxoxxxoooxxxxxxxxxxoxxoxxxxoxxxoxoxoxxxxxxxxxxxxoxxxxxxxxoxxxxxxoxxxoxxxoxxoxxoxxxxxoxxxxxxoxoxxxxxoxoxxxxxxxoxoxoxxxoxxxoxxxxxxxoxxxxoxxxoxxxxxxxxxxxxxxxxxoxxxxxoxoxxxoxx", -"xoxxoxoxxxxoxxxxxxxoxxoxxxxxxoxxxxxoxxxxoxoxxxoxoxxxoxxxoxxxoxoxxoxxxxxxxoxxxoxxxxxoxxxoxxxxxxxxxxoxxxxoxxoooxxooxxoxxooooooxoxxxooxoxxxxxxxooxoxoxxxoxoxxxxxxooxoxxxooxoxxxoxoxxxxoooxxxoxxoxxxooxoxxxxxooooxxxooxoxoxxooxxxoxxoxxoxoxoxxoxxxxxxxxxxxoxxxxxxoxoxxxxxoxxxxoxoxxxxxxoxxoxxxxoxxxoxxoxxxxxoxxoxxoxoxoxxxxoxxoxxxxoxoxxxxxxxxxoxxxxxxxxoxxxoxxxoxxxxoxxxoxoxxoxoxxoxxoxxxoxoxxxxxoxxxxx", -"xxoxxxxxoxxxxoxxoxxxxxxxoxoxxxoxxoxxoxoxxxxoxxxxxxoxxoxxxxoxxxxxxxoxoxxoxxxoxxoxxxxxxxxxoxxoxoxxoxxxoxxxxxoxooxxxoxooxxxooxoxxxooxooxxoxoxoxxooooooxxxoxooxoxooooxoxooxoxoxoxxxxxoxxoxoxxxoxxoxxxxooxxoxoxoxooxooxooxxxxxoxxxxxxoxxxxxxxoxxxxoxxoxoxoxxxxoxoxxxxxxoxxxoxoxxxxxoxxxxxxxxxoxxxxoxxxxxxoxoxxoxxxxxxxxxoxoxxoxxxxoxxxxoxxoxxoxxxoxoxxxxxxoxxxxxxxxoxxxxoxxxxxxxxxoxxxxxxoxxxxxoxoxxxxoxx", -"xxxxoxoxxxoxxxxxxoxxoxxxxxxoxxxxxxxxxxxoxoxxoxxoxxxoxxoxoxxoxxoxoxxxxoxxoxxxoxxoxxxxxoxxxxxxxxoxxxxxxoxoxxooxoxoxoxxoxoxxxxxoxxoxxxoxxooooooxxxxxxoxooxxoxxxoxxxxoxoxooooxxoooooxxoxoooxoxxxoxxoxxxoxxxxxoxoxxxxoxxxxoxxxoxxoxxxoxoxxoxxxxoxxxoxxxxxxoxoxxxxxoxxoxxoxxxxxxoxxxxoxoxxoxxxxoxxxxxoxoxxxxoxxxoxxoxxoxxxxxoxxoxxxxoxoxxoxxoxxoxxxxxoxoxxxxxoxxoxxxxoxxxxoxxoxoxxxxxoxoxxoxoxoxxxxoxoxxox" +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkknkkkkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknikkkknninkkkkkkkkkkknninnnkkkkkkkkkinkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkknknkkkkkkkkkknkkkkkkkknkkkkkknkkkkknkknkkkkkkkkkkkxkkkkkkknkkkkkkknkkkknknkkkkkkknkkkkknknnkkkkkkkkknkkknkkkkknkkkkkkkkkkkkknkkkkkkkkkkkkknkkkkkkkknkkkkkknkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkknnkknnnnikkkkkkkkkknnnnkkknnnnnkkkinnikkkkkinnkkkkkkkkkkikkkkkkknkkkkkkknnkkkkkkkkkkkinnnnkkknnnkkkkkkkkkknnninnkknnnnnkkknnninkkinnnnkkkkkkkkkkinnnkkknnnnnkknnnnnkkknkxnkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkknkkknkkniiiinkknkkknkknkkknkknkkkknkknxkkkkkkkkkkkkkkkkkkkkknkkkkkkiinnkkkknkkkknnnnnxkkkkxkkkkniiiinknnknknkknkkkkkknkkkknknnnnnikkiiiiikkknkknkknkkkknkknkkkknkknikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkknkkkkkkkkkknkkknkknkkkknknkkkknkknnikkkkkkkkkkkkkkkkkkkknkknkkikkknkkkknkkkknnnknnkkkxkikkkkkkkkkknnknknkknkkkknknkkkknkinnnnnkkkkkkkkkknkknkknkkkknkknkkkknkkinnkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkknnkknkkkxkkkkkkkkkknkkknkkinkkikknnkknnkknkkikkkkkkkkkkkkkkkkkkknkknkkikknnkkkknkkkkkxkkkkkkikkkikkkkkkkkknnknknkknnknxkknnkkinkkxkkkkkkkkkkkkkknkknkkkikknikkinkkikkknknnkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkknkknkkninnikkkkkkkknxkkixkkkixxnkkknxxnkkiikkxxkkkkkkkkkkkkkkkknxxxxxkknxxkxnkkixxnkkkkxxikknxiknxnkkkkkkknxikxknnkkixikkkknxikxnkkixikkkkkkkkkkixkkxxkkkixnkkkkixxkkkxnknxikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkknkkkkkkkkknknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkkkknkkkkkknkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkknkknkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkknkknkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknknkkkkkkkkkkkknkkkkkkkkkknkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkknkknkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkknkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkkkkknkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkknkkkknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkknknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknknknkkkkknkknkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknknkkkkkknkknkkkkkkkkkkkkkknknknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkknkkkkkkkknkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknknkkknkkkkkkknknknkkkkknkknkknkknkknkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknkkkkknkkknkknkkkkkkkknknknkkkkkkkknkkkkknkknkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkknkknknknkknkkkkkkkkkkkkkkkkkkkkkknkkkknkkkknkknuunnkknkkkknkkknkkkkntkkkkkkkkkkiikkkkkkknkkkkkknkkkknnkkkknnkkknkkkkkkkkkkkkkkkknkknkknkkknknkkkknkkkkkkkkkkkkkkknkknkknkkkkkkknkknkknknkknknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkknkknknkkkknkkkkkknkkkkkkkkkkkkkkknkknkknkkkkkkknkknkknknkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkknkkkknkkkkkkkkkkkknkkkkkkkkkknktnkkkkiknkkkknkkkkkkkkkkkkikkkkkkkkkkkinkkknkkkkknkkkknknkkukkkktkknkknkkkkkkknknkknkkkknknknknkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkknkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkknkkkknkkknknkkknknknkkkkkknknknkknkkkknkknknkknkkkkkkkkkkkkkkkkknkkkkkkkkkknkknkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkknknkkkkkknknkkkkkkkknkknkkknkkkkkknkkkkkkkkktkkkknikkknnkixnknininnnkkxkninkkkkiikikknniikkkkknkkkkkkkxnknkkiikkknknkkkkkkknkkkknkknkkkkkknknknkkkkknkknkkknkkkkkknkkkkkkkkkkkkkkkknkknkknkkknkkknkkkkkkkkkkkkkkkkkkkkkknkkkkknkknkkkknkkkkknkkkkknkkkkkkkknkkknkknknkkkkknkknkkkkkknkknkkknkkkkkknkkkkkkkkkkkkkkkknkknkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkknkknnknkkknnkkkkkkknkkkkkkkkknkkknkkkkkkknnknkkkxnkkkknixtkkxuxuxxikitxiukkktiiuxkknixxikkkkknkkknkktkkkkkktkkkkkkkkkkknkkknknkkkknknknkkknkkkkkkkknkkkkkkkkknkkknkkkkkkkkkknknknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknkknkkkkkknkkkkknkknkknknnkkknkkkkkkkknkkkkkkkkknkkknkkkkkkkkkknknknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkknkkkkkkkkkkkknkkkkkkkkknknkknkkknkkknknkknknkkkxkkkkkkxknknkiuuukknukxkkxkxnkkktkikkkkxkkktutikknkkknknkkkxknknkkxnknkknknkkkkknkkkknknkkkkknkkkkkkkkkknknkknkkknkkknknkknknkkkkkkkkkkknnkkknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkknkknkknkkknknknknkkkkkkknkkkkkknnkkkkkkkknkkknkkkkkkkkknknkknkkknkkknknkknknkkkkkkkkkkknnkkknkkknkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkkkknkkkkkkkkknknkkkkkxkkkknkxknkkntnktnkkwkxkkxkxkkkkxkxkkkkxkkxnknxkkkkkkkkknkkxnkkkkkxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkkkkknkkkkkkkknkkkkkknkkkkknkkknknkkknkkknkkkkkkknkkkkkkkkkkkkkkkknkkkkkkkkkkknkkknkkkkknkknkkkknkkkkkkkkkknkkkkkkkkkkkkknknkkkkkkkkknkkkkkkkknkkkkkknkkkkknkkknknkkknkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknnknnkxknkknxkknkxkkkwknkwkxkkxkxunkxnkntkkttkktkkixkkkknkkkknkktkknknnxkknkknknknkkkkkknkkkknknkkkkkkkkkknkkkkkkkkkkkkkkkkkkkknknkknkknkkknkkkkkkkkkknkkkknknkkkknkkkkkkkkkkkkkkkkkkkknkknkknknkkknkkkkkkkkknkknkkkkkkknkkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknknkknkknkkknkkkkkkkkkknkkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkunkkxwwwwikkuwunwkwwktikwnwnwwnkkknwwittkiwwnwnnkkkknkkkkkntkkkktnnkknkkkknknknnnnnnnnnnnnnkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknnkkkkkknkknnkknkkknkknknkkkknkkkkkkkkkkknknkkkkkknkkkkkkkkkkkknkknknnnknknkkknknknknnkkknknknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknnkkkkkknkknnkknkkknkknknkkkknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkrrrrrrrrrbrrrrrrbrrrrrrrrrrrrrikinnkkknirrrrrrrrbrbrbrrbrrriknkkkkkkrrrrrrrrrrrrrrbrrrbrbrrrrbrrrrrrrrrrrrrrrrrrssssssgsggbkkkkkkknkkkkkkkkkknknkknkkkkkknkkkkkkknkkkkknknkkkkkkkkknknkkknknknkkkkkkkkknkkknkknknknknknkkknknkkkknknkknkknknkknkknknkkkkkkkkkkkkkknkkkkkkkkkknknkknkkkkkknkkkkkkknkkkkknknkkkkkkkkknknkkknknknkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkrhhhqhhhhhhhhhhhhhhhhhhhhhhhhhhmkkknkkkivhhhhhhhhhhhhhhhhhhhmknknkkkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhtnknkkkknnkkkkkkkkkkkkknkkkkkkknkkknkkknknkkkkknknkkkkkkknnnkknkkkknknkkkknkknkkkkkkkkkkkkkknkkknknnkknknkkknkknknkkkkkkkkkkknknnkknkkkknnkkkkkkkkkkkkknkkkkkkknkkknkkknknkkkkknknkkkkkkknnnkkknkkknknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknknknkkihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhodknkkkknvhhhhhhhhhhhhhhhhhhhockkkkkkihhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhoenkkknnkkkkknkknknkknkknknnknkkkkkkkkkknkknkknkkkkknknkkkkkknkknknkkkkkkkkkkkkknnkknknknnkknknknkkkknkknknkkkkknkknnnkknnkkknkknknkkknnkkkkknkknkkknknkknnnkkkkkkkkkkkknkknkknkkkkknknkkkkkknkkkknkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkmohhhhhhhhhhhhhhhhhhhhhhhhhoooldkknknkkbhohhhhhhhhhhhhhhhholdnknnkkkmohhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhlcnknknkkkkknkkkkkkknknknknkkkkkkknkknnkkkknkkkknnkkkkkkknknkknkkkkknknnkkkkknkkknnkkkkkknknkknknknknknknknknknkknkkknkkkknnkknknknknknkkkkknkkkkknknkknkkknknkkkknkknnkkkknkkkknnkkkkkkknknknnknkkknknnkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkdpllhhhhhhhhhhhhhhhhhhholeepddwnkknknkkwdddqhhhhhhhhhhooeepwknkkknkkddjeoqhhhhhhhhhhhhhhhhhhleeeeeeelloohhhhhhhhhhhhhhhhl`nnnnknknknknnknknkknkkkkkknkknkkkkkkknknkkkkkkknnnknknkkknnkkknnnkkkkkkknkkkknkkknkkkkkkkknknkkknkkkknkkknkkknknkknnknkkkkkkkknknknkkknknknknknkkkknkkkkkkkkknkkkkkkknknkkkkkkknnnknknkkknkkkknknkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkx`fhhhhhhhhhhhhhhhhledtnnknnnnnnnnnkkkknshhhhhhhhhlej`nnnnniknknkkkkknghhhhhhhhhhhhhhhhoel`xnninitwudplohhhhhhhhhhhhheunnnnnnnknknkknkknnnkkknknkkkkkkkkkknkknkknnnkkkkkkkkkkkkkkkknkkkknnknkkkkkkkkkkkkknkkknkkkkkknnkkkknkkknknnnkkkkkkkkknkkknknkkkkkkknkkknknknknknnnnknknnknkkkkkkkkknkknkknnnkkkkkkkkkkkkknknkkknknnknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknnmhhhhhhhhhhhhhhhlcxxiixixxxxiinnnkkkighhhhhhhheeaxxxxxxxiiinnknkknnivhhhhhhhhhhhhhhhejxxixxxxxxxxxii`dohhhhhhhhhhoetxtxxinnnnknknknknknnnknkknknkkkknkkkknknnkkkkkkkknkkknkknknknknknkknknknnkkkkknkkkknkkknnknknkkknkkkknknkkknknknknkkkknkkkkkknknkkkkkkkkknknknkknknnknkkknknkkknkkkkknknnkkkkkkkknkkknkknkknknkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkknirfhhhhhhhhhhhhhhecuuwwuuuuuuutxnnnkkrvhhhhhhoeewuwwwuuuuutxxnnknkknrvhhhhhhhhhhhhhhoewwuwuuuwuuwuwuuuuwdqhhhhhhhhoew`wwwuxnnnkknkkknknknknknkkkkknnkknkkkknknnknnknkkkkknkkkkkkkknknkkkkkkkkknknkkkknkkkkkkknkknkknkkknknkkknnknnnkknkkkknknkkknkkkkknkkkkknkkkknkkknkknnknnkkkkknkknknkkknknnknnknkkkkknkkkkkkkkknnnkkknkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkknknitshhhhhhhhhhhhhhlcccccaaaa``wuxinnkrbhhhhhhoejdccaacacaaa`utxnnkknnrvhhhhhhhhhhhhhhllccaccaaaaaaaaaaaaaaaqhhhhhhhljcdcca`txnkkkkkkknknkkkkkknnnknkknnnknkkkkkkkknkkknnkkknkknknkkkkkknkknnkkkknkknkkkkkkkkkkknkknknnknkknknkknkknknknknkknknkkkknknkkkkkkkkkkkkkkknknnkkkkkknnnknkknnnkkkkkkkkkknkkknnkkknkknknknkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkniughhhhhhhhhhhhhhljjpjpppdcaa`utxnnirfhhhhhoeejjpjpjpppddcaaccxnkkinrhhhhhhhhhhhhhhhejjpjppppjpccaccccccddvqhhhhhheejjjjpawxinkkkknkkknknnnnnkknknknkknknnkknkknknknnkknkkkkknkknknkkkkkkuukknkkkkknkkkkkkkknkkknnkkkknkkknknknknkknknknkkkkknkkkkkknknnkkkkknkkkknkkkknknnnkknknknnknknnnkknkknknknnkknkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknnituvhhhhhhhhhhhhhoeeejejpdca`wuxinnrmhhhhhoelpjejejejjjdda`ctnkkkkxnrhhhhhhhhhhhhhhoeeeeejejpdpcaaa`aaaccddmhhhhhheeeeejpc`cdannknknkknknxa`cackknknnnnkccnkcaknkkknknkkkknkkknknkkkkkkkkktkkkkkkkkknkkkkkkkkkknkkkknkknkkkkkknknknknkkkknknknkknkkkkkkkkkkkkkknknknknknknknkkkknknknnknknnkkkknkkknknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkniitshhhhhhhhhhhhhheeeejjpc`wutxinnrshhhhhoejcdpeeeeeejpc`aaautnnkttishhhhhhhhhhhhhhleeeeeeljpccwaa`uwwacaacsqhhhhoeeeeeejcwxunknkkkittkkktkntktnknxtinknndknwnkkkknknktitniikkkntxkkkkkxxkxkkkitxkkkknknkknxxxkxnnnkitxknntkttnknknknknnkkknkknkkknknkkkkkkknknkkkkknkkknknknnkknknnknknnknknnkkknkknnkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknknnirhhhhhhhhhhhhhheeeeepc`utxxinnighhhhhoepcapjeeeeejjp`wwwatxkknt`rmhhhhhhhhhhhhhhleeeeeejpc`ata`uxxca`ccwwmhhhhleeeeejpawxunkknkktttwnnkkktkkkn`uuu`nknn`cknnnkkkkkkt`xaxuikn`xx`nkk`ttaukk`uxw`nkkkkkkknwuu`xwknntxuiki``ut`xkknkknknnnknkkkkknkkkkkkkknkkkknnkknkknnkkkkkknknnknnnnknknnknnkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknknnknivhhhhhhhhhhhhhleeejpauxinnnnrbqhhhhoedwiwapjeeejjdjtxinunnnkkktrfhhhhhhhhhhhhhheeeeeeeejwuwctnnni`uuwcutshhhheeeeeejpauxuknnknkua`uknnkktnknn`ttuaxknn`wknkxaaacakkckxkkxkxkkkktktnkkkwki`ttxaxnwaaa`tkttntktkkn`autkktnknkwkknknkkkkkkknknkknkkkkkkkknnnknkknkknknknnkknkknkknknknnnnknknnkkknnkkknkkkkkkkkkkkkkknkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknknknkknknknshhhhhhhhhhhhhoeeejd`uinnkkrrqhhhhhednuxucpejejpda`xinntnkknnkxrhhhhhhhhhhhhhhoeeeeeejpaux`x`nnnx`ttuuiighhhheleeeejp`tiunkntktxnnwkknkntknkx`ttttnnkwxttkkkkkkkkknaktkktktkkkktktknnktkx`ttttnkknkkkkkxxkuntnkunkntkkunknkwnkkknkknknnknknknknkknnknkkknknnnknknnkknknknknknnnknkkkknkkkkkknkkkkknkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkknknknknkbhhhhhhhhhhhhhheeejd`tinknrbqhhhhoejnnu`wdjejjjauxxnnnkuknkknnbshhhhhhhhhhhhhhleeeeeejc`titni`knkcxkniknrhhhoepjeeejd`titnknukwkkn`nknkktkknncxkknkktxnkcnknkkknkkkaktkktkitkkuxkn`knw`nkaxnnnnkkkkkkkktxntntnnukktxkkx`nkuinnnknknknkkkknnkkkknnkkknnknknkknkkkkkknknkkkkknknkkkkkkkknnknkkkkkkkkkkkkkkkkkkkknkknkkknnkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknknknnknknkkknnnfhhhhhhhhhhhhhleejd`tnkkibqhhhhheeinnxajjjepdadd`xknwcccwkntarmhhhhhhhhhhhhhheeeeeeepcwx`unkcanknwcwxknrhhhoecpeeepcwwccccaxkicctuwkntcccnnknwa`xkkaakkackkknkknnaakuikakkiacxknknacxwwnnua`xnknkkkkkiawkanxwkuccicxktn`ciknkknknknknknkkkkknkknnnknnknnnnnkknnnkknknknknnnknnknknkkkkkkkkknknknnkkkkkkkkkkkkkkkkknknknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkknnknkknmhhhhhhhhhhhhhoeejpauxnirfhhhhoeltxnit`cpjpd`utnnkknnnknknkknrqhhhhhhhhhhhhhoeeeeeejpauxknkknnknknknnkkrhhhld`djjjpcwxnnknknnknknknkknkkknkknnnnnkknknkkkknkknkkknkkkkkkkkkkkkkkkkknnnkkknkknkkkkkkkkkkkkkknnnkkkknnktkkknkknnnknnkknkknkknkknkkknkknnkkkknnnnknnnknknkknknknnnknkkkknkkkknkkkkkknkkkkkkkkkkkknkkkkknkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkknkkkkkkknknknnknkknknknbhhhhhhhhhhhhhheeepcuxirvhhhhheliknxtwcpppcawxinknknknnknknknbhhhhhhhhhhhhhhoeeeeeejp`unkkkkkknknknknknghhhe`wcpjjpattnnnnnkknknknknnknkknnkknkkknkkkkkkkknknkknkkknkkkkkkkinknknkknknnnknkknknkkkkkkkkkkknkknknnkknxpctkkkkkkknkknnknnkknnkknknknnnknnnnnkkkkknknkknknkknnkknknknnkkkkkkknknnknkknkkkkkkkknnknkknknknknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkknkkkknnkkkkkkkknknknnkkkkkiqhhhhhhhhhhhhhleejcwrrvhhhhheennnitwadppc`utxnnnkkknknnknnkrshhhhhhhhhhhhhhleeeeeejdwuxinkknnnnknnknnnnmohetuapjjd`xxnnknnknkknknknknnnkknknknknknnkknknnkknnknknkkkkknkkkknnnknkknnknnknnknkknkkknnknkkkkknnnknknknknnnkkkkkkknnnknnnnnknnnkknkknkknnnnnnnnnkknknnnknnkknknkknkknnkkknnnknknkknkkkkkkkkkkkknknkkkknknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkknkkkkkkkkknkknkkkknknkkknnnknmhhhhhhhhhhhhhoeejdtrvhhhhhelnnnitwadppd`uxnnnknnnnknnnknkkrvhhhhhhhhhhhhhheeeeeeepcwxinnknrgvbrknnnnknncjlit`dppcwxnnnnknknnnknkknkknknknknnnnkkkknnnnkknnkkknkkknkkknkkkknnnnnnknknnnnknkkkkknknkkkkkkkkkkkknnkknnnnnnnknkkkkkknnnknnkkknknnknnkkkknknkkkknnknkkkknkknnnnninnkkkkknkkkknknknkknkknkknkkkknnnnknkkkknnkknnnkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkknghhhhhhhhhhhhhheeesrvhhhhoeeinnxtwadppcawtikkkkkkknkknnknknrhhhhhhhhhhhhhhoeeeeeejp`uxnnnnnrqhhwxknnknnkkkkixwapdauinnknknkkknknnniirnikkknkknnniirrggsgikknnnknnkknkkknirrrgsggnnknkknknkkkkkknkkkknkkkkkkknknknirrbsssbnnnnkkkknnnnniiiikkkkkkkkkkknnknnnkknknnnnnnirrrsssggrnnnkkknkkknknnknknnkknkknrrrbsgsgrnnnkkkknrsgrkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknnkkknnknnhhhhhhhhhhhhhhlewrvhhhhhelinnitwadppdawtinkkkknkkknkknknknghhhhhhhhhhhhhhoeeeeeejd`tiinknrshhhetkkkkkkkkknnxwcdd`uiknknnnnniiirrrssvqsikkkkknkrrgvhhhhhhminknknknknnknrbmqhhhhhhmiknknknknnnknkkknnknkkkkkkkkirrsvhhhhhhqgkknnrrrgssgssvmsnknkkknkkkknnnkkkknknknirbsmqhhhhhhhfsrkkkknkkknknnnkknknnnrbmfhhhhhhhfsrnnknrghhhtkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkknnfhhhhhhhhhhhhhoprvhhhhheennnxtwaddpdawxiinkkkkkknknknkknnrmhhhhhhhhhhhhhheeeeeeejcwxinnkirqhhoekkkkkkkkkkknxuaccwxrrrrrrssssvvfhhhhhhlankkkkirgqhhhhhhhhhqxnnknknkknrbmhhhhhhhhhhhgknkknnkkknknnkkkknkkkkkknrrsqhhhhhhhhhhfnkrshhhhhhhhhhdakknkkknkkkknnnknkkknrrgvhhhhhhhhhhhhhhmnknknnknknknnnkknrbmhhhhhhhhhhhhqvsbrgqhhoekkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknnknknghhhhhhhhhhhhhhrshhhhhelinnitwacppdawxinnnnkkkkkkkkkkknkkrfhhhhhhhhhhhhhheeeeeejpcuxinnirmhhhopkkkkkkkkkkknit`aaugvfhhhhhqhhhhhhhhhhhetnnknrrvhhhhhhhhhhhhhinnnknnnrsqhhhhhhhhhhhhhwknkknknknkknknknkknkkkirsqhhhhhhhhhhhhhdnrfhhhhhhhhhhlakkkknkkknkkkknnnnnirgfhhhhhhhhhhhhhhhhhfnnkkknknnknknknrsqhhhhhhhhhhhhhhhhhhhhhhodkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkrhhhhhhhhhhhhhhshhhhheeinnituadppdawtinkknwctkkkkkkxkkkknrhhhhhhhhhhhhhhoeeeeeejp`uinnnrghhhhlankni`dxkknknixw`wxshhhhhhhhhhhhhhhhhhljnnnnibqhhhhhhhhhhhhhqonntnnirshhhhhhhhhhhhhhhhwcxnknknknknkkkknkknkrbvhhhhhhhhhhhhhhqhurhhhhhhhhhhhexkknxcwkkkkkkkkkknrbmhhhhhhholeedqhhhhhhhqnnnnknknnnnnnrshhhhhhhholeeelhhhhhhhhhhlckkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknnknnvhhhhhhhhhhhhhhhhhhlexnnixwacdpda`uxnnkkkukknkkkkiwknkkrghhhhhhhhhhhhhhleeeeeejdwxinnrrqhhhhexkniiiiwnkkknnxtutxghhhhhhhhhhhhhhhhhheanknrrqhhhhhhhhhhhhhhho`i`iirvhhhhhhhhhhhhhhhhhlpnknnwdpaknnknkknknrbqhhhhhhhhhoeeehhhhvshhhhhhhhhhoennknnkukkkkkkkknnrsqhhhhhhhlepuxnshhhhhhhhonknnknnknknrgqhhhhhhhledunkiwfhhhhhhhhlwnknnknkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknknnmhhhhhhhhhhhhhhhhhlecxiitu`ddpdawtxnnkkkkunkknkkk`kkkkkrvhhhhhhhhhhhhhheeeeeeejpwtnxrbqhhhhoeuinxttt`nnnkknnxxixrcllhhhhhhhhhhhhhhhetiurbqhhhhhhhhhhhhhhhhhjtxwrshhhhhhhhhhhhhhhhhhoaxinnnkuknknknxtxnrshhhhhhhhhheecxxumhhvvhhhhhhhhhhljtxiiinwknknnkttirshhhhhhhhledtnirmhhhhhhhhhpxnnitiutnnrqhhhhhhhoewnniituxvhhhhhhheuniixxinknknkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkknkkkkkkkkknkkrhhhhhhhhhhhhhhhhlepwtttu`cpddawuxiinnkkktknkknnkwkkkk`rqhhhhhhhhhhhhhheeeeeeejduxrrsqhhhhhlpudtuw`wainnknknnninxwccashhhhhhhhhhhhoextrbqhhhhhhhhhhhhhhhhhhewurshhhhhhhhhhhhhhhhhhhodttxnnnunknknnuturshhhhhhhhhheedwxtuwfhqhhhhhhhhhhhedacxtttwinnkndubrvhhhhhhhhledw`crbqhhhhhhhhhld`xxaauuwrshhhhhhhhepuiitu`c``qhhhhhhexix`wuuinnininnkkknkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknnkknkkkkkkniqhhhhhhhhhhhhhhlejd`wuwacdpdawtxinnnnknktknnkknkunnnxibhhhhhhhhhhhhhhoeeeepdcwtrrgfhhhhhhhl`iiaw`awainnnkkkknknknwnnrhhhhhhhhhhhhljubbqhhhoelvhhhhhhhhhhhhecrghhhhoeeqhhhhhhhhhhhhojawutxnuknknkna`rghhhhhhhhhoee``ju```shhhhhhhhhhhhoew`awwwuainnnunirvhhhhhhhhoedwwwprmhhhhhhhhhhopjtxwnnntrqhhhhhhhhetwuww`adccshhhhhoeutu``wttnkikkkkkknkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkknkknknknkkkkknshhhhhhhhhhhhhoeeedc``adppda`txinnnkkkkntkknnknnunknuishhhhhhhhhhhhhhsrbrrrsssmvhhhhhhhhhhetitaacc``innknknkkknnnukkrhhhhhhhhhhhhedgrfhhhlectbhhhhhhhhhhhoegbqhhheecitmhhhhhhhhhhhoepcautiwnkunkwirshhhhhhhhhhleaaadacpdshhhhhhhhhhhhlecddccawaxnnntirvhhhhhhhhhedc`aa`rhhhhhhhhhhhoep`u`xnntghhhhhhhhhex``ccdppddwfhhhhoea``ccawunniknkkkknknkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkknkknkkghhhhhhhhhhhhhheeejpccddddawuxinnnnnnkkkukkknnknwnnnnrfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhoeitcccda``inknknknkkkkkunirhhhhhhhhhhhoecrvhhoeecxirhhhhhhhhhhhocrfhhheexnnbshhhhhhhhhhhlejjdauxwnkuknwrshhhhhhhhhhoejw`adpjlashhhhhhhhhhhhejjjejjd`axnnnrrvhhhhhhhhheexp`wa`shhhhhhhhhhhoepdaaxnnbshhhhhhhhhewdcpjjjjdcamhhhhoedddpdcwunkxkkkkkknkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknkknknnkkkknkrqhhhhhhhhhhhhhleejjppppdcwtxnknkknkkkkkukkknknnwiknkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhlpdjacdpjjpd`kknnnkkkkwcddgshhhhhhhhhhhlershhheedpxtbhhhhhhhhhhhorshhheeuinnrmhhhhhhhhhhhleeejdppddddnkrbqhhhhhhhhhhed`pjejjeewshhhhhhhhhhhheeeeejjejppdnnrvhhhhhhhhhoeutwpjlcshhhhhhhhhhhoejjpjdxtgvhhhhhhhhhljjejljjjpp`ghhhhlepjjejcawnxxknkknkkknkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknknkknnnkkknnmhhhhhhhhhhhhhoeeeejjjdc`txnnnnnnnnnkkkwunkkkknk`nnrghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhewuwcdpdauxnnnnkknknnkkkkkimhhhhhhhhhhhegbhhheedwtirshhhhhhhhhhhsghhoeeauxxwrfhhhhhhhhhhheeeejpcwxnnnnirqhhhhhhhhhhlewadjjjeljsvhhhhhhhhhhhleeeeeejdatikkrshhhhhhhhhhepu`adpjpshhhhhhhhhhheeejpc`tirvhhhhhhhhhhjjjeejdawttrfhhhljjjejpdwxnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkknkkknkkkkghhhhhhhhhhhhhheeeejjpcwuxinknkknknkkkkxuinkknknnnkrmhhhhhhhhhhhhhhlelllloohhhhhhhhhhhhoewwcpjjdatxnkkkkknkkknknkkrvhhhhhhhhhhodrfhheejcwtxrmhhhhhhhhhhhrqhhlejawxtubhhhhhhhhhhhheeeeejd`tnkknrvhhhhhhhhhhoeccdjeeejjpbvhhhhhhhhhhhleeeeeejc`tinrbhhhhhhhhhhoeu`cpjjljahhhhhhhhhhoeeeeepawxivhhhhhhhhhhoeeejpawtxiimhhhejjeeepcwxnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknknkknkkkrqhhhhhhhhhhhhhleeejjc`uxnnnknnnnkkkknnnknnkkkknknnrfhhhhhhhhhhhhhheeeeeeeelllhhhhhhhhhol`cpjjjd`tiknnnkkknknknkknrhhhhhhhhhhhorshhlelpauxxrfhhhhhhhhhhmmhhleepcwtxrmhhhhhhhhhhhoeeeeejd`txnnrshhhhhhhhhhhejcpjjeeejpcrqhhhhhhhhhhheeeeeejjcwxnirqhhhhhhhhhhep`cpjeejpdvhhhhhhhhheeeeejjcwtrvhhhhhhhhhhqeeejd`tinnnshhheadjejpcuxnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkknkknkkkkkrvhhhhhhhhhhhhhoeeejpauxinnnnkkkknkkkknnnnknkknnnknrhhhhhhhhhhhhhhoeeeeeeepc`uaqhhhhhhhljdpjljjcwxnnkknknkkkkkknnnshhhhhhhhhhhbghhoeejd`uxtbhhhhhhhhhhhshhoeeepcwutrfhhhhhhhhhhhleeeeejpatxnnbqhhhhhhhhhhoedpjeeeejpcurhhhhhhhhhhhoeeeeeeedauinrmhhhhhhhhhhoecdpjejejd`ufhhhhhhhleeeeeejd`tifhhhhhhhhhhhheejcwtinkkkhhoe`cjjepauinkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknnknknibqhhhhhhhhhhhhhheeejc`tinkkkkkkkkkkknnknknnnnkkknnishhhhhhhhhhhhhhleeeeeeejdawwuvhhhhhhejpeeelpcwxnnknkkknknknknkrmhhhhhhhhhhqrhhheeepcwutrshhhhhhhhhhfqhheeejpawugbhhhhhhhhhhhheeeeeejd`uinrmhhhhhhhhhhhlepjeeeejjd`bshhhhhhhhhhhleeeeeejdwtirbhhhhhhhhhhhlecjjeeejpawxicooooleeeeeeeejd`tishhhhhhhhhhhhpejdwxnnnnkneejwapjjd`tinkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkknknnknkkkkknkkirvhhhhhhhhhhhhhhhleejdwxnnkknkknnkknnnnkknnknknkkkkrvhhhhhhhhhhhhhheeeeeeeejpdaaashhhhhoeeeeeejpauinknknkkknkkkkknrfhhhhhhhhhhmmhhleejdauturvhhhhhhhhhhqhhoeeeepd``tshhhhhhhhhhhheeeeeejp`tirghhhhhhhhhhhoejjeeeeejdauxmhhhhhhhhhhheeeeeeepcwxnrfhhhhhhhhhhhepjleeejpcwxnkkncppleeeeeeeejdwtibhhhhhhhhhhhhhjjd`xnkkkkknnit`dpjd`tnnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknkkkkkkrrvhhhhhhhhhhhhhhhhleejd`tnnkkknnknnkkknnkknnnnnnkkkkrqhhhhhhhhhhhhhoeeeeeeejjpdddc`vhhhhleeeeeejd`tnnnkkkknkknknkknrhhhhhhhhhhhshhoeeejdawwwrhhhhhhhhhhhhhoeeeejpda`rfhhhhhhhhhhhleeeeeejdwtirfhhhhhhhhhhhlejeeeeejpawxrvhhhhhhhhhhoeeeeeeepauxrghhhhhhhhhhhlejjeeeejd`uxinnnntwcpeeeeeeejdwxnrhhhhhhhhhhhhhhjp`unnknkknknxucppcwtnnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkknknkkkkirvhhhhhhhhhhhhhhhhhheejp`uinknkknnknnnkknkkknknknnnknbhhhhhhhhhhhhhhoeeeeeeejpdcccc`mhhhhleeeeeepcwtiknknknnkkknkknnshhhhhhhhhhffhheeeepdaw`gghhhhhhhhhhhhhleeeejjdcwbhhhhhhhhhhhhleeeeeepcwxrghhhhhhhhhhhoeleeeeeepc`xxrhhhhhhhhhhhleeeeeejd`tirfhhhhhhhhhhhlejeeeeepcwtinnkinxwcpjeeeeejpawxnnmhhhhhhhhhhhhhhjcwxnkknkknniu`ddcuxnkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkknknkknkkknrvhhhhhhhhhhhhhhhhhhheeepcuinnnkkntknnnknnkkknnknnkknimhhhhhhhhhhhhhhleeeeeeeejcwwwaushhhoeeeeeejepwxnnnknknknnknkkkrvhhhhhhhhhhqhhleeeepca``bmhhhhhhhhhhhhoeeeeejppdbmhhhhhhhhhhhoeeeeeeejawxrfhhhhhhhhhhhleeeeeeejpauxrghhhhhhhhhhheeeeeeejdwtrghhhhhhhhhhhhejeeeeejdauinnknnixuadjeeeejjd`uinkrhhhhhhhhhhhhhhqd`uinkkkkkkitwac`uinnkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknnknnrshhhhhdfhhhhhhhhhhhhhoeejc`xnnknkainnnnnkkikkkknkknkurvhhhhhhhhhhhhhheeeeeeejdawuttwbshhhoeejeeejdcuxnkknknknkkkknknrqhhhhhhhhhhhhheeeejpcaawrqhhhhhhhhhhhhleeeeeljjarqhhhhhhhhhhhoeeeeeejpaurghhhhhhhhhhhheeeeeeeepcwxirmhhhhhhhhhhheeeeeeepcuxrmhhhhhhhhhhhleeeeeeepdwxinnnkknitwcdjjjjpd`uxinnnmhhhhhhhhhhhhhhqcwxnnnnknnnxu``wtikkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkkkkknrshhhhhljmhhhhhhhhhhhhhoeejdatinknkanknnnuunkkxxknuini`rhhhhhhhhhhhhhhoeeeeeejed`tiiwwishhhljjjeeejdcxinnnkkkkkiuxukuighhhhhhhhhhhhhoeeeeejcaagghhhhhhhhhhhhoeeeeeejjjwghhhhhhhhhhhheeeeeeejd`trfhhhhhhhhhhhoeeeeeeejpauxnrqhhhhhhhhhhleeeeeejd`uirhhhhhhhhhhhhleeeeeejpawxnkknkknnxuwccdddcautinkkkrqhhhhhhhhhhhhhhpauxnknkkknixuutxnnkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknknknknrshhhhhletrhhhhhhhhhhhhhheeepcuxnkkxxknnkwutwkntwnnutnnsghhhhhhhhhhhhhhoeeeeeeejd`xinuanshhhedppjejpccxnnnnnnnknna`waubmhhhhhhhhhhhhheeeeejepcabmhhhhhhhhhhhhleeeeeejjdbmhhhhhhhhhhhheeeeeeejcwrbhhhhhhhhhhhheeeeeeeejcwtinghhhhhhhhhhhleeeeeejdwtrshhhhhhhhhhhheeeeeeejcatinnkknknnnitu``a`wuxinkkkknghhhhhhhhhhhhhhqp`tinknkkknnxxinnkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkknknknkkkkkknkkkkkknkkrshhhhhleukrqhhhhhhhhhhhhhleejc`tnnkukkknn`da`kknunknuknrmhhhhhhhhhhhhhhleeeeeejpwxinnntishhheuccjjjpacinknwdddd`ktukukrvhhhhhhhhhhhhleeeeeejec`rqhhhhhhhhhhhoeeeeeeelparqhhhhhhhhhhhleeeeeejpawrmhhhhhhhhhhhheeeeeeejpauiirmhhhhhhhhhhheeeeeeejcwxrvhhhhhhhhhhhoeeeeeejpautinknknkknnnnxtttutxinnkkkkkkfhhhhhhhhhhhhhhhd`tnnnknknnnnnnkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknknrbqhhhhleuknnmhhhhhhhhhhhhhheejpauinkuknkkutnnwnknunkkunkrfhhhhhhhhhhhhhheeeeeejjpwxnnnkunmhhlexcapjjd``inkknnnknknutkunrhhhhhhhhhhhhhleeeeejjjcughhhhhhhhhhhhleeeeeeejpgghhhhhhhhhhhhleeeeeejd`trqhhhhhhhhhhhleeeeeeejc`tinrqhhhhhhhhhhoeeeeeejpauirhhhhhhhhhhhhoeeeeeejp`tninnkknknkknnnnxiiinnnnknnknknqhhhhhhhhhhhhhhjawtnknkkkknknkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkknknknkkkkkkknkkkkibqhhhhoe`knnxghhhhhhhhhhhhhheeepcwxiniuknk`kkiaknn`nnuuknrhhhhhhhhhhhhhhoeeeeeejdduinnknukgqhlan``dppcw`irikknnnnnnuuktnshhhhhhhhhhhhoeeeeeejjdabshhhhhhhhhhhheeeeeeeejdbmhhhhhhhhhhhoeeeeeeejc`bghhhhhhhhhhhheeeeeeejpcuxnighhhhhhhhhhhleeeeeejd`uighhhhhhhhhhhhleeeeeejc`tnkknknkknkknkkknnnnnnnnnknknkkrqhhhhhhhhhhhhhhjautnknkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknrbqhhhhoedniniusfhhhhhhhhhhhhhleepc`tinnakkkidcuwwnnicdxdtishhhhhhhhhhhhhhleeeeeeejjpankucddcadejppjjddjpdbsqmnkkknnxd`kdrmhhhhhhhhhhhhleeeeeeeec`rfhhhhhhhhhhhlleeeeeejd`rqhhhhhhhhhhhoeeeeeeepaurshhhhhhhhhhhheeeeeeejd`tinrmhhhhhhhhhhheeeeeeejc`trshhhhhhhhhhhheeeeeeepcuinnkknkknknnnkkknnknknknnknkkkknshhhhhhhhhhhhhhod`uxnnkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknknkknkknkibqhhhhoednnixu`amhhhhhhhhhhhhhoeejd`uinnxxnkknknkkkknknknkrvhhhhhhhhhhhhhheeeeeeejcwxnnkkkkkknkknntwcdc`tibqhhcnkkkkknnnkrqhhhhhhhhhhhheeeeeeejpctbhhhhhhhhhhhheeeeeeeepdgghhhhhhhhhhhheeeeeeejdaurfhhhhhhhhhhhoeeeeeeepawxnnbhhhhhhhhhhhoeeeeeejpauirvhhhhhhhhhhhheeeeeejdatinnikknkkkkknknkkkkkknknnkknknknnmhhhhhhhhhhhhhhlc`tinknkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkirvhhhhhedkniiuwcdshhhhhhhhhhhhhheeepauxinnknkkkkknnkknknknnrqhhhhhhhhhhhhhheeeeeejpauxnnnknknkkknnnxwcdawxrvhhoeikkknknknnbhhhhhhhhhhhhleeeeeeejdabshhhhhhhhhhhoeeeeeeejparmhhhhhhhhhhhheeeeeeejcwxrhhhhhhhhhhhhleeeeeejp`uinrshhhhhhhhhhhleeeeeejd`uirvhhhhhhhhhhhheeeeeejdwtiknnnkkkknnknknkkkkkkkkknnnnkkkknnvhhhhhhhhhhhhhljcwtinkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkirvhhhhoejknnxuwcdp`fhhhhhhhhhhhhhleepcwtinnnnnknnkkkkkkknkknghhhhhhhhhhhhhhoeeeeeejd`tinknkkkkkkkknitwacaurshhhlpnknnnknknimhhhhhhhhhhhheeeeeeeepcwrfhhhhhhhhhhhleeeeeejjdwrfhhhhhhhhhhhleeeeeejpaurghhhhhhhhhhhheeeeeeejcwxinrqhhhhhhhhhhheeeeeeejdwtnrhhhhhhhhhhhhoeeeeeejcwxnknkknkkkknnnkkkkkkkknkknknnnnkknnifhhhhhhhhhhhhhedauinnkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknkkknknkkkrrvhhhhheliknit`adpdcshhhhhhhhhhhhhoeejdwtinnknknknknknknknnnishhhhhhhhhhhhhhleeeeeejdwtnnkkknnkkknknnxw`a`rbqhhhlwnnknnknnnrvhhhhhhhhhhhheeeeeeejdatbhhhhhhhhhhhoeeeeeeljpatbhhhhhhhhhhhheeeeeeeedatishhhhhhhhhhhoeeeeeejpawiirmhhhhhhhhhhhheeeeeeepcwxnrhhhhhhhhhhhhoeeeeejpawxnknnnknkkkkkkkkkknkkkrsrkknknnknknnbqhhhhhhhhhhhhejd`tinkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknnrvhhhhheennnixuadpdcabhhhhhhhhhhhhhheejdatinnnnknkknknknnnkknrfhhhhhhhhhhhhhheeeeeeepawinnkknknkknnnnnxtw`brfhhhoexknnninnnnrhhhhhhhhhhhhleeeeeeejcwrshhhhhhhhhhhoeeeeeelpcwbshhhhhhhhhhhheeeeedejdwtrmhhhhhhhhhhhoeeeeeejd`uiirqhhhhhhhhhhhoeeeeeejp`txnrhhhhhhhhhhhhoeeeeejd`tnikknkknnrnkkkknknkkknbhhmnkknnknkknishhhhhhhhhhhhljjcwxnnkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknrmhhhhhllnnnituacpdc`urhhhhhhhhhhhhhhleepcwxnkknnnnkknknkknnnnrhhhhhhhhhhhhhhoeeeeeejpatinkknnkkknkkknnnxtxrvhhhholnknnixxinishhhhhhhhhhhheeeeeeejpaurvhhhhhhhhhhheeeeeeljpaurvhhhhhhhhhhhleeeejrsaawxrvhhhhhhhhhhhleeeeeejc`tnrshhhhhhhhhhhhleeeeedddwtnnrhhhhhhhhhhhhoeeeeejdwxxnnkknnnrghgkkkkknnkkkshhhcnkknnnnknnimhhhhhhhhhhhoejpawinkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknnrshhhhhleunnixwacppc`uxrmhhhhhhhhhhhhhleejd`tinkknknknnnnknknnishhhhhhhhhhhhhhoeeeeeejd`xinkkkknkknnknnnnnrrvhhhhheannnxxtxinrmhhhhhhhhhhhoeeeeeeejc`xrhhhhhhhhhhhheeeeeeljc`trqhhhhhhhhhhheeeeebghhctirvhhhhhhhhhhhleeeeeepauxibqhhhhhhhhhhhheeeeelrsswinkrhhhhhhhhhhhhoeeeeejcwxnnkkknkrbqhhfkkknkkkknshhhenkkkknkkknirqhhhhhhhhhhoeejd`tnnkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkrshhhhhleunnituacpdd`wxnnshhhhhhhhhhhhhheejpauxnnnkkknknnnnkknkimhhhhhhhhhhhhhhleeeeeejcwxnnkknnnkknnknknnirvhhhhhhexnnxuwwuxirfhhhhhhhhhhhleeeeeejjawrshhhhhhhhhhhleeeeeelpawrbhhhhhhhhhhhheeeearqhhl`iivhhhhhhhhhhhleeeeejp`wrrmhhfhhhhhhhhhheeeeegbhhfikkiqhhhhhhhhhhhheeeeejcuxnknkkkirfhhhldkknkkkkimhhhlnnnnkknnnknishhhhhhhhhhoeejpauxnkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknrshhhhhletnnixwaddpc`wxiknrhhhhhhhhhhhhhheeejcwxnnknknknnnnnnknnrfhhhhhhhhhhhhhheeeeeejpaunnnnnnknkkkknkkkrrvhhhhhhoennxtwaawxibhhhhhhhhhhhheeeeeeejdaurvhhhhhhhhhhheeeeeeejpaurshhhhhhhhhhhoeeejrmhhoeunivhhhhhhhhhhhleeeeejd`trshhmhhhhhhhhhhoeeee`rqhhlcnnnvhhhhhhhhhhhheeeeepawxknnkkirvhhhoe`kkknkkkrvhhhounknnnkknnnnrqhhhhhhhhhoeeejdwxnkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknrshhhhhoeannixw`cppdauxinkkifhhhhhhhhhhhhhoeejd`txnnnnkknknknknknbhhhhhhhhhhhhhhoeeeeeeedaunnnkknkkkwcxnnirbqhhhhhhhldnitwacawtrghhhhhhhhhhhheeeeeeejcwxrhhhhhhhhhhhheeeeeeejcwtrmhhhhhhhhhhhleeegghhhedinivhhhhhhhhhhhleeeeejcwrbqhhshhhhhhhhhhleeecrvhhoe`kknmhhhhhhhhhhhhoeeejpauinkkknrshhhhepnnkknnnkrfhhhhdniiiinnnknnnshhhhhhhhhleeejpatikkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkknkkkkkkkkkkkkkkkkkkinrshhhhhhejknixu`cpdcawtinknknfhhhhhhhhhhhhhheejpauxnnkknnknknnnknimhhhhhhhhhhhhhhleeeeeejd`tinknnknknkntnrrshhhhhhhhheuitucpdauxrfhhhhhhhhhhhleeeeeejpaurghhhhhhhhhhhoeeeeeelpcwxrvhhhhhhhhhhheeebbqhhleunnnmhhhhhhhhhhhheeeeeparbqhhvmhhhhhhhhhhleepbshhhepnnkkghhhhhhhhhhhhheeeepauxnkkirshhhhlenknnnknnnrhhhhhjixttxinknknnghhhhhhhhheeeeepawxnkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkknkkkkknnnkknrrghhhhhhoeitxxu`ddpdawwuxkkktrshhhhhhhhhhhhhhoeepcwxinkkntxuntinknrfhhhhhhhhhhhhhhleeeeeepcwxnnittnknnnnrrgfhhhhhhhhhoewwuapjjdairhhhhhhhhhhhhleeeeeejd`trmhhhhhhhhhhhleeeeeejdauxrfhhhhhhhhhhheebbqhhoeaxnnkshhhhhhhhhhhhqeeej`rbqhhorvhhhhhhhhhhleprshhhletnknkiqhhhhhhhhhhhhqeejp`tinnirvhhhhleukkniniiinrhhhhhhutuuuxinnnknrhhhhhhhhheeeeejcwxnkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkknnnxkkktnixikirvhhhhhhhopawtu`cppdcwuwuwxnktxshhhhhhhhhhhhhhhjejd`tinnkn`uw`t`nkrghhhhhhhhhhhhhhhleeeeejpcuxikutuwnknirgfhhhhhhhhhhhlj`p`djjpcwrghhhhhhhhhhhheeeeeeejcwxrqhhhhhhhhhhheeeeeeejdwtirhhhhhhhhhhhhvrbqhhoejtnnnirhhhhhhhhhhhhhvmwrrmqhhoerhhhhhhhhhhhfsrshhhleannnnnimhhhhhhhhhhhhhfcppatiirbfhhhhoewnnnixtutxighhhhhhjw`awtnnnnnnrhhhhhhhhleeeeejd`tikkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkknnkkkkininitrbvhhhhhhhhhdxwuwcppdcwtx`cutnnnrshhhhhhhhhhhhhhhqplddpcccwkxtkuntnirfhhhhhhhhhhhhhhhleeeeeejjdtnkwawtirrsfhhhhhhhhhhhhhed`adpjjcwxrmhhhhhhhhhhhoeeeeeejpauighhhhhhhhhhhoeeeeeejpcuxirhhhhhhhhhhhhhvhhhhleaxiknxtvhhhhhhhhhhhhhhvvhhhhheprhhhhhhhhhhhhvfhhhoepxiknnxxxqhhhhhhhhhhhhhqsgrrbsfhhhhhoednnkixww`uxrshhhhhhqaacauinnknighhhhhhhoeeeeeejd`xinkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkknnkkxnnirrgqhhhhhhhhhhmt``cdppc`uxwikntknirfhhhhhhhhhhhhhhhhqscawxnkkkxtktnxrrvhhhhhhhhhhhhhhhhqcpeeejc`xiitrrrbsvhhhhhhhhhhhhhhhoewcjjjjjawxrfhhhhhhhhhhhleeeeeejc`trmhhhhhhhhhhhleeeeeejdatinrhhhhhhhhhhhhhhhhhledwxinxtwshhhhhhhhhhhhhhhhhhhhelirhhhhhhhhhhhhhhhhoejuxinixtuushhhhhhhhhhhhhhhhhhhhhhhhhoecnknitu`aawtrshhhhhhhqddcwxnknnrfhhhhhhhleeeeeejd`tnnkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkknkkxrrgvhhhhhhhhhhhhhfgbuppc`uxiunirrrbsfhhhhhhhhhhhhhhhhhhhfsbrinknxxirrbsqhhhhhhhhhhhhhhhhhhqmsrrrrrrgsgmvqhhhhhhhhhhhhhhhhhhoe`djejejatxbhhhhhhhhhhhheeeeeeejcwtrfhhhhhhhhhhheeeeeeejcwxnnifhhhhhhhhhhhhhhhlejauxiiuw`wqhhhhhhhhhhhhhhhhhhlexkifhhhhhhhhhhhhhhheeauxxixww`wumhhhhhhhhhhhhhhhhhhhhhhhoedkkiixu`cca`trvhhhhhhhhmcd`tnnnrshhhhhhhleeeeeeejd`xnkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkknkkkkniinkkkngqhhhhhhhhhhhhhhhhhhqhpauxnktarvqhhhhhhhhhhhhhhhhhhhhhhhhhhhfskiaurvhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhejejeejjdddgshhhhhhhhhhhoeeeeeejpaurbhhhhhhhhhhhoeeeeeeepcuinknmhhhhhhhhhhhhhhleed`uxitu`awgqhhhhhhhhhhhhhhhhlewnnkmhhhhhhhhhhhhhheep`txxxuwa`wtimhhhhhhhhhhhhhhhhhhhhhlednnkxxu`cccauxrvhhhhhhhhhfgubrrbmhhhhhhhlejjeeeeejdwtnkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkknghhhhhhhhhhhhhhhhhhhhhj`tinkkkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhowkkkrhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhejjeeejjcuxrvhhhhhhhhhhhleeeeeejd`tishhhhhhhhhhhleeeeeejd`uxnnknhhhhhhhhhhhhhleejd`uttw`aawxshhhhhhhhhhhhhhheeaxnniiqhhhhhhhhhhhoeeedautttwaawuxinahhhhhhhhhhhhhhhhhhoeeunnnixuwaccawtirqhhhhhhhhhhhhvvfhhhhhhhhlepdjeeeeepcuxnnkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkrhhhhhhhhhhhhhhhhhhhhhewxnkkkkkhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhodnkkkhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhoejjeeejpauxnhhhhhhhhhhhheeeeeeejcwxivhhhhhhhhhhheeeeeeejd`tnnknkrhhhhhhhhhhleeeejdawuw`aawuxiwhhhhhhhhhhhhoeecwttxtuwhhhhhhhhhhleeejpawuw`aa`wtnnnn`ohhhhhhhhhhhhhholejxnnnxtu`cddawuxnrhhhhlllohhhhhhhhhhhhhhlee`wcjeeeejdauinkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkteeeeeeeeeeeeeeeeeeeeewxnnkkknkeeeeeeeeeeeeeeeeeeeeeeeeeeeeeepnnnkkeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeejd`tinneeeeeeeeeeeeeeeeeepauxnkdeeeeeeeeeeeeeeeeepcuxnnknknnoohhhooleeeeeeepcaaaaa`uxnnnxoohhhhhholeeejda`www`adohhhhhhoeeeeeepdaa`acawtxnnnnitplohhhhhhhhoolee`tttttu``ccdc`txinihhhel``dllohhhhhhhholeeaixwdjeeeejcwxikkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknnnixuwadpeeeeejdwtinnnkkkkkknknnniixwapeeeeeeeeeeeeepc`txinnnnknknnkniiuwcpleeeeeeeeeeelpawxinnnnnnnnixxxxuuw`adpjjeeeeeeepcwtnknknnnniuadleeeeeeejp`tinkkknknixwdjeeeeeeejd`uinnkkknkn`peeeeeeeeeeeejpddccawtiiknniclllleeeeeeeejpccccccccpllleeeeeeeeejpdccca`uiiknknnxwajeelllleeeeepc`wwww`acddda`utnnnnglejxnxwdjeeelllleeed`knit`djeejjdauxnnkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknknnixuwadjjeeeeejdawtxinnnkknkknnnixtu`cpleeeeeeeeeeeejpc`uuxiinnnknnnixuwapjeeeeeeeeeeeeejc`utxiniixxxxtuuw`acdppjeeeeeeeejpatxikknkkkniuapjeeeeeeejdwtnnkkkkknit`djeeeeeeejd`tnnknnknknniuapeeeeeeeeejjjdcawtinnknnixwcleeeeeeeeeejjpppdcawuucpjeeeeeeeeejjpdc`uxinkkkknitwcpjeeeeeeeeejppdcccddppdc`uxinkkkiuuxnit`djeeljjdc`iinnnnxwcpjeejpawxnnkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknitw`cpjjeeeeeejjda`wtxnnkkknknixtuw`cpjeeeeeeeeeeeeeejpca`wutinnknnitw`cdjjeeeeeeeeeeeeejpcawwuuuuuwww``acddpjjjeeeeeeeeejd`tinnknkknnxucpeeeeeeejpcwinnkkknkiiuadjeeeeeejjawxnnkkknknknitadjeeeeeeeeejpdcwtinnknkkniu`djeeeeeeeeeeljjpdawttxuadjeeeeeeeejjpc`utinnknkkknitwcpjeeeeeeeeeejjjjjpjpdc`tixnknnnknkkkxtadjjeejpd`wuxxxxxw`djjjjpcwtinkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkknkixuacdjjjejeejejjddaawtinnkkknnxtw`acdpjejeeeeeeeejejjjjpdaa`utinnnitwacdpjjeeeeeeeeeejejjjddcaa`a`aaacccddppjjejejeeeeejjpcwxnknkknnknxwcpjeeeejejd`tinkkkkknnxuapjjeeeejjdauinknkknkkknixwcpeeeeeeeejjpa`txnknknknnnxwadjleeeeeeeejjpdawtiiitwcpeeeeeeeejpcauxinknknknknnxtwcdjjeeeeeeeeejjjjjpcawuxikikknknknnnitapjjjjjppcawuuuuwacpjjjda`txnnknkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknntw`cdpppjjpjpjppddca`uxnnkkknixu`acddpppjppjpppjpjjjpppddcaawtxnnnxu`acdpppppppppjppjjpjppddccaccacccccddddppppppjppppjpdc`txnkkknkknnxwacpppppppdcwxinkkkknknxuacpppppppdawxinknnkknkknnxuacpjejejjjpcautinknkkknknnxxwadpjeeeejejjpd`wxinnniu`cpjeeeejjpc`utnnknkkkkkknnnxtwacppejeejejeejjpdcawuinnkkknknknkknxu`dppppddddcca```ccdpppcawxxnkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkknnxu`aaaccacccacacaaa`wtinkknkknitw`aaaacaacccccacccaccacaca``wtinnnitw`aaaaacacacaccccccacaaaa````a`aaaaaaaacccacaccdcacaawuxnnkknkknknxuwaaccccaa`wuinknkkkknnitwaaccccacawtinknknknnkknnnxu`cdpppddcawuxinnkkkkkkknnnitw`ddppjjppdda`uxikkknnxu`ddppppdcawuxnnknknnkknkknnnitu`acdppjjjjpppdc`wuxinnknkknkkkkknnit`cccaaaaaccccccacdcccawuxinkkkkkknkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknixtuuuuuwuuuwuuuuuuttxixkkkknnixttuuuuuwuuuuwuwuuuwuwuwuuuuttxnnnnxattuuuwuuuuudauuutuuwu`uuuuuuwuuuac`cuwuawuuuwuwawwuutxxnnnkkkkknnnnxcwuuuuuuuttinnkkkkkkknnactuuuuu`ctxxii`iwikknkkknnixuw`aaa``wutxinkkkkkkkutkkknixuwaaccccaawutxnw`ikkkixu`acdccawuxinnnkkkkknknki`kknnxxuwaadccccca``wuxinnnkkkkkkknnknkkitu``wuuuuww```aaaaaa`wutxiknkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkknnixxxxxxxxiiiiiiixinnwnkkkkknnnniiiiiixixixxixixiixxxxxxxxiinnknnntiiixxxixxxxpxxixxiii`txxxxiuwixiucupixiiwixixixwiixxiinkkkkkkkkkknnniuxxiiiiuiinnkkkkkknkknntiixiiuxiatnnkdndxkknknkknnnxxtuuuuxxxinnnkknkkkkkxknkkknuxuuwwwwuuxxinnknxkkknnixuuwwuutxnnkkkkkknknkkkkxnknknnittuwawwwuuutxinnnkkkkkkkkkkkkkknnixuttxiixxttuuwwwuuuttxinnkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkknnknnnnnkninnnknnnnnkwkknknxinkntnxxinnxxnxtknnnnttnnnxxxtiknkkixnxnnnnnnnnnnuunnnnknnnwnnnnnnunnnnt`icnnnnunnknknitnnnknkknkkkiinxxknnnxxtnnniwxxxnkxixninnkkkxnnknkxnnnnknkck`nknkkknkknknnniiiiinnnkknkkknkkkkinxnkniwtuwtxututitnnkkkxnkkkknnixiutuxixknkkixnkkknxxnxkknnxxnniix`xxxxiinnnnkkkkkkkkkkkknkkkkkniininnnnnniixxxxxxiinnknkknkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkknkknknkknkknknkkkkkkkkiikkkkxxxtkkxwuxttknu`xx`kkxuxxwnkiwtxtiknxtxuwkkkkknkkknunkkkknkkiiknnnnntknkknukukkkkktkkkkkntkkkkkkkkkkkiuwxxwkkk`xxukknuxxnkkxwxwxtiknkxkkkkkiwinkkkk`kukknkkkkkkkknknnnnnknknkkkkkkkknkkutxtnknutttnntwtwxxtkkkkikkkkkknnnnx`xwxxxkkutxuxnkitxuwkkxuxiwnnnnxxnnnnnnnkkkkkkkkkkkkkkknkknknnnnknkkknknnnnnnnnnnnknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkxkkkkktwutkkktkkktkktkkknxnuixxtukkikkkxkkxkkktnnknkkknkkkkknkknkkxkkkkkkkxkkkkkkkknknkktnkkkkkntkkkkkkkkkkktkkknxnkxkkxkkkxkkkkkkukxkkxkkkxkkkkkkkktikkkknkkkkknknkkkkknkkkkknkknknknknkkkkkikkkxkkxkknnnk`ktkkxkknkxkknkwuwwwikwkxkkiknnkkkxkktkkktkkuiixtukkkkxkkkkkkkkkkkkkkkknkknkkkknkkkknknkkkkknknkkknknknkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkxkkkkxnkkxkkktkkkxnktkkknikwiixiinkxkkkxkkxkkkikkkkknkkkkkkkkkkkknikkknknkxknkkknkknkknknukkkkkkwkkkkkkkknkktkkknikkxkkxkkkxknkkkkwkikkxkkkxkkkkkikknxkkkkkkkknkkknknkkkkkkkkkkkkkkkkkkkkkkkkxkknxkkxknkkknwkxkkxnkknxkkkkkkkkknkwkikkikxkkkkxkkxkkkxknuxiixnkkkkxkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknknkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkknikkkxkknukkkwnknxkkutknukkttkkknkkxnnkxkktnkiwkknkkkkkkkkkkkkkkkknxkkknkntkkkkkknkkkknkktkkkkkknnkkkkiukkkkttkntkkkxkkikkktkkknkkukxkkxkkkxkkkkkttxxkkkknknkkknkkkkknknkkkkkkknwiknkknkkkkkkxkkkxkkinknnkkwkikkinkkkxnknkkkkkkkkukikkikktnknxkktnkiwkktxkkknknktkkkkkkknknkkkkkkkkkkkkkknknkkkkkkkknkknkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkktkkknuuixtkkituxkkkinutnkkkiuwiknxuikxukkktuxnwkkknknknkkkknkkkkkkukknkkktnkkkkkknkkkkkkntkkkkkkukkkkiukkkkinutnkkuuknuukkkuwuikuukxnkukxuuwuikkkkiknkkknkkkkkknkknkkkkkkkkkkknunkknkkkkkknxunkuuikkxwuxktuinxkxinwuuutkkkkkkkktuinxkxnkkuuxkkkkuuxnukknuuiknkkukkkkkkkkkkkkkkkkkkkknkkknkkkkknknkkkkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkknkkkkknnkkkkkkkkkkikkkkkkikkkkknkkkknkkkkkknkkkkkkkknkkkkkkkkkkkkknkkkkkniknknkkxkkkkkkkknknkkknnkkkkkikkkkkkkkkkxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknknkkknkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknkkknkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkxnkkkkkkkkkkknkkkkkkkkkkkkkknknkknkkkkknkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkuwtkkkkxwuknkkknkkkkknkkkkkkkkkkkkkkknkkknkknkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkxwunkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkknknkknkkkkkkkknkkkkkkkknkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknknkkkkkkkkkknknkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkknkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkknkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkkkkkkkkkknkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknkknkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkknkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkknkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkknnkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkknknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkknknknktixikkkxkkkkkkinkkkkkkkkkkkkkkkkkkknxkkkkkkkkkkkkkkkkkkkkknxnkkkkkkikkkkkixnxkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkktikkkkkkkkkkkkkkkkkkkkktxkkkkknkkkkkkkkkkkkkkkkkkkkkkkkinkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkknkkkkkkkkkkkkkkkkkkxnkkkxixtkkkknkkkkkkikkkkkkkkkkkkkkkkkkkknkkkkkkknkkkkkkkkkkkkkkknkkkkkikkukkkntnukkkkkkkkkkkkkkkkkkkkkkknkkkknkkkknkkkkkknkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkknkkkkkkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkikkkkxnixkkkkikkkkkkiknkkkkkkkkkkkknnnkkknknkkkkninnkkknnnknkkkkknkkkkknkkkkkknxktkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkinikkkninnnkkininnnkkkknkkkkkkkkkkkiniknnkkkknikkkkknnknkkkknkkkkkkikkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkkknnkkknnnnnkkkkknkkkkkkikkkkkkkkkkknxnninkkninnnkkninnkkkinninikkkknkkkkkninkkkkkikikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkxnnikkninnnkknxnxninkkknkkkkkkkkkkknxnxnnnkkxnnxnkkinnxnkkinniikkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkkikkkkkkikkkkkkkkkkknnnnnxkknkkknkkknkkkkknnknknkkkknkkkkkkkkikkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkknkkkkkkxknkknkkknkkkkkxxxxxkkxknkknknkkkknknkkkknkkinnnikkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkkikkkkkkkkkkinnnnnkkkkkknkkknkkkkknnknknkkkknkkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkknkkknkkkkkkiknkknkkknkkkkkkkkkkkkiknkknknkkkknknkkkknkkinnnnkkkknkkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkknkkkkkiikkkkikkkkkknkkknkkknkkkkknkkkkkkkkknkkkknninkkkkkkkkkkkkkkkkkkkkkkkkkkkkikkkkkkkkkkkknkknkkknkkkkkkiknkknkkknkkkkkkkkkkkkiknkknknnkknkkknkknnkkxkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkkkkkkkkkknkkkkkkknkkkknnkkkkkiinkkknnknnnkkkinnkkinkikknkninnikkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkknikkkkkkkkkkkiikkiikkkninkkiiknnkiknninikkkkkkkkkinknkkikkkiinkkkkinnnnkkniikkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkknkkkkkknkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", +"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" }; diff -r f109f7dabbe2 -r 9f59509498e1 info/dir --- a/info/dir Mon Aug 13 09:21:56 2007 +0200 +++ b/info/dir Mon Aug 13 09:23:06 2007 +0200 @@ -53,10 +53,12 @@ * CL:: A Common Lisp compatibility package for Emacs-Lisp. * Custom:: Customization Library for Emacs * Ediff:: A Visual Interface to Unix Diff and Patch Utilities. +* EFS:: Transparent remote file access via FTP * External-Widget:: Use XEmacs as a text widget inside of another program. * Forms:: A package for editing databases by filling in forms. * Gnus:: A netnews and mail reader for XEmacs. +* HM--HTML-Mode:: HTML Editing Mode. * Hyperbole:: A programmable information management and hypertext system. * ILISP:: Multi-dialect inferior LISP interface. * Ispell:: Interactive spelling corrector. diff -r f109f7dabbe2 -r 9f59509498e1 lib-src/ChangeLog --- a/lib-src/ChangeLog Mon Aug 13 09:21:56 2007 +0200 +++ b/lib-src/ChangeLog Mon Aug 13 09:23:06 2007 +0200 @@ -1,3 +1,7 @@ +Sun Mar 23 15:57:19 1997 Steven L Baur + + * update-elc.sh (make_special_commands): Use target of x20 for efs. + Wed Mar 19 10:38:04 1997 Steven L Baur * Makefile.in.in (SCRIPTS): Link gzip-el.sh in --srcdir diff -r f109f7dabbe2 -r 9f59509498e1 lib-src/emacsserver.c --- a/lib-src/emacsserver.c Mon Aug 13 09:21:56 2007 +0200 +++ b/lib-src/emacsserver.c Mon Aug 13 09:23:06 2007 +0200 @@ -59,6 +59,13 @@ #if ! defined (HAVE_SYSVIPC) /* BSD code is very different from SYSV IPC code */ +#include "../src/sysproc.h" /* Needed for select */ +#ifndef SOCK_STREAM +/* this is normally included by src/sysproc.h. might be safe to omit + * it entirely. lousy ultrix's sys/socket.h chokes if it's included + * twice, so we can't include unconditionally. */ +#include +#endif #include #include #include @@ -66,13 +73,6 @@ #include #include #include -#include "../src/sysproc.h" /* Needed for select */ -#ifndef SOCK_STREAM -/* this is normally included by src/sysproc.h. might be safe to omit - * it entirely. lousy ultrix's sys/socket.h chokes if it's included - * twice, so we can't include unconditionally. */ -#include -#endif void main () diff -r f109f7dabbe2 -r 9f59509498e1 lib-src/update-elc.sh --- a/lib-src/update-elc.sh Mon Aug 13 09:21:56 2007 +0200 +++ b/lib-src/update-elc.sh Mon Aug 13 09:23:06 2007 +0200 @@ -111,7 +111,7 @@ #make_special vm #make_special ediff elc #make_special viper elc -make_special efs +make_special efs x20 make_special gnus some make_special w3 xemacs-w3 make_special hyperbole elc diff -r f109f7dabbe2 -r 9f59509498e1 lisp/ChangeLog --- a/lisp/ChangeLog Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,64 @@ +Fri Jul 19 12:01:51 1996 Christoph Wedler + + * packages/info.el (Info-elisp-ref): Look first in lispref, then + elisp. + + * packages/func-menu.el (fume-function-name-regexp-bibtex): `,' + isn't allowed. + + * packages/etags.el (list-tags): Interactive argument should be an + existing file name. + +Wed Mar 26 22:33:40 1997 Steven L Baur + + * Remove ns lisp directory. + * Remove vms lisp directory. + +Tue Mar 25 12:22:57 1997 Steven L Baur + + * prim/files.el (file-remote-p): Update doc string. + + * packages/terminal.el (te-stty-string): Fix definition for Linux. + +Mon Mar 24 23:43:53 1997 Steven L Baur + + * prim/files.el (file-remote-p): Correct documentation and allow + for `allow-remote-paths' to control loading of efs. + +Sun Mar 23 16:58:08 1997 Tomasz J. Cholewo + + * packages/etags.el (with-caps-disable-folding): New macro. + (find-tag-internal): Use it. + (tags-search): Use it. + (tags-query-replace): Use it. Case bug corrected. + +Mon Mar 24 00:47:38 1997 Steven L Baur + + * x11/x-menubar.el (popup-mode-menu): Change guard when stripping + keywords to be more robust. + +Sun Mar 23 00:26:53 1997 Steven L Baur + + * prim/startup.el (splash-hack-version-string): Correct for case + of hosts with '-' in the names. + +Sat Mar 22 14:25:47 1997 Tomasz J. Cholewo + + * modes/sendmail.el (user-mail-address): Require cus-edit. + Fix when scope. + +Sat Mar 22 14:25:47 1997 Tomasz J. Cholewo + + * calendar/diary-lib.el (diary-countdown): New function. + (fancy-diary-display): Use modeline-buffer-identification. + + * calendar/appt.el (appt-diary-entries): Do not display diary. + (appt-check): Display diary buffer at midnight. + Fri Mar 21 19:16:46 1997 Steven L Baur * mule/mule-coding.el (enable-multibyte-characters): MULE - compatabile variable. + compatible variable. Thu Mar 20 13:28:17 1997 Steven L Baur diff -r f109f7dabbe2 -r 9f59509498e1 lisp/README --- a/lisp/README Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/README Mon Aug 13 09:23:06 2007 +0200 @@ -67,7 +67,7 @@ loads a file named $TERM.el from this directory, if that file exists. - vms VMS-specific code. + vms VMS-specific code. (Not functional) x11 X Window System-specific code. @@ -80,19 +80,27 @@ Some packages are fairly large; those have been given their own directories: + auctex A package for editing TeX documents. + bytecomp The XEmacs-lisp compiler. calendar A calendar and appointment manager. + cl Common Lisp compatibility code. + comint General code for interacting with inferior processes, like shell buffers and lisp interpreters. - dired The directory editor. + custom User environment customization code. edebug A source-level debugger for Elisp. ediff A comprehensive visual interface to diff and patch. + efs The directory editor, remote FTP frontend. + + egg MULE Input Method. + electric The "electric" commands; these implement temporary windows for help, list-buffers, etc. @@ -103,7 +111,7 @@ eterm A merge of the comint shell mode with an ANSI-compatible terminal-emulator. - gnus An NNTP-based newsreader; version 3.14. + gnus A network news and mail reader. hm--html-menus Menu interface to html-mode. @@ -112,22 +120,47 @@ ilisp A comint-based package for interacting with inferior lisp processes. + iso ISO Latin language support. + + its MULE Input Method. + + locale IE18N stuff. + + mailcrypt Package for dealing with PGP encrypted messages. + + mel MIME encoding library (part of the Tools for MIME). + mh-e An interface to the MH-E mail handling system. + mu Message Utilities library (part of the Tools for + MIME). + + mule Multi-lingual extensions for XEmacs. + + ns NeXTStep support. + oobr An Object-Oriented class browser. pcl-cvs An interface to the Concurrent Version System. + psgml General purpose SGML editing support with extra + support for editing HTML. + + quail MULE Input Method. + rmail A BABYL-format mail reader. sunpro Additional code for interfacing with SunPro products. + tl Tiny Library (Part of the Tools for MIME). + + tm Tools for MIME. MIME support for emacs lisp based + news and mail readers. + tooltalk An inteface to the ToolTalk communication protocol. viper A full-featured VI emulator. vm View Mail, an UNIX-format alternative to RMAIL. - url A Uniform Resource Locator retrieval tool. - w3 A World Wide Web interface. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/calendar/appt.el --- a/lisp/calendar/appt.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/calendar/appt.el Mon Aug 13 09:23:06 2007 +0200 @@ -24,7 +24,10 @@ ;;; 29-nov-89 created by Neil Mager . ;;; 23-feb-91 hacked upon by Jamie Zawinski . ;;; 1-apr-91 some more. -;;; 12-jul-95 updated for XEmacs 19.12 by Greg Veres +;;; 12-jul-95 updated for XEmacs 19.12 by Greg Veres +;;; +;;; 21-mar-97 better support for fancy diary display by Tomasz J. Cholewo +;;; ;;; ;; appt.el - visible and/or audible notification of ;; appointments from ~/diary file generated from @@ -117,7 +120,7 @@ ;;; ;;; This also interacts correctly with Benjamin Pierce's reportmail.el package. ;;; -;;; Brief internal description - Skip this if your not interested! +;;; Brief internal description - Skip this if you are not interested! ;;; ;;; The function appt-initialize invokes 'diary' to get a list of today's ;;; appointments, and parses the lines beginning with date descriptions. @@ -133,7 +136,7 @@ ;;; ;;; TO DO: ;;; -;;; o multiple adjascent appointments are not handled gracefully. If there +;;; o multiple adjacent appointments are not handled gracefully. If there ;;; is an appointment at 3:30 and another at 3:35, and you have set things ;;; up so that you get a notification twenty minutes before each appt, ;;; then a notification should come at 3:10 for the first appt, and at @@ -369,7 +372,7 @@ ;;; Internal stuff (defun appt-convert-time (time2conv) - " Convert hour:min[am/pm] format to minutes from midnight." + "Convert hour:min[am/pm] format to minutes from midnight." (cond ((string-match "^[ \t]*midni\\(ght\\|te\\)[ \t]*\\'" time2conv) 0) ((string-match "^[ \t]*noon[ \t]*\\'" time2conv) @@ -401,8 +404,8 @@ (+ (* hr 60) min))))) -(defun appt-current-time-in-seconds () - "returns the current time in seconds since midnight." +(defun appt-current-time-in-minutes () + "Returns the current time in minutes since midnight." (let* ((str (current-time-string)) (hour (string-to-int (substring str 11 13))) (min (string-to-int (substring str 14 16)))) @@ -415,17 +418,18 @@ (< (car (car x)) (car (car y))))))) (defun appt-diary-entries () + "Return an updated list of appointments for today." (let ((list-diary-entries-hook '(appt-make-list)) - (diary-display-hook nil) + (diary-display-hook 'ignore) (diary-list-include-blanks nil)) ;; this will set appt-time-msg-list. (diary 1) appt-time-msg-list)) (defun appt-initialize () - " Read your `diary-file' and remember today's appointments. Call this from + "Read your `diary-file' and remember today's appointments. Call this from your .emacs file, or any time you want your .diary file re-read (this happens - automatically at midnight to move to notice the next day's appointments). + automatically at midnight to notice the next day's appointments). The time must be at the beginning of a line for it to be put in the appointments list. @@ -483,11 +487,11 @@ (append (nreverse new-appts) appt-time-msg-list)))) (setq appt-time-msg-list (appt-sort-list appt-time-msg-list)) ;; - ;; Get the current time and convert it to minutes from midnight. ie. 12:01am - ;; = 1, midnight = 0, so that the elements in the list that are earlier than - ;; the present time can be removed. + ;; Get the current time and convert it to minutes from midnight, i.e., + ;; 12:01am = 1, midnight = 0, so that the elements in the list that + ;; are earlier than the present time can be removed. ;; - (let ((cur-comp-time (appt-current-time-in-seconds)) + (let ((cur-comp-time (appt-current-time-in-minutes)) (appt-comp-time (car (car (car appt-time-msg-list))))) (while (and appt-time-msg-list (< appt-comp-time cur-comp-time)) (setq appt-time-msg-list (cdr appt-time-msg-list)) @@ -548,8 +552,8 @@ (if appt-issue-message (let ((min-to-app -1)) ;; Get the current time and convert it to minutes - ;; from midnight. ie. 12:01am = 1, midnight = 0. - (let* ((cur-comp-time (appt-current-time-in-seconds)) + ;; from midnight, i.e., 12:01am = 1, midnight = 0. + (let* ((cur-comp-time (appt-current-time-in-minutes)) ;; If the current time is the same as the tick, just return. ;; This means that this function has been called more than once ;; in the current minute, which is not useful. @@ -559,8 +563,8 @@ ;; ;; If it is now the next day (we have crossed midnight since the last ;; time this was called) then we should update our appointments to - ;; today's list. - (if turnover-p (appt-diary-entries)) + ;; today's list. Show the diary entries (tjc). + (if turnover-p (diary 1)) ;; ;; Get the first time off of the list and calculate the number ;; of minutes until the appointment. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/calendar/diary-lib.el --- a/lisp/calendar/diary-lib.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/calendar/diary-lib.el Mon Aug 13 09:23:06 2007 +0200 @@ -359,8 +359,7 @@ (save-excursion;; Prepare the fancy diary buffer. (set-buffer (get-buffer-create fancy-diary-buffer)) (setq buffer-read-only nil) - (make-local-variable 'mode-line-format) - (calendar-set-mode-line "Diary Entries") + (setq modeline-buffer-identification '("Diary Entries")) (erase-buffer) (let ((entry-list diary-entries-list) (holiday-list) @@ -1102,6 +1101,13 @@ order of the parameters should be changed to D1, M1, Y1, D2, M2, Y2.) + %%(diary-countdown BEFORE AFTER M1 D1 Y1) text + Entry will appear on dates between BEFORE days before + and AFTER days after specified date. (If + `european-calendar-style' is t, the order of the + parameters should be changed to BEFORE, AFTER, D1, M1, + Y1.) + %%(diary-anniversary MONTH DAY YEAR) text Entry will appear on anniversary dates of MONTH DAY, YEAR. (If `european-calendar-style' is t, the order of the @@ -1261,7 +1267,7 @@ (defun diary-block (m1 d1 y1 m2 d2 y2) "Block diary entry. Entry applies if date is between two dates. Order of the parameters is -M1, D1, Y1, M2, D2, Y2 `european-calendar-style' is nil, and +M1, D1, Y1, M2, D2, Y2 if `european-calendar-style' is nil, and D1, M1, Y1, D2, M2, Y2 if `european-calendar-style' is t." (let ((date1 (calendar-absolute-from-gregorian (if european-calendar-style @@ -1275,6 +1281,28 @@ (if (and (<= date1 d) (<= d date2)) entry))) +(defun diary-countdown (before after m1 d1 y1) + "Countdown diary entry. +Entry applies if date is between BEFORE days before and AFTER days after +specified date. Order of the parameters is BEFORE, AFTER, M1, D1, Y1 if +`european-calendar-style' is nil, and BEFORE, AFTER, D1, M1, Y1 if +`european-calendar-style' is t." + (let* ((date1 (calendar-absolute-from-gregorian + (if european-calendar-style + (list d1 m1 y1) + (list m1 d1 y1)))) + (d (calendar-absolute-from-gregorian date)) + (diff (- d date1))) + (cond + ((and (<= (- before) diff) (< diff 0)) + (concat (format "It is %d day%s before " + (- diff) (if (= diff -1) "" "s")) entry)) + ((= diff 0) (concat (format "TODAY: " diff) entry)) + ((and (<= diff after) (> diff 0)) + (concat (format "It is %d day%s after " + diff (if (= diff 1) "" "s")) entry)) + (t nil)))) + (defun diary-float (month dayname n) "Floating diary entry--entry applies if date is the nth dayname of month. Parameters are MONTH, DAYNAME, N. MONTH can be a list of months, the constant diff -r f109f7dabbe2 -r 9f59509498e1 lisp/custom/ChangeLog --- a/lisp/custom/ChangeLog Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/custom/ChangeLog Mon Aug 13 09:23:06 2007 +0200 @@ -1,3 +1,56 @@ +Thu Mar 27 19:31:40 1997 Per Abrahamsen + + * Version 1.68 released. + +Thu Mar 27 18:50:16 1997 Per Abrahamsen + + * widget.el (:active): New keywords. + (:inactive): Ditto. + (:activate): Ditto. + (:deactivate): Ditto. + + * wid-edit.el (widget-inactive-face): new face. + (widget-specify-inactive): New function. + (widget-overlay-inactive): Ditto. + (widget-specify-active): Ditto. + (widget-apply-action): Ditto. + (widget-field-activate): Use it. + (widget-button-click): Ditto. + (widget-button1-click): Ditto. + (widget-button-press): Ditto. + (widget-gui-action): Ditto. + (default): Use new keywords. + (widget-default-active): New function. + (widget-default-deactivate): Ditto. + (widget-checkbox-action): New function. + (checkbox): Use it. + (widget-checklist-add-item): Initialize active state. + (widget-radio-add-item): Ditto. + (widget-radio-value-set): Ditto. + (widget-radio-action): Ditto. + + * widget.texi (Widget Properties): Document the new keywords. + +Mon Mar 24 18:36:15 1997 Per Abrahamsen + + * Version 1.67 released. + +Mon Mar 24 18:19:05 1997 Per Abrahamsen + + * cus-edit.el (custom-save-all): Added autoload. + + * Version 1.66 released. + +Mon Mar 24 18:09:04 1997 Per Abrahamsen + + * wid-edit.el (widget-default-delete): Added workaround for bug + with empty `:format'. + +Thu Mar 20 12:33:59 1997 Per Abrahamsen + + * custom.texi (The Init File): Explain that `custom-file' is not + automatically loaded. + Tue Mar 18 14:42:31 1997 Per Abrahamsen * Version 1.65 released. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/custom/cus-edit.el --- a/lisp/custom/cus-edit.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/custom/cus-edit.el Mon Aug 13 09:23:06 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.65 +;; Version: 1.68 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -517,6 +517,7 @@ (custom-mode) (widget-insert "This is a customization buffer. Push RET or click mouse-2 on the word ") + ;; (put-text-property 1 2 'start-open nil) (widget-create 'info-link :tag "help" :help-echo "Read the online help." @@ -1763,6 +1764,7 @@ (unless (eolp) (princ "\n"))))) +;;;###autoload (defun custom-save-all () "Save all customizations in `custom-file'." (custom-save-variables) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/custom/cus-face.el --- a/lisp/custom/cus-face.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/custom/cus-face.el Mon Aug 13 09:23:06 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.65 +;; Version: 1.68 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: diff -r f109f7dabbe2 -r 9f59509498e1 lisp/custom/custom.el --- a/lisp/custom/custom.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/custom/custom.el Mon Aug 13 09:23:06 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, faces -;; Version: 1.65 +;; Version: 1.68 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: diff -r f109f7dabbe2 -r 9f59509498e1 lisp/custom/wid-browse.el --- a/lisp/custom/wid-browse.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/custom/wid-browse.el Mon Aug 13 09:23:06 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: extensions -;; Version: 1.65 +;; Version: 1.68 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: diff -r f109f7dabbe2 -r 9f59509498e1 lisp/custom/wid-edit.el --- a/lisp/custom/wid-edit.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/custom/wid-edit.el Mon Aug 13 09:23:06 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: extensions -;; Version: 1.65 +;; Version: 1.68 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -24,6 +24,9 @@ (autoload 'pp-to-string "pp") (autoload 'Info-goto-node "info") + (when (string-match "XEmacs" emacs-version) + (require 'overlay)) + (if (string-match "XEmacs" emacs-version) ;; XEmacs spell `intangible' as `atomic'. (defun widget-make-intangible (from to side) @@ -380,6 +383,41 @@ (goto-char (point-max)) result))) +(defface widget-inactive-face '((((class grayscale color) + (background dark)) + (:foreground "light gray")) + (((class grayscale color) + (background light)) + (:foreground "dark gray")) + (t + (:italic t))) + "Face used for inactive widgets." + :group 'widgets) + +(defun widget-specify-inactive (widget from to) + "Make WIDGET inactive for user modifications." + (unless (widget-get widget :inactive) + (let ((overlay (make-overlay from to nil t nil))) + (overlay-put overlay 'face 'widget-inactive-face) + (overlay-put overlay 'evaporate 't) + (overlay-put overlay (if (string-match "XEmacs" emacs-version) + 'read-only + 'modification-hooks) '(widget-overlay-inactive)) + (widget-put widget :inactive overlay)))) + +(defun widget-overlay-inactive (&rest junk) + "Ignoring the arguments, signal an error." + (unless inhibit-read-only + (error "Attempt to modify inactive widget"))) + + +(defun widget-specify-active (widget) + "Make WIDGET active for user modifications." + (let ((inactive (widget-get widget :inactive))) + (when inactive + (delete-overlay inactive) + (widget-put widget :inactive nil)))) + ;;; Widget Properties. (defsubst widget-type (widget) @@ -440,6 +478,12 @@ (cons (list (car vals)) (cdr vals))) (t nil))) +(defun widget-apply-action (widget &optional event) + "Apply :action in WIDGET in response to EVENT." + (if (widget-apply widget :active) + (widget-apply widget :action event) + (error "Attempt to perform action on inactive widget"))) + ;;; Glyphs. (defcustom widget-glyph-directory (concat data-directory "custom/") @@ -659,7 +703,7 @@ (interactive "@d") (let ((field (get-text-property pos 'field))) (if field - (widget-apply field :action event) + (widget-apply-action field event) (call-interactively (lookup-key widget-global-map (this-command-keys)))))) @@ -670,12 +714,12 @@ (event-glyph event)) (let ((widget (glyph-property (event-glyph event) 'widget))) (if widget - (widget-apply widget :action event) + (widget-apply-action widget event) (message "You clicked on a glyph.")))) ((event-point event) (let ((button (get-text-property (event-point event) 'button))) (if button - (widget-apply button :action event) + (widget-apply-action button event) (call-interactively (or (lookup-key widget-global-map [ button2 ]) (lookup-key widget-global-map [ down-mouse-2 ]) @@ -690,7 +734,7 @@ (event-glyph event)) (let ((widget (glyph-property (event-glyph event) 'widget))) (if widget - (widget-apply widget :action event) + (widget-apply-action widget event) (message "You clicked on a glyph."))) (call-interactively (lookup-key widget-global-map (this-command-keys))))) @@ -699,7 +743,7 @@ (interactive "@d") (let ((button (get-text-property pos 'button))) (if button - (widget-apply button :action event) + (widget-apply-action button event) (let ((command (lookup-key widget-global-map (this-command-keys)))) (when (commandp command) (call-interactively command)))))) @@ -947,6 +991,9 @@ :value-inline 'widget-default-value-inline :menu-tag-get 'widget-default-menu-tag-get :validate (lambda (widget) nil) + :active 'widget-default-active + :activate 'widget-specify-active + :deactivate 'widget-default-deactivate :action 'widget-default-action :notify 'widget-default-notify) @@ -1077,7 +1124,9 @@ (inhibit-read-only t) after-change-functions) (widget-apply widget :value-delete) - (delete-region from to) + (when (< from to) + ;; Kludge: this doesn't need to be true for empty formats. + (delete-region from to)) (set-marker from nil) (set-marker to nil))) @@ -1101,6 +1150,19 @@ (widget-get widget :tag) (widget-princ-to-string (widget-get widget :value)))) +(defun widget-default-active (widget) + "Return t iff this widget active (user modifiable)." + (and (not (widget-get widget :inactive)) + (let ((parent (widget-get widget :parent))) + (or (null parent) + (widget-apply parent :active))))) + +(defun widget-default-deactivate (widget) + "Make WIDGET inactive for user modifications." + (widget-specify-inactive widget + (widget-get widget :from) + (widget-get widget :to))) + (defun widget-default-action (widget &optional event) ;; Notify the parent when a widget change (let ((parent (widget-get widget :parent))) @@ -1196,7 +1258,7 @@ (defun widget-gui-action (widget) "Apply :action for WIDGET." - (widget-apply widget :action (this-command-keys))) + (widget-apply-action widget (this-command-keys))) ;;; The `link' Widget. @@ -1492,7 +1554,17 @@ :on "[X]" :on-glyph "check1" :off "[ ]" - :off-glyph "check0") + :off-glyph "check0" + :action 'widget-checkbox-action) + +(defun widget-checkbox-action (widget &optional event) + "Toggle checkbox, notify parent, and set active state of sibling." + (widget-toggle-action widget event) + (let ((sibling (widget-get-sibling widget))) + (when sibling + (if (widget-value widget) + (widget-apply sibling :activate) + (widget-apply sibling :deactivate))))) ;;; The `checklist' Widget. @@ -1549,7 +1621,9 @@ ((eq escape ?v) (setq child (cond ((not chosen) - (widget-create-child widget type)) + (let ((child (widget-create-child widget type))) + (widget-apply child :deactivate) + child)) ((widget-get type :inline) (widget-create-child-value widget type (cdr chosen))) @@ -1735,7 +1809,9 @@ (setq child (if chosen (widget-create-child-value widget type value) - (widget-create-child widget type)))) + (widget-create-child widget type))) + (unless chosen + (widget-apply child :deactivate))) (t (error "Unknown escape `%c'" escape))))) ;; Update properties. @@ -1795,7 +1871,10 @@ (widget-apply current :match value)))) (widget-value-set button match) (if match - (widget-value-set current value)) + (progn + (widget-value-set current value) + (widget-apply current :activate)) + (widget-apply current :deactivate)) (setq found (or found match)))))) (defun widget-radio-validate (widget) @@ -1822,9 +1901,11 @@ children (cdr children)) (let* ((button (widget-get current :button))) (cond ((eq child button) - (widget-value-set button t)) + (widget-value-set button t) + (widget-apply current :activate)) ((widget-value button) - (widget-value-set button nil))))))) + (widget-value-set button nil) + (widget-apply current :deactivate))))))) ;; Pass notification to parent. (widget-apply widget :notify child event)) @@ -1967,7 +2048,7 @@ (setq children (cdr children))) (setcdr children (cons child (cdr children))))))) (widget-setup) - (widget-apply widget :notify widget)) + widget (widget-apply widget :notify widget)) (defun widget-editable-list-delete-at (widget child) ;; Delete child from list of children. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/custom/widget-example.el --- a/lisp/custom/widget-example.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/custom/widget-example.el Mon Aug 13 09:23:06 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.65 +;; Version: 1.68 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ (require 'widget) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/custom/widget.el --- a/lisp/custom/widget.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/custom/widget.el Mon Aug 13 09:23:06 2007 +0200 @@ -4,7 +4,7 @@ ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia -;; Version: 1.65 +;; Version: 1.68 ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ ;;; Commentary: @@ -27,7 +27,8 @@ (set (car keywords) (car keywords))) (setq keywords (cdr keywords))))))) -(define-widget-keywords :sibling-args :delete-button-args +(define-widget-keywords :deactivate :active :inactive :activate + :sibling-args :delete-button-args :insert-button-args :append-button-args :button-args :tag-glyph :off-glyph :on-glyph :valid-regexp :secret :sample-face :sample-face-get :case-fold :widget-doc diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/Makefile --- a/lisp/efs/Makefile Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/Makefile Mon Aug 13 09:23:06 2007 +0200 @@ -2,7 +2,7 @@ # # File: Makefile # Release: $efs release: 1.15 $ -# Version: $Revision: 1.4 $ +# Version: $Revision: 1.5 $ # RCS: # Description: Makefile for byte-compiling efs and dired. # Author: Andy Norman, HPLabs, Bristol, UK. @@ -21,7 +21,8 @@ # 19.1 and 19.22, inclusive. # 19.23 for version 19.23 and later of the original GNU Emacs from FSF # l19.11 for XEmacs 19.11 trhu 19.14 -# x19.15 for XEmacs 19.15 and later +# x19.15 for XEmacs 19.15 +# x20 for XEmacs 20.1 and later # LISPDIR should be the directory in which you want the .elc # files installed. # BDIR should be the directory containing the .elc files for the @@ -41,7 +42,8 @@ # 19.22, inclusive # 19.23 for the original GNU Emacs from FSF, version 19.23 and later. # l19.11 for Lucid XEmacs 19.11 thru 19.14 -# x19.15 for XEmacs 19.15 and later +# x19.15 for XEmacs 19.15 +# x20 for XEmacs 20.1 and later # # If you have set the VERSION variable correctly, then typing just # make will suffice. @@ -72,6 +74,10 @@ CWD=`pwd` # Directory in which to install the lisp files LISPDIR= +# Directory in which to install the info files +INFODIR= +# Directory in which to install the Texinfo file +TEXIDIR= # Directory containing byte-compiler. This is used by fixup.el BDIR= # Directory containing VM's .elc files. @@ -112,13 +118,18 @@ efs-vms.el efs-vos.el efs-plan9.el efs-ms-unix.el VMOBJS = efs-vm.elc VMSRC = efs-vm.el -DUMPSRC = efs-dump.el -GEOBJS = dired-fsf.elc dired-mule.elc efs-dired-mule.elc \ - passwd.elc diff.elc auto-save.elc -GESRC = dired-fsf.el dired-mule.el efs-dired-mule.el \ - passwd.el diff.el auto-save.el -XEOBJS = dired-faces.elc dired-xemacs.elc -XESRC = dired-faces.el dired-xemacs.el +MULEOBJS = dired-mule.elc efs-dired-mule.elc +MULESRC = dired-mule.el efs-dired-mule.el +GEOBJS = dired-fsf.elc \ + passwd.elc diff.elc auto-save.elc \ + $(MULEOBJS) +GESRC = dired-fsf.el \ + passwd.el diff.el auto-save.el \ + $(MULESRC) +XEOBJS = dired-faces.elc dired-xemacs.elc \ + $(VMOBJS) +XESRC = dired-faces.el dired-xemacs.el \ + $(VMSRC) $(MULESRC) OBJS = $(DOBJS) $(EFSOBJS) $(VMOBJS) $(GEOBJS) $(XEOBJS) \ efs-18.elc efs-19.elc efs-19.23.elc \ efs-l19.11.elc efs-x19.15.elc \ @@ -260,24 +271,25 @@ 19.23: efs dired efs-19.23.elc $(GEOBJS) l19.11: efs dired efs-l19.11.elc $(XEOBJS) x19.15: efs dired efs-x19.15.elc $(XEOBJS) +x20: efs dired efs-x19.15.elc $(XEOBJS) $(MULEOBJS) # Installation install: @echo "Installing in $(LISPDIR)..." - @ls -C *.elc cp *.elc $(LISPDIR) + cp efs.info $(INFODIR) install_src: @echo "Installing in $(LISPDIR)..." - @ls -C `ls *.el 2>&1 | grep -v "fixup"` 2> /dev/null cp `ls *.el | grep -v "fixup"` $(LISPDIR) + cp efs.texi $(TEXIDIR) install_xemacs: @echo "Installing source in $(LISPDIR)..." cp $(EFSSRC) $(DSRC) $(XESRC) efs-x19.15.el $(LISPDIR) - cp $(DUMPSRC) $(LISPDIR) cp Makefile README fixup.el $(LISPDIR) + cp efs.texi $(TEXIDIR) diff_xemacs: for f in $(EFSSRC) $(DSRC) $(XESRC) efs-x19.15.el \ - $(DUMPSRC) Makefile README fixup.el; do \ + Makefile README fixup.el; do \ if [ -e $(LISPDIR)/$$f ]; \ then\ diff -c $(LISPDIR)/$$f $$f; \ diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/default-dir.el --- a/lisp/efs/default-dir.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/default-dir.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: default-dir.el ;; RCS: -;; Version: $Revision: 1.4 $ +;; Version: #Revision: 1.5 $ ;; Description: Defines the function default-directory, for fancy handling ;; of the initial contents in the minibuffer when reading ;; file names. @@ -35,6 +35,10 @@ ((>= (string-to-int (substring emacs-version 0 2)) 19) 'fsf-19) (t 'fsf-18))) +(defconst default-dir-find-file-takes-coding-system + (and (eq default-dir-emacs-variant 'xemacs) + (>= (string-to-int (substring emacs-version 0 2)) 20))) + ;;;###autoload (defvar default-directory-function nil "A function to call to compute the default-directory for the current buffer. @@ -61,7 +65,7 @@ (cond ((or (featurep 'mule) (boundp 'MULE)) - + (defun default-dir-find-file (file &optional coding-system) "Documented as original" (interactive @@ -122,7 +126,7 @@ (read-coding-system "Coding-system: ")))) (default-dir-real-find-file-other-frame file coding-system)))) - + (if (fboundp 'find-file-read-only-other-frame) (progn (defun default-dir-find-file-read-only-other-frame @@ -145,14 +149,14 @@ ;; optional arguments, and the interaction screws things up. ;; Therefore these functions accept an optional dummy coding-system ;; argument. - + (defun default-dir-find-file (file &optional coding-system) "Documented as original" (interactive (list (expand-file-name (read-file-name "Find file: " (default-directory))))) - (default-dir-real-find-file file coding-system)) + (default-dir-real-find-file file)) (defun default-dir-find-file-other-window (file &optional coding-system) "Documented as original" @@ -160,15 +164,15 @@ (list (expand-file-name (read-file-name "Find file in other window: " (default-directory))))) - (default-dir-real-find-file-other-window file coding-system)) + (default-dir-real-find-file-other-window file)) - (defun default-dir-find-file-read-only (file &optional coding-system) + (defun default-dir-find-file-read-only (file &optional coding-system) "Documented as original" (interactive (list (expand-file-name (read-file-name "Find file read-only: " (default-directory) nil t)))) - (default-dir-real-find-file-read-only file coding-system)) + (default-dir-real-find-file-read-only file)) (if (fboundp 'find-file-read-only-other-window) (progn @@ -208,6 +212,7 @@ (default-dir-real-find-file-read-only-other-frame file))))) (t + (defun default-dir-find-file (file) "Documented as original" (interactive @@ -266,7 +271,7 @@ (default-directory) nil t)))) (default-dir-real-find-file-read-only-other-frame file)))))) - + (efs-overwrite-fn "default-dir" 'find-file 'default-dir-find-file) (efs-overwrite-fn "default-dir" 'find-file-other-window @@ -361,7 +366,7 @@ (expand-file-name (read-file-name "Change default directory: " (default-directory))))) (default-dir-real-cd dir)) - + (efs-overwrite-fn "default-dir" 'cd 'default-dir-cd) (defun default-dir-set-visited-file-name (filename) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-cmpr.el --- a/lisp/efs/dired-cmpr.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-cmpr.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-cmpr.el -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: Commands for compressing marked files. ;; diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-diff.el --- a/lisp/efs/dired-diff.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-diff.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: dired-diff.el ;; RCS: -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; Description: Support for diff and related commands. ;; Author: Sandy Rutherford ;; Created: Fri Jun 24 08:50:20 1994 by sandy on ibm550 diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-faces.el --- a/lisp/efs/dired-faces.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-faces.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-faces.el -;; Dired Version: $Revision: 1.2 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: rudimentary face customization support for dired ;; Author: Mike Sperber diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-fsf.el --- a/lisp/efs/dired-fsf.el Mon Aug 13 09:21:56 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,684 +0,0 @@ -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; File: dired-fsf.el -;; Dired Version: $Revision: 1.1 $ -;; RCS: -;; Description: dired functions for V19 of the original GNU Emacs from FSF -;; Created: Sat Jan 29 01:38:49 1994 by sandy on ibm550 -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;;;; Requirements and provisions -(provide 'dired-fsf) -(require 'dired) - -;;;; Variables to set. - -(setq dired-modeline-tracking-cmds '(mouse-set-point)) - -;;;; Support for text properties - -(defun dired-insert-set-properties (beg end) - ;; Sets the text properties for the file names. - (save-excursion - (goto-char beg) - (beginning-of-line) - (let ((eol (save-excursion (end-of-line) (point))) - (bol (point))) - (while (< (point) end) - (setq eol (save-excursion (end-of-line) (point))) - (if (dired-manual-move-to-filename nil bol eol) - (dired-set-text-properties - (point) (dired-manual-move-to-end-of-filename nil bol eol))) - (goto-char (setq bol (1+ eol))))))) - -(defun dired-remove-text-properties (start end &optional object) - ;; Removes text properties. Called in popup buffers. - (remove-text-properties start end '(mouse-face dired-file-name) object)) - -(defun dired-set-text-properties (start end) - ;; Sets dired's text properties - (put-text-property start end 'mouse-face 'highlight) - (put-text-property start end 'dired-file-name t)) - -(defun dired-move-to-filename (&optional raise-error bol eol) - (or bol (setq bol (save-excursion - (skip-chars-backward "^\n\r") - (point)))) - (or eol (setq eol (save-excursion - (skip-chars-forward "^\n\r") - (point)))) - (goto-char bol) - (let ((spot (next-single-property-change bol 'dired-file-name nil eol))) - (if (= spot eol) - (if raise-error - (error "No file on this line") - nil) - (goto-char spot)))) - -(defun dired-move-to-end-of-filename (&optional no-error bol eol) - ;; Assumes point is at beginning of filename, - ;; thus the rwx bit re-search-backward below will succeed in *this* - ;; line if at all. So, it should be called only after - ;; (dired-move-to-filename t). - ;; On failure, signals an error (with non-nil NO-ERROR just returns nil). - (or eol (setq eol (save-excursion (skip-chars-forward "^\r\n") (point)))) - (and - (null no-error) - selective-display - (or bol (setq bol (save-excursion (skip-chars-backward "^\r\n") (point)))) - (eq (char-after (1- bol)) ?\r) - (cond - ((dired-subdir-hidden-p (dired-current-directory)) - (error - (substitute-command-keys - "File line is hidden. Type \\[dired-hide-subdir] to unhide."))) - ((error - (substitute-command-keys - "File line is omitted. Type \\[dired-omit-toggle] to un-omit."))))) - (if (get-text-property (point) 'dired-file-name nil) - (goto-char (next-single-property-change (point) 'dired-file-name - nil eol)) - (and (null no-error) (error "No file on this line")))) - -;; Text properties do not work properly in pre-19.26. - -(if (or (not (boundp 'emacs-major-version)) - (= emacs-major-version 19)) - (progn - (if (not (boundp 'emacs-minor-version)) - ;; Argument structure of where-is-internal went through some - ;; changes. - (defun dired-key-description (cmd &rest prefixes) - ;; Return a key description string for a menu. - ;; If prefixes are given, they should be either strings, - ;; integers, or 'universal-argument. - (let ((key (where-is-internal cmd dired-mode-map nil t))) - (if key - (key-description - (apply 'vconcat - (append - (mapcar - (function - (lambda (x) - (if (eq x 'universal-argument) - (where-is-internal 'universal-argument - dired-mode-map nil t) - x))) - prefixes) - (list key)))) - "")))) - (if (or (not (boundp 'emacs-minor-version)) - (< emacs-minor-version 26)) - (progn - (fset 'dired-insert-set-properties 'ignore) - (fset 'dired-remove-text-properties 'ignore) - (fset 'dired-set-text-properties 'ignore) - (fset 'dired-move-to-filename 'dired-manual-move-to-filename) - (fset 'dired-move-to-end-of-filename - 'dired-manual-move-to-end-of-filename))))) - -;;;; Keymaps - -;;; Caching Menus - -(defun dired-menu-item (menu-item cmd width &rest prefixes) - ;; Return a key description string for a menu. If prefixes are given, - ;; they should be either characters, or 'universal-argument. - (let ((desc (apply 'dired-key-description cmd prefixes))) - (if (string-equal desc "") - menu-item - (concat menu-item - (make-string - (max (- width (length menu-item) (length desc) 2) 1) 32) - "(" desc ")")))) - -(defun dired-cache-key (keymap event cmd &rest prefixes) - ;; Caches a keybinding for cms in a menu keymap. - ;; This is able to handle prefix keys. - (let ((desc (apply 'dired-key-description cmd prefixes))) - (or (string-equal desc "") - (progn - (let ((elt (assq event keymap))) - (if elt - (let ((tail (cdr elt))) - (setcdr tail - (cons - (cons - nil (concat " (" desc ")")) - (cdr tail)))))))))) - -;; Don't cache keys in old emacs versions. Is 23 the right cut-off point? -(if (or (not (boundp 'emacs-minor-version)) - (< emacs-minor-version 23)) - (fset 'dired-cache-key 'ignore)) - -(defvar dired-visit-popup-menu nil) -;; Menus of commands in the Visit popup menu. -(defvar dired-do-popup-menu nil) -;; Menu of commands in the dired Do popup menu. - -;; Menus for the menu bar. -(defvar dired-subdir-menu - (cons "Subdir" (make-sparse-keymap "Subdir"))) -(defvar dired-mark-menu - (cons "Mark" (make-sparse-keymap "Mark"))) -(defvar dired-do-menu - (cons "Do" (make-sparse-keymap "Do"))) -(defvar dired-regex-menu - (cons "Regexp" (make-sparse-keymap "Regex"))) -(defvar dired-look-menu - (cons "Look" (make-sparse-keymap "Look"))) -(defvar dired-sort-menu - (cons "Sort" (make-sparse-keymap "Sort"))) -(defvar dired-help-menu nil) - -(defun dired-setup-menus () - - ;; popup menu - - (setq dired-visit-popup-menu - (list - (cons (dired-menu-item "Find File" 'dired-find-file 35) - 'dired-advertised-find-file) - (cons (dired-menu-item "Find in Other Window" - 'dired-find-file-other-window 35) - 'dired-find-file-other-window) - (cons (dired-menu-item "Find in Other Frame" - 'dired-find-file-other-frame 35) - 'dired-find-file-other-frame) - (cons (dired-menu-item "View File" 'dired-view-file 35) - 'dired-view-file) - (cons (dired-menu-item "Display in Other Window" - 'dired-find-file-other-window 35 - 'universal-argument) - 'dired-display-file))) - - ;; Operate popup menu - - (setq dired-do-popup-menu - (list - (cons (dired-menu-item "Copy to..." 'dired-do-copy 35 1) - 'dired-do-copy) - (cons (dired-menu-item "Rename to..." 'dired-do-rename 35 1) - 'dired-do-rename) - (cons (dired-menu-item "Compress/Uncompress" 'dired-do-compress - 35 1) 'dired-do-compress) - (cons (dired-menu-item "Uuencode/Uudecode" 'dired-do-uucode - 35 1) 'dired-do-uucode) - (cons (dired-menu-item "Change Mode..." 'dired-do-chmod 35 1) - 'dired-do-chmod) - (cons (dired-menu-item "Change Owner..." 'dired-do-chown 35 1) - 'dired-do-chown) - (cons (dired-menu-item "Change Group..." 'dired-do-chgrp 35 1) - 'dired-do-chgrp) - (cons (dired-menu-item "Load" 'dired-do-load 35 1) - 'dired-do-load) - (cons (dired-menu-item "Byte-compile" 'dired-do-byte-compile 35 1) - 'dired-do-byte-compile) - (cons (dired-menu-item "Hardlink to..." 'dired-do-hardlink 35 1) - 'dired-do-hardlink) - (cons (dired-menu-item "Symlink to..." 'dired-do-symlink 35 1) - 'dired-do-symlink) - (cons (dired-menu-item "Relative Symlink to..." - 'dired-do-relsymlink 35 1) - 'dired-do-relsymlink) - (cons (dired-menu-item "Shell Command..." - 'dired-do-shell-command 35 1) - 'dired-do-shell-command) - (cons (dired-menu-item "Background Shell Command..." - 'dired-do-background-shell-command 35 1) - 'dired-do-background-shell-command) - (cons (dired-menu-item "Delete" 'dired-do-delete 35 1) - 'dired-do-delete))) - - ;; Subdir Menu-bar Menu - - (define-key dired-mode-map [menu-bar subdir] dired-subdir-menu) - (define-key dired-mode-map [menu-bar subdir uncompress-subdir-files] - (cons "Uncompress Compressed Files" - (function - (lambda () (interactive) (dired-compress-subdir-files t))))) - (dired-cache-key dired-subdir-menu 'uncompress-subdir-files - 'dired-compress-subdir-files 'universal-argument) - (define-key dired-mode-map [menu-bar subdir compress-subdir-files] - '("Compress Uncompressed Files" . dired-compress-subdir-files)) - (define-key dired-mode-map [menu-bar subdir flag] - '("Flag Files for Deletion" . dired-flag-subdir-files)) - (define-key dired-mode-map [menu-bar subdir mark] - '("Mark Files" . dired-mark-subdir-files)) - (define-key dired-mode-map [menu-bar subdir redisplay] - '("Redisplay Subdir" . dired-redisplay-subdir)) - (define-key dired-mode-map [menu-bar subdir subdir-separator] - '("-- Commands on All Files in Subdir --")) - (define-key dired-mode-map [menu-bar subdir kill-subdir] - '("Kill This Subdir" . dired-kill-subdir)) - (define-key dired-mode-map [menu-bar subdir create-directory] - '("Create Directory..." . dired-create-directory)) - (define-key dired-mode-map [menu-bar subdir insert] - '("Insert This Subdir" . dired-maybe-insert-subdir)) - (define-key dired-mode-map [menu-bar subdir down-dir] - '("Down Dir" . dired-down-directory)) - (define-key dired-mode-map [menu-bar subdir up-dir] - '("Up Dir" . dired-up-directory)) - (define-key dired-mode-map [menu-bar subdir prev-dirline] - '("Prev Dirline" . dired-prev-dirline)) - (define-key dired-mode-map [menu-bar subdir next-dirline] - '("Next Dirline" . dired-next-dirline)) - (define-key dired-mode-map [menu-bar subdir prev-subdir] - '("Prev Subdir" . dired-prev-subdir)) - (define-key dired-mode-map [menu-bar subdir next-subdir] - '("Next Subdir" . dired-next-subdir)) - - ;; Mark Menu-bar Menu - - (define-key dired-mode-map [menu-bar mark] dired-mark-menu) - (define-key dired-mode-map [menu-bar mark mark-from-compilation-buffer] - '("Mark Files from Compile Buffer..." . dired-mark-files-compilation-buffer)) - (define-key dired-mode-map [menu-bar mark mark-from-other-buffer] - '("Mark Files from Other Dired" . - dired-mark-files-from-other-dired-buffer)) - (define-key dired-mode-map [menu-bar mark mark-separator] - '("--")) - (define-key dired-mode-map [menu-bar mark marker-char-right] - '("Marker stack right" . dired-marker-stack-right)) - (define-key dired-mode-map [menu-bar mark marker-char-left] - '("Marker stack left" . dired-marker-stack-left)) - (define-key dired-mode-map [menu-bar mark restore-marker] - '("Restore marker char" . dired-restore-marker-char)) - (define-key dired-mode-map [menu-bar mark add-marker] - '("Set new marker char..." . dired-set-marker-char)) - (define-key dired-mode-map [menu-bar mark auto-save-files] - '("Flag Auto-save Files" . dired-flag-auto-save-files)) - (define-key dired-mode-map [menu-bar mark backup-files] - '("Flag Backup Files" . dired-flag-backup-files)) - (define-key dired-mode-map [menu-bar mark executables] - '("Mark Executables" . dired-mark-executables)) - (define-key dired-mode-map [menu-bar mark directory] - '("Mark Old Backups" . dired-clean-directory)) - (define-key dired-mode-map [menu-bar mark directories] - '("Mark Directories" . dired-mark-directories)) - (define-key dired-mode-map [menu-bar mark symlinks] - '("Mark Symlinks" . dired-mark-symlinks)) - (define-key dired-mode-map [menu-bar mark toggle] - (cons "Toggle Marks..." - (function (lambda () (interactive) - (let ((current-prefix-arg t)) - (call-interactively 'dired-change-marks)))))) - (dired-cache-key dired-mark-menu 'toggle 'dired-change-marks - 'universal-argument) - (define-key dired-mode-map [menu-bar mark unmark-all] - '("Unmark All" . dired-unmark-all-files)) - (define-key dired-mode-map [menu-bar mark marks] - '("Change Marks..." . dired-change-marks)) - (define-key dired-mode-map [menu-bar mark prev] - '("Previous Marked" . dired-prev-marked-file)) - (define-key dired-mode-map [menu-bar mark next] - '("Next Marked" . dired-next-marked-file)) - - ;; Do Menu-bar Menu - - (define-key dired-mode-map [menu-bar do] - dired-do-menu) - (define-key dired-mode-map [menu-bar do do-popup] - (cons "Operate on file menu >" - 'dired-do-popup-menu-internal)) - (dired-cache-key dired-do-menu 'do-popup - 'dired-do-popup-menu) - (define-key dired-mode-map [menu-bar do visit-popup] - (cons "Visit file menu >" - 'dired-visit-popup-menu-internal)) - (dired-cache-key dired-do-menu 'visit-popup - 'dired-visit-popup-menu) - (define-key dired-mode-map [menu-bar do delete] - '("Delete Marked Files" . dired-do-delete)) - (define-key dired-mode-map [menu-bar do background-command] - '("Background Shell Command..." . dired-do-background-shell-command)) - (define-key dired-mode-map [menu-bar do command] - '("Shell Command..." . dired-do-shell-command)) - (define-key dired-mode-map [menu-bar do symlink] - '("Symlink to..." . dired-do-symlink)) - (define-key dired-mode-map [menu-bar do hardlink] - '("Hardlink to..." . dired-do-hardlink)) - (define-key dired-mode-map [menu-bar do compile] - '("Byte-compile" . dired-do-byte-compile)) - (define-key dired-mode-map [menu-bar do load] - '("Load" . dired-do-load)) - (define-key dired-mode-map [menu-bar do chgrp] - '("Change Group..." . dired-do-chgrp)) - (define-key dired-mode-map [menu-bar do chown] - '("Change Owner..." . dired-do-chown)) - (define-key dired-mode-map [menu-bar do chmod] - '("Change Mode..." . dired-do-chmod)) - (define-key dired-mode-map [menu-bar do print] - '("Print..." . dired-do-print)) - (define-key dired-mode-map [menu-bar do uucode] - '("Uuencode/Uudecode" . dired-do-uucode)) - (define-key dired-mode-map [menu-bar do compress] - '("Compress/Uncompress" . dired-do-compress)) - (define-key dired-mode-map [menu-bar do expunge] - '("Expunge File Flagged for Deletion" . dired-expunge-deletions)) - (define-key dired-mode-map [menu-bar do rename] - '("Rename to..." . dired-do-rename)) - (define-key dired-mode-map [menu-bar do copy] - '("Copy to..." . dired-do-copy)) - -;; Regex Menu-bar Menu - - (define-key dired-mode-map [menu-bar regex] dired-regex-menu) - (define-key dired-mode-map [menu-bar regex show-omit-regexp] - (cons "Show Omit Regex" - (function - (lambda () - (interactive) - (let ((current-prefix-arg 0)) - (call-interactively 'dired-add-omit-regexp)))))) - (dired-cache-key dired-regex-menu 'show-omit-regexp - 'dired-add-omit-regexp 0) - (define-key dired-mode-map [menu-bar regex remove-omit-extension] - (cons "Remove Omit Extension..." - (function - (lambda () - (interactive) - (let ((current-prefix-arg '(16))) - (call-interactively 'dired-add-omit-regexp)))))) - (dired-cache-key dired-regex-menu 'remove-omit-extension - 'dired-add-omit-regexp 'universal-argument - 'universal-argument) - (define-key dired-mode-map [menu-bar regex add-omit-extension] - (cons "Add Omit Extension..." - (function - (lambda () - (interactive) - (let ((current-prefix-arg '(4))) - (call-interactively 'dired-add-omit-regexp)))))) - (dired-cache-key dired-regex-menu 'add-omit-extension - 'dired-add-omit-regexp 'universal-argument) - (define-key dired-mode-map [menu-bar regex remove-omit-regexp] - (cons "Remove Omit Regex..." - (function - (lambda () - (interactive) - (let ((current-prefix-arg 1)) - (call-interactively 'dired-add-omit-regexp)))))) - (dired-cache-key dired-regex-menu 'remove-omit-regexp - 'dired-add-omit-regexp 1) - (define-key dired-mode-map [menu-bar regex add-omit-regexp] - '("Add Omit Regex..." . dired-add-omit-regexp)) - (define-key dired-mode-map [menu-bar regex separator] - '("--")) - (define-key dired-mode-map [menu-bar regex relsymlink] - '("Relative Symlink..." . dired-do-relsymlink-regexp)) - (define-key dired-mode-map [menu-bar regex symlink] - '("Symlink..." . dired-do-symlink-regexp)) - (define-key dired-mode-map [menu-bar regex hardlink] - '("Hardlink..." . dired-do-hardlink-regexp)) - (define-key dired-mode-map [menu-bar regex rename] - '("Rename..." . dired-do-rename-regexp)) - (define-key dired-mode-map [menu-bar regex copy] - '("Copy..." . dired-do-copy-regexp)) - (define-key dired-mode-map [menu-bar regex upcase] - '("Upcase" . dired-upcase)) - (define-key dired-mode-map [menu-bar regex downcase] - '("Downcase" . dired-downcase)) - (define-key dired-mode-map [menu-bar regex dired-flag-extension] - '("Flag Files with Extension..." . dired-flag-extension)) - (define-key dired-mode-map [menu-bar regex flag] - '("Flag..." . dired-flag-files-regexp)) - (define-key dired-mode-map [menu-bar regex mark-extension] - '("Mark Files with Extension..." . dired-mark-extension)) - (define-key dired-mode-map [menu-bar regex mark] - '("Mark..." . dired-mark-files-regexp)) - - ;; Look Menu-bar Menu - - (define-key dired-mode-map [menu-bar look] dired-look-menu) - (define-key dired-mode-map [menu-bar look patch] - '("Patch File" . dired-epatch)) - (define-key dired-mode-map [menu-bar look ediff] - '("Ediff Files..." . dired-ediff)) - (define-key dired-mode-map [menu-bar look emerge-with-ancestor] - '("Merge Files Having Common Ancestor..." . dired-emerge-with-ancestor)) - (define-key dired-mode-map [menu-bar look emerge] - '("Merge Files..." . dired-emerge)) - (define-key dired-mode-map [menu-bar look backup-diff] - '("Diff with Backup" . dired-backup-diff)) - (define-key dired-mode-map [menu-bar look diff] - '("Diff File..." . dired-diff)) - ;; Put in a separator line. - (define-key dired-mode-map [menu-bar look look-separator] - '("--")) - (define-key dired-mode-map [menu-bar look tags-query-replace] - '("Tags Query Replace..." . dired-do-tags-query-replace)) - (define-key dired-mode-map [menu-bar look tags-search] - '("Tags Search for..." . dired-do-tags-search)) - (define-key dired-mode-map [menu-bar look grep] - '("Grep for..." . dired-do-grep)) - - ;; Sort Menu-bar Menu - - (define-key dired-mode-map [menu-bar sort] dired-sort-menu) - (define-key dired-mode-map [menu-bar sort redisplay-killed] - (cons "Redisplay Killed Lines" - (function (lambda () (interactive) (dired-do-kill-file-lines 0))))) - (dired-cache-key dired-sort-menu 'redisplay-killed - 'dired-do-kill-file-lines 0) - (define-key dired-mode-map [menu-bar sort kill] - '("Kill Marked Lines" . dired-do-kill-file-lines)) - (define-key dired-mode-map [menu-bar sort toggle-omit] - '("Toggle Omit" . dired-omit-toggle)) - (define-key dired-mode-map [menu-bar sort hide-subdir] - '("Hide Subdir" . dired-hide-subdir)) - (define-key dired-mode-map [menu-bar sort hide-all] - '("Hide All Subdirs" . dired-hide-all)) - (define-key dired-mode-map [menu-bar sort sort-separator] - '("--")) - (define-key dired-mode-map [menu-bar sort entire-edit] - (cons "Edit Switches for Entire Buffer..." - (function (lambda () (interactive) - (dired-sort-toggle-or-edit '(16)))))) - (dired-cache-key dired-sort-menu 'entire-edit - 'dired-sort-toggle-or-edit 'universal-argument - 'universal-argument) - (define-key dired-mode-map [menu-bar sort entire-name] - (cons "Sort Entire Buffer by Name" - (function (lambda () (interactive) - (dired-sort-toggle-or-edit 'name))))) - (dired-cache-key dired-sort-menu 'entire-name 'dired-sort-toggle-or-edit - 'universal-argument) - (define-key dired-mode-map [menu-bar sort entire-date] - (cons "Sort Entire Buffer by Date" - (function (lambda () (interactive) - (dired-sort-toggle-or-edit 'date))))) - (dired-cache-key dired-sort-menu 'entire-date 'dired-sort-toggle-or-edit - 'universal-argument) - (define-key dired-mode-map [menu-bar sort new-edit] - (cons "Edit Default Switches for Inserted Subdirs..." - (function (lambda () (interactive) (dired-sort-toggle-or-edit 2))))) - (dired-cache-key dired-sort-menu 'new-edit 'dired-sort-toggle-or-edit 2) - (define-key dired-mode-map [menu-bar sort edit] - (cons "Edit Switches for Current Subdir..." - (function (lambda () (interactive) (dired-sort-toggle-or-edit 1))))) - (dired-cache-key dired-sort-menu 'edit 'dired-sort-toggle-or-edit 1) - (define-key dired-mode-map [menu-bar sort show] - (cons "Show Current Switches" - (function (lambda () (interactive) (dired-sort-toggle-or-edit 0))))) - (dired-cache-key dired-sort-menu 'show 'dired-sort-toggle-or-edit 0) - (define-key dired-mode-map [menu-bar sort toggle] - '("Toggle Current Subdir by Name/Date" . dired-sort-toggle-or-edit)) - - ;; Help Menu-bar Menu - - (or dired-help-menu - (setq dired-help-menu - (if (and (boundp 'menu-bar-help-menu) (keymapp menu-bar-help-menu)) - (cons "Help" (cons 'keymap (cdr menu-bar-help-menu))) - (cons "Help" (make-sparse-keymap "Help"))))) - (define-key dired-mode-map [menu-bar dired-help] dired-help-menu) - (define-key dired-mode-map [menu-bar dired-help help-separator] - '("--")) - (define-key dired-mode-map [menu-bar dired-help dired-bug] - '("Report Dired Bug" . dired-report-bug)) - (define-key dired-mode-map [menu-bar dired-help dired-var-apropos] - (cons "Dired Variable Apropos" - (function (lambda () - (interactive) - (let ((current-prefix-arg t)) - (call-interactively 'dired-apropos)))))) - (dired-cache-key dired-help-menu 'dired-var-apropos - 'dired-apropos 'universal-argument) - (define-key dired-mode-map [menu-bar dired-help dired-apropos] - '("Dired Command Apropos" . dired-apropos)) - (define-key dired-mode-map [menu-bar dired-help dired-info] - (cons "Dired Info Manual" - (function (lambda () - (interactive) - (dired-describe-mode t))))) - (dired-cache-key dired-help-menu 'dired-info 'dired-describe-mode - 'universal-argument) - (define-key dired-mode-map [menu-bar dired-help dired-describe-mode] - '("Describe Dired" . dired-describe-mode)) - (define-key dired-mode-map [menu-bar dired-help dired-summary] - '("Dired Summary Help" . dired-summary))) - -(add-hook 'dired-setup-keys-hook 'dired-setup-menus) - -;;; Mouse functions - -(defun dired-mouse-find-file (event) - "In dired, visit the file or directory name you click on." - (interactive "e") - (save-excursion - (set-buffer (window-buffer (posn-window (event-end event)))) - (if dired-subdir-alist - (save-excursion - (goto-char (posn-point (event-end event))) - (dired-find-file)) - (error - (concat "dired-subdir-alist seems to be mangled. " - (substitute-command-keys - "\\Try dired-revert (\\[dired-revert]).")))))) - -(defun dired-mouse-mark (event) - "In dired, mark the file name that you click on. -If the file name is already marked, this unmarks it." - (interactive "e") - (save-excursion - (set-buffer (window-buffer (posn-window (event-end event)))) - (if dired-subdir-alist - (save-excursion - (goto-char (posn-point (event-end event))) - (beginning-of-line) - (if (looking-at dired-re-mark) - (dired-unmark 1) - (dired-mark 1))) - (error - (concat "dired-subdir-alist seems to be mangled. " - (substitute-command-keys - "\\Try dired-revert (\\[dired-revert]).")))))) - -(defun dired-mouse-flag (event) - "In dired, flag for deletion the file name that you click on. -If the file name is already flag, this unflags it." - (interactive "e") - (save-excursion - (set-buffer (window-buffer (posn-window (event-end event)))) - (if dired-subdir-alist - (save-excursion - (goto-char (posn-point (event-end event))) - (beginning-of-line) - (if (char-equal (following-char) dired-del-marker) - (dired-unflag 1) - (dired-flag-file-deletion 1))) - (error - (concat "dired-subdir-alist seems to be mangled. " - (substitute-command-keys - "\\Try dired-revert (\\[dired-revert]).")))))) - -(defun dired-mouse-get-target (event) - "In dired, put a copy of the selected directory in the active minibuffer." - (interactive "e") - (let ((obuff (current-buffer)) - mb) - (set-buffer (window-buffer (posn-window (event-end event)))) - (if (and dired-subdir-alist (setq mb (dired-get-active-minibuffer-window))) - (let (dir) - (goto-char (posn-point (event-end event))) - (setq dir (dired-current-directory)) - (select-window mb) - (set-buffer (window-buffer mb)) - (erase-buffer) - (insert dir)) - (set-buffer obuff) - (if mb - (error "No directory specified") - (error "No active minibuffer"))))) - -(defun dired-visit-popup-menu (event) - "Popup a menu to visit the moused file." - (interactive "e") - (save-excursion - (set-buffer (window-buffer (posn-window (event-end event)))) - (save-excursion - (goto-char (posn-point (event-end event))) - (dired-visit-popup-menu-internal event)))) - -(defun dired-visit-popup-menu-internal (event) - (interactive "e") - (let ((fn (dired-get-filename 'no-dir)) - fun) - (dired-remove-text-properties 0 (length fn) fn) - (setq fun (x-popup-menu - event - (list "Visit popup menu" - (cons - (concat "Visit " fn " with") - dired-visit-popup-menu)))) - (if fun (funcall fun)))) - -(defun dired-do-popup-menu (event) - ;; Pop up a menu do an operation on the moused file. - (interactive "e") - (let ((obuff (current-buffer))) - (unwind-protect - (progn - (set-buffer (window-buffer (posn-window (event-end event)))) - (dired-save-excursion - (goto-char (posn-point (event-end event))) - (dired-do-popup-menu-internal event))) - (set-buffer obuff)))) - -(defun dired-do-popup-menu-internal (event) - (interactive "e") - (let ((fn (dired-get-filename 'no-dir)) - fun) - (dired-remove-text-properties 0 (length fn) fn) - (setq fun (x-popup-menu - event - (list "Do popup menu" - (cons - (concat "Do operation on " fn) - dired-do-popup-menu)))) - (dired-save-excursion - (if fun (let ((current-prefix-arg 1)) - (call-interactively fun)))))) - -;;; Key maps - -;; Get rid of the Edit menu bar item to save space. -(define-key dired-mode-map [menu-bar edit] 'undefined) -;; We have our own help item -(define-key dired-mode-map [menu-bar help] 'undefined) -(define-key dired-mode-map [mouse-2] 'dired-mouse-find-file) -(define-key dired-mode-map [S-mouse-1] 'dired-mouse-mark) -(define-key dired-mode-map [C-S-mouse-1] 'dired-mouse-flag) -(define-key dired-mode-map [down-mouse-3] 'dired-visit-popup-menu) -;; This can be useful in dired, so move to double click. -(define-key dired-mode-map [double-mouse-3] 'mouse-save-then-kill) -(define-key dired-mode-map [C-down-mouse-2] 'dired-do-popup-menu) -(define-key dired-mode-map [M-mouse-2] 'dired-mouse-get-target) - -(or (memq 'dired-help menu-bar-final-items) - (setq menu-bar-final-items (cons 'dired-help menu-bar-final-items))) - -;;; end of dired-fsf.el diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-grep.el --- a/lisp/efs/dired-grep.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-grep.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: dired-grep.el ;; RCS: -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; Description: Support for running grep on marked files in a dired buffer. ;; Author: Sandy Rutherford ;; Created: Tue Jul 13 22:59:37 1993 by sandy on ibm550 diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-help.el --- a/lisp/efs/dired-help.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-help.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-help.el -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: Obtaining help for dired ;; Modified: Sun Nov 20 21:10:47 1994 by sandy on gandalf diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-mob.el --- a/lisp/efs/dired-mob.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-mob.el Mon Aug 13 09:23:06 2007 +0200 @@ -2,7 +2,7 @@ ;; ;; File: dired-mob.el ;; RCS: -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; Description: Commands for marking files from another buffer. ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-mule.el --- a/lisp/efs/dired-mule.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-mule.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-mule.el -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: MULE support for dired. ;; Created: Sun Jul 17 14:45:12 1994 by sandy on ibm550 diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-oas.el --- a/lisp/efs/dired-oas.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-oas.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-oas.el -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: dired odds and sods. Dired functions not usually needed. ;; This file is not a reference to the Organization of diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-rgxp.el --- a/lisp/efs/dired-rgxp.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-rgxp.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-rgxp.el -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: Commands for running commands on files whose names ;; match a regular expression. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-sex.el --- a/lisp/efs/dired-sex.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-sex.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-sex.el -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: Marking files according to sexpressions. Sorry. ;; Created: Wed Sep 14 01:30:43 1994 by sandy on ibm550 diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-shell.el --- a/lisp/efs/dired-shell.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-shell.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-shell.el -;; Dired Version: $Revision: 1.2 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: Commands for running shell commands on marked files. ;; diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-uu.el --- a/lisp/efs/dired-uu.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-uu.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-uu.el -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: Commands for uuencoding/uudecoding marked files. ;; Author: Sandy Rutherford diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-vir.el --- a/lisp/efs/dired-vir.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-vir.el Mon Aug 13 09:23:06 2007 +0200 @@ -2,7 +2,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-vir.el -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: Virtual dired mode for browsing ls -lR listings. ;; Author: Sebastian Kremer diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-xemacs.el --- a/lisp/efs/dired-xemacs.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-xemacs.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-xemacs.el -;; Dired Version: $Revision: 1.3 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: dired functions for XEmacs ;; Author: Mike Sperber @@ -45,11 +45,11 @@ "-[-r][-w][-x][-r][-w][sS][-r][-w][xst]") "setgid plain file (even if not executable)") -(defvar dired-re-pre-permissions "^.? ?[0-9 ]*[-d]" +(defvar dired-re-pre-permissions "^[^-d]? ?[0-9 ]*[-d]" "Regexp matching the preamble to file permissions part of a dired line. This shouldn't match socket or symbolic link lines (which aren't editable).") -(defvar dired-re-permissions "[-r][-w][-Ssx][-r][-w][-Ssx][-r][-w][-xst]" +(defvar dired-re-permissions "[-r][-w][-Ssx][-r][-w][-Ssx][-r][-w][-xstT]" "Regexp matching the file permissions part of a dired line.") ;;; Setup @@ -690,10 +690,10 @@ (setq dired-u-r-keymap (dired-setup-chmod-keymap ?u ?r '(?r)) dired-u-w-keymap (dired-setup-chmod-keymap ?u ?w '(?w)) - dired-u-x-keymap (dired-setup-chmod-keymap ?u ?x '(?x ?s ?S) '(?x)) + dired-u-x-keymap (dired-setup-chmod-keymap ?u ?x '(?x ?s) '(?x)) dired-g-r-keymap (dired-setup-chmod-keymap ?g ?r '(?r)) dired-g-w-keymap (dired-setup-chmod-keymap ?g ?w '(?w)) - dired-g-x-keymap (dired-setup-chmod-keymap ?g ?x '(?x ?s ?S) '(?x)) + dired-g-x-keymap (dired-setup-chmod-keymap ?g ?x '(?x ?s) '(?x)) dired-o-r-keymap (dired-setup-chmod-keymap ?o ?r '(?r)) dired-o-w-keymap (dired-setup-chmod-keymap ?o ?w '(?w)) dired-o-x-keymap (dired-setup-chmod-keymap ?o ?x '(?x ?s ?t) '(?x)))) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired-xy.el --- a/lisp/efs/dired-xy.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired-xy.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,7 +1,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; File: dired-xy.el -;; Dired Version: $Revision: 1.1 $ +;; Dired Version: #Revision: 7.9 $ ;; RCS: ;; Description: Commands for reading mail from dired. ;; diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/dired.el --- a/lisp/efs/dired.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/dired.el Mon Aug 13 09:23:06 2007 +0200 @@ -5,7 +5,7 @@ ;; ;; File: dired.el ;; RCS: -;; Dired Version: $Revision: 1.4 $ +;; Dired Version: #Revision: 7.9 $ ;; Description: The DIRectory EDitor is for manipulating, and running ;; commands on files in a directory. ;; Authors: FSF, @@ -36,7 +36,7 @@ ;;; Dired Version -(defconst dired-version (substring "$Revision: 1.4 $" 11 -2) +(defconst dired-version (substring "#Revision: 7.9 $" 11 -2) "The revision number of Tree Dired (as a string). Don't forget to mention this when reporting bugs to: @@ -5719,7 +5719,10 @@ (function (lambda (x) (and (not (eq (current-buffer) (cdr x))) x))) - dired-buffers)))) + dired-buffers))) + ;; If there are no more dired buffers, we are no longer needed in the + ;; file-name-handler-alist. + (or dired-buffers (dired-remove-from-file-name-handler-alist))) (defun dired-fun-in-all-buffers (directory fun &rest args) ;; In all buffers dired'ing DIRECTORY, run FUN with ARGS. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-auto.el --- a/lisp/efs/efs-auto.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-auto.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,11 +3,12 @@ ;; ;; File: efs-auto.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.7 $ ;; RCS: ;; Description: Simple way of autoloading efs ;; Author: Andy Norman, Dawn ;; Created: Thu Sep 24 09:50:08 1992 +;; Modified: Sun Nov 27 11:45:28 1994 by sandy on gandalf ;; Language: Emacs-Lisp ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -16,7 +17,7 @@ ;;; (it's copylefted) and warrranty (there isn't one) information. ;;; Provides a way of autoloading efs. To use this, just put -;;; (require 'efs-auto in your .emacs file. +;;; (require 'efs-auto) in your .emacs file. ;;; ;;; The Bad News: ;;; @@ -36,7 +37,7 @@ (defconst efs-auto-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.7 $" 11 -2))) ;;; Interactive functions that should be accessible from here. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-cms-knet.el --- a/lisp/efs/efs-cms-knet.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-cms-knet.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-cms-knet.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: CMS support for efs using KNET/VM server ;; Authors: Sandy Rutherford @@ -23,7 +23,7 @@ (defconst efs-cms-knet-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;;;; ------------------------------------------------------------ ;;;; CMS support for KNET-VM server diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-cms.el --- a/lisp/efs/efs-cms.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-cms.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-cms.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.9 $ ;; RCS: ;; Description: CMS support for efs ;; Author: Sandy Rutherford @@ -22,7 +22,7 @@ (defconst efs-cms-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.9 $" 11 -2))) ;;;; ------------------------------------------------------------ ;;;; CMS support diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-coke.el --- a/lisp/efs/efs-coke.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-coke.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-coke.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Coke Machine support for efs ;; Author: Sandy Rutherford @@ -22,7 +22,7 @@ (defconst efs-coke-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;;;; ------------------------------------------------------------ ;;;; Coke Machine support diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-cp-p.el --- a/lisp/efs/efs-cp-p.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-cp-p.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-cp-p.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Support for preserving file modtimes with copies. i.e. cp -p ;; Author: Sandy Rutherford @@ -24,7 +24,7 @@ (defconst efs-cp-p-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) (defvar efs-local-timezone nil) ;; cache. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-cu.el --- a/lisp/efs/efs-cu.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-cu.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-cu.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.4 $ +;; Version: #Revision: 1.12 $ ;; RCS: ;; Description: Common utilities needed by efs files. ;; Author: Sandy Rutherford @@ -55,7 +55,7 @@ (defconst efs-cu-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.4 $" 11 -2))) + (substring "#Revision: 1.12 $" 11 -2))) (defconst efs-case-insensitive-host-types '(vms cms mts ti-twenex ti-explorer dos mvs tops-20 mpe ka9q dos-distinct @@ -359,6 +359,7 @@ (user-login-name)))) (efs-set-user host user))))) +;;;###autoload (defun efs-ftp-path (path) "Parse PATH according to efs-path-regexp. Returns a list (HOST USER PATH), or nil if PATH does not match the format." diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-defun.el --- a/lisp/efs/efs-defun.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-defun.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-defun.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: efs-defun allows for OS-dependent coding of functions ;; Author: Sandy Rutherford @@ -136,7 +136,7 @@ (defconst efs-defun-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) (defconst efs-key-obarray (make-vector 7 0)) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-dired-mule.el --- a/lisp/efs/efs-dired-mule.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-dired-mule.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-dired.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Makes efs-dired.el work with MULE. ;; Author: Ishikawa Ichiro @@ -16,7 +16,7 @@ (defconst efs-dired-mule-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;; Keep the byte-compiler happy (defvar efs-version-host-types) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-dired.el --- a/lisp/efs/efs-dired.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-dired.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-dired.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.3 $ +;; Version: #Revision: 1.31 $ ;; RCS: ;; Description: Extends much of Dired to work under efs. ;; Authors: Sebastian Kremer , @@ -25,7 +25,7 @@ (defconst efs-dired-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.3 $" 11 -2))) + (substring "#Revision: 1.31 $" 11 -2))) ;;;; ---------------------------------------------------------------- ;;;; User Configuration Variables diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-dl.el --- a/lisp/efs/efs-dl.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-dl.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-dl.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.3 $ ;; RCS: ;; Description: Unix descriptive listing support for efs ;; Author: Sandy Rutherford @@ -21,7 +21,7 @@ (defconst efs-dl-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.3 $" 11 -2))) ;;;----------------------------------------------------------------- ;;; Unix descriptive listing (dl) support for efs diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-dos-distinct.el --- a/lisp/efs/efs-dos-distinct.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-dos-distinct.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-dos-distinct.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Distinct's DOS FTP server support for efs ;; Author: Sandy Rutherford @@ -23,7 +23,7 @@ (defconst efs-dos-distinct-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;;;; ----------------------------------------------------------------- ;;;; Distinct's DOS FTP server support for efs diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-dump.el --- a/lisp/efs/efs-dump.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-dump.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-dump.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Install a bare-bones EFS hook into file-name-handler-alist ;; for dumping @@ -11,8 +11,33 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(provide 'efs-dump) + +(defconst efs-dump-version + (concat (substring "$efs release: 1.15 $" 14 -2) + "/" + (substring "#Revision: 1.1 $" 11 -2))) + ;;;###autoload -(setq file-name-handler-alist - (cons - (cons efs-path-root-regexp 'efs-file-handler-function) - file-name-handler-alist)) +(defvar allow-remote-paths t + "*Set this to nil if you don't want remote paths to access +remote files.") + +;;;###autoload +(or (assoc efs-path-root-regexp file-name-handler-alist) + (setq file-name-handler-alist + (cons + (cons efs-path-root-regexp 'remote-path-file-handler-function) + file-name-handler-alist))) + +;;;###autoload +(defun remote-path-file-handler-function (operation &rest args) + "Function to call special file handlers for remote files." + (if allow-remote-paths + (apply 'efs-file-handler-function operation args) + (let ((inhibit-file-name-handlers + (cons 'remote-path-file-handler-function + (and (eq inhibit-file-name-operation operation) + inhibit-file-name-handlers))) + (inhibit-file-name-operation operation)) + (apply operation args)))) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-fnh.el --- a/lisp/efs/efs-fnh.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-fnh.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-fnh.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.3 $ ;; RCS: ;; Description: Look for the emacs version, and install into ;; the file-name-handler-alist @@ -20,7 +20,7 @@ (defconst efs-fnh-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.3 $" 11 -2))) ;;;; ---------------------------------------------------------------- ;;;; Loading emacs version files @@ -96,7 +96,10 @@ (defun efs-root-handler-function (operation &rest args) "Function to handle completion in the root directory." - (let ((handler (get operation 'efs-root))) + (let ((handler (and (if (boundp 'allow-remote-paths) + allow-remote-paths + t) + (get operation 'efs-root)))) (if handler (apply handler args) (let ((inhibit-file-name-handlers @@ -135,7 +138,8 @@ nil) (and (not (memq (cdr x) - '(efs-file-handler-function + '(remote-path-file-handler-function + efs-file-handler-function efs-root-handler-function ange-ftp-hook-function ange-ftp-completion-hook-function))) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-guardian.el --- a/lisp/efs/efs-guardian.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-guardian.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-guardian.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.7 $ ;; RCS: ;; Description: Guardian support for efs ;; Author: Sandy Rutherford @@ -22,7 +22,7 @@ (defconst efs-guardian-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.7 $" 11 -2))) (provide 'efs-guardian) (require 'efs) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-gwp.el --- a/lisp/efs/efs-gwp.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-gwp.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-gwp.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Support for efs to use an interactive gateway. ;; Author: Andy Norman, Dawn @@ -77,7 +77,7 @@ (defconst efs-gwp-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) (defvar efs-gwp-running t) (defvar efs-gwp-status nil) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-hell.el --- a/lisp/efs/efs-hell.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-hell.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-hell.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Hellsoft FTP server support for efs ;; Author: Sandy Rutherford @@ -22,7 +22,7 @@ (defconst efs-hell-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;;;; -------------------------------------------------------------- ;;;; Hellsoft FTP server support for efs diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-ka9q.el --- a/lisp/efs/efs-ka9q.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-ka9q.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-ka9q.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.2 $ ;; RCS: ;; Description: KA9Q support for efs ;; Author: Sandy Rutherford @@ -23,7 +23,7 @@ (defconst efs-ka9q-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.2 $" 11 -2))) ;;;----------------------------------------------------------------- ;;; KA9Q support for efs diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-kerberos.el --- a/lisp/efs/efs-kerberos.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-kerberos.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-kerberos.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.0 $ ;; RCS: ;; Description: Support for Kerberos gateways. ;; Author: Sandy Rutherford @@ -21,7 +21,7 @@ (defconst efs-kerberos-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.0 $" 11 -2))) ;;; Internal Variables diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-l19.11.el --- a/lisp/efs/efs-l19.11.el Mon Aug 13 09:21:56 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,175 +0,0 @@ -;; -*-Emacs-Lisp-*- -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; File: efs-l19.11.el -;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ -;; RCS: -;; Description: efs support for XEemacs, versions 19.11, and later. -;; Author: Sandy Rutherford -;; Created: Tue Aug 2 17:40:32 1994 by sandy on ibm550 -;; Modified: Sun Nov 27 18:34:33 1994 by sandy on gandalf -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(provide 'efs-l19\.11) -(require 'efs-cu) -(require 'default-dir) -(require 'efs-ovwrt) - -(defconst efs-l19\.11-version - (concat (substring "$efs release: 1.15 $" 14 -2) - "/" - (substring "$Revision: 1.1 $" 11 -2))) - -;;; Functions requiring special defs. for these lemacs versions. - -(defun efs-abbreviate-file-name (filename &optional hack-homedir) - ;; lucid emacs version of abbreviate-file-name for remote files. - (let (file-name-handler-alist) - (if (and hack-homedir (efs-ftp-path filename)) - ;; Do replacements from directory-abbrev-alist - (apply 'efs-unexpand-parsed-filename - (efs-ftp-path (abbreviate-file-name filename nil))) - (abbreviate-file-name filename hack-homedir)))) - -(defun efs-relativize-filename (file &optional dir new) - "Abbreviate the given filename relative to DIR . -If DIR is nil, use the value of `default-directory'. If the -optional parameter NEW is given and the non-directory parts match, only return -the directory part of the file." - (let* ((dir (or dir default-directory)) - (dlen (length dir)) - (result file)) - (and (> (length file) dlen) - (string-equal (substring file 0 dlen) dir) - (setq result (substring file dlen))) - (and new - (string-equal (file-name-nondirectory result) - (file-name-nondirectory new)) - (or (setq result (file-name-directory result)) - (setq result "./"))) - (abbreviate-file-name result t))) - -(defun efs-set-buffer-file-name (filename) - ;; Sets the buffer local variables for filename appropriately. - ;; A special function because Lucid and FSF do this differently. - (setq buffer-file-name filename) - (if (and efs-compute-remote-buffer-file-truename - (memq (efs-host-type (car (efs-ftp-path filename))) - efs-unix-host-types)) - (compute-buffer-file-truename) - (setq buffer-file-truename filename))) - -;; Do we need to do anything about compute-buffer-file-truename, or -;; will the handler for file-truename handle this automatically? I suppose -;; that efs-compute-remote-buffer-file-truename should really apply to -;; compute-buffer-file-truename, and not file-truename, but then we would -;; have to do deal with the fact that this function doesn't exist in GNU Emacs. - -;; Only Lucid Emacs has this function. Why do we need both this and -;; set-visited-file-modtime? - -(defun efs-set-buffer-modtime (buffer &optional time) - ;; For buffers visiting remote files, set the buffer modtime. - (or time - (progn - (setq time - (let* ((file (save-excursion - (set-buffer buffer) buffer-file-name)) - (parsed (efs-ftp-path file))) - (efs-get-file-mdtm (car parsed) (nth 1 parsed) - (nth 2 parsed) file))) - (if time - (setq time (cons (car time) (nth 1 time))) - (setq time '(0 . 0))))) - (let (file-name-handler-alist) - (set-buffer-modtime buffer time))) - -;;; Need to add access to the file-name-handler-alist to these functions. - -(defun efs-l19\.11-set-buffer-modtime (buffer &optional time) - "Documented as original" - (let ((handler (save-excursion - (set-buffer buffer) - (and buffer-file-name - (find-file-name-handler buffer-file-name - 'set-buffer-modtime))))) - (if handler - (funcall handler 'set-buffer-modtime buffer time) - (let (file-name-handler-alist) - (efs-real-set-buffer-modtime buffer time))))) - -(efs-overwrite-fn "efs" 'set-buffer-modtime 'efs-l19\.11-set-buffer-modtime) - -(defun efs-l19\.11-backup-buffer () - "Documented as original" - (if buffer-file-name - (let ((handler (find-file-name-handler buffer-file-name 'backup-buffer))) - (if handler - (funcall handler 'backup-buffer) - (let (file-name-handler-alist) - (efs-real-backup-buffer)))))) - -(efs-overwrite-fn "efs" 'backup-buffer 'efs-l19\.11-backup-buffer) - -(defun efs-l19\.11-create-file-buffer (file) - "Documented as original" - (let ((handler (find-file-name-handler file 'create-file-buffer))) - (if handler - (funcall handler 'create-file-buffer file) - (let (file-name-handler-alist) - (efs-real-create-file-buffer file))))) - -(efs-overwrite-fn "efs" 'create-file-buffer 'efs-l19\.11-create-file-buffer) - -(defun efs-l19\.11-abbreviate-file-name (filename &optional hack-homedir) - "Documented as original" - (let ((handler (find-file-name-handler filename 'abbreviate-file-name))) - (if handler - (funcall handler 'abbreviate-file-name filename hack-homedir) - (let (file-name-handler-alist) - (efs-real-abbreviate-file-name filename hack-homedir))))) - -(efs-overwrite-fn "efs" 'abbreviate-file-name - 'efs-l19\.11-abbreviate-file-name) - -(defun efs-l19\.11-recover-file (file) - "Documented as original" - (interactive - (let ((prompt-file buffer-file-name) - (file-name nil) - (file-dir nil)) - (and prompt-file - (setq file-name (file-name-nondirectory prompt-file) - file-dir (file-name-directory prompt-file))) - (list (read-file-name "Recover file: " - file-dir nil nil file-name)))) - (let* ((file (expand-file-name file)) - (handler (or (find-file-name-handler file 'recover-file) - (find-file-name-handler - (let ((buffer-file-name file)) - (make-auto-save-file-name)) - 'recover-file)))) - (if handler - (funcall handler 'recover-file file) - (efs-real-recover-file file)))) - -(efs-overwrite-fn "efs" 'recover-file 'efs-l19\.11-recover-file) - -(defun efs-l19\.11-substitute-in-file-name (filename) - "Documented as original." - (let ((handler (find-file-name-handler filename 'substitute-in-file-name))) - (if handler - (funcall handler 'substitute-in-file-name filename) - (let (file-name-handler-alist) - (efs-real-substitute-in-file-name filename))))) - -(efs-overwrite-fn "efs" 'substitute-in-file-name - 'efs-l19\.11-substitute-in-file-name) - -;;; For the file-name-handler-alist - -(put 'set-buffer-modtime 'efs 'efs-set-buffer-modtime) - -;;; end of efs-l19.11.el diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-mpe.el --- a/lisp/efs/efs-mpe.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-mpe.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-mpe.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.8 $ ;; RCS: ;; Description: MPE (HP3000) support for efs. ;; Author: (Corny de Souza) cdesouza@hpbbn.bbn.hp.com @@ -125,7 +125,7 @@ (defconst efs-mpe-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.8 $" 11 -2))) ;;; Support for build parameters diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-ms-unix.el --- a/lisp/efs/efs-ms-unix.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-ms-unix.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-ms-unix.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: efs support for the Microsoft PC FTP server in unix mode. ;; Author: Sandy Rutherford @@ -19,7 +19,7 @@ (defconst efs-ms-unix-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) (defvar efs-ms-unix-month-and-time-regexp (concat diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-mts.el --- a/lisp/efs/efs-mts.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-mts.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-mts.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: MTS support for efs ;; Author: Sandy Rutherford @@ -22,7 +22,7 @@ (defconst efs-mts-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;;;; ------------------------------------------------------------ ;;;; MTS support diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-mvs.el --- a/lisp/efs/efs-mvs.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-mvs.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-mvs.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.4 $ ;; RCS: ;; Description: MVS support for efs ;; Author: Sandy Rutherford @@ -26,7 +26,7 @@ (defconst efs-mvs-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.4 $" 11 -2))) ;; What's the MVS character set for valid partitioned data sets? ;; I'll guess [-A-Z0-9_$+] diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-netrc.el --- a/lisp/efs/efs-netrc.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-netrc.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-netrc.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.2 $ ;; RCS: ;; Description: Parses ~/.netrc file, and does completion in /. ;; Author: Sandy Rutherford @@ -32,7 +32,7 @@ (defconst efs-netrc-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.2 $" 11 -2))) ;; Make the byte compiler happy. (defvar dired-directory) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-netware.el --- a/lisp/efs/efs-netware.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-netware.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-netware.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.5 $ ;; RCS: ;; Description: efs support for the Novell Netware FTP server ;; Author: Sandy Rutherford @@ -24,7 +24,7 @@ (defconst efs-netware-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.5 $" 11 -2))) ;;; Basic efs support diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-nos-ve.el --- a/lisp/efs/efs-nos-ve.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-nos-ve.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-nos-ve.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.2 $ ;; RCS: ;; Description: efs support for NOS/VE ;; Authors: Sandy Rutherford @@ -26,7 +26,7 @@ (defconst efs-nos-ve-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.2 $" 11 -2))) ;;;;--------------------------------------------------------------- ;;;; NOS/VE support for efs diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-ovwrt.el --- a/lisp/efs/efs-ovwrt.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-ovwrt.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-ovwrt.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.2 $ ;; RCS: ;; Description: Utilities for overwriting functions with new definitions. ;; Author: Andy Norman @@ -15,11 +15,15 @@ ;;; makes it easier for other programs to require them. (provide 'efs-ovwrt) +(eval-when-compile + (condition-case nil + (require 'advice) + (error))) (defconst efs-ovwrt-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.2 $" 11 -2))) (defvar efs-overwrite-fmt "Note: This function has been modified to work with %s.") diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-pc.el --- a/lisp/efs/efs-pc.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-pc.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-pc.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: PC support for efs ;; Author: Sandy Rutherford @@ -31,7 +31,7 @@ (defconst efs-pc-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;;;----------------------------------------------------------------- ;;; PC support for efs diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-plan9.el --- a/lisp/efs/efs-plan9.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-plan9.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-plan9.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: efs support for the Plan 9 FTP Server ;; Author: Sandy Rutherford @@ -24,7 +24,7 @@ (defconst efs-plan9-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) (efs-defun efs-fix-dir-path plan9 (dir-path) ;; Convert DIR-PATH from UN*X-ish to Plan 9. Does nothing actually. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-report.el --- a/lisp/efs/efs-report.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-report.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-report.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.9 $ ;; RCS: ;; Description: Function to report efs bugs in a usable way. ;; Author: Andy Norman, Dawn @@ -22,7 +22,7 @@ (defconst efs-report-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.9 $" 11 -2))) (defconst efs-report-salutations ["Dear bug team:" diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-ti-explorer.el --- a/lisp/efs/efs-ti-explorer.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-ti-explorer.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-ti-explorer.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Explorer support for efs ;; Author: Jamie Zawinski @@ -22,7 +22,7 @@ (defconst efs-ti-explorer-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;;;; ------------------------------------------------------------ ;;;; Explorer support. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-ti-twenex.el --- a/lisp/efs/efs-ti-twenex.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-ti-twenex.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-ti-twenex.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Support for a TI lisp machine in Twenex emulation mode. ;; Author: Jamie Zawinski @@ -22,7 +22,7 @@ (defconst efs-ti-twenex-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;;;; ------------------------------------------------------------ ;;;; Twenex support. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-tops-20.el --- a/lisp/efs/efs-tops-20.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-tops-20.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-tops-20.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.2 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: TOPS-20 support for efs ;; Author: Sandy Rutherford @@ -22,7 +22,7 @@ (defconst efs-tops-20-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.2 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;;;; ------------------------------------------------------------ ;;;; TOPS-20 support diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-vm.el --- a/lisp/efs/efs-vm.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-vm.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-vm.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Allows the VM mail reader to access folders using efs. ;; If you are looking for support for VM/CMS, see efs-cms.el. @@ -75,7 +75,7 @@ (defconst efs-vm-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) (defun efs-vm-get-new-mail (&optional arg) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-vms.el --- a/lisp/efs/efs-vms.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-vms.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-vms.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.13 $ ;; RCS: ;; Description: VMS support for efs ;; Authors: Andy Norman, Joe Wells, Sandy Rutherford @@ -20,7 +20,7 @@ (defconst efs-vms-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.13 $" 11 -2))) ;;;; ------------------------------------------------------------ ;;;; VMS support. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-vos.el --- a/lisp/efs/efs-vos.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-vos.el Mon Aug 13 09:23:06 2007 +0200 @@ -4,7 +4,7 @@ ;; File: efs-vos.el ;; Description: VOS support for efs ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Author: Sandy Rutherford ;; Created: Sat Apr 3 03:05:00 1993 by sandy on ibm550 @@ -27,7 +27,7 @@ (defconst efs-vos-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.1 $" 11 -2))) + (substring "#Revision: 1.1 $" 11 -2))) ;;;;--------------------------------------------------------------- ;;;; VOS support for efs diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs-x19.15.el --- a/lisp/efs/efs-x19.15.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs-x19.15.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs-x19.15.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.3 $ +;; Version: #Revision: 1.2 $ ;; RCS: ;; Description: efs support for XEmacs, versions 19.15, and later. ;; Author: Sandy Rutherford @@ -18,7 +18,7 @@ (defconst efs-x19\.15-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.3 $" 11 -2))) + (substring "#Revision: 1.2 $" 11 -2))) ;;; Functions requiring special defs. for these XEmacs versions. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/efs.el --- a/lisp/efs/efs.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/efs.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: efs.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.4 $ +;; Version: #Revision: 1.56 $ ;; RCS: ;; Description: Transparent FTP support for the original GNU Emacs ;; from FSF and Lucid Emacs @@ -902,7 +902,7 @@ ;;; efs|Andy Norman and Sandy Rutherford ;;; |ange@hplb.hpl.hp.com and sandy@ibm550.sissa.it ;;; |transparent FTP Support for GNU Emacs -;;; |$Date: 1997/03/22 06:01:58 $|$efs release: 1.15 beta $| +;;; |$Date: 1997/03/28 02:28:27 $|$efs release: 1.15 beta $| ;;; Host and listing type notation: ;;; @@ -1049,7 +1049,7 @@ (defconst efs-version (concat (substring "$efs release: 1.15 $" 14 -2) "/" - (substring "$Revision: 1.4 $" 11 -2))) + (substring "#Revision: 1.56 $" 11 -2))) (defconst efs-time-zero 1970) ; we count time from midnight, Jan 1, 1970 GMT. @@ -3235,8 +3235,9 @@ (if efs-ftp-activity-function (funcall efs-ftp-activity-function num)))) +;;;###autoload (defun efs-display-ftp-activity () - "Displays the number of active background ftp sessions. + "Displays the number of active background ftp sessions in the modeline. Uses the variable `efs-mode-line-format' to determine how this will be displayed." (interactive) @@ -7841,7 +7842,7 @@ ;;; Getting directory listings. -(defun efs-directory-files (directory &optional full match nosort) +(defun efs-directory-files (directory &optional full match nosort &rest ignored-for-now) ;; Returns directory-files for remote directories. ;; NOSORT is a V19 arg. (let* ((directory (expand-file-name directory)) @@ -10730,7 +10731,10 @@ ;;;###autoload (defun efs-file-handler-function (operation &rest args) "Function to call special file handlers for remote files." - (let ((handler (get operation 'efs))) + (let ((handler (and (if (boundp 'allow-remote-paths) + allow-remote-paths + t) + (get operation 'efs)))) (if handler (apply handler args) (let ((inhibit-file-name-handlers @@ -10742,7 +10746,10 @@ (defun efs-sifn-handler-function (operation &rest args) ;; Handler function for substitute-in-file-name - (if (eq operation 'substitute-in-file-name) + (if (and (if (boundp 'allow-remote-paths) + allow-remote-paths + t) + (eq operation 'substitute-in-file-name)) (apply 'efs-substitute-in-file-name args) (let ((inhibit-file-name-handlers (cons 'efs-sifn-handler-function diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/emacs-19.el --- a/lisp/efs/emacs-19.el Mon Aug 13 09:21:56 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,484 +0,0 @@ -;;;; Emacs 19 compatibility functions for use in Emacs 18. -;;;; Based on: $Id: emacs-19.el,v 1.1 1997/02/11 05:05:14 steve Exp $ -;;;; -;;;; Rewritten by sandy@ibm550.sissa.it after gnu emacs 19 was -;;;; released to make it closer to V19. -;;;; Last modified: Sun Jun 12 00:06:06 1994 by sandy on ibm550 - -;;; This program is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 1, or (at your option) -;;; any later version. -;;; -;;; This program is distributed in the hope that it will be useful, -;;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; A copy of the GNU General Public License can be obtained from this -;;; program's author (send electronic mail to roland@ai.mit.edu) or from -;;; the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA -;;; 02139, USA. - -;; These functions are used in dired.el, but are also of general -;; interest, so you may want to add this to your .emacs: -;; -;; (autoload 'make-directory "emacs-19" "Make a directory." t) -;; (autoload 'delete-directory "emacs-19" "Remove a directory." t) -;; (autoload 'member "emacs-19" "Like memq, but uses `equal' instead of `eq'.") -;; (autoload 'compiled-function-p "emacs-19" "Emacs 18 doesn't have these.") - -(provide 'emacs-19) - -;;; Variables - -(defvar insert-directory-program "ls" - "Absolute or relative name of the `ls' program used by `insert-directory'.") - -(defvar bv-length) ; make the byte compiler a happy camper - -(defconst directory-abbrev-alist - nil - "*Alist of abbreviations for file directories. -A list of elements of the form (FROM . TO), each meaning to replace -FROM with TO when it appears in a directory name. This replacement is -done when setting up the default directory of a newly visited file. -*Every* FROM string should start with `^'. - -Use this feature when you have directories which you normally refer to -via absolute symbolic links. Make TO the name of the link, and FROM -the name it is linked to.") - -(defconst automount-dir-prefix "^/tmp_mnt/" - "Regexp to match the automounter prefix in a directory name.") - -(defvar abbreviated-home-dir nil - "The the user's homedir abbreviated according to `directory-abbrev-list'.") - -;;; Autoloads - -(autoload 'diff "diff" "Diff two files." t) -(autoload 'diff-backup "diff" "Diff a file with its most recent backup.") - -;;; Functions which are subroutines in Emacs 19. - -;; Provide a non-working version of find-file-name-handler. -;; If you want it to work, require 'fn-handler. - -(or (fboundp 'find-file-name-handler) (fset 'find-file-name-handler 'ignore)) -(or (boundp 'file-name-handler-alist) (defvar file-name-handler-alist nil)) - -;; The name of buffer-flush-undo has changed in V19. -(fset 'buffer-disable-undo 'buffer-flush-undo) - -(defun current-time () - "Returns the number of seconds since midnight. -A poor man's version of the the function `current-time' in emacs 19." - (let ((string (current-time-string))) - (list - 0 - (+ (* 3600 (string-to-int (substring string 11 13))) - (* 60 (string-to-int (substring string 14 16))) - (string-to-int (substring string 17 19))) - 0))) - -;; call-process below may lose if filename starts with a `-', but I -;; fear not all mkdir or rmdir implementations understand `--'. - -(defun delete-directory (fn) - "Delete a directory. -This is a subr in Emacs 19." - (interactive - (list (read-file-name "Delete directory: " nil nil 'confirm))) - (setq fn (expand-file-name fn)) - (if (file-directory-p fn) - (call-process "rmdir" nil nil nil fn) - (error "Not a directory: %s" fn)) - (if (file-exists-p fn) - (error "Could not remove directory %s" fn))) - -(defun make-directory (dir &optional parents) - "Create the directory DIR and any nonexistent parent dirs." - (interactive "FMake directory: \nP") - (if (not parents) - (make-directory-internal dir) - (let ((dir (directory-file-name (expand-file-name dir))) - create-list) - (while (not (file-exists-p dir)) - (setq create-list (cons dir create-list) - dir (directory-file-name (file-name-directory dir)))) - (while create-list - (make-directory-internal (car create-list)) - (setq create-list (cdr create-list)))))) - -(defun make-directory-internal (fn) - ;; This is a subroutine in emacs 19. - (let* ((fn (expand-file-name fn)) - (handler (find-file-name-handler fn 'make-directory-internal))) - (if handler - (funcall handler 'make-directory-internal fn) - (setq fn (directory-file-name fn)) - (if (file-exists-p fn) - (error "Cannot make directory %s: file already exists" fn) - (call-process "mkdir" nil nil nil fn)) - (or (file-directory-p fn) - (error "Could not make directory %s" fn))))) - -(defun kill-new (string) - "Save STRING as if killed in a buffer." - (setq kill-ring (cons string kill-ring)) - (if (> (length kill-ring) kill-ring-max) - (setcdr (nthcdr (1- kill-ring-max) kill-ring) nil)) - (setq kill-ring-yank-pointer kill-ring)) - -(defun insert-directory (file switches &optional wildcard full-directory-p) - "Insert directory listing for FILE, formatted according to SWITCHES. -Leaves point after the inserted text. -SWITCHES may be a string of options, or a list of strings. -Optional third arg WILDCARD means treat FILE as shell wildcard. -Optional fourth arg FULL-DIRECTORY-P means file is a directory and -switches do not contain `d', so that a full listing is expected. - -This works by running a directory listing program -whose name is in the variable `insert-directory-program'. -If WILDCARD, it also runs the shell specified by `shell-file-name'." - ;; We need the directory in order to find the right handler. - (let ((handler (find-file-name-handler (expand-file-name file) - 'insert-directory))) - (if handler - (funcall handler 'insert-directory file switches - wildcard full-directory-p) - (if (eq system-type 'vax-vms) - (vms-read-directory file switches (current-buffer)) - (if wildcard - ;; Run ls in the directory of the file pattern we asked for. - (let ((default-directory - (if (file-name-absolute-p file) - (file-name-directory file) - (file-name-directory (expand-file-name file)))) - (pattern (file-name-nondirectory file)) - (beg 0)) - ;; Quote some characters that have special meanings in shells; - ;; but don't quote the wildcards--we want them to be special. - ;; We also currently don't quote the quoting characters - ;; in case people want to use them explicitly to quote - ;; wildcard characters. - (while (string-match "[ \t\n;<>&|()#$]" pattern beg) - (setq pattern - (concat (substring pattern 0 (match-beginning 0)) - "\\" - (substring pattern (match-beginning 0))) - beg (1+ (match-end 0)))) - (call-process shell-file-name nil t nil - "-c" (concat insert-directory-program - " -d " - (if (stringp switches) - switches - (mapconcat 'identity switches " ")) - " " - pattern))) - ;; SunOS 4.1.3, SVr4 and others need the "." to list the - ;; directory if FILE is a symbolic link. - (apply 'call-process - insert-directory-program nil t nil - (let (list) - (if (listp switches) - (setq list switches) - (if (not (equal switches "")) - (progn - ;; Split the switches at any spaces - ;; so we can pass separate options as separate args. - (while (string-match " " switches) - (setq list (cons (substring switches 0 - (match-beginning 0)) - list) - switches (substring switches - (match-end 0)))) - (setq list (cons switches list))))) - (append list - (list - (if full-directory-p - (concat (file-name-as-directory file) ".") - file)))))))))) - -(defun file-local-copy (file) - "Copy the file FILE into a temporary file on this machine. -Returns the name of the local copy, or nil, if FILE is directly -accessible." - (let* ((file (expand-file-name file)) - (handler (find-file-name-handler file 'file-local-copy))) - ;; Does nothing, if no handler. - (if handler - (funcall handler 'file-local-copy file)))) - -(defun file-truename (filename) - "Return the truename of FILENAME, which should be absolute. -The truename of a file name is found by chasing symbolic links -both at the level of the file and at the level of the directories -containing it, until no links are left at any level." - (if (or (string= filename "~") - (and (string= (substring filename 0 1) "~") - (string-match "~[^/]*" filename))) - (progn - (setq filename (expand-file-name filename)) - (if (string= filename "") - (setq filename "/")))) - (let ((handler (find-file-name-handler filename 'file-truename))) - ;; For file name that has a special handler, call handler. - ;; This is so that ange-ftp can save time by doing a no-op. - (if handler - (funcall handler 'file-truename filename) - (let ((dir (file-name-directory filename)) - target dirfile file-name-handler-alist) - ;; Get the truename of the directory. - (setq dirfile (directory-file-name dir)) - ;; If these are equal, we have the (or a) root directory. - (or (string= dir dirfile) - (setq dir (file-name-as-directory (file-truename dirfile)))) - (if (equal ".." (file-name-nondirectory filename)) - (directory-file-name (file-name-directory - (directory-file-name dir))) - (if (equal "." (file-name-nondirectory filename)) - (directory-file-name dir) - ;; Put it back on the file name. - (setq filename (concat dir (file-name-nondirectory filename))) - ;; Is the file name the name of a link? - (setq target (file-symlink-p filename)) - (if target - ;; Yes => chase that link, then start all over - ;; since the link may point to a directory name that uses links. - ;; We can't safely use expand-file-name here - ;; since target might look like foo/../bar where foo - ;; is itself a link. Instead, we handle . and .. above. - (if (file-name-absolute-p target) - (file-truename target) - (file-truename (concat dir target))) - ;; No, we are done! - filename))))))) - -(defun generate-new-buffer-name (name) - "Return a string which is the name of no existing buffer based on -NAME. If there is no live buffer named NAME, return NAME. Otherwise, -modify name by appending `', incrementing NUMBER until an -unused name is found. Return that name." - (if (get-buffer name) - (let ((num 2) - attempt) - (while (progn - (setq attempt (concat name "<" (int-to-string num) ">")) - (get-buffer attempt)) - (setq num (1+ num))) - attempt) - name)) - -(defun abbreviate-file-name (filename) - "Return a version of FILENAME shortened using `directory-abbrev-alist'. -This also substitutes \"~\" for the user's home directory. -Type \\[describe-variable] directory-abbrev-alist RET for more information." - ;; Get rid of the prefixes added by the automounter. - (if (and (string-match automount-dir-prefix filename) - (file-exists-p (file-name-directory - (substring filename (1- (match-end 0)))))) - (setq filename (substring filename (1- (match-end 0))))) - (let ((tail directory-abbrev-alist)) - ;; If any elt of directory-abbrev-alist matches this name, - ;; abbreviate accordingly. - (while tail - (if (string-match (car (car tail)) filename) - (setq filename - (concat (cdr (car tail)) (substring filename (match-end 0))))) - (setq tail (cdr tail))) - ;; Compute and save the abbreviated homedir name. - ;; We defer computing this until the first time it's needed, to - ;; give time for directory-abbrev-alist to be set properly. - (or abbreviated-home-dir - (setq abbreviated-home-dir - (let ((abbreviated-home-dir "$foo")) - (concat "^" (abbreviate-file-name (expand-file-name "~")))))) - ;; If FILENAME starts with the abbreviated homedir, - ;; make it start with `~' instead. - (if (string-match abbreviated-home-dir filename) - (setq filename - (concat "~" - ;; If abbreviated-home-dir ends with a slash, - ;; don't remove the corresponding slash from - ;; filename. On MS-DOS and OS/2, you can have - ;; home directories like "g:/", in which it is - ;; important not to remove the slash. And what - ;; about poor root on Unix systems? - (if (eq ?/ (aref abbreviated-home-dir - (1- (length abbreviated-home-dir)))) - "/" - "") - (substring filename (match-end 0))))) - filename)) - -(defun file-newest-backup (filename) - "Return most recent backup file for FILENAME or nil if no backups exist." - (let* ((filename (expand-file-name filename)) - (file (file-name-nondirectory filename)) - (dir (file-name-directory filename)) - (comp (file-name-all-completions file dir)) - newest) - (while comp - (setq file (concat dir (car comp)) - comp (cdr comp)) - (if (and (backup-file-name-p file) - (or (null newest) (file-newer-than-file-p file newest))) - (setq newest file))) - newest)) - -;; This is used in various files. -;; The usage of bv-length is not very clean, -;; but I can't see a good alternative, -;; so as of now I am leaving it alone. -(defun backup-extract-version (fn) - "Given the name of a numeric backup file, return the backup number. -Uses the free variable `bv-length', whose value should be -the index in the name where the version number begins." - (if (and (string-match "[0-9]+~$" fn bv-length) - (= (match-beginning 0) bv-length)) - (string-to-int (substring fn bv-length -1)) - 0)) - -;; The standard V18 version of this function doesn't support -;; the arg KEEP-BACKUP-VERSION -(defun file-name-sans-versions (name &optional keep-backup-version) - "Return FILENAME sans backup versions or strings. -This is a separate procedure so your site-init or startup file can -redefine it. -If the optional argument KEEP-BACKUP-VERSION is non-nil, -we do not remove backup version numbers, only true file version numbers." - (let ((handler (find-file-name-handler name 'file-name-sans-versions))) - (if handler - (funcall handler 'file-name-sans-versions name keep-backup-version) - (substring name 0 - (if (eq system-type 'vax-vms) - ;; VMS version number is (a) semicolon, optional - ;; sign, zero or more digits or (b) period, option - ;; sign, zero or more digits, provided this is the - ;; second period encountered outside of the - ;; device/directory part of the file name. - (or (string-match ";[-+]?[0-9]*\\'" name) - (if (string-match "\\.[^]>:]*\\(\\.[-+]?[0-9]*\\)\\'" - name) - (match-beginning 1)) - (length name)) - (if keep-backup-version - (length name) - (or (string-match "\\.~[0-9]+~\\'" name) - (string-match "~\\'" name) - (length name)))))))) - -(defun member (x y) - "Like memq, but uses `equal' for comparison. -This is a subr in Emacs 19." - (while (and y (not (equal x (car y)))) - (setq y (cdr y))) - y) - -(defun compiled-function-p (x) - "Emacs 18 doesn't have these." - nil) - -;; punt -- this will at least allow handlers to work for this. -(defun set-visited-file-modtime (&optional time) - (error "set-visited-file-modtime not defined in emacs 18.")) - -(defun add-hook (hook function &optional append) - "Add to the value of HOOK the function FUNCTION. -FUNCTION is not added if already present. -FUNCTION is added (if necessary) at the beginning of the hook list -unless the optional argument APPEND is non-nil, in which case -FUNCTION is added at the end. - -HOOK should be a symbol, and FUNCTION may be any valid function. If -HOOK is void, it is first set to nil. If HOOK's value is a single -function, it is changed to a list of functions." - (or (boundp hook) (set hook nil)) - ;; If the hook value is a single function, turn it into a list. - (let ((old (symbol-value hook))) - (if (or (not (listp old)) (eq (car old) 'lambda)) - (set hook (list old)))) - (or (if (consp function) - ;; Clever way to tell whether a given lambda-expression - ;; is equal to anything in the hook. - (let ((tail (assoc (cdr function) (symbol-value hook)))) - (equal function tail)) - (memq function (symbol-value hook))) - (set hook - (if append - (nconc (symbol-value hook) (list function)) - (cons function (symbol-value hook)))))) - -;;; after-save.el (Now part of files.el in Gnu Emacs V19) - -;;; Copyright (C) 1990 Roland McGrath -;;; - -(or (fboundp 'real-save-buffer) - (fset 'real-save-buffer (symbol-function 'save-buffer))) - -(defvar after-save-hook nil - "A function or list of functions to be run after saving the current buffer.") - -(defun save-buffer (&optional args) - "Save the current buffer, and then run `after-save-buffer-hook'. -The hooks are only run if the buffer was actually written. -For more documentation, do \\[describe-function] real-save-buffer RET." - (interactive "p") - (let ((modp (buffer-modified-p))) - (real-save-buffer args) - (if modp - (run-hooks 'after-save-hook)))) - -;;; end of after-save - -;;;; -;;;; Correcting for V18 bugs, and hacking around stupidities. -;;;; - -;; The 18.57 version has a bug that causes C-x C-v RET (which usually -;; re-visits the current buffer) to fail on dired buffers. -;; Only the last statement was changed to avoid killing the current -;; buffer. -(defun find-alternate-file (filename) - "Find file FILENAME, select its buffer, kill previous buffer. -If the current buffer now contains an empty file that you just visited -\(presumably by mistake), use this command to visit the file you really want." - (interactive "FFind alternate file: ") - (and (buffer-modified-p) - (not buffer-read-only) - (not (yes-or-no-p (format "Buffer %s is modified; kill anyway? " - (buffer-name)))) - (error "Aborted")) - (let ((obuf (current-buffer)) - (ofile buffer-file-name) - (oname (buffer-name))) - (rename-buffer " **lose**") - (setq buffer-file-name nil) - (unwind-protect - (progn - (unlock-buffer) - (find-file filename)) - (cond ((eq obuf (current-buffer)) - (setq buffer-file-name ofile) - (lock-buffer) - (rename-buffer oname)))) - (or (eq (current-buffer) obuf) - (kill-buffer obuf)))) - -;; At least in Emacs 18.55 this defvar has been forgotten to be copied -;; from lpr.el into loaddefs.el - -(defvar lpr-command (if (eq system-type 'usg-unix-v) - "lp" "lpr") - "Shell command for printing a file") - - -;; buffer-disable-undo used to be called buffer-flush-undo in Emacs -;; 18.55: -(or (fboundp 'buffer-disable-undo) - (fset 'buffer-disable-undo 'buffer-flush-undo)) - -;;; end of emacs-19.el diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/fixup.el --- a/lisp/efs/fixup.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/efs/fixup.el Mon Aug 13 09:23:06 2007 +0200 @@ -3,7 +3,7 @@ ;; ;; File: fixup.el ;; Release: $efs release: 1.15 $ -;; Version: $Revision: 1.1 $ +;; Version: #Revision: 1.1 $ ;; RCS: ;; Description: Fix up the load path for batch byte compilation of efs. ;; Author: Andy Norman, Dawn diff -r f109f7dabbe2 -r 9f59509498e1 lisp/efs/fn-handler.el --- a/lisp/efs/fn-handler.el Mon Aug 13 09:21:56 2007 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,656 +0,0 @@ -;; -*-Emacs-Lisp-*- -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; -;; File: fn-handler.el -;; Description: enhanced file-name-handler-alist support for pre-19.23 Emacs -;; Author: Sandy Rutherford -;; Created: Sat Mar 19 00:50:10 1994 by sandy on ibm550 -;; Modified: Tue Sep 13 20:59:19 1994 by sandy on ibm550 -;; Language: Emacs-Lisp -;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - -;;; One of the problems with the file-name-handler-alist, is that when -;;; a handler gets called, and it has nothing to do for that function, -;;; the usual procedure is to remove the handler from the alist, and -;;; re-call the function. This is necessary to avoid an infinite -;;; recursion. However, if the function calling -;;; find-file-name-handler is not a primitive, there may be other lisp -;;; functions inside of it for which the handler does have some -;;; special actions specified. They won't run, because the let-bound -;;; value of file-name-handler-alist doesn't contain the handler. -;;; -;;; This problem was solved in Emacs 19.23 with the variables -;;; inhibit-file-name-handlers and inhibit-file-name-operation -;;; This file provides this solution to older versions of emacs. - - -(provide 'fn-handler) -(require 'efs-ovwrt) - -(or (boundp 'file-name-handler-alist) - (defvar file-name-handler-alist nil - "Association list of regexps for special file names and handlers.")) - -(defvar inhibit-file-name-handlers nil - "List of handlers \(symbols\) to be avoided by `find-file-name-handler'.") - -(defvar inhibit-file-name-operation nil - "Defines to which operation `inhibit-file-name-handlers applies' -Must be a synbol.") - -(defun find-file-name-handler (filename &optional operation) - "Return FILENAME1's handler function, if its syntax is handled specially. -Does not return handlers in `inhibit-file-name-handlers' list. -If there is no handler for FILENAME1, searches for one for FILENAME2. -Returns nil, if there is no handler for either file name. -A file name is handles specially if one of the regular expressions in -`file-name-handler-alist' matches it." - (let ((match-data (match-data))) - (unwind-protect - (catch 'handler - (mapcar (function - (lambda (x) - (and - (not - (and - (or (null operation) - (eq operation inhibit-file-name-operation)) - (memq (cdr x) inhibit-file-name-handlers))) - (string-match (car x) filename) - (throw 'handler (cdr x))))) - file-name-handler-alist) - nil) - (store-match-data match-data)))) - -;;; Overloads to supply the file-name-handler-alist - -(defun fn-handler-insert-file-contents (filename &optional visit &rest args) - "Documented as original." - (let* ((filename (expand-file-name filename)) - (handler (find-file-name-handler filename 'insert-file-contents))) - (if handler - (apply handler 'insert-file-contents filename visit args) - (let (file-name-handler-alist) - (apply 'fn-handler-real-insert-file-contents filename visit args))))) - -(efs-overwrite-fn "fn-handler" 'insert-file-contents - 'fn-handler-insert-file-contents) - -(defun fn-handler-directory-files (directory &optional full match &rest nosort) - "Documented as original." - (let ((handler (find-file-name-handler directory 'directory-files))) - (if handler - (apply handler 'directory-files directory full match nosort) - (let (file-name-handler-alist) - (apply 'fn-handler-real-directory-files - directory full match nosort))))) - -(efs-overwrite-fn "fn-handler" 'directory-files 'fn-handler-directory-files) - -(defun fn-handler-list-directory (dirname &optional verbose) - "Documented as original." - (interactive (let ((pfx current-prefix-arg)) - (list (read-file-name (if pfx "List directory (verbose): " - "List directory (brief): ") - nil default-directory nil) - pfx))) - (let ((handler (find-file-name-handler dirname 'list-directory))) - (if handler - (funcall handler 'list-directory dirname verbose) - (let (file-name-handler-alist) - (fn-handler-real-list-directory dirname verbose))))) - -(efs-overwrite-fn "fn-handler" 'list-directory 'fn-handler-list-directory) - -(defun fn-handler-file-directory-p (filename) - "Documented as original." - (let* ((filename (expand-file-name filename)) - (handler (find-file-name-handler filename 'file-directory-p))) - (if handler - (funcall handler 'file-directory-p filename) - (let (file-name-handler-alist) - (fn-handler-real-file-directory-p filename))))) - -(efs-overwrite-fn "fn-handler" ' file-directory-p 'fn-handler-file-directory-p) - -(defun fn-handler-file-writable-p (filename) - "Documented as original." - (let* ((filename (expand-file-name filename)) - (handler (find-file-name-handler filename 'file-writable-p))) - (if handler - (funcall handler 'file-writable-p filename) - (let (file-name-handler-alist) - (fn-handler-real-file-writable-p filename))))) - -(efs-overwrite-fn "fn-handler" 'file-writable-p 'fn-handler-file-writable-p) - -(defun fn-handler-file-readable-p (filename) - "Documented as original." - (let* ((filename (expand-file-name filename)) - (handler (find-file-name-handler filename 'file-readable-p))) - (if handler - (funcall handler 'file-readable-p filename) - (let (file-name-handler-alist) - (fn-handler-real-file-readable-p filename))))) - -(efs-overwrite-fn "fn-handler" 'file-readable-p 'fn-handler-file-readable-p) - -(defun fn-handler-file-symlink-p (filename) - "Documented as original." - (let* ((filename (expand-file-name filename)) - (handler (find-file-name-handler filename 'file-symlink-p))) - (if handler - (funcall handler 'file-symlink-p filename) - (let (file-name-handler-alist) - (fn-handler-real-file-symlink-p filename))))) - -(efs-overwrite-fn "fn-handler" 'file-symlink-p 'fn-handler-file-symlink-p) - -(defun fn-handler-delete-file (file) - "Documented as original" - (interactive (list (read-file-name "Delete-file: " nil nil t))) - (let* ((file (expand-file-name file)) - (handler (find-file-name-handler file 'delete-file))) - (if handler - (funcall handler 'delete-file file) - (let (file-name-handler-alist) - (fn-handler-real-delete-file file))))) - -(efs-overwrite-fn "fn-handler" 'delete-file 'fn-handler-delete-file) - -(defun fn-handler-file-exists-p (filename) - "Documented as original" - (let* ((filename (expand-file-name filename)) - (handler (find-file-name-handler filename 'file-exists-p))) - (if handler - (funcall handler 'file-exists-p filename) - (let (file-name-handler-alist) - (fn-handler-real-file-exists-p filename))))) - -(efs-overwrite-fn "fn-handler" 'file-exists-p 'fn-handler-file-exists-p) - -(defun fn-handler-write-region (start end filename &optional append visit) - "Documented as original" - ;; Use read-file-name, rather then interactive spec, - ;; to make it easier to get decent initial contents in the minibuffer. - (interactive - (progn - (or (mark) (error "The mark is not set now.")) - (list (min (point) (mark)) - (max (point) (mark)) - (read-file-name "Write region to file: ")))) - (let* ((filename (expand-file-name filename)) - (handler (or (find-file-name-handler filename 'write-region) - (and (stringp visit) - (find-file-name-handler (expand-file-name visit) - 'write-region))))) - (if handler - (funcall handler 'write-region start end filename append visit) - (let (file-name-handler-alist) - (fn-handler-real-write-region start end filename append visit))))) - -(efs-overwrite-fn "fn-handler" 'write-region - 'fn-handler-write-region) - -(defun fn-handler-verify-visited-file-modtime (buffer) - "Documented as original" - (let* ((file (buffer-file-name buffer)) - (handler (and file (find-file-name-handler - file - 'verify-visited-file-modtime)))) - (if handler - (funcall handler 'verify-visited-file-modtime buffer) - (let (file-name-handler-alist) - (fn-handler-real-verify-visited-file-modtime buffer))))) - -(efs-overwrite-fn "fn-handler" 'verify-visited-file-modtime - 'fn-handler-verify-visited-file-modtime) - -(defun fn-handler-backup-buffer () - "Documented as original" - (let ((handler (and buffer-file-name - (find-file-name-handler buffer-file-name - 'backup-buffer)))) - (if handler - (funcall handler 'backup-buffer) - ;; Don't let-bind file-name-handler-alist to nil, as backup-buffer - ;; is a lisp function and I want handlers to be available inside it. - (fn-handler-real-backup-buffer)))) - -(efs-overwrite-fn "fn-handler" 'backup-buffer 'fn-handler-backup-buffer) - -(defun fn-handler-copy-file (filename newname &optional ok-if-already-exists - keep-date) - "Documented as original" - ;; handler for filename takes precedence over the handler for newname. - (interactive - (let* ((from (read-file-name "Copy file: " nil nil t)) - (to (read-file-name (format "Copy %s to: " (abbreviate-file-name - from))))) - (list from to 0 current-prefix-arg))) - (let* ((filename (expand-file-name filename)) - (newname (expand-file-name newname)) - (handler (or (find-file-name-handler filename 'copy-file) - (find-file-name-handler newname 'copy-file)))) - (if handler - ;; Using the NOWAIT arg is a bit risky for other users of the - ;; handler-alist - (funcall handler 'copy-file filename newname ok-if-already-exists - keep-date) - (let (file-name-handler-alist) - (fn-handler-real-copy-file filename newname ok-if-already-exists - keep-date))))) - -(efs-overwrite-fn "fn-handler" 'copy-file 'fn-handler-copy-file) - -(defun fn-handler-file-newer-than-file-p (file1 file2) - "Documented as original" - ;; The handler for file2 takes precedence over the handler for file1. - (let* ((file1 (expand-file-name file1)) - (file2 (expand-file-name file2)) - (handler (or (find-file-name-handler file2 'file-newer-than-file-p) - (find-file-name-handler file1 'file-newer-than-file-p)))) - (if handler - (funcall handler 'file-newer-than-file-p file1 file2) - (let (file-name-handler-alist) - (fn-handler-real-file-newer-than-file-p file1 file2))))) - -(efs-overwrite-fn "fn-handler" 'file-newer-than-file-p - 'fn-handler-file-newer-than-file-p) - -(defun fn-handler-file-attributes (file) - "Documented as original" - (let* ((file (expand-file-name file)) - (handler (find-file-name-handler file 'file-attributes))) - (if handler - (funcall handler 'file-attributes file) - (let (file-name-handler-alist) - (fn-handler-real-file-attributes file))))) - -(efs-overwrite-fn "fn-handler" 'file-attributes 'fn-handler-file-attributes) - -(defun fn-handler-file-name-directory (file) - "Documented as original" - (let ((handler (find-file-name-handler file 'file-name-directory))) - (if handler - (funcall handler 'file-name-directory file) - (let (file-name-handler-alist) - (fn-handler-real-file-name-directory file))))) - -(efs-overwrite-fn "fn-handler" 'file-name-directory - 'fn-handler-file-name-directory) - -(defun fn-handler-rename-file (filename newname &optional ok-if-already-exists) - "Documented as original" - (interactive - (let* ((from (read-file-name "Rename file: " nil nil t)) - (to (read-file-name (format "Rename %s to: " (abbreviate-file-name - from))))) - (list from to 0))) - (let* ((filename (expand-file-name filename)) - (newname (expand-file-name newname)) - (handler (or (find-file-name-handler filename 'rename-file) - (find-file-name-handler newname 'rename-file)))) - (if handler - (funcall handler 'rename-file filename newname ok-if-already-exists) - (let (file-name-handler-alist) - (fn-handler-real-rename-file filename newname ok-if-already-exists))))) - -(efs-overwrite-fn "fn-handler" 'rename-file 'fn-handler-rename-file) - -(defun fn-handler-insert-directory (file switches - &optional wildcard full-directory-p) - "Documented as original" - (let* ((file (expand-file-name file)) - (handler (find-file-name-handler file 'insert-directory))) - (if handler - (funcall handler 'insert-directory file switches wildcard - full-directory-p) - (let (file-name-handler-alist) - (fn-handler-real-insert-directory file switches wildcard - full-directory-p))))) - -(efs-overwrite-fn "fn-handler" 'insert-directory 'fn-handler-insert-directory) - -(defun fn-handler-set-visited-file-modtime (&optional time) - "Sets the buffer's record of file modtime to the modtime of buffer-file-name. -With optional TIME, sets the modtime to TIME. This is an emacs 19 function. -In emacs 18, efs will make this work for remote files only." - (if buffer-file-name - (let ((handler (find-file-name-handler buffer-file-name - 'set-visited-file-modtime))) - (if handler - (funcall handler 'set-visited-file-modtime time) - (let (file-name-handler-alist) - (fn-handler-real-set-visited-file-modtime time)))))) - -(efs-overwrite-fn "fn-handler" 'set-visited-file-modtime - 'fn-handler-set-visited-file-modtime) - -(defun fn-handler-file-name-nondirectory (name) - "Documented as original" - (let ((handler (find-file-name-handler name 'file-name-nondirectory))) - (if handler - (funcall handler 'file-name-nondirectory name) - (let (file-name-handler-alist) - (fn-handler-real-file-name-nondirectory name))))) - -(efs-overwrite-fn "fn-handler" 'file-name-nondirectory - 'fn-handler-file-name-nondirectory) - -(defun fn-handler-file-name-as-directory (name) - "Documented as original" - (let ((handler (find-file-name-handler name 'file-name-as-directory))) - (if handler - (funcall handler 'file-name-as-directory name) - (let (file-name-handler-alist) - (fn-handler-real-file-name-as-directory name))))) - -(efs-overwrite-fn "fn-handler" 'file-name-as-directory - 'fn-handler-file-name-as-directory) - -(defun fn-handler-directory-file-name (directory) - "Documented as original" - (let ((handler (find-file-name-handler directory 'directory-file-name))) - (if handler - (funcall handler 'directory-file-name directory) - (let (file-name-handler-alist) - (fn-handler-real-directory-file-name directory))))) - -(efs-overwrite-fn "fn-handler" 'directory-file-name - 'fn-handler-directory-file-name) - -(defun fn-handler-get-file-buffer (file) - "Documented as original" - (let ((handler (find-file-name-handler file 'get-file-buffer))) - (if handler - (funcall handler 'get-file-buffer file) - (let (file-name-handler-alist) - (fn-handler-real-get-file-buffer file))))) - -(efs-overwrite-fn "fn-handler" 'get-file-buffer 'fn-handler-get-file-buffer) - -(defun fn-handler-create-file-buffer (file) - "Documented as original" - (let ((handler (find-file-name-handler file 'create-file-buffer))) - (if handler - (funcall handler 'create-file-buffer file) - (let (file-name-handler-alist) - (fn-handler-real-create-file-buffer file))))) - -(efs-overwrite-fn "fn-handler" 'create-file-buffer - 'fn-handler-create-file-buffer) - -(defun fn-handler-set-file-modes (file mode) - "Documented as original" - (let* ((file (expand-file-name file)) - (handler (find-file-name-handler file 'set-file-modes))) - (if handler - (funcall handler 'set-file-modes file mode) - (let (file-name-handler-alist) - (fn-handler-real-set-file-modes file mode))))) - -(efs-overwrite-fn "fn-handler" 'set-file-modes 'fn-handler-set-file-modes) - -(defun fn-handler-file-modes (file) - "Documented as original" - (let* ((file (expand-file-name file)) - (handler (find-file-name-handler file 'file-modes))) - (if handler - (funcall handler 'file-modes file) - (let (file-name-handler-alist) - (fn-handler-real-file-modes file))))) - -(efs-overwrite-fn "fn-handler" 'file-modes 'fn-handler-file-modes) - -(if (string-match emacs-version "Lucid") - - (progn - (defun fn-handler-abbreviate-file-name (filename &optional hack-homedir) - "Documented as original" - (let ((handler (find-file-name-handler filename - 'abbreviate-file-name))) - (if handler - (funcall handler 'abbreviate-file-name filename hack-homedir) - (let (file-name-handler-alist) - (fn-handler-real-abbreviate-file-name filename hack-homedir)))))) - - (defun fn-handler-abbreviate-file-name (filename) - "Documented as original" - (let ((handler (find-file-name-handler filename 'abbreviate-file-name))) - (if handler - (funcall handler 'abbreviate-file-name filename) - (let (file-name-handler-alist) - (fn-handler-real-abbreviate-file-name filename)))))) - -(efs-overwrite-fn "fn-handler" 'abbreviate-file-name - 'fn-handler-abbreviate-file-name) - -(defun fn-handler-file-name-sans-versions (filename - &optional keep-backup-version) - "Documented as original" - (let ((handler (find-file-name-handler filename 'file-name-sans-versions))) - (if handler - (funcall handler 'file-name-sans-versions filename - keep-backup-version) - (let (file-name-handler-alist) - (fn-handler-real-file-name-sans-versions filename - keep-backup-version))))) - -(efs-overwrite-fn "fn-handler" 'file-name-sans-versions - 'fn-handler-file-name-sans-versions) - -(if (fboundp 'make-directory-internal) ; not defined in lemacs 19.[67] - (progn - (defun fn-handler-make-directory-internal (dirname) - "Documented as original" - (let* ((dirname (expand-file-name dirname)) - (handler (find-file-name-handler dirname - 'make-directory-internal))) - (if handler - (funcall handler 'make-directory-internal dirname) - (let (file-name-handler-alist) - (fn-handler-real-make-directory-internal dirname))))) - - (efs-overwrite-fn "fn-handler" 'make-directory-internal - 'fn-handler-make-directory-internal))) - -(defun fn-handler-delete-directory (dirname) - "Documented as original" - (let* ((dirname (expand-file-name dirname)) - (handler (find-file-name-handler dirname 'delete-directory))) - (if handler - (funcall handler 'delete-directory dirname) - (let (file-name-handler-alist) - (fn-handler-real-delete-directory dirname))))) - -(efs-overwrite-fn "fn-handler" 'delete-directory 'fn-handler-delete-directory) - -(defun fn-handler-make-symbolic-link (target linkname - &optional ok-if-already-exists) - "Documented as original" - (interactive - (let (target) - (list - (setq target (read-string "Make symbolic link to file: ")) - (read-file-name (format "Make symbolic link to file %s: " target)) - 0))) - (let* ((linkname (expand-file-name linkname)) - (handler (or (find-file-name-handler linkname 'make-symbolic-link) - (find-file-name-handler target 'make-symbolic-link)))) - (if handler - (funcall handler 'make-symbolic-link - target linkname ok-if-already-exists) - (let (file-name-handler-alist) - (fn-handler-real-make-symbolic-link target linkname - ok-if-already-exists))))) - -(efs-overwrite-fn "fn-handler" 'make-symbolic-link - 'fn-handler-make-symbolic-link) - -(defun fn-handler-add-name-to-file (file newname &optional - ok-if-already-exists) - "Documented as original" - (interactive - (let (file) - (list - (setq file (read-file-name "Add name to file: " nil nil t)) - (read-file-name (format "Name to add to %s: " file)) - 0))) - (let* ((file (expand-file-name file)) - (newname (expand-file-name newname)) - (handler (or (find-file-name-handler newname 'add-name-to-file) - (find-file-name-handler file 'add-name-to-file)))) - (if handler - (funcall handler 'add-name-to-file file newname ok-if-already-exists) - (let (file-name-handler-alist) - (fn-handler-real-add-name-to-file file newname - ok-if-already-exists))))) - -(efs-overwrite-fn "fn-handler" 'add-name-to-file 'fn-handler-add-name-to-file) - -(defun fn-handler-recover-file (file) - "Documented as original" - (interactive "FRecover file: ") - (let* ((file (expand-file-name file)) - (handler (or (find-file-name-handler file 'recover-file) - (find-file-name-handler (let ((buffer-file-name file)) - (make-auto-save-file-name)) - 'recover-file)))) - (if handler - (funcall handler 'recover-file file) - (let (file-name-handler-alist) - (fn-handler-real-recover-file file))))) - -(efs-overwrite-fn "fn-handler" 'recover-file 'fn-handler-recover-file) - -(defun fn-handler-file-name-completion (file dir) - "Documented as original." - (let* ((dir (expand-file-name dir)) - (handler (find-file-name-handler dir 'file-name-completion))) - (if handler - (funcall handler 'file-name-completion file dir) - (let (file-name-handler-alist) - (fn-handler-real-file-name-completion file dir))))) - -(efs-overwrite-fn "fn-handler" 'file-name-completion - 'fn-handler-file-name-completion) - -(defun fn-handler-file-name-all-completions (file dir) - "Documented as original." - (let* ((dir (expand-file-name dir)) - (handler (find-file-name-handler dir 'file-name-all-completions))) - (if handler - (funcall handler 'file-name-all-completions file dir) - (let (file-name-handler-alist) - (fn-handler-real-file-name-all-completions file dir))))) - -(efs-overwrite-fn "fn-handler" 'file-name-all-completions - 'fn-handler-file-name-all-completions) - -(if (fboundp 'file-truename) - (progn - (defun fn-handler-file-truename (filename) - "Documented as original" - (let* ((fn (expand-file-name filename)) - (handler (find-file-name-handler filename 'file-truename))) - (if handler - (funcall handler 'file-truename filename) - (let (file-name-handler-alist) - (fn-handler-real-file-truename filename))))) - (efs-overwrite-fn "fn-handler" 'file-truename - 'fn-handler-file-truename))) - -(if (fboundp 'unhandled-file-name-directory) - (progn - (defun fn-handler-unhandled-file-name-directory (filename) - "Documented as original" - (let ((handler (find-file-name-handler - filename 'unhandled-file-name-directory))) - (if handler - (funcall handler 'unhandled-file-name-directory filename) - (let (file-name-handler-alist) - (fn-handler-real-unhandled-file-name-directory filename))))) - - (efs-overwrite-fn "fn-handler" 'unhandled-file-name-directory - 'fn-handler-unhandled-file-name-directory))) - - -;; We don't need the file-name-handler-alist for these. Inhibit it to -;; avoid an infinite recursion. Hope that this doesn't step -;; on any other packages' toes. -(defun fn-handler-expand-file-name (filename &optional default) - "Documented as original." - (let (file-name-handler-alist) - (fn-handler-real-expand-file-name filename default))) - -(efs-overwrite-fn "fn-handler" 'expand-file-name 'fn-handler-expand-file-name) - -(defun fn-handler-substitute-in-file-name (filename) - "Documented as original." - (let ((handler (find-file-name-handler filename 'substitute-in-file-name))) - (if handler - (funcall handler 'substitute-in-file-name filename) - (let (file-name-handler-alist) - (fn-handler-real-substitute-in-file-name filename))))) - -(efs-overwrite-fn "fn-handler" 'substitute-in-file-name - 'fn-handler-substitute-in-file-name) - -(if (fboundp 'file-executable-p) - (progn - (defun fn-handler-file-executable-p (file) - (let ((handler (find-file-name-handler file 'file-executable-p))) - (if handler - (funcall handler 'file-executable-p file) - (let (file-name-handler-alist) - (fn-handler-real-file-executable-p file))))) - (efs-overwrite-fn "fn-handler" 'file-executable-p - 'fn-handler-file-executable-p))) - -(if (fboundp 'file-accessible-directory-p) - (progn - (defun fn-handler-file-accessible-directory-p (file) - (let ((handler (find-file-name-handler file - 'file-accessible-directory-p))) - (if handler - (funcall handler 'file-accessible-directory-p file) - (let (file-name-handler-alist) - (fn-handler-real-file-accessible-directory-p file))))) - (efs-overwrite-fn "fn-handler" 'file-accessible-directory-p - 'fn-handler-file-accessible-directory-p))) - -(defun fn-handler-load (file &optional noerror nomessage nosuffix) - (let ((handler (find-file-name-handler file 'load))) - (if handler - (funcall handler 'load file noerror nomessage nosuffix) - (let (file-name-handler-alist) - (fn-handler-real-load file noerror nomessage nosuffix))))) - -(efs-overwrite-fn "fn-handler" 'load 'fn-handler-load) - -;; We don't need file-name-handlers for do-auto-save. -;; If it does try to access them there is a risk of an infinite recursion. -(defun fn-handler-do-auto-save (&rest args) - "Documented as original." - (let (file-name-handler-alist) - (apply 'fn-handler-real-do-auto-save args))) - -(efs-overwrite-fn "fn-handler" 'do-auto-save 'fn-handler-do-auto-save) - -(if (fboundp 'vc-registered) - (progn - (defun fn-handler-vc-registered (file) - "Documented as original." - (let ((handler (find-file-name-handler file 'vc-registered))) - (if handler - (funcall handler 'vc-registered file) - (let (file-name-handler-alist) - (fn-handler-real-vc-registered file))))) - - (efs-overwrite-fn "fn-handler" 'vc-registered - 'fn-handler-vc-registered))) - -;;; end of fn-handler.el diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/ChangeLog --- a/lisp/gnus/ChangeLog Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/ChangeLog Mon Aug 13 09:23:06 2007 +0200 @@ -1,3 +1,113 @@ +Mon Mar 24 16:57:26 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.37 is released. + +Mon Mar 24 01:16:15 1997 Hrvoje Niksic + + * gnus-xmas.el (gnus-xmas-redefine): Use it. + + * gnus-xmas.el (gnus-xmas-summary-set-display-table): New function. + + * gnus-sum.el (gnus-summary-mode): Use it. + + * gnus-sum.el (gnus-summary-set-display-table): New function. + +Mon Mar 24 16:27:46 1997 Lars Magne Ingebrigtsen + + * gnus-util.el (gnus-buffer-live-p): Reinstated. + +Mon Mar 24 01:24:27 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.36 is released. + +Sun Mar 23 18:51:00 1997 Lars Magne Ingebrigtsen + + * gnus-group.el (gnus-group-list-groups): Doc fix. + + * gnus-demon.el (gnus-inhibit-demon): New variable. + (gnus-demon): Use it. + +Sun Mar 23 18:42:55 1997 David Moore + + * gnus-nocem.el (gnus-nocem-already-running): New variable. + +Sun Mar 23 17:27:17 1997 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-select-newsgroup): Revert to old duplicate + behavior for nnvirtual groups. + + * gnus-util.el (gnus-buffer-live-p): Removed. + +Sat Mar 22 22:11:28 1997 Steven L Baur + + * gnus-msg.el (gnus-setup-message): Mark buffer unmodified as last + step of setting message buffer up. + + * message.el (message-kill-buffer): Make prompt look more like the + one in kill-buffer. + Only prompt if the buffer has been changed. + +Sun Mar 23 02:52:51 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.35 is released. + +Sun Mar 23 01:09:23 1997 Lars Magne Ingebrigtsen + + * gnus-art.el (gnus-read-save-file-name): Tweaked definition. + (gnus-summary-save-in-rmail): Use it. + (gnus-summary-save-in-file): Ditto. + (gnus-summary-save-in-mail): Ditto. + (gnus-summary-save-body-in-file): Ditto. + + * gnus-vm.el (gnus-summary-save-in-vm): Ditto. + + * gnus-sum.el (gnus-summary-enter-digest-group): Add group param. + + * gnus-art.el (gnus-split-methods): New default. + (gnus-article-nndoc-name): New function. + +Sat Mar 22 15:47:14 1997 Lars Magne Ingebrigtsen + + * nnmh.el (nnmh-request-accept-article): Do 'junk. + * nnbabyl.el (nnbabyl-request-accept-article): Ditto. + * nnmbox.el (nnmbox-request-accept-article): Ditto. + * nnfolder.el (nnfolder-request-accept-article): Ditto. + +Sat Mar 22 15:42:53 1997 Lars Magne Ingebrigtsen + + * gnus.el: Gnus v5.4.34 is released. + +Sat Mar 22 01:37:00 1997 Lars Magne Ingebrigtsen + + * gnus-sum.el (gnus-summary-move-article): Understand 'junk. + + * nnml.el (nnml-request-accept-article): Return 'junk when legal. + + * gnus-sum.el (gnus-summary-respool-query): Message better, and + return right value. + + * nnmail.el (nnmail-split-abbrev-alist): New `to' and `from' + abbrevs. + +Wed Mar 19 19:36:25 1997 Dewey M. Sasser + + * message.el (message-make-from): Changed so that + message-from-style value is captured from message buffer instead + of temp buffer. + +Sat Mar 22 00:47:39 1997 Lars Magne Ingebrigtsen + + * gnus-srvr.el (gnus-browse-foreign-server): Understand server + names. + + * gnus-group.el (gnus-group-browse-foreign-server): Down methodize + the server. + +Thu Mar 20 22:49:16 1997 Lars Magne Ingebrigtsen + + * nnfolder.el (nnfolder-read-folder): Do checking if there are new + articles after the last nnfolder marker. + Thu Mar 20 17:33:54 1997 Lars Magne Ingebrigtsen * gnus.el: Gnus v5.4.33 is released. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-art.el --- a/lisp/gnus/gnus-art.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-art.el Mon Aug 13 09:23:06 2007 +0200 @@ -323,7 +323,8 @@ :type 'function) (defcustom gnus-split-methods - '((gnus-article-archive-name)) + '((gnus-article-archive-name) + (gnus-article-nndoc-name)) "Variable used to suggest where articles are to be saved. For instance, if you would like to save articles related to Gnus in the file \"gnus-stuff\", and articles related to VM in \"vm-stuff\", @@ -1393,60 +1394,80 @@ (set-buffer gnus-summary-buffer) (funcall gnus-default-article-saver filename))))) -(defun gnus-read-save-file-name (prompt default-name &optional filename) - (cond - ((eq filename 'default) - default-name) - (filename filename) - (t - (let* ((split-name (gnus-get-split-value gnus-split-methods)) - (prompt - (format prompt (if (and gnus-number-of-articles-to-be-saved - (> gnus-number-of-articles-to-be-saved 1)) - (format "these %d articles" - gnus-number-of-articles-to-be-saved) - "this article"))) - (file - ;; Let the split methods have their say. - (cond - ;; No split name was found. - ((null split-name) - (read-file-name - (concat prompt " (default " - (file-name-nondirectory default-name) ") ") - (file-name-directory default-name) - default-name)) - ;; A single split name was found - ((= 1 (length split-name)) - (let* ((name (car split-name)) - (dir (cond ((file-directory-p name) - (file-name-as-directory name)) - ((file-exists-p name) name) - (t gnus-article-save-directory)))) - (read-file-name - (concat prompt " (default " name ") ") - dir name))) - ;; A list of splits was found. - (t - (setq split-name (nreverse split-name)) - (let (result) - (let ((file-name-history (nconc split-name file-name-history))) - (setq result - (expand-file-name - (read-file-name - (concat prompt " (`M-p' for defaults) ") - gnus-article-save-directory - (car split-name)) - gnus-article-save-directory))) - (car (push result file-name-history))))))) - ;; Create the directory. - (gnus-make-directory (file-name-directory file)) - ;; If we have read a directory, we append the default file name. - (when (file-directory-p file) - (setq file (concat (file-name-as-directory file) - (file-name-nondirectory default-name)))) - ;; Possibly translate some characters. - (nnheader-translate-file-chars file))))) +(defun gnus-read-save-file-name (prompt &optional filename + function group headers variable) + (let ((default-name (funcall function group headers + (symbol-value variable))) + result) + (setq + result + (cond + ((eq filename 'default) + default-name) + (filename filename) + (t + (let* ((split-name (gnus-get-split-value gnus-split-methods)) + (prompt + (format prompt + (if (and gnus-number-of-articles-to-be-saved + (> gnus-number-of-articles-to-be-saved 1)) + (format "these %d articles" + gnus-number-of-articles-to-be-saved) + "this article"))) + (file + ;; Let the split methods have their say. + (cond + ;; No split name was found. + ((null split-name) + (read-file-name + (concat prompt " (default " + (file-name-nondirectory default-name) ") ") + (file-name-directory default-name) + default-name)) + ;; A single group name is returned. + ((stringp split-name) + (setq default-name + (funcall function split-name headers + (symbol-value variable))) + (read-file-name + (concat prompt " (default " + (file-name-nondirectory default-name) ") ") + (file-name-directory default-name) + default-name)) + ;; A single split name was found + ((= 1 (length split-name)) + (let* ((name (car split-name)) + (dir (cond ((file-directory-p name) + (file-name-as-directory name)) + ((file-exists-p name) name) + (t gnus-article-save-directory)))) + (read-file-name + (concat prompt " (default " name ") ") + dir name))) + ;; A list of splits was found. + (t + (setq split-name (nreverse split-name)) + (let (result) + (let ((file-name-history + (nconc split-name file-name-history))) + (setq result + (expand-file-name + (read-file-name + (concat prompt " (`M-p' for defaults) ") + gnus-article-save-directory + (car split-name)) + gnus-article-save-directory))) + (car (push result file-name-history))))))) + ;; Create the directory. + (gnus-make-directory (file-name-directory file)) + ;; If we have read a directory, we append the default file name. + (when (file-directory-p file) + (setq file (concat (file-name-as-directory file) + (file-name-nondirectory default-name)))) + ;; Possibly translate some characters. + (nnheader-translate-file-chars file))))) + (gnus-make-directory (file-name-directory result)) + (set variable result))) (defun gnus-article-archive-name (group) "Return the first instance of an \"Archive-name\" in the current buffer." @@ -1455,25 +1476,26 @@ (nnheader-concat gnus-article-save-directory (match-string 1))))) +(defun gnus-article-nndoc-name (group) + "If GROUP is an nndoc group, return the name of the parent group." + (when (eq (car (gnus-find-method-for-group group)) 'nndoc) + (gnus-group-get-parameter group 'save-article-group))) + (defun gnus-summary-save-in-rmail (&optional filename) "Append this article to Rmail file. Optional argument FILENAME specifies file name. Directory to save to is default to `gnus-article-save-directory'." (interactive) (gnus-set-global-variables) - (let ((default-name - (funcall gnus-rmail-save-name gnus-newsgroup-name - gnus-current-headers gnus-newsgroup-last-rmail))) - (setq filename (gnus-read-save-file-name - "Save %s in rmail file:" default-name filename)) - (gnus-make-directory (file-name-directory filename)) - (gnus-eval-in-buffer-window gnus-save-article-buffer - (save-excursion - (save-restriction - (widen) - (gnus-output-to-rmail filename)))) - ;; Remember the directory name to save articles - (setq gnus-newsgroup-last-rmail filename))) + (setq filename (gnus-read-save-file-name + "Save %s in rmail file:" filename + gnus-rmail-save-name gnus-newsgroup-name + gnus-current-headers 'gnus-newsgroup-last-rmail)) + (gnus-eval-in-buffer-window gnus-save-article-buffer + (save-excursion + (save-restriction + (widen) + (gnus-output-to-rmail filename))))) (defun gnus-summary-save-in-mail (&optional filename) "Append this article to Unix mail file. @@ -1481,26 +1503,18 @@ Directory to save to is default to `gnus-article-save-directory'." (interactive) (gnus-set-global-variables) - (let ((default-name - (funcall gnus-mail-save-name gnus-newsgroup-name - gnus-current-headers gnus-newsgroup-last-mail))) - (setq filename (gnus-read-save-file-name - "Save %s in Unix mail file:" default-name filename)) - (setq filename - (expand-file-name filename - (and default-name - (file-name-directory default-name)))) - (gnus-make-directory (file-name-directory filename)) - (gnus-eval-in-buffer-window gnus-save-article-buffer - (save-excursion - (save-restriction - (widen) - (if (and (file-readable-p filename) - (mail-file-babyl-p filename)) - (gnus-output-to-rmail filename t) - (gnus-output-to-mail filename))))) - ;; Remember the directory name to save articles. - (setq gnus-newsgroup-last-mail filename))) + (setq filename (gnus-read-save-file-name + "Save %s in Unix mail file:" filename + gnus-mail-save-name gnus-newsgroup-name + gnus-current-headers 'gnus-newsgroup-last-mail)) + (gnus-eval-in-buffer-window gnus-save-article-buffer + (save-excursion + (save-restriction + (widen) + (if (and (file-readable-p filename) + (mail-file-babyl-p filename)) + (gnus-output-to-rmail filename t) + (gnus-output-to-mail filename)))))) (defun gnus-summary-save-in-file (&optional filename overwrite) "Append this article to file. @@ -1508,22 +1522,18 @@ Directory to save to is default to `gnus-article-save-directory'." (interactive) (gnus-set-global-variables) - (let ((default-name - (funcall gnus-file-save-name gnus-newsgroup-name - gnus-current-headers gnus-newsgroup-last-file))) - (setq filename (gnus-read-save-file-name - "Save %s in file:" default-name filename)) - (gnus-make-directory (file-name-directory filename)) - (gnus-eval-in-buffer-window gnus-save-article-buffer - (save-excursion - (save-restriction - (widen) - (when (and overwrite - (file-exists-p filename)) - (delete-file filename)) - (gnus-output-to-file filename)))) - ;; Remember the directory name to save articles. - (setq gnus-newsgroup-last-file filename))) + (setq filename (gnus-read-save-file-name + "Save %s in file:" filename + gnus-file-save-name gnus-newsgroup-name + gnus-current-headers 'gnus-newsgroup-last-file)) + (gnus-eval-in-buffer-window gnus-save-article-buffer + (save-excursion + (save-restriction + (widen) + (when (and overwrite + (file-exists-p filename)) + (delete-file filename)) + (gnus-output-to-file filename))))) (defun gnus-summary-write-to-file (&optional filename) "Write this article to a file. @@ -1538,22 +1548,18 @@ The directory to save in defaults to `gnus-article-save-directory'." (interactive) (gnus-set-global-variables) - (let ((default-name - (funcall gnus-file-save-name gnus-newsgroup-name - gnus-current-headers gnus-newsgroup-last-file))) - (setq filename (gnus-read-save-file-name - "Save %s body in file:" default-name filename)) - (gnus-make-directory (file-name-directory filename)) - (gnus-eval-in-buffer-window gnus-save-article-buffer - (save-excursion - (save-restriction - (widen) - (goto-char (point-min)) - (when (search-forward "\n\n" nil t) - (narrow-to-region (point) (point-max))) - (gnus-output-to-file filename)))) - ;; Remember the directory name to save articles. - (setq gnus-newsgroup-last-file filename))) + (setq filename (gnus-read-save-file-name + "Save %s body in file:" filename + gnus-file-save-name gnus-newsgroup-name + gnus-current-headers 'gnus-newsgroup-last-file)) + (gnus-eval-in-buffer-window gnus-save-article-buffer + (save-excursion + (save-restriction + (widen) + (goto-char (point-min)) + (when (search-forward "\n\n" nil t) + (narrow-to-region (point) (point-max))) + (gnus-output-to-file filename))))) (defun gnus-summary-save-in-pipe (&optional command) "Pipe this article to subprocess." diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-demon.el --- a/lisp/gnus/gnus-demon.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-demon.el Mon Aug 13 09:23:06 2007 +0200 @@ -74,6 +74,8 @@ (defvar gnus-demon-idle-time 0) (defvar gnus-demon-handler-state nil) (defvar gnus-demon-last-keys nil) +(defvar gnus-inhibit-demon nil + "*If non-nil, no daemonic function will be run.") (eval-and-compile (autoload 'timezone-parse-date "timezone") @@ -172,10 +174,12 @@ (setq gnus-demon-idle-time 0) (setq gnus-demon-idle-has-been-called nil)) ;; Disable all daemonic stuff if we're in the minibuffer - (unless (window-minibuffer-p (selected-window)) + (when (and (not (window-minibuffer-p (selected-window))) + (not gnus-inhibit-demon)) ;; Then we go through all the handler and call those that are ;; sufficiently ripe. (let ((handlers gnus-demon-handler-state) + (gnus-inhibit-demon t) handler time idle) (while handlers (setq handler (pop handlers)) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-group.el --- a/lisp/gnus/gnus-group.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-group.el Mon Aug 13 09:23:06 2007 +0200 @@ -819,7 +819,9 @@ "List newsgroups with level LEVEL or lower that have unread articles. Default is all subscribed groups. If argument UNREAD is non-nil, groups with no unread articles are also -listed." +listed. + +Also see the `gnus-group-use-permanent-levels' variable." (interactive (list (if current-prefix-arg (prefix-numeric-value current-prefix-arg) @@ -2841,36 +2843,37 @@ re-scanning. If ARG is non-nil and not a number, this will force \"hard\" re-reading of the active files from all servers." (interactive "P") - (run-hooks 'gnus-get-new-news-hook) + (let ((gnus-inhibit-demon t)) + (run-hooks 'gnus-get-new-news-hook) - ;; Read any slave files. - (unless gnus-slave - (gnus-master-read-slave-newsrc)) + ;; Read any slave files. + (unless gnus-slave + (gnus-master-read-slave-newsrc)) - ;; We might read in new NoCeM messages here. - (when (and gnus-use-nocem - (null arg)) - (gnus-nocem-scan-groups)) - ;; If ARG is not a number, then we read the active file. - (when (and arg (not (numberp arg))) - (let ((gnus-read-active-file t)) - (gnus-read-active-file)) - (setq arg nil) + ;; We might read in new NoCeM messages here. + (when (and gnus-use-nocem + (null arg)) + (gnus-nocem-scan-groups)) + ;; If ARG is not a number, then we read the active file. + (when (and arg (not (numberp arg))) + (let ((gnus-read-active-file t)) + (gnus-read-active-file)) + (setq arg nil) - ;; If the user wants it, we scan for new groups. - (when (eq gnus-check-new-newsgroups 'always) - (gnus-find-new-newsgroups))) + ;; If the user wants it, we scan for new groups. + (when (eq gnus-check-new-newsgroups 'always) + (gnus-find-new-newsgroups))) - (setq arg (gnus-group-default-level arg t)) - (if (and gnus-read-active-file (not arg)) - (progn - (gnus-read-active-file) - (gnus-get-unread-articles arg)) - (let ((gnus-read-active-file (if arg nil gnus-read-active-file))) - (gnus-get-unread-articles arg))) - (run-hooks 'gnus-after-getting-new-news-hook) - (gnus-group-list-groups (and (numberp arg) - (max (car gnus-group-list-mode) arg)))) + (setq arg (gnus-group-default-level arg t)) + (if (and gnus-read-active-file (not arg)) + (progn + (gnus-read-active-file) + (gnus-get-unread-articles arg)) + (let ((gnus-read-active-file (if arg nil gnus-read-active-file))) + (gnus-get-unread-articles arg))) + (run-hooks 'gnus-after-getting-new-news-hook) + (gnus-group-list-groups (and (numberp arg) + (max (car gnus-group-list-mode) arg))))) (defun gnus-group-get-new-news-this-group (&optional n) "Check for newly arrived news in the current group (and the N-1 next groups). @@ -3201,8 +3204,8 @@ "Address: " (mapcar (lambda (server) (list server)) gnus-secondary-servers))) - ;; We got a server name, so we find the method. - (gnus-server-to-method how))))) + ;; We got a server name. + how)))) (gnus-browse-foreign-server method)) (defun gnus-group-set-info (info &optional method-only-group part) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-int.el --- a/lisp/gnus/gnus-int.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-int.el Mon Aug 13 09:23:06 2007 +0200 @@ -331,7 +331,8 @@ (defun gnus-request-scan (group method) "Request a SCAN being performed in GROUP from METHOD. If GROUP is nil, all groups on METHOD are scanned." - (let ((method (if group (gnus-find-method-for-group group) method))) + (let ((method (if group (gnus-find-method-for-group group) method)) + (gnus-inhibit-demon t)) (funcall (gnus-get-function method 'request-scan) (and group (gnus-group-real-name group)) (nth 1 method)))) @@ -410,6 +411,7 @@ (defun gnus-close-backends () ;; Send a close request to all backends that support such a request. (let ((methods gnus-valid-select-methods) + (gnus-inhibit-demon t) func method) (while (setq method (pop methods)) (when (fboundp (setq func (intern diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-msg.el --- a/lisp/gnus/gnus-msg.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-msg.el Mon Aug 13 09:23:06 2007 +0200 @@ -172,7 +172,8 @@ (setq gnus-message-buffer (current-buffer)) (make-local-variable 'gnus-newsgroup-name) (run-hooks 'gnus-message-setup-hook)) - (gnus-configure-windows ,config t)))) + (gnus-configure-windows ,config t) + (set-buffer-modified-p nil)))) (defun gnus-inews-add-send-actions (winconf buffer article) (make-local-hook 'message-sent-hook) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-nocem.el --- a/lisp/gnus/gnus-nocem.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-nocem.el Mon Aug 13 09:23:06 2007 +0200 @@ -100,6 +100,7 @@ "Scan all NoCeM groups for new NoCeM messages." (interactive) (let ((groups gnus-nocem-groups) + (gnus-inhibit-demon t) group active gactive articles) (gnus-make-directory gnus-nocem-directory) ;; Load any previous NoCeM headers. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-srvr.el --- a/lisp/gnus/gnus-srvr.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-srvr.el Mon Aug 13 09:23:06 2007 +0200 @@ -530,8 +530,7 @@ ["Select" gnus-browse-read-group t] ["Next" gnus-browse-next-group t] ["Prev" gnus-browse-next-group t] - ["Exit" gnus-browse-exit t] - )) + ["Exit" gnus-browse-exit t])) (run-hooks 'gnus-browse-menu-hook))) (defvar gnus-browse-current-method nil) @@ -543,6 +542,8 @@ "Browse the server METHOD." (setq gnus-browse-current-method method) (setq gnus-browse-return-buffer return-buffer) + (when (stringp method) + (setq method (gnus-server-to-method method))) (let ((gnus-select-method method) groups group) (gnus-message 5 "Connecting to %s..." (nth 1 method)) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-sum.el --- a/lisp/gnus/gnus-sum.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-sum.el Mon Aug 13 09:23:06 2007 +0200 @@ -715,31 +715,6 @@ (defvar gnus-scores-exclude-files nil) -(defvar gnus-summary-display-table - ;; Change the display table. Odd characters have a tendency to mess - ;; up nicely formatted displays - we make all possible glyphs - ;; display only a single character. - - ;; We start from the standard display table, if any. - (let ((table (or (copy-sequence standard-display-table) - (make-display-table))) - ;; Nix out all the control chars... - (i 32)) - (while (>= (setq i (1- i)) 0) - (aset table i [??])) - ;; ... but not newline and cr, of course. (cr is necessary for the - ;; selective display). - (aset table ?\n nil) - (aset table ?\r nil) - ;; We nix out any glyphs over 126 that are not set already. - (let ((i 256)) - (while (>= (setq i (1- i)) 127) - ;; Only modify if the entry is nil. - (or (aref table i) - (aset table i [??])))) - table) - "Display table used in summary mode buffers.") - (defvar gnus-original-article nil) (defvar gnus-article-internal-prepare-hook nil) (defvar gnus-newsgroup-process-stack nil) @@ -1872,7 +1847,7 @@ (setq truncate-lines t) (setq selective-display t) (setq selective-display-ellipses t) ;Display `...' - (setq buffer-display-table gnus-summary-display-table) + (gnus-summary-set-display-table) (gnus-set-default-directory) (setq gnus-newsgroup-name group) (make-local-variable 'gnus-summary-line-format) @@ -2210,6 +2185,30 @@ (mouse-set-point e) (gnus-summary-next-page nil t)) +(defun gnus-summary-set-display-table () + ;; Change the display table. Odd characters have a tendency to mess + ;; up nicely formatted displays - we make all possible glyphs + ;; display only a single character. + + ;; We start from the standard display table, if any. + (let ((table (or (copy-sequence standard-display-table) + (make-display-table))) + ;; Nix out all the control chars... + (i 32)) + (while (>= (setq i (1- i)) 0) + (aset table i [??])) + ;; ... but not newline and cr, of course. (cr is necessary for the + ;; selective display). + (aset table ?\n nil) + (aset table ?\r nil) + ;; We nix out any glyphs over 126 that are not set already. + (let ((i 256)) + (while (>= (setq i (1- i)) 127) + ;; Only modify if the entry is nil. + (or (aref table i) + (aset table i [??])))) + (setq buffer-display-table table))) + (defun gnus-summary-setup-buffer (group) "Initialize summary buffer." (let ((buffer (concat "*Summary " group "*"))) @@ -3586,6 +3585,11 @@ "Select newsgroup GROUP. If READ-ALL is non-nil, all articles in the group are selected." (let* ((entry (gnus-gethash group gnus-newsrc-hashtb)) + ;;!!! Dirty hack; should be removed. + (gnus-summary-ignore-duplicates + (if (eq (car (gnus-find-method-for-group group)) 'nnvirtual) + t + gnus-summary-ignore-duplicates)) (info (nth 2 entry)) articles fetched-articles cached) @@ -6180,7 +6184,8 @@ gnus-current-article))) (ogroup gnus-newsgroup-name) (params (append (gnus-info-params (gnus-get-info ogroup)) - (list (cons 'to-group ogroup)))) + (list (cons 'to-group ogroup)) + (list (cons 'save-article-group ogroup)))) (case-fold-search t) (buf (current-buffer)) dig) @@ -6667,20 +6672,26 @@ (set-buffer copy-buf) ;; First put the article in the destination group. (gnus-request-article-this-buffer article gnus-newsgroup-name) - (setq art-group - (gnus-request-accept-article - to-newsgroup select-method (not articles))) - (setq new-xref (concat new-xref " " (car art-group) - ":" (cdr art-group))) - ;; Now we have the new Xrefs header, so we insert - ;; it and replace the new article. - (nnheader-replace-header "Xref" new-xref) - (gnus-request-replace-article - (cdr art-group) to-newsgroup (current-buffer)) - art-group))))) - (if (not art-group) - (gnus-message 1 "Couldn't %s article %s" - (cadr (assq action names)) article) + (when (consp (setq art-group + (gnus-request-accept-article + to-newsgroup select-method (not articles)))) + (setq new-xref (concat new-xref " " (car art-group) + ":" (cdr art-group))) + ;; Now we have the new Xrefs header, so we insert + ;; it and replace the new article. + (nnheader-replace-header "Xref" new-xref) + (gnus-request-replace-article + (cdr art-group) to-newsgroup (current-buffer)) + art-group)))))) + (cond + ((not art-group) + (gnus-message 1 "Couldn't %s article %s" + (cadr (assq action names)) article)) + ((and (eq art-group 'junk) + (eq action 'move)) + (gnus-summary-mark-article article gnus-canceled-mark) + (gnus-message 4 "Deleted article %s" article)) + (t (let* ((entry (or (gnus-gethash (car art-group) gnus-newsrc-hashtb) @@ -6755,7 +6766,7 @@ (gnus-summary-goto-subject article) (when (eq action 'move) - (gnus-summary-mark-article article gnus-canceled-mark))) + (gnus-summary-mark-article article gnus-canceled-mark)))) (gnus-summary-remove-process-mark article)) ;; Re-activate all groups that have been moved to. (while to-groups @@ -7068,7 +7079,7 @@ ;;; Respooling -(defun gnus-summary-respool-query () +(defun gnus-summary-respool-query (&optional silent) "Query where the respool algorithm would put this article." (interactive) (gnus-set-global-variables) @@ -7078,8 +7089,13 @@ (set-buffer gnus-original-article-buffer) (save-restriction (message-narrow-to-head) - (message "This message would go to %s" - (mapconcat 'car (nnmail-article-group 'identity) ", ")))))) + (let ((groups (nnmail-article-group 'identity))) + (unless silent + (if groups + (message "This message would go to %s" + (mapconcat 'car groups ", ")) + (message "This message would go to no groups")) + groups)))))) ;; Summary marking commands. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-util.el --- a/lisp/gnus/gnus-util.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-util.el Mon Aug 13 09:23:06 2007 +0200 @@ -524,7 +524,7 @@ (defun gnus-kill-all-overlays () "Delete all overlays in the current buffer." - (when (fboundp 'overlay-lists) + (unless gnus-xemacs (let* ((overlayss (overlay-lists)) (buffer-read-only nil) (overlays (nconc (car overlayss) (cdr overlayss)))) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-vm.el --- a/lisp/gnus/gnus-vm.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-vm.el Mon Aug 13 09:23:06 2007 +0200 @@ -87,24 +87,20 @@ (defun gnus-summary-save-in-vm (&optional folder) (interactive) - (let ((default-name - (funcall gnus-mail-save-name gnus-newsgroup-name - gnus-current-headers gnus-newsgroup-last-mail))) - (setq folder - (cond ((eq folder 'default) default-name) - (folder folder) - (t (gnus-read-save-file-name - "Save %s in VM folder:" default-name)))) - (gnus-make-directory (file-name-directory folder)) - (set-buffer gnus-original-article-buffer) + (setq folder + (cond ((eq folder 'default) default-name) + (folder folder) + (t (gnus-read-save-file-name + "Save %s in VM folder:" folder + gnus-mail-save-name gnus-newsgroup-name + gnus-current-headers 'gnus-newsgroup-last-mail)))) + (gnus-eval-in-buffer-window gnus-original-article-buffer (save-excursion (save-restriction (widen) (let ((vm-folder (gnus-vm-make-folder))) (vm-save-message folder) - (kill-buffer vm-folder)))) - ;; Remember the directory name to save articles. - (setq gnus-newsgroup-last-mail folder))) + (kill-buffer vm-folder)))))) (provide 'gnus-vm) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus-xmas.el --- a/lisp/gnus/gnus-xmas.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus-xmas.el Mon Aug 13 09:23:06 2007 +0200 @@ -181,6 +181,26 @@ (gnus-horizontal-recenter) (select-window selected)))))) +(defun gnus-xmas-summary-set-display-table () + ;; Setup the display table -- like gnus-summary-setup-display-table, + ;; but done in an XEmacsish way. + (let ((table (make-display-table)) + ;; Nix out all the control chars... + (i 32)) + (while (>= (setq i (1- i)) 0) + (aset table i [??])) + ;; ... but not newline and cr, of course. (cr is necessary for the + ;; selective display). + (aset table ?\n nil) + (aset table ?\r nil) + ;; We nix out any glyphs over 126 that are not set already. + (let ((i 256)) + (while (>= (setq i (1- i)) 127) + ;; Only modify if the entry is nil. + (or (aref table i) + (aset table i [??])))) + (add-spec-to-specifier current-display-table table (current-buffer) nil))) + (defun gnus-xmas-add-hook (hook function &optional append local) (add-hook hook function)) @@ -442,7 +462,7 @@ (defun gnus-xmas-redefine () "Redefine lots of Gnus functions for XEmacs." - (fset 'gnus-summary-make-display-table 'ignore) + (fset 'gnus-summary-set-display-table 'gnus-xmas-summary-set-display-table) (fset 'gnus-visual-turn-off-edit-menu 'identity) (fset 'gnus-summary-recenter 'gnus-xmas-summary-recenter) (fset 'gnus-extent-start-open 'gnus-xmas-extent-start-open) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/gnus.el --- a/lisp/gnus/gnus.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/gnus.el Mon Aug 13 09:23:06 2007 +0200 @@ -226,7 +226,7 @@ :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) -(defconst gnus-version-number "5.4.33" +(defconst gnus-version-number "5.4.37" "Version number for this version of Gnus.") (defconst gnus-version (format "Gnus v%s" gnus-version-number) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/message.el --- a/lisp/gnus/message.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/message.el Mon Aug 13 09:23:06 2007 +0200 @@ -113,7 +113,6 @@ :group 'message-buffers :type 'function) -;;;###autoload (defcustom message-fcc-handler-function 'message-output "*A function called to save outgoing articles. This function will be called with the name of the file to store the @@ -1656,7 +1655,8 @@ (defun message-kill-buffer () "Kill the current buffer." (interactive) - (when (yes-or-no-p "Kill the buffer? ") + (when (or (not (buffer-modified-p)) + (yes-or-no-p "Message modified; kill anyway? ")) (let ((actions message-kill-actions)) (kill-buffer (current-buffer)) (message-do-actions actions)))) @@ -2461,7 +2461,8 @@ (defun message-make-from () "Make a From header." - (let* ((login (message-make-address)) + (let* ((style message-from-style) + (login (message-make-address)) (fullname (or (and (boundp 'user-full-name) user-full-name) @@ -2471,11 +2472,11 @@ (save-excursion (message-set-work-buffer) (cond - ((or (null message-from-style) + ((or (null style) (equal fullname "")) (insert login)) - ((or (eq message-from-style 'angles) - (and (not (eq message-from-style 'parens)) + ((or (eq style 'angles) + (and (not (eq style 'parens)) ;; Use angles if no quoting is needed, or if parens would ;; need quoting too. (or (not (string-match "[^- !#-'*+/-9=?A-Z^-~]" fullname)) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/nnbabyl.el --- a/lisp/gnus/nnbabyl.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/nnbabyl.el Mon Aug 13 09:23:06 2007 +0200 @@ -335,10 +335,13 @@ (delete-region (point) (progn (forward-line 1) (point))))) (when nnmail-cache-accepted-message-ids (nnmail-cache-insert (nnmail-fetch-field "message-id"))) - (setq result (car (nnbabyl-save-mail - (if (stringp group) - (list (cons group (nnbabyl-active-number group))) - (nnmail-article-group 'nnbabyl-active-number))))) + (setq result + (if (stringp group) + (list (cons group (nnbabyl-active-number group))) + (nnmail-article-group 'nnbabyl-active-number))) + (if (null result) + (setq result 'junk) + (setq result (car (nnbabyl-save-mail result)))) (set-buffer nnbabyl-mbox-buffer) (goto-char (point-max)) (search-backward "\n\^_") diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/nnfolder.el --- a/lisp/gnus/nnfolder.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/nnfolder.el Mon Aug 13 09:23:06 2007 +0200 @@ -225,7 +225,7 @@ (let ((bufs nnfolder-buffer-alist)) (save-excursion (while bufs - (if (not (buffer-live-p (nth 1 (car bufs)))) + (if (not (gnus-buffer-live-p (nth 1 (car bufs)))) (setq nnfolder-buffer-alist (delq (car bufs) nnfolder-buffer-alist)) (set-buffer (nth 1 (car bufs))) @@ -377,12 +377,14 @@ (delete-region (point) (progn (forward-line 1) (point)))) (when nnmail-cache-accepted-message-ids (nnmail-cache-insert (nnmail-fetch-field "message-id"))) - (setq result - (car (nnfolder-save-mail - (if (stringp group) - (list (cons group (nnfolder-active-number group))) - (setq art-group - (nnmail-article-group 'nnfolder-active-number))))))) + (setq result (if (stringp group) + (list (cons group (nnfolder-active-number group))) + (setq art-group + (nnmail-article-group 'nnfolder-active-number)))) + (if (null result) + (setq result 'junk) + (setq result + (car (nnfolder-save-mail result))))) (when last (save-excursion (nnfolder-possibly-change-folder (or (caar art-group) group)) @@ -682,6 +684,8 @@ (< maxid 2))) (goto-char (point-max)) (unless (re-search-backward marker nil t) + (goto-char (point-min))) + (when (nnmail-search-unix-mail-delim) (goto-char (point-min)))) ;; Keep track of the active number on our own, and insert it back diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/nnheader.el --- a/lisp/gnus/nnheader.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/nnheader.el Mon Aug 13 09:23:06 2007 +0200 @@ -57,8 +57,7 @@ (autoload 'mail-position-on-field "sendmail") (autoload 'message-remove-header "message") (autoload 'cancel-function-timers "timers") - (autoload 'gnus-point-at-eol "gnus-util") - (autoload 'gnus-buffer-live-p "gnus-util")) + (autoload 'gnus-point-at-eol "gnus-util")) ;;; Header access macros. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/nnmail.el --- a/lisp/gnus/nnmail.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/nnmail.el Mon Aug 13 09:23:06 2007 +0200 @@ -393,7 +393,9 @@ (defcustom nnmail-split-abbrev-alist '((any . "from\\|to\\|cc\\|sender\\|apparently-to\\|resent-from\\|resent-to\\|resent-cc") - (mail . "mailer-daemon\\|postmaster\\|uucp")) + (mail . "mailer-daemon\\|postmaster\\|uucp") + (to . "to\\|cc\\|apparently-to\\|resent-to\\|resent-cc") + (from . "from\\|sender\\|resent-from")) "Alist of abbreviations allowed in `nnmail-split-fancy'." :group 'nnmail-split :type '(repeat (cons :format "%v" symbol regexp))) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/nnmbox.el --- a/lisp/gnus/nnmbox.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/nnmbox.el Mon Aug 13 09:23:06 2007 +0200 @@ -306,10 +306,12 @@ (delete-region (point) (progn (forward-line 1) (point)))) (when nnmail-cache-accepted-message-ids (nnmail-cache-insert (nnmail-fetch-field "message-id"))) - (setq result (nnmbox-save-mail - (if (stringp group) - (list (cons group (nnmbox-active-number group))) - (nnmail-article-group 'nnmbox-active-number))))) + (setq result (if (stringp group) + (list (cons group (nnmbox-active-number group))) + (nnmail-article-group 'nnmbox-active-number))) + (if (null result) + (setq result 'junk) + (setq result (car (nnmbox-save-mail result))))) (save-excursion (set-buffer nnmbox-mbox-buffer) (goto-char (point-max)) @@ -319,7 +321,7 @@ (nnmail-cache-close)) (nnmail-save-active nnmbox-group-alist nnmbox-active-file) (save-buffer)))) - (car result))) + result)) (deffoo nnmbox-request-replace-article (article group buffer) (nnmbox-possibly-change-newsgroup group) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/nnmh.el --- a/lisp/gnus/nnmh.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/nnmh.el Mon Aug 13 09:23:06 2007 +0200 @@ -301,8 +301,10 @@ noinsert))) (and (nnmail-activate 'nnmh) - (car (nnmh-save-mail (nnmail-article-group 'nnmh-active-number) - noinsert)))) + (let ((resu|t (nnmail-article-group 'nnmh-active-number))) + (if (not result) + 'junk + (car (nnmh-save-mail result noinsert)))))) (when (and last nnmail-cache-accepted-message-ids) (nnmail-cache-close)))) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/gnus/nnml.el --- a/lisp/gnus/nnml.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/gnus/nnml.el Mon Aug 13 09:23:06 2007 +0200 @@ -325,8 +325,9 @@ (and last (nnml-save-nov)))) (and (nnmail-activate 'nnml) - (setq result (car (nnml-save-mail - (nnmail-article-group 'nnml-active-number)))) + (if (not (setq result (nnmail-article-group 'nnml-active-number))) + (setq result 'junk) + (setq result (car (nnml-save-mail result)))) (when last (nnmail-save-active nnml-group-alist nnml-active-file) (when nnmail-cache-accepted-message-ids diff -r f109f7dabbe2 -r 9f59509498e1 lisp/hm--html-menus/ANNOUNCEMENT --- a/lisp/hm--html-menus/ANNOUNCEMENT Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/hm--html-menus/ANNOUNCEMENT Mon Aug 13 09:23:06 2007 +0200 @@ -1,9 +1,9 @@ Hello, -I've written a new version (5.3) of my html package for the XEmacs +I've written a new version (5.5) of my html package for the XEmacs and the GNU Emacs 19. The name of the package is: - hm--html-menus-5.3.tar.gz + hm--html-menus-5.5.tar.gz With this package it is very easy to write html pages for the World Wide Web (WWW). Eg: In most cases the user gets help to construct a specific @@ -25,9 +25,8 @@ - a lot of bug fixes Read the NEWS file to see news in detail... -You should find hm--html-menus-5.3.tar.gz on the following ftp server: +You should find hm--html-menus-5.5.tar.gz on the following ftp server: sunsite.unc.edu in /pub/Linux/apps/editors/emacs/ - ftp.rrzn.uni-hannover.de in /pub/unix/editors/lemacs/contrib ftp.tnt.uni-hannover.de in /pub/editors/xemacs/contrib It may take some time, before the package is copied by the ftp admins @@ -40,20 +39,16 @@ can be used together with another html major mode, like the psgml-html mode in the XEmacs 19.14. -NOTE: This version is not tested with the Emacs 19. One of the next -releases in the near future will be a bug fix only release for the -Emacs 19. So please report any bugs to muenkel@tnt.uni-hannover.de. - The package provides functions to insert the following stuff in html-pages: 1. Anchors: relative links, general link; html link, info link, gopher link, file link; - ftp link, news link, mail link, wais (direct) link, + ftp link, news link, mailbox link, mailto link, wais (direct) link, wais (gateway) link; proggate link, local proggate link, link target; 2. Frame elements: - full html frame with doctype, html, head, body, title, + full html frame with doctype, doctype, html, head, body, title, header and signature elements or only the single elements; meta, isindex, link and base element; html 'created'- and 'changed'- comments; @@ -61,20 +56,20 @@ 3. Structure elements: menu or list item, menu, unordered list, ordered list, directory list; description list, description title, description entry; - new paragraph, new line, horizontal rule, document division, table, table title, table header, table row, table entry; + new paragraph, new line, horizontal rule, document division; 4. for formatting paragraphs: - without links, with links, blockquote, listing, abstract; - basefont, font, center; + preformated, blockquote; + basefont, font, center, style; + html comment; 5. formatting: bold, italic, underline, typewriter, strikethru, super and subscript, emphasized, strong, small, big, definition, keyboard, variable, code, sample, citation, - html comment; 6. include: top aligned image, middle aligned image, bottom aligned image; general image element, map, area and all together; - applet, parameter; + applet, parameter, script; 7. forms: form; text, password, isindex, integer, float, date, url, scribble fields; @@ -134,5 +129,3 @@ Heiko - - diff -r f109f7dabbe2 -r 9f59509498e1 lisp/hm--html-menus/NEWS --- a/lisp/hm--html-menus/NEWS Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/hm--html-menus/NEWS Mon Aug 13 09:23:06 2007 +0200 @@ -1,3 +1,50 @@ +25.03.97 + Fixed a bug in `hm--html-search-place-for-element-in-head'. + Fixed bugs in `hm--html-add-base' and `hm--html-add-isindex'. + Renamed all calls to `hm--html-add-mail-link*' to + `hm--html-add-mail-box-link*' - this fixed bugs in the menus and + keybindings. + Fixed `hm--html-frame-template-file'. + Fixed some keybinding bugs. + -- BUILDED the version 5.5 of the package -- +24.03.97 + Added the function `mouse-event-p' for the Emacs 19 to adapt.el. + The internal-drag-and-drop package uses know the function + `file-remote-p' instead of `ange-ftp-ftp-path'. If this + function is not available in an emacs, the function will be + defined and will use the function `ange-ftp-ftp-path'. + Fixed bugs in `idd-mouse-drag-and-drop-click' for the Emacs 19. +23.03.97 + Fixed some bugs, so that the package is now again loadable + in the Emacs 19 (19.34). + Changed popup-menu-up-p to popup-up-p, menu-event-p to + misc-user-event-p. + Fixed some other XEmacs compilation bugs. + Fixed bugs in `hm--html-add-isindex' and `hm--html-add-base'. + Moved the commands `hm--html-add-server-side-include-file', + `hm--html-add-server-side-include-command' and + `hm--html-add-server-side-include-command-with-isindex-parameter' + to hm--html-not-standard.el. + Fixed a bug in `hm--html-add-document-division-to-region'. + Deleted some obsolete stuff in `hm--html-add-link'. + Fixed bugs in `hm--html-add-basefont', `hm--html-add-mail-box-link', + `hm--html-add-mail-box-link-to-region', `idd-list-1-subset-of-list-2', + `idd-same-elements-p', `idd-start-mouse-drag-and-drop', + `idd-mouse-drag-and-drop-click', `idd-if-minor-mode-p', + `idd-if-modifiers-p' and `tmpl-read-template-filename'. +22.03.97 + Fixed some documentation bugs in tmpl-minor-mode.el. + Changed the key bindings in the tmpl-minor-mode. They are now + using all the prefix C-c C-c. + Fixed some documentation bugs in internal-drag-and-drop.el. + Added a package documentation as Texinfo file. It documents also + the included packages for internal drag and drop and for + templates. + -- BUILDED the version 5.4 of the package -- +18.03.97 + Applied a patch from Martin Buchholz , + to fix some spelling errors. + Changed the value of the variable `tmpl-sign' to \000. 25.02.97 Fixed two bugs, which occured during loading the mode after the psgml-html-mode. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/hm--html-menus/README --- a/lisp/hm--html-menus/README Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/hm--html-menus/README Mon Aug 13 09:23:06 2007 +0200 @@ -1,4 +1,4 @@ -This README file describes the emacs lisp package hm--html-menus-5.3. +This README file describes the emacs lisp package hm--html-menus-5.5. The package provides functions and various popup and pulldown menus for a html mode called hm--html-mode, a mode for writing html pages. @@ -27,12 +27,6 @@ and on PC's with linux. But it should work also on other (possibly only UNIX ?) platforms. -NOTE: The current release isn't tested with the Emacs 19 (5.0 is but -5.1 to 5.3 are not). One of the next releases in the near future :-) will be a -bug fix only release for the Emacs 19. So please report any bugs to -muenkel@tnt.uni-hannover.de to shorten the time until the Emacs 19 -related bugs are fixed. - Read the file README-EMACS-19, if you want to use this package with GNU Emacs 19. @@ -62,19 +56,17 @@ of the hm--html-mode; this is now the main file of the package; hm--html-not-standard.el : provides functions to insert some - non standard hteml elements; + non standard html elements; this file is not evaluated by default; hm--html-configuration.el : configuration file for the html mode; choose this as system configuration file; hm--html-drag-and-drop.el : defines the HTML- specific functions for the drag and drop interface; -hm--html-indentation.el : defines functions for the indentation of - HTML elements; hm--date.el : defines the function hm--date, which returns the date in the format "day-month-year" like "30-Jun-1993". html-view.el : Ron Tapia's html-view.el to view html-pages - in the Xmosaic; it is patched for use + in the Xmosaic; it is patched for the use with the xemacs; internal-drag-and-drop.el : provides the general (html-mode independend functions) of the drag and @@ -85,7 +77,7 @@ with this mode you can expand templates, which are described in the file templates-syntax.doc (look at the files - command-description.tmpl and + command-description.html.tmpl and frame.html.tmpl for examples); templates can be expanded automatically, if you include a file with templates via the @@ -94,7 +86,9 @@ command-description.html.tmpl : Templatefile for the use with the tmpl-minor-mode; frame.html.tmpl : Templatefile, provides a simple frame; - +doc/hm--html-mode.texinfo : Package documentation in the Texinfo format; +doc/umlaute.texinfo : Texinfo include file for german vowel + mutation (deutsche Umlaute); @@ -104,7 +98,7 @@ Note: In this version the setting of the environment variables HTML_CONFIG_FILE and HTML_USER_CONFIG_FILE are no longer necessary, -if you put the user configuration file in the home directrory and +if you put the user configuration file in the home directory and the system configuration file in one of the load path directories of your XEmacs or Emacs 19. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/hm--html-menus/adapt.el --- a/lisp/hm--html-menus/adapt.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/hm--html-menus/adapt.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,6 +1,6 @@ -;;; $Id: adapt.el,v 1.2 1997/02/15 22:21:03 steve Exp $ +;;; $Id: adapt.el,v 1.3 1997/03/28 02:28:41 steve Exp $ ;;; -;;; Copyright (C) 1993, 1994, 1995 Heiko Muenkel +;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de ;;; ;;; This program is free software; you can redistribute it and/or modify @@ -20,7 +20,7 @@ ;;; ;;; Description: ;;; -;;; General functions to port Lucid Emacs to GNU Emacs 19. +;;; General functions to port XEmacs functions to GNU Emacs 19. ;;; ;;; Installation: ;;; @@ -47,7 +47,7 @@ (not (adapt-xemacsp)) (string= (substring emacs-version 0 2) "19"))) -;;; Functions, which doesn't exist in both emacses +;;; Functions, which don't exist in both emacs versions (defun adapt-region-active-p () "Returns t, if a region is active." @@ -55,7 +55,19 @@ (mark) mark-active)) +(if (not (fboundp 'file-remote-p)) + (defun file-remote-p (file) + "Test wether file resides on the local system. +The special value 'unknown is returned if no remote file acess package +has been loaded." + (if (not (featurep 'ange-ftp)) + (require 'ange-ftp)) + (if (not (fboundp 'ange-ftp-ftp-p)) + nil ; better than nothing, if no ange-ftp-ftp-p exists + (ange-ftp-ftp-path file)))) + +;;; Functions, which don't exist in the Emacs 19 (if (adapt-emacs19p) (progn (load-library "lucid") @@ -238,6 +250,20 @@ (and (button-event-p obj) (not (button-press-event-p obj))))) + (if (not (fboundp 'button-click-event-p)) + (defun button-click-event-p (obj) + "True if OBJ is a click event obkect." + ;; only for the Emacs 19 + ;; doesn't exist and can't (?) exist in the XEmacs + (and (button-event-p obj) + (member 'click (event-modifiers obj))))) + + (if (not (fboundp 'mouse-event-p)) + (defun mouse-event-p (obj) + "True if OBJ is a button-press, button-release, or mouse-motion event object." + (or (button-event-p obj) + (member 'drag (event-modifiers obj))))) + (if (not (fboundp 'event-window)) (defun event-window (event) "Return the window of the given mouse event. @@ -316,6 +342,9 @@ (if (not (fboundp 'redraw-modeline)) (defalias 'redraw-modeline 'force-mode-line-update)) + (if (not (fboundp 'mouse-track)) + (defalias 'mouse-track 'mouse-drag-region)) + )) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/hm--html-menus/hm--html-configuration.el --- a/lisp/hm--html-menus/hm--html-configuration.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-configuration.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,6 +1,6 @@ ;;; hm--html-configuration.el - Configurationfile for the html-mode ;;; -;;; $Id: hm--html-configuration.el,v 1.4 1997/02/27 06:08:08 steve Exp $ +;;; $Id: hm--html-configuration.el,v 1.5 1997/03/28 02:28:41 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -24,7 +24,7 @@ ;;; ;;; This file is for the system wide configuration of the html mode. ;;; User specific configuration should be done in the file -;;; ~/.hm--html-configuration.el, which preceeds the settings in +;;; ~/.hm--html-configuration.el, which precedes the settings in ;;; this file. ;;; All settings in this file are done with defvar's, therefore ;;; you could overwrite them also with the function setq in your @@ -191,6 +191,10 @@ ) "*Alist with hostnames and ports for the gopher server.") +(defvar hm--html-gopher-hostname:port-default + "newsserver.rrzn.uni-hannover.de:70" + "*Default hostname with port for the gopher server.") + (defvar hm--html-gopher-doctype-alist '(("/1") ("/11") ("/00")) @@ -199,10 +203,6 @@ (defvar hm--html-gopher-doctype-default "/1" "*Default doctype string for the gopher server.") -(defvar hm--html-gopher-hostname:port-default - "newsserver.rrzn.uni-hannover.de:70" - "*Default hostname with port for the gopher server.") - (defvar hm--html-gopher-anchor-alist '(("veronica") ("Wide%20Area%20Information%20Services%20databases") @@ -338,7 +338,7 @@ (defvar hm--html-frame-template-file (concat data-directory "../lisp/hm--html-menus/" - "frame.tmpl") + "frame.html.tmpl") "File, which is used as template for a html frame.") (defvar hm--html-automatic-expand-templates t @@ -381,7 +381,7 @@ ;;; Keybindings: (defvar hm--html-bind-latin-1-char-entities t - "Set this to nil, if you don't want to use the ISO Latin 1 charcter entities. + "Set this to nil, if you don't want to use the ISO Latin 1 character entities. This is only useful, if `hm--html-use-old-keymap' is set to nil. It is only used during loading the html package the first time.") @@ -410,7 +410,7 @@ (((idd-if-local-file-p . t)) hm--html-idd-add-file-link-to-buffer))) "The action list for the destination mode `hm--html-mode'. -Look at the description of the variable idd-actions") +Look at the description of the variable idd-actions.") ;;; The font lock keywords @@ -458,7 +458,7 @@ "*Hook variable to execute functions after loading the package.") (defvar hm--html-mode-hook nil - "This hook will be called each time, when the hm--html-mode is invoked.") + "*This hook will be called each time, when the hm--html-mode is invoked.") ;;; For the file html-view.el @@ -466,7 +466,7 @@ ;;; Look at that file, if you've trouble with the functions ;;; to preview the html document with the Mosaic (defvar html-view-mosaic-command "/sol/www/bin/mosaic" - "The command that runs Mosaic on your system") + "The command that runs Mosaic on your system.") (defvar html-sigusr1-signal-value 16 "Value for the SIGUSR1 signal on your system. @@ -620,7 +620,7 @@ ("script" (:hm--html-two-element-tag t)) ) "An alist with tag names known by the `hm--html-mode'. -CURRENTLY THIS LIST CONTAINS NOT ALL TAGS!!!!. +CURRENTLY THIS LIST MIGHT NOT CONTAIN ALL TAGS!!!!. It is used to determine, if a tag is a one element tag or not. diff -r f109f7dabbe2 -r 9f59509498e1 lisp/hm--html-menus/hm--html-keys.el --- a/lisp/hm--html-menus/hm--html-keys.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-keys.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: hm--html-keys.el,v 1.4 1997/02/27 06:08:09 steve Exp $ +;;; $Id: hm--html-keys.el,v 1.5 1997/03/28 02:28:41 steve Exp $ ;;; ;;; Copyright (C) 1995, 1996, 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -56,7 +56,7 @@ (define-key hm--html-noregion-anchor-map "f" 'hm--html-add-file-link) (define-key hm--html-noregion-anchor-map "\C-f" 'hm--html-add-ftp-link) (define-key hm--html-noregion-anchor-map "n" 'hm--html-add-news-link) - (define-key hm--html-noregion-anchor-map "m" 'hm--html-add-mail-link) + (define-key hm--html-noregion-anchor-map "m" 'hm--html-add-mail-box-link) (define-key hm--html-noregion-anchor-map [(control m)] 'hm--html-add-mailto-link) (define-key hm--html-noregion-anchor-map "w" 'hm--html-add-direct-wais-link) @@ -84,7 +84,7 @@ (define-key hm--html-region-anchor-map "\C-f" 'hm--html-add-ftp-link-to-region) (define-key hm--html-region-anchor-map "n" 'hm--html-add-news-link-to-region) - (define-key hm--html-region-anchor-map "m" 'hm--html-add-mail-link-to-region) + (define-key hm--html-region-anchor-map "m" 'hm--html-add-mail-box-link-to-region) (define-key hm--html-region-anchor-map [(control m)] 'hm--html-add-mailto-link-to-region) (define-key hm--html-region-anchor-map @@ -229,13 +229,13 @@ (define-key hm--html-noregion-formating-paragraph-map "b" 'hm--html-add-blockquote) (define-key hm--html-noregion-formating-paragraph-map - "C-b" 'hm--html-add-basefont) + "\C-b" 'hm--html-add-basefont) (define-key hm--html-noregion-formating-paragraph-map "f" 'hm--html-add-font) (define-key hm--html-noregion-formating-paragraph-map "c" 'hm--html-add-center) (define-key hm--html-noregion-formating-paragraph-map - "C-c" 'hm--html-add-comment-to-region) + "\C-c" 'hm--html-add-comment) ; (define-key hm--html-noregion-formating-paragraph-map ; "l" 'hm--html-add-listing) ; (define-key hm--html-noregion-formating-paragraph-map @@ -255,13 +255,13 @@ (define-key hm--html-region-formating-paragraph-map "b" 'hm--html-add-blockquote-to-region) (define-key hm--html-region-formating-paragraph-map - "C-b" 'hm--html-add-basefont-to-region) + "\C-b" 'hm--html-add-basefont-to-region) (define-key hm--html-region-formating-paragraph-map "f" 'hm--html-add-font-to-region) (define-key hm--html-region-formating-paragraph-map "c" 'hm--html-add-center-to-region) (define-key hm--html-region-formating-paragraph-map - "C-c" 'hm--html-add-comment-to-region) + "\C-c" 'hm--html-add-comment-to-region) ; (define-key hm--html-region-formating-paragraph-map ; "l" 'hm--html-add-listing-to-region) ; (define-key hm--html-region-formating-paragraph-map diff -r f109f7dabbe2 -r 9f59509498e1 lisp/hm--html-menus/hm--html-menu.el --- a/lisp/hm--html-menus/hm--html-menu.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-menu.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,6 +1,6 @@ ;;; hm--html-menu --- A menu for the hm--html-mode. ;;; -;;; $Id: hm--html-menu.el,v 1.4 1997/02/27 06:08:09 steve Exp $ +;;; $Id: hm--html-menu.el,v 1.5 1997/03/28 02:28:41 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -64,7 +64,7 @@ "----" ["Ftp link..." hm--html-add-ftp-link t] ["News link..." hm--html-add-news-link t] - ["Mailbox link..." hm--html-add-mail-link t] + ["Mailbox link..." hm--html-add-mail-box-link t] ["Mailto link..." hm--html-add-mailto-link t] ["Wais link (direct)..." hm--html-add-direct-wais-link t] ["Wais link (gateway)..." hm--html-add-wais-link t] @@ -189,7 +189,7 @@ ; ("Literature" ; ["Quote" hm--html-add-quote t] ; ["Acronym" hm--html-add-acronym t] -; ["Abbrevation" hm--html-add-abbrevation t] +; ["Abbreviation" hm--html-add-abbreviation t] ; ["Citation" hm--html-add-citation t] ; ["Literature" hm--html-add-literature t] ; ["Publication" hm--html-add-publication t] @@ -312,7 +312,7 @@ "----" ["Ftp link..." hm--html-add-ftp-link-to-region t] ["News link..." hm--html-add-news-link-to-region t] - ["Mailbox link..." hm--html-add-mail-link-to-region t] + ["Mailbox link..." hm--html-add-mail-box-link-to-region t] ["Mailto link..." hm--html-add-mailto-link-to-region t] ["WAIS link (direct)..." hm--html-add-direct-wais-link-to-region t] ["WAIS link (gateway)..." hm--html-add-wais-link-to-region t] @@ -534,7 +534,9 @@ (if (and current-menubar (not (assoc menu-name current-menubar))) (progn (set-buffer-menubar (copy-sequence current-menubar)) - (add-submenu nil (cons menu-name (cdr hm--html-pulldown-menu)) "HTML")))) + (add-submenu nil + (cons menu-name (cdr hm--html-pulldown-menu)) + "HTML")))) (defun hm--install-html-menu (menu-name) (if (eq major-mode 'hm--html-mode) @@ -688,9 +690,9 @@ (car menudesc) ; "==") ; (cdr menudesc))) ; - (while (popup-menu-up-p) + (while (popup-up-p) (setq event (next-command-event event)) - (cond ((menu-event-p event) + (cond ((misc-user-event-p event) (cond ((eq (event-object event) 'abort) (signal 'quit nil)) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/hm--html-menus/hm--html-mode.el --- a/lisp/hm--html-menus/hm--html-mode.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/hm--html-menus/hm--html-mode.el Mon Aug 13 09:23:06 2007 +0200 @@ -2,7 +2,7 @@ ;;; ;;; Keywords: hypermedia languages help docs wp ;;; -;;; $Id: hm--html-mode.el,v 1.4 1997/02/27 06:08:09 steve Exp $ +;;; $Id: hm--html-mode.el,v 1.5 1997/03/28 02:28:42 steve Exp $ ;;; ;;; Copyright (C) 1996, 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -68,21 +68,29 @@ (require 'font-lock) +(require 'cl) (require 'adapt) (require 'hm--date) (require 'hm--html) +;(require 'hm--html-not-standard) (eval-when-compile (require 'hm--html-configuration)) (hm--html-load-config-files) (require 'hm--html-indentation) -(require 'hm--html-keys) (defvar hm--html-minor-mode nil "Non-nil, if the `hm--html-minor-mode' is active.") (require 'hm--html-menu) + +(require 'hm--html-keys) + +;(defvar hm--html-minor-mode nil +; "Non-nil, if the `hm--html-minor-mode' is active.") +; +;(require 'hm--html-menu) (require 'hm--html-drag-and-drop) @@ -91,7 +99,7 @@ (defconst hm--html-menus-package-name "hm--html-menus") -(defconst hm--html-menus-package-version "5.3") +(defconst hm--html-menus-package-version "5.5") ;;; Generate the help buffer faces diff -r f109f7dabbe2 -r 9f59509498e1 lisp/hm--html-menus/hm--html-not-standard.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/hm--html-menus/hm--html-not-standard.el Mon Aug 13 09:23:06 2007 +0200 @@ -0,0 +1,439 @@ +;;; hm--html-not-standard.el +;;; v1.00; 22-Feb-1997 +;;; Copyright (C) 1997 Heiko Muenkel +;;; email: muenkel@tnt.uni-hannover.de +;;; +;;; This program is free software; you can redistribute it and/or modify +;;; it under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 2, or (at your option) +;;; any later version. +;;; +;;; This program is distributed in the hope that it will be useful, +;;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with this program; if not, write to the Free Software +;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +;;; +;;; +;;; Description: +;;; +;;; This file contains lisp code for the insertation of non standard +;;; HTML 3.2 elements. I don't think, that's a good idea to use this +;;; elements in any HTML documents :-) +;;; +;;; Installation: +;;; +;;; Put this file in one of your load path directories. +;;; +;;; Put a (require 'hm--html-not-standard) in your .emacs +;;; +;;; Look at the files hm--html-mode.el and hm--html-configuration +;;; for further installation points. +;;; + +;(require 'hm--html-mode) + +(defun hm--html-add-server-side-include-command-with-parameter (command + parameter) + "This function adds a server side include command directive in the buffer. +The directive is only supported by the NCSA http daemon." + (interactive (list + (completing-read + "Include Command: " + hm--html-server-side-include-command-with-parameter-alist) + (read-string "Parameterlist sepearted by '?': "))) + (if (string= command "") + (error "ERROR: No command specified !") + (if (string= parameter "") + (error "ERROR: No parameter specified !") + (if (= ?| (string-to-char command)) + (if (= ?? (string-to-char parameter)) + (insert "") + (insert "")) + (if (= ?? (string-to-char parameter)) + (insert "") + (insert "")))))) + + +(defun hm--html-add-server-side-include-command-with-isindex-parameter + (command) + "This function adds a server side include command directive in the buffer. +The include command uses the \"isindex\"- parameter for the specified command." + (interactive (list + (completing-read "Include Command: " + hm--html-server-side-include-command-alist))) + (hm--html-add-server-side-include-command command t)) + + +(defun hm--html-add-server-side-include-command (command &optional srvurl) + "This function adds a server side include command directive in the buffer. +The directive is only supported by the NCSA http daemon. +If SRVURL is t, then the attribute srvurl instead of srv is used for the +include command. With srvurl, the include command uses the \"isindex\"- +parameter for the specified command." + (interactive (list + (completing-read "Include Command: " + hm--html-server-side-include-command-alist))) + (let ((attribute (if srvurl "SRVURL" "SRV"))) + (if (string= command "") + (error "ERROR: No command specified !") + (if (= ?| (string-to-char command)) + (insert "") + (insert ""))))) + + +(defun hm--html-add-server-side-include-file (file) + "This function adds a server side include file directive in the buffer. +The directive is only supported by the NCSA http daemon." + (interactive "FInclude File: ") + (if (string= file "") + (error "ERROR: No filename specified !") + (insert ""))) + + +(defun hm--html-add-plaintext () + "Adds the HTML tags for plaintext." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline + "" + 'hm--html-insert-end-tag-with-newline + "")) + + +(defun hm--html-add-plaintext-to-region () + "Adds the HTML tags for plaintext to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline + "" + 'hm--html-insert-end-tag-with-newline + "")) + + +(defun hm--html-add-abstract () + "Adds the HTML tags for abstract text at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline + "" + 'hm--html-insert-end-tag-with-newline + "")) + + +(defun hm--html-add-abstract-to-region () + "Adds the HTML tags for abstract text to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline + "" + 'hm--html-insert-end-tag-with-newline + "")) + + +(defun hm--html-add-quote () + "Adds the HTML tags for Quote at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-quote-to-region () + "Adds the HTML tags for Quote to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-person () + "Adds the HTML tags for Person at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-person-to-region () + "Adds the HTML tags for Person to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-instance () + "Adds the HTML tags for Instance at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-instance-to-region () + "Adds the HTML tags for Instance to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-publication () + "Adds the HTML tags for Publication at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-publication-to-region () + "Adds the HTML tags for Publication to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-author () + "Adds the HTML tags for Author at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-author-to-region () + "Adds the HTML tags for Author to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-editor () + "Adds the HTML tags for Editor at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-editor-to-region () + "Adds the HTML tags for Editor to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-credits () + "Adds the HTML tags for Credits at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-credits-to-region () + "Adds the HTML tags for Credits to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-copyright () + "Adds the HTML tags for Copyright at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-copyright-to-region () + "Adds the HTML tags for Copyright to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-isbn () + "Adds the HTML tags for ISBN at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-isbn-to-region () + "Adds the HTML tags for ISBN to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-acronym () + "Adds the HTML tags for Acronym at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-acronym-to-region () + "Adds the HTML tags for Acronym to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-abbrevation () + "Adds the HTML tags for Abbrevation at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-abbrev-to-region () + "Adds the HTML tags for Abbrev to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-command () + "Adds the HTML tags for Command at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-command-to-region () + "Adds the HTML tags for Command to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-argument () + "Adds the HTML tags for Argument at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-argument-to-region () + "Adds the HTML tags for Argument to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-literature () + "Adds the HTML tags for Literature at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-literature-to-region () + "Adds the HTML tags for Literature to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-footnote () + "Adds the HTML tags for Footnote at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-footnote-to-region () + "Adds the HTML tags for Footnote to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-margin () + "Adds the HTML tags for Margin at the point in the current buffer." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-margin-to-region () + "Adds the HTML tags for Margin to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag + "" + 'hm--html-insert-end-tag + "")) + + +(defun hm--html-add-listing () + "Adds the HTML tags for listing." + (interactive) + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline + "" + 'hm--html-insert-end-tag-with-newline + "")) + + +(defun hm--html-add-listing-to-region () + "Adds the HTML tags for listing to the region." + (interactive) + (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline + "" + 'hm--html-insert-end-tag-with-newline + "")) + + +(provide 'hm--html-not-standard) diff -r f109f7dabbe2 -r 9f59509498e1 lisp/hm--html-menus/hm--html.el --- a/lisp/hm--html-menus/hm--html.el Mon Aug 13 09:21:56 2007 +0200 +++ b/lisp/hm--html-menus/hm--html.el Mon Aug 13 09:23:06 2007 +0200 @@ -1,4 +1,4 @@ -;;; $Id: hm--html.el,v 1.4 1997/02/27 06:08:10 steve Exp $ +;;; $Id: hm--html.el,v 1.5 1997/03/28 02:28:42 steve Exp $ ;;; ;;; Copyright (C) 1993 - 1997 Heiko Muenkel ;;; email: muenkel@tnt.uni-hannover.de @@ -153,7 +153,7 @@ "Adds the HTML tag for a basefont." (interactive (list (hm--html-read-font-size t))) (hm--html-add-tags 'hm--html-insert-start-tag - (concate ""))) + (concat ""))) (defun hm--html-add-line-break () "Adds the HTML tag for a line break." @@ -207,13 +207,14 @@ (point) (goto-char (point-min)) (if (re-search-forward - (concat "\\(]*>" head-end-point t) - (delete-region (match-beginning 0) (match-end 0))) - (t (goto-char point) - (hm--html-search-place-for-element-in-head head-end-point))) - (hm--html-add-tags 'hm--html-insert-start-tag - (concat "") - ">"))))) + (point))) + (goto-char (point-min)) + (cond ((re-search-forward "]*>" head-end-point t) + (delete-region (match-beginning 0) (match-end 0))) + (t (goto-char point) + (hm--html-search-place-for-element-in-head head-end-point))) + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline + (concat "") + ">")))))) (defun hm--html-add-base (href) "Inserts the base tag. HREF is the value of the href attribute." @@ -253,17 +255,18 @@ (setq head-end-point (when (re-search-forward "\\(]*>" head-end-point t) - (delete-region (match-beginning 0) (match-end 0))) - (t (goto-char point) - (hm--html-search-place-for-element-in-head head-end-point))) - (hm--html-add-tags 'hm--html-insert-start-tag - (concat "") - ">"))))) + (point))) + (goto-char (point-min)) + (cond ((re-search-forward "]*>" head-end-point t) + (delete-region (match-beginning 0) (match-end 0))) + (t (goto-char point) + (hm--html-search-place-for-element-in-head head-end-point))) + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline + (concat "") + ">")))))) (defun hm--html-add-meta (name content &optional name-instead-of-http-equiv) "Inserts the meta tag." @@ -280,7 +283,7 @@ (point))) (goto-char point) (hm--html-search-place-for-element-in-head head-end-point) - (hm--html-add-tags 'hm--html-insert-start-tag + (hm--html-add-tags 'hm--html-insert-start-tag-with-newline (concat ""))) + +(when (adapt-emacs19p) + (defvar :ask ':ask)) + (defvar hm--html-use-image-as-map ':ask "Internal variable of `hm--html-add-image'. nil => insert the image element without an usemap attribute. @@ -549,43 +556,6 @@ "\">"))) -(defun hm--html-add-server-side-include-file (file) - "This function adds a server side include file directive in the buffer. -The directive is only supported by the NCSA http daemon." - (interactive "FInclude File: ") - (let ((start (point))) - (if (string= file "") - (error "ERROR: No filename specified !") - (insert "")))) - - -(defun hm--html-add-server-side-include-command-with-isindex-parameter - (command) - "This function adds a server side include command directive in the buffer. -The include command uses the \"isindex\"- parameter for the specified command." - (interactive (list - (completing-read "Include Command: " - hm--html-server-side-include-command-alist))) - (hm--html-add-server-side-include-command command t)) - - -(defun hm--html-add-server-side-include-command (command &optional srvurl) - "This function adds a server side include command directive in the buffer. -The directive is only supported by the NCSA http daemon. -If SRVURL is t, then the attribute srvurl instead of srv is used for the -include command. With srvurl, the include command uses the \"isindex\"- -parameter for the specified command." - (interactive (list - (completing-read "Include Command: " - hm--html-server-side-include-command-alist))) - (let ((start (point)) - (attribute (if srvurl "SRVURL" "SRV"))) - (if (string= command "") - (error "ERROR: No command specified !") - (if (= ?| (string-to-char command)) - (insert "") - (insert ""))))) - ;;; Functions, which adds tags of the form ... @@ -865,7 +835,7 @@ "")) -(defun hm--html-add-document-division-to-region () +(defun hm--html-add-document-division-to-region (alignment) "Adds the HTML tags for document division to the region." (interactive (list (hm--html-read-alignment "Alignment of the division: "))) (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline @@ -1071,7 +1041,7 @@ "")) -(defun hm--html-add-font-to-region () +(defun hm--html-add-font-to-region (size color) "Adds the HTML tags for Font to the region." (interactive (list (hm--html-read-font-size) (hm--html-read-font-color))) @@ -1975,58 +1945,58 @@ value and an example string. The ANCHOR-PARAMETER-LIST has as an additional element an anchor seperator string. All these elements are used to read and construct the link." - (let ((point nil)) - (save-window-excursion - (let ((html-buffer (current-buffer)) - (html-help-buffer (hm--html-generate-add-link-help-buffer - scheme-parameter-list - host-name:port-parameter-list - servername:port-parameter-list - path+file-parameter-list - anchor-parameter-list)) - (scheme (hm--html-completing-read scheme-parameter-list)) - (hostname:port (hm--html-completing-read - host-name:port-parameter-list)) - (servername:port (hm--html-completing-read - servername:port-parameter-list)) - (path+file (hm--html-read-filename path+file-parameter-list)) - (anchor (hm--html-completing-read anchor-parameter-list)) -; (hrefname (setq html-link-counter (1+ html-link-counter))) - (anchor-seperator - (hm--html-get-anchor-seperator-from-parameter-list - anchor-parameter-list))) - (if (not (string= scheme "")) - (if (string= hostname:port "") - (setq scheme (concat scheme ":")) - (setq scheme (concat scheme "://")))) - (if (and (not (string= hostname:port "")) - (not (string= servername:port "")) - (not (string= (substring servername:port 0 1) "/"))) - (setq servername:port (concat "/" servername:port))) - (if (and (not (string= path+file "")) - (not (string= "/" (substring path+file 0 1)))) - (setq path+file (concat "/" path+file))) - (if (not (string= anchor "")) - (setq anchor (concat anchor-seperator anchor))) - (kill-buffer html-help-buffer) - (pop-to-buffer html-buffer) - (eval (list function-add-tags - ''hm--html-insert-start-tag - (concat "") - ''hm--html-insert-end-tag - ""))) - (setq point (point)))) - (goto-char (point))) - + " HREF=\"" + scheme + hostname:port + servername:port + path+file + anchor + "\">") + ''hm--html-insert-end-tag + ""))) +; (setq point (point)))) +; (goto-char (point))) + )) (defun hm--html-add-info-link-1 (function-add-tags) "Internal function. Adds the HTML tags for a link on a GNU Info file." @@ -2503,7 +2473,7 @@ (defun hm--html-make-newsgroup-alist () "Makes a hm--html-make-newsgroup-alist from a .newsrc.el file. The function looks at the environment variable NNTPSERVER. -If this variable exists, it trys to open the file with the Name +If this variable exists, it tries to open the file with the Name ~/$NNTPSERVER.el. If this file exists, the alist of the file is returned as the newsgroup-alist. If the file doesn't exist, it tries to use the file ~/$NNTPSERVER to make the alist. The function @@ -2623,13 +2593,13 @@ (defun hm--html-add-mail-box-link () "Adds the HTML tags for a link to a mail box." (interactive) - (hm--html-add-mail-link-1 'hm--html-add-tags)) + (hm--html-add-mail-box-link-1 'hm--html-add-tags)) (defun hm--html-add-mail-box-link-to-region () "Adds the HTML tags for a link to a mail box to the region." (interactive) - (hm--html-add-mail-link-1 'hm--html-add-tags-to-region)) + (hm--html-add-mail-box-link-1 'hm--html-add-tags-to-region)) (defun hm--html-add-mailto-link-1 (function-add-tags) @@ -2801,25 +2771,25 @@ (if (not (search-forward "" end-of-head t)) (if (not noerror) (error "ERROR: Please insert a title in the document !")) - (let ((end-of-title-position (point))) - (if (search-forward "