Mercurial > emacs
changeset 83255:9684495d72bc
Merged from miles@gnu.org--gnu-2005 (patch 14-16, 95-106)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-95
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-96
Move Gnus images into etc/images
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-97
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-98
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-99
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-100
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-101
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-102
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-103
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-104
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-105
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-106
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-14
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-15
Update from CVS: lisp/imap.el (imap-log): Doc fix.
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-16
Merge from emacs--cvs-trunk--0
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-295
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sat, 19 Feb 2005 00:06:48 +0000 |
parents | e9810bf10871 (current diff) cf2460efae4d (diff) |
children | 389421e988c2 |
files | admin/FOR-RELEASE etc/TODO lisp/ChangeLog lisp/gnus/bar.xbm lisp/gnus/bar.xpm lisp/gnus/blink.pbm lisp/gnus/blink.xpm lisp/gnus/braindamaged.xpm lisp/gnus/catchup.pbm lisp/gnus/catchup.xpm lisp/gnus/cry.xpm lisp/gnus/cu-exit.pbm lisp/gnus/cu-exit.xpm lisp/gnus/dead.xpm lisp/gnus/describe-group.pbm lisp/gnus/describe-group.xpm lisp/gnus/evil.xpm lisp/gnus/exit-gnus.pbm lisp/gnus/exit-gnus.xpm lisp/gnus/exit-summ.pbm lisp/gnus/exit-summ.xpm lisp/gnus/followup.pbm lisp/gnus/followup.xpm lisp/gnus/forced.xpm lisp/gnus/frown.pbm lisp/gnus/frown.xpm lisp/gnus/fuwo.pbm lisp/gnus/fuwo.xpm lisp/gnus/get-news.pbm lisp/gnus/get-news.xpm lisp/gnus/gnntg.pbm lisp/gnus/gnntg.xpm lisp/gnus/gnus-pointer.xbm lisp/gnus/gnus-pointer.xpm lisp/gnus/gnus.xbm lisp/gnus/gnus.xpm lisp/gnus/grin.xpm lisp/gnus/important.xpm lisp/gnus/indifferent.xpm lisp/gnus/kill-group.pbm lisp/gnus/kill-group.xpm lisp/gnus/mail-reply.pbm lisp/gnus/mail-reply.xpm lisp/gnus/next-ur.pbm lisp/gnus/next-ur.xpm lisp/gnus/post.pbm lisp/gnus/post.xpm lisp/gnus/prev-ur.pbm lisp/gnus/prev-ur.xpm lisp/gnus/preview.xbm lisp/gnus/preview.xpm lisp/gnus/receipt.xpm lisp/gnus/reply-wo.pbm lisp/gnus/reply-wo.xpm lisp/gnus/reply.pbm lisp/gnus/reply.xpm lisp/gnus/reverse-smile.xpm lisp/gnus/rot13.pbm lisp/gnus/rot13.xpm lisp/gnus/sad.pbm lisp/gnus/sad.xpm lisp/gnus/save-aif.pbm lisp/gnus/save-aif.xpm lisp/gnus/save-art.pbm lisp/gnus/save-art.xpm lisp/gnus/smile.pbm lisp/gnus/smile.xpm lisp/gnus/subscribe.pbm lisp/gnus/subscribe.xpm lisp/gnus/unimportant.xpm lisp/gnus/unsubscribe.pbm lisp/gnus/unsubscribe.xpm lisp/gnus/uu-decode.pbm lisp/gnus/uu-decode.xpm lisp/gnus/uu-post.pbm lisp/gnus/uu-post.xpm lisp/gnus/wry.pbm lisp/gnus/wry.xpm lisp/international/mule-cmds.el lisp/progmodes/gdb-ui.el lisp/url/url-http.el man/ChangeLog man/frames.texi man/kmacro.texi src/coding.c src/dispextern.h src/emacs.c src/keyboard.c src/keymap.c src/lread.c src/xdisp.c src/xfns.c src/xselect.c src/xterm.c |
diffstat | 237 files changed, 6101 insertions(+), 4055 deletions(-) [+] |
line wrap: on
line diff
--- a/admin/ChangeLog Fri Feb 18 23:22:51 2005 +0000 +++ b/admin/ChangeLog Sat Feb 19 00:06:48 2005 +0000 @@ -1,3 +1,8 @@ +2005-02-15 Jason Rumney <jasonr@gnu.org> + + * nt/makedist.bat: Do not rely on non-standard behaviour of + tar --exclude. + 2004-11-02 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> * FOR-RELEASE (Indications): Remove two stage update for toolbar (Done). @@ -31,7 +36,7 @@ * FOR-RELEASE: Remove entry about GTK and monochrome displays (done). -2002-06-26 Eli Zaretskii <eliz@is.elta.co.il> +2004-06-26 Eli Zaretskii <eliz@is.elta.co.il> * FOR-RELEASE: Moved here from the etc directory. @@ -44,6 +49,10 @@ * quick-install-emacs: Don't use "function" keyword when defining shell functions. +2003-09-29 Lute Kamstra <lute@gnu.org> + + * make-tarball.txt: Mention regenerating Emacs' AUTHORS file. + 2003-09-27 Miles Bader <miles@gnu.ai.mit.edu> * quick-install-emacs: Remove fns-* pruning, since that file no @@ -193,7 +202,7 @@ version of tar used. ;; Local Variables: -;; coding: iso-2022-7bit-unix +;; coding: iso-2022-7bit ;; End: Copyright (C) 2001 Free Software Foundation, Inc.
--- a/admin/FOR-RELEASE Fri Feb 18 23:22:51 2005 +0000 +++ b/admin/FOR-RELEASE Sat Feb 19 00:06:48 2005 +0000 @@ -218,40 +218,40 @@ man/basic.texi "Luc Teirlinck" Chong Yidong man/buffers.texi "Luc Teirlinck" Chong Yidong man/building.texi "Ted Zlatanov" <tzz@lifelogs.com> -man/calendar.texi Joakim Verona <joakim@verona.se> +man/calendar.texi joakim@verona.se man/cmdargs.texi Chong Yidong man/commands.texi "Luc Teirlinck" man/custom.texi Chong Yidong -man/dired.texi -man/display.texi "Luc Teirlinck" +man/dired.texi Chong Yidong joakim@verona.se +man/display.texi "Luc Teirlinck" Chong Yidong man/emacs.texi "Luc Teirlinck" man/entering.texi "Luc Teirlinck" Chong Yidong man/files.texi "Luc Teirlinck" Chong Yidong man/fixit.texi "Luc Teirlinck" man/frames.texi "Luc Teirlinck" Chong Yidong man/glossary.texi -man/help.texi "Luc Teirlinck" -man/indent.texi "Luc Teirlinck" +man/help.texi "Luc Teirlinck" Chong Yidong +man/indent.texi "Luc Teirlinck" Chong Yidong man/killing.texi "Luc Teirlinck" Chong Yidong -man/kmacro.texi "Luc Teirlinck" +man/kmacro.texi "Luc Teirlinck" Chong Yidong man/macos.texi man/maintaining.texi -man/major.texi "Luc Teirlinck" +man/major.texi "Luc Teirlinck" Chong Yidong man/mark.texi "Luc Teirlinck" man/mini.texi "Luc Teirlinck" man/misc.texi -man/msdog.texi +man/msdog.texi Chong Yidong man/mule.texi "Luc Teirlinck" man/m-x.texi "Luc Teirlinck" man/picture.texi Joakim Verona <joakim@verona.se> -man/programs.texi "Stephen Eglen" +man/programs.texi "Stephen Eglen" Chong Yidong man/regs.texi "Luc Teirlinck" Chong Yidong man/rmail.texi man/screen.texi "Luc Teirlinck" man/search.texi "Luc Teirlinck" man/sending.texi man/text.texi "Luc Teirlinck" Chong Yidong -man/trouble.texi +man/trouble.texi Chong Yidong man/windows.texi "Luc Teirlinck" Chong Yidong man/xresources.texi @@ -271,47 +271,47 @@ lispref/buffers.texi "Luc Teirlinck" Chong Yidong lispref/calendar.texi Joakim Verona <joakim@verona.se> lispref/commands.texi "Luc Teirlinck" -lispref/compile.texi "Luc Teirlinck" -lispref/control.texi "Luc Teirlinck" +lispref/compile.texi "Luc Teirlinck" Chong Yidong +lispref/control.texi "Luc Teirlinck" Chong Yidong lispref/customize.texi lispref/debugging.texi Joakim Verona <joakim@verona.se> lispref/display.texi lispref/edebug.texi lispref/elisp.texi "Luc Teirlinck" lispref/errors.texi "Luc Teirlinck" -lispref/eval.texi "Luc Teirlinck" +lispref/eval.texi "Luc Teirlinck" Chong Yidong lispref/files.texi "Luc Teirlinck" Chong Yidong lispref/frames.texi "Luc Teirlinck" Chong Yidong -lispref/functions.texi "Luc Teirlinck" -lispref/hash.texi "Luc Teirlinck" +lispref/functions.texi "Luc Teirlinck" Chong Yidong +lispref/hash.texi "Luc Teirlinck" Chong Yidong lispref/help.texi "Luc Teirlinck" lispref/hooks.texi lispref/internals.texi "Luc Teirlinck" lispref/intro.texi "Luc Teirlinck" lispref/keymaps.texi "Luc Teirlinck" -lispref/lists.texi "Luc Teirlinck" -lispref/loading.texi "Luc Teirlinck" +lispref/lists.texi "Luc Teirlinck" Chong Yidong +lispref/loading.texi "Luc Teirlinck" Chong Yidong lispref/locals.texi lispref/macros.texi "Luc Teirlinck" lispref/maps.texi lispref/markers.texi "Luc Teirlinck" -lispref/minibuf.texi "Luc Teirlinck" +lispref/minibuf.texi "Luc Teirlinck" Chong Yidong lispref/modes.texi Chong Yidong lispref/nonascii.texi "Luc Teirlinck" -lispref/numbers.texi "Luc Teirlinck" -lispref/objects.texi "Luc Teirlinck" +lispref/numbers.texi "Luc Teirlinck" Chong Yidong +lispref/objects.texi "Luc Teirlinck" Chong Yidong lispref/os.texi "Luc Teirlinck" lispref/positions.texi "Luc Teirlinck" Chong Yidong lispref/processes.texi lispref/searching.texi "Luc Teirlinck" lispref/sequences.texi "Luc Teirlinck" -lispref/streams.texi "Luc Teirlinck" +lispref/streams.texi "Luc Teirlinck" Chong Yidong lispref/strings.texi "Luc Teirlinck" Chong Yidong -lispref/symbols.texi "Luc Teirlinck" +lispref/symbols.texi "Luc Teirlinck" Chong Yidong lispref/syntax.texi "Luc Teirlinck" lispref/text.texi Chong Yidong lispref/tips.texi "Luc Teirlinck" -lispref/variables.texi "Luc Teirlinck" +lispref/variables.texi "Luc Teirlinck" Chong Yidong lispref/windows.texi "Luc Teirlinck" Chong Yidong
--- a/admin/nt/makedist.bat Fri Feb 18 23:22:51 2005 +0000 +++ b/admin/nt/makedist.bat Sat Feb 19 00:06:48 2005 +0000 @@ -1,127 +1,130 @@ -@echo off - -rem This batch file doesn't work with Cygwin tar because #files# -rem has DOS line endings, which Cygwin tar misinterprets. -rem I use the version of tar from -rem ftp://ftp.gnu.org/gnu/windows/emacs/utilities/i386/tar-1.11.2a.exe -rem renamed as wtar.exe. -set TAR=wtar - -rem Make a copy of current Emacs source -if (%3) == () goto usage -if not (%4) == () goto %4 -if not (%4) == (src) goto :lisp - -:src - -echo Create full source distribution, excluding leim -%TAR% --exclude leim --exclude _marker --exclude DOC --exclude DOC-X --exclude TAGS --exclude bin --exclude obj --exclude obj-spd --exclude oo --exclude oo-spd --exclude *~ --exclude *.rej -cvf - emacs-%1 | gzip -9 > %2-src.tar.gz -if not (%4) == () goto end - -:lisp -echo Create limited elisp source distribution -%TAR% --exclude *.rej --exclude *.elc --exclude *~ -cvf - emacs-%1/lisp | gzip -9 > %2-lisp.tar.gz -if not (%4) == () goto end - -:bin - -set eld=emacs-%1/lisp - -rem Keep this list in sync with the DONTCOMPILE list in lisp/Makefile.in - -set elfiles=%eld%/cus-load.el %eld%/cus-start.el %eld%/emacs-lisp/cl-specs.el %eld%/eshell/esh-maint.el %eld%/eshell/esh-groups.el %eld%/finder-inf.el %eld%/forms-d2.el %eld%/forms-pass.el %eld%/generic-x.el %eld%/international/latin-1.el %eld%/international/latin-2.el %eld%/international/latin-3.el %eld%/international/latin-4.el %eld%/international/latin-5.el %eld%/international/latin-8.el %eld%/international/latin-9.el %eld%/international/mule-conf.el %eld%/loaddefs.el %eld%/loadup.el %eld%/mail/blessmail.el %eld%/patcomp.el %eld%/paths.el %eld%/play/bruce.el %eld%/subdirs.el %eld%/version.el - -set fns_el= -for %%f in (emacs-%1/bin/fns*) do set fns_el=%fns_el% emacs-%1/bin/%%f - -echo Create bin distribution -copy %3\README.W32 emacs-%1\README.W32 - -del #files# -for %%f in (emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32) do echo %%f>>#files# -for %%f in (emacs-%1/bin/fns*) do echo emacs-%1/bin/%%f>>#files# -for %%f in (emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp %elfiles%) do echo %%f>>#files# -for %%f in (%eld%/term/*.el) do echo %eld%/term/%%f>>#files# -for %%f in (emacs-%1/lock emacs-%1/site-lisp emacs-%1/site-lisp/subdirs.el) do echo %%f>>#files# -%TAR% --exclude temacs.exe --exclude emacs.mdp --exclude *.pdb --exclude *.opt --exclude *.el --exclude *~ -T #files# -cvf - | gzip -9 > %2-bin-i386.tar.gz -del emacs-%1\README.W32 -del #files# -if not (%4) == () goto end - -:fullbin - -echo Create full bin distribution -copy %3\README.W32 emacs-%1\README.W32 - -%TAR% --exclude temacs.exe --exclude emacs.mdp --exclude *.pdb --exclude *.opt --exclude *~ -cvf - emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/lock emacs-%1/site-lisp | gzip -9 > %2-fullbin-i386.tar.gz -del emacs-%1\README.W32 -if not (%4) == () goto end - -:leim - -echo Create archive with precompiled leim files -%TAR% -cvf - emacs-%1/leim/leim-list.el emacs-%1/leim/quail emacs-%1/leim/ja-dic | gzip -9 > %2-leim.tar.gz -if not (%4) == () goto end - -:undumped - -echo Create archive with extra files needed for redumping emacs -copy %3\README-UNDUMP.W32 emacs-%1\README-UNDUMP.W32 -copy %3\dump.bat emacs-%1\bin -if exist emacs-%1\src\obj-spd\i386\temacs.exe copy emacs-%1\src\obj-spd\i386\temacs.exe emacs-%1\bin -if exist emacs-%1\src\oo-spd\i386\temacs.exe copy emacs-%1\src\oo-spd\i386\temacs.exe emacs-%1\bin -%TAR% -cvf - emacs-%1/README-UNDUMP.W32 emacs-%1/bin/dump.bat emacs-%1/bin/temacs.exe | gzip -9 > %2-undumped-i386.tar.gz -del emacs-%1\bin\temacs.exe -del emacs-%1\bin\dump.bat -del emacs-%1\README-UNDUMP.W32 -if not (%4) == () goto end - -:barebin - -echo Create archive with just the basic binaries and generated files -echo (the user needs to unpack the full source distribution for -echo everything else) -copy %3\README.W32 emacs-%1\README.W32 -%TAR% -cvf - emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc/DOC emacs-%1/etc/DOC-X | gzip -9 > %2-barebin-i386.tar.gz -del emacs-%1\README.W32 -if not (%4) == () goto end - -goto end - -rem Only do this if explicitly requested -:zipfiles - -echo Create zip files for bin and lisp archives -mkdir distrib -cd distrib -gunzip -c ..\%2-bin-i386.tar.gz | %TAR% xf - -rem Need to split emacs.exe into fragments because it is too big now -rem to fit on a floppy even by itself. -copy %3\stitch.bat %2\bin -cd %2\bin -split -b 1000000 emacs.exe emacs -del emacs.exe -cd ..\.. -zip -rp9 em%5bin %2 -rm -rf %2 -zipsplit -n 1400000 -b .. em%5bin.zip -del em%5bin.zip -gunzip -c ..\%2-lisp.tar.gz | %TAR% xf - -zip -rp9 em%5lis %2 -rm -rf %2 -zipsplit -n 1400000 -b .. em%5lis.zip -del em%5lis.zip -cd .. - -goto end - -:usage -echo Generate source and binary distributions of emacs. -echo Usage: %0 emacs-version dist-basename distfiles [lisp,bin,undumped,barebin] -echo (e.g., %0 19.34 emacs-19.34.5 d:\andrewi\distfiles) -echo Or: %0 emacs-version dist-basename distfiles "zipfiles" short-version -echo (e.g., %0 20.6 emacs-20.6 d:\andrewi\distfiles zipfiles 206) -:end +@echo off + +rem Beware broken ports of tar. Recent cygwin versions work well, older +rem cygwin versions and the current MSys port have problems with DOS +rem line ends when reading file names from a file. Other ports have their +rem own problems too. +set TAR=tar + +rem Make a copy of current Emacs source +if (%3) == () goto usage +if not (%4) == () goto %4 +if not (%4) == (src) goto :lisp + +:src + +echo Create full source distribution, excluding leim +%TAR% --exclude leim --exclude _marker --exclude DOC --exclude DOC-X --exclude TAGS --exclude bin --exclude obj --exclude obj-spd --exclude oo --exclude oo-spd --exclude *~ --exclude *.rej -cvf - emacs-%1 | gzip -9 > %2-src.tar.gz +if not (%4) == () goto end + +:lisp +echo Create limited elisp source distribution +%TAR% --exclude *.rej --exclude *.elc --exclude *~ -cvf - emacs-%1/lisp | gzip -9 > %2-lisp.tar.gz +if not (%4) == () goto end + +:bin + +set eld=emacs-%1/lisp + +rem Keep this list in sync with the DONTCOMPILE list in lisp/makefile.w32-in + +set elfiles=%eld%/cus-load.el %eld%/cus-start.el %eld%/emacs-lisp/cl-specs.el %eld%/eshell/esh-maint.el %eld%/eshell/esh-groups.el %eld%/finder-inf.el %eld%/forms-d2.el %eld%/forms-pass.el %eld%/generic-x.el %eld%/international/latin-1.el %eld%/international/latin-2.el %eld%/international/latin-3.el %eld%/international/latin-4.el %eld%/international/latin-5.el %eld%/international/latin-8.el %eld%/international/latin-9.el %eld%/international/mule-conf.el %eld%/loaddefs.el %eld%/loadup.el %eld%/mail/blessmail.el %eld%/patcomp.el %eld%/paths.el %eld%/play/bruce.el %eld%/subdirs.el %eld%/version.el + +set fns_el= +for %%f in (emacs-%1/bin/fns*) do set fns_el=%fns_el% emacs-%1/bin/%%f + +echo Create bin distribution +copy %3\README.W32 emacs-%1\README.W32 + +del #files# #elfiles# +for %%f in (emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32) do echo %%f>>#files# +for %%f in (emacs-%1/bin/fns*) do echo emacs-%1/bin/%%f>>#elfiles# +for %%f in (emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp) do echo %%f>>#files# +for %%f in (emacs-%1/lock emacs-%1/site-lisp) do echo %%f>>#files# +for %%f in (%elfiles% emacs-%1/site-lisp/subdirs.el) do echo %%f>>#elfiles# +for %%f in (%eld%/term/*.el) do echo %eld%/term/%%f>>#elfiles# + +%TAR% --exclude temacs.exe --exclude emacs.mdp --exclude *.pdb --exclude *.opt --exclude "*.el" --exclude "*~" -T #files# -cvf %2-bin-i386.tar +%TAR% -T #elfiles# -rvf %2-bin-i386.tar +gzip -9 %2-bin-i386.tar +del emacs-%1\README.W32 +rem del #files# #elfiles# +if not (%4) == () goto end + +:fullbin + +echo Create full bin distribution +copy %3\README.W32 emacs-%1\README.W32 + +%TAR% --exclude temacs.exe --exclude emacs.mdp --exclude *.pdb --exclude *.opt --exclude *~ -cvf - emacs-%1/BUGS emacs-%1/README emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc emacs-%1/info emacs-%1/lisp emacs-%1/lock emacs-%1/site-lisp | gzip -9 > %2-fullbin-i386.tar.gz +del emacs-%1\README.W32 +if not (%4) == () goto end + +:leim + +echo Create archive with precompiled leim files +%TAR% -cvf - emacs-%1/leim/leim-list.el emacs-%1/leim/quail emacs-%1/leim/ja-dic | gzip -9 > %2-leim.tar.gz +if not (%4) == () goto end + +:undumped + +echo Create archive with extra files needed for redumping emacs +copy %3\README-UNDUMP.W32 emacs-%1\README-UNDUMP.W32 +copy %3\dump.bat emacs-%1\bin +if exist emacs-%1\src\obj-spd\i386\temacs.exe copy emacs-%1\src\obj-spd\i386\temacs.exe emacs-%1\bin +if exist emacs-%1\src\oo-spd\i386\temacs.exe copy emacs-%1\src\oo-spd\i386\temacs.exe emacs-%1\bin +%TAR% -cvf - emacs-%1/README-UNDUMP.W32 emacs-%1/bin/dump.bat emacs-%1/bin/temacs.exe | gzip -9 > %2-undumped-i386.tar.gz +del emacs-%1\bin\temacs.exe +del emacs-%1\bin\dump.bat +del emacs-%1\README-UNDUMP.W32 +if not (%4) == () goto end + +:barebin + +echo Create archive with just the basic binaries and generated files +echo (the user needs to unpack the full source distribution for +echo everything else) +copy %3\README.W32 emacs-%1\README.W32 +%TAR% -cvf - emacs-%1/README.W32 emacs-%1/bin emacs-%1/etc/DOC emacs-%1/etc/DOC-X | gzip -9 > %2-barebin-i386.tar.gz +del emacs-%1\README.W32 +if not (%4) == () goto end + +goto end + +rem Only do this if explicitly requested +:zipfiles + +echo Create zip files for bin and lisp archives +mkdir distrib +cd distrib +gunzip -c ..\%2-bin-i386.tar.gz | %TAR% xf - +rem Need to split emacs.exe into fragments because it is too big now +rem to fit on a floppy even by itself. +copy %3\stitch.bat %2\bin +cd %2\bin +split -b 1000000 emacs.exe emacs +del emacs.exe +cd ..\.. +zip -rp9 em%5bin %2 +rm -rf %2 +zipsplit -n 1400000 -b .. em%5bin.zip +del em%5bin.zip +gunzip -c ..\%2-lisp.tar.gz | %TAR% xf - +zip -rp9 em%5lis %2 +rm -rf %2 +zipsplit -n 1400000 -b .. em%5lis.zip +del em%5lis.zip +cd .. + +goto end + +:usage +echo Generate source and binary distributions of emacs. +echo Usage: %0 emacs-version dist-basename distfiles [lisp,bin,undumped,barebin] +echo (e.g., %0 19.34 emacs-19.34.5 d:\andrewi\distfiles) +echo Or: %0 emacs-version dist-basename distfiles "zipfiles" short-version +echo (e.g., %0 20.6 emacs-20.6 d:\andrewi\distfiles zipfiles 206) +:end goto skipArchTag arch-tag: 6e2ddd92-c1c9-4992-b6b5-207aaab72f68
--- a/etc/ChangeLog Fri Feb 18 23:22:51 2005 +0000 +++ b/etc/ChangeLog Sat Feb 19 00:06:48 2005 +0000 @@ -1,3 +1,11 @@ +2005-02-14 Lute Kamstra <lute@gnu.org> + + * TODO: Remove battery.el entry (DONE). + + * TUTORIAL.nl: Synchronize with TUTORIAL. Correct some typos. + Make the terminology more consistent. Fill the text using the + default `fill-column'. + 2005-02-08 Lute Kamstra <lute@gnu.org> * TUTORIAL: Remove some uses of the term "buffer" before it is
--- a/etc/NEWS Fri Feb 18 23:22:51 2005 +0000 +++ b/etc/NEWS Sat Feb 19 00:06:48 2005 +0000 @@ -2188,6 +2188,14 @@ `list-colors-display' shows the list of System color names, in case you wish to use them in other faces. +--- +** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations. +Those systems use Unicode internally, so this allows Emacs to share +multilingual text with other applications. On other versions of +MS Windows, Emacs now uses the appropriate locale coding-system, so +the clipboard should work correctly for your local language without +any customizations. + +++ ** Under X11, it is possible to swap Alt and Meta (and Super and Hyper). The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
--- a/etc/TODO Fri Feb 18 23:22:51 2005 +0000 +++ b/etc/TODO Sat Feb 19 00:06:48 2005 +0000 @@ -15,8 +15,6 @@ ought to be possible to omit text which is invisible (due to a text-property, overlay, or selective display) from the kill-ring. -** battery.el display-battery should be replaced with a minor mode. - ** Redefine define-generic-mode as a macro, so the compiler sees the definitions it generates.
--- a/etc/TUTORIAL.nl Fri Feb 18 23:22:51 2005 +0000 +++ b/etc/TUTORIAL.nl Sat Feb 19 00:06:48 2005 +0000 @@ -1,5 +1,5 @@ -Copyright (c) 1985, 2004, 2005 Free Software Foundation, Inc; Zie de voorwaarden onderaan. -Je leest nu de Emacs-inleiding, zoals vertaald door Pieter Schoenmakers. +Je leest nu de Emacs-inleiding. De kopieervoorwaarden staan onderaan. +Copyright (c) 1985, 1996, 1997, 2003, 2004, 2005 Free Software Foundation De meeste Emacs-commando's gebruiken de CONTROL-toets (soms CTRL of CTL genaamd) en/of de META-toets (soms genaamd EDIT of ALT). In plaats van @@ -7,31 +7,32 @@ C-<ltr> betekent: houd de CONTROL-toets ingedrukt en tik de toets <ltr> Dus C-f wordt: houd de CONTROL-toets ingedrukt en tik f. - M-<ltr> betekent: houd de META-, EDIT- of ALT-toets ingedrukt en tik de - toets <chr>. Als er geen toets META, EDIT of ALT is, kun je ook - eerst de ESC-toets tikken, gevolgd door <ltr>. We verwijzen naar - de ESC toets als <ESC>. + M-<ltr> betekent: houd de META-, EDIT- of ALT-toets ingedrukt en tik + de toets <ltr>. Als er geen toets META, EDIT of ALT is, kun + je ook eerst de ESC-toets tikken, gevolgd door <ltr>. We + verwijzen naar de ESC-toets als <ESC>. BELANGRIJK: om Emacs te verlaten, tik C-x C-c (twee tekens). -De tekens ">>" tegen de linkerkantlijn nodigen je uit om een -bepaald commando te proberen. Bijvoorbeeld: -<<Blank lines inserted here by startup of help-with-tutorial>> ->> Tik nu C-v (volgend scherm) om naar het volgende scherm te gaan. - (Geef nu het commando door de CONTROL-toets ingedrukt te houden - terwijl je de v tikt.) - Vanaf nu moet je dit steeds herhalen als je klaar bent met het - lezen van een scherm. +De tekens ">>" tegen de linkerkantlijn nodigen je uit om een bepaald +commando te proberen. Bijvoorbeeld: +<<Blank lines inserted around following line by help-with-tutorial>> +[Lege regels om didactische redenen. Hieronder gaat het verder.] +>> Tik nu C-v (volgend scherm) om naar het volgende scherm te gaan. + (Geef nu het commando door de CONTROL-toets ingedrukt te + houden terwijl je de v tikt.) Vanaf nu moet je dit steeds + herhalen als je klaar bent met het lezen van een scherm. -Merk op dat er een overlapping van twee regels is als je van een scherm naar -het volgende gaat; dat zorgt voor continuïteit bij het lezen van -de tekst. +Merk op dat er een overlapping van twee regels is als je van een +scherm naar het volgende gaat; dat zorgt voor continuïteit bij het +lezen van de tekst. -Het eerste wat je moet weten, is hoe je je naar verschillende plaatsen in de -tekst kan bewegen. Je weet al hoe je een scherm vooruit moet gaan: met -C-v. Om een scherm terug te gaan, tik je M-v (houd de META-toets ingedrukt -en tik v, of tik <ESC>-v als je geen META, EDIT of ALT toets hebt). +Het eerste wat je moet weten, is hoe je je naar verschillende plaatsen +in de tekst kan bewegen. Je weet al hoe je een scherm vooruit moet +gaan: met C-v. Om een scherm terug te gaan, tik je M-v (houd de +META-toets ingedrukt en tik v, of tik <ESC> v als je geen META-, EDIT- +of ALT-toets hebt). ->> Probeer nu een paar keer M-v, steeds gevolgd door C-v. +>> Probeer nu een paar keer M-v, steeds gevolgd door C-v. * SAMENVATTING @@ -39,16 +40,20 @@ De volgende commando's zijn handig om volledige schermen te bekijken: - C-v ga een scherm vooruit - M-v ga een scherm terug - C-l maak het scherm schoon en teken alle tekst - opnieuw, waarbij de regel waarop de cursor - staat, op het midden van het scherm terecht - komt. (C-l is CONTROL-L, niet CONTROL-1.) + C-v Ga een scherm vooruit + M-v Ga een scherm terug + C-l Maak het scherm schoon en teken alle tekst opnieuw, + waarbij de regel waarop de cursor staat, op het + midden van het scherm terecht komt. (C-l is + CONTROL-L, niet CONTROL-1.) ->> Kijk waar de cursor staat, en onthoud de tekst errond. - Tik C-l. - Zoek de cursor en merk op dat hij nog steeds bij dezelfde tekst staat. +>> Kijk waar de cursor staat, en onthoud de tekst er omheen. Tik C-l. + Zoek de cursor en merk op dat hij nog steeds bij dezelfde tekst + staat. + +Als je toetsenbord PageUp- en PageDn-toetsen heeft dan kun je deze ook +gebruiken om een scherm terug dan wel vooruit te gaan, maar het werken +met C-v en M-v is efficiënter. * BASISCOMMANDO'S CURSORBEWEGINGEN @@ -58,12 +63,12 @@ naar een specifieke plaats op het scherm? Er is een aantal manieren waarop je dit kan doen. Je kan de -pijltjestoetsen gebruiken, maar het is efficïenter om je handen in de +pijltjestoetsen gebruiken, maar het is efficiënter om je handen in de standaardhouding te laten, en de commando's C-p, C-b, C-f en C-n te -gebruiken. Elk van deze commando's -verplaatst de cursor precies een regel of teken in een bepaalde richting -op het scherm. Hier volgt een figuur met de vier commando's en de -richting waarin ze de cursor bewegen: +gebruiken. Elk van deze commando's verplaatst de cursor precies een +regel of teken in een bepaalde richting op het scherm. Hier volgt een +figuur met de vier commando's en de richting waarin ze de cursor +bewegen: vorige regel, C-p : @@ -73,113 +78,115 @@ : volgende regel, C-n ->> Verplaats, met C-n of C-p, de cursor naar de middelste regel van - de figuur. Tik dan C-l om de hele figuur in het midden van het +>> Verplaats, met C-n of C-p, de cursor naar de middelste regel van de + figuur. Tik dan C-l om de hele figuur in het midden van het centrum te plaatsen. -Met een beetje kennis van het Engels zijn deze commando's gemakkelijk te -onthouden: de p komt van "previous" (vorige), de n van "next" (volgende), de -b van "backward" (achteruit) en de f van "forward" (vooruit). Dit zijn de -basiscommando's om de cursor te bewegen, dus je zult ze VOORTDUREND -gebruiken: het is vooruitziend als je ze nu leert te gebruiken. +Met een beetje kennis van het Engels zijn deze commando's gemakkelijk +te onthouden: de p komt van "previous" (vorige), de n van "next" +(volgende), de b van "backward" (achteruit) en de f van "forward" +(vooruit). Dit zijn de basiscommando's om de cursor te bewegen, dus +je zult ze VOORTDUREND gebruiken: het is vooruitziend als je ze nu +leert te gebruiken. >> Tik een paar keer C-n om de cursor op deze regel te krijgen. ->> Beweeg je binnen de regel met C-f (herhaaldelijk) en terug omhoog met C-p. - Let op wat C-p doet als de cursor midden in een regel staat. +>> Beweeg je binnen de regel met C-f (herhaaldelijk) en terug omhoog + met C-p. Let op wat C-p doet als de cursor midden in een regel + staat. -Elke regel eindigt met een Newline-teken (het Engelse "new line" betekent -"nieuwe regel"); dit teken scheidt elke regel van de volgende. De laatste -regel in een bestand zou eigenlijk ook met een Newline moeten eindigen (maar dat -is niet noodzakelijk voor Emacs). +Elke regel eindigt met een Newline-teken (het Engelse "new line" +betekent "nieuwe regel"); dit teken scheidt elke regel van de +volgende. De laatste regel in een bestand zou eigenlijk ook met een +Newline moeten eindigen (maar dat is niet noodzakelijk voor Emacs). ->> Probeer C-b aan het begin van een regel. - De cursor zal zich naar het eind van de vorige regel bewegen, - omdat je achteruit over het Newline teken gaat. +>> Probeer C-b aan het begin van een regel. De cursor zal zich naar + het eind van de vorige regel bewegen, omdat je achteruit over het + Newline teken gaat. Net als C-b kan ook C-f zich over Newline-tekens heen bewegen. ->> Tik nog een aantal keren het commando C-b, zodat je een gevoel krijgt waar de - cursor is. - Tik dan enkele keren C-f om de cursor terug naar het einde van de regel - te bewegen. - Een verder C-f commando beweegt de cursor dan naar de volgende regel. +>> Tik nog een aantal keren het commando C-b, zodat je een gevoel + krijgt waar de cursor is. Tik dan enkele keren C-f om de cursor + terug naar het einde van de regel te bewegen. Een verder C-f + commando beweegt de cursor dan naar de volgende regel. -Wanneer je de cursor voorbij het begin of het einde van het scherm beweegt, -zal de tekst over het scherm heen schuiven. Dit heet "scrollen", of -"schuiven" in goed Nederlands. Door te scrollen zorgt Emacs ervoor dat de -cursor de gewenste beweging kan maken zonder dat de cursor van het scherm -af beweegt. +Wanneer je de cursor voorbij het begin of het einde van het scherm +beweegt, zal de tekst over het scherm heen schuiven. Dit heet +"scrollen", of "schuiven" in goed Nederlands. Door te scrollen zorgt +Emacs ervoor dat de cursor de gewenste beweging kan maken zonder dat +de cursor van het scherm af beweegt. ->> Probeer de cursor voorbij de onderkant van het scherm te bewegen met - C-n en zie wat er gebeurt. +>> Probeer de cursor voorbij de onderkant van het scherm te bewegen + met C-n en zie wat er gebeurt. Als de beweging per teken te langzaam gaat, kan je de cursor ook per -woord bewegen. M-f (META-f) beweegt de cursor een woord vooruit en M-b -een woord achteruit. +woord bewegen. M-f (META-f) beweegt de cursor een woord vooruit en +M-b een woord achteruit. >> Tik enkele keren M-f en M-b. -Als je midden in een woord staat, beweegt M-f de cursor naar het eind van -het woord. Als je op een witte ruimte tussen twee woorden staat, beweegt M-f de -cursor naar het eind van het volgende woord. Het commando M-b beweegt -de cursor analoog de andere kant op. +Als je midden in een woord staat, beweegt M-f de cursor naar het eind +van het woord. Als je op een witte ruimte tussen twee woorden staat, +beweegt M-f de cursor naar het eind van het volgende woord. Het +commando M-b beweegt de cursor analoog de andere kant op. ->> Tik enkele keren M-f en M-b en daar tussendoor een paar maal C-f en C-b, - zodat je ziet wat M-f en M-b doen vanaf bepaalde plaatsen in een - woord en tussen twee woorden. +>> Tik enkele keren M-f en M-b en daar tussendoor een paar maal C-f en + C-b, zodat je ziet wat M-f en M-b doen vanaf bepaalde plaatsen in + een woord en tussen twee woorden. Merk op dat er een analogie bestaat tussen enerzijds C-f en C-b en anderzijds M-f en M-b. Het is bij veel commando's zo dat META-tekens gebruikt worden om iets te doen in eenheden van de taal (woorden, -zinnen, alinea's) terwijl Control-tekens te maken hebben met dingen die -los staan van wat je aan het editeren bent (tekens, regels, enz.). +zinnen, alinea's) terwijl CONTROL-tekens te maken hebben met dingen +die los staan van wat je aan het bewerken bent (tekens, regels, enz.). Deze analogie gaat ook op voor regels en zinnen: C-a en C-e bewegen de cursor naar het begin of eind van een regel, terwijl met M-a, -respectievelijk M-e, de cursor naar het begin, respectievelijk het eind, -van een zin gaat. +respectievelijk M-e, de cursor naar het begin, respectievelijk het +eind, van een zin gaat. >> Tik enkele keren C-a, en dan een enkele keren C-e. Tik een paar maal M-a, en dan enkele keren M-e. Bemerk hoe herhaalde C-a commando's niets doen, terwijl herhaalde M-a -commando's de cursor steeds een zin achteruit bewegen. Alhoewel ze niet volledig -overeenkomen, is het gedrag van beide heel natuurlijk. +commando's de cursor steeds een zin achteruit bewegen. Alhoewel ze +niet volledig overeenkomen, is het gedrag van beide heel natuurlijk. De plaats van de cursor in de tekst wordt "punt" genoemd (zonder -lidwoord, "point" in het Engels). Anders gezegd: de cursor laat op het -scherm de plek zien waar punt in de tekst staat. +lidwoord, "point" in het Engels). Anders gezegd: de cursor laat op +het scherm de plek zien waar punt in de tekst staat. -Nu volgt een samenvatting van eenvoudige cursorbewegingen, -met inbegrip van de commando's die de cursor per woord of zin bewegen: +Nu volgt een samenvatting van eenvoudige cursorbewegingen, met +inbegrip van de commando's die de cursor per woord of zin bewegen: - C-f ga een teken vooruit - C-b ga een teken achteruit + C-f Ga een teken vooruit + C-b Ga een teken achteruit - M-f ga een woord vooruit - M-b ga een woord achteruit + M-f Ga een woord vooruit + M-b Ga een woord achteruit - C-n ga naar de volgende regel - C-p ga naar de vorige regel + C-n Ga naar de volgende regel + C-p Ga naar de vorige regel - C-a ga naar het begin van de regel - C-e ga naar het eind van de regel + C-a Ga naar het begin van de regel + C-e Ga naar het eind van de regel - M-a ga terug naar het begin van de zin - M-e ga vooruit naar het eind van de zin + M-a Ga terug naar het begin van de zin + M-e Ga vooruit naar het eind van de zin ->> Probeer al deze commando's een paar keer als oefening. - Deze commando's worden het vaakst gebruikt. +>> Probeer al deze commando's een paar keer als oefening. Deze + commando's worden het vaakst gebruikt. -Er zijn nog twee belangrijke cursorbewegingen: M-< -(META kleiner-dan) beweegt de cursor naar het begin van het bestand, -en M-> (META groter-dan) beweegt hem naar het eind. +Er zijn nog twee belangrijke cursorbewegingen: M-< (META kleiner-dan) +beweegt de cursor naar het begin van het bestand, en M-> (META +groter-dan) beweegt hem naar het eind. Op de meeste toetsenborden zit de '<' boven de komma, zodat je de -Shift-toets (ook wel bekend als de hoofdlettertoets) moet gebruiken om het -'<'-teken in te tikken. Op deze toetsenborden moet je ook de shift -gebruiken om M-< in te tikken: zonder shift zou je M-, (META komma) tikken. +Shift-toets (ook wel bekend als de hoofdlettertoets) moet gebruiken om +het '<'-teken in te tikken. Op deze toetsenborden moet je ook de +shift gebruiken om M-< in te tikken: zonder shift zou je M-, (META +komma) tikken. >> Tik nu M-< om naar het begin van dit bestand te gaan. Gebruik daarna C-v om hier weer terug te komen. @@ -187,24 +194,25 @@ >> Tik nu M-> om naar het eind van het bestand te springen. Gebruik daarna M-v om hier weer terug te komen. -Als je toetsenbord pijltjestoetsen heeft, kan je die ook gebruiken om de -cursor te verplaatsen. We raden je aan om C-b, C-f, C-n en C-p -te leren, om drie redenen. Ten eerste werken ze op alle -toetsenborden, ook die zonder pijltjestoetsen. Ten tweede zul je merken -dat wanneer je eenmaal wat ervaring hebt opgedaan in de omgang met -Emacs, het gebruik van de CTRL-tekens sneller is dan werken met de -pijltjestoetsen (omdat je handen in de normale tikpositie kunnen blijven). Ten -derde, als je eenmaal gewend bent aan deze commando's met CTRL-tekens, -kan je makkelijk andere gevorderde cursorbewegingscommando's leren. +Als je toetsenbord pijltjestoetsen heeft, kan je die ook gebruiken om +de cursor te verplaatsen. We raden je aan om C-b, C-f, C-n en C-p te +leren, om drie redenen. Ten eerste werken ze op alle toetsenborden, +ook die zonder pijltjestoetsen. Ten tweede zul je merken dat wanneer +je eenmaal wat ervaring hebt opgedaan in de omgang met Emacs, het +gebruik van de CONTROL-tekens sneller is dan werken met de +pijltjestoetsen (omdat je handen in de normale tikpositie kunnen +blijven). Ten derde, als je eenmaal gewend bent aan deze commando's +met CONTROL-tekens, kan je makkelijk andere gevorderde +cursorbewegingscommando's leren. De meeste Emacs-commando's accepteren een numeriek argument. Voor de meeste commando's is dit argument het aantal keren dat het commando -herhaald moet worden. Je geeft dit numerieke argument aan met C-u en -vervolgens de cijfers van het getal, vóór het commando. -Als je toetsenbord een META- (of EDIT- of ALT-) toets hebt, is er ook -een andere manier om het getal aan te geven: tik de cijfers terwijl -je de META toets ingedrukt houdt. We raden je aan de C-u manier te -leren omdat die beschikbaar is op elke terminal. +herhaald moet worden. Je geeft dit numerieke argument aan met C-u en +vervolgens de cijfers van het getal, vóór het commando. Als je +toetsenbord een META- (of EDIT- of ALT-) toets heeft, is er ook een +andere manier om het getal aan te geven: tik de cijfers terwijl je de +META toets ingedrukt houdt. We raden je aan de C-u manier te leren +omdat die beschikbaar is op elke terminal. Bijvoorbeeld, C-u 8 C-f beweegt de cursor 8 plaatsen naar voren. @@ -212,194 +220,221 @@ met slechts een commando naar een regel in de buurt van deze zin te bewegen. -Voor de meeste commando's is het numerieke argument het aantal keren dat -het commando herhaald moet worden. Voor sommige commando's betekent het -echter iets anders. Verschillende commando's (die je totnogtoe niet -geleerd hebt) gebruiken het als een vlag -- de aanwezigheid van een -prefix-argument, ongeacht zijn waarde, maakt dat het commando iets anders -doet. +Voor de meeste commando's is het numerieke argument het aantal keren +dat het commando herhaald moet worden. Voor sommige commando's +betekent het echter iets anders. Verschillende commando's (die je +totnogtoe niet geleerd hebt) gebruiken het als een vlag -- de +aanwezigheid van een prefix-argument, ongeacht zijn waarde, maakt dat +het commando iets anders doet. -C-v en M-v vormen een andere uitzondering. Met een numeriek -argument verschuiven deze commando's de tekst het aangegeven aantal regels -in plaats van (bijna) een heel scherm. Bijvoorbeeld, C-u 4 C-v verschuift -de tekst 4 regels. +C-v en M-v vormen een andere uitzondering. Met een numeriek argument +verschuiven deze commando's de tekst het aangegeven aantal regels in +plaats van (bijna) een heel scherm. Bijvoorbeeld, C-u 4 C-v +verschuift de tekst 4 regels. >> Probeer nu C-u 8 C-v. Daarmee zou je tekst 8 regels opgeschoven moeten zijn. Als je terug omlaag wil scrollen, kan je M-v een argument geven. -Als je een scherm met vensters gebruikt, zoals X Windows of MS-Windows, -zou je een grote rechthoek moeten zien aan de linkerkant van het -Emacs-venster. Deze rechthoek heet een schuifbalk ("scrollbar"). Je kan -de tekst scrollen door met de muis in de schuifbalk te klikken. +Als je een scherm met vensters gebruikt, zoals X Windows of +MS-Windows, zou je een grote rechthoek moeten zien aan de linkerkant +van het Emacs-venster. Deze rechthoek heet een schuifbalk +("scrollbar"). Je kan de tekst scrollen door met de muis in de +schuifbalk te klikken. >> Klik met de middelste muisknop bovenaan het heldere gebied in de - schuifbalk. Dit zou de tekst moeten verschuiven naar een positie die - afhankelijk is van hoe hoog of laag je klikt. + schuifbalk. Dit zou de tekst moeten verschuiven naar een positie + die afhankelijk is van hoe hoog of laag je klikt. ->> Beweeg de muis op en neer terwijl je de middelste muisknop ingedrukt - houdt. Je zal zien dat de tekst met de muis mee heen en weer scrollt. +>> Beweeg de muis op en neer terwijl je de middelste muisknop + ingedrukt houdt. Je zal zien dat de tekst met de muis mee heen en + weer scrollt. * ALS EMACS HANGT ----------------- -Als Emacs niet meer op commando's reageert, kan je het veilig onderbreken -door C-g te tikken. Je kan C-g gebruiken om een commando te stoppen als -het te lang duurt om uit te voeren. +Als Emacs niet meer op commando's reageert, kan je het veilig +onderbreken door C-g te tikken. Je kan C-g gebruiken om een commando +te stoppen als het te lang duurt om uit te voeren. -Je kan C-g ook gebruiken om een numeriek argument te verwijderen of om het -begin van een commando dat je niet wilt afmaken, te verwijderen. +Je kan C-g ook gebruiken om een numeriek argument te verwijderen of om +het begin van een commando dat je niet wilt afmaken, te verwijderen. ->> Tik nu C-u 100 om een numeriek argument te maken met de waarde 100, en - tik dan C-g. Tik vervolgens C-f. Het zou de cursor maar - één positie mogen verplaatsen, omdat je het argument verwijderd hebt met C-g. +>> Tik nu C-u 100 om een numeriek argument te maken met de waarde 100, + en tik dan C-g. Tik vervolgens C-f. Het zou de cursor maar één + positie mogen verplaatsen, omdat je het argument verwijderd hebt + met C-g. Als je per ongeluk een <ESC> tikt, kan je dat ongedaan maken met het commando C-g. -* ONMOGELIJKE COMMANDO'S ------------------------- +* UITGESCHAKELDE COMMANDO'S +--------------------------- -Sommige Emacs-commando's zijn uitgeschakeld zodat beginnende gebruikers ze -niet per ongeluk kunnen uitvoeren. +Sommige Emacs-commando's zijn uitgeschakeld zodat beginnende +gebruikers ze niet per ongeluk kunnen uitvoeren. -Als je een van de uitgeschakelde commando's intikt, laat Emacs uitleg zien -over het commando dat je gegeven hebt, en vraagt of je het werkelijk wil -uitvoeren. +Als je een van de uitgeschakelde commando's intikt, laat Emacs uitleg +zien over het commando dat je gegeven hebt, en vraagt of je het +werkelijk wil uitvoeren. -Wanneer je het commando echt wil uitvoeren, tik dan Spatie (de -spatiebalk) als antwoord op de vraag. Normaal wil je het commando niet -uitvoeren en beantwoord je de vraag met "n" (van "no" of "nee"). +Wanneer je het commando echt wil uitvoeren, tik dan <SPC> (de +spatiebalk) als antwoord op de vraag. Normaal wil je het commando +niet uitvoeren en beantwoord je de vraag met "n" (van "no" of "nee"). ->> Tik C-x C-l (een uitgeschakeld commando), - en tik dan n als antwoord op de vraag. +>> Tik C-x C-l (een uitgeschakeld commando), en tik dan n als antwoord + op de vraag. * VENSTERS ---------- -Emacs kan meerdere vensters laten zien, elk venster met zijn eigen tekst. -We zullen later uitleggen hoe je met meerdere vensters om kan gaan. Op -dit moment willen we slechts uitleggen hoe je van extra vensters af kunt -komen en terug kan keren naar eenvoudig editeren met één venster. Het is -eenvoudig: +Emacs kan meerdere vensters laten zien, elk venster met zijn eigen +tekst. We zullen later uitleggen hoe je met meerdere vensters om kan +gaan. Op dit moment willen we slechts uitleggen hoe je van extra +vensters af kunt komen en terug kan keren naar het werken met één +venster. Het is eenvoudig: - C-x 1 een enkel venster (dat wil zeggen: verwijder alle andere vensters) + C-x 1 Een enkel venster (dat wil zeggen: verwijder alle + andere vensters). -Het commando is CONTROL-x gevolgd door het cijfer 1. C-x 1 vergroot het -venster waar de cursor in staat tot het hele scherm. Alle andere vensters -worden verwijderd. +Het commando is CONTROL-x gevolgd door het cijfer 1. C-x 1 vergroot +het venster waar de cursor in staat tot het hele scherm. Alle andere +vensters worden verwijderd. >> Zet de cursor op deze regel en tik C-u 0 C-l. ->> Tik nu Control-h k Control-f. - Zie hoe dit venster kleiner is geworden, terwijl een nieuw venster verschijnt - om de documentatie van het Control-f commando te laten zien. +>> Tik nu C-h k C-f. + Zie hoe dit venster kleiner is geworden, terwijl een nieuw venster + verschijnt om de documentatie van het C-f commando te laten zien. >> Tik nu C-x 1 en zie het documentatievenster verdwijnen. +Dit commando is anders dan de commando's die je tot nu toe geleerd +hebt aangezien het uit twee tekens bestaat. Het begint met het teken +CONTROL-x. Er zijn een heleboel commando's die met CONTROL-x +beginnen. Veel van die commando's hebben te maken met vensters, +bestanden, buffers, en gelijkaardige dingen. Dergelijke commando's +bestaan uit twee, drie of vier tekens. + * TOEVOEGEN EN WEGHALEN ----------------------- -Als je tekst toe wil voegen, tik je die eenvoudigweg in. Tekens die je -kan zien, zoals A, 7, * en dergelijke, worden door Emacs als tekst +Als je tekst toe wil voegen, tik je die eenvoudigweg in. Tekens die +je kan zien, zoals A, 7, * en dergelijke, worden door Emacs als tekst geïnterpreteerd en meteen aan de tekst toegevoegd. Tik <Return> (de "volgende regel"-toets) om een Newline toe te voegen en dus een nieuwe regel te beginnen. -Je kan het laatste teken dat je hebt ingetikt weghalen door <Delback> te tikken. -<Delback> is een toets op het toetsenbord -- dezelfde toets die je normaal -gesproken gebruikt, buiten Emacs, om het laatst ingetikte teken te wissen. -Het is meestal een grote toets, een paar rijen boven de <Return>-toets, -waar "Delete", "Del" of "Backspace" op staat. +Je kan het laatste teken dat je hebt ingetikt weghalen door <Delback> +te tikken. <Delback> is een toets op het toetsenbord -- dezelfde +toets die je normaal gesproken gebruikt, buiten Emacs, om het laatst +ingetikte teken te wissen. Het is meestal een grote toets, een paar +rijen boven de <Return>-toets, waar "Delete", "Del" of "Backspace" op +staat. Als er op die grote toets "Backspace" staat, dan is dat degene die je -gebruikt voor <Delback>. Er kan op een andere plaats ook nog een andere -toets zijn waarop "Delete" staat, maar dat is niet <Delback>. +gebruikt voor <Delback>. Er kan op een andere plaats ook nog een +andere toets zijn waarop "Delete" staat, maar dat is niet <Delback>. -In het algemeen haalt <Delback> het teken weg dat juist voor de cursorpositie -staat. +In het algemeen haalt <Delback> het teken weg dat juist voor de +cursorpositie staat. ->> Probeer dit nu: tik een paar letters en haal ze weer weg door een paar - keer op <Delback> te drukken. Maak je niet druk over het feit dat dit - bestand verandert; je zal niets veranderen aan de originele versie van - deze inleiding. Je zit slechts je eigen kopie te wijzigen. +>> Probeer dit nu: tik een paar letters en haal ze weer weg door een + paar keer op <Delback> te drukken. Maak je niet druk over het feit + dat dit bestand verandert; je zal niets veranderen aan de originele + versie van deze inleiding. Je zit slechts je eigen kopie te + wijzigen. -Als een regel tekst te lang wordt om helemaal op het scherm getoond -te worden, dan gaat hij verder op de volgende schermregel. Een backslash -("\") in de rechtermarge (of, als je een scherm met vensters -gebruikt, een kleine gebogen pijl) laat dan zien dat de regel op de -volgende schermregel verder gaat. +Als een regel tekst te lang wordt om helemaal op het scherm getoond te +worden, dan gaat hij verder op de volgende schermregel. Een backslash +("\") in de rechtermarge (of, als je een scherm met vensters gebruikt, +een kleine gebogen pijl) laat dan zien dat de regel op de volgende +schermregel verder gaat. >> Voeg nu tekst toe totdat je de rechter kantlijn raakt, en blijf toevoegen. Je zal zien dat er een vervolgregel verschijnt. >> Tik weer enkele keren <Delback> om zoveel tekens weg te halen tot - de regel weer op een schermregel past. De vervolgregel zal verdwijnen. + de regel weer op een schermregel past. De vervolgregel zal + verdwijnen. -Je kan een Newline zoals elk ander teken verwijderen. Als je een Newline -verwijdert, voeg je de twee regels waar de Newline tussen staat samen tot een -enkele regel. Als de regel die het resultaat is van deze operatie niet op -een schermregel past, zal hij getoond worden met een vervolgregel. +Je kan een Newline zoals elk ander teken verwijderen. Als je een +Newline verwijdert, voeg je de twee regels waar de Newline tussen +staat samen tot een enkele regel. Als de regel die het resultaat is +van deze operatie niet op een schermregel past, zal hij getoond worden +met een vervolgregel. ->> Beweeg de cursor naar het begin van een regel en tik <Delback>. Dit - voegt de huidige en vorige regel samen. +>> Beweeg de cursor naar het begin van een regel en tik <Delback>. + Dit voegt de huidige en vorige regel samen. ->> Tik <Return> om de Newline die je net verwijderd hebt weer toe te voegen. +>> Tik <Return> om de Newline die je net verwijderd hebt weer toe te + voegen. -Je herinnert je dat je bij de meeste Emacs-commando's het aantal keren op kan -geven, dat ze herhaald moeten worden. Dit geldt ook voor gewone tekens. -Als je een gewoon teken herhaalt, wordt dat teken herhaaldelijk toegevoegd. +Je herinnert je dat je bij de meeste Emacs-commando's het aantal keren +op kan geven, dat ze herhaald moeten worden. Dit geldt ook voor +gewone tekens. Als je een gewoon teken herhaalt, wordt dat teken +herhaaldelijk toegevoegd. >> Probeer dat nu: tik C-u 8 * om ******** toe te voegen. -Je hebt nu de eenvoudigste manier geleerd om iets in Emacs te tikken en fouten te -verbeteren. Je kan tekst ook per woord of regel verwijderen. Hier volgt -een samenvatting van de commando's om tekst te verwijderen: +Je hebt nu de eenvoudigste manier geleerd om iets in Emacs te tikken +en fouten te verbeteren. Je kan tekst ook per woord of regel +verwijderen. Hier volgt een samenvatting van de commando's om tekst +te verwijderen: + + <Delback> Haal het teken weg dat voor de cursor staat + C-d Haal het teken weg dat achter de cursor staat - <Delback> haal het teken weg dat voor de cursor staat - C-d haal het teken weg dat achter de cursor staat + M-<Delback> Verwijder het woord dat voor de cursor staat + M-d Verwijder het woord dat achter de cursor staat - M-<Delback> verwijder het woord dat voor de cursor staat - M-d verwijder het woord dat achter de cursor staat + C-k Verwijder alles van de cursor tot het eind van de regel + M-k Verwijder alles van de cursor tot het eind van de zin - C-k verwijder alles van de cursor tot het eind van de regel - M-k verwijder alles van de cursor tot het eind van de zin +Merk op dat <Delback> en C-d, met M-<Delback> en M-d de analogie +verder trekken, die begon met C-f en M-f (waarbij we voor het gemak +even vergeten dat <Delback> niet echt een CONTROL-teken is). C-k en +M-k lijken enigzins op C-e en M-e in hun relatie tot regels en zinnen. -Merk op dat <Delback> en C-d, met M-<Delback> en M-d de analogie verder -trekken, die begon met C-f en M-f (waarbij we voor het gemak even vergeten dat -<Delback> niet echt een control teken is). C-k en M-k lijken enigzins op -C-e en M-e in hun relatie tot regels en zinnen. +Je kunt ook op één uniforme manier een willekeurig deel van de tekst +verwijderen. Beweeg daartoe naar één kant van het gedeelte dat je +wilt verwijderen en tik C-@ of C-<SPC>. (<SPC> is de spatiebalk.) +Beweeg daarna naar de andere kant en tik C-w. Dat verwijdert alle +tekst tussen de twee posities. -Als je meer dan een enkel teken tegelijk weghaalt, bewaart Emacs de tekst -die je verwijdert, zodat je hem weer terug kan halen. Verwijderde tekst -terughalen heet "yanken". Je kan verwijderde tekst terugbrengen op de -plaats waar je hem hebt verwijderd of op een andere plaats in de tekst. -Je kan ook meerdere keren yanken om er meedere kopieën van te maken. Het -yank-commando is C-y. +>> Beweeg de cursor naar de J aan het begin van de vorige alinea. +>> Tik C-<SPC>. Emacs toont nu de mededeling "Mark set" ("Markering + geplaatst") onderaan het scherm. +>> Plaats de cursor op de n van "kant" op de tweede regel van de + alinea. +>> Tik C-w. Dit zal de tekst vanaf de J tot vlak voor de n + verwijderen. -Merk op dat er een verschil is tussen iets weghalen en iets verwijderen: -iets dat je hebt verwijderd, kan je terugbrengen, maar iets dat je hebt +Er is een verschil tussen iets weghalen en iets verwijderen: iets dat +je hebt verwijderd, kan je terugbrengen, maar iets dat je hebt weggehaald niet. (In het Engels is het verschil tussen "killing" en -"deleting" duidelijker dan tussen de Nederlandse vertalingen "verwijderen" en -"weghalen".) In het algemeen geldt dat de commando's die meer tekst dan -een enkel teken, Newline of spatie verwijderen, deze tekst bewaren zodat hij -geyankt kan worden, terwijl dat niet geldt voor commando's die slechts een -enkel teken weghalen. +"deleting" duidelijker dan tussen de Nederlandse vertalingen +"verwijderen" en "weghalen".) Verwijderde tekst terughalen heet +"yanken". In het algemeen geldt dat de commando's die meer tekst dan +een enkel teken, Newline of spatie verwijderen, deze tekst bewaren +zodat hij geyankt kan worden, terwijl dat niet geldt voor commando's +die slechts een enkel teken weghalen. >> Zet de cursor op het begin van een regel die niet leeg is. Tik C-k om de tekst op die regel te verwijderen. ->> Tik C-k een tweede keer. Nu verwijdert dit commando het Newline-teken. +>> Tik C-k een tweede keer. Nu verwijdert dit commando het + Newline-teken. -Merk op hoe een enkel C-k commando de inhoud van een regel verwijdert, een -tweede C-k commando de regel zelf zodat alle volgende regels een regel -omhoog komen. Het numerieke argument is voor C-k bijzonder: het aangegeven -aantal regels zal worden verwijderd, inclusief de inhoud. Dit is meer dan -simpelweg herhaling: C-u 2 C-k verwijdert twee regels, terwijl tweemaal -C-k tikken dat niet doet. +Merk op hoe een enkel C-k commando de inhoud van een regel verwijdert, +een tweede C-k commando de regel zelf zodat alle volgende regels een +regel omhoog komen. Het numerieke argument is voor C-k bijzonder: het +aangegeven aantal regels zal worden verwijderd, inclusief de inhoud. +Dit is meer dan simpelweg herhaling: C-u 2 C-k verwijdert twee regels, +terwijl tweemaal C-k tikken dat niet doet. Om de laatst verwijderde tekst terug te halen naar de plaats waar de cursor nu op staat (te yanken), tik C-y. @@ -408,199 +443,229 @@ Het is alsof je met C-y iets uit de prullenbak haalt wat je net had verwijderd. Merk op dat verschillende C-k's achter elkaar alle regels -die verwijderd worden, bij elkaar bewaart zodat een enkele C-y die regels -in een keer terugbrengt. +die verwijderd worden, bij elkaar bewaart zodat een enkele C-y die +regels in een keer terugbrengt. >> Probeer het nu: tik C-k een paar keer. Om de verwijderde tekst terug te halen: ->> Tik C-y. Beweeg de cursor enkele regels naar beneden en tik weer C-y. - Je ziet nu hoe je tekst kan kopiëren. +>> Tik C-y. Beweeg de cursor enkele regels naar beneden en tik weer + C-y. Je ziet nu hoe je tekst kan kopiëren. Wat moet je doen als je wat tekst terug wilt brengen, maar je intussen -al iets anders verwijderd hebt? C-y zou datgene terugbrengen wat je het -recentst hebt verwijderd. Gelukkig is de voorgaande tekst niet verloren -gegaan. Je kunt die tekst terughalen met M-y. Nadat je C-y hebt getikt -om de recentst weggegooide tekst terug te halen, vervangt M-y die tekst -met de tekst die je daarvoor had weggegooid. Je kunt M-y herhalen om -tekst terug te halen die je al langer geleden hebt weggegooid. Als -je de tekst te pakken hebt die je zocht, hoef je niets te doen om die -daar te houden. Je kan gewoon verder werken en de teruggehaalde tekst -met rust laten. +al iets anders verwijderd hebt? C-y zou datgene terugbrengen wat je +het recentst hebt verwijderd. Gelukkig is de voorgaande tekst niet +verloren gegaan. Je kunt die tekst terughalen met M-y. Nadat je C-y +hebt getikt om de recentst weggegooide tekst terug te halen, vervangt +M-y die tekst met de tekst die je daarvoor had weggegooid. Je kunt +M-y herhalen om tekst terug te halen die je al langer geleden hebt +weggegooid. Als je de tekst te pakken hebt die je zocht, hoef je +niets te doen om die daar te houden. Je kan gewoon verder werken en +de teruggehaalde tekst met rust laten. Als je M-y vaak genoeg tikt kom je terug waar je begon, bij de laatst verwijderde tekst. ->> Verwijder een regel, beweeg de cursor wat, en verwijder nog een regel. - Tik C-y om de tweede regel die je verwijderde, terug te halen. - Tik nog een M-y en die regel wordt vervangen door de eerste regel - die je verwijderde. - Tik nog enkele keren M-y en zie wat er langs komt. Herhaal dit tot de - tweede regel weer langs komt, en dan nog een paar keer. - Je kan ook experimenteren met positieve en negatieve argumenten bij - M-y. +>> Verwijder een regel, beweeg de cursor wat, en verwijder nog een + regel. Tik C-y om de tweede regel die je verwijderde, terug te + halen. Tik nog een M-y en die regel wordt vervangen door de eerste + regel die je verwijderde. Tik nog enkele keren M-y en zie wat er + langs komt. Herhaal dit tot de tweede regel weer langs komt, en + dan nog een paar keer. Je kan ook experimenteren met positieve en + negatieve argumenten bij M-y. * HERSTELLEN ------------ Als je de tekst veranderd hebt en je daar toch niet tevreden mee bent, -dan kan je de verandering ongedaan maken met het herstelcommando, C-x u. +dan kan je de verandering ongedaan maken met het herstelcommando, C-x +u. -Normaal gesproken herstelt C-x u de veranderingen die het gevolg zijn van -een enkel commando; door herhaaldelijk C-x u te tikken, worden steeds -eerdere commando's hersteld. +Normaal gesproken herstelt C-x u de veranderingen die het gevolg zijn +van een enkel commando; door herhaaldelijk C-x u te tikken, worden +steeds eerdere commando's hersteld. -Er zijn echter twee uitzonderingen: commando's die de tekst niet wijzigen, -zoals cursorbewegingen, worden overgeslagen, en commando's die simpelweg -het ingetikte teken aan de tekst toevoegen, worden meestal gegroepeerd -in groepjes van maximaal 20 tekens, zodat je minder vaak het commando -C-x u hoeft te tikken om teksttoevoegingen te herstellen. +Er zijn echter twee uitzonderingen: commando's die de tekst niet +wijzigen, zoals cursorbewegingen, worden overgeslagen, en commando's +die simpelweg het ingetikte teken aan de tekst toevoegen, worden +meestal gegroepeerd in groepjes van maximaal 20 tekens, zodat je +minder vaak het commando C-x u hoeft te tikken om teksttoevoegingen te +herstellen. ->> Gooi deze regel weg met C-k; met C-x u zou hij weer moeten verschijnen. +>> Gooi deze regel weg met C-k; met C-x u zou hij weer moeten + verschijnen. -C-_ is een alternatief voor C-x u. Het levert exact hetzelfde resultaat -op, maar is makkelijker om een paar keer achter elkaar te tikken. Een -nadeel van C-_ is dat op sommige toetsenborden het intikken ervan niet -gebruiksvriendelijk is. Dat is ook de reden voor het alternatief, C-x u. -Op sommige terminals kan je C-_ tikken door "/" te tikken terwijl je de -CONTROL-toets ingedrukt houdt. +C-_ is een alternatief voor C-x u. Het levert exact hetzelfde +resultaat op, maar is makkelijker om een paar keer achter elkaar te +tikken. Een nadeel van C-_ is dat op sommige toetsenborden het +intikken ervan niet gebruiksvriendelijk is. Dat is ook de reden voor +het alternatief, C-x u. Op sommige terminals kan je C-_ tikken door +"/" te tikken terwijl je de CONTROL-toets ingedrukt houdt. -Een numeriek argument bij C-_ of C-x u duidt het aantal herhalingen aan. +Een numeriek argument bij C-_ of C-x u duidt het aantal herhalingen +aan. * BESTANDEN ----------- -Om een tekst die je gemaakt of veranderd hebt op te slaan, moet je de tekst -in een bestand stoppen ("to save a file" in het Engels). Als je dat niet -doet, ben je die veranderingen kwijt op het moment dat je Emacs verlaat. -Je kan een bestand veranderen door het bestand te "bezoeken". (Ook wel -"vinden"; "finding" of "visiting" in het Engels.) +Om een tekst die je gemaakt of veranderd hebt op te slaan, moet je de +tekst in een bestand stoppen ("to save a file" in het Engels). Als je +dat niet doet, ben je die veranderingen kwijt op het moment dat je +Emacs verlaat. Je kan een bestand veranderen door het bestand te +"bezoeken". (Ook wel "vinden"; "finding" of "visiting" in het +Engels.) Een bestand bezoeken betekent dat je de inhoud van dat bestand in -Emacs ziet. Het lijkt er dan op alsof je het bestand aan het veranderen -bent. Deze veranderingen zijn echter slechts tijdelijk zolang je het -bestand niet opslaat. Op deze manier kan je nooit per ongeluk een half -gewijzigd bestand op het systeem achterlaten. Zelfs als je het bestand -opslaat, zorgt Emacs ervoor dat het originele bestand onder een gewijzigde -naam nog steeds beschikbaar is, voor het geval je later besluit dat de -veranderingen toch niet zo goed waren. +Emacs ziet. Het lijkt er dan op alsof je het bestand aan het +veranderen bent. Deze veranderingen zijn echter slechts tijdelijk +zolang je het bestand niet opslaat. Op deze manier kan je nooit per +ongeluk een half gewijzigd bestand op het systeem achterlaten. Zelfs +als je het bestand opslaat, zorgt Emacs ervoor dat het originele +bestand onder een gewijzigde naam nog steeds beschikbaar is, voor het +geval je later besluit dat de veranderingen toch niet zo goed waren. -Bij de onderkant van het scherm zie je een regel die begint en -eindigt met streepjes, met aan het begin "--:-- TUTORIAL.nl" of iets -dergelijks. Dit deel van het scherm laat normaal de naam van het bestand -zien dat je op dat moment bezoekt. Op dit moment bezoek je een bestand -dat "TUTORIAL.nl" heet; het is je eigen kopie van de Nederlandstalige -Emacs-inleiding ("tutorial" in het Engels). Als je in Emacs een bestand -bezoekt dan staat de naam van het bestand altijd op deze plaats. +Bij de onderkant van het scherm zie je een regel die begint en eindigt +met streepjes, met aan het begin "-1:-- TUTORIAL.nl" of iets +dergelijks. Dit deel van het scherm laat normaal de naam van het +bestand zien dat je op dat moment bezoekt. Op dit moment bezoek je +een bestand dat "TUTORIAL.nl" heet; het is je eigen kopie van de +Nederlandstalige Emacs-inleiding ("tutorial" in het Engels). Als je +in Emacs een bestand bezoekt dan staat de naam van het bestand altijd +op deze plaats. -De commando's om een bestand te bezoeken of op te slaan zijn anders dan de -commando's die je tot nu toe geleerd hebt; ze bestaan namelijk uit twee -tekens. Beide commando's beginnen met het teken Control-x. Er zijn een -heleboel commando's die met Control-x beginnen. Veel van die commando's -hebben te maken met bestanden, buffers, en gelijkaardige dingen. -Dergelijke commando's bestaan uit twee, drie of vier tekens. +Iets bijzonders aan het commando om een bestand te bezoeken, is dat je +aan moet geven welk bestand je wil. Dit heet dat het commando "een +argument van de gebruiker vraagt"; in dit geval de naam van het +bestand. Nadat je het commando -Nog iets bijzonders aan het commando om een bestand te bezoeken, is dat je -aan moet geven welk bestand je wil. Dit heet dat het commando "een -argument van de gebruiker vraagt"; in dit geval de naam van het bestand. -Nadat je het commando - - C-x C-f bezoek bestand (met de f van "find file") + C-x C-f Bezoek bestand (met de f van "find file"). hebt getikt vraagt Emacs om de naam van het bestand. De naam die je -intikt verschijnt op de onderste regel van het scherm. Wanneer die regel -voor dit soort invoer gebruikt wordt, heet hij de minibuffer. Je kan gewone -Emacs commando's gebruiken om de bestandsnaam te veranderen. +intikt verschijnt op de onderste regel van het scherm. Wanneer die +regel voor dit soort invoer gebruikt wordt, heet hij de minibuffer. +Je kan gewone Emacs commando's gebruiken om de bestandsnaam te +veranderen. -Tijdens het invoeren van de bestandsnaam (of om het even welke -invoer in de minibuffer) kan je het commando afbreken met C-g. +Tijdens het invoeren van de bestandsnaam (of om het even welke invoer +in de minibuffer) kan je het commando afbreken met C-g. ->> Tik C-x C-f gevolgd door C-g. Dit commando breekt de minibuffer af en - ook het C-x C-f commando dat van de minibuffer gebruik maakte. +>> Tik C-x C-f gevolgd door C-g. Dit commando breekt de minibuffer af + en ook het C-x C-f commando dat van de minibuffer gebruik maakte. Het resultaat is dat je geen bestand bezoekt. Als je de naam van een bestand hebt ingevoerd, tik dan <Return> om het -commando af te sluiten. Hierna gaat het C-x C-f commando aan het werk en haalt -het bestand op dat je aangegeven hebt. Als het C-x C-f commando daarmee -klaar is, verdwijnt de minibuffer. +commando af te sluiten. Hierna gaat het C-x C-f commando aan het werk +en haalt het bestand op dat je aangegeven hebt. Als het C-x C-f +commando daarmee klaar is, verdwijnt de minibuffer. -Na korte tijd verschijnt de inhoud van het bestand op het scherm en kan -je de inhoud wijzigen. Als je de wijzigingen op wilt slaan, tik dan het -commando +Na korte tijd verschijnt de inhoud van het bestand op het scherm en +kan je de inhoud wijzigen. Als je de wijzigingen op wilt slaan, tik +dan het commando - C-x C-s sla bestand op (met de s van "save file") + C-x C-s Sla bestand op (met de s van "save file"). -Dit commando slaat de tekst zoals Emacs die nu heeft in het bestand op. -De eerste keer dat je dit doet, slaat Emacs het originele bestand onder een -andere naam op, zodat het niet verloren gaat. De nieuwe naam bestaat uit de -oude bestandsnaam gevolgd door een "~". +Dit commando slaat de tekst zoals Emacs die nu heeft in het bestand +op. De eerste keer dat je dit doet, slaat Emacs het originele bestand +onder een andere naam op, zodat het niet verloren gaat. De nieuwe +naam bestaat uit de oude bestandsnaam gevolgd door een "~". Als Emacs het bestand heeft opgeslagen, laat het de naam van het -bestand zien. Het is een goede gewoonte een bestand regelmatig te op te slaan -zodat er niet teveel werk verloren gaat als het systeem hangt of crasht. +bestand zien. Het is een goede gewoonte een bestand regelmatig op te +slaan zodat er niet teveel werk verloren gaat als het systeem hangt of +crasht. ->> Tik C-x C-s, om je kopie van deze inleiding op te slaan. Als het goed is - verschijnt "Wrote ...TUTORIAL" op de onderste schermregel. +>> Tik C-x C-s, om je kopie van deze inleiding op te slaan. Als het + goed is verschijnt "Wrote ...TUTORIAL.nl" op de onderste + schermregel. -OPMERKING: Op sommige systemen gebeurt er helemaal niets als je C-x C-s -tikt, en daarna ook niets meer. Dit komt door een eigenschap van de -machine waarop je werkt die te maken heeft met "flow control". Met C-s -stopt de "flow" en komt niets meer van wat je tikt bij Emacs terecht. Om -deze situatie te herstellen, tik C-q. Lees daarna het hoofdstuk -"Spontaneous Entry to Incremental Search" in het Emacs-handboek over hoe -je moet omgaan met deze situatie. +OPMERKING: Op sommige systemen gebeurt er helemaal niets als je C-x +C-s tikt, en daarna ook niets meer. Dit komt door een eigenschap van +de machine waarop je werkt die te maken heeft met "flow control". Met +C-s stopt de "flow" en komt niets meer van wat je tikt bij Emacs +terecht. Om deze situatie te herstellen, tik C-q. Lees daarna het +hoofdstuk "Spontaneous Entry to Incremental Search" in het +Emacs-handboek over hoe je moet omgaan met deze situatie. Je kan een bestaand bestand bezoeken om het te bekijken of het te -wijzigen. Je kan ook een bestand bezoeken dat nog niet bestaat. Dit is -de manier om met Emacs een nieuw bestand te maken: bezoek het bestand, dat -eerst leeg zal zijn, en voeg tekst toe. Zodra je de tekst opslaat, wordt -het bestand werkelijk gecreëerd, met de tekst als inhoud. Vanaf dat -moment ben je dus bezig met een bestaand bestand. +wijzigen. Je kan ook een bestand bezoeken dat nog niet bestaat. Dit +is de manier om met Emacs een nieuw bestand te maken: bezoek het +bestand, dat eerst leeg zal zijn, en voeg tekst toe. Zodra je de +tekst opslaat, wordt het bestand werkelijk gecreëerd, met de tekst als +inhoud. Vanaf dat moment ben je dus bezig met een bestaand bestand. * BUFFERS --------- -Als je een tweede bestand bezoekt met C-x C-f, blijft het eerste bestand -gewoon in Emacs. Je kan naar dat bestand terug door het gewoon nog een -keer te bezoeken met C-x C-f. Op deze manier kan je een behoorlijk aantal -bestanden in Emacs krijgen. +Als je een tweede bestand bezoekt met C-x C-f, blijft het eerste +bestand gewoon in Emacs. Je kan naar dat bestand terug door het +gewoon nog een keer te bezoeken met C-x C-f. Op deze manier kan je +een behoorlijk aantal bestanden in Emacs krijgen. ->> Creëer een bestand dat "foo" heet door te tikken: C-f C-f foo +>> Creëer een bestand dat "foo" heet door te tikken: C-x C-f foo <Return>. Voeg hieraan wat tekst toe, wijzig hem, en sla "foo" op door C-x C-s te tikken. Tik hierna C-x C-f TUTORIAL <Return> om weer hier, in de inleiding, terug te komen. -Emacs bewaart intern de tekst van elk bestand in een ding dat een "buffer" -genoemd wordt. Als je een bestand bezoekt wordt er een nieuwe buffer -gemaakt. Om een lijst van de huidige buffers te zien, tik +Emacs bewaart intern de tekst van elk bestand in een ding dat een +"buffer" genoemd wordt. Als je een bestand bezoekt wordt er een +nieuwe buffer gemaakt. Om een lijst van de huidige buffers te zien, +tik - C-x C-b laat de bufferlijst zien + C-x C-b Laat de bufferlijst zien >> Probeer C-x C-b nu. -Bemerk dat elke buffer een naam heeft en mogelijk ook een bestandsnaam; dit -is de naam van het bestand waarmee de buffer overeenkomt. Sommige buffers -hebben niets met een bestand te maken. Bijvoorbeeld, de buffer die -"*Buffer List*" heet heeft geen bestand. Die buffer is de buffer die de -lijst bevat die door C-x C-b gemaakt wordt. ALLE tekst die je in een -Emacs venster ziet is altijd onderdeel van een of andere buffer. +Bemerk dat elke buffer een naam heeft en mogelijk ook een +bestandsnaam; dit is de naam van het bestand waarmee de buffer +overeenkomt. ALLE tekst die je in een Emacs venster ziet is altijd +onderdeel van een of andere buffer. >> Tik C-x 1 om de bufferlijst te verwijderen. +Wanneer je met meerdere buffers werkt, dan is op elk moment slechts +één van die buffers "actueel". De actuele buffer is degene die je aan +het bewerken bent. Als je een andere buffer wilt bewerken, dan moet +je daarnaar "omschakelen". Als je wilt omschakelen naar een buffer +die overeenkomt met een bestand, dan kun je dit doen door dat bestand +opnieuw te bezoeken met C-x C-f. Er is ook een makkelijkere manier: +gebruik het commando C-x b. Dit commando vraagt je naar de naam van +de buffer. + +>> Tik C-x b foo <Return> om terug te gaan naar de buffer "foo" die de + tekst van het bestand "foo" bevat. Tik vervolgens C-x b TUTORIAL + <Return> om terug te komen naar deze Emacs-inleiding. + +Meestal is de naam van de buffer gelijk aan de naam van het bestand +(minus de naam van de directory). Dit klopt echter niet altijd. De +lijst met buffers die je maakt met C-x C-b laat je altijd de naam van +elke buffer zien. + +ALLE tekst die je ziet in een venster van Emacs is altijd onderdeel +van een of andere buffer. Sommige buffers komen niet overeen met een +bestand. De buffer genaamd "*Buffer List*" heeft bijvoorbeeld geen +bijbehorend bestand. Deze buffer bevat de lijst met buffers die je +gemaakt hebt met C-x C-b. Ook de buffer "*Messages*" heeft geen +geassocieerd bestand; deze buffer bevat de mededelingen die Emacs je +op de onderste regel toonde. + +>> Tik C-x b *Messages* <Return> om de buffer met mededelingen te + bekijken. Tik daarna weer C-x b TUTORIAL <Return> om terug te + keren naar deze buffer met de Emacs-inleiding + Als je de tekst van het ene bestand verandert en dan een ander bestand -bezoekt, wordt het eerste bestand niet opgeslagen. De wijzigingen blijven -in Emacs, in de buffer die bij het bestand hoort. Het creëren of -veranderen van de buffer van het tweede bestand heeft geen effect op de -eerste buffer. Dit is erg nuttig, maar betekent ook dat er een eenvoudige -manier nodig is om het eerste bestand te bewaren. Het zou erg vervelend -zijn om er eerst naar terug te moeten gaan met C-x C-f om het dan te -kunnen bewaren met C-x C-s. Dus hebben we het commando: +bezoekt, wordt het eerste bestand niet opgeslagen. De wijzigingen +blijven in Emacs, in de buffer die bij het bestand hoort. Het creëren +of veranderen van de buffer van het tweede bestand heeft geen effect +op de eerste buffer. Dit is erg nuttig, maar betekent ook dat er een +eenvoudige manier nodig is om het eerste bestand te bewaren. Het zou +erg vervelend zijn om er eerst naar terug te moeten gaan met C-x C-f +om het dan te kunnen bewaren met C-x C-s. Dus hebben we het commando: - C-x s sla een paar buffers op + C-x s Sla een paar buffers op C-x s vraagt voor elke buffer die veranderingen heeft die nog niet opgeslagen zijn, of je de buffer wilt bewaren. @@ -616,56 +681,62 @@ Er zijn veel meer Emacs commando's dan er op de toetsen van het toetsenbord passen, zelfs als we hun aantal kunnen vergroten door de -control of meta toets te gebruiken. Emacs lost dit probleem op met het X -commando (met de X van eXtensie of uitbreiding). Het X commando komt voor in -twee smaken: +CONTROL- of META-toets te gebruiken. Emacs lost dit probleem op met +het X commando (met de X van eXtensie of uitbreiding). Het X commando +komt voor in twee smaken: - C-x Tekenuitbreiding. Bevolgd door een teken. + C-x Tekenuitbreiding. Gevolgd door een teken. M-x Commando-naam-uitbreiding. Wordt gevolgd door een naam. -Deze commando's zijn in het algemeen nuttig, maar worden minder gebruikt -dan de commando's die je tot nu toe al geleerd hebt. Je hebt al twee van deze -commando's gezien: C-x C-f om een bestand te bezoeken, en C-x C-s om het -te bewaren. Een ander voorbeeld is het commando om Emacs te verlaten: dit -is C-x C-c. (Maak je geen zorgen over het verloren gaan van veranderingen -die niet opgeslagen zijn; C-x C-c vraagt of je veranderde buffers wilt -bewaren voordat Emacs helemaal eindigt.) +Deze commando's zijn in het algemeen nuttig, maar worden minder +gebruikt dan de commando's die je tot nu toe al geleerd hebt. Je hebt +al enkele van deze commando's gezien: C-x C-f om een bestand te +bezoeken en C-x C-s om het te bewaren, bijvoorbeeld. Een ander +voorbeeld is het commando om Emacs te verlaten: dit is C-x C-c. (Maak +je geen zorgen over het verloren gaan van veranderingen die niet +opgeslagen zijn; C-x C-c vraagt of je veranderde buffers wilt bewaren +voordat Emacs helemaal eindigt.) -C-z is het commando om Emacs *tijdelijk* te verlaten, zodat je daarna weer -terug kan keren in dezelfde Emacs-sessie. +C-z is het commando om Emacs *tijdelijk* te verlaten, zodat je daarna +weer terug kan keren in dezelfde Emacs-sessie. -Op systemen die deze mogelijkheid bieden, zet C-z Emacs stil: je komt weer -terug in de shell, maar Emacs is nog aanwezig. In de meeste shells kan je -Emacs weer activeren met het "fg" commando, of met "%emacs". +Op systemen die deze mogelijkheid bieden, zet C-z Emacs stil: je komt +weer terug in de shell, maar Emacs is nog aanwezig. In de meeste +shells kan je Emacs weer activeren met het "fg" commando, of met +"%emacs". -Op systemen die niet de mogelijkheid bieden om programma's stil te zetten, -creëert C-z een subshell onder Emacs om je zo in de gelegenheid te -stellen andere programma's uit te voeren en daarna weer in Emacs terug te -keren; Emacs wordt dus niet werkelijk verlaten. In dit geval is het -shellcommando "exit" de normale manier om de subshell te verlaten en in -Emacs terug te keren. +Op systemen die niet de mogelijkheid bieden om programma's stil te +zetten, creëert C-z een subshell onder Emacs om je zo in de +gelegenheid te stellen andere programma's uit te voeren en daarna weer +in Emacs terug te keren; Emacs wordt dus niet werkelijk verlaten. In +dit geval is het shellcommando "exit" de normale manier om de subshell +te verlaten en in Emacs terug te keren. -Het moment om C-x C-c te gebruiken is wanneer je uit gaat loggen. Het is -ook het juiste commando om Emacs te beëindigen wanneer Emacs opgestart -was door een mail-programma of iets dergelijks, aangezien die misschien -niet met een stilgezette Emacs om kunnen gaan. Normaal gezien is het -echter beter Emacs stil te zetten met C-z dan om Emacs te verlaten, -behalve als je uit wilt loggen natuurlijk. +Het moment om C-x C-c te gebruiken is wanneer je uit gaat loggen. Het +is ook het juiste commando om Emacs te beëindigen wanneer Emacs +opgestart was door een mail-programma of iets dergelijks, aangezien +die misschien niet met een stilgezette Emacs om kunnen gaan. Normaal +gezien is het echter beter Emacs stil te zetten met C-z dan om Emacs +te verlaten, behalve als je uit wilt loggen natuurlijk. -Er bestaan vele C-x commando's. Hier is een lijst van degene die je nu al -kent: +Er bestaan vele C-x commando's. Hier is een lijst van degene die je +nu al kent: - C-x C-f bezoek bestand - C-x C-s sla bestand op - C-x C-b laat bufferlijst zien - C-x C-c verlaat Emacs - C-x u herstel + C-x C-f Bezoek bestand + C-x C-s Sla bestand op + C-x s Sla een paar buffers op + C-x C-b Laat bufferlijst zien + C-x b Schakel naar een buffer + C-x C-c Verlaat Emacs + C-x 1 Een enkel venster + C-x u Herstel -Commando-naam-bevelen worden nog minder vaak gebruikt, of alleen onder bepaalde omstandigheden. -Een voorbeeld is het commando replace-string, dat in de hele tekst een string -vervangt door een andere string ("to replace" betekent "vervangen"). -Als je M-x tikt, toont Emacs onderaan het scherm "M-x" en moet je de naam van -het commando intikken, in dit geval "replace-string". Als je gewoon +Commando-naam-bevelen worden nog minder vaak gebruikt, of alleen onder +bepaalde omstandigheden. Een voorbeeld is het commando +replace-string, dat in de hele tekst een string vervangt door een +andere string ("to replace" betekent "vervangen"). Als je M-x tikt, +toont Emacs onderaan het scherm "M-x" en moet je de naam van het +commando intikken, in dit geval "replace-string". Als je gewoon "repl s<TAB>" tikt maakt Emacs de naam zelf af. Beëindig het commando met <Return>. @@ -676,137 +747,146 @@ >> Plaats de cursor op de lege regel twee regels onder deze regel. Tik dan M-x repl s<Return>gewijzigd<Return>veranderd<Return>. - Zie hoe deze regel daardoor gewijzigd is. Je hebt elk voorkomen van - het woord g-e-w-i-j-z-i-g-d vervangen door "veranderd"; te beginnen op - de plek waar de cursor staat. + Zie hoe deze regel daardoor gewijzigd is. Je hebt elk voorkomen + van het woord g-e-w-i-j-z-i-g-d vervangen door "veranderd"; te + beginnen op de plek waar de cursor staat. * AUTOMATISCH BEWAREN --------------------- -Als je een bestand veranderd hebt maar het nog niet opgeslagen hebt, zouden -de veranderingen verloren kunnen gaan als het systeem zou hangen of -herstarten. Om je hiertegen te beschermen, slaat Emacs regelmatig -de veranderde tekst automatisch op. De naam van het bestand waarin de -tekst automatisch wordt opgeslagen begint en eindigt met een #. -Bijvoorbeeld, als je het bestand "hello.c" aan het editeren bent, wordt -de tekst automatisch opgeslagen in een bestand dat "#hello.c#" heet. Zodra -je het bestand werkelijk opslaat, wordt het automatisch opgeslagen bestand -verwijderd. +Als je een bestand veranderd hebt maar het nog niet opgeslagen hebt, +zouden de veranderingen verloren kunnen gaan als het systeem zou +hangen of herstarten. Om je hiertegen te beschermen, slaat Emacs +regelmatig de veranderde tekst automatisch op. De naam van het +bestand waarin de tekst automatisch wordt opgeslagen begint en eindigt +met een #. Bijvoorbeeld, als je het bestand "hello.c" aan het +bewerken bent, wordt de tekst automatisch opgeslagen in een bestand +dat "#hello.c#" heet. Zodra je het bestand werkelijk opslaat, wordt +het automatisch opgeslagen bestand verwijderd. -Als de computer crasht, kan je de automatisch opgeslagen tekst terugkrijgen -door het bestand gewoon te bezoeken (het originele bestand, niet het automatisch -opgeslagen), gevolgd door M-x recover-file<Return>. Als Emacs vraagt om -bevestiging, antwoord dan met yes<Return> en de automatisch opgeslagen -informatie wordt teruggehaald. +Als de computer crasht, kan je de automatisch opgeslagen tekst +terugkrijgen door het bestand gewoon te bezoeken (het originele +bestand, niet het automatisch opgeslagen), gevolgd door M-x +recover-file<Return>. Als Emacs vraagt om bevestiging, antwoord dan +met yes<Return> en de automatisch opgeslagen informatie wordt +teruggehaald. * ECHO-GEBIED ------------- Als je een commando langzaam intikt, toont Emacs de tekens aan de -onderkant van het scherm in een deel dat het "echo-gebied" genoemd wordt. -Dit gebied omvat de onderste regel van het scherm. +onderkant van het scherm in een deel dat het "echo-gebied" genoemd +wordt. Dit gebied omvat de onderste regel van het scherm. * MODUS-REGEL ------------- -De regel direct boven het echo gebied heet de "modusregel". De modusregel -ziet er ongeveer zo uit: +De regel direct boven het echo gebied heet de "modusregel". De +modusregel ziet er ongeveer zo uit: ---**-Emacs: TUTORIAL.nl (Fundamental)--68%------------------------ +-1:** TUTORIAL.nl 62% L763 (Fundamental)----------------------- -Deze regel geeft interessante informatie over Emacs en de tekst die -je aan het editeren bent. +Deze regel geeft interessante informatie over Emacs en de tekst die je +aan het bewerken bent. -Je weet al wat de bestandsnaam betekent: het is de naam van het bestand -dat je bezoekt. -NN%-- geeft je huidige positie in de tekst aan: NN -procent van de tekst bevindt zich boven het scherm. Als het bestand vanaf -het begin op het scherm staat, staat er --Top-- in plaats van --00%--. -Als het laatste stuk tekst op het scherm staat, zal er --Bot-- staan (van -"bottom", "onderkant" in het Nederlands). Als de tekst zo klein is dat hij -volledig op het scherm past staat --All-- in de modus-regel. +Je weet al wat de bestandsnaam betekent: het is de naam van het +bestand dat je bezoekt. NN% geeft je huidige positie in de tekst aan: +NN procent van de tekst bevindt zich boven het scherm. Als het +bestand vanaf het begin op het scherm staat, staat er "Top" in plaats +van " 0%". Als het laatste stuk tekst op het scherm staat, zal er +"Bot" staan (van "bottom", "onderkant" in het Nederlands). Als de +tekst zo klein is dat hij volledig op het scherm past staat "All" in +de modus-regel. + +De L gevolgd door een getal geeft het nummer van de regel waarin punt +zich bevindt. De sterretjes aan het begin betekenen dat je de tekst veranderd hebt. Direct na het bezoeken of opslaan staan er gewoon streepjes. In de modusregel staat tussen haakjes in welke modus je aan het werken bent. De standaardmodus is de "Fundamental" modus, die je nu gebruikt -("fundamental" is "basis" in het Nederlands). Een dergelijke -modus heet een hoofdmodus ("major mode" in het Engels). +("fundamental" is "basis" in het Nederlands). Een dergelijke modus +heet een hoofdmodus ("major mode" in het Engels). -Emacs heeft verschillende hoofdmodi. Sommige daarvan zijn bedoeld voor -het editeren van verschillende talen of soorten tekst, zoals bijvoorbeeld -Lisp modus, Text modus, etc. Op elk moment is er altijd precies een modus -actief, en de naam daarvan staat in de modusregel, op de plaats waar nu -"Fundamental" staat. +Emacs heeft verschillende hoofdmodi. Sommige daarvan zijn bedoeld +voor het bewerken van verschillende talen of soorten tekst, zoals +bijvoorbeeld Lisp modus, Text modus, etc. Op elk moment is er altijd +precies een modus actief, en de naam daarvan staat in de modusregel, +op de plaats waar nu "Fundamental" staat. -Elke hoofdmodus zorgt ervoor dat sommige commando's zich anders gedragen. -Zo bestaat er een commando om een commentaar in een programma te tikken, en -aangezien elke programmeertaal een ander idee heeft over hoe commentaar -eruit moet zien, moet elke hoofdmodus op een andere manier het commentaar -beginnen. Elke hoofdmodus is de naam van een uitgebreid commando, en met -dat commando schakel je om naar die hoofdmodus. Zo is bijvoorbeeld -M-x fundamental-mode het commando om naar de basismodus om te schakelen. +Elke hoofdmodus zorgt ervoor dat sommige commando's zich anders +gedragen. Zo bestaat er een commando om een commentaar in een +programma te tikken, en aangezien elke programmeertaal een ander idee +heeft over hoe commentaar eruit moet zien, moet elke hoofdmodus op een +andere manier het commentaar beginnen. Elke hoofdmodus is de naam van +een uitgebreid commando, en met dat commando schakel je om naar die +hoofdmodus. Zo is bijvoorbeeld M-x fundamental-mode het commando om +naar de basismodus om te schakelen. -Als je Nederlandse of Engelse tekst wil gaan editeren, zoals bijvoorbeeld -dit bestand, kan je beter "Text mode" gebruiken, de modus om tekst in een -gewone taal te editeren: +Als je Nederlandse of Engelse tekst wil gaan bewerken, zoals +bijvoorbeeld dit bestand, kan je beter "Text mode" gebruiken, de modus +om tekst in een gewone taal te bewerken: >> Tik M-x text-mode<Return>. Wees gerust; geen van de commando's die je geleerd hebt zorgen voor -grondige veranderingen in Emacs. Een van de dingen die je kan merken, is -bijvoorbeeld dat M-f en M-b nu apostrofs als onderdeel van een woord -beschouwen. In de vorige modus (Fundamental) behandelen M-f en M-b de -apostrof als ruimte tussen twee woorden. +grondige veranderingen in Emacs. Een van de dingen die je kan merken, +is bijvoorbeeld dat M-f en M-b nu apostrofs als onderdeel van een +woord beschouwen. In de vorige modus (Fundamental) behandelen M-f en +M-b de apostrof als ruimte tussen twee woorden. -Het is gebruikelijk dat hoofdmodi dergelijke subtiele verschillen hebben. -De meeste commando's doen dus min of meer hetzelfde in elke hoofdmodus. +Het is gebruikelijk dat hoofdmodi dergelijke subtiele verschillen +hebben. De meeste commando's doen dus min of meer hetzelfde in elke +hoofdmodus. -Met het commando C-h m kan je de documentatie over de huidige hoofdmodus -lezen. +Met het commando C-h m kan je de documentatie over de huidige +hoofdmodus lezen. ->> Gebruik C-u C-v een paar keer om deze zin in de buurt van de bovenkant - van het scherm te krijgen. +>> Gebruik C-u C-v een paar keer om deze zin in de buurt van de + bovenkant van het scherm te krijgen. >> Tik C-h m om te zien hoe de tekstmodus verschilt van de basismodus. >> Tik C-x 1 om de documentatie van het scherm te verwijderen. -Hoofdmodi heten zo omdat er ook bijmodi zijn. Bijmodi zijn -geen alternatieven voor hoofdmodi; het zijn slechts kleine aanpassingen +Hoofdmodi heten zo omdat er ook bijmodi zijn. Bijmodi zijn geen +alternatieven voor hoofdmodi; het zijn slechts kleine aanpassingen daarvan. Elke bijmodus kan aan- of uitgezet worden, onafhankelijk van -andere bijmodi en onafhankelijk van de hoofdmodus. Het is dus mogelijk geen bijmodi, één bijmodus -of een willekeurige combinatie van bijmodi te gebruiken. +andere bijmodi en onafhankelijk van de hoofdmodus. Het is dus +mogelijk geen bijmodi, één bijmodus of een willekeurige combinatie van +bijmodi te gebruiken. -Een nuttige bijmodus voor het editeren van tekst in een natuurlijke taal, -zoals het Nederlands, is Auto Fill modus ("auto fill" betekent automatisch -uitvullen). Wanneer deze modus aanstaat, breekt Emacs automatisch een -regel tussen twee woorden af als de regel te lang wordt. +Een nuttige bijmodus voor het bewerken van tekst in een natuurlijke +taal, zoals het Nederlands, is Auto Fill modus ("auto fill" betekent +automatisch uitvullen). Wanneer deze modus aanstaat, breekt Emacs +automatisch een regel tussen twee woorden af als de regel te lang +wordt. -Je kan Auto Fill modus aanzetten met M-x auto-fill-mode<Return>. Als deze -modus al aanstaat, kan je hem uitzetten met M-x auto-fill-mode<Return>. -Als de modus uitstaat, zet dit commando de modus aan; als ze aanstaat, zet -dit commando de modus uit. We zeggen dat het commando de modus "schakelt" -("to toggle" in het Engels). +Je kan Auto Fill modus aanzetten met M-x auto-fill-mode<Return>. Als +deze modus al aanstaat, kan je hem uitzetten met M-x +auto-fill-mode<Return>. Als de modus uitstaat, zet dit commando de +modus aan; als ze aanstaat, zet dit commando de modus uit. We zeggen +dat het commando de modus "schakelt" ("to toggle" in het Engels). ->> Tik nu M-x auto-fill-mode<Return>. Tik nu vele malen "asdf " op een - regel zodat je kan zien dat de regel in tweeën gesplitst wordt. Er - moeten wel spaties tussen de woorden staan, omdat de Auto Fill modus - de regel alleen op spaties breekt. +>> Tik nu M-x auto-fill-mode<Return>. Tik nu vele malen "asdf " op + een regel zodat je kan zien dat de regel in tweeën gesplitst wordt. + Er moeten wel spaties tussen de woorden staan, omdat de Auto Fill + modus de regel alleen op spaties breekt. -De rechterkantlijn staat meestal op 70 tekens, maar die kan je veranderen -met het C-x f commando. Dit commando accepteert een numeriek argument -om de gewenste kantlijn te verkrijgen. +De rechterkantlijn staat meestal op 70 tekens, maar die kan je +veranderen met het C-x f commando. Dit commando accepteert een +numeriek argument om de gewenste kantlijn te verkrijgen. >> Tik C-x f met 20 als argument (C-u 20 C-x f). Tik wat tekst en zie dat Emacs de regels afbreekt bij 20 tekens. Zet de kantlijn nu terug op 70, dus met met C-u 70 C-x f. -Als je de tekst midden in een regel verandert vult Auto Fill modus -de regel niet opnieuw. -Om een alinea opnieuw te vullen, tik M-q (META-q) terwijl de -cursor in de alinea staat. +Als je de tekst midden in een regel verandert vult Auto Fill modus de +regel niet opnieuw. +Om een alinea opnieuw te vullen, tik M-q (META-q) terwijl de cursor in +de alinea staat. >> Plaats de cursor in de voorgaande alinea en tik M-q. @@ -814,64 +894,75 @@ * ZOEKEN -------- -Emacs kan tekenreeksen ("strings") zoeken, zowel volgend op -de cursorpositie, als eraan voorafgaand. Het zoeken naar een string +Emacs kan tekenreeksen ("strings") zoeken, zowel volgend op de +cursorpositie, als eraan voorafgaand. Het zoeken naar een string verplaatst de cursor naar de volgende plaats waar de gezochte string voorkomt. -Het zoekcommando van Emacs is anders dan de zoekcommando's van de meeste -tekstverwerkers; het zoekt incrementeel. Dit betekent dat het zoeken -gebeurt tijdens het intikken van de gezochte string. +Het zoekcommando van Emacs is anders dan de zoekcommando's van de +meeste tekstverwerkers; het zoekt incrementeel. Dit betekent dat het +zoeken gebeurt tijdens het intikken van de gezochte string. -Het commando om het voorwaarts zoeken te starten is C-s (met de "s" van "to -search", zoeken); C-r start het achterwaarts zoeken (met de "r" van -"reverse" of achteruit). MAAR WACHT! Probeer ze nu nog niet. +Het commando om het voorwaarts zoeken te starten is C-s (met de "s" +van "to search", zoeken); C-r start het achterwaarts zoeken (met de +"r" van "reverse" of achteruit). MAAR WACHT! Probeer ze nu nog niet. -Als je C-s tikt verschijnt de string "I-search" in het echo-gebied. Dit -betekent dat Emacs bezig is met een "incremental search" (incrementele -zoekopdracht) en wacht op het intikken van de zoekstring. <RET> beëindigt -het zoeken. +Als je C-s tikt verschijnt de string "I-search" in het echo-gebied. +Dit betekent dat Emacs bezig is met een "incremental search" +(incrementele zoekopdracht) en wacht op het intikken van de +zoekstring. <Return> beëindigt het zoeken. ->> Tik nu C-s om het zoeken te starten. Tik nu, LANGZAAM, één letter per - keer, het woord "cursor", met een pauze na elke letter zodat je kan - zien wat er met de cursor gebeurt. Je hebt nu eenmaal naar het woord - "cursor" gezocht. ->> Tik nogmaals C-s, om naar het volgende voorkomen van het woord "cursor" te - zoeken. +>> Tik nu C-s om het zoeken te starten. Tik nu, LANGZAAM, één letter + per keer, het woord "cursor", met een pauze na elke letter zodat je + kan zien wat er met de cursor gebeurt. Je hebt nu eenmaal naar het + woord "cursor" gezocht. +>> Tik nogmaals C-s, om naar het volgende voorkomen van het woord + "cursor" te zoeken. >> Tik nu viermaal <Delback> en let op de cursorbewegingen. ->> Tik <RET> om het zoeken te beëindigen. +>> Tik <Return> om het zoeken te beëindigen. -Zag je wat er gebeurde? Tijdens incrementeel zoeken probeert Emacs naar -de eerste plek te gaan waar de string staat die je tot dan toe getikt -hebt. Om naar de volgende plek te gaan, tik je C-s nog een keer. Als er -geen volgende plek is gevonden, biept Emacs en vertelt je dat de zoekopdracht -niets gevonden heeft ("is failing" in het Engels). C-g zou het zoeken ook afbreken. +Zag je wat er gebeurde? Tijdens incrementeel zoeken probeert Emacs +naar de eerste plek te gaan waar de string staat die je tot dan toe +getikt hebt. Om naar de volgende plek te gaan, tik je C-s nog een +keer. Als er geen volgende plek is gevonden, biept Emacs en vertelt +je dat de zoekopdracht niets gevonden heeft ("failing" in het Engels). +C-g zou het zoeken ook afbreken. + +OPMERKING: Op sommige systemen gebeurt er helemaal niets als je C-s +tikt, en daarna ook niets meer. Dit komt door een eigenschap van de +machine waarop je werkt die te maken heeft met "flow control". Met +C-s stopt de "flow" en komt niets meer van wat je tikt bij Emacs +terecht. Om deze situatie te herstellen, tik C-q. Lees daarna het +hoofdstuk "Spontaneous Entry to Incremental Search" in het +Emacs-handboek over hoe je moet omgaan met deze situatie. Als je tijdens incrementeel zoeken <Delback> tikt, zal je zien dat het -laatste teken dat je aan de zoekstring toegevoegd hebt, weggehaald wordt en dat het -zoeken teruggaat naar de voorgaande plaats. Als je bijvoorbeeld begint -met zoeken en je tikt een "c", dan ga je naar de plaats waar de "c" het -eerst voorkomt. Tik je vervolgens een "u", dan gaat de cursor naar de -plaats waar de string "cu" het eerst voorkomt. Als je nu <Delback> tikt, dan -wordt de "u" van de zoekstring afgehaald, en gaat de cursor terug naar de -plaats waar hij stond voordat je de "u" intikte, namelijk daar waar "c" het -eerst voorkwam. +laatste teken dat je aan de zoekstring toegevoegd hebt, weggehaald +wordt en dat het zoeken teruggaat naar de voorgaande plaats. Als je +bijvoorbeeld begint met zoeken en je tikt een "c", dan ga je naar de +plaats waar de "c" het eerst voorkomt. Tik je vervolgens een "u", dan +gaat de cursor naar de plaats waar de string "cu" het eerst voorkomt. +Als je nu <Delback> tikt, dan wordt de "u" van de zoekstring +afgehaald, en gaat de cursor terug naar de plaats waar hij stond +voordat je de "u" intikte, namelijk daar waar "c" het eerst voorkwam. Als je tijdens een zoekoperatie een CONTROL- of META-teken intikt, dan wordt het zoeken beëindigd. Er zijn een paar uitzonderingen, namelijk -tekens die tijdens zoeken een speciale betekenis hebben, zoals C-s en C-r. +tekens die tijdens zoeken een speciale betekenis hebben, zoals C-s en +C-r. -Met C-s begin je te zoeken naar de plaats waar de zoekstring voor het eerst -voorkomt NA de huidige cursorpositie. Als je iets wilt zoeken dat eerder in -de tekst moet voorkomen, gebruik dan C-r in plaats van C-s. Alles wat we nu weten -over C-s geldt ook voor C-r, alleen is de zoekrichting omgedraaid. +Met C-s begin je te zoeken naar de plaats waar de zoekstring voor het +eerst voorkomt NA de huidige cursorpositie. Als je iets wilt zoeken +dat eerder in de tekst moet voorkomen, gebruik dan C-r in plaats van +C-s. Alles wat we nu weten over C-s geldt ook voor C-r, alleen is de +zoekrichting omgedraaid. * MEERDERE VENSTERS ------------------- -Een van Emacs' aardige eigenschappen is dat je meerdere vensters op het -scherm kan laten zien. +Een van Emacs' aardige eigenschappen is dat je meerdere vensters op +het scherm kan laten zien. >> Zet de cursor op deze regel en tik C-u 0 C-l. @@ -880,52 +971,59 @@ bovenste venster. >> Tik C-M-v om de tekst in het onderste venster te verschuiven. - (Als je geen META-toets hebt, tik dan ESC C-v.) + (Als je geen META-toets hebt, tik dan <ESC> C-v.) ->> Tik C-x o (met de o van "other"; "ander" in het Nederlands) - om de cursor naar het andere venster te verplaatsen. +>> Tik C-x o (met de o van "other"; "ander" in het Nederlands) om de + cursor naar het andere venster te verplaatsen. >> Verschuif de tekst in het onderste venster, met C-v en M-v. Zorg ervoor dat je deze inleiding in het bovenste venster leest. ->> Tik weer C-x o om de cursor weer in het bovenste venster - te zetten. De cursor staat weer precies op de plaats waar - hij stond toen je het venster verliet. +>> Tik weer C-x o om de cursor weer in het bovenste venster te zetten. + De cursor staat weer precies op de plaats waar hij stond toen je + het venster verliet. -Je kan C-x o blijven gebruiken om van venster naar venster te gaan. Elk -venster heeft zijn eigen cursorpositie; de cursor is altijd enkel zichtbaar -in een daarvan. Alle normale commando's hebben betrekking op het venster -waarin de cursor staat. Dit venster is het "geselecteerde venster" -("selected window" in het Engels). +Je kan C-x o blijven gebruiken om van venster naar venster te gaan. +Elk venster heeft zijn eigen cursorpositie; de cursor is altijd enkel +zichtbaar in een daarvan. Alle normale commando's hebben betrekking +op het venster waarin de cursor staat. Dit venster is het +"geselecteerde venster" ("selected window" in het Engels). -Het C-M-v commando is erg nuttig wanneer je tekst aan het editeren bent in -het ene venster, terwijl je het andere venster als referentie gebruikt. -Je kan de cursor dan altijd in het venster houden waarin je bezig bent, -terwijl je met C-M-v door de tekst in het andere venster loopt. +Het C-M-v commando is erg nuttig wanneer je tekst aan het bewerken +bent in het ene venster, terwijl je het andere venster als referentie +gebruikt. Je kan de cursor dan altijd in het venster houden waarin je +bezig bent, terwijl je met C-M-v door de tekst in het andere venster +loopt. C-M-v is een voorbeeld van een CONTROL-META teken. Als je een echte -META-toets hebt kan je C-M-v intikken door zowel CTRL als META ingedrukt te -houden terwijl je v tikt. Het maakt niet uit in welke volgorde je CTRL en -META indrukt; het gaat erom welke toetsen ingedrukt zijn terwijl je tikt. +META-toets hebt kan je C-M-v intikken door zowel CONTROL als META +ingedrukt te houden terwijl je v tikt. Het maakt niet uit in welke +volgorde je CONTROL en META indrukt; het gaat erom welke toetsen +ingedrukt zijn terwijl je tikt. -Als je geen echte META-toets hebt kan je ESC gebruiken; de volgorde is dan -wel belangrijk. Je moet dan eerst ESC tikken, gevolgd door CTRL-v; -CTRL-ESC v zal niet werken. Dit komt doordat ESC zelf een teken is, -terwijl CTRL en META dat niet zijn. +Als je geen echte META-toets hebt kan je <ESC> gebruiken; de volgorde +is dan wel belangrijk. Je moet dan eerst <ESC> tikken, gevolgd door +CONTROL-v; CONTROL-<ESC> v zal niet werken. Dit komt doordat <ESC> +zelf een teken is, terwijl CONTROL en META dat niet zijn. ->> Tik C-x 1 (in het bovenste venster) om het onderste venster te laten - verdwijnen. +>> Tik C-x 1 (in het bovenste venster) om het onderste venster te + laten verdwijnen. (Als je C-x 1 tikt in het onderste venster laat je het bovenste -verdwijnen. C-x 1 betekent zoveel als "ik wil maar 1 venster, -en wel dat venster waar de cursor nu in staat.") +verdwijnen. C-x 1 betekent zoveel als "ik wil maar 1 venster, en wel +dat venster waar de cursor nu in staat.") -Hier is nog een manier om twee venster te krijgen die elk een andere tekst -laten zien: +Je hoeft niet dezelfde buffer in beide vensters te hebben. Wanneer je +C-x C-f gebruikt om een bestand in één van de vensters te bezoeken, +zal het andere venster niet veranderen. Je kunt de vensters +onafhankelijk van elkaar gebruiken om bestanden te bezoeken. ->> Tik C-x 4 C-f gevolgd door de naam van een van je bestanden, gevolgd - door <Return>. Het opgegeven bestand zal in het onderste venster - verschijnen, en de cursor zal in dat venster staan. +Hier is nog een manier om twee venster te krijgen die elk een andere +tekst laten zien: + +>> Tik C-x 4 C-f gevolgd door de naam van een van je bestanden, + gevolgd door <Return>. Het opgegeven bestand zal in het onderste + venster verschijnen, en de cursor zal in dat venster staan. >> Tik C-x o om terug naar het bovenste venster te gaan, en C-x 1 om het onderste venster te laten verdwijnen. @@ -934,74 +1032,80 @@ * RECURSIEVE BEWERKINGSNIVEAUS ------------------------------ -Soms kom je in Emacs in een recursief bewerkingsniveau terecht (Engels: -"recursive editing level"). Dit is te zien in de modusregel aan de vierkante -haken die om de haakjes van de naam van de hoofdmodus staan. Dan staat er -bijvoorbeeld [(Fundamental)] in plaats van (Fundamental). +Soms kom je in Emacs in een recursief bewerkingsniveau terecht +(Engels: "recursive editing level"). Dit is te zien in de modusregel +aan de vierkante haken die om de haakjes van de naam van de hoofdmodus +staan. Dan staat er bijvoorbeeld [(Fundamental)] in plaats van +(Fundamental). -Tik ESC ESC ESC Om uit een recursief bewerkingsniveau te komen. Dit is -een algemeen "ontsnappingscommando". Je kan het ook gebruiken om extra -vensters te verwijderen of om uit de minibuffer te komen. +Tik <ESC> <ESC> <ESC> Om uit een recursief bewerkingsniveau te komen. +Dit is een algemeen "ontsnappingscommando". Je kan het ook gebruiken +om extra vensters te verwijderen of om uit de minibuffer te komen. ->> Tik M-x om in een minibuffer te komen, en tik dan ESC ESC ESC +>> Tik M-x om in een minibuffer te komen, en tik dan <ESC> <ESC> <ESC> om er weer uit te komen. -C-g is niet bruikbaar om uit een recursief bewerkingsniveau te komen. De -reden hiervoor is dat C-g gebruikt wordt om commando's af te breken BINNEN -het recursieve bewerkingsniveau. +C-g is niet bruikbaar om uit een recursief bewerkingsniveau te komen. +De reden hiervoor is dat C-g gebruikt wordt om commando's af te breken +BINNEN het recursieve bewerkingsniveau. * MEER INFORMATIE ----------------- -We hebben geprobeerd je met deze inleiding precies genoeg informatie te leveren -om met Emacs te beginnen werken. De mogelijkheden van Emacs zijn zo groot dat -het onmogelijk is nu alles uit te leggen. Het kan zijn dat je meer over -Emacs wil leren omdat het zoveel nuttige mogelijkheden heeft. Emacs heeft -commando's om documentatie te laten zien over Emacs commando's. Deze -"helpcommando's" beginnen allemaal met C-h: "het Hulpteken". +We hebben geprobeerd je met deze inleiding precies genoeg informatie +te leveren om met Emacs te beginnen werken. De mogelijkheden van +Emacs zijn zo groot dat het onmogelijk is nu alles uit te leggen. Het +kan zijn dat je meer over Emacs wil leren omdat het zoveel nuttige +mogelijkheden heeft. Emacs heeft commando's om documentatie te laten +zien over Emacs commando's. Deze "helpcommando's" beginnen allemaal +met C-h: "het Hulpteken". Om hulp te krijgen tik je C-h, gevolgd door een teken om aan te duiden -welke hulp je wilt. Als je het echt niet meer weet, tik C-h ? en Emacs -vertelt welke hulp het allemaal te bieden heeft. Als je C-h hebt getikt -maar van gedachten veranderd bent, tik je gewoon C-g om het af te breken. +welke hulp je wilt. Als je het echt niet meer weet, tik C-h ? en +Emacs vertelt welke hulp het allemaal te bieden heeft. Als je C-h +hebt getikt maar van gedachten veranderd bent, tik je gewoon C-g om +het af te breken. -(In sommige installaties wordt de betekenis van C-h veranderd. Dat is geen goed -idee, zeker als die verandering op alle gebruikers invloed heeft, en is -een geldige reden om je beklag te doen bij de systeembeheerder of de -helpdesk. Als C-h intussen niet een bericht onderaan het scherm laat zien -over mogelijke hulp, probeer dan de F1 toets (functietoets 1) of gebruik -M-x help RET.) +(In sommige installaties wordt de betekenis van C-h veranderd. Dat is +geen goed idee, zeker als die verandering op alle gebruikers invloed +heeft, en is een geldige reden om je beklag te doen bij de +systeembeheerder of de helpdesk. Als C-h intussen niet een bericht +onderaan het scherm laat zien over mogelijke hulp, probeer dan de F1 +toets (functietoets 1) of gebruik M-x help <Return>.) De eenvoudigste hulp is C-h c. Tik C-h, het teken "c" en een teken of uitgebreid commando, en Emacs laat een zeer korte beschrijving van het commando zien. ->> Tik C-h c Control-p. - De beschrijving die getoond wordt zou zoiets moeten zijn als +>> Tik C-h c C-p. + +De beschrijving die getoond wordt, zou zoiets moeten zijn als: C-p runs the command previous-line (Nederlands: C-p voert het commando previous-line uit.) -Dit commando vertelt je "de naam van de functie". Functies worden vooral -gebruikt om Emacs uit te breiden of aan de wensen van de gebruiker aan te -passen. Aangezien functienamen gekozen zijn om aan te geven wat de -functie doet, zijn ze ook geschikt als heel korte documentatie; genoeg om -je te herinneren aan wat de commando's die je al geleerd hebt betekenen. +Dit commando vertelt je "de naam van de functie". Functies worden +vooral gebruikt om Emacs uit te breiden of aan de wensen van de +gebruiker aan te passen. Aangezien functienamen gekozen zijn om aan +te geven wat de functie doet, zijn ze ook geschikt als heel korte +documentatie; genoeg om je te herinneren aan wat de commando's die je +al geleerd hebt betekenen. Uitgebreide commando's zoals C-x C-s en (als je geen META-, EDIT- of ALT-toets hebt) <ESC> v kunnen ook getikt worden na C-h c. -Om meer informatie over een commando te krijgen, tik C-h k in plaats van -C-h c. +Om meer informatie over een commando te krijgen, tik C-h k in plaats +van C-h c. >> Tik C-h k C-p. -Dit laat de documentatie van de functie, inclusief de naam van de functie, -in een apart venster zien. Als je klaar bent met lezen, tik C-x 1 om van -dat venster af te komen. Je hoeft dat natuurlijk niet meteen te doen. Je -kan ook eerst wat anders doen voordat je C-x 1 tikt. +Dit laat de documentatie van de functie, inclusief de naam van de +functie, in een apart venster zien. Als je klaar bent met lezen, tik +C-x 1 om van dat venster af te komen. Je hoeft dat natuurlijk niet +meteen te doen. Je kan ook eerst wat anders doen voordat je C-x 1 +tikt. Hier zijn nog wat nuttige mogelijkheden van C-h: @@ -1009,91 +1113,134 @@ intikken. >> Tik C-h f previous-line<Return> - Dit laat alle informatie zien die Emacs heeft over de functie die het - C-p commando implementeert. + Dit laat alle informatie zien die Emacs heeft over de functie die + het C-p commando implementeert. + +Een vergelijkbaar commando C-h v toont de documentatie van variabelen +die je kunt instellen om het gedrag van Emacs naar wens aan te passen. +Het commando vraagt je om de naam van een variabele. C-h a Commando Apropos. Tik een woord in en Emacs zal een lijst van alle commando's laten zien waarin dat woord - voorkomt. Al deze commando's kunnen aangeroepen worden - met M-x. Bij sommige commando's staat met welke tekens - dit commando direct uitgevoerd kan worden. + voorkomt. Al deze commando's kunnen aangeroepen + worden met M-x. Bij sommige commando's staat met + welke tekens dit commando direct uitgevoerd kan + worden. >> Tik C-h a file<Return>. -Dit laat in een ander venster alle M-x commando's zien met "file" in hun -naam. Je zal teken-commando's zien als C-x C-f naast de overeenkomende -commandonaam zoals find-file. +Dit laat in een ander venster alle M-x commando's zien met "file" in +hun naam. Je zal teken-commando's zien als C-x C-f naast de +overeenkomende commandonaam zoals find-file. ->> Tik C-M-v herhaaldelijk om de tekst in het hulpvenster te verschuiven. +>> Tik C-M-v herhaaldelijk om de tekst in het hulpvenster te + verschuiven. >> Tik C-x 1 om het hulpvenster te verwijderen. + C-h i Lees de online handleidingen (ook wel Info genoemd). + Dit commando zet je in een speciale buffer genaamd + "*info*" waar je online handleidingen kunt lezen van + software die op je computer is geïnstalleerd. Tik m + Emacs <Return> om de handleiding van Emacs te lezen. + Als je nog nooit Info hebt gebruikt dan kun je ? + tikken zodat Emacs je een rondleiding geeft langs de + mogelijkheden van het Info systeem. Wanneer je klaar + bent met deze Emacs-inleiding dan kun je de + Emacs-Info-handleiding gebruiken als je primaire bron + van informatie. + + +* MEER MOGELIJKHEDEN +-------------------- + +Je kunt meer over Emacs leren door haar handleiding te lezen. Deze is +zowel als boek als in elektronische vorm via Info beschikbaar (gebruik +het Help menu of tik <F10> h r). Kijk bijvoorbeeld eens naar +"completion", hetgeen minder tikwerk oplevert, of "dired" wat het +omgaan met bestanden vereenvoudigt. + +"Completion" (of "afmaken", in het Nederlands) is een manier om +onnodig tikwerk te voorkomen. Als je bijvoorbeeld naar de +"*Messages*" buffer wilt omschakelen, dan kun je C-x b *M<Tab> tikken +en dan zal Emacs de rest van de buffernaam invullen voor zover dit +mogelijk is. Completion staat beschreven in de node "Completion" in +de Emacs-Info-handleiding. + +"Dired" toont je een lijst van bestanden in een directory, waarmee je +gemakkelijk bestanden kunt bezoeken, van naam kunt veranderen, kunt +wissen, of andere acties op uit kunt voeren. Informatie over Dired +kun je vinden in de node "Dired" van de Emacs-Info-handleiding. + * CONCLUSIE ----------- -Denk eraan dat je met C-x C-c gebruikt om Emacs te verlaten. Om tijdelijk -een shell te krijgen en daarna weer in Emacs terug te komen, tik C-z. +Denk eraan dat je met C-x C-c Emacs permanent verlaat. Om tijdelijk +een shell te krijgen en daarna weer in Emacs terug te komen, tik je +C-z. -De bedoeling van deze inleiding is dat ze begrijpelijk is voor alle nieuwe -Emacs-gebruikers. Als je dus iets onduidelijks bent tegengekomen, blijf -dan niet zitten en maak jezelf geen verwijten. Doe je beklag! +De bedoeling van deze inleiding is dat ze begrijpelijk is voor alle +nieuwe Emacs-gebruikers. Als je dus iets onduidelijks bent +tegengekomen, blijf dan niet zitten en maak jezelf geen verwijten. +Doe je beklag! * KOPIËREN ----------- -(De Engelse versie van) deze inleiding is voorafgegaan door een lange reeks -van Emacs-inleidingen, die begon met de inleiding die Stuart Cracraft schreef -voor de originele Emacs. Deze Nederlandse vertaling is gemaakt door -Pieter Schoenmakers <tiggr@ics.ele.tue.nl> op basis van de GNU Emacs 20.2 -TUTORIAL, en verbeterd en verbeterd door Frederik Fouvry. +(De Engelse versie van) deze inleiding is voorafgegaan door een lange +reeks van Emacs-inleidingen, die begon met de inleiding die Stuart +Cracraft schreef voor de originele Emacs. Deze Nederlandse vertaling +is gemaakt door Pieter Schoenmakers <tiggr@ics.ele.tue.nl> op basis +van de GNU Emacs 20.2 TUTORIAL, en nagezien en verbeterd door Frederik +Fouvry en Lute Kamstra. -(Wat nu volgt is een vertaling naar het Nederlands van de condities voor -gebruik en verspreiding van deze inleiding. Deze vertaling is niet -gecontroleerd door een jurist. Er kunnen derhalve geen rechten aan de -vertaling worden ontleend, en de vertaling wordt gevolgd door het Engelse -origineel.) +(Wat nu volgt is een vertaling naar het Nederlands van de condities +voor gebruik en verspreiding van deze inleiding. Deze vertaling is +niet gecontroleerd door een jurist. Er kunnen derhalve geen rechten +aan de vertaling worden ontleend, en de vertaling wordt gevolgd door +het Engelse origineel.) Deze versie van de inleiding valt onder copyright, net als GNU Emacs. -Je mag deze inleiding verdelen onder bepaalde voorwaarden: +Je mag deze inleiding verspreiden onder bepaalde voorwaarden: -Copyright (c) 1985, 1996, 1997 Free Software Foundation +Copyright (c) 1985, 1996, 1997, 2003, 2004, 2005 Free Software Foundation - Iedereen mag letterlijke kopieën van dit document, zowel ontvangen als - verspreiden, op elk medium, vooropgesteld dat de copyrightvermelding en - de toestemmingsmelding niet veranderd worden en dat de verspreider aan de - ontvanger dezelfde distributierechten verleent als aan hem verleend - worden door deze melding. + Iedereen mag letterlijke kopieën van dit document, zowel ontvangen + als verspreiden, op elk medium, vooropgesteld dat de + copyrightvermelding en de toestemmingsmelding niet veranderd worden + en dat de verspreider aan de ontvanger dezelfde distributierechten + verleent als aan hem verleend worden door deze melding. Toestemming wordt verleend om veranderde versies van dit document, of delen daarvan, te verspreiden, onder bovenstaande voorwaarden, - vooropgesteld dat ze ook duidelijk vermelden wie als - laatste veranderingen aangebracht heeft. + vooropgesteld dat ze ook duidelijk vermelden wie als laatste + veranderingen aangebracht heeft. -De condities voor het kopiëren van Emacs zelf zijn ingewikkelder dan dit, -maar gebaseerd op dezelfde gedachte. Lees het bestand COPYING en geef -vervolgens kopieën van Emacs aan al je vrienden. Help bij het uitroeien -van softwarebeschermingspolitiek ("eigendom") door vrije software -te gebruiken, te schrijven en te delen! +De condities voor het kopiëren van Emacs zelf zijn ingewikkelder dan +dit, maar gebaseerd op dezelfde gedachte. Lees het bestand COPYING en +geef vervolgens kopieën van Emacs aan al je vrienden. Help bij het +uitroeien van softwarebeschermingspolitiek ("eigendom") door vrije +software te gebruiken, te schrijven en te delen! (Engels origineel van de copyrightmelding en condities: This version of the tutorial, like GNU Emacs, is copyrighted, and comes with permission to distribute copies on certain conditions: -Copyright (c) 1985, 1996 Free Software Foundation +Copyright (c) 1985, 1996, 1997, 2003, 2004, 2005 Free Software Foundation - Permission is granted to anyone to make or distribute verbatim copies - of this document as received, in any medium, provided that the - copyright notice and permission notice are preserved, - and that the distributor grants the recipient permission - for further redistribution as permitted by this notice. + Permission is granted to anyone to make or distribute verbatim + copies of this document as received, in any medium, provided that + the copyright notice and permission notice are preserved, and that + the distributor grants the recipient permission for further + redistribution as permitted by this notice. - Permission is granted to distribute modified versions - of this document, or of portions of it, - under the above conditions, provided also that they - carry prominent notices stating who last altered them. + Permission is granted to distribute modified versions of this + document, or of portions of it, under the above conditions, + provided also that they carry prominent notices stating who last + altered them. The conditions for copying Emacs itself are more complex, but in the same spirit. Please read the file COPYING and then do give copies of
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/bar.xbm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,7 @@ +#define noname_width 6 +#define noname_height 48 +static char noname_bits[] = { + 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, + 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, + 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, + 0x0c,0x0c,0x0c};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/bar.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,54 @@ +/* XPM */ +static char * picon-bar_xpm[] = { +"6 48 2 1", +" c white s background", +". c black", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. ", +" .. "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/catchup.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,33 @@ +/* XPM */ +static char * catchup_xpm[] = { +"24 24 6 1", +" c None", +". c #FFFFFFFFFFFF", +"X c #E1E1E0E0E0E0", +"o c #A5A5A5A59595", +"O c #999999999999", +"+ c #000000000000", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" . ", +" . .X ", +" ... .oX . ", +" ..oooX.oXo .X ", +" .oooXXXX..oXXoXX ", +" .oXXXX.XoX.oXooX ", +" X...X.X.XX.XoXX ", +" Xo..X.XXX.XXXX ", +" . Xo.oXX..XXXXXX ", +"OOOOXoXXXXXo.XXXXX++OOOO", +"OOOOOX..X.XXXXXXXX++OOOO", +"OOOOOX..XXXXXXXXX++OOOOO", +"OOOOOOXXXXXXXXX+++OOOOOO", +"OOOOOOOOOXXXX++++OOOOOOO", +"OOOOOOOOO+++++OOOOOOOOOO", +"OOOOOOOOOO+OOOOOOOOOOOOO", +"OOOOOOOOOOOOOOOOOOOOOOOO"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/cu-exit.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,31 @@ +/* XPM */ +static char * cu_exit_xpm[] = { +"24 24 4 1", +" c None", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +" ", +" ", +" ", +" ", +" ", +" ..... ", +" .. .XXX. ", +" ..X..XXXX... ", +" .XXXX.XXXX.X... ", +" ..XXXX.XXX.XXX.. ", +" .XXX.......... ", +" .XXX.XXX.XXX.. ", +" .XX.XXX.XXX. ", +" .XX.XXX.XX.. ", +" ............ ", +" .X.X.X.X.. ", +"ooooooo..........ooooooo", +"ooooooo.X.X.X.X.oooooooo", +"ooooooo.........oooooooo", +"ooooooo..X...X..oooooooo", +"ooooooo...X.X...oooooooo", +"ooooooo........ooooooooo", +"ooooooooo.....oooooooooo", +"oooooooooooooooooooooooo"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/dead.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * dead_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".+++++++++++.", +".++.+.+.+.++.", +".+++.+++.+++.", +".++.+.+.+.++.", +".+++++++++++.", +".+++++++++++.", +".+.+++++++.+.", +".++.......++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/describe-group.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,32 @@ +/* XPM */ +static char * describe_group_xpm[] = { +"24 24 5 1", +". c None", +" c #000000000000", +"o c #FFFFF5F5ACAC", +"+ c #E1E1E0E0E0E0", +"@ c #C7C7C6C6C6C6", +"........................", +"........................", +".................oooo...", +" .. .. .. .. .. oo oo o.", +"..............oooooooooo", +".............ooooooooooo", +" .. .. .. .. oo oo oo oo", +"............oooooooooooo", +"............oooooooooooo", +" .. .. .. .. oo oo oo oo", +"............oooooooooooo", +"............oooooooooooo", +" .. .. .. .. oo oo oo oo", +"............oooooooooooo", +"..... ...oooooooooooo", +" .. ++ .. .o oo oo oo", +"... @@@+ ....ooooooooo", +"... @ ....oooooooo.", +" . . .. .. .. ..", +". ..............", +" ................", +" .. .. .. .. .. ..", +" ..................", +" ...................."};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/exit-gnus.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,33 @@ +/* XPM */ +static char * exit_gnus_xpm[] = { +"24 24 6 1", +" c None", +". c #8686ADAD7D7D", +"X c #919187876969", +"o c #C2C2B9B99C9C", +"O c #A8A8F0F0ECEC", +"+ c #EFEFEFEFEFEF", +" ", +" .... . ", +" .. .. . ", +" ............. ", +" . . . .... ", +" ............. ", +" .............. .. ", +" . . .......... . ", +" .XXXX... .. ", +" o.XXX. . .. ", +" oo.X. .. ... ", +" ooX. . ... ", +" oXo. .. ", +" ooX . . ", +" ooX ", +"OOOOoXXOOOOOOOOOOOOOOOOO", +"OOOoXoXOOOOOOOOOOOOOOOOO", +"OOOooXXOOOO+OOOOOOOOOOOO", +"O+OoooXOO+OOO+OO+OOO+OOO", +"OXXoXoXoXOO++O++OO++OO+O", +"XXXXXXXXXXXX+OOOOOOOOOOO", +"XXXXXXXXXXXXXX+O++OO++OO", +"XXXXXXXXXXXXXXXXOOOOOOOO", +"O++O++++O+OO++OOOO++OOO+"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/exit-summ.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,30 @@ +/* XPM */ +static char * exit_summ_xpm[] = { +"24 24 3 1", +". c None", +" c #000000000000", +"X c #E1E1E0E0E0E0", +" .. .. .. .. .. .. .. ..", +"........................", +"........................", +" .. .. .. ..", +"...... XXXX .....", +"...... XXXXXXX .....", +" .. .. XX XX XX .. ..", +"...... XXXXXXXX .....", +"...... XXXXXXX .....", +" .. .. X XX .. ..", +"...... XXXX .....", +"...... XXXX .....", +" .. .. X XXXXX .. ..", +"...... XXXXXXX .....", +"...... XXXXX XX .....", +" .. .. X XXXXX .. ..", +"...... XXXXX .....", +"...... X .....", +" .. . . .. ..", +"........................", +"........................", +" .. .. .. .. .. .. .. ..", +"........................", +"........................"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/followup.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,31 @@ +/* XPM */ +static char * followup_xpm[] = { +"24 24 4 1", +" c None", +". c #A5A5A5A59595", +"X c #C7C7C6C6C6C6", +"o c #E1E1E0E0E0E0", +" ", +" . ", +" ..X. ", +" ..XXX. ", +" ..XXXXXo. ", +" ...XXXXXXooo. . ", +" .o.XXXXXooooo..X. ", +" .oo.XXXoooo..XXX. ", +" .oo..Xooo..XXXXXo. ", +" .oo.XX...XXXXXXooo. ", +" .o.Xoo.o.XXXXXoooo. ", +" .XXoo.oo.XXXoooooo. ", +" .Xooo.oo..XXooooooo. ", +" .ooo.oo.XXooooooooo. ", +" .ooo.o.XoooooooooooX.", +" .ooo.XXoooooooooooo.", +" .ooo.Xoooooooooooo. ", +" .ooo.ooooooooooo. ", +" .oo..oooooooooo. ", +" .. .ooooooo.. ", +" .oooooo. ", +" .ooo.. ", +" .oo. ", +" .. "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/fuwo.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,31 @@ +/* XPM */ +static char * fuwo_xpm[] = { +"24 24 4 1", +" c None", +". c #A5A5A5A59595", +"X c #C7C7C6C6C6C6", +"o c #E1E1E0E0E0E0", +" ", +" . ", +" .. . ", +" .. . ", +" .. . ", +" ... . . ", +" . . ..X. ", +" . . ..XXX. ", +" . .. ..XXXXXo. ", +" . . ...XXXXXXooo. ", +" . .X .o.XXXXXoooo. ", +" .XX .oo.XXXoooooo. ", +" .X .oo..XXooooooo. ", +" . .oo.XXooooooooo. ", +" . .o.XoooooooooooX.", +" . .XXoooooooooooo.", +" . .Xoooooooooooo. ", +" . .ooooooooooo. ", +" . ..oooooooooo. ", +" .. .ooooooo.. ", +" .oooooo. ", +" .ooo.. ", +" .oo. ", +" .. "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/get-news.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,31 @@ +/* XPM */ +static char * get_news_xpm[] = { +"24 24 4 1", +". c None", +"X c #A5A5A5A59595", +"o c #E1E1E0E0E0E0", +"O c #C7C7C6C6C6C6", +"........................", +"........................", +"........................", +".....XXX................", +"...XXoooXXXXX...........", +"XXXoooooXXoooX.XXX......", +"XoXooXXXooooXXXoooX.....", +"XooXoXoXooXXXoooooX.....", +"XooXXXooXoXoXooooooX....", +"XooXOXooXXXooXooooooX...", +"XoXOOXooXOXooXXooooooX..", +"OXOOOXoXOOXooXoooooooX..", +"OXOooOXOOOXoXOooooooooX.", +".OXooOXOooOXOOooooooooX.", +".OXoooOXooOXOooooooooooX", +"..OXooOXoooOXooooooooooX", +"..OXooOOXooOXooooooooooX", +"...OXooOXoooOXoooooooXXX", +"...OXooXOXooOXooooooXOO.", +"....OXXOOXooXOXoooXXO...", +".....OO..OXXOOXooXOO....", +"..........OO..OXXO......", +"...............OO.......", +"........................"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/gnntg.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,31 @@ +/* XPM */ +static char * gnntg_xpm[] = { +"24 24 4 1", +" c None", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #C7C7C6C6C6C6", +" ", +" ....... ", +" .XXXXX. ", +" .XXXXX. ... ", +" .XXXXX... .ooo. ", +" .XXXXX.... ..ooo.. ", +" .XXXXX..o.. ..ooo.. ", +" .XXXXX...o.. ..o.. ", +" .XXXXX. ..o........ ", +" .XXXXX. ..oooooooo. ", +" ....... .oooooooo.. ", +" .ooooo..o. ", +" .oooo..o. ", +" .oooo..o. ", +" .oooo..o. ", +" .oooo..o. ", +" ......... ", +" ......oo. ", +" .ooooo... ", +" .oo..o... ", +" .oo..o.. ", +" ........ ", +" .... ... ", +" ... ... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/gnus-pointer.xbm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,6 @@ +#define noname_width 18 +#define noname_height 13 +static char noname_bits[] = { + 0x00,0x00,0x00,0xc0,0x0c,0x00,0xe0,0x1f,0x00,0x92,0x39,0x00,0x0e,0x71,0x02, + 0x46,0xe0,0x03,0x20,0xc0,0x01,0x00,0x08,0x00,0x10,0x0d,0x00,0xc4,0x08,0x00, + 0x78,0x08,0x00,0x18,0x89,0x00,0x00,0x08,0x00};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/gnus-pointer.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,22 @@ +/* XPM */ +static char *gnus-pointer[] = { +/* width height num_colors chars_per_pixel */ +" 18 13 2 1", +/* colors */ +". c #0000ff", +"# c None s None", +/* pixels */ +"##################", +"######..##..######", +"#####........#####", +"#.##.##..##...####", +"#...####.###...##.", +"#..###.######.....", +"#####.########...#", +"###########.######", +"####.###.#..######", +"######..###.######", +"###....####.######", +"###..######.######", +"###########.######" +}; \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/gnus.xbm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,622 @@ +#define noname_width 271 +#define noname_height 273 +static char noname_bits[] = { + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x49,0xe0,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x97,0xaa,0x8a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x57,0x2a,0x41,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0x52,0x16,0xfe,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0x49,0x05, + 0xf9,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0x95,0xaa,0x58,0xf4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xa5,0x54,0x26,0xe1,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x54,0x49,0x49,0xe4,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x2a,0xa5, + 0x2a,0xd1,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xaf,0x52,0x95,0x54,0xc4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab, + 0x24,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x57,0x29,0xa9,0x92,0x11,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x57,0xd5,0xfa,0xff,0xff,0xab,0xea,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x4a,0x55,0x2a,0x41,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x25,0x29,0xe5,0xff,0xff,0x95,0xa4,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0xa4, + 0x24,0xa5,0x14,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0xa5,0xd4,0xff, + 0x3f,0x52,0xa9,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x29,0x55,0x55,0x55,0x41,0x7e,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xa9,0x54,0xea,0xff,0xdf,0x2a,0x55,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x4a,0x49,0x12,0x7e,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0x55,0xa5,0x92,0xff,0x23,0xa5,0x4a,0xd6,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5,0xa4,0x94,0xaa,0x42, + 0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0x2a,0xa9,0xff,0xad,0x92,0x24, + 0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a, + 0x95,0x52,0x52,0x29,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x52,0x49,0x55, + 0xfe,0x91,0x54,0x55,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0x49,0x29,0x55,0x25,0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff, + 0x4f,0x95,0xaa,0x92,0x7e,0x55,0x55,0xa9,0x4a,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a,0x50,0x95,0xaa,0x24,0x7e,0xff,0xff, + 0xff,0xff,0xff,0xff,0x57,0x2a,0x95,0x54,0x79,0x95,0x92,0x92,0x94,0xfc,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb9,0x62,0x29,0x49, + 0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x49,0x49,0x95,0xba,0xa4,0x54, + 0xaa,0x52,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf, + 0x1a,0xf8,0xa7,0xaa,0x22,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x52, + 0x2a,0x75,0x55,0xa5,0x24,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xbf,0x5a,0xfd,0x57,0x92,0x94,0x7e,0xff,0xff,0xff,0xff,0xff, + 0xff,0x4a,0x4a,0x55,0x49,0x89,0x92,0x94,0xaa,0x94,0xf4,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xfc,0x2f,0x55,0x05,0x7c,0xff, + 0xff,0xff,0xff,0xff,0xff,0x55,0xa9,0x4a,0x55,0x2a,0x55,0x55,0x55,0x55,0xe5, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x4e,0xfd,0x5f, + 0x29,0xa5,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0xa4,0x54,0x52,0x4a,0x55,0xa9, + 0xa4,0x24,0xa5,0x94,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x2f,0x1d,0xfe,0x3f,0x95,0x04,0x7c,0xff,0xfd,0xff,0xff,0xff,0x3f,0x49,0xa5, + 0x54,0xa9,0xa4,0x92,0x4a,0x49,0x4a,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xaf,0x44,0xfe,0x5f,0xa9,0x52,0x7d,0xff,0xe5,0xff,0xff, + 0xff,0x5f,0x55,0x92,0x2a,0x95,0x52,0x4a,0x52,0xaa,0x52,0x4a,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x16,0xff,0xbf,0x4a,0x05,0x7c, + 0xff,0xd9,0xff,0xff,0xff,0x5f,0x95,0x42,0xa5,0x52,0x95,0xaa,0xaa,0xaa,0x94, + 0x54,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x43,0xfe, + 0xbf,0x54,0x52,0x7d,0x7f,0x25,0xff,0xff,0xff,0xa7,0xa4,0x28,0x92,0x54,0x4a, + 0xa5,0x4a,0x92,0xaa,0x4a,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xab,0x12,0xfe,0x7f,0xa5,0x02,0x7c,0x7f,0x55,0xfd,0xff,0xff,0x95,0x2a, + 0x82,0x54,0xa5,0x54,0x2a,0xa9,0x2a,0xa5,0x52,0xf5,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x27,0x4b,0xff,0xff,0x4a,0x29,0x7d,0xff,0x92,0xfe, + 0xff,0xff,0x55,0x92,0x20,0xa8,0x94,0x2a,0xa5,0x94,0x52,0x29,0xa9,0xf4,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x01,0xff,0x7f,0x52,0x42, + 0x7c,0xff,0x25,0xf9,0xff,0x7f,0xaa,0x02,0x8a,0x40,0x29,0x49,0x09,0x41,0x4a, + 0x55,0x25,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57, + 0xff,0xff,0x95,0x12,0x7d,0xff,0xa9,0xfa,0xff,0x7f,0x25,0xa9,0x20,0x2a,0xa5, + 0xaa,0x42,0x92,0x54,0x92,0x54,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xaf,0x83,0xff,0xff,0xa9,0x42,0x7e,0xff,0xaa,0xf4,0xff,0xaf,0x54, + 0x01,0x82,0x80,0xaa,0x54,0x14,0x08,0xa2,0xaa,0x4a,0xd2,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xef,0xcf,0xd7,0xff,0xff,0x52,0x12,0x7f,0xff,0x4a, + 0xea,0xff,0x57,0x92,0xaa,0x28,0x24,0x29,0x25,0x81,0x82,0x08,0x49,0x52,0x55, + 0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xdf,0xef,0xe7,0xff,0xff,0x2a, + 0x05,0x7e,0xff,0x55,0xd5,0xff,0xa5,0x2a,0x00,0x8e,0x10,0x4a,0x89,0x24,0x28, + 0xa0,0xaa,0x2a,0x49,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xe7,0xff, + 0xef,0xff,0xff,0xa5,0x50,0x7e,0xff,0x25,0xe5,0xff,0x2a,0xa5,0x52,0x7f,0x85, + 0x54,0x35,0x08,0x82,0x0a,0x55,0x95,0xaa,0xfc,0xff,0xff,0xff,0xcf,0xff,0xff, + 0xff,0xff,0xd7,0xff,0xff,0xff,0x7f,0x52,0x85,0x7e,0xff,0xab,0x94,0x1e,0x55, + 0x2a,0xc8,0xff,0x10,0x90,0x92,0xa0,0x08,0x20,0x24,0x52,0x25,0xfd,0xff,0xff, + 0xff,0xef,0xff,0xff,0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0x94,0x10,0x7e,0xff, + 0x93,0xaa,0x6a,0x49,0x49,0xf2,0xff,0x85,0x52,0x09,0x0a,0xa2,0x4a,0x92,0x29, + 0xa9,0xf2,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0x7f, + 0x55,0x25,0x7f,0xff,0x55,0x49,0x49,0x95,0x0a,0xf9,0xff,0x17,0x48,0x26,0x50, + 0x08,0x00,0xa9,0x4a,0x95,0xfa,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xf2, + 0xff,0xff,0xff,0xff,0x92,0x80,0x7e,0xff,0xa7,0x54,0xaa,0xa4,0x52,0xfc,0xff, + 0xaf,0x42,0x89,0xfa,0xbf,0x54,0x20,0xa9,0xa4,0xd4,0xff,0xff,0xff,0xcb,0xff, + 0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,0x54,0x29,0x7f,0xff,0x4b,0xa5,0x92, + 0x2a,0x01,0xff,0xff,0x1f,0xa8,0x22,0xff,0xff,0x01,0xa5,0x2a,0x55,0xa9,0xff, + 0xff,0xff,0xd4,0xff,0xff,0xff,0x7f,0xfa,0xff,0xff,0xff,0x7f,0xa5,0x04,0x7f, + 0xff,0x57,0x2a,0x55,0xa9,0x54,0xfe,0xff,0x3f,0x05,0x89,0xff,0xff,0x5f,0x48, + 0x92,0x2a,0x95,0xff,0xff,0xff,0xea,0xff,0xff,0xff,0xff,0xd2,0xff,0xff,0xff, + 0x7f,0x2a,0x91,0x7f,0xff,0xa9,0x54,0x4a,0x52,0x02,0xff,0xff,0xff,0x50,0xd1, + 0xff,0xff,0x1f,0x81,0xaa,0xa4,0x52,0xfe,0xff,0x3f,0xe9,0xff,0xff,0xff,0x7f, + 0x1d,0xff,0xff,0xff,0xff,0x54,0x41,0x7f,0xff,0x93,0x92,0x52,0x95,0xc8,0xff, + 0xff,0xff,0x8b,0xc4,0xff,0xff,0x7f,0x24,0xa5,0x2a,0x49,0xf9,0xff,0x7f,0xd5, + 0xff,0xff,0xff,0xbf,0x4a,0xff,0xff,0xff,0xff,0x4a,0x14,0x7f,0xff,0x28,0xa5, + 0x94,0x2a,0xa0,0xff,0xff,0x7f,0x22,0xf0,0xff,0xff,0x7f,0x12,0x94,0xa4,0xaa, + 0xea,0xff,0xaf,0xea,0xff,0xff,0xff,0x5f,0x8e,0xff,0xff,0xff,0x7f,0xa9,0x40, + 0x7f,0xff,0x48,0x55,0x55,0x12,0xca,0xff,0xff,0xff,0x0a,0xf5,0xff,0xff,0xff, + 0x80,0x52,0x95,0x54,0xaa,0xfe,0x55,0xc4,0xff,0xff,0xff,0x5f,0xa5,0xff,0xff, + 0xff,0xff,0x94,0x14,0x7f,0xff,0x52,0x2a,0xa9,0x4a,0xe1,0xff,0xff,0xbf,0x24, + 0xf0,0xff,0xff,0xff,0x0b,0x28,0xa9,0x92,0x24,0x55,0x49,0xe5,0xd7,0xff,0xff, + 0xa7,0x8a,0xff,0xff,0xff,0x7f,0xa5,0xc0,0x7f,0xff,0x50,0x49,0x95,0x04,0xf8, + 0xff,0xff,0x5f,0x1f,0xfd,0xff,0xff,0xff,0x47,0x45,0x55,0xaa,0xaa,0x4a,0xaa, + 0xea,0xaf,0xff,0xff,0x2b,0xc3,0xff,0xff,0xff,0x7f,0x55,0x94,0x7f,0x7f,0x4a, + 0x55,0x52,0x51,0xfe,0xff,0xff,0x5f,0x4e,0xf8,0xff,0xff,0xff,0x1f,0x50,0x92, + 0x52,0x49,0xa9,0x92,0xe4,0xd3,0xff,0xff,0x4b,0xd5,0xff,0xff,0xff,0xff,0x94, + 0xc0,0x7f,0x3f,0xa0,0xa4,0xaa,0x04,0xfe,0xff,0xff,0xa7,0x1d,0xfd,0xff,0xff, + 0xff,0x9f,0x84,0xaa,0x4a,0xaa,0x24,0x55,0xf2,0x2b,0xff,0x7f,0xa9,0xc1,0xff, + 0xff,0xff,0x7f,0x4a,0x95,0x7f,0xbf,0x2a,0x95,0x24,0x50,0xff,0xff,0xff,0x97, + 0x5e,0xfe,0xff,0xff,0xff,0x3f,0x92,0x24,0x95,0x92,0xaa,0xa4,0xf2,0xcb,0xff, + 0x5f,0xd5,0xe5,0xff,0xff,0xff,0xff,0x52,0x80,0x7f,0x3f,0xa0,0x52,0x15,0x85, + 0xff,0xff,0xff,0xd7,0x38,0xfe,0xff,0xff,0xff,0xff,0x20,0xaa,0x52,0x55,0x55, + 0x55,0xf9,0x29,0xfd,0xab,0xa4,0xf0,0xff,0xff,0xff,0x7f,0x29,0xa9,0x7f,0xff, + 0x42,0x25,0x49,0xe8,0xff,0xff,0xff,0x69,0x7a,0xff,0xff,0xff,0xff,0xff,0x82, + 0x52,0xaa,0x24,0x89,0x4a,0xf8,0x55,0x2a,0x49,0x95,0xf5,0xff,0xff,0xff,0xbf, + 0x2a,0xc4,0x7f,0x7f,0x90,0x54,0x15,0xe2,0xff,0xff,0xff,0x25,0xbc,0xff,0xff, + 0xff,0xff,0xff,0x29,0x48,0x49,0xaa,0xaa,0xa4,0xfa,0x95,0x92,0x54,0x52,0xf0, + 0xff,0xff,0xff,0xbf,0x4a,0xd1,0x7f,0xff,0x05,0xaa,0x40,0xf8,0xff,0xff,0x7f, + 0xaa,0xfc,0xff,0xff,0xff,0xff,0xff,0x43,0xa9,0xaa,0x4a,0x52,0xa9,0xf8,0xa4, + 0xaa,0x52,0x95,0xfc,0xff,0xff,0xff,0x7f,0x52,0xc0,0x7f,0xff,0xa1,0x00,0x24, + 0xfa,0xff,0xff,0xff,0x0a,0xfe,0xff,0xff,0xff,0xff,0xff,0x17,0x92,0x24,0xa5, + 0x2a,0x55,0xfe,0xaa,0xa4,0x2a,0x29,0xf9,0xff,0xff,0xff,0xbf,0x2a,0xea,0x7f, + 0xff,0x05,0x92,0x90,0xfc,0xff,0xff,0xbf,0xa4,0xff,0xff,0xff,0xff,0xff,0xff, + 0x4f,0xa0,0xaa,0x54,0x49,0x25,0x7c,0x49,0x95,0xa4,0x12,0xfc,0xff,0xff,0xff, + 0x7f,0x8a,0xe0,0x7f,0xff,0xa3,0x04,0x05,0xfe,0xff,0xff,0xbf,0x06,0xff,0xff, + 0xff,0xff,0xff,0xff,0x1f,0x49,0x95,0x52,0xaa,0x12,0x7f,0x55,0x52,0x55,0x0a, + 0xfd,0xff,0xff,0xff,0x3f,0x29,0xe8,0x7f,0xff,0x0f,0x50,0x50,0xff,0xff,0xff, + 0x5f,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x04,0xa9,0x4a,0x25,0x45,0x3e, + 0xa9,0x2a,0xa9,0xa2,0xfc,0xff,0xff,0xff,0x7f,0x55,0xe1,0x7f,0xff,0x27,0x05, + 0xc4,0xff,0xff,0xff,0x9f,0x91,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x41,0x4a, + 0x29,0xa9,0x12,0x5e,0x95,0x94,0x4a,0x0a,0xfe,0xff,0xff,0xff,0xbf,0x12,0xf4, + 0x7f,0xff,0x8f,0x50,0xf1,0xff,0xff,0xff,0xa7,0xc2,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x14,0x92,0xaa,0x4a,0xa2,0xbf,0xa4,0x52,0x95,0x22,0xff,0xff,0xff, + 0xff,0x3f,0x45,0xf2,0x7f,0xff,0x3f,0x04,0xf4,0xff,0xff,0xff,0xd7,0xe8,0xff, + 0xff,0xff,0xff,0x5f,0xff,0xff,0x83,0xa8,0x94,0x54,0x09,0x2f,0x55,0x4a,0x52, + 0x49,0xff,0xff,0xff,0xff,0x5f,0x99,0xf0,0x7f,0xff,0x7f,0x51,0xfc,0xff,0xff, + 0xff,0x6b,0xf1,0xff,0xff,0xff,0xff,0x5f,0xfd,0xff,0x2b,0x2a,0xa9,0x12,0x20, + 0x5f,0xa9,0xaa,0x54,0x00,0xff,0xff,0xff,0xff,0x5f,0x15,0xf2,0x7f,0xff,0xff, + 0x8f,0xff,0xff,0xff,0xff,0x2b,0xfc,0xff,0xff,0xff,0xff,0x2f,0xfd,0xff,0x87, + 0xa0,0x4a,0xaa,0x8a,0x9f,0x4a,0x52,0x15,0xa9,0xff,0xff,0xff,0xff,0x5f,0x8a, + 0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xf8,0xff,0xff,0xff,0xff, + 0x57,0xf2,0xff,0x2f,0x82,0x52,0x05,0xd0,0x2f,0x95,0x4a,0x49,0x84,0xff,0xff, + 0xff,0xff,0xbf,0x24,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x12,0xfd, + 0xff,0xff,0xff,0xff,0x4b,0xd5,0xff,0x9f,0x28,0x54,0x48,0xc5,0xbf,0x52,0x55, + 0x0a,0xe1,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfa,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x1a,0xfe,0xff,0xff,0xff,0xff,0x57,0xa9,0xff,0x3f,0x82,0x00,0x21, + 0xf0,0x5f,0x2a,0x49,0x21,0xc4,0xff,0xff,0xff,0xff,0xaf,0x1a,0xfd,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0x3f,0x85,0xff,0xff,0xff,0xff,0xff,0x29,0xa5,0xff, + 0xff,0x24,0x52,0x88,0xfc,0xbf,0x92,0x2a,0x09,0xf1,0xff,0xff,0xff,0xff,0x9f, + 0x4c,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x15,0xff,0xff,0xff,0x7f, + 0xff,0xa5,0x4a,0xff,0xff,0x90,0x08,0x01,0xfe,0x3f,0x55,0x52,0x24,0xf4,0xff, + 0xff,0xff,0xff,0xaf,0x02,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xc6, + 0xff,0xff,0xff,0xbf,0xfe,0x95,0x54,0xff,0xff,0x05,0x42,0xa8,0xfe,0xbf,0xa4, + 0x2a,0x41,0xf9,0xff,0xff,0xff,0xff,0x5f,0x55,0xfc,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0x4f,0xd0,0xff,0xff,0xff,0xbf,0x7c,0xaa,0x92,0xfc,0xff,0x53,0x08, + 0x01,0xff,0x1f,0x4a,0x01,0x04,0xfc,0xff,0xff,0xff,0xff,0x27,0x05,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xc5,0xff,0xff,0xff,0x4f,0xbf,0x52,0xaa, + 0xfe,0xff,0x07,0x42,0xea,0xff,0xbf,0x50,0x54,0x51,0xff,0xff,0xff,0xff,0xff, + 0x97,0x56,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xf0,0xff,0xff,0xff, + 0x2f,0x7f,0xa5,0x54,0xfd,0xff,0x3f,0x09,0xe0,0xff,0x1f,0x02,0x01,0x04,0xff, + 0xff,0xff,0xff,0xff,0xaf,0x02,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x4b, + 0xf5,0xff,0xff,0xff,0xab,0x9f,0x94,0x92,0xfc,0xff,0xff,0x40,0xfd,0xff,0x9f, + 0x48,0x48,0xa1,0xff,0xff,0xff,0xff,0xff,0xa7,0x56,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0x6b,0xf8,0xff,0xff,0xff,0xa4,0x5f,0xa9,0x2a,0xfd,0xff,0xff, + 0xff,0xff,0xff,0x3f,0x22,0x21,0xc4,0xff,0xff,0xff,0xff,0xff,0x2f,0x03,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0xfa,0xff,0xff,0x7f,0xd5,0x2f,0xa5, + 0xa4,0xfa,0xff,0xff,0xff,0xff,0xff,0xbf,0x08,0x08,0xf9,0xff,0xff,0xff,0xff, + 0xff,0x97,0x4a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xfc,0xff,0xff, + 0x7f,0x69,0xac,0x2a,0x55,0xf9,0xff,0xff,0xff,0xff,0xff,0x7f,0xa2,0x22,0xf8, + 0xff,0xff,0xff,0xff,0xff,0x53,0x21,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0x15,0xfe,0xff,0xff,0x9f,0x2a,0x95,0x94,0x92,0xf4,0xff,0xff,0xff,0xff,0xff, + 0xff,0x08,0x88,0xfe,0xff,0xff,0xff,0xff,0xff,0x57,0x8b,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xa9,0xfe,0xff,0xff,0x5f,0x52,0xbc,0x52,0x55,0xf5,0xff, + 0xff,0xff,0xff,0xff,0xff,0x21,0x21,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xa1, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x7f,0x0d,0xff,0xff,0xff,0x57,0x15,0x3f, + 0x55,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xc8,0xff,0xff,0xff,0xff, + 0xff,0xff,0xd7,0x89,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xbf,0xd6,0xff,0xff, + 0xff,0x4b,0x45,0x3f,0x49,0xaa,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf9, + 0xff,0xff,0xff,0xff,0xff,0xff,0xc9,0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0x3f,0x81,0xff,0xff,0xff,0x29,0x11,0x5f,0x28,0x55,0xf5,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xc8,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0x5f,0xd6,0xff,0xff,0x7f,0xaa,0xc2,0x0f,0x55,0x49,0xea, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5, + 0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x9f,0xe1,0xff,0xff,0xbf,0x4a,0xd1, + 0x5f,0x48,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xe9,0xe0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x27,0xf4,0xff, + 0xff,0xbf,0x94,0xc4,0x07,0x91,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xea,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xaf,0xf1,0xff,0xff,0x9f,0x52,0xe0,0x4b,0x44,0x52,0xe9,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6a,0xe0,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xab,0x2a,0xf5,0x0f,0x51,0xa5, + 0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0x69,0xe5,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x55,0xf8,0xff,0xff,0x95,0x14, + 0xf0,0x5f,0x84,0x54,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0x75,0xf0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x13,0xfd, + 0xff,0xff,0xa5,0x42,0xf9,0x7f,0x91,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb2,0xfa,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0x54,0xfe,0xff,0x7f,0x52,0x12,0xfa,0xff,0x20,0xa5,0xe4,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x34,0xf8,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0x25,0xff,0xff,0xaf,0xaa,0x48,0xfc,0xff,0x0b, + 0x29,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xb5,0xf8,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x52,0xff,0xff,0x2f,0x49, + 0x02,0xfe,0xff,0x43,0xaa,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x3f,0x3a,0xfa,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x4a, + 0xff,0xff,0xa5,0x2a,0xa9,0xff,0xff,0x17,0x25,0xe9,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x9a,0xfc,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0x2a,0xff,0x7f,0x95,0x54,0x80,0xff,0xff,0x07,0xa9,0xea,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1d,0xfc, + 0xff,0x7f,0xff,0xff,0xff,0xff,0x3f,0xa9,0xfe,0x7f,0xa9,0x12,0xe5,0xff,0xff, + 0x5f,0x4a,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x5f,0xad,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x95,0xea,0x97,0x54, + 0x4a,0xf0,0xff,0xff,0x1f,0xa8,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x5f,0x0e,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f, + 0x52,0x55,0xa9,0x92,0x02,0xfd,0xff,0xff,0x5f,0x53,0xf5,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x5e,0xfe,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xbf,0x2a,0x49,0x4a,0x55,0x49,0xfc,0xff,0xff,0x3f,0x94,0xf8, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x0f, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f,0xa5,0xaa,0x92,0xa4,0x20,0xff,0xff, + 0xff,0xbf,0xa4,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x5f,0x57,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x52,0x52,0xaa, + 0x2a,0x0a,0xff,0xff,0xff,0x7f,0x54,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x07,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xa7,0x94,0x4a,0x55,0x4a,0xa0,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0x2f,0x55,0xa9,0x92,0x12,0xe9,0xff,0xff,0xff,0x7f,0x24, + 0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf, + 0x87,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0xa5,0x4a,0xaa,0x44,0xf4,0xff, + 0xff,0xff,0xff,0x55,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xa7,0xab,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xab,0x94,0xa4, + 0x92,0x12,0xf9,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xab,0x83,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0x47,0xa9,0x2a,0x55,0x40,0xfc,0xff,0xff,0xff,0xff,0x25,0xf5,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xd7,0x97,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0x33,0x55,0xa9,0x24,0x15,0xfe,0xff,0xff,0xff,0xff, + 0x95,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff, + 0x93,0xc3,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x25,0xa5,0x2a,0x40,0xff, + 0xff,0xff,0xff,0xff,0xa9,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff, + 0xff,0xff,0xff,0xff,0xe7,0xd5,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4b,0x92, + 0x54,0x92,0xd4,0xff,0xff,0xff,0xff,0xff,0x55,0xf5,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0xff,0xd5,0xc1,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0x97,0xaa,0x4a,0x05,0xe2,0xff,0xff,0xff,0xff,0xff,0x25,0xf1,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xfd,0xff,0xff,0xff,0xff,0xd5,0xea,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x55,0x25,0xa1,0xf0,0xff,0xff,0xff,0xff, + 0xff,0x95,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe8,0xfa,0xff,0xff,0xff, + 0xff,0xea,0xe0,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xa7,0x24,0x59,0x04,0xfa, + 0xff,0xff,0xff,0xff,0xff,0xa9,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe2, + 0xfd,0xff,0xff,0xff,0xff,0xc9,0xe9,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f, + 0x52,0x05,0xa1,0xfc,0xff,0xff,0xff,0xff,0xff,0xa5,0xfa,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x70,0xf9,0xff,0xff,0xff,0xff,0x74,0xe2,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0x47,0x95,0x92,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0xf8, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xe2,0xfa,0xff,0xff,0xff,0xff,0x72,0xe8, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x97,0xaa,0x20,0xd0,0xff,0xff,0xff,0xff, + 0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb8,0xfc,0xff,0xff, + 0xff,0xff,0xea,0xe2,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x07,0x04,0x82,0xc2, + 0xff,0xff,0xff,0xff,0xff,0xff,0x29,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0x71,0xfd,0xff,0xff,0xff,0x7f,0x2a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0x4f,0x91,0x28,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xff, + 0xff,0xff,0xff,0x1f,0x54,0xfe,0xff,0xff,0xff,0x7f,0x75,0xf2,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0x27,0x44,0x82,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x29, + 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xb8,0xfc,0xff,0xff,0xff,0xbf,0x14, + 0xf1,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x0f,0x11,0x20,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x9a,0xfe,0xff, + 0xff,0xff,0x7f,0x5a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x40,0x85, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x4f,0x2d,0xfd,0xff,0xff,0xff,0x9f,0x12,0xf9,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0x3f,0x14,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfe,0xff,0xff, + 0xff,0xff,0xff,0xff,0x07,0xa6,0xfe,0xff,0xff,0xff,0x5f,0x4d,0xfa,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0x40,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x4b,0xfe,0xff,0xff,0xff,0xbf, + 0x2c,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x43,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x57,0xff, + 0xff,0xff,0xff,0x5f,0x0a,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xd5,0xa9,0xff,0xff,0xff,0xff,0xaf,0x5a,0xfc,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa3,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x81,0x95,0xff,0xff,0xff,0xff,0x9f,0x06,0xfd,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xa5,0xff,0xff,0xff,0xff, + 0x2f,0x95,0xfc,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0xea, + 0xff,0xff,0xff,0xff,0xaf,0x26,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xf5,0xf4,0xff,0xff,0xff,0xff,0xaf,0x86,0xfe,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0x70,0xe5,0xff,0xff,0xff,0xff,0x4f,0x2e,0xfe, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xb2,0xfa,0xff,0xff,0xff, + 0xff,0x57,0x83,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x78, + 0xf2,0xff,0xff,0xff,0xff,0xa7,0x22,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x5f,0x5d,0xfd,0xff,0xff,0xff,0xff,0x97,0x87,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x3c,0xfd,0xff,0xff,0xff,0xff,0x53,0xa3, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xac,0xfe,0xff,0xff, + 0xff,0xff,0x57,0x95,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, + 0x9e,0xfe,0xff,0xff,0xff,0xff,0x97,0x81,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xa7,0x57,0xfe,0xff,0xff,0xff,0xff,0xa9,0xa5,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xaf,0xff,0xff,0xff,0xff,0xff,0x4b, + 0x89,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0x93,0xff,0xff, + 0xff,0xff,0xff,0x95,0xa2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x83,0xab,0xff,0xff,0xff,0xff,0xff,0xd3,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff, + 0xff,0xff,0xff,0xff,0xe9,0xa5,0xff,0xff,0xff,0xff,0xff,0xa5,0xe1,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xd5,0xff,0xff,0xff,0xff,0xff, + 0xd5,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xea,0xea,0xff, + 0xff,0xff,0xff,0xff,0x14,0xc1,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff, + 0xff,0xe0,0xe4,0xff,0xff,0xff,0xff,0xff,0x65,0xe8,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf, + 0xff,0xff,0xff,0xff,0x3f,0x72,0xe9,0xff,0xff,0xff,0xff,0xff,0x6a,0xe1,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xbf,0xb8,0xfa,0xff,0xff,0xff,0xff, + 0xff,0x52,0xea,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0x1f,0x7a,0xf5, + 0xff,0xff,0xff,0xff,0x7f,0x2a,0xe0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff, + 0xff,0x8f,0x58,0xfa,0xff,0xff,0xff,0xff,0x7f,0x25,0xf5,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xb5,0xff,0xff,0xdf,0xff,0x57,0x5e,0xfd,0xff,0xff,0xff,0xff,0xff,0x34,0xe0, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xca,0xff,0xff,0x8f,0xff,0x07,0xac,0xfc,0xff,0xff,0xff, + 0xff,0x7f,0x2a,0xf5,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd4,0xff,0xff,0x57,0xff,0x2b,0x2d, + 0xfd,0xff,0xff,0xff,0xff,0xff,0xb2,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd2,0xff,0xff, + 0x07,0xff,0x43,0x4a,0xff,0xff,0xff,0xff,0xff,0xbf,0x2a,0xf8,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x3f,0xc5,0xff,0xff,0x2b,0xfe,0x08,0xab,0xfe,0xff,0xff,0xff,0xff,0x7f,0xaa, + 0xf2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xbf,0xea,0xff,0xff,0x83,0x36,0x20,0x55,0xff,0xff,0xff, + 0xff,0xff,0x3f,0x15,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xc2,0xff,0xff,0x48,0x4a,0x85, + 0x49,0xff,0xff,0xff,0xff,0xff,0x7f,0x59,0xfa,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xf5,0xff, + 0x7f,0x10,0x29,0x50,0xa5,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xf9,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x97,0xe4,0xff,0x7f,0x05,0x95,0x42,0xd5,0xff,0xff,0xff,0xff,0xff,0x7f, + 0x35,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xab,0xea,0xff,0xbf,0xa0,0x24,0xa8,0xd4,0xff,0xff, + 0xff,0xff,0xff,0x7f,0x19,0xf9,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x27,0xe5,0xff,0x3f,0x92,0xaa, + 0x50,0xe9,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0xe2, + 0xff,0x9f,0xa0,0xaa,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xf9,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x95,0xf8,0xff,0x5f,0x4a,0x92,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff, + 0xbf,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xf2,0xff,0x1f,0x20,0x49,0xa5,0xfa,0xff, + 0xff,0xff,0xff,0xff,0x5f,0x1a,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaa,0xf8,0xff,0x47,0xa9, + 0x2a,0x29,0xf9,0xff,0xff,0xff,0xff,0xff,0xbf,0x0a,0xfc,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49, + 0xf2,0xff,0x17,0x92,0xaa,0xaa,0xfe,0xff,0xff,0xff,0xff,0xff,0x9f,0xac,0xfe, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x9f,0x2a,0xf8,0xff,0x43,0xa8,0x24,0x25,0xff,0xff,0xff,0xff,0xff, + 0xff,0xaf,0x0a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xfa,0xff,0x91,0x54,0xaa,0x52,0xff, + 0xff,0xff,0xff,0xff,0xff,0x2f,0x4d,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x45,0xfc,0xff,0x03, + 0x92,0x52,0xaa,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x06,0xfc,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf, + 0x12,0xfe,0xff,0x50,0xaa,0x2a,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xa5, + 0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xa7,0x44,0xff,0xff,0x0a,0x25,0xa5,0xa4,0xff,0xff,0xff,0xff, + 0xff,0xff,0x97,0x06,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x15,0xff,0xff,0x40,0xa9,0x92,0xea, + 0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x55,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xa1,0xff,0x7f, + 0x92,0x4a,0xaa,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x06,0xfc,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x95,0x8a,0xff,0x3f,0x84,0x54,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0x2f, + 0x25,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x52,0xe0,0xff,0xbf,0x50,0xa9,0x4a,0xf2,0xff,0xff,0xff, + 0xff,0xff,0xff,0xa7,0x8e,0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa9,0xea,0xff,0x3f,0x24,0x95,0x54, + 0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x23,0xfe,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x4a,0xf0,0xff, + 0x9f,0x50,0x69,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x8b,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xa5,0xf4,0xff,0x0f,0x2d,0x75,0xaa,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, + 0xaf,0x03,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x9f,0x14,0xfa,0xff,0x2f,0xa8,0xfa,0x25,0xfd,0xff,0xff, + 0xff,0xff,0xff,0xff,0x97,0xd7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xaa,0xfc,0xff,0x0f,0x4d,0xfd, + 0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0x83,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x12,0xfc, + 0xff,0x27,0x92,0xfe,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xd7,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x97,0x0a,0xff,0xff,0x83,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xef,0xc7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xab,0x24,0xff,0xff,0x2b,0xaa,0xfe,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xe7,0xef,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0x05,0x95, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x82, + 0xff,0xff,0x51,0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xa9,0xe8,0xff,0xff,0x85,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xc1,0xff,0xff,0x90,0xd5,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x4d,0xe8,0xff,0xff,0xa5, + 0xe4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x51, + 0xf2,0xff,0x7f,0x40,0xd5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x3f,0x95,0xf8,0xff,0x7f,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x15,0xfa,0xff,0x3f,0xa4,0xf4,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xa4,0xfc,0xff,0x7f, + 0x71,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f, + 0x15,0xfe,0xff,0x3f,0x94,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xa7,0x0a,0xff,0xff,0x1f,0x79,0xf2,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xa4,0xff,0xff,0x5f,0x8c,0xfa,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x82,0xff,0xff, + 0x1f,0x5c,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xa4,0x92,0xff,0xff,0xbf,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x9a,0xc4,0xff,0xff,0x0f,0x2e,0xfd,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa2,0xf0,0xff,0xff,0xaf,0xa7,0xfe, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x55,0xe4,0xff, + 0xff,0x0f,0x57,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xbf,0x54,0xf2,0xff,0xff,0x9f,0x4b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x9f,0x92,0xf8,0xff,0xff,0xc7,0xab,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x15,0xfe,0xff,0xff,0x97,0xd7, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0x94,0xfc, + 0xff,0xff,0xc7,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x2f,0x05,0xfe,0xff,0xff,0xcf,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x53,0xa9,0xff,0xff,0xff,0xd3,0xeb,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x05,0xff,0xff,0xff,0xe3, + 0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0xc2, + 0xff,0xff,0xff,0xeb,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x95,0xc8,0xff,0xff,0xff,0xf3,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xd2,0xff,0xff,0xff,0xff,0xf5,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xaa,0xe0,0xff,0xff,0xff, + 0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49, + 0xf8,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x9f,0x2a,0xf5,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x4a,0xf8,0xff,0xff,0xff,0xff,0xfc,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x14,0xfd,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97, + 0x4a,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xab,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x52,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x85,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x54,0xa2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x4a,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xe0,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xe4,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x5f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xbf,0x12,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x54,0xfa,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x0a,0xfc, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x53,0x45,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x97,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0x82, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x4a,0xe9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x52,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x55,0xe8,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24, + 0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24,0xf9,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xfe,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f, + 0x49,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x2f,0x95,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x01,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x57,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x97,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xe0,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x93,0xf4,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x57,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x2b,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xfc,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfc, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x05,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x49,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x22,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x89, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xe9,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, + 0xff,0xff,0xff,0x9f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf9,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, + 0x6f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, + 0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, + 0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, + 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/gnus.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,284 @@ +/* XPM */ +static char *gnus[] = { +/* width height num_colors chars_per_pixel */ +" 271 273 3 1", +/* colors */ +". s thing c #bf9900", +"# s shadow c #ffcc00", +"a s None c None", +/* pixels */ +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........######aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............#######aaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................######aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................######aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................#######aaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................#######aaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................#######aaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........................######aaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........................######aaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................#######aaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............................#######aaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................aaaaaaaaaaaaaaaaaaaaaa...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............................#######aaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaaaaaaaaaaaaaaaaa...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............................#######aaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................aaaaaaaaaaaaaaaa....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................########aaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................aaaaaaaaaaaaaa........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................................#######aaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........................aaaaaaaaaaa............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................................########aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........................aaaaaaaaa..............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................aaaaaaa................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............................aaaaa..................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......######.......................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................aaaa...................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#######aa....................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................................aa.....................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaa.................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................a......................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaa................#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaa...............#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaa...............#######aaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaa..............#######aaaaa", +"aaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaa..............#######aaaaa", +"aaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaa.............#######aaaaa", +"aaaaaaaa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............####....................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaa............########aaaaa", +"aaaaaaa.........aaaaaaaaaaaaaaaaaaaaaaaaaaa.............########...................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaa...........########aaaaa", +"aaaaaaa...........aaaaaaaaaaaaaaaaaaaaaaa.............############..................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaa...........########aaaaa", +"aaaaaaaa..........aaaaaaaaaaaaaaaaaaaaaa.............##############..................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaa...........########aaaaa", +"aaaaaaaa...........aaaaaaaaaaaaaaaaaaaa............##################.......................##########................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaa..........########aaaaa", +"aaaaaaaa............aaaaaaaaaaaaaaaaaa............####################....................###############..............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaa..........#######aaaaaa", +"aaaaaaaa............aaaaaaaaaaaaaaaa..............#####################.................#####################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaa..aaaaa###aaaaaaaaaaaaaaaaaa..........#######aaaaaa", +"aaaaaaaa.............aaaaaaaaaaaaaa..............#######################...............#######################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaa..aaaaa##aaaaaaaaaaaaaaaaaaa..........#######aaaaaa", +"aaaaaaaaa.............aaaaaaaaaaa...............##########aa#############.............#########################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaa..........#######aaaaaa", +"aaaaaaaaa.............aaaaaaaaa................#########aaaaaaa###########............##########################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", +"aaaaaaaaa................aaaa..................#######aaaaaaaaaa###########..........############################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", +"aaaaaaaaa.....................................######aaaaaaaaaaaaa###########.........#############################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", +"aaaaaaaaa....................................######aaaaaaaaaaaaaaaa#########........###############################.........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", +"aaaaaaaaaa.................................#######aaaaaaaaaaaaaaaaaa#########.......#######aaaaaaaaaaa##############..........................aaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", +"aaaaaaaaaa................................#######aaaaaaaaaaaaaaaaaaaa########......#####aaaaaaaaaaaaaaaaa############..........................aaaaaaaaaaaaaaaaaaaaaaaaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", +"aaaaaaaaaa...............................########aaaaaaaaaaaaaaaaaaaaa########....#####aaaaaaaaaaaaaaaaaaaaa##########..........................aaaaaaaaaaaaaaaaaaaaaaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", +"aaaaaaaaa#..............................########aaaaaaaaaaaaaaaaaaaaaaaa#.####...#####aaaaaaaaaaaaaaaaaaaaaaa##########...........................aaaaaaaaaaaaaaaaaaaa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", +"aaaaaaaaa#.............................########aaaaaaaaaaaaaaaaaaaaaaaaa...###..######aaaaaaaaaaaaaaaaaaaaaaaa##########...........................aaaaaaaaaaaaaaaaaaa......a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........########aaaaaaa", +"aaaaaaaa###...........................#########aaaaaaaaaaaaaaaaaaaaaaaa....##########aaaaaaaaaaaaaaaaaaaaaaaaaa##########............................aaaaaaaaaaaaaaa........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........########aaaaaaa", +"aaaaaaaa###..........................#########aaaaaaaaaaaaaaaaaaaaaaaaa....#########aaaaaaaaaaaaaaaaaaaaaaaaaaaa##########...............................aaaaaaaa...........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........########aaaaaaa", +"aaaaaaaa###.........................#########aaaaaaaaaaaaaaaaaaaaaaaaa....a#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaa##########................................................##aaaaaa...aaaaaaaaaaaaaaaaaaaaa......a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", +"aaaaaaa####........................#########aaaaaaaaaaaaaaaaaaaaaaaaa....aaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...............................................##aaaaaa....aaaaaaaaaaaaaaaaaaa.......a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", +"aaaaaaa####.......................########aaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########..............................................##aaaaa.....aaaaaaaaaaaaaaaaaa.......a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", +"aaaaaa######....................#########aaaaaaaaaaaaaaaaaaaaaaaaaa.....a#aaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########............................................##aaaaaa......aaaaaaaaaaaaaaa.........a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", +"aaaaaa######...................#########aaaaaaaaaaaaaaaaaaaaaaaaaa......##aaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...........................................##aaaaa.......aaaaaaaaaaaaa..........aa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", +"aaaaaa#######.................#########aaaaaaaaaaaaaaaaaaaaaaaaaaa.....a###aaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.........................................###aaaaa.........aaaaaaa..............a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........########aaaaaaaa", +"aaaaaaa#######...............#########aaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########........................................##aaaaa...............................a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaaa", +"aaaaaaa########............##########aaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.......................................##aaaaa...............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaaa", +"aaaaaaaa##########.......###########aaaaaaaaaaaaaaaaaaaaaaaaaaa......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.....................................###aaaaa..............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaaa", +"aaaaaaaaa##########################aaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########....................................##aaaaa...............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........########aaaaaaaaa", +"aaaaaaaaa#########################aaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########..................................###aaaaa..............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaa", +"aaaaaaaaaa#######################aaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...............................####aaaaa..............................######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaa", +"aaaaaaaaaaa#####################aaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.............................#####aaaaa.............................#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaa", +"aaaaaaaaaaa###################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...........................######aaaa..............................######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......########aaaaaaaaaa", +"aaaaaaaaaaaa#################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.........................######aaaaa.............................#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaaa", +"aaaaaaaaaaaaa###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaa#########.......................#######aaaa.............................#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaaa", +"aaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aaaaaaaaaaaaaaaa#########....................#########aaaa............................########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaaaaaaaaaaaaa#########..................#########aaaaa..........................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........aaaaaaaaaaaaaaa###########.............###########aaaaa.........................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............aaaaaaaaaaaaaaa##############....###############aaaaaaa.......................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............aaaaaaaaaaaaaaa##############################aaaaaaaaa.....................############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............aaaaaaaaaaaaaaa############################aaaaaaaaaaa...................############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaa................aaaaaaaaaaaaaaaa##########################aaaaaaaaaaaa#................#############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaa.................aaaaaaaaaaaaaaaa########################aaaaaaaaaaaaa##..............#############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaa...................aaaaaaaaaaaaaaaa######################aaaaaaaaaaaaa#####.........###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaa....................aaaaaaaaaaaaaaaaa###################aaaaaaaaaaaaaaa########..##################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaa....................aaaaaaaaaaaaaaaaaaa################aaaaaaaaaaaaaaaa###########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaa......................aaaaaaaaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaa##########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaa.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaaa.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa........a###a.........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaaaaa........a####a.........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaa........a#####aaa.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaa#.....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaa##....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaa..........######aaaaa#####..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaa...........#####aaaaa#######..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaaaa...........#####aaaaaa#######..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaaaa...........######aaaaa#########.................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaaa...........######aaaaa###########................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaa............#######aaaaaaa##########...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......####aaaaaaaaaaaaaaaaaaaaaa............#######aaaaaaaaa#########...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaa............#######aaaaaaaaaaaa########..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......###aaaaaaaaaaaaaaaaaaaaa............#########aaaaaaaaaaaaa#######..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......###aaaaaaaaaaaaaaaaaaa.............#########aaaaaaaaaaaaaaa#######.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaaaaaa.............#########aaaaaaaaaaaaaaaaa######.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaaaa..............#########aaaaaaaaaaaaaaaaaaa#####.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaa...............#########aaaaaaaaaaaaaaaaaaaa#####.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........aaaaaaaaaaaaa...............#########aaaaaaaaaaaaaaaaaaaaaa#####............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............aaaaa..................########aaaaaaaaaaaaaaaaaaaaaaaaa####............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................................########aaaaaaaaaaaaaaaaaaaaaaaaaa####...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....................................########aaaaaaaaaaaaaaaaaaaaaaaaaaaa###...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa####aaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaa####..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa####aaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa####aaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#...................############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##................#############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.......##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###............##############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#......###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####.........###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#......###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######..###################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######a.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#....####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######a......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#...####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##..####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#aaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaa#######aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#aaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaa#######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#aaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaa########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#aaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaa########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#aaaaaaaaaaaaaaaaaaaa#######aaaaaaa#########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......##aaaaaaaaaaaaaaaaaaa########a..aa##########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........##aaaaaaaaaaaaaaaaaa#########....##########a........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaaaaa#########......#########........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#aaaaaaaaaaaaaaaaaa#########......########a........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........##aaaaaaaaaaaaaaaaa#########.......#######.........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........##aaaaaaaaaaaaaaaaa########.........#####.........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........###aaaaaaaaaaaaaaaa########........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........###aaaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........###aaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........####aaaaaaaaaaaaaaa#########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaa#########......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaa#########......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa#########......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa#######........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaa#######.........a..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa#######a........aaa............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaa#######........aaaaa..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaa#######a.......aaaaaaa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaa######a........aaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaa#######........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaa#######.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaa#######a......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaa#######.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaa#######.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaa#####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaa####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaa#####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaa####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaa####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaa###aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaa####aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaa####aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaa###aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaa###aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaa####aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaa###aaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaa###aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +}; +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/important.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,32 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"24 24 2 1", +"! c red", +"w c Gray75", +/* pixels */ +"wwwwwwwwwwwwwwwwwwwwwwww", +"wwwwwwwwwwwwwwwwwwwwwwww", +"wwwwwwwww!!!wwwwwwwwwwww", +"wwwwwwwww!!!wwwwwwwwwwww", +"wwwwwwww!!!!!wwwwwwwwwww", +"wwwwwwww!!!!!wwwwwwwwwww", +"wwwwwww!!!!!!!wwwwwwwwww", +"wwwwwww!!!!!!!wwwwwwwwww", +"wwwwwww!!!!!!!wwwwwwwwww", +"wwwwwww!!!!!!!wwwwwwwwww", +"wwwwwww!!!!!!!wwwwwwwwww", +"wwwwwww!!!!!!!wwwwwwwwww", +"wwwwwww!!!!!!!wwwwwwwwww", +"wwwwwwww!!!!!wwwwwwwwwww", +"wwwwwwww!!!!!wwwwwwwwwww", +"wwwwwwww!!!!!wwwwwwwwwww", +"wwwwwwwww!!!wwwwwwwwwwww", +"wwwwwwwwwwwwwwwwwwwwwwww", +"wwwwwwwww!!!wwwwwwwwwwww", +"wwwwwwww!!!!!wwwwwwwwwww", +"wwwwwwww!!!!!wwwwwwwwwww", +"wwwwwwwww!!!wwwwwwwwwwww", +"wwwwwwwwwwwwwwwwwwwwwwww", +"wwwwwwwwwwwwwwwwwwwwwwww" +};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/kill-group.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,30 @@ +/* XPM */ +static char * kill_group_xpm[] = { +"24 24 3 1", +". c None", +"o c #000000000000", +"+ c #9A9A6C6C4E4E", +"o..o..o..o..o..o..o..o..", +"........................", +"........................", +"o..o..o..o..o..o..o..o..", +"........................", +"........................", +"o..o..o..o..++.o..o..o..", +".......++..++++.........", +"........++.+++..........", +"o..o..o.+++++..o..o..o..", +".........+++............", +".........++++...........", +"o..o..o.++++++.o..o..o..", +"........++.++++.........", +".......++...++++........", +"o..o...+.o...++o..o..o..", +"........................", +"........................", +"o..o..o..o..o..o..o..o..", +"........................", +"........................", +"o..o..o..o..o..o..o..o..", +"........................", +"........................"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/mail-reply.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,32 @@ +/* XPM */ +static char * mail_reply_xpm[] = { +"24 24 5 1", +" c None", +". c #000000000000", +"X c #E1E1E0E0E0E0", +"O c #FFFFFFFFFFFF", +"o c #C7C7C6C6C6C6", +" .. ", +" .X. ", +" ..XX. ", +" ......XoXX.. ", +" ...OOO.XooXXX. ", +" ..OOOO.XooXXX. ", +" ...OOOOO.XooXXX... ", +" ..OOOOOO.XXooXX.OO.. ", +" ...OOOO.oooXXX...... ", +" .O...O.oXooXXX...OO. ", +" .OOO...oXoXX...OOOO. ", +" .OOOOO...X...OOOOOO. ", +" .OOOOO.O...OO.OOOOO. ", +" .OOO..OOOOOOOO..OOO. ", +" .OO.OOOOOOOOOOOO.OO. ", +" .O.OOOOOOOOOOOOOO.O. ", +" ..OOOOOOOOOOOOOOOO.. ", +" .................... ", +" ", +" ", +" ", +" ", +" ", +" "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/next-ur.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,35 @@ +/* XPM */ +static char * next_ur_xpm[] = { +"24 24 8 1", +". c None", +" c #000000000000", +"X c #A5A5A5A59595", +"o c #C7C7C6C6C6C6", +"O c #FFFF00000000", +"+ c #9A9A6C6C4E4E", +"@ c #E1E1E0E0E0E0", +"# c #FFFFFFFFFFFF", +" .. .. .. .. .. .. .. ..", +"........................", +"............X...........", +" .. .. .. .XXX. .. .. ..", +".........XXooOX.........", +".......XXooo+O@X........", +" .. XXXoooo++@@@X. .. ..", +"....X@Xoooooo@@@X.......", +"....X@@Xooo@@@@@@X......", +" .. X@@XXoo@@@@@@@X.. ..", +"....X@@Xoo@@@@@@@@@X....", +"....X@Xo@@@XX@@@@@@oX...", +" .. oXoo@XXooO@@@@@@X ..", +"....oXoXXooo+OX@@@@Xo...", +"....XXXoooo++@@X@@Xo....", +" .. X@Xoooooo@@@XX .. ..", +"....X@@Xooo@@@@@@X......", +"....X@@XXoo@@@@@@@X.....", +" .. X@@Xoo@@@@@@@@@X. ..", +"....X@Xo@ @@@@@@@ X...", +"... oXoo ## @@ @@ ## ...", +" .. oXo #### @ #### ..", +".....oX #### @@@ #### ..", +".....oX@ ## @@@@X ## ..."};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/post.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,35 @@ +/* XPM */ +static char * post_xpm[] = { +"24 24 8 1", +". c None", +" c #434343434343", +"X c #A5A5A5A59595", +"O c #000000000000", +"+ c #C7C7C6C6C6C6", +"@ c #FFFF00000000", +"# c #9A9A6C6C4E4E", +"$ c #E1E1E0E0E0E0", +"O..O..O..O..O..O..O..O..", +"........................", +"............X...........", +"O..O..O..O.XXX.O..O..O..", +".........XX++@X.........", +".......XX+++#@$X........", +"O..OXXX++++##$$$X.O..O..", +"....X$X++++++$$$X.......", +"....X$$X+++$$$$$$X......", +"O..OX$$XX++$$$$$$$X..O..", +"....X$$X++$$$$$$$$$X....", +"....X$X+$$$$$$$$$$$+X...", +"O..O+X++$$$$$$$$$$$$XO..", +"....+X+$$$$$$$$$$$$X+...", +".....+X$$$$$$$$$$$X+....", +"O..O.+X$$$$$$$$$XXO..O..", +"......+X$$$$$$$X++......", +"......+X$$$$$XX+........", +"O..O..O+X$$$X++O..O..O..", +".......+X$$X++..........", +"........+XX+............", +"O..O..O..O+.O..O..O..O..", +"........................", +"........................"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/prev-ur.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,35 @@ +/* XPM */ +static char * prev_ur_xpm[] = { +"24 24 8 1", +". c None", +" c #000000000000", +"X c #A5A5A5A59595", +"o c #C7C7C6C6C6C6", +"O c #FFFF00000000", +"+ c #9A9A6C6C4E4E", +"@ c #E1E1E0E0E0E0", +"# c #FFFFFFFFFFFF", +" .. .. .. .. .. .. .. ..", +"........................", +"............X...........", +" .. .. .. .XXX. .. .. ..", +".........XXooOX.........", +".......XXooo+O@X........", +" .. XXXoooo++@@@X. .. ..", +"....X@Xoooooo@@@X.......", +"....X@@Xooo@@@@@@X......", +" .. X@@XXoo@@@@@@@X.. ..", +"....X@@Xo @@@@@@ X....", +"....X@Xo ## X @ ## X...", +" .. oXo #XXXoO@ #### ..", +"....oXoXXooo+OX #### ...", +"....XXXoooo++@@X ## ....", +" .. X@Xoooooo@@@X .. ..", +"....X@@Xooo@@@@@@X......", +"....X@@XXoo@@@@@@@X.....", +" .. X@@Xoo@@@@@@@@@X. ..", +"....X@Xo@@@@@@@@@@@@X...", +"... oXoo@@@@@@@@@@@@X...", +" .. oXo@@@@@@@@@@@@X....", +".....oX@@@@@@@@@@@X.....", +".....oX@@@@@@@@@@X......"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/preview.xbm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,10 @@ +#define preview_width 24 +#define preview_height 24 +static char preview_bits[] = { + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0xc0,0x03,0x00,0x3e,0x06,0xf0,0x03,0x04,0x08,0x00,0x0a,0x78,0x00,0x09, + 0x88,0xf9,0x08,0x10,0xc6,0x10,0x10,0x3a,0x13,0x10,0x06,0x15,0x20,0x02,0x29, + 0x20,0x02,0x31,0x20,0xad,0x0f,0x40,0xf9,0x03,0xc0,0xb8,0x07,0x80,0x07,0x0e, + 0x80,0x01,0x1c,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00, + 0x00,0x00,0x39,0x00,0x00,0x00,0x08,0xc0,0x12,0x42,0x00,0x00,0x00,0x00,0x38, + 0x82,0x18,0x08,0x00,0x00,0x00 };
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/preview.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,33 @@ +/* XPM */ +static char *prev1[]={ +"24 24 6 1", +". c None", +"# c #000000", +"d c #46463e", +"a c #676663", +"c c #a8a7a3", +"b c #ebeae4", +"........................", +"........................", +"........................", +"........................", +"........................", +"..............####......", +".........#####abbc#.....", +"....#####acbbbbbbc#.....", +"...#acbbbbbbbbbbacc#....", +"...#baabbbbbbbbcacb#....", +"...#cbcaabbd##dacbb#....", +"....#bbbccdcbbcdabbc#...", +"....#bbbbdccaaccdacb#...", +"....#cbbb#abbbbb#bac#...", +".....#bbb#cbbbbc#bbac#..", +".....#bbbdcbbbbddbbc##..", +".....#cbccdcbbd#####....", +"......#babbd##dd##......", +"......#acbc###.####.....", +"......#aa##......###....", +".......##.........###...", +"...................##...", +"........................", +"........................"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/receipt.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,32 @@ +/* XPM */ +static char * receipt_xpm[] = { +"24 24 5 1", +" c None", +". c #FFFFFFFFFFFF", +"X c #676766666363", +"o c #FFFF00000000", +"O c #AEAE3E3E4848", +" ", +" ", +" .. ", +" . ", +" . ", +" . ", +" .. ", +" Xooo .. ", +" Xoooooooo.. ", +" Xoooooooooooooo ... ", +" oooooooooooOOoo . ", +" ooooooooooOOOOo. ", +" oooooooooOO...o ", +" ooooooooooOOooo ", +" ooooooooooooooo ", +" ooooooooooooooo ", +" oooooooooooooo ", +" ooooooooooo ", +" ooooooo ", +" oooo ", +" oo ", +" ", +" ", +" "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/reply-wo.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,31 @@ +/* XPM */ +static char * reply_wo_xpm[] = { +"24 24 4 1", +" c None", +". c #000000000000", +"X c #E1E1E0E0E0E0", +"O c #FFFFFFFFFFFF", +" ", +" ", +" ", +" .... ", +" ..X.... ", +" ..XX.XX.. ", +" .O.XX.XXXX.. ", +" ..O.XXX.XXXX... ", +" .OO.XXXX.X....... ", +" .OO.XXXX...XXX.OO.. ", +" ..OO.XX....XXXX.OOOO.. ", +" .......XX.XXXX.OOO.... ", +" .OOO.XXX.XXXX.OO..OOO. ", +" .OOOO....XXX....OOOOO. ", +" .OOOOOOO..XX..OOOOOOO. ", +" .OOOOOOO......OOOOOOO. ", +" .OOOOOO.OO..O..OOOOOO. ", +" .OOOOO.OOOOOOOO.OOOOO. ", +" .OOOO.OOOOOOOOOO.OOOO. ", +" .OOO.OOOOOOOOOOOO.OOO. ", +" .O..OOOOOOOOOOOOOO..O. ", +" ..OOOOOOOOOOOOOOOOOO.. ", +" ...................... ", +" "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/reply.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,31 @@ +/* XPM */ +static char * reply_xpm[] = { +"24 24 4 1", +" c None", +". c #000000000000", +"X c #E1E1E0E0E0E0", +"O c #FFFFFFFFFFFF", +" ", +" ", +" ", +" .... ", +" ..XXX.. ", +" ..XXXXX.. ", +" .O.XXXXXXX.. ", +" ..O.XXXXXXXXX.. ", +" .OO.XXXXXXXXXX... ", +" .OO.XXXXXXXXXX.OO.. ", +" ..OO.XXXXXXXXXX.OOOO.. ", +" .....XXXXXXXXX.OOO.... ", +" .OOO.XXXXXXXX.OO..OOO. ", +" .OOOO...XXXXX...OOOOO. ", +" .OOOOOOO..XX..OOOOOOO. ", +" .OOOOOOO......OOOOOOO. ", +" .OOOOOO.OO..O..OOOOOO. ", +" .OOOOO.OOOOOOOO.OOOOO. ", +" .OOOO.OOOOOOOOOO.OOOO. ", +" .OOO.OOOOOOOOOOOO.OOO. ", +" .O..OOOOOOOOOOOOOO..O. ", +" ..OOOOOOOOOOOOOOOOOO.. ", +" ...................... ", +" "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/reverse-smile.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * reverse_smile_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".+++.....+++.", +".++.+++++.++.", +".++.+++++.++.", +".+++++++++++.", +".+++++++++++.", +".++..+++..++.", +".++..+++..++.", +".+++++++++++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/rot13.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,32 @@ +/* XPM */ +static char * rot13_xpm[] = { +"24 24 5 1", +" c None", +". c #A5A5A5A59595", +"X c #C7C7C6C6C6C6", +"o c #E1E1E0E0E0E0", +"O c #919187876969", +" ", +" ", +" ", +" . ", +" ..X. ", +" ..XXX. ", +" ..XXXXXo. ", +" ...XXXXXXooo. ", +" .o.XXXXXoooo. ", +" .oo.XXXooOooo. ", +" .oo..XXoOXOOoo. ", +" .oo.XXoOXooOXoo. ", +" .o.XoooOOXXOXooX. ", +" .XXooOOXOOXoooo. ", +" .XooOOOooooooo. ", +" .oOOXOXooooo. ", +" .oOOXoooooo. ", +" .oOOXooo.. ", +" .oooooo. ", +" .ooo.. ", +" .oo. ", +" .. ", +" ", +" "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/save-aif.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,33 @@ +/* XPM */ +static char * save_aif_xpm[] = { +"24 24 6 1", +" c None", +". c #999999999999", +"X c #E1E1E0E0E0E0", +"o c #C7C7C6C6C6C6", +"O c #000000000000", +"+ c #FFFFFFFFFFFF", +" ", +" ", +" ............. ", +" .XXXXXXXXXX.X.. ", +" .XXXXXXXXXX.XX. ", +" .XXXXXXXXXX.... ", +" .XXXXXXXXXXooo. ", +" .XXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXX. ", +" .XXXXXXXXXXXXX. ", +" OOOOOOOOOOOOOOXXXXXX. ", +" O..O+++++++O.OXXXXXX. ", +" O..O+++++++O.OXXXXXX. ", +" O..O+++++++O.OXXXXXX. ", +" O..O+++++++O.OXXXXXX. ", +" O..O+++++++O.OXXXXXX. ", +" O..OOOOOOOOO.OXXXXXX. ", +" O............OXXXXXX. ", +" O............OXXXXXX. ", +" O..OOOOOOOOO.O....... ", +" O..OoooooO++.O ", +" O..OoooooO++.O ", +" O.OoooooO++.O ", +" OOOOOOOOOOOO "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/save-art.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,32 @@ +/* XPM */ +static char * save_art_xpm[] = { +"24 24 5 1", +" c None", +". c #000000000000", +"X c #FFFFFFFFFFFF", +"o c #999999999999", +"O c #C7C7C6C6C6C6", +" ", +" ", +" .................. ", +" ...XXXXXXXXXXXXX.. ", +" .XX..XXXXXXXXX..X. ", +" .XXXX..XXXXX..XXX. ", +" .XXXXX......XXXXX. ", +" .XXX..XX..XX..XXX. ", +" .XX..XXXXXXXX..XX. ", +" ...XXXXXXXXXXXX... ", +" ..............XXXXXXX. ", +" .oo.XXXXXXX.o......... ", +" .oo.XXXXXXX.o. ", +" .oo.XXXXXXX.o. ", +" .oo.XXXXXXX.o. ", +" .oo.XXXXXXX.o. ", +" .oo.........o. ", +" .oooooooooooo. ", +" .oooooooooooo. ", +" .oo.........o. ", +" .oo.OOOOO.XXo. ", +" .oo.OOOOO.XXo. ", +" .o.OOOOO.XXo. ", +" ............ "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/subscribe.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,32 @@ +/* XPM */ +static char * subscribe_xpm[] = { +"24 24 5 1", +" c None", +". c #A5A5A5A59595", +"X c #E1E1E0E0E0E0", +"o c #C7C7C6C6C6C6", +"O c #8686ADAD7D7D", +" ", +" ", +" ", +" ... ", +" ..XXX..... ", +"...XXXXX..XXX. ... ", +".X.XX...XXXX...XXX. ", +".XX.X.X.XX...XXXXX. ", +".XX...XX.X.X.XXXXXX. ", +".XX.o.XX...XX.XXXXXX. ", +".X.oo.XX.o.XX..XXXXXX. ", +"o.ooo.X.oo.XX.XXXOXXX. ", +"o.oXXo.ooo.X.oXXOXXXXX. ", +" o.XXo.oXXo.ooXXOXXXXX. ", +" o.XXXo.XXo.oXXXOXXXXXX.", +" o.XXo.XXXo.XOOOOXXXXX.", +" o.XXoo.XXo.XXXOOXXXXX.", +" o.XXo.XXXo.XXXXXXX...", +" o.XX.o.XXo.XXXXXX.oo ", +" o..oo.XX.o.XXX..o ", +" oo o..oo.XX.oo ", +" oo o..o ", +" oo ", +" "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/unimportant.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,32 @@ +/* XPM */ +static char *magick[] = { +/* columns rows colors chars-per-pixel */ +"24 24 2 1", +"! c blue", +"w c Gray75", +/* pixels */ +"wwwwwwwwwwwwwwwwwwwwwwww", +"wwwwwwwwwwwwwwwwwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"ww!!!wwwwww!!!wwwwww!!!w", +"www!!!wwwww!!!wwwww!!!ww", +"wwww!!!wwww!!!wwww!!!www", +"wwwww!!!www!!!www!!!wwww", +"wwwwww!!!ww!!!ww!!!wwwww", +"wwwwwww!!!w!!!w!!!wwwwww", +"wwwwwwww!!!!!!!!!wwwwwww", +"wwwwwwwww!!!!!!!wwwwwwww", +"wwwwwwwwww!!!!!wwwwwwwww", +"wwwwwwwwwww!!!wwwwwwwwww", +"wwwwwwwwwwwwwwwwwwwwwwww", +"wwwwwwwwwwwwwwwwwwwwwwww" +};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/unsubscribe.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,32 @@ +/* XPM */ +static char * unsubscribe_xpm[] = { +"24 24 5 1", +" c None", +". c #A5A5A5A59595", +"X c #E1E1E0E0E0E0", +"o c #C7C7C6C6C6C6", +"O c #FFFF00000000", +" ", +" ", +" ", +" ... ", +" ..XXX..... ", +"...XXXXX..XXX. ... ", +".X.XX...XXXX...XXX. ", +".XX.X.X.XX...XXXXX. ", +".XX...XX.X.X.XXXXXX. ", +".XX.o.XX...XX.XXXXXX. ", +".X.oo.XX.o.XX..XXXXXX. ", +"o.ooo.X.oo.XX.XXXXXXX. ", +"o.oXXo.ooo.X.oXXXXXXXX. ", +" o.XXo.oXXo.ooXXOXXXXX. ", +" o.XXXo.XXo.oXXXOXXXXXX.", +" o.XXo.XXXo.XOOOXXXXXX.", +" o.XXoo.XXo.XoOOOXXXXX.", +" o.XXo.XXXo.XOoOXXX...", +" o.XX.o.XXo.XOXoXX.oo ", +" o..oo.XX.o.oXX..o ", +" oo o..oo.XX.oo ", +" oo o..o ", +" oo ", +" "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/uu-decode.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,36 @@ +/* XPM */ +static char * uu_decode_xpm[] = { +"24 24 9 1", +" c None", +". c #919187876969", +"X c #C2C2B9B99C9C", +"o c #868686868686", +"O c #8F8F8F8F8F8F", +"+ c #000000000000", +"@ c #4C4C4C4C4C4C", +"# c #E9E9EFEFE8E8", +"$ c #8686ADAD7D7D", +" ", +" ", +" ", +" .............. ", +" X.o.........O.++ ", +" XX++++++++++..++ ", +" XX@########+..++ ", +" XX@########+..++ ", +" XX@$#$$$#$#+..++ ", +" XX@#$$$$$$#+..++ ", +" XX@##$#####+..++ ", +" XX@##$#$$##+..++ ", +" XX@##$#$$##+..++ ", +" XX@##$$#$$#+..++ ", +" XX@######$#+..++ ", +" XX@########+..++ ", +" XX@########+..++ ", +" XX.@@@@@@@@@..++ ", +" X.XXXXXXXXXX..++ ", +" .XXXXXXXXXXXX.++ ", +" +++++++++++++++ ", +" +++++++++++++++ ", +" ", +" "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/gnus/uu-post.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,35 @@ +/* XPM */ +static char * uu_post_xpm[] = { +"24 24 8 1", +". c None", +"X c #000000000000", +"+ c #C2C2B9B99C9C", +"@ c #919187876969", +"# c #868686868686", +"% c #4C4C4C4C4C4C", +"& c #E9E9EFEFE8E8", +"* c #8686ADAD7D7D", +"X..X..X..X.XX..X..X..X..", +"..........X.X...........", +".........X...X..........", +"X..X..X.XX..X.XX..X..X..", +".......X.......X........", +"......X.........X.......", +"X..X+X@@@@@@@@@@@XX..X..", +"....+@@@@@@@@@@@@@......", +"....++XXXXXXXXXX@@......", +"X..X++%&&&&&&&&X@@X..X..", +"....++%&&&&&&&&X@@......", +"....++%*&***&*&X@@......", +"X..X++%&******&X@@X..X..", +"....++%&&*&&&&&X@@......", +"....++%&&*&**&&X@@......", +"X..X++%&&*&**&&X@@X..X..", +"....++%&&**&**&X@@......", +"....++%&&&&&&*&X@@......", +"X..X++%&&&&&&&&X@@X..X..", +"....++%&&&&&&&&X@@......", +"....++@%%%%%%%%%@@......", +"X..X+@++++++++++@@X..X..", +"....+++++++++++++@......", +"........................"};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/blink.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * blink_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".+++++++++++.", +".+++++++..++.", +".+++++++..++.", +".++...++++++.", +".+++++++++++.", +".++++++++.++.", +".++.+++++.++.", +".+++.....+++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/braindamaged.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * mad_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".++...++++++.", +".++.+.+...++.", +".++...+.+.++.", +".++++++...++.", +".+.+++++++.+.", +".+.+++++++.+.", +".++.+++++.++.", +".+++.....+++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/cry.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * cry_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".+++++++++++.", +".++..+++..++.", +".++++++++.++.", +".+++++++.+.+.", +".+++++++.+.+.", +".++++++++..+.", +".+++.....+++.", +".++.+++++.++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/evil.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * diabolic_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".++.+++++.++.", +".++..+++..++.", +".++...+...++.", +".+++++++++++.", +".+.+++++++.+.", +".++.+++++.++.", +".+++.+++.+++.", +".++++...++++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/forced.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * forced_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".+++++++++++.", +".++..+++..++.", +".++..+++..++.", +".+++++++++++.", +".+++++++++++.", +".+.+++++++.+.", +".+.+++++++.+.", +".+.........+.", +".+++++++++++.", +" ...+++++... ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/frown.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * frown_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".++..+++..++.", +".++++.+.++++.", +".+...+++...+.", +".+...+++...+.", +".+++++++++++.", +".+++.....+++.", +".++.+++++.++.", +".++.+++++.++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/grin.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,21 @@ +/* XPM */ +static char * grin_xpm[] = { +"13 14 4 1", +" c None", +". c #000000", +"+ c #FFDD00", +"@ c #FFFFFF", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".+++++++++++.", +".++..+++..++.", +".++..+++..++.", +".+++++++++++.", +".+.........+.", +".+.@@@@@@@.+.", +".++.@@@@@.++.", +".+++.....+++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/indifferent.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * indifferent_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".+++++++++++.", +".++..+++..++.", +".++..+++..++.", +".+++++++++++.", +".+++++++++++.", +".+++++++++++.", +".++.......++.", +".+++++++++++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/sad.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * sad_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".+++++++++++.", +".++..+++..++.", +".++..+++..++.", +".+++++++++++.", +".+++++++++++.", +".+++.....+++.", +".++.+++++.++.", +".++.+++++.++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/smile.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * smile_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".+++++++++++.", +".++..+++..++.", +".++..+++..++.", +".+++++++++++.", +".+++++++++++.", +".++.+++++.++.", +".++.+++++.++.", +".+++.....+++.", +" .+++++++++. ", +" ..+++++.. ", +" ....... "};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/images/smilies/wry.xpm Sat Feb 19 00:06:48 2005 +0000 @@ -0,0 +1,20 @@ +/* XPM */ +static char * wry_xpm[] = { +"13 14 3 1", +" c None", +". c #000000", +"+ c #FFDD00", +" ....... ", +" ..+++++.. ", +" .+++++++++. ", +".+++++++++++.", +".+++++++..++.", +".++..+++..++.", +".++..+++++++.", +".+++++++++++.", +".+++++++...+.", +".+++++...+++.", +".++++..+++++.", +" .+++.+++++. ", +" ..+++++.. ", +" ....... "};
--- a/lisp/ChangeLog Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/ChangeLog Sat Feb 19 00:06:48 2005 +0000 @@ -1,3 +1,127 @@ +2005-02-18 Kenichi Handa <handa@m17n.org> + + * ps-print.el (ps-font-info-database): New entry + ZapfChancery-MediumItalic with correct font name. Fix font name + of the entry Zapf-Chancery-MediumItalic. + +2005-02-16 Luc Teirlinck <teirllm@auburn.edu> + + * autorevert.el (auto-revert-stop-on-user-input): Further doc fix. + +2005-02-16 Kim F. Storm <storm@cua.dk> + + * ido.el (ido-fallback-command): Pass user input to fallback command. + +2005-02-16 Nick Roberts <nickrob@snap.net.nz> + + * progmodes/gdb-ui.el (gdb-set-gud-minor-mode-existing-buffers) + (gdb-find-file-hook): Add server prefix. + +2005-02-16 Richard M. Stallman <rms@gnu.org> + + * replace.el (perform-replace): Pass new args to replace-highlight. + (replace-highlight): Take region args, + and pass them to isearch-lazy-highlight-new-loop. + + * novice.el (disabled-command-hook): Autoload the defalias + and the make-obsolete-variable call. + + * menu-bar.el (menu-bar-select-frame): FRAME defaults to selected. + + * isearch.el (isearch-lazy-highlight-start-limit) + (isearch-lazy-highlight-end-limit): New variables limit + the region for highlighting. + (isearch-lazy-highlight-new-loop): New args BEG and END. + (isearch-lazy-highlight-search): Use the new vars. + (isearch-lazy-highlight-update): Likewise. + + * dired.el (dired-build-subdir-alist): Bind buffer-undo-list to t. + + * cus-start.el (all): Use default-boundp. + +2005-02-15 David Casperson <casper@unbc.ca> (tiny change) + + * menu-bar.el (menu-bar-select-frame): Handle current frame. + +2005-02-15 Luc Teirlinck <teirllm@auburn.edu> + + * autorevert.el (auto-revert-stop-on-user-input) + (auto-revert-verbose): Doc fixes. + +2005-02-15 Benjamin Riefenstahl <Benjamin.Riefenstahl@epost.de> + + * international/mule-cmds.el (set-locale-environment): Remove call + to set-selection-coding-system on Windows. + +2005-02-15 Jay Belanger <belanger@truman.edu> + + * calc/calc-alg.el: Add simplification rules for calcFunc-sec, + calcFunc-csc, calcFunc-cot, calcFunc-sech, calcFunc-csch and + calcFunc-coth. + (math-simplify-sqrt): Add simplifications. + + * calc/calc-arith.el (math-real-if-arg-functions): Add functions + to list. + + * calc/calc-ext.el: Add functions to autoloads. + + * calc/calc-math.el (calc-sec, calc-csc, calc-cot, calc-sech) + (calc-csch, calc-coth, calcFunc-sec, calcFunc-csc, calcFunc-cot) + (calcFunc-sech, calcFunc-csch, calcFunc-coth, math-sec-raw) + (math-csc-raw, math-cot-raw): New functions. + + * calc/calc-rules.el (calc-DistribRules, calc-NegateRules): Add rules. + + * calc/calc-undo.el (calc-handle-undo): Remove prefix from + the variable name in a message. + + * calc/calc-units.el: Add simplification rules for calcFunc-sec, + calcFunc-csc, calcFunc-cot. + + * calc/calcalg2.el: Add derivative and integration rules for + calcFunc-sec, calcFunc-csc, calcFunc-cot, calcFunc-sech, + calcFunc-csch, calcFunc-coth. + (math-do-integral-methods): Add to checks for when to use + substitutions. + + * calc/calccomp.el (math-eqn-special-funcs): Add functions to list. + +2005-02-15 Lute Kamstra <lute@gnu.org> + + * emacs-lisp/lisp-mode.el (lisp-mode-variables): Add + ;;;###autoload to `outline-regexp'. Suggested by Stefan Monnier + <monnier@iro.umontreal.ca> + (lisp-outline-level): Improve efficiency. Suggested by David + Kastrup <dak@gnu.org>. + +2005-02-15 Nick Roberts <nickrob@snap.net.nz> + + * progmodes/gdb-ui.el (gdb-find-file-unhook): New variable. + (gdb-set-gud-minor-mode, gdb-set-gud-minor-mode-1) + (gdb-set-gud-minor-mode-existing-buffers): New functions. + (gdb-find-file-hook): New hook. Add it to find-file-hook. + (gdb-info-breakpoints-custom, gdb-source-info): Simplify. + +2005-02-14 Luc Teirlinck <teirllm@auburn.edu> + + * cus-start.el (all): Comment change. + +2005-02-14 Lute Kamstra <lute@gnu.org> + + * cus-start.el (all): Check if symbol is void. + +2005-02-14 Carsten Dominik <dominik@science.uva.nl> + + * textmodes/reftex-cite.el (reftex-do-citation): Cleanup single + optional argument to \cite. + +2005-02-14 Richard M. Stallman <rms@gnu.org> + + * cus-edit.el (custom-buffer-create-internal): Update help message. + (custom-magic-alist): Update help messages. + + * cus-start.el (all): Allow a var to specify a standard value. + 2005-02-12 Luc Teirlinck <teirllm@auburn.edu> * custom.el (custom-theme-set-variables): Handle variable aliases.
--- a/lisp/autorevert.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/autorevert.el Sat Feb 19 00:06:48 2005 +0000 @@ -150,12 +150,18 @@ (auto-revert-set-timer)))) (defcustom auto-revert-stop-on-user-input t - "When non-nil Auto-Revert Mode stops checking files on user input." + "When non-nil, user input temporarily interrupts Auto-Revert Mode. +With this setting, Auto-Revert Mode checks for user input after +handling each buffer and does not process any further buffers +\(until the next run of the timer) if user input is available. +When nil, Auto-Revert Mode checks files and reverts buffers, +with quitting disabled, without paying attention to user input. +Thus, with this setting, Emacs might be non-responsive at times." :group 'auto-revert :type 'boolean) (defcustom auto-revert-verbose t - "When nil, Auto-Revert Mode will not generate any messages. + "When nil, Auto-Revert Mode does not generate any messages. When non-nil, a message is generated whenever a file is reverted." :group 'auto-revert :type 'boolean)
--- a/lisp/calc/calc-alg.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/calc/calc-alg.el Sat Feb 19 00:06:48 2005 +0000 @@ -746,6 +746,55 @@ (list '* (list 'calcFunc-sin (list '* (1- n) a)) (list 'calcFunc-sin a)))))))) +(math-defsimplify calcFunc-sec + (or (and (math-looks-negp (nth 1 math-simplify-expr)) + (list 'calcFunc-sec (math-neg (nth 1 math-simplify-expr)))) + (and (eq calc-angle-mode 'rad) + (let ((n (math-linear-in (nth 1 math-simplify-expr) '(var pi var-pi)))) + (and n + (math-div 1 (math-known-sin (car n) (nth 1 n) 120 300))))) + (and (eq calc-angle-mode 'deg) + (let ((n (math-integer-plus (nth 1 math-simplify-expr)))) + (and n + (math-div 1 (math-known-sin (car n) (nth 1 n) '(frac 2 3) 300))))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arcsin) + (math-div + 1 + (list 'calcFunc-sqrt + (math-sub 1 (math-sqr (nth 1 (nth 1 math-simplify-expr))))))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arccos) + (math-div + 1 + (nth 1 (nth 1 math-simplify-expr)))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arctan) + (list 'calcFunc-sqrt + (math-add 1 + (math-sqr (nth 1 (nth 1 math-simplify-expr)))))))) + +(math-defsimplify calcFunc-csc + (or (and (math-looks-negp (nth 1 math-simplify-expr)) + (math-neg (list 'calcFunc-csc (math-neg (nth 1 math-simplify-expr))))) + (and (eq calc-angle-mode 'rad) + (let ((n (math-linear-in (nth 1 math-simplify-expr) '(var pi var-pi)))) + (and n + (math-div 1 (math-known-sin (car n) (nth 1 n) 120 0))))) + (and (eq calc-angle-mode 'deg) + (let ((n (math-integer-plus (nth 1 math-simplify-expr)))) + (and n + (math-div 1 (math-known-sin (car n) (nth 1 n) '(frac 2 3) 0))))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arcsin) + (math-div 1 (nth 1 (nth 1 math-simplify-expr)))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arccos) + (math-div + 1 + (list 'calcFunc-sqrt (math-sub 1 (math-sqr + (nth 1 (nth 1 math-simplify-expr))))))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arctan) + (math-div (list 'calcFunc-sqrt + (math-add 1 (math-sqr + (nth 1 (nth 1 math-simplify-expr))))) + (nth 1 (nth 1 math-simplify-expr)))))) + (defun math-should-expand-trig (x &optional hyperbolic) (let ((m (math-is-multiple x))) (and math-living-dangerously @@ -827,6 +876,28 @@ (math-div (list 'calcFunc-sin (nth 1 math-simplify-expr)) (list 'calcFunc-cos (nth 1 math-simplify-expr)))))))) +(math-defsimplify calcFunc-cot + (or (and (math-looks-negp (nth 1 math-simplify-expr)) + (math-neg (list 'calcFunc-cot (math-neg (nth 1 math-simplify-expr))))) + (and (eq calc-angle-mode 'rad) + (let ((n (math-linear-in (nth 1 math-simplify-expr) '(var pi var-pi)))) + (and n + (math-div 1 (math-known-tan (car n) (nth 1 n) 120))))) + (and (eq calc-angle-mode 'deg) + (let ((n (math-integer-plus (nth 1 math-simplify-expr)))) + (and n + (math-div 1 (math-known-tan (car n) (nth 1 n) '(frac 2 3)))))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arcsin) + (math-div (list 'calcFunc-sqrt + (math-sub 1 (math-sqr (nth 1 (nth 1 math-simplify-expr))))) + (nth 1 (nth 1 math-simplify-expr)))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arccos) + (math-div (nth 1 (nth 1 math-simplify-expr)) + (list 'calcFunc-sqrt + (math-sub 1 (math-sqr (nth 1 (nth 1 math-simplify-expr))))))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arctan) + (math-div 1 (nth 1 (nth 1 math-simplify-expr)))))) + (defun math-known-tan (plus n mul) (setq n (math-mul n mul)) (and (math-num-integerp n) @@ -930,6 +1001,58 @@ (math-div (list 'calcFunc-sinh (nth 1 math-simplify-expr)) (list 'calcFunc-cosh (nth 1 math-simplify-expr)))))))) +(math-defsimplify calcFunc-sech + (or (and (math-looks-negp (nth 1 math-simplify-expr)) + (list 'calcFunc-sech (math-neg (nth 1 math-simplify-expr)))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arcsinh) + math-living-dangerously + (math-div + 1 + (list 'calcFunc-sqrt + (math-add (math-sqr (nth 1 (nth 1 math-simplify-expr))) 1)))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arccosh) + math-living-dangerously + (math-div 1 (nth 1 (nth 1 math-simplify-expr))) 1) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arctanh) + math-living-dangerously + (list 'calcFunc-sqrt + (math-sub 1 (math-sqr (nth 1 (nth 1 math-simplify-expr)))))))) + +(math-defsimplify calcFunc-csch + (or (and (math-looks-negp (nth 1 math-simplify-expr)) + (math-neg (list 'calcFunc-csch (math-neg (nth 1 math-simplify-expr))))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arcsinh) + math-living-dangerously + (math-div 1 (nth 1 (nth 1 math-simplify-expr)))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arccosh) + math-living-dangerously + (math-div + 1 + (list 'calcFunc-sqrt + (math-sub (math-sqr (nth 1 (nth 1 math-simplify-expr))) 1)))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arctanh) + math-living-dangerously + (math-div (list 'calcFunc-sqrt + (math-sub 1 (math-sqr (nth 1 (nth 1 math-simplify-expr))))) + (nth 1 (nth 1 math-simplify-expr)))))) + +(math-defsimplify calcFunc-coth + (or (and (math-looks-negp (nth 1 math-simplify-expr)) + (math-neg (list 'calcFunc-coth (math-neg (nth 1 math-simplify-expr))))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arcsinh) + math-living-dangerously + (math-div (list 'calcFunc-sqrt + (math-add (math-sqr (nth 1 (nth 1 math-simplify-expr))) 1)) + (nth 1 (nth 1 math-simplify-expr)))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arccosh) + math-living-dangerously + (math-div (nth 1 (nth 1 math-simplify-expr)) + (list 'calcFunc-sqrt + (math-sub (math-sqr (nth 1 (nth 1 math-simplify-expr))) 1)))) + (and (eq (car-safe (nth 1 math-simplify-expr)) 'calcFunc-arctanh) + math-living-dangerously + (math-div 1 (nth 1 (nth 1 math-simplify-expr)))))) + (math-defsimplify calcFunc-arcsin (or (and (math-looks-negp (nth 1 math-simplify-expr)) (math-neg (list 'calcFunc-arcsin (math-neg (nth 1 math-simplify-expr))))) @@ -1043,8 +1166,13 @@ (math-equal-int (nth 2 a) 2) (or (and (eq (car-safe (nth 1 a)) 'calcFunc-sinh) (list 'calcFunc-cosh (nth 1 (nth 1 a)))) + (and (eq (car-safe (nth 1 a)) 'calcFunc-csch) + (list 'calcFunc-coth (nth 1 (nth 1 a)))) (and (eq (car-safe (nth 1 a)) 'calcFunc-tan) (list '/ 1 (list 'calcFunc-cos + (nth 1 (nth 1 a))))) + (and (eq (car-safe (nth 1 a)) 'calcFunc-cot) + (list '/ 1 (list 'calcFunc-sin (nth 1 (nth 1 a))))))))) (and (eq (car-safe (nth 1 math-simplify-expr)) '^) (list '^
--- a/lisp/calc/calc-arith.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/calc/calc-arith.el Sat Feb 19 00:06:48 2005 +0000 @@ -70,9 +70,13 @@ calcFunc-max calcFunc-min)) (defvar math-real-if-arg-functions '(calcFunc-sin calcFunc-cos - calcFunc-tan calcFunc-arctan + calcFunc-tan calcFunc-sec + calcFunc-csc calcFunc-cot + calcFunc-arctan calcFunc-sinh calcFunc-cosh - calcFunc-tanh calcFunc-exp + calcFunc-tanh calcFunc-sech + calcFunc-csch calcFunc-coth + calcFunc-exp calcFunc-gamma calcFunc-fact)) (defvar math-integer-functions '(calcFunc-idiv
--- a/lisp/calc/calc-ext.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/calc/calc-ext.el Sat Feb 19 00:06:48 2005 +0000 @@ -801,13 +801,16 @@ ("calc-math" calcFunc-alog calcFunc-arccos calcFunc-arccosh calcFunc-arcsin calcFunc-arcsincos calcFunc-arcsinh -calcFunc-arctan calcFunc-arctan2 calcFunc-arctanh calcFunc-cos -calcFunc-cosh calcFunc-deg calcFunc-exp calcFunc-exp10 calcFunc-expm1 +calcFunc-arctan calcFunc-arctan2 calcFunc-arctanh calcFunc-csc +calcFunc-csch calcFunc-cos calcFunc-cosh calcFunc-cot calcFunc-coth +calcFunc-deg calcFunc-exp calcFunc-exp10 calcFunc-expm1 calcFunc-hypot calcFunc-ilog calcFunc-isqrt calcFunc-ln calcFunc-lnp1 -calcFunc-log calcFunc-log10 calcFunc-nroot calcFunc-rad calcFunc-sin +calcFunc-log calcFunc-log10 calcFunc-nroot calcFunc-rad calcFunc-sec +calcFunc-sech calcFunc-sin calcFunc-sincos calcFunc-sinh calcFunc-sqr calcFunc-sqrt calcFunc-tan calcFunc-tanh math-arccos-raw math-arcsin-raw math-arctan-raw -math-arctan2-raw math-cos-raw math-exp-minus-1-raw math-exp-raw +math-arctan2-raw math-cos-raw math-cot-raw math-csc-raw +math-exp-minus-1-raw math-exp-raw math-from-radians math-from-radians-2 math-hypot math-infinite-dir math-isqrt-small math-ln-raw math-nearly-equal math-nearly-equal-float math-nearly-zerop math-nearly-zerop-float math-nth-root @@ -1008,9 +1011,11 @@ ("calc-math" calc-arccos calc-arccosh calc-arcsin calc-arcsinh calc-arctan calc-arctan2 calc-arctanh calc-conj calc-cos calc-cosh +calc-cot calc-coth calc-csc calc-csch calc-degrees-mode calc-exp calc-expm1 calc-hypot calc-ilog calc-imaginary calc-isqrt calc-ln calc-lnp1 calc-log calc-log10 -calc-pi calc-radians-mode calc-sin calc-sincos calc-sinh calc-sqrt +calc-pi calc-radians-mode calc-sec calc-sech +calc-sin calc-sincos calc-sinh calc-sqrt calc-tan calc-tanh calc-to-degrees calc-to-radians) ("calc-mode" calc-alg-simplify-mode calc-algebraic-mode
--- a/lisp/calc/calc-math.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/calc/calc-math.el Sat Feb 19 00:06:48 2005 +0000 @@ -144,6 +144,18 @@ (calc-hyperbolic-func) (calc-sin arg)) +(defun calc-sec (arg) + (interactive "P") + (calc-slow-wrapper + (if (calc-is-hyperbolic) + (calc-unary-op "sech" 'calcFunc-sech arg) + (calc-unary-op "sec" 'calcFunc-sec arg)))) + +(defun calc-sech (arg) + (interactive "P") + (calc-hyperbolic-func) + (calc-sec arg)) + (defun calc-cos (arg) (interactive "P") (calc-slow-wrapper @@ -171,6 +183,18 @@ (calc-hyperbolic-func) (calc-cos arg)) +(defun calc-csc (arg) + (interactive "P") + (calc-slow-wrapper + (if (calc-is-hyperbolic) + (calc-unary-op "csch" 'calcFunc-csch arg) + (calc-unary-op "csc" 'calcFunc-csc arg)))) + +(defun calc-csch (arg) + (interactive "P") + (calc-hyperbolic-func) + (calc-csc arg)) + (defun calc-sincos () (interactive) (calc-slow-wrapper @@ -205,6 +229,29 @@ (calc-hyperbolic-func) (calc-tan arg)) +(defun calc-cot (arg) + (interactive "P") + (calc-slow-wrapper + (if (calc-is-hyperbolic) + (calc-unary-op "coth" 'calcFunc-coth arg) + (calc-unary-op "cot" 'calcFunc-cot arg)))) + +(defun calc-arctan (arg) + (interactive "P") + (calc-invert-func) + (calc-tan arg)) + +(defun calc-tanh (arg) + (interactive "P") + (calc-hyperbolic-func) + (calc-tan arg)) + +(defun calc-arctanh (arg) + (interactive "P") + (calc-invert-func) + (calc-hyperbolic-func) + (calc-tan arg)) + (defun calc-arctan2 () (interactive) (calc-slow-wrapper @@ -220,8 +267,6 @@ (calc-slow-wrapper (calc-pop-push-record 1 "i*" (math-imaginary (calc-top-n 1))))) - - (defun calc-to-degrees (arg) (interactive "P") (calc-wrapper @@ -794,6 +839,169 @@ (t (calc-record-why 'scalarp x) (list 'calcFunc-tan x)))) +(defun calcFunc-sec (x) + (cond ((and (integerp x) + (eq calc-angle-mode 'deg) + (= (% x 180) 0)) + (if (= (% x 360) 0) + 1 + -1)) + ((and (integerp x) + (eq calc-angle-mode 'rad) + (= x 0)) + 1) + ((Math-scalarp x) + (math-with-extra-prec 2 + (math-sec-raw (math-to-radians (math-float x))))) + ((eq (car x) 'sdev) + (if (math-constp x) + (math-with-extra-prec 2 + (let* ((xx (math-to-radians (math-float (nth 1 x)))) + (xs (math-to-radians (math-float (nth 2 x)))) + (sc (math-sin-cos-raw xx))) + (if (and (math-zerop (cdr sc)) + (not calc-infinite-mode)) + (progn + (calc-record-why "*Division by zero") + (list 'calcFunc-sec x)) + (math-make-sdev (math-div-float '(float 1 0) (cdr sc)) + (math-div-float + (math-mul xs (car sc)) + (math-sqr (cdr sc))))))) + (math-make-sdev (calcFunc-sec (nth 1 x)) + (math-div + (math-mul (nth 2 x) + (calcFunc-sin (nth 1 x))) + (math-sqr (calcFunc-cos (nth 1 x))))))) + ((and (eq (car x) 'intv) + (math-intv-constp x)) + (math-with-extra-prec 2 + (let* ((xx (math-to-radians (math-float x))) + (na (math-floor (math-div (math-sub (nth 2 xx) + (math-pi-over-2)) + (math-pi)))) + (nb (math-floor (math-div (math-sub (nth 3 xx) + (math-pi-over-2)) + (math-pi)))) + (naa (math-floor (math-div (nth 2 xx) (math-pi-over-2)))) + (nbb (math-floor (math-div (nth 3 xx) (math-pi-over-2)))) + (span (math-sub nbb naa))) + (if (not (equal na nb)) + '(intv 3 (neg (var inf var-inf)) (var inf var-inf)) + (let ((int (math-sort-intv (nth 1 x) + (math-sec-raw (nth 2 xx)) + (math-sec-raw (nth 3 xx))))) + (if (eq span 1) + (if (math-evenp (math-div (math-add naa 1) 2)) + (math-make-intv (logior (nth 1 int) 2) + 1 + (nth 3 int)) + (math-make-intv (logior (nth 1 int) 1) + (nth 2 int) + -1)) + int)))))) + ((equal x '(var nan var-nan)) + x) + (t (calc-record-why 'scalarp x) + (list 'calcFunc-sec x)))) + +(defun calcFunc-csc (x) + (cond ((and (integerp x) + (eq calc-angle-mode 'deg) + (= (% (- x 90) 180) 0)) + (if (= (% (- x 90) 360) 0) + 1 + -1)) + ((Math-scalarp x) + (math-with-extra-prec 2 + (math-csc-raw (math-to-radians (math-float x))))) + ((eq (car x) 'sdev) + (if (math-constp x) + (math-with-extra-prec 2 + (let* ((xx (math-to-radians (math-float (nth 1 x)))) + (xs (math-to-radians (math-float (nth 2 x)))) + (sc (math-sin-cos-raw xx))) + (if (and (math-zerop (car sc)) + (not calc-infinite-mode)) + (progn + (calc-record-why "*Division by zero") + (list 'calcFunc-csc x)) + (math-make-sdev (math-div-float '(float 1 0) (car sc)) + (math-div-float + (math-mul xs (cdr sc)) + (math-sqr (car sc))))))) + (math-make-sdev (calcFunc-csc (nth 1 x)) + (math-div + (math-mul (nth 2 x) + (calcFunc-cos (nth 1 x))) + (math-sqr (calcFunc-sin (nth 1 x))))))) + ((and (eq (car x) 'intv) + (math-intv-constp x)) + (math-with-extra-prec 2 + (let* ((xx (math-to-radians (math-float x))) + (na (math-floor (math-div (nth 2 xx) (math-pi)))) + (nb (math-floor (math-div (nth 3 xx) (math-pi)))) + (naa (math-floor (math-div (nth 2 xx) (math-pi-over-2)))) + (nbb (math-floor (math-div (nth 3 xx) (math-pi-over-2)))) + (span (math-sub nbb naa))) + (if (not (equal na nb)) + '(intv 3 (neg (var inf var-inf)) (var inf var-inf)) + (let ((int (math-sort-intv (nth 1 x) + (math-csc-raw (nth 2 xx)) + (math-csc-raw (nth 3 xx))))) + (if (eq span 1) + (if (math-evenp (math-div naa 2)) + (math-make-intv (logior (nth 1 int) 2) + 1 + (nth 3 int)) + (math-make-intv (logior (nth 1 int) 1) + (nth 2 int) + -1)) + int)))))) + ((equal x '(var nan var-nan)) + x) + (t (calc-record-why 'scalarp x) + (list 'calcFunc-csc x)))) + +(defun calcFunc-cot (x) ; [N N] [Public] + (cond ((and (integerp x) + (if (eq calc-angle-mode 'deg) + (= (% (- x 90) 180) 0) + (= x 0))) + 0) + ((Math-scalarp x) + (math-with-extra-prec 2 + (math-cot-raw (math-to-radians (math-float x))))) + ((eq (car x) 'sdev) + (if (math-constp x) + (math-with-extra-prec 2 + (let* ((xx (math-to-radians (math-float (nth 1 x)))) + (xs (math-to-radians (math-float (nth 2 x)))) + (sc (math-sin-cos-raw xx))) + (if (and (math-zerop (car sc)) (not calc-infinite-mode)) + (progn + (calc-record-why "*Division by zero") + (list 'calcFunc-cot x)) + (math-make-sdev (math-div-float (cdr sc) (car sc)) + (math-div-float xs (math-sqr (car sc))))))) + (math-make-sdev (calcFunc-cot (nth 1 x)) + (math-div (nth 2 x) + (math-sqr (calcFunc-sin (nth 1 x))))))) + ((and (eq (car x) 'intv) (math-intv-constp x)) + (or (math-with-extra-prec 2 + (let* ((xx (math-to-radians (math-float x))) + (na (math-floor (math-div (nth 2 xx) (math-pi)))) + (nb (math-floor (math-div (nth 3 xx) (math-pi)))) + (and (equal na nb) + (math-sort-intv (nth 1 x) + (math-cot-raw (nth 2 xx)) + (math-cot-raw (nth 3 xx))))))) + '(intv 3 (neg (var inf var-inf)) (var inf var-inf)))) + ((equal x '(var nan var-nan)) + x) + (t (calc-record-why 'scalarp x) + (list 'calcFunc-cot x)))) + (defun math-sin-raw (x) ; [N N] (cond ((eq (car x) 'cplx) (let* ((expx (math-exp-raw (nth 2 x))) @@ -819,6 +1027,85 @@ (math-polar (math-cos-raw (math-complex x))) (math-sin-raw (math-sub (math-pi-over-2) x)))) +(defun math-sec-raw (x) ; [N N] + (cond ((eq (car x) 'cplx) + (let* ((x (math-mul x '(float 1 0))) + (expx (math-exp-raw (nth 2 x))) + (expmx (math-div-float '(float 1 0) expx)) + (sh (math-mul-float (math-sub-float expx expmx) '(float 5 -1))) + (ch (math-mul-float (math-add-float expx expmx) '(float 5 -1))) + (sc (math-sin-cos-raw (nth 1 x))) + (d (math-add-float + (math-mul-float (math-sqr (car sc)) + (math-sqr sh)) + (math-mul-float (math-sqr (cdr sc)) + (math-sqr ch))))) + (and (not (eq (nth 1 d) 0)) + (list 'cplx + (math-div-float (math-mul-float (cdr sc) ch) d) + (math-div-float (math-mul-float (car sc) sh) d))))) + ((eq (car x) 'polar) + (math-polar (math-sec-raw (math-complex x)))) + (t + (let ((cs (math-cos-raw x))) + (if (eq cs 0) + (math-div 1 0) + (math-div-float '(float 1 0) cs)))))) + +(defun math-csc-raw (x) ; [N N] + (cond ((eq (car x) 'cplx) + (let* ((x (math-mul x '(float 1 0))) + (expx (math-exp-raw (nth 2 x))) + (expmx (math-div-float '(float 1 0) expx)) + (sh (math-mul-float (math-sub-float expx expmx) '(float 5 -1))) + (ch (math-mul-float (math-add-float expx expmx) '(float 5 -1))) + (sc (math-sin-cos-raw (nth 1 x))) + (d (math-add-float + (math-mul-float (math-sqr (car sc)) + (math-sqr ch)) + (math-mul-float (math-sqr (cdr sc)) + (math-sqr sh))))) + (and (not (eq (nth 1 d) 0)) + (list 'cplx + (math-div-float (math-mul-float (car sc) ch) d) + (math-div-float (math-mul-float (cdr sc) sh) d))))) + ((eq (car x) 'polar) + (math-polar (math-csc-raw (math-complex x)))) + (t + (let ((sn (math-sin-raw x))) + (if (eq sn 0) + (math-div 1 0) + (math-div-float '(float 1 0) sn)))))) + +(defun math-cot-raw (x) ; [N N] + (cond ((eq (car x) 'cplx) + (let* ((x (math-mul x '(float 1 0))) + (expx (math-exp-raw (nth 2 x))) + (expmx (math-div-float '(float 1 0) expx)) + (sh (math-mul-float (math-sub-float expx expmx) '(float 5 -1))) + (ch (math-mul-float (math-add-float expx expmx) '(float 5 -1))) + (sc (math-sin-cos-raw (nth 1 x))) + (d (math-add-float + (math-sqr (car sc)) + (math-sqr sh)))) + (and (not (eq (nth 1 d) 0)) + (list 'cplx + (math-div-float + (math-mul-float (car sc) (cdr sc)) + d) + (math-neg + (math-div-float + (math-mul-float sh ch) + d)))))) + ((eq (car x) 'polar) + (math-polar (math-cot-raw (math-complex x)))) + (t + (let ((sc (math-sin-cos-raw x))) + (if (eq (nth 1 (car sc)) 0) + (math-div (cdr sc) 0) + (math-div-float (cdr sc) (car sc))))))) + + ;;; This could use a smarter method: Reduce x as in math-sin-raw, then ;;; compute either sin(x) or cos(x), whichever is smaller, and compute ;;; the other using the identity sin(x)^2 + cos(x)^2 = 1. @@ -1537,6 +1824,104 @@ (list 'calcFunc-tanh x)))) (put 'calcFunc-tanh 'math-expandable t) +(defun calcFunc-sech (x) ; [N N] [Public] + (cond ((eq x 0) 1) + (math-expand-formulas + (math-normalize + (list '/ 2 (list '+ (list 'calcFunc-exp x) + (list 'calcFunc-exp (list 'neg x)))))) + ((Math-numberp x) + (if calc-symbolic-mode (signal 'inexact-result nil)) + (math-with-extra-prec 2 + (let ((expx (math-exp-raw (math-float x)))) + (math-div '(float 2 0) (math-add expx (math-div 1 expx)))))) + ((eq (car-safe x) 'sdev) + (math-make-sdev (calcFunc-sech (nth 1 x)) + (math-mul (nth 2 x) + (math-mul (calcFunc-sech (nth 1 x)) + (calcFunc-tanh (nth 1 x)))))) + ((and (eq (car x) 'intv) (math-intv-constp x)) + (setq x (math-abs x)) + (math-sort-intv (nth 1 x) + (calcFunc-sech (nth 2 x)) + (calcFunc-sech (nth 3 x)))) + ((or (equal x '(var inf var-inf)) + (equal x '(neg (var inf var-inf)))) + 0) + ((equal x '(var nan var-nan)) + x) + (t (calc-record-why 'numberp x) + (list 'calcFunc-sech x)))) +(put 'calcFunc-sech 'math-expandable t) + +(defun calcFunc-csch (x) ; [N N] [Public] + (cond ((eq x 0) (math-div 1 0)) + (math-expand-formulas + (math-normalize + (list '/ 2 (list '- (list 'calcFunc-exp x) + (list 'calcFunc-exp (list 'neg x)))))) + ((Math-numberp x) + (if calc-symbolic-mode (signal 'inexact-result nil)) + (math-with-extra-prec 2 + (let ((expx (math-exp-raw (math-float x)))) + (math-div '(float 2 0) (math-add expx (math-div -1 expx)))))) + ((eq (car-safe x) 'sdev) + (math-make-sdev (calcFunc-csch (nth 1 x)) + (math-mul (nth 2 x) + (math-mul (calcFunc-csch (nth 1 x)) + (calcFunc-coth (nth 1 x)))))) + ((eq (car x) 'intv) + (if (and (Math-negp (nth 2 x)) + (Math-posp (nth 3 x))) + '(intv 3 (neg (var inf var-inf)) (var inf var-inf)) + (math-sort-intv (nth 1 x) + (calcFunc-csch (nth 2 x)) + (calcFunc-csch (nth 3 x))))) + ((or (equal x '(var inf var-inf)) + (equal x '(neg (var inf var-inf)))) + 0) + ((equal x '(var nan var-nan)) + x) + (t (calc-record-why 'numberp x) + (list 'calcFunc-csch x)))) +(put 'calcFunc-csch 'math-expandable t) + +(defun calcFunc-coth (x) ; [N N] [Public] + (cond ((eq x 0) (math-div 1 0)) + (math-expand-formulas + (math-normalize + (let ((expx (list 'calcFunc-exp x)) + (expmx (list 'calcFunc-exp (list 'neg x)))) + (math-normalize + (list '/ (list '+ expx expmx) (list '- expx expmx)))))) + ((Math-numberp x) + (if calc-symbolic-mode (signal 'inexact-result nil)) + (math-with-extra-prec 2 + (let* ((expx (calcFunc-exp (math-float x))) + (expmx (math-div 1 expx))) + (math-div (math-add expx expmx) + (math-sub expx expmx))))) + ((eq (car-safe x) 'sdev) + (math-make-sdev (calcFunc-coth (nth 1 x)) + (math-div (nth 2 x) + (math-sqr (calcFunc-sinh (nth 1 x)))))) + ((eq (car x) 'intv) + (if (and (Math-negp (nth 2 x)) + (Math-posp (nth 3 x))) + '(intv 3 (neg (var inf var-inf)) (var inf var-inf)) + (math-sort-intv (nth 1 x) + (calcFunc-coth (nth 2 x)) + (calcFunc-coth (nth 3 x))))) + ((equal x '(var inf var-inf)) + 1) + ((equal x '(neg (var inf var-inf))) + -1) + ((equal x '(var nan var-nan)) + x) + (t (calc-record-why 'numberp x) + (list 'calcFunc-coth x)))) +(put 'calcFunc-coth 'math-expandable t) + (defun calcFunc-arcsinh (x) ; [N N] [Public] (cond ((eq x 0) 0) (math-expand-formulas
--- a/lisp/calc/calc-rules.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/calc/calc-rules.el Sat Feb 19 00:06:48 2005 +0000 @@ -153,10 +153,14 @@ tan(select(n a)) := (tan((n-1) select(a)) + tan(a)) / (1 - tan((n-1) a) tan(a)) :: integer(n) :: n > 2, +cot(select(a + b)) := (cot(select(a)) cot(b) - 1) / + (cot(a) + cot(b)), sinh(select(a + b)) := sinh(select(a)) cosh(b) + cosh(a) sinh(b), cosh(select(a + b)) := cosh(select(a)) cosh(b) + sinh(a) sinh(b), tanh(select(a + b)) := (tanh(select(a)) + tanh(b)) / (1 + tanh(a) tanh(b)), +coth(select(a + b)) := (coth(select(a)) coth(b) + 1) / + (coth(a) + coth(b)), x && select(a || b) := (x && select(a)) || (x && b), select(a || b) && x := (select(a) && x) || (b && x), ! select(a && b) := (!a) || (!b), @@ -269,12 +273,18 @@ sin(select(x)) := -sin(select(-x)), cos(select(x)) := cos(select(-x)), tan(select(x)) := -tan(select(-x)), +sec(select(x)) := sec(select(-x)), +csc(select(x)) := -csc(select(-x)), +cot(select(x)) := -cot(select(-x)), arcsin(select(x)) := -arcsin(select(-x)), arccos(select(x)) := 4 arctan(1) - arccos(select(-x)), arctan(select(x)) := -arctan(select(-x)), sinh(select(x)) := -sinh(select(-x)), cosh(select(x)) := cosh(select(-x)), tanh(select(x)) := -tanh(select(-x)), +sech(select(x)) := sech(select(-x)), +csch(select(x)) := -csch(select(-x)), +coth(select(x)) := -coth(select(-x)), arcsinh(select(x)) := -arcsinh(select(-x)), arctanh(select(x)) := -arctanh(select(-x)), select(x) = a := select(-x) = -a,
--- a/lisp/calc/calc-undo.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/calc/calc-undo.el Sat Feb 19 00:06:48 2005 +0000 @@ -77,7 +77,8 @@ (let ((v (intern (nth 1 action)))) (calc-record-undo (list 'store (nth 1 action) (and (boundp v) (symbol-value v)))) - (if (y-or-n-p (format "Un-store variable %s? " (nth 1 action))) + (if (y-or-n-p (format "Un-store variable %s? " + (calc-var-name (nth 1 action)))) (progn (if (nth 2 action) (set v (nth 2 action))
--- a/lisp/calc/calc-units.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/calc/calc-units.el Sat Feb 19 00:06:48 2005 +0000 @@ -1241,6 +1241,45 @@ (eq (nth 1 (nth 2 rad)) 'rad) (list 'calcFunc-tan (nth 1 rad)))))) +(math-defsimplify calcFunc-sec + (and math-simplifying-units + (math-units-in-expr-p (nth 1 math-simplify-expr) nil) + (let ((rad (math-simplify-units + (math-evaluate-expr + (math-to-standard-units (nth 1 math-simplify-expr) nil)))) + (calc-angle-mode 'rad)) + (and (eq (car-safe rad) '*) + (math-realp (nth 1 rad)) + (eq (car-safe (nth 2 rad)) 'var) + (eq (nth 1 (nth 2 rad)) 'rad) + (list 'calcFunc-sec (nth 1 rad)))))) + +(math-defsimplify calcFunc-csc + (and math-simplifying-units + (math-units-in-expr-p (nth 1 math-simplify-expr) nil) + (let ((rad (math-simplify-units + (math-evaluate-expr + (math-to-standard-units (nth 1 math-simplify-expr) nil)))) + (calc-angle-mode 'rad)) + (and (eq (car-safe rad) '*) + (math-realp (nth 1 rad)) + (eq (car-safe (nth 2 rad)) 'var) + (eq (nth 1 (nth 2 rad)) 'rad) + (list 'calcFunc-csc (nth 1 rad)))))) + +(math-defsimplify calcFunc-cot + (and math-simplifying-units + (math-units-in-expr-p (nth 1 math-simplify-expr) nil) + (let ((rad (math-simplify-units + (math-evaluate-expr + (math-to-standard-units (nth 1 math-simplify-expr) nil)))) + (calc-angle-mode 'rad)) + (and (eq (car-safe rad) '*) + (math-realp (nth 1 rad)) + (eq (car-safe (nth 2 rad)) 'var) + (eq (nth 1 (nth 2 rad)) 'rad) + (list 'calcFunc-cot (nth 1 rad)))))) + (defun math-remove-units (expr) (if (math-check-unit-name expr)
--- a/lisp/calc/calcalg2.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/calc/calcalg2.el Sat Feb 19 00:06:48 2005 +0000 @@ -412,6 +412,30 @@ (math-normalize (list 'calcFunc-cos u)))))))) +(put 'calcFunc-sec\' 'math-derivative-1 + (function (lambda (u) (math-to-radians-2 + (math-mul + (math-normalize + (list 'calcFunc-sec u)) + (math-normalize + (list 'calcFunc-tan u))))))) + +(put 'calcFunc-csc\' 'math-derivative-1 + (function (lambda (u) (math-neg + (math-to-radians-2 + (math-mul + (math-normalize + (list 'calcFunc-csc u)) + (math-normalize + (list 'calcFunc-cot u)))))))) + +(put 'calcFunc-cot\' 'math-derivative-1 + (function (lambda (u) (math-neg + (math-to-radians-2 + (math-div 1 (math-sqr + (math-normalize + (list 'calcFunc-sin u))))))))) + (put 'calcFunc-arcsin\' 'math-derivative-1 (function (lambda (u) (math-from-radians-2 @@ -441,6 +465,24 @@ (math-normalize (list 'calcFunc-cosh u))))))) +(put 'calcFunc-sech\' 'math-derivative-1 + (function (lambda (u) (math-neg + (math-mul + (math-normalize (list 'calcFunc-sech u)) + (math-normalize (list 'calcFunc-tanh u))))))) + +(put 'calcFunc-csch\' 'math-derivative-1 + (function (lambda (u) (math-neg + (math-mul + (math-normalize (list 'calcFunc-csch u)) + (math-normalize (list 'calcFunc-coth u))))))) + +(put 'calcFunc-tanh\' 'math-derivative-1 + (function (lambda (u) (math-neg + (math-div 1 (math-sqr + (math-normalize + (list 'calcFunc-sinh u)))))))) + (put 'calcFunc-arcsinh\' 'math-derivative-1 (function (lambda (u) (math-div 1 (math-normalize @@ -1053,7 +1095,10 @@ (while (and p (memq (car (car p)) '(calcFunc-sin calcFunc-cos - calcFunc-tan)) + calcFunc-tan + calcFunc-sec + calcFunc-csc + calcFunc-cot)) (equal (nth 1 (car p)) math-integ-var)) (setq p (cdr p))) (null p)) @@ -1068,6 +1113,9 @@ (memq (car (car p)) '(calcFunc-sinh calcFunc-cosh calcFunc-tanh + calcFunc-sech + calcFunc-csch + calcFunc-coth calcFunc-exp)) (equal (nth 1 (car p)) math-integ-var)) (setq p (cdr p))) @@ -1619,6 +1667,27 @@ (math-neg (math-from-radians-2 (list 'calcFunc-ln (list 'calcFunc-cos u)))))) +(math-defintegral calcFunc-sec + (and (equal u math-integ-var) + (math-from-radians-2 + (list 'calcFunc-ln + (math-add + (list 'calcFunc-sec u) + (list 'calcFunc-tan u)))))) + +(math-defintegral calcFunc-csc + (and (equal u math-integ-var) + (math-from-radians-2 + (list 'calcFunc-ln + (math-sub + (list 'calcFunc-csc u) + (list 'calcFunc-cot u)))))) + +(math-defintegral calcFunc-cot + (and (equal u math-integ-var) + (math-from-radians-2 + (list 'calcFunc-ln (list 'calcFunc-sin u))))) + (math-defintegral calcFunc-arcsin (and (equal u math-integ-var) (math-add (math-mul u (list 'calcFunc-arcsin u)) @@ -1650,6 +1719,18 @@ (and (equal u math-integ-var) (list 'calcFunc-ln (list 'calcFunc-cosh u)))) +(math-defintegral calcFunc-sech + (and (equal u math-integ-var) + (list 'calcFunc-arctan (list 'calcFunc-sinh u)))) + +(math-defintegral calcFunc-csch + (and (equal u math-integ-var) + (list 'calcFunc-ln (list 'calcFunc-tanh (math-div u 2))))) + +(math-defintegral calcFunc-coth + (and (equal u math-integ-var) + (list 'calcFunc-ln (list 'calcFunc-sinh u)))) + (math-defintegral calcFunc-arcsinh (and (equal u math-integ-var) (math-sub (math-mul u (list 'calcFunc-arcsinh u))
--- a/lisp/calc/calccomp.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/calc/calccomp.el Sat Feb 19 00:06:48 2005 +0000 @@ -35,7 +35,9 @@ '( calcFunc-log calcFunc-ln calcFunc-exp calcFunc-sin calcFunc-cos calcFunc-tan + calcFunc-sec calcFunc-csc calcFunc-cot calcFunc-sinh calcFunc-cosh calcFunc-tanh + calcFunc-sech calcFunc-csch calcFunc-coth calcFunc-arcsin calcFunc-arccos calcFunc-arctan calcFunc-arcsinh calcFunc-arccosh calcFunc-arctanh))
--- a/lisp/cus-edit.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/cus-edit.el Sat Feb 19 00:06:48 2005 +0000 @@ -1397,7 +1397,7 @@ :tag "Save for Future Sessions" :help-echo "\ Make your editing in this buffer take effect for future Emacs sessions. -This updates your Emacs initialization file or creates a new one one." +This updates your Emacs initialization file or creates a new one." :action (lambda (widget &optional event) (Custom-save))) (if custom-reset-button-menu @@ -1671,15 +1671,15 @@ the value displayed for this %c is invalid and cannot be set.") (modified "*" custom-modified-face "\ you have edited the value as text, but you have not set the %c." "\ -you have edited something in this group, but not set it.") +you have edited something in this group, but not set anything yet.") (set "+" custom-set-face "\ you have set this %c, but not saved it for future sessions." "\ -something in this group has been set, but not saved.") +you have set something in this group, but not saved anything yet.") (changed ":" custom-changed-face "\ this %c has been changed outside the customize buffer." "\ something in this group has been changed outside customize.") (saved "!" custom-saved-face "\ -this %c has been set and saved." "\ +You have set this %c and saved it through Customize in your init file." "\ something in this group has been set and saved.") (rogue "@" custom-rogue-face "\ this %c has not been changed with customize." "\
--- a/lisp/cus-start.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/cus-start.el Sat Feb 19 00:06:48 2005 +0000 @@ -1,6 +1,6 @@ ;;; cus-start.el --- define customization properties of builtins ;; -;; Copyright (C) 1997, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1999, 2000, 2001, 2002, 2005 Free Software Foundation, Inc. ;; ;; Author: Per Abrahamsen <abraham@dina.kvl.dk> ;; Keywords: internal @@ -39,6 +39,8 @@ (pre-abbrev-expand-hook abbrev-mode hook) ;; alloc.c (gc-cons-threshold alloc integer) + (garbage-collection-messages alloc boolean) + ;; undo.c (undo-limit undo integer) (undo-strong-limit undo integer) (undo-outer-limit undo @@ -52,7 +54,6 @@ since it could result in memory overflow and make Emacs crash." nil)) "22.1") - (garbage-collection-messages alloc boolean) ;; buffer.c (mode-line-format modeline sexp) ;Hard to do right. (default-major-mode internal function) @@ -288,7 +289,7 @@ (mouse-autoselect-window display boolean "21.3") (x-use-underline-position-properties display boolean "21.3") (x-stretch-cursor display boolean "21.1"))) - this symbol group type native-p version + this symbol group type standard version native-p ;; This function turns a value ;; into an expression which produces that value. (quoter (lambda (sexp) @@ -297,8 +298,6 @@ (and (listp sexp) (memq (car sexp) '(lambda))) (stringp sexp) -;; (and (fboundp 'characterp) -;; (characterp sexp)) (numberp sexp)) sexp (list 'quote sexp))))) @@ -309,6 +308,12 @@ group (nth 1 this) type (nth 2 this) version (nth 3 this) + ;; If we did not specify any standard value expression above, + ;; use the current value as the standard value. + standard (if (nthcdr 4 this) + (nth 4 this) + (when (default-boundp symbol) + (funcall quoter (default-value symbol)))) ;; Don't complain about missing variables which are ;; irrelevant to this platform. native-p (save-match-data @@ -326,8 +331,7 @@ (message "Note, built-in variable `%S' not bound" symbol)) ;; Save the standard value, unless we already did. (or (get symbol 'standard-value) - (put symbol 'standard-value - (list (funcall quoter (default-value symbol))))) + (put symbol 'standard-value (list standard))) ;; If this is NOT while dumping Emacs, ;; set up the rest of the customization info. (unless purify-flag
--- a/lisp/dired.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/dired.el Sat Feb 19 00:06:48 2005 +0000 @@ -2128,6 +2128,7 @@ (save-excursion (let* ((count 0) (buffer-read-only nil) + (buffer-undo-list t) (switches (or switches dired-actual-switches)) new-dir-name (R-ftp-base-dir-regex
--- a/lisp/emacs-lisp/lisp-mode.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/emacs-lisp/lisp-mode.el Sat Feb 19 00:06:48 2005 +0000 @@ -182,7 +182,7 @@ (make-local-variable 'parse-sexp-ignore-comments) (setq parse-sexp-ignore-comments t) (make-local-variable 'outline-regexp) - (setq outline-regexp ";;;;* [^ \t\n]\\|(") + (setq outline-regexp ";;;\\(;* [^ \t\n]\\|###autoload\\)\\|(") (make-local-variable 'outline-level) (setq outline-level 'lisp-outline-level) (make-local-variable 'comment-start) @@ -212,11 +212,10 @@ (defun lisp-outline-level () "Lisp mode `outline-level' function." - (if (looking-at "(\\|;;;###autoload") - 1000 - (looking-at outline-regexp) - (- (match-end 0) (match-beginning 0)))) - + (let ((len (- (match-end 0) (match-beginning 0)))) + (if (looking-at "(\\|;;;###autoload") + 1000 + len))) (defvar lisp-mode-shared-map (let ((map (make-sparse-keymap)))
--- a/lisp/gnus/ChangeLog Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/gnus/ChangeLog Sat Feb 19 00:06:48 2005 +0000 @@ -1,3 +1,20 @@ +2005-02-13 Reiner Steib <Reiner.Steib@gmx.de> + + * gnus.el (gnus-group-startup-message): Search for gnus images in + etc/images/gnus. + * mm-util.el (mm-find-charset-region): Likewise. + * smiley.el (smiley-data-directory): Search for smilies in + etc/images/smilies. + +2005-02-09 Kim F. Storm <storm@cua.dk> + + Change Emacs release version from 21.4 to 22.1 throughout. + Change Emacs development version from 21.3.50 to 22.0.50. + +2005-02-08 Simon Josefsson <jas@extundo.com> + + * imap.el (imap-log): Doc fix. + 2005-02-03 Katsumi Yamaoka <yamaoka@jpl.org> * gnus-art.el (gnus-mime-inline-part): Show the raw contents if a
--- a/lisp/gnus/bar.xbm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#define noname_width 6 -#define noname_height 48 -static char noname_bits[] = { - 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, - 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, - 0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c, - 0x0c,0x0c,0x0c};
--- a/lisp/gnus/bar.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* XPM */ -static char * picon-bar_xpm[] = { -"6 48 2 1", -" c white s background", -". c black", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. ", -" .. "};
--- a/lisp/gnus/blink.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * blink_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".+++++++++++.", -".+++++++..++.", -".+++++++..++.", -".++...++++++.", -".+++++++++++.", -".++++++++.++.", -".++.+++++.++.", -".+++.....+++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/braindamaged.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * mad_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".++...++++++.", -".++.+.+...++.", -".++...+.+.++.", -".++++++...++.", -".+.+++++++.+.", -".+.+++++++.+.", -".++.+++++.++.", -".+++.....+++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/catchup.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* XPM */ -static char * catchup_xpm[] = { -"24 24 6 1", -" c None", -". c #FFFFFFFFFFFF", -"X c #E1E1E0E0E0E0", -"o c #A5A5A5A59595", -"O c #999999999999", -"+ c #000000000000", -" ", -" ", -" ", -" ", -" ", -" ", -" ", -" . ", -" . .X ", -" ... .oX . ", -" ..oooX.oXo .X ", -" .oooXXXX..oXXoXX ", -" .oXXXX.XoX.oXooX ", -" X...X.X.XX.XoXX ", -" Xo..X.XXX.XXXX ", -" . Xo.oXX..XXXXXX ", -"OOOOXoXXXXXo.XXXXX++OOOO", -"OOOOOX..X.XXXXXXXX++OOOO", -"OOOOOX..XXXXXXXXX++OOOOO", -"OOOOOOXXXXXXXXX+++OOOOOO", -"OOOOOOOOOXXXX++++OOOOOOO", -"OOOOOOOOO+++++OOOOOOOOOO", -"OOOOOOOOOO+OOOOOOOOOOOOO", -"OOOOOOOOOOOOOOOOOOOOOOOO"};
--- a/lisp/gnus/cry.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * cry_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".+++++++++++.", -".++..+++..++.", -".++++++++.++.", -".+++++++.+.+.", -".+++++++.+.+.", -".++++++++..+.", -".+++.....+++.", -".++.+++++.++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/cu-exit.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* XPM */ -static char * cu_exit_xpm[] = { -"24 24 4 1", -" c None", -". c #000000000000", -"X c #FFFFFFFFFFFF", -"o c #999999999999", -" ", -" ", -" ", -" ", -" ", -" ..... ", -" .. .XXX. ", -" ..X..XXXX... ", -" .XXXX.XXXX.X... ", -" ..XXXX.XXX.XXX.. ", -" .XXX.......... ", -" .XXX.XXX.XXX.. ", -" .XX.XXX.XXX. ", -" .XX.XXX.XX.. ", -" ............ ", -" .X.X.X.X.. ", -"ooooooo..........ooooooo", -"ooooooo.X.X.X.X.oooooooo", -"ooooooo.........oooooooo", -"ooooooo..X...X..oooooooo", -"ooooooo...X.X...oooooooo", -"ooooooo........ooooooooo", -"ooooooooo.....oooooooooo", -"oooooooooooooooooooooooo"};
--- a/lisp/gnus/dead.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * dead_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".+++++++++++.", -".++.+.+.+.++.", -".+++.+++.+++.", -".++.+.+.+.++.", -".+++++++++++.", -".+++++++++++.", -".+.+++++++.+.", -".++.......++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/describe-group.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char * describe_group_xpm[] = { -"24 24 5 1", -". c None", -" c #000000000000", -"o c #FFFFF5F5ACAC", -"+ c #E1E1E0E0E0E0", -"@ c #C7C7C6C6C6C6", -"........................", -"........................", -".................oooo...", -" .. .. .. .. .. oo oo o.", -"..............oooooooooo", -".............ooooooooooo", -" .. .. .. .. oo oo oo oo", -"............oooooooooooo", -"............oooooooooooo", -" .. .. .. .. oo oo oo oo", -"............oooooooooooo", -"............oooooooooooo", -" .. .. .. .. oo oo oo oo", -"............oooooooooooo", -"..... ...oooooooooooo", -" .. ++ .. .o oo oo oo", -"... @@@+ ....ooooooooo", -"... @ ....oooooooo.", -" . . .. .. .. ..", -". ..............", -" ................", -" .. .. .. .. .. ..", -" ..................", -" ...................."};
--- a/lisp/gnus/evil.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * diabolic_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".++.+++++.++.", -".++..+++..++.", -".++...+...++.", -".+++++++++++.", -".+.+++++++.+.", -".++.+++++.++.", -".+++.+++.+++.", -".++++...++++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/exit-gnus.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* XPM */ -static char * exit_gnus_xpm[] = { -"24 24 6 1", -" c None", -". c #8686ADAD7D7D", -"X c #919187876969", -"o c #C2C2B9B99C9C", -"O c #A8A8F0F0ECEC", -"+ c #EFEFEFEFEFEF", -" ", -" .... . ", -" .. .. . ", -" ............. ", -" . . . .... ", -" ............. ", -" .............. .. ", -" . . .......... . ", -" .XXXX... .. ", -" o.XXX. . .. ", -" oo.X. .. ... ", -" ooX. . ... ", -" oXo. .. ", -" ooX . . ", -" ooX ", -"OOOOoXXOOOOOOOOOOOOOOOOO", -"OOOoXoXOOOOOOOOOOOOOOOOO", -"OOOooXXOOOO+OOOOOOOOOOOO", -"O+OoooXOO+OOO+OO+OOO+OOO", -"OXXoXoXoXOO++O++OO++OO+O", -"XXXXXXXXXXXX+OOOOOOOOOOO", -"XXXXXXXXXXXXXX+O++OO++OO", -"XXXXXXXXXXXXXXXXOOOOOOOO", -"O++O++++O+OO++OOOO++OOO+"};
--- a/lisp/gnus/exit-summ.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* XPM */ -static char * exit_summ_xpm[] = { -"24 24 3 1", -". c None", -" c #000000000000", -"X c #E1E1E0E0E0E0", -" .. .. .. .. .. .. .. ..", -"........................", -"........................", -" .. .. .. ..", -"...... XXXX .....", -"...... XXXXXXX .....", -" .. .. XX XX XX .. ..", -"...... XXXXXXXX .....", -"...... XXXXXXX .....", -" .. .. X XX .. ..", -"...... XXXX .....", -"...... XXXX .....", -" .. .. X XXXXX .. ..", -"...... XXXXXXX .....", -"...... XXXXX XX .....", -" .. .. X XXXXX .. ..", -"...... XXXXX .....", -"...... X .....", -" .. . . .. ..", -"........................", -"........................", -" .. .. .. .. .. .. .. ..", -"........................", -"........................"};
--- a/lisp/gnus/followup.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* XPM */ -static char * followup_xpm[] = { -"24 24 4 1", -" c None", -". c #A5A5A5A59595", -"X c #C7C7C6C6C6C6", -"o c #E1E1E0E0E0E0", -" ", -" . ", -" ..X. ", -" ..XXX. ", -" ..XXXXXo. ", -" ...XXXXXXooo. . ", -" .o.XXXXXooooo..X. ", -" .oo.XXXoooo..XXX. ", -" .oo..Xooo..XXXXXo. ", -" .oo.XX...XXXXXXooo. ", -" .o.Xoo.o.XXXXXoooo. ", -" .XXoo.oo.XXXoooooo. ", -" .Xooo.oo..XXooooooo. ", -" .ooo.oo.XXooooooooo. ", -" .ooo.o.XoooooooooooX.", -" .ooo.XXoooooooooooo.", -" .ooo.Xoooooooooooo. ", -" .ooo.ooooooooooo. ", -" .oo..oooooooooo. ", -" .. .ooooooo.. ", -" .oooooo. ", -" .ooo.. ", -" .oo. ", -" .. "};
--- a/lisp/gnus/forced.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * forced_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".+++++++++++.", -".++..+++..++.", -".++..+++..++.", -".+++++++++++.", -".+++++++++++.", -".+.+++++++.+.", -".+.+++++++.+.", -".+.........+.", -".+++++++++++.", -" ...+++++... ", -" ....... "};
--- a/lisp/gnus/frown.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * frown_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".++..+++..++.", -".++++.+.++++.", -".+...+++...+.", -".+...+++...+.", -".+++++++++++.", -".+++.....+++.", -".++.+++++.++.", -".++.+++++.++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/fuwo.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* XPM */ -static char * fuwo_xpm[] = { -"24 24 4 1", -" c None", -". c #A5A5A5A59595", -"X c #C7C7C6C6C6C6", -"o c #E1E1E0E0E0E0", -" ", -" . ", -" .. . ", -" .. . ", -" .. . ", -" ... . . ", -" . . ..X. ", -" . . ..XXX. ", -" . .. ..XXXXXo. ", -" . . ...XXXXXXooo. ", -" . .X .o.XXXXXoooo. ", -" .XX .oo.XXXoooooo. ", -" .X .oo..XXooooooo. ", -" . .oo.XXooooooooo. ", -" . .o.XoooooooooooX.", -" . .XXoooooooooooo.", -" . .Xoooooooooooo. ", -" . .ooooooooooo. ", -" . ..oooooooooo. ", -" .. .ooooooo.. ", -" .oooooo. ", -" .ooo.. ", -" .oo. ", -" .. "};
--- a/lisp/gnus/get-news.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* XPM */ -static char * get_news_xpm[] = { -"24 24 4 1", -". c None", -"X c #A5A5A5A59595", -"o c #E1E1E0E0E0E0", -"O c #C7C7C6C6C6C6", -"........................", -"........................", -"........................", -".....XXX................", -"...XXoooXXXXX...........", -"XXXoooooXXoooX.XXX......", -"XoXooXXXooooXXXoooX.....", -"XooXoXoXooXXXoooooX.....", -"XooXXXooXoXoXooooooX....", -"XooXOXooXXXooXooooooX...", -"XoXOOXooXOXooXXooooooX..", -"OXOOOXoXOOXooXoooooooX..", -"OXOooOXOOOXoXOooooooooX.", -".OXooOXOooOXOOooooooooX.", -".OXoooOXooOXOooooooooooX", -"..OXooOXoooOXooooooooooX", -"..OXooOOXooOXooooooooooX", -"...OXooOXoooOXoooooooXXX", -"...OXooXOXooOXooooooXOO.", -"....OXXOOXooXOXoooXXO...", -".....OO..OXXOOXooXOO....", -"..........OO..OXXO......", -"...............OO.......", -"........................"};
--- a/lisp/gnus/gnntg.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* XPM */ -static char * gnntg_xpm[] = { -"24 24 4 1", -" c None", -". c #000000000000", -"X c #FFFFFFFFFFFF", -"o c #C7C7C6C6C6C6", -" ", -" ....... ", -" .XXXXX. ", -" .XXXXX. ... ", -" .XXXXX... .ooo. ", -" .XXXXX.... ..ooo.. ", -" .XXXXX..o.. ..ooo.. ", -" .XXXXX...o.. ..o.. ", -" .XXXXX. ..o........ ", -" .XXXXX. ..oooooooo. ", -" ....... .oooooooo.. ", -" .ooooo..o. ", -" .oooo..o. ", -" .oooo..o. ", -" .oooo..o. ", -" .oooo..o. ", -" ......... ", -" ......oo. ", -" .ooooo... ", -" .oo..o... ", -" .oo..o.. ", -" ........ ", -" .... ... ", -" ... ... "};
--- a/lisp/gnus/gnus-pointer.xbm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -#define noname_width 18 -#define noname_height 13 -static char noname_bits[] = { - 0x00,0x00,0x00,0xc0,0x0c,0x00,0xe0,0x1f,0x00,0x92,0x39,0x00,0x0e,0x71,0x02, - 0x46,0xe0,0x03,0x20,0xc0,0x01,0x00,0x08,0x00,0x10,0x0d,0x00,0xc4,0x08,0x00, - 0x78,0x08,0x00,0x18,0x89,0x00,0x00,0x08,0x00};
--- a/lisp/gnus/gnus-pointer.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -/* XPM */ -static char *gnus-pointer[] = { -/* width height num_colors chars_per_pixel */ -" 18 13 2 1", -/* colors */ -". c #0000ff", -"# c None s None", -/* pixels */ -"##################", -"######..##..######", -"#####........#####", -"#.##.##..##...####", -"#...####.###...##.", -"#..###.######.....", -"#####.########...#", -"###########.######", -"####.###.#..######", -"######..###.######", -"###....####.######", -"###..######.######", -"###########.######" -}; \ No newline at end of file
--- a/lisp/gnus/gnus.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/gnus/gnus.el Sat Feb 19 00:06:48 2005 +0000 @@ -326,7 +326,8 @@ (defvar gnus-mode-line-image-cache t) (if (fboundp 'find-image) (defun gnus-mode-line-buffer-identification (line) - (let ((str (car-safe line))) + (let ((str (car-safe line)) + (load-path (mm-image-load-path))) (if (and (stringp str) (string-match "^Gnus:" str)) (progn (add-text-properties @@ -875,7 +876,7 @@ ((and (fboundp 'find-image) (display-graphic-p) - (let* ((data-directory (nnheader-find-etc-directory "gnus")) + (let* ((data-directory (nnheader-find-etc-directory "images/gnus")) (image (find-image `((:type xpm :file "gnus.xpm" :color-symbols
--- a/lisp/gnus/gnus.xbm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,622 +0,0 @@ -#define noname_width 271 -#define noname_height 273 -static char noname_bits[] = { - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x49,0xe0,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x97,0xaa,0x8a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x57,0x2a,0x41,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0x52,0x16,0xfe,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0x49,0x05, - 0xf9,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0x95,0xaa,0x58,0xf4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0xa5,0x54,0x26,0xe1,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x54,0x49,0x49,0xe4,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x2a,0xa5, - 0x2a,0xd1,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xaf,0x52,0x95,0x54,0xc4,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab, - 0x24,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x57,0x29,0xa9,0x92,0x11,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x57,0xd5,0xfa,0xff,0xff,0xab,0xea,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x4a,0x55,0x2a,0x41,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x25,0x29,0xe5,0xff,0xff,0x95,0xa4,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0xa4, - 0x24,0xa5,0x14,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4a,0xa5,0xd4,0xff, - 0x3f,0x52,0xa9,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x29,0x55,0x55,0x55,0x41,0x7e,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xa9,0x54,0xea,0xff,0xdf,0x2a,0x55,0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x4a,0x49,0x12,0x7e,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x55,0xa5,0x92,0xff,0x23,0xa5,0x4a,0xd6,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5,0xa4,0x94,0xaa,0x42, - 0x7d,0xff,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0x2a,0xa9,0xff,0xad,0x92,0x24, - 0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a, - 0x95,0x52,0x52,0x29,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x52,0x49,0x55, - 0xfe,0x91,0x54,0x55,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0x49,0x29,0x55,0x25,0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff, - 0x4f,0x95,0xaa,0x92,0x7e,0x55,0x55,0xa9,0x4a,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2a,0x50,0x95,0xaa,0x24,0x7e,0xff,0xff, - 0xff,0xff,0xff,0xff,0x57,0x2a,0x95,0x54,0x79,0x95,0x92,0x92,0x94,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb9,0x62,0x29,0x49, - 0x85,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x49,0x49,0x95,0xba,0xa4,0x54, - 0xaa,0x52,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf, - 0x1a,0xf8,0xa7,0xaa,0x22,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0x55,0x52, - 0x2a,0x75,0x55,0xa5,0x24,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xbf,0x5a,0xfd,0x57,0x92,0x94,0x7e,0xff,0xff,0xff,0xff,0xff, - 0xff,0x4a,0x4a,0x55,0x49,0x89,0x92,0x94,0xaa,0x94,0xf4,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xfc,0x2f,0x55,0x05,0x7c,0xff, - 0xff,0xff,0xff,0xff,0xff,0x55,0xa9,0x4a,0x55,0x2a,0x55,0x55,0x55,0x55,0xe5, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x4e,0xfd,0x5f, - 0x29,0xa5,0x7c,0xff,0xff,0xff,0xff,0xff,0xff,0xa4,0x54,0x52,0x4a,0x55,0xa9, - 0xa4,0x24,0xa5,0x94,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x2f,0x1d,0xfe,0x3f,0x95,0x04,0x7c,0xff,0xfd,0xff,0xff,0xff,0x3f,0x49,0xa5, - 0x54,0xa9,0xa4,0x92,0x4a,0x49,0x4a,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xaf,0x44,0xfe,0x5f,0xa9,0x52,0x7d,0xff,0xe5,0xff,0xff, - 0xff,0x5f,0x55,0x92,0x2a,0x95,0x52,0x4a,0x52,0xaa,0x52,0x4a,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x16,0xff,0xbf,0x4a,0x05,0x7c, - 0xff,0xd9,0xff,0xff,0xff,0x5f,0x95,0x42,0xa5,0x52,0x95,0xaa,0xaa,0xaa,0x94, - 0x54,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x43,0xfe, - 0xbf,0x54,0x52,0x7d,0x7f,0x25,0xff,0xff,0xff,0xa7,0xa4,0x28,0x92,0x54,0x4a, - 0xa5,0x4a,0x92,0xaa,0x4a,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xab,0x12,0xfe,0x7f,0xa5,0x02,0x7c,0x7f,0x55,0xfd,0xff,0xff,0x95,0x2a, - 0x82,0x54,0xa5,0x54,0x2a,0xa9,0x2a,0xa5,0x52,0xf5,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x27,0x4b,0xff,0xff,0x4a,0x29,0x7d,0xff,0x92,0xfe, - 0xff,0xff,0x55,0x92,0x20,0xa8,0x94,0x2a,0xa5,0x94,0x52,0x29,0xa9,0xf4,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97,0x01,0xff,0x7f,0x52,0x42, - 0x7c,0xff,0x25,0xf9,0xff,0x7f,0xaa,0x02,0x8a,0x40,0x29,0x49,0x09,0x41,0x4a, - 0x55,0x25,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57, - 0xff,0xff,0x95,0x12,0x7d,0xff,0xa9,0xfa,0xff,0x7f,0x25,0xa9,0x20,0x2a,0xa5, - 0xaa,0x42,0x92,0x54,0x92,0x54,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xaf,0x83,0xff,0xff,0xa9,0x42,0x7e,0xff,0xaa,0xf4,0xff,0xaf,0x54, - 0x01,0x82,0x80,0xaa,0x54,0x14,0x08,0xa2,0xaa,0x4a,0xd2,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xef,0xcf,0xd7,0xff,0xff,0x52,0x12,0x7f,0xff,0x4a, - 0xea,0xff,0x57,0x92,0xaa,0x28,0x24,0x29,0x25,0x81,0x82,0x08,0x49,0x52,0x55, - 0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xdf,0xef,0xe7,0xff,0xff,0x2a, - 0x05,0x7e,0xff,0x55,0xd5,0xff,0xa5,0x2a,0x00,0x8e,0x10,0x4a,0x89,0x24,0x28, - 0xa0,0xaa,0x2a,0x49,0xff,0xff,0xff,0xff,0xbf,0xff,0xff,0xff,0xff,0xe7,0xff, - 0xef,0xff,0xff,0xa5,0x50,0x7e,0xff,0x25,0xe5,0xff,0x2a,0xa5,0x52,0x7f,0x85, - 0x54,0x35,0x08,0x82,0x0a,0x55,0x95,0xaa,0xfc,0xff,0xff,0xff,0xcf,0xff,0xff, - 0xff,0xff,0xd7,0xff,0xff,0xff,0x7f,0x52,0x85,0x7e,0xff,0xab,0x94,0x1e,0x55, - 0x2a,0xc8,0xff,0x10,0x90,0x92,0xa0,0x08,0x20,0x24,0x52,0x25,0xfd,0xff,0xff, - 0xff,0xef,0xff,0xff,0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0x94,0x10,0x7e,0xff, - 0x93,0xaa,0x6a,0x49,0x49,0xf2,0xff,0x85,0x52,0x09,0x0a,0xa2,0x4a,0x92,0x29, - 0xa9,0xf2,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0x7f, - 0x55,0x25,0x7f,0xff,0x55,0x49,0x49,0x95,0x0a,0xf9,0xff,0x17,0x48,0x26,0x50, - 0x08,0x00,0xa9,0x4a,0x95,0xfa,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xf2, - 0xff,0xff,0xff,0xff,0x92,0x80,0x7e,0xff,0xa7,0x54,0xaa,0xa4,0x52,0xfc,0xff, - 0xaf,0x42,0x89,0xfa,0xbf,0x54,0x20,0xa9,0xa4,0xd4,0xff,0xff,0xff,0xcb,0xff, - 0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff,0x54,0x29,0x7f,0xff,0x4b,0xa5,0x92, - 0x2a,0x01,0xff,0xff,0x1f,0xa8,0x22,0xff,0xff,0x01,0xa5,0x2a,0x55,0xa9,0xff, - 0xff,0xff,0xd4,0xff,0xff,0xff,0x7f,0xfa,0xff,0xff,0xff,0x7f,0xa5,0x04,0x7f, - 0xff,0x57,0x2a,0x55,0xa9,0x54,0xfe,0xff,0x3f,0x05,0x89,0xff,0xff,0x5f,0x48, - 0x92,0x2a,0x95,0xff,0xff,0xff,0xea,0xff,0xff,0xff,0xff,0xd2,0xff,0xff,0xff, - 0x7f,0x2a,0x91,0x7f,0xff,0xa9,0x54,0x4a,0x52,0x02,0xff,0xff,0xff,0x50,0xd1, - 0xff,0xff,0x1f,0x81,0xaa,0xa4,0x52,0xfe,0xff,0x3f,0xe9,0xff,0xff,0xff,0x7f, - 0x1d,0xff,0xff,0xff,0xff,0x54,0x41,0x7f,0xff,0x93,0x92,0x52,0x95,0xc8,0xff, - 0xff,0xff,0x8b,0xc4,0xff,0xff,0x7f,0x24,0xa5,0x2a,0x49,0xf9,0xff,0x7f,0xd5, - 0xff,0xff,0xff,0xbf,0x4a,0xff,0xff,0xff,0xff,0x4a,0x14,0x7f,0xff,0x28,0xa5, - 0x94,0x2a,0xa0,0xff,0xff,0x7f,0x22,0xf0,0xff,0xff,0x7f,0x12,0x94,0xa4,0xaa, - 0xea,0xff,0xaf,0xea,0xff,0xff,0xff,0x5f,0x8e,0xff,0xff,0xff,0x7f,0xa9,0x40, - 0x7f,0xff,0x48,0x55,0x55,0x12,0xca,0xff,0xff,0xff,0x0a,0xf5,0xff,0xff,0xff, - 0x80,0x52,0x95,0x54,0xaa,0xfe,0x55,0xc4,0xff,0xff,0xff,0x5f,0xa5,0xff,0xff, - 0xff,0xff,0x94,0x14,0x7f,0xff,0x52,0x2a,0xa9,0x4a,0xe1,0xff,0xff,0xbf,0x24, - 0xf0,0xff,0xff,0xff,0x0b,0x28,0xa9,0x92,0x24,0x55,0x49,0xe5,0xd7,0xff,0xff, - 0xa7,0x8a,0xff,0xff,0xff,0x7f,0xa5,0xc0,0x7f,0xff,0x50,0x49,0x95,0x04,0xf8, - 0xff,0xff,0x5f,0x1f,0xfd,0xff,0xff,0xff,0x47,0x45,0x55,0xaa,0xaa,0x4a,0xaa, - 0xea,0xaf,0xff,0xff,0x2b,0xc3,0xff,0xff,0xff,0x7f,0x55,0x94,0x7f,0x7f,0x4a, - 0x55,0x52,0x51,0xfe,0xff,0xff,0x5f,0x4e,0xf8,0xff,0xff,0xff,0x1f,0x50,0x92, - 0x52,0x49,0xa9,0x92,0xe4,0xd3,0xff,0xff,0x4b,0xd5,0xff,0xff,0xff,0xff,0x94, - 0xc0,0x7f,0x3f,0xa0,0xa4,0xaa,0x04,0xfe,0xff,0xff,0xa7,0x1d,0xfd,0xff,0xff, - 0xff,0x9f,0x84,0xaa,0x4a,0xaa,0x24,0x55,0xf2,0x2b,0xff,0x7f,0xa9,0xc1,0xff, - 0xff,0xff,0x7f,0x4a,0x95,0x7f,0xbf,0x2a,0x95,0x24,0x50,0xff,0xff,0xff,0x97, - 0x5e,0xfe,0xff,0xff,0xff,0x3f,0x92,0x24,0x95,0x92,0xaa,0xa4,0xf2,0xcb,0xff, - 0x5f,0xd5,0xe5,0xff,0xff,0xff,0xff,0x52,0x80,0x7f,0x3f,0xa0,0x52,0x15,0x85, - 0xff,0xff,0xff,0xd7,0x38,0xfe,0xff,0xff,0xff,0xff,0x20,0xaa,0x52,0x55,0x55, - 0x55,0xf9,0x29,0xfd,0xab,0xa4,0xf0,0xff,0xff,0xff,0x7f,0x29,0xa9,0x7f,0xff, - 0x42,0x25,0x49,0xe8,0xff,0xff,0xff,0x69,0x7a,0xff,0xff,0xff,0xff,0xff,0x82, - 0x52,0xaa,0x24,0x89,0x4a,0xf8,0x55,0x2a,0x49,0x95,0xf5,0xff,0xff,0xff,0xbf, - 0x2a,0xc4,0x7f,0x7f,0x90,0x54,0x15,0xe2,0xff,0xff,0xff,0x25,0xbc,0xff,0xff, - 0xff,0xff,0xff,0x29,0x48,0x49,0xaa,0xaa,0xa4,0xfa,0x95,0x92,0x54,0x52,0xf0, - 0xff,0xff,0xff,0xbf,0x4a,0xd1,0x7f,0xff,0x05,0xaa,0x40,0xf8,0xff,0xff,0x7f, - 0xaa,0xfc,0xff,0xff,0xff,0xff,0xff,0x43,0xa9,0xaa,0x4a,0x52,0xa9,0xf8,0xa4, - 0xaa,0x52,0x95,0xfc,0xff,0xff,0xff,0x7f,0x52,0xc0,0x7f,0xff,0xa1,0x00,0x24, - 0xfa,0xff,0xff,0xff,0x0a,0xfe,0xff,0xff,0xff,0xff,0xff,0x17,0x92,0x24,0xa5, - 0x2a,0x55,0xfe,0xaa,0xa4,0x2a,0x29,0xf9,0xff,0xff,0xff,0xbf,0x2a,0xea,0x7f, - 0xff,0x05,0x92,0x90,0xfc,0xff,0xff,0xbf,0xa4,0xff,0xff,0xff,0xff,0xff,0xff, - 0x4f,0xa0,0xaa,0x54,0x49,0x25,0x7c,0x49,0x95,0xa4,0x12,0xfc,0xff,0xff,0xff, - 0x7f,0x8a,0xe0,0x7f,0xff,0xa3,0x04,0x05,0xfe,0xff,0xff,0xbf,0x06,0xff,0xff, - 0xff,0xff,0xff,0xff,0x1f,0x49,0x95,0x52,0xaa,0x12,0x7f,0x55,0x52,0x55,0x0a, - 0xfd,0xff,0xff,0xff,0x3f,0x29,0xe8,0x7f,0xff,0x0f,0x50,0x50,0xff,0xff,0xff, - 0x5f,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x04,0xa9,0x4a,0x25,0x45,0x3e, - 0xa9,0x2a,0xa9,0xa2,0xfc,0xff,0xff,0xff,0x7f,0x55,0xe1,0x7f,0xff,0x27,0x05, - 0xc4,0xff,0xff,0xff,0x9f,0x91,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x41,0x4a, - 0x29,0xa9,0x12,0x5e,0x95,0x94,0x4a,0x0a,0xfe,0xff,0xff,0xff,0xbf,0x12,0xf4, - 0x7f,0xff,0x8f,0x50,0xf1,0xff,0xff,0xff,0xa7,0xc2,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x14,0x92,0xaa,0x4a,0xa2,0xbf,0xa4,0x52,0x95,0x22,0xff,0xff,0xff, - 0xff,0x3f,0x45,0xf2,0x7f,0xff,0x3f,0x04,0xf4,0xff,0xff,0xff,0xd7,0xe8,0xff, - 0xff,0xff,0xff,0x5f,0xff,0xff,0x83,0xa8,0x94,0x54,0x09,0x2f,0x55,0x4a,0x52, - 0x49,0xff,0xff,0xff,0xff,0x5f,0x99,0xf0,0x7f,0xff,0x7f,0x51,0xfc,0xff,0xff, - 0xff,0x6b,0xf1,0xff,0xff,0xff,0xff,0x5f,0xfd,0xff,0x2b,0x2a,0xa9,0x12,0x20, - 0x5f,0xa9,0xaa,0x54,0x00,0xff,0xff,0xff,0xff,0x5f,0x15,0xf2,0x7f,0xff,0xff, - 0x8f,0xff,0xff,0xff,0xff,0x2b,0xfc,0xff,0xff,0xff,0xff,0x2f,0xfd,0xff,0x87, - 0xa0,0x4a,0xaa,0x8a,0x9f,0x4a,0x52,0x15,0xa9,0xff,0xff,0xff,0xff,0x5f,0x8a, - 0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xf8,0xff,0xff,0xff,0xff, - 0x57,0xf2,0xff,0x2f,0x82,0x52,0x05,0xd0,0x2f,0x95,0x4a,0x49,0x84,0xff,0xff, - 0xff,0xff,0xbf,0x24,0xf8,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x12,0xfd, - 0xff,0xff,0xff,0xff,0x4b,0xd5,0xff,0x9f,0x28,0x54,0x48,0xc5,0xbf,0x52,0x55, - 0x0a,0xe1,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfa,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x1a,0xfe,0xff,0xff,0xff,0xff,0x57,0xa9,0xff,0x3f,0x82,0x00,0x21, - 0xf0,0x5f,0x2a,0x49,0x21,0xc4,0xff,0xff,0xff,0xff,0xaf,0x1a,0xfd,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0x3f,0x85,0xff,0xff,0xff,0xff,0xff,0x29,0xa5,0xff, - 0xff,0x24,0x52,0x88,0xfc,0xbf,0x92,0x2a,0x09,0xf1,0xff,0xff,0xff,0xff,0x9f, - 0x4c,0xfc,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x15,0xff,0xff,0xff,0x7f, - 0xff,0xa5,0x4a,0xff,0xff,0x90,0x08,0x01,0xfe,0x3f,0x55,0x52,0x24,0xf4,0xff, - 0xff,0xff,0xff,0xaf,0x02,0xfd,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xc6, - 0xff,0xff,0xff,0xbf,0xfe,0x95,0x54,0xff,0xff,0x05,0x42,0xa8,0xfe,0xbf,0xa4, - 0x2a,0x41,0xf9,0xff,0xff,0xff,0xff,0x5f,0x55,0xfc,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0x4f,0xd0,0xff,0xff,0xff,0xbf,0x7c,0xaa,0x92,0xfc,0xff,0x53,0x08, - 0x01,0xff,0x1f,0x4a,0x01,0x04,0xfc,0xff,0xff,0xff,0xff,0x27,0x05,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xc5,0xff,0xff,0xff,0x4f,0xbf,0x52,0xaa, - 0xfe,0xff,0x07,0x42,0xea,0xff,0xbf,0x50,0x54,0x51,0xff,0xff,0xff,0xff,0xff, - 0x97,0x56,0xfe,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xf0,0xff,0xff,0xff, - 0x2f,0x7f,0xa5,0x54,0xfd,0xff,0x3f,0x09,0xe0,0xff,0x1f,0x02,0x01,0x04,0xff, - 0xff,0xff,0xff,0xff,0xaf,0x02,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x4b, - 0xf5,0xff,0xff,0xff,0xab,0x9f,0x94,0x92,0xfc,0xff,0xff,0x40,0xfd,0xff,0x9f, - 0x48,0x48,0xa1,0xff,0xff,0xff,0xff,0xff,0xa7,0x56,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0x6b,0xf8,0xff,0xff,0xff,0xa4,0x5f,0xa9,0x2a,0xfd,0xff,0xff, - 0xff,0xff,0xff,0x3f,0x22,0x21,0xc4,0xff,0xff,0xff,0xff,0xff,0x2f,0x03,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0xfa,0xff,0xff,0x7f,0xd5,0x2f,0xa5, - 0xa4,0xfa,0xff,0xff,0xff,0xff,0xff,0xbf,0x08,0x08,0xf9,0xff,0xff,0xff,0xff, - 0xff,0x97,0x4a,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x94,0xfc,0xff,0xff, - 0x7f,0x69,0xac,0x2a,0x55,0xf9,0xff,0xff,0xff,0xff,0xff,0x7f,0xa2,0x22,0xf8, - 0xff,0xff,0xff,0xff,0xff,0x53,0x21,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0x15,0xfe,0xff,0xff,0x9f,0x2a,0x95,0x94,0x92,0xf4,0xff,0xff,0xff,0xff,0xff, - 0xff,0x08,0x88,0xfe,0xff,0xff,0xff,0xff,0xff,0x57,0x8b,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xa9,0xfe,0xff,0xff,0x5f,0x52,0xbc,0x52,0x55,0xf5,0xff, - 0xff,0xff,0xff,0xff,0xff,0x21,0x21,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xa1, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x7f,0x0d,0xff,0xff,0xff,0x57,0x15,0x3f, - 0x55,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xc8,0xff,0xff,0xff,0xff, - 0xff,0xff,0xd7,0x89,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xbf,0xd6,0xff,0xff, - 0xff,0x4b,0x45,0x3f,0x49,0xaa,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf9, - 0xff,0xff,0xff,0xff,0xff,0xff,0xc9,0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0x3f,0x81,0xff,0xff,0xff,0x29,0x11,0x5f,0x28,0x55,0xf5,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xc8,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0x5f,0xd6,0xff,0xff,0x7f,0xaa,0xc2,0x0f,0x55,0x49,0xea, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa5, - 0xe2,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x9f,0xe1,0xff,0xff,0xbf,0x4a,0xd1, - 0x5f,0x48,0xa5,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xe9,0xe0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x27,0xf4,0xff, - 0xff,0xbf,0x94,0xc4,0x07,0x91,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xea,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xaf,0xf1,0xff,0xff,0x9f,0x52,0xe0,0x4b,0x44,0x52,0xe9,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x6a,0xe0,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xab,0x2a,0xf5,0x0f,0x51,0xa5, - 0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x69,0xe5,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x55,0xf8,0xff,0xff,0x95,0x14, - 0xf0,0x5f,0x84,0x54,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x75,0xf0,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x13,0xfd, - 0xff,0xff,0xa5,0x42,0xf9,0x7f,0x91,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xb2,0xfa,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0x54,0xfe,0xff,0x7f,0x52,0x12,0xfa,0xff,0x20,0xa5,0xe4,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x34,0xf8,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0x25,0xff,0xff,0xaf,0xaa,0x48,0xfc,0xff,0x0b, - 0x29,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0xb5,0xf8,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0x52,0xff,0xff,0x2f,0x49, - 0x02,0xfe,0xff,0x43,0xaa,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x3f,0x3a,0xfa,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x4a, - 0xff,0xff,0xa5,0x2a,0xa9,0xff,0xff,0x17,0x25,0xe9,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x9a,0xfc,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0x2a,0xff,0x7f,0x95,0x54,0x80,0xff,0xff,0x07,0xa9,0xea,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x1d,0xfc, - 0xff,0x7f,0xff,0xff,0xff,0xff,0x3f,0xa9,0xfe,0x7f,0xa9,0x12,0xe5,0xff,0xff, - 0x5f,0x4a,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x5f,0xad,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x7f,0x95,0xea,0x97,0x54, - 0x4a,0xf0,0xff,0xff,0x1f,0xa8,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x5f,0x0e,0xfe,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f, - 0x52,0x55,0xa9,0x92,0x02,0xfd,0xff,0xff,0x5f,0x53,0xf5,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x5e,0xfe,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xbf,0x2a,0x49,0x4a,0x55,0x49,0xfc,0xff,0xff,0x3f,0x94,0xf8, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x0f, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f,0xa5,0xaa,0x92,0xa4,0x20,0xff,0xff, - 0xff,0xbf,0xa4,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x5f,0x57,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x52,0x52,0xaa, - 0x2a,0x0a,0xff,0xff,0xff,0x7f,0x54,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x8f,0x07,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xa7,0x94,0x4a,0x55,0x4a,0xa0,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x57,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0x2f,0x55,0xa9,0x92,0x12,0xe9,0xff,0xff,0xff,0x7f,0x24, - 0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf, - 0x87,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0xa5,0x4a,0xaa,0x44,0xf4,0xff, - 0xff,0xff,0xff,0x55,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xa7,0xab,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xab,0x94,0xa4, - 0x92,0x12,0xf9,0xff,0xff,0xff,0xff,0xa8,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xab,0x83,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0x47,0xa9,0x2a,0x55,0x40,0xfc,0xff,0xff,0xff,0xff,0x25,0xf5,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff,0xff,0xd7,0x97,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0x33,0x55,0xa9,0x24,0x15,0xfe,0xff,0xff,0xff,0xff, - 0x95,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff, - 0x93,0xc3,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x25,0xa5,0x2a,0x40,0xff, - 0xff,0xff,0xff,0xff,0xa9,0xf4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xff, - 0xff,0xff,0xff,0xff,0xe7,0xd5,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4b,0x92, - 0x54,0x92,0xd4,0xff,0xff,0xff,0xff,0xff,0x55,0xf5,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xe9,0xff,0xff,0xff,0xff,0xff,0xd5,0xc1,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0x97,0xaa,0x4a,0x05,0xe2,0xff,0xff,0xff,0xff,0xff,0x25,0xf1,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0xfd,0xff,0xff,0xff,0xff,0xd5,0xea,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0x57,0x55,0x25,0xa1,0xf0,0xff,0xff,0xff,0xff, - 0xff,0x95,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe8,0xfa,0xff,0xff,0xff, - 0xff,0xea,0xe0,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xa7,0x24,0x59,0x04,0xfa, - 0xff,0xff,0xff,0xff,0xff,0xa9,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe2, - 0xfd,0xff,0xff,0xff,0xff,0xc9,0xe9,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x4f, - 0x52,0x05,0xa1,0xfc,0xff,0xff,0xff,0xff,0xff,0xa5,0xfa,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x70,0xf9,0xff,0xff,0xff,0xff,0x74,0xe2,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0x47,0x95,0x92,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0xf8, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xe2,0xfa,0xff,0xff,0xff,0xff,0x72,0xe8, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x97,0xaa,0x20,0xd0,0xff,0xff,0xff,0xff, - 0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xb8,0xfc,0xff,0xff, - 0xff,0xff,0xea,0xe2,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x07,0x04,0x82,0xc2, - 0xff,0xff,0xff,0xff,0xff,0xff,0x29,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x71,0xfd,0xff,0xff,0xff,0x7f,0x2a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0x4f,0x91,0x28,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0xfc,0xff,0xff,0xff, - 0xff,0xff,0xff,0x1f,0x54,0xfe,0xff,0xff,0xff,0x7f,0x75,0xf2,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0x27,0x44,0x82,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x29, - 0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xb8,0xfc,0xff,0xff,0xff,0xbf,0x14, - 0xf1,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x0f,0x11,0x20,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x55,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x9a,0xfe,0xff, - 0xff,0xff,0x7f,0x5a,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0x5f,0x40,0x85, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x4f,0x2d,0xfd,0xff,0xff,0xff,0x9f,0x12,0xf9,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0x3f,0x14,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfe,0xff,0xff, - 0xff,0xff,0xff,0xff,0x07,0xa6,0xfe,0xff,0xff,0xff,0x5f,0x4d,0xfa,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0x40,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x09,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x4b,0xfe,0xff,0xff,0xff,0xbf, - 0x2c,0xf8,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xf5,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x43,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x57,0xff, - 0xff,0xff,0xff,0x5f,0x0a,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xd5,0xa9,0xff,0xff,0xff,0xff,0xaf,0x5a,0xfc,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa3,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x81,0x95,0xff,0xff,0xff,0xff,0x9f,0x06,0xfd,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xca,0xa5,0xff,0xff,0xff,0xff, - 0x2f,0x95,0xfc,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0xea, - 0xff,0xff,0xff,0xff,0xaf,0x26,0xfe,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd5,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0xf5,0xf4,0xff,0xff,0xff,0xff,0xaf,0x86,0xfe,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0x70,0xe5,0xff,0xff,0xff,0xff,0x4f,0x2e,0xfe, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xeb,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xb2,0xfa,0xff,0xff,0xff, - 0xff,0x57,0x83,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xf3,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x78, - 0xf2,0xff,0xff,0xff,0xff,0xa7,0x22,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x5f,0x5d,0xfd,0xff,0xff,0xff,0xff,0x97,0x87,0xff,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x3c,0xfd,0xff,0xff,0xff,0xff,0x53,0xa3, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xac,0xfe,0xff,0xff, - 0xff,0xff,0x57,0x95,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, - 0x9e,0xfe,0xff,0xff,0xff,0xff,0x97,0x81,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xa7,0x57,0xfe,0xff,0xff,0xff,0xff,0xa9,0xa5,0xff,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xaf,0xff,0xff,0xff,0xff,0xff,0x4b, - 0x89,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0x93,0xff,0xff, - 0xff,0xff,0xff,0x95,0xa2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x83,0xab,0xff,0xff,0xff,0xff,0xff,0xd3,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xff, - 0xff,0xff,0xff,0xff,0xe9,0xa5,0xff,0xff,0xff,0xff,0xff,0xa5,0xe1,0xff,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0xd5,0xff,0xff,0xff,0xff,0xff, - 0xd5,0xc8,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xea,0xea,0xff, - 0xff,0xff,0xff,0xff,0x14,0xc1,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff, - 0xff,0xe0,0xe4,0xff,0xff,0xff,0xff,0xff,0x65,0xe8,0xff,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf, - 0xff,0xff,0xff,0xff,0x3f,0x72,0xe9,0xff,0xff,0xff,0xff,0xff,0x6a,0xe1,0xff, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xef,0xff,0xff,0xff,0xff,0xbf,0xb8,0xfa,0xff,0xff,0xff,0xff, - 0xff,0x52,0xea,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd3,0xff,0xff,0xff,0xff,0x1f,0x7a,0xf5, - 0xff,0xff,0xff,0xff,0x7f,0x2a,0xe0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xeb,0xff,0xff,0xff, - 0xff,0x8f,0x58,0xfa,0xff,0xff,0xff,0xff,0x7f,0x25,0xf5,0xff,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xb5,0xff,0xff,0xdf,0xff,0x57,0x5e,0xfd,0xff,0xff,0xff,0xff,0xff,0x34,0xe0, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xca,0xff,0xff,0x8f,0xff,0x07,0xac,0xfc,0xff,0xff,0xff, - 0xff,0x7f,0x2a,0xf5,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd4,0xff,0xff,0x57,0xff,0x2b,0x2d, - 0xfd,0xff,0xff,0xff,0xff,0xff,0xb2,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd2,0xff,0xff, - 0x07,0xff,0x43,0x4a,0xff,0xff,0xff,0xff,0xff,0xbf,0x2a,0xf8,0xff,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x3f,0xc5,0xff,0xff,0x2b,0xfe,0x08,0xab,0xfe,0xff,0xff,0xff,0xff,0x7f,0xaa, - 0xf2,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xbf,0xea,0xff,0xff,0x83,0x36,0x20,0x55,0xff,0xff,0xff, - 0xff,0xff,0x3f,0x15,0xf0,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xc2,0xff,0xff,0x48,0x4a,0x85, - 0x49,0xff,0xff,0xff,0xff,0xff,0x7f,0x59,0xfa,0xff,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0xf5,0xff, - 0x7f,0x10,0x29,0x50,0xa5,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xf9,0xff,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x97,0xe4,0xff,0x7f,0x05,0x95,0x42,0xd5,0xff,0xff,0xff,0xff,0xff,0x7f, - 0x35,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xab,0xea,0xff,0xbf,0xa0,0x24,0xa8,0xd4,0xff,0xff, - 0xff,0xff,0xff,0x7f,0x19,0xf9,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x27,0xe5,0xff,0x3f,0x92,0xaa, - 0x50,0xe9,0xff,0xff,0xff,0xff,0xff,0x9f,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa9,0xe2, - 0xff,0x9f,0xa0,0xaa,0x2a,0xf5,0xff,0xff,0xff,0xff,0xff,0x5f,0x1a,0xf9,0xff, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x95,0xf8,0xff,0x5f,0x4a,0x92,0x4a,0xf5,0xff,0xff,0xff,0xff,0xff, - 0xbf,0x4a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xf2,0xff,0x1f,0x20,0x49,0xa5,0xfa,0xff, - 0xff,0xff,0xff,0xff,0x5f,0x1a,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaa,0xf8,0xff,0x47,0xa9, - 0x2a,0x29,0xf9,0xff,0xff,0xff,0xff,0xff,0xbf,0x0a,0xfc,0xff,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49, - 0xf2,0xff,0x17,0x92,0xaa,0xaa,0xfe,0xff,0xff,0xff,0xff,0xff,0x9f,0xac,0xfe, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x9f,0x2a,0xf8,0xff,0x43,0xa8,0x24,0x25,0xff,0xff,0xff,0xff,0xff, - 0xff,0xaf,0x0a,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xfa,0xff,0x91,0x54,0xaa,0x52,0xff, - 0xff,0xff,0xff,0xff,0xff,0x2f,0x4d,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0x45,0xfc,0xff,0x03, - 0x92,0x52,0xaa,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x06,0xfc,0xff,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf, - 0x12,0xfe,0xff,0x50,0xaa,0x2a,0x95,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0xa5, - 0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xa7,0x44,0xff,0xff,0x0a,0x25,0xa5,0xa4,0xff,0xff,0xff,0xff, - 0xff,0xff,0x97,0x06,0xfc,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2b,0x15,0xff,0xff,0x40,0xa9,0x92,0xea, - 0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x55,0xfd,0xff,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xa1,0xff,0x7f, - 0x92,0x4a,0xaa,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x06,0xfc,0xff,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x95,0x8a,0xff,0x3f,0x84,0x54,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff,0x2f, - 0x25,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x52,0xe0,0xff,0xbf,0x50,0xa9,0x4a,0xf2,0xff,0xff,0xff, - 0xff,0xff,0xff,0xa7,0x8e,0xfe,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa9,0xea,0xff,0x3f,0x24,0x95,0x54, - 0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x23,0xfe,0xff,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x4a,0xf0,0xff, - 0x9f,0x50,0x69,0x49,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x8b,0xff,0xff, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0xa5,0xf4,0xff,0x0f,0x2d,0x75,0xaa,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, - 0xaf,0x03,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x9f,0x14,0xfa,0xff,0x2f,0xa8,0xfa,0x25,0xfd,0xff,0xff, - 0xff,0xff,0xff,0xff,0x97,0xd7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xaa,0xfc,0xff,0x0f,0x4d,0xfd, - 0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xcf,0x83,0xff,0xff,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x12,0xfc, - 0xff,0x27,0x92,0xfe,0xcb,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xd7,0xd7,0xff, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x97,0x0a,0xff,0xff,0x83,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xef,0xc7,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xab,0x24,0xff,0xff,0x2b,0xaa,0xfe,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xe7,0xef,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0x05,0x95, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xff,0xff,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x82, - 0xff,0xff,0x51,0xa9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xf7, - 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xa9,0xe8,0xff,0xff,0x85,0xca,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0x52,0xc1,0xff,0xff,0x90,0xd5,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x4d,0xe8,0xff,0xff,0xa5, - 0xe4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x51, - 0xf2,0xff,0x7f,0x40,0xd5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x3f,0x95,0xf8,0xff,0x7f,0xa9,0xea,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x15,0xfa,0xff,0x3f,0xa4,0xf4,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xa4,0xfc,0xff,0x7f, - 0x71,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f, - 0x15,0xfe,0xff,0x3f,0x94,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xa7,0x0a,0xff,0xff,0x1f,0x79,0xf2,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xab,0xa4,0xff,0xff,0x5f,0x8c,0xfa,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x82,0xff,0xff, - 0x1f,0x5c,0xfd,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xa4,0x92,0xff,0xff,0xbf,0x56,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x9a,0xc4,0xff,0xff,0x0f,0x2e,0xfd,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa2,0xf0,0xff,0xff,0xaf,0xa7,0xfe, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x55,0xe4,0xff, - 0xff,0x0f,0x57,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xbf,0x54,0xf2,0xff,0xff,0x9f,0x4b,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x9f,0x92,0xf8,0xff,0xff,0xc7,0xab,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x15,0xfe,0xff,0xff,0x97,0xd7, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xa7,0x94,0xfc, - 0xff,0xff,0xc7,0xe3,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x2f,0x05,0xfe,0xff,0xff,0xcf,0xf5,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x53,0xa9,0xff,0xff,0xff,0xd3,0xeb,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x05,0xff,0xff,0xff,0xe3, - 0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0xc2, - 0xff,0xff,0xff,0xeb,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x95,0xc8,0xff,0xff,0xff,0xf3,0xfa,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xd2,0xff,0xff,0xff,0xff,0xf5,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xaa,0xe0,0xff,0xff,0xff, - 0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x49, - 0xf8,0xff,0xff,0xff,0xff,0xfa,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x9f,0x2a,0xf5,0xff,0xff,0xff,0xff,0xfd,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x4a,0xf8,0xff,0xff,0xff,0xff,0xfc,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x14,0xfd,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x97, - 0x4a,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xab,0x04,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x52,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x53,0x85,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x54,0xa2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x4a,0xc9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xa5,0xe0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x94,0xe4,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x5f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xbf,0x12,0xf9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4f,0x54,0xfa,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0x0a,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x53,0x45,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x97,0x14,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x4b,0x45,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x54,0x82, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x4a,0xe9,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x52,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x55,0xe8,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24, - 0xf1,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0x55,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0x24,0xf9,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x15,0xfe,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f, - 0x49,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x2f,0x95,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x5f,0x01,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,0xd5,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x57,0x81,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x97,0xd4,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xaf,0xe0,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x93,0xf4,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x57,0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x2b,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x89,0xfc,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x55,0xfc, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x05,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x49,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x22,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x89, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0xe5,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc1,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xbf,0xe9,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xf2,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff, - 0xff,0xff,0xff,0x9f,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xf9,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff, - 0x6f,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff, - 0xff,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff, - 0xff,0xff,0xff,0xff,0xff,0xdf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f};
--- a/lisp/gnus/gnus.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,284 +0,0 @@ -/* XPM */ -static char *gnus[] = { -/* width height num_colors chars_per_pixel */ -" 271 273 3 1", -/* colors */ -". s thing c #bf9900", -"# s shadow c #ffcc00", -"a s None c None", -/* pixels */ -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........######aaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............#######aaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................######aaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................######aaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................#######aaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................#######aaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........................#######aaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........................######aaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........................######aaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................#######aaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............................#######aaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................aaaaaaaaaaaaaaaaaaaaaa...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............................#######aaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................aaaaaaaaaaaaaaaaaaa...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............................#######aaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................aaaaaaaaaaaaaaaa....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................########aaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......................aaaaaaaaaaaaaa........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................................#######aaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........................aaaaaaaaaaa............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................................########aaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........................aaaaaaaaa..............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................................#######aaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................aaaaaaa................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................#######aaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............................aaaaa..................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......######.......................#######aaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................aaaa...................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#######aa....................#######aaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................................aa.....................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaa.................#######aaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................a......................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaa................#######aaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaa...............#######aaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaa...............#######aaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaa..............#######aaaaa", -"aaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaa..............#######aaaaa", -"aaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaa.............#######aaaaa", -"aaaaaaaa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............####....................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaa............########aaaaa", -"aaaaaaa.........aaaaaaaaaaaaaaaaaaaaaaaaaaa.............########...................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaa...........########aaaaa", -"aaaaaaa...........aaaaaaaaaaaaaaaaaaaaaaa.............############..................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaa...........########aaaaa", -"aaaaaaaa..........aaaaaaaaaaaaaaaaaaaaaa.............##############..................................................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaa...........########aaaaa", -"aaaaaaaa...........aaaaaaaaaaaaaaaaaaaa............##################.......................##########................................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaa..........########aaaaa", -"aaaaaaaa............aaaaaaaaaaaaaaaaaa............####################....................###############..............................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaa..........#######aaaaaa", -"aaaaaaaa............aaaaaaaaaaaaaaaa..............#####################.................#####################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaa..aaaaa###aaaaaaaaaaaaaaaaaa..........#######aaaaaa", -"aaaaaaaa.............aaaaaaaaaaaaaa..............#######################...............#######################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaa..aaaaa##aaaaaaaaaaaaaaaaaaa..........#######aaaaaa", -"aaaaaaaaa.............aaaaaaaaaaa...............##########aa#############.............#########################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaa..........#######aaaaaa", -"aaaaaaaaa.............aaaaaaaaa................#########aaaaaaa###########............##########################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", -"aaaaaaaaa................aaaa..................#######aaaaaaaaaa###########..........############################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", -"aaaaaaaaa.....................................######aaaaaaaaaaaaa###########.........#############################..........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", -"aaaaaaaaa....................................######aaaaaaaaaaaaaaaa#########........###############################.........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........########aaaaaa", -"aaaaaaaaaa.................................#######aaaaaaaaaaaaaaaaaa#########.......#######aaaaaaaaaaa##############..........................aaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", -"aaaaaaaaaa................................#######aaaaaaaaaaaaaaaaaaaa########......#####aaaaaaaaaaaaaaaaa############..........................aaaaaaaaaaaaaaaaaaaaaaaaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", -"aaaaaaaaaa...............................########aaaaaaaaaaaaaaaaaaaaa########....#####aaaaaaaaaaaaaaaaaaaaa##########..........................aaaaaaaaaaaaaaaaaaaaaaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", -"aaaaaaaaa#..............................########aaaaaaaaaaaaaaaaaaaaaaaa#.####...#####aaaaaaaaaaaaaaaaaaaaaaa##########...........................aaaaaaaaaaaaaaaaaaaa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#######aaaaaaa", -"aaaaaaaaa#.............................########aaaaaaaaaaaaaaaaaaaaaaaaa...###..######aaaaaaaaaaaaaaaaaaaaaaaa##########...........................aaaaaaaaaaaaaaaaaaa......a#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........########aaaaaaa", -"aaaaaaaa###...........................#########aaaaaaaaaaaaaaaaaaaaaaaa....##########aaaaaaaaaaaaaaaaaaaaaaaaaa##########............................aaaaaaaaaaaaaaa........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........########aaaaaaa", -"aaaaaaaa###..........................#########aaaaaaaaaaaaaaaaaaaaaaaaa....#########aaaaaaaaaaaaaaaaaaaaaaaaaaaa##########...............................aaaaaaaa...........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........########aaaaaaa", -"aaaaaaaa###.........................#########aaaaaaaaaaaaaaaaaaaaaaaaa....a#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaa##########................................................##aaaaaa...aaaaaaaaaaaaaaaaaaaaa......a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", -"aaaaaaa####........................#########aaaaaaaaaaaaaaaaaaaaaaaaa....aaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...............................................##aaaaaa....aaaaaaaaaaaaaaaaaaa.......a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", -"aaaaaaa####.......................########aaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########..............................................##aaaaa.....aaaaaaaaaaaaaaaaaa.......a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", -"aaaaaa######....................#########aaaaaaaaaaaaaaaaaaaaaaaaaa.....a#aaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########............................................##aaaaaa......aaaaaaaaaaaaaaa.........a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", -"aaaaaa######...................#########aaaaaaaaaaaaaaaaaaaaaaaaaa......##aaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...........................................##aaaaa.......aaaaaaaaaaaaa..........aa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaa", -"aaaaaa#######.................#########aaaaaaaaaaaaaaaaaaaaaaaaaaa.....a###aaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.........................................###aaaaa.........aaaaaaa..............a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........########aaaaaaaa", -"aaaaaaa#######...............#########aaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########........................................##aaaaa...............................a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaaa", -"aaaaaaa########............##########aaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.......................................##aaaaa...............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaaa", -"aaaaaaaa##########.......###########aaaaaaaaaaaaaaaaaaaaaaaaaaa......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.....................................###aaaaa..............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#######aaaaaaaaa", -"aaaaaaaaa##########################aaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########....................................##aaaaa...............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........########aaaaaaaaa", -"aaaaaaaaa#########################aaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########..................................###aaaaa..............................#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaa", -"aaaaaaaaaa#######################aaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...............................####aaaaa..............................######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaa", -"aaaaaaaaaaa#####################aaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.............................#####aaaaa.............................#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaa", -"aaaaaaaaaaa###################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########...........................######aaaa..............................######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......########aaaaaaaaaa", -"aaaaaaaaaaaa#################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########.........................######aaaaa.............................#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaaa", -"aaaaaaaaaaaaa###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaa#########.......................#######aaaa.............................#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#######aaaaaaaaaaa", -"aaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aaaaaaaaaaaaaaaa#########....................#########aaaa............................########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaaaaaaaaaaaaa#########..................#########aaaaa..........................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........aaaaaaaaaaaaaaa###########.............###########aaaaa.........................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............aaaaaaaaaaaaaaa##############....###############aaaaaaa.......................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............aaaaaaaaaaaaaaa##############################aaaaaaaaa.....................############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............aaaaaaaaaaaaaaa############################aaaaaaaaaaa...................############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaa................aaaaaaaaaaaaaaaa##########################aaaaaaaaaaaa#................#############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaa.................aaaaaaaaaaaaaaaa########################aaaaaaaaaaaaa##..............#############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaa...................aaaaaaaaaaaaaaaa######################aaaaaaaaaaaaa#####.........###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaa....................aaaaaaaaaaaaaaaaa###################aaaaaaaaaaaaaaa########..##################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaaaaa....................aaaaaaaaaaaaaaaaaaa################aaaaaaaaaaaaaaaa###########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaa......................aaaaaaaaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaa##########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaa.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa.......aaaaaa.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa........a###a.........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaaaaa........a####a.........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#####aaaaaaaaaaaaaaaaaaaaaaaaaaa........a#####aaa.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....a####aaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaa#.....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaa##....................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaa..........######aaaaa#####..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a####aaaaaaaaaaaaaaaaaaaaaaaaa...........#####aaaaa#######..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaaaa...........#####aaaaaa#######..................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaaaa...........######aaaaa#########.................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaaa...........######aaaaa###########................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaaa............#######aaaaaaa##########...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......####aaaaaaaaaaaaaaaaaaaaaa............#######aaaaaaaaa#########...............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....####aaaaaaaaaaaaaaaaaaaaaa............#######aaaaaaaaaaaa########..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......###aaaaaaaaaaaaaaaaaaaaa............#########aaaaaaaaaaaaa#######..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......###aaaaaaaaaaaaaaaaaaa.............#########aaaaaaaaaaaaaaa#######.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaaaaaa.............#########aaaaaaaaaaaaaaaaa######.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaaaa..............#########aaaaaaaaaaaaaaaaaaa#####.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaa...............#########aaaaaaaaaaaaaaaaaaaa#####.............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........aaaaaaaaaaaaa...............#########aaaaaaaaaaaaaaaaaaaaaa#####............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...............aaaaa..................########aaaaaaaaaaaaaaaaaaaaaaaaa####............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................................########aaaaaaaaaaaaaaaaaaaaaaaaaa####...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....................................########aaaaaaaaaaaaaaaaaaaaaaaaaaaa###...........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa####aaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaa####..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa####aaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa................................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..............................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.............................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa####aaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa............................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...........................#########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........................##########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......................###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#........##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#...................############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#........#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##................#############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.......##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###............##############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#......###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####.........###############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#......###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######..###################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######a.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa########################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#.....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#....####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######a......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##################aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#....###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##############aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#...####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###########aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##..####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa######aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....a#aaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaa#######aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#aaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaa#######aa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#aaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaaa########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#aaaaaaaaaaaaaaaaaaaaa#####aaaaaaaaa########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#aaaaaaaaaaaaaaaaaaaa#######aaaaaaa#########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......##aaaaaaaaaaaaaaaaaaa########a..aa##########a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........##aaaaaaaaaaaaaaaaaa#########....##########a........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#aaaaaaaaaaaaaaaaaa#########......#########........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#aaaaaaaaaaaaaaaaaa#########......########a........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........##aaaaaaaaaaaaaaaaa#########.......#######.........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........##aaaaaaaaaaaaaaaaa########.........#####.........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........###aaaaaaaaaaaaaaaa########........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........###aaaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........###aaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........####aaaaaaaaaaaaaaa#########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaa#########......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaa#########......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa#########......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......a######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa#######........................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa########.......................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......a#######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaa#######.........a..............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaa#######a........aaa............aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....aa######aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaa#######........aaaaa..........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaa#######a.......aaaaaaa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....aaa#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaa######a........aaaaaaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaa#######........aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaa#######.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaa#######a......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaa#######.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaa#######.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaa#######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaa######aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaa######a.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaa#####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaa####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaa#####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaa####aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaa####aa.......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaa###aaa......aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaa####aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaa####aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaa###aaa.....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaa###aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaa####aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaa###aaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaa###aaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaa....aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa........#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa......#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa....#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...#####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa..a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.a####aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.aa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa###aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa##aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -}; -
--- a/lisp/gnus/grin.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -/* XPM */ -static char * grin_xpm[] = { -"13 14 4 1", -" c None", -". c #000000", -"+ c #FFDD00", -"@ c #FFFFFF", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".+++++++++++.", -".++..+++..++.", -".++..+++..++.", -".+++++++++++.", -".+.........+.", -".+.@@@@@@@.+.", -".++.@@@@@.++.", -".+++.....+++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/imap.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/gnus/imap.el Sat Feb 19 00:06:48 2005 +0000 @@ -241,7 +241,11 @@ :type 'boolean) (defcustom imap-log nil - "If non-nil, a imap session trace is placed in *imap-log* buffer." + "If non-nil, a imap session trace is placed in *imap-log* buffer. +Note that username, passwords and other privacy sensitive +information (such as e-mail) may be stored in the *imap-log* +buffer. It is not written to disk, however. Do not enable this +variable unless you are comfortable with that." :group 'imap :type 'boolean)
--- a/lisp/gnus/important.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char *magick[] = { -/* columns rows colors chars-per-pixel */ -"24 24 2 1", -"! c red", -"w c Gray75", -/* pixels */ -"wwwwwwwwwwwwwwwwwwwwwwww", -"wwwwwwwwwwwwwwwwwwwwwwww", -"wwwwwwwww!!!wwwwwwwwwwww", -"wwwwwwwww!!!wwwwwwwwwwww", -"wwwwwwww!!!!!wwwwwwwwwww", -"wwwwwwww!!!!!wwwwwwwwwww", -"wwwwwww!!!!!!!wwwwwwwwww", -"wwwwwww!!!!!!!wwwwwwwwww", -"wwwwwww!!!!!!!wwwwwwwwww", -"wwwwwww!!!!!!!wwwwwwwwww", -"wwwwwww!!!!!!!wwwwwwwwww", -"wwwwwww!!!!!!!wwwwwwwwww", -"wwwwwww!!!!!!!wwwwwwwwww", -"wwwwwwww!!!!!wwwwwwwwwww", -"wwwwwwww!!!!!wwwwwwwwwww", -"wwwwwwww!!!!!wwwwwwwwwww", -"wwwwwwwww!!!wwwwwwwwwwww", -"wwwwwwwwwwwwwwwwwwwwwwww", -"wwwwwwwww!!!wwwwwwwwwwww", -"wwwwwwww!!!!!wwwwwwwwwww", -"wwwwwwww!!!!!wwwwwwwwwww", -"wwwwwwwww!!!wwwwwwwwwwww", -"wwwwwwwwwwwwwwwwwwwwwwww", -"wwwwwwwwwwwwwwwwwwwwwwww" -};
--- a/lisp/gnus/indifferent.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * indifferent_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".+++++++++++.", -".++..+++..++.", -".++..+++..++.", -".+++++++++++.", -".+++++++++++.", -".+++++++++++.", -".++.......++.", -".+++++++++++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/kill-group.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* XPM */ -static char * kill_group_xpm[] = { -"24 24 3 1", -". c None", -"o c #000000000000", -"+ c #9A9A6C6C4E4E", -"o..o..o..o..o..o..o..o..", -"........................", -"........................", -"o..o..o..o..o..o..o..o..", -"........................", -"........................", -"o..o..o..o..++.o..o..o..", -".......++..++++.........", -"........++.+++..........", -"o..o..o.+++++..o..o..o..", -".........+++............", -".........++++...........", -"o..o..o.++++++.o..o..o..", -"........++.++++.........", -".......++...++++........", -"o..o...+.o...++o..o..o..", -"........................", -"........................", -"o..o..o..o..o..o..o..o..", -"........................", -"........................", -"o..o..o..o..o..o..o..o..", -"........................", -"........................"};
--- a/lisp/gnus/mail-reply.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char * mail_reply_xpm[] = { -"24 24 5 1", -" c None", -". c #000000000000", -"X c #E1E1E0E0E0E0", -"O c #FFFFFFFFFFFF", -"o c #C7C7C6C6C6C6", -" .. ", -" .X. ", -" ..XX. ", -" ......XoXX.. ", -" ...OOO.XooXXX. ", -" ..OOOO.XooXXX. ", -" ...OOOOO.XooXXX... ", -" ..OOOOOO.XXooXX.OO.. ", -" ...OOOO.oooXXX...... ", -" .O...O.oXooXXX...OO. ", -" .OOO...oXoXX...OOOO. ", -" .OOOOO...X...OOOOOO. ", -" .OOOOO.O...OO.OOOOO. ", -" .OOO..OOOOOOOO..OOO. ", -" .OO.OOOOOOOOOOOO.OO. ", -" .O.OOOOOOOOOOOOOO.O. ", -" ..OOOOOOOOOOOOOOOO.. ", -" .................... ", -" ", -" ", -" ", -" ", -" ", -" "};
--- a/lisp/gnus/mm-util.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/gnus/mm-util.el Sat Feb 19 00:06:48 2005 +0000 @@ -1,5 +1,5 @@ ;;; mm-util.el --- Utility functions for Mule and low level things -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> @@ -901,7 +901,7 @@ (file-directory-p (setq dir (concat (file-name-directory (directory-file-name path)) - "etc/" (or package "gnus/"))))) + "etc/images/" (or package "gnus/"))))) (push dir result)) (push path result))))
--- a/lisp/gnus/next-ur.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* XPM */ -static char * next_ur_xpm[] = { -"24 24 8 1", -". c None", -" c #000000000000", -"X c #A5A5A5A59595", -"o c #C7C7C6C6C6C6", -"O c #FFFF00000000", -"+ c #9A9A6C6C4E4E", -"@ c #E1E1E0E0E0E0", -"# c #FFFFFFFFFFFF", -" .. .. .. .. .. .. .. ..", -"........................", -"............X...........", -" .. .. .. .XXX. .. .. ..", -".........XXooOX.........", -".......XXooo+O@X........", -" .. XXXoooo++@@@X. .. ..", -"....X@Xoooooo@@@X.......", -"....X@@Xooo@@@@@@X......", -" .. X@@XXoo@@@@@@@X.. ..", -"....X@@Xoo@@@@@@@@@X....", -"....X@Xo@@@XX@@@@@@oX...", -" .. oXoo@XXooO@@@@@@X ..", -"....oXoXXooo+OX@@@@Xo...", -"....XXXoooo++@@X@@Xo....", -" .. X@Xoooooo@@@XX .. ..", -"....X@@Xooo@@@@@@X......", -"....X@@XXoo@@@@@@@X.....", -" .. X@@Xoo@@@@@@@@@X. ..", -"....X@Xo@ @@@@@@@ X...", -"... oXoo ## @@ @@ ## ...", -" .. oXo #### @ #### ..", -".....oX #### @@@ #### ..", -".....oX@ ## @@@@X ## ..."};
--- a/lisp/gnus/post.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* XPM */ -static char * post_xpm[] = { -"24 24 8 1", -". c None", -" c #434343434343", -"X c #A5A5A5A59595", -"O c #000000000000", -"+ c #C7C7C6C6C6C6", -"@ c #FFFF00000000", -"# c #9A9A6C6C4E4E", -"$ c #E1E1E0E0E0E0", -"O..O..O..O..O..O..O..O..", -"........................", -"............X...........", -"O..O..O..O.XXX.O..O..O..", -".........XX++@X.........", -".......XX+++#@$X........", -"O..OXXX++++##$$$X.O..O..", -"....X$X++++++$$$X.......", -"....X$$X+++$$$$$$X......", -"O..OX$$XX++$$$$$$$X..O..", -"....X$$X++$$$$$$$$$X....", -"....X$X+$$$$$$$$$$$+X...", -"O..O+X++$$$$$$$$$$$$XO..", -"....+X+$$$$$$$$$$$$X+...", -".....+X$$$$$$$$$$$X+....", -"O..O.+X$$$$$$$$$XXO..O..", -"......+X$$$$$$$X++......", -"......+X$$$$$XX+........", -"O..O..O+X$$$X++O..O..O..", -".......+X$$X++..........", -"........+XX+............", -"O..O..O..O+.O..O..O..O..", -"........................", -"........................"};
--- a/lisp/gnus/prev-ur.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* XPM */ -static char * prev_ur_xpm[] = { -"24 24 8 1", -". c None", -" c #000000000000", -"X c #A5A5A5A59595", -"o c #C7C7C6C6C6C6", -"O c #FFFF00000000", -"+ c #9A9A6C6C4E4E", -"@ c #E1E1E0E0E0E0", -"# c #FFFFFFFFFFFF", -" .. .. .. .. .. .. .. ..", -"........................", -"............X...........", -" .. .. .. .XXX. .. .. ..", -".........XXooOX.........", -".......XXooo+O@X........", -" .. XXXoooo++@@@X. .. ..", -"....X@Xoooooo@@@X.......", -"....X@@Xooo@@@@@@X......", -" .. X@@XXoo@@@@@@@X.. ..", -"....X@@Xo @@@@@@ X....", -"....X@Xo ## X @ ## X...", -" .. oXo #XXXoO@ #### ..", -"....oXoXXooo+OX #### ...", -"....XXXoooo++@@X ## ....", -" .. X@Xoooooo@@@X .. ..", -"....X@@Xooo@@@@@@X......", -"....X@@XXoo@@@@@@@X.....", -" .. X@@Xoo@@@@@@@@@X. ..", -"....X@Xo@@@@@@@@@@@@X...", -"... oXoo@@@@@@@@@@@@X...", -" .. oXo@@@@@@@@@@@@X....", -".....oX@@@@@@@@@@@X.....", -".....oX@@@@@@@@@@X......"};
--- a/lisp/gnus/preview.xbm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -#define preview_width 24 -#define preview_height 24 -static char preview_bits[] = { - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, - 0x00,0xc0,0x03,0x00,0x3e,0x06,0xf0,0x03,0x04,0x08,0x00,0x0a,0x78,0x00,0x09, - 0x88,0xf9,0x08,0x10,0xc6,0x10,0x10,0x3a,0x13,0x10,0x06,0x15,0x20,0x02,0x29, - 0x20,0x02,0x31,0x20,0xad,0x0f,0x40,0xf9,0x03,0xc0,0xb8,0x07,0x80,0x07,0x0e, - 0x80,0x01,0x1c,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc8,0x00, - 0x00,0x00,0x39,0x00,0x00,0x00,0x08,0xc0,0x12,0x42,0x00,0x00,0x00,0x00,0x38, - 0x82,0x18,0x08,0x00,0x00,0x00 };
--- a/lisp/gnus/preview.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* XPM */ -static char *prev1[]={ -"24 24 6 1", -". c None", -"# c #000000", -"d c #46463e", -"a c #676663", -"c c #a8a7a3", -"b c #ebeae4", -"........................", -"........................", -"........................", -"........................", -"........................", -"..............####......", -".........#####abbc#.....", -"....#####acbbbbbbc#.....", -"...#acbbbbbbbbbbacc#....", -"...#baabbbbbbbbcacb#....", -"...#cbcaabbd##dacbb#....", -"....#bbbccdcbbcdabbc#...", -"....#bbbbdccaaccdacb#...", -"....#cbbb#abbbbb#bac#...", -".....#bbb#cbbbbc#bbac#..", -".....#bbbdcbbbbddbbc##..", -".....#cbccdcbbd#####....", -"......#babbd##dd##......", -"......#acbc###.####.....", -"......#aa##......###....", -".......##.........###...", -"...................##...", -"........................", -"........................"};
--- a/lisp/gnus/receipt.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char * receipt_xpm[] = { -"24 24 5 1", -" c None", -". c #FFFFFFFFFFFF", -"X c #676766666363", -"o c #FFFF00000000", -"O c #AEAE3E3E4848", -" ", -" ", -" .. ", -" . ", -" . ", -" . ", -" .. ", -" Xooo .. ", -" Xoooooooo.. ", -" Xoooooooooooooo ... ", -" oooooooooooOOoo . ", -" ooooooooooOOOOo. ", -" oooooooooOO...o ", -" ooooooooooOOooo ", -" ooooooooooooooo ", -" ooooooooooooooo ", -" oooooooooooooo ", -" ooooooooooo ", -" ooooooo ", -" oooo ", -" oo ", -" ", -" ", -" "};
--- a/lisp/gnus/reply-wo.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* XPM */ -static char * reply_wo_xpm[] = { -"24 24 4 1", -" c None", -". c #000000000000", -"X c #E1E1E0E0E0E0", -"O c #FFFFFFFFFFFF", -" ", -" ", -" ", -" .... ", -" ..X.... ", -" ..XX.XX.. ", -" .O.XX.XXXX.. ", -" ..O.XXX.XXXX... ", -" .OO.XXXX.X....... ", -" .OO.XXXX...XXX.OO.. ", -" ..OO.XX....XXXX.OOOO.. ", -" .......XX.XXXX.OOO.... ", -" .OOO.XXX.XXXX.OO..OOO. ", -" .OOOO....XXX....OOOOO. ", -" .OOOOOOO..XX..OOOOOOO. ", -" .OOOOOOO......OOOOOOO. ", -" .OOOOOO.OO..O..OOOOOO. ", -" .OOOOO.OOOOOOOO.OOOOO. ", -" .OOOO.OOOOOOOOOO.OOOO. ", -" .OOO.OOOOOOOOOOOO.OOO. ", -" .O..OOOOOOOOOOOOOO..O. ", -" ..OOOOOOOOOOOOOOOOOO.. ", -" ...................... ", -" "};
--- a/lisp/gnus/reply.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* XPM */ -static char * reply_xpm[] = { -"24 24 4 1", -" c None", -". c #000000000000", -"X c #E1E1E0E0E0E0", -"O c #FFFFFFFFFFFF", -" ", -" ", -" ", -" .... ", -" ..XXX.. ", -" ..XXXXX.. ", -" .O.XXXXXXX.. ", -" ..O.XXXXXXXXX.. ", -" .OO.XXXXXXXXXX... ", -" .OO.XXXXXXXXXX.OO.. ", -" ..OO.XXXXXXXXXX.OOOO.. ", -" .....XXXXXXXXX.OOO.... ", -" .OOO.XXXXXXXX.OO..OOO. ", -" .OOOO...XXXXX...OOOOO. ", -" .OOOOOOO..XX..OOOOOOO. ", -" .OOOOOOO......OOOOOOO. ", -" .OOOOOO.OO..O..OOOOOO. ", -" .OOOOO.OOOOOOOO.OOOOO. ", -" .OOOO.OOOOOOOOOO.OOOO. ", -" .OOO.OOOOOOOOOOOO.OOO. ", -" .O..OOOOOOOOOOOOOO..O. ", -" ..OOOOOOOOOOOOOOOOOO.. ", -" ...................... ", -" "};
--- a/lisp/gnus/reverse-smile.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * reverse_smile_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".+++.....+++.", -".++.+++++.++.", -".++.+++++.++.", -".+++++++++++.", -".+++++++++++.", -".++..+++..++.", -".++..+++..++.", -".+++++++++++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/rot13.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char * rot13_xpm[] = { -"24 24 5 1", -" c None", -". c #A5A5A5A59595", -"X c #C7C7C6C6C6C6", -"o c #E1E1E0E0E0E0", -"O c #919187876969", -" ", -" ", -" ", -" . ", -" ..X. ", -" ..XXX. ", -" ..XXXXXo. ", -" ...XXXXXXooo. ", -" .o.XXXXXoooo. ", -" .oo.XXXooOooo. ", -" .oo..XXoOXOOoo. ", -" .oo.XXoOXooOXoo. ", -" .o.XoooOOXXOXooX. ", -" .XXooOOXOOXoooo. ", -" .XooOOOooooooo. ", -" .oOOXOXooooo. ", -" .oOOXoooooo. ", -" .oOOXooo.. ", -" .oooooo. ", -" .ooo.. ", -" .oo. ", -" .. ", -" ", -" "};
--- a/lisp/gnus/sad.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * sad_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".+++++++++++.", -".++..+++..++.", -".++..+++..++.", -".+++++++++++.", -".+++++++++++.", -".+++.....+++.", -".++.+++++.++.", -".++.+++++.++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/save-aif.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* XPM */ -static char * save_aif_xpm[] = { -"24 24 6 1", -" c None", -". c #999999999999", -"X c #E1E1E0E0E0E0", -"o c #C7C7C6C6C6C6", -"O c #000000000000", -"+ c #FFFFFFFFFFFF", -" ", -" ", -" ............. ", -" .XXXXXXXXXX.X.. ", -" .XXXXXXXXXX.XX. ", -" .XXXXXXXXXX.... ", -" .XXXXXXXXXXooo. ", -" .XXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXX. ", -" .XXXXXXXXXXXXX. ", -" OOOOOOOOOOOOOOXXXXXX. ", -" O..O+++++++O.OXXXXXX. ", -" O..O+++++++O.OXXXXXX. ", -" O..O+++++++O.OXXXXXX. ", -" O..O+++++++O.OXXXXXX. ", -" O..O+++++++O.OXXXXXX. ", -" O..OOOOOOOOO.OXXXXXX. ", -" O............OXXXXXX. ", -" O............OXXXXXX. ", -" O..OOOOOOOOO.O....... ", -" O..OoooooO++.O ", -" O..OoooooO++.O ", -" O.OoooooO++.O ", -" OOOOOOOOOOOO "};
--- a/lisp/gnus/save-art.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char * save_art_xpm[] = { -"24 24 5 1", -" c None", -". c #000000000000", -"X c #FFFFFFFFFFFF", -"o c #999999999999", -"O c #C7C7C6C6C6C6", -" ", -" ", -" .................. ", -" ...XXXXXXXXXXXXX.. ", -" .XX..XXXXXXXXX..X. ", -" .XXXX..XXXXX..XXX. ", -" .XXXXX......XXXXX. ", -" .XXX..XX..XX..XXX. ", -" .XX..XXXXXXXX..XX. ", -" ...XXXXXXXXXXXX... ", -" ..............XXXXXXX. ", -" .oo.XXXXXXX.o......... ", -" .oo.XXXXXXX.o. ", -" .oo.XXXXXXX.o. ", -" .oo.XXXXXXX.o. ", -" .oo.XXXXXXX.o. ", -" .oo.........o. ", -" .oooooooooooo. ", -" .oooooooooooo. ", -" .oo.........o. ", -" .oo.OOOOO.XXo. ", -" .oo.OOOOO.XXo. ", -" .o.OOOOO.XXo. ", -" ............ "};
--- a/lisp/gnus/smile.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * smile_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".+++++++++++.", -".++..+++..++.", -".++..+++..++.", -".+++++++++++.", -".+++++++++++.", -".++.+++++.++.", -".++.+++++.++.", -".+++.....+++.", -" .+++++++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/gnus/smiley.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/gnus/smiley.el Sat Feb 19 00:06:48 2005 +0000 @@ -44,7 +44,7 @@ :group 'gnus-visual) ;; Maybe this should go. -(defcustom smiley-data-directory (nnheader-find-etc-directory "smilies") +(defcustom smiley-data-directory (nnheader-find-etc-directory "images/smilies") "*Location of the smiley faces files." :type 'directory :group 'smiley)
--- a/lisp/gnus/subscribe.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char * subscribe_xpm[] = { -"24 24 5 1", -" c None", -". c #A5A5A5A59595", -"X c #E1E1E0E0E0E0", -"o c #C7C7C6C6C6C6", -"O c #8686ADAD7D7D", -" ", -" ", -" ", -" ... ", -" ..XXX..... ", -"...XXXXX..XXX. ... ", -".X.XX...XXXX...XXX. ", -".XX.X.X.XX...XXXXX. ", -".XX...XX.X.X.XXXXXX. ", -".XX.o.XX...XX.XXXXXX. ", -".X.oo.XX.o.XX..XXXXXX. ", -"o.ooo.X.oo.XX.XXXOXXX. ", -"o.oXXo.ooo.X.oXXOXXXXX. ", -" o.XXo.oXXo.ooXXOXXXXX. ", -" o.XXXo.XXo.oXXXOXXXXXX.", -" o.XXo.XXXo.XOOOOXXXXX.", -" o.XXoo.XXo.XXXOOXXXXX.", -" o.XXo.XXXo.XXXXXXX...", -" o.XX.o.XXo.XXXXXX.oo ", -" o..oo.XX.o.XXX..o ", -" oo o..oo.XX.oo ", -" oo o..o ", -" oo ", -" "};
--- a/lisp/gnus/unimportant.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char *magick[] = { -/* columns rows colors chars-per-pixel */ -"24 24 2 1", -"! c blue", -"w c Gray75", -/* pixels */ -"wwwwwwwwwwwwwwwwwwwwwwww", -"wwwwwwwwwwwwwwwwwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"ww!!!wwwwww!!!wwwwww!!!w", -"www!!!wwwww!!!wwwww!!!ww", -"wwww!!!wwww!!!wwww!!!www", -"wwwww!!!www!!!www!!!wwww", -"wwwwww!!!ww!!!ww!!!wwwww", -"wwwwwww!!!w!!!w!!!wwwwww", -"wwwwwwww!!!!!!!!!wwwwwww", -"wwwwwwwww!!!!!!!wwwwwwww", -"wwwwwwwwww!!!!!wwwwwwwww", -"wwwwwwwwwww!!!wwwwwwwwww", -"wwwwwwwwwwwwwwwwwwwwwwww", -"wwwwwwwwwwwwwwwwwwwwwwww" -};
--- a/lisp/gnus/unsubscribe.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* XPM */ -static char * unsubscribe_xpm[] = { -"24 24 5 1", -" c None", -". c #A5A5A5A59595", -"X c #E1E1E0E0E0E0", -"o c #C7C7C6C6C6C6", -"O c #FFFF00000000", -" ", -" ", -" ", -" ... ", -" ..XXX..... ", -"...XXXXX..XXX. ... ", -".X.XX...XXXX...XXX. ", -".XX.X.X.XX...XXXXX. ", -".XX...XX.X.X.XXXXXX. ", -".XX.o.XX...XX.XXXXXX. ", -".X.oo.XX.o.XX..XXXXXX. ", -"o.ooo.X.oo.XX.XXXXXXX. ", -"o.oXXo.ooo.X.oXXXXXXXX. ", -" o.XXo.oXXo.ooXXOXXXXX. ", -" o.XXXo.XXo.oXXXOXXXXXX.", -" o.XXo.XXXo.XOOOXXXXXX.", -" o.XXoo.XXo.XoOOOXXXXX.", -" o.XXo.XXXo.XOoOXXX...", -" o.XX.o.XXo.XOXoXX.oo ", -" o..oo.XX.o.oXX..o ", -" oo o..oo.XX.oo ", -" oo o..o ", -" oo ", -" "};
--- a/lisp/gnus/uu-decode.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* XPM */ -static char * uu_decode_xpm[] = { -"24 24 9 1", -" c None", -". c #919187876969", -"X c #C2C2B9B99C9C", -"o c #868686868686", -"O c #8F8F8F8F8F8F", -"+ c #000000000000", -"@ c #4C4C4C4C4C4C", -"# c #E9E9EFEFE8E8", -"$ c #8686ADAD7D7D", -" ", -" ", -" ", -" .............. ", -" X.o.........O.++ ", -" XX++++++++++..++ ", -" XX@########+..++ ", -" XX@########+..++ ", -" XX@$#$$$#$#+..++ ", -" XX@#$$$$$$#+..++ ", -" XX@##$#####+..++ ", -" XX@##$#$$##+..++ ", -" XX@##$#$$##+..++ ", -" XX@##$$#$$#+..++ ", -" XX@######$#+..++ ", -" XX@########+..++ ", -" XX@########+..++ ", -" XX.@@@@@@@@@..++ ", -" X.XXXXXXXXXX..++ ", -" .XXXXXXXXXXXX.++ ", -" +++++++++++++++ ", -" +++++++++++++++ ", -" ", -" "};
--- a/lisp/gnus/uu-post.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* XPM */ -static char * uu_post_xpm[] = { -"24 24 8 1", -". c None", -"X c #000000000000", -"+ c #C2C2B9B99C9C", -"@ c #919187876969", -"# c #868686868686", -"% c #4C4C4C4C4C4C", -"& c #E9E9EFEFE8E8", -"* c #8686ADAD7D7D", -"X..X..X..X.XX..X..X..X..", -"..........X.X...........", -".........X...X..........", -"X..X..X.XX..X.XX..X..X..", -".......X.......X........", -"......X.........X.......", -"X..X+X@@@@@@@@@@@XX..X..", -"....+@@@@@@@@@@@@@......", -"....++XXXXXXXXXX@@......", -"X..X++%&&&&&&&&X@@X..X..", -"....++%&&&&&&&&X@@......", -"....++%*&***&*&X@@......", -"X..X++%&******&X@@X..X..", -"....++%&&*&&&&&X@@......", -"....++%&&*&**&&X@@......", -"X..X++%&&*&**&&X@@X..X..", -"....++%&&**&**&X@@......", -"....++%&&&&&&*&X@@......", -"X..X++%&&&&&&&&X@@X..X..", -"....++%&&&&&&&&X@@......", -"....++@%%%%%%%%%@@......", -"X..X+@++++++++++@@X..X..", -"....+++++++++++++@......", -"........................"};
--- a/lisp/gnus/wry.xpm Fri Feb 18 23:22:51 2005 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -/* XPM */ -static char * wry_xpm[] = { -"13 14 3 1", -" c None", -". c #000000", -"+ c #FFDD00", -" ....... ", -" ..+++++.. ", -" .+++++++++. ", -".+++++++++++.", -".+++++++..++.", -".++..+++..++.", -".++..+++++++.", -".+++++++++++.", -".+++++++...+.", -".+++++...+++.", -".++++..+++++.", -" .+++.+++++. ", -" ..+++++.. ", -" ....... "};
--- a/lisp/ido.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/ido.el Sat Feb 19 00:06:48 2005 +0000 @@ -2280,6 +2280,9 @@ (defun ido-fallback-command () "Fallback to non-ido version of current command." (interactive) + (let ((i (length ido-text))) + (while (> i 0) + (push (aref ido-text (setq i (1- i))) unread-command-events))) (setq ido-exit 'fallback) (exit-minibuffer))
--- a/lisp/international/mule-cmds.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/international/mule-cmds.el Sat Feb 19 00:06:48 2005 +0000 @@ -2482,13 +2482,13 @@ (prefer-coding-system coding-system) (setq locale-coding-system coding-system)))) - ;; On Windows, override locale-coding-system, keyboard-coding-system, - ;; selection-coding-system with system codepage. + ;; On Windows, override locale-coding-system, + ;; keyboard-coding-system with system codepage. Note: + ;; selection-coding-system is already set in w32select.c. (when (boundp 'w32-ansi-code-page) (let ((code-page-coding (intern (format "cp%d" w32-ansi-code-page)))) (when (coding-system-p code-page-coding) (setq locale-coding-system code-page-coding) - (set-selection-coding-system code-page-coding) (set-keyboard-coding-system code-page-coding) (set-terminal-coding-system code-page-coding))))
--- a/lisp/isearch.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/isearch.el Sat Feb 19 00:06:48 2005 +0000 @@ -740,7 +740,8 @@ (setq ;; quit-flag nil not for isearch-mode isearch-adjusted nil isearch-yank-flag nil) - (if isearch-lazy-highlight (isearch-lazy-highlight-new-loop)) + (when isearch-lazy-highlight + (isearch-lazy-highlight-new-loop nil nil)) ;; We must prevent the point moving to the end of composition when a ;; part of the composition has just been searched. (setq disable-point-adjustment t)) @@ -2314,6 +2315,8 @@ (defvar isearch-lazy-highlight-overlays nil) (defvar isearch-lazy-highlight-wrapped nil) +(defvar isearch-lazy-highlight-start-limit nil) +(defvar isearch-lazy-highlight-end-limit nil) (defvar isearch-lazy-highlight-start nil) (defvar isearch-lazy-highlight-end nil) (defvar isearch-lazy-highlight-timer nil) @@ -2339,10 +2342,12 @@ (cancel-timer isearch-lazy-highlight-timer) (setq isearch-lazy-highlight-timer nil))) -(defun isearch-lazy-highlight-new-loop () +(defun isearch-lazy-highlight-new-loop (beg end) "Cleanup any previous `lazy-highlight' loop and begin a new one. -This happens when `isearch-update' is invoked (which can cause the -search string to change or the window to scroll)." +BEG and END specify the bounds within which highlighting should occur. +This is called when `isearch-update' is invoked (which can cause the +search string to change or the window to scroll). It is also used +by other Emacs features." (when (and (null executing-kbd-macro) (sit-for 0) ;make sure (window-start) is credible (or (not (equal isearch-string @@ -2360,6 +2365,8 @@ ;; something important did indeed change (isearch-lazy-highlight-cleanup t) ;kill old loop & remove overlays (when (not isearch-invalid-regexp) + (setq isearch-lazy-highlight-start-limit beg + isearch-lazy-highlight-end-limit end) (setq isearch-lazy-highlight-window (selected-window) isearch-lazy-highlight-window-start (window-start) isearch-lazy-highlight-window-end (window-end) @@ -2382,12 +2389,14 @@ (funcall (isearch-search-fun) isearch-string (if isearch-forward - (if isearch-lazy-highlight-wrapped - isearch-lazy-highlight-start - (window-end)) - (if isearch-lazy-highlight-wrapped - isearch-lazy-highlight-end - (window-start))) + (min (or isearch-lazy-highlight-end-limit (point-max)) + (if isearch-lazy-highlight-wrapped + isearch-lazy-highlight-start + (window-end))) + (max (or isearch-lazy-highlight-start-limit (point-min)) + (if isearch-lazy-highlight-wrapped + isearch-lazy-highlight-end + (window-start)))) t))) (defun isearch-lazy-highlight-update () @@ -2446,9 +2455,11 @@ (if isearch-forward (progn (setq isearch-lazy-highlight-end (window-start)) - (goto-char (window-start))) + (goto-char (max (or isearch-lazy-highlight-start-limit (point-min)) + (window-start)))) (setq isearch-lazy-highlight-start (window-end)) - (goto-char (window-end))))))) + (goto-char (min (or isearch-lazy-highlight-end-limit (point-max)) + (window-end)))))))) (unless nomore (setq isearch-lazy-highlight-timer (run-at-time lazy-highlight-interval nil
--- a/lisp/menu-bar.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/menu-bar.el Sat Feb 19 00:06:48 2005 +0000 @@ -1515,9 +1515,11 @@ (dolist (f (frame-list)) (when (equal last-command-event (frame-parameter f 'name)) (setq frame f))) - (make-frame-visible frame) - (raise-frame frame) - (select-frame frame))) + ;; FRAME can be nil when user specifies the selected frame. + (setq frame (or frame (selected-frame))) + (make-frame-visible frame) + (raise-frame frame) + (select-frame frame))) (defun menu-bar-update-buffers-1 (elt) (let* ((buf (car elt))
--- a/lisp/novice.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/novice.el Sat Feb 19 00:06:48 2005 +0000 @@ -41,10 +41,9 @@ "Function to call to handle disabled commands. If nil, the feature is disabled, i.e., all commands work normally.") +;;;###autoload (defvaralias 'disabled-command-hook 'disabled-command-function) -(make-obsolete-variable - 'disabled-command-hook - 'disabled-command-function "22.1") +;;;###autoload (make-obsolete-variable 'disabled-command-hook 'disabled-command-function "22.1") ;;;###autoload (defun disabled-command-function (&rest ignore)
--- a/lisp/progmodes/gdb-ui.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/progmodes/gdb-ui.el Sat Feb 19 00:06:48 2005 +0000 @@ -79,6 +79,8 @@ (defvar gdb-overlay-arrow-position nil) (defvar gdb-server-prefix nil) (defvar gdb-flush-pending-output nil) +(defvar gdb-location-list nil "List of directories for source files.") +(defvar gdb-find-file-unhook nil) (defvar gdb-buffer-type nil "One of the symbols bound in `gdb-buffer-rules'.") @@ -191,6 +193,36 @@ :group 'gud :version "22.1") +(defun gdb-set-gud-minor-mode (buffer) + "Set gud-minor-mode from find-file if appropriate." + (goto-char (point-min)) + (unless (search-forward "No source file named " nil t) + (condition-case nil + (gdb-enqueue-input + (list (concat gdb-server-prefix "info source\n") + `(lambda () (gdb-set-gud-minor-mode-1 ,buffer)))) + (error (setq gdb-find-file-unhook t))))) + +(defun gdb-set-gud-minor-mode-1 (buffer) + (goto-char (point-min)) + (if (and (search-forward "Located in " nil t) + (looking-at "\\S-*") + (string-equal (buffer-file-name buffer) + (match-string 0))) + (with-current-buffer buffer + (set (make-local-variable 'gud-minor-mode) 'gdba) + (set (make-local-variable 'tool-bar-map) gud-tool-bar-map)))) + +(defun gdb-set-gud-minor-mode-existing-buffers () + (dolist (buffer (buffer-list)) + (let ((file (buffer-file-name buffer))) + (if file + (progn + (gdb-enqueue-input + (list (concat gdb-server-prefix "list " + (file-name-nondirectory file) ":1\n") + `(lambda () (gdb-set-gud-minor-mode ,buffer))))))))) + (defun gdb-ann3 () (setq gdb-debug-log nil) (set (make-local-variable 'gud-minor-mode) 'gdba) @@ -249,6 +281,7 @@ (setq gdb-server-prefix "server ") (setq gdb-flush-pending-output nil) (setq gdb-location-list nil) + (setq gdb-find-file-unhook nil) ;; (setq gdb-buffer-type 'gdba) ;; @@ -263,6 +296,7 @@ (gdb-enqueue-input (list "server list MAIN__\n" 'ignore)) ; Fortran program (gdb-enqueue-input (list "server info source\n" 'gdb-source-info)) ;; + (gdb-set-gud-minor-mode-existing-buffers) (run-hooks 'gdba-mode-hook)) (defcustom gdb-use-colon-colon-notation nil @@ -1048,8 +1082,6 @@ ;; buffer specific functions gdb-info-breakpoints-custom) -(defvar gdb-location-list nil "List of directories for source files.") - (defconst breakpoint-xpm-data "/* XPM */ static char *magick[] = { @@ -1159,13 +1191,11 @@ (setq file (cdr (assoc bptno gdb-location-list)))) (unless (string-equal file "File not found") (if file - (with-current-buffer - (find-file-noselect file) - (save-current-buffer - (set (make-local-variable 'gud-minor-mode) + (with-current-buffer (find-file-noselect file) + (set (make-local-variable 'gud-minor-mode) 'gdba) - (set (make-local-variable 'tool-bar-map) - gud-tool-bar-map)) + (set (make-local-variable 'tool-bar-map) + gud-tool-bar-map) ;; only want one breakpoint icon at each location (save-excursion (goto-line (string-to-number line)) @@ -2054,15 +2084,15 @@ "Find the source file where the program starts and displays it with related buffers." (goto-char (point-min)) - (if (search-forward "Located in " nil t) - (if (looking-at "\\S-*") - (setq gdb-main-file (match-string 0)))) + (if (and (search-forward "Located in " nil t) + (looking-at "\\S-*")) + (setq gdb-main-file (match-string 0))) (if gdb-many-windows (gdb-setup-windows) (gdb-get-create-buffer 'gdb-breakpoints-buffer) - (if gdb-show-main - (let ((pop-up-windows t)) - (display-buffer (gud-find-file gdb-main-file)))))) + (if gdb-show-main + (let ((pop-up-windows t)) + (display-buffer (gud-find-file gdb-main-file)))))) (defun gdb-get-location (bptno line flag) "Find the directory containing the relevant source file. @@ -2085,6 +2115,23 @@ (goto-line (string-to-number line)) (gdb-put-breakpoint-icon (eq flag ?y) bptno)))) +(add-hook 'find-file-hook 'gdb-find-file-hook) + +(defun gdb-find-file-hook () + (if (and (not gdb-find-file-unhook) + ;; in case gud or gdb-ui is just loaded + gud-comint-buffer + (buffer-name gud-comint-buffer) + (with-current-buffer gud-comint-buffer + (eq gud-minor-mode 'gdba))) + (condition-case nil + (gdb-enqueue-input + (list (concat gdb-server-prefix "list " + (file-name-nondirectory buffer-file-name) + ":1\n") + `(lambda () (gdb-set-gud-minor-mode ,(current-buffer))))) + (error (setq gdb-find-file-unhook t))))) + ;;from put-image (defun gdb-put-string (putstring pos &optional dprop) "Put string PUTSTRING in front of POS in the current buffer.
--- a/lisp/ps-print.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/ps-print.el Sat Feb 19 00:06:48 2005 +0000 @@ -986,7 +986,7 @@ ;; (my-mixed-family ;; (fonts (normal . "Courier-Bold") ;; (bold . "Helvetica") -;; (italic . "Zapf-Chancery-MediumItalic") +;; (italic . "ZapfChancery-MediumItalic") ;; (bold-italic . "NewCenturySchlbk-BoldItalic") ;; (w3-table-hack-x-face . "LineDrawNormal")) ;; (size . 10.0) @@ -1010,7 +1010,7 @@ ;; (fonts (w3-table-hack-x-face . "LineDrawNormal") ;; (bold . "Helvetica") ;; (bold-italic . "NewCenturySchlbk-BoldItalic") -;; (italic . "Zapf-Chancery-MediumItalic") +;; (italic . "ZapfChancery-MediumItalic") ;; (normal . "Courier-Bold")) ;; (avg-char-width . 6.0) ;; (space-width . 6.0) @@ -2820,8 +2820,16 @@ (line-height . 9.63) (space-width . 2.78) (avg-char-width . 2.78)) + (ZapfChancery-MediumItalic + (fonts (normal . "ZapfChancery-MediumItalic")) + (size . 10.0) + (line-height . 11.45) + (space-width . 2.2) + (avg-char-width . 4.10811)) + ;; We keep this wrong entry name (but with correct font name) for + ;; backward compatibility. (Zapf-Chancery-MediumItalic - (fonts (normal . "Zapf-Chancery-MediumItalic")) + (fonts (normal . "ZapfChancery-MediumItalic")) (size . 10.0) (line-height . 11.45) (space-width . 2.2)
--- a/lisp/replace.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/replace.el Sat Feb 19 00:06:48 2005 +0000 @@ -1435,7 +1435,8 @@ query-replace-skip-read-only)) (unless (or literal noedit) (replace-highlight (nth 0 real-match-data) - (nth 1 real-match-data))) + (nth 1 real-match-data) + start end)) (setq noedit (replace-match-maybe-edit next-replacement nocasify literal @@ -1451,7 +1452,8 @@ ;; `real-match-data'. (while (not done) (set-match-data real-match-data) - (replace-highlight (match-beginning 0) (match-end 0)) + (replace-highlight (match-beginning 0) (match-end 0) + start end) ;; Bind message-log-max so we don't fill up the message log ;; with a bunch of identical messages. (let ((message-log-max nil)) @@ -1627,15 +1629,15 @@ (defvar replace-overlay nil) -(defun replace-highlight (beg end) +(defun replace-highlight (match-beg match-end range-beg range-end) (if query-replace-highlight (if replace-overlay - (move-overlay replace-overlay beg end (current-buffer)) - (setq replace-overlay (make-overlay beg end)) + (move-overlay replace-overlay match-beg match-end (current-buffer)) + (setq replace-overlay (make-overlay match-beg match-end)) (overlay-put replace-overlay 'priority 1) ;higher than lazy overlays (overlay-put replace-overlay 'face 'query-replace))) - (if query-replace-lazy-highlight - (isearch-lazy-highlight-new-loop))) + (when query-replace-lazy-highlight + (isearch-lazy-highlight-new-loop range-beg range-end))) (defun replace-dehighlight () (when replace-overlay
--- a/lisp/textmodes/reftex-cite.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/textmodes/reftex-cite.el Sat Feb 19 00:06:48 2005 +0000 @@ -679,9 +679,12 @@ (setq start (1+ start))))) ;; Should we cleanup empty optional arguments? ;; if the first is empty, it can be removed. If the second is empty, - ;; it has to go. + ;; it has to go. If there is only a single arg and empty, it can go + ;; as well. (when reftex-cite-cleanup-optional-args (cond + ((string-match "\\([a-zA-Z0-9]\\)\\[\\]{" string) + (setq string (replace-match "\\1{" nil nil string))) ((string-match "\\[\\]\\(\\[[a-zA-Z0-9., ]+\\]\\)" string) (setq string (replace-match "\\1" nil nil string))) ((string-match "\\[\\]\\[\\]" string)
--- a/lisp/url/ChangeLog Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/url/ChangeLog Sat Feb 19 00:06:48 2005 +0000 @@ -1,3 +1,7 @@ +2005-02-14 Michael Welsh Duggan <md5i@cs.cmu.edu> + + * url-http.el (url-http-parse-headers): Test url-automatic-caching. + 2005-01-22 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change) * url-http.el (url-http-parse-headers) <302>: Reset url-http-data
--- a/lisp/url/url-http.el Fri Feb 18 23:22:51 2005 +0000 +++ b/lisp/url/url-http.el Sat Feb 19 00:06:48 2005 +0000 @@ -413,7 +413,7 @@ ;; Generic success for all others. Store in the cache, and ;; mark it as successful. (widen) - (if (equal url-http-method "GET") + (if (and url-automatic-caching (equal url-http-method "GET")) (url-store-in-cache (current-buffer))) (setq success t)))) (3 ; Redirection
--- a/lispref/ChangeLog Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/ChangeLog Sat Feb 19 00:06:48 2005 +0000 @@ -1,3 +1,72 @@ +2005-02-14 Lute Kamstra <lute@gnu.org> + + * elisp.texi (Top): Remove reference to deleted node. + + * lists.texi (Lists): Remove reference to deleted node. + (Cons Cells): Fix typo. + + * loading.texi (Where Defined): Fix typo. + +2005-02-14 Richard M. Stallman <rms@gnu.org> + + * variables.texi (Creating Buffer-Local): change-major-mode-hook + is useful for discarding some minor modes. + + * symbols.texi (Symbol Components): Reorder examples. + + * streams.texi (Input Functions): State standard-input default. + (Output Variables): State standard-output default. + + * objects.texi (Printed Representation): Clarify read syntax vs print. + (Floating Point Type): Explain meaning better. + (Symbol Type): Explain uniqueness better. + (Cons Cell Type): Explain empty list sooner. CAR and CDR later. + List examples sooner. + (Box Diagrams): New subnode broken out. + Some examples moved from old Lists as Boxes node. + (Dotted Pair Notation): Clarify intro. + (Array Type): Clarify. + (Type Predicates): Add hash-table-p. + + * numbers.texi (Integer Basics): Clarify radix explanation. + (Predicates on Numbers): Minor clarification. + (Comparison of Numbers): Minor clarification. Clarify eql. + Typos in min, max. + (Math Functions): Clarify overflow in expt. + + * minibuf.texi (Text from Minibuffer): Minor clarification. + Mention arrow keys. + + * loading.texi (Autoload): defun's doc string overrides autoload's + doc string. + (Repeated Loading): Modernize "add to list" examples. + (Where Defined): Finish updating table of load-history elts. + + * lists.texi (List-related Predicates): Minor wording improvement. + (Lists as Boxes): Node deleted. + (Building Lists): Explain trivial cases of number-sequence. + + * hash.texi (Hash Tables): Add desc to menu items. + (Creating Hash): Expain "full" means "make larger", + (Hash Access): Any object can be a key. + State value of maphash. + + * functions.texi (What Is a Function): Wording cleanup. + (Function Documentation): Minor cleanup. + Explain purpose of calling convention at end of doc string. + (Function Names): Wording cleanup. + (Calling Functions): Wording cleanup. + Explain better how funcall calls the function. + (Function Cells): Delete example of saving and redefining function. + + * control.texi (Combining Conditions): Wording cleanup. + (Iteration): dolist and dotimes bind VAR locally. + (Cleanups): Xref to Atomic Changes. + + * compile.texi (Byte Compilation): Delete 19.29 info. + (Compilation Functions): Macros' difficulties don't affect defsubst. + (Docs and Compilation): Delete 19.29 info. + 2005-02-10 Richard M. Stallman <rms@gnu.org> * objects.texi (Symbol Type): Minor correction.
--- a/lispref/compile.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/compile.texi Sat Feb 19 00:06:48 2005 +0000 @@ -27,17 +27,7 @@ @xref{Loading Non-ASCII}. In general, any version of Emacs can run byte-compiled code produced -by recent earlier versions of Emacs, but the reverse is not true. A -major incompatible change was introduced in Emacs version 19.29, and -files compiled with versions since that one will definitely not run -in earlier versions unless you specify a special option. -@iftex -@xref{Docs and Compilation}. -@end iftex -In addition, the modifier bits in keyboard characters were renumbered in -Emacs 19.29; as a result, files compiled in versions before 19.29 will -not work in subsequent versions if they contain character constants with -modifier bits. +by recent earlier versions of Emacs, but the reverse is not true. @vindex no-byte-compile If you do not want a Lisp file to be compiled, ever, put a file-local @@ -122,6 +112,9 @@ details, see @ref{Compiling Macros}. If a program does not work the same way when compiled as it does when interpreted, erroneous macro definitions are one likely cause (@pxref{Problems with Macros}). +Inline (@code{defsubst}) functions are less troublesome; if you +compile a call to such a function before its definition is known, the +call will still work right, it will just run slower. Normally, compiling a file does not evaluate the file's contents or load the file. But it does execute any @code{require} calls at top @@ -313,14 +306,13 @@ occasionally if you edit and recompile Lisp files. When it happens, you can cure the problem by reloading the file after recompiling it. - Byte-compiled files made with recent versions of Emacs (since 19.29) -will not load into older versions because the older versions don't -support this feature. You can turn off this feature at compile time by -setting @code{byte-compile-dynamic-docstrings} to @code{nil}; then you -can compile files that will load into older Emacs versions. You can do -this globally, or for one source file by specifying a file-local binding -for the variable. One way to do that is by adding this string to the -file's first line: + You can turn off this feature at compile time by setting +@code{byte-compile-dynamic-docstrings} to @code{nil}; this is useful +mainly if you expect to change the file, and you want Emacs processes +that have already loaded it to keep working when the file changes. +You can do this globally, or for one source file by specifying a +file-local binding for the variable. One way to do that is by adding +this string to the file's first line: @example -*-byte-compile-dynamic-docstrings: nil;-*-
--- a/lispref/control.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/control.texi Sat Feb 19 00:06:48 2005 +0000 @@ -346,8 +346,8 @@ Note that @code{(car foo)} is not executed if @code{(consp foo)} returns @code{nil}, thus avoiding an error. -@code{and} can be expressed in terms of either @code{if} or @code{cond}. -For example: +@code{and} expressions can also be written using either @code{if} or +@code{cond}. Here's how: @example @group @@ -476,11 +476,11 @@ @defmac dolist (var list [result]) body@dots{} @tindex dolist -This construct executes @var{body} once for each element of @var{list}, -using the variable @var{var} to hold the current element. Then it -returns the value of evaluating @var{result}, or @code{nil} if -@var{result} is omitted. For example, here is how you could use -@code{dolist} to define the @code{reverse} function: +This construct executes @var{body} once for each element of +@var{list}, binding the variable @var{var} locally to hold the current +element. Then it returns the value of evaluating @var{result}, or +@code{nil} if @var{result} is omitted. For example, here is how you +could use @code{dolist} to define the @code{reverse} function: @example (defun reverse (list) @@ -493,8 +493,8 @@ @defmac dotimes (var count [result]) body@dots{} @tindex dotimes This construct executes @var{body} once for each integer from 0 -(inclusive) to @var{count} (exclusive), using the variable @var{var} to -hold the integer for the current iteration. Then it returns the value +(inclusive) to @var{count} (exclusive), binding the variable @var{var} +to the integer for the current iteration. Then it returns the value of evaluating @var{result}, or @code{nil} if @var{result} is omitted. Here is an example of using @code{dotimes} to do something 100 times: @@ -1167,7 +1167,10 @@ The @code{unwind-protect} construct is essential whenever you temporarily put a data structure in an inconsistent state; it permits -you to make the data consistent again in the event of an error or throw. +you to make the data consistent again in the event of an error or +throw. (Another more specific cleanup construct that is used only for +changes in buffer contents is the atomic change group; @ref{Atomic +Changes}.) @defspec unwind-protect body-form cleanup-forms@dots{} @cindex cleanup forms
--- a/lispref/elisp.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/elisp.texi Sat Feb 19 00:06:48 2005 +0000 @@ -34,7 +34,7 @@ 59 Temple Place, Suite 330 Boston, MA 02111-1307 USA -Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999,@* +Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2005,@* 2000, 2002 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document @@ -281,7 +281,6 @@ Lists * Cons Cells:: How lists are made out of cons cells. -* Lists as Boxes:: Graphical notation to explain lists. * List-related Predicates:: Is this object a list? Comparing two lists. * List Elements:: Extracting the pieces of a list. * Building Lists:: Creating list structure.
--- a/lispref/functions.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/functions.texi Sat Feb 19 00:06:48 2005 +0000 @@ -53,7 +53,7 @@ @cindex built-in function A @dfn{primitive} is a function callable from Lisp that is written in C, such as @code{car} or @code{append}. These functions are also called -@dfn{built-in} functions or @dfn{subrs}. (Special forms are also +@dfn{built-in functions}, or @dfn{subrs}. (Special forms are also considered primitives.) Usually the reason we implement a function as a primitive is either @@ -412,13 +412,14 @@ because @code{apropos} displays just this first line. It should consist of one or two complete sentences that summarize the function's purpose. - The start of the documentation string is usually indented in the source file, -but since these spaces come before the starting double-quote, they are not part of -the string. Some people make a practice of indenting any additional -lines of the string so that the text lines up in the program source. -@emph{That is a mistake.} The indentation of the following lines is -inside the string; what looks nice in the source code will look ugly -when displayed by the help commands. + The start of the documentation string is usually indented in the +source file, but since these spaces come before the starting +double-quote, they are not part of the string. Some people make a +practice of indenting any additional lines of the string so that the +text lines up in the program source. @emph{That is a mistake.} The +indentation of the following lines is inside the string; what looks +nice in the source code will look ugly when displayed by the help +commands. You may wonder how the documentation string could be optional, since there are required components of the function that follow it (the body). @@ -438,9 +439,14 @@ @noindent following a blank line, at the beginning of the line, with no newline -following it inside the documentation string. This feature is -particularly useful for macro definitions. The @samp{\} is used to -avoid confusing the Emacs motion commands. +following it inside the documentation string. (The @samp{\} is used +to avoid confusing the Emacs motion commands.) The calling convention +specified in this way appears in help messages in place of the one +derived from the actual arguments of the function. + + This feature is particularly useful for macro definitions, since the +arguments written in a macro definition often do not correspond to the +way users think of the parts of the macro call. @node Function Names @section Naming a Function @@ -481,8 +487,8 @@ We often identify functions with the symbols used to name them. For example, we often speak of ``the function @code{car}'', not distinguishing between the symbol @code{car} and the primitive -subr-object that is its function definition. For most purposes, there -is no need to distinguish. +subr-object that is its function definition. For most purposes, the +distinction is not important. Even so, keep in mind that a function need not have a unique name. While a given function object @emph{usually} appears in the function cell of only @@ -626,13 +632,12 @@ function @code{concat} with arguments @code{"a"} and @code{"b"}. @xref{Evaluation}, for a description of evaluation. - When you write a list as an expression in your program, the function -name it calls is written in your program. This means that you choose -which function to call, and how many arguments to give it, when you -write the program. Usually that's just what you want. Occasionally you -need to compute at run time which function to call. To do that, use the -function @code{funcall}. When you also need to determine at run time -how many arguments to pass, use @code{apply}. + When you write a list as an expression in your program, you specify +which function to call, and how many arguments to give it, in the text +of the program. Usually that's just what you want. Occasionally you +need to compute at run time which function to call. To do that, use +the function @code{funcall}. When you also need to determine at run +time how many arguments to pass, use @code{apply}. @defun funcall function &rest arguments @code{funcall} calls @var{function} with @var{arguments}, and returns @@ -641,11 +646,12 @@ Since @code{funcall} is a function, all of its arguments, including @var{function}, are evaluated before @code{funcall} is called. This means that you can use any expression to obtain the function to be -called. It also means that @code{funcall} does not see the expressions -you write for the @var{arguments}, only their values. These values are -@emph{not} evaluated a second time in the act of calling @var{function}; -@code{funcall} enters the normal procedure for calling a function at the -place where the arguments have already been evaluated. +called. It also means that @code{funcall} does not see the +expressions you write for the @var{arguments}, only their values. +These values are @emph{not} evaluated a second time in the act of +calling @var{function}; the operation of @code{funcall} is like the +normal procedure for calling a function, once its arguments have +already been evaluated. The argument @var{function} must be either a Lisp function or a primitive function. Special forms and macros are not allowed, because @@ -1137,30 +1143,12 @@ @end example @end defun - When writing a function that extends a previously defined function, -the following idiom is sometimes used: - -@example -(fset 'old-foo (symbol-function 'foo)) -(defun foo () - "Just like old-foo, except more so." -@group - (old-foo) - (more-so)) -@end group -@end example - -@noindent -This does not work properly if @code{foo} has been defined to autoload. -In such a case, when @code{foo} calls @code{old-foo}, Lisp attempts -to define @code{old-foo} by loading a file. Since this presumably -defines @code{foo} rather than @code{old-foo}, it does not produce the -proper results. The only way to avoid this problem is to make sure the -file is loaded before moving aside the old definition of @code{foo}. - - But it is unmodular and unclean, in any case, for a Lisp file to -redefine a function defined elsewhere. It is cleaner to use the advice -facility (@pxref{Advising Functions}). + @code{fset} is sometimes used to save the old definition of a +function before redefining it. That permits the new definition to +invoke the old definition. But it is unmodular and unclean for a Lisp +file to redefine a function defined elsewhere. If you want to modify +a function defined by another package, it is cleaner to use +@code{defadvice} (@pxref{Advising Functions}). @node Inline Functions @section Inline Functions
--- a/lispref/hash.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/hash.texi Sat Feb 19 00:06:48 2005 +0000 @@ -46,10 +46,10 @@ (@pxref{Creating Symbols}). @menu -* Creating Hash:: -* Hash Access:: -* Defining Hash:: -* Other Hash:: +* Creating Hash:: Functions to create hash tables. +* Hash Access:: Reading and writing the hash table contents. +* Defining Hash:: Defining new comparison methods +* Other Hash:: Miscellaneous. @end menu @node Creating Hash @@ -146,11 +146,11 @@ The default value is 1.5. @item :rehash-threshold @var{threshold} -This specifies the criterion for when the hash table is ``full.'' The -value, @var{threshold}, should be a positive floating point number, no -greater than 1. The hash table is ``full'' whenever the actual number of -entries exceeds this fraction of the nominal size. The default for -@var{threshold} is 0.8. +This specifies the criterion for when the hash table is ``full'' (so +it should be made larger). The value, @var{threshold}, should be a +positive floating point number, no greater than 1. The hash table is +``full'' whenever the actual number of entries exceeds this fraction +of the nominal size. The default for @var{threshold} is 0.8. @end table @end defun @@ -167,7 +167,9 @@ @section Hash Table Access This section describes the functions for accessing and storing -associations in a hash table. +associations in a hash table. In general, any Lisp object can be used +as a hash key, unless the comparison method imposes limits. Any Lisp +object can also be used as the value. @tindex gethash @defun gethash key table &optional default @@ -210,7 +212,7 @@ This function calls @var{function} once for each of the associations in @var{table}. The function @var{function} should accept two arguments---a @var{key} listed in @var{table}, and its associated -@var{value}. +@var{value}. @code{maphash} returns @code{nil}. @end defun @node Defining Hash
--- a/lispref/lists.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/lists.texi Sat Feb 19 00:06:48 2005 +0000 @@ -1,7 +1,7 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, -@c 2003, 2004 +@c 2003, 2004, 2005 @c Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @setfilename ../info/lists @@ -18,7 +18,6 @@ @menu * Cons Cells:: How lists are made out of cons cells. -* Lists as Boxes:: Graphical notation to explain lists. * List-related Predicates:: Is this object a list? Comparing two lists. * List Elements:: Extracting the pieces of a list. * Building Lists:: Creating list structure. @@ -86,100 +85,17 @@ The @sc{cdr} of any nonempty list @var{l} is a list containing all the elements of @var{l} except the first. -@node Lists as Boxes -@comment node-name, next, previous, up -@section Lists as Linked Pairs of Boxes -@cindex box representation for lists -@cindex lists represented as boxes -@cindex cons cell as box - - A cons cell can be illustrated as a pair of boxes. The first box -represents the @sc{car} and the second box represents the @sc{cdr}. -Here is an illustration of the two-element list, @code{(tulip lily)}, -made from two cons cells: - -@example -@group - --------------- --------------- -| car | cdr | | car | cdr | -| tulip | o---------->| lily | nil | -| | | | | | - --------------- --------------- -@end group -@end example - - Each pair of boxes represents a cons cell. Each box ``refers to'', -``points to'' or ``holds'' a Lisp object. (These terms are -synonymous.) The first box, which describes the @sc{car} of the first -cons cell, contains the symbol @code{tulip}. The arrow from the -@sc{cdr} box of the first cons cell to the second cons cell indicates -that the @sc{cdr} of the first cons cell is the second cons cell. - - The same list can be illustrated in a different sort of box notation -like this: - -@example -@group - --- --- --- --- - | | |--> | | |--> nil - --- --- --- --- - | | - | | - --> tulip --> lily -@end group -@end example - - Here is a more complex illustration, showing the three-element list, -@code{((pine needles) oak maple)}, the first element of which is a -two-element list: - -@example -@group - --- --- --- --- --- --- - | | |--> | | |--> | | |--> nil - --- --- --- --- --- --- - | | | - | | | - | --> oak --> maple - | - | --- --- --- --- - --> | | |--> | | |--> nil - --- --- --- --- - | | - | | - --> pine --> needles -@end group -@end example - - The same list represented in the first box notation looks like this: - -@example -@group - -------------- -------------- -------------- -| car | cdr | | car | cdr | | car | cdr | -| o | o------->| oak | o------->| maple | nil | -| | | | | | | | | | - -- | --------- -------------- -------------- - | - | - | -------------- ---------------- - | | car | cdr | | car | cdr | - ------>| pine | o------->| needles | nil | - | | | | | | - -------------- ---------------- -@end group -@end example - @xref{Cons Cell Type}, for the read and print syntax of cons cells and -lists, and for more ``box and arrow'' illustrations of lists. +lists, and for ``box and arrow'' illustrations of lists. @node List-related Predicates @section Predicates on Lists - The following predicates test whether a Lisp object is an atom, is a -cons cell or is a list, or whether it is the distinguished object -@code{nil}. (Many of these predicates can be defined in terms of the -others, but they are used so often that it is worth having all of them.) + The following predicates test whether a Lisp object is an atom, +whether it is a cons cell or is a list, or whether it is the +distinguished object @code{nil}. (Many of these predicates can be +defined in terms of the others, but they are used so often that it is +worth having all of them.) @defun consp object This function returns @code{t} if @var{object} is a cons cell, @code{nil} @@ -749,9 +665,14 @@ incrementing by @var{separation}, and ending at or just before @var{to}. @var{separation} can be positive or negative and defaults to 1. If @var{to} is @code{nil} or numerically equal to @var{from}, -the one element list @code{(from)} is returned. If @var{separation} -is 0 and @var{to} is neither @code{nil} nor numerically equal to -@var{from}, an error is signaled. +the value is the one-element list @code{(@var{from})}. If @var{to} is +less than @var{from} with a positive @var{separation}, or greater than +@var{from} with a negative @var{separation}, the value is @code{nil} +because those arguments specify an empty sequence. + +If @var{separation} is 0 and @var{to} is neither @code{nil} nor +numerically equal to @var{from}, @code{number-sequence} signals an +error, since those arguments specify an infinite sequence. All arguments can be integers or floating point numbers. However, floating point arguments can be tricky, because floating point
--- a/lispref/loading.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/loading.texi Sat Feb 19 00:06:48 2005 +0000 @@ -1,7 +1,7 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, -@c 2003, 2004 +@c 2003, 2004, 2005 @c Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @setfilename ../info/loading @@ -365,10 +365,12 @@ just @var{filename} with no added suffix. The argument @var{docstring} is the documentation string for the -function. Normally, this should be identical to the documentation string -in the function definition itself. Specifying the documentation string -in the call to @code{autoload} makes it possible to look at the -documentation without loading the function's real definition. +function. Specifying the documentation string in the call to +@code{autoload} makes it possible to look at the documentation without +loading the function's real definition. Normally, this should be +identical to the documentation string in the function definition +itself. If it isn't, the function definition's documentation string +takes effect when it is loaded. If @var{interactive} is non-@code{nil}, that says @var{function} can be called interactively. This lets completion in @kbd{M-x} work without @@ -526,8 +528,7 @@ The simplest way to add an element to an alist is like this: @example -(setq minor-mode-alist - (cons '(leif-mode " Leif") minor-mode-alist)) +(push '(leif-mode " Leif") minor-mode-alist) @end example @noindent @@ -536,12 +537,15 @@ @example (or (assq 'leif-mode minor-mode-alist) - (setq minor-mode-alist - (cons '(leif-mode " Leif") minor-mode-alist))) + (push '(leif-mode " Leif") minor-mode-alist)) @end example - To add an element to a list just once, you can also use @code{add-to-list} -(@pxref{Setting Variables}). +@noindent +or this: + +@example +(add-to-list '(leif-mode " Leif") minor-mode-alist) +@end example Occasionally you will want to test explicitly whether a library has already been loaded. Here's one way to test, in a library, whether it @@ -746,12 +750,12 @@ @item @var{var} The symbol @var{var} was defined as a variable. @item (defun . @var{fun}) -The @var{fun} was defined by this library. +The function @var{fun} was defined. @item (t . @var{fun}) The function @var{fun} was previously an autoload before this library -redefined it as a function. The following element is always the -symbol @var{fun}, which signifies that the library defined @var{fun} -as a function. +redefined it as a function. The following element is always +@code{(defun . @var{fun})}, which represents defining @var{fun} as a +function. @item (autoload . @var{fun}) The function @var{fun} was defined as an autoload. @item (require . @var{feature})
--- a/lispref/minibuf.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/minibuf.texi Sat Feb 19 00:06:48 2005 +0000 @@ -111,7 +111,8 @@ Most often, the minibuffer is used to read text as a string. It can also be used to read a Lisp object in textual form. The most basic primitive for minibuffer input is @code{read-from-minibuffer}; it can do -either one. +either one. There are also specialized commands for reading +commands, variables, file names, etc. (@pxref{Completion}). In most cases, you should not call minibuffer input functions in the middle of a Lisp function. Instead, do all minibuffer input as part of @@ -234,9 +235,11 @@ @code{abort-recursive-edit} @item @kbd{M-n} +@itemx @key{DOWN} @code{next-history-element} @item @kbd{M-p} +@itemx @key{UP} @code{previous-history-element} @item @kbd{M-s}
--- a/lispref/numbers.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/numbers.texi Sat Feb 19 00:06:48 2005 +0000 @@ -73,14 +73,21 @@ @cindex hex numbers @cindex octal numbers @cindex reading numbers in hex, octal, and binary - In addition, the Lisp reader recognizes a syntax for integers in -bases other than 10: @samp{#B@var{integer}} reads @var{integer} in -binary (radix 2), @samp{#O@var{integer}} reads @var{integer} in octal -(radix 8), @samp{#X@var{integer}} reads @var{integer} in hexadecimal -(radix 16), and @samp{#@var{radix}r@var{integer}} reads @var{integer} -in radix @var{radix} (where @var{radix} is between 2 and 36, -inclusively). Case is not significant for the letter after @samp{#} -(@samp{B}, @samp{O}, etc.) that denotes the radix. + The syntax for integers in bases other than 10 uses @samp{#} +followed by a letter that specifies the radix: @samp{b} for binary, +@samp{o} for octal, @samp{x} for hex, or @samp{@var{radix}r} to +specify radix @var{radix}. Case is not significant for the letter +that specifies the radix. Thus, @samp{#b@var{integer}} reads +@var{integer} in binary, and @samp{#@var{radix}r@var{integer}} reads +@var{integer} in radix @var{radix}. Allowed values of @var{radix} run +from 2 to 36. For example: + +@example +#b101100 @result{} 44 +#o54 @result{} 44 +#x2c @result{} 44 +#24r1k @result{} 44 +@end example To understand how various functions work on integers, especially the bitwise operators (@pxref{Bitwise Operations}), it is often helpful to @@ -211,13 +218,12 @@ @node Predicates on Numbers @section Type Predicates for Numbers - The functions in this section test whether the argument is a number or -whether it is a certain sort of number. The functions @code{integerp} -and @code{floatp} can take any type of Lisp object as argument (the -predicates would not be of much use otherwise); but the @code{zerop} -predicate requires a number as its argument. See also -@code{integer-or-marker-p} and @code{number-or-marker-p}, in -@ref{Predicates on Markers}. + The functions in this section test for numbers, or for a specific +type of number. The functions @code{integerp} and @code{floatp} can +take any type of Lisp object as argument (they would not be of much +use otherwise), but the @code{zerop} predicate requires a number as +its argument. See also @code{integer-or-marker-p} and +@code{number-or-marker-p}, in @ref{Predicates on Markers}. @defun floatp object This predicate tests whether its argument is a floating point @@ -251,7 +257,7 @@ This predicate tests whether its argument is zero, and returns @code{t} if so, @code{nil} otherwise. The argument must be a number. -These two forms are equivalent: @code{(zerop x)} @equiv{} @code{(= x 0)}. +@code{(zerop x)} is equivalent to @code{(= x 0)}. @end defun @node Comparison of Numbers @@ -275,10 +281,11 @@ can, even for comparing integers, just in case we change the representation of integers in a future Emacs version. - Sometimes it is useful to compare numbers with @code{equal}; it treats -two numbers as equal if they have the same data type (both integers, or -both floating point) and the same value. By contrast, @code{=} can -treat an integer and a floating point number as equal. + Sometimes it is useful to compare numbers with @code{equal}; it +treats two numbers as equal if they have the same data type (both +integers, or both floating point) and the same value. By contrast, +@code{=} can treat an integer and a floating point number as equal. +@xref{Equality Predicates}. There is another wrinkle: because floating point arithmetic is not exact, it is often a bad idea to check for equality of two floating @@ -309,10 +316,10 @@ @end defun @defun eql value1 value2 -This function compares two floating point numbers like @code{=}, and -compares two integers like @code{=}, and acts like @code{eq} in all -other cases. Thus, @code{(eql 1.0 1)} returns @code{nil}, but -@code{(eql 1.0 1.0)} and @code{(eql 1 1)} both return @code{t}. +This function acts like @code{eq} except when both arguments are +numbers. It compares numbers by type and numberic value, so that +@code{(eql 1.0 1)} returns @code{nil}, but @code{(eql 1.0 1.0)} and +@code{(eql 1 1)} both return @code{t}. @end defun @defun /= number-or-marker1 number-or-marker2 @@ -345,7 +352,7 @@ @defun max number-or-marker &rest numbers-or-markers This function returns the largest of its arguments. -If any of the argument is floating-point, the value is returned +If any of the arguments is floating-point, the value is returned as floating point, even if it was given as an integer. @example @@ -360,7 +367,7 @@ @defun min number-or-marker &rest numbers-or-markers This function returns the smallest of its arguments. -If any of the argument is floating-point, the value is returned +If any of the arguments is floating-point, the value is returned as floating point, even if it was given as an integer. @example @@ -1147,8 +1154,7 @@ @defun expt x y This function returns @var{x} raised to power @var{y}. If both arguments are integers and @var{y} is positive, the result is an -integer; in this case, it is truncated to fit the range of possible -integer values. +integer; in this case, overflow causes truncation, so watch out. @end defun @defun sqrt arg
--- a/lispref/objects.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/objects.texi Sat Feb 19 00:06:48 2005 +0000 @@ -68,14 +68,30 @@ The @dfn{printed representation} of an object is the format of the output generated by the Lisp printer (the function @code{prin1}) for -that object. The @dfn{read syntax} of an object is the format of the -input accepted by the Lisp reader (the function @code{read}) for that -object. @xref{Read and Print}. +that object. Every data type has a unique printed representation. +The @dfn{read syntax} of an object is the format of the input accepted +by the Lisp reader (the function @code{read}) for that object. This +is not necessarily unique; many kinds of object have more than one +syntax. @xref{Read and Print}. - Most objects have more than one possible read syntax. Some types of -object have no read syntax, since it may not make sense to enter objects -of these types directly in a Lisp program. Except for these cases, the -printed representation of an object is also a read syntax for it. +@cindex hash notation + In most cases, an object's printed representation is also a read +syntax for the object. However, some types have no read syntax, since +it does not make sense to enter objects of these types as constants in +a Lisp program. These objects are printed in @dfn{hash notation}: the +characters @samp{#<} followed by a descriptive string (typically the +type name followed by the name of the object), and closed with a +matching @samp{>}. For example: + +@example +(current-buffer) + @result{} #<buffer objects.texi> +@end example + +@noindent +Hash notation cannot be read at all, so the Lisp reader signals the +error @code{invalid-read-syntax} whenever it encounters @samp{#<}. +@kindex invalid-read-syntax In other languages, an expression is text; it has no other form. In Lisp, an expression is primarily a Lisp object and only secondarily the @@ -83,21 +99,6 @@ emphasize this distinction, but you must keep it in the back of your mind, or you will occasionally be very confused. -@cindex hash notation - Every type has a printed representation. Some types have no read -syntax---for example, the buffer type has none. Objects of these types -are printed in @dfn{hash notation}: the characters @samp{#<} followed by -a descriptive string (typically the type name followed by the name of -the object), and closed with a matching @samp{>}. Hash notation cannot -be read at all, so the Lisp reader signals the error -@code{invalid-read-syntax} whenever it encounters @samp{#<}. -@kindex invalid-read-syntax - -@example -(current-buffer) - @result{} #<buffer objects.texi> -@end example - When you evaluate an expression interactively, the Lisp interpreter first reads the textual representation of it, producing a Lisp object, and then evaluates that object (@pxref{Evaluation}). However, @@ -204,9 +205,11 @@ @subsection Floating Point Type Floating point numbers are the computer equivalent of scientific -notation. The precise number of significant figures and the range of -possible exponents is machine-specific; Emacs always uses the C data -type @code{double} to store the value. +notation; you can think of a floating point number as a fraction +together with a power of ten. The precise number of significant +figures and the range of possible exponents is machine-specific; Emacs +uses the C data type @code{double} to store the value, and internally +this records a power of 2 rather than a power of 10. The printed representation for floating point numbers requires either a decimal point (with at least one digit following), an exponent, or @@ -474,9 +477,10 @@ @node Symbol Type @subsection Symbol Type - A @dfn{symbol} in GNU Emacs Lisp is an object with a name. The symbol -name serves as the printed representation of the symbol. In ordinary -use, the name is unique---no two symbols have the same name. + A @dfn{symbol} in GNU Emacs Lisp is an object with a name. The +symbol name serves as the printed representation of the symbol. In +ordinary Lisp use, with one single obarray (@pxref{Creating Symbols}, +a symbol's name is unique---no two symbols have the same name. A symbol can serve as a variable, as a function name, or to hold a property list. Or it may serve only to be distinct from all other Lisp @@ -606,9 +610,38 @@ A @dfn{list} is a series of cons cells, linked together so that the @sc{cdr} slot of each cons cell holds either the next cons cell or the -empty list. @xref{Lists}, for functions that work on lists. Because -most cons cells are used as part of lists, the phrase @dfn{list -structure} has come to refer to any structure made out of cons cells. +empty list. The empty list is actually the symbol @code{nil}. +@xref{Lists}, for functions that work on lists. Because most cons +cells are used as part of lists, the phrase @dfn{list structure} has +come to refer to any structure made out of cons cells. + +@cindex atom + Because cons cells are so central to Lisp, we also have a word for +``an object which is not a cons cell''. These objects are called +@dfn{atoms}. + +@cindex parenthesis + The read syntax and printed representation for lists are identical, and +consist of a left parenthesis, an arbitrary number of elements, and a +right parenthesis. Here are examples of lists: + +@example +(A 2 "A") ; @r{A list of three elements.} +() ; @r{A list of no elements (the empty list).} +nil ; @r{A list of no elements (the empty list).} +("A ()") ; @r{A list of one element: the string @code{"A ()"}.} +(A ()) ; @r{A list of two elements: @code{A} and the empty list.} +(A nil) ; @r{Equivalent to the previous.} +((A B C)) ; @r{A list of one element} + ; @r{(which is a list of three elements).} +@end example + + Upon reading, each object inside the parentheses becomes an element +of the list. That is, a cons cell is made for each element. The +@sc{car} slot of the cons cell holds the element, and its @sc{cdr} +slot refers to the next cons cell of the list, which holds the next +element in the list. The @sc{cdr} slot of the last cons cell is set to +hold @code{nil}. The names @sc{car} and @sc{cdr} derive from the history of Lisp. The original Lisp implementation ran on an @w{IBM 704} computer which @@ -619,25 +652,17 @@ for the function @code{cons} that creates them, which in turn was named for its purpose, the construction of cells. -@cindex atom - Because cons cells are so central to Lisp, we also have a word for -``an object which is not a cons cell''. These objects are called -@dfn{atoms}. +@menu +* Box Diagrams:: Drawing pictures of lists. +* Dotted Pair Notation:: A general syntax for cons cells. +* Association List Type:: A specially constructed list. +@end menu -@cindex parenthesis - The read syntax and printed representation for lists are identical, and -consist of a left parenthesis, an arbitrary number of elements, and a -right parenthesis. - - Upon reading, each object inside the parentheses becomes an element -of the list. That is, a cons cell is made for each element. The -@sc{car} slot of the cons cell holds the element, and its @sc{cdr} -slot refers to the next cons cell of the list, which holds the next -element in the list. The @sc{cdr} slot of the last cons cell is set to -hold @code{nil}. - +@node Box Diagrams +@subsubsection Drawing Lists as Box Diagrams @cindex box diagrams, for lists @cindex diagrams, boxed, for lists + A list can be illustrated by a diagram in which the cons cells are shown as pairs of boxes, like dominoes. (The Lisp reader cannot read such an illustration; unlike the textual notation, which can be @@ -688,19 +713,6 @@ to the symbol @code{nil}. In other words, @code{nil} is both a symbol and a list. - Here are examples of lists written in Lisp syntax: - -@example -(A 2 "A") ; @r{A list of three elements.} -() ; @r{A list of no elements (the empty list).} -nil ; @r{A list of no elements (the empty list).} -("A ()") ; @r{A list of one element: the string @code{"A ()"}.} -(A ()) ; @r{A list of two elements: @code{A} and the empty list.} -(A nil) ; @r{Equivalent to the previous.} -((A B C)) ; @r{A list of one element} - ; @r{(which is a list of three elements).} -@end example - Here is the list @code{(A ())}, or equivalently @code{(A nil)}, depicted with boxes and arrows: @@ -715,27 +727,64 @@ @end group @end example -@menu -* Dotted Pair Notation:: An alternative syntax for lists. -* Association List Type:: A specially constructed list. -@end menu + Here is a more complex illustration, showing the three-element list, +@code{((pine needles) oak maple)}, the first element of which is a +two-element list: + +@example +@group + --- --- --- --- --- --- + | | |--> | | |--> | | |--> nil + --- --- --- --- --- --- + | | | + | | | + | --> oak --> maple + | + | --- --- --- --- + --> | | |--> | | |--> nil + --- --- --- --- + | | + | | + --> pine --> needles +@end group +@end example + + The same list represented in the first box notation looks like this: + +@example +@group + -------------- -------------- -------------- +| car | cdr | | car | cdr | | car | cdr | +| o | o------->| oak | o------->| maple | nil | +| | | | | | | | | | + -- | --------- -------------- -------------- + | + | + | -------------- ---------------- + | | car | cdr | | car | cdr | + ------>| pine | o------->| needles | nil | + | | | | | | + -------------- ---------------- +@end group +@end example @node Dotted Pair Notation -@comment node-name, next, previous, up @subsubsection Dotted Pair Notation @cindex dotted pair notation @cindex @samp{.} in lists - @dfn{Dotted pair notation} is an alternative syntax for cons cells -that represents the @sc{car} and @sc{cdr} explicitly. In this syntax, + @dfn{Dotted pair notation} is a general syntax for cons cells that +represents the @sc{car} and @sc{cdr} explicitly. In this syntax, @code{(@var{a} .@: @var{b})} stands for a cons cell whose @sc{car} is the object @var{a}, and whose @sc{cdr} is the object @var{b}. Dotted -pair notation is therefore more general than list syntax. In the dotted -pair notation, the list @samp{(1 2 3)} is written as @samp{(1 . (2 . (3 -. nil)))}. For @code{nil}-terminated lists, you can use either -notation, but list notation is usually clearer and more convenient. -When printing a list, the dotted pair notation is only used if the -@sc{cdr} of a cons cell is not a list. +pair notation is more general than list syntax because the @sc{cdr} +does not have to be a list. However, it is more cumbersome in cases +where list syntax would work. In dotted pair notation, the list +@samp{(1 2 3)} is written as @samp{(1 . (2 . (3 . nil)))}. For +@code{nil}-terminated lists, you can use either notation, but list +notation is usually clearer and more convenient. When printing a +list, the dotted pair notation is only used if the @sc{cdr} of a cons +cell is not a list. Here's an example using boxes to illustrate dotted pair notation. This example shows the pair @code{(rose . violet)}: @@ -860,8 +909,9 @@ All Emacs Lisp arrays are one-dimensional. (Most other programming languages support multidimensional arrays, but they are not essential; -you can get the same effect with an array of arrays.) Each type of -array has its own read syntax; see the following sections for details. +you can get the same effect with nested one-dimensional arrays.) Each +type of array has its own read syntax; see the following sections for +details. The array type is contained in the sequence type and contains the string type, the vector type, the bool-vector type, and the @@ -1661,6 +1711,9 @@ @item functionp @xref{Functions, functionp}. +@item hash-table-p +@xref{Other Hash, hash-table-p}. + @item integer-or-marker-p @xref{Predicates on Markers, integer-or-marker-p}.
--- a/lispref/streams.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/streams.texi Sat Feb 19 00:06:48 2005 +0000 @@ -338,6 +338,7 @@ @defvar standard-input This variable holds the default input stream---the stream that @code{read} uses when the @var{stream} argument is @code{nil}. +The default is @code{t}, meaning use the minibuffer. @end defvar @node Output Streams @@ -684,6 +685,7 @@ @defvar standard-output The value of this variable is the default output stream---the stream that print functions use when the @var{stream} argument is @code{nil}. +The default is @code{t}, meaning display in the echo area. @end defvar @defvar print-quoted
--- a/lispref/symbols.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/symbols.texi Sat Feb 19 00:06:48 2005 +0000 @@ -115,10 +115,10 @@ @result{} "buffer-file-name" (symbol-value 'buffer-file-name) @result{} "/gnu/elisp/symbols.texi" +(symbol-function 'buffer-file-name) + @result{} #<subr buffer-file-name> (symbol-plist 'buffer-file-name) @result{} (variable-documentation 29529) -(symbol-function 'buffer-file-name) - @result{} #<subr buffer-file-name> @end example @noindent
--- a/lispref/variables.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/lispref/variables.texi Sat Feb 19 00:06:48 2005 +0000 @@ -1429,8 +1429,11 @@ The function @code{kill-all-local-variables} runs this normal hook before it does anything else. This gives major modes a way to arrange for something special to be done if the user switches to a different -major mode. For best results, make this variable buffer-local, so that -it will disappear after doing its job and will not interfere with the +major mode. It is also useful for buffer-specific minor modes +that should be forgotten if the user changes the major mode. + +For best results, make this variable buffer-local, so that it will +disappear after doing its job and will not interfere with the subsequent major mode. @xref{Hooks}. @end defvar
--- a/man/ChangeLog Fri Feb 18 23:22:51 2005 +0000 +++ b/man/ChangeLog Sat Feb 19 00:06:48 2005 +0000 @@ -1,3 +1,76 @@ +2005-02-16 Luc Teirlinck <teirllm@auburn.edu> + + * emacs.texi (Top): Update menu for splitting of node in + msdog.texi. + * frames.texi (Frames): Update xref for splitting of node in + msdog.texi. + * trouble.texi (Quitting): Ditto. + +2005-02-16 Richard M. Stallman <rms@gnu.org> + + * windows.texi (Split Window): Simplify line truncation info + and xref to Display Custom. + + * trouble.texi (Quitting): Emergency escape only for text terminal. + (Screen Garbled): C-l for ungarbling is only for text terminal. + + * text.texi (Text Mode): ESC TAB alternative for M-TAB. + + * sending.texi (Header Editing): ESC TAB alternative for M-TAB. + + * programs.texi (Program Modes): Mention Python mode. + (Moving by Defuns): Repeating C-M-h extends region. + (Basic Indent): Clarify. + (Custom C Indent): Clarify. + (Expressions): Repeating C-M-@ extends region. + (Info Lookup): Clarify for C-h S. + (Symbol Completion): ESC TAB alternative for M-TAB. + (Electric C): Clarify. + + * emacs.texi (Top): Update display.texi and frames.texi submenu data. + + * msdog.texi (MS-DOS Keyboard, MS-DOS Mouse): Split from + MS-DOS Input node. + (MS-DOS Keyboard): Start with explaining DEL and BREAK. + (MS-DOS and MULE): Clarify. + (MS-DOS Processes, Windows Processes): Fix typos. + + * major.texi (Choosing Modes): Clarify. + + * kmacro.texi (Basic Keyboard Macro): Doc F3, F4. + (Keyboard Macro Step-Edit): Clarify. + + * indent.texi (Indentation): Clarifications. + + * help.texi (Help): Correct error about C-h in query-replace. + Clarify apropos vs C-h a. Fix how to search in FAQ. + (Key Help): Describe C-h w here. + (Name Help): Minor cleanup. C-h w moved to Key Help. + Clarify the "object" joke. + (Apropos): Clarify. Mouse-1 like Mouse-2. + (Help Mode): Mouse-1 like Mouse-2. + + * fixit.texi (Spelling): Mention ESC TAB as alt. for M-TAB. + + * display.texi (Display): Reorder menu. + (Faces): Cleanup. + (Font Lock): Cleanup. Mention Options menu. + Delete obsolete text. + (Scrolling): For C-l, don't presume text terminal. + (Horizontal Scrolling): Simplify intro. + (Follow Mode): Clarify. + (Cursor Display): Moved before Display Custom. + (Display Custom): Explain no-redraw-on-reenter is for text terminals. + Doc default-tab-width. Doc line truncation more thoroughly. + + * dired.texi (Dired Enter): C-x C-f can run Dired. + (Dired Visiting): Comment out `a' command. + Mouse-1 is like Mouse-2. + (Shell Commands in Dired): ? can be used more than once. + + * basic.texi (Continuation Lines): Simplify description of truncation, + and refer to Display Custom for the rest of it. + 2005-02-10 Jay Belanger <belanger@truman.edu> * calc.texi: Change @LaTeX to La@TeX throughout.
--- a/man/basic.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/basic.texi Sat Feb 19 00:06:48 2005 +0000 @@ -544,25 +544,16 @@ a line gets too long. Continuation on the screen does not do that. Use Auto Fill mode (@pxref{Filling}) if that's what you want. -@vindex truncate-lines @cindex truncation @cindex line truncation, and fringes As an alternative to continuation, Emacs can display long lines by @dfn{truncation}. This means that all the characters that do not fit -in the width of the screen or window do not appear at all. They -remain in the buffer, temporarily invisible. On terminals, @samp{$} -in the last column informs you that the line has been truncated on the -display. On window systems, a small straight arrow in the fringe to -the right of the window indicates a truncated line. +in the width of the screen or window do not appear at all. @samp{$} +in the last column or a small straight arrow in the fringe to the +right of the window indicates a truncated line. -@findex toggle-truncate-lines - Truncation instead of continuation happens whenever horizontal -scrolling is in use, and optionally in all side-by-side windows -(@pxref{Windows}). You can enable or disable truncation for a -particular buffer with the command @kbd{M-x toggle-truncate-lines}. - - @xref{Display Custom}, for additional variables that affect how text is -displayed. + @xref{Display Custom}, for more information about line truncation, +and other variables that affect how text is displayed. @node Position Info @section Cursor Position Information
--- a/man/dired.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/dired.texi Sat Feb 19 00:06:48 2005 +0000 @@ -48,14 +48,15 @@ @findex dired @kindex C-x d @vindex dired-listing-switches - To invoke Dired, do @kbd{C-x d} or @kbd{M-x dired}. The command reads -a directory name or wildcard file name pattern as a minibuffer argument -to specify which files to list. Where @code{dired} differs from -@code{list-directory} is in putting the buffer into Dired mode so that -the special commands of Dired are available. + To invoke Dired, do @kbd{C-x d} or @kbd{M-x dired}. The command +reads a directory name or wildcard file name pattern as a minibuffer +argument to specify which files to list. @kbd{C-x C-f} given a +directory name also invokes Dired. Where @code{dired} differs from +@code{list-directory} is that it puts the buffer into Dired mode, so +that the special commands of Dired are available. The variable @code{dired-listing-switches} specifies the options to -give to @code{ls} for listing directory; this string @emph{must} contain +give to @code{ls} for listing the directory; this string @emph{must} contain @samp{-l}. If you use a numeric prefix argument with the @code{dired} command, you can specify the @code{ls} switches with the minibuffer before you enter the directory specification. No matter how they are @@ -255,11 +256,13 @@ @kindex e @r{(Dired)} Equivalent to @kbd{f}. +@ignore @c This command seems too risky to document at all. @item a @kindex a @r{(Dired)} @findex dired-find-alternate-file Like @kbd{f}, but replaces the contents of the Dired buffer with that of an alternate file or directory (@code{dired-find-alternate-file}). +@end ignore @item o @kindex o @r{(Dired)} @@ -275,7 +278,8 @@ Visit the file described on the current line, and display the buffer in another window, but do not select that window (@code{dired-display-file}). -@item Mouse-2 +@item Mouse-1 +@itemx Mouse-2 @findex dired-mouse-find-file-other-window Visit the file named by the line you click on (@code{dired-mouse-find-file-other-window}). This uses another window @@ -697,10 +701,10 @@ file. @item -If the command string contains @samp{?} surrounded by whitespace, the -current file name is substituted for @samp{?}. You can use @samp{?} -this way more than once in the command, and each occurrence is -replaced. +However, if the command string contains @samp{?} surrounded by +whitespace, the current file name is substituted for @samp{?} (rather +than added at the end). You can use @samp{?} this way more than once +in the command, and the same file name replaces each occurrence. @end itemize To iterate over the file names in a more complicated fashion, use an
--- a/man/display.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/display.texi Sat Feb 19 00:06:48 2005 +0000 @@ -23,20 +23,20 @@ * Selective Display:: Hiding lines with lots of indentation. * Optional Mode Line:: Optional mode line display features. * Text Display:: How text characters are normally displayed. +* Cursor Display:: Features for displaying the cursor. * Display Custom:: Information on variables for customizing display. -* Cursor Display:: Features for displaying the cursor. @end menu @node Faces @section Using Multiple Typefaces @cindex faces - Emacs supports using multiple styles of displaying characters. Each -style is called a @dfn{face}. Each face can specify various @dfn{face -attributes}, such as the font family, the height, weight and slant of -the characters, the foreground and background color, and underlining -or overlining. A face does not have to specify all of these -attributes; often it inherits many of them from another face. + You can specify various styles for displaying text using +@dfn{faces}. Each face can specify various @dfn{face attributes}, +such as the font family, the height, weight and slant of the +characters, the foreground and background color, and underlining or +overlining. A face does not have to specify all of these attributes; +often it inherits most of them from another face. On a window system, all the Emacs face attributes are meaningful. On a character terminal, only some of them work. Some character @@ -196,7 +196,7 @@ @cindex syntax highlighting and coloring Font Lock mode is a minor mode, always local to a particular buffer, -which highlights (or ``fontifies'') using various faces according to +which highlights (or ``fontifies'') the buffer contents according to the syntax of the text you are editing. It can recognize comments and strings in most languages; in several languages, it can also recognize and properly highlight various other important constructs---for @@ -227,6 +227,10 @@ (global-font-lock-mode 1) @end example +@noindent +You can also specify this using the menu bar Options menu, specifying +first Syntax Highlighting and then Save Options. + Font Lock mode uses several specifically named faces to do its job, including @code{font-lock-string-face}, @code{font-lock-comment-face}, and others. The easiest way to find them all is to use completion @@ -248,10 +252,6 @@ described in @ref{Face Customization}. @end itemize - To get the full benefit of Font Lock mode, you need to choose a -default font which has bold, italic, and bold-italic variants; or else -you need to have a color or gray-scale screen. - @vindex font-lock-maximum-decoration The variable @code{font-lock-maximum-decoration} specifies the preferred level of fontification, for modes that provide multiple @@ -447,9 +447,10 @@ @kindex C-l @findex recenter The most basic scrolling command is @kbd{C-l} (@code{recenter}) with -no argument. It clears the entire screen and redisplays all windows. -In addition, it scrolls the selected window so that point is halfway -down from the top of the window. +no argument. It scrolls the selected window so that point is halfway +down from the top of the window. On a text terminal, it also clears +the screen and redisplays all windows. That is useful in case the +screen is garbled (@pxref{Screen Garbled}). @kindex C-v @kindex M-v @@ -566,17 +567,12 @@ @dfn{Horizontal scrolling} means shifting all the lines sideways within a window---so that some of the text near the left margin is not -displayed at all. Emacs does this automatically in any window that -uses line truncation rather than continuation: whenever point moves -off the left or right edge of the screen, Emacs scrolls the buffer -horizontally to make point visible. - - When a window has been scrolled horizontally, text lines are truncated -rather than continued (@pxref{Continuation Lines}), with a @samp{$} -appearing in the first column when there is text truncated to the left, -and in the last column when there is text truncated to the right. - - You can use these commands to do explicit horizontal scrolling. +displayed at all. When the text in a window is scrolled horizontally, +text lines are truncated rather than continued (@pxref{Display +Custom}). Whenever a window shows truncated lines, Emacs +automatically updates its horizontal scrolling whenever point moves +off the left or right edge of the screen. You can also use these +commands to do explicit horizontal scrolling. @table @kbd @item C-x < @@ -602,10 +598,10 @@ calculate the argument precisely for @w{@kbd{C-x >}}; any sufficiently large argument will restore the normal display. - If you scroll a window horizontally by hand, that sets a lower bound -for automatic horizontal scrolling. Automatic scrolling will continue -to scroll the window, but never farther to the right than the amount -you previously set by @code{scroll-left}. + If you use those commands to scroll a window horizontally, that sets +a lower bound for automatic horizontal scrolling. Automatic scrolling +will continue to scroll the window, but never farther to the right +than the amount you previously set by @code{scroll-left}. @vindex hscroll-margin The value of the variable @code{hscroll-margin} controls how close @@ -708,12 +704,12 @@ @cindex windows, synchronizing @cindex synchronizing windows - @dfn{Follow mode} is a minor mode that makes two windows showing the -same buffer scroll as one tall ``virtual window.'' To use Follow mode, -go to a frame with just one window, split it into two side-by-side -windows using @kbd{C-x 3}, and then type @kbd{M-x follow-mode}. From -then on, you can edit the buffer in either of the two windows, or scroll -either one; the other window follows it. + @dfn{Follow mode} is a minor mode that makes two windows, both +showing the same buffer, scroll as a single tall ``virtual window.'' +To use Follow mode, go to a frame with just one window, split it into +two side-by-side windows using @kbd{C-x 3}, and then type @kbd{M-x +follow-mode}. From then on, you can edit the buffer in either of the +two windows, or scroll either one; the other window follows it. In Follow mode, if you move point outside the portion visible in one window and into the portion visible in the other window, that selects @@ -756,6 +752,9 @@ precedes hidden lines. Then there is no visible indication of the hidden lines. This variable becomes local automatically when set. + See also @ref{Outline Mode} for another way to hide part of +the text in a buffer. + @node Optional Mode Line @section Optional Mode Line Features @@ -914,6 +913,46 @@ them), otherwise as escape sequences. @xref{Single-Byte Character Support}. +@node Cursor Display +@section Displaying the Cursor + +@findex blink-cursor-mode +@vindex blink-cursor-alist +@cindex cursor, locating visually +@cindex cursor, blinking + You can customize the cursor's color, and whether it blinks, using +the @code{cursor} Custom group (@pxref{Easy Customization}). On +graphical terminals, the command @kbd{M-x blink-cursor-mode} enables +or disables the blinking of the cursor. (On text terminals, the +terminal itself blinks the cursor, and Emacs has no control over it.) +You can control how the cursor appears when it blinks off by setting +the variable @code{blink-cursor-alist}. + +@cindex cursor in non-selected windows +@vindex cursor-in-non-selected-windows + Normally, the cursor appears in non-selected windows in the ``off'' +state, with the same appearance as when the blinking cursor blinks +``off''. For a box cursor, this is a hollow box; for a bar cursor, +this is a thinner bar. To turn off cursors in non-selected windows, +customize the variable @code{cursor-in-non-selected-windows} and assign +it a @code{nil} value. + +@vindex x-stretch-cursor +@cindex wide block cursor + On graphical terminals, Emacs can optionally draw the block cursor +as wide as the character under the cursor---for example, if the cursor +is on a tab character, it would cover the full width occupied by that +tab character. To enable this feature, set the variable +@code{x-stretch-cursor} to a non-@code{nil} value. + +@findex hl-line-mode +@findex global-hl-line-mode +@cindex highlight current line + If you find it hard to see the cursor, you might like HL Line mode, +a minor mode that highlights the line containing point. Use @kbd{M-x +hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x +global-hl-line-mode} enables or disables the same mode globally. + @node Display Custom @section Customization of Display @@ -937,18 +976,19 @@ If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts to make the whole screen blink when it would normally make an audible bell sound. This variable has no effect if your terminal does not have a way -to make the screen blink.@refill +to make the screen blink. @vindex no-redraw-on-reenter - When you reenter Emacs after suspending, Emacs normally clears the -screen and redraws the entire display. On some terminals with more than -one page of memory, it is possible to arrange the termcap entry so that -the @samp{ti} and @samp{te} strings (output to the terminal when Emacs -is entered and exited, respectively) switch between pages of memory so -as to use one page for Emacs and another page for other output. Then -you might want to set the variable @code{no-redraw-on-reenter} -non-@code{nil}; this tells Emacs to assume, when resumed, that the -screen page it is using still contains what Emacs last wrote there. + On a text terminal, when you reenter Emacs after suspending, Emacs +normally clears the screen and redraws the entire display. On some +terminals with more than one page of memory, it is possible to arrange +the termcap entry so that the @samp{ti} and @samp{te} strings (output +to the terminal when Emacs is entered and exited, respectively) switch +between pages of memory so as to use one page for Emacs and another +page for other output. Then you might want to set the variable +@code{no-redraw-on-reenter} non-@code{nil}; this tells Emacs to +assume, when resumed, that the screen page it is using still contains +what Emacs last wrote there. @vindex echo-keystrokes The variable @code{echo-keystrokes} controls the echoing of multi-character @@ -964,6 +1004,7 @@ elisp, The Emacs Lisp Reference Manual}. @vindex tab-width +@vindex default-tab-width Normally, a tab character in the buffer is displayed as whitespace which extends to the next display tab stop position, and display tab stops come at intervals equal to eight spaces. The number of spaces per tab is @@ -971,18 +1012,31 @@ changing it, just like @code{ctl-arrow}. Note that how the tab character in the buffer is displayed has nothing to do with the definition of @key{TAB} as a command. The variable @code{tab-width} must have an -integer value between 1 and 1000, inclusive. +integer value between 1 and 1000, inclusive. The variable +@code{default-tab-width} controls the default value of this variable +for buffers where you have not set it locally. -@c @vindex truncate-lines @c No index entry here, because we have one -@c in the continuation section. - If the variable @code{truncate-lines} is non-@code{nil}, then each -line of text gets just one screen line for display; if the text line is -too long, display shows only the part that fits. If -@code{truncate-lines} is @code{nil}, then long text lines display as -more than one screen line, enough to show the whole text of the line. -@xref{Continuation Lines}. Altering the value of @code{truncate-lines} -makes it local to the current buffer; until that time, the default value -is in effect. The default is initially @code{nil}. +@cindex truncation +@cindex line truncation, and fringes + As an alternative to continuation, Emacs can display long lines by +@dfn{truncation}. This means that all the characters that do not fit +in the width of the screen or window do not appear at all. On +graphical terminals, a small straight arrow in the fringe indicates +truncation at either end of the line. On text terminals, @samp{$} +appears in the first column when there is text truncated to the left, +and in the last column when there is text truncated to the right. + +@vindex truncate-lines +@findex toggle-truncate-lines + Horizontal scrolling automatically causes line truncation +(@pxref{Horizontal Scrolling}). You can explicitly enable line +truncation for a particular buffer with the command @kbd{M-x +toggle-truncate-lines}. This works by locally changing the variable +@code{truncate-lines}. If that variable is non-@code{nil}, long lines +are truncated; if it is @code{nil}, they are continued onto multiple +screen lines. Setting the variable @code{truncate-lines} in any way +makes it local to the current buffer; until that time, the default +value is in effect. The default value is normally @code{nil}. @c @vindex truncate-partial-width-windows @c Idx entry is in Split Windows. If the variable @code{truncate-partial-width-windows} is @@ -1066,46 +1120,6 @@ @code{tty-suppress-bold-inverse-default-colors} with a non-@code{nil} argument to suppress the effect of bold-face in this case. -@node Cursor Display -@section Displaying the Cursor - -@findex blink-cursor-mode -@vindex blink-cursor-alist -@cindex cursor, locating visually -@cindex cursor, blinking - You can customize the cursor's color, and whether it blinks, using -the @code{cursor} Custom group (@pxref{Easy Customization}). On -graphical terminals, the command @kbd{M-x blink-cursor-mode} enables -or disables the blinking of the cursor. (On text terminals, the -terminal itself blinks the cursor, and Emacs has no control over it.) -You can control how the cursor appears when it blinks off by setting -the variable @code{blink-cursor-alist}. - -@cindex cursor in non-selected windows -@vindex cursor-in-non-selected-windows - Normally, the cursor appears in non-selected windows in the ``off'' -state, with the same appearance as when the blinking cursor blinks -``off''. For a box cursor, this is a hollow box; for a bar cursor, -this is a thinner bar. To turn off cursors in non-selected windows, -customize the variable @code{cursor-in-non-selected-windows} and assign -it a @code{nil} value. - -@vindex x-stretch-cursor -@cindex wide block cursor - On graphical terminals, Emacs can optionally draw the block cursor -as wide as the character under the cursor---for example, if the cursor -is on a tab character, it would cover the full width occupied by that -tab character. To enable this feature, set the variable -@code{x-stretch-cursor} to a non-@code{nil} value. - -@findex hl-line-mode -@findex global-hl-line-mode -@cindex highlight current line - If you find it hard to see the cursor, you might like HL Line mode, -a minor mode that highlights the line containing point. Use @kbd{M-x -hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x -global-hl-line-mode} enables or disables the same mode globally. - @ignore arch-tag: 2219f910-2ff0-4521-b059-1bd231a536c4 @end ignore
--- a/man/emacs.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/emacs.texi Sat Feb 19 00:06:48 2005 +0000 @@ -305,12 +305,19 @@ Controlling the Display +* Faces:: How to change the display style using faces. +* Font Lock:: Minor mode for syntactic highlighting using faces. +* Highlight Changes:: Using colors to show where you changed the buffer. +* Highlight Interactively:: Tell Emacs what text to highlight. * Scrolling:: Moving text up and down in a window. * Horizontal Scrolling:: Moving text left and right in a window. +* Fringes:: Enabling or disabling window fringes. +* Useless Whitespace:: Showing possibly-spurious trailing whitespace. * Follow Mode:: Follow mode lets two windows scroll as one. * Selective Display:: Hiding lines with lots of indentation. * Optional Mode Line:: Optional mode line display features. -* Text Display:: How text is normally displayed. +* Text Display:: How text characters are normally displayed. +* Cursor Display:: Features for displaying the cursor. * Display Custom:: Information on variables for customizing display. Searching and Replacement @@ -418,15 +425,11 @@ * Frame Parameters:: Changing the colors and other modes of frames. * Scroll Bars:: How to enable and disable scroll bars; how to use them. * Wheeled Mice:: Using mouse wheels for scrolling. +* Drag and Drop:: Using drag and drop to open files and insert text. * Menu Bars:: Enabling and disabling the menu bar. * Tool Bars:: Enabling and disabling the tool bar. * Dialog Boxes:: Controlling use of dialog boxes. -* Faces:: How to change the display style using faces. -* Font Lock:: Minor mode for syntactic highlighting using faces. -* Highlight Changes:: Using colors to show where you changed the buffer. -* Highlight Interactively:: Tell Emacs what text to highlight. -* Useless Whitespace:: Showing possibly-spurious trailing whitespace. -* Tooltips:: Showing "tooltips", AKA "ballon help" for active text. +* Tooltips:: Showing "tooltips", AKA "balloon help" for active text. * Mouse Avoidance:: Moving the mouse pointer out of the way. * Non-Window Terminals:: Multiple frames on terminals that show only one. * XTerm Mouse:: Using the mouse in an XTerm terminal emulator. @@ -828,7 +831,8 @@ MS-DOS and Windows 95/98/NT -* MS-DOS Input:: Keyboard and mouse usage on MS-DOS. +* MS-DOS Keyboard:: Keyboard usage on MS-DOS. +* MS-DOS Mouse:: Mouse usage on MS-DOS. * MS-DOS Display:: Fonts, frames and display size on MS-DOS. * MS-DOS File Names:: File-name conventions on MS-DOS. * Text and Binary:: Text files on MS-DOS use CRLF to separate lines.
--- a/man/fixit.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/fixit.texi Sat Feb 19 00:06:48 2005 +0000 @@ -302,10 +302,11 @@ The command @code{ispell-complete-word}, which is bound to the key @kbd{M-@key{TAB}} in Text mode and related modes, shows a list of completions based on spelling correction. Insert the beginning of a -word, and then type @kbd{M-@key{TAB}}; the command displays a completion -list window. To choose one of the completions listed, click -@kbd{Mouse-2} on it, or move the cursor there in the completions window -and type @key{RET}. @xref{Text Mode}. +word, and then type @kbd{M-@key{TAB}}; the command displays a +completion list window. (If your window manager intercepts +@kbd{M-@key{TAB}}, type @kbd{@key{ESC} @key{TAB}}.) To choose one of +the completions listed, click @kbd{Mouse-2} on it, or move the cursor +there in the completions window and type @key{RET}. @xref{Text Mode}. @ignore @findex reload-ispell
--- a/man/frames.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/frames.texi Sat Feb 19 00:06:48 2005 +0000 @@ -27,7 +27,7 @@ Emacs compiled for MS-DOS emulates some aspects of the window system so that you can use many of the features described in this chapter. -@xref{MS-DOS Input}, for more information. +@xref{MS-DOS Mouse}, for more information. @menu * Mouse Commands:: Moving, cutting, and pasting, with the mouse.
--- a/man/help.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/help.texi Sat Feb 19 00:06:48 2005 +0000 @@ -25,11 +25,10 @@ option, you can use @key{SPC} or @key{DEL} to scroll through the list. @kbd{C-h} or @key{F1} means ``help'' in various other contexts as -well. For example, in the middle of @code{query-replace}, it describes -the options available for how to operate on the current match. After a -prefix key, it displays a list of the alternatives that can follow the -prefix key. (A few prefix keys don't support @kbd{C-h}, because they -define other meanings for it, but they all support @key{F1}.) +well. After a prefix key, it displays a list of the alternatives that +can follow the prefix key. (A few prefix keys don't support +@kbd{C-h}, because they define other meanings for it, but they all +support @key{F1}.) Most help buffers use a special major mode, Help mode, which lets you scroll conveniently with @key{SPC} and @key{DEL}. It also offers @@ -51,9 +50,8 @@ command displays to find what you are looking for. @xref{Apropos}. @item M-x apropos @key{RET} @var{topic} @key{RET} -This works like @kbd{C-h a}, but it also searches for variables, -in case the feature you are looking for is controlled by a variable -rather than a command. @xref{Apropos}. +This works like @kbd{C-h a}, but it also searches for noninteractive +functions and for variables. @xref{Apropos}. @item M-x apropos-documentation @key{RET} @var{topic} @key{RET} This searches the @emph{documentation strings} (the built-in short @@ -72,8 +70,8 @@ indices. @item C-h C-f -This brings up the Emacs FAQ, where you can use the usual search -commands (@pxref{Search}) to find the information. +This brings up the Emacs FAQ. You can use the Info commands +to browse it. @item C-h p Finally, you can try looking up a suitable package using keywords @@ -198,6 +196,13 @@ @kbd{C-h c} and @kbd{C-h k} work for any sort of key sequences, including function keys and mouse events. +@kindex C-h w +@findex where-is + @kbd{C-h w @var{command} @key{RET}} tells you what keys are bound to +@var{command}. It displays a list of the keys in the echo area. If it +says the command is not on any key, you must use @kbd{M-x} to run it. +@kbd{C-h w} runs the command @code{where-is}. + @node Name Help @section Help by Command or Variable Name @@ -217,15 +222,15 @@ way to get the documentation of a command that is not bound to any key (one which you would normally run using @kbd{M-x}). - @kbd{C-h f} is also useful for Lisp functions that you are planning to -use in a Lisp program. For example, if you have just written the -expression @code{(make-vector len)} and want to check that you are using -@code{make-vector} properly, type @kbd{C-h f make-vector @key{RET}}. -Because @kbd{C-h f} allows all function names, not just command names, -you may find that some of your favorite abbreviations that work in -@kbd{M-x} don't work in @kbd{C-h f}. An abbreviation may be unique -among command names yet fail to be unique when other function names are -allowed. + @kbd{C-h f} is also useful for Lisp functions that you are planning +to use in a Lisp program. For example, if you have just written the +expression @code{(make-vector len)} and want to check that you are +using @code{make-vector} properly, type @kbd{C-h f make-vector +@key{RET}}. Because @kbd{C-h f} allows all function names, not just +command names, you may find that some of your favorite completion +abbreviations that work in @kbd{M-x} don't work in @kbd{C-h f}. An +abbreviation may be unique among command names, yet fail to be unique +when other function names are allowed. The default function name for @kbd{C-h f} to describe, if you type just @key{RET}, is the name of the function called by the innermost Lisp @@ -241,13 +246,6 @@ that is all you want to know, just type @kbd{C-g} to cancel the @kbd{C-h f} command, then go on editing. -@kindex C-h w -@findex where-is - @kbd{C-h w @var{command} @key{RET}} tells you what keys are bound to -@var{command}. It displays a list of the keys in the echo area. If it -says the command is not on any key, you must use @kbd{M-x} to run it. -@kbd{C-h w} runs the command @code{where-is}. - @kbd{C-h v} (@code{describe-variable}) is like @kbd{C-h f} but describes Lisp variables instead of Lisp functions. Its default is the Lisp symbol around or before point, but only if that is the name of a known Lisp @@ -257,8 +255,9 @@ normally have hyperlinks to the Lisp definition, if you have the Lisp source files installed. If you know Lisp, this provides the ultimate documentation. If you don't know Lisp, you should learn it. If you -are treating Emacs as an object file, then you are just @emph{using} -Emacs. For real intimacy with Emacs, you must read the source code. +are just @emph{using} Emacs, treating Emacs as an object (file), then +you don't really love it. For true intimacy with your editor, you +need to read the source code. @node Apropos @section Apropos @@ -278,11 +277,11 @@ normally checks only commands (interactive functions); if you specify a prefix argument, it checks noninteractive functions as well. - Because @kbd{C-h a} looks only for functions whose names contain the -string you specify, you must use ingenuity in choosing the -string. If you are looking for commands for killing backwards and -@kbd{C-h a kill-backwards @key{RET}} doesn't reveal any, don't give up. -Try just @kbd{kill}, or just @kbd{backwards}, or just @kbd{back}. Be + Because @kbd{C-h a} looks only for commands whose names contain the +string you specify, you must use ingenuity in choosing the string. If +you are looking for commands for killing backwards and @kbd{C-h a +kill-backwards @key{RET}} doesn't reveal any, don't give up. Try just +@kbd{kill}, or just @kbd{backwards}, or just @kbd{back}. Be persistent. Also note that you can use a regular expression as the argument, for more flexibility (@pxref{Regexps}). @@ -330,7 +329,7 @@ If you want more information about a function definition, variable or symbol property listed in the Apropos buffer, you can click on it with -@kbd{Mouse-2} or move there and type @key{RET}. +@kbd{Mouse-1} or @kbd{Mouse-2}, or move there and type @key{RET}. @node Library Keywords @section Keyword Search for Lisp Libraries @@ -421,16 +420,17 @@ Move point forward to the next cross reference. @item S-@key{TAB} Move point back to the previous cross reference. -@item Mouse-2 +@item Mouse-1 +@itemx Mouse-2 Follow a cross reference that you click on. @end table - When a command name (@pxref{M-x,, Running Commands by Name}) or + When a function name (@pxref{M-x,, Running Commands by Name}) or variable name (@pxref{Variables}) appears in the documentation, it -normally appears inside paired single-quotes. You can click on the name -with @kbd{Mouse-2}, or move point there and type @key{RET}, to view the -documentation of that command or variable. Use @kbd{C-c C-b} to retrace -your steps. +normally appears inside paired single-quotes. You can click on the +name with @kbd{Mouse-1} or @kbd{Mouse-2}, or move point there and type +@key{RET}, to view the documentation of that command or variable. Use +@kbd{C-c C-b} to retrace your steps. @kindex @key{TAB} @r{(Help mode)} @findex help-next-ref
--- a/man/indent.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/indent.texi Sat Feb 19 00:06:48 2005 +0000 @@ -16,7 +16,7 @@ Perform @key{RET} followed by @key{TAB} (@code{newline-and-indent}). @item M-^ Merge the previous and the current line (@code{delete-indentation}). -This would cancel out the effect of @kbd{C-j}. +This would cancel the effect of a preceding @kbd{C-j}. @item C-M-o Split the current line at point; text on the line after point becomes a new line indented to the same column where point is located @@ -25,9 +25,9 @@ Move (forward or back) to the first nonblank character on the current line (@code{back-to-indentation}). @item C-M-\ -Indent several lines to the same column (@code{indent-region}). +Indent lines in the region to the same column (@code{indent-region}). @item C-x @key{TAB} -Shift a block of lines rigidly right or left (@code{indent-rigidly}). +Shift lines in the region rigidly right or left (@code{indent-rigidly}). @item M-i Indent from point to the next prespecified tab stop column (@code{tab-to-tab-stop}). @@ -47,11 +47,11 @@ stop is eight. @xref{Display Custom}, for more details. @item -Advance to the next tab stop. You can set tab stops at your choice of -column positions, then type @kbd{M-i} to advance to the next tab stop. -The default is to have tab stops every eight columns, which means by -default @kbd{M-i} inserts a tab character. To set the tab stops, use -@kbd{M-x edit-tab-stops}. +Insert whitespace up to the next tab stop. You can set tab stops at +your choice of column positions, then type @kbd{M-i} to advance to the +next tab stop. The default tab stop settings have a tab stop every +eight columns, which means by default @kbd{M-i} inserts a tab +character. To set the tab stops, use @kbd{M-x edit-tab-stops}. @item Align a line with the previous line. More precisely, the command @@ -72,15 +72,11 @@ type @key{TAB}, it aligns the line as a whole. @end enumerate - Normally, all of the above methods insert an optimal mix of tabs and + Normally, most of the above methods insert an optimal mix of tabs and spaces to align to the desired column. @xref{Just Spaces}, for how to disable use of tabs. However, @kbd{C-q @key{TAB}} always inserts a tab, even when tabs are disabled for the indentation commands. -@c In Text mode, @key{TAB} runs the command @code{tab-to-tab-stop}, which -@c indents to the next tab stop column. You can set the tab stops with -@c @kbd{M-x edit-tab-stops}. - @menu * Indentation Commands:: Various commands and techniques for indentation. * Tab Stops:: You can set arbitrary "tab stops" and then
--- a/man/kmacro.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/kmacro.texi Sat Feb 19 00:06:48 2005 +0000 @@ -46,6 +46,7 @@ @table @kbd @item C-x ( +@itemx @key{F3} Start defining a keyboard macro (@code{kmacro-start-macro}). @item C-x ) End the definition of a keyboard macro (@code{kmacro-end-macro}). @@ -53,6 +54,10 @@ Execute the most recent keyboard macro (@code{kmacro-end-and-call-macro}). First end the definition of the keyboard macro, if currently defining it. To immediately execute the keyboard macro again, just repeat the @kbd{e}. +@item @key{F4} +If a keyboard macro is being defined, end the definition; otherwise, +execute the most recent keyboard macro +(@code{kmacro-end-or-call-macro}). @item C-u C-x ( Re-execute last keyboard macro, then add more keys to its definition. @item C-u C-u C-x ( @@ -120,6 +125,10 @@ indefinitely (until it gets an error or you type @kbd{C-g} or, on MS-DOS, @kbd{C-@key{BREAK}}). + The key @key{F4} is like a combination of @kbd{C-x )} and @kbd{C-x +e}. If you're defining a macro, @key{F4} ends the definition. +Otherwise it executes the last macro. + If you wish to repeat an operation at regularly spaced places in the text, define a macro and include as part of the macro the commands to move to the next place you want to use it. For example, if you want to change @@ -490,18 +499,16 @@ @findex kmacro-step-edit-macro @kindex C-x C-k SPC - You can interactively and stepwise replay and edit the last keyboard -macro one command at a time by typing @kbd{C-x C-k SPC} + You can interactively replay and edit the last keyboard +macro, one command at a time, by typing @kbd{C-x C-k SPC} (@code{kmacro-step-edit-macro}). Unless you quit the macro using @kbd{q} or @kbd{C-g}, the edited macro replaces the last macro on the macro ring. -This shows the last macro in the minibuffer together with the first -(or next) command to be executed, and prompts you for an action. -You can enter @kbd{?} to get a command summary. - -The following commands are available in the step-edit mode and relate -to the first (or current) command in the keyboard macro: + This macro editing feature shows the last macro in the minibuffer +together with the first (or next) command to be executed, and prompts +you for an action. You can enter @kbd{?} to get a summary of your +options. These actions are available: @itemize @bullet{} @item
--- a/man/major.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/major.texi Sat Feb 19 00:06:48 2005 +0000 @@ -92,14 +92,14 @@ @code{(@t{"\\.c\\'"} . c-mode)}, and it is responsible for selecting C mode for files whose names end in @file{.c}. (Note that @samp{\\} is needed in Lisp syntax to include a @samp{\} in the string, which must -be used to suppress the special meaning of @samp{.} in regexps.) If the -element has the form @code{(@var{regexp} @var{mode-function} +be used to suppress the special meaning of @samp{.} in regexps.) If +the element has the form @code{(@var{regexp} @var{mode-function} @var{flag})} and @var{flag} is non-@code{nil}, then after calling -@var{mode-function}, the suffix that matched @var{regexp} is discarded -and the list is searched again for another match. +@var{mode-function}, Emacs discards the suffix that matched +@var{regexp} and searches the list again for another match. - You can specify which major mode should be used for editing a certain -file by a special sort of text in the first nonblank line of the file. The + You can specify the major mode to use for editing a certain file by +special text in the first nonblank line of the file. The mode name should appear in this line both preceded and followed by @samp{-*-}. Other text may appear on the line as well. For example, @@ -166,6 +166,7 @@ @vindex change-major-mode-with-file-name The commands @kbd{C-x C-w} and @code{set-visited-file-name} change to a new major mode if the new file name implies a mode (@pxref{Saving}). +(@kbd{C-x C-s} does this too, if the buffer wasn't visiting a file.) However, this does not happen if the buffer contents specify a major mode, and certain ``special'' major modes do not allow the mode to change. You can turn off this mode-changing feature by setting
--- a/man/msdog.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/msdog.texi Sat Feb 19 00:06:48 2005 +0000 @@ -24,7 +24,8 @@ Windows version. @menu -* Input: MS-DOS Input. Keyboard and mouse usage on MS-DOS. +* Keyboard: MS-DOS Keyboard. Keyboard conventions on MS-DOS. +* Mouse: MS-DOS Mouse. Mouse conventions on MS-DOS. * Display: MS-DOS Display. Fonts, frames and display size on MS-DOS. * Files: MS-DOS File Names. File name conventions on MS-DOS. * Text and Binary:: Text files on MS-DOS use CRLF to separate lines. @@ -35,8 +36,28 @@ * Windows System Menu:: Controlling what the ALT key does. @end menu -@node MS-DOS Input -@section Keyboard and Mouse on MS-DOS +@node MS-DOS Keyboard +@section Keyboard Usage on MS-DOS + +@kindex DEL @r{(MS-DOS)} +@kindex BS @r{(MS-DOS)} + The key that is called @key{DEL} in Emacs (because that's how it is +designated on most workstations) is known as @key{BS} (backspace) on a +PC. That is why the PC-specific terminal initialization remaps the +@key{BS} key to act as @key{DEL}; the @key{DELETE} key is remapped to act +as @kbd{C-d} for the same reasons. + +@kindex C-g @r{(MS-DOS)} +@kindex C-BREAK @r{(MS-DOS)} +@cindex quitting on MS-DOS + Emacs built for MS-DOS recognizes @kbd{C-@key{BREAK}} as a quit +character, just like @kbd{C-g}. This is because Emacs cannot detect +that you have typed @kbd{C-g} until it is ready for more input. As a +consequence, you cannot use @kbd{C-g} to stop a running command +(@pxref{Quitting}). By contrast, @kbd{C-@key{BREAK}} @emph{is} detected +as soon as you type it (as @kbd{C-g} is on other systems), so it can be +used to stop a running command and for emergency escape +(@pxref{Emergency Escape}). @cindex Meta (under MS-DOS) @cindex Hyper (under MS-DOS) @@ -68,25 +89,8 @@ (define-key function-key-map [kp-enter] [?\C-j]) @end smallexample -@kindex DEL @r{(MS-DOS)} -@kindex BS @r{(MS-DOS)} - The key that is called @key{DEL} in Emacs (because that's how it is -designated on most workstations) is known as @key{BS} (backspace) on a -PC. That is why the PC-specific terminal initialization remaps the -@key{BS} key to act as @key{DEL}; the @key{DEL} key is remapped to act -as @kbd{C-d} for the same reasons. - -@kindex C-g @r{(MS-DOS)} -@kindex C-BREAK @r{(MS-DOS)} -@cindex quitting on MS-DOS - Emacs built for MS-DOS recognizes @kbd{C-@key{BREAK}} as a quit -character, just like @kbd{C-g}. This is because Emacs cannot detect -that you have typed @kbd{C-g} until it is ready for more input. As a -consequence, you cannot use @kbd{C-g} to stop a running command -(@pxref{Quitting}). By contrast, @kbd{C-@key{BREAK}} @emph{is} detected -as soon as you type it (as @kbd{C-g} is on other systems), so it can be -used to stop a running command and for emergency escape -(@pxref{Emergency Escape}). +@node MS-DOS Mouse +@section Mouse Usage on MS-DOS @cindex mouse support under MS-DOS Emacs on MS-DOS supports a mouse (on the default terminal only). @@ -281,7 +285,7 @@ @cindex @env{HOME} directory under MS-DOS MS-DOS has no notion of home directory, so Emacs on MS-DOS pretends -that the directory where it is installed is the value of @env{HOME} +that the directory where it is installed is the value of the @env{HOME} environment variable. That is, if your Emacs binary, @file{emacs.exe}, is in the directory @file{c:/utils/emacs/bin}, then Emacs acts as if @env{HOME} were set to @samp{c:/utils/emacs}. In @@ -603,11 +607,11 @@ MS-DOS normally doesn't allow use of several codepages in a single session. MS-DOS was designed to load a single codepage at system startup, and require you to reboot in order to change -it@footnote{Normally, one particular codepage is burnt into the display -memory, while other codepages can be installed by modifying system -configuration files, such as @file{CONFIG.SYS}, and rebooting. While -third-party software is known to exist that allows to change the -codepage without rebooting, we describe here how a stock MS-DOS system +it@footnote{Normally, one particular codepage is burnt into the +display memory, while other codepages can be installed by modifying +system configuration files, such as @file{CONFIG.SYS}, and rebooting. +While there is third-party software that allows changing the codepage +without rebooting, we describe here how a stock MS-DOS system behaves.}. Much the same limitation applies when you run DOS executables on other systems such as MS-Windows. @@ -749,7 +753,7 @@ the @kbd{M-x eshell} command. This invokes the Eshell package that implements a Posix-like shell entirely in Emacs Lisp. - By contrast, Emacs compiled as native Windows application + By contrast, Emacs compiled as a native Windows application @strong{does} support asynchronous subprocesses. @xref{Windows Processes}. @@ -782,7 +786,7 @@ @node Windows Processes @section Subprocesses on Windows 9X/ME and Windows NT/2K -Emacs compiled as a native Windows application (as opposed to the DOS + Emacs compiled as a native Windows application (as opposed to the DOS version) includes full support for asynchronous subprocesses. In the Windows version, synchronous and asynchronous subprocesses work fine on both
--- a/man/programs.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/programs.texi Sat Feb 19 00:06:48 2005 +0000 @@ -73,6 +73,7 @@ @cindex Metafont mode @cindex Modula2 mode @cindex Prolog mode +@cindex Python mode @cindex Simula mode @cindex VHDL mode @cindex M4 mode @@ -84,7 +85,7 @@ ASM, AWK, C, C++, Delphi (Object Pascal), Fortran (free format and fixed format), Icon, IDL (CORBA), IDLWAVE, Java, Metafont (@TeX{}'s companion for font creation), Modula2, Objective-C, Octave, Pascal, -Perl, Pike, PostScript, Prolog, Simula, Tcl, and VHDL. There is +Perl, Pike, PostScript, Prolog, Python, Simula, Tcl, and VHDL. There is also a major mode for makefiles, called Makefile mode. An alternative mode for Perl is called CPerl mode. Modes are available for the scripting languages of the common GNU and Unix shells, VMS DCL, and @@ -241,6 +242,9 @@ defun. This is the easiest way to get ready to kill the defun in order to move it to a different place in the file. If you use the command while point is between defuns, it uses the following defun. +Successive uses of @kbd{C-M-h}, or using it in Transient Mark mode +when the mark is active, includes an additional defun in the region +each time. In C mode, @kbd{C-M-h} runs the function @code{c-mark-function}, which is almost the same as @code{mark-defun}; the difference is that @@ -375,7 +379,7 @@ that whitespace; otherwise, @key{TAB} keeps point fixed with respect to the characters around it. - Use @kbd{C-q @key{TAB}} to insert a tab at point. + Use @kbd{C-q @key{TAB}} to insert a tab character at point. @kindex C-j @findex newline-and-indent @@ -384,12 +388,13 @@ followed by a @key{TAB}. @kbd{C-j} at the end of a line creates a blank line and then gives it the appropriate indentation. - @key{TAB} indents lines that start within a parenthetical grouping -each under the preceding line (or the text after the parenthesis). -Therefore, if you manually give one of these lines a nonstandard -indentation, the lines below will tend to follow it. This behavior is -convenient in cases where you have overridden the standard result of -@key{TAB} because you find it unaesthetic for a particular line. + @key{TAB} indents a line that starts within a parenthetical grouping +under the preceding line within the grouping, or the text after the +parenthesis. Therefore, if you manually give one of these lines a +nonstandard indentation, the lines below will tend to follow it. This +behavior is convenient in cases where you have overridden the standard +result of @key{TAB} because you find it unaesthetic for a particular +line. Remember that an open-parenthesis, open-brace or other opening delimiter at the left margin is assumed by Emacs (including the indentation routines) @@ -586,10 +591,11 @@ @noindent specifies an explicit choice for Java mode, and the default @samp{gnu} -style for the other C-like modes. This variable takes effect when you -select one of the C-like major modes; thus, if you specify a new -default style for Java mode, you can make it take effect in an -existing Java mode buffer by typing @kbd{M-x java-mode} there. +style for the other C-like modes. (These settings are actually the +defaults.) This variable takes effect when you select one of the +C-like major modes; thus, if you specify a new default style for Java +mode, you can make it take effect in an existing Java mode buffer by +typing @kbd{M-x java-mode} there. The @code{gnu} style specifies the formatting recommended by the GNU Project for C; it is the default, so as to encourage use of our @@ -712,8 +718,10 @@ use @kbd{C-M-@@} (@code{mark-sexp}), which sets mark at the same place that @kbd{C-M-f} would move to. @kbd{C-M-@@} takes arguments like @kbd{C-M-f}. In particular, a negative argument is useful for putting -the mark at the beginning of the previous balanced expression. -The alias @kbd{C-M-@key{SPC}} is equivalent to @kbd{C-M-@@}. +the mark at the beginning of the previous balanced expression. The +alias @kbd{C-M-@key{SPC}} is equivalent to @kbd{C-M-@@}. If you use +this command repeatedly, or in Transient Mark mode whenever the mark +is active, it extends the region by one sexp each time. In languages that use infix operators, such as C, it is not possible to recognize all balanced expressions as such because there can be @@ -1066,9 +1074,10 @@ @kindex C-h S For C, Lisp, and other languages that have documentation in Info, you can use @kbd{C-h S} (@code{info-lookup-symbol}) to view the Info -documentation for a symbol. You specify the symbol with the -minibuffer; the default is the symbol appearing in the buffer at -point. +documentation for a symbol used in the program. You specify the +symbol with the minibuffer; the default is the symbol appearing in the +buffer at point. For example, in C mode this looks for the symbol in +the C Library Manual. The major mode determines where to look for documentation for the symbol---which Info files to look in, and which indices to search. @@ -1316,7 +1325,9 @@ The character @kbd{M-@key{TAB}} runs a command to complete the partial symbol before point against the set of meaningful symbol names. This command inserts at point any additional characters that -it can determine from the partial name. +it can determine from the partial name. (If your window manager +defines @kbd{M-@key{TAB}} to switch windows, you can type this Emacs +command as @kbd{@key{ESC} @key{TAB}}.) If the partial name in the buffer has multiple possible completions that differ in the very next character, so that it is impossible to @@ -1513,10 +1524,10 @@ In C mode and related modes, certain printing characters are ``electric''---in addition to inserting themselves, they also reindent -the current line and may insert newlines. This feature is controlled by -the variable @code{c-auto-newline}. The ``electric'' characters are -@kbd{@{}, @kbd{@}}, @kbd{:}, @kbd{#}, @kbd{;}, @kbd{,}, @kbd{<}, -@kbd{>}, @kbd{/}, @kbd{*}, @kbd{(}, and @kbd{)}. +the current line, and optionally also insert newlines. The +``electric'' characters are @kbd{@{}, @kbd{@}}, @kbd{:}, @kbd{#}, +@kbd{;}, @kbd{,}, @kbd{<}, @kbd{>}, @kbd{/}, @kbd{*}, @kbd{(}, and +@kbd{)}. Electric characters insert newlines only when the @dfn{auto-newline} feature is enabled (indicated by @samp{/a} in the mode line after the
--- a/man/sending.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/sending.texi Sat Feb 19 00:06:48 2005 +0000 @@ -496,13 +496,15 @@ @findex mail-complete @kindex M-TAB @r{(Mail mode)} - While editing a header field that contains mailing addresses, such as -@samp{To:}, @samp{CC:} and @samp{BCC:}, you can complete a mailing -address by typing @kbd{M-@key{TAB}} (@code{mail-complete}). It inserts -the full name corresponding to the address, if it can determine the full -name. The variable @code{mail-complete-style} controls whether to insert -the full name, and what style to use, as in @code{mail-from-style} -(@pxref{Mail Headers}). + While editing a header field that contains mailing addresses, such +as @samp{To:}, @samp{CC:} and @samp{BCC:}, you can complete a mailing +address by typing @kbd{M-@key{TAB}} (@code{mail-complete}). It +inserts the full name corresponding to the address, if it can +determine the full name. The variable @code{mail-complete-style} +controls whether to insert the full name, and what style to use, as in +@code{mail-from-style} (@pxref{Mail Headers}). (If your window +manager defines @kbd{M-@key{TAB}} to switch windows, you can type this +Emacs command as @kbd{@key{ESC} @key{TAB}}.) For completion purposes, the valid mailing addresses are taken to be the local users' names plus your personal mail aliases. You can
--- a/man/text.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/text.texi Sat Feb 19 00:06:48 2005 +0000 @@ -852,10 +852,12 @@ instance during mail composition. @kindex M-TAB @r{(Text mode)} - Text mode, and all the modes based on it, define @kbd{M-@key{TAB}} as -the command @code{ispell-complete-word}, which performs completion of -the partial word in the buffer before point, using the spelling -dictionary as the space of possible words. @xref{Spelling}. + Text mode, and all the modes based on it, define @kbd{M-@key{TAB}} +as the command @code{ispell-complete-word}, which performs completion +of the partial word in the buffer before point, using the spelling +dictionary as the space of possible words. @xref{Spelling}. If your +window manager defines @kbd{M-@key{TAB}} to switch windows, you can +type this Emacs command as @kbd{@key{ESC} @key{TAB}}. @vindex text-mode-hook Entering Text mode runs the hook @code{text-mode-hook}. Other major
--- a/man/trouble.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/trouble.texi Sat Feb 19 00:06:48 2005 +0000 @@ -57,7 +57,7 @@ like @kbd{C-g}. The reason is that it is not feasible, on MS-DOS, to recognize @kbd{C-g} while a command is running, between interactions with the user. By contrast, it @emph{is} feasible to recognize -@kbd{C-@key{BREAK}} at all times. @xref{MS-DOS Input}. +@kbd{C-@key{BREAK}} at all times. @xref{MS-DOS Keyboard}. @findex keyboard-quit @kbd{C-g} works by setting the variable @code{quit-flag} to @code{t} @@ -66,9 +66,9 @@ actually executed as a command if you type it while Emacs is waiting for input. In that case, the command it runs is @code{keyboard-quit}. - If you quit with @kbd{C-g} a second time before the first @kbd{C-g} is -recognized, you activate the ``emergency escape'' feature and return to -the shell. @xref{Emergency Escape}. + On a text terminal, if you quit with @kbd{C-g} a second time before +the first @kbd{C-g} is recognized, you activate the ``emergency +escape'' feature and return to the shell. @xref{Emergency Escape}. @cindex NFS and quitting There may be times when you cannot quit. When Emacs is waiting for @@ -237,11 +237,11 @@ @node Screen Garbled @subsection Garbage on the Screen - If the data on the screen looks wrong, the first thing to do is see -whether the text is really wrong. Type @kbd{C-l} to redisplay the -entire screen. If the screen appears correct after this, the problem -was entirely in the previous screen update. (Otherwise, see the following -section.) + If the text on a text terminal looks wrong, the first thing to do is +see whether it is wrong in the buffer. Type @kbd{C-l} to redisplay +the entire screen. If the screen appears correct after this, the +problem was entirely in the previous screen update. (Otherwise, see +the following section.) Display updating problems often result from an incorrect termcap entry for the terminal you are using. The file @file{etc/TERMS} in the Emacs
--- a/man/windows.texi Fri Feb 18 23:22:51 2005 +0000 +++ b/man/windows.texi Sat Feb 19 00:06:48 2005 +0000 @@ -109,15 +109,15 @@ your click. @vindex truncate-partial-width-windows - When a window is less than the full width, text lines too long to fit are -frequent. Continuing all those lines might be confusing. The variable -@code{truncate-partial-width-windows} can be set non-@code{nil} to force -truncation in all windows less than the full width of the screen, -independent of the buffer being displayed and its value for -@code{truncate-lines}. @xref{Continuation Lines}.@refill + When a window is less than the full width, text lines too long to +fit are frequent. Continuing all those lines might be confusing, so +if the variable @code{truncate-partial-width-windows} is +non-@code{nil}, that forces truncation in all windows less than the +full width of the screen, independent of the buffer being displayed +and its value for @code{truncate-lines}. @xref{Display Custom}. Horizontal scrolling is often used in side-by-side windows. -@xref{Display}. +@xref{Horizontal Scrolling}. @vindex split-window-keep-point If @code{split-window-keep-point} is non-@code{nil}, the default,
--- a/src/ChangeLog Fri Feb 18 23:22:51 2005 +0000 +++ b/src/ChangeLog Sat Feb 19 00:06:48 2005 +0000 @@ -1,3 +1,116 @@ +2005-02-17 Andreas Schwab <schwab@suse.de> + + * xfns.c (hack_wm_protocols): Use correct type for last parameter + of XGetWindowProperty to avoid aliasing issues. + (Fx_window_property): Likewise. + + * xselect.c (Fx_disown_selection_internal): Use union of struct + input_event and struct selection_input_event to avoid aliasing + issues. + + * xterm.c (handle_one_xevent): Use union of struct input_event and + struct selection_input_event to avoid aliasing issues. + (SET_SAVED_MENU_EVENT): Adapt reference to inev. + +2005-02-17 Kim F. Storm <storm@cua.dk> + + * dispextern.h (enum it_method): New enum. + (GET_FROM_*): Its members. + (struct it): Change member method from function pointer to enum. + + * xdisp.c (check_it, init_from_display_pos, handle_stop) + (setup_for_ellipsis, handle_single_display_spec) + (handle_composition_prop, next_overlay_string) + (get_overlay_strings, reseat_1, reseat_to_string) + (next_element_from_ellipsis, BUFFER_POS_REACHED_P) + (in_display_vector_p, display_line, get_next_display_element): + Change it->method from function pointer to enum. + (get_next_element): New array to map it->method to function. + (get_next_display_element): Use it. + (set_iterator_to_next): Use switch instead of if/else chain. + +2005-02-15 Benjamin Riefenstahl <Benjamin.Riefenstahl@epost.de> + + * w32select.c: Summary: Thorough rework to implement Unicode + clipboard operations and delayed rendering. + + Drop last_clipboard_text and related code, keep track of + ownership via clipboard_owner instead. Drop old #if0 + sections. + + (DEFAULT_LCID, ANSICP, OEMCP, QUNICODE, QANSICP, QOEMCP) + (clipboard_owner, modifying_clipboard, cfg_coding_system) + (cfg_codepage, cfg_lcid, cfg_clipboard_type, current_text) + (current_coding_system, current_requires_encoding) + (current_num_nls, current_clipboard_type, current_lcid): New + static variables. + + (convert_to_handle_as_ascii, convert_to_handle_as_coded) + (render, render_all, run_protected, lisp_error_handler) + (owner_callback, create_owner, setup_config) + (enum_locale_callback, cp_from_locale, coding_from_cp): New + local functions. + + (term_w32select, globals_of_w32select): New global functions. + + (Fw32_set_clipboard_data): Ignore parameter FRAME, use + clipboard_owner instead. Use delayed rendering and provide + all text formats. Provide CF_LOCALE if necessary. + + (Fw32_get_clipboard_data): Handle CF_UNICODETEXT and + CF_LOCALE. Fall back to CF_TEXT, if CF_UNICODETEXT is not + available. Force DOS line-ends for decoding. + + (Fx_selection_exists_p): Handle CF_UNICODETEXT. + + (syms_of_w32select): Init and register new variables. + + * w32.h: Add prototypes for globals_of_w32select and + term_w32select. Make the neighboring K&R declarations into + prototypes, too. + + * emacs.c: Include w32.h to get function prototypes. + (main): Call globals_of_w32select. + + * w32.c (term_ntproc): Call term_w32select. + + * s/ms-w32.h: Guard MSC-specific #pragmas with an #ifdef. + +2005-02-16 Kim F. Storm <storm@cua.dk> + + * xdisp.c (BUFFER_POS_REACHED_P): Return true if pos reached and + at end of display vector. + +2005-02-15 Richard M. Stallman <rms@gnu.org> + + * xdisp.c (get_next_display_element): Fix escape-glyph criterion + for mode and header lines. + + * lread.c (syms_of_lread) <user-init-file>: Doc fix. + + * keymap.h (describe_map_tree): Change decl. + + * keyboard.c (command_loop_1): Always use safe_run_hooks + to run Qdeferred_action_function. + + * keymap.c (describe_map_tree): New arg MENTION_SHADOW. Calls changed. + (describe_map, describe_vector): Likewise. When it's 1, + don't omit shadowed bindings, instead mark them as shadowed. + + * doc.c (Fsubstitute_command_keys): Compute list of shadowing maps + for describe_map_tree. Pass 1 for MENTION_SHADOW. + + * data.c (Fsetq_default): Allow no arg case. + +2005-02-14 Kenichi Handa <handa@m17n.org> + + * coding.c (encode_coding_string): Always return a unibyte string. + If NOCOPY is nonzero and there's no need of encoding, make STR + unibyte directly. + + * xselect.c (lisp_data_to_selection_data): If OBJ is a non-ASCII + multibyte string, signal an error instead of aborting. + 2005-02-12 Dan Nicolaescu <dann@ics.uci.edu> * keyboard.c: If HAVE_FCNTL_H include fcntl.h.
--- a/src/coding.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/coding.c Sat Feb 19 00:06:48 2005 +0000 @@ -6357,7 +6357,12 @@ if (SYMBOLP (coding->pre_write_conversion) && !NILP (Ffboundp (coding->pre_write_conversion))) - str = run_pre_post_conversion_on_str (str, coding, 1); + { + str = run_pre_post_conversion_on_str (str, coding, 1); + /* As STR is just newly generated, we don't have to copy it + anymore. */ + nocopy = 1; + } from = 0; to = SCHARS (str); @@ -6365,21 +6370,10 @@ /* Encoding routines determine the multibyteness of the source text by coding->src_multibyte. */ - coding->src_multibyte = STRING_MULTIBYTE (str); + coding->src_multibyte = SCHARS (str) < SBYTES (str); coding->dst_multibyte = 0; if (! CODING_REQUIRE_ENCODING (coding)) - { - coding->consumed = SBYTES (str); - coding->consumed_char = SCHARS (str); - if (STRING_MULTIBYTE (str)) - { - str = Fstring_as_unibyte (str); - nocopy = 1; - } - coding->produced = SBYTES (str); - coding->produced_char = SCHARS (str); - return (nocopy ? str : Fcopy_sequence (str)); - } + goto no_need_of_encoding; if (coding->composing != COMPOSITION_DISABLED) coding_save_composition (coding, from, to, str); @@ -6395,7 +6389,7 @@ if (from == to_byte) { coding_free_composition_data (coding); - return (nocopy ? str : Fcopy_sequence (str)); + goto no_need_of_encoding; } shrinked_bytes = from + (SBYTES (str) - to_byte); } @@ -6440,6 +6434,25 @@ coding_free_composition_data (coding); return newstr; + + no_need_of_encoding: + coding->consumed = SBYTES (str); + coding->consumed_char = SCHARS (str); + if (STRING_MULTIBYTE (str)) + { + if (nocopy) + /* We are sure that STR doesn't contain a multibyte + character. */ + STRING_SET_UNIBYTE (str); + else + { + str = Fstring_as_unibyte (str); + nocopy = 1; + } + } + coding->produced = SBYTES (str); + coding->produced_char = SCHARS (str); + return (nocopy ? str : Fcopy_sequence (str)); }
--- a/src/data.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/data.c Sat Feb 19 00:06:48 2005 +0000 @@ -1458,7 +1458,7 @@ return value; } -DEFUN ("setq-default", Fsetq_default, Ssetq_default, 2, UNEVALLED, 0, +DEFUN ("setq-default", Fsetq_default, Ssetq_default, 0, UNEVALLED, 0, doc: /* Set the default value of variable VAR to VALUE. VAR, the variable name, is literal (not evaluated); VALUE is an expression: it is evaluated and its value returned. @@ -1470,7 +1470,7 @@ This sets each VAR's default value to the corresponding VALUE. The VALUE for the Nth VAR can refer to the new default values of previous VARs. -usage: (setq-default VAR VALUE [VAR VALUE...]) */) +usage: (setq-default [VAR VALUE...]) */) (args) Lisp_Object args; {
--- a/src/dispextern.h Fri Feb 18 23:22:51 2005 +0000 +++ b/src/dispextern.h Sat Feb 19 00:06:48 2005 +0000 @@ -1781,6 +1781,16 @@ Lisp_Object height; }; +enum it_method { + GET_FROM_BUFFER = 0, + GET_FROM_DISPLAY_VECTOR, + GET_FROM_COMPOSITION, + GET_FROM_STRING, + GET_FROM_C_STRING, + GET_FROM_IMAGE, + GET_FROM_STRETCH, + NUM_IT_METHODS +}; struct it { @@ -1791,9 +1801,8 @@ /* The window's frame. */ struct frame *f; - /* Function to call to load this structure with the next display - element. */ - int (* method) P_ ((struct it *it)); + /* Method to use to load this structure with the next display element. */ + enum it_method method; /* The next position at which to check for face changes, invisible text, overlay strings, end of text etc., which see. */
--- a/src/doc.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/doc.c Sat Feb 19 00:06:48 2005 +0000 @@ -882,6 +882,9 @@ { struct buffer *oldbuf; int start_idx; + /* This is for computing the SHADOWS arg for describe_map_tree. */ + Lisp_Object active_maps = Fcurrent_active_maps (Qnil); + Lisp_Object earlier_maps; changed = 1; strp += 2; /* skip \{ or \< */ @@ -932,7 +935,13 @@ else if (start[-1] == '<') keymap = tem; else - describe_map_tree (tem, 1, Qnil, Qnil, (char *)0, 1, 0, 0); + { + /* Get the list of active keymaps that precede this one. + If this one's not active, get nil. */ + earlier_maps = Fcdr (Fmemq (tem, Freverse (active_maps))); + describe_map_tree (tem, 1, Fnreverse (earlier_maps), + Qnil, (char *)0, 1, 0, 0, 1); + } tem = Fbuffer_string (); Ferase_buffer (); set_buffer_internal (oldbuf);
--- a/src/emacs.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/emacs.c Sat Feb 19 00:06:48 2005 +0000 @@ -42,6 +42,8 @@ #ifdef WINDOWSNT #include <fcntl.h> +#include <windows.h> /* just for w32.h */ +#include "w32.h" #endif #include "lisp.h" @@ -1655,6 +1657,7 @@ #ifdef HAVE_NTGUI globals_of_w32fns (); globals_of_w32menu (); + globals_of_w32select (); #endif /* HAVE_NTGUI */ }
--- a/src/keyboard.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/keyboard.c Sat Feb 19 00:06:48 2005 +0000 @@ -1427,7 +1427,7 @@ resize_echo_area_exactly (); if (!NILP (Vdeferred_action_list)) - call0 (Vdeferred_action_function); + safe_run_hooks (Qdeferred_action_function); if (!NILP (Vpost_command_idle_hook) && !NILP (Vrun_hooks)) {
--- a/src/keymap.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/keymap.c Sat Feb 19 00:06:48 2005 +0000 @@ -121,10 +121,11 @@ static void describe_translation P_ ((Lisp_Object, Lisp_Object)); static void describe_map P_ ((Lisp_Object, Lisp_Object, void (*) P_ ((Lisp_Object, Lisp_Object)), - int, Lisp_Object, Lisp_Object*, int)); + int, Lisp_Object, Lisp_Object*, int, int)); static void describe_vector P_ ((Lisp_Object, Lisp_Object, Lisp_Object, void (*) (Lisp_Object, Lisp_Object), int, - Lisp_Object, Lisp_Object, int *, int, int)); + Lisp_Object, Lisp_Object, int *, + int, int, int)); static void silly_event_symbol_error P_ ((Lisp_Object)); /* Keymap object support - constructors and predicates. */ @@ -2835,7 +2836,7 @@ if (!NILP (Vkey_translation_map)) describe_map_tree (Vkey_translation_map, 0, Qnil, prefix, - "Key translations", nomenu, 1, 0); + "Key translations", nomenu, 1, 0, 0); /* Print the (major mode) local map. */ @@ -2848,7 +2849,7 @@ if (!NILP (start1)) { describe_map_tree (start1, 1, shadow, prefix, - "\f\nOverriding Bindings", nomenu, 0, 0); + "\f\nOverriding Bindings", nomenu, 0, 0, 0); shadow = Fcons (start1, shadow); } else @@ -2869,7 +2870,8 @@ if (!NILP (start1)) { describe_map_tree (start1, 1, shadow, prefix, - "\f\n`keymap' Property Bindings", nomenu, 0, 0); + "\f\n`keymap' Property Bindings", nomenu, + 0, 0, 0); shadow = Fcons (start1, shadow); } @@ -2897,7 +2899,8 @@ p += sizeof (" Minor Mode Bindings") - 1; *p = 0; - describe_map_tree (maps[i], 1, shadow, prefix, title, nomenu, 0, 0); + describe_map_tree (maps[i], 1, shadow, prefix, + title, nomenu, 0, 0, 0); shadow = Fcons (maps[i], shadow); } @@ -2907,23 +2910,23 @@ { if (EQ (start1, XBUFFER (buffer)->keymap)) describe_map_tree (start1, 1, shadow, prefix, - "\f\nMajor Mode Bindings", nomenu, 0, 0); + "\f\nMajor Mode Bindings", nomenu, 0, 0, 0); else describe_map_tree (start1, 1, shadow, prefix, "\f\n`local-map' Property Bindings", - nomenu, 0, 0); + nomenu, 0, 0, 0); shadow = Fcons (start1, shadow); } } describe_map_tree (current_global_map, 1, shadow, prefix, - "\f\nGlobal Bindings", nomenu, 0, 1); + "\f\nGlobal Bindings", nomenu, 0, 1, 0); /* Print the function-key-map translations under this prefix. */ if (!NILP (Vfunction_key_map)) describe_map_tree (Vfunction_key_map, 0, Qnil, prefix, - "\f\nFunction key map translations", nomenu, 1, 0); + "\f\nFunction key map translations", nomenu, 1, 0, 0); UNGCPRO; return Qnil; @@ -2944,17 +2947,21 @@ so print strings and vectors differently. If ALWAYS_TITLE is nonzero, print the title even if there are no maps - to look through. */ + to look through. + + If MENTION_SHADOW is nonzero, then when something is shadowed by SHADOW, + don't omit it; instead, mention it but say it is shadowed. */ void describe_map_tree (startmap, partial, shadow, prefix, title, nomenu, transl, - always_title) + always_title, mention_shadow) Lisp_Object startmap, shadow, prefix; int partial; char *title; int nomenu; int transl; int always_title; + int mention_shadow; { Lisp_Object maps, orig_maps, seen, sub_shadows; struct gcpro gcpro1, gcpro2, gcpro3; @@ -3056,7 +3063,7 @@ describe_map (Fcdr (elt), prefix, transl ? describe_translation : describe_command, - partial, sub_shadows, &seen, nomenu); + partial, sub_shadows, &seen, nomenu, mention_shadow); skip: ; } @@ -3136,7 +3143,8 @@ PARTIAL, SHADOW, NOMENU are as in `describe_map_tree' above. */ static void -describe_map (map, prefix, elt_describer, partial, shadow, seen, nomenu) +describe_map (map, prefix, elt_describer, partial, shadow, + seen, nomenu, mention_shadow) register Lisp_Object map; Lisp_Object prefix; void (*elt_describer) P_ ((Lisp_Object, Lisp_Object)); @@ -3144,6 +3152,7 @@ Lisp_Object shadow; Lisp_Object *seen; int nomenu; + int mention_shadow; { Lisp_Object tail, definition, event; Lisp_Object tem; @@ -3173,9 +3182,10 @@ || CHAR_TABLE_P (XCAR (tail))) describe_vector (XCAR (tail), prefix, Qnil, elt_describer, partial, shadow, map, - (int *)0, 0, 1); + (int *)0, 0, 1, mention_shadow); else if (CONSP (XCAR (tail))) { + int this_shadowed = 0; event = XCAR (XCAR (tail)); /* Ignore bindings whose "prefix" are not really valid events. @@ -3204,7 +3214,13 @@ if (!NILP (shadow)) { tem = shadow_lookup (shadow, kludge, Qt); - if (!NILP (tem)) continue; + if (!NILP (tem)) + { + if (mention_shadow) + this_shadowed = 1; + else + continue; + } } tem = Flookup_key (map, kludge, Qt); @@ -3224,6 +3240,13 @@ elt_describer will take care of spacing out far enough for alignment purposes. */ (*elt_describer) (definition, Qnil); + + if (this_shadowed) + { + SET_PT (PT - 1); + insert_string (" (binding currently shadowed)"); + SET_PT (PT + 1); + } } else if (EQ (XCAR (tail), Qkeymap)) { @@ -3262,7 +3285,7 @@ specbind (Qstandard_output, Fcurrent_buffer ()); CHECK_VECTOR_OR_CHAR_TABLE (vector); describe_vector (vector, Qnil, describer, describe_vector_princ, 0, - Qnil, Qnil, (int *)0, 0, 0); + Qnil, Qnil, (int *)0, 0, 0, 0); return unbind_to (count, Qnil); } @@ -3304,7 +3327,8 @@ static void describe_vector (vector, prefix, args, elt_describer, partial, shadow, entire_map, - indices, char_table_depth, keymap_p) + indices, char_table_depth, keymap_p, + mention_shadow) register Lisp_Object vector; Lisp_Object prefix, args; void (*elt_describer) P_ ((Lisp_Object, Lisp_Object)); @@ -3314,6 +3338,7 @@ int *indices; int char_table_depth; int keymap_p; + int mention_shadow; { Lisp_Object definition; Lisp_Object tem2; @@ -3397,6 +3422,7 @@ for (i = from; i < to; i++) { + int this_shadowed = 0; QUIT; if (CHAR_TABLE_P (vector)) @@ -3456,7 +3482,13 @@ tem = shadow_lookup (shadow, kludge, Qt); - if (!NILP (tem)) continue; + if (!NILP (tem)) + { + if (mention_shadow) + this_shadowed = 1; + else + continue; + } } /* Ignore this definition if it is shadowed by an earlier @@ -3532,7 +3564,8 @@ insert ("\n", 1); describe_vector (definition, prefix, args, elt_describer, partial, shadow, entire_map, - indices, char_table_depth + 1, keymap_p); + indices, char_table_depth + 1, keymap_p, + mention_shadow); continue; } @@ -3606,6 +3639,13 @@ elt_describer will take care of spacing out far enough for alignment purposes. */ (*elt_describer) (definition, args); + + if (this_shadowed) + { + SET_PT (PT - 1); + insert_string (" (binding currently shadowed)"); + SET_PT (PT + 1); + } } /* For (sub) char-table, print `defalt' slot at last. */
--- a/src/keymap.h Fri Feb 18 23:22:51 2005 +0000 +++ b/src/keymap.h Sat Feb 19 00:06:48 2005 +0000 @@ -37,7 +37,7 @@ extern Lisp_Object get_keyelt P_ ((Lisp_Object, int)); extern Lisp_Object get_keymap P_ ((Lisp_Object, int, int)); extern void describe_map_tree P_ ((Lisp_Object, int, Lisp_Object, Lisp_Object, - char *, int, int, int)); + char *, int, int, int, int)); extern int current_minor_maps P_ ((Lisp_Object **, Lisp_Object **)); extern void initial_define_key P_ ((Lisp_Object, int, char *)); extern void initial_define_lispy_key P_ ((Lisp_Object, char *, char *));
--- a/src/lread.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/lread.c Sat Feb 19 00:06:48 2005 +0000 @@ -3861,8 +3861,8 @@ DEFVAR_LISP ("user-init-file", &Vuser_init_file, doc: /* File name, including directory, of user's initialization file. -If the file loaded had extension `.elc' and there was a corresponding `.el' -file, this variable contains the name of the .el file, suitable for use +If the file loaded had extension `.elc', and the corresponding source file +exists, this variable contains the name of source file, suitable for use by functions like `custom-save-all' which edit the init file. */); Vuser_init_file = Qnil;
--- a/src/s/ms-w32.h Fri Feb 18 23:22:51 2005 +0000 +++ b/src/s/ms-w32.h Sat Feb 19 00:06:48 2005 +0000 @@ -477,8 +477,10 @@ must include config.h to pick up this pragma. */ /* Names must be < 8 bytes */ +#ifdef _MSC_VER #pragma data_seg("EMDATA") #pragma bss_seg("EMBSS") +#endif /* #define FULL_DEBUG */ /* #define EMACSDEBUG */
--- a/src/w32.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/w32.c Sat Feb 19 00:06:48 2005 +0000 @@ -3884,6 +3884,8 @@ /* shutdown the socket interface if necessary */ term_winsock (); #endif + + term_w32select (); } void
--- a/src/w32.h Fri Feb 18 23:22:51 2005 +0000 +++ b/src/w32.h Sat Feb 19 00:06:48 2005 +0000 @@ -122,16 +122,18 @@ /* Return the string resource associated with KEY of type TYPE. */ extern LPBYTE w32_get_resource (char * key, LPDWORD type); -extern void init_ntproc (); -extern void term_ntproc (); -extern void globals_of_w32 (); -extern void syms_of_w32term (); -extern void syms_of_w32fns (); -extern void globals_of_w32fns (); -extern void syms_of_w32select (); -extern void syms_of_w32menu (); -extern void globals_of_w32menu (); -extern void syms_of_fontset (); +extern void init_ntproc (void); +extern void term_ntproc (void); +extern void globals_of_w32 (void); +extern void syms_of_w32term (void); +extern void syms_of_w32fns (void); +extern void globals_of_w32fns (void); +extern void syms_of_w32select (void); +extern void globals_of_w32select (void); +extern void term_w32select (void); +extern void syms_of_w32menu (void); +extern void globals_of_w32menu (void); +extern void syms_of_fontset (void); #endif /* EMACS_W32_H */
--- a/src/w32select.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/w32select.c Sat Feb 19 00:06:48 2005 +0000 @@ -1,5 +1,5 @@ /* Selection processing for Emacs on the Microsoft W32 API. - Copyright (C) 1993, 1994 Free Software Foundation. + Copyright (C) 1993, 1994, 2004 Free Software Foundation. This file is part of GNU Emacs. @@ -18,273 +18,744 @@ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -/* Written by Kevin Gallo */ +/* Written by Kevin Gallo, Benjamin Riefenstahl */ + +/* + * Notes on usage of selection-coding-system and + * next-selection-coding-system on MS Windows: + * + * The selection coding system variables apply only to the version of + * the clipboard data that is closest in type, i.e. when a 16-bit + * Unicode coding system is given, they apply to he Unicode clipboard + * (CF_UNICODETEXT), when a well-known console codepage is given, they + * apply to the console version of the clipboard data (CF_OEMTEXT), + * else they apply to the normal 8-bit text clipboard (CF_TEXT). + * + * When pasting (getting data from the OS), the clipboard format that + * matches the {next-}selection-coding-system is retrieved. If + * Unicode is requested, but not available, 8-bit text (CF_TEXT) is + * used. In all other cases the OS will transparently convert + * formats, so no other fallback is needed. + * + * When copying or cutting (sending data to the OS), the data is + * announced and stored internally, but only actually rendered on + * request. The requester determines the format provided. The + * {next-}selection-coding-system is only used, when its corresponding + * clipboard type matches the type requested. + * + * Scenarios to use the facilities for customizing the selection + * coding system are: + * + * ;; Generally use KOI8-R instead of the russian MS codepage for + * ;; the 8-bit clipboard. + * (set-selection-coding-system 'koi8-r-dos) + * + * Or + * + * ;; Create a special clipboard copy function that uses codepage + * ;; 1253 (Greek) to copy Greek text to a specific non-Unicode + * ;; application. + * (defun greek-copy (beg end) + * (interactive "r") + * (set-next-selection-coding-system 'cp1253-dos) + * (copy-region-as-kill beg end)) + * (global-set-key "\C-c\C-c" 'greek-copy) + */ + +/* + * Ideas for further directions: + * + * The encoding and decoding routines could be moved to Lisp code + * similar to how xselect.c does it (using well-known routine names + * for the delayed rendering). If the definition of which clipboard + * types should be supported is also moved to Lisp, functionality + * could be expanded to CF_HTML, CF_RTF and maybe other types. + */ + #include <config.h> #include "lisp.h" #include "w32term.h" /* for all of the w32 includes */ -#include "dispextern.h" /* frame.h seems to want this */ -#include "keyboard.h" -#include "frame.h" /* Need this to get the X window of selected_frame */ +#include "w32heap.h" /* os_subtype */ #include "blockinput.h" -#include "buffer.h" +#include "keyboard.h" /* cmd_error_internal() */ #include "charset.h" #include "coding.h" #include "composite.h" + +static HGLOBAL convert_to_handle_as_ascii (void); +static HGLOBAL convert_to_handle_as_coded (Lisp_Object coding_system); +static Lisp_Object render (Lisp_Object oformat); +static Lisp_Object render_locale (void); +static Lisp_Object render_all (void); +static void run_protected (Lisp_Object (*code) (), Lisp_Object arg); +static Lisp_Object lisp_error_handler (Lisp_Object error); +static LRESULT CALLBACK owner_callback (HWND win, UINT msg, + WPARAM wp, LPARAM lp); +static HWND create_owner (void); + +static void setup_config (void); +static BOOL WINAPI enum_locale_callback (/*const*/ char* loc_string); +static UINT cp_from_locale (LCID lcid, UINT format); +static Lisp_Object coding_from_cp (UINT codepage); + + +/* A remnant from X11: Symbol for the CLIPBORD selection type. Other + selections are not used on Windows, so we don't need symbols for + PRIMARY and SECONDARY. */ Lisp_Object QCLIPBOARD; -/* Coding system for communicating with other Windows programs via the +/* Coding system for communicating with other programs via the clipboard. */ static Lisp_Object Vselection_coding_system; -/* Coding system for the next communicating with other Windows programs. */ +/* Coding system for the next communication with other programs. */ static Lisp_Object Vnext_selection_coding_system; -/* Sequence number, used where possible to detect when we are pasting - our own text. */ -static DWORD last_clipboard_sequence_number; -extern ClipboardSequence_Proc clipboard_sequence_fn; +/* Internal pseudo-constants, initialized in globals_of_w32select() + based on current system parameters. */ +static LCID DEFAULT_LCID; +static UINT ANSICP, OEMCP; +static Lisp_Object QUNICODE, QANSICP, QOEMCP; + +/* A hidden window just for the clipboard management. */ +static HWND clipboard_owner; +/* A flag to tell WM_DESTROYCLIPBOARD who is to blame this time (just + checking GetClipboardOwner() doesn't work, sadly). */ +static int modifying_clipboard = 0; + +/* Configured transfer parameters, based on the last inspection of + selection-coding-system. */ +static Lisp_Object cfg_coding_system; +static UINT cfg_codepage; +static LCID cfg_lcid; +static UINT cfg_clipboard_type; + +/* The current state for delayed rendering. */ +static Lisp_Object current_text; +static Lisp_Object current_coding_system; +static int current_requires_encoding, current_num_nls; +static UINT current_clipboard_type; +static LCID current_lcid; + +#if TRACE +#define ONTRACE(stmt) stmt +#else +#define ONTRACE(stmt) /*stmt*/ +#endif + + +/* This function assumes that there is no multibyte character in + current_text, so we can short-cut encoding. */ + +static HGLOBAL +convert_to_handle_as_ascii (void) +{ + HGLOBAL htext = NULL; + int nbytes; + int truelen; + unsigned char *src; + unsigned char *dst; + + ONTRACE (fprintf (stderr, "convert_to_handle_as_ascii\n")); + + nbytes = SBYTES (current_text) + 1; + src = SDATA (current_text); + + /* We need to add to the size the number of LF chars where we have + to insert CR chars (the standard CF_TEXT clipboard format uses + CRLF line endings, while Emacs uses just LF internally). */ + + truelen = nbytes + current_num_nls; + + if ((htext = GlobalAlloc (GMEM_MOVEABLE | GMEM_DDESHARE, truelen)) == NULL) + return NULL; + + if ((dst = (unsigned char *) GlobalLock (htext)) == NULL) + { + GlobalFree (htext); + return NULL; + } + + /* convert to CRLF line endings expected by clipboard */ + while (1) + { + unsigned char *next; + /* copy next line or remaining bytes including '\0' */ + next = _memccpy (dst, src, '\n', nbytes); + if (next) + { + /* copied one line ending with '\n' */ + int copied = next - dst; + nbytes -= copied; + src += copied; + /* insert '\r' before '\n' */ + next[-1] = '\r'; + next[0] = '\n'; + dst = next + 1; + } + else + /* copied remaining partial line -> now finished */ + break; + } + + GlobalUnlock (htext); + + return htext; +} + +/* This function assumes that there are multibyte or NUL characters in + current_text, or that we need to construct Unicode. It runs the + text through the encoding machinery. */ + +static HGLOBAL +convert_to_handle_as_coded (Lisp_Object coding_system) +{ + HGLOBAL htext = NULL, htext2; + int nbytes; + unsigned char *src; + unsigned char *dst = NULL; + int bufsize; + struct coding_system coding; + Lisp_Object string = Qnil; + + ONTRACE (fprintf (stderr, "convert_to_handle_as_coded: %s\n", + SDATA (SYMBOL_NAME (coding_system)))); + + setup_coding_system (Fcheck_coding_system (coding_system), &coding); + coding.src_multibyte = 1; + coding.dst_multibyte = 0; + /* Need to set COMPOSITION_DISABLED, otherwise Emacs crashes in + encode_coding_iso2022 trying to dereference a null pointer. */ + coding.composing = COMPOSITION_DISABLED; + if (coding.type == coding_type_iso2022) + coding.flags |= CODING_FLAG_ISO_SAFE; + coding.mode |= CODING_MODE_LAST_BLOCK; + /* Force DOS line-ends. */ + coding.eol_type = CODING_EOL_CRLF; + + if (SYMBOLP (coding.pre_write_conversion) + && !NILP (Ffboundp (coding.pre_write_conversion))) + string = run_pre_post_conversion_on_str (current_text, &coding, 1); + else + string = current_text; + + nbytes = SBYTES (string); + src = SDATA (string); + + bufsize = encoding_buffer_size (&coding, nbytes) +2; + htext = GlobalAlloc (GMEM_MOVEABLE | GMEM_DDESHARE, bufsize); + + if (htext != NULL) + dst = (unsigned char *) GlobalLock (htext); + + if (dst != NULL) + { + encode_coding (&coding, src, dst, nbytes, bufsize-2); + /* Add the string terminator. Add two NULs in case we are + producing Unicode here. */ + dst[coding.produced] = dst[coding.produced+1] = '\0'; + } + + if (dst != NULL) + GlobalUnlock (htext); -/* The last text we put into the clipboard. This is used when the OS - does not support sequence numbers (NT4, 95). It is undesirable to - use data put on the clipboard by Emacs because the clipboard data - could be MULEtilated by inappropriately chosen - (next-)selection-coding-system. For this reason, we must store the - text *after* it was encoded/Unix-to-DOS-converted. */ -static unsigned char *last_clipboard_text = NULL; -static size_t clipboard_storage_size = 0; + if (htext != NULL) + { + /* Shrink data block to actual size. */ + htext2 = GlobalReAlloc (htext, coding.produced+2, + GMEM_MOVEABLE | GMEM_DDESHARE); + if (htext2 != NULL) htext = htext2; + } + + return htext; +} + +static Lisp_Object +render (Lisp_Object oformat) +{ + HGLOBAL htext = NULL; + UINT format = XFASTINT (oformat); + + ONTRACE (fprintf (stderr, "render\n")); + + if (NILP (current_text)) + return Qnil; + + if (current_requires_encoding || format == CF_UNICODETEXT) + { + if (format == current_clipboard_type) + htext = convert_to_handle_as_coded (current_coding_system); + else + switch (format) + { + case CF_UNICODETEXT: + htext = convert_to_handle_as_coded (QUNICODE); + break; + case CF_TEXT: + case CF_OEMTEXT: + { + Lisp_Object cs; + cs = coding_from_cp (cp_from_locale (current_lcid, format)); + htext = convert_to_handle_as_coded (cs); + break; + } + } + } + else + htext = convert_to_handle_as_ascii (); + + ONTRACE (fprintf (stderr, "render: htext = 0x%08X\n", (unsigned) htext)); + + if (htext == NULL) + return Qnil; + + if (SetClipboardData (format, htext) == NULL) + { + GlobalFree(htext); + return Qnil; + } + + return Qt; +} + +static Lisp_Object +render_locale (void) +{ + HANDLE hlocale = NULL; + LCID * lcid_ptr; + + ONTRACE (fprintf (stderr, "render_locale\n")); + + if (current_lcid == LOCALE_NEUTRAL || current_lcid == DEFAULT_LCID) + return Qt; + + hlocale = GlobalAlloc (GMEM_MOVEABLE | GMEM_DDESHARE, sizeof (current_lcid)); + if (hlocale == NULL) + return Qnil; + + if ((lcid_ptr = (LCID *) GlobalLock (hlocale)) == NULL) + { + GlobalFree(hlocale); + return Qnil; + } -#if 0 -DEFUN ("w32-open-clipboard", Fw32_open_clipboard, Sw32_open_clipboard, 0, 1, 0, - doc: /* This opens the clipboard with the given frame pointer. */) - (frame) - Lisp_Object frame; + *lcid_ptr = current_lcid; + GlobalUnlock (hlocale); + + if (SetClipboardData (CF_LOCALE, hlocale) == NULL) + { + GlobalFree(hlocale); + return Qnil; + } + + return Qt; +} + +/* At the end of the program, we want to ensure that our clipboard + data survives us. This code will do that. */ + +static Lisp_Object +render_all (void) { - BOOL ok = FALSE; + ONTRACE (fprintf (stderr, "render_all\n")); + + /* According to the docs we should not call OpenClipboard() here, + but testing on W2K and working code in other projects shows that + it is actually necessary. */ + + OpenClipboard (NULL); + + /* There is no usefull means to report errors here, there are none + expected anyway, and even if there were errors, they wouldn't do + any harm. So we just go ahead and do what has to be done without + bothering with error handling. */ + + ++modifying_clipboard; + EmptyClipboard (); + --modifying_clipboard; + + /* For text formats that we don't render here, the OS can use its + own translation rules instead, so we don't really need to offer + everything. To minimize memory consumption we cover three + possible situations based on our primary format as detected from + selection-coding-system (see setup_config()): + + - Post CF_TEXT only. Let the OS convert to CF_OEMTEXT and the OS + (on NT) or the application (on 9x/Me) convert to + CF_UNICODETEXT. + + - Post CF_OEMTEXT only. Similar automatic conversions happen as + for CF_TEXT. - if (!NILP (frame)) - CHECK_LIVE_FRAME (frame); + - Post CF_UNICODETEXT + CF_TEXT. 9x itself ignores + CF_UNICODETEXT, even though some applications can still handle + it. + + Note 1: We render the less capable CF_TEXT *before* the more + capable CF_UNICODETEXT, to prevent clobbering through automatic + conversions, just in case. + + Note 2: We could check os_subtype here and only render the + additional CF_TEXT on 9x/Me. But OTOH with + current_clipboard_type == CF_UNICODETEXT we don't involve the + automatic conversions anywhere else, so to get consistent + results, we probably don't want to rely on it here either. */ + + render_locale(); + + if (current_clipboard_type == CF_UNICODETEXT) + render (make_number (CF_TEXT)); + render (make_number (current_clipboard_type)); + + CloseClipboard (); + + return Qnil; +} + +static void +run_protected (Lisp_Object (*code) (), Lisp_Object arg) +{ + /* FIXME: This works but it doesn't feel right. Too much fiddling + with global variables and calling strange looking functions. Is + this really the right way to run Lisp callbacks? */ + + extern int waiting_for_input; + int owfi; BLOCK_INPUT; - ok = OpenClipboard ((!NILP (frame) && FRAME_W32_P (XFRAME (frame))) ? FRAME_W32_WINDOW (XFRAME (frame)) : NULL); - - UNBLOCK_INPUT; - - return (ok ? frame : Qnil); -} + /* Fsignal calls abort() if it sees that waiting_for_input is + set. */ + owfi = waiting_for_input; + waiting_for_input = 0; -DEFUN ("w32-empty-clipboard", Fw32_empty_clipboard, - Sw32_empty_clipboard, 0, 0, 0, - doc: /* Empty the clipboard. -Assigns ownership of the clipboard to the window which opened it. */) - () -{ - BOOL ok = FALSE; + internal_condition_case_1 (code, arg, Qt, lisp_error_handler); - BLOCK_INPUT; - - ok = EmptyClipboard (); + waiting_for_input = owfi; UNBLOCK_INPUT; +} - return (ok ? Qt : Qnil); +static Lisp_Object +lisp_error_handler (Lisp_Object error) +{ + Vsignaling_function = Qnil; + cmd_error_internal (error, "Error in delayed clipboard rendering: "); + Vinhibit_quit = Qt; + return Qt; +} + + +static LRESULT CALLBACK +owner_callback (HWND win, UINT msg, WPARAM wp, LPARAM lp) +{ + switch (msg) + { + case WM_RENDERFORMAT: + ONTRACE (fprintf (stderr, "WM_RENDERFORMAT\n")); + run_protected (render, make_number (wp)); + return 0; + + case WM_RENDERALLFORMATS: + ONTRACE (fprintf (stderr, "WM_RENDERALLFORMATS\n")); + run_protected (render_all, Qnil); + return 0; + + case WM_DESTROYCLIPBOARD: + if (!modifying_clipboard) + { + ONTRACE (fprintf (stderr, "WM_DESTROYCLIPBOARD (other)\n")); + current_text = Qnil; + current_coding_system = Qnil; + } + else + { + ONTRACE (fprintf (stderr, "WM_DESTROYCLIPBOARD (self)\n")); + } + return 0; + + case WM_DESTROY: + if (win == clipboard_owner) + clipboard_owner = NULL; + break; + } + + return DefWindowProc (win, msg, wp, lp); +} + +static HWND +create_owner (void) +{ + static const char CLASSNAME[] = "Emacs Clipboard"; + WNDCLASS wc; + + memset (&wc, 0, sizeof (wc)); + wc.lpszClassName = CLASSNAME; + wc.lpfnWndProc = owner_callback; + RegisterClass (&wc); + + return CreateWindow (CLASSNAME, CLASSNAME, 0, 0, 0, 0, 0, NULL, NULL, + NULL, NULL); +} + +/* Called on exit by term_ntproc() in w32.c */ + +void +term_w32select (void) +{ + /* This is needed to trigger WM_RENDERALLFORMATS. */ + if (clipboard_owner != NULL) + DestroyWindow (clipboard_owner); } -DEFUN ("w32-close-clipboard", Fw32_close_clipboard, - Sw32_close_clipboard, 0, 0, 0, - doc: /* Close the clipboard. */) - () +static void +setup_config (void) { - BOOL ok = FALSE; + const char *coding_name; + const char *cp; + char *end; + int slen; + Lisp_Object new_coding_system; + + CHECK_SYMBOL (Vselection_coding_system); + + /* Check if we have it cached */ + new_coding_system = NILP (Vnext_selection_coding_system) ? + Vselection_coding_system : Vnext_selection_coding_system; + if (!NILP (cfg_coding_system) + && EQ (cfg_coding_system, new_coding_system)) + return; + cfg_coding_system = new_coding_system; + + /* Set some sensible fallbacks */ + cfg_codepage = ANSICP; + cfg_lcid = LOCALE_NEUTRAL; + cfg_clipboard_type = CF_TEXT; + + /* Interpret the coding system symbol name */ + coding_name = SDATA (SYMBOL_NAME (cfg_coding_system)); + + /* "(.*-)?utf-16.*" -> CF_UNICODETEXT */ + cp = strstr (coding_name, "utf-16"); + if (cp != NULL && (cp == coding_name || cp[-1] == '-')) + { + cfg_clipboard_type = CF_UNICODETEXT; + return; + } - BLOCK_INPUT; + /* "cp[0-9]+.*" or "windows-[0-9]+.*" -> CF_TEXT or CF_OEMTEXT */ + slen = strlen (coding_name); + if (slen >= 4 && coding_name[0] == 'c' && coding_name[1] == 'p') + cp = coding_name + 2; + else if (slen >= 10 && memcmp (coding_name, "windows-", 8) == 0) + cp = coding_name + 8; + else + return; - ok = CloseClipboard (); + end = (char*)cp; + cfg_codepage = strtol (cp, &end, 10); - UNBLOCK_INPUT; + /* Error return from strtol() or number of digits < 2 -> Restore the + default and drop it. */ + if (cfg_codepage == 0 || (end-cp) < 2 ) + { + cfg_codepage = ANSICP; + return; + } - return (ok ? Qt : Qnil); + /* Is it the currently active system default? */ + if (cfg_codepage == ANSICP) + { + /* cfg_clipboard_type = CF_TEXT; */ + return; + } + if (cfg_codepage == OEMCP) + { + cfg_clipboard_type = CF_OEMTEXT; + return; + } + + /* Else determine a suitable locale the hard way. */ + EnumSystemLocales (enum_locale_callback, LCID_INSTALLED); } -#endif +static BOOL WINAPI +enum_locale_callback (/*const*/ char* loc_string) +{ + LCID lcid; + UINT codepage; + + lcid = strtoul (loc_string, NULL, 16); + + /* Is the wanted codepage the "ANSI" codepage for this locale? */ + codepage = cp_from_locale (lcid, CF_TEXT); + if (codepage == cfg_codepage) + { + cfg_lcid = lcid; + cfg_clipboard_type = CF_TEXT; + return FALSE; /* Stop enumeration */ + } + + /* Is the wanted codepage the OEM codepage for this locale? */ + codepage = cp_from_locale (lcid, CF_OEMTEXT); + if (codepage == cfg_codepage) + { + cfg_lcid = lcid; + cfg_clipboard_type = CF_OEMTEXT; + return FALSE; /* Stop enumeration */ + } + + return TRUE; /* Continue enumeration */ +} + +static UINT +cp_from_locale (LCID lcid, UINT format) +{ + char buffer[20] = ""; + UINT variant, cp; + + variant = + format == CF_TEXT ? LOCALE_IDEFAULTANSICODEPAGE : LOCALE_IDEFAULTCODEPAGE; + + GetLocaleInfo (lcid, variant, buffer, sizeof (buffer)); + cp = strtoul (buffer, NULL, 10); + + if (cp == CP_ACP) + return ANSICP; + else if (cp == CP_OEMCP) + return OEMCP; + else + return cp; +} + +static Lisp_Object +coding_from_cp (UINT codepage) +{ + char buffer[30]; + sprintf (buffer, "cp%d-dos", (int) codepage); + return intern (buffer); + /* We don't need to check that this coding system exists right here, + because that is done when the coding system is actually + instantiated, i.e. it is passed through Fcheck_coding_system() + there. */ +} + DEFUN ("w32-set-clipboard-data", Fw32_set_clipboard_data, Sw32_set_clipboard_data, 1, 2, 0, doc: /* This sets the clipboard data to the given text. */) - (string, frame) - Lisp_Object string, frame; + (string, ignored) + Lisp_Object string, ignored; { BOOL ok = TRUE; - HANDLE htext; int nbytes; - int truelen, nlines = 0; unsigned char *src; unsigned char *dst; + unsigned char *end; + + /* This parameter used to be the current frame, but we don't use + that any more. */ + (void) ignored; CHECK_STRING (string); - if (!NILP (frame)) - CHECK_LIVE_FRAME (frame); + setup_config (); + current_text = string; + current_coding_system = cfg_coding_system; + current_clipboard_type = cfg_clipboard_type; + current_lcid = cfg_lcid; + current_num_nls = 0; + current_requires_encoding = 0; + BLOCK_INPUT; - /* Include the terminating NULL character in the source of - conversion. */ - nbytes = SBYTES (string) + 1; + /* Check for non-ASCII characters. While we are at it, count the + number of LFs, so we know how many CRs we will have to add later + (just in the case where we can use our internal ASCII rendering, + see code and comment in convert_to_handle_as_ascii() above). */ + nbytes = SBYTES (string); src = SDATA (string); - dst = src; - /* We need to know how many lines there are, since we need CRLF line - termination for compatibility with other Windows Programs. - avoid using strchr because it recomputes the length every time */ - while ((dst = memchr (dst, '\n', nbytes - (dst - src))) != NULL) + for (dst = src, end = src+nbytes; dst < end; dst++) { - nlines++; - dst++; + if (*dst == '\n') + current_num_nls++; + else if (*dst >= 0x80 || *dst == 0) + { + current_requires_encoding = 1; + break; + } } - { - /* Since we are now handling multilingual text, we must consider - encoding text for the clipboard. */ - int charset_info = find_charset_in_text (src, SCHARS (string), - nbytes, NULL, Qnil); - - if (charset_info == 0) - { - /* No multibyte character in OBJ. We need not encode it. */ - - /* Need to know final size after CR chars are inserted (the - standard CF_TEXT clipboard format uses CRLF line endings, - while Emacs uses just LF internally). */ - - truelen = nbytes + nlines; - - if ((htext = GlobalAlloc (GMEM_MOVEABLE | GMEM_DDESHARE, truelen)) == NULL) - goto error; - - if ((dst = (unsigned char *) GlobalLock (htext)) == NULL) - goto error; - - /* convert to CRLF line endings expected by clipboard */ - while (1) - { - unsigned char *next; - /* copy next line or remaining bytes including '\0' */ - next = _memccpy (dst, src, '\n', nbytes); - if (next) - { - /* copied one line ending with '\n' */ - int copied = next - dst; - nbytes -= copied; - src += copied; - /* insert '\r' before '\n' */ - next[-1] = '\r'; - next[0] = '\n'; - dst = next + 1; - } - else - /* copied remaining partial line -> now finished */ - break; - } - - GlobalUnlock (htext); - - Vlast_coding_system_used = Qraw_text; - } - else - { - /* We must encode contents of OBJ to the selection coding - system. */ - int bufsize; - struct coding_system coding; - HANDLE htext2; + if (!current_requires_encoding) + { + /* If all we have is ASCII we don't need to pretend we offer + anything fancy. */ + current_coding_system = Qraw_text; + current_clipboard_type = CF_TEXT; + current_lcid = LOCALE_NEUTRAL; + } - if (NILP (Vnext_selection_coding_system)) - Vnext_selection_coding_system = Vselection_coding_system; - setup_coding_system - (Fcheck_coding_system (Vnext_selection_coding_system), &coding); - if (SYMBOLP (coding.pre_write_conversion) - && !NILP (Ffboundp (coding.pre_write_conversion))) - { - string = run_pre_post_conversion_on_str (string, &coding, 1); - src = SDATA (string); - /* Include the terminating NULL character in the source of - conversion. */ - nbytes = SBYTES (string) + 1; - } - coding.src_multibyte = 1; - coding.dst_multibyte = 0; - /* Need to set COMPOSITION_DISABLED, otherwise Emacs crashes in - encode_coding_iso2022 trying to dereference a null pointer. */ - coding.composing = COMPOSITION_DISABLED; - if (coding.type == coding_type_iso2022) - coding.flags |= CODING_FLAG_ISO_SAFE; - Vnext_selection_coding_system = Qnil; - coding.mode |= CODING_MODE_LAST_BLOCK; - bufsize = encoding_buffer_size (&coding, nbytes); - if ((htext = GlobalAlloc (GMEM_MOVEABLE | GMEM_DDESHARE, bufsize)) == NULL) - goto error; - if ((dst = (unsigned char *) GlobalLock (htext)) == NULL) - goto error; - encode_coding (&coding, src, dst, nbytes, bufsize); - Vlast_coding_system_used = coding.symbol; - - /* If clipboard sequence numbers are not supported, keep a copy for - later comparison. */ - if (!clipboard_sequence_fn) - { - /* Stash away the data we are about to put into the - clipboard, so we could later check inside - Fw32_get_clipboard_data whether the clipboard still - holds our data. */ - if (clipboard_storage_size < coding.produced) - { - clipboard_storage_size = coding.produced + 100; - last_clipboard_text = (char *) xrealloc (last_clipboard_text, - clipboard_storage_size); - } - if (last_clipboard_text) - memcpy (last_clipboard_text, dst, coding.produced); - } - - GlobalUnlock (htext); - - /* Shrink data block to actual size. */ - htext2 = GlobalReAlloc (htext, coding.produced, - GMEM_MOVEABLE | GMEM_DDESHARE); - if (htext2 != NULL) htext = htext2; - } - } - - if (!OpenClipboard ((!NILP (frame) && FRAME_W32_P (XFRAME (frame))) ? FRAME_W32_WINDOW (XFRAME (frame)) : NULL)) + if (!OpenClipboard (clipboard_owner)) goto error; - ok = EmptyClipboard () && SetClipboardData (CF_TEXT, htext); + ++modifying_clipboard; + ok = EmptyClipboard (); + --modifying_clipboard; + + /* If we have something non-ASCII we may want to set a locale. We + do that directly (non-delayed), as it's just a small bit. */ + if (ok) + ok = !NILP(render_locale()); + + if (ok) + { + if (clipboard_owner == NULL) + { + /* If for some reason we don't have a clipboard_owner, we + just set the text format as chosen by the configuration + and than forget about the whole thing. */ + ok = !NILP(render (make_number (current_clipboard_type))); + current_text = Qnil; + current_coding_system = Qnil; + } + else + { + /* Advertise all supported formats so that whatever the + requester chooses, only one encoding step needs to be + made. This is intentionally different from what we do in + the handler for WM_RENDERALLFORMATS. */ + SetClipboardData (CF_UNICODETEXT, NULL); + SetClipboardData (CF_TEXT, NULL); + SetClipboardData (CF_OEMTEXT, NULL); + } + } CloseClipboard (); - /* Common sense says to read the sequence number inside the - OpenClipboard/ CloseClipboard block to avoid race conditions - where another app puts something on the clipboard straight after - us. But experience suggests that the sequence number from the - SetClipboardData is not allocated until we close the clipboard! - Since clipboard operations are normally user-driven, the race - condition is probably not going to really happen. */ - if (clipboard_sequence_fn) - last_clipboard_sequence_number = clipboard_sequence_fn (); + /* With delayed rendering we haven't really "used" this coding + system yet, and it's even unclear if we ever will. But this is a + way to tell the upper level what we *would* use under ideal + circumstances. + + We don't signal the actually used coding-system later when we + finally render, because that can happen at any time and we don't + want to disturb the "foreground" action. */ + if (ok) + Vlast_coding_system_used = current_coding_system; + + Vnext_selection_coding_system = Qnil; if (ok) goto done; error: ok = FALSE; - if (htext) GlobalFree (htext); - if (last_clipboard_text) - *last_clipboard_text = '\0'; - - last_clipboard_sequence_number = 0; + current_text = Qnil; + current_coding_system = Qnil; done: UNBLOCK_INPUT; @@ -292,24 +763,52 @@ return (ok ? string : Qnil); } + DEFUN ("w32-get-clipboard-data", Fw32_get_clipboard_data, Sw32_get_clipboard_data, 0, 1, 0, doc: /* This gets the clipboard data in text format. */) - (frame) - Lisp_Object frame; + (ignored) + Lisp_Object ignored; { - HANDLE htext; + HGLOBAL htext; Lisp_Object ret = Qnil; + UINT actual_clipboard_type; + int use_configured_coding_system = 1; - if (!NILP (frame)) - CHECK_LIVE_FRAME (frame); + /* This parameter used to be the current frame, but we don't use + that any more. */ + (void) ignored; + + /* Don't pass our own text from the clipboard (which might be + troublesome if the killed text includes null characters). */ + if (!NILP (current_text)) + return ret; + + setup_config (); + actual_clipboard_type = cfg_clipboard_type; BLOCK_INPUT; - if (!OpenClipboard ((!NILP (frame) && FRAME_W32_P (XFRAME (frame))) ? FRAME_W32_WINDOW (XFRAME (frame)) : NULL)) + if (!OpenClipboard (clipboard_owner)) goto done; - if ((htext = GetClipboardData (CF_TEXT)) == NULL) + if ((htext = GetClipboardData (actual_clipboard_type)) == NULL) + { + /* If we want CF_UNICODETEXT but can't get it, the current + coding system is useless. OTOH we can still try and decode + CF_TEXT based on the locale that the system gives us and that + we get down below. */ + if (actual_clipboard_type == CF_UNICODETEXT) + { + htext = GetClipboardData (CF_TEXT); + if (htext != NULL) + { + actual_clipboard_type = CF_TEXT; + use_configured_coding_system = 0; + } + } + } + if (htext == NULL) goto closeclip; { @@ -322,53 +821,107 @@ if ((src = (unsigned char *) GlobalLock (htext)) == NULL) goto closeclip; - nbytes = strlen (src); - - /* If the text in clipboard is identical to what we put there - last time w32_set_clipboard_data was called, pretend there's no - data in the clipboard. This is so we don't pass our own text - from the clipboard (which might be troublesome if the killed - text includes null characters). */ - if ((clipboard_sequence_fn - && clipboard_sequence_fn () == last_clipboard_sequence_number) - || (last_clipboard_text - && clipboard_storage_size >= nbytes - && memcmp(last_clipboard_text, src, nbytes) == 0)) - goto closeclip; + /* If the clipboard data contains any non-ascii code, we need to + decode it with a coding system. */ + if (actual_clipboard_type == CF_UNICODETEXT) + { + nbytes = lstrlenW ((WCHAR *)src) * 2; + require_decoding = 1; + } + else + { + int i; - { - /* If the clipboard data contains any non-ascii code, we - need to decode it. */ - int i; + nbytes = strlen (src); - for (i = 0; i < nbytes; i++) - { - if (src[i] >= 0x80) - { - require_decoding = 1; - break; - } - } - } + for (i = 0; i < nbytes; i++) + { + if (src[i] >= 0x80) + { + require_decoding = 1; + break; + } + } + } if (require_decoding) { int bufsize; unsigned char *buf; struct coding_system coding; + Lisp_Object coding_system = Qnil; + + /* `next-selection-coding-system' should override everything, + even when the locale passed by the system disagrees. The + only exception is when `next-selection-coding-system' + requested CF_UNICODETEXT and we couldn't get that. */ + if (use_configured_coding_system + && !NILP (Vnext_selection_coding_system)) + coding_system = Vnext_selection_coding_system; - if (NILP (Vnext_selection_coding_system)) - Vnext_selection_coding_system = Vselection_coding_system; - setup_coding_system - (Fcheck_coding_system (Vnext_selection_coding_system), &coding); + /* If we have CF_TEXT or CF_OEMTEXT, we want to check out + CF_LOCALE, too. */ + else if (actual_clipboard_type != CF_UNICODETEXT) + { + HGLOBAL hlocale; + LCID lcid = DEFAULT_LCID; + UINT cp; + + /* Documentation says that the OS always generates + CF_LOCALE info automatically, so the locale handle + should always be present. Fact is that this is not + always true on 9x ;-(. */ + hlocale = GetClipboardData (CF_LOCALE); + if (hlocale != NULL) + { + const LCID * lcid_ptr; + lcid_ptr = (const LCID *) GlobalLock (hlocale); + if (lcid_ptr != NULL) + { + lcid = *lcid_ptr; + GlobalUnlock (hlocale); + } + + /* 9x has garbage as the sort order (to be exact there + is another instance of the language id in the upper + word). We don't care about sort order anyway, so + we just filter out the unneeded mis-information to + avoid irritations. */ + lcid = MAKELCID (LANGIDFROMLCID (lcid), SORT_DEFAULT); + } + + /* If we are using fallback from CF_UNICODETEXT, we can't + use the configured coding system. Also we don't want + to use it, if the system has supplied us with a locale + and it is not just the system default. */ + if (!use_configured_coding_system || lcid != DEFAULT_LCID) + { + cp = cp_from_locale (lcid, actual_clipboard_type); + /* If it's just our current standard setting anyway, + use the coding system that the user has selected. + Otherwise create a new spec to match the locale + that was specified by the other side or the + system. */ + if (!use_configured_coding_system || cp != cfg_codepage) + coding_system = coding_from_cp (cp); + } + } + + if (NILP (coding_system)) + coding_system = Vselection_coding_system; + Vnext_selection_coding_system = Qnil; + + setup_coding_system (Fcheck_coding_system (coding_system), &coding); coding.src_multibyte = 0; coding.dst_multibyte = 1; - Vnext_selection_coding_system = Qnil; coding.mode |= CODING_MODE_LAST_BLOCK; /* We explicitely disable composition handling because selection data should not contain any composition sequence. */ coding.composing = COMPOSITION_DISABLED; + /* Force DOS line-ends. */ + coding.eol_type = CODING_EOL_CRLF; + bufsize = decoding_buffer_size (&coding, nbytes); buf = (unsigned char *) xmalloc (bufsize); decode_coding (&coding, src, buf, nbytes, bufsize); @@ -382,10 +935,13 @@ } else { - /* Need to know final size after CR chars are removed because we - can't change the string size manually, and doing an extra - copy is silly. Note that we only remove CR when it appears - as part of CRLF. */ + /* FIXME: We may want to repeat the code in this branch for + the Unicode case. */ + + /* Need to know final size after CR chars are removed because + we can't change the string size manually, and doing an + extra copy is silly. We only remove CR when it appears as + part of CRLF. */ truelen = nbytes; dst = src; @@ -462,9 +1018,14 @@ if (OpenClipboard (NULL)) { - int format = 0; - while (format = EnumClipboardFormats (format)) - if (format == CF_TEXT) + UINT format = 0; + setup_config (); + while ((format = EnumClipboardFormats (format))) + /* Check CF_TEXT in addition to cfg_clipboard_type, + because we can fall back on that if CF_UNICODETEXT is + not available. Actually a check for CF_TEXT only + should be enough. */ + if (format == cfg_clipboard_type || format == CF_TEXT) { val = Qt; break; @@ -476,24 +1037,25 @@ return Qnil; } +/* One-time init. Called in the un-dumped Emacs, but not in the + dumped version. */ + void syms_of_w32select () { -#if 0 - defsubr (&Sw32_open_clipboard); - defsubr (&Sw32_empty_clipboard); - defsubr (&Sw32_close_clipboard); -#endif defsubr (&Sw32_set_clipboard_data); defsubr (&Sw32_get_clipboard_data); defsubr (&Sx_selection_exists_p); DEFVAR_LISP ("selection-coding-system", &Vselection_coding_system, doc: /* Coding system for communicating with other programs. -When sending or receiving text via cut_buffer, selection, and clipboard, -the text is encoded or decoded by this coding system. -The default value is `iso-latin-1-dos'. */); - Vselection_coding_system = intern ("iso-latin-1-dos"); +When sending or receiving text via cut_buffer, selection, and +clipboard, the text is encoded or decoded by this coding system. +The default value is the current system default encoding on 9x/Me and +`utf-16le-dos' (Unicode) on NT/W2K/XP. */); + /* The actual value is set dynamically in the dumped Emacs, see + below. */ + Vselection_coding_system = Qnil; DEFVAR_LISP ("next-selection-coding-system", &Vnext_selection_coding_system, doc: /* Coding system for the next communication with other programs. @@ -504,6 +1066,41 @@ Vnext_selection_coding_system = Qnil; QCLIPBOARD = intern ("CLIPBOARD"); staticpro (&QCLIPBOARD); + + cfg_coding_system = Qnil; staticpro (&cfg_coding_system); + current_text = Qnil; staticpro (¤t_text); + current_coding_system = Qnil; staticpro (¤t_coding_system); + + QUNICODE = intern ("utf-16le-dos"); staticpro (&QUNICODE); + QANSICP = Qnil; staticpro (&QANSICP); + QOEMCP = Qnil; staticpro (&QOEMCP); +} + +/* One-time init. Called in the dumped Emacs, but not in the + un-dumped version. */ + +void +globals_of_w32select () +{ + DEFAULT_LCID = GetUserDefaultLCID (); + /* Drop the sort order from the LCID, so we can compare this with + CF_LOCALE objects that have the same fix on 9x. */ + DEFAULT_LCID = MAKELCID (LANGIDFROMLCID (DEFAULT_LCID), SORT_DEFAULT); + + ANSICP = GetACP (); + OEMCP = GetOEMCP (); + + QANSICP = coding_from_cp (ANSICP); + QOEMCP = coding_from_cp (OEMCP); + + if (os_subtype == OS_NT) + Vselection_coding_system = QUNICODE; + else if (inhibit_window_system) + Vselection_coding_system = QOEMCP; + else + Vselection_coding_system = QANSICP; + + clipboard_owner = create_owner (); } /* arch-tag: c96e9724-5eb1-4dad-be07-289f092fd2af
--- a/src/xdisp.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/xdisp.c Sat Feb 19 00:06:48 2005 +0000 @@ -823,7 +823,6 @@ static int invisible_text_between_p P_ ((struct it *, int, int)); #endif -static int next_element_from_ellipsis P_ ((struct it *)); static void pint2str P_ ((char *, int, int)); static void pint2hrstr P_ ((char *, int, int)); static struct text_pos run_window_scroll_functions P_ ((Lisp_Object, @@ -898,6 +897,7 @@ static void back_to_previous_visible_line_start P_ ((struct it *)); void reseat_at_previous_visible_line_start P_ ((struct it *)); static void reseat_at_next_visible_line_start P_ ((struct it *, int)); +static int next_element_from_ellipsis P_ ((struct it *)); static int next_element_from_display_vector P_ ((struct it *)); static int next_element_from_string P_ ((struct it *)); static int next_element_from_c_string P_ ((struct it *)); @@ -2039,7 +2039,7 @@ check_it (it) struct it *it; { - if (it->method == next_element_from_string) + if (it->method == GET_FROM_STRING) { xassert (STRINGP (it->string)); xassert (IT_STRING_CHARPOS (*it) >= 0); @@ -2047,7 +2047,7 @@ else { xassert (IT_STRING_CHARPOS (*it) < 0); - if (it->method == next_element_from_buffer) + if (it->method == GET_FROM_BUFFER) { /* Check that character and byte positions agree. */ xassert (IT_CHARPOS (*it) == BYTE_TO_CHAR (IT_BYTEPOS (*it))); @@ -2557,7 +2557,7 @@ property for an image, the iterator will be set up for that image, and we have to undo that setup first before we can correct the overlay string index. */ - if (it->method == next_element_from_image) + if (it->method == GET_FROM_IMAGE) pop_it (it); /* We already have the first chunk of overlay strings in @@ -2580,7 +2580,7 @@ it->string = it->overlay_strings[relative_index]; xassert (STRINGP (it->string)); it->current.string_pos = pos->string_pos; - it->method = next_element_from_string; + it->method = GET_FROM_STRING; } #if 0 /* This is bogus because POS not having an overlay string @@ -2596,7 +2596,7 @@ while (it->sp) pop_it (it); it->current.overlay_string_index = -1; - it->method = next_element_from_buffer; + it->method = GET_FROM_BUFFER; if (CHARPOS (pos->pos) == ZV) it->overlay_strings_at_end_processed_p = 1; } @@ -2710,7 +2710,7 @@ { /* Don't check for overlay strings below when set to deliver characters from a display vector. */ - if (it->method == next_element_from_display_vector) + if (it->method == GET_FROM_DISPLAY_VECTOR) handle_overlay_change_p = 0; /* Handle overlay changes. */ @@ -3368,7 +3368,7 @@ /* Remember the current face id in case glyphs specify faces. IT's face is restored in set_iterator_to_next. */ it->saved_face_id = it->face_id; - it->method = next_element_from_display_vector; + it->method = GET_FROM_DISPLAY_VECTOR; it->ellipsis_p = 1; } @@ -3733,7 +3733,7 @@ it->image_id = -1; /* no image */ it->position = start_pos; it->object = NILP (object) ? it->w->buffer : object; - it->method = next_element_from_image; + it->method = GET_FROM_IMAGE; it->face_id = face_id; /* Say that we haven't consumed the characters with @@ -3815,7 +3815,7 @@ it->current.overlay_string_index = -1; IT_STRING_CHARPOS (*it) = IT_STRING_BYTEPOS (*it) = 0; it->end_charpos = it->string_nchars = SCHARS (it->string); - it->method = next_element_from_string; + it->method = GET_FROM_STRING; it->stop_charpos = 0; it->string_from_display_prop_p = 1; /* Say that we haven't consumed the characters with @@ -3825,7 +3825,7 @@ } else if (CONSP (value) && EQ (XCAR (value), Qspace)) { - it->method = next_element_from_stretch; + it->method = GET_FROM_STRETCH; it->object = value; it->current.pos = it->position = start_pos; @@ -3837,7 +3837,7 @@ it->image_id = lookup_image (it->f, value); it->position = start_pos; it->object = NILP (object) ? it->w->buffer : object; - it->method = next_element_from_image; + it->method = GET_FROM_IMAGE; /* Say that we haven't consumed the characters with `display' property yet. The call to pop_it in @@ -4093,7 +4093,7 @@ if (id >= 0) { - it->method = next_element_from_composition; + it->method = GET_FROM_COMPOSITION; it->cmp_id = id; it->cmp_len = COMPOSITION_LENGTH (prop); /* For a terminal, draw only the first character of the @@ -4168,7 +4168,7 @@ it->current.overlay_string_index = -1; SET_TEXT_POS (it->current.string_pos, -1, -1); it->n_overlay_strings = 0; - it->method = next_element_from_buffer; + it->method = GET_FROM_BUFFER; /* If we're at the end of the buffer, record that we have processed the overlay strings there already, so that @@ -4197,7 +4197,7 @@ it->string = it->overlay_strings[i]; it->multibyte_p = STRING_MULTIBYTE (it->string); SET_TEXT_POS (it->current.string_pos, 0, 0); - it->method = next_element_from_string; + it->method = GET_FROM_STRING; it->stop_charpos = 0; } @@ -4462,13 +4462,13 @@ xassert (STRINGP (it->string)); it->end_charpos = SCHARS (it->string); it->multibyte_p = STRING_MULTIBYTE (it->string); - it->method = next_element_from_string; + it->method = GET_FROM_STRING; } else { it->string = Qnil; it->current.overlay_string_index = -1; - it->method = next_element_from_buffer; + it->method = GET_FROM_BUFFER; } CHECK_IT (it); @@ -4846,7 +4846,7 @@ IT_STRING_CHARPOS (*it) = -1; IT_STRING_BYTEPOS (*it) = -1; it->string = Qnil; - it->method = next_element_from_buffer; + it->method = GET_FROM_BUFFER; /* RMS: I added this to fix a bug in move_it_vertically_backward where it->area continued to relate to the starting point for the backward motion. Bug report from @@ -4912,7 +4912,7 @@ it->string = string; it->s = NULL; it->end_charpos = it->string_nchars = SCHARS (string); - it->method = next_element_from_string; + it->method = GET_FROM_STRING; it->current.string_pos = string_pos (charpos, string); } else @@ -4934,7 +4934,7 @@ it->end_charpos = it->string_nchars = strlen (s); } - it->method = next_element_from_c_string; + it->method = GET_FROM_C_STRING; } /* PRECISION > 0 means don't return more than PRECISION characters @@ -4965,6 +4965,20 @@ Iteration ***********************************************************************/ +/* Map enum it_method value to corresponding next_element_from_* function. */ + +static int (* get_next_element[NUM_IT_METHODS]) P_ ((struct it *it)) = +{ + next_element_from_buffer, + next_element_from_display_vector, + next_element_from_composition, + next_element_from_string, + next_element_from_c_string, + next_element_from_image, + next_element_from_stretch +}; + + /* Load IT's display element fields with information about the next display element from the current position of IT. Value is zero if end of buffer (or C string) is reached. */ @@ -4980,7 +4994,7 @@ int success_p; get_next: - success_p = (*it->method) (it); + success_p = (*get_next_element[it->method]) (it); if (it->what == IT_CHARACTER) { @@ -5014,7 +5028,7 @@ it->current.dpvec_index = 0; it->dpvec_face_id = -1; it->saved_face_id = it->face_id; - it->method = next_element_from_display_vector; + it->method = GET_FROM_DISPLAY_VECTOR; it->ellipsis_p = 0; } else @@ -5040,7 +5054,7 @@ else if ((it->c < ' ' && (it->area != TEXT_AREA /* In mode line, treat \n like other crl chars. */ - || (it->c != '\n' + || (it->c != '\t' && it->glyph_row && it->glyph_row->mode_line_p) || (it->c != '\n' && it->c != '\t'))) || (it->multibyte_p @@ -5172,7 +5186,7 @@ it->current.dpvec_index = 0; it->dpvec_face_id = face_id; it->saved_face_id = it->face_id; - it->method = next_element_from_display_vector; + it->method = GET_FROM_DISPLAY_VECTOR; it->ellipsis_p = 0; goto get_next; } @@ -5234,8 +5248,9 @@ moving the iterator to a new position might set them. */ it->start_of_box_run_p = it->end_of_box_run_p = 0; - if (it->method == next_element_from_buffer) - { + switch (it->method) + { + case GET_FROM_BUFFER: /* The current display element of IT is a character from current_buffer. Advance in the buffer, and maybe skip over invisible lines that are so because of selective display. */ @@ -5248,32 +5263,32 @@ IT_CHARPOS (*it) += 1; xassert (IT_BYTEPOS (*it) == CHAR_TO_BYTE (IT_CHARPOS (*it))); } - } - else if (it->method == next_element_from_composition) - { - xassert (it->cmp_id >= 0 && it ->cmp_id < n_compositions); + break; + + case GET_FROM_COMPOSITION: + xassert (it->cmp_id >= 0 && it->cmp_id < n_compositions); if (STRINGP (it->string)) { IT_STRING_BYTEPOS (*it) += it->len; IT_STRING_CHARPOS (*it) += it->cmp_len; - it->method = next_element_from_string; + it->method = GET_FROM_STRING; goto consider_string_end; } else { IT_BYTEPOS (*it) += it->len; IT_CHARPOS (*it) += it->cmp_len; - it->method = next_element_from_buffer; - } - } - else if (it->method == next_element_from_c_string) - { + it->method = GET_FROM_BUFFER; + } + break; + + case GET_FROM_C_STRING: /* Current display element of IT is from a C string. */ IT_BYTEPOS (*it) += it->len; IT_CHARPOS (*it) += 1; - } - else if (it->method == next_element_from_display_vector) - { + break; + + case GET_FROM_DISPLAY_VECTOR: /* Current display element of IT is from a display table entry. Advance in the display table definition. Reset it to null if end reached, and continue with characters from buffers/ @@ -5287,11 +5302,11 @@ if (it->dpvec + it->current.dpvec_index == it->dpend) { if (it->s) - it->method = next_element_from_c_string; + it->method = GET_FROM_C_STRING; else if (STRINGP (it->string)) - it->method = next_element_from_string; + it->method = GET_FROM_STRING; else - it->method = next_element_from_buffer; + it->method = GET_FROM_BUFFER; it->dpvec = NULL; it->current.dpvec_index = -1; @@ -5308,9 +5323,9 @@ /* Recheck faces after display vector */ it->stop_charpos = IT_CHARPOS (*it); } - } - else if (it->method == next_element_from_string) - { + break; + + case GET_FROM_STRING: /* Current display element is a character from a Lisp string. */ xassert (it->s == NULL && STRINGP (it->string)); IT_STRING_BYTEPOS (*it) += it->len; @@ -5335,34 +5350,35 @@ && it->sp > 0) { pop_it (it); - if (!STRINGP (it->string)) - it->method = next_element_from_buffer; - else + if (STRINGP (it->string)) goto consider_string_end; - } - } - } - else if (it->method == next_element_from_image - || it->method == next_element_from_stretch) - { + it->method = GET_FROM_BUFFER; + } + } + break; + + case GET_FROM_IMAGE: + case GET_FROM_STRETCH: /* The position etc with which we have to proceed are on the stack. The position may be at the end of a string, if the `display' property takes up the whole string. */ + xassert (it->sp > 0); pop_it (it); it->image_id = 0; if (STRINGP (it->string)) { - it->method = next_element_from_string; + it->method = GET_FROM_STRING; goto consider_string_end; } - else - it->method = next_element_from_buffer; - } - else - /* There are no other methods defined, so this should be a bug. */ - abort (); - - xassert (it->method != next_element_from_string + it->method = GET_FROM_BUFFER; + break; + + default: + /* There are no other methods defined, so this should be a bug. */ + abort (); + } + + xassert (it->method != GET_FROM_STRING || (STRINGP (it->string) && IT_STRING_CHARPOS (*it) >= 0)); } @@ -5574,7 +5590,7 @@ was in IT->saved_face_id, and signal that it's there by setting face_before_selective_p. */ it->saved_face_id = it->face_id; - it->method = next_element_from_buffer; + it->method = GET_FROM_BUFFER; reseat_at_next_visible_line_start (it, 1); it->face_before_selective_p = 1; } @@ -5815,11 +5831,14 @@ saved_glyph_row = it->glyph_row; it->glyph_row = NULL; -#define BUFFER_POS_REACHED_P() \ - ((op & MOVE_TO_POS) != 0 \ - && BUFFERP (it->object) \ - && IT_CHARPOS (*it) >= to_charpos \ - && it->method == next_element_from_buffer) +#define BUFFER_POS_REACHED_P() \ + ((op & MOVE_TO_POS) != 0 \ + && BUFFERP (it->object) \ + && IT_CHARPOS (*it) >= to_charpos \ + && (it->method == GET_FROM_BUFFER || \ + (it->method == GET_FROM_DISPLAY_VECTOR && \ + it->dpvec + it->current.dpvec_index + 1 >= it->dpend))) + while (1) { @@ -6500,7 +6519,7 @@ in_display_vector_p (it) struct it *it; { - return (it->method == next_element_from_display_vector + return (it->method == GET_FROM_DISPLAY_VECTOR && it->current.dpvec_index > 0 && it->dpvec + it->current.dpvec_index != it->dpend); } @@ -15246,7 +15265,7 @@ /* Record whether this row ends inside an ellipsis. */ row->ends_in_ellipsis_p - = (it->method == next_element_from_display_vector + = (it->method == GET_FROM_DISPLAY_VECTOR && it->ellipsis_p); /* Save fringe bitmaps in this row. */
--- a/src/xfns.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/xfns.c Sat Feb 19 00:06:48 2005 +0000 @@ -1890,7 +1890,8 @@ BLOCK_INPUT; { - Atom type, *atoms = 0; + Atom type; + unsigned char *catoms; int format = 0; unsigned long nitems = 0; unsigned long bytes_after; @@ -1899,20 +1900,27 @@ FRAME_X_DISPLAY_INFO (f)->Xatom_wm_protocols, (long)0, (long)100, False, XA_ATOM, &type, &format, &nitems, &bytes_after, - (unsigned char **) &atoms) + &catoms) == Success) && format == 32 && type == XA_ATOM) - while (nitems > 0) - { - nitems--; - if (atoms[nitems] == FRAME_X_DISPLAY_INFO (f)->Xatom_wm_delete_window) - need_delete = 0; - else if (atoms[nitems] == FRAME_X_DISPLAY_INFO (f)->Xatom_wm_take_focus) - need_focus = 0; - else if (atoms[nitems] == FRAME_X_DISPLAY_INFO (f)->Xatom_wm_save_yourself) - need_save = 0; - } - if (atoms) XFree ((char *) atoms); + { + Atom *atoms = (Atom *) catoms; + while (nitems > 0) + { + nitems--; + if (atoms[nitems] + == FRAME_X_DISPLAY_INFO (f)->Xatom_wm_delete_window) + need_delete = 0; + else if (atoms[nitems] + == FRAME_X_DISPLAY_INFO (f)->Xatom_wm_take_focus) + need_focus = 0; + else if (atoms[nitems] + == FRAME_X_DISPLAY_INFO (f)->Xatom_wm_save_yourself) + need_save = 0; + } + } + if (catoms) + XFree (catoms); } { Atom props [10]; @@ -4175,7 +4183,7 @@ Atom prop_atom; int rc; Lisp_Object prop_value = Qnil; - char *tmp_data = NULL; + unsigned char *tmp_data = NULL; Atom actual_type; Atom target_type = XA_STRING; int actual_format; @@ -4215,7 +4223,7 @@ rc = XGetWindowProperty (FRAME_X_DISPLAY (f), target_window, prop_atom, 0, 0, False, target_type, &actual_type, &actual_format, &actual_size, - &bytes_remaining, (unsigned char **) &tmp_data); + &bytes_remaining, &tmp_data); if (rc == Success) { int size = bytes_remaining; @@ -4228,7 +4236,7 @@ ! NILP (delete_p), target_type, &actual_type, &actual_format, &actual_size, &bytes_remaining, - (unsigned char **) &tmp_data); + &tmp_data); if (rc == Success && tmp_data) { /* The man page for XGetWindowProperty says: @@ -4252,14 +4260,14 @@ long *ldata = (long *) tmp_data; for (i = 0; i < actual_size; ++i) - idata[i]= (int) ldata[i]; + idata[i] = (int) ldata[i]; } if (NILP (vector_ret_p)) prop_value = make_string (tmp_data, size); else prop_value = x_property_data_to_lisp (f, - (unsigned char *) tmp_data, + tmp_data, actual_type, actual_format, actual_size);
--- a/src/xselect.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/xselect.c Sat Feb 19 00:06:48 2005 +0000 @@ -1925,7 +1925,12 @@ } else if (STRINGP (obj)) { - xassert (! STRING_MULTIBYTE (obj)); + if (SCHARS (obj) < SBYTES (obj)) + /* OBJ is a multibyte string containing a non-ASCII char. */ + Fsignal (Qerror, /* Qselection_error */ + Fcons (build_string + ("Non-ASCII string must be encoded in advance"), + Fcons (obj, Qnil))); if (NILP (type)) type = QSTRING; *format_ret = 8; @@ -2201,7 +2206,10 @@ { Time timestamp; Atom selection_atom; - struct selection_input_event event; + union { + struct selection_input_event sie; + struct input_event ie; + } event; Display *display; struct x_display_info *dpyinfo; struct frame *sf = SELECTED_FRAME (); @@ -2232,10 +2240,10 @@ the selection owner to None. The NCD server does, the MIT Sun4 server doesn't. So we synthesize one; this means we might get two, but that's ok, because the second one won't have any effect. */ - SELECTION_EVENT_DISPLAY (&event) = display; - SELECTION_EVENT_SELECTION (&event) = selection_atom; - SELECTION_EVENT_TIME (&event) = timestamp; - x_handle_selection_clear ((struct input_event *) &event); + SELECTION_EVENT_DISPLAY (&event.sie) = display; + SELECTION_EVENT_SELECTION (&event.sie) = selection_atom; + SELECTION_EVENT_TIME (&event.sie) = timestamp; + x_handle_selection_clear (&event.ie); return Qt; }
--- a/src/xterm.c Fri Feb 18 23:22:51 2005 +0000 +++ b/src/xterm.c Sat Feb 19 00:06:48 2005 +0000 @@ -5622,8 +5622,8 @@ f->output_data.x->saved_menu_event \ = (XEvent *) xmalloc (sizeof (XEvent)); \ bcopy (&event, f->output_data.x->saved_menu_event, size); \ - inev.kind = MENU_BAR_ACTIVATE_EVENT; \ - XSETFRAME (inev.frame_or_window, f); \ + inev.ie.kind = MENU_BAR_ACTIVATE_EVENT; \ + XSETFRAME (inev.ie.frame_or_window, f); \ } \ while (0) @@ -5730,7 +5730,10 @@ int *finish; struct input_event *hold_quit; { - struct input_event inev; + union { + struct input_event ie; + struct selection_input_event sie; + } inev; int count = 0; int do_help = 0; int nbytes = 0; @@ -5740,9 +5743,9 @@ *finish = X_EVENT_NORMAL; - EVENT_INIT (inev); - inev.kind = NO_EVENT; - inev.arg = Qnil; + EVENT_INIT (inev.ie); + inev.ie.kind = NO_EVENT; + inev.ie.arg = Qnil; switch (event.type) { @@ -5840,8 +5843,8 @@ if (!f) goto OTHER; /* May be a dialog that is to be removed */ - inev.kind = DELETE_WINDOW_EVENT; - XSETFRAME (inev.frame_or_window, f); + inev.ie.kind = DELETE_WINDOW_EVENT; + XSETFRAME (inev.ie.frame_or_window, f); goto done; } @@ -5904,7 +5907,7 @@ if (event.xclient.message_type == dpyinfo->Xatom_Scrollbar) { - x_scroll_bar_to_input_event (&event, &inev); + x_scroll_bar_to_input_event (&event, &inev.ie); *finish = X_EVENT_GOTO_OUT; goto done; } @@ -5915,7 +5918,7 @@ if (!f) goto OTHER; - if (x_handle_dnd_message (f, &event.xclient, dpyinfo, &inev)) + if (x_handle_dnd_message (f, &event.xclient, dpyinfo, &inev.ie)) *finish = X_EVENT_DROP; } break; @@ -5936,11 +5939,11 @@ { XSelectionClearEvent *eventp = (XSelectionClearEvent *) &event; - inev.kind = SELECTION_CLEAR_EVENT; - SELECTION_EVENT_DISPLAY (&inev) = eventp->display; - SELECTION_EVENT_SELECTION (&inev) = eventp->selection; - SELECTION_EVENT_TIME (&inev) = eventp->time; - inev.frame_or_window = Qnil; + inev.ie.kind = SELECTION_CLEAR_EVENT; + SELECTION_EVENT_DISPLAY (&inev.sie) = eventp->display; + SELECTION_EVENT_SELECTION (&inev.sie) = eventp->selection; + SELECTION_EVENT_TIME (&inev.sie) = eventp->time; + inev.ie.frame_or_window = Qnil; } break; @@ -5953,14 +5956,14 @@ XSelectionRequestEvent *eventp = (XSelectionRequestEvent *) &event; - inev.kind = SELECTION_REQUEST_EVENT; - SELECTION_EVENT_DISPLAY (&inev) = eventp->display; - SELECTION_EVENT_REQUESTOR (&inev) = eventp->requestor; - SELECTION_EVENT_SELECTION (&inev) = eventp->selection; - SELECTION_EVENT_TARGET (&inev) = eventp->target; - SELECTION_EVENT_PROPERTY (&inev) = eventp->property; - SELECTION_EVENT_TIME (&inev) = eventp->time; - inev.frame_or_window = Qnil; + inev.ie.kind = SELECTION_REQUEST_EVENT; + SELECTION_EVENT_DISPLAY (&inev.sie) = eventp->display; + SELECTION_EVENT_REQUESTOR (&inev.sie) = eventp->requestor; + SELECTION_EVENT_SELECTION (&inev.sie) = eventp->selection; + SELECTION_EVENT_TARGET (&inev.sie) = eventp->target; + SELECTION_EVENT_PROPERTY (&inev.sie) = eventp->property; + SELECTION_EVENT_TIME (&inev.sie) = eventp->time; + inev.ie.frame_or_window = Qnil; } break; @@ -6099,8 +6102,8 @@ { f->async_iconified = 1; - inev.kind = ICONIFY_EVENT; - XSETFRAME (inev.frame_or_window, f); + inev.ie.kind = ICONIFY_EVENT; + XSETFRAME (inev.ie.frame_or_window, f); } } goto OTHER; @@ -6132,8 +6135,8 @@ if (f->iconified) { - inev.kind = DEICONIFY_EVENT; - XSETFRAME (inev.frame_or_window, f); + inev.ie.kind = DEICONIFY_EVENT; + XSETFRAME (inev.ie.frame_or_window, f); } else if (! NILP (Vframe_list) && ! NILP (XCDR (Vframe_list))) @@ -6299,18 +6302,18 @@ orig_keysym = keysym; /* Common for all keysym input events. */ - XSETFRAME (inev.frame_or_window, f); - inev.modifiers + XSETFRAME (inev.ie.frame_or_window, f); + inev.ie.modifiers = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f), modifiers); - inev.timestamp = event.xkey.time; + inev.ie.timestamp = event.xkey.time; /* First deal with keysyms which have defined translations to characters. */ if (keysym >= 32 && keysym < 128) /* Avoid explicitly decoding each ASCII character. */ { - inev.kind = ASCII_KEYSTROKE_EVENT; - inev.code = keysym; + inev.ie.kind = ASCII_KEYSTROKE_EVENT; + inev.ie.code = keysym; goto done_keysym; } @@ -6320,10 +6323,10 @@ Vx_keysym_table, Qnil)))) { - inev.kind = (SINGLE_BYTE_CHAR_P (XFASTINT (c)) - ? ASCII_KEYSTROKE_EVENT - : MULTIBYTE_CHAR_KEYSTROKE_EVENT); - inev.code = XFASTINT (c); + inev.ie.kind = (SINGLE_BYTE_CHAR_P (XFASTINT (c)) + ? ASCII_KEYSTROKE_EVENT + : MULTIBYTE_CHAR_KEYSTROKE_EVENT); + inev.ie.code = XFASTINT (c); goto done_keysym; } @@ -6413,8 +6416,8 @@ STORE_KEYSYM_FOR_DEBUG (keysym); /* make_lispy_event will convert this to a symbolic key. */ - inev.kind = NON_ASCII_KEYSTROKE_EVENT; - inev.code = keysym; + inev.ie.kind = NON_ASCII_KEYSTROKE_EVENT; + inev.ie.code = keysym; goto done_keysym; } @@ -6465,18 +6468,18 @@ else c = STRING_CHAR_AND_LENGTH (copy_bufptr + i, nbytes - i, len); - inev.kind = (SINGLE_BYTE_CHAR_P (c) + inev.ie.kind = (SINGLE_BYTE_CHAR_P (c) ? ASCII_KEYSTROKE_EVENT : MULTIBYTE_CHAR_KEYSTROKE_EVENT); - inev.code = c; - kbd_buffer_store_event_hold (&inev, hold_quit); + inev.ie.code = c; + kbd_buffer_store_event_hold (&inev.ie, hold_quit); } /* Previous code updated count by nchars rather than nbytes, but that seems bogus to me. ++kfs */ count += nbytes; - inev.kind = NO_EVENT; /* Already stored above. */ + inev.ie.kind = NO_EVENT; /* Already stored above. */ if (keysym == NoSymbol) break; @@ -6503,7 +6506,7 @@ #endif case EnterNotify: - x_detect_focus_change (dpyinfo, &event, &inev); + x_detect_focus_change (dpyinfo, &event, &inev.ie); f = x_any_window_to_frame (dpyinfo, event.xcrossing.window); @@ -6533,11 +6536,11 @@ goto OTHER; case FocusIn: - x_detect_focus_change (dpyinfo, &event, &inev); + x_detect_focus_change (dpyinfo, &event, &inev.ie); goto OTHER; case LeaveNotify: - x_detect_focus_change (dpyinfo, &event, &inev); + x_detect_focus_change (dpyinfo, &event, &inev.ie); f = x_top_window_to_frame (dpyinfo, event.xcrossing.window); if (f) @@ -6560,7 +6563,7 @@ goto OTHER; case FocusOut: - x_detect_focus_change (dpyinfo, &event, &inev); + x_detect_focus_change (dpyinfo, &event, &inev.ie); goto OTHER; case MotionNotify: @@ -6600,8 +6603,8 @@ && !EQ (window, last_window) && !EQ (window, selected_window)) { - inev.kind = SELECT_WINDOW_EVENT; - inev.frame_or_window = window; + inev.ie.kind = SELECT_WINDOW_EVENT; + inev.ie.frame_or_window = window; } last_window=window; @@ -6760,13 +6763,13 @@ && (int)(event.xbutton.time - ignore_next_mouse_click_timeout) > 0) { ignore_next_mouse_click_timeout = 0; - construct_mouse_click (&inev, &event, f); + construct_mouse_click (&inev.ie, &event, f); } if (event.type == ButtonRelease) ignore_next_mouse_click_timeout = 0; } else - construct_mouse_click (&inev, &event, f); + construct_mouse_click (&inev.ie, &event, f); } } } @@ -6781,12 +6784,12 @@ scroll bars. */ if (bar && event.xbutton.state & ControlMask) { - x_scroll_bar_handle_click (bar, &event, &inev); + x_scroll_bar_handle_click (bar, &event, &inev.ie); *finish = X_EVENT_DROP; } #else /* not USE_TOOLKIT_SCROLL_BARS */ if (bar) - x_scroll_bar_handle_click (bar, &event, &inev); + x_scroll_bar_handle_click (bar, &event, &inev.ie); #endif /* not USE_TOOLKIT_SCROLL_BARS */ } @@ -6894,9 +6897,9 @@ } done: - if (inev.kind != NO_EVENT) - { - kbd_buffer_store_event_hold (&inev, hold_quit); + if (inev.ie.kind != NO_EVENT) + { + kbd_buffer_store_event_hold (&inev.ie, hold_quit); count++; }